----1.使用设计器ncc元数据参照有两个常见问题-----
1.https证书未授信问题,控制台会抛出net::ERR_CERT_AUTHORITY_INVALID错误,这个问题就是把该请求单独在chrome浏览器里面访问,点击高级-继续前往;
2.参照请求错误代码401,是因为chrome浏览器80及以上版本的新特性导致的,地址栏输入:chrome://flags/
找到SameSite by default cookies和Cookies without SameSite must be secure
将上面两项设置为?Disable;
----2.界面设计器实体字段与元数据不同步-----
问题:开发环境元数据修改发布,界面设计器中选择实体字段参照内没有变化,
解决方法:1.系统管理员登陆,找到元数据管理,找到对应的元数据,
2.点升级把最新元数据上传进去。
----3.前端向后端发起请求报401---
在向后端发起请求时出现401状态码时,可能是前后端请求路径没有保持一致
请检查前端节点内*****HVOConfig.js内的各请求方法与后端yyconfig.modules.sccloud.scbd下对应节点的xml文件内各action内的name是否保持一致,如果不一致,可以确定问题原因,这里推荐改变前端js文件内的请求路径达到与后端xml内容保持一致,问题解决。
----4.元数据发布时报违反位于约束条件-----
解决方法:修改元数据前最好先点右键【删除发布的组件及数据库】,如果无效只能去数据库手动删除
1.根据提示找到数据库表md_bizitfmap
2.查询select* from md_bizitfmap where classid='元数据实体id' 是否有数据
3.手动删除查询到的数据delete md_bizitfmap where classid='元数据实体id'
----5.单据保存时报错----
1.保存时是否给集团赋值。在xxxxSaveAction类的doAction方法中给集团赋值
ClientInfo info=nccloud.framework.web.container.SessionContext.getInstance().getClientInfo();
aggMap.put("pk_group", info.getPk_group());
2.检查InsertBP中前后规则
((nc.bs.pubapp.pub.rule.CreateBillCodeRule) rule).setCbilltype("QM05");
((nc.bs.pubapp.pub.rule.CreateBillCodeRule) rule)
.setCodeItem("billno");
((nc.bs.pubapp.pub.rule.CreateBillCodeRule) rule)
.setGroupItem("pk_group");
((nc.bs.pubapp.pub.rule.CreateBillCodeRule) rule).setOrgItem("pk_org");
3.检查数据库bd_biiltype的所属模块
update bd_billtype set systemcode='SCQM' where pk_billtypecode='QM10' --QM10单据类型 SCQM大写组件名
----6.保存主子表时后台获取不了子表数据----
界面设计器编辑界面--子表编辑表格--键值设置为子表pk字段。详情界面子表不显示时,检查详情界面子表表格的键值
-----7.参照联动过滤------
根据组织过滤人员参照
//处理人(人员参照根据组织过滤)
"handlepeople": {
onViewWillUpdate: function (options) {
const baseForm = this.findUI('baseForm');
if (baseForm && baseForm.api) {
let orgpk = baseForm.api.getFieldValue("pk_org") == undefined ? "" : baseForm.api.getFieldValue("pk_org").id;
options.item.condition = { "pk_org": orgpk }
}
},
},
//组织
"pk_org": {
onChange(value) {
const baseForm = this.findUI('baseForm');
baseForm.api.setFieldsValue({pk_org: value});
this.refresh();//刷新
}
},
-----8.收回报空指针-----
找到当前单据的xxxConst,修改
/* * 审批状态字段 */
public static String CONST_BILL_STATUS = "approvestatus";// public static String CONST_BILL_STATUS = "billstatus";
-----9.修改后,数据被删除------
问题:检查是否数据库,是否dr置空了。
解决办法:在xxxVO中复制下面代码
/**
*删除标准
*/
public Integer dr;
public Integer getDr() {
return dr;
}
public void setDr(Integer dr) {
this.dr = dr;
}
------10.消息发送(业务消息,通知消息)-----
1. 注册【业务消息配置】,对应后台表pub_msgres_reg,需要数据库中新增。前台必须配置消息接收人
2.配置【消息模板-全局】
3.修改应用注册对应调整单据【详情界面】页面地址
详情界面定义:页面地址中设置detail 例如 /nccloud/resources/scqm-frontend/#/xxx/detail
3.业务逻辑中调用ISendBuziMsg接口
send(String msgtype, AbstractBill vo, String[] orgs, ScmSendBuziMsgPara param)发送消息。其中msgtype为"todo"指业务消息, "notice"指通知消息
updateMsgStatus(String id,"2")修改消息状态 根据发送消息时Pk_detail删除
例子:
public NCCMessageReceiver sendMsg(AggxxHVO aggvo) {
ScmSendBuziMsgPara param = new ScmSendBuziMsgPara();
param.setMsgrescode("QM25001");//取第一步中后台插入的pub_msgres_reg中code
param.setBillType(vo.getParentVO().getBilltype());//单据类型
param.setMsgSourceType("notice");
param.setContentType("text");
param.setPk_detail(aggvo.getParentVO().getSrcbillbid());//根据业务设置,主要修改消息状态时根据Pk_detail设置已读状态
// param.setApproverField("creator");// 消息发送人
param.setCtrantypeidField("ctrantypeid");
param.setPk_groupField("pk_group");// 集团
param.setPk_materialField("pk_material");
param.setPk_orgField("pk_org");
param.setVtrantypecodeField("billtype");
//param.putAttachment("receiver",xxxx);//接收人 【用户id】
param.putAttachment("billtype", vo.getParentVO().getBilltype());
param.putAttachment("appcode", "SCQM030005A");//第3步中详情页面的编码
param.putAttachment("url", "pagecode=SCQM030005A_CARD&id="+ vo.getParentVO().getPrimaryKey());//第3步中详情页面的页面编码及跳转单据主键
ISendBuziMsg sender = NCLocator.getInstance().lookup(ISendBuziMsg.class);
sender.updateMsgStatus(param.getPk_detail(),"2");//先修改之前的待办已读 通知消息不用
NCCMessageReceiver receiver = sender.send(BuziMsgConst.MSGTYPE, vo,
new String[] { (String) vo.getParentVO().getAttributeValue("pk_org") }, param);
return receiver;
}
4.自定义消息接收人
在发送消息的ScmSendBuziMsgPara param = new ScmSendBuziMsgPara();中
param.putAttachment("receiver",cuserid);//接收人 【用户id】
如果接收人为多人时,赋值类型是String,可以用逗号隔开用户id
-----11.前端新增默认赋值---
"resumecontent":{
onViewWillMount: function (options) {
options.item.value="malztest"
}
},
----12.增加动作脚本
select * from pub_busiclass where classname like '%N_H5F5%'
INSERT INTO pub_busiclass VALUES ('SAVEBASE', 'N_H5F5_SAVEBASE', '0', 'N', 'H5F5', '1001Y91000000001PVMP', '1001Z9100I0000000605', '~', '~', '2020-06-04 16:55:57');
----13.提交单据报operation failed baseDao.retrieveByPK null错误
执行super.doAction()时报错
解决办法:重新发布元数据