Ver código fonte

确认交期生成待出库 生产排程权限材料 报价评估问题处理

yzc 1 ano atrás
pai
commit
81389813aa

+ 14 - 13
hx-mes/src/main/java/com/fjhx/mes/controller/production/ProductionTaskController.java

@@ -1,15 +1,16 @@
 package com.fjhx.mes.controller.production;
 
-import com.baomidou.dynamic.datasource.annotation.DS;
-import com.fjhx.common.constant.SourceConstant;
-import org.springframework.web.bind.annotation.*;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.fjhx.mes.entity.production.vo.ProductionTaskVo;
-import com.fjhx.mes.entity.production.dto.ProductionTaskSelectDto;
 import com.fjhx.mes.entity.production.dto.ProductionTaskDto;
-import com.ruoyi.common.core.domain.BaseSelectDto;
+import com.fjhx.mes.entity.production.dto.ProductionTaskSelectDto;
+import com.fjhx.mes.entity.production.vo.ProductionTaskVo;
 import com.fjhx.mes.service.production.ProductionTaskService;
+import com.ruoyi.common.core.domain.BaseSelectDto;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
 
 
 /**
@@ -44,13 +45,13 @@ public class ProductionTaskController {
         return productionTaskService.detail(dto.getId());
     }
 
-    /**
-     * 生产任务新增
-     */
-    @PostMapping("/add")
-    public void add(@RequestBody ProductionTaskDto productionTaskDto) {
-        productionTaskService.add(productionTaskDto);
-    }
+//    /**
+//     * 生产任务新增
+//     */
+//    @PostMapping("/add")
+//    public void add(@RequestBody ProductionTaskDto productionTaskDto) {
+//        productionTaskService.add(productionTaskDto);
+//    }
 
     /**
      * 生产任务编辑

+ 6 - 0
hx-mes/src/main/java/com/fjhx/mes/entity/production/dto/ProductionSchedulingSelectDto.java

@@ -14,4 +14,10 @@ import lombok.Setter;
 @Setter
 public class ProductionSchedulingSelectDto extends BaseSelectDto {
 
+    /**
+     * 归属公司id
+     */
+    private Long companyId;
+
+
 }

+ 5 - 0
hx-mes/src/main/java/com/fjhx/mes/entity/production/po/ProductionScheduling.java

@@ -42,4 +42,9 @@ public class ProductionScheduling extends BasePo {
      */
     private Integer quantity;
 
+    /**
+     * 归属公司id
+     */
+    private Long companyId;
+
 }

+ 1 - 1
hx-mes/src/main/java/com/fjhx/mes/service/production/impl/ProduceOrderDetailServiceImpl.java

@@ -94,7 +94,7 @@ public class ProduceOrderDetailServiceImpl extends ServiceImpl<ProduceOrderDetai
         wrapper.orderByDesc("po", ProductionOrder::getCreateTime);
         wrapper.orderByDesc("pod", ProductionOrderDetail::getId);
 
-        //权限过滤:生产订单-子公司看自己的,总公司看全部
+        //权限过滤:生产任务-子公司看自己的,总公司看全部
         Long companyId = SecurityUtils.getCompanyId();
         if (!Objects.equals(companyId, 100L)) {
             wrapper.eq("po", ProductionOrder::getCompanyId, companyId);

+ 38 - 0
hx-mes/src/main/java/com/fjhx/mes/service/production/impl/ProduceOrderServiceImpl.java

@@ -33,6 +33,7 @@ import com.fjhx.purchase.service.subscribe.SubscribeDetailService;
 import com.fjhx.sale.entity.contract.po.Contract;
 import com.fjhx.sale.entity.contract.po.ContractProduct;
 import com.fjhx.sale.entity.contract.po.ContractProductBom;
+import com.fjhx.sale.entity.contract.vo.ContractProductBomVo;
 import com.fjhx.sale.entity.purchase.po.EhsdPurchaseProduct;
 import com.fjhx.sale.entity.purchase.vo.EhsdPurchaseProductVo;
 import com.fjhx.sale.mapper.purchase.EhsdPurchaseProductMapper;
@@ -42,9 +43,14 @@ import com.fjhx.sale.service.contract.ContractService;
 import com.fjhx.socket.core.PushTypeEnum;
 import com.fjhx.socket.core.WebSocketPush;
 import com.fjhx.tenant.utils.DeptUstil;
+import com.fjhx.wms.entity.stock.emums.JournalType;
 import com.fjhx.wms.entity.stock.po.StockJournalDetails;
+import com.fjhx.wms.entity.stock.po.StockWait;
+import com.fjhx.wms.entity.stock.po.StockWaitDetails;
 import com.fjhx.wms.entity.stock.vo.StockJournalDetailsVo;
 import com.fjhx.wms.mapper.stock.StockJournalDetailsMapper;
+import com.fjhx.wms.service.stock.StockWaitDetailsService;
+import com.fjhx.wms.service.stock.StockWaitService;
 import com.ruoyi.common.core.domain.BasePo;
 import com.ruoyi.common.core.domain.entity.SysDept;
 import com.ruoyi.common.exception.ServiceException;
@@ -98,6 +104,10 @@ public class ProduceOrderServiceImpl extends ServiceImpl<ProduceOrderMapper, Pro
     private EhsdPurchaseProductMapper ehsdPurchaseProductMapper;
     @Autowired
     private StockJournalDetailsMapper stockJournalDetailsMapper;
+    @Autowired
+    private StockWaitService stockWaitService;
+    @Autowired
+    private StockWaitDetailsService stockWaitDetailsService;
 
     @Override
     public Page<ProductionOrderVo> getPage(ProduceOrderSelectDto dto) {
@@ -516,6 +526,9 @@ public class ProduceOrderServiceImpl extends ServiceImpl<ProduceOrderMapper, Pro
             //生成待备料
             createMaterialPreparation(productionOrder);
 
+            //生成待出库
+            createStockWait(productionOrder);
+
             productionOrder.setProduceStatus(1);
             productionOrder.setProduceTime(new Date());//投产时间直接当前值
 
@@ -523,6 +536,31 @@ public class ProduceOrderServiceImpl extends ServiceImpl<ProduceOrderMapper, Pro
         }
     }
 
+    private void createStockWait(ProductionOrder productionOrder) {
+        //生成待出库
+        StockWait stockWait = new StockWait();
+        stockWait.setCompanyId(SecurityUtils.getCompanyId());
+        stockWait.setBusinessId(productionOrder.getId());
+        stockWait.setType(2);//出库
+        stockWait.setStatus(0);//待出库
+        stockWait.setBusinessType(JournalType.PROD_OUT.getDetailType());//生产任务出库
+        stockWait.setContractId(productionOrder.getContractId());
+        stockWaitService.save(stockWait);
+
+        List<StockWaitDetails> stockWaitDetailsList = new ArrayList<>();
+        List<ContractProductBomVo> contractProductBomQuantitySum = contractProductBomService.getContractProductBomQuantitySum(productionOrder.getContractId());
+        for (ContractProductBomVo contractProductBomVo : contractProductBomQuantitySum) {
+            //创建待出库明细
+            StockWaitDetails stockWaitDetails = new StockWaitDetails();
+            stockWaitDetails.setStockWaitId(stockWait.getId());
+            stockWaitDetails.setProductId(contractProductBomVo.getMaterialId());
+            stockWaitDetails.setQuantity(contractProductBomVo.getQuantity());
+            stockWaitDetails.setReceiptQuantity(BigDecimal.ZERO);
+            stockWaitDetailsList.add(stockWaitDetails);
+        }
+        stockWaitDetailsService.saveBatch(stockWaitDetailsList);
+    }
+
     @Override
     public void editDeliveryPeriod(ProductionOrderDto dto) {
         this.update(q -> q

+ 4 - 0
hx-mes/src/main/java/com/fjhx/mes/service/production/impl/ProductionSchedulingServiceImpl.java

@@ -7,6 +7,7 @@ import com.fjhx.mes.entity.production.po.ProductionScheduling;
 import com.fjhx.mes.entity.production.vo.ProductionSchedulingVo;
 import com.fjhx.mes.mapper.production.ProductionSchedulingMapper;
 import com.fjhx.mes.service.production.ProductionSchedulingService;
+import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import org.springframework.stereotype.Service;
 
@@ -28,6 +29,8 @@ public class ProductionSchedulingServiceImpl extends ServiceImpl<ProductionSched
     @Override
     public Map<String, List<ProductionSchedulingVo>> listMap(ProductionSchedulingSelectDto dto) {
         IWrapper<ProductionScheduling> wrapper = getWrapper();
+        //权限过滤:生产排程统计
+        wrapper.eq("ps", ProductionScheduling::getCompanyId, SecurityUtils.getCompanyId());
         //数据分组
         wrapper.groupBy("ps.scheduling_date", "ps.processes_id");
         //时间范围过滤
@@ -41,6 +44,7 @@ public class ProductionSchedulingServiceImpl extends ServiceImpl<ProductionSched
 
     @Override
     public void add(ProductionSchedulingDto productionSchedulingDto) {
+        productionSchedulingDto.setCompanyId(SecurityUtils.getCompanyId());
         this.save(productionSchedulingDto);
     }
 

+ 54 - 62
hx-mes/src/main/java/com/fjhx/mes/service/production/impl/ProductionTaskServiceImpl.java

@@ -10,8 +10,6 @@ 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.applicable.po.ApplicableProducts;
-import com.fjhx.mes.entity.bom.po.BomDetail;
-import com.fjhx.mes.entity.bom.po.BomInfo;
 import com.fjhx.mes.entity.production.dto.ProductionTaskDto;
 import com.fjhx.mes.entity.production.dto.ProductionTaskSelectDto;
 import com.fjhx.mes.entity.production.po.*;
@@ -19,7 +17,6 @@ import com.fjhx.mes.entity.production.vo.ProductionTaskDetailVo;
 import com.fjhx.mes.entity.production.vo.ProductionTaskVo;
 import com.fjhx.mes.entity.technology.po.Technology;
 import com.fjhx.mes.entity.work.po.WorkOrder;
-import com.fjhx.mes.entity.work.po.WorkOrderBom;
 import com.fjhx.mes.entity.work.po.WorkOrderProductionProcesses;
 import com.fjhx.mes.mapper.production.ProductionTaskMapper;
 import com.fjhx.mes.service.applicable.ApplicableProductsService;
@@ -30,14 +27,9 @@ import com.fjhx.mes.service.technology.TechnologyService;
 import com.fjhx.mes.service.work.WorkOrderBomService;
 import com.fjhx.mes.service.work.WorkOrderProductionProcessesService;
 import com.fjhx.mes.service.work.WorkOrderService;
-import com.fjhx.mes.utils.code.CodeEnum;
-import com.fjhx.wms.entity.stock.emums.JournalType;
-import com.fjhx.wms.entity.stock.po.StockWait;
-import com.fjhx.wms.entity.stock.po.StockWaitDetails;
 import com.fjhx.wms.service.stock.StockWaitDetailsService;
 import com.fjhx.wms.service.stock.StockWaitService;
 import com.ruoyi.common.exception.ServiceException;
-import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import com.ruoyi.system.utils.UserUtil;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -138,60 +130,60 @@ public class ProductionTaskServiceImpl extends ServiceImpl<ProductionTaskMapper,
     @DSTransactional
     @Override
     public void add(ProductionTaskDto productionTaskDto) {
-        productionTaskDto.setCode(CodeEnum.PRODUCTION_TASK.getCode());
-        this.save(productionTaskDto);
-        Long productionPlanId = productionTaskDto.getProductionPlanId();
-        //更新生产计划状态为进行中
-        ProductionPlan productionPlan = productionPlanService.getById(productionPlanId);
-        productionPlan.setStatus(1);
-        productionPlanService.updateById(productionPlan);
-
-        //根据工单是否是定制工单 创建BOM待出库数据
-        WorkOrder workOrder = workOrderService.getById(productionPlan.getWorkOrderId());
-        if (ObjectUtil.isEmpty(workOrder)) {
-            throw new ServiceException("查询不到该任务的工单信息");
-        }
-
-        List<BomDetail> bomDetailList = new ArrayList<>();
-        if ("1".equals(workOrder.getIsCustomized())) {
-            List<WorkOrderBom> workOrderBomList = workOrderBomService.list(q -> q.eq(WorkOrderBom::getWorkOrderId, workOrder.getId()));
-            if (ObjectUtil.isEmpty(workOrderBomList)) {
-                throw new ServiceException("该工单为定制工单 未配置定制BOM");
-            }
-            bomDetailList = BeanUtil.copyToList(workOrderBomList, BomDetail.class);
-        } else {
-            //查询BOM信息
-            BomInfo bomInfo = bomInfoService.getOne(q -> q.eq(BomInfo::getProductId, workOrder.getProductId()).eq(BomInfo::getCurrentVersion,1));
-            if (ObjectUtil.isEmpty(bomInfo)) {
-                throw new ServiceException("查询不到产品的BOM信息");
-            }
-            bomDetailList = bomDetailService.list(q -> q.eq(BomDetail::getBomInfoId, bomInfo.getId()));
-            if (ObjectUtil.isEmpty(bomDetailList)) {
-                throw new ServiceException("查询不到BOM明细");
-            }
-        }
-        //创建待出库信息
-        StockWait stockWait = new StockWait();
-        stockWait.setCompanyId(SecurityUtils.getCompanyId());
-        stockWait.setBusinessId(productionTaskDto.getId());
-        stockWait.setType(2);//出库
-        stockWait.setStatus(0);//待出库
-        stockWait.setBusinessType(JournalType.PROD_OUT.getDetailType());//生产任务出库
-        stockWaitService.save(stockWait);
-        //创建待出库明细
-        List<StockWaitDetails> stockWaitDetailsList = new ArrayList<>();
-        for (BomDetail bomDetail : bomDetailList) {
-            //计算数量
-            BigDecimal multiply = bomDetail.getQuantity().multiply(productionTaskDto.getQuantity());
-            //创建待出库明细
-            StockWaitDetails stockWaitDetails = new StockWaitDetails();
-            stockWaitDetails.setStockWaitId(stockWait.getId());
-            stockWaitDetails.setProductId(bomDetail.getProductId());
-            stockWaitDetails.setQuantity(multiply);
-            stockWaitDetails.setReceiptQuantity(BigDecimal.ZERO);
-            stockWaitDetailsList.add(stockWaitDetails);
-        }
-        stockWaitDetailsService.saveBatch(stockWaitDetailsList);
+//        productionTaskDto.setCode(CodeEnum.PRODUCTION_TASK.getCode());
+//        this.save(productionTaskDto);
+//        Long productionPlanId = productionTaskDto.getProductionPlanId();
+//        //更新生产计划状态为进行中
+//        ProductionPlan productionPlan = productionPlanService.getById(productionPlanId);
+//        productionPlan.setStatus(1);
+//        productionPlanService.updateById(productionPlan);
+//
+//        //根据工单是否是定制工单 创建BOM待出库数据
+//        WorkOrder workOrder = workOrderService.getById(productionPlan.getWorkOrderId());
+//        if (ObjectUtil.isEmpty(workOrder)) {
+//            throw new ServiceException("查询不到该任务的工单信息");
+//        }
+//
+//        List<BomDetail> bomDetailList = new ArrayList<>();
+//        if ("1".equals(workOrder.getIsCustomized())) {
+//            List<WorkOrderBom> workOrderBomList = workOrderBomService.list(q -> q.eq(WorkOrderBom::getWorkOrderId, workOrder.getId()));
+//            if (ObjectUtil.isEmpty(workOrderBomList)) {
+//                throw new ServiceException("该工单为定制工单 未配置定制BOM");
+//            }
+//            bomDetailList = BeanUtil.copyToList(workOrderBomList, BomDetail.class);
+//        } else {
+//            //查询BOM信息
+//            BomInfo bomInfo = bomInfoService.getOne(q -> q.eq(BomInfo::getProductId, workOrder.getProductId()).eq(BomInfo::getCurrentVersion,1));
+//            if (ObjectUtil.isEmpty(bomInfo)) {
+//                throw new ServiceException("查询不到产品的BOM信息");
+//            }
+//            bomDetailList = bomDetailService.list(q -> q.eq(BomDetail::getBomInfoId, bomInfo.getId()));
+//            if (ObjectUtil.isEmpty(bomDetailList)) {
+//                throw new ServiceException("查询不到BOM明细");
+//            }
+//        }
+//        //创建待出库信息
+//        StockWait stockWait = new StockWait();
+//        stockWait.setCompanyId(SecurityUtils.getCompanyId());
+//        stockWait.setBusinessId(productionTaskDto.getId());
+//        stockWait.setType(2);//出库
+//        stockWait.setStatus(0);//待出库
+//        stockWait.setBusinessType(JournalType.PROD_OUT.getDetailType());//生产任务出库
+//        stockWaitService.save(stockWait);
+//        //创建待出库明细
+//        List<StockWaitDetails> stockWaitDetailsList = new ArrayList<>();
+//        for (BomDetail bomDetail : bomDetailList) {
+//            //计算数量
+//            BigDecimal multiply = bomDetail.getQuantity().multiply(productionTaskDto.getQuantity());
+//            //创建待出库明细
+//            StockWaitDetails stockWaitDetails = new StockWaitDetails();
+//            stockWaitDetails.setStockWaitId(stockWait.getId());
+//            stockWaitDetails.setProductId(bomDetail.getProductId());
+//            stockWaitDetails.setQuantity(multiply);
+//            stockWaitDetails.setReceiptQuantity(BigDecimal.ZERO);
+//            stockWaitDetailsList.add(stockWaitDetails);
+//        }
+//        stockWaitDetailsService.saveBatch(stockWaitDetailsList);
     }
 
     @Override

+ 8 - 1
hx-sale/src/main/java/com/fjhx/sale/service/quotation/impl/QuotationEstimateServiceImpl.java

@@ -71,6 +71,13 @@ public class QuotationEstimateServiceImpl extends ServiceImpl<QuotationEstimateM
                 quotationEstimate.setMaterialId(quotationProductBom.getMaterialId());
                 quotationEstimate.setType(quotationProductBom.getType());
 
+                //原材料获取物料库单价
+                if (ObjectUtil.equals(quotationProductBom.getType(), 1)) {
+                    ProductInfo productInfo = productInfoService.getById(quotationProductBom.getMaterialId());
+                    Assert.notEmpty(productInfo, "查询不到原材料信息");
+                    quotationProductBom.setPrice(productInfo.getPrice());
+                }
+
                 //原材料不赋值数量
                 if (ObjectUtil.notEqual(quotationProductBom.getType(), 1)) {
                     quotationEstimate.setQuantity(quotationProductBom.getQuantity());
@@ -85,7 +92,7 @@ public class QuotationEstimateServiceImpl extends ServiceImpl<QuotationEstimateM
                 detail.setMaterialWidth(product.getWidth());
                 detail.setMaterialHeight(product.getHeight());
                 detail.setName(product.getName());
-                detail.setCode(product.getCode());
+                detail.setCode(product.getCustomCode());
                 detail.setMaterialColor(product.getColor());
             });