From 997058fc1caec43ad2518d88c94a39db02e0292b Mon Sep 17 00:00:00 2001
From: k94314517 <8417338+k94314517@user.noreply.gitee.com>
Date: 星期一, 14 四月 2025 18:57:25 +0800
Subject: [PATCH] 工单业务

---
 server/src/main/java/com/doumee/api/common/PublicCloudController.java                            |    6 ++
 server/src/main/java/com/doumee/api/web/WebCategoryController.java                               |    8 ++--
 server/src/main/java/com/doumee/api/web/WebWorkOrderController.java                              |    4 -
 server/src/main/java/com/doumee/service/business/impl/WorkorderServiceImpl.java                  |   44 +++++++++++++++------
 server/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java                   |    6 ++-
 server/src/main/java/com/doumee/service/business/CategoryService.java                            |    4 +-
 server/src/main/java/com/doumee/core/utils/qiyeweixin/QywxUtil.java                              |   17 +++++---
 server/src/main/java/com/doumee/core/utils/qiyeweixin/model/response/QywxBaseSingleResponse.java |    2 
 server/src/main/java/com/doumee/dao/business/model/Managers.java                                 |    3 +
 9 files changed, 62 insertions(+), 32 deletions(-)

diff --git a/server/src/main/java/com/doumee/api/common/PublicCloudController.java b/server/src/main/java/com/doumee/api/common/PublicCloudController.java
index abe0006..e2a317a 100644
--- a/server/src/main/java/com/doumee/api/common/PublicCloudController.java
+++ b/server/src/main/java/com/doumee/api/common/PublicCloudController.java
@@ -166,7 +166,11 @@
 //        folder = systemDictDataBiz.queryByCode(Constants.FTP,folder).getCode();
         Date d1 = new Date();
         log.error("鎬诲緱涓婁紶鏂囦欢鎴愬姛=============寮�濮�========="+DateUtil.getPlusTime2(d1));
-        folder =StringUtils.defaultString(folder).replace("/", "");
+        SystemDictData folderData =  systemDictDataBiz.queryByCode(Constants.FTP,folder);
+        if(Objects.isNull(folderData)||StringUtils.isBlank(folderData.getCode())){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鐩爣鏂囦欢澶归敊璇�");
+        }
+        folder =folderData.getCode().replace("/", "");
         String prefixPath = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode();
         InputStream is = null;
         response.setCharacterEncoding("UTF-8");
diff --git a/server/src/main/java/com/doumee/api/web/WebCategoryController.java b/server/src/main/java/com/doumee/api/web/WebCategoryController.java
index 3cab702..16fa9c3 100644
--- a/server/src/main/java/com/doumee/api/web/WebCategoryController.java
+++ b/server/src/main/java/com/doumee/api/web/WebCategoryController.java
@@ -38,11 +38,11 @@
     @LoginRequired
     @GetMapping("/categoryTree")
     @ApiOperation("鑾峰彇鍒嗙被绫诲埆鑾峰彇鍒嗙被鏍�")
-    public ApiResponse<List<CategoryVO>> categoryVOTree(@RequestParam String categoryType, @RequestHeader(JwtTokenUtil.HEADER_KEY) String token){
+    public ApiResponse<List<CategoryVO>> categoryVOTree(@RequestParam String categoryType,Integer categoryId, @RequestHeader(JwtTokenUtil.HEADER_KEY) String token){
         try {
 
             jwtTokenUtil.getUserInfoByToken(token);
-            return ApiResponse.success(categoryService.getCategoryVOTree(categoryType));
+            return ApiResponse.success(categoryService.getCategoryVOTree(categoryType,categoryId));
         }catch (BusinessException e){
             return ApiResponse.failed(e.getCode(),e.getMessage());
         }catch (Exception e){
@@ -54,11 +54,11 @@
     @LoginRequired
     @GetMapping("/categoryList")
     @ApiOperation("鑾峰彇鍒嗙被绫诲埆鑾峰彇鍒嗙被鍒楄〃")
-    public ApiResponse<List<CategoryVO>> categoryList(Integer categoryType, @RequestHeader(JwtTokenUtil.HEADER_KEY) String token){
+    public ApiResponse<List<CategoryVO>> categoryList(Integer categoryType,Integer isRoot ,@RequestHeader(JwtTokenUtil.HEADER_KEY) String token){
         try {
 
             jwtTokenUtil.getUserInfoByToken(token);
-            return ApiResponse.success(categoryService.getCategoryVOList(categoryType));
+            return ApiResponse.success(categoryService.getCategoryVOList(categoryType,isRoot));
         }catch (BusinessException e){
             return ApiResponse.failed(e.getCode(),e.getMessage());
         }catch (Exception e){
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 ba0b08a..4d19e88 100644
--- a/server/src/main/java/com/doumee/api/web/WebWorkOrderController.java
+++ b/server/src/main/java/com/doumee/api/web/WebWorkOrderController.java
@@ -54,11 +54,9 @@
     @PostMapping("/create")
     public ApiResponse create (@RequestBody Workorder workorder, @RequestHeader(JwtTokenUtil.HEADER_KEY) String token) {
         try {
-
             Member user =  jwtTokenUtil.getUserInfoByToken(token);
             workorder.setMemberId(user.getId());
-            workorderService.create(workorder);
-            return ApiResponse.success("鎿嶄綔鎴愬姛");
+            return ApiResponse.success(workorderService.create(workorder));
         }catch (BusinessException e){
             return ApiResponse.failed(e.getCode(),e.getMessage());
         }catch (Exception e){
diff --git a/server/src/main/java/com/doumee/core/utils/qiyeweixin/QywxUtil.java b/server/src/main/java/com/doumee/core/utils/qiyeweixin/QywxUtil.java
index e52a082..741dcb5 100644
--- a/server/src/main/java/com/doumee/core/utils/qiyeweixin/QywxUtil.java
+++ b/server/src/main/java/com/doumee/core/utils/qiyeweixin/QywxUtil.java
@@ -81,13 +81,18 @@
         return null;
     }
     public static QywxSendMsgResponse sendMsg(String token, QywxSendMsgRequest param)  {
-        String[] interfaceUrl = QywxConstant.SEND_MSG;
-        String url = interfaceUrl[0].replace("${accesstoken}",token);
-        QywxSendMsgResponse response = sendHttpRequestSingle(url,interfaceUrl[1],JSONObject.toJSONString(param)
-                ,new TypeReference<QywxSendMsgResponse>(){});
-        if(response.getErrcode()!=null && response.getErrcode() ==0){
-            return response;
+        try{
+            String[] interfaceUrl = QywxConstant.SEND_MSG;
+            String url = interfaceUrl[0].replace("${accesstoken}",token);
+            QywxSendMsgResponse response = sendHttpRequestSingle(url,interfaceUrl[1],JSONObject.toJSONString(param)
+                    ,new TypeReference<QywxSendMsgResponse>(){});
+            if(response.getErrcode()!=null && response.getErrcode() ==0){
+                return response;
+            }
+        }catch (Exception e){
+
         }
+
         return null;
     }
     public static List<QywxUserListResponse> getUserList(String token,String depatId)   {
diff --git a/server/src/main/java/com/doumee/core/utils/qiyeweixin/model/response/QywxBaseSingleResponse.java b/server/src/main/java/com/doumee/core/utils/qiyeweixin/model/response/QywxBaseSingleResponse.java
index b5654d7..1b71cd7 100644
--- a/server/src/main/java/com/doumee/core/utils/qiyeweixin/model/response/QywxBaseSingleResponse.java
+++ b/server/src/main/java/com/doumee/core/utils/qiyeweixin/model/response/QywxBaseSingleResponse.java
@@ -16,6 +16,6 @@
     private Integer errcode;
 
     @ApiModelProperty(value = "杩斿洖鐮佹彁绀鸿")
-    private boolean errmsg;
+    private String errmsg;
 
 }
diff --git a/server/src/main/java/com/doumee/dao/business/model/Managers.java b/server/src/main/java/com/doumee/dao/business/model/Managers.java
index 72d6f2d..d5cc541 100644
--- a/server/src/main/java/com/doumee/dao/business/model/Managers.java
+++ b/server/src/main/java/com/doumee/dao/business/model/Managers.java
@@ -74,6 +74,9 @@
     @ApiModelProperty(value = "鍛樺伐鎵嬫満鍙�")
     @TableField(exist = false)
     private String memberPhone;
+    @ApiModelProperty(value = "浼佸井涓婚敭", example = "1")
+    @TableField(exist = false)
+    private String qwId;
 
     @ApiModelProperty(value = "濮撳悕/鎵嬫満鍙�/閮ㄩ棬")
     @TableField(exist = false)
diff --git a/server/src/main/java/com/doumee/service/business/CategoryService.java b/server/src/main/java/com/doumee/service/business/CategoryService.java
index 7618c8b..5d564e7 100644
--- a/server/src/main/java/com/doumee/service/business/CategoryService.java
+++ b/server/src/main/java/com/doumee/service/business/CategoryService.java
@@ -102,9 +102,9 @@
      * @param categoryType
      * @return
      */
-    List<CategoryVO>  getCategoryVOTree(String categoryType);
+    List<CategoryVO>  getCategoryVOTree(String categoryType,Integer categoryId);
 
-    List<CategoryVO>  getCategoryVOList(Integer categoryType);
+    List<CategoryVO>  getCategoryVOList(Integer categoryType,Integer isRoot);
 
     List<Category> treeList(Category param );
 }
diff --git a/server/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java b/server/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java
index 4edd8cb..928e60e 100644
--- a/server/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java
+++ b/server/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java
@@ -268,10 +268,11 @@
 
 
     @Override
-    public List<CategoryVO>  getCategoryVOTree(String categoryType){
+    public List<CategoryVO>  getCategoryVOTree(String categoryType,Integer categoryId){
         List<Category> categoryList = categoryMapper.selectList(new QueryWrapper<Category>().lambda()
                 .eq(Category::getIsdeleted, Constants.ZERO)
                 .in(Objects.nonNull(categoryType),Category::getType,categoryType.split(","))
+                .apply(Objects.nonNull(categoryId)," find_in_set("+categoryId+", REPLACE(ID_PATH,'/',',')  )  ")
                 .orderByAsc(Category::getSortnum,Category::getId)
         );
         List<CategoryVO>  categoryVOList = new ArrayList<>();
@@ -291,10 +292,11 @@
 
 
     @Override
-    public List<CategoryVO>  getCategoryVOList(Integer categoryType){
+    public List<CategoryVO>  getCategoryVOList(Integer categoryType,Integer isRoot){
         List<Category> categoryList = categoryMapper.selectList(new QueryWrapper<Category>().lambda()
                 .eq(Category::getIsdeleted, Constants.ZERO)
                 .eq(Objects.nonNull(categoryType),Category::getType,categoryType)
+                .isNull(Constants.equalsInteger(isRoot,Constants.ONE),Category::getParentId)
                 .orderByAsc(Category::getSortnum,Category::getId)
         );
         List<CategoryVO>  categoryVOList = new ArrayList<>();
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 dd7ed90..f86cb69 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
@@ -75,6 +75,7 @@
 
 
     @Override
+    @Transactional(rollbackFor = {BusinessException.class,Exception.class})
     public Integer create(Workorder workorder) {
         this.isValidBaseParam(workorder);
         workorder.setCreateDate(new Date());
@@ -117,8 +118,11 @@
      * @param csInfo 鎶勯�佷俊鎭�
      */
     public void sendQwMsg(Workorder workorder,String qwIds,Member member,String categoryName,Integer contentType,String csInfo){
+        if(StringUtils.isEmpty(qwIds)){
+            return;
+        }
         QywxSendMsgRequest qywxSendMsgRequest = new QywxSendMsgRequest();
-        qywxSendMsgRequest.setMsgtype("text");
+        qywxSendMsgRequest.setMsgtype("textcard");
         qywxSendMsgRequest.setTouser(qwIds.replace(",","|"));
         qywxSendMsgRequest.setAgentid(systemDictDataBiz.queryByCode(Constants.QYWX,Constants.QYWX_AGENTID).getCode());
         String sendUser = "";
@@ -197,6 +201,9 @@
         List<Multifile> multifileList = workorder.getMultifileList();
         if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(multifileList)){
             for (Multifile multifile:multifileList) {
+                if(StringUtils.isEmpty(multifile.getFileurl())){
+                    throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"闄勪欢淇℃伅閿欒锛�");
+                }
                 multifile.setIsdeleted(Constants.ZERO);
                 multifile.setObjId(workorder.getId());
                 multifile.setCreateDate(new Date());
@@ -212,11 +219,14 @@
      * @param workorder
      */
     public void saveProblemData(Workorder workorder){
-        if(Constants.equalsInteger(workorder.getType(),Constants.TWO)){
+        if(Constants.equalsInteger(workorder.getType(),Constants.ONE)){
             List<DCANoProblemDTO> dcaNoProblemDTOList = workorder.getDcaNoProblemDTOList();
             if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(dcaNoProblemDTOList)){
                 for (DCANoProblemDTO dcaNoProblemDTO:dcaNoProblemDTOList) {
                     Category problem = categoryMapper.selectById(dcaNoProblemDTO.getProblemId());
+                    if(!Constants.equalsInteger(problem.getType(),6)){
+                        throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"棰樼洰鍒嗙被閿欒");
+                    }
                     Constants.WorkOrderStatus workOrderStatus = Constants.WorkOrderStatus.waitConfirm;
                     Workorder dcaWorkOrder = new Workorder();
                     dcaWorkOrder.setCreateDate(new Date());
@@ -265,9 +275,10 @@
             }
         }
         //璺岀粖婊戜簨浠朵笂鎶� 鏌ヨSHE璐熻矗浜�
-        if(Constants.equalsInteger(workorder.getType(),Constants.THREE) || Constants.equalsInteger(workorder.getType(),Constants.ONE)){
+        if(Constants.equalsInteger(workorder.getType(),Constants.THREE) || Constants.equalsInteger(workorder.getType(),Constants.ONE)|| Constants.equalsInteger(workorder.getType(),Constants.ZERO)){
             List<Managers> managersList = managersMapper.selectJoinList(Managers.class,new MPJLambdaWrapper<Managers>().selectAll(Managers.class)
                     .selectAs(Member::getName,Managers::getMemberName)
+                    .selectAs(Member::getQwId,Managers::getQwId)
                     .leftJoin(Member.class,Member::getId,Managers::getMemberId)
                     .eq(Managers::getIsdeleted,Constants.ZERO)
                     .eq(Managers::getType,Constants.ZERO).orderByAsc(Managers::getSortnum)
@@ -276,14 +287,12 @@
                 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(",")));
+                workorder.setQwnoticeMemberIds(managersList.stream().filter(i->Constants.equalsInteger(i.getIsQw(),Constants.ONE)).map(i->i.getQwId()).collect(Collectors.joining(",")));
                 if(Constants.equalsInteger(workorder.getType(),Constants.ZERO)){
-                    workorder.setEmialMemberIds(managersList.stream().map(i->i.getMemberId().toString()).collect(Collectors.joining(",")));
+                    workorder.setEmialMemberIds(managersList.stream().filter(i->Constants.equalsInteger(i.getIsEmail(),Constants.ONE)).map(i->i.getQwId()).collect(Collectors.joining(",")));
                 }
             }
         }
-
-
     }
 
 
@@ -351,7 +360,7 @@
         if(Constants.equalsInteger(workorder.getType(),Constants.ONE)){
             if(Objects.isNull(workorder.getDcaYesNum())
                 || Objects.isNull(workorder.getDcaNoNum())
-                    || Objects.isNull(workorder.getCategoryId())
+//                    || Objects.isNull(workorder.getCategoryId())
             ){
                 throw new BusinessException(ResponseStatus.BAD_REQUEST);
             }
@@ -417,8 +426,12 @@
         if(org.apache.commons.lang3.StringUtils.isNotBlank(member.getQwId())){
             List<String> closeUserList = new ArrayList<>();
             closeUserList.addAll(Arrays.asList(workorder.getQwnoticeMemberIds().split(",")));
-            closeUserList.add(org.apache.commons.lang3.StringUtils.isNotBlank(workorder.getManagerId())?workorder.getManagerId():null);
-            closeUserList.add(org.apache.commons.lang3.StringUtils.isNotBlank(workorder.getDealerId())?workorder.getDealerId():null);
+            if(org.apache.commons.lang3.StringUtils.isNotBlank(workorder.getManagerId())){
+                closeUserList.add(workorder.getManagerId());
+            }
+            if(org.apache.commons.lang3.StringUtils.isNotBlank(workorder.getDealerId())){
+                closeUserList.add(workorder.getDealerId());
+            }
             workorder.setCloseButton(closeUserList.stream().filter(i->i.equals(member.getQwId())).collect(Collectors.toList()).size()>Constants.ZERO?Constants.ONE:Constants.ZERO);
             List<String> passOnUserList = new ArrayList<>();
             //寰呭垎閰嶇姸鎬� 澶勭悊杞氦鎸夐挳
@@ -533,6 +546,9 @@
                 .leftJoin(Member.class,Member::getId,Workorder::getMemberId)
                 .leftJoin(" category c3 on  t.TYPE_ID = c3.id   ") //椋庨櫓绫诲瀷
                 .leftJoin(" category c2 on  t.CATEGORY_ID = c2.id   ") //DCA涓�绾ч棶棰樼紪鐮�
+                .apply(Objects.nonNull(pageWrap.getMyWorkOrder())&& org.apache.commons.lang3.StringUtils.isNotBlank(pageWrap.getQwId())
+                                &&Constants.equalsInteger(Constants.ONE,pageWrap.getMyWorkOrder()),
+                        " ( t.id in (  select OBJ_ID from notices where param1 = '"+pageWrap.getQwId()+"' and type != 3  ))  ")
                 .eq( pageWrap.getId() != null, Workorder::getId, pageWrap.getId())
                 .eq( pageWrap.getCreator() != null, Workorder::getCreator, pageWrap.getCreator())
                 .ge( pageWrap.getCreateDate() != null, Workorder::getCreateDate, Utils.Date.getStart( pageWrap.getCreateDate()))
@@ -611,9 +627,11 @@
         }else if(Constants.equalsInteger(type,Constants.THREE)){
             key = "A";
         }
-        String code = redisTemplate.opsForValue().get(key+"_CODE").toString();
-        if(StringUtils.isEmpty(code)){
-            code = "01";
+        String code = "01";
+        try{
+            code = redisTemplate.opsForValue().get(key+"_CODE").toString();
+        }catch (Exception e){
+
         }
         redisTemplate.opsForValue().set(key+"_CODE",Integer.valueOf(code)+1);
         return key + date + org.apache.commons.lang3.StringUtils.leftPad(code,2,"0");

--
Gitblit v1.9.3