From c44c76ea3e1f6b70bb84bdde85ffd1b389e5b8f4 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期三, 23 四月 2025 10:58:02 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 server/src/main/java/com/doumee/service/business/impl/WorkorderServiceImpl.java |  162 +++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 111 insertions(+), 51 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 7cc0471..1b6ba87 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
@@ -207,7 +207,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);
         }
     }
 
@@ -404,7 +404,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 +417,7 @@
         workorderLog.setObjType(objType);
         workorderLog.setTitle(title);
         workorderLog.setContent(content);
+        workorderLog.setRemark(remark);
         workorderLogMapper.insert(workorderLog);
         return workorderLog.getId();
     }
@@ -613,18 +614,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 +708,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 +760,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()) );
@@ -845,7 +850,13 @@
             if(workorder.getQwnoticeMemberIds().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.getQwnoticeMemberIds().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());
@@ -855,7 +866,15 @@
                     &&  !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.getQwnoticeMemberIds().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 +884,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) {
@@ -933,7 +964,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 +1181,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)){
@@ -1330,10 +1361,13 @@
     @Override
     public WorkorderIndexNumVO getIndexData(Workorder workorder) {
         WorkorderIndexNumVO model = new WorkorderIndexNumVO();
+        Date startdate = getStartDateByType(workorder.getTimeType());
         //鏌ヨ浠婂勾鎵�鏈夌殑鏁版嵁
         List<Workorder> list = workorderMapper.selectJoinList(Workorder.class,new MPJLambdaWrapper<Workorder>()
                         .select("type,count(id) as num")
                         .eq(Workorder::getIsdeleted,Constants.ZERO)
+                        .ge(startdate!=null,Workorder::getCreateDate,startdate)
+//                        .lt(endDate!=null,Workorder::getCreateDate,endDate)
                         .groupBy(Workorder::getType  ));
         if(list !=null){
             for(Workorder w : list){
@@ -1352,34 +1386,12 @@
                 }
             }
         }
-        List<Workorder> todays = workorderMapper.selectJoinList(Workorder.class,new MPJLambdaWrapper<Workorder>()
-                        .select("type,count(id) as num")
-                        .eq(Workorder::getIsdeleted,Constants.ZERO)
-                        .apply("to_days(create_date)=to_days(now())")
-                        .groupBy(Workorder::getType  ));
-        if(todays !=null){
-            for(Workorder w : todays){
-                if(Constants.equalsInteger(w.getType(),Constants.ZERO)){
-                    //SHE
-                    model.setTodaySheNum(Constants.formatLongNum(w.getNum()));
-                }else  if(Constants.equalsInteger(w.getType(),Constants.ONE)){
-                    //DCA鎻愪氦鏁�
-                    model.setTodayDcaNum(Constants.formatLongNum(w.getNum()));
-                }else   if(Constants.equalsInteger(w.getType(),Constants.TWO)){
-                    //DCA瀛愬伐鍗�
-                    model.setTodayDcaChildNum(Constants.formatLongNum(w.getNum()));
-                }else   if(Constants.equalsInteger(w.getType(),Constants.THREE)){
-                    //璺岀粖婊�
-                    model.setTodayDbhNum(Constants.formatLongNum(w.getNum()));
-                }
-            }
-        }
-
         List<Workorder> yeslist = workorderMapper.selectJoinList(Workorder.class,new MPJLambdaWrapper<Workorder>()
                 .select("type,count(id) as num")
                 .eq(Workorder::getIsdeleted,Constants.ZERO)
                 .in(Workorder::getStatus,Constants.THREE,Constants.FOUR,Constants.FIVE)
                 .in(Workorder::getType,Constants.THREE,Constants.TWO)
+                .ge(startdate!=null,Workorder::getCreateDate,startdate)
                 .groupBy(Workorder::getType  ));
         if(yeslist !=null){
             for(Workorder w : yeslist){
@@ -1394,16 +1406,64 @@
                 }
             }
         }
-         Workorder  dcaList = workorderMapper.selectJoinOne(Workorder.class,new MPJLambdaWrapper<Workorder>()
-                .select("sum(dca_yes_num) as dcaYesNum,sum(dca_no_num) as dcaNoNum")
-                .eq(Workorder::getIsdeleted,Constants.ZERO)
-                .eq(Workorder::getType,Constants.ONE) );
-        if(dcaList !=null){
-            //DCA绗﹀悎椤瑰拰涓嶇鍚堥」缁熻
-            model.setDcaYesNum((long)Constants.formatIntegerNum(dcaList.getDcaYesNum()));
-            model.setDcaNoNum((long)Constants.formatIntegerNum(dcaList.getDcaNoNum()));
+        if(workorder.getTimeType() == null){
+            List<Workorder> todays = workorderMapper.selectJoinList(Workorder.class,new MPJLambdaWrapper<Workorder>()
+                    .select("type,count(id) as num")
+                    .eq(Workorder::getIsdeleted,Constants.ZERO)
+                    .apply("to_days(create_date)=to_days(now())")
+                    .groupBy(Workorder::getType  ));
+            if(todays !=null){
+                for(Workorder w : todays){
+                    if(Constants.equalsInteger(w.getType(),Constants.ZERO)){
+                        //SHE
+                        model.setTodaySheNum(Constants.formatLongNum(w.getNum()));
+                    }else  if(Constants.equalsInteger(w.getType(),Constants.ONE)){
+                        //DCA鎻愪氦鏁�
+                        model.setTodayDcaNum(Constants.formatLongNum(w.getNum()));
+                    }else   if(Constants.equalsInteger(w.getType(),Constants.TWO)){
+                        //DCA瀛愬伐鍗�
+                        model.setTodayDcaChildNum(Constants.formatLongNum(w.getNum()));
+                    }else   if(Constants.equalsInteger(w.getType(),Constants.THREE)){
+                        //璺岀粖婊�
+                        model.setTodayDbhNum(Constants.formatLongNum(w.getNum()));
+                    }
+                }
+            }
+            Workorder  dcaList = workorderMapper.selectJoinOne(Workorder.class,new MPJLambdaWrapper<Workorder>()
+                    .select("sum(dca_yes_num) as dcaYesNum,sum(dca_no_num) as dcaNoNum")
+                    .eq(Workorder::getIsdeleted,Constants.ZERO)
+                    .eq(Workorder::getType,Constants.ONE) );
+            if(dcaList !=null){
+                //DCA绗﹀悎椤瑰拰涓嶇鍚堥」缁熻
+                model.setDcaYesNum((long)Constants.formatIntegerNum(dcaList.getDcaYesNum()));
+                model.setDcaNoNum((long)Constants.formatIntegerNum(dcaList.getDcaNoNum()));
+            }
         }
+
+
+
         return model;
     }
 
+    private Date getStartDateByType(Integer timeType) {
+        Date date = null;
+        if(timeType == null){
+            return null;
+        } else if (timeType == 0) {
+            //鏈懆
+            date = DateUtil.getBeginDayOfWeek(0);
+        }else if (timeType == 1) {
+            //鏈湀
+            date = DateUtil.getBeginDayOfMonth(0);
+        }else if (timeType == 2) {
+            //鏈搴�
+            date = DateUtil.getBeginDayOfSeason(0);
+        }else if (timeType == 3) {
+            //鏈勾
+            date = DateUtil.getBeginDayOfYear(0);
+        }
+
+        return date;
+    }
+
 }

--
Gitblit v1.9.3