From 1c99199ceac9596a30cf0cd4e57d684ac7da7a94 Mon Sep 17 00:00:00 2001 From: lsh <lsh@163.com> Date: 星期五, 25 四月 2025 12:55:15 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/utils/OutpandianBoxExeclListener.java | 89 +++++++++++++++++----- src/main/webapp/static/js/operateLog/operateLog.js | 14 +- src/main/webapp/views/operateLog/operateLog.html | 5 + src/main/java/com/zy/asrs/controller/MatController.java | 21 +++- src/main/java/com/zy/asrs/utils/OutLocBoxExcelListener.java | 93 +++++++++++++++++++--- 5 files changed, 173 insertions(+), 49 deletions(-) diff --git a/src/main/java/com/zy/asrs/controller/MatController.java b/src/main/java/com/zy/asrs/controller/MatController.java index 9c50df9..1fef104 100644 --- a/src/main/java/com/zy/asrs/controller/MatController.java +++ b/src/main/java/com/zy/asrs/controller/MatController.java @@ -35,6 +35,7 @@ import org.springframework.web.multipart.MultipartFile; import javax.imageio.ImageIO; +import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.awt.image.BufferedImage; import java.io.IOException; @@ -359,10 +360,14 @@ @PostMapping(value = "/out/loc/box/excel/import/auth") @ManagerAuth(memo = "瀵煎叆绠卞彿鍑哄簱") @Transactional - public R outLocBoxExcelImport(MultipartFile file) throws IOException { - OutLocBoxExcelListener listener = new OutLocBoxExcelListener(getUserId()); + public R outLocBoxExcelImport(HttpServletRequest request, MultipartFile file) throws IOException { + OutLocBoxExcelListener listener = new OutLocBoxExcelListener(request.getRemoteAddr(),getUserId()); EasyExcel.read(file.getInputStream(), OutLocBoxExcel.class, listener).sheet().doRead(); - return R.ok("鎴愬姛鍑哄簱"+listener.getTotal()+"鏉″晢鍝佹暟鎹�"); + if (listener.getSign()){ + return R.ok("鎴愬姛鍑哄簱"+listener.getTotal()+"鏉″晢鍝佹暟鎹�."+listener.getErrorMsgOrderLoc()); + } else { + return R.error("鍑哄簱澶辫触锛�"+listener.getErrorMsgOrderLoc()); + } } @@ -387,10 +392,14 @@ @PostMapping(value = "/out/loc/box/excel/import/auth1") @ManagerAuth(memo = "瀵煎叆绠卞彿鐩樼偣鍑哄簱") @Transactional - public R outLocBoxExcelImport1(MultipartFile file) throws IOException { - OutpandianBoxExeclListener listener = new OutpandianBoxExeclListener(getUserId()); + public R outLocBoxExcelImport1(HttpServletRequest request,MultipartFile file) throws IOException { + OutpandianBoxExeclListener listener = new OutpandianBoxExeclListener(request.getRemoteAddr(),getUserId()); EasyExcel.read(file.getInputStream(), pandianExcel.class, listener).sheet().doRead(); - return R.ok("鎴愬姛鍑哄簱"+listener.getTotal()+"鏉″晢鍝佹暟鎹�"); + if (listener.getSign()){ + return R.ok("鎴愬姛鍑哄簱"+listener.getTotal()+"鏉″晢鍝佹暟鎹�."+listener.getErrorMsgOrderLoc()); + } else { + return R.error("鍑哄簱澶辫触锛�"+listener.getErrorMsgOrderLoc()); + } } /*************************************** xm-select ***********************************************/ diff --git a/src/main/java/com/zy/asrs/utils/OutLocBoxExcelListener.java b/src/main/java/com/zy/asrs/utils/OutLocBoxExcelListener.java index e8440e4..0e81ddc 100644 --- a/src/main/java/com/zy/asrs/utils/OutLocBoxExcelListener.java +++ b/src/main/java/com/zy/asrs/utils/OutLocBoxExcelListener.java @@ -2,6 +2,7 @@ import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener; +import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.BaseRes; import com.core.common.Cools; @@ -15,6 +16,9 @@ import com.zy.asrs.service.*; import com.zy.common.entity.OutLocBoxExcel; import com.zy.common.model.LocDto; +import com.zy.common.properties.SlaveProperties; +import com.zy.system.entity.OperateLog; +import com.zy.system.service.OperateLogService; import lombok.extern.slf4j.Slf4j; import java.util.ArrayList; @@ -29,15 +33,24 @@ public class OutLocBoxExcelListener extends AnalysisEventListener<OutLocBoxExcel> { private int total = 0; + private String errorMsgOrderLoc = ""; private String orderOneNo = null; private String cstmrName = null; private Long userId; + private String remoteAddr; + private boolean sign = true; + List<String[]> OutLocBoxCs = new ArrayList<>(); public OutLocBoxExcelListener() { } public OutLocBoxExcelListener(Long userId) { + this.userId = userId; + } + + public OutLocBoxExcelListener(String remoteAddr,Long userId) { + this.remoteAddr = remoteAddr; this.userId = userId; } @@ -96,6 +109,7 @@ if (!Cools.isEmpty(OutLocBoxCs) && OutLocBoxCs.size() != 0) { LocDetlService locDetlService = SpringUtils.getBean(LocDetlService.class); LocMastService locMastService = SpringUtils.getBean(LocMastService.class); + SlaveProperties slaveProperties = SpringUtils.getBean(SlaveProperties.class); WorkService workService = SpringUtils.getBean(WorkService.class); List<LocDto> locDtos = new ArrayList<>(); List<String[]> outLocBoxCList = new ArrayList<>(); @@ -105,26 +119,49 @@ if (!outLocBoxCNew.contains(outLocBoxC[0])){ LocDetl locDetlSou = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("batch", outLocBoxC[0])); if (Cools.isEmpty(locDetlSou)){ - throw new CoolException("绠卞彿锛�"+outLocBoxC[0]+" 鏈煡璇㈠埌鏁版嵁锛侊紒锛�"); + sign = false; + errorMsgOrderLoc = errorMsgOrderLoc + "[===銆�" +"绠卞彿锛�"+outLocBoxC[0]+" 鏈煡璇㈠埌鏁版嵁锛侊紒锛併��===]"; + continue; +// throw new CoolException("绠卞彿锛�"+outLocBoxC[0]+" 鏈煡璇㈠埌鏁版嵁锛侊紒锛�"); } LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locDetlSou.getLocNo())); if (Cools.isEmpty(locMast)){ - throw new CoolException("绠卞彿锛�"+outLocBoxC[0]+" 鎵�鍦ㄥ簱浣嶄笉婊¤冻鍑哄簱鏉′欢锛侊紒锛佹湭鏌ヨ鍒版绠卞彿鎵�鍦ㄥ簱浣�"); + sign = false; + errorMsgOrderLoc = errorMsgOrderLoc + "[===銆�" +"绠卞彿锛�"+outLocBoxC[0]+" 鎵�鍦ㄥ簱浣嶄笉婊¤冻鍑哄簱鏉′欢锛侊紒锛佹湭鏌ヨ鍒版绠卞彿鎵�鍦ㄥ簱浣�"+"銆�===]"; + continue; +// throw new CoolException("绠卞彿锛�"+outLocBoxC[0]+" 鎵�鍦ㄥ簱浣嶄笉婊¤冻鍑哄簱鏉′欢锛侊紒锛佹湭鏌ヨ鍒版绠卞彿鎵�鍦ㄥ簱浣�"); } if (!locMast.getLocSts().equals("F")){ - throw new CoolException("绠卞彿锛�"+outLocBoxC[0]+" 鎵�鍦ㄥ簱浣嶄笉婊¤冻鍑哄簱鏉′欢锛侊紒锛佸簱浣嶇姸鎬佷笉涓篎锛侊紒锛佸簱浣嶇姸鎬侊細"+locMast.getLocSts$()); + sign = false; + errorMsgOrderLoc = errorMsgOrderLoc + "[===銆�" +"绠卞彿锛�"+outLocBoxC[0]+" 鎵�鍦ㄥ簱浣嶄笉婊¤冻鍑哄簱鏉′欢锛侊紒锛佸簱浣嶇姸鎬佷笉涓篎锛侊紒锛佸簱浣嶇姸鎬侊細"+locMast.getLocSts$()+"銆�===]"; + continue; +// throw new CoolException("绠卞彿锛�"+outLocBoxC[0]+" 鎵�鍦ㄥ簱浣嶄笉婊¤冻鍑哄簱鏉′欢锛侊紒锛佸簱浣嶇姸鎬佷笉涓篎锛侊紒锛佸簱浣嶇姸鎬侊細"+locMast.getLocSts$()); } - List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>() - .eq("loc_no", locDetlSou.getLocNo()).eq("origin", locDetlSou.getOrigin())); - for (LocDetl locDetl:locDetls){ - total++; - String[] locDetlNow=new String[4]; - locDetlNow[0] = locDetl.getBatch(); - locDetlNow[1] = outLocBoxC[1]; - locDetlNow[2] = outLocBoxC[2]; - locDetlNow[3] = outLocBoxC[3]; - outLocBoxCList.add(locDetlNow); - outLocBoxCNew.add(outLocBoxC[0]); + + // 鐩爣搴撲綅 ===>> 娴呭簱浣� + if (Utils.isShallowLoc(slaveProperties, locMast.getLocNo())) { + String shallowLoc = Utils.getDeepLoc(slaveProperties, locMast.getLocNo()); + LocMast locMast2 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", shallowLoc)); + if (!Cools.isEmpty(locMast2)) { + if (locMast2.getLocSts().equals("P") || locMast2.getLocSts().equals("R")){ + errorMsgOrderLoc = errorMsgOrderLoc + "[===銆�" +"绠卞彿锛�"+outLocBoxC[0]+" 鎵�鍦ㄥ簱浣嶆弧瓒冲嚭搴撴潯浠讹紒锛侊紒浣嗘槸娣卞簱浣嶅湪鍑哄簱涓紒锛侊紒鍥犳浼氬す鏉傚湪鍓嶈竟璁㈠崟鎵ц锛侊紒锛�"+"銆�===]"; + } + } + } + + if (sign){ + List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>() + .eq("loc_no", locDetlSou.getLocNo()).eq("origin", locDetlSou.getOrigin())); + for (LocDetl locDetl:locDetls){ + total++; + String[] locDetlNow=new String[4]; + locDetlNow[0] = locDetl.getBatch(); + locDetlNow[1] = outLocBoxC[1]; + locDetlNow[2] = outLocBoxC[2]; + locDetlNow[3] = outLocBoxC[3]; + outLocBoxCList.add(locDetlNow); + outLocBoxCNew.add(outLocBoxC[0]); + } } } } @@ -173,9 +210,27 @@ param.setOrderNo(orderOneNo); param.setCstmrName(cstmrName); - if (total>0){ + if (sign && total>0){ workService.startupFullTakeStoreOrder(param,9999L); } + + try { + OperateLogService operateLogService = SpringUtils.getBean(OperateLogService.class); + // 璁板綍鎿嶄綔鏃ュ織 + OperateLog operateLog = new OperateLog(); + operateLog.setAction("瀵煎叆璁㈠崟鎵归噺鍑哄簱"); + operateLog.setIp(remoteAddr); + operateLog.setUserId(userId); + operateLog.setRequest("鍗曞彿锛�"+orderOneNo+"銆佸鎴峰悕锛�"+cstmrName); + operateLog.setResponse(errorMsgOrderLoc.equals("")? "姝e父" : (sign && total>0)? "鎴愬姛:"+errorMsgOrderLoc : "澶辫触:"+errorMsgOrderLoc); + operateLogService.insert(operateLog); + } catch (Exception e){ + log.error("璁板綍鎿嶄綔鏃ュ織澶辫触锛�"+e.getMessage()); + } + +// if (!sign || total<1){ +// throw new CoolException("澶辫触锛�"+errorMsgOrderLoc); +// } } @@ -185,4 +240,12 @@ public int getTotal() { return total; } + + public boolean getSign() { + return sign; + } + + public String getErrorMsgOrderLoc() { + return errorMsgOrderLoc; + } } diff --git a/src/main/java/com/zy/asrs/utils/OutpandianBoxExeclListener.java b/src/main/java/com/zy/asrs/utils/OutpandianBoxExeclListener.java index 790b05d..360a2ac 100644 --- a/src/main/java/com/zy/asrs/utils/OutpandianBoxExeclListener.java +++ b/src/main/java/com/zy/asrs/utils/OutpandianBoxExeclListener.java @@ -15,6 +15,8 @@ import com.zy.asrs.service.WorkService; import com.zy.common.entity.pandianExcel; import com.zy.common.model.LocDto; +import com.zy.system.entity.OperateLog; +import com.zy.system.service.OperateLogService; import lombok.extern.slf4j.Slf4j; import java.util.ArrayList; @@ -26,13 +28,21 @@ private int total = 0; + private String errorMsgOrderLoc = ""; private Long userId; + private String remoteAddr; + private boolean sign = true; List<String[]> OutLocBoxCs = new ArrayList<>(); public OutpandianBoxExeclListener() { } public OutpandianBoxExeclListener(Long userId) { + this.userId = userId; + } + + public OutpandianBoxExeclListener(String remoteAddr,Long userId) { + this.remoteAddr = remoteAddr; this.userId = userId; } @@ -88,23 +98,34 @@ if (!outLocBoxCNew.contains(outLocBoxC[0])){ LocDetl locDetlSou = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("batch", outLocBoxC[0])); if (Cools.isEmpty(locDetlSou)){ - throw new CoolException("绠卞彿锛�"+outLocBoxC[0]+" 鏈煡璇㈠埌鏁版嵁锛侊紒锛�"); + sign = false; + errorMsgOrderLoc = errorMsgOrderLoc + "[===銆�" +"绠卞彿锛�"+outLocBoxC[0]+" 鏈煡璇㈠埌鏁版嵁锛侊紒锛�"+"銆�===]"; + continue; +// throw new CoolException("绠卞彿锛�"+outLocBoxC[0]+" 鏈煡璇㈠埌鏁版嵁锛侊紒锛�"); } LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locDetlSou.getLocNo())); if (Cools.isEmpty(locMast)){ - throw new CoolException("绠卞彿锛�"+outLocBoxC[0]+" 鎵�鍦ㄥ簱浣嶄笉婊¤冻鍑哄簱鏉′欢锛侊紒锛佹湭鏌ヨ鍒版绠卞彿鎵�鍦ㄥ簱浣�"); + sign = false; + errorMsgOrderLoc = errorMsgOrderLoc + "[===銆�" +"绠卞彿锛�"+outLocBoxC[0]+" 鎵�鍦ㄥ簱浣嶄笉婊¤冻鍑哄簱鏉′欢锛侊紒锛佹湭鏌ヨ鍒版绠卞彿鎵�鍦ㄥ簱浣�"+"銆�===]"; + continue; +// throw new CoolException("绠卞彿锛�"+outLocBoxC[0]+" 鎵�鍦ㄥ簱浣嶄笉婊¤冻鍑哄簱鏉′欢锛侊紒锛佹湭鏌ヨ鍒版绠卞彿鎵�鍦ㄥ簱浣�"); } if (!locMast.getLocSts().equals("F")){ - throw new CoolException("绠卞彿锛�"+outLocBoxC[0]+" 鎵�鍦ㄥ簱浣嶄笉婊¤冻鍑哄簱鏉′欢锛侊紒锛佸簱浣嶇姸鎬佷笉涓篎锛侊紒锛佸簱浣嶇姸鎬侊細"+locMast.getLocSts$()); + sign = false; + errorMsgOrderLoc = errorMsgOrderLoc + "[===銆�" +"绠卞彿锛�"+outLocBoxC[0]+" 鎵�鍦ㄥ簱浣嶄笉婊¤冻鍑哄簱鏉′欢锛侊紒锛佸簱浣嶇姸鎬佷笉涓篎锛侊紒锛佸簱浣嶇姸鎬侊細"+locMast.getLocSts$()+"銆�===]"; + continue; +// throw new CoolException("绠卞彿锛�"+outLocBoxC[0]+" 鎵�鍦ㄥ簱浣嶄笉婊¤冻鍑哄簱鏉′欢锛侊紒锛佸簱浣嶇姸鎬佷笉涓篎锛侊紒锛佸簱浣嶇姸鎬侊細"+locMast.getLocSts$()); } - List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>() - .eq("loc_no", locDetlSou.getLocNo()).eq("origin", locDetlSou.getOrigin())); - for (LocDetl locDetl:locDetls){ - total++; - String[] locDetlNow=new String[2]; - locDetlNow[0] = locDetl.getBatch(); - outLocBoxCList.add(locDetlNow); - outLocBoxCNew.add(outLocBoxC[0]); + if (sign){ + List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>() + .eq("loc_no", locDetlSou.getLocNo()).eq("origin", locDetlSou.getOrigin())); + for (LocDetl locDetl:locDetls){ + total++; + String[] locDetlNow=new String[2]; + locDetlNow[0] = locDetl.getBatch(); + outLocBoxCList.add(locDetlNow); + outLocBoxCNew.add(outLocBoxC[0]); + } } } } @@ -151,17 +172,35 @@ locDetls122.add(locDetl); } } - StockOutParam param122 = new StockOutParam(); - param122.setOutSite(122); - param122.setLocDetls(locDetls122); - if (total>0 && locDetls122.size()>0){ - workService.locCheckOut(param122,9999L); + if (sign){ + StockOutParam param122 = new StockOutParam(); + param122.setOutSite(122); + param122.setLocDetls(locDetls122); + + if (total>0 && locDetls122.size()>0){ + workService.locCheckOut(param122,9999L); + } + + StockOutParam param171 = new StockOutParam(); + param171.setOutSite(171); + param171.setLocDetls(locDetls171); + if (total>0 && locDetls171.size()>0){ + workService.locCheckOut(param171,9999L); + } } - StockOutParam param171 = new StockOutParam(); - param171.setOutSite(171); - param171.setLocDetls(locDetls171); - if (total>0 && locDetls171.size()>0){ - workService.locCheckOut(param171,9999L); + + try { + OperateLogService operateLogService = SpringUtils.getBean(OperateLogService.class); + // 璁板綍鎿嶄綔鏃ュ織 + OperateLog operateLog = new OperateLog(); + operateLog.setAction("瀵煎叆绠卞彿鎵归噺鐩樼偣鍑哄簱"); + operateLog.setIp(remoteAddr); + operateLog.setUserId(userId); + operateLog.setRequest(""); + operateLog.setResponse(errorMsgOrderLoc.equals("")? "姝e父" : (sign && total>0)? "鎴愬姛:"+errorMsgOrderLoc : "澶辫触:"+errorMsgOrderLoc); + operateLogService.insert(operateLog); + } catch (Exception e){ + log.error("璁板綍鎿嶄綔鏃ュ織澶辫触锛�"+e.getMessage()); } } @@ -172,4 +211,12 @@ return total; } + public boolean getSign() { + return sign; + } + + public String getErrorMsgOrderLoc() { + return errorMsgOrderLoc; + } + } diff --git a/src/main/webapp/static/js/operateLog/operateLog.js b/src/main/webapp/static/js/operateLog/operateLog.js index d8c9acf..50032c4 100644 --- a/src/main/webapp/static/js/operateLog/operateLog.js +++ b/src/main/webapp/static/js/operateLog/operateLog.js @@ -19,13 +19,13 @@ cellMinWidth: 50, cols: [[ // {type: 'checkbox'} - {field: 'id', title: 'ID', sort: true,align: 'center', width: 80} - ,{field: 'userId$', align: 'center',title: '鐢ㄦ埛'} - ,{field: 'action', align: 'center',title: '鎿嶄綔鍐呭'} - ,{field: 'ip', align: 'center',title: '瀹㈡埛绔疘P'} - ,{field: 'request', align: 'center',title: '璇锋眰鏁版嵁'} - ,{field: 'response', align: 'center',title: '鍝嶅簲鏁版嵁'} - ,{field: 'createTime$', align: 'center',title: '娣诲姞鏃堕棿'} + {field: 'id', title: 'ID', sort: true,align: 'center', width: 80,hide : true} + ,{field: 'userId$', align: 'center',title: '鐢ㄦ埛',hide : false} + ,{field: 'action', align: 'center',title: '鎿嶄綔鍐呭',hide : false} + ,{field: 'ip', align: 'center',title: '瀹㈡埛绔疘P',hide : true} + ,{field: 'request', align: 'center',title: '璇锋眰鏁版嵁',hide : true} + ,{field: 'response', align: 'center',title: '鍝嶅簲鏁版嵁',hide : false} + ,{field: 'createTime$', align: 'center',title: '娣诲姞鏃堕棿',hide : false} // ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width:100} ]], diff --git a/src/main/webapp/views/operateLog/operateLog.html b/src/main/webapp/views/operateLog/operateLog.html index 827ece5..ea29ac3 100644 --- a/src/main/webapp/views/operateLog/operateLog.html +++ b/src/main/webapp/views/operateLog/operateLog.html @@ -30,6 +30,11 @@ </div> </div> </div> + <div class="layui-inline"> + <div class="layui-input-inline"> + <input class="layui-input" type="text" name="action" placeholder="鎿嶄綔鍐呭" autocomplete="off"> + </div> + </div> <!-- 鏃ユ湡鑼冨洿 --> <div class="layui-inline" style="width: 300px"> <div class="layui-input-inline"> -- Gitblit v1.9.1