package tqq9.lc123.cloud.app.plugin.operate.sys; import kd.bos.dataentity.OperateOption; import kd.bos.dataentity.entity.DynamicObject; import kd.bos.dataentity.entity.DynamicObjectCollection; import kd.bos.entity.operate.result.IOperateInfo; import kd.bos.entity.operate.result.OperationResult; import kd.bos.entity.plugin.AbstractOperationServicePlugIn; import kd.bos.entity.plugin.args.AfterOperationArgs; import kd.bos.logging.Log; import kd.bos.logging.LogFactory; import kd.bos.orm.query.QFilter; import kd.bos.servicehelper.BusinessDataServiceHelper; import kd.bos.servicehelper.QueryServiceHelper; import kd.bos.servicehelper.operation.OperationServiceHelper; import kd.bos.servicehelper.operation.SaveServiceHelper; import org.apache.commons.lang3.StringUtils; import java.math.BigDecimal; import java.util.List; /** * 物料审核操作 * 审核成功后,生成对应的商城商品 */ public class MaterialAuditOp extends AbstractOperationServicePlugIn { private static final Log log = LogFactory.getLog(MaterialAuditOp.class); @Override public void afterExecuteOperationTransaction(AfterOperationArgs e) { super.afterExecuteOperationTransaction(e); OperationResult operationResult = this.getOperationResult(); if (operationResult.isSuccess()) { DynamicObject[] dataEntities = e.getDataEntities(); for (DynamicObject material : dataEntities) { material = BusinessDataServiceHelper.loadSingle(material.getPkValue(), material.getDynamicObjectType().getName()); String tqq9_srcnumber = material.getString("tqq9_srcnumber"); //查询是否有源单编码,如果有就是物料变更,如果没有就是正常物料审核 if (StringUtils.isNotBlank(tqq9_srcnumber)) { //物料变更逻辑 DynamicObjectCollection changeEntries = material.getDynamicObjectCollection("tqq9_changeentry"); if (changeEntries != null && changeEntries.size() > 0) { QFilter f = new QFilter("number", "=", tqq9_srcnumber); boolean exists = QueryServiceHelper.exists("bd_material", new QFilter[]{f}); if (exists) { DynamicObject srcMaterial = BusinessDataServiceHelper.loadSingle("bd_material", new QFilter[]{f}); DynamicObjectCollection srcChangeEntries = srcMaterial.getDynamicObjectCollection("tqq9_changeentry"); for (DynamicObject changeEntry : changeEntries) { String tqq9_fieldnumber = changeEntry.getString("tqq9_fieldnumber"); srcMaterial.set(tqq9_fieldnumber, material.get(tqq9_fieldnumber)); DynamicObject srcChangeEntry = srcChangeEntries.addNew(); srcChangeEntry.set("tqq9_fieldname", changeEntry.getString("tqq9_fieldname"));//字段名称 srcChangeEntry.set("tqq9_fieldnumber", changeEntry.getString("tqq9_fieldnumber"));//字段标识 srcChangeEntry.set("tqq9_oldvalue", changeEntry.getString("tqq9_oldvalue"));//修改前值 srcChangeEntry.set("tqq9_newvalue", changeEntry.getString("tqq9_newvalue"));//修改后值 srcChangeEntry.set("tqq9_updatedate", changeEntry.getDate("tqq9_updatedate"));//修改事件 } SaveServiceHelper.save(new DynamicObject[]{srcMaterial}); OperationResult opResult = OperationServiceHelper.executeOperate("unaudit", "bd_material", new DynamicObject[]{material}, OperateOption.create()); log.info("反审核物料修改信息[" + material.getString("number") + "]的结果:" + opResult.isSuccess()); if (opResult.isSuccess()) { opResult = OperationServiceHelper.executeOperate("delete", "bd_material", new DynamicObject[]{material}, OperateOption.create()); log.info("删除物料修改信息[" + material.getString("number") + "]的结果:" + opResult.isSuccess()); } } } } else { //物料新增审核,封装商品逻辑:查询对应的商品是否存在 DynamicObject goods; Long materialID = material.getLong("id"); QFilter f = new QFilter("tqq9_mater.id", "=", materialID); DynamicObject[] goodsArr = BusinessDataServiceHelper.load("tqq9_goodspackage", "id", new QFilter[]{f}); if (goodsArr != null && goodsArr.length > 0) { goods = goodsArr[0]; goods = BusinessDataServiceHelper.loadSingle(goods.getPkValue(), goods.getDynamicObjectType().getName()); } else { goods = BusinessDataServiceHelper.newDynamicObject("tqq9_goodspackage"); goods.set("number", material.getString("number")); goods.set("tqq9_mater", material); } //创建组织-默认励齿集团 DynamicObject createorg = null; f = new QFilter("number", "=", "LICHI"); DynamicObject[] orgArr = BusinessDataServiceHelper.load("bos_org", "id,name,number", new QFilter[]{f}); if (orgArr != null && orgArr.length > 0) { createorg = orgArr[0]; } //币种-默认CNY DynamicObject currency = null; f = new QFilter("number", "=", "CNY"); DynamicObject[] currencyArr = BusinessDataServiceHelper.load("bd_currency", "id,name,number", new QFilter[]{f}); if (currencyArr != null && currencyArr.length > 0) { currency = currencyArr[0]; } //查询税率和税率基础资料 DynamicObject tqq9_ssbm = material.getDynamicObject("tqq9_ssbm"); tqq9_ssbm = BusinessDataServiceHelper.loadSingle(tqq9_ssbm.getPkValue(), tqq9_ssbm.getDynamicObjectType().getName(), "id,name,number,taxrate"); BigDecimal taxrate = tqq9_ssbm.getBigDecimal("taxrate"); if (taxrate != null) { goods.set("tqq9_saletaxdcm", taxrate); QFilter f1 = new QFilter("taxrate", "=", taxrate.multiply(new BigDecimal(100))); DynamicObject[] bd_taxratesArr = BusinessDataServiceHelper.load("bd_taxrate", "id,number,name,taxrate", new QFilter[]{f1}); goods.set("tqq9_saletaxrate", bd_taxratesArr[0]); } //给商品信息赋值 goods.set("createorg", createorg); goods.set("name", material.getString("name")); goods.set("tqq9_regproname", material.getString("tqq9_zccpmc")); goods.set("tqq9_platform", "A,B,C");//平台 goods.set("tqq9_brand", material.getDynamicObject("tqq9_brand")); goods.set("tqq9_wlcd", material.getDynamicObject("tqq9_wlcd1")); goods.set("tqq9_taxno", tqq9_ssbm); goods.set("tqq9_medicaltype", material.getString("tqq9_ylfl")); goods.set("tqq9_level", material.getString("tqq9_spdj")); goods.set("tqq9_currency", currency);//币种 goods.set("tqq9_onsale_sh", "B"); goods.set("tqq9_onsale_bj", "B"); goods.set("tqq9_onsale_gz", "B"); goods.set("tqq9_saleunit", material.getDynamicObject("baseunit"));//销售单位 goods.set("tqq9_keepcondition", material.getString("tqq9_ccystj")); goods.set("tqq9_medicalclass", material.getDynamicObject("tqq9_ylflml")); goods.set("tqq9_skutype2", material.getString("tqq9_combofield_spflii")); goods.set("tqq9_ckutype3", material.getString("tqq9_combofield_spfliii")); goods.set("tqq9_skutype4", material.getString("tqq9_spfliii")); goods.set("tqq9_isauto", true); goods.set("enable", "1"); goods.set("status", "A"); goods.set("creator", material.getDynamicObject("creator")); goods.set("createtime", material.getDate("createtime")); goods.set("modifier", material.getDynamicObject("modifier")); goods.set("modifytime", material.getDate("modifytime")); operationResult = OperationServiceHelper.executeOperate("save", "tqq9_goodspackage", new DynamicObject[]{goods}, OperateOption.create()); if (!operationResult.isSuccess()) { log.info("物料[" + material.getString("number") + "]审核封装商品保存出错msg:" + operationResult.getMessage()); List allErrorOrValidateInfo = operationResult.getAllErrorOrValidateInfo(); for (IOperateInfo iOperateInfo : allErrorOrValidateInfo) { String message = iOperateInfo.getMessage(); log.info("物料[" + material.getString("number") + "]审核封装商品保存出错:" + message); } } else { operationResult = OperationServiceHelper.executeOperate("submit", "tqq9_goodspackage", new DynamicObject[]{goods}, OperateOption.create()); if (operationResult.isSuccess()) { operationResult = OperationServiceHelper.executeOperate("audit", "tqq9_goodspackage", new DynamicObject[]{goods}, OperateOption.create()); if (operationResult.isSuccess()) { log.info("物料[" + material.getString("number") + "]审核封装商品审核成功。"); } else { log.info("物料[" + material.getString("number") + "]审核封装商品审核出错msg:" + operationResult.getMessage()); List allErrorOrValidateInfo = operationResult.getAllErrorOrValidateInfo(); for (IOperateInfo iOperateInfo : allErrorOrValidateInfo) { String message = iOperateInfo.getMessage(); log.info("物料[" + material.getString("number") + "]审核封装商品审核出错:" + message); } } } else { log.info("物料[" + material.getString("number") + "]审核封装商品提交出错msg:" + operationResult.getMessage()); List allErrorOrValidateInfo = operationResult.getAllErrorOrValidateInfo(); for (IOperateInfo iOperateInfo : allErrorOrValidateInfo) { String message = iOperateInfo.getMessage(); log.info("物料[" + material.getString("number") + "]审核封装商品提交出错:" + message); } } } } } } } }