From d866f110ae6534eeb1caa35e1ea0d5b9154bd6af Mon Sep 17 00:00:00 2001
From: k94314517 <8417338+k94314517@user.noreply.gitee.com>
Date: 星期五, 11 四月 2025 09:08:07 +0800
Subject: [PATCH] 工单业务

---
 server/src/main/java/com/doumee/dao/business/model/WorkorderLog.java            |    2 
 server/src/main/java/com/doumee/dao/web/dto/SendCopyDTO.java                    |   31 ++++
 server/src/main/java/com/doumee/api/web/WebWorkOrderController.java             |   32 +++-
 server/src/main/java/com/doumee/core/constants/Constants.java                   |    2 
 server/src/main/java/com/doumee/dao/business/NoticesMapper.java                 |    3 
 server/src/main/java/com/doumee/dao/web/dto/DCANoProblemDTO.java                |    2 
 server/src/main/java/com/doumee/service/business/impl/WorkorderServiceImpl.java |  258 ++++++++++++++++++++++++++----------
 server/src/main/java/com/doumee/dao/business/model/Notices.java                 |    5 
 server/src/main/java/com/doumee/dao/business/model/Workorder.java               |    4 
 server/src/main/java/com/doumee/dao/web/dto/OrderDataDTO.java                   |   31 ++++
 server/src/main/java/com/doumee/dao/web/vo/WorkOrderDataVO.java                 |    1 
 server/src/main/java/com/doumee/service/business/WorkorderService.java          |   10 +
 12 files changed, 291 insertions(+), 90 deletions(-)

diff --git a/server/src/main/java/com/doumee/api/web/WebWorkOrderController.java b/server/src/main/java/com/doumee/api/web/WebWorkOrderController.java
index b4d14cc..4497389 100644
--- a/server/src/main/java/com/doumee/api/web/WebWorkOrderController.java
+++ b/server/src/main/java/com/doumee/api/web/WebWorkOrderController.java
@@ -8,9 +8,7 @@
 import com.doumee.dao.business.model.Managers;
 import com.doumee.dao.business.model.Member;
 import com.doumee.dao.business.model.Workorder;
-import com.doumee.dao.web.dto.CloseDTO;
-import com.doumee.dao.web.dto.PassOnDTO;
-import com.doumee.dao.web.dto.UpdEmailDTO;
+import com.doumee.dao.web.dto.*;
 import com.doumee.dao.web.vo.WorkOrderDataVO;
 import com.doumee.service.business.ManagersService;
 import com.doumee.service.business.MemberService;
@@ -155,13 +153,33 @@
         }
     }
 
+
     @LoginRequired
-    @ApiOperation("鎶ヨ〃")
-    @GetMapping("/getWorkOrderData")
-    public ApiResponse<List<WorkOrderDataVO>> getWorkOrderData(@RequestParam Integer queryType, @RequestHeader(JwtTokenUtil.HEADER_KEY) String token, ServerWebExchange serverWebExchange) {
+    @ApiOperation("宸ュ崟鎶勯��")
+    @PostMapping("/sendCopy")
+    public ApiResponse sendCopy(@RequestParam SendCopyDTO sendCopyDTO, @RequestHeader(JwtTokenUtil.HEADER_KEY) String token, ServerWebExchange serverWebExchange) {
         try {
             ServerHttpRequest request = serverWebExchange.getRequest();
-            return ApiResponse.success(workorderService.getWorkOrderData(queryType));
+            sendCopyDTO.setMember(jwtTokenUtil.getUserInfoByToken(token));
+            workorderService.sendCopy(sendCopyDTO);
+            return ApiResponse.success("鎿嶄綔鎴愬姛");
+        }catch (BusinessException e){
+            return ApiResponse.failed(e.getCode(),e.getMessage());
+        }catch (Exception e){
+            e.printStackTrace();
+            return ApiResponse.failed(ResponseStatus.SERVER_ERROR);
+        }
+    }
+
+
+
+    @LoginRequired
+    @ApiOperation("SHE銆佽穼缁婃粦鎶ヨ〃")
+    @PostMapping("/getWorkOrderData")
+    public ApiResponse<List<WorkOrderDataVO>> getWorkOrderData(@RequestBody OrderDataDTO orderDataDTO, @RequestHeader(JwtTokenUtil.HEADER_KEY) String token, ServerWebExchange serverWebExchange) {
+        try {
+            ServerHttpRequest request = serverWebExchange.getRequest();
+            return ApiResponse.success(workorderService.getWorkOrderData(orderDataDTO));
         }catch (BusinessException e){
             return ApiResponse.failed(e.getCode(),e.getMessage());
         }catch (Exception e){
diff --git a/server/src/main/java/com/doumee/core/constants/Constants.java b/server/src/main/java/com/doumee/core/constants/Constants.java
index 023db47..01a637e 100644
--- a/server/src/main/java/com/doumee/core/constants/Constants.java
+++ b/server/src/main/java/com/doumee/core/constants/Constants.java
@@ -22,6 +22,8 @@
     public static final String QYWX_CORPID = "QYWX_CORPID";
     public static final String QYWX_SECRET = "QYWX_SECRET";
     public static final String QYWX_TOKEN = "QYWX_TOKEN";
+    public static final String QYWX_AGENTID = "QYWX_AGENTID";
+
     public static final String QYWX = "QYWX";
     public static final  Integer ONE = 1;
     public static final Integer TWO = 2;
diff --git a/server/src/main/java/com/doumee/dao/business/NoticesMapper.java b/server/src/main/java/com/doumee/dao/business/NoticesMapper.java
index a6293ab..9adbcf7 100644
--- a/server/src/main/java/com/doumee/dao/business/NoticesMapper.java
+++ b/server/src/main/java/com/doumee/dao/business/NoticesMapper.java
@@ -2,11 +2,12 @@
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.doumee.dao.business.model.Notices;
+import com.github.yulichang.base.MPJBaseMapper;
 
 /**
  * @author 姹熻箘韫�
  * @since 2025/04/02 17:49
  */
-public interface NoticesMapper extends BaseMapper<Notices> {
+public interface NoticesMapper extends MPJBaseMapper<Notices> {
 
 }
diff --git a/server/src/main/java/com/doumee/dao/business/model/Notices.java b/server/src/main/java/com/doumee/dao/business/model/Notices.java
index a2ecc6c..53e03b7 100644
--- a/server/src/main/java/com/doumee/dao/business/model/Notices.java
+++ b/server/src/main/java/com/doumee/dao/business/model/Notices.java
@@ -75,11 +75,10 @@
     @ExcelExportColumn(name="鍏宠仈瀵硅薄鍚嶇О")
     private String objName;
 
-    @ApiModelProperty(value = "绫诲瀷 0宸ュ崟涓婃姤 1宸ュ崟鍒嗛厤鐗╀笟涓荤 2SHE宸ュ崟鎶勯��  3宸ュ崟澶勭悊鍌績 4宸ュ崟鍒嗛厤澶勭悊浜�")
-    @ExcelExportColumn(name="绫诲瀷 0宸ュ崟涓婃姤 1宸ュ崟鍒嗛厤鐗╀笟涓荤 2SHE宸ュ崟鎶勯��  3宸ュ崟澶勭悊鍌績 4宸ュ崟鍒嗛厤澶勭悊浜�")
+    @ApiModelProperty(value = "绫诲瀷 0宸ュ崟涓婃姤 1鎶勯�� 2杞氦")
     private String type;
 
-    @ApiModelProperty(value = "鍏宠仈鍙傛暟1")
+    @ApiModelProperty(value = "鐢ㄦ埛浼佸井涓婚敭")
     @ExcelExportColumn(name="鍏宠仈鍙傛暟1")
     private String param1;
 
diff --git a/server/src/main/java/com/doumee/dao/business/model/Workorder.java b/server/src/main/java/com/doumee/dao/business/model/Workorder.java
index f071035..404c62a 100644
--- a/server/src/main/java/com/doumee/dao/business/model/Workorder.java
+++ b/server/src/main/java/com/doumee/dao/business/model/Workorder.java
@@ -50,8 +50,8 @@
     @ExcelExportColumn(name="鏄惁鍒犻櫎0鍚� 1鏄�")
     private Integer isdeleted;
 
-    @ApiModelProperty(value = "鎵�灞炲垎绫荤紪锛堝叧鑱攃ategory)")
-    @ExcelExportColumn(name="鎵�灞炲垎绫荤紪锛堝叧鑱攃ategory)")
+    @ApiModelProperty(value = "DCA鍒嗙被锛堝叧鑱攃ategory)")
+    @ExcelExportColumn(name="DCA鍒嗙被锛堝叧鑱攃ategory)")
     private String categoryId;
 
     @ApiModelProperty(value = "澶囨敞")
diff --git a/server/src/main/java/com/doumee/dao/business/model/WorkorderLog.java b/server/src/main/java/com/doumee/dao/business/model/WorkorderLog.java
index f7398b7..30815f8 100644
--- a/server/src/main/java/com/doumee/dao/business/model/WorkorderLog.java
+++ b/server/src/main/java/com/doumee/dao/business/model/WorkorderLog.java
@@ -85,7 +85,7 @@
     @ExcelExportColumn(name="鍙傛暟1")
     private String param1;
 
-    @ApiModelProperty(value = "鍙傛暟2")
+    @ApiModelProperty(value = "澶勭悊浜�")
     @ExcelExportColumn(name="鍙傛暟2")
     private String param2;
 
diff --git a/server/src/main/java/com/doumee/dao/web/dto/DCANoProblemDTO.java b/server/src/main/java/com/doumee/dao/web/dto/DCANoProblemDTO.java
index 1bc1f9e..2a77a3b 100644
--- a/server/src/main/java/com/doumee/dao/web/dto/DCANoProblemDTO.java
+++ b/server/src/main/java/com/doumee/dao/web/dto/DCANoProblemDTO.java
@@ -21,7 +21,7 @@
     @ApiModelProperty(value = "鎻忚堪 - 涓嶇鍚堝師鍥�")
     private String eventInfo;
 
-    @ApiModelProperty(value = "闂涓婚敭锛坈ategory:id锛�")
+    @ApiModelProperty(value = "鍥剧墖淇℃伅")
     private List<Multifile> multifileList;
 
 
diff --git a/server/src/main/java/com/doumee/dao/web/dto/OrderDataDTO.java b/server/src/main/java/com/doumee/dao/web/dto/OrderDataDTO.java
new file mode 100644
index 0000000..e99f6e4
--- /dev/null
+++ b/server/src/main/java/com/doumee/dao/web/dto/OrderDataDTO.java
@@ -0,0 +1,31 @@
+package com.doumee.dao.web.dto;
+
+import com.doumee.dao.business.model.Multifile;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2025/4/8 14:25
+ */
+@Data
+public class OrderDataDTO {
+
+    @ApiModelProperty(value = "鏌ヨ鏃ユ湡绫诲瀷")
+    private Integer queryType;
+
+    @ApiModelProperty(value = "鏁版嵁绫诲瀷锛�0SHE浜嬩欢 2DCA宸ュ崟璁板綍 3璺岀粖婊戜簨浠�")
+    private Integer orderType;
+
+    @ApiModelProperty(value = "涓婚涓婚敭")
+    private Integer typeId;
+
+    @ApiModelProperty(value = "鍦扮偣涓婚敭")
+    private Integer locationId;
+
+
+}
diff --git a/server/src/main/java/com/doumee/dao/web/dto/SendCopyDTO.java b/server/src/main/java/com/doumee/dao/web/dto/SendCopyDTO.java
new file mode 100644
index 0000000..c9b1bb1
--- /dev/null
+++ b/server/src/main/java/com/doumee/dao/web/dto/SendCopyDTO.java
@@ -0,0 +1,31 @@
+package com.doumee.dao.web.dto;
+
+import com.doumee.dao.business.model.Member;
+import com.doumee.dao.business.model.Multifile;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2025/4/8 17:41
+ */
+@Data
+public class SendCopyDTO {
+
+    @ApiModelProperty(value = "鎶勯�佷汉鍛樹富閿� 澶氫釜浠�,鍒嗗壊")
+    private String userIds;
+
+    @ApiModelProperty(value = "宸ュ崟涓婚敭")
+    private Integer workorderId;
+
+    @ApiModelProperty(value = "璇存槑")
+    private String info;
+
+    @ApiModelProperty(value = "鎿嶄綔鐢ㄦ埛",hidden = true)
+    private Member member;
+
+}
diff --git a/server/src/main/java/com/doumee/dao/web/vo/WorkOrderDataVO.java b/server/src/main/java/com/doumee/dao/web/vo/WorkOrderDataVO.java
index da032de..c8738af 100644
--- a/server/src/main/java/com/doumee/dao/web/vo/WorkOrderDataVO.java
+++ b/server/src/main/java/com/doumee/dao/web/vo/WorkOrderDataVO.java
@@ -32,5 +32,4 @@
     @ApiModelProperty(value = "鏈叧闂�绘暟")
     private Integer unCloseTotal;
 
-
 }
diff --git a/server/src/main/java/com/doumee/service/business/WorkorderService.java b/server/src/main/java/com/doumee/service/business/WorkorderService.java
index 2c09414..6cbc456 100644
--- a/server/src/main/java/com/doumee/service/business/WorkorderService.java
+++ b/server/src/main/java/com/doumee/service/business/WorkorderService.java
@@ -5,7 +5,9 @@
 import com.doumee.dao.business.model.Member;
 import com.doumee.dao.business.model.Workorder;
 import com.doumee.dao.web.dto.CloseDTO;
+import com.doumee.dao.web.dto.OrderDataDTO;
 import com.doumee.dao.web.dto.PassOnDTO;
+import com.doumee.dao.web.dto.SendCopyDTO;
 import com.doumee.dao.web.vo.WorkOrderDataVO;
 
 import java.util.List;
@@ -139,6 +141,12 @@
      */
     void jobUrge();
 
-    List<WorkOrderDataVO> getWorkOrderData(Integer queryType) throws Exception;
+    List<WorkOrderDataVO> getWorkOrderData(OrderDataDTO orderDataDTO) throws Exception;
+
+    /**
+     * 宸ュ崟鎶勯��
+     * @param sendCopyDTO
+     */
+    void sendCopy(SendCopyDTO sendCopyDTO);
 
 }
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 c6a91b9..36aae5b 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
@@ -14,9 +14,7 @@
 import com.doumee.core.utils.qiyeweixin.model.request.QywxTextCardMsgRequest;
 import com.doumee.dao.business.*;
 import com.doumee.dao.business.model.*;
-import com.doumee.dao.web.dto.CloseDTO;
-import com.doumee.dao.web.dto.DCANoProblemDTO;
-import com.doumee.dao.web.dto.PassOnDTO;
+import com.doumee.dao.web.dto.*;
 import com.doumee.dao.web.vo.WorkOrderDataVO;
 import com.doumee.service.business.WorkorderService;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -67,6 +65,9 @@
     @Autowired
     private CategoryMapper categoryMapper;
 
+    @Autowired
+    private NoticesMapper noticesMapper;
+
     @Resource(name="sessionRedisTemplate")
     private RedisTemplate<Object, Serializable> redisTemplate;
 
@@ -85,84 +86,93 @@
         Constants.WorkOrderStatus  workOrderStatus = Constants.equalsInteger(workorder.getType(),Constants.ZERO)?Constants.WorkOrderStatus.close:Constants.WorkOrderStatus.waitConfirm;
         workorder.setStatus(workOrderStatus.getKey());
         workorderMapper.insert(workorder);
+
         //瀛樺偍DCA 闂璁板綍琛�
         this.saveProblemData(workorder);
         //瀛樺偍闄勪欢淇℃伅
         this.saveMutiFile(workorder);
         //瀛樺偍鏃ュ織
         this.dealLogData(workorder,workOrderStatus);
-        // 鍙戦�佷紒寰�氱煡
-        QywxSendMsgRequest qywxSendMsgRequest = new QywxSendMsgRequest();
-        qywxSendMsgRequest.setTouser(workorder.getQwnoticeMemberIds().replace(",","|"));
-        qywxSendMsgRequest.setMsgtype("text");
-        qywxSendMsgRequest.setAgentid(null);
-        QywxTextCardMsgRequest textCard = new QywxTextCardMsgRequest();
-        textCard.setTitle(workOrderStatus.getLogTitle());
-
-        qywxSendMsgRequest.setTextcard(textCard);
-        QywxUtil.sendMsg(systemDictDataBiz.queryByCode(Constants.QYWX,Constants.QYWX_TOKEN).getCode(),
-                qywxSendMsgRequest);
-
+        Member member = memberMapper.selectById(workorder.getMemberId());
+        Category category = categoryMapper.selectById(workorder.getTypeId());
+        if(Objects.nonNull(member)&&Objects.nonNull(category)){
+            // 鍙戦�佷紒寰�氱煡
+            this.sendQwMsg(workorder,workorder.getQwnoticeMemberIds(),member,category.getName(),Constants.ZERO,null);
+        }
+        //瀛樺偍寰呭姙浜哄憳淇℃伅
+        this.saveNotice(Arrays.asList(workorder.getQwnoticeMemberIds().split(",")),workorder.getId(),Constants.ZERO,Constants.ZERO);
         return workorder.getId();
     }
 
 
-    public void sendQwMsg(Workorder workorder){
+    /**
+     * 鍙戦�侀�氱煡
+     * @param workorder
+     * @param qwIds 娑堟伅鎺ユ敹浜�
+     * @param member 鎿嶄綔浜哄悕绉�
+     * @param categoryName
+     * @param contentType 0=姝e父閫氱煡锛�1=鍌績锛�2=鎶勯�� 3=宸插鐞嗕竴椤�/浠诲姟宸插鐞�
+     * @param csInfo 鎶勯�佷俊鎭�
+     */
+    public void sendQwMsg(Workorder workorder,String qwIds,Member member,String categoryName,Integer contentType,String csInfo){
         QywxSendMsgRequest qywxSendMsgRequest = new QywxSendMsgRequest();
-        QywxTextCardMsgRequest textCard = new QywxTextCardMsgRequest();
         qywxSendMsgRequest.setMsgtype("text");
-        qywxSendMsgRequest.setAgentid(null);
-        textCard.setBtntxt("璇︽儏");
-        //鏂版彁浜�
-        if(Constants.equalsInteger(workorder.getStatus(),Constants.WorkOrderStatus.waitConfirm.getKey())){
-            qywxSendMsgRequest.setTouser(workorder.getQwnoticeMemberIds().replace(",","|"));
-            textCard.setUrl(null);
-            //SHE 鎻愪氦
-            if(Constants.equalsInteger(workorder.getType(),Constants.ZERO)){
-                Category category = categoryMapper.selectById(workorder.getType());
-                textCard.setTitle("銆怱HE浜嬩欢涓婃姤銆�");
-                String message  = "";
-                if(Constants.equalsInteger(workorder.getMemberType(),Constants.ZERO)){
-                    message = "鏈汉";
-                }else {
-                    message = Constants.equalsInteger(workorder.getMemberType(),Constants.ONE)?"鍚屼簨":"渚涘簲鍟�";
-                }
-                message = message + "-" + workorder.getMemberNames() + " " + DateUtil.formatDate(new Date(),"yyyy-MM-dd HH:mm") + workorder.getLocationName() + category.getName();
-                textCard.setDescription(" <div class=\"normal\">"+message+"</div>");
-            }else{
-
+        qywxSendMsgRequest.setTouser(qwIds.replace(",","|"));
+        qywxSendMsgRequest.setAgentid(systemDictDataBiz.queryByCode(Constants.QYWX,Constants.QYWX_AGENTID).getCode());
+        String sendUser = "";
+        if(Objects.nonNull(member)){
+            if(org.apache.commons.lang3.StringUtils.isNotBlank(member.getName())){
+                sendUser =  member.getName();
+            }
+            if(org.apache.commons.lang3.StringUtils.isNotBlank(member.getCompanyName())){
+                sendUser =  member.getCompanyName()+"/" + sendUser ;
             }
         }
+        QywxTextCardMsgRequest textCard = this.dealMessageContent(workorder,sendUser,categoryName,contentType,csInfo);
         qywxSendMsgRequest.setTextcard(textCard);
         QywxUtil.sendMsg(systemDictDataBiz.queryByCode(Constants.QYWX,Constants.QYWX_TOKEN).getCode(),
                 qywxSendMsgRequest);
     }
 
 
-//    public QywxTextCardMsgRequest dealMessageContent(Workorder workorder,Integer type){
-//        QywxTextCardMsgRequest textCard = new QywxTextCardMsgRequest();
-//        String message = "";
-//        if(Constants.equalsInteger(workorder.getType(),Constants.ZERO)){
-//            Category category = categoryMapper.selectById(workorder.getType());
-//            textCard.setTitle("銆怱HE浜嬩欢涓婃姤銆�");
-//            if(Constants.equalsInteger(workorder.getMemberType(),Constants.ZERO)){
-//                message = "鏈汉";
-//            }else {
-//                message = Constants.equalsInteger(workorder.getMemberType(),Constants.ONE)?"鍚屼簨":"渚涘簲鍟�";
-//            }
-//            message = message + "-" + workorder.getMemberNames() + " " + DateUtil.formatDate(new Date(),"yyyy-MM-dd HH:mm") + workorder.getLocationName() + category.getName();
-//            textCard.setDescription(" <div class=\"normal\">"+message+"</div>");
-//        }else{
-//            textCard.setTitle(Constants.equalsInteger(workorder.getType(),Constants.ONE)?"銆怐CA涓婃姤銆�":"璺岀粖婊戦闄╀笂鎶�");
-//            if(Constants.equalsInteger(workorder.getType(),Con)){
-//
-//            }
-//
-//
-//
-//        }
-//
-//    }
+    /**
+     * 閫氱煡鏂囨鏁寸悊
+     * @param workorder
+     * @param userName 鎿嶄綔浜哄悕绉�  閮ㄩ棬+鍚嶇О
+     * @param categoryName
+     * @param contentType 0=姝e父閫氱煡锛�1=鍌績锛堣穼缁婃粦/DCA锛夛紱2=鎶勯�侊紙DCA锛� 3=宸插鐞嗕竴椤�/浠诲姟宸插鐞�
+     * @param csInfo 鎶勯�佷俊鎭�
+     * @return
+     */
+    public QywxTextCardMsgRequest dealMessageContent(Workorder workorder,String userName ,String categoryName,Integer contentType,String csInfo){
+        QywxTextCardMsgRequest textCard = new QywxTextCardMsgRequest();
+        String message = "";
+        if(Constants.equalsInteger(workorder.getType(),Constants.ZERO)){
+            textCard.setTitle("銆怱HE浜嬩欢涓婃姤銆�");
+            if(Constants.equalsInteger(workorder.getMemberType(),Constants.ZERO)){
+                message = "鏈汉";
+            }else {
+                message = Constants.equalsInteger(workorder.getMemberType(),Constants.ONE)?"鍚屼簨":"渚涘簲鍟�";
+            }
+            message = message + "-" + workorder.getMemberNames() + " " + DateUtil.formatDate(new Date(),"yyyy-MM-dd HH:mm") + workorder.getLocationName() + categoryName;
+            textCard.setDescription(" <div class=\"normal\">"+message+"</div>");
+        }else{
+            textCard.setTitle(Constants.equalsInteger(workorder.getType(),Constants.ONE)?"銆怐CA涓婃姤銆�":"璺岀粖婊戦闄╀笂鎶�");
+            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\">"+  DateUtil.formatDate(new Date(),"yyyy-MM-dd HH:mm") +"/"+ workorder.getLocationName() +"/"+  categoryName+"</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>";
+                message = message + " <div class=\"normal\">绗﹀悎锛�"+ workorder.getDcaYesNum()  +" 涓嶇鍚堬細"+workorder.getDcaNoNum()+"</div>";
+                if(Constants.equalsInteger(contentType,Constants.TWO)){
+                    message = message + " <div class=\"normal\">璇存槑锛�"+ csInfo +"</div>";
+                }
+            }
+            textCard.setDescription(message);
+        }
+        return textCard;
+    }
 
 
 
@@ -207,7 +217,8 @@
                     dcaWorkOrder.setCreateDate(new Date());
                     dcaWorkOrder.setEditDate(new Date());
                     dcaWorkOrder.setMemberId(workorder.getMemberId());
-                    dcaWorkOrder.setTypeId(dcaNoProblemDTO.getProblemId());
+                    dcaWorkOrder.setTypeId(workorder.getTypeId());
+                    dcaWorkOrder.setCategoryId(Integer.toString(problem.getParentId()));
                     dcaWorkOrder.setType(Constants.TWO);
                     dcaWorkOrder.setStatus(workOrderStatus.getKey());
                     dcaWorkOrder.setIsdeleted(Constants.ZERO);
@@ -256,6 +267,9 @@
                     .eq(Managers::getIsdeleted,Constants.ZERO)
                     .eq(Managers::getType,Constants.ZERO).orderByAsc(Managers::getSortnum)
             );
+            if(Objects.isNull(managersList)){
+                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"鏈煡璇㈠埌SHE澶勭悊鎶勯�佷汉鍛�");
+            }
             if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(managersList)){
                 workorder.setQwnoticeMemberIds(managersList.stream().map(i->i.getMemberId().toString()).collect(Collectors.joining(",")));
                 if(Constants.equalsInteger(workorder.getType(),Constants.ZERO)){
@@ -332,6 +346,7 @@
         if(Constants.equalsInteger(workorder.getType(),Constants.ONE)){
             if(Objects.isNull(workorder.getDcaYesNum())
                 || Objects.isNull(workorder.getDcaNoNum())
+                    || Objects.isNull(workorder.getCategoryId())
             ){
                 throw new BusinessException(ResponseStatus.BAD_REQUEST);
             }
@@ -658,12 +673,14 @@
         if(Objects.isNull(workorder)){
             throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌宸ュ崟鏁版嵁");
         }
-        if(Constants.equalsInteger(workorder.getType(),Constants.ZERO)){
-            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"SHE宸ュ崟鏃犳硶杩涜璇ユ搷浣�");
+        if(Constants.equalsInteger(workorder.getType(),Constants.ZERO)||Constants.equalsInteger(workorder.getType(),Constants.ONE)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"SHE銆丏CA宸ュ崟鏃犳硶杩涜璇ユ搷浣�");
         }
         if(Constants.equalsInteger(workorder.getStatus(),Constants.WorkOrderStatus.sheClose.getKey())||Constants.equalsInteger(workorder.getStatus(),Constants.WorkOrderStatus.wtsClose.getKey())||Constants.equalsInteger(workorder.getStatus(),Constants.WorkOrderStatus.close.getKey())){
             throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"宸ュ崟鐘舵�佸凡娴佽浆");
         }
+        //浼佸井閫氱煡浜� 浼佸井涓婚敭 
+        List<String> qwIds = new ArrayList<>();
         //鎻愪氦鍚庣殑 寰呯‘璁�/寰呭垵瀹$姸鎬� 濡傛灉鍘诲叧闂� 鍙湁宸ュ崟閲岀粦瀹氱殑SHE浜哄憳鍙互鍏抽棴
         if(Constants.equalsInteger(workorder.getStatus(),Constants.WorkOrderStatus.waitConfirm.getKey())){
             //鍒ゆ柇SHE浜哄憳鍐呮槸鍚︽湁褰撳墠鐧诲綍璐﹀彿
@@ -671,12 +688,17 @@
                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝褰撳墠宸ュ崟闈炴偍鐨勫伐鍗曪紝鏃犳硶杩涜澶勭悊");
             }
             workorder.setStatus(Constants.WorkOrderStatus.sheClose.getKey());
+            qwIds = Arrays.asList(workorder.getQwnoticeMemberIds());
+            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())){
                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝褰撳墠宸ュ崟闈炴偍鐨勫伐鍗曪紝鏃犳硶杩涜澶勭悊");
             }
             workorder.setStatus(Constants.WorkOrderStatus.wtsClose.getKey());
+            qwIds = Arrays.asList(workorder.getQwnoticeMemberIds());
+            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())
@@ -684,6 +706,9 @@
                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝褰撳墠宸ュ崟闈炴偍鐨勫伐鍗曪紝鏃犳硶杩涜澶勭悊");
             }
             workorder.setStatus(Constants.WorkOrderStatus.wtsClose.getKey());
+            qwIds = Arrays.asList(workorder.getQwnoticeMemberIds());
+            qwIds.add(workorder.getDealerId());
+            qwIds.remove(closeDTO.getMember().getQwId());
         }else{
             throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"宸ュ崟鐘舵�佸凡娴佽浆");
         }
@@ -702,6 +727,17 @@
             }
             multifileMapper.insert(multifileList);
         }
+        //鍙戦�佷紒寰�氱煡
+        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(qwIds)){
+            Set<String> qwIdSet = new HashSet<>(qwIds);
+            String qwIdStr  = String.join(",", qwIdSet);
+            Category category = categoryMapper.selectById(workorder.getTypeId());
+            if(Objects.nonNull(closeDTO.getMember())&&Objects.nonNull(category)&& org.apache.commons.lang3.StringUtils.isNotBlank(qwIdStr)){
+                // 鍙戦�佷紒寰�氱煡
+                this.sendQwMsg(workorder,qwIdStr,closeDTO.getMember(),category.getName(),Constants.THREE,null);
+            }
+        }
+
     }
 
 
@@ -750,15 +786,49 @@
         if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(multifileList)){
             for (Multifile multifile:multifileList) {
                 multifile.setObjId(logId);
+                multifile.setIsdeleted(Constants.ZERO);
                 multifile.setCreateDate(new Date());
                 multifile.setObjType(Constants.multiFileType.passOn);
             }
             multifileMapper.insert(multifileList);
         }
-        //TODO 浼佷笟寰俊閫氱煡
+        //浼佷笟寰俊閫氱煡
+        Category category = categoryMapper.selectById(workorder.getTypeId());
+        if(Objects.nonNull(passOnDTO.getMember())&&Objects.nonNull(category)){
+            // 鍙戦�佷紒寰�氱煡
+            this.sendQwMsg(workorder,member.getQwId(),passOnDTO.getMember(),category.getName(),Constants.ZERO,null);
+        }
+        //瀛樺偍寰呭姙浜哄憳淇℃伅
+        this.saveNotice(Arrays.asList(passOnDTO.getMember().getQwId().split(",")),workorder.getId(),Constants.ZERO,Constants.TWO);
     }
 
 
+    @Override
+    public void sendCopy(SendCopyDTO sendCopyDTO) {
+        if (Objects.isNull(sendCopyDTO)
+                || Objects.isNull(sendCopyDTO.getWorkorderId())
+                || StringUtils.isEmpty(sendCopyDTO.getUserIds())) {
+            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
+        Workorder workorder = workorderMapper.selectById(sendCopyDTO.getWorkorderId());
+        if (Objects.isNull(workorder)) {
+            throw new BusinessException(ResponseStatus.DATA_EMPTY);
+        }
+        List<Member> memberList = memberMapper.selectList(new QueryWrapper<Member>().lambda().eq(Member::getIsdeleted, Constants.ZERO)
+                .isNotNull(Member::getQwId)
+                .in(Member::getId, sendCopyDTO.getUserIds().split(",")));
+        if (com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(memberList)) {
+            List<String> qwIdList = memberList.stream().map(i -> i.getQwId()).collect(Collectors.toList());
+            Category category = categoryMapper.selectById(workorder.getTypeId());
+            if (Objects.nonNull(category)) {
+                // 鍙戦�佷紒寰�氱煡
+                this.sendQwMsg(workorder, String.join(",", qwIdList), sendCopyDTO.getMember(), category.getName(), Constants.ONE, null);
+            }
+            //瀛樺偍寰呭姙淇℃伅
+            this.saveNotice(qwIdList, workorder.getId(), Constants.ONE, Constants.ONE);
+        }
+
+    }
 
     @Override
     @Transactional(rollbackFor = {BusinessException.class,Exception.class})
@@ -783,7 +853,12 @@
         this.saveLog(null,workorder,
                 Constants.ONE
                 ,member.getId(),"鍌績","宸插偓淇� "+urgeUser.getCompanyName() + "/" + urgeUser.getName());
-        //TODO 鍙戦�佷紒寰�氱煡
+        //鍙戦�佷紒寰�氱煡
+        Category category = categoryMapper.selectById(workorder.getTypeId());
+        if(Objects.nonNull(category)){
+            // 鍙戦�佷紒寰�氱煡
+            this.sendQwMsg(workorder,urgeUser.getQwId(),null,category.getName(),Constants.ONE,null);
+        }
 
     }
 
@@ -818,25 +893,62 @@
         }else{
             return;
         }
-        //TODO 鍙戦�佷紒寰�氱煡
+        //鍙戦�佷紒寰�氱煡
+        Category category = categoryMapper.selectById(workorder.getTypeId());
+        if(Objects.nonNull(category)){
+            // 鍙戦�佷紒寰�氱煡
+            this.sendQwMsg(workorder,urgeUser.getQwId(),null,category.getName(),Constants.ONE,null);
+        }
     }
 
 
+    public void saveNotice(List<String> qwIdList ,Integer workorderId,Integer isSendCopy,Integer type){
+        List<Notices> noticesList = new ArrayList<>();
+        for (String qwId:qwIdList) {
+            //瀛樺偍鎶勯�佽褰�
+            Notices notices = new Notices();
+            notices.setCreateDate(new Date());
+            notices.setIsdeleted(Constants.ZERO);
+            notices.setObjId(workorderId);
+            notices.setObjType(Constants.ZERO+"");
+            notices.setStatus(Constants.ZERO);
+            notices.setSendacopy(isSendCopy);
+            notices.setParam1(qwId);
+            notices.setType(Integer.toString(type));
+            noticesList.add(notices);
+        }
+        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(noticesList)){
+            noticesMapper.insert(noticesList);
+        }
+    }
+
+
+
     /**
-     * 鏁版嵁鎶ヨ〃
-     * @param queryType 0=鎸夌収鏈堜唤锛�1=鎸夌収瀛e害锛�2=鎸夌収骞翠唤锛堟殏涓嶅鐞嗭級
+     * SHE / 璺岀粖婊戞姤琛�
      * @return
+     * @throws Exception
      */
     @Override
-    public List<WorkOrderDataVO> getWorkOrderData(Integer queryType) throws Exception {
+    public List<WorkOrderDataVO> getWorkOrderData(OrderDataDTO orderDataDTO) throws Exception {
+        if (Objects.isNull(orderDataDTO.getQueryType())||Objects.isNull(orderDataDTO.getOrderType())) {
+            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
         String year = DateUtil.getNowYear();
         Integer nowMonth = DateUtil.getNowMonth();
         Integer quarter  = (nowMonth - 1) / 3 + 1;
         List<WorkOrderDataVO> workOrderDataVOList = new ArrayList<>();
         //鏌ヨ浠婂勾鎵�鏈夌殑鏁版嵁
-        List<Workorder> workorderList = workorderMapper.selectList(new QueryWrapper<Workorder>().lambda().like(Workorder::getCreateDate,year)
+        List<Workorder> workorderList = workorderMapper.selectJoinList(Workorder.class,new MPJLambdaWrapper<Workorder>()
+                        .selectAll(Workorder.class)
+                        .leftJoin(" category c1 on c1.id = t.type_id " )
+                        .leftJoin(" category c2 on c2.id = t.localtion_id " )
+                        .apply(Objects.nonNull(orderDataDTO.getTypeId())," find_in_set("+orderDataDTO.getTypeId()+", REPLACE(c1.ID_PATH,'/',',')  )  ")
+                        .apply(Objects.nonNull(orderDataDTO.getLocationId())," find_in_set("+orderDataDTO.getLocationId()+", REPLACE(c2.ID_PATH,'/',',')  )  ")
+                        .like(Workorder::getCreateDate,year)
+                        .eq(Workorder::getType,orderDataDTO.getOrderType())
                 .eq(Workorder::getIsdeleted,Constants.ZERO));
-        if(Constants.equalsInteger(queryType,Constants.ZERO)){
+        if(Constants.equalsInteger(orderDataDTO.getQueryType(),Constants.ZERO)){
             for (int i = 1 ; i <= nowMonth; i++) {
                 WorkOrderDataVO workOrderDataVO = new WorkOrderDataVO();
                 String monthDay = year + "-" + org.apache.commons.lang3.StringUtils.leftPad(nowMonth.toString(),2,"0");
@@ -857,7 +969,7 @@
                 }
                 workOrderDataVOList.add(workOrderDataVO);
             }
-        }else if(Constants.equalsInteger(queryType,Constants.ONE)){
+        }else if(Constants.equalsInteger(orderDataDTO.getQueryType(),Constants.ONE)){
             //鎸夌収瀛e害鏌ヨ
             for (int i = 1 ; i <= quarter; i++) {
                 List<Workorder> dataList = new ArrayList<>();

--
Gitblit v1.9.3