src/main/java/com/zy/asrs/controller/MatController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/utils/OutLocBoxExcelListener.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/utils/OutpandianBoxExeclListener.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/webapp/static/js/operateLog/operateLog.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/webapp/views/operateLog/operateLog.html | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
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 ***********************************************/ 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]+" 所在库位不满足出库条件!!!库位状态不为F!!!库位状态:"+locMast.getLocSts$()); sign = false; errorMsgOrderLoc = errorMsgOrderLoc + "[===》" +"箱号:"+outLocBoxC[0]+" 所在库位不满足出库条件!!!库位状态不为F!!!库位状态:"+locMast.getLocSts$()+"《===]"; continue; // throw new CoolException("箱号:"+outLocBoxC[0]+" 所在库位不满足出库条件!!!库位状态不为F!!!库位状态:"+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("")? "正常" : (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; } } 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]+" 所在库位不满足出库条件!!!库位状态不为F!!!库位状态:"+locMast.getLocSts$()); sign = false; errorMsgOrderLoc = errorMsgOrderLoc + "[===》" +"箱号:"+outLocBoxC[0]+" 所在库位不满足出库条件!!!库位状态不为F!!!库位状态:"+locMast.getLocSts$()+"《===]"; continue; // throw new CoolException("箱号:"+outLocBoxC[0]+" 所在库位不满足出库条件!!!库位状态不为F!!!库位状态:"+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("")? "正常" : (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; } } 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: '客户端IP'} ,{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: '客户端IP',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} ]], 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">