Explorar el Código

Merge remote-tracking branch 'origin/mode-min-unit' into mode-min-unit

fangpy hace 6 meses
padre
commit
018bbddc3a

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

@@ -111,7 +111,7 @@ public interface ApsProcessOperationProcessEquDao extends BaseMapper<ApsProcessO
     @Update("update sys_serial_number set CURVALUE = ${nowValue} where MODULECODE = #{moduleCode}")
     void updateSerialNumberCurvalue(@Param("moduleCode") String moduleCode, @Param("nowValue") long nowValue);
 
-    @Select("select * from aps_process_operation_process_equ where DELETED = 0 AND PROCESSDEVICEID = #{processdeviceid} AND ID != #{apsProcessOperationProcessEquDoId} AND WAITREPORTID IS NOT NULL AND WAITREPORTID != '' AND PLANSTARTDATE != #{planstartdate}")
+    @Select("select count(1) from aps_process_operation_process_equ where DELETED = 0 AND PROCESSDEVICEID = #{processdeviceid} AND ID != #{apsProcessOperationProcessEquDoId} AND WAITREPORTID IS NOT NULL AND WAITREPORTID != '' AND PLANSTARTDATE != #{planstartdate}")
     int selectOtherDeviceCount(@Param("processdeviceid") String processdeviceid,@Param("apsProcessOperationProcessEquDoId") String apsProcessOperationProcessEquDoId, @Param("planstartdate") Date planstartdate);
 }
 

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

@@ -50,6 +50,7 @@ import static com.rongwei.bscommon.sys.service.impl.ApsProductionOrderServiceImp
 import static com.rongwei.bscommon.sys.utils.ApsUtils.addNewConflictsDesc;
 import static com.rongwei.bscommon.sys.utils.ApsUtils.removeConflictsDesc;
 import static com.rongwei.safecommon.utils.SaveConstans.ForcedConflictsDescription.EXCEEDING_THE_PROMISED_DELIVERY_DEADLINE;
+import static com.rongwei.safecommon.utils.SaveConstans.JobStatus.*;
 import static com.rongwei.safecommon.utils.SaveConstans.LockmarkType.LOCKMARK_N;
 import static com.rongwei.safecommon.utils.SaveConstans.LockmarkType.LOCKMARK_Y;
 import static com.rongwei.safecommon.utils.SaveConstans.ProductionStatus.*;
@@ -504,22 +505,25 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
         }
         // 作业明细锁定
         if (orderLockVo.getId() != null && orderLockVo.getId().size() > 0) {
-            //校验工序作业状态
-            List<ApsProcessOperationDo> apsProcessOperationDos = new ArrayList<>(apsProcessOperationService.listByIds(orderLockVo.getId()));
-            //解锁的情况下校验 工序作业对应的生产状态
-            boolean b = apsProcessOperationDos.stream().allMatch(info -> COMPLETED.equals(info.getProcessstatus()) ||
-                    PROCESSING.equals(info.getProcessstatus()));
-            if (b) {
-                return R.error("所选作业都已开工,不可以解锁,不能锁定");
-            }
-            apsProcessOperationProcessEquService.update(new LambdaUpdateWrapper<ApsProcessOperationProcessEquDo>()
-                    .in(ApsProcessOperationProcessEquDo::getId, orderLockVo.getId())
-                    .set(ApsProcessOperationProcessEquDo::getLockmarkdetail, lockMark));
             // 查询作业明细的所属作业ID
             List<ApsProcessOperationProcessEquDo> apsProcessOperationProcessEquDos = (List<ApsProcessOperationProcessEquDo>) apsProcessOperationProcessEquService.listByIds(orderLockVo.getId());
+            //校验工序作业明细状态
+            if (!apsProcessOperationProcessEquDos.isEmpty()) {
+                //解锁的情况下校验 工序作业对应的生产状态
+                boolean b = apsProcessOperationProcessEquDos.stream().allMatch(info -> JOBSTATUS_TO_BE_STARTING.equals(info.getWorkstatus()) ||
+                        JOBSTATUS_TO_BE_END.equals(info.getWorkstatus()));
+                if (b) {
+                    return R.error("所选作业明细都已开工,不可以解锁,不能锁定");
+                }
+            }
+            apsProcessOperationProcessEquDos = apsProcessOperationProcessEquDos.stream().filter(detail -> JOBSTATUS_TO_BE_START.equals(detail.getWorkstatus())).collect(Collectors.toList());
+            List<String> updateEquIds = apsProcessOperationProcessEquDos.stream().map(ApsProcessOperationProcessEquDo::getId).collect(Collectors.toList());
             //  所有作业ID
             List<String> proids = apsProcessOperationProcessEquDos.stream().map(ApsProcessOperationProcessEquDo::getProcessid).collect(Collectors.toList());
             proids = proids.stream().distinct().collect(Collectors.toList());
+            apsProcessOperationProcessEquService.update(new LambdaUpdateWrapper<ApsProcessOperationProcessEquDo>()
+                    .in(ApsProcessOperationProcessEquDo::getId, updateEquIds)
+                    .set(ApsProcessOperationProcessEquDo::getLockmarkdetail, lockMark));
             // 查询存在未锁定作业明细的作业ID
             List<ApsProcessOperationProcessEquDo> popes = apsProcessOperationProcessEquService.list(new LambdaQueryWrapper<ApsProcessOperationProcessEquDo>().in(ApsProcessOperationProcessEquDo::getProcessid, proids)
                     .eq(ApsProcessOperationProcessEquDo::getLockmarkdetail, LOCKMARK_N));
@@ -552,7 +556,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
                 }
                 retMsg = "解锁成功";
             }
-            return R.ok("200", retMsg, orderLockVo.getId());
+            return R.ok("200", retMsg, updateEquIds);
         } else {
             Date lockStartTime = orderLockVo.getLockStartTime();
             if (lockStartTime != null) {
@@ -570,8 +574,20 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
                 List<ApsProcessOperationProcessEquDo> processDetailInfoByLockTime = this.baseMapper.getProcessDetailInfoByLockTime(date, lockMark);
                 if (processDetailInfoByLockTime != null && processDetailInfoByLockTime.size() > 0) {
                     List<String> lpeus = processDetailInfoByLockTime.stream().map(ApsProcessOperationProcessEquDo::getId).collect(Collectors.toList());
+                    List<ApsProcessOperationProcessEquDo> equDos = new ArrayList<>(apsProcessOperationProcessEquService.listByIds(lpeus));
+                    //校验工序作业明细状态
+                    if (!equDos.isEmpty()) {
+                        //解锁的情况下校验 工序作业对应的生产状态
+                        boolean b = equDos.stream().allMatch(info -> JOBSTATUS_TO_BE_STARTING.equals(info.getWorkstatus()) ||
+                                JOBSTATUS_TO_BE_END.equals(info.getWorkstatus()));
+                        if (b) {
+                            return R.error("所选作业明细都已开工,不可以解锁,不能锁定");
+                        }
+                    }
+                    equDos = equDos.stream().filter(detail -> JOBSTATUS_TO_BE_START.equals(detail.getWorkstatus())).collect(Collectors.toList());
+                    List<String> updateEquIds = equDos.stream().map(ApsProcessOperationProcessEquDo::getId).collect(Collectors.toList());
                     apsProcessOperationProcessEquService.update(new LambdaUpdateWrapper<ApsProcessOperationProcessEquDo>()
-                            .in(ApsProcessOperationProcessEquDo::getId, lpeus)
+                            .in(ApsProcessOperationProcessEquDo::getId, updateEquIds)
                             .set(ApsProcessOperationProcessEquDo::getLockmarkdetail, lockMark));
                     String retMsg = "";
                     // 锁定
@@ -580,7 +596,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
                     } else if (LOCKMARK_N.equals(lockMark)) {
                         retMsg = "解锁成功";
                     }
-                    return R.ok("200", retMsg, lpeus);
+                    return R.ok("200", retMsg, updateEquIds);
                 }
             }
         }
@@ -937,7 +953,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
 
             //更新生产状态为“待发布”(20)
             List<ApsBlankOrderVo> toupstatus = apsBlankOrders.stream().filter(v ->
-                    blankids.contains(v.getId()) && (StringUtils.isBlank(v.getIfcp()) || "N".equals(v.getIfcp())))
+                            blankids.contains(v.getId()) && (StringUtils.isBlank(v.getIfcp()) || "N".equals(v.getIfcp())))
                     .collect(Collectors.toList());
             updateProductStatusByOrderIds(toupstatus);
             // 自动加锁坯料计划下的工序作业
@@ -3591,6 +3607,10 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
             String batchnumber = progressWork.getBatchnumber();
             //查询被借调批次号的作业明细信息
             ApsProcessOperationProcessEquDo needBorrowOperationEqu = this.baseMapper.selectUseThisBatchNumberProcessEqu(batchnumber);
+            //没找到被借调的作业明细,则直接结束借调逻辑
+            if (ObjectUtil.isEmpty(needBorrowOperationEqu)) {
+                return;
+            }
             //查询被借调作业的信息
             ApsProcessOperationDo needBorrowOperation = apsProcessOperationService.getById(needBorrowOperationEqu.getProcessid());
 //            //获取该在制品作业明细的ID

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

@@ -1534,7 +1534,7 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                         BigDecimal lval = changeSize(apsProcessOperationOutMaterDo.getProlength(), apsProcessOperationOutMaterDo1.getLengthrule(), apsProcessOperationOutMaterDo1.getLengthchange(), apsProcessOperationOutMaterDo1.getProlength());
                         apsProcessOperationOutMaterDo1.setProlength(lval);
                         apsProcessOperationOutMaterDo1.setPlanrollnum(apsProcessOperationDo.getPlanprocessrall() * apsProcessOperationOutMaterDo1.getOutval());
-                        if (apsProcessOperationOutMaterDoList1.size() == 1 && apsProcessOperationOutMaterDo1.getOutval() == 1) {
+                        if (apsProcessOperationOutMaterDoList1.size() == 1) {
                             //输入单卷重*输出宽度/输入宽度
                             String singlerollweight = df.format(apsProcessOperationOutMaterDo.getSinglerollweight().multiply(wval == null ? BigDecimal.valueOf(1) : wval).divide(apsProcessOperationOutMaterDo.getProwidth() == null ? BigDecimal.valueOf(1) : apsProcessOperationOutMaterDo.getProwidth(), 3, BigDecimal.ROUND_HALF_UP));
                             apsProcessOperationOutMaterDo1.setSinglerollweight(new BigDecimal(singlerollweight));
@@ -1870,7 +1870,7 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
             BigDecimal lval = changeSize(blanckdata.getBigDecimal("PROLENGTH"), apsProcessOperationOutMaterDo.getLengthrule(), apsProcessOperationOutMaterDo.getLengthchange(), apsProcessOperationOutMaterDo.getProlength());
             apsProcessOperationOutMaterDo.setProlength(lval);
             apsProcessOperationOutMaterDo.setPlanrollnum(rollnum);
-            if (apsProcessOperationOutMaterDos.size() == 1 && apsProcessOperationOutMaterDo.getOutval() == 1) {
+            if (apsProcessOperationOutMaterDos.size() == 1) {
                 //输入单卷重*输出宽度/输入宽度
                 String outsinglerollweight = df.format(singlerollweight.multiply(apsProcessOperationOutMaterDo.getProwidth() == null ? BigDecimal.valueOf(1) : apsProcessOperationOutMaterDo.getProwidth()).divide(apsProcessOperationDo.getProwidth() == null ? BigDecimal.valueOf(1) : apsProcessOperationDo.getProwidth(), 3, BigDecimal.ROUND_HALF_UP));
                 apsProcessOperationOutMaterDo.setSinglerollweight(new BigDecimal(outsinglerollweight));
@@ -2223,6 +2223,16 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
 
             if (bool1 && bool2) {
                 String blanckId = apsProcessOperationDo.getBlankid();
+                //取消第一道
+                if (StringUtils.isBlank(apsProcessOperationDo.getPreviousprocessid())) {
+                    //赋值坯料计划冗余字段 是否待领料
+                    String isWaitGetMaterial = apsBlankOrderDao.selectIsWaitGetMaterialById(blanckId);
+                    ApsBlankOrderDo apsBlankOrderDo = new ApsBlankOrderDo();
+                    apsBlankOrderDo.setId(blanckId);
+                    apsBlankOrderDo.setIswaitgetmaterial(isWaitGetMaterial);
+                    apsBlankOrderService.updateById(apsBlankOrderDo);
+                }
+
                 List<String> blankIds = Arrays.asList(blanckId.split(","));
                 List<ApsProcessOperationDo> apsProcessOperationList = apsProcessOperationService.getBaseMapper().selectList(new QueryWrapper<ApsProcessOperationDo>().lambda().eq(ApsProcessOperationDo::getBlankid, blanckId));
                 List<String> processIds = apsProcessOperationList.stream().map(ApsProcessOperationDo::getId).collect(Collectors.toList());
@@ -2354,6 +2364,15 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
 
         boolean bool = apsProcessOperationProcessEquService.saveOrUpdate(processOperationProcessEquDo);
         if (bool) {
+            //取消第一道
+            if (StringUtils.isBlank(processOperationProcessEquDo.getPreviousprocessesids())) {
+                //赋值坯料计划冗余字段 是否待领料
+                String isWaitGetMaterial = apsBlankOrderDao.selectIsWaitGetMaterialById(processOperationProcessEquDo.getBlankid());
+                ApsBlankOrderDo apsBlankOrderDo = new ApsBlankOrderDo();
+                apsBlankOrderDo.setId(processOperationProcessEquDo.getBlankid());
+                apsBlankOrderDo.setIswaitgetmaterial(isWaitGetMaterial);
+                apsBlankOrderService.updateById(apsBlankOrderDo);
+            }
             return R.ok();
         } else {
             return R.error();

+ 19 - 15
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsReportRecordsServiceImpl.java

@@ -1,5 +1,6 @@
 package com.rongwei.bscommon.sys.service.impl;
 
+import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -992,7 +993,7 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
             ApsProductionOrderDo apsProductionOrderDo = apsProductionOrderService.getById(apsBlankOrderDo.getProductionorderid());
             //合并加工作业开工之后进行报工,同步更新一起开工的其他作业的加工参数//需求变更:前面条件成立的前提下增加查找与当前工序作业炉次号相同的数据
             if (ObjectUtil.isNotEmpty(apsReportMachiningDoList)) {
-                syncOtherEquRecords(apsProcessOperationDo, apsProcessOperationProcessEquDo, nowReportRecordsDo.getProcessequid(), apsReportMachiningDoList, currentUser, nowReportRecordsDo.getHeatnumber());
+                syncOtherEquRecords(apsProcessOperationDo, apsProcessOperationProcessEquDo, nowReportRecordsDo, apsReportMachiningDoList, currentUser, nowReportRecordsDo.getHeatnumber());
             }
 
             //如果工序作业是否坯料工序=是,检查每个报工输出物料批次号
@@ -1978,18 +1979,16 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
      *
      * @param apsProcessOperationDo
      * @param apsProcessOperationProcessEquDo
-     * @param processEquId
+     * @param apsReportRecordsDo
      * @param apsReportMachiningDoList
      */
-    private void syncOtherEquRecords(ApsProcessOperationDo apsProcessOperationDo, ApsProcessOperationProcessEquDo apsProcessOperationProcessEquDo, String processEquId, List<ApsReportMachiningDo> apsReportMachiningDoList, SysUserVo currentUser, String heatnumber) {
-        List<ApsReportMachiningDo> machList = apsReportMachiningService.list();
-        List<String> mainRecordIds = machList.stream().map(ApsReportMachiningDo::getMainid).distinct().collect(Collectors.toList());
+    private void syncOtherEquRecords(ApsProcessOperationDo apsProcessOperationDo, ApsProcessOperationProcessEquDo apsProcessOperationProcessEquDo, ApsReportRecordsDo apsReportRecordsDo, List<ApsReportMachiningDo> apsReportMachiningDoList, SysUserVo currentUser, String heatnumber) {
         if ("合并加工".equals(apsProcessOperationDo.getProcessway())) {
             List<ApsProcessOperationProcessEquDo> list = apsProcessOperationProcessEquService.list(new LambdaQueryWrapper<ApsProcessOperationProcessEquDo>()
                     .eq(ApsProcessOperationProcessEquDo::getProcessdeviceid, apsProcessOperationProcessEquDo.getProcessdeviceid())
                     .eq(ApsProcessOperationProcessEquDo::getPlanstartdate, apsProcessOperationProcessEquDo.getPlanstartdate())
                     .eq(ApsProcessOperationProcessEquDo::getProcessid, apsProcessOperationDo.getId())
-                    .notIn(ApsProcessOperationProcessEquDo::getId, processEquId)
+                    .notIn(ApsProcessOperationProcessEquDo::getId, apsReportRecordsDo.getProcessequid())
                     .and(qw -> qw.gt(ApsProcessOperationProcessEquDo::getActualfinishdate, apsProcessOperationProcessEquDo.getActualstartdate()).or().isNull(ApsProcessOperationProcessEquDo::getActualfinishdate)));
             List<String> equIds = list.stream().map(ApsProcessOperationProcessEquDo::getId).collect(Collectors.toList());
             log.info("待同步工序作业明细主键数据:{}", equIds);
@@ -1998,13 +1997,17 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
                         .eq(ApsReportRecordsDo::getDeleted, "0")
                         .eq(ApsReportRecordsDo::getHeatnumber, heatnumber)
                         .in(ApsReportRecordsDo::getProcessequid, equIds)
-                        .in(ApsReportRecordsDo::getReportworkstatus, "已开工", "已报工"));
+                        .in(ApsReportRecordsDo::getReportworkstatus, "已开工", "已报工")
+                        .ne(ApsReportRecordsDo::getId, apsReportRecordsDo.getId()));
+                List<String> recordIds = recordsDos.stream().map(ApsReportRecordsDo::getId).collect(Collectors.toList());
+                if (!recordIds.isEmpty()) {
+                    apsReportMachiningService.remove(new LambdaUpdateWrapper<ApsReportMachiningDo>()
+                            .in(ApsReportMachiningDo::getMainid, recordIds));
+                }
+                List<ApsReportMachiningDo> needInsertList = new LinkedList<>();
                 recordsDos.forEach(info -> {
-                    if (mainRecordIds.contains(info.getId())) {
-                        apsReportMachiningService.remove(new LambdaUpdateWrapper<ApsReportMachiningDo>()
-                                .eq(ApsReportMachiningDo::getMainid, info.getId()));
-                    }
-                    apsReportMachiningDoList.forEach(mach -> {
+                    for (ApsReportMachiningDo apsReportMachiningDo : apsReportMachiningDoList) {
+                        ApsReportMachiningDo mach = BeanUtil.copyProperties(apsReportMachiningDo, ApsReportMachiningDo.class);
                         mach.setId(SecurityUtil.getUUID());
                         mach.setMainid(info.getId());
                         mach.setCreatedate(new Date());
@@ -2013,11 +2016,12 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
                         mach.setModifydate(new Date());
                         mach.setModifyuserid(currentUser.getId());
                         mach.setModifyusername(currentUser.getName());
-                    });
-                    if (!apsReportMachiningDoList.isEmpty()) {
-                        apsReportMachiningService.saveBatch(apsReportMachiningDoList);
+                        needInsertList.add(mach);
                     }
                 });
+                if (!needInsertList.isEmpty()) {
+                    apsReportMachiningService.saveBatch(needInsertList);
+                }
             }
         }
     }

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

@@ -346,7 +346,7 @@
         IF(a.PREPAREMATERIAL = '否'
         and a.PRODUCTSTATUS = '30'
         and b.IFBLANKPROCESS = '否'
-        and (IF(a.PREPAREMATERIALBATCHNO = '' || a.PREPAREMATERIALBATCHNO is null,0,(LENGTH( a.PREPAREMATERIALBATCHNO ) - LENGTH( REPLACE ( a.PREPAREMATERIALBATCHNO, ',', '' ) ) + 1)) &lt; (b.PLANPROCESSRALL-b.STARTINGROLL-b.CANCELROLL) ) > 0
+        and (IF(a.PREPAREMATERIALBATCHNO = '' || a.PREPAREMATERIALBATCHNO is null,0,(LENGTH( a.PREPAREMATERIALBATCHNO ) - LENGTH( REPLACE ( a.PREPAREMATERIALBATCHNO, ',', '' ) ) + 1)) &lt; (b.PLANPROCESSRALL-b.CANCELROLL) )
         ,'是','否') AS 'ISWAITGETMATERIAL'
         from aps_blank_order a LEFT JOIN (select * from aps_process_operation where DELETED = 0 AND PREVIOUSPROCESSID is null) b ON a.ID = b.BLANKID
         where a.DELETED = 0