Forráskód Böngészése

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

fangpy 8 hónapja
szülő
commit
8671630a60

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

@@ -3,6 +3,7 @@ package com.rongwei.bscommon.sys.dao;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.rongwei.bsentity.domain.ApsCraftRouteDo;
 import com.rongwei.bsentity.domain.ApsProcessOperationDo;
+import com.rongwei.bsentity.domain.ApsProcessOperationEquDo;
 import com.rongwei.bsentity.domain.ApsProcessOperationProcessEquDo;
 import com.rongwei.bsentity.vo.ApsProcessOperationAndMaterialVo;
 import com.rongwei.bsentity.vo.ProcessIdRelationVo;
@@ -94,4 +95,7 @@ public interface ApsProcessOperationDao extends BaseMapper<ApsProcessOperationDo
 
     @Select("SELECT * from aps_craft_route WHERE ID=#{craftrouteid}")
     ApsCraftRouteDo getCraftRoute(@Param("craftrouteid") String craftrouteid);
+
+    @Select("SELECT * FROM aps_process_operation_equ WHERE DELETED = 0 AND MAINID=#{mainid}")
+    List<ApsProcessOperationEquDo> getProcessOperationEqus(@Param("mainid") String mainid);
 }

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

@@ -1281,13 +1281,26 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
      */
     public void inspectionEquipmentIsAvailable(ApsProcessOperationProcessEquDo processEquDo,
                                                String equId, Date startDate, Date endDate) {
-        // 查询当前设备当前时间段是否存在不可用设备
-        List<ApsEquipmentCalendarDo> list = apsEquipmentCalendarService.list(new LambdaQueryWrapper<ApsEquipmentCalendarDo>()
+        // 查询当前设备是否存在不可以用设备的停机时间为空的数据
+        List<ApsEquipmentCalendarDo> nullSdTimeList = apsEquipmentCalendarService.list(new LambdaQueryWrapper<ApsEquipmentCalendarDo>()
+                        .eq(ApsEquipmentCalendarDo::getProcessdeviceid, equId)
+                        .isNull(ApsEquipmentCalendarDo::getSdendtime));
+        List<ApsEquipmentCalendarDo> list = new ArrayList<>();
+        //注意不可用结束时间为空,表示后面一直不可用
+        if (nullSdTimeList.isEmpty()){
+            // 查询当前设备当前时间段是否存在不可用设备
+            list = apsEquipmentCalendarService.list(new LambdaQueryWrapper<ApsEquipmentCalendarDo>()
                 .eq(ApsEquipmentCalendarDo::getProcessdeviceid, equId)
                 .and(wapper -> wapper.apply("{0}   BETWEEN sdstarttime AND sdendtime", startDate)
                         .or()
-                        .apply("{0}   BETWEEN sdstarttime AND sdendtime", endDate))
-        );
+                        .apply("{0}   BETWEEN sdstarttime AND sdendtime", endDate)));
+        }else {
+            list = apsEquipmentCalendarService.list(new LambdaQueryWrapper<ApsEquipmentCalendarDo>()
+                    .eq(ApsEquipmentCalendarDo::getProcessdeviceid, equId)
+                    .and(wapper -> wapper.apply("sdstarttime<={0}", startDate)
+                            .or()
+                            .apply("sdstarttime<={0}", endDate)));
+        }
         String newConflictdes;
         if (list.isEmpty()) {
             apsConflictLogService.recordLog(processEquDo.getId(), "", EQUIPMENT_RUN_TIME, 2, null);

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

@@ -876,6 +876,9 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
 
                         //本道工序的可选设备
                         List<ApsProcessOperationEquDo> apsProcessOperationEquDos1 = apsProcessOperationEquDos.stream().filter(hcrse -> apsProcessOperationDo1.getId().equals(hcrse.getMainid())).collect(Collectors.toList());
+                        if (apsProcessOperationEquDos1.size() == 0) {
+                            apsProcessOperationEquDos1 = apsProcessOperationDao.getProcessOperationEqus(apsProcessOperationDo1.getId());
+                        }
                         if (apsProcessOperationEquDos1.size() == 0) {
                             log.info("历史计划ID " + newblankid + " 作业ID " + apsProcessOperationDo1.getId() + " 没可选设备,总" + apsProcessOperationEquDos.size());
                             return R.error("工艺步骤" + apsProcessOperationDo1.getProcessname() + "没可选设备");
@@ -1063,6 +1066,9 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                     if (hasFirst) {
                         //本道工序的可选设备
                         List<ApsProcessOperationEquDo> apsProcessOperationEquDos1 = apsProcessOperationEquDos.stream().filter(hffomd -> apsProcessOperationDo.getId().equals(hffomd.getMainid())).collect(Collectors.toList());
+                        if (apsProcessOperationEquDos1.size() == 0) {
+                            apsProcessOperationEquDos1 = apsProcessOperationDao.getProcessOperationEqus(apsProcessOperationDo.getId());
+                        }
                         if (apsProcessOperationEquDos1.size() == 0) {
                             log.info("历史计划ID " + newblankid + " 作业ID " + apsProcessOperationDo.getId() + " 没可选设备,总" + apsProcessOperationEquDos.size());
                             return R.error("工艺步骤" + apsProcessOperationDo.getProcessname() + "没可选设备");

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

@@ -30,6 +30,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import javax.validation.constraints.NotNull;
 import java.math.BigDecimal;
 import java.util.*;
 import java.util.concurrent.ConcurrentHashMap;
@@ -1366,6 +1367,7 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
             apsReportRecordsDo.setProcessoperationid(apsProcessOperationDo.getId());
             //作业明细ID
             apsReportRecordsDo.setProcessequid(apsProcessOperationProcessEquDo.getId());
+            inputBatchNumberList.sort(Comparator.comparing(this::toSortBatchNumber));
             //输入物料的批次号
             apsReportRecordsDo.setBatchnumber(String.join(",", inputBatchNumberList));
             //实际输入物料
@@ -1661,11 +1663,7 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
             ApsProcessOperationProcessEquDo needUpdateProcessEqu = new ApsProcessOperationProcessEquDo();
             needUpdateProcessEqu.setId(apsProcessOperationProcessEquDo.getId());
             // 根据批次号列表进行升序排序
-            inputBatchNumberList.sort((e, b)->{
-                LinkedList<String> a1 = new LinkedList<>(Arrays.asList(e.split("-")));
-                LinkedList<String> b1 = new LinkedList<>(Arrays.asList(b.split("-")));
-                return sortAsc(a1,b1);
-            });
+            inputBatchNumberList.sort(Comparator.comparing(this::toSortBatchNumber));
             //该工序作业明细的加工中批次号=“{批次号}-{单个分卷序列号}”逗号拼接
             needUpdateProcessEqu.setDoingbatchnumber(String.join(",", inputBatchNumberList));
 
@@ -1712,6 +1710,17 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
             startWorkLock.remove(req.getUseDeviceId());
         }
     }
+    @NotNull
+    private String toSortBatchNumber(@NotNull String batchNumber) {
+        String[] parts = batchNumber.split("-");
+        // 去掉第一个字符串
+        String[] remainingParts = Arrays.copyOfRange(parts, 1, parts.length);
+        // 将剩余字符串不足3位的补0后拼起来
+        String joinedString = Arrays.stream(remainingParts)
+                .map(part -> String.format("%03d", Integer.parseInt(part)))
+                .collect(Collectors.joining("-"));
+        return parts[0] + '-' + joinedString;
+    }
 
     @Override
     public R generalMsUpdate(MasterSlaveUpdateVo masterSlaveUpdate) {
@@ -1733,8 +1742,8 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
         if(length2 == 0){
             return 1;
         }
-        if (Integer.parseInt(parts1.get(0)) != Integer.parseInt(parts2.get(0))) {
-            return Integer.parseInt(parts1.get(0)) - Integer.parseInt(parts2.get(0));
+        if (Integer.parseInt(parts1.get(0).replace("*", "")) != Integer.parseInt(parts2.get(0).replace("*", ""))) {
+            return Integer.parseInt(parts1.get(0).replace("*", "")) - Integer.parseInt(parts2.get(0).replace("*", ""));
         }else {
             parts1.remove(0);
             parts2.remove(0);

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

@@ -206,8 +206,10 @@ public class ReportCheckServiceImpl implements ReportCheckService {
                 currentProcessOperationMainDo.setCheckoutroll(currentProcessOperationMainDo.getCheckoutroll() + 1);
                 currentProcessOperationEqu.setCheckoutroll(currentProcessOperationEqu.getCheckoutroll() + 1);
             }
-            currentProcessOperationEqu.setWorkstatus(JOBSTATUS_TO_BE_END);
-            currentProcessOperationEqu.setBachmaterialprocess("");
+            if (StringUtils.isBlank(currentProcessOperationEqu.getBachmaterialprocess())){
+                currentProcessOperationEqu.setWorkstatus(JOBSTATUS_TO_BE_END);
+                currentProcessOperationEqu.setBachmaterialprocess("");
+            }
             // 更新 更新该报工检验记录所有输出物料 以及待加工料卷批次号
             batchNumCirculation(apsWorkInProgressInventoryDos, reportOutputDos,
                     operationOutMaterDoList,