yzc 2 жил өмнө
parent
commit
c9c268a4ab
17 өөрчлөгдсөн 196 нэмэгдсэн , 39 устгасан
  1. 2 2
      hx-mes/src/main/java/com/fjhx/mes/controller/border/BorderOfLineController.java
  2. 3 1
      hx-mes/src/main/java/com/fjhx/mes/entity/production/po/ProductionPlan.java
  3. 1 1
      hx-mes/src/main/java/com/fjhx/mes/entity/production/po/ProductionTask.java
  4. 4 0
      hx-mes/src/main/java/com/fjhx/mes/entity/production/vo/ProductionPlanVo.java
  5. 3 1
      hx-mes/src/main/java/com/fjhx/mes/entity/work/po/WorkOrder.java
  6. 4 0
      hx-mes/src/main/java/com/fjhx/mes/entity/work/vo/WorkOrderVo.java
  7. 2 1
      hx-mes/src/main/java/com/fjhx/mes/service/border/BorderOfLineService.java
  8. 13 9
      hx-mes/src/main/java/com/fjhx/mes/service/border/impl/BorderOfLineServiceImpl.java
  9. 44 10
      hx-mes/src/main/java/com/fjhx/mes/service/completion/impl/CompletionInfoServiceImpl.java
  10. 34 7
      hx-mes/src/main/java/com/fjhx/mes/service/production/impl/ProductionPlanServiceImpl.java
  11. 9 0
      hx-mes/src/main/java/com/fjhx/mes/service/production/impl/ProductionReportingServiceImpl.java
  12. 9 0
      hx-mes/src/main/java/com/fjhx/mes/service/production/impl/ProductionTaskServiceImpl.java
  13. 22 6
      hx-mes/src/main/java/com/fjhx/mes/service/work/impl/WorkOrderServiceImpl.java
  14. 3 0
      hx-wms/src/main/java/com/fjhx/wms/entity/stock/dto/StockWaitDto.java
  15. 5 0
      hx-wms/src/main/java/com/fjhx/wms/service/stock/StockService.java
  16. 1 0
      hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockServiceImpl.java
  17. 37 1
      hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockWaitServiceImpl.java

+ 2 - 2
hx-mes/src/main/java/com/fjhx/mes/controller/border/BorderOfLineController.java

@@ -40,8 +40,8 @@ public class BorderOfLineController {
      * 线边管理明细
      */
     @PostMapping("/detail")
-    public BorderOfLineVo detail(@RequestBody BaseSelectDto dto) {
-        return borderOfLineService.detail(dto.getId());
+    public BorderOfLineVo detail(@RequestBody BorderOfLineDto dto) {
+        return borderOfLineService.detail(dto);
     }
 
     /**

+ 3 - 1
hx-mes/src/main/java/com/fjhx/mes/entity/production/po/ProductionPlan.java

@@ -3,6 +3,8 @@ package com.fjhx.mes.entity.production.po;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ruoyi.common.core.domain.BasePo;
 import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.math.BigDecimal;
 import java.util.Date;
 import lombok.Getter;
 import lombok.Setter;
@@ -45,7 +47,7 @@ public class ProductionPlan extends BasePo {
     /**
      * 计划数量
      */
-    private Long quantity;
+    private BigDecimal quantity;
 
     /**
      * 计划状态 0未开始 1进行中 2完成

+ 1 - 1
hx-mes/src/main/java/com/fjhx/mes/entity/production/po/ProductionTask.java

@@ -45,7 +45,7 @@ public class ProductionTask extends BasePo {
     /**
      * 任务状态
      */
-    private String status;
+    private Integer status;
 
     /**
      * 完成期限

+ 4 - 0
hx-mes/src/main/java/com/fjhx/mes/entity/production/vo/ProductionPlanVo.java

@@ -4,6 +4,7 @@ import com.fjhx.mes.entity.production.po.ProductionPlan;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -22,4 +23,7 @@ public class ProductionPlanVo extends ProductionPlan {
     /**生产任务列表*/
     private List<ProductionTaskVo> productionTaskList;
 
+    /**待排程数量*/
+    private BigDecimal remainingQuantity;
+
 }

+ 3 - 1
hx-mes/src/main/java/com/fjhx/mes/entity/work/po/WorkOrder.java

@@ -2,6 +2,8 @@ package com.fjhx.mes.entity.work.po;
 
 import com.ruoyi.common.core.domain.BasePo;
 import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.math.BigDecimal;
 import java.util.Date;
 import lombok.Getter;
 import lombok.Setter;
@@ -37,7 +39,7 @@ public class WorkOrder extends BasePo {
     /**
      * 工单数量
      */
-    private Long quantity;
+    private BigDecimal quantity;
 
     /**
      * 说明

+ 4 - 0
hx-mes/src/main/java/com/fjhx/mes/entity/work/vo/WorkOrderVo.java

@@ -5,6 +5,7 @@ import com.fjhx.mes.entity.work.po.WorkOrder;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -25,4 +26,7 @@ public class WorkOrderVo extends WorkOrder {
     /**生产计划列表*/
     private List<ProductionPlan> productionPlans;
 
+    /**待排程数量*/
+    private BigDecimal remainingQuantity;
+
 }

+ 2 - 1
hx-mes/src/main/java/com/fjhx/mes/service/border/BorderOfLineService.java

@@ -1,6 +1,7 @@
 package com.fjhx.mes.service.border;
 
 import com.fjhx.mes.entity.border.po.BorderOfLine;
+import com.ruoyi.common.core.domain.BaseSelectDto;
 import com.ruoyi.common.core.service.BaseService;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.mes.entity.border.vo.BorderOfLineVo;
@@ -26,7 +27,7 @@ public interface BorderOfLineService extends BaseService<BorderOfLine> {
     /**
      * 线边管理明细
      */
-    BorderOfLineVo detail(Long id);
+    BorderOfLineVo detail(BorderOfLineDto dto);
 
     /**
      * 线边管理新增

+ 13 - 9
hx-mes/src/main/java/com/fjhx/mes/service/border/impl/BorderOfLineServiceImpl.java

@@ -14,6 +14,7 @@ import com.fjhx.mes.service.border.BorderOfLineService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.wms.entity.stock.po.StockWait;
 import com.fjhx.wms.service.stock.StockWaitService;
+import com.ruoyi.common.core.domain.BaseSelectDto;
 import org.checkerframework.checker.units.qual.A;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -54,6 +55,7 @@ public class BorderOfLineServiceImpl extends ServiceImpl<BorderOfLineMapper, Bor
     public Page<BorderOfLineVo> getPage(BorderOfLineSelectDto dto) {
         IWrapper<BorderOfLine> wrapper = getWrapper();
         wrapper.orderByDesc("bol", BorderOfLine::getId);
+        wrapper.ne(BorderOfLine::getQuantity,0);
         Page<BorderOfLineVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
         List<BorderOfLineVo> records = page.getRecords();
         //赋值产品信息
@@ -87,15 +89,17 @@ public class BorderOfLineServiceImpl extends ServiceImpl<BorderOfLineMapper, Bor
     }
 
     @Override
-    public BorderOfLineVo detail(Long id) {
-        BorderOfLine BorderOfLine = this.getById(id);
-        BorderOfLineVo result = BeanUtil.toBean(BorderOfLine, BorderOfLineVo.class);
-        ProductInfo productInfo = productInfoService.getById(result.getProductId());
-        if(ObjectUtil.isNotEmpty(productInfo)){
-            result.setProductName(productInfo.getName());
-            ProductClassify productClassify = productClassifyService.getById(productInfo.getProductClassifyId());
-            if(ObjectUtil.isNotEmpty(productClassify)){
-                result.setProductTypeName(productClassify.getName());
+    public BorderOfLineVo detail(BorderOfLineDto dto) {
+        BorderOfLine borderOfLine = getOne(q -> q.eq(BorderOfLine::getId, dto.getId()).or().eq(BorderOfLine::getProductId, dto.getProductId()));
+        BorderOfLineVo result = BeanUtil.toBean(borderOfLine, BorderOfLineVo.class);
+        if(ObjectUtil.isNotEmpty(result)) {
+            ProductInfo productInfo = productInfoService.getById(result.getProductId());
+            if (ObjectUtil.isNotEmpty(productInfo)) {
+                result.setProductName(productInfo.getName());
+                ProductClassify productClassify = productClassifyService.getById(productInfo.getProductClassifyId());
+                if (ObjectUtil.isNotEmpty(productClassify)) {
+                    result.setProductTypeName(productClassify.getName());
+                }
             }
         }
         return result;

+ 44 - 10
hx-mes/src/main/java/com/fjhx/mes/service/completion/impl/CompletionInfoServiceImpl.java

@@ -1,25 +1,29 @@
 package com.fjhx.mes.service.completion.impl;
 
+import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.item.entity.product.po.ProductInfo;
 import com.fjhx.item.service.product.ProductInfoService;
+import com.fjhx.mes.entity.completion.dto.CompletionInfoDto;
+import com.fjhx.mes.entity.completion.dto.CompletionInfoSelectDto;
 import com.fjhx.mes.entity.completion.po.CompletionInfo;
+import com.fjhx.mes.entity.completion.vo.CompletionInfoVo;
+import com.fjhx.mes.entity.production.po.ProductionPlan;
 import com.fjhx.mes.entity.production.po.ProductionTask;
 import com.fjhx.mes.entity.production.vo.ProductionTaskVo;
+import com.fjhx.mes.entity.work.po.WorkOrder;
 import com.fjhx.mes.mapper.completion.CompletionInfoMapper;
 import com.fjhx.mes.service.completion.CompletionInfoService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.mes.service.production.ProductionPlanService;
 import com.fjhx.mes.service.production.ProductionTaskService;
+import com.fjhx.mes.service.work.WorkOrderService;
 import com.fjhx.wms.entity.stock.po.StockWait;
 import com.fjhx.wms.service.stock.StockWaitService;
+import com.ruoyi.common.utils.wrapper.IWrapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.fjhx.mes.entity.completion.vo.CompletionInfoVo;
-import com.fjhx.mes.entity.completion.dto.CompletionInfoSelectDto;
-import com.ruoyi.common.utils.wrapper.IWrapper;
-import com.fjhx.mes.entity.completion.dto.CompletionInfoDto;
-import cn.hutool.core.bean.BeanUtil;
 
 import java.math.BigDecimal;
 import java.util.List;
@@ -43,6 +47,10 @@ public class CompletionInfoServiceImpl extends ServiceImpl<CompletionInfoMapper,
     ProductionTaskService productionTaskService;
     @Autowired
     ProductInfoService productInfoService;
+    @Autowired
+    ProductionPlanService productionPlanService;
+    @Autowired
+    WorkOrderService workOrderService;
 
     @Override
     public Page<CompletionInfoVo> getPage(CompletionInfoSelectDto dto) {
@@ -56,7 +64,7 @@ public class CompletionInfoServiceImpl extends ServiceImpl<CompletionInfoMapper,
             Map<Long, ProductionTaskVo> productionTaskVoMap = productionTaskVoList.stream().collect(Collectors.groupingBy(ProductionTaskVo::getId,
                     Collectors.collectingAndThen(Collectors.toList(), value -> value.get(0))));
             List<Long> productIds = productionTaskVoList.stream().map(ProductionTaskVo::getProductId).collect(Collectors.toList());
-            if(ObjectUtil.isNotEmpty(productIds)) {
+            if (ObjectUtil.isNotEmpty(productIds)) {
                 List<ProductInfo> productInfos = productInfoService.listByIds(productIds);
                 Map<Long, ProductInfo> productInfoMap = productInfos.stream().collect(Collectors.groupingBy(ProductInfo::getId,
                         Collectors.collectingAndThen(Collectors.toList(), value -> value.get(0))));
@@ -65,7 +73,7 @@ public class CompletionInfoServiceImpl extends ServiceImpl<CompletionInfoMapper,
                     if (ObjectUtil.isNotEmpty(productionTaskVo)) {
                         //赋值产品名
                         ProductInfo productInfo = productInfoMap.get(productionTaskVo.getProductId());
-                        if(ObjectUtil.isNotEmpty(productInfo)){
+                        if (ObjectUtil.isNotEmpty(productInfo)) {
                             completionInfoVo.setProductName(productInfo.getName());
                         }
                         //复制任务编号
@@ -83,7 +91,7 @@ public class CompletionInfoServiceImpl extends ServiceImpl<CompletionInfoMapper,
         CompletionInfoVo result = BeanUtil.toBean(CompletionInfo, CompletionInfoVo.class);
         Long productionTaskId = result.getProductionTaskId();
         ProductionTaskVo productionTask = productionTaskService.detail(productionTaskId);
-        if(ObjectUtil.isNotEmpty(productionTask)) {
+        if (ObjectUtil.isNotEmpty(productionTask)) {
             result.setProductionTaskCode(productionTask.getCode());
             result.setProductName(productionTask.getProductName());
             result.setProductionTaskQuantity(productionTask.getQuantity());
@@ -108,6 +116,32 @@ public class CompletionInfoServiceImpl extends ServiceImpl<CompletionInfoMapper,
         stockWait.setReceiptQuantity(BigDecimal.ZERO);
         stockWait.setStatus(0);
         stockWaitService.save(stockWait);
+        //判断完工数量是否等于任务数量如果是修改任务状态为完成
+        if (completionInfoDto.getQuantity().compareTo(detail.getQuantity()) >= 0) {
+            detail.setStatus(2);
+            productionTaskService.updateById(detail);
+
+            //检查生产计划下的任务完成数量是否等于计划数量是就修改状态 生产计划状态
+            ProductionPlan productionPlan = productionPlanService.getById(detail.getId());
+            List<ProductionTask> productionTaskList = productionTaskService.list(q -> q.eq(ProductionTask::getProductionPlanId,
+                    detail.getProductionPlanId()).eq(ProductionTask::getStatus, 2));
+            BigDecimal count = productionTaskList.stream().map(ProductionTask::getQuantity)
+                    .reduce(BigDecimal.ZERO, BigDecimal::add);
+            if (productionPlan.getQuantity().compareTo(count) >= 0) {
+                productionPlan.setStatus(2);
+                productionPlanService.updateById(productionPlan);
+            }
+            //检查工单下的计划完成数量是否等于工单数量是就修改状态 工单状态
+            List<ProductionPlan> productionPlanList = productionPlanService.list(q -> q.eq(ProductionPlan::getWorkOrderId,
+                    productionPlan.getWorkOrderId()).eq(ProductionPlan::getStatus, 2));
+            BigDecimal count1 = productionPlanList.stream().map(ProductionPlan::getQuantity)
+                    .reduce(BigDecimal.ZERO, BigDecimal::add);
+            WorkOrder workOrder = workOrderService.getById(productionPlan.getWorkOrderId());
+            if (workOrder.getQuantity().compareTo(count1) >= 0) {
+                workOrder.setStatus(2);
+                workOrderService.updateById(workOrder);
+            }
+        }
     }
 
     @Override

+ 34 - 7
hx-mes/src/main/java/com/fjhx/mes/service/production/impl/ProductionPlanServiceImpl.java

@@ -7,6 +7,7 @@ import com.fjhx.mes.entity.production.po.ProductionPlan;
 import com.fjhx.mes.entity.production.po.ProductionTask;
 import com.fjhx.mes.entity.production.vo.ProductionTaskVo;
 import com.fjhx.mes.entity.work.po.WorkOrder;
+import com.fjhx.mes.entity.work.vo.WorkOrderVo;
 import com.fjhx.mes.mapper.production.ProductionPlanMapper;
 import com.fjhx.mes.service.production.ProductionPlanService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -22,7 +23,9 @@ import com.fjhx.mes.entity.production.dto.ProductionPlanSelectDto;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import com.fjhx.mes.entity.production.dto.ProductionPlanDto;
 import cn.hutool.core.bean.BeanUtil;
+import org.springframework.transaction.annotation.Transactional;
 
+import java.math.BigDecimal;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -34,7 +37,7 @@ import java.util.stream.Stream;
  * 生产计划 服务实现类
  * </p>
  *
- * @author 
+ * @author
  * @since 2023-03-29
  */
 @Service
@@ -51,11 +54,11 @@ public class ProductionPlanServiceImpl extends ServiceImpl<ProductionPlanMapper,
     public Page<ProductionPlanVo> getPage(ProductionPlanSelectDto dto) {
         IWrapper<ProductionPlan> wrapper = getWrapper();
         wrapper.orderByDesc("pp", ProductionPlan::getId);
-        wrapper.like(ProductionPlan::getStartDate,dto.getKeyword());
+        wrapper.like(ProductionPlan::getStartDate, dto.getKeyword());
         wrapper.or();
-        wrapper.like(ProductionPlan::getStopDate,dto.getKeyword());
+        wrapper.like(ProductionPlan::getStopDate, dto.getKeyword());
         wrapper.or();
-        wrapper.like(ProductionPlan::getQuantity,dto.getKeyword());
+        wrapper.like(ProductionPlan::getQuantity, dto.getKeyword());
         Page<ProductionPlanVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
         List<ProductionPlanVo> records = page.getRecords();
 
@@ -69,13 +72,31 @@ public class ProductionPlanServiceImpl extends ServiceImpl<ProductionPlanMapper,
         List<ProductInfo> productInfos = productInfoService.listByIds(productIds);
         Map<Long, ProductInfo> productInfoMap = productInfos.stream().collect(Collectors.groupingBy(ProductInfo::getId,
                 Collectors.collectingAndThen(Collectors.toList(), value -> value.get(0))));
-        for (ProductionPlanVo productionPlanVo : records){
+        for (ProductionPlanVo productionPlanVo : records) {
             WorkOrder workOrder = workOrderMap.get(productionPlanVo.getWorkOrderId());
             ProductInfo productInfo = productInfoMap.get(workOrder.getProductId());
-            if(ObjectUtil.isNotEmpty(productInfo)){
+            if (ObjectUtil.isNotEmpty(productInfo)) {
                 productionPlanVo.setProductName(productInfo.getName());
             }
         }
+        //赋值待排程数量
+        List<Long> productionPlanIds = records.stream().map(ProductionPlan::getId).collect(Collectors.toList());
+        if (ObjectUtil.isNotEmpty(productionPlanIds)) {
+            List<ProductionTask> productionTaskList = productionTaskService.list(q -> q.in(ProductionTask::getProductionPlanId, productionPlanIds));
+            if (ObjectUtil.isNotEmpty(productionTaskList)) {
+                //根据生产计划id分组
+                Map<Long, List<ProductionTask>> productionTaskMap = productionTaskList.stream().collect(Collectors.groupingBy(ProductionTask::getProductionPlanId));
+                for (ProductionPlanVo productionPlanVo : records) {
+                    List<ProductionTask> productionTaskList1 = productionTaskMap.get(productionPlanVo.getId());
+                    BigDecimal count = BigDecimal.ZERO;
+                    if (ObjectUtil.isNotEmpty(productionTaskList1)) {
+                        count = productionTaskList1.stream().map(ProductionTask::getQuantity)
+                                .reduce(BigDecimal.ZERO, BigDecimal::add);
+                    }
+                    productionPlanVo.setRemainingQuantity(productionPlanVo.getQuantity().subtract(count));
+                }
+            }
+        }
         return page;
     }
 
@@ -91,16 +112,22 @@ public class ProductionPlanServiceImpl extends ServiceImpl<ProductionPlanMapper,
         List<ProductionTask> list = productionTaskService.list(q -> q.eq(ProductionTask::getProductionPlanId, id));
         List<ProductionTaskVo> productionTaskVos = BeanUtil.copyToList(list, ProductionTaskVo.class);
         //赋值负责人名字
-        UserUtil.assignmentNickName(productionTaskVos,ProductionTask::getPersonLiableId,ProductionTaskVo::setPersonLiableName);
+        UserUtil.assignmentNickName(productionTaskVos, ProductionTask::getPersonLiableId, ProductionTaskVo::setPersonLiableName);
         result.setProductionTaskList(productionTaskVos);
         return result;
     }
 
+    @Transactional(rollbackFor = Exception.class)
     @Override
     public void add(ProductionPlanDto productionPlanDto) {
         productionPlanDto.setStatus(0);
         productionPlanDto.setCode(CodeEnum.PRODUCTION_PLAN.getCode());
         this.save(productionPlanDto);
+        Long workOrderId = productionPlanDto.getWorkOrderId();
+        //修改工单状态为进行中
+        WorkOrder byId = workOrderService.getById(workOrderId);
+        byId.setStatus(1);
+        workOrderService.updateById(byId);
     }
 
     @Override

+ 9 - 0
hx-mes/src/main/java/com/fjhx/mes/service/production/impl/ProductionReportingServiceImpl.java

@@ -6,12 +6,14 @@ import com.fjhx.item.service.product.ProductInfoService;
 import com.fjhx.mes.entity.production.po.ProductionProcesses;
 import com.fjhx.mes.entity.production.po.ProductionReporting;
 import com.fjhx.mes.entity.production.po.ProductionReportingDetail;
+import com.fjhx.mes.entity.production.po.ProductionTask;
 import com.fjhx.mes.entity.production.vo.ProductionReportingDetailVo;
 import com.fjhx.mes.mapper.production.ProductionReportingMapper;
 import com.fjhx.mes.service.production.ProductionProcessesService;
 import com.fjhx.mes.service.production.ProductionReportingDetailService;
 import com.fjhx.mes.service.production.ProductionReportingService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.mes.service.production.ProductionTaskService;
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.system.utils.UserUtil;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -47,6 +49,8 @@ public class ProductionReportingServiceImpl extends ServiceImpl<ProductionReport
     ProductInfoService productInfoService;
     @Autowired
     ProductionProcessesService productionProcessesService;
+    @Autowired
+    ProductionTaskService productionTaskService;
 
     @Override
     public Page<ProductionReportingVo> getPage(ProductionReportingSelectDto dto) {
@@ -103,6 +107,11 @@ public class ProductionReportingServiceImpl extends ServiceImpl<ProductionReport
             productionReportingDetail.setProductionReportingId(productionReportingDto.getId());
         }
         productionReportingDetailService.saveBatch(productionReportingDetailList);
+        Long productionTaskId = productionReportingDto.getProductionTaskId();
+        //设置生产任务状态为进行中
+        ProductionTask byId = productionTaskService.getById(productionTaskId);
+        byId.setStatus(1);
+        productionTaskService.updateById(byId);
     }
 
     @Transactional(rollbackFor = Exception.class)

+ 9 - 0
hx-mes/src/main/java/com/fjhx/mes/service/production/impl/ProductionTaskServiceImpl.java

@@ -23,6 +23,7 @@ import com.fjhx.mes.entity.production.dto.ProductionTaskSelectDto;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import com.fjhx.mes.entity.production.dto.ProductionTaskDto;
 import cn.hutool.core.bean.BeanUtil;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.Arrays;
 import java.util.List;
@@ -42,6 +43,8 @@ import java.util.stream.Collectors;
 public class ProductionTaskServiceImpl extends ServiceImpl<ProductionTaskMapper, ProductionTask> implements ProductionTaskService {
     @Autowired
     ProductInfoService productInfoService;
+    @Autowired
+    ProductionPlanService productionPlanService;
 
     @Override
     public Page<ProductionTaskVo> getPage(ProductionTaskSelectDto dto) {
@@ -90,10 +93,16 @@ public class ProductionTaskServiceImpl extends ServiceImpl<ProductionTaskMapper,
         return productionTaskVo;
     }
 
+    @Transactional(rollbackFor = Exception.class)
     @Override
     public void add(ProductionTaskDto productionTaskDto) {
         productionTaskDto.setCode(CodeEnum.PRODUCTION_TASK.getCode());
         this.save(productionTaskDto);
+        Long productionPlanId = productionTaskDto.getProductionPlanId();
+        //更新生产计划状态为进行中
+        ProductionPlan byId = productionPlanService.getById(productionPlanId);
+        byId.setStatus(1);
+        productionPlanService.updateById(byId);
     }
 
     @Override

+ 22 - 6
hx-mes/src/main/java/com/fjhx/mes/service/work/impl/WorkOrderServiceImpl.java

@@ -17,11 +17,9 @@ import com.fjhx.mes.service.work.WorkOrderService;
 import com.fjhx.mes.utils.code.CodeEnum;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
 
-import java.util.Arrays;
+import java.math.BigDecimal;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -47,9 +45,9 @@ public class WorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, WorkOrder
     public Page<WorkOrderVo> getPage(WorkOrderSelectDto dto) {
         IWrapper<WorkOrder> wrapper = getWrapper();
         wrapper.orderByDesc("wo", WorkOrder::getId);
-        wrapper.like("wo",WorkOrder::getCode,dto.getKeyword());
+        wrapper.like("wo", WorkOrder::getCode, dto.getKeyword());
         wrapper.or();
-        wrapper.like("wo",WorkOrder::getQuantity,dto.getKeyword());
+        wrapper.like("wo", WorkOrder::getQuantity, dto.getKeyword());
         Page<WorkOrderVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
         List<WorkOrderVo> records = page.getRecords();
         //赋值产品名
@@ -63,6 +61,24 @@ public class WorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, WorkOrder
                 workOrder.setProductName(productInfo.getName());
             }
         }
+        //赋值待排程数量
+        List<Long> workOrderIds = records.stream().map(WorkOrder::getId).collect(Collectors.toList());
+        if (ObjectUtil.isNotEmpty(workOrderIds)) {
+            List<ProductionPlan> productionPlanList = productionPlanService.list(q -> q.in(ProductionPlan::getWorkOrderId, workOrderIds));
+            if (ObjectUtil.isNotEmpty(productionPlanList)) {
+                //根据工单id分组
+                Map<Long, List<ProductionPlan>> productionPlanMap = productionPlanList.stream().collect(Collectors.groupingBy(ProductionPlan::getWorkOrderId));
+                for (WorkOrderVo workOrder : records) {
+                    List<ProductionPlan> productionPlanList1 = productionPlanMap.get(workOrder.getId());
+                    BigDecimal count = BigDecimal.ZERO;
+                    if (ObjectUtil.isNotEmpty(productionPlanList1)) {
+                        count = productionPlanList1.stream().map(ProductionPlan::getQuantity)
+                                .reduce(BigDecimal.ZERO, BigDecimal::add);
+                    }
+                    workOrder.setRemainingQuantity(workOrder.getQuantity().subtract(count));
+                }
+            }
+        }
         return page;
     }
 
@@ -73,7 +89,7 @@ public class WorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, WorkOrder
         List<ProductionPlan> list = productionPlanService.list(q -> q.eq(ProductionPlan::getWorkOrderId, id));
         result.setProductionPlans(list);
         ProductInfo productInfo = productInfoService.getById(result.getProductId());
-        if(ObjectUtil.isNotEmpty(productInfo)){
+        if (ObjectUtil.isNotEmpty(productInfo)) {
             result.setProductName(productInfo.getName());
         }
         return result;

+ 3 - 0
hx-wms/src/main/java/com/fjhx/wms/entity/stock/dto/StockWaitDto.java

@@ -14,4 +14,7 @@ import lombok.Setter;
 @Setter
 public class StockWaitDto extends StockWait {
 
+    /**入库仓库id*/
+    private Long warehouseId;
+
 }

+ 5 - 0
hx-wms/src/main/java/com/fjhx/wms/service/stock/StockService.java

@@ -2,12 +2,15 @@ package com.fjhx.wms.service.stock;
 
 import com.fjhx.wms.entity.stock.po.Stock;
 import com.fjhx.wms.entity.stock.dto.StockSelectDto;
+import com.fjhx.wms.entity.stock.po.StockJournalDetails;
 import com.ruoyi.common.core.domain.BaseSelectDto;
 import com.ruoyi.common.core.service.BaseService;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.wms.entity.stock.vo.StockVo;
 import com.fjhx.wms.entity.stock.dto.StockDto;
 
+import java.util.List;
+
 
 /**
  * <p>
@@ -49,4 +52,6 @@ public interface StockService extends BaseService<Stock> {
      */
     void delete(Long id);
 
+    List<StockJournalDetails> ModifyInventory(Long stockJournalId, int type, List<Stock> list, Long warehouseId);
+
 }

+ 1 - 0
hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockServiceImpl.java

@@ -137,6 +137,7 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
      * @param stockJournalId 出入库记录id
      * @param type           1入库 2出库
      */
+    @Override
     public List<StockJournalDetails> ModifyInventory(Long stockJournalId, int type, List<Stock> list, Long warehouseId) {
         List<Stock> data = new ArrayList<>();
 

+ 37 - 1
hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockWaitServiceImpl.java

@@ -6,11 +6,17 @@ import com.fjhx.common.constant.SourceConstant;
 import com.fjhx.item.entity.product.po.ProductInfo;
 import com.fjhx.item.service.product.ProductInfoService;
 import com.fjhx.wms.entity.stock.po.Stock;
+import com.fjhx.wms.entity.stock.po.StockJournal;
+import com.fjhx.wms.entity.stock.po.StockJournalDetails;
 import com.fjhx.wms.entity.stock.po.StockWait;
 import com.fjhx.wms.entity.stock.vo.StockVo;
 import com.fjhx.wms.mapper.stock.StockWaitMapper;
+import com.fjhx.wms.service.stock.StockJournalDetailsService;
+import com.fjhx.wms.service.stock.StockJournalService;
+import com.fjhx.wms.service.stock.StockService;
 import com.fjhx.wms.service.stock.StockWaitService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.obs.services.internal.ServiceException;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -19,7 +25,10 @@ import com.fjhx.wms.entity.stock.dto.StockWaitSelectDto;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import com.fjhx.wms.entity.stock.dto.StockWaitDto;
 import cn.hutool.core.bean.BeanUtil;
+import org.springframework.transaction.annotation.Transactional;
 
+import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -38,6 +47,12 @@ import java.util.stream.Collectors;
 public class StockWaitServiceImpl extends ServiceImpl<StockWaitMapper, StockWait> implements StockWaitService {
     @Autowired
     ProductInfoService productInfoService;
+    @Autowired
+    StockService stockService;
+    @Autowired
+    StockJournalService stockJournalService;
+    @Autowired
+    StockJournalDetailsService stockJournalDetailsService;
 
     @Override
     public Page<StockWaitVo> getPage(StockWaitSelectDto dto) {
@@ -72,9 +87,30 @@ public class StockWaitServiceImpl extends ServiceImpl<StockWaitMapper, StockWait
         return result;
     }
 
+    @Transactional(rollbackFor = Exception.class)
     @Override
     public void add(StockWaitDto stockWaitDto) {
-        this.save(stockWaitDto);
+        //更新已入库数量
+        StockWait byId = getById(stockWaitDto.getId());
+        byId.setReceiptQuantity(byId.getReceiptQuantity().add(stockWaitDto.getQuantity()));
+        if (byId.getReceiptQuantity().compareTo(byId.getQuantity())>0){
+            throw new ServiceException("入库数量+已入库数量不能大于待采购数量");
+        }
+        updateById(byId);
+        //创建出入库记录
+        StockJournal stockJournal = new StockJournal();
+        stockJournal.setType(byId.getType());
+        stockJournal.setWarehouseId(stockWaitDto.getWarehouseId());
+        stockJournal.setBusinessId(byId.getId());
+        //保存出入库记录
+        stockJournalService.save(stockJournal);
+        //操作库存
+        Stock stock = new Stock();
+        stock.setQuantity(stockWaitDto.getQuantity());
+        stock.setProductId(byId.getProductId());
+        List<StockJournalDetails> stockJournalDetailsList = stockService.ModifyInventory(stockJournal.getId(), byId.getType(), Arrays.asList(stock), stockWaitDto.getWarehouseId());
+        //保存出入库明细
+        stockJournalDetailsService.saveBatch(stockJournalDetailsList);
     }
 
     @Override