zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/enums/LocBindType.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/WorkServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
zy-asrs-wms/src/main/java/com/zy/asrs/wms/utils/OrderUtils.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/enums/LocBindType.java
New file @@ -0,0 +1,65 @@ package com.zy.asrs.wms.asrs.entity.enums; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.zy.asrs.framework.common.SpringUtils; import com.zy.asrs.framework.exception.CoolException; import com.zy.asrs.wms.asrs.entity.LocType; import com.zy.asrs.wms.asrs.service.LocTypeService; import java.util.ArrayList; import java.util.List; public enum LocBindType { HEIGHT("locTypeHeight", "高低类型"), WEIGHT("locTypeWeight", "宽窄类型"), ; public String flag; public String desc; LocBindType(String flag, String desc) { this.flag = flag; this.desc = desc; } public long val() { LocTypeService service = SpringUtils.getBean(LocTypeService.class); LocType locType = service.getOne(new LambdaQueryWrapper<LocType>().eq(LocType::getFlag, flag)); if (locType == null) { throw new CoolException("LocType Error!"); } return locType.getId(); } public List<Long> list() { LocTypeService service = SpringUtils.getBean(LocTypeService.class); LocType locType = service.getOne(new LambdaQueryWrapper<LocType>().eq(LocType::getFlag, flag)); if (locType == null) { throw new CoolException("LocType Error!"); } List<LocType> list = service.list(new LambdaQueryWrapper<LocType>().eq(LocType::getParentId, locType.getId())); ArrayList<Long> longs = new ArrayList<>(); for (LocType type : list) { longs.add(type.getId()); } if (longs.isEmpty()) { throw new CoolException("LocType Error!"); } return longs; } public static LocBindType get(String flag) { for (LocBindType value : LocBindType.values()) { if (flag.equals(value.flag)) { return value; } } return null; } } zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/WorkServiceImpl.java
@@ -8,6 +8,7 @@ import com.zy.asrs.wms.asrs.entity.param.GeneratePakInParam; import com.zy.asrs.wms.asrs.service.*; import com.zy.asrs.wms.utils.LocUtils; import com.zy.asrs.wms.utils.OrderUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -57,6 +58,8 @@ private LocTypeService locTypeService; @Autowired private MatService matService; @Autowired private OrderUtils orderUtils; @Override public String generateTaskNo(Long taskType) { @@ -496,19 +499,7 @@ //回滚订单 for (TaskDetl taskDetl : taskDetls) { if (taskDetl.getDetlId() != null) { OrderDetl orderDetl = orderDetlService.getById(taskDetl.getDetlId()); if(orderDetl == null){ throw new CoolException("订单明细不存在"); } //回滚工作数量 orderDetl.setWorkQty(orderDetl.getWorkQty() - taskDetl.getAnfme()); orderDetl.setUpdateTime(new Date()); boolean orderDetlUpdate = orderDetlService.updateById(orderDetl); if(!orderDetlUpdate){ throw new CoolException("工作数量回滚失败"); } orderUtils.updateWorkQty(taskDetl.getDetlId(), taskDetl.getAnfme(), false); } //入库回滚组托通知档 @@ -586,7 +577,7 @@ } //获取源库位高度 LocTypeBind locTypeBind = locTypeBindService.getOne(new LambdaQueryWrapper<LocTypeBind>().eq(LocTypeBind::getLocId, originLoc.getId())); LocTypeBind locTypeBind = locTypeBindService.getOne(new LambdaQueryWrapper<LocTypeBind>().eq(LocTypeBind::getLocId, originLoc.getId()).in(LocTypeBind::getTypeId, LocBindType.HEIGHT.list())); if(locTypeBind == null){ throw new CoolException("库位类型不存在"); } zy-asrs-wms/src/main/java/com/zy/asrs/wms/utils/OrderUtils.java
@@ -1,5 +1,6 @@ package com.zy.asrs.wms.utils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.zy.asrs.framework.exception.CoolException; import com.zy.asrs.wms.asrs.entity.Order; import com.zy.asrs.wms.asrs.entity.OrderDetl; @@ -11,6 +12,7 @@ import org.springframework.transaction.annotation.Transactional; import java.util.Date; import java.util.List; @Component public class OrderUtils { @@ -22,6 +24,11 @@ @Transactional public void updateWorkQty(Long orderDetlId, Double qty) { updateWorkQty(orderDetlId, qty, true); } @Transactional public void updateWorkQty(Long orderDetlId, Double qty, boolean increase) { OrderDetl orderDetl = orderDetlService.getById(orderDetlId); if(orderDetl == null) { throw new CoolException("订单明细不存在"); @@ -40,14 +47,30 @@ } Double workQty = orderDetl.getWorkQty(); if (increase) { orderDetl.setWorkQty(workQty + qty); }else { orderDetl.setWorkQty(workQty - qty); } orderDetl.setUpdateTime(new Date()); if (!orderDetlService.updateById(orderDetl)) { throw new CoolException("订单明细更新失败"); } List<OrderDetl> orderDetls = orderDetlService.list(new LambdaQueryWrapper<OrderDetl>().eq(OrderDetl::getOrderId, order.getId())); boolean flag = false; for (OrderDetl detl : orderDetls) { if ((detl.getQty() + detl.getWorkQty()) > 0) { flag = true; break; } } if (flag) { order.setOrderSettle(OrderSettleType.WORKING.val()); } else { order.setOrderSettle(OrderSettleType.WAIT.val()); } order.setUpdateTime(new Date()); if(!orderService.updateById(order)) { throw new CoolException("订单更新失败");