浏览代码

aps公共更新生产状态接口

sucheng 1 年之前
父节点
当前提交
9e4f856232

+ 12 - 0
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/dao/ApsProcessOperationProcessEquDao.java

@@ -2,9 +2,11 @@ package com.rongwei.bscommon.sys.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.rongwei.bsentity.domain.ApsProcessOperationProcessEquDo;
+import com.rongwei.bsentity.vo.CommonUpdateProductionStatusReq;
 import com.rongwei.bsentity.vo.GanttVos;
 import com.rongwei.bsentity.vo.ProcessIdRelationVo;
 import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
 
 import java.util.Date;
 import java.util.List;
@@ -39,6 +41,16 @@ public interface ApsProcessOperationProcessEquDao extends BaseMapper<ApsProcessO
                                     @Param("workshopIds") List<String> workshopId);
 
     void updateAboutStateByProcessId(@Param("updateIds") List<ProcessIdRelationVo> updateIds);
+
+
+    @Select("select PROCESSID AS 'processOperationId',MIN(PROCESSSTATUS) AS 'productionStatus' from aps_process_operation_process_equ where DELETED = 0 AND PROCESSID = (select PROCESSID from aps_process_operation_process_equ where ID = #{processOperationEquId}) GROUP BY PROCESSID")
+    CommonUpdateProductionStatusReq selectEquMinStatus(@Param("processOperationEquId") String processOperationEquId);
+
+    @Select("select BLANKID AS 'blankId',MIN(PROCESSSTATUS) AS 'productionStatus' from aps_process_operation where DELETED = 0 AND BLANKID = (select BLANKID from aps_process_operation where ID = #{processOperationId}) GROUP BY BLANKID")
+    CommonUpdateProductionStatusReq selectProcessMinStatus(@Param("processOperationId") String processOperationId);
+
+    @Select("select PRODUCTIONORDERID AS 'orderId',MIN(PRODUCTSTATUS) AS 'productionStatus' from aps_blank_order where DELETED = 0 AND PRODUCTIONORDERID = (select PRODUCTIONORDERID from aps_blank_order where ID = #{blankId}) GROUP BY PRODUCTIONORDERID")
+    CommonUpdateProductionStatusReq selectBlankMinStatus(@Param("blankId") String blankId);
 }
 
 

+ 4 - 0
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/ApsProcessOperationProcessEquService.java

@@ -2,10 +2,14 @@ package com.rongwei.bscommon.sys.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.rongwei.bsentity.domain.ApsProcessOperationProcessEquDo;
+import com.rongwei.bsentity.vo.CommonUpdateProductionStatusReq;
+import com.rongwei.rwcommon.base.R;
 
 /**
  *
  */
 public interface ApsProcessOperationProcessEquService extends IService<ApsProcessOperationProcessEquDo> {
 
+    R updateProductionStatus(CommonUpdateProductionStatusReq request);
+
 }

+ 85 - 3
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsProcessOperationProcessEquServiceImpl.java

@@ -1,18 +1,28 @@
 package com.rongwei.bscommon.sys.service.impl;
 
+import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.google.common.collect.Lists;
 import com.rongwei.bscommon.sys.dao.ApsProcessOperationDao;
 import com.rongwei.bscommon.sys.dao.ApsProcessOperationProcessEquDao;
+import com.rongwei.bscommon.sys.service.ApsBlankOrderService;
 import com.rongwei.bscommon.sys.service.ApsProcessOperationProcessEquService;
+import com.rongwei.bscommon.sys.service.ApsProcessOperationService;
+import com.rongwei.bscommon.sys.service.ApsProductionOrderService;
+import com.rongwei.bsentity.domain.ApsBlankOrderDo;
+import com.rongwei.bsentity.domain.ApsProcessOperationDo;
 import com.rongwei.bsentity.domain.ApsProcessOperationProcessEquDo;
 
+import com.rongwei.bsentity.domain.ApsProductionOrderDo;
+import com.rongwei.bsentity.vo.CommonUpdateProductionStatusReq;
 import com.rongwei.bsentity.vo.ProcessIdRelationVo;
+import com.rongwei.rwcommon.base.R;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
 import java.util.List;
 
 /**
@@ -20,10 +30,16 @@ import java.util.List;
  */
 @Service
 public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsProcessOperationProcessEquDao, ApsProcessOperationProcessEquDo>
-implements ApsProcessOperationProcessEquService {
+        implements ApsProcessOperationProcessEquService {
     private final Logger log = LoggerFactory.getLogger(this.getClass().getName());
     @Autowired
     private ApsProcessOperationProcessEquDao apsProcessOperationProcessEquDao;
+    @Autowired
+    private ApsProcessOperationService apsProcessOperationService;
+    @Autowired
+    private ApsBlankOrderService apsBlankOrderService;
+    @Autowired
+    private ApsProductionOrderService apsProductionOrderService;
 
     /**
      * 更新工序的待加工批次号信息
@@ -46,25 +62,91 @@ implements ApsProcessOperationProcessEquService {
      * @param processOperationId  当前工序的ID
      */
     public void updateAboutCheckBatchNum(String id, Integer currentCheckNum, Integer qualifiedQuantity,
-                                         Integer unqualifiedQuantity, String previousprocessid,String processOperationId) {
+                                         Integer unqualifiedQuantity, String previousprocessid, String processOperationId) {
         apsProcessOperationProcessEquDao.updateAboutCheckBatchNum(id, currentCheckNum, qualifiedQuantity,
                 unqualifiedQuantity, previousprocessid, processOperationId);
     }
 
     /**
      * 更新后续工序的
+     *
      * @param updateIds
      */
     public void updateAboutStateByProcessId(List<ProcessIdRelationVo> updateIds) {
         // 防止sql 过长拆分
         List<List<ProcessIdRelationVo>> partition = Lists.partition(updateIds, 8);
-        partition.forEach(data->{
+        partition.forEach(data -> {
             apsProcessOperationProcessEquDao.updateAboutStateByProcessId(data);
         });
 
     }
 
 
+    @Override
+    public R updateProductionStatus(CommonUpdateProductionStatusReq request) {
+
+        //根据粒度顺序
+        if (ObjectUtil.isNotEmpty(request.getProcessOperationEquId())) {
+            updateProcess(request.getProcessOperationId());
+        }
+        if (ObjectUtil.isNotEmpty(request.getProcessOperationId())) {
+            updateBlank(request.getProcessOperationId());
+        }
+        if (ObjectUtil.isNotEmpty(request.getBlankId())) {
+            updateOrder(request.getBlankId());
+        }
+//        if (ObjectUtil.isNotEmpty(request.getOrderId())) {
+//            return R.ok();
+//        }
+        return R.ok();
+    }
+
+    private void updateProcess(String processOperationId) {
+        //查询所有子表明细的最小生产状态和工序作业ID
+        CommonUpdateProductionStatusReq one = this.baseMapper.selectEquMinStatus(processOperationId);
+        if(ObjectUtil.isEmpty(one)){
+            return;
+        }
+        //工序作业ID
+        String processId = one.getProcessOperationId();
+        //更新工序作业的生产状态
+        ApsProcessOperationDo apsProcessOperationDo = new ApsProcessOperationDo();
+        apsProcessOperationDo.setId(processId);
+        apsProcessOperationDo.setProcessstatus(one.getProductionStatus());
+        apsProcessOperationService.updateById(apsProcessOperationDo);
+
+        //更新坯料计划
+        updateBlank(one.getProcessOperationId());
+    }
+
+    private void updateBlank(String processOperationId) {
+        //查询此工序作业的所属坯料计划的最小生产状态和坯料计划ID
+        CommonUpdateProductionStatusReq two = this.baseMapper.selectProcessMinStatus(processOperationId);
+        if(ObjectUtil.isEmpty(two)){
+            return;
+        }
+        //更新坯料计划的生产状态
+        ApsBlankOrderDo apsBlankOrderDo = new ApsBlankOrderDo();
+        apsBlankOrderDo.setId(two.getBlankId());
+        apsBlankOrderDo.setProductstatus(two.getProductionStatus());
+        apsBlankOrderService.updateById(apsBlankOrderDo);
+
+        //更新订单
+        updateOrder(two.getBlankId());
+    }
+
+    private void updateOrder(String blankId) {
+        //查询此坯料计划的所属订单的最小生产状态和订单ID
+        CommonUpdateProductionStatusReq three = this.baseMapper.selectBlankMinStatus(blankId);
+        if(ObjectUtil.isEmpty(three)){
+            return;
+        }
+        //更新订单
+        ApsProductionOrderDo apsProductionOrderDo = new ApsProductionOrderDo();
+        apsProductionOrderDo.setId(three.getOrderId());
+        apsProductionOrderDo.setProductionstatus(three.getProductionStatus());
+        apsProductionOrderService.updateById(apsProductionOrderDo);
+    }
 }
 
 

+ 5 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/domain/ApsBlankOrderDo.java

@@ -127,6 +127,11 @@ public class ApsBlankOrderDo extends BaseDo {
      */
     @TableField("ROPTION")
     private String roption;
+    /**
+     * 生产状态
+     */
+    @TableField("PRODUCTSTATUS")
+    private String productstatus;
 
 
 }

+ 35 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/vo/CommonUpdateProductionStatusReq.java

@@ -0,0 +1,35 @@
+package com.rongwei.bsentity.vo;
+
+import lombok.Data;
+
+/**
+ * @author :sc
+ * @since :2024/3/27
+ */
+@Data
+public class CommonUpdateProductionStatusReq {
+    /**
+     * 工序作业加工设备(作业明细)ID
+     */
+    private String processOperationEquId;
+
+    /**
+     * 工序作业ID
+     */
+    private String processOperationId;
+
+    /**
+     * 坯料计划ID
+     */
+    private String blankId;
+
+    /**
+     * 订单ID
+     */
+    private String orderId;
+
+    /**
+     * 生产状态
+     */
+    private String productionStatus;
+}

+ 27 - 0
cx-aps/cx-aps-server/src/main/java/com/rongwei/bsserver/controller/ApsProcessOperationProcessEquController.java

@@ -1,9 +1,18 @@
 package com.rongwei.bsserver.controller;
 
 
+import com.rongwei.bscommon.sys.service.ApsProcessOperationProcessEquService;
+import com.rongwei.bsentity.vo.CommonUpdateProductionStatusReq;
+import com.rongwei.rwcommon.base.R;
+import lombok.extern.slf4j.Slf4j;
+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;
 
+import java.util.Map;
+
 /**
  * <p>
  * 生产订单-坯料计划-工序作业加工设备 前端控制器
@@ -12,9 +21,27 @@ import org.springframework.web.bind.annotation.RestController;
  * @author fpy
  * @since 2024-03-25
  */
+@Slf4j
 @RestController
 @RequestMapping("/apsProcessOperationProcessEqu")
 public class ApsProcessOperationProcessEquController {
+    @Autowired
+    private ApsProcessOperationProcessEquService apsProcessOperationProcessEquService;
 
+    /**
+     * 通用更新订单、坯料计划、工序作业的 生产状态 方法(根据传入的指定项目的ID,传入多个ID,根据最小粒度的ID)
+     * 粒度划分从小到大:工序作业加工设备(作业明细)->工序作业->坯料计划->订单
+     * 注:一切尘埃落定之后调用此接口,防止重复更新遗留在表单上的状态
+     */
+    @PostMapping("/commonUpdateProductionStatus")
+    public R updateProductionStatus(@RequestBody CommonUpdateProductionStatusReq request) {
+        try {
+            log.info("更新生产状态;参数为:{}", request);
+            return apsProcessOperationProcessEquService.updateProductionStatus(request);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return R.error("更新生产状态失败");
+        }
+    }
 }