ソースを参照

aps订单评审”提交计划评审“增加设备代号和车间代号校验

sucheng 1 年間 前
コミット
3ef9ff80a1

+ 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();
 
     }