| | |
| | | jsonObject.put("modify_starttime", latestUpdateTime);//业务起始日期 |
| | | jsonObject.put("billstatus", "B");//单据状态 |
| | | jsonObject.put("modify_endtime", sdf1.format(now));//业务起始日期 |
| | | jsonObject.put("billtype_number", "im_SalOutBill_STD_BT_S_R");//单据类型 |
| | | jsonObject.put("billtype_number", "im_SalOutBill_STD_BT_S_R");//单据类型 退货类型待定 |
| | | break; |
| | | case "PRD_PickMtrl"://生产领料单 |
| | | path = imMdcMftproorder; |
| | |
| | | for (int k = 0; k < billEntryArray.size(); k++) { |
| | | JSONObject entry = billEntryArray.getJSONObject(k); |
| | | String matnr = entry.getString("material_number"); //物料编码,内部SKU |
| | | // Double anfme = entry.getDouble("eap7_decimalfield");//箱数 |
| | | Double anfme = 1.0;//箱数 |
| | | |
| | | Double anfme = entry.getDouble("eap7_decimalfield");//箱数 |
| | | Double totalNumItems = entry.getDouble("eap7_decimalfield1");//总件数 |
| | | Double totalVolume = entry.getDouble("eap7_decimalfield2");//总体积 |
| | | String warehouse = entry.getString("warehouse_number");//仓库编码 |
| | |
| | | for (int k = 0; k < billEntryArray.size(); k++) { |
| | | JSONObject entry = billEntryArray.getJSONObject(k); |
| | | String matnr = entry.getString("material_number"); //物料编码,内部SKU |
| | | Double anfme = entry.getDouble("qty");//箱数 |
| | | Double anfme = entry.getDouble("qty");//个数 |
| | | Double anfmeBox = 0.0;//箱数 |
| | | Double totalNumItems = entry.getDouble("eap7_decimalfield1");//总件数 |
| | | Double totalVolume = entry.getDouble("eap7_decimalfield2");//总体积 |
| | | String warehouse = entry.getString("warehouse_number");//仓库编码 |
| | |
| | | "物料档案不存在:" + matnr, false); |
| | | continue; |
| | | } |
| | | anfmeBox = anfme/mat.getSafeQty(); |
| | | // ========= 明细去重 ========= |
| | | List<OrderDetl> orderDetls = |
| | | orderDetlService.selectByOrderId(order.getId()); |
| | |
| | | orderDetl.sync(mat); |
| | | orderDetl.setThreeCode(detlId); |
| | | orderDetl.setLineNumber(seq); |
| | | orderDetl.setAnfme(anfme); |
| | | orderDetl.setAnfme(anfmeBox); |
| | | orderDetl.setErpAnfme(anfme); |
| | | orderDetl.setOrderId(order.getId()); |
| | | orderDetl.setOrderNo(order.getOrderNo()); |
| | |
| | | for (int k = 0; k < billEntryArray.size(); k++) { |
| | | JSONObject entry = billEntryArray.getJSONObject(k); |
| | | String matnr = entry.getString("material_number"); //物料编码,内部SKU |
| | | // Double anfme = entry.getDouble("eap7_decimalfield");//箱数 |
| | | Double anfme = 1.0;//箱数 |
| | | |
| | | Double anfme = entry.getDouble("qty");//个数 |
| | | Double anfmeBox = 0.0; |
| | | Double totalNumItems = entry.getDouble("eap7_decimalfield1");//总件数 |
| | | Double totalVolume = entry.getDouble("eap7_decimalfield2");//总体积 |
| | | String warehouse = entry.getString("warehouse_number");//仓库编码 |
| | |
| | | "商品不存在:" + matnr, false); |
| | | continue; |
| | | } |
| | | anfmeBox = anfme/mat.getSafeQty(); |
| | | // ========= 明细去重 ========= |
| | | List<OrderDetl> orderDetls = |
| | | orderDetlService.selectByOrderId(order.getId()); |
| | |
| | | orderDetl.sync(mat); |
| | | orderDetl.setThreeCode(detlId); |
| | | orderDetl.setLineNumber(seq); |
| | | orderDetl.setAnfme(anfme); |
| | | orderDetl.setAnfme(anfmeBox); |
| | | orderDetl.setErpAnfme(anfme); |
| | | orderDetl.setOrderId(order.getId()); |
| | | orderDetl.setOrderNo(order.getOrderNo()); |
| | |
| | | for (int k = 0; k < billEntryArray.size(); k++) { |
| | | JSONObject entry = billEntryArray.getJSONObject(k); |
| | | String matnr = entry.getString("material_number"); //物料编码,内部SKU |
| | | Double anfme = entry.getDouble("completqty");//箱数 |
| | | Double anfmeBox = entry.getDouble("eap7_integerfield");//箱数 |
| | | Double anfme = entry.getDouble("completqty");//个数 |
| | | Double totalNumItems = entry.getDouble("eap7_decimalfield1");//总件数 |
| | | Double totalVolume = entry.getDouble("eap7_decimalfield2");//总体积 |
| | | String warehouse = entry.getString("warehouse_number");//仓库编码 |
| | |
| | | orderDetl.sync(mat); |
| | | orderDetl.setThreeCode(detlId); |
| | | orderDetl.setLineNumber(seq); |
| | | orderDetl.setAnfme(anfme); |
| | | orderDetl.setErpAnfme(anfme); |
| | | orderDetl.setAnfme(anfmeBox); |
| | | orderDetl.setErpAnfme(anfme);//汇报单个数 |
| | | orderDetl.setOrderId(order.getId()); |
| | | orderDetl.setOrderNo(order.getOrderNo()); |
| | | orderDetl.setSupp(supp); |
| | |
| | | @Value("${erp.address.imMdcMftfeedorderReport}") |
| | | //生产补料单上报 |
| | | private String imMdcMftfeedorderReport; |
| | | @Value("${erp.address.imProductinbillReport}") |
| | | @Value("${erp.address.imProductinbillBatchAudit}") |
| | | //生产汇报单上报 |
| | | private String imProductinbillReport; |
| | | private String imProductinbillBatchAudit; |
| | | @Value("${erp.address.imOtheroutbillAudi}") |
| | | //其他出库审核上报 |
| | | private String imOtheroutbillAudi; |
| | |
| | | dataObj.fluentPut("id", idArray); |
| | | return new JSONObject().fluentPut("data", dataObj); |
| | | case "PRD_MORPT"://生产汇报单 |
| | | path = imProductinbillReport; |
| | | path = imProductinbillBatchAudit; |
| | | idArray.add(order.getNumber()); |
| | | dataObj.fluentPut("id", idArray); |
| | | return new JSONObject().fluentPut("data", dataObj); |
| | |
| | | import com.zy.asrs.service.DocTypeService; |
| | | import com.zy.asrs.service.OrderService; |
| | | import com.zy.asrs.service.impl.ErpSecretServiceImpl; |
| | | import com.zy.asrs.service.impl.MatServiceImpl; |
| | | import com.zy.asrs.service.impl.OrderDetlPakinServiceImpl; |
| | | import com.zy.asrs.service.impl.OrderDetlServiceImpl; |
| | | import com.zy.asrs.task.AbstractHandler; |
| | |
| | | private String imOtheroutbill; |
| | | @Value("${erp.address.imOtherinbill}") |
| | | private String imOtherinbill; |
| | | @Value("${erp.address.imProductinbillReport}") |
| | | private String imProductinbillReport; |
| | | |
| | | @Autowired |
| | | private OrderService orderService; |
| | |
| | | @Value("${erp.login.xAcfwIdentity}") |
| | | private String xAcfwIdentity; |
| | | String path; |
| | | @Autowired |
| | | private MatServiceImpl matService; |
| | | |
| | | @Transactional |
| | | public ReturnT<String> start(Order order) { |
| | | SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
| | |
| | | JSONArray billentryArray = new JSONArray(); // 用于存储 billentry 对象 |
| | | String suppCode = null; // 供应商 |
| | | String boxType2 = null; // 货主/货源 |
| | | // 遍历订单详情 |
| | | Date now = new Date(); |
| | | |
| | | for (OrderDetl orderDetl : orderDetlList) { |
| | | suppCode = orderDetl.getSuppCode(); |
| | | boxType2 = orderDetl.getBoxType2(); |
| | | if (orderDetl.getQty() == 0) { |
| | | continue; |
| | | } |
| | | Mat mat = matService.selectByMatnr(orderDetl.getMatnr()); |
| | | Double qty = orderDetl.getQty()*mat.getSafeQty(); |
| | | Double qtytotal = orderDetl.getAnfme()*mat.getSafeQty(); |
| | | // JSONArray idArr = new JSONArray(); |
| | | // idArr.add(0L); |
| | | // 创建 billentry_lk 对象 |
| | |
| | | .fluentPut("billentry_lk_stableid", 677270092232273922L) |
| | | .fluentPut("billentry_lk_sbillid", Long.parseLong(order.getItemName())) // 主单ID |
| | | .fluentPut("billentry_lk_sid", Long.parseLong(orderDetl.getThreeCode())) // 明细ID |
| | | .fluentPut("billentry_lk_baseqty_old", orderDetl.getErpAnfme()) // ERP数量 |
| | | .fluentPut("billentry_lk_baseqty", orderDetl.getQty()); // 作业数量 |
| | | .fluentPut("billentry_lk_baseqty_old", qtytotal) // ERP数量 |
| | | .fluentPut("billentry_lk_baseqty", qty); // 作业数量 |
| | | billentryLkArray.add(billentryLk); |
| | | // 创建 billentry 对象,填充缺失的字段 |
| | | JSONObject billentry = new JSONObject() |
| | |
| | | .fluentPut("invtype_number", "110") // 库存类型 |
| | | .fluentPut("outinvstatus_number", "110") |
| | | .fluentPut("linetype_number", "010") // 行号类型 |
| | | .fluentPut("qty", orderDetl.getQty()) // 数量 |
| | | .fluentPut("qty", qty) // 数量 |
| | | .fluentPut("material_number", orderDetl.getMatnr()) // 物料编号 |
| | | .fluentPut("billentry_lk", billentryLkArray); |
| | | |
| | |
| | | .fluentPut("supplier_number", suppCode) // 供应商编号 |
| | | .fluentPut("billentry", billentryArray) // 将 billentry 数组添加到请求参数 |
| | | ))); |
| | | case "PRD_MORPT": // 生产汇报单 |
| | | JSONArray billentryLkArray1 = new JSONArray(); |
| | | JSONArray billentryArray1 = new JSONArray(); // 用于存储 billentry 对象 |
| | | String suppCode1 = null; // 供应商 |
| | | String boxType21 = null; // 货主/货源 |
| | | Date now1 = new Date(); |
| | | path = imProductinbillReport; |
| | | for (OrderDetl orderDetl : orderDetlList) { |
| | | suppCode1 = orderDetl.getSuppCode(); |
| | | boxType21 = orderDetl.getBoxType2(); |
| | | if (orderDetl.getQty() == 0) { |
| | | continue; |
| | | } |
| | | Mat mat = matService.selectByMatnr(orderDetl.getMatnr()); |
| | | Double qty = orderDetl.getQty()*mat.getSafeQty(); |
| | | Double qtytotal = orderDetl.getAnfme()*mat.getSafeQty(); |
| | | // JSONArray idArr = new JSONArray(); |
| | | // idArr.add(0L); |
| | | // 创建 billentry_lk 对象 |
| | | JSONObject billentryLk = new JSONObject() |
| | | .fluentPut("id", 0L) |
| | | .fluentPut("seq", orderDetl.getLineNumber()) |
| | | .fluentPut("billentry_lk_stableid", 677270092232273922L) |
| | | .fluentPut("billentry_lk_sbillid", Long.parseLong(order.getItemName())) // 主单ID |
| | | .fluentPut("billentry_lk_sid", Long.parseLong(orderDetl.getThreeCode())) // 明细ID |
| | | .fluentPut("billentry_lk_baseqty_old", qtytotal) // ERP数量 |
| | | .fluentPut("billentry_lk_baseqty", qty); // 作业数量 |
| | | billentryLkArray1.add(billentryLk); |
| | | // 创建 billentry 对象,填充缺失的字段 |
| | | JSONObject billentry = new JSONObject() |
| | | .fluentPut("id", 0L) |
| | | .fluentPut("warehouse_number", orderDetl.getManu()) // 仓库编号 |
| | | .fluentPut("invstatus_number", "110") // 库存状态 |
| | | .fluentPut("invtype_number", "110") // 库存类型 |
| | | .fluentPut("outinvstatus_number", "110") |
| | | .fluentPut("linetype_number", "010") // 行号类型 |
| | | .fluentPut("qty", qty) // 数量 |
| | | .fluentPut("material_number", orderDetl.getMatnr()) // 物料编号 |
| | | .fluentPut("billentry_lk", billentryLkArray1); |
| | | |
| | | billentryArray1.add(billentry); |
| | | } |
| | | return new JSONObject() |
| | | .fluentPut("data", new JSONArray(Arrays.asList( |
| | | new JSONObject() |
| | | .fluentPut("billno", UUID.randomUUID().toString().replace("-", "").substring(0, 16)) |
| | | .fluentPut("trdbillno", UUID.randomUUID().toString().replace("-", "")) |
| | | .fluentPut("billtype_number", "im_PurInBill_STD_BT_S") |
| | | .fluentPut("biztime", sdf1.format(now1)) |
| | | .fluentPut("exratedate", sdf1.format(now1)) |
| | | .fluentPut("bizorg_number", boxType21) |
| | | .fluentPut("biztype_number", "110") // 货主/货源 |
| | | .fluentPut("org_number", boxType21) // 货主/货源 |
| | | .fluentPut("paymode", "CREDIT") |
| | | .fluentPut("invscheme_number", "110") |
| | | .fluentPut("billtype_number", "im_PurInBill_STD_BT_S") |
| | | .fluentPut("supplier_number", suppCode1) // 供应商编号 |
| | | .fluentPut("billentry", billentryArray1) // 将 billentry 数组添加到请求参数 |
| | | ))); |
| | | case "STK_MISCELLANEOUS": // 其他入库单 |
| | | path = imOtherinbill; |
| | | billentryArray = new JSONArray(); |
| | |
| | | if (orderDetl.getQty() == 0) { |
| | | continue; |
| | | } |
| | | Mat mat = matService.selectByMatnr(orderDetl.getMatnr()); |
| | | Double qty = orderDetl.getQty()*mat.getSafeQty(); |
| | | JSONObject billentry = new JSONObject() |
| | | .fluentPut("id", 0L) |
| | | .fluentPut("material_number", orderDetl.getMatnr()) // 物料编码 |
| | | .fluentPut("qty", orderDetl.getQty()) // 数量 |
| | | .fluentPut("qty", qty) // 数量 |
| | | .fluentPut("warehouse_number", "CK001") // 仓库 |
| | | .fluentPut("invstatus_number", "110") |
| | | .fluentPut("invtype_number", "110") |
| | |
| | | private String imOtheroutbillSubmit; |
| | | @Value("${erp.address.imOtherinbillSubmit}") |
| | | private String imOtherinbillSubmit; |
| | | @Value("${erp.address.imProductinbillBatchSubmit}") |
| | | private String imProductinbillBatchSubmit; |
| | | @Autowired |
| | | private LoginAuthenticationHandler loginAuthenticationHandler; |
| | | @Autowired |
| | |
| | | idArray.add(order.getNumber()); |
| | | dataObj.fluentPut("id", idArray); |
| | | return new JSONObject().fluentPut("data", dataObj); |
| | | case "PRD_MORPT": // 进仓通知单提交 |
| | | path = imProductinbillBatchSubmit; |
| | | idArray.add(order.getNumber()); |
| | | dataObj.fluentPut("id", idArray); |
| | | return new JSONObject().fluentPut("data", dataObj); |
| | | case "STK_MISCELLANEOUS"://其他入库单 |
| | | path = imOtherinbillSubmit; |
| | | idArray.add(order.getOrderNo()); |
| | |
| | | public enum KingDeeUtilType { |
| | | BD_MATERIAL(0, "物料档案","BD_MATERIAL","","","",1), |
| | | BD_RRGANIZATION(2, "供应商","BD_RRGANIZATION","","","",1), |
| | | PUR_RECEIVEBIll(3, "收料单","PUR_RECEIVEBIll","","","",1), |
| | | SAL_OUTSTOCK(7, "销售出库单","SAL_OUTSTOCK","FRealQty","","",0), |
| | | // PUR_RECEIVEBIll(3, "收料单","PUR_RECEIVEBIll","","","",1), |
| | | // SAL_OUTSTOCK(7, "销售出库单","SAL_OUTSTOCK","FRealQty","","",0), |
| | | // STK_MisDelivery(19, "其他出库单","STK_MisDelivery","FQty","","",0), |
| | | // STK_MISCELLANEOUS(18, "其他入库单","STK_MISCELLANEOUS","FQty","其他入库单","STK_MISCELLANEOUS",1), |
| | | |
| | | // SAL_RETURNSTOCK(9, "销售退货单","SAL_RETURNSTOCK","FRealQty","","",1), |
| | | PRD_PickMtrl(10, "生产领料单","PRD_PickMtrl","","","",0), |
| | | // PRD_ReturnMtrl(12, "生产退料单","PRD_ReturnMtrl","FQty","","",1), |
| | | // PRD_PickMtrl(10, "生产领料单","PRD_PickMtrl","","","",0), |
| | | PRD_ReturnMtrl(12, "生产退料单","PRD_ReturnMtrl","FQty","","",1), |
| | | // PRD_FeedMtrl(14, "生产补料单","PRD_FeedMtrl","FActualQty","","",0), |
| | | PRD_MORPT(16, "生产汇报单","PRD_MORPT","FFinishQty","生产入库单","PRD_INSTOCK",1), |
| | | // PRD_MORPT(16, "生产汇报单","PRD_MORPT","FFinishQty","生产入库单","PRD_INSTOCK",1), |
| | | // STK_InspectionForm(20, "产品检验单","STK_InspectionForm","","","",0), |
| | | |
| | | // PUR_MRB(2, "采购退料单","PUR_MRB","FRMREALQTY","","",1), |