Explorar o código

生产订单投产功能修改 根据产品选择生产公司

yzc hai 1 ano
pai
achega
ad18e8880e

+ 1 - 9
hx-mes/src/main/java/com/fjhx/mes/controller/production/ProduceOrderController.java

@@ -40,7 +40,7 @@ public class ProduceOrderController {
     }
 
     /**
-     * 创建生产订单
+     * 创建生产订单(投产)
      */
     @PostMapping("/createOrder")
     public void createOrder(@RequestBody ProductionOrderDto produceOrderDto) {
@@ -57,14 +57,6 @@ public class ProduceOrderController {
         return produceOrderService.getSchedulingList(produceOrderDto);
     }
 
-//    /**
-//     * 投产
-//     */
-//    @PostMapping("/putProduction")
-//    public void putProduction(@RequestBody ProduceOrderSelectDto dto) {
-//        produceOrderService.putProduction(dto);
-//    }
-
     /**
      * 投产
      */

+ 0 - 5
hx-mes/src/main/java/com/fjhx/mes/service/production/ProduceOrderService.java

@@ -36,11 +36,6 @@ public interface ProduceOrderService extends BaseService<ProductionOrder> {
      */
     List<ProductionOrderVo> getSchedulingList(ProduceOrderSelectDto dto);
 
-//    /**
-//     * 投产
-//     */
-//    void putProduction(ProduceOrderSelectDto dto);
-
     /**
      * 修改投产时间
      */

+ 39 - 59
hx-mes/src/main/java/com/fjhx/mes/service/production/impl/ProduceOrderServiceImpl.java

@@ -263,26 +263,48 @@ public class ProduceOrderServiceImpl extends ServiceImpl<ProduceOrderMapper, Pro
 
     @Override
     @DSTransactional
-    public void createOrder(ProductionOrderDto produceOrderDto) {
-        Long contractId = produceOrderDto.getContractId();
-        Assert.notEmpty(produceOrderDto.getContractId(), "合同id不能为空!");
-
-        //赋值原订单信息
-        ProductionOrder one = this.getOne(q -> q.eq(ProductionOrder::getContractId, contractId));
-        if (ObjectUtil.isNotEmpty(one)) {
-            produceOrderDto.setId(one.getId());
-        }
-
-        //将数据移到归属公司下
-        SysDept produceCompany = sysDeptService.getById(produceOrderDto.getProduceCompanyId());
-        Assert.notEmpty(produceCompany, "查询不到生产公司信息");
-        Long companyId = produceCompany.getDeptId();
-        produceOrderDto.setCompanyId(companyId);
-        produceOrderDto.setConfirmStatus(0);
-
+    public void createOrder(ProductionOrderDto dto) {
+        Long contractId = dto.getContractId();
+        Assert.notEmpty(dto.getContractId(), "合同id不能为空!");
         //获取合同信息
         Contract contract = contractService.getById(contractId);
         Assert.notEmpty(contract, "查询不到合同信息!");
+
+        //根据合同产品归属公司
+        List<Long> pIds = contractProductService.listObject(ContractProduct::getProductId, q -> q.eq(ContractProduct::getContractId, contractId));
+        List<Long> pCompanyIds = productInfoService.listObject(ProductInfo::getCompanyId, q -> q.in(ProductInfo::getId, pIds));
+        pCompanyIds = pCompanyIds.stream().distinct().collect(Collectors.toList());
+        for (Long pCompanyId : pCompanyIds) {
+            ProductionOrderDto produceOrderDto = BeanUtil.copyProperties(dto, ProductionOrderDto.class);
+
+            //赋值原订单信息
+            ProductionOrder one = this.getOne(q -> q.eq(ProductionOrder::getContractId, contractId));
+            if (ObjectUtil.isNotEmpty(one)) {
+                produceOrderDto.setId(one.getId());
+            }
+
+            //指定生产公司为 产品归属公司
+            SysDept produceCompany = sysDeptService.getById(pCompanyId);
+            Assert.notEmpty(produceCompany, "查询不到生产公司信息");
+
+            produceOrderDto.setCompanyId(pCompanyId);
+            produceOrderDto.setConfirmStatus(0);
+
+            produceOrderDto.setCode(contract.getCode());
+            produceOrderDto.setProduceStatus(0);
+            this.saveOrUpdate(produceOrderDto);
+
+            //消息推送:给归属公司的 子公司总经理
+            String title = String.format("您有新的生产订单,订单号【%s】,请及时跟进。", produceOrderDto.getCode());
+            JSONObject msg = new JSONObject();
+            msg.put("business_id", produceOrderDto.getId());
+            List<Long> generalManagerIds = UserUtil.getUserIdsByRoleKey("subsidiary_gm", pCompanyId);
+            for (Long generalManagerId : generalManagerIds) {
+                WebSocketPush.byUser(PushTypeEnum.MESSAGE, generalManagerId, title, PushBusinessTypeEnum.NEW_PRODUCTION_ORDER.getType(), msg.toString());
+            }
+        }
+
+        //修改状态为投产
         contractService.update(q -> q
                 .eq(Contract::getId, contractId)
                 .set(Contract::getOrderDistributeStatus, 1)
@@ -291,50 +313,8 @@ public class ProduceOrderServiceImpl extends ServiceImpl<ProduceOrderMapper, Pro
                 .set(BasePo::getUpdateTime, new Date())
                 .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
         );
-
-        produceOrderDto.setCode(contract.getCode());
-        produceOrderDto.setProduceStatus(0);
-        this.saveOrUpdate(produceOrderDto);
-
-
-        //消息推送:给归属公司的 子公司总经理
-        String title = String.format("您有新的生产订单,订单号【%s】,请及时跟进。", produceOrderDto.getCode());
-        JSONObject msg = new JSONObject();
-        msg.put("business_id", produceOrderDto.getId());
-        List<Long> generalManagerIds = UserUtil.getUserIdsByRoleKey("subsidiary_gm", companyId);
-        for (Long generalManagerId : generalManagerIds) {
-            WebSocketPush.byUser(PushTypeEnum.MESSAGE, generalManagerId, title, PushBusinessTypeEnum.NEW_PRODUCTION_ORDER.getType(), msg.toString());
-        }
     }
 
-//    /**
-//     * 投产
-//     */
-//    @Override
-//    @DSTransactional
-//    public synchronized void putProduction(ProduceOrderSelectDto dto) {
-//        Long orderId = dto.getId();
-//        Date produceTime = dto.getProduceTime();
-//
-//        Assert.notEmpty(orderId, "投产id不能为空!");
-//        Assert.notEmpty(produceTime, "投产时间不能为空!");
-//
-//        ProductionOrder productionOrder = this.getById(orderId);
-//        Assert.notEmpty(productionOrder, "查询不到订单信息!");
-//
-//        if (ObjectUtil.isNotEmpty(productionOrder.getProduceTime())) {
-//            throw new ServiceException("该订单已投产,请勿重复投产!!");
-//        }
-//
-//        //生成待备料
-//        createMaterialPreparation(productionOrder);
-//
-//        productionOrder.setProduceStatus(1);
-//        productionOrder.setProduceTime(produceTime);
-//
-//        this.updateById(productionOrder);
-//    }
-
     /**
      * 修改投产时间
      */