diff --git a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/project/result/ProjectOrgPeriodResultDTO.java b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/project/result/ProjectOrgPeriodResultDTO.java index b166748d3e..9bbd942efe 100644 --- a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/project/result/ProjectOrgPeriodResultDTO.java +++ b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/project/result/ProjectOrgPeriodResultDTO.java @@ -7,7 +7,6 @@ import java.util.Date; /** * @Description 从数据库中查询出的 项目 - 机关(网格、部门、机关)的响应时长 - * FIXME 注:查询的全都是已经结案的项目!!!!!!!!!!!!如果查询流转中的项目,需要修改逻辑(较为复杂) * @ClassName ProjectOrgPeriodResultDTO * @Auth wangc * @Date 2020-09-16 15:28 diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/DemoController.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/DemoController.java index 5fe3229667..13a418a773 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/DemoController.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/DemoController.java @@ -744,13 +744,4 @@ public class DemoController { return new Result(); } - - @Autowired - ProjectExtractService projectExtractService; - - @PostMapping("projectremould") - public Result> projectRemould(@RequestBody ExtractOriginFormDTO param){ - return new Result>().ok(projectExtractService.test(param)); - } - } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/project/ProjectProcessDao.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/project/ProjectProcessDao.java index b86c551b80..e923a26c70 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/project/ProjectProcessDao.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/project/ProjectProcessDao.java @@ -154,12 +154,5 @@ public interface ProjectProcessDao extends BaseDao { */ List selectLatestOperation(@Param("list") List list); - /** - * @Description 批量插入节点耗时数据(数据补齐) - * @param list - * @return int - * @author wangc - * @date 2020.10.26 09:59 - */ - int batchInsertProjectOrgRelation(@Param("list") List list); + } \ No newline at end of file diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/evaluationindex/screen/ScreenDifficultyDataEntity.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/evaluationindex/screen/ScreenDifficultyDataEntity.java index 35f4ca3ee4..f8f7595adf 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/evaluationindex/screen/ScreenDifficultyDataEntity.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/evaluationindex/screen/ScreenDifficultyDataEntity.java @@ -80,6 +80,11 @@ public class ScreenDifficultyDataEntity extends BaseEpmetEntity { */ private String eventContent; + /** + * 事件标题 + */ + private String eventTitle; + /** * 事件耗时 单位:分钟 */ diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/ProjectExtractService.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/ProjectExtractService.java index 9d2a27effb..9b7b5e35fe 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/ProjectExtractService.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/ProjectExtractService.java @@ -33,5 +33,12 @@ public interface ProjectExtractService { **/ void extractProjectPeriodData(ExtractOriginFormDTO param); - List test(ExtractOriginFormDTO param); + /** + * @Description 项目节点耗时数据补齐 + * @param + * @return java.util.List + * @author wangc + * @date 2020.10.26 10:18 + */ + void projectProcessCostTimeDataCompensation(); } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/ProjectExtractServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/ProjectExtractServiceImpl.java index 228f9b8fb5..5f4220162b 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/ProjectExtractServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/ProjectExtractServiceImpl.java @@ -14,6 +14,7 @@ import com.epmet.dto.issue.IssueDTO; import com.epmet.dto.party.PartyMemberDTO; import com.epmet.dto.project.FinishOrgDTO; import com.epmet.dto.project.ProcessInfoDTO; +import com.epmet.dto.project.ProjectOrgRelationDTO; import com.epmet.dto.project.result.ProjectOrgPeriodResultDTO; import com.epmet.dto.result.WorkDayResultDTO; import com.epmet.dto.topic.ResiTopicDTO; @@ -29,6 +30,7 @@ import com.epmet.service.evaluationindex.extract.todata.ProjectExtractService; import com.epmet.service.partymember.PartyMemberService; import com.epmet.service.project.ProjectProcessService; import com.epmet.service.project.ProjectService; +import com.epmet.service.stats.DimCustomerService; import com.epmet.service.topic.TopicService; import com.epmet.util.DimIdGenerator; import lombok.extern.slf4j.Slf4j; @@ -38,10 +40,8 @@ import org.springframework.stereotype.Service; import org.apache.commons.collections4.CollectionUtils; import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.LinkedList; -import java.util.List; +import java.util.*; +import java.util.stream.Collector; import java.util.stream.Collectors; /** @@ -71,6 +71,8 @@ public class ProjectExtractServiceImpl implements ProjectExtractService { private EpmetCommonServiceOpenFeignClient epmetCommonServiceOpenFeignClient; @Autowired private FactOriginProjectOrgPeriodDailyDao factOriginProjectOrgPeriodDailyDao; + @Autowired + private DimCustomerService dimCustomerService; private final static String ONE_DAY = "<1"; @@ -444,15 +446,25 @@ public class ProjectExtractServiceImpl implements ProjectExtractService { } } + /** + * @Description 项目节点耗时数据补齐 + * @param + * @return java.util.List + * @author wangc + * @date 2020.10.26 10:18 + */ @Override - public List test(ExtractOriginFormDTO param) { + public void projectProcessCostTimeDataCompensation() { + + List customers = dimCustomerService.getAllCustomerId(); + if(CollectionUtils.isEmpty(customers)) return ; + customers.forEach(local -> { + // projectProcessService.getProjectPeriod(true, local,null); + }); - List extractData = - projectProcessService.getProjectPeriod(true, param.getCustomerId(), param.getDateId()); System.out.println("-------------EndPointHere----------------"); - return extractData; } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/project/ProjectProcessService.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/project/ProjectProcessService.java index 6b80b31bd3..48bd2488ee 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/project/ProjectProcessService.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/project/ProjectProcessService.java @@ -93,16 +93,7 @@ public interface ProjectProcessService extends BaseService */ List getClosedProjectList(String customerId, String date); - /** - * @Description 查询各机关项目节点历时 - * @param isFirst 是否首次 - * @param customerId - * @param date - * @return - * @author wangc - * @date 2020.09.18 13:38 - **/ - List getProjectPeriod(Boolean isFirst,String customerId,String date); + /** * @Description 直接从项目业务改造获取项目节点耗时信息 diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/project/impl/ProjectProcessServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/project/impl/ProjectProcessServiceImpl.java index b3d053c158..23dc8128ba 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/project/impl/ProjectProcessServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/project/impl/ProjectProcessServiceImpl.java @@ -20,11 +20,13 @@ package com.epmet.service.project.impl; import com.epmet.commons.dynamic.datasource.annotation.DataSource; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.constant.DataSourceConstant; import com.epmet.dao.project.ProjectProcessDao; import com.epmet.dto.form.CommonStaffIdFormDTO; import com.epmet.dto.project.FinishOrgDTO; import com.epmet.dto.project.ProcessInfoDTO; +import com.epmet.dto.project.ProjectOrgRelationDTO; import com.epmet.dto.project.result.ProjectLatestOperationResultDTO; import com.epmet.dto.project.result.ProjectOrgPeriodResultDTO; import com.epmet.dto.project.result.ProjectOrgRelationWhenResponseResultDTO; @@ -86,45 +88,6 @@ public class ProjectProcessServiceImpl extends BaseServiceImpl getProjectPeriod(Boolean isFirst,String customerId, String date) { - List projectNodePeriodPerOrgList; - if(isFirst){ - projectNodePeriodPerOrgList = baseDao.selectProjectOrgPeriod(customerId,null,null); - }else{ - projectNodePeriodPerOrgList = baseDao.selectProjectOrgPeriod(customerId,null,date); - } - - if(!CollectionUtils.isEmpty(projectNodePeriodPerOrgList)){ - - Map> projectMap - = projectNodePeriodPerOrgList.stream().collect(Collectors.groupingBy(ProjectOrgPeriodResultDTO :: getProjectId)); - - List projects = - projectNodePeriodPerOrgList.stream().map(ProjectOrgPeriodResultDTO::getProjectId).distinct().collect(Collectors.toList()); - - if(!projects.isEmpty()){ - List responseList = baseDao.selectResponseTrace(projects); - Map> sorted = - responseList.stream().collect(Collectors.groupingBy(ProjectOrgRelationWhenResponseResultDTO::getProjectId)); - skipLevelGrouping(projectMap,sorted); - List result = new LinkedList<>(); - projectMap.values().forEach(list -> {list.forEach(obj -> {result.add(obj);});}); - return result; - } - } - - return new ArrayList<>(); - } /** * @Description 直接从项目业务改造获取项目节点耗时信息 @@ -166,75 +129,6 @@ public class ProjectProcessServiceImpl extends BaseServiceImpl transfer ; response response transfer ; return ; response close. - * @param dest - Map> 需要填充的数据 projectMap - * @param fillFactor - Map> 填充因子 - * @return - * @author wangc - * @date 2020.09.18 15:27 - **/ - private void skipLevelGrouping(Map> dest,Map> fillFactor){ - for(String projectId : fillFactor.keySet()){ - //拿到同一个项目下的的节点记录(只有存在响应节点的项目) - List projectTraceUnit = fillFactor.get(projectId); - if(!projectTraceUnit.isEmpty()){ - // K : staffId - // V : 项目下对于某个员工(可能是在不同部门、网格、机关下)的所有节点顺时针操作,因为对于但项目单人来说,只能串行不能并行 - Map> staffResponseTrace = - projectTraceUnit.stream().collect(Collectors.groupingBy(ProjectOrgRelationWhenResponseResultDTO::getStaffId)); - if(!CollectionUtils.isEmpty(staffResponseTrace)){ - List incompleteBody = dest.get(projectId); - if(!CollectionUtils.isEmpty(incompleteBody)) { - Map> incompleteBodyGroupByStaffMap = - incompleteBody.stream().collect(Collectors.groupingBy(ProjectOrgPeriodResultDTO::getStaffId)); - if(!CollectionUtils.isEmpty(incompleteBodyGroupByStaffMap)) { - staffResponseTrace.keySet().forEach(staffId -> { - List staffResponseTraceUnit - = staffResponseTrace.get(staffId); - List incompleteBodyUnit = incompleteBodyGroupByStaffMap.get(staffId); - if (!CollectionUtils.isEmpty(incompleteBodyUnit) && !CollectionUtils.isEmpty(staffResponseTraceUnit)) { - - //int lastEndCount = NumConstant.ONE_NEG; - a: - for (int index = NumConstant.ZERO; index < staffResponseTraceUnit.size(); index++) { - - if (StringUtils.equals("response", staffResponseTraceUnit.get(index).getOperation())) { - replaceFirstResponseDate(incompleteBodyUnit,staffResponseTraceUnit.get(index)); - int cursor = index; - if (cursor == staffResponseTraceUnit.size() - NumConstant.ZERO) break; - while (StringUtils.equals("response", staffResponseTraceUnit.get(cursor++).getOperation())) { - if (cursor == staffResponseTraceUnit.size() - NumConstant.ZERO) break a; - } - if (cursor == staffResponseTraceUnit.size() - NumConstant.ZERO) break; - index = cursor; - } else { - replaceFirstResponseDate(incompleteBodyUnit,staffResponseTraceUnit.get(index)); - } - } - } - }); - } - } - } - - } - } - } - - private void replaceFirstResponseDate(List dest, - ProjectOrgRelationWhenResponseResultDTO staffResponseTraceUnit){ - // 传递过来的dest是已经按照projectId分好组之后再按照staff分组的集合 - // dest key->staff - for(int cursor = 0; cursor < dest.size(); cursor++){ - if(dest.get(cursor).getPeriodTillReplyFirstly() == null) continue; - dest.get(cursor).setPeriodTillReplyFirstly(staffResponseTraceUnit.getCreatedTime()); - } - - } - - } \ No newline at end of file diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectMainDailyDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectMainDailyDao.xml index ec08e185d4..4e70db274a 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectMainDailyDao.xml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectMainDailyDao.xml @@ -324,6 +324,7 @@ project.GRID_ID AS orgId, project.AGENCY_ID AS parentId, project.TOPIC_ID AS eventImgUrl, + project.TITLE AS eventTitle, gridInfo.allPathName AS eventSource, gridInfo.gridName AS orgName, project.PROJECT_STATUS AS eventStatusCode, diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenDifficultyDataDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenDifficultyDataDao.xml index e27bfde00f..ed0681e753 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenDifficultyDataDao.xml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenDifficultyDataDao.xml @@ -135,6 +135,7 @@ EVENT_IMG_URL, EVENT_SOURCE, EVENT_CONTENT, + EVENT_TITLE, EVENT_COST_TIME, EVENT_RE_ORG, EVENT_HANDLED_COUNT, @@ -164,6 +165,7 @@ #{item.eventImgUrl}, #{item.eventSource}, #{item.eventContent}, + #{item.eventTitle}, #{item.eventCostTime}, #{item.eventReOrg}, #{item.eventHandledCount}, diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/project/ProjectProcessDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/project/ProjectProcessDao.xml index 52e37bca95..7960594364 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/project/ProjectProcessDao.xml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/project/ProjectProcessDao.xml @@ -306,40 +306,4 @@ - - - - - INSERT INTO project_org_relation( - ID, - PROJECT_STAFF_ID, - INFORMED_DATE, - CREATED_TIME, - UPDATED_TIME, - SOURCE_OPERATION, - OPERATION, - TOTAL_PERIOD, - FIRST_DEALT_DATE, - FIRST_REPLY_PERIOD, - CREATED_BY, - UPDATED_BY - ) values - - ( - (SELECT REPLACE(UUID(),'-','') as id), - #{item.projectStaffId}, - #{item.informedDate}, - NOW(), - NOW(), - #{item.sourceOperation}, - #{item.OPERATION}, - #{item.totalPeriod}, - #{item.firstDealtDate}, - #{item.firstReplyPeriod}, - 'COMPENSATION_ROBOT', - 'COMPENSATION_ROBOT' - ) - - - \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/ProjectOrgPeriodResultDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/ProjectOrgPeriodResultDTO.java new file mode 100644 index 0000000000..1548cdd9ef --- /dev/null +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/ProjectOrgPeriodResultDTO.java @@ -0,0 +1,96 @@ +package com.epmet.dto.result; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * @Description 从数据库中查询出的 项目 - 机关(网格、部门、机关)的响应时长 + * @ClassName ProjectOrgPeriodResultDTO + * @Auth wangc + * @Date 2020-09-16 15:28 + */ +@Data +public class ProjectOrgPeriodResultDTO implements Serializable { + private static final long serialVersionUID = 6216112710806237600L; + + /** + * 节点Id + * */ + private String processId; + + /** + * 项目Id + * */ + private String projectId; + + + /** + * 对这个节点的处理,如果未处理则为null + * created transfer close return response(查不出response,因为response类型的节点不会与process_staff产生关联,需要另取) + * */ + private String operation; + + /** + * 是这个节点的操作,相当于上一个人的操作,而不是对于这个节点的处理 + * created transfer close return response + * */ + private String lastAction; + + /** + * 节点所属的机关,即上个节点推到这个节点的负责部门 + * */ + private String departmentName; + + /** + * 当前节点所属的Agency,如果负责的是部门或者网格则是其所属的机关 + * */ + private String orgId; + + /** + * 如果是部门处理,则有值,否则null + * */ + private String departmentId; + + /** + * 如果是网格处理,则有值,否则null + * */ + private String gridId; + + /** + * 当前所属的机关的所有Pid集合以及当前的机关Id,所以此项不会未null,至少也是它的所属Agency + * */ + private String orgIdPath; + + /** + * 从节点流入到节点流出,且当前负责单位确实解决(包括退回)了的情况下,所耗费的时间(以分钟为单位) + * 如果未当前负责单位一直停留在unresolved状态,即使做出response、或者项目被其他单位结案,该项依旧是0,不参与办结的计时 + * 如果负责单位只是做出回应,但未处理(即没有让节点流走),需要查出其相应的第一次响应时间,另取 + * */ + private Integer totalPeriod; + + /** + * 节点流入时间 + * */ + private Date informedDate; + + /** + * 节点流出时间,如果未解决则未null + * */ + private Date handledDate; + + /** + * 第一次响应时间 + * */ + private Date periodTillReplyFirstly; + + private String customerId; + + private String staffId; + + private String isResolved; + + private String projectStaffId; + +} diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/ProjectOrgRelationWhenResponseResultDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/ProjectOrgRelationWhenResponseResultDTO.java new file mode 100644 index 0000000000..e29f37dde9 --- /dev/null +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/ProjectOrgRelationWhenResponseResultDTO.java @@ -0,0 +1,49 @@ +package com.epmet.dto.result; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * @Description 查询机关在项目节点上响应的结果 + * 查询的是存在“响应”的所有相关工作人员节点,如果同一个人对同一个项目已经做过一次处理(并未做出响应)而在第二次流转到自己时 + * 做出了响应,也会连带查询出其第一次未响应过的数据 + * @ClassName ProjectOrgRelationWhenResponseResultDTO + * @Auth wangc + * @Date 2020-09-16 17:27 + */ +@Data +public class ProjectOrgRelationWhenResponseResultDTO implements Serializable { + private static final long serialVersionUID = 1962332392048752037L; + + /** + * 项目Id + * */ + private String projectId; + + /** + * 节点Id + * */ + private String processId; + + /** + * 节点动作的发起人 + * */ + private String staffId; + + /** + * 负责人所属的单位名称:xx机关-xx部门 、 xx机关-xx网格 、 xx机关 + * */ + private String departmentName; + + /** + * 动作分类 + * */ + private String operation; + + /** + * 节点创建时间,动作发起时间 + * */ + private Date createdTime; +} diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectController.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectController.java index 0d500784db..184a51f644 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectController.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectController.java @@ -157,4 +157,9 @@ public class ProjectController { return new Result(); } + @PostMapping("compensation") + public Result compensation(){ + projectService.projectProcessCostTimeDataCompensation(); + return new Result(); + } } \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectDao.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectDao.java index 4d20d6327c..0584789909 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectDao.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectDao.java @@ -121,4 +121,13 @@ public interface ProjectDao extends BaseDao { * @Description 根据客户Id、机关Id、议题Id查询项目数据是否存在 **/ List selectProjectList(ProjectDTO projectDTO); + + /** + * @Description 得到所有的customerId + * @param + * @return java.util.List + * @author wangc + * @date 2020.10.26 11:20 + */ + List selectAllCustomerIds(); } \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectOrgRelationDao.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectOrgRelationDao.java index 146d58cc04..b628f0cbbe 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectOrgRelationDao.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectOrgRelationDao.java @@ -18,6 +18,7 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dto.ProjectOrgRelationDTO; import com.epmet.entity.ProjectOrgRelationEntity; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -69,5 +70,22 @@ public interface ProjectOrgRelationDao extends BaseDao * @date 2020.10.22 13:37 */ List selectAllUnhandledProcess(@Param("projectId")String projectId); + + /** + * @Description 批量新增(数据补偿) + * @param list + * @return int + * @author wangc + * @date 2020.10.26 13:55 + */ + int batchInsertProjectOrgRelation(@Param("list") List list); + /** + * @Description 批量删除 + * @param list + * @return int + * @author wangc + * @date 2020.10.26 14:07 + */ + int deleteBatch(@Param("list") List list); } \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectProcessDao.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectProcessDao.java index 333d1aefeb..dc3260b2c8 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectProcessDao.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectProcessDao.java @@ -21,6 +21,7 @@ import com.epmet.commons.mybatis.dao.BaseDao; import com.epmet.dto.form.ProcessProjectIdFormDTO; import com.epmet.dto.form.ProjectIdFormDTO; import com.epmet.dto.result.ProcesslistResultDTO; +import com.epmet.dto.result.ProjectOrgRelationWhenResponseResultDTO; import com.epmet.dto.result.ProjectProcessListResultDTO; import com.epmet.entity.ProjectProcessEntity; import org.apache.ibatis.annotations.Mapper; @@ -67,4 +68,13 @@ public interface ProjectProcessDao extends BaseDao { * @author zxc */ Integer checkProjectClose(ProjectIdFormDTO projectIdFormDTO); + + /** + * @Description 查询项目-机关各个节点的响应列表 + * @param projects + * @return + * @author wangc + * @date 2020.09.17 17:56 + **/ + List selectResponseTrace(@Param("projects") List projects); } \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectStaffDao.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectStaffDao.java index 244ae3e56d..b3728bf23a 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectStaffDao.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectStaffDao.java @@ -108,4 +108,16 @@ public interface ProjectStaffDao extends BaseDao { * @date 2020.10.21 15:07 */ ProjectStaffDTO selectLatestByProjectIdAndStaffId(@Param("projectId") String projectId,@Param("staffId") String staffId); + + /** + * @Description 查询项目-机关各个节点历时详情 + * @param customerId + * @return + * @author wangc + * @date 2020.09.17 09:43 + **/ + List selectProjectOrgPeriod(@Param("customerId") String customerId); + + + } \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectProcessService.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectProcessService.java index 98bb36ec5d..794960ea13 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectProcessService.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectProcessService.java @@ -19,12 +19,10 @@ package com.epmet.service; import com.epmet.commons.mybatis.service.BaseService; import com.epmet.commons.tools.page.PageData; -import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.dto.ProjectProcessDTO; import com.epmet.dto.form.*; import com.epmet.dto.result.*; import com.epmet.entity.ProjectProcessEntity; -import org.springframework.web.bind.annotation.RequestBody; import java.util.List; import java.util.Map; @@ -136,4 +134,13 @@ public interface ProjectProcessService extends BaseService */ ProjectDetailCheckResultDTO checkProjectClose(ProjectIdFormDTO projectIdFormDTO); + /** + * @Description 查询项目-机关各个节点的响应列表 + * @param projects + * @return + * @author wangc + * @date 2020.09.17 17:56 + **/ + List selectResponseTrace(List projects); + } \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectService.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectService.java index ab6e688a1a..6e361c77b3 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectService.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectService.java @@ -197,4 +197,14 @@ public interface ProjectService extends BaseService { * @return void */ void sendMessage(String customerId); + + + /** + * @Description 项目节点耗时数据补齐 + * @param + * @return void + * @author wangc + * @date 2020.10.26 10:54 + */ + void projectProcessCostTimeDataCompensation(); } \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectStaffService.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectStaffService.java index 386a92e61f..fa4f17266d 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectStaffService.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectStaffService.java @@ -26,6 +26,7 @@ import com.epmet.dto.result.DepartmentStaffListResultDTO; import com.epmet.dto.result.StaffUnHandledDTO; import com.epmet.entity.ProjectStaffEntity; + import java.util.List; import java.util.Map; @@ -169,4 +170,14 @@ public interface ProjectStaffService extends BaseService { * @date 2020.10.21 15:07 */ ProjectStaffDTO getLatestIdByProjectIdAndStaffId(String projectId,String staffId); + + /** + * @Description 查询项目-机关各个节点历时详情 + * @param customerId + * @return + * @author wangc + * @date 2020.09.17 09:43 + **/ + List selectProjectOrgPeriod(String customerId); + } \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectProcessServiceImpl.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectProcessServiceImpl.java index 4b965badfa..92f5992a48 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectProcessServiceImpl.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectProcessServiceImpl.java @@ -399,4 +399,16 @@ public class ProjectProcessServiceImpl extends BaseServiceImpl selectResponseTrace(List projects) { + return baseDao.selectResponseTrace(projects); + } + } \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java index 5ae016bb5e..569502ff7d 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java @@ -45,6 +45,7 @@ import com.epmet.redis.ProjectRedis; import com.epmet.service.*; import org.apache.commons.collections4.CollectionUtils; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.ListUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -54,6 +55,7 @@ import org.springframework.transaction.annotation.Transactional; import java.text.SimpleDateFormat; import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; /** @@ -987,6 +989,84 @@ public class ProjectServiceImpl extends BaseServiceImpl customers = baseDao.selectAllCustomerIds(); + if(CollectionUtils.isEmpty(customers))return; + List totalContainer = new LinkedList<>(); + customers.forEach(customerId -> { + List projectNodePeriodPerOrgList = projectStaffService.selectProjectOrgPeriod(customerId); + if(!org.springframework.util.CollectionUtils.isEmpty(projectNodePeriodPerOrgList)){ + + Map> projectMap + = projectNodePeriodPerOrgList.stream().collect(Collectors.groupingBy(ProjectOrgPeriodResultDTO :: getProjectId)); + + List projects = + projectNodePeriodPerOrgList.stream().map(ProjectOrgPeriodResultDTO::getProjectId).distinct().collect(Collectors.toList()); + + if(!projects.isEmpty()){ + List responseList = projectProcessService.selectResponseTrace(projects); + Map> sorted = + responseList.stream().collect(Collectors.groupingBy(ProjectOrgRelationWhenResponseResultDTO::getProjectId)); + skipLevelGrouping(projectMap,sorted); + List calculatedData = new LinkedList<>(); + projectMap.values().forEach(list -> {list.forEach(obj -> {calculatedData.add(obj);});}); + + + if(!org.apache.commons.collections4.CollectionUtils.isEmpty(calculatedData)){ + List formatted = calculatedData.stream().map(period -> { + ProjectOrgRelationDTO relation = ConvertUtils.sourceToTarget(period,ProjectOrgRelationDTO.class); + relation.setFirstDealtDate(period.getPeriodTillReplyFirstly()); + relation.setSourceOperation(period.getLastAction()); + return relation; + }).collect(Collectors.toList()); + totalContainer.addAll(formatted); + } + + + } + + } + }); + if(!CollectionUtils.isEmpty(totalContainer)){ + List identities = totalContainer.stream().map(ProjectOrgRelationDTO::getProjectStaffId).distinct().collect(Collectors.toList()); + ListUtils.partition(identities,NumConstant.ONE_THOUSAND).forEach(partition -> {relationDao.deleteBatch(partition);}); + + List timeInterval = totalContainer.stream().map(relation -> { + TimestampIntervalFormDTO interval = new TimestampIntervalFormDTO(); + interval.setId(relation.getProjectStaffId()); + interval.setLeft(relation.getInformedDate()); + interval.setRight(relation.getHandledDate()); + return interval; + }).collect(Collectors.toList()); + + Map batchDelta_T = batchCalculateDelta_T(ProjectConstant.IMPRECISE_CALCULATION, + ProjectConstant.CALCULATION_TYPE_DEFAULT,timeInterval); + + Map dataMap = + totalContainer.stream().collect(Collectors.toMap(ProjectOrgRelationDTO::getProjectStaffId, Function.identity(), (key1, key2) -> key2)); + + if(!org.springframework.util.CollectionUtils.isEmpty(batchDelta_T) && + !org.springframework.util.CollectionUtils.isEmpty(dataMap)){ + dataMap.forEach((k,v) -> { + if(null != v){ + v.setTotalPeriod(batchDelta_T.get(k)); + } + }); + List> partition = ListUtils.partition(totalContainer, NumConstant.ONE_HUNDRED); + partition.forEach(subList -> {relationDao.batchInsertProjectOrgRelation(subList);}); + } + } + } + private void setMessage(String customerId, List overdueList, List delayList, List list) { list = list.stream().distinct().collect(Collectors.toList()); Map> overdueMap = overdueList.stream().collect(Collectors.groupingBy(StaffUnHandledDTO::getStaffId)); @@ -1061,4 +1141,71 @@ public class ProjectServiceImpl extends BaseServiceImpl transfer ; response response transfer ; return ; response close. + * @param dest - Map> 需要填充的数据 projectMap + * @param fillFactor - Map> 填充因子 + * @return + * @author wangc + * @date 2020.09.18 15:27 + **/ + private void skipLevelGrouping(Map> dest, Map> fillFactor){ + for(String projectId : fillFactor.keySet()){ + //拿到同一个项目下的的节点记录(只有存在响应节点的项目) + List projectTraceUnit = fillFactor.get(projectId); + if(!projectTraceUnit.isEmpty()){ + // K : staffId + // V : 项目下对于某个员工(可能是在不同部门、网格、机关下)的所有节点顺时针操作,因为对于但项目单人来说,只能串行不能并行 + Map> staffResponseTrace = + projectTraceUnit.stream().collect(Collectors.groupingBy(ProjectOrgRelationWhenResponseResultDTO::getStaffId)); + if(!org.springframework.util.CollectionUtils.isEmpty(staffResponseTrace)){ + List incompleteBody = dest.get(projectId); + if(!org.springframework.util.CollectionUtils.isEmpty(incompleteBody)) { + Map> incompleteBodyGroupByStaffMap = + incompleteBody.stream().collect(Collectors.groupingBy(ProjectOrgPeriodResultDTO::getStaffId)); + if(!org.springframework.util.CollectionUtils.isEmpty(incompleteBodyGroupByStaffMap)) { + staffResponseTrace.keySet().forEach(staffId -> { + List staffResponseTraceUnit + = staffResponseTrace.get(staffId); + List incompleteBodyUnit = incompleteBodyGroupByStaffMap.get(staffId); + if (!org.springframework.util.CollectionUtils.isEmpty(incompleteBodyUnit) && !org.springframework.util.CollectionUtils.isEmpty(staffResponseTraceUnit)) { + + //int lastEndCount = NumConstant.ONE_NEG; + a: + for (int index = NumConstant.ZERO; index < staffResponseTraceUnit.size(); index++) { + + if (StringUtils.equals("response", staffResponseTraceUnit.get(index).getOperation())) { + replaceFirstResponseDate(incompleteBodyUnit,staffResponseTraceUnit.get(index)); + int cursor = index; + if (cursor == staffResponseTraceUnit.size() - NumConstant.ZERO) break; + while (StringUtils.equals("response", staffResponseTraceUnit.get(cursor++).getOperation())) { + if (cursor == staffResponseTraceUnit.size() - NumConstant.ZERO) break a; + } + if (cursor == staffResponseTraceUnit.size() - NumConstant.ZERO) break; + index = cursor; + } else { + replaceFirstResponseDate(incompleteBodyUnit,staffResponseTraceUnit.get(index)); + } + } + } + }); + } + } + } + + } + } + } + + private void replaceFirstResponseDate(List dest, + ProjectOrgRelationWhenResponseResultDTO staffResponseTraceUnit){ + // 传递过来的dest是已经按照projectId分好组之后再按照staff分组的集合 + // dest key->staff + for(int cursor = 0; cursor < dest.size(); cursor++){ + if(dest.get(cursor).getPeriodTillReplyFirstly() == null) continue; + dest.get(cursor).setPeriodTillReplyFirstly(staffResponseTraceUnit.getCreatedTime()); + } + + } } \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectStaffServiceImpl.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectStaffServiceImpl.java index 7250b38f63..9ef8a2dc14 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectStaffServiceImpl.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectStaffServiceImpl.java @@ -30,6 +30,7 @@ import com.epmet.dao.ProjectStaffDao; import com.epmet.dto.ProjectStaffDTO; import com.epmet.dto.form.DepartmentStaffListFormDTO; import com.epmet.dto.form.TransferOptionalStaffListFormDTO; + import com.epmet.dto.result.DepartmentResultDTO; import com.epmet.dto.result.DepartmentStaffListResultDTO; import com.epmet.dto.result.StaffUnHandledDTO; @@ -194,4 +195,10 @@ public class ProjectStaffServiceImpl extends BaseServiceImpl selectProjectOrgPeriod(String customerId) { + + return baseDao.selectProjectOrgPeriod(customerId); + } + } \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/resources/db/migration/V0.0.2__period.sql b/epmet-module/gov-project/gov-project-server/src/main/resources/db/migration/V0.0.2__period.sql new file mode 100644 index 0000000000..f992e621dd --- /dev/null +++ b/epmet-module/gov-project/gov-project-server/src/main/resources/db/migration/V0.0.2__period.sql @@ -0,0 +1,100 @@ +CREATE TABLE `project_org_relation` ( + `ID` varchar(64) COLLATE utf8_unicode_ci NOT NULL, + `PROJECT_STAFF_ID` varchar(64) COLLATE utf8_unicode_ci NOT NULL COMMENT '关联PROJECT_STAFF,由此ID可以关联出PROJECT_ID、CUSTOMER_ID、PROCESS_ID', + `INFORMED_DATE` datetime DEFAULT NULL COMMENT '流转到的日期 同CREATED_TIME', + `HANDLED_DATE` datetime DEFAULT NULL COMMENT '流转走或结案的日期', + `TOTAL_PERIOD` int(12) DEFAULT NULL COMMENT '节点耗时,从流转到自己到流转走共耗时,单位:分钟,如果项目还没有结案且该项目在这个组织下一直滞留,这一项为空\r\n8*60的倍数', + `FIRST_DEALT_DATE` datetime DEFAULT NULL COMMENT '第一次响应时间', + `FIRST_REPLY_PERIOD` int(12) DEFAULT NULL COMMENT '首次响应时长,单位:分钟\r\n8*60的倍数', + `SOURCE_OPERATION` varchar(32) COLLATE utf8_unicode_ci NOT NULL COMMENT '来源动作,return(回退)、transfer(流转)、closed(结案)、response(响应)、created(立项时第一个流转到的)', + `OPERATION` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '处理动作,return(回退)、transfer(流转)、closed(结案)、response(响应)', + `DEL_FLAG` char(1) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0' COMMENT '删除标识', + `REVISION` int(4) NOT NULL DEFAULT '0' COMMENT '乐观锁', + `CREATED_TIME` datetime NOT NULL, + `CREATED_BY` varchar(64) COLLATE utf8_unicode_ci NOT NULL, + `UPDATED_TIME` datetime NOT NULL, + `UPDATED_BY` varchar(64) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`ID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='项目机关历时关系表'; + +ALTER TABLE `epmet_gov_project`.`project_process` +ADD COLUMN `AGENCY_ID` varchar(64) NULL COMMENT '组织ID' AFTER 'DEPARTMENT_NAME', +ADD COLUMN `DEPARTMENT_ID` varchar(64) NULL COMMENT '部门ID' AFTER 'AGENCY_ID', +ADD COLUMN `GRID_ID` varchar(64) NULL COMMENT '网格ID' AFTER 'DEPARTMENT_ID', +ADD COLUMN `ORG_ID_PATH` varchar(500) NULL COMMENT '所属机关(11:22:33)' AFTER 'GRID_ID'; +ADD COLUMN `CUSTOMER_ID` varchar(64) NOT NULL COMMENT '客户Id'; + + +UPDATE project_process a +INNER JOIN ( + SELECT DISTINCT + pp.ID, + p.AGENCY_ID, + p.ORG_ID_PATH, + prp.GRID_ID + FROM + project_process pp + INNER JOIN project p ON pp.PROJECT_ID = p.ID + LEFT JOIN project_related_personnel prp ON pp.PROJECT_ID = prp.PROJECT_ID + WHERE + pp.OPERATION = 'created' + ) b ON a.ID = b.ID + SET a.AGENCY_ID = b.AGENCY_ID, + a.GRID_ID = b.GRID_ID, + a.ORG_ID_PATH = b.ORG_ID_PATH; + + + +UPDATE project_process a +INNER JOIN ( + SELECT DISTINCT + pp.ID, + ps.ORG_ID, + ps.GRID_ID, + ps.DEPARTMENT_ID, + ps.ORG_ID_PATH + FROM + project_process pp + INNER JOIN project_staff ps ON pp.PROJECT_ID = ps.PROJECT_ID + AND pp.DEPARTMENT_NAME = ps.DEPARTMENT_NAME + AND ps.IS_HANDLE = 'handle' + AND pp.STAFF_ID = ps.STAFF_ID + AND ps.DEL_FLAG = '0' + WHERE + pp.OPERATION != 'created' + AND pp.OPERATION != 'response' + ) b ON a.ID = b.ID + SET a.AGENCY_ID = b.ORG_ID, + a.GRID_ID = b.GRID_ID, + a.DEPARTMENT_ID = b.DEPARTMENT_ID, + a.ORG_ID_PATH = b.ORG_ID_PATH; + + +UPDATE project_process a +INNER JOIN ( + SELECT DISTINCT + pp.ID, + ps.ORG_ID, + ps.GRID_ID, + ps.DEPARTMENT_ID, + ps.ORG_ID_PATH + FROM + project_process pp + LEFT JOIN project_staff ps ON pp.PROJECT_ID = ps.PROJECT_ID + AND pp.STAFF_ID = ps.STAFF_ID + AND pp.DEPARTMENT_NAME = ps.DEPARTMENT_NAME + WHERE + pp.OPERATION = 'response' + ) b ON a.ID = b.ID + SET a.AGENCY_ID = b.ORG_ID, + a.GRID_ID = b.GRID_ID, + a.DEPARTMENT_ID = b.DEPARTMENT_ID, + a.ORG_ID_PATH = b.ORG_ID_PATH; + + UPDATE PROJECT_PROCESS process +INNER JOIN PROJECT project ON process.PROJECT_ID = project.ID +AND project.DEL_FLAG = '0' +AND process.DEL_FLAG = '0' +SET process.CUSTOMER_ID = project.CUSTOMER_ID; + + diff --git a/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectOrgRelationDao.xml b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectOrgRelationDao.xml index c033280163..6cbb71d1ae 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectOrgRelationDao.xml +++ b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectOrgRelationDao.xml @@ -103,4 +103,49 @@ HANDLED_DATE IS NULL + + + + INSERT INTO project_org_relation( + ID, + PROJECT_STAFF_ID, + INFORMED_DATE, + CREATED_TIME, + UPDATED_TIME, + SOURCE_OPERATION, + OPERATION, + TOTAL_PERIOD, + FIRST_DEALT_DATE, + FIRST_REPLY_PERIOD, + CREATED_BY, + UPDATED_BY + ) values + + ( + (SELECT REPLACE(UUID(),'-','') as id), + #{item.projectStaffId}, + #{item.informedDate}, + NOW(), + NOW(), + #{item.sourceOperation}, + #{item.OPERATION}, + #{item.totalPeriod}, + #{item.firstDealtDate}, + #{item.firstReplyPeriod}, + 'COMPENSATION_ROBOT', + 'COMPENSATION_ROBOT' + ) + + + + + + DELETE + project_org_relation + WHERE + + PROJECT_STAFF_ID = #{projectStaffId} + + + \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectProcessDao.xml b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectProcessDao.xml index 788b589863..ceb579138d 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectProcessDao.xml +++ b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectProcessDao.xml @@ -60,4 +60,28 @@ AND project_id = #{projectId} + + \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectStaffDao.xml b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectStaffDao.xml index 126315eb4b..ae9ebb16bb 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectStaffDao.xml +++ b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectStaffDao.xml @@ -140,4 +140,39 @@ LIMIT 1 + + + + \ No newline at end of file