Commit dfe1a9911f698fd8b3e6fa972dabadeedd85c25a

Authored by 陈威
1 parent 66247ea0
Exists in dev

工程维护通知

zr-cloud/zr-modules/zr-schsf/src/main/java/com/chinagas/modules/schsf/domain/notice/McConstructionTemplate.java 0 → 100644
@@ -0,0 +1,24 @@ @@ -0,0 +1,24 @@
  1 +package com.chinagas.modules.schsf.domain.notice;
  2 +
  3 +import com.chinagas.modules.schsf.domain.McConstruction;
  4 +
  5 +import java.time.LocalDateTime;
  6 +import java.time.format.DateTimeFormatter;
  7 +
  8 +public class McConstructionTemplate {
  9 + private McConstruction mcConstruction;
  10 + public McConstructionTemplate(McConstruction mcConstruction) {
  11 + this.mcConstruction = mcConstruction;
  12 + }
  13 + public String getNoticemarkdown() {
  14 + return "###### 市场化收费-施工通知 \n " +
  15 + "村/小区:" + mcConstruction.getVlgOrCmty() + " \n " +
  16 + "当前状态:" + mcConstruction.getStatusName() + " \n " +
  17 + "维护操作:点击链接进入维护页面:[https://schsf.chinagasholdings.com](https://schsf.chinagasholdings.com) \n " +
  18 + "---" +
  19 + " \n " +
  20 + "通知日期: " + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm")) + " \n " +
  21 + "温馨提醒: 请按时完成维护,保障业务顺畅。 \n ";
  22 + }
  23 +
  24 +}
zr-cloud/zr-modules/zr-schsf/src/main/java/com/chinagas/modules/schsf/mapper/McConstructionMapper.java
1 package com.chinagas.modules.schsf.mapper; 1 package com.chinagas.modules.schsf.mapper;
2 2
3 import com.chinagas.modules.schsf.domain.McConstruction; 3 import com.chinagas.modules.schsf.domain.McConstruction;
  4 +import com.chinagas.modules.schsf.domain.dto.NodeUsersDto;
  5 +import org.apache.ibatis.annotations.Param;
4 6
5 import java.util.List; 7 import java.util.List;
6 8
@@ -63,4 +65,6 @@ public interface McConstructionMapper @@ -63,4 +65,6 @@ public interface McConstructionMapper
63 65
64 66
65 List<McConstruction> selectMcConstructionByData(McConstruction mcConstruction); 67 List<McConstruction> selectMcConstructionByData(McConstruction mcConstruction);
  68 +
  69 + List<NodeUsersDto> selectMcConstructionNodeUserList(@Param("id")String id, @Param("nodeType") String nodeType);
66 } 70 }
zr-cloud/zr-modules/zr-schsf/src/main/java/com/chinagas/modules/schsf/service/IMcConstructionService.java
@@ -2,6 +2,8 @@ package com.chinagas.modules.schsf.service; @@ -2,6 +2,8 @@ package com.chinagas.modules.schsf.service;
2 2
3 import com.chinagas.modules.schsf.domain.McBasicCmty; 3 import com.chinagas.modules.schsf.domain.McBasicCmty;
4 import com.chinagas.modules.schsf.domain.McConstruction; 4 import com.chinagas.modules.schsf.domain.McConstruction;
  5 +import com.chinagas.modules.schsf.domain.McVisit;
  6 +import com.chinagas.modules.schsf.domain.dto.NodeUsersDto;
5 7
6 import java.util.List; 8 import java.util.List;
7 9
@@ -85,4 +87,20 @@ public interface IMcConstructionService @@ -85,4 +87,20 @@ public interface IMcConstructionService
85 * @throws CloneNotSupportedException 87 * @throws CloneNotSupportedException
86 */ 88 */
87 int updateMcConstructionByOperations(McConstruction mcConstruction) throws CloneNotSupportedException; 89 int updateMcConstructionByOperations(McConstruction mcConstruction) throws CloneNotSupportedException;
  90 +
  91 +
  92 + /**
  93 + * 根据拜访信息,发送钉钉通知
  94 + * @param mcVisit
  95 + */
  96 + void sendMcConstructionNotification(McVisit mcVisit);
  97 +
  98 +
  99 + /**
  100 + * 节点处理人
  101 + *
  102 + * @param id
  103 + * @return
  104 + */
  105 + List<NodeUsersDto> selectMcConstructionNodeUserList(Long id);
88 } 106 }
zr-cloud/zr-modules/zr-schsf/src/main/java/com/chinagas/modules/schsf/service/impl/McConstructionServiceImpl.java
1 package com.chinagas.modules.schsf.service.impl; 1 package com.chinagas.modules.schsf.service.impl;
2 2
  3 +import cn.hutool.core.bean.BeanUtil;
3 import com.alibaba.fastjson2.JSON; 4 import com.alibaba.fastjson2.JSON;
  5 +import com.chinagas.common.core.exceptions.ServiceException;
4 import com.chinagas.common.core.utils.DateUtils; 6 import com.chinagas.common.core.utils.DateUtils;
5 import com.chinagas.common.core.utils.StringUtils; 7 import com.chinagas.common.core.utils.StringUtils;
6 import com.chinagas.common.datascope.annotation.DataScope; 8 import com.chinagas.common.datascope.annotation.DataScope;
7 import com.chinagas.common.security.utils.SecurityUtils; 9 import com.chinagas.common.security.utils.SecurityUtils;
8 import com.chinagas.modules.schsf.domain.McBasicCmty; 10 import com.chinagas.modules.schsf.domain.McBasicCmty;
9 import com.chinagas.modules.schsf.domain.McConstruction; 11 import com.chinagas.modules.schsf.domain.McConstruction;
  12 +import com.chinagas.modules.schsf.domain.McVisit;
  13 +import com.chinagas.modules.schsf.domain.dto.NodeUsersDto;
  14 +import com.chinagas.modules.schsf.domain.notice.McConstructionTemplate;
  15 +import com.chinagas.modules.schsf.domain.notice.McIgnitionTemplate;
10 import com.chinagas.modules.schsf.enums.ConstructionStatusEnums; 16 import com.chinagas.modules.schsf.enums.ConstructionStatusEnums;
  17 +import com.chinagas.modules.schsf.enums.IgnitionStatusEnums;
11 import com.chinagas.modules.schsf.mapper.McConstructionMapper; 18 import com.chinagas.modules.schsf.mapper.McConstructionMapper;
  19 +import com.chinagas.modules.schsf.service.DingtalkService;
12 import com.chinagas.modules.schsf.service.IMcConstructionService; 20 import com.chinagas.modules.schsf.service.IMcConstructionService;
13 import com.chinagas.modules.schsf.service.IMcOperationLogService; 21 import com.chinagas.modules.schsf.service.IMcOperationLogService;
14 import org.springframework.beans.factory.annotation.Autowired; 22 import org.springframework.beans.factory.annotation.Autowired;
@@ -16,7 +24,9 @@ import org.springframework.stereotype.Service; @@ -16,7 +24,9 @@ import org.springframework.stereotype.Service;
16 import org.springframework.transaction.annotation.Transactional; 24 import org.springframework.transaction.annotation.Transactional;
17 25
18 import java.time.LocalDateTime; 26 import java.time.LocalDateTime;
  27 +import java.util.Collections;
19 import java.util.List; 28 import java.util.List;
  29 +import java.util.stream.Collectors;
20 30
21 /** 31 /**
22 * 施工维护Service业务层处理 32 * 施工维护Service业务层处理
@@ -31,6 +41,8 @@ public class McConstructionServiceImpl implements IMcConstructionService { @@ -31,6 +41,8 @@ public class McConstructionServiceImpl implements IMcConstructionService {
31 private McConstructionMapper mcConstructionMapper; 41 private McConstructionMapper mcConstructionMapper;
32 @Autowired 42 @Autowired
33 private IMcOperationLogService iMcOperationLogService; 43 private IMcOperationLogService iMcOperationLogService;
  44 + @Autowired
  45 + private DingtalkService dingtalkService;
34 46
35 /** 47 /**
36 * 查询施工维护 48 * 查询施工维护
@@ -119,10 +131,12 @@ public class McConstructionServiceImpl implements IMcConstructionService { @@ -119,10 +131,12 @@ public class McConstructionServiceImpl implements IMcConstructionService {
119 mcConstruction.setGroupName(mcBasicCmty.getGroupName()); 131 mcConstruction.setGroupName(mcBasicCmty.getGroupName());
120 mcConstruction.setCompanyCode(mcBasicCmty.getCompanyCode()); 132 mcConstruction.setCompanyCode(mcBasicCmty.getCompanyCode());
121 mcConstruction.setCompanyName(mcBasicCmty.getCompanyName()); 133 mcConstruction.setCompanyName(mcBasicCmty.getCompanyName());
122 - mcConstruction.setProvince(mcBasicCmty.getProvince());  
123 - mcConstruction.setCity(mcBasicCmty.getCity());  
124 - mcConstruction.setDistrict(mcBasicCmty.getDistrict());  
125 - mcConstruction.setStreet(mcBasicCmty.getStreet()); 134 +
  135 + mcConstruction.setProvince(mcBasicCmty.getProvince()==null?"":mcBasicCmty.getProvince());
  136 + mcConstruction.setCity(mcBasicCmty.getCity()==null?"":mcBasicCmty.getCity());
  137 + mcConstruction.setDistrict(mcBasicCmty.getDistrict()==null?"":mcBasicCmty.getDistrict());
  138 + mcConstruction.setStreet(mcBasicCmty.getStreet()==null?"":mcBasicCmty.getStreet());
  139 +
126 mcConstruction.setVlgOrCmty(mcBasicCmty.getVlgOrCmty()); 140 mcConstruction.setVlgOrCmty(mcBasicCmty.getVlgOrCmty());
127 List<McConstruction> mcConstructions = mcConstructionMapper.selectMcConstructionByData(mcConstruction); 141 List<McConstruction> mcConstructions = mcConstructionMapper.selectMcConstructionByData(mcConstruction);
128 if (mcConstructions != null && !mcConstructions.isEmpty()) { 142 if (mcConstructions != null && !mcConstructions.isEmpty()) {
@@ -202,6 +216,9 @@ public class McConstructionServiceImpl implements IMcConstructionService { @@ -202,6 +216,9 @@ public class McConstructionServiceImpl implements IMcConstructionService {
202 216
203 iMcOperationLogService.insertMcOperationLog("mc_construction", mcConstruction_param.getId(), "schsf:mcConstruction:engineering", 217 iMcOperationLogService.insertMcOperationLog("mc_construction", mcConstruction_param.getId(), "schsf:mcConstruction:engineering",
204 "工程维护", "1", null, JSON.toJSONString(mcConstruction_old), JSON.toJSONString(mcConstruction_new)); 218 "工程维护", "1", null, JSON.toJSONString(mcConstruction_old), JSON.toJSONString(mcConstruction_new));
  219 + if (i>0){
  220 + this.sendNotification(mcConstruction_param.getId());
  221 + }
205 return i; 222 return i;
206 } 223 }
207 224
@@ -242,4 +259,55 @@ public class McConstructionServiceImpl implements IMcConstructionService { @@ -242,4 +259,55 @@ public class McConstructionServiceImpl implements IMcConstructionService {
242 "运营维护", "1", null, JSON.toJSONString(mcConstruction_old), JSON.toJSONString(mcConstruction_new)); 259 "运营维护", "1", null, JSON.toJSONString(mcConstruction_old), JSON.toJSONString(mcConstruction_new));
243 return i; 260 return i;
244 } 261 }
  262 +
  263 + /**
  264 + * 发送施工维护通知
  265 + * @param mcVisit
  266 + */
  267 + @Override
  268 + public void sendMcConstructionNotification(McVisit mcVisit) {
  269 + McConstruction mcConstruction = new McConstruction();
  270 + mcConstruction.setRegionName(mcVisit.getRegionName());
  271 + mcConstruction.setGroupName(mcVisit.getGroupName());
  272 + mcConstruction.setCompanyCode(mcVisit.getCompanyCode());
  273 + mcConstruction.setCompanyName(mcVisit.getCompanyName());
  274 +// mcConstruction.setProvince(mcVisit.getProvince());
  275 +// mcConstruction.setCity(mcVisit.getCity());
  276 +// mcConstruction.setDistrict(mcVisit.getDistrict());
  277 +// mcConstruction.setStreet(mcVisit.getStreet());
  278 + mcConstruction.setVlgOrCmty(mcVisit.getVlgOrCmty());
  279 + mcConstruction.setStatusCode(ConstructionStatusEnums.MAINTENANCE_SG.getCode());
  280 + List<McConstruction> mcConstructions = mcConstructionMapper.selectMcConstructionByData(mcConstruction);
  281 + for (McConstruction construction : mcConstructions) {
  282 + this.sendNotification(construction.getId());
  283 + }
  284 + }
  285 +
  286 + private void sendNotification(Long id) {
  287 + McConstruction construction = mcConstructionMapper.selectMcConstructionById(id);
  288 + if (BeanUtil.isEmpty(construction)) {
  289 + throw new ServiceException("未查询到记录");
  290 + }
  291 + List<NodeUsersDto> nodeUsersDtos = this.selectMcConstructionNodeUserList(construction.getId());
  292 + if (nodeUsersDtos != null && nodeUsersDtos.size()>0) {
  293 + List<String> userIds = nodeUsersDtos.stream().filter(mcVisitNodeUsersDto -> StringUtils.isNotEmpty(mcVisitNodeUsersDto.getDingTalkUserId())).map(NodeUsersDto::getDingTalkUserId).collect(Collectors.toList());
  294 + dingtalkService.sendMarketFeeNotification(userIds, "市场化收费-施工维护", new McConstructionTemplate(construction).getNoticemarkdown());
  295 + }
  296 + }
  297 +
  298 + @Override
  299 + public List<NodeUsersDto> selectMcConstructionNodeUserList(Long id) {
  300 + McConstruction mcConstruction = mcConstructionMapper.selectMcConstructionById(id);
  301 + if (BeanUtil.isEmpty(mcConstruction)) {
  302 + throw new ServiceException("未查询到记录");
  303 + }
  304 + if (mcConstruction.getStatusCode().equals(ConstructionStatusEnums.MAINTENANCE_SG.getCode())) {
  305 + //待工程维护 schsf:mcConstruction:engineering
  306 + return mcConstructionMapper.selectMcConstructionNodeUserList(String.valueOf(id), "schsf:mcConstruction:engineering");
  307 + }else if (mcConstruction.getStatusCode().equals(ConstructionStatusEnums.MAINTENANCE_YY.getCode())){
  308 + //待运营维护 schsf:mcConstruction:operations
  309 + return mcConstructionMapper.selectMcConstructionNodeUserList(String.valueOf(id), "schsf:mcConstruction:operations");
  310 + }
  311 + return Collections.emptyList();
  312 + }
245 } 313 }
zr-cloud/zr-modules/zr-schsf/src/main/java/com/chinagas/modules/schsf/service/impl/McVisitServiceImpl.java
@@ -63,6 +63,9 @@ public class McVisitServiceImpl implements IMcVisitService { @@ -63,6 +63,9 @@ public class McVisitServiceImpl implements IMcVisitService {
63 private IMcBasicCmtyService iMcBasicCmtyService; 63 private IMcBasicCmtyService iMcBasicCmtyService;
64 @Autowired 64 @Autowired
65 private DingtalkService dingtalkService; 65 private DingtalkService dingtalkService;
  66 + @Autowired
  67 + private IMcConstructionService iMcConstructionService;
  68 +
66 69
67 /** 70 /**
68 * 查询拜访工单 71 * 查询拜访工单
@@ -411,6 +414,8 @@ public class McVisitServiceImpl implements IMcVisitService { @@ -411,6 +414,8 @@ public class McVisitServiceImpl implements IMcVisitService {
411 //2:判断是否需要添加至点火记录 414 //2:判断是否需要添加至点火记录
412 if (status.equals(YesNoEnums.Y.getName())) { 415 if (status.equals(YesNoEnums.Y.getName())) {
413 iMcIgnitionService.insertMcVisitByMcIgnition(mcVisit); 416 iMcIgnitionService.insertMcVisitByMcIgnition(mcVisit);
  417 + //施工维护通知
  418 + iMcConstructionService.sendMcConstructionNotification(mcVisit);
414 } 419 }
415 procRole = "项目公司_财务"; 420 procRole = "项目公司_财务";
416 break; 421 break;
zr-cloud/zr-modules/zr-schsf/src/main/resources/mapper/McConstructionMapper.xml
@@ -223,15 +223,73 @@ PUBLIC &quot;-//mybatis.org//DTD Mapper 3.0//EN&quot; @@ -223,15 +223,73 @@ PUBLIC &quot;-//mybatis.org//DTD Mapper 3.0//EN&quot;
223 223
224 <select id="selectMcConstructionByData" resultMap="McConstructionResult" parameterType="com.chinagas.modules.schsf.domain.McConstruction" > 224 <select id="selectMcConstructionByData" resultMap="McConstructionResult" parameterType="com.chinagas.modules.schsf.domain.McConstruction" >
225 <include refid="selectMcConstructionVo"/> 225 <include refid="selectMcConstructionVo"/>
226 - where 1=1  
227 - and t.region_name = #{regionName}  
228 - and t.group_name = #{groupName}  
229 - and t.company_name = #{companyName}  
230 - and t.company_code = #{companyCode}  
231 - and t.province = #{province}  
232 - and t.city = #{city}  
233 - and t.district = #{district}  
234 - and t.street = #{street} 226 + where 1 = 1
  227 + and t.region_name = #{regionName}
  228 + and t.group_name = #{groupName}
  229 + and t.company_name = #{companyName}
  230 + and t.company_code = #{companyCode}
  231 + <if test="province != null">
  232 + and t.province = #{province}
  233 + </if>
  234 + <if test="city != null">
  235 + and t.city = #{city}
  236 + </if>
  237 + <if test="district != null">
  238 + and t.district = #{district}
  239 + </if>
  240 + <if test="street != null">
  241 + and t.street = #{street}
  242 + </if>
  243 + <if test="statusCode != null">
  244 + and status_code = #{statusCode}
  245 + </if>
235 and t.vlg_or_cmty = #{vlgOrCmty} 246 and t.vlg_or_cmty = #{vlgOrCmty}
236 </select> 247 </select>
  248 +
  249 + <select id="selectMcConstructionNodeUserList" resultType="com.chinagas.modules.schsf.domain.dto.NodeUsersDto" parameterType="String">
  250 + SELECT DISTINCT us.user_name,us.nick_name,un.user_id,un.ding_talk_union_id,un.ding_talk_user_id
  251 + FROM sys_menu menu
  252 + INNER JOIN sys_role_menu roleMenu on roleMenu.menu_id=menu.menu_id
  253 + INNER JOIN sys_role role on role.role_id= roleMenu.role_id
  254 + INNER JOIN sys_user_role userRole on userRole.role_id = role.role_id
  255 + INNER JOIN sys_user us on us.user_id = userRole.user_id
  256 + LEFT JOIN sys_user_unite un on un.user_id=us.user_id
  257 + WHERE menu.perms=#{nodeType,jdbcType=VARCHAR}
  258 + and role.data_scope='1'
  259 + UNION
  260 + SELECT DISTINCT us.user_name,us.nick_name,un.user_id,un.ding_talk_union_id,un.ding_talk_user_id
  261 + FROM sys_menu menu
  262 + INNER JOIN sys_role_menu roleMenu on roleMenu.menu_id=menu.menu_id
  263 + INNER JOIN sys_role role on role.role_id= roleMenu.role_id
  264 + INNER JOIN sys_user_role userRole on userRole.role_id = role.role_id
  265 + INNER JOIN sys_user us on us.user_id = userRole.user_id
  266 + INNER JOIN sys_user_dept userDept on userDept.user_id=us.user_id and userDept.dept_id in ( SELECT construction.company_code FROM mc_construction construction WHERE construction.id=#{id})
  267 + LEFT JOIN sys_user_unite un on un.user_id=us.user_id
  268 + WHERE menu.perms=#{nodeType,jdbcType=VARCHAR}
  269 + and role.data_scope='3'
  270 + UNION
  271 + SELECT DISTINCT us.user_name,us.nick_name,un.user_id,un.ding_talk_union_id,un.ding_talk_user_id
  272 + FROM sys_menu menu
  273 + INNER JOIN sys_role_menu roleMenu on roleMenu.menu_id=menu.menu_id
  274 + INNER JOIN sys_role role on role.role_id= roleMenu.role_id
  275 + INNER JOIN sys_user_role userRole on userRole.role_id = role.role_id
  276 + INNER JOIN sys_user us on us.user_id = userRole.user_id
  277 + INNER JOIN sys_user_dept userDept on userDept.user_id=us.user_id
  278 + INNER JOIN sys_dept dept on dept.dept_id =userDept.dept_id
  279 + 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 ) )
  280 + and dept2.dept_id = (SELECT construction.company_code FROM mc_construction construction WHERE construction.id=#{id} )
  281 + LEFT JOIN sys_user_unite un on un.user_id=us.user_id
  282 + WHERE menu.perms= #{nodeType,jdbcType=VARCHAR}
  283 + and role.data_scope='4'
  284 + UNION
  285 + SELECT DISTINCT us.user_name,us.nick_name,un.user_id,un.ding_talk_union_id,un.ding_talk_user_id
  286 + FROM sys_menu menu
  287 + INNER JOIN sys_role_menu roleMenu on roleMenu.menu_id=menu.menu_id
  288 + INNER JOIN sys_role role on role.role_id= roleMenu.role_id
  289 + INNER JOIN sys_user_role userRole on userRole.role_id = role.role_id and userRole.user_id = (SELECT construction.create_by FROM mc_construction construction WHERE construction.id=#{id} )
  290 + INNER JOIN sys_user us on us.user_id = userRole.user_id
  291 + LEFT JOIN sys_user_unite un on un.user_id=us.user_id
  292 + WHERE menu.perms=#{nodeType,jdbcType=VARCHAR}
  293 + and role.data_scope='5'
  294 + </select>
237 </mapper> 295 </mapper>
zr-cloud/zr-modules/zr-schsf/src/main/resources/mapper/McIgnitionMapper.xml
@@ -207,7 +207,7 @@ PUBLIC &quot;-//mybatis.org//DTD Mapper 3.0//EN&quot; @@ -207,7 +207,7 @@ PUBLIC &quot;-//mybatis.org//DTD Mapper 3.0//EN&quot;
207 <select id="selectMcIgnitionParamList" parameterType="com.chinagas.modules.schsf.domain.McIgnition" resultMap="McIgnitionResult"> 207 <select id="selectMcIgnitionParamList" parameterType="com.chinagas.modules.schsf.domain.McIgnition" resultMap="McIgnitionResult">
208 <include refid="selectMcIgnitionVo"/> 208 <include refid="selectMcIgnitionVo"/>
209 where 1=1 209 where 1=1
210 - and t.status_code !='MAINTENANCE' 210 + and t.status_code !='CANCEL'
211 and t.def_flag ='0' 211 and t.def_flag ='0'
212 and t.region_name = #{regionName} 212 and t.region_name = #{regionName}
213 and t.group_name = #{groupName} 213 and t.group_name = #{groupName}