src/main/java/com/zy/asrs/controller/OrderController.java
@@ -94,7 +94,7 @@ return R.ok().add(orderDetlService.selectList(new EntityWrapper<OrderDetl>().eq("order_id", orderId))); } @RequestMapping(value = "/order/form/add/auth") /*@RequestMapping(value = "/order/form/add/auth") @ManagerAuth(memo = "手动添加订单") @Transactional public R formAdd(@RequestBody OrderDomainParam param){ @@ -175,134 +175,134 @@ } } return R.ok("订单添加成功"); } }*/ @RequestMapping(value = "/order/form/modify/auth") @ManagerAuth(memo = "手动修改订单") @Transactional public R formModify(@RequestBody OrderDomainParam param){ Order order = orderService.selectById(param.getOrderId()); if (order == null || order.getStatus() == 0) { return R.error("订单不存在"); } Date now = new Date(); Long userId = getUserId(); // 修改主档 if (!param.getDocType().equals(order.getDocType())) { order.setDocType(param.getDocType()); order.setUpdateBy(userId); order.setUpdateTime(now); if (!orderService.updateById(order)) { throw new CoolException("修改订单类型失败"); } } // 修改明细档 // List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId()); // 1.清空明细档 if (!orderDetlService.delete(new EntityWrapper<OrderDetl>().eq("order_id", order.getId()))) { throw new CoolException("清空订单明细失败"); } // 2.重组数据 List<DetlDto> list = new ArrayList<>(); for (OrderDetl orderDetl : param.getOrderDetlList()) { DetlDto dto = new DetlDto(orderDetl.getMatnr(), orderDetl.getBatch()); if (DetlDto.has(list, dto)) { OrderDetl item = orderDetlService.selectItem(order.getId(), orderDetl.getMatnr(), orderDetl.getBatch(),orderDetl.getAnfme()); item.setAnfme(item.getAnfme() + orderDetl.getAnfme()); if (!orderDetlService.updateById(item)) { throw new CoolException("保存订单明细档失败"); } } else { list.add(dto); orderDetl.setOrderId(order.getId()); orderDetl.setOrderNo(order.getOrderNo()); orderDetl.setCreateBy(getUserId()); orderDetl.setCreateTime(now); orderDetl.setUpdateBy(getUserId()); orderDetl.setUpdateTime(now); orderDetl.setStatus(1); orderDetl.setQty(0.0D); if (!orderDetlService.insert(orderDetl)) { throw new CoolException("保存订单明细档失败"); } } } return R.ok("订单修改成功"); } // @RequestMapping(value = "/order/form/modify/auth") // @ManagerAuth(memo = "手动修改订单") // @Transactional // public R formModify(@RequestBody OrderDomainParam param){ // Order order = orderService.selectById(param.getOrderId()); // if (order == null || order.getStatus() == 0) { // return R.error("订单不存在"); // } // Date now = new Date(); // Long userId = getUserId(); // // 修改主档 // if (!param.getDocType().equals(order.getDocType())) { // order.setDocType(param.getDocType()); // order.setUpdateBy(userId); // order.setUpdateTime(now); // if (!orderService.updateById(order)) { // throw new CoolException("修改订单类型失败"); // } // } // // 修改明细档 //// List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId()); // // 1.清空明细档 // if (!orderDetlService.delete(new EntityWrapper<OrderDetl>().eq("order_id", order.getId()))) { // throw new CoolException("清空订单明细失败"); // } // // 2.重组数据 // List<DetlDto> list = new ArrayList<>(); // for (OrderDetl orderDetl : param.getOrderDetlList()) { // DetlDto dto = new DetlDto(orderDetl.getMatnr(), orderDetl.getBatch()); // if (DetlDto.has(list, dto)) { // OrderDetl item = orderDetlService.selectItem(order.getId(), orderDetl.getMatnr(), orderDetl.getBatch(),orderDetl.getAnfme()); // item.setAnfme(item.getAnfme() + orderDetl.getAnfme()); // if (!orderDetlService.updateById(item)) { // throw new CoolException("保存订单明细档失败"); // } // } else { // list.add(dto); // orderDetl.setOrderId(order.getId()); // orderDetl.setOrderNo(order.getOrderNo()); // orderDetl.setCreateBy(getUserId()); // orderDetl.setCreateTime(now); // orderDetl.setUpdateBy(getUserId()); // orderDetl.setUpdateTime(now); // orderDetl.setStatus(1); // orderDetl.setQty(0.0D); // if (!orderDetlService.insert(orderDetl)) { // throw new CoolException("保存订单明细档失败"); // } // } // } // return R.ok("订单修改成功"); // } @PostMapping(value = "/order/wrk/trace/auth") @ManagerAuth public R orderWrkTrace(@RequestParam("orderId") Long orderId) { Order order = orderService.selectById(orderId); if (null == order) { return R.error("单据不存在"); } // 数量统计 List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(orderId); double totalQty = 0; double wrkQty = 0; double lackQty = 0; double endQty = 0; for (OrderDetl orderDetl : orderDetls) { totalQty = totalQty + orderDetl.getAnfme(); wrkQty = wrkQty + orderDetl.getWorkQty(); endQty = endQty + orderDetl.getQty(); double issued = Optional.of(orderDetl.getAnfme() - orderDetl.getWorkQty()).orElse(0.0D); if (issued > 0.0) { List<LocDetl> locDetls = locDetlService.queryStock(orderDetl.getMatnr(), orderDetl.getBatch(), orderDetl.getOrigin(), null); for (LocDetl locDetl : locDetls) { if (issued > 0) { issued = issued - locDetl.getAnfme(); } else { break; } } } if (issued > 0.0) { lackQty = lackQty + issued; } } // 任务追溯 List<WrkTraceVo> wrkTraceVos = new ArrayList<>(); List<WrkDetl> wrkDetls = wrkDetlService.selectAndLogByOrderNoGroupByMatnrOfSum(order.getOrderNo()); for (WrkDetl wrkDetl : wrkDetls) { WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", wrkDetl.getWrkNo()).eq("io_time", wrkDetl.getIoTime())); if (wrkMast == null) { WrkMastLog wrkMastLog = wrkMastLogService.selectOne(new EntityWrapper<WrkMastLog>().eq("wrk_no", wrkDetl.getWrkNo()).eq("io_time", wrkDetl.getIoTime())); if (wrkMastLog.getIoType()==103){ wrkMastLog = wrkMastLogService.selectOne(new EntityWrapper<WrkMastLog>().eq("wrk_no", wrkDetl.getWrkNo()).eq("io_time", wrkDetl.getIoTime()).eq("io_type",53)); } if (wrkMastLog != null) { wrkMast = new WrkMast(); BeanUtils.copyProperties(wrkMastLog, wrkMast); } else { continue; } } boolean exist = false; for (WrkTraceVo vo : wrkTraceVos) { if (vo.getWrkNo().equals(wrkMast.getWrkNo()) && vo.getIoTimeStr().equals(DateUtils.convert(wrkMast.getIoTime()))) { vo.getWrkDetls().add(wrkDetl); exist = true; } } if (!exist) { WrkTraceVo vo = new WrkTraceVo(wrkMast.getWrkNo(), DateUtils.convert(wrkMast.getIoTime()), wrkMast, wrkDetl); wrkTraceVos.add(vo); } } if (!Cools.isEmpty(wrkTraceVos) && wrkTraceVos.size() > 1) { wrkTraceVos.sort((o1, o2) -> (int) (o2.getWrkMast().getIoTime().getTime() - o1.getWrkMast().getIoTime().getTime())); } return R.ok().add(Cools .add("list", wrkTraceVos) .add("orderNo", order.getOrderNo()) .add("totalQty", totalQty) .add("wrkQty", wrkQty+endQty) .add("lackQty", lackQty) .add("endQty",endQty) ); } // @PostMapping(value = "/order/wrk/trace/auth") // @ManagerAuth // public R orderWrkTrace(@RequestParam("orderId") Long orderId) { // Order order = orderService.selectById(orderId); // if (null == order) { // return R.error("单据不存在"); // } // // 数量统计 // List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(orderId); // double totalQty = 0; // double wrkQty = 0; // double lackQty = 0; // double endQty = 0; // for (OrderDetl orderDetl : orderDetls) { // totalQty = totalQty + orderDetl.getAnfme(); // wrkQty = wrkQty + orderDetl.getWorkQty(); // endQty = endQty + orderDetl.getQty(); // double issued = Optional.of(orderDetl.getAnfme() - orderDetl.getWorkQty()).orElse(0.0D); // if (issued > 0.0) { // List<LocDetl> locDetls = locDetlService.queryStock(orderDetl.getMatnr(), orderDetl.getBatch(), orderDetl.getOrigin(), null); // for (LocDetl locDetl : locDetls) { // if (issued > 0) { // issued = issued - locDetl.getAnfme(); // } else { // break; // } // } // } // if (issued > 0.0) { // lackQty = lackQty + issued; // } // } // // 任务追溯 // List<WrkTraceVo> wrkTraceVos = new ArrayList<>(); // List<WrkDetl> wrkDetls = wrkDetlService.selectAndLogByOrderNoGroupByMatnrOfSum(order.getOrderNo()); // for (WrkDetl wrkDetl : wrkDetls) { // WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", wrkDetl.getWrkNo()).eq("io_time", wrkDetl.getIoTime())); // if (wrkMast == null) { // WrkMastLog wrkMastLog = wrkMastLogService.selectOne(new EntityWrapper<WrkMastLog>().eq("wrk_no", wrkDetl.getWrkNo()).eq("io_time", wrkDetl.getIoTime())); // if (wrkMastLog.getIoType()==103){ // wrkMastLog = wrkMastLogService.selectOne(new EntityWrapper<WrkMastLog>().eq("wrk_no", wrkDetl.getWrkNo()).eq("io_time", wrkDetl.getIoTime()).eq("io_type",53)); // } // if (wrkMastLog != null) { // wrkMast = new WrkMast(); // BeanUtils.copyProperties(wrkMastLog, wrkMast); // } else { // continue; // } // } // boolean exist = false; // for (WrkTraceVo vo : wrkTraceVos) { // if (vo.getWrkNo().equals(wrkMast.getWrkNo()) && vo.getIoTimeStr().equals(DateUtils.convert(wrkMast.getIoTime()))) { // vo.getWrkDetls().add(wrkDetl); // exist = true; // } // } // if (!exist) { // WrkTraceVo vo = new WrkTraceVo(wrkMast.getWrkNo(), DateUtils.convert(wrkMast.getIoTime()), wrkMast, wrkDetl); // wrkTraceVos.add(vo); // } // } // if (!Cools.isEmpty(wrkTraceVos) && wrkTraceVos.size() > 1) { // wrkTraceVos.sort((o1, o2) -> (int) (o2.getWrkMast().getIoTime().getTime() - o1.getWrkMast().getIoTime().getTime())); // } // return R.ok().add(Cools // .add("list", wrkTraceVos) // .add("orderNo", order.getOrderNo()) // .add("totalQty", totalQty) // .add("wrkQty", wrkQty+endQty) // .add("lackQty", lackQty) // .add("endQty",endQty) // ); // } // ------------------------------------------------------------------------------------------------ src/main/java/com/zy/asrs/controller/OutController.java
@@ -98,6 +98,11 @@ List<Integer> staNos = staDescService.queryOutStaNosByLocNo(locDetl.getLocNo(), issued >= locDetl.getAnfme() ? 101 : 103); locDto.setStaNos(staNos); locDto.setModel(locDetl.getModel()); locDto.setOutOrderNo(locDetl.getOutOrderNo()); locDto.setLuHao(locDetl.getLuHao()); locDto.setPacking(locDetl.getPacking()); locDto.setProType(locDetl.getProType()); locDto.setSPgNO(locDetl.getSPgNO()); locDtos.add(locDto); exist.add(locDetl.getLocNo()); // 剩余待出数量递减 @@ -111,6 +116,11 @@ LocDto locDto = new LocDto(null, orderDetl.getMatnr(), orderDetl.getMaktx(), orderDetl.getBatch(), orderDetl.getOrderNo(), issued); locDto.setLack(Boolean.TRUE); locDto.setModel(orderDetl.getModel()); locDto.setOutOrderNo(orderDetl.getOutOrderNo()); locDto.setLuHao(orderDetl.getLuHao()); locDto.setPacking(orderDetl.getPacking()); locDto.setProType(orderDetl.getProType()); locDto.setSPgNO(orderDetl.getSPgNO()); locDtos.add(locDto); } } src/main/java/com/zy/asrs/service/OrderDetlService.java
@@ -5,6 +5,7 @@ import com.zy.asrs.entity.OrderDetl; import com.zy.asrs.entity.WaitPakin; import com.zy.asrs.entity.WrkDetl; import com.zy.common.model.LocDto; import java.util.List; @@ -38,6 +39,7 @@ /** * 入出库任务生成时,更新单据表中作业数量 * * @param orderDetl * @param workQty * @return @@ -46,5 +48,9 @@ List<OrderDetl> selectItem(String orderNo); OrderDetl selectItem(WaitPakin waitPakin); OrderDetl selectItem(WaitPakin waitPakin); OrderDetl selectItem(LocDto locDto); OrderDetl selectItem(WrkDetl wrkDetl); } src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -530,7 +530,7 @@ Date now = new Date(); for (OrderDetl orderDetl : orderDetls) { //查询所有库位状态为F的库位信息 List<LocDetl> locDetls = locDetlService.queryStock(orderDetl.getMatnr(), orderDetl.getBatch(), null, null); List<LocDetl> locDetls = locDetlService.queryStock(orderDetl); if (locDetls.size() == 0) { throw new CoolException("库存中没有该物料"); } src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java
@@ -10,6 +10,7 @@ import com.zy.asrs.mapper.OrderDetlMapper; import com.zy.asrs.service.OrderDetlService; import com.zy.asrs.utils.MatCompareUtils; import com.zy.common.model.LocDto; import org.springframework.stereotype.Service; import java.util.List; @@ -178,7 +179,7 @@ @Override public OrderDetl selectItem(WaitPakin waitPakin) { List<OrderDetl> detlList = this.baseMapper.selectItemByOrderNo(waitPakin.getOrderNo(), waitPakin.getOrderNo(), waitPakin.getBatch()); List<OrderDetl> detlList = this.baseMapper.selectItemByOrderNo(waitPakin.getOrderNo(), waitPakin.getMatnr(), waitPakin.getBatch()); if (detlList == null || detlList.isEmpty()) { return null; } else if (detlList.size() == 1) { @@ -192,4 +193,38 @@ return null; } } @Override public OrderDetl selectItem(LocDto locDto) { List<OrderDetl> detlList = this.baseMapper.selectItemByOrderNo(locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch()); if (detlList == null || detlList.isEmpty()) { return null; } else if (detlList.size() == 1) { return detlList.get(0); } else { for (OrderDetl orderDetl : detlList) { if (MatCompareUtils.compare(locDto, orderDetl)) { return orderDetl; } } return null; } } @Override public OrderDetl selectItem(WrkDetl wrkDetl) { List<OrderDetl> detlList = this.baseMapper.selectItemByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch()); if (detlList == null || detlList.isEmpty()) { return null; } else if (detlList.size() == 1) { return detlList.get(0); } else { for (OrderDetl orderDetl : detlList) { if (MatCompareUtils.compare(wrkDetl, orderDetl)) { return orderDetl; } } return null; } } } src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -331,10 +331,8 @@ continue; } log.info("工作档明细:{},{},{},{}", locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch(),locDto.getAnfme()); OrderDetl orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch(), locDto.getAnfme()); if (orderDetl == null) { orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), null, locDto.getAnfme()); } OrderDetl orderDetl = orderDetlService.selectItem(locDto); WrkDetl wrkDetl = new WrkDetl(); wrkDetl.sync(orderDetl); wrkDetl.setZpallet(wrkMast.getBarcode()); src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -115,10 +115,8 @@ } // 更新订单完成数量 OrderDetl orderDetl = orderDetlService.selectQtyItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getAnfme()); if (orderDetl == null) { orderDetl = orderDetlService.selectQtyItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), null, wrkDetl.getAnfme()); } OrderDetl orderDetl = orderDetlService.selectItem(wrkDetl); try { if (!Cools.isEmpty(orderDetl)) { if (!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), @@ -171,10 +169,8 @@ // 更新订单完成数量 OrderDetl orderDetl = orderDetlService.selectQtyItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getAnfme()); if (orderDetl == null) { orderDetl = orderDetlService.selectQtyItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), null, wrkDetl.getAnfme()); } OrderDetl orderDetl = orderDetlService.selectItem(wrkDetl); try { if (!Cools.isEmpty(orderDetl)) { if (!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), @@ -355,10 +351,8 @@ } for (WrkDetl wrkDetl : wrkDetls101) { // 更新订单完成数量 OrderDetl orderDetl = orderDetlService.selectQtyItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getAnfme()); if (orderDetl == null) { orderDetl = orderDetlService.selectQtyItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), null, wrkDetl.getAnfme()); } OrderDetl orderDetl = orderDetlService.selectItem(wrkDetl); try { if (!Cools.isEmpty(orderDetl)) { if (!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), src/main/java/com/zy/asrs/utils/MatCompareUtils.java
@@ -1,6 +1,8 @@ package com.zy.asrs.utils; import com.core.common.Cools; import com.zy.asrs.entity.OrderDetl; import com.zy.common.model.LocDto; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -25,6 +27,7 @@ Object fieldValue2 = getFieldValue(object2, fieldName); if (isSame(fieldValue1, fieldValue2)) { log.info("字段{}信息一致,{}-{}", fieldName, fieldValue1, fieldValue2); }else { return false; } } @@ -47,14 +50,22 @@ try { field = aClass.getDeclaredField(fieldName); } catch (NoSuchFieldException e) { throw new RuntimeException(e); return null; } field.setAccessible(true); // 设置为可访问 try { return field.get(object); } catch (IllegalAccessException e) { throw new RuntimeException(e); return null; } } public static void main(String[] args) { LocDto locDto = new LocDto(); locDto.setMatnr("123"); OrderDetl orderDetl = new OrderDetl(); orderDetl.setMatnr("123"); System.out.println(compare(locDto, orderDetl)); } } src/main/java/com/zy/common/model/LocDto.java
@@ -35,6 +35,15 @@ private String zpallet; //"matnr", "batch", "outOrderNo", "luHao", "packing", "sPgNO", "proType" private String outOrderNo; private String luHao; private String packing; private String proType; public LocDto() { } src/main/java/com/zy/common/web/WcsController.java
@@ -366,10 +366,10 @@ if (!Cools.isEmpty(waitPakin.getOrderNo())) { Order order = orderService.selectByNo(waitPakin.getOrderNo()); if (order != null) { OrderDetl orderDetl = orderDetlService.selectItem(order.getOrderNo(), waitPakin.getMatnr(), waitPakin.getBatch(), waitPakin.getAnfme()); if (orderDetl == null) { orderDetl = orderDetlService.selectItem(order.getOrderNo(), waitPakin.getMatnr(), null,waitPakin.getAnfme()); } OrderDetl orderDetl = orderDetlService.selectItem(waitPakin); // if (orderDetl == null) { // orderDetl = orderDetlService.selectItem(order.getOrderNo(), waitPakin.getMatnr(), null,waitPakin.getAnfme()); // } wrkDetl.setSPgNO(orderDetl.getSPgNO()); wrkDetl.setOutOrderNo(orderDetl.getOutOrderNo()); wrkDetl.setLuHao(orderDetl.getLuHao()); src/main/java/com/zy/system/entity/license/LicenseCheckListener.java
@@ -54,8 +54,7 @@ //root application context 没有parent ApplicationContext context = event.getApplicationContext().getParent(); if(context == null){ //TODO //loadLicense(); loadLicense(); } } src/main/resources/license.licBinary files differ
src/main/webapp/static/js/order/out.js
@@ -167,6 +167,10 @@ {field: 'zpallet', align: 'center',title: '托盘码'}, {field: 'locNo', title: '货位', align: 'center', width: 100, templet: '#locNoTpl'}, {field: 'staNos', align: 'center', title: '出库站', merge: ['locNo'], templet: '#tbBasicTbStaNos'}, {field: 'outOrderNo', hide: true}, {field: 'luHao', hide: true}, {field: 'packing', hide: true}, {field: 'proType', hide: true}, {type: 'checkbox', merge: ['locNo']}, ]], done: function (res) { src/main/webapp/views/order/out.html
@@ -277,7 +277,7 @@ <script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script> <script type="text/javascript" src="../../static/js/tools/md5.js"></script> <script type="text/javascript" src="../../static/js/orderTable.js" charset="utf-8"></script> <script type="text/javascript" src="../../static/js/order/out.js?t=1" charset="utf-8"></script> <script type="text/javascript" src="../../static/js/order/out.js?t=2" charset="utf-8"></script> <!--<script type="text/template" id="takeSiteSelectTemplate">--> <!-- {{#each data}}--> <!-- <option value="{{siteId}}">{{desc}}</option>-->