src/main/java/com/zy/asrs/controller/AgvMobileController.java
@@ -5,6 +5,7 @@ import com.core.annotations.ManagerAuth; import com.core.common.Cools; import com.core.common.R; import com.core.common.SnowflakeIdWorker; import com.core.exception.CoolException; import com.zy.asrs.entity.*; import com.zy.asrs.entity.param.*; @@ -47,6 +48,10 @@ private AgvWrkMastService agvWrkMastService; @Autowired private AgvWrkDetlService agvWrkDetlService; @Autowired private SnowflakeIdWorker snowflakeIdWorker; @Autowired private FlowLogService flowLogService; /* @@ -545,6 +550,7 @@ } AgvWrkMast wrkMast = createWrkMast(ioType, 22L, locNo, "", barcode, now, getUserId(), 30,floor); // 同步调拨单 long flowId = snowflakeIdWorker.nextId(); List<AgvLocDetl> agvLocDetls = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("loc_no", locNo)); for (AgvLocDetl agvLocDetl : agvLocDetls) { AgvWrkDetl wrkDetl = new AgvWrkDetl(); @@ -559,8 +565,35 @@ if (!agvWrkDetlService.insert(wrkDetl)) { throw new CoolException("保存工作明细失败"); } // 更新订单 OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("source",33).eq("matnr", agvLocDetl.getMatnr()).eq("three_code",agvLocDetl.getThreeCode())); FlowLog flowLog = new FlowLog(); flowLog.setFid(String.valueOf(flowId)); flowLog.setSpare2(wrkMast.getWrkNo().toString()); flowLog.setLocNo(wrkMast.getSourceLocNo()); flowLog.setSpare1(barcode); flowLog.setOpType(5L); flowLog.setOrderNo(orderDetl.getOrderNo()); flowLog.setThreeCode(orderDetl.getThreeCode()); flowLog.setMatnr(agvLocDetl.getMatnr()); flowLog.setMaktx(agvLocDetl.getMaktx()); flowLog.setOrderPrevious(orderDetl.getAnfme()); flowLog.setOrderCurrent(orderDetl.getAnfme()); flowLog.setOrderChanged(0.0); flowLog.setQtyPrevious(orderDetl.getQty()); flowLog.setQtyCurrent(orderDetl.getQty() + agvLocDetl.getAnfme()); flowLog.setQtyChanged(agvLocDetl.getAnfme()); flowLog.setLocPrevious(agvLocDetl.getAnfme()); flowLog.setLocCurrent(0.0d); flowLog.setLocChanged(agvLocDetl.getAnfme()); flowLog.setUserId(getUserId()); flowLog.setAppeTime(now); if (!flowLogService.insert(flowLog)) { throw new CoolException("同步半成品调拨单流水记录失败"); } orderDetl.setQty(orderDetl.getQty() + agvLocDetl.getAnfme()); if (!orderDetlService.update(orderDetl,new EntityWrapper<OrderDetl>().eq("source",33).eq("matnr", agvLocDetl.getMatnr()).eq("three_code",agvLocDetl.getThreeCode()))){ throw new CoolException("修改订单明细失败,请联系管理员"+agvLocDetl.getOrderNo()+agvLocDetl.getMatnr()); src/main/java/com/zy/asrs/controller/OrderController.java
@@ -56,6 +56,8 @@ private MatService matService; @Autowired private AgvLocDetlService agvLocDetlService; @Autowired private FlowLogService flowLogService; @GetMapping("/doc/type/list") @Transactional @@ -359,6 +361,7 @@ @Transactional public R formAdd(@RequestBody OrderDomainParam param){ Order order = orderService.selectByNo(param.getOrderNo()); long flowId = snowflakeIdWorker.nextId(); if (order != null) { return R.error("单据编号已存在"); } @@ -417,9 +420,29 @@ DetlDto dto = new DetlDto(orderDetl.getMatnr(), orderDetl.getBatch()); if (DetlDto.has(list, dto)) { OrderDetl item = orderDetlService.selectItem(order.getId(), orderDetl.getMatnr(), orderDetl.getBatch(),orderDetl.getThreeCode(),orderDetl.getDeadTime()); Double anfme = item.getAnfme(); item.setAnfme(item.getAnfme() + orderDetl.getAnfme()); if (!orderDetlService.updateById(item)) { throw new CoolException("保存订单明细档失败"); } // 流水 -- 新增订单明细 FlowLog flowLog = new FlowLog(); flowLog.setFid(String.valueOf(flowId)); flowLog.setOpType(2L); flowLog.setOrderNo(param.getOrderNo()); flowLog.setThreeCode(orderDetl.getThreeCode()); flowLog.setMatnr(orderDetl.getMatnr()); flowLog.setMaktx(orderDetl.getMaktx()); flowLog.setOrderPrevious(anfme); flowLog.setOrderCurrent(anfme + orderDetl.getAnfme()); flowLog.setOrderChanged(orderDetl.getAnfme()); flowLog.setQtyPrevious(orderDetl.getQty()); flowLog.setQtyCurrent(orderDetl.getQty()); flowLog.setQtyChanged(0.0D); flowLog.setUserId(getUserId()); flowLog.setAppeTime(now); if (!flowLogService.insert(flowLog)) { throw new CoolException("同步半成品调拨单流水记录失败"); } } else { list.add(dto); @@ -434,6 +457,25 @@ orderDetl.setQty(0.0D); if (!orderDetlService.insert(orderDetl)) { throw new CoolException("保存订单明细档失败"); } // 流水 -- 新增订单明细 FlowLog flowLog = new FlowLog(); flowLog.setFid(String.valueOf(flowId)); flowLog.setOpType(1L); flowLog.setOrderNo(param.getOrderNo()); flowLog.setThreeCode(orderDetl.getThreeCode()); flowLog.setMatnr(orderDetl.getMatnr()); flowLog.setMaktx(orderDetl.getMaktx()); flowLog.setOrderPrevious(0.0D); flowLog.setOrderCurrent(orderDetl.getAnfme()); flowLog.setOrderChanged(orderDetl.getAnfme()); flowLog.setQtyPrevious(0.0D); flowLog.setQtyCurrent(0.0D); flowLog.setQtyChanged(0.0D); flowLog.setUserId(getUserId()); flowLog.setAppeTime(now); if (!flowLogService.insert(flowLog)) { throw new CoolException("同步半成品调拨单流水记录失败"); } } } @@ -570,11 +612,33 @@ if (!orderDetlService.insert(orderDetl)) { throw new CoolException("生成半成品调拨单明细档失败"); } // 流水 -- 新增订单明细 FlowLog flowLog = new FlowLog(); flowLog.setFid(String.valueOf(flowId)); flowLog.setOpType(1L); flowLog.setOrderNo(param.getOrderNo()); flowLog.setThreeCode(orderDetl.getThreeCode()); flowLog.setMatnr(orderDetl.getMatnr()); flowLog.setMaktx(orderDetl.getMaktx()); flowLog.setOrderPrevious(0.0D); flowLog.setOrderCurrent(orderDetl.getAnfme()); flowLog.setOrderChanged(orderDetl.getAnfme()); flowLog.setQtyPrevious(0.0D); flowLog.setQtyCurrent(0.0D); flowLog.setQtyChanged(0.0D); flowLog.setUserId(getUserId()); flowLog.setAppeTime(now); if (!flowLogService.insert(flowLog)) { throw new CoolException("同步半成品调拨单流水记录失败"); } } } } } return R.ok("订单添加成功"); } @@ -583,6 +647,7 @@ @Transactional public R formModify(@RequestBody OrderDomainParam param){ Order order = orderService.selectById(param.getOrderId()); long flowId = snowflakeIdWorker.nextId(); int docType = param.getDocType().intValue(); if (order == null || order.getStatus() == 0) { return R.error("订单不存在"); @@ -610,9 +675,29 @@ DetlDto dto = new DetlDto(orderDetl.getMatnr(), orderDetl.getAnfme(), orderDetl.getProcessSts()); if (DetlDto.has(list, dto)) { OrderDetl item = orderDetlService.selectItem(order.getId(), orderDetl.getMatnr(), orderDetl.getBatch(),orderDetl.getThreeCode(),orderDetl.getDeadTime()); Double anfme = item.getAnfme(); item.setAnfme(item.getAnfme() + orderDetl.getAnfme()); if (!orderDetlService.updateById(item)) { throw new CoolException("保存订单明细档失败"); } // 流水 -- 新增订单明细 FlowLog flowLog = new FlowLog(); flowLog.setFid(String.valueOf(flowId)); flowLog.setOpType(2L); flowLog.setOrderNo(param.getOrderNo()); flowLog.setThreeCode(orderDetl.getThreeCode()); flowLog.setMatnr(orderDetl.getMatnr()); flowLog.setMaktx(orderDetl.getMaktx()); flowLog.setOrderPrevious(anfme); flowLog.setOrderCurrent(anfme + orderDetl.getAnfme()); flowLog.setOrderChanged(orderDetl.getAnfme()); flowLog.setQtyPrevious(orderDetl.getQty()); flowLog.setQtyCurrent(orderDetl.getQty()); flowLog.setQtyChanged(0.0D); flowLog.setUserId(getUserId()); flowLog.setAppeTime(now); if (!flowLogService.insert(flowLog)) { throw new CoolException("同步半成品调拨单流水记录失败"); } } else { if (docType == 35 && orderDetl.getProcessSts() == 1) { @@ -638,6 +723,25 @@ if (!orderDetlService.insert(orderDetl)) { throw new CoolException("保存订单明细档失败"); } // 流水 -- 新增订单明细 FlowLog flowLog = new FlowLog(); flowLog.setFid(String.valueOf(flowId)); flowLog.setOpType(2L); flowLog.setOrderNo(param.getOrderNo()); flowLog.setThreeCode(orderDetl.getThreeCode()); flowLog.setMatnr(orderDetl.getMatnr()); flowLog.setMaktx(orderDetl.getMaktx()); flowLog.setOrderPrevious(0.0D); flowLog.setOrderCurrent(orderDetl.getAnfme()); flowLog.setOrderChanged(orderDetl.getAnfme()); flowLog.setQtyPrevious(orderDetl.getQty()); flowLog.setQtyCurrent(orderDetl.getQty()); flowLog.setQtyChanged(0.0D); flowLog.setUserId(getUserId()); flowLog.setAppeTime(now); if (!flowLogService.insert(flowLog)) { throw new CoolException("同步半成品调拨单流水记录失败"); } } } return R.ok("订单修改成功"); src/main/java/com/zy/asrs/entity/FlowLog.java
@@ -22,7 +22,7 @@ * 数据编号 */ @ApiModelProperty(value= "数据编号") @TableId(value = "id", type = IdType.INPUT) @TableId(value = "id", type = IdType.AUTO) private Long id; /** @@ -245,17 +245,25 @@ public String getOpType$() { String otp = ""; if (this.opType == 1L) { otp = "1"; otp = "新增订单"; } else if (this.opType == 2L) { otp = "2"; otp = "修改订单"; } else if (this.opType == 3L) { otp = "3"; } else if (this.opType == 3L) { otp = "3"; } else if (this.opType == 3L) { otp = "3"; otp = "组托入库"; } else if (this.opType == 4L) { otp = "订单出库"; } else if (this.opType == 5L) { otp = "调拨出库"; } else if (this.opType == 6L) { otp = "加工出库"; } else if (this.opType == 7L) { otp = "取消入库"; } else if (this.opType == 8L) { otp = "取消移库"; } else if (this.opType == 9L) { otp = "取消调拨"; } return ""; return otp; } src/main/java/com/zy/asrs/mapper/AgvLocDetlMapper.java
@@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.zy.asrs.entity.AgvLocDetl; import com.zy.asrs.entity.LocDetl; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -25,6 +26,9 @@ @Select("select sum(a.anfme) as sum from agv_loc_detl a left join agv_loc_mast b on a.loc_no = b.loc_no where b.loc_sts = 'F' and a.matnr = #{matnr} AND a.three_code = #{threeCode}") Double selectSumAnfmeByMatnr(@Param("matnr") String matnr,@Param("threeCode") String threeCode); @Select("select * from agv_loc_detl where 1=1 and loc_no = #{locNo} and matnr = #{matnr} and three_code = #{csocode}") AgvLocDetl selectItemByOrderNo(@Param("locNo")String locNo, @Param("matnr")String matnr, @Param("batch")String batch, @Param("csocode")String csocode, @Param("isocode")String isocode); @Select("select sum(a.anfme) as sum from agv_loc_detl a left join agv_loc_mast b on a.loc_no = b.loc_no where b.loc_sts = 'F' and a.matnr = #{matnr} AND a.three_code = #{threeCode} AND a.process_sts = 1") Double selectSumAnfmeByMatnrProcess(@Param("matnr") String matnr,@Param("threeCode") String threeCode); src/main/java/com/zy/asrs/mapper/LocDetlMapper.java
@@ -19,6 +19,8 @@ LocDetl selectItem(@Param("locNo")String locNo, @Param("matnr")String matnr, @Param("batch")String batch,@Param("suppCode")String suppCode); LocDetl selectItemByOrderNo(@Param("locNo")String locNo, @Param("matnr")String matnr, @Param("batch")String batch, @Param("csocode")String csocode, @Param("isocode")String isocode); int deleteItem(@Param("locNo")String locNo, @Param("matnr")String matnr, @Param("batch")String batch, @Param("suppCode")String suppCode, @Param("threeCode")String threeCode, @Param("deadTime")String deadTime); int updateAnfme(@Param("anfme")Double anfme, @Param("locNo")String locNo, @Param("matnr")String matnr, @Param("batch")String batch, @Param("suppCode")String suppCode, @Param("threeCode")String threeCode, @Param("deadTime")String deadTime); src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java
@@ -23,6 +23,8 @@ */ OrderDetl selectItemByOrderNo(@Param("orderNo") String orderNo, @Param("matnr") String matnr, @Param("batch") String batch, @Param("csocode")String csocode, @Param("isocode")String isocode); OrderDetl selectItemByOrderNo2(@Param("orderNo") String orderNo, @Param("matnr") String matnr, @Param("threeCode") String threeCode); OrderDetl selectItemNoneOfBatch(@Param("orderNo")String orderNo, @Param("matnr")String matnr); OrderDetl selectItemOfBatch(@Param("matnr")String matnr, @Param("batch")String batch); src/main/java/com/zy/asrs/service/AgvLocDetlService.java
@@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.service.IService; import com.zy.asrs.entity.AgvLocDetl; import com.zy.asrs.entity.LocDetl; import com.zy.common.model.LocDto; import com.zy.common.model.TaskDto; import org.springframework.web.multipart.MultipartFile; @@ -14,6 +15,8 @@ public void addLocDetlInfo(String locNo, int taskCode); AgvLocDetl selectItem(String locNo, String matnr, String batch, String csocode, String isoCode); public double queryStockAndSetLocDto(String matnr, String batch, String orderNo, List<LocDto> locDtoList, double issued, String csocode, String isoseq, String type); public void updateStock(String sourceLoc, String targetLoc); src/main/java/com/zy/asrs/service/LocDetlService.java
@@ -13,6 +13,8 @@ LocDetl selectItem(String locNo, String matnr, String batch,String suppCode); LocDetl selectItem(String locNo, String matnr, String batch, String csocode, String isoCode); Page<LocDetl> getStockOut(Page<LocDetl> page); /** src/main/java/com/zy/asrs/service/OrderDetlService.java
@@ -18,6 +18,8 @@ OrderDetl selectItem(String orderNo, String matnr, String batch, String csocode, String isoCode); OrderDetl selectItem(String orderNo, String matnr, String threeCode); OrderDetl selectItemNoneOfBatch(String orderNo, String matnr); OrderDetl selectItemOfBatch(String matnr, String batch); src/main/java/com/zy/asrs/service/impl/AgvLocDetlServiceImpl.java
@@ -9,6 +9,7 @@ import com.zy.asrs.entity.AgvLocDetl; import com.zy.asrs.entity.AgvLocMast; import com.zy.asrs.entity.AgvWrkDetl; import com.zy.asrs.entity.LocDetl; import com.zy.asrs.mapper.AgvLocDetlMapper; import com.zy.asrs.service.AgvBasDevpService; import com.zy.asrs.service.AgvLocDetlService; @@ -130,6 +131,11 @@ } @Override public AgvLocDetl selectItem(String locNo, String matnr, String batch, String csocode, String isoCode) { return this.baseMapper.selectItemByOrderNo(locNo, matnr, batch,csocode,isoCode); } @Override public Double getSumAnfmeProcess(String matnr, String threeCode) { return this.baseMapper.selectSumAnfmeByMatnrProcess(matnr, threeCode); } src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Cools; import com.core.common.SnowflakeIdWorker; import com.core.exception.CoolException; import com.zy.asrs.entity.*; import com.zy.asrs.entity.param.LocDetlAdjustParam; @@ -73,6 +74,12 @@ private WrkMastExecuteService wrkMastExecuteService; @Autowired private ConfigService configService; @Autowired private SnowflakeIdWorker snowflakeIdWorker; @Autowired private FlowLogService flowLogService; @Autowired private LocDetlServiceImpl locDetlService; /* @@ -143,6 +150,7 @@ //生成工作档 AgvWrkMast wrkMast = createWrkMast(ioType,wrkSts,sourceLocNo,targetLocNo,containerCode,now,userId,Short.valueOf(containerCode.substring(0,2))); //生成工作档明细 long flowId = snowflakeIdWorker.nextId(); taskDto.getLocDtos().forEach(locDto -> { if (!BaseController.isJSON(locDto.getOrderNo())) { //明细档所需参数 @@ -157,6 +165,36 @@ locDto.getCsocode(), locDto.getIsoseq(), locDto.getProcessSts()); OrderDetl orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch(), locDto.getCsocode(), locDto.getIsoseq()); AgvLocDetl locDetl = agvLocDetlService.selectItem(wrkMast.getSourceLocNo(), locDto.getMatnr(), locDto.getBatch(), locDto.getCsocode(), locDto.getIsoseq()); // 流水 -- 新增订单明细 FlowLog flowLog = new FlowLog(); flowLog.setFid(String.valueOf(flowId)); flowLog.setSpare2(wrkMast.getWrkNo().toString()); flowLog.setLocNo(wrkMast.getSourceLocNo()); flowLog.setSpare1(containerCode); flowLog.setOpType(4L); flowLog.setOrderNo(locDto.getOrderNo()); flowLog.setThreeCode(locDto.getCsocode()); flowLog.setMatnr(locDto.getMatnr()); flowLog.setMaktx(locDto.getMaktx()); flowLog.setOrderPrevious(orderDetl.getAnfme()); flowLog.setOrderCurrent(orderDetl.getAnfme()); flowLog.setOrderChanged(0.0); flowLog.setQtyPrevious(orderDetl.getQty()); flowLog.setQtyCurrent(orderDetl.getQty() + locDto.getAnfme()); flowLog.setQtyChanged(locDto.getAnfme()); flowLog.setLocPrevious(locDetl.getAnfme()); flowLog.setLocCurrent(locDetl.getAnfme() - locDto.getAnfme()); flowLog.setLocChanged(locDto.getAnfme()); flowLog.setUserId(userId); flowLog.setAppeTime(now); if (!flowLogService.insert(flowLog)) { throw new CoolException("同步半成品调拨单流水记录失败"); } }else { List<OrderDto> orderDtoList = JSON.parseArray(locDto.getOrderNo(), OrderDto.class); orderDtoList.forEach(orderDto -> { @@ -174,6 +212,7 @@ locDto.getProcessSts()); }); } //修改订单信息 modifyOrderDetl(locDto, userId); @@ -217,6 +256,7 @@ //生成工作档 AgvWrkMast wrkMast = createWrkMast(ioType,wrkSts,sourceLocNo,targetLocNo,containerCode,now,userId,Short.valueOf(containerCode.substring(0,2))); //生成工作档明细 long flowId = snowflakeIdWorker.nextId(); taskDto.getLocDtos().forEach(locDto -> { if (!BaseController.isJSON(locDto.getOrderNo())) { //明细档所需参数 @@ -231,6 +271,35 @@ locDto.getCsocode(), locDto.getIsoseq(), locDto.getProcessSts()); OrderDetl orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch(), locDto.getCsocode(), locDto.getIsoseq()); AgvLocDetl locDetl = agvLocDetlService.selectItem(wrkMast.getSourceLocNo(), locDto.getMatnr(), locDto.getBatch(), locDto.getCsocode(), locDto.getIsoseq()); FlowLog flowLog = new FlowLog(); flowLog.setFid(String.valueOf(flowId)); flowLog.setSpare2(wrkMast.getWrkNo().toString()); flowLog.setLocNo(wrkMast.getSourceLocNo()); flowLog.setSpare1(containerCode); flowLog.setOpType(6L); flowLog.setOrderNo(locDto.getOrderNo()); flowLog.setThreeCode(locDto.getCsocode()); flowLog.setMatnr(locDto.getMatnr()); flowLog.setMaktx(locDto.getMaktx()); flowLog.setOrderPrevious(orderDetl.getAnfme()); flowLog.setOrderCurrent(orderDetl.getAnfme()); flowLog.setOrderChanged(0.0); flowLog.setQtyPrevious(orderDetl.getQty()); flowLog.setQtyCurrent(orderDetl.getQty() + locDto.getAnfme()); flowLog.setQtyChanged(locDto.getAnfme()); flowLog.setLocPrevious(locDetl.getAnfme()); flowLog.setLocCurrent(locDetl.getAnfme() - locDto.getAnfme()); flowLog.setLocChanged(locDto.getAnfme()); flowLog.setUserId(userId); flowLog.setAppeTime(now); if (!flowLogService.insert(flowLog)) { throw new CoolException("同步半成品调拨单流水记录失败"); } }else { List<OrderDto> orderDtoList = JSON.parseArray(locDto.getOrderNo(), OrderDto.class); orderDtoList.forEach(orderDto -> { @@ -437,7 +506,7 @@ br = 2; } if (agvBasDevp.getLocType1() != br) { throw new CoolException("站点异常!"); throw new CoolException("站点类型和货架类型不符!"); } if (containerType == 40) { locType = 5; @@ -510,8 +579,37 @@ //生成工作档 AgvWrkMast wrkMast = createWrkMast(1,201L,devNo,locNo,containerCode,now,userId, containerType); //生成工作档明细 long flowId = snowflakeIdWorker.nextId(); agvWaitPakinList.forEach(wp -> { createWrkDetlReWrite(wp.getMatnr(),wrkMast.getWrkNo(),wp.getOrderNo(),wp.getBatch(),wp.getAnfme(),wp.getSuppCode(),now,userId,wp.getThreeCode(),wp.getDeadTime(),wp.getProcessSts()); // 流水 -- 新增订单明细 OrderDetl orderDetl = orderDetlService.selectItem(wp.getOrderNo(), wp.getMatnr(), wp.getThreeCode()); FlowLog flowLog = new FlowLog(); flowLog.setFid(String.valueOf(flowId)); flowLog.setSpare2(wrkMast.getWrkNo().toString()); flowLog.setLocNo(locNo); flowLog.setSpare1(containerCode); flowLog.setOpType(3L); flowLog.setOrderNo(wp.getOrderNo()); flowLog.setThreeCode(wp.getThreeCode()); flowLog.setMatnr(wp.getMatnr()); flowLog.setMaktx(wp.getMaktx()); flowLog.setOrderPrevious(orderDetl.getAnfme()); flowLog.setOrderCurrent(orderDetl.getAnfme()); flowLog.setOrderChanged(0.0); flowLog.setQtyPrevious(orderDetl.getQty()-wp.getAnfme()); flowLog.setQtyCurrent(orderDetl.getQty()); flowLog.setQtyChanged(wp.getAnfme()); flowLog.setLocPrevious(0.0D); flowLog.setLocCurrent(wp.getAnfme()); flowLog.setLocChanged(wp.getAnfme()); flowLog.setUserId(userId); flowLog.setAppeTime(now); if (!flowLogService.insert(flowLog)) { throw new CoolException("同步半成品调拨单流水记录失败"); } }); //修改入库通知档状态 agvWaitPakinService.updateIoStatus(containerCode,"Y"); @@ -760,6 +858,7 @@ @Transactional public void cancelWrkMast(String workNo, Long userId,Integer type) { AgvWrkMast wrkMast = agvWrkMastService.selectById(workNo); long flowId = snowflakeIdWorker.nextId(); if (Cools.isEmpty(wrkMast)){ throw new CoolException(workNo+"工作档不存在"); } @@ -825,8 +924,36 @@ // 回滚入库订单 OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("three_code", agvWaitPakin.getThreeCode()).eq("matnr", agvWaitPakin.getMatnr()).eq("order_no", agvWaitPakin.getOrderNo())); orderDetl.setQty(orderDetl.getQty() - agvWaitPakin.getAnfme()); if (!orderDetlService.updateById(orderDetl)) { throw new CoolException("订单回滚失败"); } FlowLog flowLog = new FlowLog(); flowLog.setFid(String.valueOf(flowId)); flowLog.setSpare2(wrkMast.getWrkNo().toString()); flowLog.setLocNo(locNo); flowLog.setSpare1(wrkMast.getBarcode()); flowLog.setOpType(3L); flowLog.setOrderNo(agvWaitPakin.getOrderNo()); flowLog.setThreeCode(agvWaitPakin.getThreeCode()); flowLog.setMatnr(agvWaitPakin.getMatnr()); flowLog.setMaktx(agvWaitPakin.getMaktx()); flowLog.setOrderPrevious(orderDetl.getAnfme()); flowLog.setOrderCurrent(orderDetl.getAnfme()); flowLog.setOrderChanged(0.0); flowLog.setQtyPrevious(orderDetl.getQty()); flowLog.setQtyCurrent(orderDetl.getQty()-agvWaitPakin.getAnfme()); flowLog.setQtyChanged(-agvWaitPakin.getAnfme()); flowLog.setLocPrevious(0.0); flowLog.setLocCurrent(0.0); flowLog.setLocChanged(-agvWaitPakin.getAnfme()); flowLog.setUserId(userId); flowLog.setAppeTime(new Date()); if (!flowLogService.insert(flowLog)) { throw new CoolException("同步半成品调拨单流水记录失败"); } // 删除组托档 if (!agvWaitPakinService.delete(new EntityWrapper<AgvWaitPakin>().eq("supp_code",agvWaitPakin.getSuppCode()).eq("matnr",agvWaitPakin.getMatnr()).eq("three_code",agvWaitPakin.getThreeCode()))) { @@ -857,10 +984,40 @@ OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("three_code", agvLocDetl.getThreeCode()).eq("matnr", agvLocDetl.getMatnr()).eq("order_no", "DB" + agvLocDetl.getOrderNo())); orderDetl.setQty(orderDetl.getQty() + agvLocDetl.getAnfme()); if (!orderDetlService.updateById(orderDetl)) { throw new CoolException("保存工作明细失败"); throw new CoolException("更新订单明细失败"); } FlowLog flowLog = new FlowLog(); flowLog.setFid(String.valueOf(flowId)); flowLog.setSpare2(wrkMast.getWrkNo().toString()); flowLog.setLocNo(locNo); flowLog.setSpare1(wrkMast.getBarcode()); flowLog.setOpType(8L); flowLog.setOrderNo(agvLocDetl.getOrderNo()); flowLog.setThreeCode(agvLocDetl.getThreeCode()); flowLog.setMatnr(agvLocDetl.getMatnr()); flowLog.setMaktx(agvLocDetl.getMaktx()); flowLog.setOrderPrevious(orderDetl.getAnfme()); flowLog.setOrderCurrent(orderDetl.getAnfme()); flowLog.setOrderChanged(0.0); flowLog.setQtyPrevious(orderDetl.getQty()); flowLog.setQtyCurrent(orderDetl.getQty() + agvLocDetl.getAnfme()); flowLog.setQtyChanged(-agvLocDetl.getAnfme()); flowLog.setLocPrevious(0.0); flowLog.setLocCurrent(agvLocDetl.getAnfme()); flowLog.setLocChanged(agvLocDetl.getAnfme()); flowLog.setUserId(userId); flowLog.setAppeTime(new Date()); if (!flowLogService.insert(flowLog)) { throw new CoolException("同步半成品调拨单流水记录失败"); } } } else { } // 自动调拨出库取消 } else if(wrkMast.getIoType() == 108 || wrkMast.getIoType() == 111 || wrkMast.getIoType() == 112) { if (wrkMast.getIoType() == 112) { @@ -895,6 +1052,33 @@ if (!orderDetlService.update(orderDetl,new EntityWrapper<OrderDetl>().eq("order_no","DB" + agvLocDetl.getOrderNo()).eq("matnr", agvLocDetl.getMatnr()).eq("three_code",agvLocDetl.getThreeCode()))){ throw new CoolException("修改订单明细失败,请联系管理员"+agvLocDetl.getOrderNo()+agvLocDetl.getMatnr()); } FlowLog flowLog = new FlowLog(); flowLog.setFid(String.valueOf(flowId)); flowLog.setSpare2(wrkMast.getWrkNo().toString()); flowLog.setLocNo(locNo); flowLog.setSpare1(wrkMast.getBarcode()); flowLog.setOpType(9L); flowLog.setOrderNo(agvLocDetl.getOrderNo()); flowLog.setThreeCode(agvLocDetl.getThreeCode()); flowLog.setMatnr(agvLocDetl.getMatnr()); flowLog.setMaktx(agvLocDetl.getMaktx()); flowLog.setOrderPrevious(orderDetl.getAnfme()); flowLog.setOrderCurrent(orderDetl.getAnfme()); flowLog.setOrderChanged(0.0); flowLog.setQtyPrevious(orderDetl.getQty()); flowLog.setQtyCurrent(orderDetl.getQty() - agvLocDetl.getAnfme()); flowLog.setQtyChanged(- agvLocDetl.getAnfme()); flowLog.setLocPrevious(0.0); flowLog.setLocCurrent(agvLocDetl.getAnfme()); flowLog.setLocChanged(agvLocDetl.getAnfme()); flowLog.setUserId(userId); flowLog.setAppeTime(new Date()); if (!flowLogService.insert(flowLog)) { throw new CoolException("同步半成品调拨单流水记录失败"); } } //出库取消 } else { src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java
@@ -218,6 +218,11 @@ } @Override public LocDetl selectItem(String locNo, String matnr, String batch, String csocode, String isoCode) { return this.baseMapper.selectItemByOrderNo(locNo, matnr, batch,csocode,isoCode); } @Override public List<LocDetl> searchByLike(String orderNo, String matnr, String maktx, String specs, String locNo) { if (Cools.isEmpty(orderNo) && Cools.isEmpty(matnr) && Cools.isEmpty(maktx) && Cools.isEmpty(specs) && Cools.isEmpty(locNo)) { return new ArrayList<LocDetl>(); src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java
@@ -48,6 +48,11 @@ } @Override public OrderDetl selectItem(String orderNo, String matnr, String threeCode) { return this.baseMapper.selectItemByOrderNo2(orderNo, matnr, threeCode); } @Override public OrderDetl selectItemNoneOfBatch(String orderNo, String matnr) { return this.baseMapper.selectItemNoneOfBatch(orderNo, matnr); } src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -84,6 +84,10 @@ private DocTypeService docTypeService; @Autowired private AgvWaitPakinService agvWaitPakinService; @Autowired private AgvLocDetlService agvLocDetlService; @Autowired private FlowLogService flowLogService; @Override @Transactional @@ -1119,10 +1123,12 @@ throw new CoolException("当前工作状态无法取消"); } // 订单关联 long flowId = snowflakeIdWorker.nextId(); List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo()); for (WrkDetl wrkDetl : wrkDetls) { if (!Cools.isEmpty(wrkDetl.getOrderNo())) { if (!BaseController.isJSON(wrkDetl.getOrderNo())) { if (!orderDetlService.decrease(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getAnfme(),wrkDetl.getThreeCode(),wrkDetl.getDeadTime())) { throw new CoolException("订单数据回滚失败"); } @@ -1150,6 +1156,7 @@ } } } } // 取消操作人员记录 wrkMast.setManuType("手动取消"); src/main/resources/mapper/LocDetlMapper.xml
@@ -76,6 +76,22 @@ <include refid="batchSeq"></include> </select> <select id="selectItemByOrderNo" resultMap="BaseResultMap"> select * from asr_loc_detl where 1=1 and loc_no = #{locNo} and matnr = #{matnr} <if test="batch!=null and batch!='' "> and batch = #{batch} </if> <if test="csocode!=null and csocode!='' "> and three_code = #{csocode} </if> <if test="isocode!=null and isocode!='' "> and dead_time = #{isocode} </if> </select> <delete id="deleteItem"> delete from asr_loc_detl where 1=1 src/main/resources/mapper/OrderDetlMapper.xml
@@ -96,6 +96,17 @@ </if> </select> <select id="selectItemByOrderNo2" resultMap="BaseResultMap"> select * from man_order_detl where 1=1 and order_no = #{orderNo} and matnr = #{matnr} <if test="threeCode!=null and threeCode!='' "> and three_code = #{threeCode} </if> </select> <select id="selectItemNoneOfBatch" resultMap="BaseResultMap"> select top 1 * from man_order_detl where 1=1 src/main/webapp/static/js/flowLog/flowLog.js
@@ -20,14 +20,17 @@ toolbar: '#toolbar', cellMinWidth: 50, height: 'full-120', even: true, cols: [[ {type: 'checkbox'} {type: 'checkbox', merge: ['fid']} ,{field: 'id', align: 'center',title: '数据编号',hide: true} ,{field: 'fid', align: 'center',title: '流水号'} ,{field: 'opType', align: 'center',title: '操作类型'} ,{field: 'fid', align: 'center',title: '流水号',merge: true} ,{field: 'spare2', align: 'center',title: '工作号'} ,{field: 'opType$', align: 'center',title: '操作类型'} ,{field: 'orderNo', align: 'center',title: '订单号'} ,{field: 'threeCode', align: 'center',title: '销售单号'} ,{field: 'locNo', align: 'center',title: '库位号'} ,{field: 'spare1', align: 'center',title: '货架码'} ,{field: 'matnr', align: 'center',title: '物料号'} ,{field: 'maktx', align: 'center',title: '物料名称'} ,{field: 'orderPrevious', align: 'center',title: '订单数量变更前'} src/main/webapp/views/flowLog/flowLog.html
@@ -19,19 +19,54 @@ <div class="layui-form-item"> <div class="layui-inline"> <div class="layui-input-inline"> <input class="layui-input" type="text" name="id" placeholder="编号" autocomplete="off"> </div> </div> <div class="layui-inline" style="width: 300px"> <div class="layui-input-inline"> <input class="layui-input layui-laydate-range" name="create_time" type="text" placeholder="起始时间 - 终止时间" autocomplete="off" style="width: 300px"> <input class="layui-input" type="text" name="fid" placeholder="流水号" autocomplete="off"> </div> </div> <div class="layui-inline"> <div class="layui-input-inline"> <input class="layui-input" type="text" name="condition" placeholder="请输入" autocomplete="off"> <input class="layui-input" type="text" name="spare2" placeholder="工作号" autocomplete="off"> </div> </div> <div class="layui-inline"> <div class="layui-input-inline"> <input class="layui-input" type="text" name="order_no" placeholder="订单号" autocomplete="off"> </div> </div> <div class="layui-inline"> <div class="layui-input-inline"> <input class="layui-input" type="text" name="three_code" placeholder="销售单号" autocomplete="off"> </div> </div> <div class="layui-inline"> <div class="layui-input-inline"> <input class="layui-input" type="text" name="loc_no" placeholder="库位号" autocomplete="off"> </div> </div> <div class="layui-inline"> <div class="layui-input-inline"> <input class="layui-input" type="text" name="spare1" placeholder="货架码" autocomplete="off"> </div> </div> <div class="layui-inline"> <div class="layui-input-inline"> <input class="layui-input" type="text" name="matnr" placeholder="物料号" autocomplete="off"> </div> </div> <div class="layui-inline"> <div class="layui-input-inline"> <input class="layui-input" type="text" name="userId" placeholder="操作员" autocomplete="off"> </div> </div> <!-- <div class="layui-inline" style="width: 300px">--> <!-- <div class="layui-input-inline">--> <!-- <input class="layui-input layui-laydate-range" name="create_time" type="text" placeholder="起始时间 - 终止时间" autocomplete="off" style="width: 300px">--> <!-- </div>--> <!-- </div>--> <!-- <div class="layui-inline">--> <!-- <div class="layui-input-inline">--> <!-- <input class="layui-input" type="text" name="condition" placeholder="请输入" autocomplete="off">--> <!-- </div>--> <!-- </div>--> <div class="layui-inline">  <button class="layui-btn icon-btn" lay-filter="search" lay-submit> <i class="layui-icon"></i>搜索 @@ -84,6 +119,7 @@ <input class="layui-input" name="fid" placeholder="请输入流水号"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">操作类型: </label> <div class="layui-input-block">