Browse Source

Merge branch 'wxz_blockchain' of http://git.elinkit.com.cn:7070/r/epmet-cloud into develop

master
wangxianzhang 4 years ago
parent
commit
e5051a3b0c
  1. 6
      epmet-gateway/pom.xml
  2. 26
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/BlockChainCreateProjectFormDTO.java
  3. 21
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/BlockChainProcessProjectFormDTO.java
  4. 63
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/BlockChainProjectFormDTO.java
  5. 64
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/BlockChainProjectProcessAssignedStaffFormDTO.java
  6. 85
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/BlockChainProjectProcessFormDTO.java
  7. 21
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/feign/EpmetThirdOpenFeignClient.java
  8. 10
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/feign/fallback/EpmetThirdOpenFeignClientFallback.java
  9. 52
      epmet-module/epmet-third/epmet-third-server/pom.xml
  10. 3
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/EpmetThirdApplication.java
  11. 47
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/BlockChainProjectController.java
  12. 98
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/mq/producer/BlockChainProducer.java
  13. 33
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/mq/properties/RocketMQProperties.java
  14. 14
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/BlockChainProjectService.java
  15. 204
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/BlockChainProjectServiceImpl.java
  16. 12
      epmet-module/epmet-third/epmet-third-server/src/main/resources/bootstrap.yml
  17. 20
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/BlockChainUploadService.java
  18. 147
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/BlockChainUploadServiceImpl.java
  19. 19
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectProcessServiceImpl.java
  20. 59
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java
  21. 19
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectTraceServiceImpl.java

6
epmet-gateway/pom.xml

@ -323,11 +323,11 @@
<!-- <gateway.routes.gov-issue-server.uri>http://localhost:8101</gateway.routes.gov-issue-server.uri>--> <!-- <gateway.routes.gov-issue-server.uri>http://localhost:8101</gateway.routes.gov-issue-server.uri>-->
<gateway.routes.gov-issue-server.uri>lb://gov-issue-server</gateway.routes.gov-issue-server.uri> <gateway.routes.gov-issue-server.uri>lb://gov-issue-server</gateway.routes.gov-issue-server.uri>
<!-- 23、政府工作端项目管理 --> <!-- 23、政府工作端项目管理 -->
<!-- <gateway.routes.gov-project-server.uri>http://localhost:8102</gateway.routes.gov-project-server.uri>--> <!-- <gateway.routes.gov-project-server.uri>http://localhost:8102</gateway.routes.gov-project-server.uri>-->
<gateway.routes.gov-project-server.uri>lb://gov-project-server</gateway.routes.gov-project-server.uri> <gateway.routes.gov-project-server.uri>lb://gov-project-server</gateway.routes.gov-project-server.uri>
<!-- 24、公共服务 --> <!-- 24、公共服务 -->
<!--<gateway.routes.common-service-server.uri>lb://common-service-server</gateway.routes.common-service-server.uri>--> <gateway.routes.common-service-server.uri>lb://common-service-server</gateway.routes.common-service-server.uri>
<gateway.routes.common-service-server.uri>http://localhost:8103</gateway.routes.common-service-server.uri> <!--<gateway.routes.common-service-server.uri>http://localhost:8103</gateway.routes.common-service-server.uri>-->
<!-- 25、党建园地 --> <!-- 25、党建园地 -->
<gateway.routes.resi-home-server.uri>lb://resi-home-server</gateway.routes.resi-home-server.uri> <gateway.routes.resi-home-server.uri>lb://resi-home-server</gateway.routes.resi-home-server.uri>
<!-- <gateway.routes.resi-home-server.uri>http://localhost:8104</gateway.routes.resi-home-server.uri>--> <!-- <gateway.routes.resi-home-server.uri>http://localhost:8104</gateway.routes.resi-home-server.uri>-->

26
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/BlockChainCreateProjectFormDTO.java

@ -0,0 +1,26 @@
package com.epmet.dto.form;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* 区块链创建项目form dto
*/
@Data
public class BlockChainCreateProjectFormDTO {
@NotNull(message = "项目信息不能为空")
private BlockChainProjectFormDTO project;
@NotNull(message = "处理进展信息不能为空")
private BlockChainProjectProcessFormDTO process;
@NotNull(message = "指派的人员列表信息不能为空")
@NotEmpty(message = "指派的人员列表信息不能为空")
private List<BlockChainProjectProcessAssignedStaffFormDTO> assignedStaffs;
}

21
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/BlockChainProcessProjectFormDTO.java

@ -0,0 +1,21 @@
package com.epmet.dto.form;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* 区块链项目处理进展信息
*/
@Data
public class BlockChainProcessProjectFormDTO {
@NotNull(message = "处理进展信息不能为空")
private BlockChainProjectProcessFormDTO process;
private List<BlockChainProjectProcessAssignedStaffFormDTO> assignedStaffs;
// 处理人信息更新
private BlockChainProjectProcessAssignedStaffFormDTO handledStaff;
}

63
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/BlockChainProjectFormDTO.java

@ -0,0 +1,63 @@
package com.epmet.dto.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.util.Date;
/**
* 区块链项目信息formdto
*/
@Data
public class BlockChainProjectFormDTO {
@NotBlank(message = "项目ID必填")
private String projectId;
@NotBlank(message = "客户ID必填")
private String customerId;
// 客户名称
private String customerName;
@NotBlank(message = "标题必填")
private String title;
@NotBlank(message = "组织ID必填")
private String agencyId;
// 组织名称
private String agencyName;
@NotBlank(message = "项目来源必填")
private String origin;
@NotBlank(message = "项目来源ID必填")
private String originId;
@NotBlank(message = "项目状态必填")
private String status;
@NotBlank(message = "关闭状态必填")
private String closeStatus;
@NotBlank(message = "组织ID PATH必填")
private String orgIdPath;
@NotBlank(message = "定位必填")
private String locateAddress;
@NotBlank(message = "经度必填")
private String locateLongitude;
@NotBlank(message = "维度必填")
private String locateDimension;
@NotBlank(message = "创建时间必填")
private Date createdTime;
@NotBlank(message = "创建者ID必填")
private String createdBy;
// 创建者名字
private String createrName;
}

64
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/BlockChainProjectProcessAssignedStaffFormDTO.java

@ -0,0 +1,64 @@
package com.epmet.dto.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.util.Date;
/**
* 区块链指派的项目处理人员 form dto
*/
@Data
public class BlockChainProjectProcessAssignedStaffFormDTO {
@NotBlank(message = "ID必填")
private String id;
@NotBlank(message = "进展ID必填")
private String processId;
@NotBlank(message = "项目ID必填")
private String projectId;
@NotBlank(message = "客户ID必填")
private String customerId;
@NotBlank(message = "组织ID必填")
private String orgId;
//组织名称
private String orgName;
@NotBlank(message = "部门ID必填")
private String departmentId;
@NotBlank(message = "网格ID必填")
private String gridId;
// 网格名称
private String gridName;
@NotBlank(message = "组织ID PATH必填")
private String orgIdPath;
@NotBlank(message = "人员ID必填")
private String staffId;
// 指派的用户名字
private String staffName;
@NotBlank(message = "部门名称必填")
private String departmentName;
@NotBlank(message = "是否处理必填")
private String isHandle;
@NotBlank(message = "创建者ID必填")
private String createdBy;
@NotBlank(message = "创建时间必填")
private Date createdTime;
// 创建者名字
private String createrName;
}

85
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/BlockChainProjectProcessFormDTO.java

@ -0,0 +1,85 @@
package com.epmet.dto.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.Date;
/**
* 区块链项目处理form dto
*/
@Data
public class BlockChainProjectProcessFormDTO {
@NotBlank(message = "处理ID必填")
private String processId;
@NotBlank(message = "项目ID必填")
private String projectId;
@NotBlank(message = "客户ID必填")
private String customerId;
@NotBlank(message = "部门名称必填")
private String departmentName;
@NotBlank(message = "组织ID必填")
private String agencyId;
// 组织的ID
private String agencyName;
@NotBlank(message = "部门ID必填")
private String departmentId;
@NotBlank(message = "网格ID必填")
private String gridId;
// 网格的名称
private String gridName;
@NotBlank(message = "组织ID PATH必填")
private String orgIdPath;
@NotBlank(message = "处理人员ID必填")
private String staffId;
// 工作人员名字
private String staffName;
@NotBlank(message = "操作类型必填")
private String operation;
@NotBlank(message = "操作名称必填")
private String operationName;
@NotBlank(message = "公开答复必填")
private String publicReply;
@NotBlank(message = "内部备注必填必填")
private String internalRemark;
@NotNull(message = "结束时间必填")
private Date endTime;
@NotNull(message = "是否发送到外部系统必填")
private Integer isSend;
@NotNull(message = "耗费天数必填")
private String costWorkDays;
@NotBlank(message = "创建者ID必填")
private String createdBy;
// 创建者名字
private String createrName;
@NotNull(message = "创建时间必填")
private Date createdTime;
}

21
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/feign/EpmetThirdOpenFeignClient.java

@ -25,8 +25,8 @@ import java.util.List;
* @author zhaoqifeng * @author zhaoqifeng
* @date 2021/3/18 14:18 * @date 2021/3/18 14:18
*/ */
// @FeignClient(name = ServiceConstant.EPMET_THIRD_SERVER, fallbackFactory = EpmetThirdOpenFeignClientFallbackFactory.class,configuration = //@FeignClient(name = ServiceConstant.EPMET_THIRD_SERVER, fallbackFactory = EpmetThirdOpenFeignClientFallbackFactory.class,configuration =
// EpmetThirdOpenFeignClient.MultipartSupportConfig.class,url = "localhost:8110") // EpmetThirdOpenFeignClient.MultipartSupportConfig.class,url = "localhost:8110")
@FeignClient(name = ServiceConstant.EPMET_THIRD_SERVER, fallbackFactory = EpmetThirdOpenFeignClientFallbackFactory.class, configuration = @FeignClient(name = ServiceConstant.EPMET_THIRD_SERVER, fallbackFactory = EpmetThirdOpenFeignClientFallbackFactory.class, configuration =
EpmetThirdOpenFeignClient.MultipartSupportConfig.class) EpmetThirdOpenFeignClient.MultipartSupportConfig.class)
public interface EpmetThirdOpenFeignClient { public interface EpmetThirdOpenFeignClient {
@ -54,6 +54,23 @@ public interface EpmetThirdOpenFeignClient {
Result<UploadFileResultDTO> uploadFile(@RequestPart("file") MultipartFile file, @RequestParam("customerId") String customerId, @RequestParam( Result<UploadFileResultDTO> uploadFile(@RequestPart("file") MultipartFile file, @RequestParam("customerId") String customerId, @RequestParam(
"platformId") String platformId); "platformId") String platformId);
/**
* 区块链立项
* @param input
* @return
*/
@PostMapping("/third/blockchain/project/create")
Result blockChainCreateProject(@RequestBody BlockChainCreateProjectFormDTO input);
/**
* 区块链处理进展
* @param input
* @return
*/
@PostMapping("/third/blockchain/project/process")
Result blockChainProcessProject(@RequestBody BlockChainProcessProjectFormDTO input);
class MultipartSupportConfig { class MultipartSupportConfig {
@Bean @Bean
public Encoder feignFormEncoder() { public Encoder feignFormEncoder() {

10
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/feign/fallback/EpmetThirdOpenFeignClientFallback.java

@ -49,4 +49,14 @@ public class EpmetThirdOpenFeignClientFallback implements EpmetThirdOpenFeignCli
return ModuleUtils.feignConError(ServiceConstant.EPMET_THIRD_SERVER, "uploadFile", customerId); return ModuleUtils.feignConError(ServiceConstant.EPMET_THIRD_SERVER, "uploadFile", customerId);
} }
@Override
public Result blockChainCreateProject(BlockChainCreateProjectFormDTO input) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_THIRD_SERVER, "createProject", input);
}
@Override
public Result blockChainProcessProject(BlockChainProcessProjectFormDTO input) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_THIRD_SERVER, "processProject", input);
}
} }

52
epmet-module/epmet-third/epmet-third-server/pom.xml

@ -146,6 +146,18 @@
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<!-- rocketmq -->
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-client</artifactId>
<version>4.9.2</version>
</dependency>
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-acl</artifactId>
<version>4.9.2</version>
</dependency>
</dependencies> </dependencies>
<build> <build>
@ -208,6 +220,16 @@
</dingTalk.robot.webHook> </dingTalk.robot.webHook>
<dingTalk.robot.secret>SECfcc020bdc83bb17a2c00f39977b1fbc409ef4188c7beaea11c5caa90eeaf87fd <dingTalk.robot.secret>SECfcc020bdc83bb17a2c00f39977b1fbc409ef4188c7beaea11c5caa90eeaf87fd
</dingTalk.robot.secret> </dingTalk.robot.secret>
<!-- epmet-cloud内部用的rocketmq配置 -->
<!--<rocketmq.epmet-cloud-inner.enable>true</rocketmq.epmet-cloud-inner.enable>
<rocketmq.epmet-cloud-inner.name-server>192.168.1.140:9876;192.168.1.141:9876</rocketmq.epmet-cloud-inner.name-server>-->
<!-- 区块链用的rocketmq配置 -->
<rocketmq.block-chain.enable>true</rocketmq.block-chain.enable>
<rocketmq.block-chain.name-server>192.168.1.144:9876</rocketmq.block-chain.name-server>
<rocketmq.block-chain.access-key>EpmetCloud</rocketmq.block-chain.access-key>
<rocketmq.block-chain.secret-key>12345678</rocketmq.block-chain.secret-key>
</properties> </properties>
</profile> </profile>
<profile> <profile>
@ -248,6 +270,16 @@
</dingTalk.robot.webHook> </dingTalk.robot.webHook>
<dingTalk.robot.secret>SECfcc020bdc83bb17a2c00f39977b1fbc409ef4188c7beaea11c5caa90eeaf87fd <dingTalk.robot.secret>SECfcc020bdc83bb17a2c00f39977b1fbc409ef4188c7beaea11c5caa90eeaf87fd
</dingTalk.robot.secret> </dingTalk.robot.secret>
<!-- epmet-cloud内部用的rocketmq配置 -->
<!--<rocketmq.epmet-cloud-inner.enable>true</rocketmq.epmet-cloud-inner.enable>
<rocketmq.epmet-cloud-inner.name-server>192.168.1.140:9876;192.168.1.141:9876</rocketmq.epmet-cloud-inner.name-server>-->
<!-- 区块链用的rocketmq配置 -->
<rocketmq.block-chain.enable>true</rocketmq.block-chain.enable>
<rocketmq.block-chain.name-server>192.168.1.144:9876</rocketmq.block-chain.name-server>
<rocketmq.block-chain.access-key>EpmetCloud</rocketmq.block-chain.access-key>
<rocketmq.block-chain.secret-key>12345678</rocketmq.block-chain.secret-key>
</properties> </properties>
</profile> </profile>
<profile> <profile>
@ -288,6 +320,16 @@
</dingTalk.robot.webHook> </dingTalk.robot.webHook>
<dingTalk.robot.secret>SECfcc020bdc83bb17a2c00f39977b1fbc409ef4188c7beaea11c5caa90eeaf87fd <dingTalk.robot.secret>SECfcc020bdc83bb17a2c00f39977b1fbc409ef4188c7beaea11c5caa90eeaf87fd
</dingTalk.robot.secret> </dingTalk.robot.secret>
<!-- epmet-cloud内部用的rocketmq配置 -->
<!--<rocketmq.epmet-cloud-inner.enable>false</rocketmq.epmet-cloud-inner.enable>
<rocketmq.epmet-cloud-inner.name-server>192.168.10.161:9876</rocketmq.epmet-cloud-inner.name-server>-->
<!-- 区块链用的rocketmq配置 -->
<rocketmq.block-chain.enable>false</rocketmq.block-chain.enable>
<rocketmq.block-chain.name-server></rocketmq.block-chain.name-server>
<rocketmq.block-chain.access-key></rocketmq.block-chain.access-key>
<rocketmq.block-chain.secret-key></rocketmq.block-chain.secret-key>
</properties> </properties>
</profile> </profile>
@ -330,6 +372,16 @@
</dingTalk.robot.webHook> </dingTalk.robot.webHook>
<dingTalk.robot.secret>SEC95f4f40b533ad379ea6a6d1af6dd37029383cfe1b7cd96dfac2678be2c1c3ed1 <dingTalk.robot.secret>SEC95f4f40b533ad379ea6a6d1af6dd37029383cfe1b7cd96dfac2678be2c1c3ed1
</dingTalk.robot.secret> </dingTalk.robot.secret>
<!-- epmet-cloud内部用的rocketmq配置 -->
<!--<rocketmq.epmet-cloud-inner.enable>true</rocketmq.epmet-cloud-inner.enable>
<rocketmq.epmet-cloud-inner.name-server>192.168.11.187:9876;192.168.11.184:9876</rocketmq.epmet-cloud-inner.name-server>-->
<!-- 区块链用的rocketmq配置 -->
<rocketmq.block-chain.enable>false</rocketmq.block-chain.enable>
<rocketmq.block-chain.name-server></rocketmq.block-chain.name-server>
<rocketmq.block-chain.access-key></rocketmq.block-chain.access-key>
<rocketmq.block-chain.secret-key></rocketmq.block-chain.secret-key>
</properties> </properties>
</profile> </profile>
</profiles> </profiles>

3
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/EpmetThirdApplication.java

@ -1,11 +1,14 @@
package com.epmet; package com.epmet;
import com.epmet.mq.properties.RocketMQProperties;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.boot.web.servlet.ServletComponentScan; import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.cloud.openfeign.EnableFeignClients;
@EnableConfigurationProperties(RocketMQProperties.class)
@SpringBootApplication @SpringBootApplication
@EnableDiscoveryClient @EnableDiscoveryClient
@EnableFeignClients @EnableFeignClients

47
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/BlockChainProjectController.java

@ -0,0 +1,47 @@
package com.epmet.controller;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dto.form.BlockChainCreateProjectFormDTO;
import com.epmet.dto.form.BlockChainProcessProjectFormDTO;
import com.epmet.service.BlockChainProjectService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 区块链project相关controller
*/
@RestController
@RequestMapping("/blockchain/project")
public class BlockChainProjectController {
@Autowired
private BlockChainProjectService blockChainProjectService;
/**
* 立项
* @param input
* @return
*/
@PostMapping("create")
public Result blockChainCreateProject(@RequestBody BlockChainCreateProjectFormDTO input) {
ValidatorUtils.validateEntity(input);
blockChainProjectService.blockChainCreateProject(input);
return new Result();
}
/**
* 处理进展
* @param input
* @return
*/
@PostMapping("process")
public Result blockChainProcessProject(@RequestBody BlockChainProcessProjectFormDTO input) {
ValidatorUtils.validateEntity(input);
blockChainProjectService.blockChainProcessProject(input);
return new Result();
}
}

98
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/mq/producer/BlockChainProducer.java

@ -0,0 +1,98 @@
package com.epmet.mq.producer;
import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.mq.properties.RocketMQProperties;
import lombok.extern.slf4j.Slf4j;
import org.apache.rocketmq.acl.common.AclClientRPCHook;
import org.apache.rocketmq.acl.common.SessionCredentials;
import org.apache.rocketmq.client.exception.MQClientException;
import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.client.producer.SendStatus;
import org.apache.rocketmq.common.message.Message;
import org.apache.rocketmq.remoting.common.RemotingHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
/**
* @Description 描述
* @Author wangxianzhang
* @Date 2021/11/26 12:33 下午
* @Version 1.0
*/
@Component
@Slf4j
public class BlockChainProducer {
/**
* topic
*/
public static final String TOPIC_PROJECT = "project";
public static final String TOPIC_AUTH = "auth";
/**
* tag
*/
public static final String TAG_SEND_PROJECT = "send_project";
// 发送处理进展
public static final String TAG_SEND_PROCESS = "send_process";
// 发送流转过程中被指派的人员
public static final String TAG_SEND_ASSIGNED_STAFFS = "send_assigned_staffs";
// 发送处理完成的人员
public static final String TAG_SEND_HANDLED_STAFF = "send_handled_staff";
/**
*
*/
public static final String GROUP_EPMET_CLOUD_PROJECT_SENDER = "epmet_cloud_project_sender";
private DefaultMQProducer producer;
@Autowired
private RocketMQProperties rocketMQProperties;
@PostConstruct
private void postConstruct() {
try {
producer = new DefaultMQProducer(GROUP_EPMET_CLOUD_PROJECT_SENDER,
new AclClientRPCHook(new SessionCredentials(rocketMQProperties.getBlockChain().getAccessKey(), rocketMQProperties.getBlockChain().getSecretKey())));
producer.setNamesrvAddr(rocketMQProperties.getBlockChain().getNameServer());
producer.start();
} catch (MQClientException e) {
e.printStackTrace();
}
}
/**
* 销毁producer
*/
@PreDestroy
private void preDestroy() {
producer.shutdown();
}
/**
* 发送消息
*
* @param topic
* @param tag
*/
public void sendMsg(String topic, String tag, String content) {
try {
Message msg = new Message(topic, tag, content.getBytes(RemotingHelper.DEFAULT_CHARSET));
SendResult sendResult = producer.send(msg);
if (SendStatus.SEND_OK == sendResult.getSendStatus()
|| SendStatus.SLAVE_NOT_AVAILABLE == sendResult.getSendStatus()) {
log.info("消息发送区块链MQ成功, topic:{}, tag:{}, content:{}", topic, tag, content);
} else {
log.error("消息发送区块链MQ失败, topic:{}, tag:{}, content:{}, status: {}", topic, tag, content, sendResult.getSendStatus());
}
} catch (Exception e) {
log.error("消息发送区块链MQ出错, topic:{}, tag:{}, content:{}, 错误信息:{]", topic, tag, content, ExceptionUtils.getErrorStackTrace(e));
}
}
}

33
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/mq/properties/RocketMQProperties.java

@ -0,0 +1,33 @@
package com.epmet.mq.properties;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
/**
* @Description 描述
* @Author wangxianzhang
* @Date 2021/11/26 10:03 上午
* @Version 1.0
*/
@ConfigurationProperties(prefix = "rocketmq")
@Data
public class RocketMQProperties {
// 这里必须new出对象来才能成功封装
private EpmetCloudInnerProperties epmetCloudInner = new EpmetCloudInnerProperties();
private BlockChainProperties blockChain = new BlockChainProperties();
@Data
public class EpmetCloudInnerProperties {
private Boolean enable;
private String nameServer;
}
@Data
public class BlockChainProperties {
private Boolean enable;
private String nameServer;
private String accessKey;
private String secretKey;
}
}

14
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/BlockChainProjectService.java

@ -0,0 +1,14 @@
package com.epmet.service;
import com.epmet.dto.form.BlockChainCreateProjectFormDTO;
import com.epmet.dto.form.BlockChainProcessProjectFormDTO;
/**
* 区块链项目service
*/
public interface BlockChainProjectService {
void blockChainCreateProject(BlockChainCreateProjectFormDTO input);
void blockChainProcessProject(BlockChainProcessProjectFormDTO input);
}

204
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/BlockChainProjectServiceImpl.java

@ -0,0 +1,204 @@
package com.epmet.service.impl;
import com.alibaba.fastjson.JSON;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.feign.ResultDataResolver;
import com.epmet.dto.CustomerAgencyDTO;
import com.epmet.dto.CustomerDTO;
import com.epmet.dto.CustomerGridDTO;
import com.epmet.dto.CustomerStaffDTO;
import com.epmet.dto.form.*;
import com.epmet.feign.EpmetUserOpenFeignClient;
import com.epmet.feign.GovOrgOpenFeignClient;
import com.epmet.feign.OperCrmOpenFeignClient;
import com.epmet.mq.producer.BlockChainProducer;
import com.epmet.mq.properties.RocketMQProperties;
import com.epmet.service.BlockChainProjectService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Optional;
/**
* @Description 描述
* @Author wangxianzhang
* @Date 2021/11/26 9:59 上午
* @Version 1.0
*/
@Service
public class BlockChainProjectServiceImpl implements BlockChainProjectService, ResultDataResolver {
@Autowired
private BlockChainProducer blockChainProducer;
@Autowired
private OperCrmOpenFeignClient operCrmOpenFeignClient;
@Autowired
private GovOrgOpenFeignClient govOrgOpenFeignClient;
@Autowired
private EpmetUserOpenFeignClient userOpenFeignClient;
@Override
public void blockChainCreateProject(BlockChainCreateProjectFormDTO input) {
BlockChainProjectFormDTO project = input.getProject();
BlockChainProjectProcessFormDTO process = input.getProcess();
List<BlockChainProjectProcessAssignedStaffFormDTO> assignedStaffs = input.getAssignedStaffs();
fill(project, process, assignedStaffs, null);
String projectString = JSON.toJSONString(project);
String processString = JSON.toJSONString(process);
String assignedStaffsString = JSON.toJSONString(assignedStaffs);
blockChainProducer.sendMsg(BlockChainProducer.TOPIC_PROJECT, BlockChainProducer.TAG_SEND_PROJECT, projectString);
blockChainProducer.sendMsg(BlockChainProducer.TOPIC_PROJECT, BlockChainProducer.TAG_SEND_PROCESS, processString);
blockChainProducer.sendMsg(BlockChainProducer.TOPIC_PROJECT, BlockChainProducer.TAG_SEND_ASSIGNED_STAFFS, assignedStaffsString);
}
/**
* 填充数据
* @param project
* @param process
*/
private void fill(BlockChainProjectFormDTO project, BlockChainProjectProcessFormDTO process,
List<BlockChainProjectProcessAssignedStaffFormDTO> assignedStaffs, BlockChainProjectProcessAssignedStaffFormDTO handledStaff) {
// 一.填充project信息
if (project != null) {
// 客户信息
CustomerDTO customerDTO = new CustomerDTO();
customerDTO.setId(project.getCustomerId());
CustomerDTO customerInfo = getResultDataOrThrowsException(operCrmOpenFeignClient.getCustomerInfo(customerDTO),
ServiceConstant.EPMET_THIRD_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), "【项目信息上链】查询客户信息失败");
// 组织信息
CustomerAgencyDTO agencyInfo = getResultDataOrThrowsException(govOrgOpenFeignClient.getAgencyById(project.getAgencyId()),
ServiceConstant.GOV_ORG_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), "【项目信息上链】查询Agency信息失败");
// 用户信息
CustomerStaffDTO customerStaffDTO = new CustomerStaffDTO();
customerStaffDTO.setUserId(project.getCreatedBy());
CustomerStaffDTO staffInfo = getResultDataOrThrowsException(userOpenFeignClient.getCustomerStaffInfoByUserId(customerStaffDTO),
ServiceConstant.EPMET_USER_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), "【项目信息上链】查询用户信息失败");
project.setCustomerName(customerInfo.getCustomerName());
project.setAgencyName(agencyInfo.getOrganizationName());
Optional.of(staffInfo).ifPresent((staff) -> project.setCreaterName(staff.getRealName()));
}
// 二.填充进展信息
if (process != null) {
if (StringUtils.isNotBlank(process.getAgencyId())) {
// 组织信息
CustomerAgencyDTO processAgencyInfo = getResultDataOrThrowsException(govOrgOpenFeignClient.getAgencyById(process.getAgencyId()),
ServiceConstant.GOV_ORG_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), "【项目信息上链】查询处理节点Agency信息失败");
process.setAgencyName(processAgencyInfo.getOrganizationName());
}
// 网格信息
if (StringUtils.isNotBlank(process.getGridId())) {
CustomerGridFormDTO processGridFormDTO = new CustomerGridFormDTO();
processGridFormDTO.setGridId(process.getGridId());
CustomerGridDTO processGridInfo = getResultDataOrThrowsException(govOrgOpenFeignClient.getCustomerGridByGridId(processGridFormDTO),
ServiceConstant.GOV_ORG_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), "【项目信息上链】查询处理节点网格信息失败");
Optional.of(processGridInfo).ifPresent((grid) -> process.setGridName(grid.getGridName()));
}
// 用户信息
CustomerStaffDTO processCustomerStaffDTO = new CustomerStaffDTO();
processCustomerStaffDTO.setUserId(process.getStaffId());
CustomerStaffDTO processStaffInfo = getResultDataOrThrowsException(userOpenFeignClient.getCustomerStaffInfoByUserId(processCustomerStaffDTO),
ServiceConstant.EPMET_USER_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), "【项目信息上链】查询处理节点用户信息失败");
process.setStaffName(processStaffInfo.getRealName());
process.setCreatedBy(processStaffInfo.getRealName());
}
// 三.填充指派用户信息
if (assignedStaffs != null) {
for (BlockChainProjectProcessAssignedStaffFormDTO assignedStaff : assignedStaffs) {
fillAssignedStaffInfo(assignedStaff);
}
}
// 4.填充当前处理人信息
if (handledStaff != null) {
fillAssignedStaffInfo(handledStaff);
}
}
/**
* 填充被指派人的信息
* @param assignedStaff
*/
private void fillAssignedStaffInfo(BlockChainProjectProcessAssignedStaffFormDTO assignedStaff) {
// 组织信息
if (StringUtils.isNotBlank(assignedStaff.getOrgId())) {
CustomerAgencyDTO assignedStaffAgencyInfo = getResultDataOrThrowsException(govOrgOpenFeignClient.getAgencyById(assignedStaff.getOrgId()),
ServiceConstant.GOV_ORG_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), "【项目信息上链】查询指派人员组织信息失败");
assignedStaff.setOrgName(assignedStaffAgencyInfo.getOrganizationName());
}
// 网格信息
if (StringUtils.isNotBlank(assignedStaff.getGridId())) {
CustomerGridFormDTO assignedStaffGridFormDTO = new CustomerGridFormDTO();
assignedStaffGridFormDTO.setGridId(assignedStaff.getGridId());
CustomerGridDTO assignedStaffProcessGridInfo = getResultDataOrThrowsException(govOrgOpenFeignClient.getCustomerGridByGridId(assignedStaffGridFormDTO),
ServiceConstant.GOV_ORG_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), "【项目信息上链】查询指派人员网格信息失败");
Optional.of(assignedStaffProcessGridInfo).ifPresent((gridOfStaff) -> assignedStaff.setGridName(gridOfStaff.getGridName()));
}
// 指派用户
CustomerStaffDTO assignedStaffDTO = new CustomerStaffDTO();
assignedStaffDTO.setUserId(assignedStaff.getStaffId());
CustomerStaffDTO assignedStaffInfo = getResultDataOrThrowsException(userOpenFeignClient.getCustomerStaffInfoByUserId(assignedStaffDTO),
ServiceConstant.EPMET_USER_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), "【项目信息上链】查询指派用户信息失败");
assignedStaff.setStaffName(assignedStaffInfo.getRealName());
// 创建者
CustomerStaffDTO createStaffDTO = new CustomerStaffDTO();
createStaffDTO.setUserId(assignedStaff.getCreatedBy());
CustomerStaffDTO createStaffInfo = getResultDataOrThrowsException(userOpenFeignClient.getCustomerStaffInfoByUserId(createStaffDTO),
ServiceConstant.EPMET_USER_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), "【项目信息上链】查询指派用户信息失败");
Optional.of(createStaffInfo).ifPresent((createStaff) -> assignedStaff.setCreaterName(createStaffInfo.getRealName()));
}
@Override
public void blockChainProcessProject(BlockChainProcessProjectFormDTO input) {
BlockChainProjectProcessFormDTO process = input.getProcess();
List<BlockChainProjectProcessAssignedStaffFormDTO> assignedStaffs = input.getAssignedStaffs();
BlockChainProjectProcessAssignedStaffFormDTO handledStaff = input.getHandledStaff();
fill(null, process, assignedStaffs, handledStaff);
String processString = JSON.toJSONString(process);
blockChainProducer.sendMsg(BlockChainProducer.TOPIC_PROJECT, BlockChainProducer.TAG_SEND_PROCESS, processString);
if (assignedStaffs != null && assignedStaffs.size() > 0) {
String assignedStaffsString = JSON.toJSONString(assignedStaffs);
blockChainProducer.sendMsg(BlockChainProducer.TOPIC_PROJECT, BlockChainProducer.TAG_SEND_ASSIGNED_STAFFS, assignedStaffsString);
}
if (handledStaff != null) {
String handledStaffString = JSON.toJSONString(handledStaff);
blockChainProducer.sendMsg(BlockChainProducer.TOPIC_PROJECT, BlockChainProducer.TAG_SEND_HANDLED_STAFF, handledStaffString);
}
}
}

12
epmet-module/epmet-third/epmet-third-server/src/main/resources/bootstrap.yml

@ -149,3 +149,15 @@ shutdown:
graceful: graceful:
enable: true #是否开启优雅停机 enable: true #是否开启优雅停机
waitTimeSecs: 30 # 优雅停机等待时间,超过30秒,发出告警 waitTimeSecs: 30 # 优雅停机等待时间,超过30秒,发出告警
rocketmq:
# epmet-cloud集群内部用的rocketmq
# epmet-cloud-inner:
# enable: @rocketmq.epmet-cloud-inner.enable@
# name-server: @rocketmq.epmet-cloud-inner.name-server@
# 区块链对接用的rocketmq
block-chain:
enable: @rocketmq.block-chain.enable@
name-server: @rocketmq.block-chain.name-server@
access-key: @rocketmq.block-chain.access-key@
secret-key: @rocketmq.block-chain.secret-key@

20
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/BlockChainUploadService.java

@ -0,0 +1,20 @@
package com.epmet.service;
import com.epmet.entity.ProjectEntity;
import com.epmet.entity.ProjectProcessEntity;
import com.epmet.entity.ProjectStaffEntity;
import java.util.List;
/**
* 上链service接口
*/
public interface BlockChainUploadService {
/**
* 数据上链
* @param processEntity 处理进展entity
* @param assignedStaffEntities 指派给的工作人员entity
*/
void send2BlockChain(ProjectEntity projectEntity, ProjectProcessEntity processEntity, List<ProjectStaffEntity> assignedStaffEntities, String projectStaffId);
}

147
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/BlockChainUploadServiceImpl.java

@ -0,0 +1,147 @@
package com.epmet.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.epmet.dao.ProjectStaffDao;
import com.epmet.dto.form.*;
import com.epmet.entity.ProjectEntity;
import com.epmet.entity.ProjectProcessEntity;
import com.epmet.entity.ProjectStaffEntity;
import com.epmet.feign.EpmetThirdOpenFeignClient;
import com.epmet.service.BlockChainUploadService;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* 区块链上链service实现
*/
@Service
public class BlockChainUploadServiceImpl implements BlockChainUploadService {
@Autowired
private EpmetThirdOpenFeignClient thirdOpenFeignClient;
@Autowired
private ProjectStaffDao projectStaffDao;
/**
* 数据上链
* @param processEntity 处理进展entity
* @param assignedStaffEntities 指派给的工作人员entity
*/
public void send2BlockChain(ProjectEntity projectEntity, ProjectProcessEntity processEntity, List<ProjectStaffEntity> assignedStaffEntities, String projectStaffId) {
// 1.项目主信息
BlockChainProjectFormDTO project = null;
if (projectEntity != null) {
project = new BlockChainProjectFormDTO();
project.setAgencyId(projectEntity.getAgencyId());
project.setProjectId(projectEntity.getId());
project.setCustomerId(projectEntity.getCustomerId());
project.setCreatedBy(projectEntity.getCreatedBy());
project.setCreatedTime(projectEntity.getCreatedTime());
project.setCloseStatus(projectEntity.getClosedStatus());
project.setLocateAddress(projectEntity.getLocateAddress());
project.setLocateDimension(projectEntity.getLocateDimension());
project.setLocateLongitude(projectEntity.getLocateLongitude());
project.setOrgIdPath(projectEntity.getOrgIdPath());
project.setOrigin(projectEntity.getOrigin());
project.setOriginId(projectEntity.getOriginId());
project.setStatus(projectEntity.getStatus());
project.setTitle(projectEntity.getTitle());
}
// 2.项目处理进展
BlockChainProjectProcessFormDTO process = new BlockChainProjectProcessFormDTO();
process.setProcessId(processEntity.getId());
process.setCreatedBy(processEntity.getCreatedBy());
process.setCreatedTime(processEntity.getCreatedTime());
process.setCostWorkDays(processEntity.getCostWorkdays());
process.setAgencyId(processEntity.getAgencyId());
process.setCustomerId(processEntity.getCustomerId());
process.setDepartmentId(processEntity.getDepartmentId());
process.setDepartmentName(processEntity.getDepartmentName());
process.setEndTime(processEntity.getEndTime());
process.setGridId(processEntity.getGridId());
process.setInternalRemark(processEntity.getInternalRemark());
process.setIsSend(processEntity.getIsSend());
process.setOperation(processEntity.getOperation());
process.setOperationName(processEntity.getOperationName());
process.setOrgIdPath(processEntity.getOrgIdPath());
process.setProjectId(processEntity.getProjectId());
process.setPublicReply(processEntity.getPublicReply());
process.setStaffId(processEntity.getStaffId());
if (assignedStaffEntities == null) {
LambdaQueryWrapper<ProjectStaffEntity> query = new LambdaQueryWrapper<>();
query.eq(ProjectStaffEntity::getProcessId, process.getProjectId());
assignedStaffEntities = projectStaffDao.selectList(query);
}
if (CollectionUtils.isEmpty(assignedStaffEntities)) {
assignedStaffEntities = new ArrayList<>();
}
// 3.指派人员列表
List<BlockChainProjectProcessAssignedStaffFormDTO> assignedStaffs = assignedStaffEntities.stream().map(e -> {
BlockChainProjectProcessAssignedStaffFormDTO assignedStaff = new BlockChainProjectProcessAssignedStaffFormDTO();
assignedStaff.setStaffId(e.getStaffId());
assignedStaff.setCreatedBy(e.getCreatedBy());
assignedStaff.setCustomerId(e.getCustomerId());
assignedStaff.setCreatedTime(e.getCreatedTime());
assignedStaff.setProcessId(e.getProcessId());
assignedStaff.setDepartmentId(e.getDepartmentId());
assignedStaff.setDepartmentName(e.getDepartmentName());
assignedStaff.setGridId(e.getGridId());
assignedStaff.setId(e.getId());
assignedStaff.setIsHandle(e.getIsHandle());
assignedStaff.setOrgId(e.getOrgId());
assignedStaff.setOrgIdPath(e.getOrgIdPath());
assignedStaff.setProjectId(e.getProjectId());
return assignedStaff;
}).collect(Collectors.toList());
// 4.当前处理人
BlockChainProjectProcessAssignedStaffFormDTO handledStaff = null;
if (StringUtils.isNotBlank(projectStaffId)) {
ProjectStaffEntity handledStaffEntity = projectStaffDao.selectById(projectStaffId);
handledStaff = new BlockChainProjectProcessAssignedStaffFormDTO();
handledStaff.setStaffId(handledStaffEntity.getStaffId());
handledStaff.setCreatedBy(handledStaffEntity.getCreatedBy());
handledStaff.setCustomerId(handledStaffEntity.getCustomerId());
handledStaff.setCreatedTime(handledStaffEntity.getCreatedTime());
handledStaff.setProcessId(handledStaffEntity.getProcessId());
handledStaff.setDepartmentId(handledStaffEntity.getDepartmentId());
handledStaff.setDepartmentName(handledStaffEntity.getDepartmentName());
handledStaff.setGridId(handledStaffEntity.getGridId());
handledStaff.setId(handledStaffEntity.getId());
handledStaff.setIsHandle(handledStaffEntity.getIsHandle());
handledStaff.setOrgId(handledStaffEntity.getOrgId());
handledStaff.setOrgIdPath(handledStaffEntity.getOrgIdPath());
handledStaff.setProjectId(handledStaffEntity.getProjectId());
}
if (project == null) {
// 处理
BlockChainProcessProjectFormDTO processForm = new BlockChainProcessProjectFormDTO();
processForm.setProcess(process);
processForm.setAssignedStaffs(assignedStaffs);
processForm.setHandledStaff(handledStaff);
thirdOpenFeignClient.blockChainProcessProject(processForm);
} else {
// 立项
BlockChainCreateProjectFormDTO createForm = new BlockChainCreateProjectFormDTO();
createForm.setProject(project);
createForm.setProcess(process);
createForm.setAssignedStaffs(assignedStaffs);
thirdOpenFeignClient.blockChainCreateProject(createForm);
}
}
}

19
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectProcessServiceImpl.java

@ -26,6 +26,7 @@ import com.epmet.commons.tools.constant.AppClientConstant;
import com.epmet.commons.tools.constant.FieldConstant; import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.scan.param.TextScanParamDTO; import com.epmet.commons.tools.scan.param.TextScanParamDTO;
@ -63,6 +64,7 @@ import com.epmet.feign.EpmetUserOpenFeignClient;
import com.epmet.feign.GovOrgFeignClient; import com.epmet.feign.GovOrgFeignClient;
import com.epmet.redis.ProjectProcessRedis; import com.epmet.redis.ProjectProcessRedis;
import com.epmet.send.SendMqMsgUtil; import com.epmet.send.SendMqMsgUtil;
import com.epmet.service.BlockChainUploadService;
import com.epmet.service.ProjectProcessService; import com.epmet.service.ProjectProcessService;
import com.epmet.service.ProjectService; import com.epmet.service.ProjectService;
import com.epmet.service.ProjectStaffService; import com.epmet.service.ProjectStaffService;
@ -125,6 +127,8 @@ public class ProjectProcessServiceImpl extends BaseServiceImpl<ProjectProcessDao
private EpmetMessageOpenFeignClient epmetMessageOpenFeignClient; private EpmetMessageOpenFeignClient epmetMessageOpenFeignClient;
@Autowired @Autowired
private LoginUserUtil loginUserUtil; private LoginUserUtil loginUserUtil;
@Autowired
private BlockChainUploadService blockChainUploadService;
@Override @Override
public PageData<ProjectProcessDTO> page(Map<String, Object> params) { public PageData<ProjectProcessDTO> page(Map<String, Object> params) {
@ -412,6 +416,13 @@ public class ProjectProcessServiceImpl extends BaseServiceImpl<ProjectProcessDao
log.error("项目实时统计消息发送失败"); log.error("项目实时统计消息发送失败");
} }
// 数据上链
try {
blockChainUploadService.send2BlockChain(null, processEntity, entityList, formDTO.getProjectStaffId());
} catch (Exception e) {
String errorMsg = ExceptionUtils.getThrowableErrorStackTrace(e);
log.error("【项目流转】上链失败,错误信息:{}", errorMsg);
}
} }
/** /**
@ -794,6 +805,14 @@ public class ProjectProcessServiceImpl extends BaseServiceImpl<ProjectProcessDao
if (!msgResult) { if (!msgResult) {
log.error("项目实时统计消息发送失败"); log.error("项目实时统计消息发送失败");
} }
// 数据上链
try {
blockChainUploadService.send2BlockChain(null, processEntity, entityList, formDTO.getProjectStaffId());
} catch (Exception e) {
String errorMsg = ExceptionUtils.getThrowableErrorStackTrace(e);
log.error("【项目流转】上链失败,错误信息:{}", errorMsg);
}
} }
/** /**

59
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java

@ -24,6 +24,7 @@ import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.rocketmq.messages.ProjectChangedMQMsg; import com.epmet.commons.rocketmq.messages.ProjectChangedMQMsg;
import com.epmet.commons.tools.constant.*; import com.epmet.commons.tools.constant.*;
import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.scan.param.TextScanParamDTO; import com.epmet.commons.tools.scan.param.TextScanParamDTO;
@ -139,7 +140,8 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
private ProjectSatisfactionStatisticsDao statisticsDao; private ProjectSatisfactionStatisticsDao statisticsDao;
@Autowired @Autowired
private LoginUserUtil loginUserUtil; private LoginUserUtil loginUserUtil;
@Autowired
private BlockChainUploadService blockChainUploadService;
private final static String ONE_DAY = "<1"; private final static String ONE_DAY = "<1";
@ -579,6 +581,14 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
if (!msgResult) { if (!msgResult) {
log.error("项目实时统计消息发送失败"); log.error("项目实时统计消息发送失败");
} }
// 数据上链
try {
blockChainUploadService.send2BlockChain(null, projectProcessEntity, null, fromDTO.getProjectStaffId());
} catch (Exception e) {
String errorMsg = ExceptionUtils.getThrowableErrorStackTrace(e);
log.error("【项目流转】上链失败,错误信息:{}", errorMsg);
}
} }
/** /**
@ -790,6 +800,14 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
// 新添一条记录 // 新添一条记录
statisticsDao.insert(entity1); statisticsDao.insert(entity1);
} }
// 数据上链
try {
blockChainUploadService.send2BlockChain(null, projectProcessEntity, null, fromDTO.getProjectStaffId());
} catch (Exception e) {
String errorMsg = ExceptionUtils.getThrowableErrorStackTrace(e);
log.error("【项目流转】上链失败,错误信息:{}", errorMsg);
}
} }
@Override @Override
@ -958,6 +976,14 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
if (!msgResult) { if (!msgResult) {
log.error("项目实时统计消息发送失败"); log.error("项目实时统计消息发送失败");
} }
// 数据上链
try {
blockChainUploadService.send2BlockChain(null, projectProcessEntity, Arrays.asList(projectStaff), fromDTO.getProjectStaffId());
} catch (Exception e) {
String errorMsg = ExceptionUtils.getThrowableErrorStackTrace(e);
log.error("【项目流转】上链失败,错误信息:{}", errorMsg);
}
} }
/** /**
@ -1268,6 +1294,14 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
log.error("项目实时统计消息发送失败"); log.error("项目实时统计消息发送失败");
} }
// 数据上链
try {
blockChainUploadService.send2BlockChain(projectEntity, processEntity, entityList, null);
} catch (Exception e) {
String errorMsg = ExceptionUtils.getThrowableErrorStackTrace(e);
log.error("【项目流转】上链失败,错误信息:{}", errorMsg);
}
return issueProjectResultDTO; return issueProjectResultDTO;
} }
@ -1356,7 +1390,13 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
log.error("项目实时统计消息发送失败"); log.error("项目实时统计消息发送失败");
} }
// 数据上链
try {
blockChainUploadService.send2BlockChain(null, projectProcessEntity, new ArrayList<>(), null);
} catch (Exception e) {
String errorMsg = ExceptionUtils.getThrowableErrorStackTrace(e);
log.error("【项目流转】上链失败,错误信息:{}", errorMsg);
}
} }
/** /**
@ -2141,6 +2181,14 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
if (!msgResult) { if (!msgResult) {
log.error("项目实时统计消息发送失败"); log.error("项目实时统计消息发送失败");
} }
// 数据上链
try {
blockChainUploadService.send2BlockChain(null, projectProcessEntity, Arrays.asList(projectStaff), fromDTO.getProjectStaffId());
} catch (Exception e) {
String errorMsg = ExceptionUtils.getThrowableErrorStackTrace(e);
log.error("【项目流转】上链失败,错误信息:{}", errorMsg);
}
} }
/** /**
@ -2239,6 +2287,13 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
log.error("项目实时统计消息发送失败"); log.error("项目实时统计消息发送失败");
} }
// 数据上链
try {
blockChainUploadService.send2BlockChain(null, projectProcessEntity, new ArrayList<>(), null);
} catch (Exception e) {
String errorMsg = ExceptionUtils.getThrowableErrorStackTrace(e);
log.error("【项目流转】上链失败,错误信息:{}", errorMsg);
}
} }
/** /**

19
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectTraceServiceImpl.java

@ -5,6 +5,7 @@ import com.epmet.commons.rocketmq.messages.ProjectChangedMQMsg;
import com.epmet.commons.tools.constant.AppClientConstant; import com.epmet.commons.tools.constant.AppClientConstant;
import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.scan.param.TextScanParamDTO; import com.epmet.commons.tools.scan.param.TextScanParamDTO;
import com.epmet.commons.tools.scan.param.TextTaskDTO; import com.epmet.commons.tools.scan.param.TextTaskDTO;
@ -91,6 +92,8 @@ public class ProjectTraceServiceImpl<ProjectTagService> implements ProjectTraceS
private LoginUserUtil loginUserUtil; private LoginUserUtil loginUserUtil;
@Autowired @Autowired
private ResiEventService resiEventService; private ResiEventService resiEventService;
@Autowired
private BlockChainUploadService blockChainUploadService;
@Override @Override
public List<PendProjectListResultDTO> getPendProjectList(TokenDto tokenDto, ProjectListFromDTO fromDTO) { public List<PendProjectListResultDTO> getPendProjectList(TokenDto tokenDto, ProjectListFromDTO fromDTO) {
@ -529,6 +532,13 @@ public class ProjectTraceServiceImpl<ProjectTagService> implements ProjectTraceS
log.error("项目实时统计消息发送失败"); log.error("项目实时统计消息发送失败");
} }
// 数据上链
try {
blockChainUploadService.send2BlockChain(projectEntity, processEntity, entityList, null);
} catch (Exception e) {
String errorMsg = ExceptionUtils.getThrowableErrorStackTrace(e);
log.error("【项目流转】上链失败,错误信息:{}", errorMsg);
}
} }
/** /**
@ -845,6 +855,15 @@ public class ProjectTraceServiceImpl<ProjectTagService> implements ProjectTraceS
resiEventService.shiftProject(eventShiftProjectDTO); resiEventService.shiftProject(eventShiftProjectDTO);
EventToProjectResultDTO resultDTO=new EventToProjectResultDTO(); EventToProjectResultDTO resultDTO=new EventToProjectResultDTO();
resultDTO.setProjectId(projectEntity.getId()); resultDTO.setProjectId(projectEntity.getId());
// 数据上链
try {
blockChainUploadService.send2BlockChain(projectEntity, processEntity, entityList, null);
} catch (Exception e) {
String errorMsg = ExceptionUtils.getThrowableErrorStackTrace(e);
log.error("【项目流转】上链失败,错误信息:{}", errorMsg);
}
return resultDTO; return resultDTO;
} }

Loading…
Cancel
Save