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

提交坯料计划校验辊类型及设备类型

DLC 3 hónapja
szülő
commit
385e342139

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

@@ -1,10 +1,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.domain.*;
 import com.rongwei.bsentity.vo.ApsProcessOperationAndMaterialVo;
 import com.rongwei.bsentity.vo.ProcessIdRelationVo;
 import org.apache.ibatis.annotations.Param;
@@ -123,4 +120,8 @@ public interface ApsProcessOperationDao extends BaseMapper<ApsProcessOperationDo
     @Select("SELECT * FROM aps_process_operation_process_equ WHERE DELETED = 0 AND BLANKID = #{blankid} and IFNULL(NEXTPROCESSESIDS,'')!=''")
     List<ApsProcessOperationProcessEquDo> getNextOperationProcessEqus(@Param("blankid") String blankid);
 
+    @Select("select ID,CHECKITEMTYPE,'设备' AS EQUIPMENTUSAGE from asp_check_items where DELETED='0' and IFNULL(CHECKITEMTYPE,'')!=''\n" +
+            "union all select ID,RESOURCENTYPE,'资源组' AS EQUIPMENTUSAGE from aps_resource_group where DELETED='0' and IFNULL(RESOURCENTYPE,'')!=''")
+    List<AspCheckItemsDo> getcheckItemsDos();
+
 }

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

@@ -107,6 +107,10 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
     private GanttServiceImpl ganttService;
     @Autowired
     private ApsConflictLogServiceImpl apsConflictLogService;
+    @Autowired
+    private ApsRollerTypeService apsRollerTypeService;
+    @Autowired
+    private ApsProductionProcessesService apsProductionProcessesService;
 
 
     private final static Map<String, String> UNIT_MAP = new HashMap<String, String>() {{
@@ -1233,9 +1237,15 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
         List<ApsProcessOperationOutMaterDo> apsProcessOperationOutMaterList = apsProcessOperationOutMaterService.getBaseMapper().selectList(new QueryWrapper<ApsProcessOperationOutMaterDo>().lambda().eq(ApsProcessOperationOutMaterDo::getBlankid, blankId));
         //坯料计划对应的可选设备
         List<ApsProcessOperationEquDo> apsProcessOperationEquDoList = apsProcessOperationEquService.getBaseMapper().selectList(new QueryWrapper<ApsProcessOperationEquDo>().lambda().eq(ApsProcessOperationEquDo::getBlankid, blankId));
+        //查询所有工序管理
+        List<ApsProductionProcessesDo> allProcessList = apsProductionProcessesService.list();
+        //查询设备或资源组的设备类型
+        List<AspCheckItemsDo> checkItemsDos = apsProcessOperationDao.getcheckItemsDos();
 
         //如果有前道工序作业,并且该工序输入物料ID不是前道工序作业的输出物料ID,错误提示:{工序}{工序显示名}的输入物料不存在,请重新选择
 
+        //查询所有设备辊类型
+        List<ApsRollerTypeDo> allRollerList = apsRollerTypeService.list();
         //遍历工序作业
         for (ApsProcessOperationDo apsProcessOperationDo : apsProcessOperationList) {
             if (apsProcessOperationDo.getPlanprocessrall() == null || apsProcessOperationDo.getPlanprocessrall().equals(BigDecimal.valueOf(0))) {
@@ -1334,16 +1344,41 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                 }
             }
 
-            //轧机作业的可选设备必须选择辊类型
-            if (apsProcessOperationDo.getIszj().equals("1")) {
-                List<ApsProcessOperationEquDo> zjequs = apsProcessOperationEquDoList.stream().filter(equ -> equ.getMainid().equals(apsProcessOperationDo.getId())).collect(Collectors.toList());
-                for (ApsProcessOperationEquDo processOperationEquDo : zjequs) {
+            //该作业工序的设备类型
+            String oktype = "";
+            ApsProductionProcessesDo processesDo = allProcessList.stream().filter(pd -> pd.getId().equals(apsProcessOperationDo.getProcessid())).findFirst().orElse(null);
+            if (processesDo != null && StringUtils.isNotBlank(processesDo.getEquipmenttype())) {
+                oktype = processesDo.getEquipmenttype();
+            }
+            //该作业可选设备
+            List<ApsProcessOperationEquDo> zyequs = apsProcessOperationEquDoList.stream().filter(equ -> equ.getMainid().equals(apsProcessOperationDo.getId())).collect(Collectors.toList());
+            for (ApsProcessOperationEquDo processOperationEquDo : zyequs) {
+                //轧机作业的可选设备必须选择辊类型
+                if (apsProcessOperationDo.getIszj().equals("1")) {
                     if (ObjectUtil.isEmpty(processOperationEquDo.getRollerid())) {
                         return R.error(apsProcessOperationDo.getProcess() + apsProcessOperationDo.getProcessname() + "轧机作业的可选设备必须选择辊类型");
                     }
+
+                    ApsRollerTypeDo apsRollerTypeDo = allRollerList.stream().filter(ro -> ro.getCheckitemid().equals(processOperationEquDo.getResourceid()) && ro.getId().equals(processOperationEquDo.getRollerid())).findFirst().orElse(null);
+                    if (apsRollerTypeDo == null) {
+                        return R.error(apsProcessOperationDo.getProcess() + apsProcessOperationDo.getProcessname() + "轧机作业的可选设备辊类型选择不正确");
+                    }
                 }
-            }
 
+                //校验设备类型
+                if (oktype != "") {
+                    AspCheckItemsDo checkItemsDo = checkItemsDos.stream().filter(ci -> ci.getId().equals(processOperationEquDo.getResourceid())).findFirst().orElse(null);
+                    if (checkItemsDo != null) {
+                        List<String> etypearr = Arrays.asList(checkItemsDo.getCheckitemtype().split(","));
+                        List<String> oktypearr = Arrays.asList(oktype.split(","));
+                        for (String etype : etypearr) {
+                            if (!oktypearr.contains(etype)) {
+                                return R.error(apsProcessOperationDo.getProcess() + apsProcessOperationDo.getProcessname() + "作业的可选设备类型与工序要求的设备类型不一致");
+                            }
+                        }
+                    }
+                }
+            }
         }
 
         //校验工序作业明细的加工设备和加工车间的代号是否为空
@@ -2167,7 +2202,7 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                         curEquCancelRoll = tempRoll;
                     }
                     //取消和更新作业明细
-                    euqnowhr+=processOperationProcessEquDo.getId()+",";
+                    euqnowhr += processOperationProcessEquDo.getId() + ",";
                     cancelOperationProcessEquVo.setCurEquCancelRoll(curEquCancelRoll);
                     cancelOperationProcessEquVo.setApsProcessOperationDo(apsProcessOperationDo);
                     cancelOperationProcessEquVo.setProcessOperationProcessEquDo(processOperationProcessEquDo);
@@ -2181,10 +2216,10 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
             }
 
             //获取其他明细的取消卷数合计
-            if(euqnowhr!=""){
-                euqnowhr="and ID not in('"+euqnowhr.substring(0, euqnowhr.length() - 1).replace(",","','")+"')";
+            if (euqnowhr != "") {
+                euqnowhr = "and ID not in('" + euqnowhr.substring(0, euqnowhr.length() - 1).replace(",", "','") + "')";
             }
-            List<ApsProcessOperationProcessEquDo> apsProcessOperationProcessAllEqus = apsProcessOperationDao.getProcessOperationProcessAllEqus(newOperDo.getId(),euqnowhr);
+            List<ApsProcessOperationProcessEquDo> apsProcessOperationProcessAllEqus = apsProcessOperationDao.getProcessOperationProcessAllEqus(newOperDo.getId(), euqnowhr);
             for (ApsProcessOperationProcessEquDo equDo : apsProcessOperationProcessAllEqus) {
                 if (equDo.getCancelroll() > 0) {
                     //计算所有作业明细已取消卷数的合计