MrShi
2025-08-19 ff087240b3dee29ce4e14ad0836e76b9fdf312cf
server/src/main/java/com/doumee/service/business/impl/WorkorderServiceImpl.java
@@ -94,6 +94,7 @@
        //处理SHE事件状态
        Constants.WorkOrderStatus  workOrderStatus = Constants.equalsInteger(workorder.getType(),Constants.ZERO)?Constants.WorkOrderStatus.close:Constants.WorkOrderStatus.waitConfirm;
        workorder.setStatus(workOrderStatus.getKey());
        workorder.setSheDealUserQwIds(workorder.getQwnoticeMemberIds());
        workorderMapper.insert(workorder);
        //存储DCA 问题记录表
@@ -185,8 +186,11 @@
        }else{
            textCard.setTitle(Constants.equalsInteger(workorder.getType(),Constants.ONE)?"【DCA上报】":"【跌绊滑风险上报】");
            if(Constants.equalsInteger(workorder.getType(),Constants.THREE)){
                message = message + " <div class=\"normal\">"+ (org.apache.commons.lang3.StringUtils.isNotBlank(userName)?userName:"系统") + (Constants.equalsInteger(contentType,Constants.ZERO)?"任务分配给你":(Constants.equalsInteger(contentType,Constants.ONE)?"对该工单进行了催促,请尽快处理":"任务已处理")) +"</div>";
                message = message + " <div class=\"normal\">"+ (org.apache.commons.lang3.StringUtils.isNotBlank(userName)?userName:"系统") + (Constants.equalsInteger(contentType,Constants.ZERO)?"任务分配给你":(Constants.equalsInteger(contentType,Constants.ONE)?"对该工单进行了催促,请尽快处理":((Constants.equalsInteger(contentType,Constants.TWO)?"抄送给你":"任务已处理")))) +"</div>";//:"任务已处理")) +"</div>";
                message = message + " <div class=\"normal\">"+  DateUtil.formatDate(new Date(),"yyyy-MM-dd HH:mm") +"/"+ workorder.getLocationName() +"/"+  categoryName+"</div>";
                if(Constants.equalsInteger(contentType,Constants.TWO)){
                    message = message + "  <div class=\"normal\">说明    "+ csInfo +"</div>";
                }
            }else{
                message = message + "  <div class=\"normal\">"+ (org.apache.commons.lang3.StringUtils.isNotBlank(userName)?userName:"系统") + (Constants.equalsInteger(contentType,Constants.ZERO)?"任务分配给你":(Constants.equalsInteger(contentType,Constants.ONE)?"对该工单进行了催促,请尽快处理":((Constants.equalsInteger(contentType,Constants.TWO)?"抄送给你":"已处理一项")))) +"</div>";
                message = message + "  <div class=\"normal\">观察主题  "+ categoryName +"</div>";
@@ -269,6 +273,7 @@
                    dcaWorkOrder.setEventInfo(dcaNoProblemDTO.getEventInfo());
                    dcaWorkOrder.setQwnoticeMemberIds(workorder.getQwnoticeMemberIds());
                    dcaWorkOrder.setMemberNames(workorder.getMemberNames());
                    dcaWorkOrder.setSheDealUserQwIds(dcaWorkOrder.getQwnoticeMemberIds());
                    workorderMapper.insert(dcaWorkOrder);
                    //存储日志
                    this.dealLogData(dcaWorkOrder,workOrderStatus);
@@ -443,7 +448,7 @@
            if(Objects.isNull(workorder.getMemberType())
                    || Objects.isNull(workorder.getOutJiuyi())
                    || (Constants.equalsInteger(workorder.getOutJiuyi(),Constants.ZERO) && Objects.isNull(workorder.getIsYiwushi()))
                    || (Constants.equalsInteger(workorder.getIsYiwushi(),Constants.ZERO) && Objects.isNull(workorder.getIsHurted()))
                    || (Constants.equalsInteger(workorder.getOutJiuyi(),Constants.ZERO) && Constants.equalsInteger(workorder.getIsYiwushi(),Constants.ZERO) && Objects.isNull(workorder.getIsHurted()))
                    || Objects.isNull(workorder.getWorkRelated())
                    || (Constants.equalsInteger(workorder.getMemberType(),Constants.TWO) && StringUtils.isEmpty(workorder.getMemberNames()))
                    || (Constants.equalsInteger(workorder.getMemberType(),Constants.ONE) && StringUtils.isEmpty(workorder.getMemberQwids()))
@@ -506,7 +511,8 @@
        this.dealButton(workorder,member);
        //查询附件信息
        List<Multifile> multifileList = multifileMapper.selectList(new QueryWrapper<Multifile>().lambda().eq(Multifile::getIsdeleted,Constants.ZERO)
                .eq(Multifile::getObjId,workorder.getId()).orderByAsc(Multifile::getId));
                .eq(Multifile::getObjType,Constants.multiFileType.upload)
                .eq(Multifile::getObjId,workorder.getId().toString()).orderByAsc(Multifile::getId));
        String path = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode()
                +systemDictDataBiz.queryByCode(Constants.FTP,Constants.WORKORDER_FILE_PATH).getCode();
@@ -528,6 +534,7 @@
            if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(dcaChildList)){
                for (Workorder dcaChild:dcaChildList) {
                    this.dealButton(dcaChild,member);
                    dcaChild.setStatusName(Constants.WorkOrderStatus.getStatusName(dcaChild.getStatus()));
                }
                workorder.setManagerId(dcaChildList.stream().filter(i->Objects.nonNull(i.getManagerId())).map(i->i.getManagerId()).collect(Collectors.joining(",")));
            }
@@ -544,7 +551,7 @@
            if(org.apache.commons.lang3.StringUtils.isNotBlank(workorder.getQwnoticeMemberIds())&&
                    (Constants.equalsInteger(workorder.getStatus(),Constants.ZERO)||
                            Constants.equalsInteger(workorder.getStatus(),Constants.ONE)||Constants.equalsInteger(workorder.getStatus(),Constants.TWO))){
                closeUserList.addAll(Arrays.asList(workorder.getQwnoticeMemberIds().split(",")));
                closeUserList.addAll(Arrays.asList(workorder.getSheDealUserQwIds().split(",")));
            }
            if(org.apache.commons.lang3.StringUtils.isNotBlank(workorder.getManagerId())&&
                    (Constants.equalsInteger(workorder.getStatus(),Constants.ONE)||Constants.equalsInteger(workorder.getStatus(),Constants.TWO))){
@@ -561,7 +568,7 @@
            //待分配状态 处理转交按钮
            if(Constants.equalsInteger(workorder.getStatus(),Constants.WorkOrderStatus.waitConfirm.getKey())
            ){
                passOnUserList.addAll(Arrays.asList(workorder.getQwnoticeMemberIds().split(",")));
                passOnUserList.addAll(Arrays.asList(workorder.getSheDealUserQwIds().split(",")));
            }
            if(Constants.equalsInteger(workorder.getStatus(),Constants.WorkOrderStatus.waitAllocation.getKey())
                || Constants.equalsInteger(workorder.getStatus(),Constants.WorkOrderStatus.waitDeal.getKey())
@@ -846,7 +853,7 @@
        //提交后的 待确认/待初审状态 如果去关闭 只有工单里绑定的SHE人员可以关闭
        if(Constants.equalsInteger(workorder.getStatus(),Constants.WorkOrderStatus.waitConfirm.getKey())){
            //判断SHE人员内是否有当前登录账号
            if(workorder.getQwnoticeMemberIds().indexOf(closeDTO.getMember().getQwId())<Constants.ZERO){
            if(workorder.getSheDealUserQwIds().indexOf(closeDTO.getMember().getQwId())<Constants.ZERO){
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,当前工单非您的工单,无法进行处理");
            }
            workorder.setStatus(Constants.WorkOrderStatus.sheClose.getKey());
@@ -854,12 +861,12 @@
            qwIds.remove(closeDTO.getMember().getQwId());
        }else if(Constants.equalsInteger(workorder.getStatus(),Constants.WorkOrderStatus.waitAllocation.getKey())){
            //判断SHE人员内是否有当前登录账号
            if(workorder.getQwnoticeMemberIds().indexOf(closeDTO.getMember().getQwId())<Constants.ZERO &&  !workorder.getManagerId().equals(closeDTO.getMember().getQwId())){
            if(workorder.getSheDealUserQwIds().indexOf(closeDTO.getMember().getQwId())<Constants.ZERO &&  !workorder.getManagerId().equals(closeDTO.getMember().getQwId())){
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,当前工单非您的工单,无法进行处理");
            }
            if(workorder.getManagerId().equals(closeDTO.getMember().getQwId())){
                workorder.setStatus(Constants.WorkOrderStatus.wtsClose.getKey());
            }else if(workorder.getQwnoticeMemberIds().indexOf(closeDTO.getMember().getQwId())>Constants.ZERO){
            }else if(workorder.getSheDealUserQwIds().indexOf(closeDTO.getMember().getQwId())>Constants.ZERO){
                workorder.setStatus(Constants.WorkOrderStatus.sheClose.getKey());
            }else{
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,当前工单非您的工单,无法进行处理");
@@ -869,7 +876,7 @@
            qwIds.remove(closeDTO.getMember().getQwId());
        }else if(Constants.equalsInteger(workorder.getStatus(),Constants.WorkOrderStatus.waitDeal.getKey())){
            //判断SHE人员内是否有当前登录账号
            if(workorder.getQwnoticeMemberIds().indexOf(closeDTO.getMember().getQwId())<Constants.ZERO &&  !workorder.getManagerId().equals(closeDTO.getMember().getQwId())
            if(workorder.getSheDealUserQwIds().indexOf(closeDTO.getMember().getQwId())<Constants.ZERO &&  !workorder.getManagerId().equals(closeDTO.getMember().getQwId())
                    &&  !workorder.getDealerId().equals(closeDTO.getMember().getQwId()) ){
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,当前工单非您的工单,无法进行处理");
            }
@@ -877,7 +884,7 @@
                workorder.setStatus(Constants.WorkOrderStatus.wtsClose.getKey());
            }else if(workorder.getDealerId().equals(closeDTO.getMember().getQwId())){
                workorder.setStatus(Constants.WorkOrderStatus.close.getKey());
            }else if(workorder.getQwnoticeMemberIds().indexOf(closeDTO.getMember().getQwId())>Constants.ZERO){
            }else if(workorder.getSheDealUserQwIds().indexOf(closeDTO.getMember().getQwId())>Constants.ZERO){
                workorder.setStatus(Constants.WorkOrderStatus.sheClose.getKey());
            }else{
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,当前工单非您的工单,无法进行处理");
@@ -954,12 +961,20 @@
            if(!Constants.equalsInteger(workorder.getStatus(),Constants.WorkOrderStatus.waitConfirm.getKey())){
                throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"工单状态已流转");
            }
            if(workorder.getSheDealUserQwIds().indexOf(passOnDTO.getMember().getQwId())<Constants.ZERO){
                throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对不起,非带您处理的工单,无法进行该操作");
            }
            workorder.setManagerId(member.getQwId());
            workorder.setStatus(Constants.WorkOrderStatus.waitAllocation.getKey());
            workorder.setSheDealUserQwIds(passOnDTO.getMember().getQwId());
        }else{
            if(!(Constants.equalsInteger(workorder.getStatus(),Constants.WorkOrderStatus.waitAllocation.getKey())
                || Constants.equalsInteger(workorder.getStatus(),Constants.WorkOrderStatus.waitDeal.getKey()))){
                throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"工单状态已流转");
            }
            if(!workorder.getManagerId().equals(passOnDTO.getMember().getQwId())){
                throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对不起,非带您处理的工单,无法进行该操作");
            }
            workorder.setDealerId(member.getQwId());
            workorder.setStatus(Constants.WorkOrderStatus.waitDeal.getKey());
@@ -1071,6 +1086,7 @@
              status = 2;
              info ="无效员工信息,无法发送邮箱";
        }else{
            //邮箱已发送:成功:["江萍邮箱jp@doumee.com"]失败:["江萍/无邮箱","戴强强/邮箱null","郭际文武/邮箱null"]
            List<String>    successInfo = new ArrayList<>();
            List<String> errorInfo = new ArrayList<>();
            Map<String,String> contentForm = getEmailContentFormByModel(workorder);