From 17f3ed801cb43325650bd77a84f306cfa661d562 Mon Sep 17 00:00:00 2001
From: k94314517 <8417338+k94314517@user.noreply.gitee.com>
Date: 星期四, 24 四月 2025 18:41:09 +0800
Subject: [PATCH] 工单业务

---
 server/src/main/java/com/doumee/service/business/impl/WorkorderServiceImpl.java |   96 ++++++++++++++++++++++++++++++++++-------------
 1 files changed, 69 insertions(+), 27 deletions(-)

diff --git a/server/src/main/java/com/doumee/service/business/impl/WorkorderServiceImpl.java b/server/src/main/java/com/doumee/service/business/impl/WorkorderServiceImpl.java
index 1a32444..0a44463 100644
--- a/server/src/main/java/com/doumee/service/business/impl/WorkorderServiceImpl.java
+++ b/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 闂璁板綍琛�
@@ -207,7 +208,7 @@
             //澶勭悊涓婃姤鏃ュ織 DCA宸ュ崟 鏃ュ織瀛樺偍鑷冲瓙涓氬姟 涓嶅瓨鍦ㄤ簬鐖剁骇  涓庤穼缁婃粦
             String logTitle = Constants.equalsInteger(workorder.getType(), Constants.THREE) ? "璺岀粖婊戦闄�" : "DCA";
             workorder.setCreateDate(workorder.getSubmitDate());
-            this.saveLog(null,workorder,Constants.ZERO,workorder.getMemberId(),workOrderStatus.getLogTitle().replace("{title}",logTitle),null,null);
+            this.saveLog(null,workorder,Constants.ZERO,workorder.getMemberId(),workOrderStatus.getLogTitle().replace("{title}",logTitle),null,null,null);
         }
     }
 
@@ -269,6 +270,7 @@
                     dcaWorkOrder.setEventInfo(dcaNoProblemDTO.getEventInfo());
                     dcaWorkOrder.setQwnoticeMemberIds(workorder.getQwnoticeMemberIds());
                     dcaWorkOrder.setMemberNames(workorder.getMemberNames());
+                    dcaWorkOrder.setSheDealUserQwIds(dcaWorkOrder.getQwnoticeMemberIds());
                     workorderMapper.insert(dcaWorkOrder);
                     //瀛樺偍鏃ュ織
                     this.dealLogData(dcaWorkOrder,workOrderStatus);
@@ -404,7 +406,7 @@
      * @param memberId
      * @param paramr2 杞氦缁欑殑澶勭悊浜�
      */
-    public Integer saveLog(String beforeJson,Workorder afterWorkorder,Integer objType,Integer memberId,String title,String content,String paramr2){
+    public Integer saveLog(String beforeJson,Workorder afterWorkorder,Integer objType,Integer memberId,String title,String content,String paramr2,String remark){
         WorkorderLog workorderLog = new WorkorderLog();
         workorderLog.setCreateDate(afterWorkorder.getEditDate());
         workorderLog.setEditDate(afterWorkorder.getEditDate());
@@ -417,6 +419,7 @@
         workorderLog.setObjType(objType);
         workorderLog.setTitle(title);
         workorderLog.setContent(content);
+        workorderLog.setRemark(remark);
         workorderLogMapper.insert(workorderLog);
         return workorderLog.getId();
     }
@@ -442,7 +445,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()))
@@ -504,7 +507,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();
 
@@ -542,7 +546,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))){
@@ -559,7 +563,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())
@@ -613,18 +617,19 @@
                         }
                     }
                 }
-
-                //鏌ヨ闄勪欢淇℃伅
-                List<Multifile> multifileList = multifileMapper.selectList(new QueryWrapper<Multifile>().lambda()
-                        .eq(Multifile::getIsdeleted,Constants.ZERO)
-                        .ne(Multifile::getObjType,Constants.multiFileType.upload)
-                        .eq(Multifile::getObjId,workorderLog.getId())
-                        .orderByAsc(Multifile::getId));
-                if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(multifileList)){
-                    for (Multifile multifile:multifileList) {
-                        multifile.setFileurlFull(path+multifile.getFileurl());
+                if(!Constants.equalsInteger(workorderLog.getObjType(),Constants.FOUR)){
+                    //鏌ヨ闄勪欢淇℃伅
+                    List<Multifile> multifileList = multifileMapper.selectList(new QueryWrapper<Multifile>().lambda()
+                            .eq(Multifile::getIsdeleted,Constants.ZERO)
+                            .ne(Multifile::getObjType,Constants.multiFileType.upload)
+                            .eq(Multifile::getObjId,workorderLog.getId())
+                            .orderByAsc(Multifile::getId));
+                    if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(multifileList)){
+                        for (Multifile multifile:multifileList) {
+                            multifile.setFileurlFull(path+multifile.getFileurl());
+                        }
+                        workorderLog.setMultifileList(multifileList);
                     }
-                    workorderLog.setMultifileList(multifileList);
                 }
             }
         }
@@ -706,7 +711,8 @@
                 .ne(org.apache.commons.lang3.StringUtils.isNotBlank(pageWrap.getQwId()),Workorder::getType,Constants.TWO)
                 .in(Objects.nonNull(pageWrap.getDealStatus())&&
                         Constants.equalsInteger(pageWrap.getDealStatus(),Constants.ZERO),
-                        Workorder::getStatus,Constants.WorkOrderStatus.waitConfirm.getKey(),Constants.WorkOrderStatus.waitAllocation.getKey(),Constants.WorkOrderStatus.waitDeal.getKey())
+                        Workorder::getStatus,Constants.WorkOrderStatus.waitConfirm.getKey(),
+                        Constants.WorkOrderStatus.waitAllocation.getKey(),Constants.WorkOrderStatus.waitDeal.getKey())
                 .in(Objects.nonNull(pageWrap.getDealStatus())&&
                                 Constants.equalsInteger(pageWrap.getDealStatus(),Constants.ONE),
                         Workorder::getStatus,Constants.WorkOrderStatus.sheClose.getKey(),Constants.WorkOrderStatus.close.getKey(),Constants.WorkOrderStatus.wtsClose.getKey())
@@ -757,7 +763,9 @@
                 .eq( pageWrap.getDcaNoNum() != null, Workorder::getDcaNoNum,  pageWrap.getDcaNoNum())
                 .eq( pageWrap.getDcaRecordId() != null, Workorder::getDcaRecordId,  pageWrap.getDcaRecordId())
                 .likeRight( pageWrap.getTypeIdPath() != null,"c3.id_path",  pageWrap.getTypeIdPath())
-                .eq( pageWrap.getDcaCsIds() != null, Workorder::getDcaCsIds,  pageWrap.getDcaCsIds()) ;
+                .eq( pageWrap.getDcaCsIds() != null, Workorder::getDcaCsIds,  pageWrap.getDcaCsIds())
+                .ge( pageWrap.getQueryStartTime() != null, Workorder::getCreateDate,pageWrap.getQueryStartTime())
+                .le( pageWrap.getQueryEndTime() != null, Workorder::getCreateDate,pageWrap.getQueryEndTime()) ;
         if ( pageWrap.getMemberName() != null) {
             queryWrapper.and( ms->ms.like(Member::getName, pageWrap.getMemberName())
                     .or().like(Member::getPhone, pageWrap.getMemberName()) );
@@ -834,7 +842,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());
@@ -842,20 +850,34 @@
             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(),"瀵逛笉璧凤紝褰撳墠宸ュ崟闈炴偍鐨勫伐鍗曪紝鏃犳硶杩涜澶勭悊");
             }
-            workorder.setStatus(Constants.WorkOrderStatus.wtsClose.getKey());
+            if(workorder.getManagerId().equals(closeDTO.getMember().getQwId())){
+                workorder.setStatus(Constants.WorkOrderStatus.wtsClose.getKey());
+            }else if(workorder.getSheDealUserQwIds().indexOf(closeDTO.getMember().getQwId())>Constants.ZERO){
+                workorder.setStatus(Constants.WorkOrderStatus.sheClose.getKey());
+            }else{
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝褰撳墠宸ュ崟闈炴偍鐨勫伐鍗曪紝鏃犳硶杩涜澶勭悊");
+            }
             qwIds.addAll(Arrays.asList(workorder.getQwnoticeMemberIds().split(",")));
             qwIds.add(workorder.getManagerId());
             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(),"瀵逛笉璧凤紝褰撳墠宸ュ崟闈炴偍鐨勫伐鍗曪紝鏃犳硶杩涜澶勭悊");
             }
-            workorder.setStatus(Constants.WorkOrderStatus.wtsClose.getKey());
+            if(workorder.getManagerId().equals(closeDTO.getMember().getQwId())){
+                workorder.setStatus(Constants.WorkOrderStatus.wtsClose.getKey());
+            }else if(workorder.getDealerId().equals(closeDTO.getMember().getQwId())){
+                workorder.setStatus(Constants.WorkOrderStatus.close.getKey());
+            }else if(workorder.getSheDealUserQwIds().indexOf(closeDTO.getMember().getQwId())>Constants.ZERO){
+                workorder.setStatus(Constants.WorkOrderStatus.sheClose.getKey());
+            }else{
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝褰撳墠宸ュ崟闈炴偍鐨勫伐鍗曪紝鏃犳硶杩涜澶勭悊");
+            }
             qwIds.addAll(Arrays.asList(workorder.getQwnoticeMemberIds().split(",")));
             qwIds.add(workorder.getManagerId());
             qwIds.remove(closeDTO.getMember().getQwId());
@@ -865,9 +887,21 @@
         workorder.setEditDate(new Date());
         workorder.setDealTime(new Date());
         workorder.setDealInfo(closeDTO.getInfo());
+        //瀛愬伐鍗� 鍒欐煡璇㈢埗绾у伐鍗曟暟鎹� 鏄惁浠樺瓨鍦ㄦ湭瀹屾垚鐨� 濡傛灉涓嶅瓨鍦ㄦ湭瀹屾垚鐨勫垯杩涜涓诲伐鍗曠姸鎬佸彉鍖�
+        if(Constants.equalsInteger(workorder.getType(),Constants.TWO)&&
+            workorderMapper.selectCount(new QueryWrapper<Workorder>().lambda().eq(Workorder::getDcaRecordId,workorder.getDcaRecordId()).eq(Workorder::getIsdeleted,Constants.ZERO)
+                    .ne(Workorder::getId,workorder.getId()).in(Workorder::getStatus,
+                            Constants.WorkOrderStatus.waitConfirm.getKey(),Constants.WorkOrderStatus.waitAllocation.getKey(),Constants.WorkOrderStatus.waitDeal.getKey()
+                    ))<=Constants.ZERO){
+            Workorder parentWorkorder = new Workorder();
+            parentWorkorder.setId(workorder.getDcaRecordId());
+            parentWorkorder.setEditDate(new Date());
+            parentWorkorder.setStatus(Constants.WorkOrderStatus.close.getKey());
+            workorderMapper.updateById(parentWorkorder);
+        }
         workorderMapper.updateById(workorder);
         //澶勭悊涓婃姤鏃ュ織
-        Integer logId = this.saveLog(beforeJson,workorder,Constants.THREE,closeDTO.getMember().getId(),"浠诲姟宸插鐞�",closeDTO.getInfo(),null);
+        Integer logId = this.saveLog(beforeJson,workorder,Constants.THREE,closeDTO.getMember().getId(),"浠诲姟宸插鐞�",closeDTO.getInfo(),null,closeDTO.getInfo());
         List<Multifile> multifileList = closeDTO.getMultifileList();
         if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(multifileList)){
             for (Multifile multifile:multifileList) {
@@ -916,12 +950,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());
@@ -933,7 +975,7 @@
         //澶勭悊涓婃姤鏃ュ織
         Integer logId = this.saveLog(beforeJson,workorder,
                 Constants.equalsInteger(passOnDTO.getPassOnType(),Constants.ZERO)?Constants.ONE:Constants.TWO
-                ,passOnDTO.getMember().getId(),"浠诲姟鍒嗛厤",passOnDTO.getInfo(),paramr2);
+                ,passOnDTO.getMember().getId(),"浠诲姟鍒嗛厤",passOnDTO.getInfo(),paramr2,null);
         List<Multifile> multifileList = passOnDTO.getMultifileList();
         if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(multifileList)){
             for (Multifile multifile:multifileList) {
@@ -1150,7 +1192,7 @@
 
         this.saveLog(null,workorder,
                 Constants.FOUR
-                ,member.getId(),"鍌績","宸插偓淇� "+urgeUser.getCompanyName() + "/" + urgeUser.getName(),null);
+                ,member.getId(),"鍌績","宸插偓淇� "+urgeUser.getCompanyName() + "/" + urgeUser.getName(),null,null);
         //鍙戦�佷紒寰�氱煡
         Category category = categoryMapper.selectById(workorder.getTypeId());
         if(Objects.nonNull(category)){

--
Gitblit v1.9.3