From d99a56e37cf9109b46ee68d34a06594ef5615ed3 Mon Sep 17 00:00:00 2001
From: 张天森 <1292933220@qq.com>
Date: 星期四, 10 十一月 2022 16:06:05 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/huacheng_test' into huacheng_test

---
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComEventServiceImpl.java |  151 ++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 126 insertions(+), 25 deletions(-)

diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComEventServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComEventServiceImpl.java
index daec656..d6b9b4d 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComEventServiceImpl.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComEventServiceImpl.java
@@ -18,6 +18,7 @@
 import com.panzhihua.common.model.dtos.community.sanshuo.IndexDateDTO;
 import com.panzhihua.common.model.vos.LoginUserInfoVO;
 import com.panzhihua.common.model.vos.R;
+import com.panzhihua.common.model.vos.SanShuoMessageVO;
 import com.panzhihua.common.model.vos.community.switchs.CommunitySwitchAllAppletsVO;
 import com.panzhihua.common.model.vos.sanshuo.*;
 import com.panzhihua.common.service.user.UserService;
@@ -26,21 +27,21 @@
 import com.panzhihua.common.utlis.Snowflake;
 import com.panzhihua.common.utlis.StringUtils;
 import com.panzhihua.service_community.api.ComSanShuoEventTransferRecordController;
-import com.panzhihua.service_community.dao.ComActDAO;
-import com.panzhihua.service_community.dao.ComEventMapper;
-import com.panzhihua.service_community.dao.ComSanshuoExpertDao;
-import com.panzhihua.service_community.dao.ComStreetDAO;
+import com.panzhihua.service_community.dao.*;
 import com.panzhihua.service_community.entity.*;
 import com.panzhihua.service_community.model.dos.ComActDO;
 import com.panzhihua.service_community.model.dos.ComStreetDO;
 import com.panzhihua.service_community.service.*;
+import com.panzhihua.service_community.util.WXMessageUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.RandomUtils;
+import org.checkerframework.checker.units.qual.A;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.RequestParam;
 
 import javax.annotation.Resource;
+import java.math.BigDecimal;
 import java.util.*;
 
 import static java.util.Objects.isNull;
@@ -87,12 +88,16 @@
     @Resource
     private ComSanshuoExpertDao comSanshuoExpertDao;
 
+    @Resource
+    private SysUserDao sysUserDao;
+
 
     @Override
     public R pageByComEvent(ComEvent comEvent, Page pagination,LoginUserInfoVO loginUserInfoVO) {
         Boolean isExpertCheck=false;
         Long expertId=null;
         Boolean isStretAccount = isStreetAccount(loginUserInfoVO);
+        comEvent.setAppId(loginUserInfoVO.getAppId());
         if (nonNull(comEvent.getUserType())){
             if (comEvent.getUserType().equals(1)){
                 //个人账号权限
@@ -369,7 +374,9 @@
                     comEvent.setEventProcessStatus(2);
                     comEvent.setSolve(0);
                     comEvent.setDistribution(0);
-                    comEvent.setChangeExpert(0);
+                    //comEvent.setChangeExpert(0);
+                    //comEvent.setArchive(0);
+                    comEvent.setConciliation(0);
                 }
                 else if (comEvent.getEventProcessStatus().equals(6) && comEvent.getEventSucceed().equals(2)){
                     //调解完成,可以归档,查看
@@ -377,12 +384,51 @@
                     comEvent.setDistribution(0);
                     comEvent.setChangeExpert(0);
                 }
-            }else{
+            }else if (comEvent.getCurrentProcessType().equals(5)){
+                //根据事件状态决定权限
+                if (comEvent.getEventProcessStatus().equals(1) ){
+                    //待受理和待验证状态,可以受理,分配专家
+                    //关闭调解和归档
+                    comEvent.setArchive(0);
+                    comEvent.setConciliation(0);
+                    comEvent.setChangeExpert(0);
+                } else if(comEvent.getEventProcessStatus().equals(2)){
+                    //待分配和待验证状态,可以受理,分配专家
+                    //关闭调解和归档
+                    comEvent.setArchive(0);
+                    //comEvent.setConciliation(0);
+                    comEvent.setChangeExpert(0);
+                    if (comEvent.getSpecialistName().equals("待分配")){
+                        comEvent.setSolve(0);
+                    }
+                }
+                else if (comEvent.getEventProcessStatus().equals(5)){
+                    //调解中,可以查看,调解,更换专家,删除
+                    comEvent.setDistribution(0);
+                    comEvent.setSolve(0);
+                    comEvent.setArchive(0);
+                }else if (comEvent.getEventProcessStatus().equals(6) && comEvent.getEventResult().equals(2) && comEvent.getEventSucceed().equals(2)){
+                    //调解完成并且成功,可以归档,查看
+                    comEvent.setSolve(0);
+                    comEvent.setDistribution(0);
+                    comEvent.setChangeExpert(0);
+                    comEvent.setConciliation(0);
+                }
+                else if (comEvent.getEventProcessStatus().equals(6) && comEvent.getEventSucceed().equals(2)){
+                    //调解完成,可以归档,查看
+                    comEvent.setSolve(0);
+                    comEvent.setDistribution(0);
+                    comEvent.setChangeExpert(0);
+                    comEvent.setConciliation(0);
+                }
+            }
+            else{
                 //未上上报到行业分中心,或者已上报到区三说会堂,仅查看
                 comEvent.setArchive(0);
                 comEvent.setSolve(0);
                 comEvent.setDistribution(0);
                 comEvent.setChangeExpert(0);
+                //comEvent.setConciliation(0);
             }
         }else if (userType.equals(5)  || isStreet){
             //街道权限,操作街道下属社区的所有事件
@@ -492,7 +538,9 @@
                     //失败后转交三说会堂
                     comEvent.setSolve(0);
                     comEvent.setDistribution(0);
-                    comEvent.setConciliation(0);
+                    //comEvent.setConciliation(0);
+                    comEvent.setEventProcessStatus(2);
+                    comEvent.setArchive(0);
                     //comEvent.setChangeExpert(0);
                 }
                 else if (comEvent.getEventProcessStatus().equals(6) && comEvent.getEventSucceed().equals(2)){
@@ -572,12 +620,15 @@
             comEvent.setCurrentOrgId(community.getCommunityId().toString());
             comEvent.setCurrentProcessType(5);
         }
-        if (!StringUtils.isEmpty(comEvent.getCenterId())) {
+        if (!StringUtils.isEmpty(comEvent.getCenterId()))   {
             //创建时处理级别都是专家
             ComSanshuoIndustryCenter center = comSanShuoIndustryCenterService.getById(comEvent.getCenterId());
             comEvent.setCurrentOrgName(center.getName());
             comEvent.setCurrentOrgId(center.getId().toString());
             comEvent.setCurrentProcessType(5);
+        }
+        if (StringUtils.isNotEmpty(comEvent.getCenterId())){
+            comEvent.setRequestUserCommunity(null);
         }
         comEvent.setUserEventStatus(2);
         //设置为未上报
@@ -593,6 +644,8 @@
         comEvent.setUpdateBy(comEvent.getRequestUserId());
         comEvent.setUpdateAt(new Date());
         boolean flag = save(comEvent);
+        //推送消息到专家微信
+        sendMessage(comEvent.getSpecialistId(),comEvent);
         //添加一条对应记录
         comEventMapper.insertEventAndExpertRecord(comEvent.getId(),expert.getId(),0);
         if (!flag) {
@@ -601,6 +654,26 @@
         //提交不视为一次流转记录,不保存图片
         saveEventImageList(comEvent.getImages(), comEvent.getId(),null,1);
         return R.ok(ReturnMsgConstants.SAVE_SUCCESS);
+    }
+
+    public void sendMessage(Long expertId,ComEvent comEvent){
+        //获取专家的openId
+        ComSanshuoExpert expert = comSanShuoExpertService.getById(expertId);
+        SysUser sysUser = sysUserDao.selectOne(new QueryWrapper<SysUser>().lambda().eq(SysUser::getPhone, expert.getPhone()).eq(SysUser::getType, 1).eq(SysUser::getAppId,"wx0cef797390444b75" ));
+        SanShuoMessageVO vo=new SanShuoMessageVO();
+        if (isNull(sysUser)){
+            return;
+        }
+        if (isNull(sysUser.getOpenid())){
+           log.info("专家未登陆APP,无法推送");
+           return;
+        }
+        vo.setTouser(sysUser.getOpenid());
+        vo.setThing1(commediateTypeService.getById(comEvent.getEventCategory()).getName());
+        vo.setThing5("您有一个新的调解事件需处理");
+        vo.setThing2(comEvent.getRequestUserName());
+        vo.setTime3(DateUtil.now());
+        WXMessageUtil.sendStatusMessage(vo);
     }
 
     @Transactional(rollbackFor = Exception.class)
@@ -678,7 +751,9 @@
                     ComActDO comActDO = comActDAO.selectById(expert.getCommunityId());
                     comEvent.setCurrentOrgId(comActDO.getStreetId().toString());
                     //生成一次流转记录
-                    comEvent.setCurrentEventProcessResult("专家上报到社区");
+                    comEvent.setCurrentEventProcessResult("(专家上报到"+comActDO.getName()+")"+comEventConciliationVO.getCurrentEventProcessResult());
+                    //更改当前处理部门
+                    comEvent.setCurrentOrgName(comActDO.getName()+"调解站");
                     comEventTransferRecord.setFromId(comEvent.getSpecialistId());
                     comEventTransferRecord.setToId(Long.parseLong(comEvent.getCurrentOrgId()));
                     comEventTransferRecord.setReportLevel(4);
@@ -691,7 +766,9 @@
                     comEvent.setSpecialistName("待分配");
                     comEvent.setSpecialistId(99999L);
                     //生成一次流转记录
-                    comEvent.setCurrentEventProcessResult("专家上报到行业分中心");
+                    ComSanshuoIndustryCenter center = comSanShuoIndustryCenterService.getById(comEvent.getCurrentOrgId());
+                    comEvent.setCurrentEventProcessResult("(专家上报到"+center.getName()+")"+comEventConciliationVO.getCurrentEventProcessResult());
+                    comEvent.setCurrentOrgName(expert.getUnit());
                     comEventTransferRecord.setFromId(comEvent.getSpecialistId());
                     comEventTransferRecord.setToId(expert.getIndustryCenterId());
                     comEventTransferRecord.setReportLevel(3);
@@ -703,7 +780,8 @@
                 comEvent.setCurrentOrgId("99999");
                 //生成一次流转记录
                 comEvent.setReportHall(1);
-                comEvent.setCurrentEventProcessResult("行业分中心上报到区三说会堂");
+                comEvent.setCurrentEventProcessResult("(行业分中心上报到区三说会堂中心)"+comEventConciliationVO.getCurrentEventProcessResult());
+                comEvent.setCurrentOrgName("区三说会堂");
                 comEventTransferRecord.setFromId(comEvent.getSpecialistId());
                 comEventTransferRecord.setToId(99999L);
                 comEventTransferRecord.setReportLevel(5);
@@ -716,7 +794,8 @@
                 ComActDO comActDO = comActDAO.selectOne(new QueryWrapper<ComActDO>().lambda().eq(ComActDO::getCommunityId, comEvent.getRequestUserCommunity()).eq(ComActDO::getAppId, "wx0cef797390444b75"));
                 comEvent.setCurrentOrgId(comActDO.getStreetId().toString());
                 //生成一次流转记录
-                comEvent.setCurrentEventProcessResult("社区报到街道");
+                comEvent.setCurrentEventProcessResult("(社区上报到"+comStreetDAO.selectById(comActDO.getStreetId()).getName()+")"+comEventConciliationVO.getCurrentEventProcessResult());
+                comEvent.setCurrentOrgName(comStreetDAO.selectById(comActDO.getStreetId()).getName()+"调解站");
                 comEventTransferRecord.setFromId(comEvent.getRequestUserCommunity());
                 comEventTransferRecord.setToId(comActDO.getStreetId());
                 comEventTransferRecord.setReportLevel(2);
@@ -726,8 +805,9 @@
                 comEvent.setCurrentProcessType(4);
                 comEvent.setReportHall(1);
                 comEvent.setCurrentOrgId("99999");
+                comEvent.setCurrentOrgName("区三说会堂");
                 //生成一次流转记录
-                comEvent.setCurrentEventProcessResult("街道上报到区三说会堂");
+                comEvent.setCurrentEventProcessResult("(街道上报到区三说会堂中心)"+comEventConciliationVO.getCurrentEventProcessResult());
                 comEventTransferRecord.setFromId(Long.parseLong(comEvent.getCurrentOrgId()));
                 comEventTransferRecord.setReportLevel(1);
                 comEvent.setReportLevel(1);
@@ -775,7 +855,7 @@
                 || comEvent.getEventProcessStatus() == SanShuoEventStatusEnum.VALID.getCode().intValue()) {
             comEvent.setId(id);
             comEvent.setUserEventStatus(4);
-            comEvent.setEventProcessStatus(8);
+            comEvent.setEventProcessStatus(9);
             comEvent.setRevokeDes("用户手动取消");
             comEvent.setRevokeDate(new Date());
             int flag = baseMapper.updateById(comEvent);
@@ -822,8 +902,23 @@
         List<ComEventResource> resource = comEventResourceService.list(new QueryWrapper<ComEventResource>().lambda().eq(ComEventResource::getRefId, id)
                 .eq(ComEventResource::getStatus, 5));
         map.put("archiveImage", resource);
+        map.put("contact", getPhone(comEvent));
         return map;
     }
+
+    public String getPhone(ComEvent comEvent){
+        if (isNull(comEvent.getRequestUserCommunity())){
+            return comSanShuoIndustryCenterService.getById(comEvent.getCenterId()).getPhone();
+        }else {
+            String contactsPhone = comActDAO.selectById(comEvent.getRequestUserCommunity()).getContactsPhone();
+            if (isNull(contactsPhone)){
+                return null;
+            }
+            return contactsPhone;
+        }
+    }
+
+
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -850,6 +945,8 @@
         comEvent.setSpecialistName(specter.getName());
         comEvent.setEventProcessStatus(SanShuoEventStatusEnum.VALID.getCode());
         int flag = baseMapper.updateById(comEvent);
+        ComEvent comEvent1 = comEventMapper.selectById(id);
+        sendMessage(specialistId,comEvent1 );
         //添加一条对应记录
         comEventMapper.insertEventAndExpertRecord(id, specialistId,1);
         return flag > 0 ? R.ok() : R.fail(ReturnMsgConstants.UPDATE_FALSE);
@@ -908,6 +1005,7 @@
             }
         }
         log.info("当前userType===="+comEvent.getUserType());
+        comEvent.setAppId(loginUserInfoVO.getAppId());
         List<ComEventCalculateVO> calculateList = baseMapper.calculate(comEvent);
         ComEventCalculateVO comEventCalculateVO =new ComEventCalculateVO();
         comEventCalculateVO.setStatus("0");
@@ -964,7 +1062,12 @@
         if (nonNull(vo.getSuccess()) && !vo.getSuccess().equals(0)){
             if (nonNull(vo.getAccepted()) && !vo.getAccepted().equals(0)){
                 //计算成功率
-                vo.setSuccessRate(NumberUtil.div(vo.getSuccess(),vo.getAccepted(),2));
+                try {
+                    vo.setSuccessRate(NumberUtil.div(vo.getSuccess(),vo.getAccepted(),2));
+                }catch (NullPointerException e){
+                    vo.setSuccessRate(new BigDecimal(0));
+                }
+
             }
         }
         vo.setExpert(comSanshuoExpertDao.selectExpertCount(indexDataDTO));
@@ -1037,12 +1140,12 @@
 
     @Override
     public R listStreetScreen() {
-        return R.ok(comStreetDAO.selectList(new QueryWrapper<ComStreetDO>().eq("app_id", "wx0cef797390444b75")));
+        return R.ok(comStreetDAO.selectList(new QueryWrapper<ComStreetDO>().eq("app_id", "wx0cef797390444b75").in("name",("大宝鼎街道"),("格里坪镇"),("河门口街道"),("清香坪街道"),("陶家渡街道"),("玉泉街道"))));
     }
 
     @Override
     public R listCommunityScreen() {
-        return null;
+        return R.ok(comActDAO.selectList(new QueryWrapper<ComActDO>().lambda().eq(ComActDO::getAppId, "wx0cef797390444b75").in(ComActDO::getStreetId,("1552661139563876352"),("1552661132500668416"),("1552661143879815168"),("1552661138704044032"),("1552661135428292608"),("1552661136451702784"))));
     }
 
     public String typeToName(Integer type){
@@ -1050,13 +1153,11 @@
             case 1:
                 return "行业分中心受理";
             case 3:
-                return "街道调解站受理";
+                return "镇/街道受理案件";
             case 2:
-                return "社区调解站受理";
+                return "村/社区受理案件";
             case 4:
-                return "区三说会堂受理";
-            case 5:
-                return "专家受理";
+                return "区三说会堂中心受理";
         }
         return null;
     }
@@ -1064,13 +1165,13 @@
     public String typeToNameExpert(Integer type){
         switch (type){
             case 1:
-                return "区三说会堂专家";
+                return "区三说会堂中心专家";
             case 2:
                 return "行业分中心专家";
             case 3:
-                return "街道调解站专家";
+                return "镇/街道调解专家";
             case 4:
-                return "社区调解站专家";
+                return "村/社区调解专家";
         }
         return null;
     }

--
Gitblit v1.7.1