@@ -132,6 +132,10 @@ public class MhApiClient { | |||||
} | } | ||||
public boolean sendZwddWorkNotice(MhZwddWorkNoticeDTO notice) { | public boolean sendZwddWorkNotice(MhZwddWorkNoticeDTO notice) { | ||||
log.info("发送浙政钉工作通知:{}", notice); | |||||
if (environmentUtil.isDevEnv()) { | |||||
return Boolean.TRUE; | |||||
} | |||||
notice.setClientId(zwddWorkNoticeClientId); | notice.setClientId(zwddWorkNoticeClientId); | ||||
notice.setClientSecret(zwddWorkNoticeClientSecret); | notice.setClientSecret(zwddWorkNoticeClientSecret); | ||||
String retBody = HttpUtil.post(mhApiHost + ZWDD_MSG_URL, JSONUtil.toJsonStr(notice)); | String retBody = HttpUtil.post(mhApiHost + ZWDD_MSG_URL, JSONUtil.toJsonStr(notice)); | ||||
@@ -68,11 +68,6 @@ public class MHTodoClient { | |||||
@Transactional(rollbackFor = Exception.class) | @Transactional(rollbackFor = Exception.class) | ||||
public void addTodo(Object paramObj, UserFullInfoDTO receiver, MHTodoTypeEnum type, String bizId, String content) { | public void addTodo(Object paramObj, UserFullInfoDTO receiver, MHTodoTypeEnum type, String bizId, String content) { | ||||
log.info("发送信产待办:【{}({})】类型:{} 内容:{}", receiver.getRealName(), receiver.getMhUserId(), type, content); | |||||
if (environmentUtil.isDevEnv()) { | |||||
return; | |||||
} | |||||
String url = mhApiHost + TODO_ADD; | |||||
String paramObjs = JSON.toJSONString(paramObj); | String paramObjs = JSON.toJSONString(paramObj); | ||||
MhTodoRequestDTO todoReq = MhTodoRequestDTO.builder() | MhTodoRequestDTO todoReq = MhTodoRequestDTO.builder() | ||||
.wkContent(content) | .wkContent(content) | ||||
@@ -80,7 +75,11 @@ public class MHTodoClient { | |||||
.params(paramObjs) | .params(paramObjs) | ||||
.wkUser(receiver.getMhUserId()) | .wkUser(receiver.getMhUserId()) | ||||
.build(); | .build(); | ||||
log.info("添加新创待办:{}", todoReq); | |||||
log.info("发送信产待办:{}", todoReq); | |||||
if (environmentUtil.isDevEnv()) { | |||||
return; | |||||
} | |||||
String url = mhApiHost + TODO_ADD; | |||||
String responseResult = HttpUtil.post(url, JSON.toJSONString(todoReq)); | String responseResult = HttpUtil.post(url, JSON.toJSONString(todoReq)); | ||||
MhTodoRetDTO retData = JSON.parseObject(responseResult, TYPE_REF); | MhTodoRetDTO retData = JSON.parseObject(responseResult, TYPE_REF); | ||||
if (retData.getCode() != 200 || StrUtil.isBlank(retData.getData())) { | if (retData.getCode() != 200 || StrUtil.isBlank(retData.getData())) { | ||||
@@ -104,9 +103,9 @@ public class MHTodoClient { | |||||
* | * | ||||
* @param wkhandleId 待办ID | * @param wkhandleId 待办ID | ||||
*/ | */ | ||||
private void complete(String wkhandleId) { | |||||
public boolean complete(String wkhandleId) { | |||||
if (environmentUtil.isDevEnv()) { | if (environmentUtil.isDevEnv()) { | ||||
return; | |||||
return Boolean.TRUE; | |||||
} | } | ||||
String url = mhApiHost + TODO_COMPLETE; | String url = mhApiHost + TODO_COMPLETE; | ||||
// 发送PUT请求 | // 发送PUT请求 | ||||
@@ -117,9 +116,10 @@ public class MHTodoClient { | |||||
boolean state = Boolean.parseBoolean(retData.getData()); | boolean state = Boolean.parseBoolean(retData.getData()); | ||||
if (!state) { | if (!state) { | ||||
log.error("待办完成失败:{} {}", wkhandleId, retData); | log.error("待办完成失败:{} {}", wkhandleId, retData); | ||||
return Boolean.FALSE; | |||||
} | } | ||||
} | } | ||||
return Boolean.TRUE; | |||||
} | } | ||||
@@ -16,19 +16,71 @@ import lombok.Getter; | |||||
@SuppressWarnings("all") | @SuppressWarnings("all") | ||||
public enum MHTodoTypeEnum { | public enum MHTodoTypeEnum { | ||||
SELF_TEST_AUDIT("系统自测审批", "instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}"), | |||||
ADAPTION_AUDIT("开工文件审批", "instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}"), | |||||
TEST_VALID_AUDIT("监理核实验证审批", "instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}"), | |||||
COMPLIANCE_REVIEW_AUDIT("合规性审查审批", "instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}"), | |||||
PROJECT_REVIEW_AUDIT("项目评审审批", "instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}"), | |||||
PROJECT_STOPPED_AUDIT("项目终止审批", "instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}"), | |||||
PROJECT_CHANGE_AUDIT("项目变更审批", "instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}"), | |||||
FINAL_INSPECT_AUDIT("终验审批", "instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}"), | |||||
XCFHX_INSPECT_AUDIT("信创符合性审查审批", "instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}&xinchuangId={xinchuangId}"), | |||||
DECLARED_RECORD_APPLY("立项备案申请", "mhProjectId=${mhProjectId}&status=${status}&projectCode=${projectCode}&projectId=${projectId}&userId=${userId}&userName=${userName}&path=${path}"), | |||||
DECLARED_RECORD_AUDIT("立项备案审批", "instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}"); | |||||
SELF_TEST_APPLY("系统自测", null, | |||||
"您单位的【%s】开工文件备案已通过,可在过程管理-适配改造中进行提交系统自测信息的操作。", | |||||
"【%s】系统自测信息需要您处理,请及时处理", null, null), | |||||
TEST_VALID_APPLY("监理核实验证", null, "您单位的【%s】系统自测备案已通过,可在过程管理-适配改造中进行填写监理核实验证信息的操作。", | |||||
"【%s】监理核实验证需要您处理,请及时处理", null, null), | |||||
FINAL_INSPECT_APPLY("终验申请", null, "您单位的【%s】已完成初验备案,可在过程管理-终验申请中进行终验申请的操作。", | |||||
"【%s】终验申请需要您处理,请及时处理", null, null), | |||||
ADAPTION_APPLY("上传开工文件", null, "您单位的【%s】已完成实施计划填写,可在过程管理-适配改造中进行上传开工文件的操作。", | |||||
"【%s】上传开工文件需要您处理,请及时处理", null, null), | |||||
PROJECT_REVIEW_APPLY("项目复核", null, "您单位的【%s】的专家评审已通过,可在过程管理-项目评审-项目复核中进行提交复核的操作。", | |||||
"【%s】项目复核需要您处理,请及时处理", null, null), | |||||
WITHOUT_BUILD_SCHEME("上传建设方案盖章件", null, "您单位的【%s】的合规性审査已通过,可在过程管理-项目评审-专家评审中进行上传建设方案盖章件的操作。", | |||||
"【%s】上传建设方案盖章件需要您处理,请及时处理", null, null), | |||||
WITHOUT_PURCHASE_NOTICE("发布采购公告", null, "您单位的【%s】立项备案已通过,可在过程管理-招标采购中进行发布采购公告的操作。", | |||||
"【%s】发布采购公告需要您处理,请及时处理", null, null), | |||||
WITHOUT_PURCHASE_CONTRACT("采购&合同信息备案", null, "您单位的【%s】已完成发布采购公告,可在过程管理-招标采购中进行采购&合同信息备案的操作。", | |||||
"【%s】采购&合同信息备案需要您处理,请及时处理", null, null), | |||||
WITHOUT_OPERATION_PLAN("实施计划填写", null, "您单位的【%s】已完成采购&合同信息备案,可在过程管理-适配改造中进行填写实施计划的操作。", | |||||
"【%s】实施计划需要您处理,请及时处理", null, null), | |||||
WITHOUT_FIRST_ACCEPT_RECORD("初验备案", null, "您单位的【%s】已完成适配改造,可在过程管理-初验申请中进行初验备案的操作。", | |||||
"【%s】初验备案需要您处理,请及时处理", null, null), | |||||
WITHOUT_ORG_CONFIRM("单位确认", null, "您单位的【%s】监理核实验证备案已通过,可在过程管理-适配改造中进行单位确认的操作。", | |||||
"【%s】单位确认需要您处理,请及时处理", null, null), | |||||
DECLARED_RECORD_APPLY("立项备案申请", null, "您单位的【%s】已下达资金,可在过程管理-项目立项中进行立项备案的操作。", | |||||
"【%s】立项备案需要您处理,请及时处理", null, | |||||
"mhProjectId=${mhProjectId}&status=${status}&projectCode=${projectCode}&projectId=${projectId}&userId=${userId}&userName=${userName}&path=${path}"), | |||||
/** | |||||
* 流程审批待办 | |||||
*/ | |||||
SELF_TEST_AUDIT("系统自测审批", TEST_VALID_APPLY, null, null, null, | |||||
"instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}"), | |||||
ADAPTION_AUDIT("开工文件审批", SELF_TEST_APPLY, null, null, null, | |||||
"instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}"), | |||||
TEST_VALID_AUDIT("监理核实验证审批", WITHOUT_ORG_CONFIRM, null, null, null, | |||||
"instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}"), | |||||
COMPLIANCE_REVIEW_AUDIT("合规性审查审批", WITHOUT_BUILD_SCHEME, null, null, null, | |||||
"instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}"), | |||||
PROJECT_REVIEW_AUDIT("项目复核审批", null, null, null, null, | |||||
"instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}"), | |||||
PROJECT_STOPPED_AUDIT("项目终止审批", null, "您单位的【%s】已通过项目终止审核。", null, null, | |||||
"instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}"), | |||||
PROJECT_CHANGE_AUDIT("项目变更审批", null, "您单位的【%s】已通过项目变更审核。", null, null, | |||||
"instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}"), | |||||
FINAL_INSPECT_AUDIT("终验审批", null, "您单位的【%s】已通过终验审核。", null, null, | |||||
"instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}"), | |||||
XCFHX_INSPECT_AUDIT("信创符合性审查审批", WITHOUT_BUILD_SCHEME, null, null, null, | |||||
"instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}&xinchuangId={xinchuangId}"), | |||||
DECLARED_RECORD_AUDIT("立项备案审批", WITHOUT_PURCHASE_NOTICE, null, null, null, | |||||
"instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}"); | |||||
private final String val; | private final String val; | ||||
private final MHTodoTypeEnum nextStep; | |||||
private final String zwddMsg; | |||||
private final String todoMsg; | |||||
/** | |||||
* 当前环节发页路径 | |||||
*/ | |||||
private final String pagePath; | |||||
private final String referLinkParam; | private final String referLinkParam; | ||||
} | } |
@@ -5,6 +5,7 @@ import cn.hutool.core.collection.CollUtil; | |||||
import cn.hutool.core.util.ObjectUtil; | import cn.hutool.core.util.ObjectUtil; | ||||
import cn.hutool.core.util.StrUtil; | import cn.hutool.core.util.StrUtil; | ||||
import cn.hutool.crypto.SecureUtil; | import cn.hutool.crypto.SecureUtil; | ||||
import cn.hutool.extra.spring.SpringUtil; | |||||
import cn.hutool.json.JSONUtil; | import cn.hutool.json.JSONUtil; | ||||
import com.alibaba.fastjson.JSON; | import com.alibaba.fastjson.JSON; | ||||
import com.baomidou.mybatisplus.core.conditions.Wrapper; | import com.baomidou.mybatisplus.core.conditions.Wrapper; | ||||
@@ -22,6 +23,7 @@ import com.hz.pm.api.common.util.EnvironmentUtil; | |||||
import com.hz.pm.api.expert.entity.ExpertUserFullInfo; | import com.hz.pm.api.expert.entity.ExpertUserFullInfo; | ||||
import com.hz.pm.api.expert.service.IExpertUserFullInfoService; | import com.hz.pm.api.expert.service.IExpertUserFullInfoService; | ||||
import com.hz.pm.api.external.MhApiClient; | import com.hz.pm.api.external.MhApiClient; | ||||
import com.hz.pm.api.external.todo.enumerization.MHTodoTypeEnum; | |||||
import com.hz.pm.api.gov.service.IBelongOrgService; | import com.hz.pm.api.gov.service.IBelongOrgService; | ||||
import com.hz.pm.api.meeting.builder.ExpertInviteBuilder; | import com.hz.pm.api.meeting.builder.ExpertInviteBuilder; | ||||
import com.hz.pm.api.meeting.builder.MeetingReviewProjectBuilder; | import com.hz.pm.api.meeting.builder.MeetingReviewProjectBuilder; | ||||
@@ -48,6 +50,7 @@ import com.hz.pm.api.projectlib.helper.ProjectManageUtil; | |||||
import com.hz.pm.api.projectlib.model.entity.Project; | import com.hz.pm.api.projectlib.model.entity.Project; | ||||
import com.hz.pm.api.projectlib.model.enumeration.status.ProjectStatus; | import com.hz.pm.api.projectlib.model.enumeration.status.ProjectStatus; | ||||
import com.hz.pm.api.projectlib.service.IProjectService; | import com.hz.pm.api.projectlib.service.IProjectService; | ||||
import com.hz.pm.api.scheduler.listener.event.MhTodoSendEvent; | |||||
import com.hz.pm.api.sys.model.dto.RegionDTO; | import com.hz.pm.api.sys.model.dto.RegionDTO; | ||||
import com.hz.pm.api.sys.model.entity.MsgCallRecord; | import com.hz.pm.api.sys.model.entity.MsgCallRecord; | ||||
import com.hz.pm.api.sys.model.enumeration.SubmitTypeEnum; | import com.hz.pm.api.sys.model.enumeration.SubmitTypeEnum; | ||||
@@ -1162,6 +1165,7 @@ public class MeetingManage { | |||||
Project project = projectService.getById(mip.getProjectId()); | Project project = projectService.getById(mip.getProjectId()); | ||||
if (req.getReviewResult() == 1) { | if (req.getReviewResult() == 1) { | ||||
projectStateMachineUtil.pass(project); | projectStateMachineUtil.pass(project); | ||||
SpringUtil.publishEvent(MhTodoSendEvent.of(MHTodoTypeEnum.PROJECT_REVIEW_APPLY, project)); | |||||
} else { | } else { | ||||
projectStateMachineUtil.reject(project); | projectStateMachineUtil.reject(project); | ||||
} | } | ||||
@@ -2,6 +2,7 @@ package com.hz.pm.api.projectdeclared.manage; | |||||
import cn.hutool.core.bean.BeanUtil; | import cn.hutool.core.bean.BeanUtil; | ||||
import cn.hutool.core.collection.CollUtil; | import cn.hutool.core.collection.CollUtil; | ||||
import cn.hutool.extra.spring.SpringUtil; | |||||
import com.alibaba.excel.EasyExcel; | import com.alibaba.excel.EasyExcel; | ||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||||
import com.baomidou.mybatisplus.core.toolkit.StringUtils; | import com.baomidou.mybatisplus.core.toolkit.StringUtils; | ||||
@@ -19,6 +20,7 @@ import com.hz.pm.api.common.statemachine.util.XcfhxStateMachineUtil; | |||||
import com.hz.pm.api.common.util.ExcelDownUtil; | import com.hz.pm.api.common.util.ExcelDownUtil; | ||||
import com.hz.pm.api.common.util.ExcelExportStyle; | import com.hz.pm.api.common.util.ExcelExportStyle; | ||||
import com.hz.pm.api.common.util.StrUtils; | import com.hz.pm.api.common.util.StrUtils; | ||||
import com.hz.pm.api.external.todo.enumerization.MHTodoTypeEnum; | |||||
import com.hz.pm.api.projectdeclared.helper.MhXchxFileHelper; | import com.hz.pm.api.projectdeclared.helper.MhXchxFileHelper; | ||||
import com.hz.pm.api.projectdeclared.model.dto.DeclaredProjectExportDTO; | import com.hz.pm.api.projectdeclared.model.dto.DeclaredProjectExportDTO; | ||||
import com.hz.pm.api.projectdeclared.model.dto.PaymentPlanSupplementDTO; | import com.hz.pm.api.projectdeclared.model.dto.PaymentPlanSupplementDTO; | ||||
@@ -43,6 +45,8 @@ import com.hz.pm.api.projectlib.model.vo.TenderListInfoVO; | |||||
import com.hz.pm.api.projectlib.service.IProjectAnnualPaymentPlanService; | import com.hz.pm.api.projectlib.service.IProjectAnnualPaymentPlanService; | ||||
import com.hz.pm.api.projectlib.service.IProjectInstService; | import com.hz.pm.api.projectlib.service.IProjectInstService; | ||||
import com.hz.pm.api.projectlib.service.IProjectService; | import com.hz.pm.api.projectlib.service.IProjectService; | ||||
import com.hz.pm.api.scheduler.listener.event.MhTodoHandedEvent; | |||||
import com.hz.pm.api.scheduler.listener.event.MhTodoSendEvent; | |||||
import com.hz.pm.api.sys.manage.ProcessModelManage; | import com.hz.pm.api.sys.manage.ProcessModelManage; | ||||
import com.hz.pm.api.user.helper.MhUnitQueryAuthHelper; | import com.hz.pm.api.user.helper.MhUnitQueryAuthHelper; | ||||
import com.hz.pm.api.user.helper.MhUnitQueryAuthHelper.UnitQueryState; | import com.hz.pm.api.user.helper.MhUnitQueryAuthHelper.UnitQueryState; | ||||
@@ -590,11 +594,13 @@ public class ConstructionManage { | |||||
.eq(Purchase::getBidType, BidTypeEnum.BUILD_APP.getCode()) | .eq(Purchase::getBidType, BidTypeEnum.BUILD_APP.getCode()) | ||||
.apply("LENGTH(NVL(preliminary_inspection_materials,'')) = 0") | .apply("LENGTH(NVL(preliminary_inspection_materials,'')) = 0") | ||||
.last(BizConst.LIMIT_1); | .last(BizConst.LIMIT_1); | ||||
Project project = projectService.getById(req.getProjectId()); | |||||
if (purchaseService.count(purchaseQuery) == 0) { | if (purchaseService.count(purchaseQuery) == 0) { | ||||
Project project = projectService.getById(req.getProjectId()); | |||||
projectStateMachineUtil.pass(project); | projectStateMachineUtil.pass(project); | ||||
projectService.updateById(project); | projectService.updateById(project); | ||||
} | } | ||||
SpringUtil.publishEvent(MhTodoSendEvent.of(MHTodoTypeEnum.FINAL_INSPECT_APPLY, project, purchase)); | |||||
SpringUtil.publishEvent(MhTodoHandedEvent.of(MHTodoTypeEnum.WITHOUT_FIRST_ACCEPT_RECORD, req.getBidId())); | |||||
} | } | ||||
@Transactional(rollbackFor = Exception.class) | @Transactional(rollbackFor = Exception.class) | ||||
@@ -2,6 +2,7 @@ package com.hz.pm.api.projectdeclared.manage; | |||||
import cn.hutool.core.collection.CollUtil; | import cn.hutool.core.collection.CollUtil; | ||||
import cn.hutool.core.util.NumberUtil; | import cn.hutool.core.util.NumberUtil; | ||||
import cn.hutool.extra.spring.SpringUtil; | |||||
import com.alibaba.excel.EasyExcel; | import com.alibaba.excel.EasyExcel; | ||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||||
import com.baomidou.mybatisplus.core.toolkit.Assert; | import com.baomidou.mybatisplus.core.toolkit.Assert; | ||||
@@ -16,6 +17,7 @@ import com.hz.pm.api.common.util.BizDateUtil; | |||||
import com.hz.pm.api.common.util.BizUtils; | import com.hz.pm.api.common.util.BizUtils; | ||||
import com.hz.pm.api.common.util.ExcelDownUtil; | import com.hz.pm.api.common.util.ExcelDownUtil; | ||||
import com.hz.pm.api.common.util.ExcelExportStyle; | import com.hz.pm.api.common.util.ExcelExportStyle; | ||||
import com.hz.pm.api.external.todo.enumerization.MHTodoTypeEnum; | |||||
import com.hz.pm.api.projectdeclared.model.dto.DeclaredProjectExportDTO; | import com.hz.pm.api.projectdeclared.model.dto.DeclaredProjectExportDTO; | ||||
import com.hz.pm.api.projectdeclared.model.entity.Contract; | import com.hz.pm.api.projectdeclared.model.entity.Contract; | ||||
import com.hz.pm.api.projectdeclared.model.entity.Purchase; | import com.hz.pm.api.projectdeclared.model.entity.Purchase; | ||||
@@ -38,6 +40,7 @@ import com.hz.pm.api.projectlib.model.vo.ProjectLibListItemVO; | |||||
import com.hz.pm.api.projectlib.model.vo.TenderListInfoVO; | import com.hz.pm.api.projectlib.model.vo.TenderListInfoVO; | ||||
import com.hz.pm.api.projectlib.service.IProjectInstService; | import com.hz.pm.api.projectlib.service.IProjectInstService; | ||||
import com.hz.pm.api.projectlib.service.IProjectService; | import com.hz.pm.api.projectlib.service.IProjectService; | ||||
import com.hz.pm.api.scheduler.listener.event.MhTodoHandedEvent; | |||||
import com.hz.pm.api.sys.manage.ProcessModelManage; | import com.hz.pm.api.sys.manage.ProcessModelManage; | ||||
import com.hz.pm.api.user.helper.MhUnitQueryAuthHelper; | import com.hz.pm.api.user.helper.MhUnitQueryAuthHelper; | ||||
import com.hz.pm.api.user.security.model.UserFullInfoDTO; | import com.hz.pm.api.user.security.model.UserFullInfoDTO; | ||||
@@ -356,6 +359,7 @@ public class FinalAcceptanceManage { | |||||
} | } | ||||
} | } | ||||
//发送给第一个审批人消息 | //发送给第一个审批人消息 | ||||
SpringUtil.publishEvent(MhTodoHandedEvent.of(MHTodoTypeEnum.FINAL_INSPECT_APPLY, req.getBidId())); | |||||
return instanceId; | return instanceId; | ||||
} | } | ||||
@@ -1,9 +1,11 @@ | |||||
package com.hz.pm.api.projectdeclared.manage; | package com.hz.pm.api.projectdeclared.manage; | ||||
import cn.hutool.core.bean.BeanUtil; | import cn.hutool.core.bean.BeanUtil; | ||||
import cn.hutool.extra.spring.SpringUtil; | |||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; | import com.baomidou.mybatisplus.core.toolkit.Wrappers; | ||||
import com.hz.pm.api.common.statemachine.util.TenderStateMachineUtil; | import com.hz.pm.api.common.statemachine.util.TenderStateMachineUtil; | ||||
import com.hz.pm.api.external.todo.enumerization.MHTodoTypeEnum; | |||||
import com.hz.pm.api.projectdeclared.model.dto.OperationReq; | import com.hz.pm.api.projectdeclared.model.dto.OperationReq; | ||||
import com.hz.pm.api.projectdeclared.model.entity.Operation; | import com.hz.pm.api.projectdeclared.model.entity.Operation; | ||||
import com.hz.pm.api.projectdeclared.model.entity.Purchase; | import com.hz.pm.api.projectdeclared.model.entity.Purchase; | ||||
@@ -13,6 +15,8 @@ import com.hz.pm.api.projectdeclared.service.IPurchaseService; | |||||
import com.hz.pm.api.projectlib.model.entity.Project; | import com.hz.pm.api.projectlib.model.entity.Project; | ||||
import com.hz.pm.api.projectlib.model.enumeration.status.TenderMainStatus; | import com.hz.pm.api.projectlib.model.enumeration.status.TenderMainStatus; | ||||
import com.hz.pm.api.projectlib.service.IProjectService; | import com.hz.pm.api.projectlib.service.IProjectService; | ||||
import com.hz.pm.api.scheduler.listener.event.MhTodoHandedEvent; | |||||
import com.hz.pm.api.scheduler.listener.event.MhTodoSendEvent; | |||||
import com.hz.pm.api.user.security.model.UserInfoDetails; | import com.hz.pm.api.user.security.model.UserInfoDetails; | ||||
import com.hz.pm.api.user.util.LoginUserUtil; | import com.hz.pm.api.user.util.LoginUserUtil; | ||||
import com.ningdatech.basic.exception.BizException; | import com.ningdatech.basic.exception.BizException; | ||||
@@ -91,6 +95,8 @@ public class OperationManage { | |||||
// 修改标段状态 | // 修改标段状态 | ||||
tenderStateMachineUtil.pass(purchase); | tenderStateMachineUtil.pass(purchase); | ||||
purchaseService.updateById(purchase); | purchaseService.updateById(purchase); | ||||
SpringUtil.publishEvent(MhTodoHandedEvent.of(MHTodoTypeEnum.WITHOUT_OPERATION_PLAN, purchase.getId())); | |||||
SpringUtil.publishEvent(MhTodoSendEvent.of(MHTodoTypeEnum.ADAPTION_APPLY, project, purchase)); | |||||
return operation.getProjectCode(); | return operation.getProjectCode(); | ||||
} | } | ||||
} | } |
@@ -1,6 +1,7 @@ | |||||
package com.hz.pm.api.projectdeclared.manage; | package com.hz.pm.api.projectdeclared.manage; | ||||
import cn.hutool.core.bean.BeanUtil; | import cn.hutool.core.bean.BeanUtil; | ||||
import cn.hutool.extra.spring.SpringUtil; | |||||
import com.baomidou.mybatisplus.core.conditions.Wrapper; | import com.baomidou.mybatisplus.core.conditions.Wrapper; | ||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; | import com.baomidou.mybatisplus.core.toolkit.Wrappers; | ||||
@@ -16,6 +17,7 @@ import com.hz.pm.api.common.statemachine.util.ProjectStateMachineUtil; | |||||
import com.hz.pm.api.common.util.BizUtils; | import com.hz.pm.api.common.util.BizUtils; | ||||
import com.hz.pm.api.datascope.model.DataScopeDTO; | import com.hz.pm.api.datascope.model.DataScopeDTO; | ||||
import com.hz.pm.api.datascope.utils.DataScopeUtil; | import com.hz.pm.api.datascope.utils.DataScopeUtil; | ||||
import com.hz.pm.api.external.todo.enumerization.MHTodoTypeEnum; | |||||
import com.hz.pm.api.meeting.entity.domain.MeetingInnerProject; | import com.hz.pm.api.meeting.entity.domain.MeetingInnerProject; | ||||
import com.hz.pm.api.meeting.entity.dto.ProjectReviewResultDTO; | import com.hz.pm.api.meeting.entity.dto.ProjectReviewResultDTO; | ||||
import com.hz.pm.api.meeting.service.IMeetingInnerProjectService; | import com.hz.pm.api.meeting.service.IMeetingInnerProjectService; | ||||
@@ -34,6 +36,7 @@ import com.hz.pm.api.projectlib.model.req.UploadConstructionPlanSealFileReq; | |||||
import com.hz.pm.api.projectlib.model.vo.ProjectLibListItemVO; | import com.hz.pm.api.projectlib.model.vo.ProjectLibListItemVO; | ||||
import com.hz.pm.api.projectlib.service.IProjectInstService; | import com.hz.pm.api.projectlib.service.IProjectInstService; | ||||
import com.hz.pm.api.projectlib.service.IProjectService; | import com.hz.pm.api.projectlib.service.IProjectService; | ||||
import com.hz.pm.api.scheduler.listener.event.MhTodoHandedEvent; | |||||
import com.hz.pm.api.sys.manage.ProcessModelManage; | import com.hz.pm.api.sys.manage.ProcessModelManage; | ||||
import com.hz.pm.api.user.helper.MhUnitCache; | import com.hz.pm.api.user.helper.MhUnitCache; | ||||
import com.hz.pm.api.user.security.model.UserFullInfoDTO; | import com.hz.pm.api.user.security.model.UserFullInfoDTO; | ||||
@@ -116,6 +119,7 @@ public class ProjectReviewManage { | |||||
projectInstService.save(projectInst); | projectInstService.save(projectInst); | ||||
projectStateMachineUtil.pass(project); | projectStateMachineUtil.pass(project); | ||||
projectService.updateById(project); | projectService.updateById(project); | ||||
SpringUtil.publishEvent(MhTodoHandedEvent.of(MHTodoTypeEnum.PROJECT_REVIEW_APPLY, project.getId())); | |||||
log.info("项目评审提交成功 【{}】", instanceId); | log.info("项目评审提交成功 【{}】", instanceId); | ||||
} | } | ||||
@@ -367,6 +371,7 @@ public class ProjectReviewManage { | |||||
.set(Project::getUpdateBy, LoginUserUtil.getUserId()) | .set(Project::getUpdateBy, LoginUserUtil.getUserId()) | ||||
.eq(Project::getId, req.getProjectId()); | .eq(Project::getId, req.getProjectId()); | ||||
projectService.update(wrapper); | projectService.update(wrapper); | ||||
SpringUtil.publishEvent(MhTodoHandedEvent.of(MHTodoTypeEnum.WITHOUT_BUILD_SCHEME, project.getId())); | |||||
} | } | ||||
} | } |
@@ -7,6 +7,7 @@ import cn.hutool.core.date.LocalDateTimeUtil; | |||||
import cn.hutool.core.io.FileUtil; | import cn.hutool.core.io.FileUtil; | ||||
import cn.hutool.core.lang.Assert; | import cn.hutool.core.lang.Assert; | ||||
import cn.hutool.core.util.StrUtil; | import cn.hutool.core.util.StrUtil; | ||||
import cn.hutool.extra.spring.SpringUtil; | |||||
import cn.hutool.http.HttpUtil; | import cn.hutool.http.HttpUtil; | ||||
import cn.hutool.json.JSONUtil; | import cn.hutool.json.JSONUtil; | ||||
import com.alibaba.excel.EasyExcel; | import com.alibaba.excel.EasyExcel; | ||||
@@ -27,6 +28,7 @@ import com.hz.pm.api.external.MhFileClient; | |||||
import com.hz.pm.api.external.model.dto.MhPurchaseIntentionDTO; | import com.hz.pm.api.external.model.dto.MhPurchaseIntentionDTO; | ||||
import com.hz.pm.api.external.model.dto.MhPurchaseNoticeDTO; | import com.hz.pm.api.external.model.dto.MhPurchaseNoticeDTO; | ||||
import com.hz.pm.api.external.model.enumeration.MhUnitStripEnum; | import com.hz.pm.api.external.model.enumeration.MhUnitStripEnum; | ||||
import com.hz.pm.api.external.todo.enumerization.MHTodoTypeEnum; | |||||
import com.hz.pm.api.projectdeclared.helper.MhXchxFileHelper; | import com.hz.pm.api.projectdeclared.helper.MhXchxFileHelper; | ||||
import com.hz.pm.api.projectdeclared.model.dto.DeclaredProjectExportDTO; | import com.hz.pm.api.projectdeclared.model.dto.DeclaredProjectExportDTO; | ||||
import com.hz.pm.api.projectdeclared.model.dto.PurchaseSaveDTO; | import com.hz.pm.api.projectdeclared.model.dto.PurchaseSaveDTO; | ||||
@@ -54,6 +56,8 @@ import com.hz.pm.api.projectlib.service.IProjectGovSystemReplaceInfosService; | |||||
import com.hz.pm.api.projectlib.service.IProjectInstService; | import com.hz.pm.api.projectlib.service.IProjectInstService; | ||||
import com.hz.pm.api.projectlib.service.IProjectService; | import com.hz.pm.api.projectlib.service.IProjectService; | ||||
import com.hz.pm.api.projectlib.service.IPurchaseStatusChangeService; | import com.hz.pm.api.projectlib.service.IPurchaseStatusChangeService; | ||||
import com.hz.pm.api.scheduler.listener.event.MhTodoHandedEvent; | |||||
import com.hz.pm.api.scheduler.listener.event.MhTodoSendEvent; | |||||
import com.hz.pm.api.sys.manage.ProcessModelManage; | import com.hz.pm.api.sys.manage.ProcessModelManage; | ||||
import com.hz.pm.api.user.helper.MhUnitCache; | import com.hz.pm.api.user.helper.MhUnitCache; | ||||
import com.hz.pm.api.user.helper.MhUnitQueryAuthHelper; | import com.hz.pm.api.user.helper.MhUnitQueryAuthHelper; | ||||
@@ -458,6 +462,10 @@ public class PurchaseManage { | |||||
projectGovSystemReplaceInfosService.updateBatchById(projectGovSystemReplaceInfos); | projectGovSystemReplaceInfosService.updateBatchById(projectGovSystemReplaceInfos); | ||||
projectStateMachineUtil.pass(project); | projectStateMachineUtil.pass(project); | ||||
projectService.updateById(project); | projectService.updateById(project); | ||||
SpringUtil.publishEvent(MhTodoHandedEvent.of(MHTodoTypeEnum.WITHOUT_PURCHASE_NOTICE, project.getId())); | |||||
for (Purchase purchase : purchases) { | |||||
SpringUtil.publishEvent(MhTodoSendEvent.of(MHTodoTypeEnum.WITHOUT_PURCHASE_CONTRACT, project, purchase)); | |||||
} | |||||
// 发布采购公告 | // 发布采购公告 | ||||
if (!notices.isEmpty()) { | if (!notices.isEmpty()) { | ||||
mhApiClient.publishPurchaseNotice(notices); | mhApiClient.publishPurchaseNotice(notices); | ||||
@@ -565,6 +573,8 @@ public class PurchaseManage { | |||||
project.setUpdateOn(now); | project.setUpdateOn(now); | ||||
project.setContractAmount(totalAmount); | project.setContractAmount(totalAmount); | ||||
projectService.updateById(project); | projectService.updateById(project); | ||||
SpringUtil.publishEvent(MhTodoHandedEvent.of(MHTodoTypeEnum.WITHOUT_PURCHASE_CONTRACT, purchase.getId())); | |||||
SpringUtil.publishEvent(MhTodoSendEvent.of(MHTodoTypeEnum.WITHOUT_OPERATION_PLAN, project, purchase)); | |||||
} | } | ||||
public AdaptionProgressStatVO adaptionProgressStatistics(PurchaseAdaptionListReq req) { | public AdaptionProgressStatVO adaptionProgressStatistics(PurchaseAdaptionListReq req) { | ||||
@@ -756,9 +766,9 @@ public class PurchaseManage { | |||||
ProjectProcessType instType = ProjectProcessType.TEST_VALID; | ProjectProcessType instType = ProjectProcessType.TEST_VALID; | ||||
WflowModels model = processModelManage.getWflowModelsNoNull(instType, user.getMhUnitId()); | WflowModels model = processModelManage.getWflowModelsNoNull(instType, user.getMhUnitId()); | ||||
LocalDateTime now = LocalDateTime.now(); | LocalDateTime now = LocalDateTime.now(); | ||||
Long projectId = purchases.get(0).getProjectId(); | |||||
Project project = projectService.getNewProject(projectId); | |||||
for (Purchase purchase : purchases) { | for (Purchase purchase : purchases) { | ||||
Long projectId = purchase.getProjectId(); | |||||
Project project = projectService.getNewProject(projectId); | |||||
ProcessStartParamsVo instParam = new ProcessStartParamsVo(); | ProcessStartParamsVo instParam = new ProcessStartParamsVo(); | ||||
instParam.setUser(declaredProjectManage.buildUser(user)); | instParam.setUser(declaredProjectManage.buildUser(user)); | ||||
instParam.setProcessUsers(Collections.emptyMap()); | instParam.setProcessUsers(Collections.emptyMap()); | ||||
@@ -786,6 +796,7 @@ public class PurchaseManage { | |||||
operationService.saveOrUpdate(operation); | operationService.saveOrUpdate(operation); | ||||
saveProjectPurchaseInstCode(purchase.getId(), instanceId, project.getId(), instType); | saveProjectPurchaseInstCode(purchase.getId(), instanceId, project.getId(), instType); | ||||
} | } | ||||
SpringUtil.publishEvent(MhTodoHandedEvent.of(MHTodoTypeEnum.TEST_VALID_APPLY, purchases.get(0).getId())); | |||||
} | } | ||||
private void saveProjectPurchaseInstCode(Long bidId, | private void saveProjectPurchaseInstCode(Long bidId, | ||||
@@ -821,9 +832,10 @@ public class PurchaseManage { | |||||
WflowModels model = processModelManage.getWflowModelsNoNull(instType, user.getMhUnitId()); | WflowModels model = processModelManage.getWflowModelsNoNull(instType, user.getMhUnitId()); | ||||
LocalDateTime now = LocalDateTime.now(); | LocalDateTime now = LocalDateTime.now(); | ||||
Long projectId = purchases.get(0).getProjectId(); | |||||
Project project = projectService.getNewProject(projectId); | |||||
for (Purchase purchase : purchases) { | for (Purchase purchase : purchases) { | ||||
Long projectId = purchase.getProjectId(); | |||||
Project project = projectService.getNewProject(projectId); | |||||
ProcessStartParamsVo instParam = new ProcessStartParamsVo(); | ProcessStartParamsVo instParam = new ProcessStartParamsVo(); | ||||
instParam.setUser(declaredProjectManage.buildUser(user)); | instParam.setUser(declaredProjectManage.buildUser(user)); | ||||
instParam.setProcessUsers(Collections.emptyMap()); | instParam.setProcessUsers(Collections.emptyMap()); | ||||
@@ -851,6 +863,7 @@ public class PurchaseManage { | |||||
operationService.saveOrUpdate(operation); | operationService.saveOrUpdate(operation); | ||||
saveProjectPurchaseInstCode(purchase.getId(), instanceId, project.getId(), instType); | saveProjectPurchaseInstCode(purchase.getId(), instanceId, project.getId(), instType); | ||||
} | } | ||||
SpringUtil.publishEvent(MhTodoHandedEvent.of(MHTodoTypeEnum.SELF_TEST_APPLY, purchases.get(0).getId())); | |||||
} | } | ||||
@Transactional(rollbackFor = Exception.class) | @Transactional(rollbackFor = Exception.class) | ||||
@@ -865,11 +878,10 @@ public class PurchaseManage { | |||||
UserInfoDetails user = LoginUserUtil.loginUserDetail(); | UserInfoDetails user = LoginUserUtil.loginUserDetail(); | ||||
ProjectProcessType instType = ProjectProcessType.ADAPTION; | ProjectProcessType instType = ProjectProcessType.ADAPTION; | ||||
WflowModels model = processModelManage.getWflowModelsNoNull(instType, user.getMhUnitId()); | WflowModels model = processModelManage.getWflowModelsNoNull(instType, user.getMhUnitId()); | ||||
Long projectId = purchases.get(0).getProjectId(); | |||||
Project project = projectService.getNewProject(projectId); | |||||
LocalDateTime now = LocalDateTime.now(); | LocalDateTime now = LocalDateTime.now(); | ||||
for (Purchase purchase : purchases) { | for (Purchase purchase : purchases) { | ||||
Long projectId = purchase.getProjectId(); | |||||
Project project = projectService.getNewProject(projectId); | |||||
ProcessStartParamsVo instParam = new ProcessStartParamsVo(); | ProcessStartParamsVo instParam = new ProcessStartParamsVo(); | ||||
instParam.setUser(declaredProjectManage.buildUser(user)); | instParam.setUser(declaredProjectManage.buildUser(user)); | ||||
instParam.setProcessUsers(Collections.emptyMap()); | instParam.setProcessUsers(Collections.emptyMap()); | ||||
@@ -897,6 +909,7 @@ public class PurchaseManage { | |||||
operationService.saveOrUpdate(operation); | operationService.saveOrUpdate(operation); | ||||
saveProjectPurchaseInstCode(purchase.getId(), instanceId, project.getId(), instType); | saveProjectPurchaseInstCode(purchase.getId(), instanceId, project.getId(), instType); | ||||
} | } | ||||
SpringUtil.publishEvent(MhTodoHandedEvent.of(MHTodoTypeEnum.ADAPTION_APPLY, purchases.get(0).getId())); | |||||
} | } | ||||
public PageVo<XcfhxApplyListVO> pageXcfhxApply(XcfhxListReq req) { | public PageVo<XcfhxApplyListVO> pageXcfhxApply(XcfhxListReq req) { | ||||
@@ -1018,11 +1031,13 @@ public class PurchaseManage { | |||||
} | } | ||||
return TenderMainStatus.TO_BE_SUBMIT_FIRST_INSPECTED_INFO.eq(w.getStatus()); | return TenderMainStatus.TO_BE_SUBMIT_FIRST_INSPECTED_INFO.eq(w.getStatus()); | ||||
}); | }); | ||||
Project project = projectService.getNewestNoNull(purchase.getProjectId()); | |||||
if (changeProjectStatus) { | if (changeProjectStatus) { | ||||
Project project = projectService.getNewestNoNull(purchase.getProjectId()); | |||||
projectStateMachineUtil.pass(project); | projectStateMachineUtil.pass(project); | ||||
projectService.updateById(project); | projectService.updateById(project); | ||||
} | } | ||||
SpringUtil.publishEvent(MhTodoHandedEvent.of(MHTodoTypeEnum.WITHOUT_ORG_CONFIRM, req.getBidId())); | |||||
SpringUtil.publishEvent(MhTodoSendEvent.of(MHTodoTypeEnum.WITHOUT_FIRST_ACCEPT_RECORD, project, purchase)); | |||||
} | } | ||||
} | } |
@@ -35,6 +35,12 @@ public interface IPurchaseInstService extends IService<PurchaseInst> { | |||||
return list(query); | return list(query); | ||||
} | } | ||||
default PurchaseInst getByInstCode(String instCode) { | |||||
Wrapper<PurchaseInst> query = Wrappers.lambdaQuery(PurchaseInst.class) | |||||
.eq(PurchaseInst::getInstCode, instCode); | |||||
return getOne(query); | |||||
} | |||||
default List<PurchaseInst> listByProjectId(Long projectId) { | default List<PurchaseInst> listByProjectId(Long projectId) { | ||||
Wrapper<PurchaseInst> query = Wrappers.lambdaQuery(PurchaseInst.class) | Wrapper<PurchaseInst> query = Wrappers.lambdaQuery(PurchaseInst.class) | ||||
.eq(PurchaseInst::getProjectId, projectId); | .eq(PurchaseInst::getProjectId, projectId); | ||||
@@ -5,6 +5,7 @@ import cn.hutool.core.collection.CollUtil; | |||||
import cn.hutool.core.util.NumberUtil; | import cn.hutool.core.util.NumberUtil; | ||||
import cn.hutool.core.util.ObjUtil; | import cn.hutool.core.util.ObjUtil; | ||||
import cn.hutool.core.util.StrUtil; | import cn.hutool.core.util.StrUtil; | ||||
import cn.hutool.extra.spring.SpringUtil; | |||||
import com.baomidou.mybatisplus.core.conditions.Wrapper; | import com.baomidou.mybatisplus.core.conditions.Wrapper; | ||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; | import com.baomidou.mybatisplus.core.toolkit.Wrappers; | ||||
@@ -16,6 +17,7 @@ import com.hz.pm.api.common.util.DecimalUtil; | |||||
import com.hz.pm.api.datascope.model.DataScopeDTO; | import com.hz.pm.api.datascope.model.DataScopeDTO; | ||||
import com.hz.pm.api.datascope.utils.DataScopeUtil; | import com.hz.pm.api.datascope.utils.DataScopeUtil; | ||||
import com.hz.pm.api.external.model.enumeration.MhUnitStripEnum; | import com.hz.pm.api.external.model.enumeration.MhUnitStripEnum; | ||||
import com.hz.pm.api.external.todo.enumerization.MHTodoTypeEnum; | |||||
import com.hz.pm.api.projectlib.entity.ProjectApprovalAmount; | import com.hz.pm.api.projectlib.entity.ProjectApprovalAmount; | ||||
import com.hz.pm.api.projectlib.helper.ProjectManageUtil; | import com.hz.pm.api.projectlib.helper.ProjectManageUtil; | ||||
import com.hz.pm.api.projectlib.model.dto.ProjectApprovalAmountDTO; | import com.hz.pm.api.projectlib.model.dto.ProjectApprovalAmountDTO; | ||||
@@ -27,6 +29,7 @@ import com.hz.pm.api.projectlib.model.vo.AmountApprovalProgressStatisticsVO; | |||||
import com.hz.pm.api.projectlib.model.vo.ProjectLibListItemVO; | import com.hz.pm.api.projectlib.model.vo.ProjectLibListItemVO; | ||||
import com.hz.pm.api.projectlib.service.IProjectApprovalAmountService; | import com.hz.pm.api.projectlib.service.IProjectApprovalAmountService; | ||||
import com.hz.pm.api.projectlib.service.IProjectService; | import com.hz.pm.api.projectlib.service.IProjectService; | ||||
import com.hz.pm.api.scheduler.listener.event.MhTodoSendEvent; | |||||
import com.hz.pm.api.user.helper.MhUnitCache; | import com.hz.pm.api.user.helper.MhUnitCache; | ||||
import com.hz.pm.api.user.security.model.UserFullInfoDTO; | import com.hz.pm.api.user.security.model.UserFullInfoDTO; | ||||
import com.hz.pm.api.user.util.LoginUserUtil; | import com.hz.pm.api.user.util.LoginUserUtil; | ||||
@@ -217,6 +220,9 @@ public class AmountApprovalManage { | |||||
projectApprovalAmount.setProjectCode(project.getProjectCode()); | projectApprovalAmount.setProjectCode(project.getProjectCode()); | ||||
projectApprovalAmount.setCarryOverAmount(req.getCarryOverAmount()); | projectApprovalAmount.setCarryOverAmount(req.getCarryOverAmount()); | ||||
projectApprovalAmountService.save(projectApprovalAmount); | projectApprovalAmountService.save(projectApprovalAmount); | ||||
if (!approved) { | |||||
SpringUtil.publishEvent(MhTodoSendEvent.of(MHTodoTypeEnum.DECLARED_RECORD_APPLY, project)); | |||||
} | |||||
} | } | ||||
private Integer getLastApprovalYear(Project project) { | private Integer getLastApprovalYear(Project project) { | ||||
@@ -250,14 +256,7 @@ public class AmountApprovalManage { | |||||
public List<ProjectApprovalAmountDTO> listApprovalAmounts(String projectCode) { | public List<ProjectApprovalAmountDTO> listApprovalAmounts(String projectCode) { | ||||
List<ProjectApprovalAmount> approvalAmounts = projectApprovalAmountService.listAsc(projectCode); | List<ProjectApprovalAmount> approvalAmounts = projectApprovalAmountService.listAsc(projectCode); | ||||
List<ProjectApprovalAmountDTO> retData = BeanUtil.copyToList(approvalAmounts, ProjectApprovalAmountDTO.class); | |||||
for (int i = 0; i < retData.size() - 1; i++) { | |||||
ProjectApprovalAmountDTO curr = retData.get(i); | |||||
ProjectApprovalAmountDTO next = retData.get(i + 1); | |||||
curr.setCarryOverAmount(next.getCarryOverAmount()); | |||||
next.setCarryOverAmount(null); | |||||
} | |||||
return retData; | |||||
return BeanUtil.copyToList(approvalAmounts, ProjectApprovalAmountDTO.class); | |||||
} | } | ||||
} | } |
@@ -0,0 +1,44 @@ | |||||
package com.hz.pm.api.scheduler.listener; | |||||
import cn.hutool.core.collection.CollUtil; | |||||
import com.baomidou.mybatisplus.core.conditions.Wrapper; | |||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; | |||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; | |||||
import com.hz.pm.api.scheduler.listener.event.MhTodoHandedEvent; | |||||
import com.hz.pm.api.sys.model.entity.MhTodoRecord; | |||||
import com.hz.pm.api.sys.model.entity.MhTodoRecord.TodoStatusEnum; | |||||
import com.hz.pm.api.sys.service.IMhTodoRecordService; | |||||
import com.ningdatech.basic.util.CollUtils; | |||||
import lombok.RequiredArgsConstructor; | |||||
import org.springframework.context.event.EventListener; | |||||
import org.springframework.stereotype.Component; | |||||
/** | |||||
* <p> | |||||
* MhTodoHandedListener | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 14:11 2024/10/19 | |||||
*/ | |||||
@Component | |||||
@RequiredArgsConstructor | |||||
public class MhTodoHandedListener { | |||||
private final IMhTodoRecordService mhTodoRecordService; | |||||
@EventListener(MhTodoHandedEvent.class) | |||||
public void handleEvent(MhTodoHandedEvent event) { | |||||
LambdaUpdateWrapper<MhTodoRecord> wrapper = Wrappers.lambdaUpdate(MhTodoRecord.class) | |||||
.set(MhTodoRecord::getStatus, TodoStatusEnum.HANDING.getCode()) | |||||
.eq(MhTodoRecord::getStatus, TodoStatusEnum.PENDING.getCode()) | |||||
.eq(MhTodoRecord::getType, event.getMhTodoType()); | |||||
if (CollUtil.isNotEmpty(event.getBizIds())) { | |||||
wrapper.in(MhTodoRecord::getBizId, CollUtils.convert(event.getBizIds(), String::valueOf)); | |||||
} else { | |||||
wrapper.eq(MhTodoRecord::getBizId, event.getBizId().toString()); | |||||
} | |||||
mhTodoRecordService.update(wrapper); | |||||
} | |||||
} |
@@ -0,0 +1,88 @@ | |||||
package com.hz.pm.api.scheduler.listener; | |||||
import cn.hutool.core.util.ObjUtil; | |||||
import cn.hutool.core.util.StrUtil; | |||||
import com.hz.pm.api.common.helper.UserInfoHelper; | |||||
import com.hz.pm.api.external.MhApiClient; | |||||
import com.hz.pm.api.external.model.dto.MhZwddWorkNoticeDTO; | |||||
import com.hz.pm.api.external.todo.MHTodoClient; | |||||
import com.hz.pm.api.external.todo.dto.MhTodoExtraParamDTO; | |||||
import com.hz.pm.api.external.todo.enumerization.MHTodoTypeEnum; | |||||
import com.hz.pm.api.projectdeclared.model.entity.Purchase; | |||||
import com.hz.pm.api.projectdeclared.model.entity.Xinchuang; | |||||
import com.hz.pm.api.projectlib.model.entity.Project; | |||||
import com.hz.pm.api.scheduler.listener.event.MhTodoSendEvent; | |||||
import com.hz.pm.api.user.security.model.UserFullInfoDTO; | |||||
import lombok.RequiredArgsConstructor; | |||||
import org.springframework.context.event.EventListener; | |||||
import org.springframework.scheduling.annotation.Async; | |||||
import org.springframework.stereotype.Component; | |||||
/** | |||||
* <p> | |||||
* MhTodoSendListener | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 14:47 2024/10/19 | |||||
*/ | |||||
@Component | |||||
@RequiredArgsConstructor | |||||
public class MhTodoSendListener { | |||||
private final MhApiClient mhApiClient; | |||||
private final MHTodoClient mhTodoClient; | |||||
private final UserInfoHelper userInfoHelper; | |||||
@Async | |||||
@EventListener(classes = MhTodoSendEvent.class) | |||||
public void handleEvent(MhTodoSendEvent event) { | |||||
MHTodoTypeEnum todoType = event.getMhTodoType(); | |||||
MHTodoTypeEnum nextStep = ObjUtil.defaultIfNull(todoType.getNextStep(), todoType); | |||||
Purchase purchase = event.getPurchase(); | |||||
Project project = event.getProject(); | |||||
Xinchuang xinchuang = event.getXinchuang(); | |||||
boolean isBidTodo = purchase != null; | |||||
String tmpName; | |||||
Long createBy; | |||||
Long bizId; | |||||
if (isBidTodo) { | |||||
tmpName = purchase.getBidName(); | |||||
createBy = Long.valueOf(purchase.getCreateBy()); | |||||
bizId = purchase.getId(); | |||||
} else if (project != null) { | |||||
tmpName = project.getProjectName(); | |||||
createBy = project.getCreateBy(); | |||||
bizId = project.getId(); | |||||
} else if (xinchuang != null) { | |||||
tmpName = xinchuang.getProjectName(); | |||||
createBy = Long.parseLong(xinchuang.getCreateBy()); | |||||
bizId = xinchuang.getId(); | |||||
} else { | |||||
return; | |||||
} | |||||
UserFullInfoDTO user = userInfoHelper.getUserFullInfo(createBy); | |||||
if (user == null || user.getMhUserId() == null) { | |||||
return; | |||||
} | |||||
if (StrUtil.isNotBlank(nextStep.getZwddMsg())) { | |||||
String zwddMsg = String.format(nextStep.getZwddMsg(), tmpName); | |||||
MhZwddWorkNoticeDTO notice = MhZwddWorkNoticeDTO.builder() | |||||
.content(zwddMsg) | |||||
.title(nextStep.getVal()) | |||||
.targetUser(user.getMhUserId()) | |||||
.build(); | |||||
mhApiClient.sendZwddWorkNotice(notice); | |||||
} | |||||
if (StrUtil.isNotBlank(nextStep.getTodoMsg())) { | |||||
String todoMsg = String.format(nextStep.getTodoMsg(), tmpName); | |||||
MhTodoExtraParamDTO paramObj = MhTodoExtraParamDTO.builder() | |||||
.path(nextStep.getPagePath()) | |||||
.userName(user.getRealName()) | |||||
.userId(createBy) | |||||
.build(); | |||||
mhTodoClient.addTodo(paramObj, user, nextStep, bizId.toString(), todoMsg); | |||||
} | |||||
} | |||||
} |
@@ -1,5 +1,6 @@ | |||||
package com.hz.pm.api.scheduler.listener; | package com.hz.pm.api.scheduler.listener; | ||||
import cn.hutool.core.util.ObjUtil; | |||||
import cn.hutool.core.util.StrUtil; | import cn.hutool.core.util.StrUtil; | ||||
import cn.hutool.extra.spring.SpringUtil; | import cn.hutool.extra.spring.SpringUtil; | ||||
import com.hz.pm.api.common.enumeration.ProjectProcessType; | import com.hz.pm.api.common.enumeration.ProjectProcessType; | ||||
@@ -10,10 +11,12 @@ import com.hz.pm.api.external.model.dto.MhZwddWorkNoticeDTO; | |||||
import com.hz.pm.api.external.todo.MHTodoClient; | import com.hz.pm.api.external.todo.MHTodoClient; | ||||
import com.hz.pm.api.external.todo.dto.MhTodoExtraParamDTO; | import com.hz.pm.api.external.todo.dto.MhTodoExtraParamDTO; | ||||
import com.hz.pm.api.external.todo.enumerization.MHTodoTypeEnum; | import com.hz.pm.api.external.todo.enumerization.MHTodoTypeEnum; | ||||
import com.hz.pm.api.projectdeclared.model.entity.Purchase; | |||||
import com.hz.pm.api.projectdeclared.model.entity.PurchaseInst; | import com.hz.pm.api.projectdeclared.model.entity.PurchaseInst; | ||||
import com.hz.pm.api.projectdeclared.model.entity.Xinchuang; | import com.hz.pm.api.projectdeclared.model.entity.Xinchuang; | ||||
import com.hz.pm.api.projectdeclared.model.entity.XinchuangInst; | import com.hz.pm.api.projectdeclared.model.entity.XinchuangInst; | ||||
import com.hz.pm.api.projectdeclared.service.IPurchaseInstService; | import com.hz.pm.api.projectdeclared.service.IPurchaseInstService; | ||||
import com.hz.pm.api.projectdeclared.service.IPurchaseService; | |||||
import com.hz.pm.api.projectdeclared.service.IXinchuangInstService; | import com.hz.pm.api.projectdeclared.service.IXinchuangInstService; | ||||
import com.hz.pm.api.projectdeclared.service.IXinchuangService; | import com.hz.pm.api.projectdeclared.service.IXinchuangService; | ||||
import com.hz.pm.api.projectlib.model.entity.Project; | import com.hz.pm.api.projectlib.model.entity.Project; | ||||
@@ -57,6 +60,7 @@ import static com.hz.pm.api.common.util.ThreadPoolUtil.SCHEDULER; | |||||
public class UserTaskCreateOrFinishListener { | public class UserTaskCreateOrFinishListener { | ||||
private final HistoryService historyService; | private final HistoryService historyService; | ||||
private final IPurchaseService purchaseService; | |||||
private final IProjectService projectService; | private final IProjectService projectService; | ||||
private final IProjectInstService projectInstService; | private final IProjectInstService projectInstService; | ||||
private final ProcessModelHistorysService processModelHistorysService; | private final ProcessModelHistorysService processModelHistorysService; | ||||
@@ -216,29 +220,32 @@ public class UserTaskCreateOrFinishListener { | |||||
} else { | } else { | ||||
mhTodoClient.completeTodo(todoType, task.getId()); | mhTodoClient.completeTodo(todoType, task.getId()); | ||||
} | } | ||||
if (!event.getAction().equals(ProcessHandlerEnum.PASS) | |||||
&& !event.getAction().equals(ProcessHandlerEnum.SEAL_PASS)) { | |||||
String projectName; | |||||
Long createBy; | |||||
ProjectInst projectInst = projectInstService.getByInstCode(event.getInstCode()); | |||||
if (projectInst != null) { | |||||
Project project = projectService.getNewestNoNull(projectInst.getProjectId()); | |||||
projectName = project.getProjectName(); | |||||
createBy = project.getCreateBy(); | |||||
} else { | |||||
XinchuangInst xinchuangInst = xinchuangInstService.getByInstCode(event.getInstCode()); | |||||
if (xinchuangInst == null) { | |||||
return; | |||||
} | |||||
Xinchuang xinchuang = xinchuangService.getById(xinchuangInst.getXinchuangId()); | |||||
projectName = xinchuang.getProjectName(); | |||||
createBy = Long.parseLong(xinchuang.getCreateBy()); | |||||
} | |||||
UserFullInfoDTO userFullInfo = userInfoHelper.getUserFullInfo(createBy); | |||||
if (userFullInfo == null || StrUtil.isBlank(userFullInfo.getMhUserId())) { | |||||
String projectName; | |||||
Long projectId; | |||||
Long createBy; | |||||
ProjectInst projectInst = projectInstService.getByInstCode(event.getInstCode()); | |||||
if (projectInst != null) { | |||||
Project project = projectService.getNewestNoNull(projectInst.getProjectId()); | |||||
projectId = project.getId(); | |||||
projectName = project.getProjectName(); | |||||
createBy = project.getCreateBy(); | |||||
} else { | |||||
XinchuangInst xinchuangInst = xinchuangInstService.getByInstCode(event.getInstCode()); | |||||
if (xinchuangInst == null) { | |||||
return; | return; | ||||
} | } | ||||
String zzdContent = String.format("您单位的【%s】的%s已被驳回,请按时完成提交!", | |||||
Xinchuang xinchuang = xinchuangService.getById(xinchuangInst.getXinchuangId()); | |||||
projectName = xinchuang.getProjectName(); | |||||
projectId = xinchuang.getId(); | |||||
createBy = Long.parseLong(xinchuang.getCreateBy()); | |||||
} | |||||
UserFullInfoDTO userFullInfo = userInfoHelper.getUserFullInfo(createBy); | |||||
if (userFullInfo == null || StrUtil.isBlank(userFullInfo.getMhUserId())) { | |||||
return; | |||||
} | |||||
if (event.getAction().equals(ProcessHandlerEnum.REJECT) | |||||
&& !event.getAction().equals(ProcessHandlerEnum.SEAL_PASS)) { | |||||
String zzdContent = String.format("您单位的【%s】的%s已被驳回,请及时处理!", | |||||
projectName, getProcessTypeName(procType)); | projectName, getProcessTypeName(procType)); | ||||
MhZwddWorkNoticeDTO notice = MhZwddWorkNoticeDTO.builder() | MhZwddWorkNoticeDTO notice = MhZwddWorkNoticeDTO.builder() | ||||
.content(zzdContent) | .content(zzdContent) | ||||
@@ -246,6 +253,43 @@ public class UserTaskCreateOrFinishListener { | |||||
.targetUser(userFullInfo.getMhUserId()) | .targetUser(userFullInfo.getMhUserId()) | ||||
.build(); | .build(); | ||||
mhApiClient.sendZwddWorkNotice(notice); | mhApiClient.sendZwddWorkNotice(notice); | ||||
} else if (event.getAction().equals(ProcessHandlerEnum.PASS)) { | |||||
Purchase purchase = null; | |||||
boolean isBidAudit = isBidAudit(procType); | |||||
if (isBidAudit) { | |||||
purchase = getPurchase(event.getInstCode()); | |||||
if (purchase == null) { | |||||
log.warn("未找到采购信息,无法发送信产待办:{}", event.getInstCode()); | |||||
return; | |||||
} | |||||
} | |||||
String bidName = purchase == null ? null : purchase.getBidName(); | |||||
MHTodoTypeEnum nextStep = ObjUtil.defaultIfNull(todoType.getNextStep(), todoType); | |||||
String tmpName = isBidAudit ? bidName : projectName; | |||||
if (StrUtil.isNotBlank(nextStep.getZwddMsg())) { | |||||
String zwddMsg = String.format(nextStep.getZwddMsg(), tmpName); | |||||
MhZwddWorkNoticeDTO notice = MhZwddWorkNoticeDTO.builder() | |||||
.content(zwddMsg) | |||||
.title(nextStep.getVal()) | |||||
.targetUser(userFullInfo.getMhUserId()) | |||||
.build(); | |||||
mhApiClient.sendZwddWorkNotice(notice); | |||||
} | |||||
if (StrUtil.isNotBlank(nextStep.getTodoMsg())) { | |||||
String todoMsg = String.format(nextStep.getTodoMsg(), tmpName); | |||||
MhTodoExtraParamDTO paramObj = MhTodoExtraParamDTO.builder() | |||||
.path(nextStep.getPagePath()) | |||||
.userName(userFullInfo.getRealName()) | |||||
.userId(createBy) | |||||
.build(); | |||||
String bizId; | |||||
if (isBidAudit) { | |||||
bizId = purchase.getId().toString(); | |||||
} else { | |||||
bizId = projectId.toString(); | |||||
} | |||||
mhTodoClient.addTodo(paramObj, userFullInfo, nextStep, bizId, todoMsg); | |||||
} | |||||
} | } | ||||
break; | break; | ||||
default: | default: | ||||
@@ -253,6 +297,14 @@ public class UserTaskCreateOrFinishListener { | |||||
} | } | ||||
} | } | ||||
private Purchase getPurchase(String instCode) { | |||||
PurchaseInst purchaseInst = purchaseInstService.getByInstCode(instCode); | |||||
if (purchaseInst != null) { | |||||
return purchaseService.getById(purchaseInst.getBidId()); | |||||
} | |||||
return null; | |||||
} | |||||
private MHTodoTypeEnum getMhTodoTypeEnum(ProjectProcessType procType) { | private MHTodoTypeEnum getMhTodoTypeEnum(ProjectProcessType procType) { | ||||
MHTodoTypeEnum todoType; | MHTodoTypeEnum todoType; | ||||
switch (procType) { | switch (procType) { | ||||
@@ -292,4 +344,16 @@ public class UserTaskCreateOrFinishListener { | |||||
return todoType; | return todoType; | ||||
} | } | ||||
private boolean isBidAudit(ProjectProcessType processType) { | |||||
switch (processType) { | |||||
case TEST_VALID: | |||||
case ADAPTION: | |||||
case ACCEPTANCE_DECLARATION_APPROVAL_PROCESS: | |||||
case SELF_TEST: | |||||
return Boolean.TRUE; | |||||
default: | |||||
} | |||||
return false; | |||||
} | |||||
} | } |
@@ -0,0 +1,52 @@ | |||||
package com.hz.pm.api.scheduler.listener.event; | |||||
import com.hz.pm.api.external.todo.enumerization.MHTodoTypeEnum; | |||||
import lombok.Getter; | |||||
import lombok.Setter; | |||||
import org.springframework.context.ApplicationEvent; | |||||
import java.io.Serializable; | |||||
import java.time.LocalDateTime; | |||||
import java.util.List; | |||||
/** | |||||
* <p> | |||||
* MhTodoHandedEvent | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 14:33 2024/10/19 | |||||
*/ | |||||
@Getter | |||||
@Setter | |||||
public class MhTodoHandedEvent extends ApplicationEvent { | |||||
public MhTodoHandedEvent(Object source) { | |||||
super(source); | |||||
} | |||||
public static MhTodoHandedEvent of(MHTodoTypeEnum mhTodoType, Long bizId) { | |||||
return of(mhTodoType, String.valueOf(bizId)); | |||||
} | |||||
private static MhTodoHandedEvent of(MHTodoTypeEnum mhTodoType, String bizId) { | |||||
MhTodoHandedEvent event = new MhTodoHandedEvent(LocalDateTime.now()); | |||||
event.setMhTodoType(mhTodoType); | |||||
event.setBizId(bizId); | |||||
return event; | |||||
} | |||||
public static MhTodoHandedEvent of(MHTodoTypeEnum mhTodoType, List<String> bizIds) { | |||||
MhTodoHandedEvent event = new MhTodoHandedEvent(LocalDateTime.now()); | |||||
event.setMhTodoType(mhTodoType); | |||||
event.setBizIds(bizIds); | |||||
return event; | |||||
} | |||||
private MHTodoTypeEnum mhTodoType; | |||||
private String bizId; | |||||
private List<String> bizIds; | |||||
} |
@@ -0,0 +1,58 @@ | |||||
package com.hz.pm.api.scheduler.listener.event; | |||||
import com.hz.pm.api.external.todo.enumerization.MHTodoTypeEnum; | |||||
import com.hz.pm.api.projectdeclared.model.entity.Purchase; | |||||
import com.hz.pm.api.projectdeclared.model.entity.Xinchuang; | |||||
import com.hz.pm.api.projectlib.model.entity.Project; | |||||
import lombok.Getter; | |||||
import lombok.Setter; | |||||
import org.springframework.context.ApplicationEvent; | |||||
import java.time.LocalDateTime; | |||||
/** | |||||
* <p> | |||||
* MhTodoSendEvent | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 14:48 2024/10/19 | |||||
*/ | |||||
@Getter | |||||
@Setter | |||||
public class MhTodoSendEvent extends ApplicationEvent { | |||||
public MhTodoSendEvent(Object source) { | |||||
super(source); | |||||
} | |||||
public static MhTodoSendEvent of(MHTodoTypeEnum mhTodoType, Project project){ | |||||
MhTodoSendEvent event = new MhTodoSendEvent(LocalDateTime.now()); | |||||
event.setProject(project); | |||||
event.setMhTodoType(mhTodoType); | |||||
return event; | |||||
} | |||||
public static MhTodoSendEvent of(MHTodoTypeEnum mhTodoType, Project project,Purchase purchase){ | |||||
MhTodoSendEvent event = of(mhTodoType, project); | |||||
event.setPurchase(purchase); | |||||
return event; | |||||
} | |||||
public static MhTodoSendEvent of(MHTodoTypeEnum mhTodoType, Xinchuang xinchuang) { | |||||
MhTodoSendEvent event = new MhTodoSendEvent(LocalDateTime.now()); | |||||
event.setXinchuang(xinchuang); | |||||
event.setMhTodoType(mhTodoType); | |||||
return event; | |||||
} | |||||
private MHTodoTypeEnum mhTodoType; | |||||
private Project project; | |||||
private Purchase purchase; | |||||
private Xinchuang xinchuang; | |||||
} |
@@ -0,0 +1,53 @@ | |||||
package com.hz.pm.api.scheduler.task; | |||||
import com.baomidou.mybatisplus.core.conditions.Wrapper; | |||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; | |||||
import com.hz.pm.api.external.todo.MHTodoClient; | |||||
import com.hz.pm.api.sys.model.entity.MhTodoRecord; | |||||
import com.hz.pm.api.sys.service.IMhTodoRecordService; | |||||
import lombok.RequiredArgsConstructor; | |||||
import org.springframework.context.annotation.Profile; | |||||
import org.springframework.scheduling.annotation.Scheduled; | |||||
import org.springframework.stereotype.Component; | |||||
import java.util.List; | |||||
import java.util.concurrent.TimeUnit; | |||||
import static com.hz.pm.api.sys.model.entity.MhTodoRecord.TodoStatusEnum.HANDED; | |||||
import static com.hz.pm.api.sys.model.entity.MhTodoRecord.TodoStatusEnum.HANDING; | |||||
/** | |||||
* <p> | |||||
* MhTodoCloseTask | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 13:49 2024/10/19 | |||||
*/ | |||||
@Component | |||||
@Profile("prod") | |||||
@RequiredArgsConstructor | |||||
public class MhTodoCloseTask { | |||||
private final IMhTodoRecordService mhTodoRecordService; | |||||
private final MHTodoClient mhTodoClient; | |||||
@Scheduled(fixedRate = 2, timeUnit = TimeUnit.MINUTES) | |||||
public void closeMhTodo() { | |||||
Wrapper<MhTodoRecord> query = Wrappers.lambdaQuery(MhTodoRecord.class) | |||||
.eq(MhTodoRecord::getStatus, HANDING.getCode()); | |||||
List<MhTodoRecord> mhTodoList = mhTodoRecordService.list(query); | |||||
if (mhTodoList.isEmpty()) { | |||||
return; | |||||
} | |||||
for (MhTodoRecord mhTodo : mhTodoList) { | |||||
if (mhTodoClient.complete(mhTodo.getMhTodoId())) { | |||||
Wrapper<MhTodoRecord> update = Wrappers.lambdaUpdate(MhTodoRecord.class) | |||||
.set(MhTodoRecord::getStatus, HANDED.getCode()) | |||||
.eq(MhTodoRecord::getId, mhTodo.getId()); | |||||
mhTodoRecordService.update(update); | |||||
} | |||||
} | |||||
} | |||||
} |
@@ -64,6 +64,7 @@ public class MhTodoRecord implements Serializable { | |||||
public enum TodoStatusEnum { | public enum TodoStatusEnum { | ||||
PENDING(1, "待处理"), | PENDING(1, "待处理"), | ||||
HANDING(4, "处理中"), | |||||
HANDED(2, "已处理"), | HANDED(2, "已处理"), | ||||
DELETED(3, "已删除"); | DELETED(3, "已删除"); | ||||