From b0a34952a61975657bd3a2386fe38047c4e03723 Mon Sep 17 00:00:00 2001
From: zhouxiantao <1026371446@qq.com>
Date: Fri, 27 Sep 2024 09:24:56 +0800
Subject: [PATCH] 小程序催办

---
 dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/bo/CasePersonBO.java                       |    2 
 dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/controller/wechat/CaseUrgingWechatController.java |   34 ++++++++++
 dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/po/CaseAgent.java                          |   11 +++
 dyh-service/dyh-sys/src/main/java/cn/huge/module/kind/controller/wechat/SyregionWechatController.java        |   14 ++--
 dyh-service/dyh-base/src/main/java/cn/huge/base/common/utils/DateUtils.java                                  |   13 ++++
 dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/dto/RegisterSaveDTO.java                   |    2 
 dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/po/CasePerson.java                         |    6 ++
 dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoService.java                      |   22 +++++++
 dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseUrgingService.java                    |   40 +++++++++++++
 dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/bo/CaseAgentBO.java                        |    2 
 10 files changed, 133 insertions(+), 13 deletions(-)

diff --git a/dyh-service/dyh-base/src/main/java/cn/huge/base/common/utils/DateUtils.java b/dyh-service/dyh-base/src/main/java/cn/huge/base/common/utils/DateUtils.java
index f9fa79c..0df7ea2 100644
--- a/dyh-service/dyh-base/src/main/java/cn/huge/base/common/utils/DateUtils.java
+++ b/dyh-service/dyh-base/src/main/java/cn/huge/base/common/utils/DateUtils.java
@@ -971,6 +971,19 @@
 		}
 		return year+"年"+month+"月"+day+"日";
 	}
+
+	/**
+	 * 获取两个时间的小时差
+	 * */
+	public static Integer getDifferHour(Date time1,Date time2){
+		if(ObjectUtils.isNotEmpty(time1) && ObjectUtils.isNotEmpty(time2)){
+			long housrs = 1000 * 60 * 60;
+			long differ = time1.getTime() - time2.getTime();
+			long housr = differ / housrs;
+			return Integer.valueOf(String.valueOf(housr));
+		}
+		return 0;
+	}
 }
 /**
  * -------------------_ooOoo_-------------------
diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/controller/wechat/CaseUrgingWechatController.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/controller/wechat/CaseUrgingWechatController.java
index 3a4ffb7..f8430e6 100644
--- a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/controller/wechat/CaseUrgingWechatController.java
+++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/controller/wechat/CaseUrgingWechatController.java
@@ -194,12 +194,42 @@
     @PostMapping("/saveCaseUrging")
     public Object saveCaseUrging(@CurrentUser String userId, @RequestBody CaseUrging caseUrging) {
         try {
-            service.saveCaseUrgingWechat(userId,caseUrging);
-            return ReturnSucUtils.getRepInfo();
+            return ReturnSucUtils.getRepInfo(service.saveCaseUrgingWechat(userId, caseUrging));
         } catch (Exception e) {
             log.error("Controller接口[CaseUrgingWechatController.saveCaseUrging]请求异常:"+e, e);
             return ReturnFailUtils.getRepInfo();
         }
     }
 
+    /**
+     * 根据编号查询单个
+     * @url {ctx}/api/wechat/caseUrging/countByCaseId
+     * @param caseId 主键编号
+     * @return Object
+     */
+    @GetMapping("/countByCaseId")
+    public Object countByCaseId(@RequestParam(value = "caseId") String caseId) {
+        try {
+            return ReturnSucUtils.getRepInfo(service.countByCaseId(caseId));
+        } catch (Exception e) {
+            log.error("Controller接口[CaseUrgingWechatController.countByCaseId]请求异常:"+e, e);
+            return ReturnFailUtils.getRepInfo();
+        }
+    }
+
+    /**
+     * 根据编号查询单个
+     * @url {ctx}/api/wechat/caseUrging/listByCaseId
+     * @param caseId 主键编号
+     * @return Object
+     */
+    @GetMapping("/listByCaseId")
+    public Object listByCaseId(@RequestParam(value = "caseId") String caseId) {
+        try {
+            return ReturnSucUtils.getRepInfo(service.listByCaseId(caseId));
+        } catch (Exception e) {
+            log.error("Controller接口[CaseUrgingWechatController.listByCaseId]请求异常:"+e, e);
+            return ReturnFailUtils.getRepInfo();
+        }
+    }
 }
diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/bo/CaseAgentBO.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/bo/CaseAgentBO.java
index 3810681..05f2310 100644
--- a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/bo/CaseAgentBO.java
+++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/bo/CaseAgentBO.java
@@ -1,6 +1,7 @@
 package cn.huge.module.cases.domain.bo;
 
 import cn.huge.module.cases.domain.po.CaseAgent;
+import lombok.Data;
 
 /**
  * @title: 纠纷代理人信息表业务扩展类
@@ -12,6 +13,5 @@
  * @see cn.huge.module.cases.domain.po.CaseAgent
  */
 public class CaseAgentBO extends CaseAgent {
-
 
 }
diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/bo/CasePersonBO.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/bo/CasePersonBO.java
index 1d1f430..2ed1a72 100644
--- a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/bo/CasePersonBO.java
+++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/bo/CasePersonBO.java
@@ -1,6 +1,7 @@
 package cn.huge.module.cases.domain.bo;
 
 import cn.huge.module.cases.domain.po.CasePerson;
+import lombok.Data;
 
 /**
  * @title: 纠纷当事人信息表业务扩展类
@@ -12,6 +13,5 @@
  * @see cn.huge.module.cases.domain.po.CasePerson
  */
 public class CasePersonBO extends CasePerson {
-
 
 }
diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/dto/RegisterSaveDTO.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/dto/RegisterSaveDTO.java
index c74f4ed..2369471 100644
--- a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/dto/RegisterSaveDTO.java
+++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/dto/RegisterSaveDTO.java
@@ -1,5 +1,7 @@
 package cn.huge.module.cases.domain.dto;
 
+import cn.huge.module.cases.domain.bo.CaseAgentBO;
+import cn.huge.module.cases.domain.bo.CasePersonBO;
 import cn.huge.module.cases.domain.po.CaseAgent;
 import cn.huge.module.cases.domain.po.CaseInfo;
 import cn.huge.module.cases.domain.po.CasePerson;
diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/po/CaseAgent.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/po/CaseAgent.java
index 8e178d8..c77e601 100644
--- a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/po/CaseAgent.java
+++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/po/CaseAgent.java
@@ -359,4 +359,15 @@
     @TableField(exist = false)
     private List<FileTypeInfoBaseDTO> fileInfoList;
 
+    /**
+     * 用于小程序新增关联代理人
+     */
+    @TableField(exist = false)
+    private String agentCode;
+
+    /**
+     * 代理对象姓名
+     */
+    @TableField(exist = false)
+    private String agentPersonName;
 }
diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/po/CasePerson.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/po/CasePerson.java
index 863302a..01d8e3b 100644
--- a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/po/CasePerson.java
+++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/po/CasePerson.java
@@ -364,4 +364,10 @@
      */
     @TableField(exist = false)
     private List<FileTypeInfoBaseDTO> fileInfoList;
+
+    /**
+     * 用于小程序新增关联代理人
+     */
+    @TableField(exist = false)
+    private String agentCode;
 }
diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoService.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoService.java
index 953dec4..0c2908c 100644
--- a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoService.java
+++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoService.java
@@ -2,6 +2,8 @@
 
 import cn.huge.base.common.exception.ServiceException;
 import cn.huge.base.common.utils.*;
+import cn.huge.module.cases.domain.bo.CaseAgentBO;
+import cn.huge.module.cases.domain.bo.CasePersonBO;
 import cn.huge.module.cases.domain.dto.*;
 
 import cn.huge.module.cases.domain.dto.CaseAreaDTO;
@@ -678,6 +680,9 @@
         // 临时加上一级纠纷类型
         caseInfo.setCaseTypeFirst("24_01-2");
         caseInfo.setCaseTypeFirstName("劳动社保");
+        //小程序是否查看
+        caseInfo.setPartyShow(1);
+
         this.saveOrUpdate(caseInfo);
 
         caseInfoUnfoldService.saveOrUpdate(caseInfoUnfold);
@@ -732,9 +737,12 @@
         int peopleNum = 0;
         // 保存申请人
         List<CasePerson> personList = registerSaveDTO.getPersonList();
+        Map<String,String> personIdMap = new HashMap<>();
         if (CollectionUtils.isNotEmpty(personList)) {
             for (CasePerson casePerson : personList) {
-                casePerson.setId(utilsClient.getNewTimeCaseId());
+                String newTimeCaseId = utilsClient.getNewTimeCaseId();
+                personIdMap.put(casePerson.getAgentCode(), newTimeCaseId);
+                casePerson.setId(newTimeCaseId);
                 casePerson.setCaseId(registerSaveDTO.getId());
                 casePerson.setPartyUserId(loginUser.getId());
                 casePerson.setCustId(registerSaveDTO.getCustId());
@@ -765,6 +773,7 @@
             if (CollectionUtils.isNotEmpty(agentList)) {
                 for (CaseAgent caseAgent : agentList) {
                     caseAgent.setId(utilsClient.getNewTimeCaseId());
+                    caseAgent.setPersonId(personIdMap.get(caseAgent.getAgentCode()));
                     caseAgent.setPartyUserId(loginUser.getId());
                     caseAgent.setCaseId(registerSaveDTO.getId());
                     caseAgent.setAgentTypeName(CaseBaseConstsEnum.getDes(caseAgent.getAgentType()));
@@ -800,11 +809,22 @@
         QueryWrapper<CasePerson> casePersonQueryWrapper = new QueryWrapper<>();
         casePersonQueryWrapper.eq("case_id", registerSaveDTO.getId());
         List<CasePerson> personList = personService.list(casePersonQueryWrapper);
+        Map<String,String> personNameMap = new HashMap<>();
+        if(ObjectUtils.isNotEmpty(personList)){
+            for (CasePerson casePerson : personList) {
+                personNameMap.put(casePerson.getId(),casePerson.getTrueName());
+            }
+        }
         registerSaveDTO.setPersonList(personList);
 
         QueryWrapper<CaseAgent> caseAgentQueryWrapper = new QueryWrapper<>();
         caseAgentQueryWrapper.eq("case_id", registerSaveDTO.getId());
         List<CaseAgent> agentList = agentService.list(caseAgentQueryWrapper);
+        if(ObjectUtils.isNotEmpty(agentList)){
+            for (CaseAgent caseAgent : agentList) {
+                caseAgent.setAgentPersonName(personNameMap.get(caseAgent.getPersonId()));
+            }
+        }
         registerSaveDTO.setAgentList(agentList);
 
         return registerSaveDTO;
diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseUrgingService.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseUrgingService.java
index 973c63c..bc54b3a 100644
--- a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseUrgingService.java
+++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseUrgingService.java
@@ -3,11 +3,13 @@
 import cn.huge.base.common.exception.ServiceException;
 import cn.huge.base.common.utils.DateUtils;
 import cn.huge.base.common.utils.IdUtils;
+import cn.huge.base.common.utils.ObjectUtils;
 import cn.huge.module.client.api.impl.CustClientImpl;
 import cn.huge.module.client.api.impl.UtilsClientImpl;
 import cn.huge.module.cases.dao.mapper.CaseUrgingMapper;
 import cn.huge.module.cases.domain.po.CaseUrging;
 import cn.huge.module.cust.dto.PaUserDTO;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -139,8 +141,22 @@
      * 新增或更新对象
      * @param caseUrging 实体对象
      */
-    public void saveCaseUrgingWechat(String userId,CaseUrging caseUrging){
+    public String saveCaseUrgingWechat(String userId,CaseUrging caseUrging){
         try{
+            //查询是否已经有催办
+            QueryWrapper<CaseUrging> queryWrapper = new QueryWrapper<>();
+            queryWrapper.eq("case_id", caseUrging.getCaseId());
+            queryWrapper.orderByDesc("create_time");
+            queryWrapper.last("limit 1");
+            CaseUrging caseUrgingOld = mapper.selectOne(queryWrapper);
+            if(ObjectUtils.isNotEmpty(caseUrgingOld)){
+                //计算创建时间和当前时间是否超过24小时
+                Integer differHour = DateUtils.getDifferHour(new Date(), caseUrgingOld.getCreateTime());
+                if(differHour < 24){
+                    return "催办间隔时间不能小于24小时";
+                }
+            }
+
             // 获取当前登录用户
             PaUserDTO loginUser = custClient.paclientGetUser(userId);
             Date nowDate = DateUtils.getNowDate();
@@ -159,6 +175,28 @@
             log.error("[CaseUrgingService.saveCaseUrging]调用失败,异常信息:"+e, e);
             throw new ServiceException("CaseUrgingService.saveCaseUrging", e);
         }
+        return null;
+    }
+
+    public Integer countByCaseId(String caseId){
+        Integer count = 0;
+        QueryWrapper<CaseUrging> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("case_id", caseId);
+        queryWrapper.isNotNull("reply_user_id");
+        Integer number = mapper.selectCount(queryWrapper);
+        if(ObjectUtils.isNotEmpty(number)){
+            count = number;
+        }
+        return count;
+    }
+
+    public List<CaseUrging> listByCaseId(String caseId){
+        QueryWrapper<CaseUrging> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("case_id", caseId);
+        queryWrapper.isNotNull("reply_user_id");
+        queryWrapper.orderByDesc("reply_time");
+        List<CaseUrging> caseUrgings = mapper.selectList(queryWrapper);
+        return caseUrgings;
     }
 
 }
diff --git a/dyh-service/dyh-sys/src/main/java/cn/huge/module/kind/controller/wechat/SyregionWechatController.java b/dyh-service/dyh-sys/src/main/java/cn/huge/module/kind/controller/wechat/SyregionWechatController.java
index 498a1b7..b7b0228 100644
--- a/dyh-service/dyh-sys/src/main/java/cn/huge/module/kind/controller/wechat/SyregionWechatController.java
+++ b/dyh-service/dyh-sys/src/main/java/cn/huge/module/kind/controller/wechat/SyregionWechatController.java
@@ -1,9 +1,7 @@
 package cn.huge.module.kind.controller.wechat;
 
 import cn.huge.base.common.constant.GzAreaEnum;
-import cn.huge.base.common.utils.ObjectUtils;
-import cn.huge.base.common.utils.ReturnFailUtils;
-import cn.huge.base.common.utils.ReturnSucUtils;
+import cn.huge.base.common.utils.*;
 import cn.huge.module.kind.domain.po.SyRegion;
 import cn.huge.module.kind.service.SyRegionService;
 import cn.huge.module.sys.dto.QueAddrBaseDTO;
@@ -48,7 +46,9 @@
     @GetMapping("/checkRegisterArea")
     public Object checkRegisterArea(@RequestParam(value = "lng") String lng, @RequestParam(value = "lat") String lat) {
         try {
-            BaiduMapAddrDTO baiduMapAddrDTO = BaiduMapUtils.getAddrByLngLat(lng, lat, BaiduMapUtils.coordtype_bd09ll);
+            //经纬度转换
+            PointXY pointXY = MapUtils.gcj02tobd09(Double.valueOf(lng), Double.valueOf(lat));
+            BaiduMapAddrDTO baiduMapAddrDTO = BaiduMapUtils.getAddrByLngLat(String.valueOf(pointXY.getLon()), String.valueOf(pointXY.getLat()), BaiduMapUtils.coordtype_bd09ll);
             QueryWrapper<SyRegion> syRegionQueryWrapper = new QueryWrapper<>();
             // 查询区
             syRegionQueryWrapper.clear();
@@ -56,12 +56,12 @@
             SyRegion district = service.getOne(syRegionQueryWrapper);
             if (ObjectUtils.isNotEmpty(district)) {
                 if (GzAreaEnum.GZAREAEnum_7.getIndex().equals(district.getId())) {
-                    return ReturnSucUtils.getRepInfo();
+                    return ReturnSucUtils.getRepInfo(true);
                 } else {
-                    return ReturnSucUtils.getRepInfo(200, "反映诉求服务目前仅支持纠纷发生地为白云区内的申请。", null);
+                    return ReturnSucUtils.getRepInfo("反映诉求服务目前仅支持纠纷发生地为白云区内的申请。", false);
                 }
             }else {
-                return ReturnSucUtils.getRepInfo(200, "反映诉求服务目前仅支持纠纷发生地为白云区内的申请。", null);
+                return ReturnSucUtils.getRepInfo("反映诉求服务目前仅支持纠纷发生地为白云区内的申请。", false);
             }
         } catch (Exception e) {
             return ReturnFailUtils.getRepInfo();

--
Gitblit v1.8.0