Prechádzať zdrojové kódy

报工添加赋值完工数量及时间

yzc 1 rok pred
rodič
commit
0b42d8dae4

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

@@ -5,6 +5,8 @@ import com.ruoyi.common.core.domain.BasePo;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.math.BigDecimal;
+
 /**
  * <p>
  * 生产报工明细
@@ -41,6 +43,6 @@ public class ProductionReportingDetail extends BasePo {
     /**
      * 报工数量
      */
-    private Long quantity;
+    private BigDecimal quantity;
 
 }

+ 41 - 2
hx-mes/src/main/java/com/fjhx/mes/service/production/impl/ProductionReportingDetailServiceImpl.java

@@ -6,14 +6,20 @@ import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.common.utils.Assert;
+import com.fjhx.item.entity.product.po.ProductInfo;
+import com.fjhx.item.service.product.ProductInfoService;
 import com.fjhx.mes.entity.production.dto.ProductionReportingDetailDto;
 import com.fjhx.mes.entity.production.dto.ProductionReportingDetailSelectDto;
+import com.fjhx.mes.entity.production.po.ProductionOrderDetail;
 import com.fjhx.mes.entity.production.po.ProductionReportingDetail;
 import com.fjhx.mes.entity.production.po.ProductionTaskProgress;
 import com.fjhx.mes.entity.production.vo.ProductionReportingDetailVo;
+import com.fjhx.mes.entity.technology.po.TechnologyProcessLine;
 import com.fjhx.mes.mapper.production.ProductionReportingDetailMapper;
+import com.fjhx.mes.service.production.ProduceOrderDetailService;
 import com.fjhx.mes.service.production.ProductionReportingDetailService;
 import com.fjhx.mes.service.production.ProductionTaskProgressService;
+import com.fjhx.mes.service.technology.TechnologyProcessLineService;
 import com.ruoyi.common.core.domain.BasePo;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.wrapper.IWrapper;
@@ -21,6 +27,7 @@ import com.ruoyi.system.utils.UserUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
 
@@ -38,6 +45,12 @@ public class ProductionReportingDetailServiceImpl extends ServiceImpl<Production
 
     @Autowired
     private ProductionTaskProgressService productionTaskProgressService;
+    @Autowired
+    private ProduceOrderDetailService produceOrderDetailService;
+    @Autowired
+    private ProductInfoService productInfoService;
+    @Autowired
+    private TechnologyProcessLineService technologyProcessLineService;
 
     @Override
     public Page<ProductionReportingDetailVo> getPage(ProductionReportingDetailSelectDto dto) {
@@ -65,11 +78,11 @@ public class ProductionReportingDetailServiceImpl extends ServiceImpl<Production
     public synchronized void add(ProductionReportingDetailDto dto) {
         Long productionTaskId = dto.getProductionTaskId();
         Long productionProcessesId = dto.getProductionProcessesId();
-        Long quantity = dto.getQuantity();
+        BigDecimal reportingQuantity = dto.getQuantity();
 
         Assert.notEmpty(productionTaskId, "生产任务id不能为空!");
         Assert.notEmpty(productionProcessesId, "生产工序id不能为空!");
-        Assert.notEmpty(quantity, "报工数量不能为空!");
+        Assert.notEmpty(reportingQuantity, "报工数量不能为空!");
 
 
         ProductionTaskProgress productionTaskProgress = productionTaskProgressService.getOne(q -> q
@@ -87,6 +100,32 @@ public class ProductionReportingDetailServiceImpl extends ServiceImpl<Production
                 .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
         );
 
+        //更新完工数量
+        ProductionOrderDetail productionOrderDetail = produceOrderDetailService.getById(productionTaskId);
+        Assert.notEmpty(productionOrderDetail, "查询不到生产任务信息!");
+        ProductInfo productInfo = productInfoService.getById(productionOrderDetail.getProductId());
+        Assert.notEmpty(productInfo, "查询不到生产产品信息!");
+        Long technologyId = productInfo.getTechnologyId();
+        //判断报工工序是不是最后一道工序,是增加完工数量
+        long count = technologyProcessLineService.count(q -> q
+                .eq(TechnologyProcessLine::getTechnologyId, technologyId)
+                .eq(TechnologyProcessLine::getSourceProcessesId, productionProcessesId)
+                .eq(TechnologyProcessLine::getTargetProcessesId, 99)
+        );
+        if (count > 0) {
+            //是最后一道工序添加完工数量
+            BigDecimal quantity = productionOrderDetail.getQuantity();
+            BigDecimal finishQuantity = productionOrderDetail.getFinishQuantity();
+            //计算完工数量
+            BigDecimal add = finishQuantity.add(reportingQuantity);
+            productionOrderDetail.setFinishQuantity(add);
+            //全部完成赋值完工时间
+            if (add.compareTo(quantity) >= 0) {
+                productionOrderDetail.setFinishTime(new Date());
+            }
+            produceOrderDetailService.updateById(productionOrderDetail);
+        }
+
         this.save(dto);
     }