From 728e14723ba5a26f95cf099cac3a0d1853aea34b Mon Sep 17 00:00:00 2001 From: lsh <1> Date: 星期三, 11 六月 2025 10:46:56 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/utils/OutLocBoxExcelListener.java | 188 ++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 185 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/zy/asrs/utils/OutLocBoxExcelListener.java b/src/main/java/com/zy/asrs/utils/OutLocBoxExcelListener.java index e0a4fd3..0e81ddc 100644 --- a/src/main/java/com/zy/asrs/utils/OutLocBoxExcelListener.java +++ b/src/main/java/com/zy/asrs/utils/OutLocBoxExcelListener.java @@ -2,10 +2,23 @@ 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; +import com.core.common.R; import com.core.common.SpringUtils; import com.core.exception.CoolException; +import com.zy.asrs.entity.LocDetl; +import com.zy.asrs.entity.LocMast; +import com.zy.asrs.entity.OrderDetl; +import com.zy.asrs.entity.param.StockOutParam; +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; @@ -20,13 +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; - List<String> batchs = new ArrayList<>(); + 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; } @@ -50,7 +74,29 @@ @Override public void invoke(OutLocBoxExcel excel, AnalysisContext ctx) { String batch = excel.getBatch(); - batchs.add(batch); + String orderNo = excel.getOrderNo(); +// String cstmrName = excel.getCstmrName(); + String memo = excel.getMemo(); + if (Cools.isEmpty(orderOneNo)){ + if (!Cools.isEmpty(excel.getOrderNo())){ + orderOneNo = excel.getOrderNo(); + } else { + throw new CoolException("璁㈠崟鍙峰弬鏁颁负绌�"); + } + } + if (Cools.isEmpty(cstmrName)){ + if (!Cools.isEmpty(excel.getCstmrName())){ + cstmrName = excel.getCstmrName(); + } else { + throw new CoolException("瀹㈡埛鍚嶇О鍙傛暟涓虹┖"); + } + } + String[] s=new String[4]; + s[0] = batch; + s[1] = orderOneNo; + s[2] = cstmrName; + s[3] = memo; + OutLocBoxCs.add(s); total++; } @@ -60,10 +106,146 @@ */ @Override public void doAfterAllAnalysed(AnalysisContext ctx) { - log.info("鐢熸垚{}鏉″嚭搴撲换鍔★紒", total); + 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<>(); + List<String> outLocBoxCNew = new ArrayList<>(); + for (String[] outLocBoxC:OutLocBoxCs){ + total--; + if (!outLocBoxCNew.contains(outLocBoxC[0])){ + LocDetl locDetlSou = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("batch", outLocBoxC[0])); + if (Cools.isEmpty(locDetlSou)){ + 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)){ + sign = false; + errorMsgOrderLoc = errorMsgOrderLoc + "[===銆�" +"绠卞彿锛�"+outLocBoxC[0]+" 鎵�鍦ㄥ簱浣嶄笉婊¤冻鍑哄簱鏉′欢锛侊紒锛佹湭鏌ヨ鍒版绠卞彿鎵�鍦ㄥ簱浣�"+"銆�===]"; + continue; +// throw new CoolException("绠卞彿锛�"+outLocBoxC[0]+" 鎵�鍦ㄥ簱浣嶄笉婊¤冻鍑哄簱鏉′欢锛侊紒锛佹湭鏌ヨ鍒版绠卞彿鎵�鍦ㄥ簱浣�"); + } + if (!locMast.getLocSts().equals("F")){ + sign = false; + errorMsgOrderLoc = errorMsgOrderLoc + "[===銆�" +"绠卞彿锛�"+outLocBoxC[0]+" 鎵�鍦ㄥ簱浣嶄笉婊¤冻鍑哄簱鏉′欢锛侊紒锛佸簱浣嶇姸鎬佷笉涓篎锛侊紒锛佸簱浣嶇姸鎬侊細"+locMast.getLocSts$()+"銆�===]"; + continue; +// throw new CoolException("绠卞彿锛�"+outLocBoxC[0]+" 鎵�鍦ㄥ簱浣嶄笉婊¤冻鍑哄簱鏉′欢锛侊紒锛佸簱浣嶇姸鎬佷笉涓篎锛侊紒锛佸簱浣嶇姸鎬侊細"+locMast.getLocSts$()); + } + + // 鐩爣搴撲綅 ===>> 娴呭簱浣� + 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]); + } + } + } + } + for (String[] outLocBoxC:outLocBoxCList){ + LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("batch", outLocBoxC[0])); + if (Cools.isEmpty(locDetl)){ + total--; + continue; + } +// LocDto locDto = new LocDto(locDetl.getManu(), locDetl.getMatnr(), locDetl.getMaktx(),locDetl.getModel(),locDetl.getSpecs(), +// locDetl.getBatch(),locDetl.getBrand(),locDetl.getBarcode(), outLocBoxC[1],locDetl.getAnfme()); +// locDto.setOrigin(locDetl.getOrigin()); +// locDto.setWeight(locDetl.getWeight()); + locDetl.setMemo(outLocBoxC[3]); + LocDto locDto = new LocDto(locDetl); + locDtos.add(locDto); + } + + StockOutParam param = new StockOutParam(); + ArrayList<StockOutParam.LocDetl> locDetls = new ArrayList<>(); + List<LocDto> locDtosList = new ArrayList<>(); + List<String> batchList = new ArrayList<>(); + for (LocDto locDto : locDtos) { + if (!batchList.contains(locDto.getBatch())){ + batchList.add(locDto.getBatch()); + locDtosList.add(locDto); + } + } + for (LocDto locDto:locDtosList){ + StockOutParam.LocDetl locDetl = new StockOutParam.LocDetl(); + locDetl.setBrand(locDto.getBrand()); + locDetl.setLocNo(locDto.getLocNo()); + locDetl.setAnfme(locDto.getAnfme()); + locDetl.setMatnr(locDto.getMatnr()); + locDetl.setBatch(locDto.getBatch()); + locDetl.setModel(locDto.getModel()); + locDetl.setSpecs(locDto.getSpecs()); + locDetl.setZpallet(locDto.getZpallet()); + locDetl.setOrigin(locDto.getOrigin()); + locDetl.setWeight(locDto.getWeight()); + locDetl.setMemo(locDto.getMemo()); + + locDetls.add(locDetl); + } + param.setLocDetls(locDetls); + param.setOrderNo(orderOneNo); + param.setCstmrName(cstmrName); + + 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); +// } + + } + + log.info("鍑哄簱{}鏉$鍙凤紒", total); } public int getTotal() { return total; } + + public boolean getSign() { + return sign; + } + + public String getErrorMsgOrderLoc() { + return errorMsgOrderLoc; + } } -- Gitblit v1.9.1