diff --git a/ic/src/private/nc/bs/ic/m4c/sign/SignBP.java b/ic/src/private/nc/bs/ic/m4c/sign/SignBP.java index 1d916a1..5756daa 100644 --- a/ic/src/private/nc/bs/ic/m4c/sign/SignBP.java +++ b/ic/src/private/nc/bs/ic/m4c/sign/SignBP.java @@ -51,7 +51,7 @@ public class SignBP implements ISignBP, ISignRuleProvider processor.addAfterRule(new SaleOutProceedsRuleCG()); processor.addAfterRule(new MobAfterSignMessageRule()); // 销售出库 签字后 同步到MES金思维系统 - processor.addAfterRule(new AfterSigningSynchronizeRule()); + processor.addAfterRule(new AfterSigningSynchronizeRuleMES()); // 盘点(审批后传MES) // 销售出库 签字后 同步到锐制 diff --git a/ic/src/private/nc/bs/ic/m4c/sign/rule/AfterSigningSynchronizeRule.java b/ic/src/private/nc/bs/ic/m4c/sign/rule/AfterSigningSynchronizeRuleMES.java similarity index 65% rename from ic/src/private/nc/bs/ic/m4c/sign/rule/AfterSigningSynchronizeRule.java rename to ic/src/private/nc/bs/ic/m4c/sign/rule/AfterSigningSynchronizeRuleMES.java index f475442..93bad7a 100644 --- a/ic/src/private/nc/bs/ic/m4c/sign/rule/AfterSigningSynchronizeRule.java +++ b/ic/src/private/nc/bs/ic/m4c/sign/rule/AfterSigningSynchronizeRuleMES.java @@ -3,14 +3,24 @@ package nc.bs.ic.m4c.sign.rule; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.yonyou.cloud.utils.StringUtils; +import nc.bs.dao.BaseDAO; import nc.bs.framework.common.NCLocator; import nc.bs.logging.Log; import nc.impl.pubapp.pattern.rule.IRule; +import nc.jdbc.framework.processor.ColumnProcessor; +import nc.vo.bd.cust.CustomerVO; +import nc.vo.bd.material.MaterialVO; +import nc.vo.bd.material.measdoc.MeasdocVO; +import nc.vo.bd.psn.PsndocVO; +import nc.vo.bd.rack.RackVO; +import nc.vo.bd.supplier.SupplierVO; import nc.vo.ic.m4c.entity.SaleOutBodyVO; import nc.vo.ic.m4c.entity.SaleOutHeadVO; import nc.vo.ic.m4c.entity.SaleOutVO; +import nc.vo.org.DeptVO; import nc.vo.pub.BusinessException; import nc.vo.pub.lang.UFDate; +import nc.vo.pubapp.pattern.pub.SqlBuilder; import nccloud.pubift.commen.itf.utils.IHttpPostOtherSys; import java.text.SimpleDateFormat; @@ -19,13 +29,14 @@ import java.text.SimpleDateFormat; /** * 销售出库(签字后传MES金思维系统) */ -public class AfterSigningSynchronizeRule implements IRule { +public class AfterSigningSynchronizeRuleMES implements IRule { private static final String SALE_OUT_URL = "/GTHINKING/AjaxService/N_MISPRO/SaleOrderOutbound.ashx/SaveData"; // 销售出库登记接口 private static final SimpleDateFormat dateTimeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); private static final String logginfo = "OALOG"; private static final Log obmlog = Log.getInstance(logginfo); + private static BaseDAO dao = new BaseDAO(); - public AfterSigningSynchronizeRule() { + public AfterSigningSynchronizeRuleMES() { } @Override @@ -59,7 +70,7 @@ public class AfterSigningSynchronizeRule implements IRule { * 构建符合金思维系统接口规范的请求数据 * 按照NCC/YonBIP字段映射到金思维系统字段 */ - private JSONObject buildSyncData(SaleOutHeadVO hvo, SaleOutBodyVO[] bvos) { + private JSONObject buildSyncData(SaleOutHeadVO hvo, SaleOutBodyVO[] bvos) throws BusinessException { obmlog.debug("AfterSigningSynchronizeRule-开始处理销售出库单: " + hvo.getVbillcode()); if (!hvo.getPk_org().equals("0001A110000000000677")) { obmlog.debug("AfterSigningSynchronizeRule-跳过处理销售出库单,因为此单据组织非电缆: " + hvo.getVbillcode()); @@ -73,43 +84,33 @@ public class AfterSigningSynchronizeRule implements IRule { info.put("orderNo", hvo.getVbillcode()); // 提货单ID - 单据号(vbillcode) // 日期格式转换 UFDate dbilldate = hvo.getDbilldate(); - String billDateStr = dateTimeFormat.format(dbilldate.toDate()); - info.put("orderDate", billDateStr); // 提单日期 - 单据日期(dbilldate) - info.put("planDate", billDateStr); // 计划日期 - 使用同样的单据日期 - info.put("actureDate", billDateStr); - // 生成方式可能存储在自定义字段中 - String genType = getStringValue(hvo.getVdef1()); - info.put("genType", null); // 生成方式 - 默认N - info.put("type", "XSCK"); // 默认事务类型XSCK - info.put("departmentId", hvo.getCdptvid()); // 部门ID - 部门(cdptvid) - info.put("storeId", hvo.getCwarehouseid()); // 仓库ID - 仓库(cwarehouseid) - // 汇率默认为1 + info.put("orderDate", dbilldate.toString()); // 提单日期 - 单据日期(dbilldate) + info.put("planDate", dbilldate.toString()); // 计划日期 - 使用同样的单据日期 + info.put("actureDate", dbilldate.toString()); + info.put("genType", null); + info.put("type", "XSCK"); + // 部门ID - 部门(cdptvid) + info.put("departmentId", transferCodeByPk(DeptVO.getDefaultTableName(), DeptVO.CODE, DeptVO.PK_DEPT, hvo.getCdptvid())); + // 仓库ID - 仓库(cwarehouseid) + info.put("storeId", transferCodeByPk(RackVO.getDefaultTableName(), RackVO.CODE, RackVO.PK_RACK, hvo.getCwarehouseid())); + // TODO info.put("exRate", null); info.put("sType", "N"); // 发出默认值 info.put("billing", "Y"); // 出具发票默认值 info.put("billingBasis", "S"); // 开票依据默认值 - - // 有效日期可能为空,可能存储在其他字段或自定义字段中 - String effDateStr = getStringValue(hvo.getVdef2()); - if (StringUtils.isNotEmpty(effDateStr)) { - try { - UFDate effDate = new UFDate(effDateStr); - info.put("effDate", dateTimeFormat.format(effDate.toDate())); - } catch (Exception e) { - obmlog.error("解析有效日期出错: " + e.getMessage()); - } - } - + info.put("effDate", null); info.put("consignStoreId", null); // 寄售仓库ID info.put("consignType", null); // 寄售事务类型 info.put("operatorNo", null); // 经办人工号 - 制单人(billmaker) - info.put("operatorName", null); // 经办人 - 可能是自定义字段 - info.put("storeKeeper", hvo.getCwhsmanagerid()); // 保管员 - 库管员(cwhsmanagerid) - info.put("cwhsmanagerid", hvo.getCwhsmanagerid()); // 保管员ID - 库管员(cwhsmanagerid) - info.put("customId", hvo.getCcustomerid()); // 客户ID - 订单客户(ccustomerid) + info.put("operatorName", null); // 经办人 + // 保管员 - 库管员(cwhsmanagerid) + info.put("storeKeeper", transferCodeByPk(PsndocVO.getDefaultTableName(), PsndocVO.CODE, PsndocVO.PK_PSNDOC, hvo.getCwhsmanagerid())); + // 保管员ID - 库管员(cwhsmanagerid) + info.put("cwhsmanagerid", transferCodeByPk(PsndocVO.getDefaultTableName(), PsndocVO.CODE, PsndocVO.PK_PSNDOC, hvo.getCwhsmanagerid())); + // 客户ID - 订单客户(ccustomerid) + info.put("customId", transferCodeByPk(CustomerVO.getDefaultTableName(), CustomerVO.CODE, CustomerVO.PK_CUSTOMER, hvo.getCcustomerid())); info.put("mark", "Y"); // 生成标志默认值 info.put("remark", hvo.getVnote()); // 备注 - 备注(vnote) - // 构建details明细数组 JSONArray details = new JSONArray(); if (bvos != null) { @@ -117,32 +118,32 @@ public class AfterSigningSynchronizeRule implements IRule { JSONObject detail = new JSONObject(); detail.put("orderNo", hvo.getVbillcode()); // 提货单ID - 单据号(vbillcode) detail.put("sequenceNum", bvo.getCrowno()); - // 来源单据信息 - 根据字典正确映射 detail.put("saleOrderNo", null); // SOID - 来源单据号(vsourcebillcode) detail.put("saleSequenceNum", null); // SO序号 - 来源单据行号(vsourcerowno) detail.put("allocationNum", null); // 分配号 - - // 物料相关 - 使用正确的字段名 - detail.put("materialId", bvo.getCmaterialoid()); // 物料ID - 物料(cmaterialoid) - detail.put("unit", bvo.getCunitid()); // 计量单位 - 主单位(cunitid) - detail.put("productNum", null); // 制令号 - 可能是自定义字段 - - detail.put("storageId", bvo.getClocationid()); // 库位 - 货位(clocationid) - detail.put("batchNum", bvo.getVbatchcode()); // 物料批号 - 批次号(vbatchcode) + // 物料ID - 物料(cmaterialoid) + detail.put("materialId", transferCodeByPk(MaterialVO.getDefaultTableName(), MaterialVO.CODE, MaterialVO.PK_MATERIAL, bvo.getCmaterialoid())); + // 计量单位 - 主单位(cunitid) + detail.put("unit", transferCodeByPk(MeasdocVO.getDefaultTableName(), MeasdocVO.CODE, MeasdocVO.PK_MEASDOC, bvo.getCunitid())); + detail.put("productNum", null); + // 库位 - 货位(clocationid) + detail.put("storageId", transferCodeByPk(RackVO.getDefaultTableName(), RackVO.CODE, RackVO.PK_RACK, bvo.getClocationid())); + // 物料批号 - 批次号(vbatchcode) + detail.put("batchNum", bvo.getVbatchcode()); detail.put("scaleFactor", bvo.getVchangerate()); - // 应发数量和实发数量 detail.put("issuedQty", bvo.getNshouldassistnum()); // 应发数量(nshouldassistnum) detail.put("mIssuedQty", bvo.getNshouldnum()); // 主应发数量(nshouldnum) detail.put("actQry", bvo.getNassistnum()); // 实发数量(nassistnum) detail.put("mActQry", bvo.getNnum()); // 主实发数量(nnum) detail.put("assistActQry", null); // 辅助实发数量(nassistnum) - // 客户信息 - detail.put("customId", getStringValue(bvo.getCasscustid())); // 客户ID - 客户(casscustid) + // 客户ID - 客户(casscustid) + detail.put("customId", transferCodeByPk(CustomerVO.getDefaultTableName(), CustomerVO.CODE, CustomerVO.PK_CUSTOMER, bvo.getCasscustid())); // 供应商信息 - detail.put("supplierId", getStringValue(bvo.getCvendorid())); // 供应商ID - 供应商(cvendorid) + // 供应商ID - 供应商(cvendorid) + detail.put("supplierId", transferCodeByPk(SupplierVO.getDefaultTableName(), SupplierVO.CODE, SupplierVO.PK_SUPPLIER, bvo.getCvendorid())); detail.put("color", null); // 生产日期 detail.put("manufactureDate", null); // 生产日期(dproducedate) @@ -196,4 +197,21 @@ public class AfterSigningSynchronizeRule implements IRule { obmlog.error("AfterSigningSynchronizeRule-处理响应异常: " + e.getMessage(), e); } } + + + private String transferCodeByPk(String tableName, String selectField, String pkField, String pk) throws BusinessException { + if (nc.vo.cmp.util.StringUtils.isEmpty(pk)) { + return null; + } + SqlBuilder sqlBuilder = new SqlBuilder(); + sqlBuilder.append(" select " + selectField); + sqlBuilder.append(" from " + tableName); + sqlBuilder.append(" where "); + sqlBuilder.append(pkField, pk); + Object o = dao.executeQuery(sqlBuilder.toString(), new ColumnProcessor()); + if (o == null) { + throw new BusinessException("未查询到编码信息,sql【" + sqlBuilder + "】"); + } + return o.toString(); + } } diff --git a/ic/src/private/nc/bs/ic/m4r/approve/ApproveBP.java b/ic/src/private/nc/bs/ic/m4r/approve/ApproveBP.java index edd4eda..6b43f9c 100644 --- a/ic/src/private/nc/bs/ic/m4r/approve/ApproveBP.java +++ b/ic/src/private/nc/bs/ic/m4r/approve/ApproveBP.java @@ -1,6 +1,6 @@ package nc.bs.ic.m4r.approve; -import nc.bs.ic.m4r.approve.rule.AfterApprovingSynchronizeRule; +import nc.bs.ic.m4r.approve.rule.AfterApprovingSynchronizeRuleMES; import nc.bs.ic.m4r.approve.rule.PushInOutBills; import nc.bs.ic.m4r.base.BPPluginPoint; import nc.bs.ic.m4r.insert.rule.InvcountDataCheck; @@ -23,7 +23,7 @@ public class ApproveBP implements IApproveBP, IApproveRuleProvid public void addApproveAfterRule(ICAroundProcesser processor) { processor.addAfterRule(new PushInOutBills()); // 盘点(审批后传MES) - processor.addAfterRule(new AfterApprovingSynchronizeRule()); + processor.addAfterRule(new AfterApprovingSynchronizeRuleMES()); } public void addApproveBeforeRule(ICAroundProcesser processor) { diff --git a/ic/src/private/nc/bs/ic/m4r/approve/rule/AfterApprovingSynchronizeRule.java b/ic/src/private/nc/bs/ic/m4r/approve/rule/AfterApprovingSynchronizeRuleMES.java similarity index 75% rename from ic/src/private/nc/bs/ic/m4r/approve/rule/AfterApprovingSynchronizeRule.java rename to ic/src/private/nc/bs/ic/m4r/approve/rule/AfterApprovingSynchronizeRuleMES.java index 984c808..d5afcd1 100644 --- a/ic/src/private/nc/bs/ic/m4r/approve/rule/AfterApprovingSynchronizeRule.java +++ b/ic/src/private/nc/bs/ic/m4r/approve/rule/AfterApprovingSynchronizeRuleMES.java @@ -4,15 +4,22 @@ package nc.bs.ic.m4r.approve.rule; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.yonyou.cloud.utils.StringUtils; +import nc.bs.dao.BaseDAO; import nc.bs.framework.common.NCLocator; import nc.bs.logging.Log; import nc.impl.pubapp.pattern.rule.IRule; +import nc.jdbc.framework.processor.ColumnProcessor; +import nc.vo.bd.cust.CustomerVO; +import nc.vo.bd.material.MaterialVO; +import nc.vo.bd.rack.RackVO; +import nc.vo.bd.supplier.SupplierVO; import nc.vo.ic.m4r.entity.InvCountBillVO; import nc.vo.ic.m4r.entity.InvCountBodyVO; import nc.vo.ic.m4r.entity.InvCountHeaderVO; import nc.vo.pub.BusinessException; import nc.vo.pub.lang.UFDate; import nc.vo.pub.lang.UFDouble; +import nc.vo.pubapp.pattern.pub.SqlBuilder; import nccloud.pubift.commen.itf.utils.IHttpPostOtherSys; import java.text.SimpleDateFormat; @@ -21,13 +28,14 @@ import java.text.SimpleDateFormat; /** * 盘点(审批后传MES) */ -public class AfterApprovingSynchronizeRule implements IRule { +public class AfterApprovingSynchronizeRuleMES implements IRule { private static final String INV_COUNT_URL = "/GTHINKING/AjaxService/N_MISPRO/InvCount.ashx/SaveData"; // 盘点单同步接口 private static final SimpleDateFormat dateTimeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); private static final String logginfo = "OALOG"; private static final Log obmlog = Log.getInstance(logginfo); + private static final BaseDAO dao = new BaseDAO(); - public AfterApprovingSynchronizeRule() { + public AfterApprovingSynchronizeRuleMES() { } @Override @@ -107,29 +115,24 @@ public class AfterApprovingSynchronizeRule implements IRule { if (bvos != null) { for (InvCountBodyVO bvo : bvos) { JSONObject detail = new JSONObject(); - - // 必填字段 // 序号 - 转换为浮点数 - detail.put("sequenceNum", bvo.getCrowno()); // 序号(crowno) - 必填 - detail.put("materialId", getStringValue(bvo.getCmaterialvid())); // 物料ID(cmaterialvid) - 必填 - detail.put("storageId", getStringValue(bvo.getClocationid())); // 库位(clocationid) - 必填 - detail.put("batchNum", getStringValue(bvo.getVbatchcode())); // 物料批号(vbatchcode) - 必填 - + detail.put("sequenceNum", bvo.getCrowno()); + // 物料ID(cmaterialvid) - 必填 + detail.put("materialId", transferCodeByPk(MaterialVO.getDefaultTableName(), MaterialVO.PK_MATERIAL, MaterialVO.CODE, bvo.getCmaterialvid())); + // 库位(clocationid) - 必填 + detail.put("storageId", transferCodeByPk(RackVO.getDefaultTableName(), RackVO.CODE, RackVO.PK_RACK, bvo.getClocationid())); + // 物料批号(vbatchcode) - 必填 + detail.put("batchNum", getStringValue(bvo.getVbatchcode())); // 盘存数量 - 使用实盘主数量 UFDouble countNum = bvo.getNcountnum(); - if (countNum != null) { - detail.put("panQty", countNum.doubleValue()); // 盘存数量(ncountnum) - 必填 - } else { - throw new BusinessException("盘存数量不能为空"); - } - - detail.put("customId", getStringValue(bvo.getCasscustid())); // 客户ID - detail.put("supplierId", getStringValue(bvo.getCvendorid())); // 供应商ID - + detail.put("panQty", countNum.doubleValue()); // 盘存数量(ncountnum) - 必填 + // 客户ID + detail.put("customId", transferCodeByPk(CustomerVO.getDefaultTableName(), CustomerVO.CODE, CustomerVO.PK_CUSTOMER, bvo.getCasscustid())); + // 供应商ID + detail.put("supplierId", transferCodeByPk(SupplierVO.getDefaultTableName(), SupplierVO.CODE, SupplierVO.PK_SUPPLIER, bvo.getCvendorid())); // 生产日期处理 - detail.put("manufactureDate", null); // 如果没有,传入null + detail.put("manufactureDate", null); detail.put("color", null); - // 包装信息(可能来自自定义属性) detail.put("packLen", null); detail.put("packSize", null); @@ -182,4 +185,20 @@ public class AfterApprovingSynchronizeRule implements IRule { obmlog.error("AfterApprovingSynchronizeRule-处理响应异常: " + e.getMessage(), e); } } + + private String transferCodeByPk(String tableName, String selectField, String pkField, String pk) throws BusinessException { + if (nc.vo.cmp.util.StringUtils.isEmpty(pk)) { + return null; + } + SqlBuilder sqlBuilder = new SqlBuilder(); + sqlBuilder.append(" select " + selectField); + sqlBuilder.append(" from " + tableName); + sqlBuilder.append(" where "); + sqlBuilder.append(pkField, pk); + Object o = dao.executeQuery(sqlBuilder.toString(), new ColumnProcessor()); + if (o == null) { + throw new BusinessException("未查询到编码信息,sql【" + sqlBuilder + "】"); + } + return o.toString(); + } } diff --git a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/PMOApproveBP.java b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/PMOApproveBP.java index de3e335..943304d 100644 --- a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/PMOApproveBP.java +++ b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/PMOApproveBP.java @@ -49,7 +49,7 @@ public class PMOApproveBP { processer.addAfterRule(new PMOCreatePSCPlanRule()); ICompareRule auditSupplyRule = new PMOApproveAuditSupplyRule(); processer.addAfterRule(auditSupplyRule); - // 审批后推送到睿智系统 + // 审批后推送到RZ系统 processer.addAfterRule(new AfterApprovingSynchronizeRuleRZ()); } diff --git a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApprovingSynchronizeRuleRZ.java b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApprovingSynchronizeRuleRZ.java index 80726f6..90ae7a7 100644 --- a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApprovingSynchronizeRuleRZ.java +++ b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApprovingSynchronizeRuleRZ.java @@ -8,21 +8,25 @@ import nc.bs.uapbd.util.ThirdPartyPostRequestUtil; import nc.impl.pubapp.pattern.rule.IRule; import nc.jdbc.framework.processor.ColumnProcessor; import nc.pubitf.para.SysInitQuery; +import nc.vo.bd.material.MaterialVO; +import nc.vo.bd.stordoc.StordocVO; import nc.vo.cmp.util.StringUtils; import nc.vo.mmpac.pmo.pac0002.entity.PMOAggVO; import nc.vo.mmpac.pmo.pac0002.entity.PMOHeadVO; import nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO; +import nc.vo.org.DeptVO; import nc.vo.org.OrgVO; import nc.vo.pub.BusinessException; import nc.vo.pubapp.pattern.exception.ExceptionUtils; import nc.vo.pubapp.pattern.pub.SqlBuilder; +import nc.vo.rum.stocks.StocksVO; import nc.vo.scmpub.util.ArrayUtil; import java.util.ArrayList; import java.util.List; /** - * 流程生产订单审批后推送睿智 + * 流程生产订单审批后推送RZ */ public class AfterApprovingSynchronizeRuleRZ implements IRule { private static final Log log = Log.getInstance("rzmomlog"); @@ -40,10 +44,10 @@ public class AfterApprovingSynchronizeRuleRZ implements IRule { return; } - // 推送到睿智系统 + // 推送到RZ系统 pushToRZMOM(filteredOrders.toArray(new PMOAggVO[0])); } catch (Exception e) { - log.error("同步生产订单到睿智系统失败: " + e.getMessage(), e); + log.error("同步生产订单到RZ系统失败: " + e.getMessage(), e); ExceptionUtils.wrappException(e); } } @@ -55,7 +59,7 @@ public class AfterApprovingSynchronizeRuleRZ implements IRule { List aggvoList = new ArrayList<>(); for (PMOAggVO aggvo : pmoAggVOS) { String pkOrg = aggvo.getParentVO().getPk_org(); - String orgCode = transferCodeByPk(OrgVO.getDefaultTableName(), pkOrg); + String orgCode = transferCodeByPk(OrgVO.getDefaultTableName(), OrgVO.CODE, OrgVO.PK_ORG, pkOrg); if ("30401".equals(orgCode)) { aggvoList.add(aggvo); } @@ -64,14 +68,13 @@ public class AfterApprovingSynchronizeRuleRZ implements IRule { } /** - * 推送数据到睿智MOM系统 + * 推送数据到RZMOM系统 */ private void pushToRZMOM(PMOAggVO[] pmoAggVOS) throws BusinessException { String rzwmsip = SysInitQuery.getParaString("GLOBLE00000000000000", "RZWMSIP"); - JSONObject jsonObject = new JSONObject(); jsonObject.put("dataflow", "泰开BIP→RZMOMv6"); - jsonObject.put("actionCode", "scdd"); // 生产订单的action code + jsonObject.put("actionCode", "jhxmb"); // 生产订单的action code JSONObject dataIn = new JSONObject(); JSONObject dataIn2 = new JSONObject(); @@ -107,68 +110,31 @@ public class AfterApprovingSynchronizeRuleRZ implements IRule { for (PMOItemVO body : bodys) { JSONObject detailItem = new JSONObject(); - - // 根据映射表设置字段 - detailItem.put("jhmx_wbid", vbillcode); // 第三方系统主键id - detailItem.put("scjh_wbid", vbillcode); // 计划ID - detailItem.put("operate", 1); // 操作状态:1新增/修改 - detailItem.put("scbh", vbillcode); // 计划编号 - - // 计划序号,有则使用实际值,无则设为1 - String rowno = body.getVrowno(); - detailItem.put("jhxh", StringUtils.isEmpty(rowno) ? 1 : Integer.parseInt(rowno)); - // 第三方系统计划类别id detailItem.put("jhlb_wbid", head.getVtrantypecode()); - - // 第三方系统产品ID - detailItem.put("wlbm_wbid", body.getCmaterialvid()); - - // 计划数量 - if (body.getNmmastnum() != null) { - detailItem.put("jhsl", body.getNmmastnum().doubleValue()); - } - detailItem.put("jhlx", null); - // 计划员 - detailItem.put("jhy_wbid", null); - - // 上线日期 - 计划开工日期 - if (body.getTplanstarttime() != null) { - detailItem.put("sxrq", body.getTplanstarttime().toString()); - } - - // 完成日期 - 计划完工日期 - if (body.getTplanendtime() != null) { - detailItem.put("wcrq", body.getTplanendtime().toString()); - } - + // 第三方系统产品ID 物料ID + detailItem.put("wlbm_wbid", transferCodeByPk(MaterialVO.getDefaultTableName(), MaterialVO.CODE, MaterialVO.PK_MATERIAL, body.getCmaterialvid())); + // 预计开工日期 + detailItem.put("sxrq", body.getTplanstarttime().toString()); + // 预计完工日期 + detailItem.put("wcrq", body.getTplanendtime().toString()); + detailItem.put("gdbj", body.getFitemstatus()); + // 计划产出数量 + detailItem.put("jhsl", body.getNmmastnum().doubleValue()); + // 入库仓库 + detailItem.put("sdck", transferCodeByPk(StordocVO.getDefaultTableName(), StordocVO.CODE, StordocVO.PK_STORDOC, body.getCinwarehouseid())); + detailItem.put("wlzdycs01", transferCodeByPk(StordocVO.getDefaultTableName(), StordocVO.CODE, StordocVO.PK_STORDOC, body.getCinwarehouseid())); + // 工作中心 生产部门ID + detailItem.put("scgc_wbid", transferCodeByPk(DeptVO.getDefaultTableName(), DeptVO.CODE, DeptVO.PK_DEPT, body.getCdeptid())); + // 订单序号 + detailItem.put("ddbh", body.getVsalebillcode()); + // 订单序号 + detailItem.put("khddh", null); + detailItem.put("ddxh", null); // 备注说明 - detailItem.put("bzsm", head.getVnote()); - - // 签发标记 - 行状态 - detailItem.put("qfbj", body.getFitemstatus()); - - // 送达地点 - 入库仓库 - detailItem.put("sdck", body.getCinwarehouseid()); - + detailItem.put("bzsm", body.getVnote()); // 项目编号 - detailItem.put("wlzdycs06", body.getVdef1()); - - // 固定值设置 - detailItem.put("zdscjhlyb", 1); // 自动生成计划来源表 - detailItem.put("jhbhzdsc", 0); // 计划号重新生成 - detailItem.put("bomsdbj", 1); // 生产BOM锁定 - detailItem.put("bsbj", 1); // 包装Bom表锁定 - - // 其他字段映射 - detailItem.put("khbh_wbid", body.getCcustomerid()); // 第三方系统客户id - detailItem.put("cjbz_wbid", body.getCdeptid()); // 第三方系统车间工段ID - - // 销售订单相关 - detailItem.put("xsdd_wbid", body.getVfirstid()); // 第三方系统销售订单主表ID - detailItem.put("ddbh", body.getVsalebillcode()); // 订单编号 - detailItem.put("ddxh", body.getVfirstrowno()); // 订单序号 - + detailItem.put("htbz,wlzdycs06", body.getVdef1()); details.add(detailItem); } } @@ -176,15 +142,15 @@ public class AfterApprovingSynchronizeRuleRZ implements IRule { /** * 根据主键查询编码 */ - private String transferCodeByPk(String tableName, String pk) throws BusinessException { + private String transferCodeByPk(String tableName, String selectField, String pkField, String pk) throws BusinessException { if (StringUtils.isEmpty(pk)) { return null; } SqlBuilder sqlBuilder = new SqlBuilder(); - sqlBuilder.append(" select " + OrgVO.CODE); + sqlBuilder.append(" select " + selectField); sqlBuilder.append(" from " + tableName); sqlBuilder.append(" where "); - sqlBuilder.append(OrgVO.PK_ORG, pk); + sqlBuilder.append(pkField, pk); Object o = dao.executeQuery(sqlBuilder.toString(), new ColumnProcessor()); if (o == null) { throw new BusinessException("未查询到编码信息,sql【" + sqlBuilder + "】");