src/main/java/com/zy/asrs/controller/MatController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/controller/MobileController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/entity/param/OrderGiftParam.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.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/webapp/views/orderGift/orderGift.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/controller/MobileController.java
@@ -293,6 +293,46 @@ } } @RequestMapping("/order/search/batch/new/auth") @ManagerAuth(memo = "出库确认") public R orderSearchByBatchNew(@RequestBody OrderGiftParam param){ try{ // String length = param.getLength(); // String lengthS = length.split(" ")[0]; // Double price = Double.valueOf(lengthS); // String grossWeight = param.getGrossWeight(); // String grossWeightS = grossWeight.split(" ")[0]; // Double volume = Double.valueOf(grossWeightS); String netWeight = param.getNetWeight(); String netWeightS = netWeight.split(" ")[0]; Double weight = Double.valueOf(netWeightS); // String splices = param.getSplices(); // String splicesS = splices.split(" ")[0]; List<OrderDetlGift> orderDetlGifts = orderDetlGiftService.selectList(new EntityWrapper<OrderDetlGift>() .eq("order_no", param.getOrderNo()) // .eq("matnr", param.getSpecs()) .eq("batch", param.getBoxNo()) // .eq("model", param.getRollNo()) // .eq("price", price) .eq("weight", weight)); // .eq("volume", volume) // .eq("specs", splicesS)); if (orderDetlGifts.isEmpty()){ return R.error("查询信息异常,未匹配到明细").add("未匹配到明细"); } if (orderDetlGifts.size()>1){ return R.error("查询信息异常,存在多条明细").add("存在多条明细"); } OrderDetlGift orderDetlGift = orderDetlGifts.get(0); orderDetlGift.setSource(1); orderDetlGiftService.updateById(orderDetlGift); orderDetlGift.setDeadTime(orderDetlGift.getSource$()); return R.ok("确认成功").add(orderDetlGift); } catch (Exception e){ return R.error("查询信息异常,未匹配到明细").add("未匹配到明细"); } } // @RequestMapping("/wrkDetl/search/batch/auth") // @ManagerAuth(memo = "出库确认获取信息") // public R wrkDetlSearchByBatch(@RequestBody String batch){ src/main/java/com/zy/asrs/entity/param/OrderGiftParam.java
@@ -5,6 +5,7 @@ @Data public class OrderGiftParam { private String orderNo; private String rollNo; private String boxNo; private String specs; src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -352,12 +352,12 @@ int i=0; for (StockOutParam.LocDetl locDetl : locDetls) { i++; Mat mat = matService.selectByMatnr(locDetl.getMatnr()); if (Cools.isEmpty(mat)) { throw new CoolException(locDetl.getMatnr() + "物料编码检索失败,请先添加商品"); } // Mat mat = matService.selectByMatnr(locDetl.getMatnr()); // if (Cools.isEmpty(mat)) { // throw new CoolException(locDetl.getMatnr() + "物料编码检索失败,请先添加商品"); // } OrderDetlGift orderDetl = new OrderDetlGift(); orderDetl.sync(mat); // orderDetl.sync(mat); orderDetl.setSuppCode(String.valueOf(i)); // 行号 orderDetl.setManu(locDetl.getLocNo()); //库位号 orderDetl.setBatch(locDetl.getBatch()); //木箱编码 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"> src/main/webapp/views/orderGift/orderGift.html
@@ -126,9 +126,7 @@ </div> <!-- 表格操作列 --> <script type="text/html" id="operate"> {{# if (d.settle == 0 || d.settle == 1) { }} <a class="layui-btn layui-btn-danger layui-btn-xs btn-delete" lay-event="del">删除</a> {{# } }} <a class="layui-btn layui-btn-danger layui-btn-xs btn-delete" lay-event="del">删除</a> {{# if (d.settle == 0 || d.settle == 1 || d.settle == 2) { }} <a class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs btn-complete" lay-event="complete">完结</a> {{# } }}