Pārlūkot izejas kodu

Merge remote-tracking branch 'origin/master'

xiahan 1 gadu atpakaļ
vecāks
revīzija
dafe5c7f89

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

@@ -208,6 +208,8 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
                     apsProcessOperationProcessEqu.setPlanstartdate(Date.from(process.getStartTime().atZone(ZoneId.systemDefault()).toInstant()));
                     apsProcessOperationProcessEqu.setPlanenddate(Date.from(process.getEndTime().atZone(ZoneId.systemDefault()).toInstant()));
                     apsProcessOperationProcessEqu.setPlanprocessrall(process.getProducePcNum());
+                    apsProcessOperationProcessEqu.setHasconflict(process.getHasConflict());
+                    apsProcessOperationProcessEqu.setConflictdes(process.getConflictDes());
                     apsProcessOperationProcessEquDos.add(apsProcessOperationProcessEqu);
                 }
                 // 合并生产工序
@@ -236,6 +238,8 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
                         apsProcessOperationProcessEqu.setProcessworkshopid(process.getEquipment().getWorkshopid());
                         apsProcessOperationProcessEqu.setProcessworkshop(process.getEquipment().getWorkshopname());
                         apsProcessOperationProcessEqu.setTenantid(process.getEquipment().getFactoryid());
+                        apsProcessOperationProcessEqu.setHasconflict(process.getHasConflict());
+                        apsProcessOperationProcessEqu.setConflictdes(process.getConflictDes());
                         apsProcessOperationProcessEquDos.add(apsProcessOperationProcessEqu);
                     });
                 }

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

@@ -14,6 +14,8 @@ import com.rongwei.bsentity.vo.CommonUpdateProductionStatusReq;
 import com.rongwei.bsentity.vo.PreviousProcessVo;
 import com.rongwei.bsentity.vo.ProcessIdRelationVo;
 import com.rongwei.commonservice.service.SysMindMappingService;
+import com.rongwei.rwadmincommon.system.domain.SysOrganizationDo;
+import com.rongwei.rwadmincommon.system.service.SysOrganizationService;
 import com.rongwei.rwcommon.base.R;
 import com.rongwei.rwcommon.utils.SecurityUtil;
 import com.rongwei.rwcommon.utils.StringUtils;
@@ -71,6 +73,10 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
     private ApsProductionOrderService apsProductionOrderService;
     @Autowired
     private ApsBlankOrderService apsBlankOrderService;
+    @Autowired
+    private AspCheckItemsService aspCheckItemsService;
+    @Autowired
+    private SysOrganizationService sysOrganizationService;
 
 
     private final static Map<String, String> UNIT_MAP = new HashMap<String, String>() {{
@@ -530,6 +536,14 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
             e.printStackTrace();
             return R.error("请输入正确的坯料计划ID");
         }
+        Boolean checkDeviceAndOrgCode = false;
+        try {
+            if (params.containsKey("checkDeviceAndOrgCode")) {
+                checkDeviceAndOrgCode = true;
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
         //查询坯料计划对应的工序作业
         List<ApsProcessOperationDo> apsProcessOperationList = this.baseMapper.selectList(new QueryWrapper<ApsProcessOperationDo>().lambda().eq(ApsProcessOperationDo::getBlankid, blankId));
         //判断工序作业是否为空,为空表示没有选择工艺路线
@@ -577,6 +591,53 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                 }
             }
         }
+        //校验工序作业明细的加工设备和加工车间的代号是否为空
+        if (checkDeviceAndOrgCode) {
+            //查询坯料计划对应的所有工序作业明细
+            List<ApsProcessOperationProcessEquDo> list = apsProcessOperationProcessEquService.list(new QueryWrapper<ApsProcessOperationProcessEquDo>().lambda().eq(ApsProcessOperationProcessEquDo::getBlankid, blankId));
+            //获取所有工序作业明细的加工设备
+            Set<String> deviceIds = list.stream().filter(item -> ObjectUtil.isNotEmpty(item.getProcessdeviceid())).map(ApsProcessOperationProcessEquDo::getProcessdeviceid).collect(Collectors.toSet());
+            //查询设备对应的代号
+            List<AspCheckItemsDo> deviceList = aspCheckItemsService.list(new QueryWrapper<AspCheckItemsDo>().lambda().in(AspCheckItemsDo::getId, deviceIds));
+            //组装成map类型,以便筛选和查询
+            Map<String, Object> deviceMap = new HashMap<>();
+            for (AspCheckItemsDo aspCheckItemsDo : deviceList) {
+                deviceMap.put(aspCheckItemsDo.getId(), aspCheckItemsDo.getEquipmentcode());
+            }
+            //获取所有工序作业明细的加工车间
+            Set<String> workShopIds = list.stream().filter(item -> ObjectUtil.isNotEmpty(item.getProcessworkshopid())).map(ApsProcessOperationProcessEquDo::getProcessworkshopid).collect(Collectors.toSet());
+            //查询车间对应的代号
+            List<SysOrganizationDo> workSopList = sysOrganizationService.list(new QueryWrapper<SysOrganizationDo>().lambda().in(SysOrganizationDo::getId, workShopIds));
+            //组装成map类型,以便筛选和查询
+            Map<String, Object> workShopMap = new HashMap<>();
+            for (SysOrganizationDo sysOrganizationDo : workSopList) {
+                workShopMap.put(sysOrganizationDo.getId(), sysOrganizationDo.getMark());
+            }
+
+            //遍历查询是否有工序没有对应的设备代号和车间代号
+            for (ApsProcessOperationProcessEquDo equDo : list) {
+                //查询工序作业
+                ApsProcessOperationDo apsProcessOperationDo = apsProcessOperationList.stream().filter(item -> item.getId().equals(equDo.getProcessid())).findFirst().get();
+
+                //校验设备代号
+                if (ObjectUtil.isNotEmpty(equDo.getProcessdeviceid())) {
+                    if (deviceMap.containsKey(equDo.getProcessdeviceid())) {
+                        if (ObjectUtil.isEmpty(deviceMap.get(equDo.getProcessdeviceid()))) {
+                            return R.error(apsProcessOperationDo.getProcess() + apsProcessOperationDo.getProcessname() + "的加工设备" + equDo.getProcessdevice() + "代号不能为空");
+                        }
+                    }
+                }
+                //校验车间代号
+                if (ObjectUtil.isNotEmpty(equDo.getProcessworkshopid())) {
+                    if (workShopMap.containsKey(equDo.getProcessworkshopid())) {
+                        if (ObjectUtil.isEmpty(workShopMap.get(equDo.getProcessworkshopid()))) {
+                            return R.error(apsProcessOperationDo.getProcess() + apsProcessOperationDo.getProcessname() + "的加工车间" + equDo.getProcessworkshop() + "代号不能为空");
+                        }
+                    }
+                }
+            }
+
+        }
         return R.ok();
 
     }

+ 11 - 1
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/domain/ApsProcessOperationProcessEquDo.java

@@ -16,7 +16,7 @@ import lombok.experimental.Accessors;
  * </p>
  *
  * @author fpy
- * @since 2024-04-08
+ * @since 2024-04-18
  */
 @Data
 @EqualsAndHashCode(callSuper = true)
@@ -143,6 +143,16 @@ public class ApsProcessOperationProcessEquDo extends BaseDo {
      */
     @TableField("BLANKID")
     private String blankid;
+    /**
+     * 是否冲突(y:是,n:否)
+     */
+    @TableField("HASCONFLICT")
+    private String hasconflict;
+    /**
+     * 冲突描述
+     */
+    @TableField("CONFLICTDES")
+    private String conflictdes;
 
 
 }

+ 26 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/vo/ProductionProcesses.java

@@ -139,6 +139,16 @@ public class ProductionProcesses{
      */
     private List<AluminumCoil> aluminumCoils;
 
+    /**
+     * 是否冲突
+     */
+    private String hasConflict;
+
+    /**
+     * 冲突描述
+     */
+    private String conflictDes;
+
     public String getEquipmentType() {
         return equipmentType;
     }
@@ -341,4 +351,20 @@ public class ProductionProcesses{
     public void setSeriesProduceMark(String seriesProduceMark) {
         this.seriesProduceMark = seriesProduceMark;
     }
+
+    public String getHasConflict() {
+        return hasConflict;
+    }
+
+    public void setHasConflict(String hasConflict) {
+        this.hasConflict = hasConflict;
+    }
+
+    public String getConflictDes() {
+        return conflictDes;
+    }
+
+    public void setConflictDes(String conflictDes) {
+        this.conflictDes = conflictDes;
+    }
 }