| | |
| | | @Value("${erp.address.impurreceivebilldetl}") |
| | | //进仓通知单 |
| | | private String imPurreceiveBillDetlAddress; |
| | | @Value("${erp.address.imSaloutbill}") |
| | | //销售出库单 |
| | | private String imSaloutbill; |
| | | @Value("${erp.address.scpSalreturn}") |
| | | //销售退货单 |
| | | private String scpSalreturn; |
| | | @Value("${erp.address.scpSalreturnDetl}") |
| | | //销售退货单 |
| | | private String scpSalreturnDetl; |
| | | @Value("${erp.address.imMdcMftproorder}") |
| | | //生产领料单 |
| | | private String imMdcMftproorder; |
| | | @Value("${erp.address.imMdcMftreturnorder}") |
| | | //生产退料单 |
| | | private String imMdcMftreturnorder; |
| | | @Value("${erp.address.imMdcMftfeedorder}") |
| | | //生产补料单 |
| | | private String imMdcMftfeedorder; |
| | | @Value("${erp.address.imProductinbill}") |
| | | //生产进仓单 |
| | | private String imProductinbill; |
| | | @Value("${erp.address.qcppManuinspec}") |
| | | //产品检验单 |
| | | private String qcppManuinspec; |
| | | |
| | | @Autowired |
| | | private ApiLogService apiLogService; |
| | | |
| | |
| | | path = orgAddress; |
| | | break; |
| | | case "PUR_RECEIVEBIll": //已审核收料单查询 |
| | | // jsonObject.put("start_biztime", latestUpdateTime);//业务起始日期 |
| | | jsonObject.put("start_biztime", "2025-01-01 00:00:00");//业务起始日期 |
| | | jsonObject.put("end_biztime", sdf1.format(now));//业务结束日期 |
| | | jsonObject.put("billno", null); |
| | |
| | | jsonObject.put("supplier_number", null); |
| | | path = imPurreceiveBillAddress; |
| | | break; |
| | | case "SAL_OUTSTOCK"://销售出库单查询 |
| | | path = imSaloutbill; |
| | | jsonObject.put("modify_starttime", latestUpdateTime);//业务起始日期 |
| | | jsonObject.put("billstatus", "B");//单据状态 |
| | | jsonObject.put("modify_endtime", sdf1.format(now));//业务起始日期 |
| | | break; |
| | | case "SAL_RETURNSTOCK"://销售退货 |
| | | path = scpSalreturn; |
| | | jsonObject.put("start_modifytime", "2025-11-25 00:00:00");//业务起始日期 |
| | | jsonObject.put("billstatus", "B");//单据状态 |
| | | jsonObject.put("end_starttime", sdf1.format(now));//业务起始日期 |
| | | break; |
| | | case "PRD_PickMtrl"://生产领料单 |
| | | path = imMdcMftproorder; |
| | | // jsonObject.put("start_modifytime", "2025-11-25 00:00:00"); |
| | | // jsonObject.put("start_auditdate", "2025-11-25 00:00:00"); |
| | | jsonObject.put("start_createtime", "2025-11-25 00:00:00"); |
| | | jsonObject.put("end_createtime", sdf1.format(now)); |
| | | // jsonObject.put("end_auditdate", sdf1.format(now)); |
| | | // jsonObject.put("end_modifytime", sdf1.format(now)); |
| | | jsonObject.put("billno", null); |
| | | jsonObject.put("billstatus", Arrays.asList("B","C"));//数据状态 [A:暂存, B:已提交, C:已审核] |
| | | jsonObject.put("org_number", null); |
| | | jsonObject.put("id", null); |
| | | break; |
| | | case "PRD_ReturnMtrl"://生产退料单 |
| | | path = imMdcMftreturnorder; |
| | | jsonObject.put("id", null); |
| | | jsonObject.put("billno", null); |
| | | jsonObject.put("org_number", null); |
| | | jsonObject.put("billstatus", Arrays.asList("C"));//数据状态 [A:暂存, B:已提交, C:已审核] |
| | | jsonObject.put("start_createtime", "2025-11-25 00:00:00"); |
| | | jsonObject.put("end_createtime", sdf1.format(now)); |
| | | // jsonObject.put("start_modifytime", "2025-11-25 00:00:00"); |
| | | // jsonObject.put("end_modifytime", sdf1.format(now)); |
| | | // jsonObject.put("start_auditdate", "2025-11-25 00:00:00"); |
| | | // jsonObject.put("end_auditdate", sdf1.format(now)); |
| | | break; |
| | | case "PRD_FeedMtrl"://生产补料单 |
| | | path = imMdcMftfeedorder; |
| | | jsonObject.put("id", null); |
| | | jsonObject.put("billno", null); |
| | | jsonObject.put("org_number", null); |
| | | jsonObject.put("billstatus", Arrays.asList("C"));//数据状态 [A:暂存, B:已提交, C:已审核] |
| | | jsonObject.put("start_createtime", "2025-11-25 00:00:00"); |
| | | jsonObject.put("end_createtime", sdf1.format(now)); |
| | | // jsonObject.put("start_modifytime", "2025-11-25 00:00:00"); |
| | | // jsonObject.put("end_modifytime", sdf1.format(now)); |
| | | // jsonObject.put("start_auditdate", "2025-11-25 00:00:00"); |
| | | // jsonObject.put("end_auditdate", sdf1.format(now)); |
| | | break; |
| | | case "PRD_MORPT"://生产进仓单 |
| | | path = imProductinbill; |
| | | jsonObject.put("billstatus", Arrays.asList("C"));//数据状态 [A:暂存, B:已提交, C:已审核] |
| | | jsonObject.put("modifytime_start", "2025-11-25 00:00:00"); |
| | | jsonObject.put("modifytime_end", sdf1.format(now)); |
| | | break; |
| | | case "STK_InspectionForm"://产品检验 |
| | | path = qcppManuinspec; |
| | | jsonObject.put("billstatus", Arrays.asList("C"));//数据状态 [A:暂存, B:已提交, C:已审核] |
| | | jsonObject.put("auditdate_start", "2025-11-25 00:00:00"); |
| | | jsonObject.put("auditdate_end", sdf1.format(now)); |
| | | break; |
| | | } |
| | | if(path == null){ |
| | | continue; |
| | | } |
| | | JSONObject jsonObject1 = new JSONObject(); |
| | | jsonObject1.put("data", jsonObject); |
| | | jsonObject1.put("pageSize", 20); |
| | | jsonObject1.put("pageNo", 1); |
| | | String add = jsonObject1.toJSONString(); |
| | | |
| | | //上报 |
| | | String response = ""; |
| | | boolean success = false; |
| | | if(path == null){ |
| | | continue; |
| | | } |
| | | try { |
| | | //获取Cookie值 |
| | | HashMap<String, Object> headers = new HashMap<>(); |
| | |
| | | docTypeService.updateById(docType); |
| | | } |
| | | } |
| | | //供应商 |
| | | else if(kingDeeUtilType.formId.equals("BD_RRGANIZATION")){//供应商同步 |
| | | int pageSize = jsonResponse.getJSONObject("data").getIntValue("pageSize"); |
| | | int totalCount = jsonResponse.getJSONObject("data").getIntValue("totalCount"); |
| | |
| | | } |
| | | } |
| | | } |
| | | //收料单 |
| | | else if(kingDeeUtilType.formId.equals("PUR_RECEIVEBIll")){ |
| | | int pageSize = jsonResponse.getJSONObject("data").getIntValue("pageSize"); |
| | | int totalCount = jsonResponse.getJSONObject("data").getIntValue("totalCount"); |
| | |
| | | JSONObject detailParam = new JSONObject(); |
| | | JSONObject dataObj = new JSONObject(); |
| | | dataObj.put("billno", billNo); |
| | | detailParam.put("data", dataObj); |
| | | detailParam.put("pageNo", 1); |
| | | detailParam.put("pageSize", 100); |
| | | detailParam.put("data", dataObj); |
| | |
| | | // ====== 处理明细 ====== |
| | | for (int i = 0; i < rows.size(); i++) { |
| | | JSONObject jsonObjectNew2 = rows.getJSONObject(i); |
| | | Order order = orderService.selectByNo( billNo);//检索单据 |
| | | Order order = orderService.selectByNo(billNo);//检索单据 |
| | | LocOwner locOwner = null; |
| | | if (ownerUuid != null) { |
| | | locOwner = locOwnerService.selectByUuid(ownerUuid); |
| | |
| | | docTypeService.updateById(docType); |
| | | } |
| | | } |
| | | //销售出库 |
| | | else if(kingDeeUtilType.formId.equals("SAL_OUTSTOCK")){ |
| | | int pageSize = jsonResponse.getJSONObject("data").getIntValue("pageSize"); |
| | | int totalCount = jsonResponse.getJSONObject("data").getIntValue("totalCount"); |
| | | int totalPages = (int) Math.ceil((double) totalCount / pageSize); |
| | | |
| | | for (int page = 1; page <= totalPages; page++) { |
| | | jsonObject1.put("pageNo", page); |
| | | add = jsonObject1.toJSONString(); |
| | | |
| | | response = new HttpHandler.Builder() |
| | | .setHeaders(headers) |
| | | .setUri(URL) |
| | | .setPath(path) |
| | | .setJson(add) |
| | | .build() |
| | | .doPost(); |
| | | |
| | | jsonResponse = JSON.parseObject(response); |
| | | data = jsonResponse.getJSONObject("data").getJSONArray("rows"); |
| | | |
| | | for (int j = 0; j < data.size(); j++) { |
| | | JSONObject jsonObjectNew = data.getJSONObject(j); |
| | | Date createTime = sdf1.parse(jsonObjectNew.getString("createtime")); |
| | | String billNo = jsonObjectNew.getString("billno"); |
| | | String owner = jsonObjectNew.getString("org_name"); |
| | | String ownerUuid = jsonObjectNew.getString("org_number"); |
| | | String orderId = jsonObjectNew.getString("id"); |
| | | // ========= 货主校验 ========= |
| | | LocOwner locOwner = locOwnerService.selectByUuid(ownerUuid); |
| | | // if (locOwner == null) { |
| | | // callApiLogSaveOwner(null, kingDeeUtilType, |
| | | // "货主检索失败:" + ownerUuid + " 名称:" + owner, false); |
| | | // continue; |
| | | // } |
| | | |
| | | // ========= 创建订单主表 ========= |
| | | Order order = orderService.selectByNo(billNo); |
| | | if (Cools.isEmpty(order)) { |
| | | order = new Order( |
| | | // 单据主档 |
| | | String.valueOf(snowflakeIdWorker.nextId()), // 编号[非空] |
| | | billNo, // 订单编号 |
| | | createTime.toString(), // 单据日期 |
| | | docType.getDocId(), // 单据类型 |
| | | null, // 项目编号 |
| | | orderId, //收料单id |
| | | null, // 调拨项目编号 |
| | | null, // 初始票据号 |
| | | null, // 票据号 |
| | | null, // 项目id |
| | | owner, // 货主 |
| | | null, // 联系方式 |
| | | null, // 操作人员 |
| | | null, // 合计金额 |
| | | null, // 优惠率 |
| | | null, // 优惠金额 |
| | | null, // 销售或采购费用合计 |
| | | null, // 实付金额 |
| | | null, // 付款类型 |
| | | null, // 业务员 |
| | | null, // 结算天数 |
| | | null, // 邮费支付类型 |
| | | null, // 邮费 |
| | | null, // 付款时间 |
| | | null, // 发货时间 |
| | | null, // 物流名称 |
| | | null, // 物流单号 |
| | | 1L, // 订单状态 |
| | | 1, // 状态 |
| | | 9527L, // 添加人员 |
| | | now, // 添加时间 |
| | | 9527L, // 修改人员 |
| | | now, // 修改时间 |
| | | null, // 备注 |
| | | kingDeeUtilType.pakIn !=1?2:1 |
| | | ); |
| | | if (orderService.insert(order)) { |
| | | callApiLogSaveOrder(order, kingDeeUtilType, |
| | | "创建销售出库单成功!单号:" + billNo, true); |
| | | } |
| | | } |
| | | |
| | | // ========= 直接从主接口取明细 billentry ========= |
| | | JSONArray billEntryArray = jsonObjectNew.getJSONArray("billentry"); |
| | | if (billEntryArray == null || billEntryArray.isEmpty()) { |
| | | continue; |
| | | } |
| | | 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 totalNumItems = entry.getDouble("eap7_decimalfield1");//总件数 |
| | | Double totalVolume = entry.getDouble("eap7_decimalfield2");//总体积 |
| | | String warehouse = entry.getString("warehouse_number");//仓库编码 |
| | | String pOrderNo = entry.getString("eap7_textfield3");//采购单号 |
| | | String s3 = entry.getString("eap7_textfield4");//客户sku(客户编号) |
| | | String s2 = entry.getString("eap7_textfield5"); //条码UPC |
| | | String memo = entry.getString("eap7_textfield6"); //备注(英文描述) |
| | | String s1 = entry.getString("eap7_textfield7"); //客户PO |
| | | String detlId = entry.getString("id"); //明细id |
| | | Long seq = entry.getLong("seq"); //分录行号 |
| | | // String suppCode = entry.getString("supplier_number"); |
| | | String suppCode = null; |
| | | if (anfme == null || anfme == 0) { |
| | | callApiLogSaveOrder(order, kingDeeUtilType, |
| | | "单据数量异常:" + matnr, false); |
| | | continue; |
| | | } |
| | | // ========= 物料校验 ========= |
| | | Mat mat = matService.selectByMatnr(matnr); |
| | | if (Cools.isEmpty(mat)) { |
| | | callApiLogSaveOrder(order, kingDeeUtilType, |
| | | "商品不存在:" + matnr, false); |
| | | continue; |
| | | } |
| | | // ========= 明细去重 ========= |
| | | List<OrderDetl> orderDetls = |
| | | orderDetlService.selectByOrderId(order.getId()); |
| | | |
| | | boolean exists = orderDetls.stream() |
| | | .anyMatch(o -> o.getMatnr().equals(matnr)); |
| | | if (exists) continue; |
| | | // // ========= 供应商 ========= |
| | | String supp = null; |
| | | // LocSupp locSupp = locSuppService.selectByUuid(suppCode); |
| | | // if (locSupp != null) { |
| | | // supp = locSupp.getOwner(); |
| | | // } |
| | | // ========= 保存明细 ========= |
| | | OrderDetl orderDetl = new OrderDetl(); |
| | | orderDetl.sync(mat); |
| | | orderDetl.setThreeCode(detlId); |
| | | orderDetl.setLineNumber(seq); |
| | | orderDetl.setAnfme(anfme); |
| | | orderDetl.setErpAnfme(anfme); |
| | | orderDetl.setOrderId(order.getId()); |
| | | orderDetl.setOrderNo(order.getOrderNo()); |
| | | orderDetl.setSupp(supp); |
| | | orderDetl.setSuppCode(suppCode); |
| | | orderDetl.setSku(matnr); |
| | | orderDetl.setStandby1(s1); |
| | | orderDetl.setStandby2(s2); |
| | | orderDetl.setStandby3(s3); |
| | | orderDetl.setBoxType1(owner); |
| | | orderDetl.setBoxType2(ownerUuid); |
| | | orderDetl.setBoxType3(pOrderNo); |
| | | orderDetl.setMemo(memo); |
| | | orderDetl.setVolume(totalVolume); |
| | | orderDetl.setSafeQty(totalNumItems); |
| | | orderDetl.setManu(warehouse); |
| | | orderDetl.setCreateBy(9527L); |
| | | orderDetl.setCreateTime(new Date()); |
| | | orderDetl.setUpdateBy(9527L); |
| | | orderDetl.setUpdateTime(new Date()); |
| | | orderDetl.setStatus(1); |
| | | orderDetl.setQty(0.0D); |
| | | |
| | | orderDetlService.insert(orderDetl); |
| | | } |
| | | } |
| | | docType.setUpdateTime(now); |
| | | docTypeService.updateById(docType); |
| | | } |
| | | |
| | | } |
| | | //销售退货 |
| | | else if(kingDeeUtilType.formId.equals("SAL_RETURNSTOCK")){ |
| | | int pageSize = jsonResponse.getJSONObject("data").getIntValue("pageSize"); |
| | | int totalCount = jsonResponse.getJSONObject("data").getIntValue("totalCount"); |
| | | int totalPages = (int) Math.ceil((double) totalCount / pageSize); |
| | | for (int page = 1; page <= totalPages; page++) { |
| | | jsonObject1.put("pageNo", page); |
| | | add = jsonObject1.toJSONString(); |
| | | // 重新发起请求以获取该页的数据 |
| | | response = new HttpHandler.Builder() |
| | | .setHeaders(headers) |
| | | .setUri(URL) |
| | | .setPath(path) |
| | | .setJson(add) |
| | | .build() |
| | | .doPost(); |
| | | |
| | | jsonResponse = JSON.parseObject(response); |
| | | data = jsonResponse.getJSONObject("data").getJSONArray("rows"); |
| | | for (int j = 0; j < data.size(); j++) { |
| | | JSONObject jsonObjectNew = data.getJSONObject(j); |
| | | Date createTime = sdf1.parse(jsonObjectNew.get("createtime").toString()); |
| | | String billNo = jsonObjectNew.get("billno").toString();//单据编号 |
| | | String orderId = jsonObjectNew.get("id").toString(); |
| | | JSONObject detailParam = new JSONObject(); |
| | | JSONObject dataObj = new JSONObject(); |
| | | dataObj.put("billno", billNo); |
| | | detailParam.put("pageNo", 1); |
| | | detailParam.put("pageSize", 100); |
| | | detailParam.put("data", dataObj); |
| | | boolean hasNext = true; |
| | | while (hasNext) { |
| | | String reqJson = detailParam.toJSONString(); |
| | | String detailResp = new HttpHandler.Builder() |
| | | .setHeaders(headers) |
| | | .setUri(URL) |
| | | .setPath(scpSalreturnDetl) |
| | | .setJson(reqJson) |
| | | .build() |
| | | .doPost(); |
| | | JSONObject detailJson = JSON.parseObject(detailResp); |
| | | JSONObject detData = detailJson.getJSONObject("data"); |
| | | JSONArray rows = detData.getJSONArray("rows"); |
| | | // ====== 处理明细 ====== |
| | | for (int i = 0; i < rows.size(); i++) { |
| | | JSONObject jsonObjectNew2 = rows.getJSONObject(i); |
| | | Order order = orderService.selectByNo(billNo);//检索单据 |
| | | LocOwner locOwner = null; |
| | | if (Cools.isEmpty(order)) { |
| | | // 单据主档 |
| | | order = new Order( |
| | | String.valueOf(snowflakeIdWorker.nextId()), // 编号[非空] |
| | | billNo, // 订单编号 |
| | | createTime.toString(), // 单据日期 |
| | | docType.getDocId(), // 单据类型 |
| | | null, // 项目编号 |
| | | orderId, //收料单id |
| | | null, // 调拨项目编号 |
| | | null, // 初始票据号 |
| | | null, // 票据号 |
| | | null, // 项目id |
| | | null, // 货主 |
| | | null, // 联系方式 |
| | | null, // 操作人员 |
| | | null, // 合计金额 |
| | | null, // 优惠率 |
| | | null, // 优惠金额 |
| | | null, // 销售或采购费用合计 |
| | | null, // 实付金额 |
| | | null, // 付款类型 |
| | | null, // 业务员 |
| | | null, // 结算天数 |
| | | null, // 邮费支付类型 |
| | | null, // 邮费 |
| | | null, // 付款时间 |
| | | null, // 发货时间 |
| | | null, // 物流名称 |
| | | null, // 物流单号 |
| | | 1L, // 订单状态 |
| | | 1, // 状态 |
| | | 9527L, // 添加人员 |
| | | now, // 添加时间 |
| | | 9527L, // 修改人员 |
| | | now, // 修改时间 |
| | | null, // 备注 |
| | | kingDeeUtilType.pakIn !=1?2:1 |
| | | ); |
| | | if( orderService.insert(order)){ |
| | | callApiLogSaveOrder(order, kingDeeUtilType, "创建销售退货单成功!单号:" + billNo, true); |
| | | } |
| | | } |
| | | // String suppCode = jsonObjectNew2.getString("supplier_number"); //供应商 |
| | | String suppCode = null; //供应商 |
| | | JSONArray billEntryArray = jsonObjectNew2.getJSONArray("materialentry"); |
| | | 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 totalNumItems = 0.0; |
| | | Double Totalvolume = 0.0;//总体积 |
| | | String warehouse = null;//仓库编码 |
| | | String pOrderNo = "1";//采购单号 |
| | | String s3 = "1";//客户sku(客户编号) |
| | | String s2 = "1"; //条码UPC |
| | | String memo ="1"; //备注(英文描述) |
| | | String s1 = "1"; //客户PO |
| | | // Double totalNumItems = entry.getDouble("eap7_decimalfield1");//总件数 |
| | | // Double Totalvolume = entry.getDouble("eap7_decimalfield2");//总体积 |
| | | // String warehouse = entry.getString("warehouse_number");//仓库编码 |
| | | // String pOrderNo = entry.getString("eap7_textfield3");//采购单号 |
| | | // String s3 = entry.getString("eap7_textfield4");//客户sku(客户编号) |
| | | // String s2 = entry.getString("eap7_textfield5"); //条码UPC |
| | | // String memo = entry.getString("eap7_textfield6"); //备注(英文描述) |
| | | // String s1 = entry.getString("eap7_textfield7"); //客户PO |
| | | String detlId = entry.getString("id"); //明细id |
| | | Long seq = entry.getLong("seq"); //分录行号 |
| | | // String |
| | | if(anfme == 0){ |
| | | callApiLogSaveOrder(order,kingDeeUtilType, "单据数量异常"+matnr, false); |
| | | continue; |
| | | } |
| | | //物料编码 |
| | | Mat mat = matService.selectByMatnr(matnr); |
| | | if (Cools.isEmpty(mat)) { |
| | | callApiLogSaveOrder(order,kingDeeUtilType, "编号商品检索失败,请先添加商品"+matnr, false); |
| | | continue; |
| | | } |
| | | Order order1 = orderService.selectByNo( billNo); |
| | | List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order1.getId()); |
| | | boolean sign = false; |
| | | for (OrderDetl orderDetl : orderDetls){ |
| | | if (orderDetl.getMatnr().equals(matnr)){ |
| | | sign = true; |
| | | break; |
| | | } |
| | | } |
| | | if (sign){ |
| | | continue; |
| | | } |
| | | LocSupp locSupp = null; |
| | | String supp =null; |
| | | // locSupp = locSuppService.selectByUuid(suppCode); |
| | | // if(locSupp != null){supp = locSupp.getOwner();} |
| | | OrderDetl orderDetl = new OrderDetl(); |
| | | orderDetl.sync(mat); |
| | | orderDetl.setThreeCode(detlId);//ERP明细id |
| | | orderDetl.setLineNumber(seq);//分录行号 |
| | | orderDetl.setAnfme(anfme);//总箱数 |
| | | orderDetl.setErpAnfme(anfme);//erp数据 |
| | | orderDetl.setOrderId(order.getId()); |
| | | orderDetl.setOrderNo(order.getOrderNo());//表头单据 |
| | | orderDetl.setSupp(supp);//供应商名称(货源) |
| | | orderDetl.setSuppCode(suppCode);//供应商编码 |
| | | orderDetl.setSku(matnr);//内部SKU |
| | | orderDetl.setStandby1(s1);//客户PO |
| | | orderDetl.setStandby2(s2);//条码UPC |
| | | orderDetl.setStandby3(s3);//客户SKU |
| | | orderDetl.setBoxType1(null); //货主名称 |
| | | orderDetl.setBoxType2(null);//货主编号(erp组织) |
| | | orderDetl.setBoxType3(pOrderNo);//采购单号 |
| | | orderDetl.setMemo(memo);//英文备注 |
| | | orderDetl.setVolume(Totalvolume);//总体积 |
| | | orderDetl.setSafeQty(totalNumItems);//总件数 |
| | | orderDetl.setManu(warehouse);//仓库编码 |
| | | orderDetl.setCreateBy(9527L); |
| | | orderDetl.setCreateTime(new Date()); |
| | | orderDetl.setUpdateBy(9527L); |
| | | orderDetl.setUpdateTime(new Date()); |
| | | orderDetl.setStatus(1); |
| | | orderDetl.setQty(0.0D); |
| | | orderDetlService.insert(orderDetl); |
| | | } |
| | | } |
| | | // 是否还有下一页 |
| | | boolean lastPage = detData.getBoolean("lastPage"); |
| | | if (lastPage) { |
| | | hasNext = false; |
| | | } else { |
| | | // 下一页 |
| | | int currPage = detData.getIntValue("pageNo"); |
| | | detailParam.put("pageNo", currPage + 1); |
| | | } |
| | | } |
| | | } |
| | | docTypeService.updateById(docType); |
| | | } |
| | | } |
| | | //产品检验单 |
| | | else if(kingDeeUtilType.formId.equals("STK_InspectionForm")){ |
| | | int pageSize = jsonResponse.getJSONObject("data").getIntValue("pageSize"); |
| | | int totalCount = jsonResponse.getJSONObject("data").getIntValue("totalCount"); |
| | | int totalPages = (int) Math.ceil((double) totalCount / pageSize); |
| | | |
| | | for (int page = 1; page <= totalPages; page++) { |
| | | jsonObject1.put("pageNo", page); |
| | | add = jsonObject1.toJSONString(); |
| | | |
| | | response = new HttpHandler.Builder() |
| | | .setHeaders(headers) |
| | | .setUri(URL) |
| | | .setPath(path) |
| | | .setJson(add) |
| | | .build() |
| | | .doPost(); |
| | | |
| | | jsonResponse = JSON.parseObject(response); |
| | | data = jsonResponse.getJSONObject("data").getJSONArray("rows"); |
| | | |
| | | for (int j = 0; j < data.size(); j++) { |
| | | JSONObject jsonObjectNew = data.getJSONObject(j); |
| | | Date createTime = sdf1.parse(jsonObjectNew.getString("createtime")); |
| | | String billNo = jsonObjectNew.getString("billno"); |
| | | String owner = jsonObjectNew.getString("org_name"); |
| | | String ownerUuid = jsonObjectNew.getString("org_number"); |
| | | String orderId = jsonObjectNew.getString("id"); |
| | | // ========= 货主校验 ========= |
| | | LocOwner locOwner = locOwnerService.selectByUuid(ownerUuid); |
| | | // if (locOwner == null) { |
| | | // callApiLogSaveOwner(null, kingDeeUtilType, |
| | | // "货主检索失败:" + ownerUuid + " 名称:" + owner, false); |
| | | // continue; |
| | | // } |
| | | |
| | | // ========= 创建订单主表 ========= |
| | | Order order = orderService.selectByNo(billNo); |
| | | if (Cools.isEmpty(order)) { |
| | | order = new Order( |
| | | // 单据主档 |
| | | String.valueOf(snowflakeIdWorker.nextId()), // 编号[非空] |
| | | billNo, // 订单编号 |
| | | createTime.toString(), // 单据日期 |
| | | docType.getDocId(), // 单据类型 |
| | | null, // 项目编号 |
| | | orderId, //收料单id |
| | | null, // 调拨项目编号 |
| | | null, // 初始票据号 |
| | | null, // 票据号 |
| | | null, // 项目id |
| | | owner, // 货主 |
| | | null, // 联系方式 |
| | | null, // 操作人员 |
| | | null, // 合计金额 |
| | | null, // 优惠率 |
| | | null, // 优惠金额 |
| | | null, // 销售或采购费用合计 |
| | | null, // 实付金额 |
| | | null, // 付款类型 |
| | | null, // 业务员 |
| | | null, // 结算天数 |
| | | null, // 邮费支付类型 |
| | | null, // 邮费 |
| | | null, // 付款时间 |
| | | null, // 发货时间 |
| | | null, // 物流名称 |
| | | null, // 物流单号 |
| | | 1L, // 订单状态 |
| | | 1, // 状态 |
| | | 9527L, // 添加人员 |
| | | now, // 添加时间 |
| | | 9527L, // 修改人员 |
| | | now, // 修改时间 |
| | | null, // 备注 |
| | | kingDeeUtilType.pakIn !=1?2:1 |
| | | ); |
| | | if (orderService.insert(order)) { |
| | | callApiLogSaveOrder(order, kingDeeUtilType, |
| | | "创建销售出库单成功!单号:" + billNo, true); |
| | | } |
| | | } |
| | | |
| | | // ========= 直接从主接口取明细 billentry ========= |
| | | JSONArray billEntryArray = jsonObjectNew.getJSONArray("billentry"); |
| | | if (billEntryArray == null || billEntryArray.isEmpty()) { |
| | | continue; |
| | | } |
| | | 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 totalNumItems = entry.getDouble("eap7_decimalfield1");//总件数 |
| | | Double totalVolume = entry.getDouble("eap7_decimalfield2");//总体积 |
| | | String warehouse = entry.getString("warehouse_number");//仓库编码 |
| | | String pOrderNo = entry.getString("eap7_textfield3");//采购单号 |
| | | String s3 = entry.getString("eap7_textfield4");//客户sku(客户编号) |
| | | String s2 = entry.getString("eap7_textfield5"); //条码UPC |
| | | String memo = entry.getString("eap7_textfield6"); //备注(英文描述) |
| | | String s1 = entry.getString("eap7_textfield7"); //客户PO |
| | | String detlId = entry.getString("id"); //明细id |
| | | Long seq = entry.getLong("seq"); //分录行号 |
| | | // String suppCode = entry.getString("supplier_number"); |
| | | String suppCode = null; |
| | | if (anfme == null || anfme == 0) { |
| | | callApiLogSaveOrder(order, kingDeeUtilType, |
| | | "单据数量异常:" + matnr, false); |
| | | continue; |
| | | } |
| | | // ========= 物料校验 ========= |
| | | Mat mat = matService.selectByMatnr(matnr); |
| | | if (Cools.isEmpty(mat)) { |
| | | callApiLogSaveOrder(order, kingDeeUtilType, |
| | | "商品不存在:" + matnr, false); |
| | | continue; |
| | | } |
| | | // ========= 明细去重 ========= |
| | | List<OrderDetl> orderDetls = |
| | | orderDetlService.selectByOrderId(order.getId()); |
| | | |
| | | boolean exists = orderDetls.stream() |
| | | .anyMatch(o -> o.getMatnr().equals(matnr)); |
| | | if (exists) continue; |
| | | // // ========= 供应商 ========= |
| | | String supp = null; |
| | | // LocSupp locSupp = locSuppService.selectByUuid(suppCode); |
| | | // if (locSupp != null) { |
| | | // supp = locSupp.getOwner(); |
| | | // } |
| | | // ========= 保存明细 ========= |
| | | OrderDetl orderDetl = new OrderDetl(); |
| | | orderDetl.sync(mat); |
| | | orderDetl.setThreeCode(detlId); |
| | | orderDetl.setLineNumber(seq); |
| | | orderDetl.setAnfme(anfme); |
| | | orderDetl.setErpAnfme(anfme); |
| | | orderDetl.setOrderId(order.getId()); |
| | | orderDetl.setOrderNo(order.getOrderNo()); |
| | | orderDetl.setSupp(supp); |
| | | orderDetl.setSuppCode(suppCode); |
| | | orderDetl.setSku(matnr); |
| | | orderDetl.setStandby1(s1); |
| | | orderDetl.setStandby2(s2); |
| | | orderDetl.setStandby3(s3); |
| | | orderDetl.setBoxType1(owner); |
| | | orderDetl.setBoxType2(ownerUuid); |
| | | orderDetl.setBoxType3(pOrderNo); |
| | | orderDetl.setMemo(memo); |
| | | orderDetl.setVolume(totalVolume); |
| | | orderDetl.setSafeQty(totalNumItems); |
| | | orderDetl.setManu(warehouse); |
| | | orderDetl.setCreateBy(9527L); |
| | | orderDetl.setCreateTime(new Date()); |
| | | orderDetl.setUpdateBy(9527L); |
| | | orderDetl.setUpdateTime(new Date()); |
| | | orderDetl.setStatus(1); |
| | | orderDetl.setQty(0.0D); |
| | | |
| | | orderDetlService.insert(orderDetl); |
| | | } |
| | | } |
| | | docType.setUpdateTime(now); |
| | | docTypeService.updateById(docType); |
| | | } |
| | | |
| | | } |
| | | //生产领料,生产补料 |
| | | else if(kingDeeUtilType.formId.equals("PRD_PickMtrl") || kingDeeUtilType.formId.equals("PRD_FeedMtrl")){ |
| | | int pageSize = jsonResponse.getJSONObject("data").getIntValue("pageSize"); |
| | | int totalCount = jsonResponse.getJSONObject("data").getIntValue("totalCount"); |
| | | int totalPages = (int) Math.ceil((double) totalCount / pageSize); |
| | | for (int page = 1; page <= totalPages; page++) { |
| | | jsonObject1.put("pageNo", page); |
| | | add = jsonObject1.toJSONString(); |
| | | response = new HttpHandler.Builder() |
| | | .setHeaders(headers) |
| | | .setUri(URL) |
| | | .setPath(path) |
| | | .setJson(add) |
| | | .build() |
| | | .doPost(); |
| | | |
| | | jsonResponse = JSON.parseObject(response); |
| | | data = jsonResponse.getJSONObject("data").getJSONArray("rows"); |
| | | |
| | | for (int j = 0; j < data.size(); j++) { |
| | | JSONObject jsonObjectNew = data.getJSONObject(j); |
| | | Date createTime = sdf1.parse(jsonObjectNew.getString("createtime")); |
| | | String billNo = jsonObjectNew.getString("billno"); |
| | | String owner = jsonObjectNew.getString("org_name"); |
| | | String ownerUuid = jsonObjectNew.getString("org_number"); |
| | | String orderId = jsonObjectNew.getString("id"); |
| | | // ========= 创建订单主表 ========= |
| | | Order order = orderService.selectByNo(billNo); |
| | | if (Cools.isEmpty(order)) { |
| | | order = new Order( |
| | | // 单据主档 |
| | | String.valueOf(snowflakeIdWorker.nextId()), // 编号[非空] |
| | | billNo, // 订单编号 |
| | | createTime.toString(), // 单据日期 |
| | | docType.getDocId(), // 单据类型 |
| | | null, // 项目编号 |
| | | orderId, //收料单id |
| | | null, // 调拨项目编号 |
| | | null, // 初始票据号 |
| | | null, // 票据号 |
| | | null, // 项目id |
| | | owner, // 货主 |
| | | null, // 联系方式 |
| | | null, // 操作人员 |
| | | null, // 合计金额 |
| | | null, // 优惠率 |
| | | null, // 优惠金额 |
| | | null, // 销售或采购费用合计 |
| | | null, // 实付金额 |
| | | null, // 付款类型 |
| | | null, // 业务员 |
| | | null, // 结算天数 |
| | | null, // 邮费支付类型 |
| | | null, // 邮费 |
| | | null, // 付款时间 |
| | | null, // 发货时间 |
| | | null, // 物流名称 |
| | | null, // 物流单号 |
| | | 1L, // 订单状态 |
| | | 1, // 状态 |
| | | 9527L, // 添加人员 |
| | | now, // 添加时间 |
| | | 9527L, // 修改人员 |
| | | now, // 修改时间 |
| | | null, // 备注 |
| | | kingDeeUtilType.pakIn !=1?2:1 |
| | | ); |
| | | if (orderService.insert(order)) { |
| | | callApiLogSaveOrder(order, kingDeeUtilType, |
| | | "创建生产领料出库单成功!单号:" + billNo, true); |
| | | } |
| | | } |
| | | // ========= 直接从主接口取明细 billentry ========= |
| | | JSONArray billEntryArray = jsonObjectNew.getJSONArray("billentry"); |
| | | if (billEntryArray == null || billEntryArray.isEmpty()) { |
| | | continue; |
| | | } |
| | | 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 totalNumItems = entry.getDouble("eap7_decimalfield1");//总件数 |
| | | Double totalVolume = entry.getDouble("eap7_decimalfield2");//总体积 |
| | | String warehouse = entry.getString("warehouse_number");//仓库编码 |
| | | String pOrderNo = entry.getString("eap7_textfield3");//采购单号 |
| | | String s3 = entry.getString("eap7_textfield4");//客户sku(客户编号) |
| | | String s2 = entry.getString("eap7_textfield5"); //条码UPC |
| | | String memo = entry.getString("eap7_textfield6"); //备注(英文描述) |
| | | String s1 = entry.getString("eap7_textfield7"); //客户PO |
| | | String detlId = entry.getString("id"); //明细id |
| | | Long seq = entry.getLong("seq"); //分录行号 |
| | | // String suppCode = entry.getString("supplier_number"); |
| | | String suppCode = null; |
| | | if (anfme == null || anfme == 0) { |
| | | callApiLogSaveOrder(order, kingDeeUtilType, |
| | | "单据数量异常:" + matnr, false); |
| | | continue; |
| | | } |
| | | // ========= 物料校验 ========= |
| | | Mat mat = matService.selectByMatnr(matnr); |
| | | if (Cools.isEmpty(mat)) { |
| | | callApiLogSaveOrder(order, kingDeeUtilType, |
| | | "物料档案不存在:" + matnr, false); |
| | | continue; |
| | | } |
| | | // ========= 明细去重 ========= |
| | | List<OrderDetl> orderDetls = |
| | | orderDetlService.selectByOrderId(order.getId()); |
| | | |
| | | boolean exists = orderDetls.stream() |
| | | .anyMatch(o -> o.getMatnr().equals(matnr)); |
| | | if (exists) continue; |
| | | // // ========= 供应商 ========= |
| | | String supp = null; |
| | | // LocSupp locSupp = locSuppService.selectByUuid(suppCode); |
| | | // if (locSupp != null) { |
| | | // supp = locSupp.getOwner(); |
| | | // } |
| | | // ========= 保存明细 ========= |
| | | OrderDetl orderDetl = new OrderDetl(); |
| | | orderDetl.sync(mat); |
| | | orderDetl.setThreeCode(detlId); |
| | | orderDetl.setLineNumber(seq); |
| | | orderDetl.setAnfme(anfme); |
| | | orderDetl.setErpAnfme(anfme); |
| | | orderDetl.setOrderId(order.getId()); |
| | | orderDetl.setOrderNo(order.getOrderNo()); |
| | | orderDetl.setSupp(supp); |
| | | orderDetl.setSuppCode(suppCode); |
| | | orderDetl.setSku(matnr); |
| | | orderDetl.setStandby1(s1); |
| | | orderDetl.setStandby2(s2); |
| | | orderDetl.setStandby3(s3); |
| | | orderDetl.setBoxType1(owner); |
| | | orderDetl.setBoxType2(ownerUuid); |
| | | orderDetl.setBoxType3(pOrderNo); |
| | | orderDetl.setMemo(memo); |
| | | orderDetl.setVolume(totalVolume); |
| | | orderDetl.setSafeQty(totalNumItems); |
| | | orderDetl.setManu(warehouse); |
| | | orderDetl.setCreateBy(9527L); |
| | | orderDetl.setCreateTime(new Date()); |
| | | orderDetl.setUpdateBy(9527L); |
| | | orderDetl.setUpdateTime(new Date()); |
| | | orderDetl.setStatus(1); |
| | | orderDetl.setQty(0.0D); |
| | | |
| | | orderDetlService.insert(orderDetl); |
| | | } |
| | | } |
| | | docType.setUpdateTime(now); |
| | | docTypeService.updateById(docType); |
| | | } |
| | | |
| | | } |
| | | //生产退料单PRD_ReturnMtrl |
| | | else if(kingDeeUtilType.formId.equals("PRD_ReturnMtrl") ) { |
| | | int pageSize = jsonResponse.getJSONObject("data").getIntValue("pageSize"); |
| | | int totalCount = jsonResponse.getJSONObject("data").getIntValue("totalCount"); |
| | | int totalPages = (int) Math.ceil((double) totalCount / pageSize); |
| | | |
| | | for (int page = 1; page <= totalPages; page++) { |
| | | jsonObject1.put("pageNo", page); |
| | | add = jsonObject1.toJSONString(); |
| | | |
| | | response = new HttpHandler.Builder() |
| | | .setHeaders(headers) |
| | | .setUri(URL) |
| | | .setPath(path) |
| | | .setJson(add) |
| | | .build() |
| | | .doPost(); |
| | | |
| | | jsonResponse = JSON.parseObject(response); |
| | | data = jsonResponse.getJSONObject("data").getJSONArray("rows"); |
| | | |
| | | for (int j = 0; j < data.size(); j++) { |
| | | JSONObject jsonObjectNew = data.getJSONObject(j); |
| | | Date createTime = sdf1.parse(jsonObjectNew.getString("createtime")); |
| | | String billNo = jsonObjectNew.getString("billno"); |
| | | String owner = jsonObjectNew.getString("org_name"); |
| | | String ownerUuid = jsonObjectNew.getString("org_number"); |
| | | String orderId = jsonObjectNew.getString("id"); |
| | | // ========= 货主校验 ========= |
| | | LocOwner locOwner = locOwnerService.selectByUuid(ownerUuid); |
| | | // if (locOwner == null) { |
| | | // callApiLogSaveOwner(null, kingDeeUtilType, |
| | | // "货主检索失败:" + ownerUuid + " 名称:" + owner, false); |
| | | // continue; |
| | | // } |
| | | |
| | | // ========= 创建订单主表 ========= |
| | | Order order = orderService.selectByNo(billNo); |
| | | if (Cools.isEmpty(order)) { |
| | | order = new Order( |
| | | // 单据主档 |
| | | String.valueOf(snowflakeIdWorker.nextId()), // 编号[非空] |
| | | billNo, // 订单编号 |
| | | createTime.toString(), // 单据日期 |
| | | docType.getDocId(), // 单据类型 |
| | | null, // 项目编号 |
| | | orderId, //收料单id |
| | | null, // 调拨项目编号 |
| | | null, // 初始票据号 |
| | | null, // 票据号 |
| | | null, // 项目id |
| | | owner, // 货主 |
| | | null, // 联系方式 |
| | | null, // 操作人员 |
| | | null, // 合计金额 |
| | | null, // 优惠率 |
| | | null, // 优惠金额 |
| | | null, // 销售或采购费用合计 |
| | | null, // 实付金额 |
| | | null, // 付款类型 |
| | | null, // 业务员 |
| | | null, // 结算天数 |
| | | null, // 邮费支付类型 |
| | | null, // 邮费 |
| | | null, // 付款时间 |
| | | null, // 发货时间 |
| | | null, // 物流名称 |
| | | null, // 物流单号 |
| | | 1L, // 订单状态 |
| | | 1, // 状态 |
| | | 9527L, // 添加人员 |
| | | now, // 添加时间 |
| | | 9527L, // 修改人员 |
| | | now, // 修改时间 |
| | | null, // 备注 |
| | | kingDeeUtilType.pakIn !=1?2:1 |
| | | ); |
| | | if (orderService.insert(order)) { |
| | | callApiLogSaveOrder(order, kingDeeUtilType, |
| | | "创建生产补料单成功!单号:" + billNo, true); |
| | | } |
| | | } |
| | | |
| | | // ========= 直接从主接口取明细 billentry ========= |
| | | JSONArray billEntryArray = jsonObjectNew.getJSONArray("billentry"); |
| | | if (billEntryArray == null || billEntryArray.isEmpty()) { |
| | | continue; |
| | | } |
| | | 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 totalNumItems = entry.getDouble("eap7_decimalfield1");//总件数 |
| | | Double totalVolume = entry.getDouble("eap7_decimalfield2");//总体积 |
| | | String warehouse = entry.getString("warehouse_number");//仓库编码 |
| | | String pOrderNo = entry.getString("eap7_textfield3");//采购单号 |
| | | String s3 = entry.getString("eap7_textfield4");//客户sku(客户编号) |
| | | String s2 = entry.getString("eap7_textfield5"); //条码UPC |
| | | String memo = entry.getString("eap7_textfield6"); //备注(英文描述) |
| | | String s1 = entry.getString("eap7_textfield7"); //客户PO |
| | | String detlId = entry.getString("id"); //明细id |
| | | Long seq = entry.getLong("seq"); //分录行号 |
| | | // String suppCode = entry.getString("supplier_number"); |
| | | String suppCode = null; |
| | | if (anfme == null || anfme == 0) { |
| | | callApiLogSaveOrder(order, kingDeeUtilType, |
| | | "单据数量异常:" + matnr, false); |
| | | continue; |
| | | } |
| | | // ========= 物料校验 ========= |
| | | Mat mat = matService.selectByMatnr(matnr); |
| | | if (Cools.isEmpty(mat)) { |
| | | callApiLogSaveOrder(order, kingDeeUtilType, |
| | | "商品不存在:" + matnr, false); |
| | | continue; |
| | | } |
| | | // ========= 明细去重 ========= |
| | | List<OrderDetl> orderDetls = |
| | | orderDetlService.selectByOrderId(order.getId()); |
| | | |
| | | boolean exists = orderDetls.stream() |
| | | .anyMatch(o -> o.getMatnr().equals(matnr)); |
| | | if (exists) continue; |
| | | // // ========= 供应商 ========= |
| | | String supp = null; |
| | | // LocSupp locSupp = locSuppService.selectByUuid(suppCode); |
| | | // if (locSupp != null) { |
| | | // supp = locSupp.getOwner(); |
| | | // } |
| | | // ========= 保存明细 ========= |
| | | OrderDetl orderDetl = new OrderDetl(); |
| | | orderDetl.sync(mat); |
| | | orderDetl.setThreeCode(detlId); |
| | | orderDetl.setLineNumber(seq); |
| | | orderDetl.setAnfme(anfme); |
| | | orderDetl.setErpAnfme(anfme); |
| | | orderDetl.setOrderId(order.getId()); |
| | | orderDetl.setOrderNo(order.getOrderNo()); |
| | | orderDetl.setSupp(supp); |
| | | orderDetl.setSuppCode(suppCode); |
| | | orderDetl.setSku(matnr); |
| | | orderDetl.setStandby1(s1); |
| | | orderDetl.setStandby2(s2); |
| | | orderDetl.setStandby3(s3); |
| | | orderDetl.setBoxType1(owner); |
| | | orderDetl.setBoxType2(ownerUuid); |
| | | orderDetl.setBoxType3(pOrderNo); |
| | | orderDetl.setMemo(memo); |
| | | orderDetl.setVolume(totalVolume); |
| | | orderDetl.setSafeQty(totalNumItems); |
| | | orderDetl.setManu(warehouse); |
| | | orderDetl.setCreateBy(9527L); |
| | | orderDetl.setCreateTime(new Date()); |
| | | orderDetl.setUpdateBy(9527L); |
| | | orderDetl.setUpdateTime(new Date()); |
| | | orderDetl.setStatus(1); |
| | | orderDetl.setQty(0.0D); |
| | | |
| | | orderDetlService.insert(orderDetl); |
| | | } |
| | | } |
| | | docType.setUpdateTime(now); |
| | | docTypeService.updateById(docType); |
| | | } |
| | | |
| | | } |
| | | //生产汇报单 |
| | | else if(kingDeeUtilType.formId.equals("PRD_MORPT")) { |
| | | int pageSize = jsonResponse.getJSONObject("data").getIntValue("pageSize"); |
| | | int totalCount = jsonResponse.getJSONObject("data").getIntValue("totalCount"); |
| | | int totalPages = (int) Math.ceil((double) totalCount / pageSize); |
| | | |
| | | for (int page = 1; page <= totalPages; page++) { |
| | | jsonObject1.put("pageNo", page); |
| | | add = jsonObject1.toJSONString(); |
| | | |
| | | response = new HttpHandler.Builder() |
| | | .setHeaders(headers) |
| | | .setUri(URL) |
| | | .setPath(path) |
| | | .setJson(add) |
| | | .build() |
| | | .doPost(); |
| | | |
| | | jsonResponse = JSON.parseObject(response); |
| | | data = jsonResponse.getJSONObject("data").getJSONArray("rows"); |
| | | |
| | | for (int j = 0; j < data.size(); j++) { |
| | | JSONObject jsonObjectNew = data.getJSONObject(j); |
| | | Date createTime = sdf1.parse(jsonObjectNew.getString("createtime")); |
| | | String billNo = jsonObjectNew.getString("billno"); |
| | | String owner = "和得科技"; |
| | | String ownerUuid = "BU-00001"; |
| | | String orderId = jsonObjectNew.getString("id"); |
| | | // ========= 货主校验 ========= |
| | | LocOwner locOwner = locOwnerService.selectByUuid(ownerUuid); |
| | | // if (locOwner == null) { |
| | | // callApiLogSaveOwner(null, kingDeeUtilType, |
| | | // "货主检索失败:" + ownerUuid + " 名称:" + owner, false); |
| | | // continue; |
| | | // } |
| | | |
| | | // ========= 创建订单主表 ========= |
| | | Order order = orderService.selectByNo(billNo); |
| | | if (Cools.isEmpty(order)) { |
| | | order = new Order( |
| | | // 单据主档 |
| | | String.valueOf(snowflakeIdWorker.nextId()), // 编号[非空] |
| | | billNo, // 订单编号 |
| | | createTime.toString(), // 单据日期 |
| | | docType.getDocId(), // 单据类型 |
| | | null, // 项目编号 |
| | | orderId, //收料单id |
| | | null, // 调拨项目编号 |
| | | null, // 初始票据号 |
| | | null, // 票据号 |
| | | null, // 项目id |
| | | owner, // 货主 |
| | | null, // 联系方式 |
| | | null, // 操作人员 |
| | | null, // 合计金额 |
| | | null, // 优惠率 |
| | | null, // 优惠金额 |
| | | null, // 销售或采购费用合计 |
| | | null, // 实付金额 |
| | | null, // 付款类型 |
| | | null, // 业务员 |
| | | null, // 结算天数 |
| | | null, // 邮费支付类型 |
| | | null, // 邮费 |
| | | null, // 付款时间 |
| | | null, // 发货时间 |
| | | null, // 物流名称 |
| | | null, // 物流单号 |
| | | 1L, // 订单状态 |
| | | 1, // 状态 |
| | | 9527L, // 添加人员 |
| | | now, // 添加时间 |
| | | 9527L, // 修改人员 |
| | | now, // 修改时间 |
| | | null, // 备注 |
| | | kingDeeUtilType.pakIn !=1?2:1 |
| | | ); |
| | | if (orderService.insert(order)) { |
| | | callApiLogSaveOrder(order, kingDeeUtilType, |
| | | "创建生产汇报单成功!单号:" + billNo, true); |
| | | } |
| | | } |
| | | |
| | | // ========= 直接从主接口取明细 billentry ========= |
| | | JSONArray billEntryArray = jsonObjectNew.getJSONArray("sumentry"); |
| | | if (billEntryArray == null || billEntryArray.isEmpty()) { |
| | | continue; |
| | | } |
| | | 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 totalNumItems = entry.getDouble("eap7_decimalfield1");//总件数 |
| | | Double totalVolume = entry.getDouble("eap7_decimalfield2");//总体积 |
| | | String warehouse = entry.getString("warehouse_number");//仓库编码 |
| | | String pOrderNo = entry.getString("eap7_textfield");//采购单号 |
| | | String s3 = entry.getString("eap7_textfield4");//客户sku(客户编号) |
| | | String s2 = entry.getString("eap7_textfield1"); //条码UPC |
| | | String memo = entry.getString("eap7_textfield6"); //备注(英文描述) |
| | | String s1 = entry.getString("eap7_textfield7"); //客户PO |
| | | String detlId = entry.getString("id"); //明细id |
| | | Long seq = entry.getLong("seq"); //分录行号 |
| | | // String suppCode = entry.getString("supplier_number"); |
| | | String suppCode = null; |
| | | if (anfme == null || anfme == 0) { |
| | | callApiLogSaveOrder(order, kingDeeUtilType, |
| | | "单据数量异常:" + matnr, false); |
| | | continue; |
| | | } |
| | | // ========= 物料校验 ========= |
| | | Mat mat = matService.selectByMatnr(matnr); |
| | | if (Cools.isEmpty(mat)) { |
| | | callApiLogSaveOrder(order, kingDeeUtilType, |
| | | "商品不存在:" + matnr, false); |
| | | continue; |
| | | } |
| | | // ========= 明细去重 ========= |
| | | List<OrderDetl> orderDetls = |
| | | orderDetlService.selectByOrderId(order.getId()); |
| | | |
| | | boolean exists = orderDetls.stream() |
| | | .anyMatch(o -> o.getMatnr().equals(matnr)); |
| | | if (exists) continue; |
| | | // // ========= 供应商 ========= |
| | | String supp = null; |
| | | // LocSupp locSupp = locSuppService.selectByUuid(suppCode); |
| | | // if (locSupp != null) { |
| | | // supp = locSupp.getOwner(); |
| | | // } |
| | | // ========= 保存明细 ========= |
| | | OrderDetl orderDetl = new OrderDetl(); |
| | | orderDetl.sync(mat); |
| | | orderDetl.setThreeCode(detlId); |
| | | orderDetl.setLineNumber(seq); |
| | | orderDetl.setAnfme(anfme); |
| | | orderDetl.setErpAnfme(anfme); |
| | | orderDetl.setOrderId(order.getId()); |
| | | orderDetl.setOrderNo(order.getOrderNo()); |
| | | orderDetl.setSupp(supp); |
| | | orderDetl.setSuppCode(suppCode); |
| | | orderDetl.setSku(matnr); |
| | | orderDetl.setStandby1(s1); |
| | | orderDetl.setStandby2(s2); |
| | | orderDetl.setStandby3(s3); |
| | | orderDetl.setBoxType1(owner); |
| | | orderDetl.setBoxType2(ownerUuid); |
| | | orderDetl.setBoxType3(pOrderNo); |
| | | orderDetl.setMemo(memo); |
| | | orderDetl.setVolume(totalVolume); |
| | | orderDetl.setSafeQty(totalNumItems); |
| | | orderDetl.setManu(warehouse); |
| | | orderDetl.setCreateBy(9527L); |
| | | orderDetl.setCreateTime(new Date()); |
| | | orderDetl.setUpdateBy(9527L); |
| | | orderDetl.setUpdateTime(new Date()); |
| | | orderDetl.setStatus(1); |
| | | orderDetl.setQty(0.0D); |
| | | |
| | | orderDetlService.insert(orderDetl); |
| | | } |
| | | } |
| | | docType.setUpdateTime(now); |
| | | docTypeService.updateById(docType); |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | } catch (Exception e) { |
| | | log.error("fail", e); |
| | | // TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | |
| | | |
| | | public void callApiLogSaveSupp(LocSupp locSupp, KingDeeUtilType kingDeeUtilType, String response, Boolean bool) { |
| | | apiLogService.save("获取"+kingDeeUtilType.desc, kingDeeUtilType.formId, "null", URL, |
| | | "货主编号:" + locSupp.getOwnerUuid() + "、货主名称:" + locSupp.getOwner(), |
| | | "供应商编号:" + locSupp.getOwnerUuid() + "、供应商名称:" + locSupp.getOwner(), |
| | | response, bool); |
| | | } |
| | | public void callApiLogSaveOwner(LocOwner locOwner, KingDeeUtilType kingDeeUtilType, String response, Boolean bool) { |