Browse Source

aps-订单评审表单校验、取消坯料计划接口事务化

sucheng 1 year ago
parent
commit
a21de6f753

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

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.rongwei.bsentity.domain.AspCheckItemsDo;
 import com.rongwei.bsentity.vo.ApsBlankOrderVo;
 import com.rongwei.bsentity.vo.BlankIdAndProcessStatusVo;
+import org.apache.ibatis.annotations.Delete;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
 import org.apache.ibatis.annotations.Update;
@@ -76,4 +77,13 @@ public interface ApsBlankOrderDao extends BaseMapper<ApsBlankOrderDo> {
 
     @Update("update aps_process_operation_process_equ set BACHMATERIALPROCESS = REPLACE(REPLACE(BACHMATERIALPROCESS,'${batchnumber},',''),',${batchnumber}','') where DELETED = 0 AND PROCESSID IN (select ID from aps_process_operation where DELETED = 0 AND PREVIOUSPROCESSID = #{processoperationid})")
     void processDeleteBatchNumber(@Param("batchnumber") String batchnumber,@Param("processoperationid") String processoperationid);
+
+    @Update("update sys_mind_mapping set DELETED = 1 where BSID = #{id}")
+    void removeMindMappingByBlankId(@Param("id") String id);
+
+    @Delete("delete from aps_process_operation_backup where BLANKID = #{id}")
+    void deleteProcessBackupByBlankId(@Param("id") String id);
+
+    @Delete("delete from aps_process_operation_process_equ_backup where BLANKID = #{id}")
+    void deleteProcessEquBackupByBlankId(@Param("id") String id);
 }

+ 1 - 1
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/dao/ApsReportRecordsDao.java

@@ -26,7 +26,7 @@ public interface ApsReportRecordsDao extends BaseMapper<ApsReportRecordsDo> {
     @Update("update aps_process_operation_process_equ set BACHMATERIALPROCESS = REPLACE(REPLACE(BACHMATERIALPROCESS,'${inputBatchNumber},',''),',${inputBatchNumber}','') where PROCESSID = #{id}")
     void updateBatchMaterialProcess(@Param("inputBatchNumber") String inputBatchNumber, @Param("id") String id);
 
-    @Update("update aps_process_operation_process_equ set BACHMATERIALPROCESS = REPLACE(REPLACE(BACHMATERIALPROCESS,'${inputBatchNumber},',''),',${inputBatchNumber}','') where PROCESSID in (${processIds})")
+    @Update("update aps_process_operation_process_equ set BACHMATERIALPROCESS = REPLACE(REPLACE(REPLACE(BACHMATERIALPROCESS,'${inputBatchNumber},',''),',${inputBatchNumber}',''),'${inputBatchNumber}','') where PROCESSID in (${processIds})")
     void updateBatchMaterialProcessBatch(@Param("inputBatchNumber") String inputBatchNumber, @Param("processIds") String processIds);
 
     @Select("select ap.ID AS 'id',ap.PARAMETER AS 'parameter' from aps_production_processes app LEFT JOIN aps_parameter ap ON app.ID = ap.MAINID AND ap.DELETED = 0 where app.PRODUCTPROCESSNAME = #{process}")

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

@@ -40,4 +40,6 @@ public interface ApsBlankOrderService extends IService<ApsBlankOrderDo> {
 
     R checkAndSaveOrUpdateBlank(CheckAndSaveOrUpdateBlankReq req);
     R checkBlankOrder(CheckAndSaveOrUpdateBlankReq req, int i);
+
+    R removeBlankOrder(ApsBlankOrderDo req);
 }

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

@@ -19,4 +19,6 @@ public interface ApsProductionOrderService extends IService<ApsProductionOrderDo
     R checkAndSaveOrUpdateOrder(CheckAndSaveOrUpdateOrderReq req);
 
     void orderOuttimeAudit();
+
+    R changeOrder(ApsProductionOrderDo req);
 }

+ 58 - 2
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsBlankOrderServiceImpl.java

@@ -87,6 +87,12 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
     private ApsWorkInProgressInventoryService apsWorkInProgressInventoryService;
     @Autowired
     private ApsProcessOutputProductService apsProcessOutputProductService;
+    @Autowired
+    private ApsProcessOperationOutMaterService apsProcessOperationOutMaterService;
+    @Autowired
+    private ApsProcessOperationEquService apsProcessOperationEquService;
+    @Autowired
+    private ApsProcessOperationProcessEquService apsProcessOperationProcessEquService;
 
 
     @Override
@@ -119,7 +125,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
         // 校验取消的订单中是否存在已加工的工序作业
         List<String> startWorkOrderNo = apsProcessOperationDao.getStartWorkById(apsProductionOrderIds);
         if (!startWorkOrderNo.isEmpty()) {
-            throw new CustomException(CollUtil.join(startWorkOrderNo, ",") + " 以上客户所对应的订单存在已开工的坯料计划,不可以取消排程=!");
+            throw new CustomException(CollUtil.join(startWorkOrderNo, ",") + " 以上客户所对应的订单存在已开工的坯料计划,不可以取消排程!");
         }
         List<String> blankids = blankOrderDos.stream().map(ApsBlankOrderDo::getId).collect(Collectors.toList());
         //清除排程备份和状态修改
@@ -138,7 +144,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
         // 校验取消的订单中是否存在已加工的工序作业
         List<String> startWorkOrderNo = apsProcessOperationDao.getStartWorkByBlankId(apsBlankIds);
         if (!startWorkOrderNo.isEmpty()) {
-            throw new CustomException(CollUtil.join(startWorkOrderNo, ",") + " 以上客户所对应的订单存在已开工的坯料计划,不可以取消排程=!");
+            throw new CustomException(CollUtil.join(startWorkOrderNo, ",") + " 以上客户所对应的订单存在已开工的坯料计划,不可以取消排程!");
         }
         //获取订单ID
         List<ApsBlankOrderDo> blankOrderDoList = this.list(new QueryWrapper<ApsBlankOrderDo>().lambda().in(ApsBlankOrderDo::getId, apsBlankIds));
@@ -1582,4 +1588,54 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
         }
         return R.ok();
     }
+
+    @Override
+    @Transactional
+    public R removeBlankOrder(ApsBlankOrderDo req) {
+        if (ObjectUtil.isEmpty(req.getId())) {
+            return R.error("坯料Id不能为空");
+        }
+        ApsBlankOrderDo apsBlankOrderDo = this.getById(req.getId());
+        //删除坯料计划
+        this.removeById(req.getId());
+
+        //如果是备料,删除计划后,备料的计划ID设置为空
+        if (apsBlankOrderDo.getPreparematerial().equals("是")) {
+            ApsWorkInProgressInventoryDo needUpdate = new ApsWorkInProgressInventoryDo();
+            needUpdate.setPlanmaterialid("");
+            apsWorkInProgressInventoryService.update(needUpdate, new QueryWrapper<ApsWorkInProgressInventoryDo>().lambda().eq(ApsWorkInProgressInventoryDo::getPlanmaterialid, req.getId()));
+        }
+
+        //逻辑删除坯料计划输出成品
+        apsProcessOutputProductService.remove(new QueryWrapper<ApsProcessOutputProductDo>().lambda().eq(ApsProcessOutputProductDo::getBlankid, req.getId()));
+
+        //逻辑删除坯料计划工序作业
+        apsProcessOperationService.remove(new QueryWrapper<ApsProcessOperationDo>().lambda().eq(ApsProcessOperationDo::getBlankid, req.getId()));
+
+        //逻辑删除坯料计划工序作业-输出物料
+        apsProcessOperationOutMaterService.remove(new QueryWrapper<ApsProcessOperationOutMaterDo>().lambda().eq(ApsProcessOperationOutMaterDo::getBlankid, req.getId()));
+
+        //逻辑删除坯料计划工序作业-可选设备
+        apsProcessOperationEquService.remove(new QueryWrapper<ApsProcessOperationEquDo>().lambda().eq(ApsProcessOperationEquDo::getBlankid, req.getId()));
+
+        //逻辑删除坯料计划的工艺路线
+        this.baseMapper.removeMindMappingByBlankId(req.getId());
+
+        //物理删除相关的工序作业备份
+        this.baseMapper.deleteProcessBackupByBlankId(req.getId());
+        //物理删除相关的作业明细备份
+        this.baseMapper.deleteProcessEquBackupByBlankId(req.getId());
+
+        //查询此订单的其他任一一个坯料计划的Id,重新更新订单的状态
+        CommonUpdateProductionStatusReq commonUpdateProductionStatusReq = new CommonUpdateProductionStatusReq();
+        ApsBlankOrderDo one = this.getOne(new QueryWrapper<ApsBlankOrderDo>().lambda().eq(ApsBlankOrderDo::getProductionorderid, apsBlankOrderDo.getProductionorderid()));
+        if (ObjectUtil.isNotEmpty(one)) {
+            commonUpdateProductionStatusReq.setBlankId(one.getId());
+        } else {
+            commonUpdateProductionStatusReq.setOrderId(apsBlankOrderDo.getProductionorderid());
+        }
+        apsProcessOperationProcessEquService.updateProductionStatus(commonUpdateProductionStatusReq);
+
+        return R.ok();
+    }
 }

+ 27 - 0
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsProductionOrderServiceImpl.java

@@ -184,6 +184,9 @@ public class ApsProductionOrderServiceImpl extends ServiceImpl<ApsProductionOrde
             if (ObjectUtil.isEmpty(apsProductionOrderDo.getPromisedeliverydate())) {
                 return R.error("请填写订单" + apsProductionOrderDo.getOrderno() + apsProductionOrderDo.getCustomname() + "的承诺交货期");
             }
+            if (ObjectUtil.isEmpty(apsProductionOrderDo.getScheduledeliverydate())) {
+                return R.error("排程交货期不能为空");
+            }
             //如果承诺交货期<排程交货期,错误提示:承诺交货期不能早于排程交货期{排程交货期}
             if (apsProductionOrderDo.getPromisedeliverydate().compareTo(apsProductionOrderDo.getScheduledeliverydate()) < 0) {
                 return R.error("承诺交货期不能早于排程交货期" + DateUtil.format(apsProductionOrderDo.getScheduledeliverydate(), "yyyy-MM-dd"));
@@ -322,6 +325,30 @@ public class ApsProductionOrderServiceImpl extends ServiceImpl<ApsProductionOrde
         }
     }
 
+    @Override
+    @Transactional
+    public R changeOrder(ApsProductionOrderDo req) {
+        if (ObjectUtil.isEmpty(req.getId())) {
+            return R.error("订单Id不能为空");
+        }
+        //订单评审状态=待计划评审,订单调整日期=今天
+        ApsProductionOrderDo apsProductionOrderDo = new ApsProductionOrderDo();
+        apsProductionOrderDo.setId(req.getId());
+        apsProductionOrderDo.setAuditstatus("待计划评审");
+        apsProductionOrderDo.setChangedate(DateUtil.date());
+        this.updateById(apsProductionOrderDo);
+
+        //撤回发布订单所有坯料计划的排程结果,参见【订单排程/一键自动排程/撤回发布排程结果】
+        List<String> orderIdList = new LinkedList<>();
+        orderIdList.add(req.getId());
+        R r = this.publishCancel(orderIdList);
+        if (!r.getCode().equals("200")) {
+            return R.error(r.getMsg());
+        }
+
+        return R.ok();
+    }
+
 }
 
 

+ 1 - 1
cx-aps/cx-aps-common/src/main/resources/mybatis/ApsProcessOperationDao.xml

@@ -40,7 +40,7 @@
     </update>
     <update id="updateBatchNumberByProcessList">
         update aps_process_operation_process_equ
-        set BACHMATERIALPROCESS = concat(BACHMATERIALPROCESS,',',#{batchnumber})
+        set BACHMATERIALPROCESS = IF(BACHMATERIALPROCESS is null || BACHMATERIALPROCESS = '',#{batchnumber},concat(BACHMATERIALPROCESS,',',#{batchnumber}))
         where DELETED = 0
         AND PROCESSID in
         <foreach collection="processIdList" separator="," open="(" item="item" close=")">

+ 9 - 0
cx-aps/cx-aps-server/src/main/java/com/rongwei/bsserver/controller/ApsBlankOrderController.java

@@ -2,6 +2,7 @@ package com.rongwei.bsserver.controller;
 
 
 import com.rongwei.bscommon.sys.service.ApsBlankOrderService;
+import com.rongwei.bsentity.domain.ApsBlankOrderDo;
 import com.rongwei.bsentity.vo.ApsPlanVo;
 import com.rongwei.bsentity.vo.CheckAndSaveOrUpdateBlankReq;
 import com.rongwei.bsentity.vo.OrderLockVo;
@@ -139,5 +140,13 @@ public class ApsBlankOrderController {
             return R.error("校验和保存坯料计划异常:"+e.getMessage());
         }
     }
+
+    /**
+     * 取消坯料计划
+     */
+    @PostMapping("/removeBlankOrder")
+    public R removeBlankOrder(@RequestBody ApsBlankOrderDo req){
+        return apsBlankOrderService.removeBlankOrder(req);
+    }
 }
 

+ 9 - 0
cx-aps/cx-aps-server/src/main/java/com/rongwei/bsserver/controller/ApsProductionOrderController.java

@@ -1,6 +1,7 @@
 package com.rongwei.bsserver.controller;
 
 import com.rongwei.bscommon.sys.service.ApsProductionOrderService;
+import com.rongwei.bsentity.domain.ApsProductionOrderDo;
 import com.rongwei.bsentity.vo.CheckAndSaveOrUpdateOrderReq;
 import com.rongwei.rwcommon.base.R;
 import org.slf4j.Logger;
@@ -65,4 +66,12 @@ public class ApsProductionOrderController {
         apsProductionOrderService.orderOuttimeAudit();
     }
 
+    /**
+     * 调整订单时打开编辑页之前的操作
+     */
+    @PostMapping("/changeOrder")
+    public R changeOrder(@RequestBody ApsProductionOrderDo req){
+        return apsProductionOrderService.changeOrder(req);
+    }
+
 }