Commit 66247ea0705b14b7c80daed60b52434068a25a06

Authored by 陈威
1 parent d0ac4752
Exists in dev

1:点火通知

zr-cloud/zr-modules/zr-schsf/src/main/java/com/chinagas/modules/schsf/domain/notice/McIgnitionTemplate.java 0 → 100644
... ... @@ -0,0 +1,27 @@
  1 +package com.chinagas.modules.schsf.domain.notice;
  2 +
  3 +import com.chinagas.modules.schsf.domain.McIgnition;
  4 +
  5 +import java.time.LocalDateTime;
  6 +import java.time.format.DateTimeFormatter;
  7 +
  8 +public class McIgnitionTemplate {
  9 + private McIgnition mcIgnition;
  10 +
  11 + public McIgnitionTemplate(McIgnition mcIgnition) {
  12 + this.mcIgnition = mcIgnition;
  13 + }
  14 +
  15 + public String getNoticemarkdown() {
  16 + return "###### 市场化收费-点火通知 \n " +
  17 + "用户信息:" + mcIgnition.getUserName()+"(" +mcIgnition.getUserPhone()+ ") \n " +
  18 + "村/小区:" + mcIgnition.getVlgOrCmty() + " \n " +
  19 + "当前状态:" + mcIgnition.getStatusName() + "(客服) \n " +
  20 + "维护操作:点击链接进入维护页面:[https://schsf.chinagasholdings.com](https://schsf.chinagasholdings.com) \n " +
  21 + "---" +
  22 + " \n " +
  23 + "通知日期: " + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm")) + " \n " +
  24 + "温馨提醒: 请按时完成维护,保障业务顺畅。 \n ";
  25 + }
  26 +
  27 +}
... ...
zr-cloud/zr-modules/zr-schsf/src/main/java/com/chinagas/modules/schsf/mapper/McIgnitionMapper.java
1 1 package com.chinagas.modules.schsf.mapper;
2 2  
3 3 import com.chinagas.modules.schsf.domain.McIgnition;
  4 +import com.chinagas.modules.schsf.domain.dto.NodeUsersDto;
  5 +import org.apache.ibatis.annotations.Param;
4 6  
5 7 import java.util.List;
6 8  
... ... @@ -62,4 +64,5 @@ public interface McIgnitionMapper
62 64  
63 65 List<McIgnition> selectMcIgnitionParamList(McIgnition mcIgnition);
64 66  
  67 + List<NodeUsersDto> selectMcIgnitionNodeUserList(@Param("id")String id, @Param("nodeType") String nodeType);
65 68 }
... ...
zr-cloud/zr-modules/zr-schsf/src/main/java/com/chinagas/modules/schsf/service/IMcIgnitionService.java
... ... @@ -2,6 +2,7 @@ package com.chinagas.modules.schsf.service;
2 2  
3 3 import com.chinagas.modules.schsf.domain.McIgnition;
4 4 import com.chinagas.modules.schsf.domain.McVisit;
  5 +import com.chinagas.modules.schsf.domain.dto.NodeUsersDto;
5 6 import com.chinagas.modules.schsf.domain.vo.McIgnitionMaintenanceVo;
6 7  
7 8 import java.util.List;
... ... @@ -78,4 +79,14 @@ public interface IMcIgnitionService
78 79 int updateMcIgnitionMaintenance(McIgnitionMaintenanceVo mcIgnitionMaintenanceVo) throws CloneNotSupportedException;
79 80  
80 81 void updateMcIgnitionCancel(Long visitId) throws CloneNotSupportedException;
  82 +
  83 + /**
  84 + * 节点处理人
  85 + *
  86 + * @param id
  87 + * @return
  88 + */
  89 + List<NodeUsersDto> selectMcIgnitionNodeUserList(Long id);
  90 +
  91 +
81 92 }
... ...
zr-cloud/zr-modules/zr-schsf/src/main/java/com/chinagas/modules/schsf/service/impl/McIgnitionServiceImpl.java
1 1 package com.chinagas.modules.schsf.service.impl;
2 2  
  3 +import cn.hutool.core.bean.BeanUtil;
3 4 import com.alibaba.fastjson2.JSON;
  5 +import com.chinagas.common.core.exceptions.ServiceException;
4 6 import com.chinagas.common.core.utils.DateUtils;
5 7 import com.chinagas.common.core.utils.StringUtils;
6 8 import com.chinagas.common.datascope.annotation.DataScope;
7 9 import com.chinagas.common.security.utils.SecurityUtils;
8 10 import com.chinagas.modules.schsf.domain.McIgnition;
9 11 import com.chinagas.modules.schsf.domain.McVisit;
  12 +import com.chinagas.modules.schsf.domain.dto.NodeUsersDto;
  13 +import com.chinagas.modules.schsf.domain.notice.McIgnitionTemplate;
10 14 import com.chinagas.modules.schsf.domain.vo.McIgnitionMaintenanceVo;
11 15 import com.chinagas.modules.schsf.enums.IgnitionStatusEnums;
12 16 import com.chinagas.modules.schsf.enums.YesNoEnums;
13 17 import com.chinagas.modules.schsf.mapper.McIgnitionMapper;
  18 +import com.chinagas.modules.schsf.service.DingtalkService;
14 19 import com.chinagas.modules.schsf.service.IMcIgnitionService;
15 20 import com.chinagas.modules.schsf.service.IMcOperationLogService;
  21 +import lombok.extern.slf4j.Slf4j;
16 22 import org.springframework.beans.factory.annotation.Autowired;
17 23 import org.springframework.stereotype.Service;
18 24 import org.springframework.transaction.annotation.Transactional;
19 25  
20 26 import java.time.LocalDateTime;
  27 +import java.util.Collections;
21 28 import java.util.List;
  29 +import java.util.stream.Collectors;
22 30  
23 31 /**
24 32 * 点火维护Service业务层处理
... ... @@ -26,6 +34,7 @@ import java.util.List;
26 34 * @author cw
27 35 * @date 2024-05-22
28 36 */
  37 +@Slf4j
29 38 @Transactional
30 39 @Service
31 40 public class McIgnitionServiceImpl implements IMcIgnitionService {
... ... @@ -33,6 +42,8 @@ public class McIgnitionServiceImpl implements IMcIgnitionService {
33 42 private McIgnitionMapper mcIgnitionMapper;
34 43 @Autowired
35 44 private IMcOperationLogService iMcOperationLogService;
  45 + @Autowired
  46 + private DingtalkService dingtalkService;
36 47  
37 48 /**
38 49 * 根据mcVisit插入mcIgnition
... ... @@ -51,8 +62,6 @@ public class McIgnitionServiceImpl implements IMcIgnitionService {
51 62 String userAccount = SecurityUtils.getUsername();
52 63 String userName = SecurityUtils.getLoginUser().getSysUser().getNickName();
53 64  
54   -
55   -
56 65 McIgnition mcIgnition = new McIgnition();
57 66 mcIgnition.setRegionName(mcVisit.getRegionName());
58 67 mcIgnition.setGroupName(mcVisit.getGroupName());
... ... @@ -90,6 +99,9 @@ public class McIgnitionServiceImpl implements IMcIgnitionService {
90 99 //1:添加记录
91 100 iMcOperationLogService.insertMcOperationLog("mc_ignition", mcIgnition.getId(), "schsf:mcVisit:ticket_submitAuditTwo",
92 101 "发起", "1", "导入基础数据-户数", null, JSON.toJSONString(mcIgnition));
  102 + if (i > 0) {
  103 + this.sendMcIgnitionNotification(mcIgnition.getId());
  104 + }
93 105 return i;
94 106 }
95 107  
... ... @@ -164,6 +176,7 @@ public class McIgnitionServiceImpl implements IMcIgnitionService {
164 176  
165 177 /**
166 178 * 点火维护
  179 + *
167 180 * @param mcIgnition
168 181 * @return
169 182 */
... ... @@ -175,7 +188,7 @@ public class McIgnitionServiceImpl implements IMcIgnitionService {
175 188 String userName = SecurityUtils.getLoginUser().getSysUser().getNickName();
176 189 //老数据
177 190 McIgnition mcIgnition_old = mcIgnitionMapper.selectMcIgnitionById(mcIgnitionMaintenanceVo.getId());
178   - if (mcIgnition_old==null){
  191 + if (mcIgnition_old == null) {
179 192 throw new RuntimeException("被审核信息不存在!");
180 193 }
181 194 //新数据
... ... @@ -185,8 +198,8 @@ public class McIgnitionServiceImpl implements IMcIgnitionService {
185 198 mcIgnition_new.setnIgnRsn(mcIgnitionMaintenanceVo.getnIgnRsn());
186 199 mcIgnition_new.setUpdateBy(userId.toString());
187 200 mcIgnition_new.setUpdateTime(time);
188   - mcIgnition_new.setStatusCode(mcIgnitionMaintenanceVo.getIgnCnfStatusCode().equals("Y")?IgnitionStatusEnums.MAINTENANCE_YES.getCode():IgnitionStatusEnums.MAINTENANCE_NO.getCode());
189   - mcIgnition_new.setStatusName(mcIgnitionMaintenanceVo.getIgnCnfStatusCode().equals("Y")?IgnitionStatusEnums.MAINTENANCE_YES.getInfo():IgnitionStatusEnums.MAINTENANCE_NO.getInfo());
  201 + mcIgnition_new.setStatusCode(mcIgnitionMaintenanceVo.getIgnCnfStatusCode().equals("Y") ? IgnitionStatusEnums.MAINTENANCE_YES.getCode() : IgnitionStatusEnums.MAINTENANCE_NO.getCode());
  202 + mcIgnition_new.setStatusName(mcIgnitionMaintenanceVo.getIgnCnfStatusCode().equals("Y") ? IgnitionStatusEnums.MAINTENANCE_YES.getInfo() : IgnitionStatusEnums.MAINTENANCE_NO.getInfo());
190 203 mcIgnition_new.setCnfPersonId(userId);
191 204 mcIgnition_new.setCnfPersonAccount(userAccount);
192 205 mcIgnition_new.setCnfPersonName(userName);
... ... @@ -200,6 +213,7 @@ public class McIgnitionServiceImpl implements IMcIgnitionService {
200 213  
201 214 /**
202 215 * 作废
  216 + *
203 217 * @param visitId
204 218 */
205 219 @Override
... ... @@ -209,10 +223,10 @@ public class McIgnitionServiceImpl implements IMcIgnitionService {
209 223 String userAccount = SecurityUtils.getUsername();
210 224 String userName = SecurityUtils.getLoginUser().getSysUser().getNickName();
211 225  
212   - McIgnition mcIgnition= new McIgnition();
  226 + McIgnition mcIgnition = new McIgnition();
213 227 mcIgnition.setVisitId(visitId);
214 228 List<McIgnition> mcIgnitions = mcIgnitionMapper.selectMcIgnitionList(mcIgnition);
215   - if (mcIgnitions !=null && mcIgnitions.size()>0){
  229 + if (mcIgnitions != null && mcIgnitions.size() > 0) {
216 230 for (McIgnition mcIgnition_old : mcIgnitions) {
217 231 //新数据
218 232 McIgnition mcIgnition_new = mcIgnition_old.clone();
... ... @@ -227,4 +241,42 @@ public class McIgnitionServiceImpl implements IMcIgnitionService {
227 241 }
228 242 }
229 243 }
  244 +
  245 + /**
  246 + * 点火节点处理人
  247 + *
  248 + * @param id
  249 + * @return
  250 + */
  251 + @Override
  252 + public List<NodeUsersDto> selectMcIgnitionNodeUserList(Long id) {
  253 + McIgnition mcIgnition = mcIgnitionMapper.selectMcIgnitionById(id);
  254 + if (mcIgnition == null) {
  255 + throw new ServiceException("点火信息不存在!");
  256 + }
  257 + //待维护
  258 + if (mcIgnition.getStatusCode().equals(IgnitionStatusEnums.MAINTENANCE.getCode())) {
  259 + return mcIgnitionMapper.selectMcIgnitionNodeUserList(String.valueOf(id), "schsf:mcIgnition:maintenance");
  260 + }
  261 + return Collections.emptyList();
  262 + }
  263 +
  264 + /**
  265 + * 发送钉钉通知
  266 + *
  267 + * @param id
  268 + */
  269 + private void sendMcIgnitionNotification(Long id) {
  270 + McIgnition mcIgnition = mcIgnitionMapper.selectMcIgnitionById(id);
  271 + log.info("点火维护-钉钉通知,点火信息对象:{}", mcIgnition);
  272 + if (BeanUtil.isEmpty(mcIgnition)) {
  273 + throw new ServiceException("未查询到记录");
  274 + }
  275 + //发送通知
  276 + List<NodeUsersDto> mcVisitNodeUsersDtos = this.selectMcIgnitionNodeUserList(id);
  277 + if (mcVisitNodeUsersDtos != null) {
  278 + List<String> userIds = mcVisitNodeUsersDtos.stream().filter(mcVisitNodeUsersDto -> StringUtils.isNotEmpty(mcVisitNodeUsersDto.getDingTalkUserId())).map(NodeUsersDto::getDingTalkUserId).collect(Collectors.toList());
  279 + dingtalkService.sendMarketFeeNotification(userIds, "市场化收费-点火维护", new McIgnitionTemplate(mcIgnition).getNoticemarkdown());
  280 + }
  281 + }
230 282 }
... ...
zr-cloud/zr-modules/zr-schsf/src/main/resources/mapper/McIgnitionMapper.xml
... ... @@ -220,4 +220,50 @@ PUBLIC &quot;-//mybatis.org//DTD Mapper 3.0//EN&quot;
220 220 and t.vlg_or_cmty = #{vlgOrCmty}
221 221 </select>
222 222  
  223 + <select id="selectMcIgnitionNodeUserList" resultType="com.chinagas.modules.schsf.domain.dto.NodeUsersDto" parameterType="String">
  224 + SELECT DISTINCT us.user_name,us.nick_name,un.user_id,un.ding_talk_union_id,un.ding_talk_user_id
  225 + FROM sys_menu menu
  226 + INNER JOIN sys_role_menu roleMenu on roleMenu.menu_id=menu.menu_id
  227 + INNER JOIN sys_role role on role.role_id= roleMenu.role_id
  228 + INNER JOIN sys_user_role userRole on userRole.role_id = role.role_id
  229 + INNER JOIN sys_user us on us.user_id = userRole.user_id
  230 + LEFT JOIN sys_user_unite un on un.user_id=us.user_id
  231 + WHERE menu.perms=#{nodeType,jdbcType=VARCHAR}
  232 + and role.data_scope='1'
  233 + UNION
  234 + SELECT DISTINCT us.user_name,us.nick_name,un.user_id,un.ding_talk_union_id,un.ding_talk_user_id
  235 + FROM sys_menu menu
  236 + INNER JOIN sys_role_menu roleMenu on roleMenu.menu_id=menu.menu_id
  237 + INNER JOIN sys_role role on role.role_id= roleMenu.role_id
  238 + INNER JOIN sys_user_role userRole on userRole.role_id = role.role_id
  239 + INNER JOIN sys_user us on us.user_id = userRole.user_id
  240 + INNER JOIN sys_user_dept userDept on userDept.user_id=us.user_id and userDept.dept_id in ( SELECT ignition.company_code FROM mc_ignition ignition WHERE ignition.id= #{id})
  241 + LEFT JOIN sys_user_unite un on un.user_id=us.user_id
  242 + WHERE menu.perms=#{nodeType,jdbcType=VARCHAR}
  243 + and role.data_scope='3'
  244 + UNION
  245 + SELECT DISTINCT us.user_name,us.nick_name,un.user_id,un.ding_talk_union_id,un.ding_talk_user_id
  246 + FROM sys_menu menu
  247 + INNER JOIN sys_role_menu roleMenu on roleMenu.menu_id=menu.menu_id
  248 + INNER JOIN sys_role role on role.role_id= roleMenu.role_id
  249 + INNER JOIN sys_user_role userRole on userRole.role_id = role.role_id
  250 + INNER JOIN sys_user us on us.user_id = userRole.user_id
  251 + INNER JOIN sys_user_dept userDept on userDept.user_id=us.user_id
  252 + INNER JOIN sys_dept dept on dept.dept_id =userDept.dept_id
  253 + INNER JOIN sys_dept dept2 on dept2.dept_id in (SELECT a.dept_id FROM sys_dept a WHERE a.dept_id = dept.dept_id or find_in_set( dept.parent_id , ancestors ) )
  254 + and dept2.dept_id = (SELECT ignition.company_code FROM mc_ignition ignition WHERE ignition.id= #{id} )
  255 + LEFT JOIN sys_user_unite un on un.user_id=us.user_id
  256 + WHERE menu.perms= #{nodeType,jdbcType=VARCHAR}
  257 + and role.data_scope='4'
  258 + UNION
  259 + SELECT DISTINCT us.user_name,us.nick_name,un.user_id,un.ding_talk_union_id,un.ding_talk_user_id
  260 + FROM sys_menu menu
  261 + INNER JOIN sys_role_menu roleMenu on roleMenu.menu_id=menu.menu_id
  262 + INNER JOIN sys_role role on role.role_id= roleMenu.role_id
  263 + INNER JOIN sys_user_role userRole on userRole.role_id = role.role_id and userRole.user_id = (SELECT ignition.create_by FROM mc_ignition ignition WHERE ignition.id= #{id} )
  264 + INNER JOIN sys_user us on us.user_id = userRole.user_id
  265 + LEFT JOIN sys_user_unite un on un.user_id=us.user_id
  266 + WHERE menu.perms=#{nodeType,jdbcType=VARCHAR}
  267 + and role.data_scope='5'
  268 + </select>
223 269 </mapper>
... ...