diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/bo/GoodsNum.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/bo/GoodsNum.java new file mode 100644 index 000000000..67ed0867c --- /dev/null +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/bo/GoodsNum.java @@ -0,0 +1,19 @@ +package com.cf.imes.module.executor.controller.admin.plan.bo; + + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class GoodsNum { + + @Schema(description = "生产单ID") + private Long orderId; + + + @Schema(description = "商品数量") + private Long goodsNum; + +} diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/PlanSaveReqVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/PlanSaveReqVO.java index 29a61fb0e..68c81aa09 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/PlanSaveReqVO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/PlanSaveReqVO.java @@ -52,8 +52,6 @@ public class PlanSaveReqVO { @Schema(description = "生产单id与商品id 列表",requiredMode = Schema.RequiredMode.REQUIRED) private List itemList; - @Schema(description = "商品数量") - private Long goodsNum; @Schema(description = "备注") private String remark; @@ -69,10 +67,15 @@ public class PlanSaveReqVO { @Valid @Data public static class Item { + + @Schema(description = "生产单的商品id") + @NotNull + private Long id; + @Schema(description = "生产单id") @NotNull private Long orderId; - @Schema(description = "商品id") + @Schema(description = "板材库大板id") @NotNull private Long goodsId; } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/plate/PlateMapper.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/plate/PlateMapper.java index e8e60e3f5..7492ddadf 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/plate/PlateMapper.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/plate/PlateMapper.java @@ -13,6 +13,7 @@ import com.cf.imes.framework.common.pojo.PageResult; import com.cf.imes.framework.common.util.object.BeanUtils; import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX; import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX; +import com.cf.imes.module.executor.controller.admin.plan.bo.GoodsNum; import com.cf.imes.module.executor.controller.admin.plan.bo.OrderIds; import com.cf.imes.module.executor.controller.admin.plan.vo.*; import com.cf.imes.module.executor.dal.dataobject.orderGroup.OrderGroupDO; @@ -135,4 +136,6 @@ public interface PlateMapper extends BaseMapperX { void deletedById(@Param("plateIds") List plateIds, @Param("organId") Long organId); + List selectGoodsNum(@Param("orderIds") List orderIds,@Param("organId") Long organId); + } \ No newline at end of file diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/PlanServiceImpl.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/PlanServiceImpl.java index 9489b0064..29d91d7c2 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/PlanServiceImpl.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/PlanServiceImpl.java @@ -15,6 +15,7 @@ import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX; import com.cf.imes.framework.mybatis.core.query.MPJLambdaWrapperX; import com.cf.imes.framework.mybatis.core.query.QueryWrapperX; import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderRespVO; +import com.cf.imes.module.executor.controller.admin.plan.bo.GoodsNum; import com.cf.imes.module.executor.controller.admin.plan.bo.OrderIds; import com.cf.imes.module.executor.controller.admin.plate.vo.PlateRespVO; import com.cf.imes.module.executor.dal.dataobject.goods.GoodsDO; @@ -107,14 +108,28 @@ public class PlanServiceImpl implements PlanService { plan.setIsPay(Boolean.FALSE); plan.setSort(0L); plan.setPlanNo(identifierGenerator.nextId(null).toString()); - String orderNos = itemList.stream().map(i -> i.getOrderId()).distinct().collect(Collectors.toList()).toString(); + String orderNos = itemList.stream().map(PlanSaveReqVO.Item::getOrderId).distinct().toList().toString(); plan.setOrderNos(orderNos); planMapper.insert(plan); // 修改对应的生产单的状态为 生产中 List orderIds = JSON.parseArray(orderNos).toJavaList(Long.class); - List orderDOS = orderMapper.selectBatchIds(orderIds).stream().map(m -> m.setStatus(OrderStatusEnum.IN_PRODUCTION.getStatus())).collect(Collectors.toList()); - orderMapper.updateBatch(orderDOS); + + List goodsNums = plateMapper.selectGoodsNum(orderIds, getUserOrganId()); + + for (Long orderId : orderIds) { + + // 传入的生产单的大板数量 + int size1 = itemList.stream().filter(f -> Objects.equals(f.getOrderId(), orderId)).map(PlanSaveReqVO.Item::getGoodsId).distinct().toList().size(); + // 当前生产单对应的大板数量 + List list = goodsNums.stream().filter(f -> Objects.equals(f.getOrderId(), orderId)).map(GoodsNum::getGoodsNum).toList(); + + if(size1 == list.get(0)){ + OrderDO orderDO = orderMapper.selectById(orderId).setStatus(OrderStatusEnum.IN_PRODUCTION.getStatus()); + orderMapper.updateById(orderDO); + } + } + Long planId = plan.getId(); @@ -426,6 +441,10 @@ public class PlanServiceImpl implements PlanService { List orderIds = orderMapper.selectOrderIds(queryWrapperX); + if(orderIds.isEmpty()){ + return new PageResult<>(); + } + List orderIdsList = plateMapper.selectOrderIds(orderIds,getUserOrganId()); diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/plate/PlateMapper.xml b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/plate/PlateMapper.xml index 9d79b0e3d..3d0c38939 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/plate/PlateMapper.xml +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/plate/PlateMapper.xml @@ -72,7 +72,7 @@ and op.goods_id in - (#{item.goodsId}) + (#{item.id}) @@ -452,4 +452,34 @@ order by a.order_id + + + \ No newline at end of file