diff --git a/ic/src/private/nc/bs/ic/m4d/cancelsign/CancelSignBP.java b/ic/src/private/nc/bs/ic/m4d/cancelsign/CancelSignBP.java new file mode 100644 index 0000000..001dc67 --- /dev/null +++ b/ic/src/private/nc/bs/ic/m4d/cancelsign/CancelSignBP.java @@ -0,0 +1,56 @@ +// +// Source code recreated from a .class file by IntelliJ IDEA +// (powered by FernFlower decompiler) +// + +package nc.bs.ic.m4d.cancelsign; + +import com.yonyou.cloud.ncc.plugin.entity.OperationInfo; +import java.io.Serializable; +import java.util.HashMap; +import java.util.Map; +import nc.bs.ic.general.cancelsign.CancelSignBPTemplate; +import nc.bs.ic.general.cancelsign.ICancelSignBP; +import nc.bs.ic.general.cancelsign.ICancelSignRuleProvider; +import nc.bs.ic.general.cancelsign.rule.CancelSignCheckAssetFlag; +import nc.bs.ic.general.cancelsign.rule.CheckHandoverState; +import nc.bs.ic.m4d.base.BPPlugInPoint; +import nc.bs.ic.m4d.base.UpdateSCOnhandRule; +import nc.bs.ic.m4d.cancelsign.rule.AfterCancelSignRuleForLiabilityProcess; +import nc.bs.ic.m4d.cancelsign.rule.PushDeleteIAandTOBills; +import nc.bs.ic.pub.util.SagasUtils; +import nc.bs.scmpub.rule.VOSagaFrozenValidateRule; +import nc.impl.pubapp.pattern.rule.processer.AroundProcesser; +import nc.itf.ic.m4d.compensate.IMaterialOutSagasCompensate; +import nc.vo.ic.m4d.entity.MaterialOutVO; +import nc.vo.ic.pub.util.VOEntityUtil; +import nc.vo.scmpub.res.billtype.ICBillType; + +public class CancelSignBP implements ICancelSignBP, ICancelSignRuleProvider { + public CancelSignBP() { + } + + public void addAfterRule(MaterialOutVO[] vos, AroundProcesser processor) { + processor.addAfterRule(new UpdateSCOnhandRule(true)); + processor.addAfterRule(new AfterCancelSignRuleForLiabilityProcess()); + processor.addAfterRule(new PushDeleteIAandTOBills()); + +// processor.addAfterRule(new PullProcess()); + } + + public void addBeforeRule(MaterialOutVO[] vos, AroundProcesser processor) { + processor.addBeforeRule(new VOSagaFrozenValidateRule(true)); + processor.addBeforeRule(new CancelSignCheckAssetFlag()); + processor.addBeforeRule(new CheckHandoverState()); + } + + public MaterialOutVO[] cancelSign(MaterialOutVO[] vos) { + CancelSignBPTemplate cancelBP = new CancelSignBPTemplate(BPPlugInPoint.CancelSignBP, this); + SagasUtils.frozenAndAddSaga(vos, ICBillType.MaterialOut.getCode(), "1", (OperationInfo)null); + Map paramMap = new HashMap(); + paramMap.put("actionname", "cancelsign_4D"); + paramMap.put("hid", VOEntityUtil.getPksFromAggVO(vos)); + SagasUtils.compensate(paramMap, IMaterialOutSagasCompensate.class); + return (MaterialOutVO[])cancelBP.cancelSign(vos); + } +} diff --git a/ic/src/private/nc/bs/ic/m4d/sign/SignBP.java b/ic/src/private/nc/bs/ic/m4d/sign/SignBP.java index b010ca5..8c7c9e1 100644 --- a/ic/src/private/nc/bs/ic/m4d/sign/SignBP.java +++ b/ic/src/private/nc/bs/ic/m4d/sign/SignBP.java @@ -12,6 +12,7 @@ import nc.bs.ic.general.sign.SignBPTemplate; import nc.bs.ic.m4d.base.BPPlugInPoint; import nc.bs.ic.m4d.base.UpdateSCOnhandRule; import nc.bs.ic.m4d.sign.rule.AfterSignRuleForLiabilityProcess; +import nc.bs.ic.m4d.sign.rule.CheckDbizdateProcess; import nc.bs.ic.m4d.sign.rule.PullProcess; import nc.bs.ic.m4d.sign.rule.PushSaveIAandTOBill; import nc.bs.ic.pub.util.SagasUtils; @@ -34,6 +35,7 @@ public class SignBP implements ISignBP, ISignRuleProvider { + + public CheckDbizdateProcess() { + } + @Override + public void process(MaterialOutVO[] vos) { + for (MaterialOutVO vo : vos) { + if (vo.getBodys().length > 0){ + for (MaterialOutBodyVO bodyVO : vo.getBodys()) { +// 查询流程生产订单 完工时间 +// String sql = "SELECT m.twillendtime from mm_mo m LEFT join mm_pmo p ON p.cpmohid=m.cpmohid WHERE p.VBILLCODE = '"+bodyVO.getVproductbatch()+"' and m.VFIRSTBID='"+bodyVO.getCsrc2billbid()+"'"; + + + String sql = "SELECT m.twillendtime from mm_mo m WHERE m.cmoid in (SELECT\n" + + "\tm.VSOURCEMOROWID\n" + + "FROM\n" + + "\tmm_pickm_b b\n" + + "LEFT JOIN mm_pickm m ON\n" + + "\tm.cpickmid = b.cpickmid\n" + + "WHERE\n" + + "\tb.CPICKM_BID = '"+bodyVO.getCpickmbid()+"' )"; + BaseDAO dao = new BaseDAO(); + try { + String data =(String) dao.executeQuery(sql, new ColumnProcessor()); + if(bodyVO.getDbizdate().getDateAfter(7).compareTo(new UFDate(data)) >0){ + throw new BusinessException("材料出库单审批的时候出库日期如果大于对应流程生产订单上的完工日期7天,不能审核。!"); + }; + } catch (DAOException e) { + throw new RuntimeException(e); + } catch (BusinessException e) { + throw new RuntimeException(e); + } + } + } + + } + } +} diff --git a/ic/src/private/nc/bs/ic/m4d/sign/rule/PullProcess.java b/ic/src/private/nc/bs/ic/m4d/sign/rule/PullProcess.java index e15c011..45eeccc 100644 --- a/ic/src/private/nc/bs/ic/m4d/sign/rule/PullProcess.java +++ b/ic/src/private/nc/bs/ic/m4d/sign/rule/PullProcess.java @@ -47,15 +47,20 @@ PullProcess implements IRule { continue; } if (vo.getBodys().length > 0 && vo.getBodys()[0].getNshouldassistnum().doubleValue() > 0) { - jsonArray1.add(this.buildSyncData(vo)); + jsonArray1.add(this.buildSyncData(vo,17)); } if (vo.getBodys().length > 0 && vo.getBodys()[0].getNshouldassistnum().doubleValue() < 0) { - jsonArray2.add(this.buildSyncData(vo)); + jsonArray2.add(this.buildSyncData(vo,37)); } } - pushData("/prj-v5-web/ext/api/mrl", jsonArray1); - pushData("/prj-v5-web/ext/api/mrl", jsonArray2); + if(jsonArray1.size() > 0){ + pushData("/prj-v5-web/ext/api/getMrlReq", jsonArray1); + } + if(jsonArray2.size() > 0){ + pushData("/prj-v5-web/ext/api/returnMrl", jsonArray2); + } + } @@ -66,11 +71,11 @@ PullProcess implements IRule { } } - private JSONObject buildSyncData(MaterialOutVO vo) throws BusinessException { + private JSONObject buildSyncData(MaterialOutVO vo,int businessType ) throws BusinessException { JSONObject obj = new JSONObject(); obj.put("billCode", vo.getHead().getVbillcode()); // 已存在的billCode字段 obj.put("workOrderCode", null); - obj.put("businessType", 17); + obj.put("businessType", businessType); obj.put("supplierCode", null); obj.put("supplierName", null); obj.put("conditionalCode", null); @@ -90,19 +95,22 @@ PullProcess implements IRule { JSONObject detailItem = new JSONObject(); detailItem.put("billCode", vo.getHead().getVbillcode()); // 与主单据号一致 detailItem.put("workOrderCode", null); - detailItem.put("rowNum", 1); + detailItem.put("rowNum",Integer.parseInt(item.getCrowno()) ); String mrlsql = "select code,name from bd_material_v where pk_source = '" + item.getCmaterialoid() + "' "; Map mrl = (Map) dao.executeQuery( mrlsql, new MapProcessor()); detailItem.put("mrlCode", mrl.get("code")); detailItem.put("mrlName", mrl.get("name")); - detailItem.put("planInDate", item.getDbizdate()); + detailItem.put("planInDate", item.getDbizdate().toStdString()); detailItem.put("planInQty", item.getNshouldassistnum().doubleValue()); String unitsql = "select code from bd_measdoc where pk_measdoc = '" + item.getCastunitid() + "' "; Map unit = (Map) dao.executeQuery( unitsql, new MapProcessor()); detailItem.put("unit", unit.get("code")); detailItem.put("contractNo", null); - detailItem.put("area", "S003"); - detailItem.put("subArea", null); + + String areasql = "select code from bd_stordoc where pk_stordoc = '" + item.getCbodywarehouseid() + "' "; + Map area = (Map) dao.executeQuery( areasql, new MapProcessor()); + detailItem.put("area", area.get("code")); + detailItem.put("subArea", item.getVcontractcode()); jsonArray.add(detailItem); } obj.put("details", jsonArray); @@ -112,6 +120,7 @@ PullProcess implements IRule { private void pushData(String requestUrl, JSONArray param) throws BusinessException { String baseUrl = SysParaInitQuery.getParaString("GLOBLE00000000000000", "EPICMESURL"); +// baseUrl="http://192.168.55.39:8080"; requestUrl = baseUrl + requestUrl; String result = ThirdPartyPostRequestUtil.sendPostRequest(requestUrl, param.toJSONString()); JSONObject resultObj = JSONObject.parseObject(result); @@ -129,6 +138,7 @@ PullProcess implements IRule { public boolean checkIfIncludeOrg(String code) throws BusinessException { // 当当前操作人员是BIP的时候 直接return 不走同步MES的业务逻辑 String targetCode = SysParaInitQuery.getParaString("GLOBLE00000000000000", "INCLUDEORG"); +// targetCode="C013;C014;C015;C017"; if (targetCode == null || nc.vo.am.common.util.StringUtils.isEmpty(targetCode)) { throw new BusinessException("未配置组织参数,请前往 [业务参数设置-全局] 配置INCLUDEORG参数"); } diff --git a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/util/SyncEpicMesUtil.java b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/util/SyncEpicMesUtil.java index ebe4b34..c63a948 100644 --- a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/util/SyncEpicMesUtil.java +++ b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/util/SyncEpicMesUtil.java @@ -5,13 +5,13 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.serializer.SerializerFeature; import nc.bs.dao.BaseDAO; +import nc.bs.framework.common.NCLocator; import nc.bs.logging.Log; import nc.bs.trade.business.HYPubBO; import nc.bs.uapbd.util.MyHelper; import nc.bs.uapbd.util.ThirdPartyPostRequestUtil; import nc.jdbc.framework.processor.MapListProcessor; import nc.jdbc.framework.processor.MapProcessor; -import nc.pub.billcode.impl.BillCodeManageImpl; import nc.pub.billcode.itf.IBillcodeManage; import nc.vo.bc.pmpub.project.ProjectHeadVO; import nc.vo.bd.bom.bom0202.entity.BomVO; @@ -318,7 +318,7 @@ public class SyncEpicMesUtil { for (PMOItemVO item : vo.getChildrenVO()) { HYPubBO hybo = new HYPubBO(); Object materialtype = hybo.findColValue("bd_material_v", "materialtype", "pk_source = '" + item.getCmaterialid() + "' "); - IBillcodeManage billcodeManage = new BillCodeManageImpl(); + IBillcodeManage billcodeManage = NCLocator.getInstance().lookup(IBillcodeManage.class);; String code = billcodeManage.getPreBillCode_RequiresNew("xxxxx-code-rule", hvo.getPk_group(), hvo.getPk_org()); String detailItem = materialtype + hvo.getDbilldate().toStdString().substring(0, 3) + hvo.getDbilldate().toStdString().substring(5, 6) + code; jsonArray.add(detailItem);