From 28e0b9b18b07ab2a331a8f3b1eda5afabc280725 Mon Sep 17 00:00:00 2001 From: lsh <lsh@163.com> Date: 星期五, 28 二月 2025 09:58:45 +0800 Subject: [PATCH] # --- src/main/resources/mapper/OrderMapper.xml | 9 + src/main/java/com/zy/asrs/service/OrderService.java | 1 src/main/java/com/zy/asrs/mapper/LocDetlMapper.java | 3 src/main/java/com/zy/asrs/service/LocDetlService.java | 2 src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java | 5 + src/main/java/com/zy/asrs/mapper/OrderMapper.java | 1 src/main/resources/mapper/LocDetlMapper.xml | 153 ++++++++++++++++++++++++++++++ src/main/webapp/static/js/order/order.js | 12 +- src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java | 7 + src/main/java/com/zy/asrs/task/OrderSyncScheduler.java | 21 +++ src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java | 49 +++++++++ src/main/java/com/zy/asrs/controller/OutController.java | 6 12 files changed, 257 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/zy/asrs/controller/OutController.java b/src/main/java/com/zy/asrs/controller/OutController.java index fb01a95..972d79c 100644 --- a/src/main/java/com/zy/asrs/controller/OutController.java +++ b/src/main/java/com/zy/asrs/controller/OutController.java @@ -80,7 +80,8 @@ if (issued <= 0.0D) { continue; } - List<LocDetl> locDetls = locDetlService.queryStock(orderDetl.getMatnr(), orderDetl.getBatch(), null, exist); + List<LocDetl> locDetls = locDetlService.queryStockAll(null, exist,orderDetl.getMatnr(), orderDetl.getBatch(), + orderDetl.getBrand(),orderDetl.getStandby1(),orderDetl.getStandby2(),orderDetl.getStandby3(),orderDetl.getBoxType1(),orderDetl.getBoxType2(),orderDetl.getBoxType3()); for (LocDetl locDetl : locDetls) { if (issued > 0) { LocDto locDto = new LocDto(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getMaktx(), locDetl.getBatch(), orderDetl.getOrderNo(), @@ -109,7 +110,8 @@ if (issued <= 0.0D) { continue; } - List<LocDetl> locDetls = locDetlService.queryStock(orderDetl.getMatnr(), orderDetl.getBatch(), null, exist); + List<LocDetl> locDetls = locDetlService.queryStockAll(null, exist,orderDetl.getMatnr(), orderDetl.getBatch(), + orderDetl.getBrand(),orderDetl.getStandby1(),orderDetl.getStandby2(),orderDetl.getStandby3(),orderDetl.getBoxType1(),orderDetl.getBoxType2(),orderDetl.getBoxType3()); for (LocDetl locDetl : locDetls) { if (issued > 0) { LocDto locDto = new LocDto(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getMaktx(), locDetl.getBatch(), orderDetl.getOrderNo(), diff --git a/src/main/java/com/zy/asrs/mapper/LocDetlMapper.java b/src/main/java/com/zy/asrs/mapper/LocDetlMapper.java index a764efc..bbf8ac8 100644 --- a/src/main/java/com/zy/asrs/mapper/LocDetlMapper.java +++ b/src/main/java/com/zy/asrs/mapper/LocDetlMapper.java @@ -71,6 +71,9 @@ // ------------------------------------------------- List<LocDetl> queryStock(@Param("matnr")String matnr, @Param("batch")String batch, @Param("orderNo")String orderNo, @Param("locNos") Set<String> locNos); + List<LocDetl> queryStockAll(@Param("orderNo")String orderNo, @Param("locNos") Set<String> locNos, @Param("matnr")String matnr, @Param("batch")String batch, + @Param("brand")String brand,@Param("standby1")String standby1,@Param("standby2")String standby2, + @Param("standby3")String standby3,@Param("boxType1")String boxType1,@Param("boxType2")String boxType2,@Param("boxType3")String boxType3); Double queryStockAnfme(String matnr, String batch); diff --git a/src/main/java/com/zy/asrs/mapper/OrderMapper.java b/src/main/java/com/zy/asrs/mapper/OrderMapper.java index ae0223b..69f50ce 100644 --- a/src/main/java/com/zy/asrs/mapper/OrderMapper.java +++ b/src/main/java/com/zy/asrs/mapper/OrderMapper.java @@ -16,6 +16,7 @@ List<Order> selectComplete(); List<Order> selectComplete1(); + List<Order> selectComplete99(); List<Order> selectComplete8(); int addToLogTable(Order order); diff --git a/src/main/java/com/zy/asrs/service/LocDetlService.java b/src/main/java/com/zy/asrs/service/LocDetlService.java index fff4fab..2bdc4f2 100644 --- a/src/main/java/com/zy/asrs/service/LocDetlService.java +++ b/src/main/java/com/zy/asrs/service/LocDetlService.java @@ -67,6 +67,8 @@ List<LocDetl> queryStock(String matnr, String batch, String orderNo, Set<String> locNos); + List<LocDetl> queryStockAll(String orderNo, Set<String> locNos,String matnr, String batch, String brand, String standby1, String standby2, String standby3, String boxType1, String boxType2, String boxType3); + Double queryStockAnfme(String matnr, String batch); List<StockVo> queryStockTotal(); diff --git a/src/main/java/com/zy/asrs/service/OrderService.java b/src/main/java/com/zy/asrs/service/OrderService.java index 1d3d2c6..878002f 100644 --- a/src/main/java/com/zy/asrs/service/OrderService.java +++ b/src/main/java/com/zy/asrs/service/OrderService.java @@ -26,6 +26,7 @@ List<Order> selectComplete(); List<Order> selectComplete1(); + List<Order> selectComplete99(); List<Order> selectComplete8(); boolean addToLogTable(Order order); diff --git a/src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java index 63c203f..2e14e9b 100644 --- a/src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java @@ -111,6 +111,13 @@ return this.baseMapper.queryStock(matnr, batch, orderNo, locNos); } + + + @Override + public List<LocDetl> queryStockAll(String orderNo, Set<String> locNos,String matnr, String batch, String brand, String standby1, String standby2, String standby3, String boxType1, String boxType2, String boxType3) { + return this.baseMapper.queryStockAll(orderNo,locNos, matnr, batch,brand,standby1,standby2,standby3,boxType1,boxType2,boxType3); + } + @Override public Double queryStockAnfme(String matnr, String batch) { return this.baseMapper.queryStockAnfme(matnr, batch); diff --git a/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java index 0b4877b..ba05f58 100644 --- a/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java @@ -181,6 +181,11 @@ } @Override + public List<Order> selectComplete99() { + return this.baseMapper.selectComplete99(); + } + + @Override public List<Order> selectComplete8() { return this.baseMapper.selectComplete8(); } diff --git a/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java b/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java index d223b49..70a7f46 100644 --- a/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java +++ b/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java @@ -41,6 +41,23 @@ @Scheduled(cron = "0/5 * * * * ? ") @Async("orderThreadPool") + public void completeAndReportOrderIssuedOnceMore() { + List<Order> orderList = orderService.selectComplete99(); + for (Order order : orderList) { + try { + ReturnT<String> result = orderSyncHandler.startOrderIssuedOnceMore(order); + if (!result.isSuccess()) { + log.error("鍗曟嵁[orderNo={}]鍐嶆杞墽琛岃〃澶辫触", order.getOrderNo()); + } + } catch (Exception e){ + log.error(e.getMessage()); + log.error("鍗曟嵁[orderNo={}]鍐嶆杞墽琛岃〃澶辫触", order.getOrderNo()); + } + } + } + + @Scheduled(cron = "0/5 * * * * ? ") + @Async("orderThreadPool") public void completeAndReportOrderIssued() { // String erpReport = Parameter.get().getErpReport(); // if (!Cools.isEmpty(erpReport) && erpReport.equals("true")) { @@ -50,11 +67,11 @@ try { ReturnT<String> result = orderSyncHandler.startOrderIssued(order); if (!result.isSuccess()) { - log.error("鍗曟嵁[orderNo={}]涓婃姤erp澶辫触", order.getOrderNo()); + log.error("鍗曟嵁[orderNo={}]杞墽琛岃〃澶辫触", order.getOrderNo()); } } catch (Exception e){ log.error(e.getMessage()); - log.error("鍗曟嵁[orderNo={}]涓婃姤erp澶辫触", order.getOrderNo()); + log.error("鍗曟嵁[orderNo={}]杞墽琛岃〃澶辫触", order.getOrderNo()); } } // } diff --git a/src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java b/src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java index b4f717d..847c54f 100644 --- a/src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java +++ b/src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java @@ -46,6 +46,42 @@ private ApiLogService apiLogService; @Autowired private DocTypeService docTypeService; + + @Transactional + public ReturnT<String> startOrderIssuedOnceMore(Order order) { + DocType docType = docTypeService.selectById(order.getDocType()); + if (null == docType) { + return SUCCESS; + } + + Order order1 = OrderInAndOutUtil.selectByNo(order.getPakinPakoutStatus$(), order.getOrderNo()); + if (!Cools.isEmpty(order1)){ + return FAIL.setMsg("璇风瓑寰�...璁㈠崟鎵ц妗f姝e湪杞巻鍙叉。妗堬紒锛侊紒"); + } + List<OrderDetl> orderDetls = OrderInAndOutUtil.selectByOrderId(order.getPakinPakoutStatus$(), order.getId()); + if (!Cools.isEmpty(orderDetls) || !orderDetls.isEmpty()) { + return FAIL.setMsg("璇风瓑寰�...璁㈠崟鎵ц鏄庣粏妗f姝e湪杞巻鍙叉。妗堬紒锛侊紒"); + } + + // 鍗曟嵁鏄庣粏妗� + List<OrderDetl> orderDetlList = orderDetlService.selectByOrderId(order.getId()); + for (OrderDetl orderDetl : orderDetlList){ + if (orderDetl.getQty().equals(0D)){ + continue; + } + orderDetl.setWorkQty(orderDetl.getQty()); + orderDetl.setAnfme(orderDetl.getAnfme()-orderDetl.getQty()); + orderDetl.setQty(0D); + orderDetlService.updateById(orderDetl); + } + + // 淇敼璁㈠崟鐘舵�� 99.鍐嶆浣滀笟 ===>> 1.寰呬綔涓� + if (!orderService.updateSettle(order.getId(), 1L, null)) { + throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳"); + } + return SUCCESS; + } + @Transactional public ReturnT<String> startOrderIssued(Order order) { DocType docType = docTypeService.selectById(order.getDocType()); @@ -84,6 +120,7 @@ } return SUCCESS; } + @Transactional public ReturnT<String> startOrderInAndOutUtil(Order order) { DocType docType = docTypeService.selectById(order.getDocType()); @@ -133,6 +170,7 @@ if (null == docType) { return SUCCESS; } + long settle = 6L; List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId()); // 鍏ュ簱瀹屾垚涓婃姤 if (docType.getPakin() == 1) { @@ -141,9 +179,13 @@ pakinParam.setLgortFrom("5008"); pakinParam.setLgortTo("5006"); for (OrderDetl orderDetl : orderDetls) { + if (!orderDetl.getQty().equals(orderDetl.getAnfme())){ + settle = 99L;//浜屾鐢熸垚鍗曟嵁 + } String serial = Cools.isEmpty(orderDetl.getBatch()) ? "" : orderDetl.getBatch(); pakinParam.getList().add(new MesPakinParam.Detl(orderDetl.getMatnr() + (Cools.isEmpty(serial) ? "" : "-" + serial), orderDetl.getAnfme())); } + String response = ""; boolean success = false; try { @@ -157,7 +199,7 @@ if (jsonObject.getInteger("code").equals(200)) { success = true; // 淇敼璁㈠崟鐘舵�� 4.瀹屾垚 ===>> 6.宸蹭笂鎶� - if (!orderService.updateSettle(order.getId(), 6L, null)) { + if (!orderService.updateSettle(order.getId(), settle, null)) { throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳"); } } else { @@ -195,6 +237,9 @@ } pakoutParam.setOrderNo(order.getOrderNo()); for (OrderDetl orderDetl : orderDetls) { + if (!orderDetl.getQty().equals(orderDetl.getAnfme())){ + settle = 99L;//浜屾鐢熸垚鍗曟嵁 + } String serial = Cools.isEmpty(orderDetl.getBatch()) ? "" : orderDetl.getBatch(); pakoutParam.getList().add(new MesPakoutParam.Detl(orderDetl.getMatnr() + (Cools.isEmpty(serial) ? "" : "-" + serial), orderDetl.getAnfme())); } @@ -211,7 +256,7 @@ if (jsonObject.getInteger("code").equals(200)) { success = true; // 淇敼璁㈠崟鐘舵�� 4.瀹屾垚 ===>> 6.宸蹭笂鎶� - if (!orderService.updateSettle(order.getId(), 6L, null)) { + if (!orderService.updateSettle(order.getId(), settle, null)) { throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳"); } } else { diff --git a/src/main/resources/mapper/LocDetlMapper.xml b/src/main/resources/mapper/LocDetlMapper.xml index e248a83..958190a 100644 --- a/src/main/resources/mapper/LocDetlMapper.xml +++ b/src/main/resources/mapper/LocDetlMapper.xml @@ -119,6 +119,72 @@ </otherwise> </choose> </sql> + <sql id="batchSeqA"> + <choose> + <when test="batch != null and batch != ''"> + and a.batch = #{batch} + </when> + <otherwise> + and (a.batch IS NULL OR a.batch = '') + </otherwise> + </choose> + <choose> + <when test="brand != null and brand != ''"> + and a.brand = #{brand} + </when> + <otherwise> + and (a.brand IS NULL OR a.brand = '') + </otherwise> + </choose> + <choose> + <when test="standby1 != null and standby1 != ''"> + and a.standby1 = #{standby1} + </when> + <otherwise> + and (a.standby1 IS NULL OR a.standby1 = '') + </otherwise> + </choose> + <choose> + <when test="standby2 != null and standby2 != ''"> + and a.standby2 = #{standby2} + </when> + <otherwise> + and (a.standby2 IS NULL OR a.standby2 = '') + </otherwise> + </choose> + <choose> + <when test="standby3 != null and standby3 != ''"> + and a.standby3 = #{standby3} + </when> + <otherwise> + and (a.standby3 IS NULL OR a.standby3 = '') + </otherwise> + </choose> + <choose> + <when test="boxType1 != null and boxType1 != ''"> + and a.box_type1 = #{boxType1} + </when> + <otherwise> + and (a.box_type1 IS NULL OR a.box_type1 = '') + </otherwise> + </choose> + <choose> + <when test="boxType2 != null and boxType2 != ''"> + and a.box_type2 = #{boxType2} + </when> + <otherwise> + and (a.box_type2 IS NULL OR a.box_type2 = '') + </otherwise> + </choose> + <choose> + <when test="boxType3 != null and boxType3 != ''"> + and a.box_type3 = #{boxType3} + </when> + <otherwise> + and (a.box_type3 IS NULL OR a.box_type3 = '') + </otherwise> + </choose> + </sql> <sql id="batchSeqNew"> <choose> <when test="batch != null and batch != ''"> @@ -456,6 +522,93 @@ desc </select> + <select id="queryStockAll" resultMap="BaseResultMap"> + select a.* + from asr_loc_detl a + left join asr_loc_mast b on a.loc_no = b.loc_no + where 1=1 + and b.loc_sts = 'F' + and a.matnr = #{matnr} + <!-- <choose>--> + <!-- <when test="batch != null and batch != ''">--> + <!-- and a.batch = #{batch}--> + <!-- </when>--> + <!-- <otherwise>--> + <!-- and (a.batch IS NULL OR a.batch = '')--> + <!-- </otherwise>--> + <!-- </choose>--> + <if test="orderNo != null and orderNo != ''"> + and a.order_no = #{orderNo} + </if> + + <include refid="batchSeqA"></include> + + + <if test="locNos != null and locNos.size > 0"> + and b.loc_no not in + <foreach item="item" collection="locNos" index="index" separator="," open="(" close=")"> + #{item} + </foreach> + </if> + + order by + DATEPART(yyyy,a.modi_time),DATEPART(mm,a.modi_time),DATEPART(dd,a.modi_time), a.anfme + desc, + NEWID(), + case + when (left(a.loc_no, 2) = '01') then 0 + when (left(a.loc_no, 2) = '02') then 1 + when (left(a.loc_no, 2) = '03') then 1 + when (left(a.loc_no, 2) = '04') then 0 + when (left(a.loc_no, 2) = '05') then 0 + when (left(a.loc_no, 2) = '06') then 1 + when (left(a.loc_no, 2) = '07') then 1 + when (left(a.loc_no, 2) = '08') then 0 + when (left(a.loc_no, 2) = '09') then 0 + when (left(a.loc_no, 2) = '10') then 1 + when (left(a.loc_no, 2) = '11') then 1 + when (left(a.loc_no, 2) = '12') then 0 + when (left(a.loc_no, 2) = '13') then 0 + when (left(a.loc_no, 2) = '14') then 1 + when (left(a.loc_no, 2) = '15') then 1 + when (left(a.loc_no, 2) = '16') then 0 + when (left(a.loc_no, 2) = '17') then 0 + when (left(a.loc_no, 2) = '18') then 1 + when (left(a.loc_no, 2) = '19') then 1 + when (left(a.loc_no, 2) = '20') then 0 + when (left(a.loc_no, 2) = '21') then 0 + when (left(a.loc_no, 2) = '22') then 1 + when (left(a.loc_no, 2) = '23') then 1 + when (left(a.loc_no, 2) = '24') then 0 + when (left(a.loc_no, 2) = '25') then 0 + when (left(a.loc_no, 2) = '26') then 1 + when (left(a.loc_no, 2) = '27') then 1 + when (left(a.loc_no, 2) = '28') then 0 + when (left(a.loc_no, 2) = '29') then 0 + when (left(a.loc_no, 2) = '30') then 1 + when (left(a.loc_no, 2) = '31') then 1 + when (left(a.loc_no, 2) = '32') then 0 + when (left(a.loc_no, 2) = '33') then 0 + when (left(a.loc_no, 2) = '34') then 1 + when (left(a.loc_no, 2) = '35') then 1 + when (left(a.loc_no, 2) = '36') then 0 + when (left(a.loc_no, 2) = '37') then 0 + when (left(a.loc_no, 2) = '38') then 1 + when (left(a.loc_no, 2) = '39') then 1 + when (left(a.loc_no, 2) = '40') then 0 + when (left(a.loc_no, 2) = '41') then 0 + when (left(a.loc_no, 2) = '42') then 1 + when (left(a.loc_no, 2) = '43') then 1 + when (left(a.loc_no, 2) = '44') then 0 + when (left(a.loc_no, 2) = '45') then 0 + when (left(a.loc_no, 2) = '46') then 1 + when (left(a.loc_no, 2) = '47') then 1 + when (left(a.loc_no, 2) = '48') then 0 + else 0 + end + desc + </select> + <select id="queryStockAnfme" resultType="java.lang.Double"> select sum(anfme) as count from man_loc_detl where 1=1 diff --git a/src/main/resources/mapper/OrderMapper.xml b/src/main/resources/mapper/OrderMapper.xml index 0e7e9a8..f8c5070 100644 --- a/src/main/resources/mapper/OrderMapper.xml +++ b/src/main/resources/mapper/OrderMapper.xml @@ -73,6 +73,15 @@ order by create_time asc </select> + <select id="selectComplete99" resultMap="BaseResultMap"> + select top 5 * + from man_order + where 1=1 + and settle = 99 + and status = 1 + order by create_time asc + </select> + <select id="selectComplete8" resultMap="BaseResultMap"> select top 5 * from man_order diff --git a/src/main/webapp/static/js/order/order.js b/src/main/webapp/static/js/order/order.js index ad09170..6345ea7 100644 --- a/src/main/webapp/static/js/order/order.js +++ b/src/main/webapp/static/js/order/order.js @@ -124,10 +124,11 @@ {type: 'numbers'}, {field: 'matnr', title: '鍟嗗搧缂栫爜', width: 160}, {field: 'maktx', title: '鍟嗗搧鍚嶇О', width: 160}, + {field: 'specs', title: '瑙勬牸'}, {field: 'batch', title: '鎵瑰彿'}, - {field: 'anfme', title: '鏁伴噺'}, - {field: 'workQty', title: '浣滀笟鏁伴噺'}, - {field: 'qty', title: '瀹屾垚鏁伴噺', style: 'font-weight: bold'}, + {field: 'anfme', title: '寰呭畬缁撴暟閲�'}, + {field: 'qty', title: '寰呬笂鎶ユ暟閲�', style: 'font-weight: bold'}, + {field: 'workQty', title: '宸蹭笂鎶ユ暟閲�'}, // {field: 'unit', title: '鍗曚綅'}, // { // field: 'createTime$', title: '鍒涘缓鏃堕棿', sort: true, templet: function (d) { @@ -135,8 +136,7 @@ // }, width: 180 // }, // {field: 'inQty', title: '宸插叆搴撻噺'}, - // {field: 'color', title: '棰滆壊'}, - {field: 'specs', title: '瑙勬牸'} + // {field: 'color', title: '棰滆壊'} ]], request: { pageName: 'curr', @@ -501,7 +501,7 @@ var traceCharts = echarts.init(document.getElementById('wrkTraceCharts')); var traceOptions = { title: { - text: '鎬婚噺/浣滀笟/瀹屾垚', x: 'center', y: '38%', + text: '浣滀笟/瀹岀粨/涓婃姤', x: 'center', y: '38%', textStyle: {fontSize: 18, color: '#262626', fontWeight: 'normal'}, subtextStyle: {fontSize: 36, color: '#10B4E8'}, itemGap: 20 -- Gitblit v1.9.1