Browse Source

事件上报修改

dev
zhaoqifeng 4 years ago
parent
commit
a3699359c8
  1. 26
      epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/service/BaseService.java
  2. 55
      epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/service/impl/BaseServiceImpl.java
  3. 3
      epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/messages/DisputeProcessMQMsg.java
  4. 3
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/basereport/form/EventInfoFormDTO.java
  5. 2
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/screen/ScreenProjectDataDao.java
  6. 19
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/mq/ProjectChangedCustomListener.java
  7. 2
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/ScreenProjectDataService.java
  8. 4
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectDataServiceImpl.java
  9. 4
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/DataReportingServiceImpl.java
  10. 12
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenProjectDataDao.xml
  11. 5
      epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/BaseDisputeProcessServiceImpl.java

26
epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/service/BaseService.java

@ -123,5 +123,31 @@ public interface BaseService<T> {
*/ */
boolean deleteBatchIds(Collection<? extends Serializable> idList); boolean deleteBatchIds(Collection<? extends Serializable> idList);
/**
* <p>
* 存在更新记录否插入一条记录
* </p>
*
* @param entity 实体对象
*/
boolean saveOrUpdate(T entity);
/**
* <p>
* 批量修改插入
* </p>
*
* @param entityList 实体对象集合
*/
boolean saveOrUpdateBatch(Collection<T> entityList);
/**
* <p>
* 批量修改插入
* </p>
*
* @param entityList 实体对象集合
* @param batchSize 更新批次数量
*/
boolean saveOrUpdateBatch(Collection<T> entityList, int batchSize);
} }

55
epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/service/impl/BaseServiceImpl.java

@ -13,6 +13,8 @@ import com.baomidou.mybatisplus.core.enums.SqlMethod;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.metadata.OrderItem; import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.core.metadata.TableInfo;
import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
import com.baomidou.mybatisplus.core.toolkit.*; import com.baomidou.mybatisplus.core.toolkit.*;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.toolkit.SqlHelper; import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
@ -31,6 +33,7 @@ import java.io.Serializable;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects;
/** /**
* 基础服务类所有Service都要继承 * 基础服务类所有Service都要继承
@ -298,4 +301,56 @@ public abstract class BaseServiceImpl<M extends BaseMapper<T>, T> implements Bas
public boolean deleteBatchIds(Collection<? extends Serializable> idList) { public boolean deleteBatchIds(Collection<? extends Serializable> idList) {
return SqlHelper.delBool(baseDao.deleteBatchIds(idList)); return SqlHelper.delBool(baseDao.deleteBatchIds(idList));
} }
@Transactional(rollbackFor = Exception.class)
@Override
public boolean saveOrUpdate(T entity) {
if (null != entity) {
Class<?> cls = entity.getClass();
TableInfo tableInfo = TableInfoHelper.getTableInfo(cls);
Assert.notNull(tableInfo, "error: can not execute. because can not find cache of TableInfo for entity!");
String keyProperty = tableInfo.getKeyProperty();
Assert.notEmpty(keyProperty, "error: can not execute. because can not find column for id from entity!");
Object idVal = ReflectionKit.getMethodValue(cls, entity, tableInfo.getKeyProperty());
return StringUtils.checkValNull(idVal) || Objects.isNull(selectById((Serializable) idVal)) ? insert(entity) : updateById(entity);
}
return false;
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean saveOrUpdateBatch(Collection<T> entityList) {
return saveOrUpdateBatch(entityList, 100);
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean saveOrUpdateBatch(Collection<T> entityList, int batchSize) {
Assert.notEmpty(entityList, "error: entityList must not be empty");
Class<?> cls = currentModelClass();
TableInfo tableInfo = TableInfoHelper.getTableInfo(cls);
Assert.notNull(tableInfo, "error: can not execute. because can not find cache of TableInfo for entity!");
String keyProperty = tableInfo.getKeyProperty();
Assert.notEmpty(keyProperty, "error: can not execute. because can not find column for id from entity!");
try (SqlSession batchSqlSession = sqlSessionBatch()) {
int i = 0;
for (T entity : entityList) {
Object idVal = ReflectionKit.getMethodValue(cls, entity, keyProperty);
if (StringUtils.checkValNull(idVal) || Objects.isNull(selectById((Serializable) idVal))) {
batchSqlSession.insert(sqlStatement(SqlMethod.INSERT_ONE), entity);
} else {
MapperMethod.ParamMap<T> param = new MapperMethod.ParamMap<>();
param.put(Constants.ENTITY, entity);
batchSqlSession.update(sqlStatement(SqlMethod.UPDATE_BY_ID), param);
}
// 不知道以后会不会有人说更新失败了还要执行插入 😂😂😂
if (i >= 1 && i % batchSize == 0) {
batchSqlSession.flushStatements();
}
i++;
}
batchSqlSession.flushStatements();
}
return true;
}
} }

3
epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/messages/DisputeProcessMQMsg.java

@ -4,6 +4,7 @@ import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.util.List;
/** /**
* @Description * @Description
@ -14,7 +15,7 @@ import java.io.Serializable;
@AllArgsConstructor @AllArgsConstructor
public class DisputeProcessMQMsg implements Serializable { public class DisputeProcessMQMsg implements Serializable {
private String customerId; private String customerId;
private String projectId; private List<String> projectId;
/** /**
* 操作类型新增:add 修改删除:edit * 操作类型新增:add 修改删除:edit
*/ */

3
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/basereport/form/EventInfoFormDTO.java

@ -4,6 +4,7 @@ import com.epmet.commons.tools.dto.form.PageFormDTO;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.util.List;
/** /**
* @Description * @Description
@ -14,7 +15,7 @@ import java.io.Serializable;
public class EventInfoFormDTO extends PageFormDTO implements Serializable { public class EventInfoFormDTO extends PageFormDTO implements Serializable {
private static final long serialVersionUID = 8479649048108914555L; private static final long serialVersionUID = 8479649048108914555L;
private String customerId; private String customerId;
private String projectId; private List<String> projectId;
/** /**
* 操作类型新增:add 修改删除:edit * 操作类型新增:add 修改删除:edit
*/ */

2
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/screen/ScreenProjectDataDao.java

@ -68,7 +68,7 @@ public interface ScreenProjectDataDao extends BaseDao<ScreenProjectDataEntity> {
int updateProjectSatisfactionScore(@Param("projectId")String projectId, @Param("score")BigDecimal score); int updateProjectSatisfactionScore(@Param("projectId")String projectId, @Param("score")BigDecimal score);
List<ScreenProjectDataDTO> selectProjectList(@Param("customerId") String customerId, @Param("projectId") String projectId); List<ScreenProjectDataDTO> selectProjectList(@Param("customerId") String customerId, @Param("projectIds") List<String> projectIds);
/** /**
* @Description 查询网格下的项目分类 * @Description 查询网格下的项目分类

19
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/mq/ProjectChangedCustomListener.java

@ -27,6 +27,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import javax.annotation.PreDestroy; import javax.annotation.PreDestroy;
import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutionException;
@ -154,14 +155,18 @@ public class ProjectChangedCustomListener implements MessageListenerConcurrently
logger.info("consumer projectChanged msg success,{}",aBoolean); logger.info("consumer projectChanged msg success,{}",aBoolean);
//发送项目数据上报的mq消息 //发送项目数据上报的mq消息
String type; if ("issue_shift_project".equals(msgObj.getOperation()) || "created".equals(msgObj.getOperation()) || "close".equals(msgObj.getOperation())) {
if ("issue_shift_project".equals(msgObj.getOperation()) || "created".equals(msgObj.getOperation())) { String type;
type = SystemMessageType.PROJECT_ADD; if ("issue_shift_project".equals(msgObj.getOperation()) || "created".equals(msgObj.getOperation())) {
} else { type = SystemMessageType.PROJECT_ADD;
type = SystemMessageType.PROJECT_EDIT; } else {
type = SystemMessageType.PROJECT_EDIT;
}
List<String> projectList = new ArrayList<>();
projectList.add(msgObj.getProjectId());
DisputeProcessMQMsg msg = new DisputeProcessMQMsg(customerId, projectList, type);
SpringContextUtils.getBean(ScreenProjectDataService.class).sendProjectChangeMq(msg);
} }
DisputeProcessMQMsg msg = new DisputeProcessMQMsg(customerId, msgObj.getProjectId(), type);
SpringContextUtils.getBean(ScreenProjectDataService.class).sendProjectChangeMq(msg);
} catch (RenException e) { } catch (RenException e) {
// 如果是我们手动抛出的异常,说明在业务可控范围内。目前不需要MQ重试 // 如果是我们手动抛出的异常,说明在业务可控范围内。目前不需要MQ重试
logger.error("【RocketMQ】消费项目变动消息失败:",e); logger.error("【RocketMQ】消费项目变动消息失败:",e);

2
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/ScreenProjectDataService.java

@ -137,7 +137,7 @@ public interface ScreenProjectDataService extends BaseService<ScreenProjectDataE
* @Author zhaoqifeng * @Author zhaoqifeng
* @Date 2021/10/15 14:22 * @Date 2021/10/15 14:22
*/ */
List<ScreenProjectDataDTO> getProjectList(String customerId, String projectId, Integer pageNo, Integer pageSize); List<ScreenProjectDataDTO> getProjectList(String customerId, List<String> projectId, Integer pageNo, Integer pageSize);
/** /**
* 项目变更MQ * 项目变更MQ

4
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectDataServiceImpl.java

@ -48,12 +48,12 @@ import com.epmet.service.evaluationindex.screen.ScreenProjectDataService;
import com.epmet.service.stats.CustomerProjectCategoryDictService; import com.epmet.service.stats.CustomerProjectCategoryDictService;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.ListUtils; import org.apache.commons.collections4.ListUtils;
import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.math.BigDecimal; import java.math.BigDecimal;
@ -298,7 +298,7 @@ public class ScreenProjectDataServiceImpl extends BaseServiceImpl<ScreenProjectD
* @Date 2021/10/15 14:22 * @Date 2021/10/15 14:22
*/ */
@Override @Override
public List<ScreenProjectDataDTO> getProjectList(String customerId, String projectId, Integer pageNo, Integer pageSize) { public List<ScreenProjectDataDTO> getProjectList(String customerId, List<String> projectId, Integer pageNo, Integer pageSize) {
PageHelper.startPage(pageNo, pageSize); PageHelper.startPage(pageNo, pageSize);
return baseDao.selectProjectList(customerId, projectId); return baseDao.selectProjectList(customerId, projectId);
} }

4
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/DataReportingServiceImpl.java

@ -164,7 +164,7 @@ public class DataReportingServiceImpl implements DataReportingService {
} }
Map<String, CustomerProjectCategoryDictEntity> codeMap = customerProjectCategoryDictService.getByCategoryCodeMap(formDTO.getCustomerId());; Map<String, CustomerProjectCategoryDictEntity> codeMap = customerProjectCategoryDictService.getByCategoryCodeMap(formDTO.getCustomerId());;
//项目ID不为空时,因为只有一条,可以直接处理 //项目ID不为空时,因为只有一条,可以直接处理
if (StringUtils.isNotEmpty(formDTO.getProjectId())) { if (CollectionUtils.isNotEmpty(formDTO.getProjectId())) {
list = projectList.stream().map(project -> { list = projectList.stream().map(project -> {
EventInfoResultDTO dto = getEventInfoResultDTO(project, epmetCodeMap, codeMap); EventInfoResultDTO dto = getEventInfoResultDTO(project, epmetCodeMap, codeMap);
if (OrgTypeConstant.AGENCY.equals(project.getOrgType())) { if (OrgTypeConstant.AGENCY.equals(project.getOrgType())) {
@ -188,10 +188,12 @@ public class DataReportingServiceImpl implements DataReportingService {
EventInfoResultDTO dto = getEventInfoResultDTO(project, epmetCodeMap, codeMap); EventInfoResultDTO dto = getEventInfoResultDTO(project, epmetCodeMap, codeMap);
if (OrgTypeConstant.AGENCY.equals(project.getOrgType())) { if (OrgTypeConstant.AGENCY.equals(project.getOrgType())) {
ScreenCustomerAgencyEntity agency = agencyMap.get(project.getOrgId()); ScreenCustomerAgencyEntity agency = agencyMap.get(project.getOrgId());
dto.setOrgId(project.getOrgId());
dto.setOrgCode(agency.getCode()); dto.setOrgCode(agency.getCode());
dto.setOrgName(agency.getAgencyName()); dto.setOrgName(agency.getAgencyName());
} else { } else {
ScreenCustomerGridDTO grid = gridMap.get(project.getOrgId()); ScreenCustomerGridDTO grid = gridMap.get(project.getOrgId());
dto.setOrgId(project.getOrgId());
dto.setOrgCode(grid.getCode()); dto.setOrgCode(grid.getCode());
dto.setOrgName(grid.getGridName()); dto.setOrgName(grid.getGridName());
} }

12
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenProjectDataDao.xml

@ -253,8 +253,10 @@
<if test='null != customerId and "" != customerId'> <if test='null != customerId and "" != customerId'>
AND b.CUSTOMER_ID = #{customerId} AND b.CUSTOMER_ID = #{customerId}
</if> </if>
<if test='null != projectId and "" != projectId'> <if test='null != projectIds and projectIds.size()>0'>
AND b.PROJECT_ID = #{projectId} <foreach collection="projectIds" item="projectId" open="AND (" separator=" OR " close=" )">
b.PROJECT_ID = #{projectId}
</foreach>
</if> </if>
LEFT JOIN screen_customer_agency c ON b.HANDLER_ID = c.AGENCY_ID LEFT JOIN screen_customer_agency c ON b.HANDLER_ID = c.AGENCY_ID
WHERE a.DEL_FLAG = '0' WHERE a.DEL_FLAG = '0'
@ -263,8 +265,10 @@
<if test='null != customerId and "" != customerId'> <if test='null != customerId and "" != customerId'>
AND a.CUSTOMER_ID = #{customerId} AND a.CUSTOMER_ID = #{customerId}
</if> </if>
<if test='null != projectId and "" != projectId'> <if test='null != projectIds and projectIds.size()>0'>
AND a.PROJECT_ID = #{projectId} <foreach collection="projectIds" item="projectId" open="AND (" separator=" OR " close=" )">
a.PROJECT_ID = #{projectId}
</foreach>
</if> </if>
ORDER BY ORDER BY
a.CREATED_TIME ASC a.CREATED_TIME ASC

5
epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/BaseDisputeProcessServiceImpl.java

@ -69,6 +69,7 @@ public class BaseDisputeProcessServiceImpl extends BaseServiceImpl<BaseDisputePr
*/ */
@Override @Override
public void getEventinfo(EventInfoFormDTO formDTO) { public void getEventinfo(EventInfoFormDTO formDTO) {
formDTO.setPageSize(1000);
Result<List<EventInfoResultDTO>> result = dataStatisticalOpenFeignClient.getEventInfo(formDTO); Result<List<EventInfoResultDTO>> result = dataStatisticalOpenFeignClient.getEventInfo(formDTO);
if (!result.success()) { if (!result.success()) {
throw new RenException(result.getInternalMsg()); throw new RenException(result.getInternalMsg());
@ -119,9 +120,9 @@ public class BaseDisputeProcessServiceImpl extends BaseServiceImpl<BaseDisputePr
}).collect(Collectors.toList()); }).collect(Collectors.toList());
if(SystemMessageType.PROJECT_ADD.equals(formDTO.getType())){ if(SystemMessageType.PROJECT_ADD.equals(formDTO.getType())){
baseConflictsResolveService.insertBatch(resolveList); baseConflictsResolveService.saveOrUpdateBatch(resolveList, formDTO.getPageSize());
}else { }else {
baseConflictsResolveService.updateBatchById(resolveList); baseConflictsResolveService.saveOrUpdateBatch(resolveList, formDTO.getPageSize());
} }
} }
} }

Loading…
Cancel
Save