| | |
| | | path = orgAddress; |
| | | break; |
| | | case "PUR_RECEIVEBIll": //已审核收料单查询 |
| | | jsonObject.put("start_biztime", "2025-01-01 00:00:00");//业务起始日期 |
| | | jsonObject.put("start_biztime", latestUpdateTime);//业务起始日期 |
| | | jsonObject.put("end_biztime", sdf1.format(now));//业务结束日期 |
| | | jsonObject.put("billno", null); |
| | | jsonObject.put("billstatus", Arrays.asList("C"));//数据状态 [A:暂存, B:已提交, C:已审核] |
| | | jsonObject.put("start_auditdate", "2025-11-25 00:00:00"); |
| | | jsonObject.put("start_auditdate", latestUpdateTime); |
| | | jsonObject.put("end_auditdate", sdf1.format(now)); |
| | | jsonObject.put("org_number", null); |
| | | jsonObject.put("supplier_number", null); |
| | |
| | | break; |
| | | case "SAL_RETURNSTOCK"://销售退货 |
| | | path = scpSalreturn; |
| | | jsonObject.put("modify_starttime", "2025-11-25 00:00:00");//业务起始日期 |
| | | 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");//单据类型 |
| | |
| | | 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("start_createtime", latestUpdateTime); |
| | | 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("org_number", null); |
| | | jsonObject.put("billstatus", Arrays.asList("C"));//数据状态 [A:暂存, B:已提交, C:已审核] |
| | | jsonObject.put("start_createtime", "2025-11-25 00:00:00"); |
| | | jsonObject.put("start_createtime", latestUpdateTime); |
| | | 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("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("start_createtime", latestUpdateTime); |
| | | jsonObject.put("end_createtime", sdf1.format(now)); |
| | | // jsonObject.put("start_modifytime", "2025-11-25 00:00:00"); |
| | | // jsonObject.put("end_modifytime", sdf1.format(now)); |
| | |
| | | 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_start",latestUpdateTime); |
| | | 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_start", latestUpdateTime); |
| | | jsonObject.put("auditdate_end", sdf1.format(now)); |
| | | break; |
| | | } |
| | |
| | | JSONArray data = jsonResponse.getJSONObject("data").getJSONArray("rows"); |
| | | if(data.size()<=0) continue; |
| | | //商品档案同步 |
| | | if (kingDeeUtilType.formId.equals("BD_MATERIAL")) { |
| | | if(kingDeeUtilType.formId.equals("BD_MATERIAL")) { |
| | | Tag tag = tagService.selectByName("全部", 1); |
| | | // 处理分页:根据返回的totalCount和pageSize计算页数 |
| | | int pageSize = jsonResponse.getJSONObject("data").getIntValue("pageSize"); |
| | |
| | | String matnr = jsonObjectNew.get("number").toString(); |
| | | String name = jsonObjectNew.get("name").toString(); |
| | | String createTime = jsonObjectNew.get("createtime").toString(); |
| | | Double grossweight = jsonObjectNew.get("grossweight") != null ? new BigDecimal(jsonObjectNew.get("eap7_decimalfield6").toString()).doubleValue() : 0.0; |
| | | Double height = jsonObjectNew.get("height") != null ? new BigDecimal(jsonObjectNew.get("eap7_decimalfield9").toString()).doubleValue() : 0.0; |
| | | Double width = jsonObjectNew.get("width") != null ? new BigDecimal(jsonObjectNew.get("eap7_decimalfield8").toString()).doubleValue() : 0.0; |
| | | Double length = jsonObjectNew.get("length") != null ? new BigDecimal(jsonObjectNew.get("eap7_decimalfield7").toString()).doubleValue() : 0.0; |
| | | Double netweight = jsonObjectNew.get("netweight") != null ? new BigDecimal(jsonObjectNew.get("eap7_decimalfield").toString()).doubleValue() : 0.0; |
| | | Double height = getDecimalFieldAsDouble(jsonObjectNew, "eap7_decimalfield9"); |
| | | Double width = getDecimalFieldAsDouble(jsonObjectNew, "eap7_decimalfield8"); |
| | | Double length = getDecimalFieldAsDouble(jsonObjectNew, "eap7_decimalfield7"); |
| | | Double grossweight= getDecimalFieldAsDouble(jsonObjectNew, "eap7_decimalfield6"); |
| | | Double netweight = getDecimalFieldAsDouble(jsonObjectNew, "eap7_decimalfield"); |
| | | Double unit = getDecimalFieldAsDouble(jsonObjectNew, "eap7_decimalfield2"); |
| | | // 生成商品档案 |
| | | Double height1 = height*10; |
| | | Double width1 = width*10; |
| | |
| | | mat.setTagId(tag.getId()); |
| | | mat.setWeight(grossweight);//净重 |
| | | mat.setUnits(netweight);//毛重 |
| | | mat.setSafeQty(unit);// |
| | | mat.setManLength(length1); |
| | | mat.setHeight(height1); |
| | | mat.setWidth(width1); |
| | |
| | | // 更新字段 |
| | | if (!mat.getMaktx().equals(name)) mat.setMaktx(name); |
| | | if (mat.getWeight().compareTo(grossweight) != 0) mat.setWeight(grossweight); |
| | | if (mat.getUnits().compareTo(netweight) != 0) mat.setUnits(netweight); |
| | | if (mat.getSafeQty().compareTo(unit) != 0) mat.setSafeQty(unit); |
| | | if (mat.getManLength().compareTo(length) != 0) mat.setManLength(length1); |
| | | if (mat.getHeight().compareTo(height) != 0) mat.setHeight(height1); |
| | | if (mat.getWidth().compareTo(width) != 0) mat.setWidth(width1); |
| | |
| | | } |
| | | } |
| | | } |
| | | docType.setUpdateTime(now); |
| | | docTypeService.updateById(docType); |
| | | } |
| | | //收料单 |
| | | else if(kingDeeUtilType.formId.equals("PUR_RECEIVEBIll")){ |
| | |
| | | callApiLogSaveOrder(order,kingDeeUtilType, "编号商品检索失败,请先添加商品"+matnr, false); |
| | | continue; |
| | | } |
| | | if (mat.getSafeQty() == null || mat.getSafeQty() == 0) { |
| | | callApiLogSaveOrder(order, kingDeeUtilType, |
| | | "档案箱数量异常:" + matnr, false); |
| | | continue; |
| | | } |
| | | Double erpAnfme = anfme*mat.getSafeQty(); |
| | | Order order1 = orderService.selectByNo( billNo); |
| | | List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order1.getId()); |
| | | boolean sign = false; |
| | |
| | | orderDetl.setThreeCode(detlId);//ERP明细id |
| | | orderDetl.setLineNumber(seq);//分录行号 |
| | | orderDetl.setAnfme(anfme);//总箱数 |
| | | orderDetl.setErpAnfme(anfme);//erp数据 |
| | | orderDetl.setErpAnfme(erpAnfme);//erp数据 |
| | | orderDetl.setOrderId(order.getId()); |
| | | orderDetl.setOrderNo(order.getOrderNo());//表头单据 |
| | | orderDetl.setSupp(supp);//供应商名称(货源) |
| | |
| | | } |
| | | } |
| | | } |
| | | docTypeService.updateById(docType); |
| | | } |
| | | docType.setUpdateTime(now); |
| | | docTypeService.updateById(docType); |
| | | } |
| | | //销售出库 |
| | | else if(kingDeeUtilType.formId.equals("SAL_OUTSTOCK")){ |
| | |
| | | "商品不存在:" + matnr, false); |
| | | continue; |
| | | } |
| | | if (mat.getSafeQty() == null || mat.getSafeQty() == 0) { |
| | | callApiLogSaveOrder(order, kingDeeUtilType, |
| | | "档案箱数量异常:" + matnr, false); |
| | | continue; |
| | | } |
| | | Double erpAnfme = anfme*mat.getSafeQty(); |
| | | // ========= 明细去重 ========= |
| | | List<OrderDetl> orderDetls = |
| | | orderDetlService.selectByOrderId(order.getId()); |
| | |
| | | orderDetl.setThreeCode(detlId); |
| | | orderDetl.setLineNumber(seq); |
| | | orderDetl.setAnfme(anfme); |
| | | orderDetl.setErpAnfme(anfme); |
| | | orderDetl.setErpAnfme(erpAnfme); |
| | | orderDetl.setOrderId(order.getId()); |
| | | orderDetl.setOrderNo(order.getOrderNo()); |
| | | orderDetl.setSupp(supp); |
| | |
| | | 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");//仓库编码 |
| | |
| | | "商品不存在:" + matnr, false); |
| | | continue; |
| | | } |
| | | if (mat.getSafeQty() == null || mat.getSafeQty() == 0) { |
| | | callApiLogSaveOrder(order, kingDeeUtilType, |
| | | "档案箱数量异常:" + matnr, false); |
| | | continue; |
| | | } |
| | | Double erpAnfme = anfme*mat.getSafeQty(); |
| | | // ========= 明细去重 ========= |
| | | List<OrderDetl> orderDetls = |
| | | orderDetlService.selectByOrderId(order.getId()); |
| | |
| | | orderDetl.setThreeCode(detlId); |
| | | orderDetl.setLineNumber(seq); |
| | | orderDetl.setAnfme(anfme); |
| | | orderDetl.setErpAnfme(anfme); |
| | | orderDetl.setErpAnfme(erpAnfme); |
| | | orderDetl.setOrderId(order.getId()); |
| | | orderDetl.setOrderNo(order.getOrderNo()); |
| | | orderDetl.setSupp(supp); |
| | |
| | | orderDetlService.insert(orderDetl); |
| | | } |
| | | } |
| | | docType.setUpdateTime(now); |
| | | docTypeService.updateById(docType); |
| | | } |
| | | docType.setUpdateTime(now); |
| | | docTypeService.updateById(docType); |
| | | } |
| | | //产品检验单 |
| | | else if(kingDeeUtilType.formId.equals("STK_InspectionForm")){ |
| | |
| | | orderDetlService.insert(orderDetl); |
| | | } |
| | | } |
| | | docType.setUpdateTime(now); |
| | | docTypeService.updateById(docType); |
| | | } |
| | | docType.setUpdateTime(now); |
| | | docTypeService.updateById(docType); |
| | | |
| | | } |
| | | //生产领料,生产补料 |
| | |
| | | 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");//仓库编码 |
| | |
| | | String detlId = entry.getString("id"); //明细id |
| | | Long seq = entry.getLong("seq"); //分录行号 |
| | | // String suppCode = entry.getString("supplier_number"); |
| | | if(anfme == 0){ |
| | | callApiLogSaveOrder(order,kingDeeUtilType, "单据数量异常"+matnr, false); |
| | | continue; |
| | | } |
| | | String suppCode = null; |
| | | if (anfme == null || anfme == 0) { |
| | | callApiLogSaveOrder(order, kingDeeUtilType, |
| | |
| | | "物料档案不存在:" + matnr, false); |
| | | continue; |
| | | } |
| | | if (mat.getSafeQty() == null || mat.getSafeQty() == 0) { |
| | | callApiLogSaveOrder(order, kingDeeUtilType, |
| | | "档案箱数量异常:" + matnr, false); |
| | | continue; |
| | | } |
| | | anfmeBox = Math.floor(anfme / mat.getSafeQty()); |
| | | // ========= 明细去重 ========= |
| | | List<OrderDetl> orderDetls = |
| | | orderDetlService.selectByOrderId(order.getId()); |
| | | |
| | | |
| | | boolean exists = orderDetls.stream() |
| | | .anyMatch(o -> o.getMatnr().equals(matnr)); |
| | |
| | | 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()); |
| | |
| | | orderDetl.setQty(0.0D); |
| | | |
| | | orderDetlService.insert(orderDetl); |
| | | |
| | | } |
| | | } |
| | | docType.setUpdateTime(now); |
| | | docTypeService.updateById(docType); |
| | | } |
| | | |
| | | } |
| | | docType.setUpdateTime(now); |
| | | docTypeService.updateById(docType); |
| | | } |
| | | //生产退料单PRD_ReturnMtrl |
| | | else if(kingDeeUtilType.formId.equals("PRD_ReturnMtrl") ) { |
| | |
| | | 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; |
| | | } |
| | | if (mat.getSafeQty() == null || mat.getSafeQty() == 0) { |
| | | callApiLogSaveOrder(order, kingDeeUtilType, |
| | | "档案箱数量异常:" + matnr, false); |
| | | continue; |
| | | } |
| | | anfmeBox = Math.floor(anfme / mat.getSafeQty()); |
| | | // ========= 明细去重 ========= |
| | | List<OrderDetl> orderDetls = |
| | | orderDetlService.selectByOrderId(order.getId()); |
| | |
| | | supp = locSupp.getOwner(); |
| | | } |
| | | // ========= 保存明细 ========= |
| | | |
| | | OrderDetl orderDetl = new OrderDetl(); |
| | | 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()); |
| | |
| | | orderDetlService.insert(orderDetl); |
| | | } |
| | | } |
| | | docType.setUpdateTime(now); |
| | | docTypeService.updateById(docType); |
| | | } |
| | | |
| | | docType.setUpdateTime(now); |
| | | docTypeService.updateById(docType); |
| | | } |
| | | //生产汇报单 |
| | | else if(kingDeeUtilType.formId.equals("PRD_MORPT")) { |
| | |
| | | String owner = "和得科技"; |
| | | String ownerUuid = "BU-00001"; |
| | | String orderId = jsonObjectNew.getString("id"); |
| | | String manuBill = jsonObjectNew.getString("manufacturenun"); |
| | | // ========= 货主校验 ========= |
| | | LocOwner locOwner = locOwnerService.selectByUuid(ownerUuid); |
| | | // if (locOwner == null) { |
| | |
| | | null, // 项目编号 |
| | | orderId, //收料单id |
| | | null, // 调拨项目编号 |
| | | null, // 初始票据号 |
| | | manuBill, // 初始票据号 |
| | | null, // 票据号 |
| | | null, // 项目id |
| | | owner, // 货主 |
| | |
| | | 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 = 0.0;//箱数 |
| | | Double anfme = entry.getDouble("completqty");//个数 |
| | | Double totalNumItems = entry.getDouble("eap7_decimalfield1");//总件数 |
| | | Double totalVolume = entry.getDouble("eap7_decimalfield2");//总体积 |
| | | String warehouse = entry.getString("warehouse_number");//仓库编码 |
| | |
| | | "商品不存在:" + matnr, false); |
| | | continue; |
| | | } |
| | | anfmeBox = Math.floor(anfme / mat.getSafeQty()); |
| | | // ========= 明细去重 ========= |
| | | List<OrderDetl> orderDetls = |
| | | orderDetlService.selectByOrderId(order.getId()); |
| | |
| | | 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); |
| | |
| | | orderDetlService.insert(orderDetl); |
| | | } |
| | | } |
| | | docType.setUpdateTime(now); |
| | | docTypeService.updateById(docType); |
| | | } |
| | | |
| | | docType.setUpdateTime(now); |
| | | docTypeService.updateById(docType); |
| | | } |
| | | |
| | | |
| | |
| | | "单据编号:" + order.getOrderNo() + "、状态:" + order.getStatus$(), |
| | | response, bool); |
| | | } |
| | | public Double getDecimalFieldAsDouble(JSONObject jsonObject, String fieldName) { |
| | | Object field = jsonObject.get(fieldName); |
| | | |
| | | if (field instanceof BigDecimal) { |
| | | return ((BigDecimal) field).doubleValue(); |
| | | } else if (field instanceof Integer) { |
| | | return ((Integer) field).doubleValue(); |
| | | } else if (field instanceof Double) { |
| | | return (Double) field; |
| | | } else { |
| | | return 0.0; // 默认值 |
| | | } |
| | | } |
| | | |
| | | |
| | | } |