Ver Fonte

自动结单添加人员验证、提醒

HD_wangm há 3 meses atrás
pai
commit
4ab467630c

+ 6 - 2
ygtx-gxt/src/main/java/com/ygtx/gxt/service/impl/GxtRepairOrderServiceImpl.java

@@ -1016,7 +1016,11 @@ public class GxtRepairOrderServiceImpl implements IGxtRepairOrderService
 //                                gxtRepairOrderMapper.updateGxtRepairOrder(gxtRepairOrder);
 //                            }
                         } else {
-                            throw new ServiceException("检修人员不存在");
+                            if (person.getIsLeader() == 0) {
+                                throw new ServiceException("已匹配到MIS工单,但工作班成员'" + person.getNickName() + "'在系统中不存在,系统无法自动结单,请检查");
+                            } else {
+                                throw new ServiceException("已匹配到MIS工单,但工作负责人'" + person.getNickName() + "'在系统中不存在,系统无法自动结单,请检查");
+                            }
                         }
 //                        SysUser sysUser = null;
 //                        if(StringUtils.isNotEmpty(person.getUserName())){
@@ -1104,7 +1108,7 @@ public class GxtRepairOrderServiceImpl implements IGxtRepairOrderService
                             person.setCreateTime(DateUtils.getNowDate());
                             gxtRepairOrderPersonMapper.insertGxtRepairOrderPerson(person);
                         } else {
-                            throw new ServiceException("您输入的人员不存在");
+                            throw new ServiceException("已匹配到MIS工单,但工作班成员'" + name + "'在系统中不存在,系统无法自动结单,请检查");
                         }
                     }
                 }

+ 6 - 2
ygtx-gxt/src/main/java/com/ygtx/gxt/service/impl/GxtWorkOrderServiceImpl.java

@@ -860,7 +860,11 @@ public class GxtWorkOrderServiceImpl implements IGxtWorkOrderService
 //                                    gxtWorkOrderMapper.updateGxtWorkOrder(order);
 //                                }
                             } else {
-                                throw new ServiceException("检修人员不存在");
+                                if (person.getIsLeader() == 0) {
+                                    throw new ServiceException("已匹配到MIS工单,但工作班成员'" + person.getNickName() + "'在系统中不存在,系统无法自动结单,请检查");
+                                } else {
+                                    throw new ServiceException("已匹配到MIS工单,但工作负责人'" + person.getNickName() + "'在系统中不存在,系统无法自动结单,请检查");
+                                }
                             }
 //                    SysUser sysUser = null;
 //                    if(StringUtils.isNotEmpty(person.getUserName())){
@@ -948,7 +952,7 @@ public class GxtWorkOrderServiceImpl implements IGxtWorkOrderService
                                 person.setCreateTime(DateUtils.getNowDate());
                                 gxtWorkOrderPersonMapper.insertGxtWorkOrderPerson(person);
                             } else {
-                                throw new ServiceException("您输入的人员不存在");
+                                throw new ServiceException("已匹配到MIS工单,但工作班成员'" + name + "'在系统中不存在,系统无法自动结单,请检查");
                             }
                         }
                     }

+ 36 - 20
ygtx-gxt/src/main/java/com/ygtx/gxt/task/OrderAutoFinalizeTask.java

@@ -135,26 +135,34 @@ public class OrderAutoFinalizeTask {
                     StringBuilder members = new StringBuilder();
                     String leader = null;
                     Long leaderUserId = null;
-                    
+
+                    Boolean isPass = true;
                     for (GxtWorkOrderPerson person : personList) {
-                        if (person.getIsLeader() != null && 1 == person.getIsLeader()) {
-                            leader = person.getNickName();
-                            // 查询工作负责人的ID
-                            SysUser queryUser = new SysUser();
-                            queryUser.setUserName(person.getUserName());
-                            queryUser.setNickName(person.getNickName());
-                            List<SysUser> users = sysUserMapper.selectUserList(queryUser);
-                            if (users != null && !users.isEmpty()) {
+                        SysUser queryUser = new SysUser();
+                        queryUser.setUserName(person.getUserName());
+                        queryUser.setNickName(person.getNickName());
+                        List<SysUser> users = sysUserMapper.selectUserList(queryUser);
+                        if (null != users && !users.isEmpty()) {
+                            if (person.getIsLeader() != null && 1 == person.getIsLeader()) {
+                                leader = person.getNickName();
+                                // 查询工作负责人的ID
                                 leaderUserId = users.get(0).getUserId();
+                                continue;
                             }
-                            continue;
+                        } else {
+                            // 人员没查到跳出循环
+                            isPass = false;
+                            break;
                         }
+
                         if (members.length() > 0) {
                             members.append(",");
                         }
                         members.append(person.getNickName());
                     }
 
+                    if (!isPass) continue; // 该工单有人员不在系统中,不执行后续操作
+
                     updateRepairOrder.setMisOrderNo(validMisInfo.getMisNo());
                     updateRepairOrder.setTeamLeaderName(leader);
                     updateRepairOrder.setTeamLeaderId(leaderUserId); // 设置工作负责人ID
@@ -292,26 +300,34 @@ public class OrderAutoFinalizeTask {
                     StringBuilder members = new StringBuilder();
                     String leader = null;
                     Long leaderUserId = null;
-                    
+
+                    Boolean isPass = true;
                     for (GxtWorkOrderPerson person : personList) {
-                        if (person.getIsLeader() != null && 1 == person.getIsLeader()) {
-                            leader = person.getNickName();
-                            // 查询工作负责人的ID
-                            SysUser queryUser = new SysUser();
-                            queryUser.setUserName(person.getUserName());
-                            queryUser.setNickName(person.getNickName());
-                            List<SysUser> users = sysUserMapper.selectUserList(queryUser);
-                            if (users != null && !users.isEmpty()) {
+                        SysUser queryUser = new SysUser();
+                        queryUser.setUserName(person.getUserName());
+                        queryUser.setNickName(person.getNickName());
+                        List<SysUser> users = sysUserMapper.selectUserList(queryUser);
+                        if (null != users && !users.isEmpty()) {
+                            if (person.getIsLeader() != null && 1 == person.getIsLeader()) {
+                                leader = person.getNickName();
+                                // 查询工作负责人的ID
                                 leaderUserId = users.get(0).getUserId();
+                                continue;
                             }
-                            continue;
+                        } else {
+                            // 人员没查到跳出循环
+                            isPass = false;
+                            break;
                         }
+
                         if (members.length() > 0) {
                             members.append(",");
                         }
                         members.append(person.getNickName());
                     }
 
+                    if (!isPass) continue; // 该工单有人员不在系统中,不执行后续操作
+
                     updateWorkOrder.setMisNo(validMisInfo.getMisNo());
                     updateWorkOrder.setTeamLeaderName(leader);
                     updateWorkOrder.setTeamLeaderId(leaderUserId); // 设置工作负责人ID

+ 1 - 1
ygtx-ui/src/components/gxtOrder/backfillFinalize.vue

@@ -624,7 +624,7 @@ const handleSubmit = async () => {
         visible.value = false
         emit('success')
       } catch (error) {
-        proxy.$modal.msgError("操作失败: " + (error.message || "未知错误"))
+        // proxy.$modal.msgError("操作失败: " + (error.message || "未知错误"))
       } finally {
         submitLoading.value = false
       }

+ 1 - 1
ygtx-ui/src/components/gxtOrder/finalize.vue

@@ -805,7 +805,7 @@ const handleSubmit = async () => {
         visible.value = false
         emit('success')
       } catch (error) {
-        proxy.$modal.msgError("操作失败: " + (error.message || "未知错误"))
+        // proxy.$modal.msgError("操作失败: " + (error.message || "未知错误"))
       } finally {
         submitLoading.value = false
       }

+ 1 - 1
ygtx-ui/src/components/repairOrder/finalize.vue

@@ -966,7 +966,7 @@ const handleSubmit = async () => {
         visible.value = false
         emit('success')
       } catch (error) {
-        proxy.$modal.msgError("操作失败: " + (error.message || "未知错误"))
+        // proxy.$modal.msgError("操作失败: " + (error.message || "未知错误"))
       }
     }
   })

+ 27 - 1
ygtx-ui/src/views/gxt/gxtOrder/index.vue

@@ -295,7 +295,7 @@
           </el-button>
 
           <!-- 自动挂起状态:显示恢复按钮 -->
-          <el-button link type="primary" @click="handleResume(scope.row)" v-if="(scope.row.workOrderStatus === 'auto_suspend')" v-hasPermi="['gxt:maintenance:order: autoResume']">
+          <el-button link type="primary" @click="handleResume(scope.row)" v-if="(scope.row.workOrderStatus === 'auto_suspend')" v-hasPermi="['gxt:maintenance:order:autoResume']">
             <i class="fa fa-play"></i>恢复
           </el-button>
 
@@ -2269,6 +2269,32 @@ function handleFinish(row) {
                         .join(',');
                     finishForm.value.workGroupMemberName = nickNames
                     // finishDialogVisible.value = true
+
+                    finishForm.value.workOrderPersonList.map(person => {
+                      // 构造查询参数:username 和 nickName
+                      const queryParams = {
+                        userName: person.userName, // 假设person对象有username字段
+                        nickName: person.nickName  // 假设person对象有nickName字段
+                      };
+                      listUserData(queryParams).then(response => {
+                        if (!response.total) {
+                          let msg = "已匹配到MIS工单,但工作班成员'" + person.nickName + "'在系统中不存在,系统无法自动结单,请检查"
+                          if (person.isLeader == 1) {
+                            msg = "已匹配到MIS工单,但工作负责人'" + person.nickName + "'在系统中不存在,系统无法自动结单,请检查"
+                          }
+                          ElMessageBox.confirm(msg, '提示', {
+                            confirmButtonText: '确定',
+                            showCancelButton: false,
+                            type: 'warning'
+                          }).then(function() {
+                            // finishForm.value.infoEntry = '2'
+                            infoEntryDisabled.value = true
+                          }).then(() => {
+                          }).catch(() => {})
+                        }
+                      });
+                    })
+
                   }
                 })
               } else {

+ 2 - 2
ygtx-ui/src/views/gxt/orderMyTodo/index.vue

@@ -189,14 +189,14 @@
                 v-hasPermi="['gxt:repairOrder:acceptReturn']"
             ><i class="fa fa-sign-in"></i>退回</el-button> <!--接单退回,班长退回至下发环节 -->
             <el-button
-                v-if="scope.row.workOrderStatus === 'to_finish' && (scope.row.teamLeaderId == userStore.id || userStore.roles.includes('admin'))"
+                v-if="scope.row.workOrderStatus === 'to_finish'"
                 type="success"
                 link
                 @click="handleRepairOrderFinalize(scope.row)"
                 v-hasPermi="['gxt:repairOrder:finalize']"
             ><i class="fa fa-check"></i>结单</el-button>
             <el-button
-                v-if="scope.row.workOrderStatus === 'to_finish' && (scope.row.teamLeaderId == userStore.id || userStore.roles.includes('admin'))"
+                v-if="scope.row.workOrderStatus === 'to_finish'"
                 type="primary"
                 link
                 @click="handleReset(scope.row)"

+ 25 - 0
ygtx-ui/src/views/gxt/repairOrder/index.vue

@@ -3484,6 +3484,31 @@ function handleFinalize(row, method) {
                       .join(',');
                   finalizeFormData.value.workGroupMemberName = nickNames
                   // finishDialogVisible.value = true
+
+                  finalizeFormData.value.repairOrderPersonList.map(person => {
+                    // 构造查询参数:username 和 nickName
+                    const queryParams = {
+                      userName: person.userName, // 假设person对象有username字段
+                      nickName: person.nickName  // 假设person对象有nickName字段
+                    };
+                    listUserData(queryParams).then(response => {
+                      debugger
+                      if (!response.total) {
+                        let msg = "已匹配到MIS工单,但工作班成员'" + person.nickName + "'在系统中不存在,系统无法自动结单,请检查"
+                        if (person.isLeader == 1) {
+                          msg = "已匹配到MIS工单,但工作负责人'" + person.nickName + "'在系统中不存在,系统无法自动结单,请检查"
+                        }
+                        ElMessageBox.confirm(msg, '提示', {
+                          confirmButtonText: '确定',
+                          showCancelButton: false,
+                          type: 'warning'
+                        }).then(function() {
+                          infoEntryDisabled.value = true
+                        }).then(() => {
+                        }).catch(() => {})
+                      }
+                    });
+                  })
                 }
               })
             } else {