diff --git a/zr-cloud/zr-modules/zr-schsf/src/main/java/com/chinagas/modules/schsf/domain/notice/McConstructionTemplate.java b/zr-cloud/zr-modules/zr-schsf/src/main/java/com/chinagas/modules/schsf/domain/notice/McConstructionTemplate.java new file mode 100644 index 0000000..32f3ec0 --- /dev/null +++ b/zr-cloud/zr-modules/zr-schsf/src/main/java/com/chinagas/modules/schsf/domain/notice/McConstructionTemplate.java @@ -0,0 +1,24 @@ +package com.chinagas.modules.schsf.domain.notice; + +import com.chinagas.modules.schsf.domain.McConstruction; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +public class McConstructionTemplate { + private McConstruction mcConstruction; + public McConstructionTemplate(McConstruction mcConstruction) { + this.mcConstruction = mcConstruction; + } + public String getNoticemarkdown() { + return "###### 市场化收费-施工通知 \n " + + "村/小区:" + mcConstruction.getVlgOrCmty() + " \n " + + "当前状态:" + mcConstruction.getStatusName() + " \n " + + "维护操作:点击链接进入维护页面:[https://schsf.chinagasholdings.com](https://schsf.chinagasholdings.com) \n " + + "---" + + " \n " + + "通知日期: " + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm")) + " \n " + + "温馨提醒: 请按时完成维护,保障业务顺畅。 \n "; + } + +} diff --git a/zr-cloud/zr-modules/zr-schsf/src/main/java/com/chinagas/modules/schsf/mapper/McConstructionMapper.java b/zr-cloud/zr-modules/zr-schsf/src/main/java/com/chinagas/modules/schsf/mapper/McConstructionMapper.java index 8d7cc14..425e8d3 100644 --- a/zr-cloud/zr-modules/zr-schsf/src/main/java/com/chinagas/modules/schsf/mapper/McConstructionMapper.java +++ b/zr-cloud/zr-modules/zr-schsf/src/main/java/com/chinagas/modules/schsf/mapper/McConstructionMapper.java @@ -1,6 +1,8 @@ package com.chinagas.modules.schsf.mapper; import com.chinagas.modules.schsf.domain.McConstruction; +import com.chinagas.modules.schsf.domain.dto.NodeUsersDto; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -63,4 +65,6 @@ public interface McConstructionMapper List selectMcConstructionByData(McConstruction mcConstruction); + + List selectMcConstructionNodeUserList(@Param("id")String id, @Param("nodeType") String nodeType); } diff --git a/zr-cloud/zr-modules/zr-schsf/src/main/java/com/chinagas/modules/schsf/service/IMcConstructionService.java b/zr-cloud/zr-modules/zr-schsf/src/main/java/com/chinagas/modules/schsf/service/IMcConstructionService.java index 9b243a0..fac9d74 100644 --- a/zr-cloud/zr-modules/zr-schsf/src/main/java/com/chinagas/modules/schsf/service/IMcConstructionService.java +++ b/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; import com.chinagas.modules.schsf.domain.McBasicCmty; import com.chinagas.modules.schsf.domain.McConstruction; +import com.chinagas.modules.schsf.domain.McVisit; +import com.chinagas.modules.schsf.domain.dto.NodeUsersDto; import java.util.List; @@ -85,4 +87,20 @@ public interface IMcConstructionService * @throws CloneNotSupportedException */ int updateMcConstructionByOperations(McConstruction mcConstruction) throws CloneNotSupportedException; + + + /** + * 根据拜访信息,发送钉钉通知 + * @param mcVisit + */ + void sendMcConstructionNotification(McVisit mcVisit); + + + /** + * 节点处理人 + * + * @param id + * @return + */ + List selectMcConstructionNodeUserList(Long id); } diff --git a/zr-cloud/zr-modules/zr-schsf/src/main/java/com/chinagas/modules/schsf/service/impl/McConstructionServiceImpl.java b/zr-cloud/zr-modules/zr-schsf/src/main/java/com/chinagas/modules/schsf/service/impl/McConstructionServiceImpl.java index bf24962..33524e8 100644 --- a/zr-cloud/zr-modules/zr-schsf/src/main/java/com/chinagas/modules/schsf/service/impl/McConstructionServiceImpl.java +++ b/zr-cloud/zr-modules/zr-schsf/src/main/java/com/chinagas/modules/schsf/service/impl/McConstructionServiceImpl.java @@ -1,14 +1,22 @@ package com.chinagas.modules.schsf.service.impl; +import cn.hutool.core.bean.BeanUtil; import com.alibaba.fastjson2.JSON; +import com.chinagas.common.core.exceptions.ServiceException; import com.chinagas.common.core.utils.DateUtils; import com.chinagas.common.core.utils.StringUtils; import com.chinagas.common.datascope.annotation.DataScope; import com.chinagas.common.security.utils.SecurityUtils; import com.chinagas.modules.schsf.domain.McBasicCmty; import com.chinagas.modules.schsf.domain.McConstruction; +import com.chinagas.modules.schsf.domain.McVisit; +import com.chinagas.modules.schsf.domain.dto.NodeUsersDto; +import com.chinagas.modules.schsf.domain.notice.McConstructionTemplate; +import com.chinagas.modules.schsf.domain.notice.McIgnitionTemplate; import com.chinagas.modules.schsf.enums.ConstructionStatusEnums; +import com.chinagas.modules.schsf.enums.IgnitionStatusEnums; import com.chinagas.modules.schsf.mapper.McConstructionMapper; +import com.chinagas.modules.schsf.service.DingtalkService; import com.chinagas.modules.schsf.service.IMcConstructionService; import com.chinagas.modules.schsf.service.IMcOperationLogService; import org.springframework.beans.factory.annotation.Autowired; @@ -16,7 +24,9 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; +import java.util.Collections; import java.util.List; +import java.util.stream.Collectors; /** * 施工维护Service业务层处理 @@ -31,6 +41,8 @@ public class McConstructionServiceImpl implements IMcConstructionService { private McConstructionMapper mcConstructionMapper; @Autowired private IMcOperationLogService iMcOperationLogService; + @Autowired + private DingtalkService dingtalkService; /** * 查询施工维护 @@ -119,10 +131,12 @@ public class McConstructionServiceImpl implements IMcConstructionService { mcConstruction.setGroupName(mcBasicCmty.getGroupName()); mcConstruction.setCompanyCode(mcBasicCmty.getCompanyCode()); mcConstruction.setCompanyName(mcBasicCmty.getCompanyName()); - mcConstruction.setProvince(mcBasicCmty.getProvince()); - mcConstruction.setCity(mcBasicCmty.getCity()); - mcConstruction.setDistrict(mcBasicCmty.getDistrict()); - mcConstruction.setStreet(mcBasicCmty.getStreet()); + + mcConstruction.setProvince(mcBasicCmty.getProvince()==null?"":mcBasicCmty.getProvince()); + mcConstruction.setCity(mcBasicCmty.getCity()==null?"":mcBasicCmty.getCity()); + mcConstruction.setDistrict(mcBasicCmty.getDistrict()==null?"":mcBasicCmty.getDistrict()); + mcConstruction.setStreet(mcBasicCmty.getStreet()==null?"":mcBasicCmty.getStreet()); + mcConstruction.setVlgOrCmty(mcBasicCmty.getVlgOrCmty()); List mcConstructions = mcConstructionMapper.selectMcConstructionByData(mcConstruction); if (mcConstructions != null && !mcConstructions.isEmpty()) { @@ -202,6 +216,9 @@ public class McConstructionServiceImpl implements IMcConstructionService { iMcOperationLogService.insertMcOperationLog("mc_construction", mcConstruction_param.getId(), "schsf:mcConstruction:engineering", "工程维护", "1", null, JSON.toJSONString(mcConstruction_old), JSON.toJSONString(mcConstruction_new)); + if (i>0){ + this.sendNotification(mcConstruction_param.getId()); + } return i; } @@ -242,4 +259,55 @@ public class McConstructionServiceImpl implements IMcConstructionService { "运营维护", "1", null, JSON.toJSONString(mcConstruction_old), JSON.toJSONString(mcConstruction_new)); return i; } + + /** + * 发送施工维护通知 + * @param mcVisit + */ + @Override + public void sendMcConstructionNotification(McVisit mcVisit) { + McConstruction mcConstruction = new McConstruction(); + mcConstruction.setRegionName(mcVisit.getRegionName()); + mcConstruction.setGroupName(mcVisit.getGroupName()); + mcConstruction.setCompanyCode(mcVisit.getCompanyCode()); + mcConstruction.setCompanyName(mcVisit.getCompanyName()); +// mcConstruction.setProvince(mcVisit.getProvince()); +// mcConstruction.setCity(mcVisit.getCity()); +// mcConstruction.setDistrict(mcVisit.getDistrict()); +// mcConstruction.setStreet(mcVisit.getStreet()); + mcConstruction.setVlgOrCmty(mcVisit.getVlgOrCmty()); + mcConstruction.setStatusCode(ConstructionStatusEnums.MAINTENANCE_SG.getCode()); + List mcConstructions = mcConstructionMapper.selectMcConstructionByData(mcConstruction); + for (McConstruction construction : mcConstructions) { + this.sendNotification(construction.getId()); + } + } + + private void sendNotification(Long id) { + McConstruction construction = mcConstructionMapper.selectMcConstructionById(id); + if (BeanUtil.isEmpty(construction)) { + throw new ServiceException("未查询到记录"); + } + List nodeUsersDtos = this.selectMcConstructionNodeUserList(construction.getId()); + if (nodeUsersDtos != null && nodeUsersDtos.size()>0) { + List userIds = nodeUsersDtos.stream().filter(mcVisitNodeUsersDto -> StringUtils.isNotEmpty(mcVisitNodeUsersDto.getDingTalkUserId())).map(NodeUsersDto::getDingTalkUserId).collect(Collectors.toList()); + dingtalkService.sendMarketFeeNotification(userIds, "市场化收费-施工维护", new McConstructionTemplate(construction).getNoticemarkdown()); + } + } + + @Override + public List selectMcConstructionNodeUserList(Long id) { + McConstruction mcConstruction = mcConstructionMapper.selectMcConstructionById(id); + if (BeanUtil.isEmpty(mcConstruction)) { + throw new ServiceException("未查询到记录"); + } + if (mcConstruction.getStatusCode().equals(ConstructionStatusEnums.MAINTENANCE_SG.getCode())) { + //待工程维护 schsf:mcConstruction:engineering + return mcConstructionMapper.selectMcConstructionNodeUserList(String.valueOf(id), "schsf:mcConstruction:engineering"); + }else if (mcConstruction.getStatusCode().equals(ConstructionStatusEnums.MAINTENANCE_YY.getCode())){ + //待运营维护 schsf:mcConstruction:operations + return mcConstructionMapper.selectMcConstructionNodeUserList(String.valueOf(id), "schsf:mcConstruction:operations"); + } + return Collections.emptyList(); + } } diff --git a/zr-cloud/zr-modules/zr-schsf/src/main/java/com/chinagas/modules/schsf/service/impl/McVisitServiceImpl.java b/zr-cloud/zr-modules/zr-schsf/src/main/java/com/chinagas/modules/schsf/service/impl/McVisitServiceImpl.java index 8f16df4..cec194c 100644 --- a/zr-cloud/zr-modules/zr-schsf/src/main/java/com/chinagas/modules/schsf/service/impl/McVisitServiceImpl.java +++ b/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 { private IMcBasicCmtyService iMcBasicCmtyService; @Autowired private DingtalkService dingtalkService; + @Autowired + private IMcConstructionService iMcConstructionService; + /** * 查询拜访工单 @@ -411,6 +414,8 @@ public class McVisitServiceImpl implements IMcVisitService { //2:判断是否需要添加至点火记录 if (status.equals(YesNoEnums.Y.getName())) { iMcIgnitionService.insertMcVisitByMcIgnition(mcVisit); + //施工维护通知 + iMcConstructionService.sendMcConstructionNotification(mcVisit); } procRole = "项目公司_财务"; break; diff --git a/zr-cloud/zr-modules/zr-schsf/src/main/resources/mapper/McConstructionMapper.xml b/zr-cloud/zr-modules/zr-schsf/src/main/resources/mapper/McConstructionMapper.xml index f1a4d50..848139f 100644 --- a/zr-cloud/zr-modules/zr-schsf/src/main/resources/mapper/McConstructionMapper.xml +++ b/zr-cloud/zr-modules/zr-schsf/src/main/resources/mapper/McConstructionMapper.xml @@ -223,15 +223,73 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + diff --git a/zr-cloud/zr-modules/zr-schsf/src/main/resources/mapper/McIgnitionMapper.xml b/zr-cloud/zr-modules/zr-schsf/src/main/resources/mapper/McIgnitionMapper.xml index 45c03b8..8a373e2 100644 --- a/zr-cloud/zr-modules/zr-schsf/src/main/resources/mapper/McIgnitionMapper.xml +++ b/zr-cloud/zr-modules/zr-schsf/src/main/resources/mapper/McIgnitionMapper.xml @@ -207,7 +207,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"