Преглед на файлове

管道检验员必选校验,前台约检直接跳转

xzc преди 3 дни
родител
ревизия
26f128671e

+ 3 - 3
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/acceptorder/PipeAcceptOrderServiceImpl.java

@@ -305,18 +305,18 @@ public class PipeAcceptOrderServiceImpl implements PipeAcceptOrderService {
             acceptOrderMapper.insert(acceptOrderDO);
         }
 
-        // 更新人员
+        // 更新人员(检验员改为非必选,teamList / userIds 可能为空,用 emptyIfNull 防护 NPE)
         pipeAcceptOrderUserMapper.delete(PipeAcceptOrderUserDO::getOrderId,acceptOrderSubmitVO.getId());
         List<PipeAcceptOrderUserDO> acceptOrderList = new ArrayList<>();
 
-        acceptOrderSubmitVO.getTeamList().forEach(team->{
+        CollUtil.emptyIfNull(acceptOrderSubmitVO.getTeamList()).forEach(team->{
             PipeAcceptOrderUserDO leader = new PipeAcceptOrderUserDO();
             leader.setOrderId(acceptOrderSubmitVO.getId());
             leader.setType(100);
             leader.setGroupTeamId(team.getGroupTeamId());
             leader.setUserId(team.getLeaderId());
 
-            List<PipeAcceptOrderUserDO> memberList = team.getUserIds().stream().map(memberId -> {
+            List<PipeAcceptOrderUserDO> memberList = CollUtil.emptyIfNull(team.getUserIds()).stream().map(memberId -> {
                 PipeAcceptOrderUserDO member = new PipeAcceptOrderUserDO();
                 member.setOrderId(acceptOrderSubmitVO.getId());
                 member.setType(200);

+ 21 - 1
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/equipboilerscheduling/EquipBoilerSchedulingServiceImpl.java

@@ -277,6 +277,7 @@ public class EquipBoilerSchedulingServiceImpl extends ServiceImpl<EquipBoilerSch
     }
 
     @Override
+    @Transactional
     public void assign(BoilerPlanSchedulingAssignVO boilerPlanSchedulingAssignVO) {
         boilerPlanSchedulingAssignVO.getTaskList().forEach(item->{
             assignItem(item,boilerPlanSchedulingAssignVO.getSource());
@@ -292,6 +293,9 @@ public class EquipBoilerSchedulingServiceImpl extends ServiceImpl<EquipBoilerSch
             source = 100;
         }
 
+        // 前台约检来源:记录新建的计划表任务id,用于自动生成受理单
+        String newTaskIdForFrontDesk = null;
+
         List<String> equipIds = new ArrayList<>();
         EquipBoilerSchedulingRecordDO schedulingDO = new EquipBoilerSchedulingRecordDO();
         List<EquipBoilerSchedulingRecordDO> allList = new ArrayList<>();
@@ -350,10 +354,18 @@ public class EquipBoilerSchedulingServiceImpl extends ServiceImpl<EquipBoilerSch
             task.setPlanDate(taskVO.getDate());
             task.setType(taskVO.getType());
             task.setSource(source);
-            task.setHasOrderConfirm(taskVO.getHasOrderConfirm() == null || taskVO.getHasOrderConfirm());
+            // 前台约检来源:强制不需要前台约检确认,自动生成受理单
+            if (Integer.valueOf(200).equals(source)) {
+                task.setHasOrderConfirm(false);
+            } else {
+                task.setHasOrderConfirm(taskVO.getHasOrderConfirm() == null || taskVO.getHasOrderConfirm());
+            }
             if(!equipIdList.isEmpty()){
                 equipBoilerSchedulingRecordMapper.insert(task);
                 allList.add(task);
+                if (Integer.valueOf(200).equals(source)) {
+                    newTaskIdForFrontDesk = task.getId();
+                }
 
                 List<EquipBoilerSchedulingItemDO> list = equipIdList.stream().map(id -> {
                     equipIds.add(id);
@@ -451,6 +463,14 @@ public class EquipBoilerSchedulingServiceImpl extends ServiceImpl<EquipBoilerSch
             });
         }
 
+        // 前台约检来源:跳过计划表提交+约检确认,直接生成受理单
+        if (Integer.valueOf(200).equals(source) && newTaskIdForFrontDesk != null) {
+            BoilerConfirmScheduleVO confirmVO = new BoilerConfirmScheduleVO();
+            confirmVO.setIds(Collections.singletonList(newTaskIdForFrontDesk));
+            confirm(confirmVO);
+            return;
+        }
+
         //首页待办 - 计划表
         allList.forEach(item->{
 

+ 25 - 5
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/equippipescheduling/EquipPipeSchedulingServiceImpl.java

@@ -306,6 +306,9 @@ public class EquipPipeSchedulingServiceImpl extends ServiceImpl<EquipPipeSchedul
             source = 100;
         }
 
+        // 前台约检来源:记录新建的计划表任务id,用于自动生成受理单
+        String newTaskIdForFrontDesk = null;
+
         List<String> equipIds = new ArrayList<>();
         EquipPipeSchedulingDO schedulingDO = new EquipPipeSchedulingDO();
         List<EquipPipeSchedulingDO> allList = new ArrayList<>();
@@ -326,7 +329,8 @@ public class EquipPipeSchedulingServiceImpl extends ServiceImpl<EquipPipeSchedul
 //                equipPipeSchedulingUserMapper.delete(EquipPipeSchedulingUserDO::getSchedulingId,taskVO.getTaskId());
 //            }
 
-            if(!taskVO.getTeamList().isEmpty()){
+            // 检验员改为非必选,teamList 可能为空
+            if(CollUtil.isNotEmpty(taskVO.getTeamList())){
                 equipPipeSchedulingUserMapper.delete(EquipPipeSchedulingUserDO::getSchedulingId,taskVO.getTaskId());
             }
 
@@ -352,10 +356,18 @@ public class EquipPipeSchedulingServiceImpl extends ServiceImpl<EquipPipeSchedul
             task.setPlanDate(taskVO.getDate());
             task.setType(taskVO.getType());
             task.setSource(source);
-            task.setHasOrderConfirm(taskVO.getHasOrderConfirm() == null || taskVO.getHasOrderConfirm());
+            // 前台约检来源:强制不需要前台约检确认,自动生成受理单
+            if (Integer.valueOf(200).equals(source)) {
+                task.setHasOrderConfirm(false);
+            } else {
+                task.setHasOrderConfirm(taskVO.getHasOrderConfirm() == null || taskVO.getHasOrderConfirm());
+            }
             if(!equipIdList.isEmpty()){
                 equipPipeSchedulingMapper.insert(task);
                 allList.add(task);
+                if (Integer.valueOf(200).equals(source)) {
+                    newTaskIdForFrontDesk = task.getId();
+                }
 
 //                List<EquipPipeSchedulingItemDO> list = equipIdList.stream().map(id -> {
 //                    equipIds.add(id);
@@ -425,17 +437,17 @@ public class EquipPipeSchedulingServiceImpl extends ServiceImpl<EquipPipeSchedul
             }
         }
 
-        //检查员
+        //检查员(检验员改为非必选,teamList / memberIdList 可能为空,用 emptyIfNull 防护 NPE)
         List<EquipPipeSchedulingUserDO> schedulingMemberList = new ArrayList<>();
         allList.forEach(item->{
-            taskVO.getTeamList().forEach(team -> {
+            CollUtil.emptyIfNull(taskVO.getTeamList()).forEach(team -> {
                 EquipPipeSchedulingUserDO leader = new EquipPipeSchedulingUserDO();
                 leader.setSchedulingId(item.getId());
                 leader.setType(100);
                 leader.setGroupTeamId(team.getGroupTeamId());
                 leader.setUserId(team.getLeaderId());
                 leader.setDate(taskVO.getDate());
-                List<EquipPipeSchedulingUserDO> memberList = team.getMemberIdList().stream().map(memberId -> {
+                List<EquipPipeSchedulingUserDO> memberList = CollUtil.emptyIfNull(team.getMemberIdList()).stream().map(memberId -> {
                     EquipPipeSchedulingUserDO member = new EquipPipeSchedulingUserDO();
                     member.setSchedulingId(item.getId());
                     member.setType(200);
@@ -505,6 +517,14 @@ public class EquipPipeSchedulingServiceImpl extends ServiceImpl<EquipPipeSchedul
             });
         }
 
+        // 前台约检来源:跳过计划表提交+约检确认,直接生成受理单
+        if (Integer.valueOf(200).equals(source) && newTaskIdForFrontDesk != null) {
+            BoilerConfirmScheduleVO confirmVO = new BoilerConfirmScheduleVO();
+            confirmVO.setIds(Collections.singletonList(newTaskIdForFrontDesk));
+            confirm(confirmVO);
+            return;
+        }
+
         //首页待办 - 计划表
         allList.forEach(item->{
 

+ 9 - 3
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/orderreport/OrderReportServiceImpl.java

@@ -730,12 +730,18 @@ public class OrderReportServiceImpl extends ServiceImpl<OrderReportMapper, Order
         }
 
         String deptId = acceptOrderDO.getDeptId();
+        if (StringUtils.isBlank(deptId)) {
+            log.error("[generateAcceptOrderNo] 受理单 {} 的 deptId 为空,无法生成受理单编号", acceptOrderId);
+            throw new ServiceException(500, "受理单关联部门为空,请检查设备关联部门后再提交");
+        }
         // 使用原生 SQL 直接查询部门 code,避免因无用户上下文导致 Feign 调用/数据权限问题
-        String deptCode = jdbcTemplate.queryForObject(
+        List<String> deptCodes = jdbcTemplate.queryForList(
                 "SELECT code FROM system_dept WHERE id = ?", String.class, deptId);
-        if (deptCode == null) {
-            throw new ServiceException(500, "部门不存在");
+        if (deptCodes.isEmpty()) {
+            log.error("[generateAcceptOrderNo] 受理单 {} 的 deptId={} 在 system_dept 表中不存在", acceptOrderId, deptId);
+            throw new ServiceException(500, "受理单关联部门不存在,请检查设备关联部门后再提交");
         }
+        String deptCode = deptCodes.get(0);
 
         // 获取项目代码(2位)
         String projectCode = "";