From a374f2b69941b4b391b2735e6afc9ba943efc6b1 Mon Sep 17 00:00:00 2001 From: LSH Date: 星期三, 27 十二月 2023 19:17:16 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/task/kingdee/SaveOrderSyncScheduler.java | 16 +++- src/main/java/com/zy/erp/kingdee/entity/param/SaceOrderOtherParam.java | 18 ++++++ src/main/java/com/zy/asrs/task/kingdee/handler/SaveOrderSyncHandler.java | 104 +++++++++++++++++++++++++++++++--- src/main/webapp/static/js/order/order.js | 7 ++ src/main/java/com/zy/asrs/task/kingdee/SubmitOrderSyncScheduler.java | 2 src/main/java/com/zy/erp/kingdee/enums/KingDeeUtilType.java | 6 +- src/main/java/com/zy/asrs/task/kingdee/handler/PushDowmOrderSyncHandler.java | 5 + src/main/resources/application.yml | 20 ++++-- 8 files changed, 152 insertions(+), 26 deletions(-) diff --git a/src/main/java/com/zy/asrs/task/kingdee/SaveOrderSyncScheduler.java b/src/main/java/com/zy/asrs/task/kingdee/SaveOrderSyncScheduler.java index 99911fa..2ffb8de 100644 --- a/src/main/java/com/zy/asrs/task/kingdee/SaveOrderSyncScheduler.java +++ b/src/main/java/com/zy/asrs/task/kingdee/SaveOrderSyncScheduler.java @@ -11,6 +11,7 @@ import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; +import java.util.Date; import java.util.List; /** @@ -27,18 +28,23 @@ @Value("${erp.switch.SaveOrderSwitch}") private boolean SaveOrderSwitch; -// @Scheduled(cron = "0/3 * * * * ? ") + @Scheduled(cron = "0/3 * * * * ? ") @Async("orderThreadPool") public void completeAndReport(){ - if (1==1) return; if(!SaveOrderSwitch){ return; } List<Order> orders = orderService.selectComplete(); for (Order order : orders) { - ReturnT<String> result = saveOrderSyncHandler.start(order); - if (!result.isSuccess()) { - log.error("鍗曟嵁[orderNo={}]鎻愪氦鑷砮rp澶辫触", order.getOrderNo()); + try{ + ReturnT<String> result = saveOrderSyncHandler.start(order); + if (!result.isSuccess()) { + log.error("鍗曟嵁[orderNo={}]鎻愪氦鑷砮rp澶辫触", order.getOrderNo()); + } + }catch (Exception e){ + Order order1 = orderService.selectById(order.getId()); + order1.setUpdateTime(new Date()); + orderService.updateById(order1); } } } diff --git a/src/main/java/com/zy/asrs/task/kingdee/SubmitOrderSyncScheduler.java b/src/main/java/com/zy/asrs/task/kingdee/SubmitOrderSyncScheduler.java index de43a20..1c4e3c6 100644 --- a/src/main/java/com/zy/asrs/task/kingdee/SubmitOrderSyncScheduler.java +++ b/src/main/java/com/zy/asrs/task/kingdee/SubmitOrderSyncScheduler.java @@ -30,7 +30,7 @@ @Value("${erp.switch.SubmitOrderSwitch}") private boolean SubmitOrderSwitch; - @Scheduled(cron = "0/3 * * * * ? ") +// @Scheduled(cron = "0/3 * * * * ? ") @Async("orderThreadPool") public void completeAndReport(){ if(!SubmitOrderSwitch){ diff --git a/src/main/java/com/zy/asrs/task/kingdee/handler/PushDowmOrderSyncHandler.java b/src/main/java/com/zy/asrs/task/kingdee/handler/PushDowmOrderSyncHandler.java index 859e1da..67bc964 100644 --- a/src/main/java/com/zy/asrs/task/kingdee/handler/PushDowmOrderSyncHandler.java +++ b/src/main/java/com/zy/asrs/task/kingdee/handler/PushDowmOrderSyncHandler.java @@ -138,6 +138,11 @@ order.setUpdateTime(new Date()); orderService.update(order,new EntityWrapper<Order>().eq("order_no",order.getOrderNo())); } + } else { + success = false; + order.setSettle(7L); + order.setUpdateTime(new Date()); + orderService.update(order,new EntityWrapper<Order>().eq("order_no",order.getOrderNo())); } } catch (Exception e) { log.info("涓嬫帹error:"+response); diff --git a/src/main/java/com/zy/asrs/task/kingdee/handler/SaveOrderSyncHandler.java b/src/main/java/com/zy/asrs/task/kingdee/handler/SaveOrderSyncHandler.java index a05c7ca..20975cc 100644 --- a/src/main/java/com/zy/asrs/task/kingdee/handler/SaveOrderSyncHandler.java +++ b/src/main/java/com/zy/asrs/task/kingdee/handler/SaveOrderSyncHandler.java @@ -4,10 +4,16 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.core.common.Cools; +import com.core.common.DateUtils; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; import com.zy.asrs.entity.DocType; import com.zy.asrs.entity.Order; +import com.zy.asrs.entity.OrderDetl; import com.zy.asrs.service.ApiLogService; import com.zy.asrs.service.DocTypeService; +import com.zy.asrs.service.OrderDetlService; import com.zy.asrs.service.OrderService; import com.zy.asrs.task.AbstractHandler; import com.zy.asrs.task.core.ReturnT; @@ -19,8 +25,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.HashMap; -import java.util.Set; +import java.text.SimpleDateFormat; +import java.util.*; /** * Created by Monkey D. Luffy on 2023.10.21 @@ -43,10 +49,16 @@ @Autowired private DocTypeService docTypeService; @Autowired + private OrderDetlService orderDetlService; + @Autowired private LoginAuthenticationHandler loginAuthenticationHandler; @Transactional public ReturnT<String> start(Order order) { + List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId()); + if (Cools.isEmpty(orderDetls) || orderDetls.size()==0){ + return SUCCESS; + } //鐧诲綍閲戣澏r ReturnT<String> start = loginAuthenticationHandler.start(); DocType docType = docTypeService.selectById(order.getDocType()); @@ -54,12 +66,72 @@ return SUCCESS; } KingDeeUtilType kingDeeUtilType = KingDeeUtilType.get(docType.getDocName()); - + if (kingDeeUtilType.entryId!=2){ + return SUCCESS; + } + Date now = new Date(); //鏉′欢鎷兼帴 + JSONObject jsonObjectFBillTypeID = new JSONObject(); + JSONObject jsonObjectFPickerId = new JSONObject(); + if (kingDeeUtilType.pakIn==1){ + jsonObjectFBillTypeID.put("FNUMBER","QTRKD01_SYS"); + }else { + jsonObjectFBillTypeID.put("FNUMBER","QTCKD01_SYS"); + jsonObjectFPickerId.put("FStaffNumber","X0103_GLGW074_1"); + } + + JSONObject jsonObjectFStockOrgId = new JSONObject(); + jsonObjectFStockOrgId.put("FNUMBER","100"); + + JSONObject jsonObjectFOwnerIdHead = new JSONObject(); + jsonObjectFOwnerIdHead.put("FNUMBER","100"); + + JSONObject jsonObjectFDEPTID = new JSONObject(); + jsonObjectFDEPTID.put("FNUMBER","CX"); + + List<JSONObject> jsonObjects = new ArrayList<>(); + + for (OrderDetl orderDetl:orderDetls){ + JSONObject jsonObjectFMATERIALID = new JSONObject(); + jsonObjectFMATERIALID.put("FNUMBER",orderDetl.getMatnr()); + + JSONObject jsonObjectFSTOCKID = new JSONObject(); + jsonObjectFSTOCKID.put("FNUMBER","CK001"); + + JSONObject jsonObjectFLOT = new JSONObject(); + jsonObjectFLOT.put("FNUMBER",orderDetl.getBatch()); + + // 浣跨敤LinkedHashMap鏉ヤ繚鎸佹彃鍏ラ『搴� + Map<String, Object> orderedMap = new LinkedHashMap<>(); + + // 鎸夌収鏈熸湜鐨勯『搴忔坊鍔犻敭鍊煎 + orderedMap.put("FMATERIALID", jsonObjectFMATERIALID); + orderedMap.put("FSTOCKID", jsonObjectFSTOCKID); + orderedMap.put("FLOT", jsonObjectFLOT); + orderedMap.put("FQty", orderDetl.getQty()); // 灏�"FQty"鏀惧埌鏈�鍚� + + JSONObject jsonObjectEnd = new JSONObject(orderedMap); + + jsonObjects.add(jsonObjectEnd); + } + JSONObject jsonObject = new JSONObject(); - jsonObject.put("Numbers",order.getOrderNo()); + jsonObject.put("FBillTypeID",jsonObjectFBillTypeID); + if (kingDeeUtilType.pakIn==0){ + jsonObject.put("FPickerId",jsonObjectFPickerId); + } + jsonObject.put("FDate",DateUtils.convert(now, DateUtils.yyyyMMdd_F)); + jsonObject.put("FStockOrgId",jsonObjectFStockOrgId); + jsonObject.put("FOwnerTypeIdHead","BD_OwnerOrg"); + jsonObject.put("FOwnerIdHead",jsonObjectFOwnerIdHead); + jsonObject.put("FDEPTID",jsonObjectFDEPTID); + jsonObject.put("FEntity",jsonObjects); + + JSONObject jsonObjectModel = new JSONObject(); + jsonObjectModel.put("Model",jsonObject); + JSONObject jsonObject1 = new JSONObject(); - jsonObject1.put("data", jsonObject); + jsonObject1.put("data", jsonObjectModel); jsonObject1.put("FormId",kingDeeUtilType.correspondingFormId); String add = jsonObject1.toJSONString(); //涓婃姤 @@ -74,15 +146,29 @@ .setUri(URL) .setPath(outaddressSave) .setJson(add) + .setHttps(true) .build() .doPost(); JSONObject data = JSON.parseObject(response); Object IsSuccess = findValueByKey(JSON.parseObject(response), "IsSuccess"); - String bool=IsSuccess.toString(); + String bool1=IsSuccess.toString(); //淇濆瓨瀹屾垚鍘熻鍗�8杞�6 - if(bool.equals("true")){ - success = true; - order.setSettle(6L); + if(bool1.equals("true")){ + ObjectMapper objectMapper = new ObjectMapper(); + JsonNode rootNode = objectMapper.readTree(response); + boolean bool = rootNode.get("Result").get("ResponseStatus").get("IsSuccess").asBoolean(); + log.info("瀹℃牳bool:"+bool); + //鎻愪氦瀹屾垚鍘熻鍗�4杞�6 6.涓婃姤瀹屾垚 + if(bool){ + success = true; + order.setSettle(6L); + order.setUpdateTime(new Date()); + orderService.update(order,new EntityWrapper<Order>().eq("order_no",order.getOrderNo())); + } + }else { + success = false; + order.setSettle(7L); + order.setUpdateTime(new Date()); orderService.update(order,new EntityWrapper<Order>().eq("order_no",order.getOrderNo())); } } catch (Exception e) { diff --git a/src/main/java/com/zy/erp/kingdee/entity/param/SaceOrderOtherParam.java b/src/main/java/com/zy/erp/kingdee/entity/param/SaceOrderOtherParam.java new file mode 100644 index 0000000..c7312b3 --- /dev/null +++ b/src/main/java/com/zy/erp/kingdee/entity/param/SaceOrderOtherParam.java @@ -0,0 +1,18 @@ +package com.zy.erp.kingdee.entity.param; + +import lombok.Data; + +@Data +public class SaceOrderOtherParam { + //璐﹀彿ID + private String FMATERIALID; + + //璐﹀彿 + private String FSTOCKID; + + //瀵嗙爜 + private String FLOT; + + // + private Integer FQty; +} diff --git a/src/main/java/com/zy/erp/kingdee/enums/KingDeeUtilType.java b/src/main/java/com/zy/erp/kingdee/enums/KingDeeUtilType.java index 4943493..6bf8b04 100644 --- a/src/main/java/com/zy/erp/kingdee/enums/KingDeeUtilType.java +++ b/src/main/java/com/zy/erp/kingdee/enums/KingDeeUtilType.java @@ -36,9 +36,9 @@ STK_OutStockApply337(12, "鐮斿彂棰嗘枡鍑哄簱鐢宠鍗�-鐮斿彂棰嗘枡鍑哄簱鍗�","STK_OUTSTOCKAPPLY","","鐮斿彂棰嗘枡鍑哄簱鍗�","",0,"STK_OutstockApplyTosTK_MisDelivery",0), STK_ASSEMBLY1(13, "缁勮鎷嗗嵏鍗�1","STK_ASSEMBLY","","","",1,"",0), STK_ASSEMBLY2(14, "缁勮鎷嗗嵏鍗�2","STK_ASSEMBLY","","","",0,"",0), - SAL_RETURNNOTICE1(15, "鍏朵粬鍏ュ簱鍗�","SAL_RETURNNOTICE","","鍏朵粬鍏ュ簱鍗�","STK_MISCELLANEOUS",1,"",2), - SAL_DELIVERYNOTICE2(16, "鍏朵粬鍑哄簱鍗�","SAL_DELIVERYNOTICE","","鍏朵粬鍑哄簱鍗�","SAL_DELIVERYNOTICE",0,"",2), - PRD_PPBOM(17, "鐢熶骇鐢ㄦ枡娓呭崟-鐢熶骇鐢ㄦ枡娓呭崟鍙樻洿鍗�","PRD_PPBOM","","鐢熶骇棰嗘枡鍗�","PRD_PPBOMChange",1,"PRD_PPBOM2PPBOMCHANGE",2), + SAL_RETURNNOTICE1(15, "鍏跺畠鍏ュ簱鍗�","STK_MISCELLANEOUS","","鍏跺畠鍏ュ簱鍗�","STK_MISCELLANEOUS",1,"",2), + SAL_DELIVERYNOTICE2(16, "鍏跺畠鍑哄簱鍗�","STK_MisDelivery","","鍏朵粬鍑哄簱鍗�","STK_MisDelivery",0,"",2), + PRD_PPBOM(17, "鐢熶骇鐢ㄦ枡娓呭崟-鐢熶骇鐢ㄦ枡娓呭崟鍙樻洿鍗�","PRD_PPBOM","","鐢熶骇棰嗘枡鍗�","PRD_PPBOMChange",1,"PRD_PPBOM2PPBOMCHANGE",10), STK_TRANSFERAPPLY2(18, "璋冩嫧鐢宠鍗�2-鐩存帴璋冩嫧鍗�","STK_TRANSFERAPPLY","","鐩存帴璋冩嫧鍗�","STK_TransferDirect",0,"StkTransferApphy-StkTransferDirect",1), STK_TRANSFERAPPLY3(19, "璋冩嫧鐢宠鍗�3-鐩存帴璋冩嫧鍗�","STK_TRANSFERAPPLY","","鐩存帴璋冩嫧鍗�","STK_TransferDirect",0,"StkTransferApphy-StkTransferDirect",1), ; diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index eb2298c..4fefab9 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -17,12 +17,12 @@ # url: jdbc:sqlserver://10.10.10.100:1433;databasename=mdqdasrs # username: sa # password: Dtzhcy101+ - url: jdbc:sqlserver://127.0.0.1:1433;databasename=mdqdasrs - username: sa - password: sa@123 -# url: jdbc:sqlserver://127.0.0.1:51433;databasename=mdqdasrs +# url: jdbc:sqlserver://127.0.0.1:1433;databasename=mdqdasrs # username: sa -# password: Zoneyung@zy56$ +# password: sa@123 + url: jdbc:sqlserver://47.97.1.152:51433;databasename=mdqdasrs + username: sa + password: Zoneyung@zy56$ mvc: static-path-pattern: /** redis: @@ -68,8 +68,12 @@ InboundOrderSwitch: false #鐧诲綍鎺ュ彛寮�鍏� LoginAuthenticationSwitch: true - #涓婃姤鍗曟嵁寮�鍏� 绫冲鏃犵敤 + #瀹℃牳鍗曟嵁寮�鍏� 绫冲鏃犵敤 ReviewOrderSwitch: false + #淇濆瓨鍗曟嵁寮�鍏� + SaveOrderSwitch: true + #鎻愪氦鍗曟嵁寮�鍏� 绫冲鏃犵敤 + SubmitOrderSwitch: false #涓嬫帹鍗曟嵁寮�鍏� PushDowmOrderSwitch: true # 鍦板潃 @@ -81,11 +85,11 @@ inaddress: K3CLOUD/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.ExecuteBillQuery.common.kdsvc #鍗曟嵁涓嬫帹鍦板潃 pushDowmAudit: K3cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Push.common.kdsvc - #缁撴灉涓婃姤锛堜繚瀛橈級鍗曞湴鍧� 绫冲鏃犵敤 + #缁撴灉涓婃姤锛堜繚瀛橈級鍗曞湴鍧� outaddressSave: K3CLOUD/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Save.common.kdsvc #缁撴灉涓婃姤锛堟彁浜わ級鍗曞湴鍧� 绫冲鏃犵敤 outaddressSubmit: K3Cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Submit.common.kdsvc - #缁撴灉涓婃姤锛堝鏍革級鍗曞湴鍧� + #缁撴灉涓婃姤锛堝鏍革級鍗曞湴鍧� 绫冲鏃犵敤 outaddressAudit: K3CLOUD/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Audit.common.kdsvc # 鐧诲綍璐﹀彿绠$悊 login : diff --git a/src/main/webapp/static/js/order/order.js b/src/main/webapp/static/js/order/order.js index abe7000..90c1539 100644 --- a/src/main/webapp/static/js/order/order.js +++ b/src/main/webapp/static/js/order/order.js @@ -197,6 +197,7 @@ {field: 'payment$', title: '璐х墿鐗瑰緛', width: 160}, // {field: 'batch', title: '鎵瑰彿'}, {field: 'anfme', title: '鏁伴噺'}, + {field: 'batch', title: '鎵规'}, {field: 'workQty', title: '浣滀笟鏁伴噺'}, {field: 'qty', title: '瀹屾垚鏁伴噺', style: 'font-weight: bold'}, // {field: 'unit', title: '鍗曚綅'}, @@ -271,6 +272,11 @@ layer.msg('鏁伴噺涓嶈兘灏忎簬宸蹭綔涓氭暟閲�', {icon: 2}); return false; } + + if (nList[xi].batch === ""){ + layer.msg('鎵规涓嶈兘涓虹┖', {icon: 2}); + return false; + } } for (let xi = 0; xi < nList.length; xi++) { if (nList[xi].owner <= 0){ @@ -321,6 +327,7 @@ {field: 'specs', title: '瑙勬牸'}, {field: 'weight', title: '閲嶉噺', edit: true}, {field: 'anfme', title: '鏁伴噺(淇敼)', style: 'color: blue;font-weight: bold', edit: true, minWidth: 110, width: 110}, + {field: 'batch', title: '鎵规(淇敼)', style: 'color: blue;font-weight: bold', edit: true, minWidth: 110, width: 110}, {field: 'owner', title: '璐т富缂栧彿', style: 'color: blue;font-weight: bold', edit: true, minWidth: 110, width: 110}, {field: 'payment', title: '璐х墿鐘舵��', style: 'color: blue;font-weight: bold', templet: '#payment'}, // {field: 'payment', title: '璐х墿鐘舵��',align: 'center', templet: '#payment'}, -- Gitblit v1.9.1