From eef5b81d3cbaf24bd27ef1af4eb953c83be9c208 Mon Sep 17 00:00:00 2001 From: lijiarao Date: Sun, 29 Sep 2024 17:16:07 +0800 Subject: [PATCH] =?UTF-8?q?add=20=E4=BC=81=E6=A0=87=E8=AE=A1=E5=88=92?= =?UTF-8?q?=E5=8F=98=E6=9B=B4=E6=B5=81=E7=A8=8B=20=E5=9F=BA=E7=A1=80?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../activiti/enums/ProcessTypeEnum.java | 5 +- .../process/common/enums/ProcessType.java | 5 +- .../ProcessPlanChangeController.java | 103 +++++ .../ProcessPlanChangeLinkController.java | 173 ++++++++ .../planchange/entity/ProcessPlanChange.java | 122 ++++++ .../entity/ProcessPlanChangeLink.java | 126 ++++++ .../mapper/ProcessPlanChangeLinkMapper.java | 15 + .../mapper/ProcessPlanChangeMapper.java | 15 + .../xml/ProcessPlanChangeLinkMapper.xml | 41 ++ .../mapper/xml/ProcessPlanChangeMapper.xml | 41 ++ .../service/ProcessPlanChangeLinkService.java | 57 +++ .../service/ProcessPlanChangeService.java | 407 ++++++++++++++++++ .../planchange/vo/ProcessPlanChangeVO.java | 34 ++ .../bpmn/企业标准年度制修订计划流程.bpmn | 4 +- .../resources/bpmn/企业标准计划变更流程.bpmn | 315 ++++++++++++++ .../ProcessPlanChangeController.java | 102 +++++ .../ProcessPlanChangeLinkController.java | 172 ++++++++ .../planchange/entity/ProcessPlanChange.java | 121 ++++++ .../entity/ProcessPlanChangeLink.java | 125 ++++++ .../mapper/ProcessPlanChangeLinkMapper.java | 15 + .../mapper/ProcessPlanChangeMapper.java | 15 + .../xml/ProcessPlanChangeLinkMapper.xml | 41 ++ .../mapper/xml/ProcessPlanChangeMapper.xml | 41 ++ .../service/ProcessPlanChangeLinkService.java | 57 +++ .../service/ProcessPlanChangeService.java | 184 ++++++++ 25 files changed, 2330 insertions(+), 6 deletions(-) create mode 100644 laws-modules/src/main/java/com/jero/modules/activiti/process/planchange/controller/ProcessPlanChangeController.java create mode 100644 laws-modules/src/main/java/com/jero/modules/activiti/process/planchange/controller/ProcessPlanChangeLinkController.java create mode 100644 laws-modules/src/main/java/com/jero/modules/activiti/process/planchange/entity/ProcessPlanChange.java create mode 100644 laws-modules/src/main/java/com/jero/modules/activiti/process/planchange/entity/ProcessPlanChangeLink.java create mode 100644 laws-modules/src/main/java/com/jero/modules/activiti/process/planchange/mapper/ProcessPlanChangeLinkMapper.java create mode 100644 laws-modules/src/main/java/com/jero/modules/activiti/process/planchange/mapper/ProcessPlanChangeMapper.java create mode 100644 laws-modules/src/main/java/com/jero/modules/activiti/process/planchange/mapper/xml/ProcessPlanChangeLinkMapper.xml create mode 100644 laws-modules/src/main/java/com/jero/modules/activiti/process/planchange/mapper/xml/ProcessPlanChangeMapper.xml create mode 100644 laws-modules/src/main/java/com/jero/modules/activiti/process/planchange/service/ProcessPlanChangeLinkService.java create mode 100644 laws-modules/src/main/java/com/jero/modules/activiti/process/planchange/service/ProcessPlanChangeService.java create mode 100644 laws-modules/src/main/java/com/jero/modules/activiti/process/planchange/vo/ProcessPlanChangeVO.java create mode 100644 laws-modules/src/main/resources/bpmn/企业标准计划变更流程.bpmn create mode 100644 src/main/java/com/jero/modules/activiti/process/planchange/controller/ProcessPlanChangeController.java create mode 100644 src/main/java/com/jero/modules/activiti/process/planchange/controller/ProcessPlanChangeLinkController.java create mode 100644 src/main/java/com/jero/modules/activiti/process/planchange/entity/ProcessPlanChange.java create mode 100644 src/main/java/com/jero/modules/activiti/process/planchange/entity/ProcessPlanChangeLink.java create mode 100644 src/main/java/com/jero/modules/activiti/process/planchange/mapper/ProcessPlanChangeLinkMapper.java create mode 100644 src/main/java/com/jero/modules/activiti/process/planchange/mapper/ProcessPlanChangeMapper.java create mode 100644 src/main/java/com/jero/modules/activiti/process/planchange/mapper/xml/ProcessPlanChangeLinkMapper.xml create mode 100644 src/main/java/com/jero/modules/activiti/process/planchange/mapper/xml/ProcessPlanChangeMapper.xml create mode 100644 src/main/java/com/jero/modules/activiti/process/planchange/service/ProcessPlanChangeLinkService.java create mode 100644 src/main/java/com/jero/modules/activiti/process/planchange/service/ProcessPlanChangeService.java diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/enums/ProcessTypeEnum.java b/laws-modules/src/main/java/com/jero/modules/activiti/enums/ProcessTypeEnum.java index 57190921..f40904fa 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/enums/ProcessTypeEnum.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/enums/ProcessTypeEnum.java @@ -17,8 +17,9 @@ public enum ProcessTypeEnum { MARKET_STANDARD_PUBLISH("市场清单发布流程", 4, "com.jero.modules.activiti.process.ms.service.impl.ProcessMarketStandardReleaseServiceImpl", "/workCenter/MarketListReleaseProcess", "/workCenter/MarketListReleaseProcess"), ENTERPRISE_STANDARD_ABOLISH_PUBLISH("企标废止发布流程", 5, "com.jero.modules.activiti.process.abolish.service.impl.ProcessAbolishReleaseServiceImpl", "/workCenter/AbolishReleaseProcess", "/workCenter/AbolishReleaseProcess"), ES_REVISION_ADVICE("企业标准制修订及征求意见流程", 6, "com.jero.modules.activiti.process.esRevisionAdvice.service.impl.EsRevisionServiceImpl","/workCenter/enterpriseStandardRevision/enterpriseStandardRevisionFlow","/workCenter/enterpriseStandardRevision"), - ANNUAL_INIT("年度制修订计划流程", 7, "com.jero.modules.activiti.process.annualinit.service.ProcessAnnualInitService","/workCenter/enterpriseStandardRevision/enterpriseStandardRevisionFlow","/workCenter/enterpriseStandardRevision"), - DOMESTIC_VEHICLE_CONTROL_PUBLISH("国内整车型号和VIN前八位管控流程", 8, "com.jero.modules.activiti.process.vehicledomestic.service.impl.ProcessVehicleDomesticReleaseServiceImpl","/workCenter/VehicleDomesticReleaseProcess","/workCenter/VehicleDomesticReleaseProcess") + ANNUAL_INIT("企业标准年度制修订计划流程", 7, "com.jero.modules.activiti.process.annualinit.service.ProcessAnnualInitService","/workCenter/ESAnnualRevisionPlanProcess","/workCenter/ESAnnualRevisionPlanProcess"), + DOMESTIC_VEHICLE_CONTROL_PUBLISH("国内整车型号和VIN前八位管控流程", 8, "com.jero.modules.activiti.process.vehicledomestic.service.impl.ProcessVehicleDomesticReleaseServiceImpl","/workCenter/VehicleDomesticReleaseProcess","/workCenter/VehicleDomesticReleaseProcess"), + PLAN_CHANGE("企业标准计划变更流程", 9, "com.jero.modules.activiti.process.planchange.service.ProcessPlanChangeService","/workCenter/enterpriseStandardRevision/enterpriseStandardRevisionFlow","/workCenter/enterpriseStandardRevision"), ; private final String name; diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/common/enums/ProcessType.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/common/enums/ProcessType.java index 8ea7e34f..37f06ecf 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/common/enums/ProcessType.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/common/enums/ProcessType.java @@ -17,8 +17,9 @@ public enum ProcessType { MARKET_STANDARD_PUBLISH("市场清单发布流程", "4", "market_standard_publish", "ProcessNewStandardImportServiceImpl"), ENTERPRISE_STANDARD_ABOLISH_PUBLISH("企标废止发布流程", "5", "enterprise_standard_abolish_publish", "ProcessAbolishReleaseServiceImpl"), ES_REVISION_ADVICE("企标制修订及征求意见流程", "6", "es_revision_advice", "ProcessEsRevisionServiceImpl"), - ANNUAL_INIT("年度制修订计划流程", "7", "process-annual-init", "ProcessAnnualInitService"), - DOMESTIC_VEHICLE_CONTROL_PUBLISH("国内整车型号和VIN前八位管控流程", "8", "domestic_vehicle_control_publish", "ProcessVehicleDomesticReleaseServiceImpl") + ANNUAL_INIT("企业标准年度制修订计划流程", "7", "process-annual-init", "ProcessAnnualInitService"), + DOMESTIC_VEHICLE_CONTROL_PUBLISH("国内整车型号和VIN前八位管控流程", "8", "domestic_vehicle_control_publish", "ProcessVehicleDomesticReleaseServiceImpl"), + PLAN_CHANGE("企业标准计划变更流程", "9", "process-plan-change", "ProcessPlanChangeService"), ; private final String name; diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/planchange/controller/ProcessPlanChangeController.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/planchange/controller/ProcessPlanChangeController.java new file mode 100644 index 00000000..dd3a5f03 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/planchange/controller/ProcessPlanChangeController.java @@ -0,0 +1,103 @@ +package com.jero.modules.activiti.process.planchange.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.jero.common.aspect.annotation.AutoLog; +import com.jero.common.aspect.annotation.DictPoint; +import com.jero.common.system.base.controller.JeroController; +import com.jero.common.system.query.QueryGenerator; +import com.jero.modules.activiti.enums.ProcessTypeEnum; +import com.jero.modules.activiti.process.common.entity.ProcessDraft; +import com.jero.modules.activiti.process.common.service.ActFlowCommonService; +import com.jero.modules.activiti.process.planchange.entity.ProcessPlanChange; +import com.jero.modules.activiti.process.planchange.service.ProcessPlanChangeService; +import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO; +import com.jero.modules.activiti.process.planchange.vo.ProcessPlanChangeVO; +import com.jero.modules.system.vo.IdMapBody; +import com.jero.modules.system.vo.IdsMapBody; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.formula.functions.T; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.commons.lang3.StringUtils; +import com.jero.common.api.vo.Result; +import com.jero.common.api.vo.ResultCommon; +import org.springframework.web.servlet.ModelAndView; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.Arrays; +import java.util.List; + +/** + * 企标计划变更流程表(ProcessPlanChange)表控制层 + * + * @author lijiarao + * @since 2024-09-29 15:14:54 + */ +@Slf4j +@Api(tags = "企标计划变更流程表") +@RestController +@RequestMapping("/process/processPlanChange") +public class ProcessPlanChangeController extends JeroController { + /** + * 服务对象 + */ + @Resource + private ProcessPlanChangeService processPlanChangeService; + @Resource + private ActFlowCommonService actFlowCommonService; + + @DictPoint + @GetMapping("/queryProcessInfoVO") + @AutoLog(value = "企标计划变更流程表-查询流程信息") + @ApiImplicitParam(name = "taskId", value = "任务id") + @ApiOperation("企标计划变更流程表-查询流程信息") + public Result queryProcessInfoVO(String taskId) { + ProcessDraft draft = actFlowCommonService.getExistDraftByTaskId(taskId, ProcessTypeEnum.ANNUAL_INIT); + if (draft != null) { + return Result.OK(draft); + } + return Result.OK(processPlanChangeService.getHandleData(taskId)); + } + + @AutoLog(value = "企标计划变更流程表-发起流程") + @ApiOperation(value = "企标计划变更流程表-发起流程") + @PostMapping(value = "/startProcess") + public Result startProcess(@Validated @RequestBody ProcessInfoVO processInfoVO) { + processPlanChangeService.startProcess(processInfoVO); + return Result.OK(); + } + + @AutoLog(value = "企标计划变更流程表-同意") + @ApiOperation(value = "企标计划变更流程表-同意") + @PostMapping("/agree") + public Result agree(@Validated @RequestBody ProcessInfoVO processInfoVO) { + processPlanChangeService.approveTask(processInfoVO, true); + return Result.OK(); + } + + @AutoLog(value = "企标计划变更流程表-驳回") + @ApiOperation(value = "企标计划变更流程表-驳回") + @PostMapping("/reject") + public Result reject(@Validated @RequestBody ProcessInfoVO processInfoVO) { + processPlanChangeService.approveTask(processInfoVO, false); + return Result.OK(); + } + + @AutoLog(value = "企标计划变更流程表-提交") + @ApiOperation(value = "企标计划变更流程表-提交") + @PostMapping("/submit") + public Result submit(@Validated @RequestBody ProcessInfoVO processInfoVO) { + processPlanChangeService.submit(processInfoVO); + return Result.OK(); + } + +} + diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/planchange/controller/ProcessPlanChangeLinkController.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/planchange/controller/ProcessPlanChangeLinkController.java new file mode 100644 index 00000000..7ace2fdb --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/planchange/controller/ProcessPlanChangeLinkController.java @@ -0,0 +1,173 @@ +package com.jero.modules.activiti.process.planchange.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.jero.common.aspect.annotation.AutoLog; +import com.jero.common.system.base.controller.JeroController; +import com.jero.common.system.query.QueryGenerator; +import com.jero.modules.activiti.process.planchange.entity.ProcessPlanChangeLink; +import com.jero.modules.activiti.process.planchange.service.ProcessPlanChangeLinkService; +import com.jero.modules.system.vo.IdMapBody; +import com.jero.modules.system.vo.IdsMapBody; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.commons.lang3.StringUtils; +import com.jero.common.api.vo.Result; +import com.jero.common.api.vo.ResultCommon; +import org.springframework.web.servlet.ModelAndView; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +/** + * 企标计划变更流程关联标准(ProcessPlanChangeLink)表控制层 + * + * @author lijiarao + * @since 2024-09-29 15:15:10 + */ +@Slf4j +@Api(tags = "企标计划变更流程关联标准") +@RestController +@RequestMapping("processPlanChangeLink") +public class ProcessPlanChangeLinkController extends JeroController { + /** + * 服务对象 + */ + @Resource + private ProcessPlanChangeLinkService processPlanChangeLinkService; + + /** + * 分页列表查询 + */ + @ApiOperation(value = "企标计划变更流程关联标准-分页列表查询") + @GetMapping(value = "/page") + public Result> queryPageList(ProcessPlanChangeLink processPlanChangeLink, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + Page page = new Page<>(pageNo, pageSize); + IPage pageList = processPlanChangeLinkService.pageList(page, processPlanChangeLink, req); + return Result.OK(pageList); + } + + /** + * 列表查询 + */ + @ApiOperation(value = "企标计划变更流程关联标准-列表查询", notes = "企标计划变更流程关联标准-列表查询") + @GetMapping(value = "/list") + public Result> queryList(ProcessPlanChangeLink processPlanChangeLink, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(processPlanChangeLink, req.getParameterMap()); + List list = processPlanChangeLinkService.list(queryWrapper); + return Result.OK(list); + } + + /** + * 添加 + */ + @AutoLog(value = "企标计划变更流程关联标准-添加") + @ApiOperation(value = "企标计划变更流程关联标准-添加", notes = "企标计划变更流程关联标准-添加") + @PostMapping(value = "/add") + public Result add(@Validated @RequestBody ProcessPlanChangeLink processPlanChangeLink) { + processPlanChangeLinkService.add(processPlanChangeLink); + return Result.OK(ResultCommon.OK); + } + + /** + * 编辑 + */ + @AutoLog(value = "企标计划变更流程关联标准-编辑") + @ApiOperation(value = "企标计划变更流程关联标准-编辑", notes = "企标计划变更流程关联标准-编辑") + @PostMapping(value = "/edit") + public Result edit(@Validated @RequestBody ProcessPlanChangeLink processPlanChangeLink) { + processPlanChangeLinkService.editById(processPlanChangeLink); + return Result.OK(ResultCommon.EDIT_OK); + } + + /** + * 通过id删除 + */ + @AutoLog(value = "企标计划变更流程关联标准-通过id删除") + @ApiOperation(value = "企标计划变更流程关联标准-通过id删除", notes = "企标计划变更流程关联标准-通过id删除") + @PostMapping(value = "/delete") + public Result delete(@RequestBody IdMapBody map) { + String id = map.getId(); + if (StringUtils.isBlank(id)) { + return Result.error("请选择数据"); + } + processPlanChangeLinkService.deleteById(id); + return Result.OK(ResultCommon.SUCCESSFULLY_DELETED); + } + + /** + * 批量删除 + */ + @AutoLog(value = "企标计划变更流程关联标准-批量删除") + @ApiOperation(value = "企标计划变更流程关联标准-批量删除", notes = "企标计划变更流程关联标准-批量删除") + @PostMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestBody IdsMapBody map) { + String ids = map.getIds(); + if (StringUtils.isBlank(ids)) { + return Result.error(ResultCommon.PLEASE_SELECT_DATA); + } + List idList = Arrays.asList(map.getIds().split(",")); + this.processPlanChangeLinkService.deleteByIds(idList); + return Result.OK(ResultCommon.SUCCESSFULLY_DELETED_IN_BULK); + } + + /** + * 通过id查询 + */ + @AutoLog(value = "企标计划变更流程关联标准-通过id查询") + @ApiOperation(value = "企标计划变更流程关联标准-通过id查询", notes = "企标计划变更流程关联标准-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name = "id") String id) { + ProcessPlanChangeLink processPlanChangeLink = processPlanChangeLinkService.queryById(id); + if (processPlanChangeLink == null) { + return Result.error(ResultCommon.NO_CORRESPONDING_DATA_FOUND); + } + return Result.OK(processPlanChangeLink); + } + + /** + * 导出excel + */ + @ApiOperation(value = "企标计划变更流程关联标准-导出excel") + @GetMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest req, ProcessPlanChangeLink processPlanChangeLink) { + Page page = new Page<>(-1, -1); + IPage pageList = processPlanChangeLinkService.pageList(page, processPlanChangeLink, req); + // 获取数据 + List records = pageList.getRecords(); + return super.exportListXls(records, ProcessPlanChangeLink.class, "企标计划变更流程关联标准"); + } + + /** + * 下载导入模板 + */ + @ApiOperation(value = "企标计划变更流程关联标准-下载导入模板") + @GetMapping(value = "/exportTemplate") + public ModelAndView exportTemplate(HttpServletRequest req, ProcessPlanChangeLink processPlanChangeLink) { + List records = new ArrayList<>(); + return super.exportListXls(records, ProcessPlanChangeLink.class, "企标计划变更流程关联标准"); + } + + /** + * 通过excel导入数据 + */ + @ApiOperation(value = "企标计划变更流程关联标准-通过excel导入数据") + @PostMapping(value = "/importExcel") + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, ProcessPlanChangeLink.class); + } + +} + diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/planchange/entity/ProcessPlanChange.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/planchange/entity/ProcessPlanChange.java new file mode 100644 index 00000000..69225316 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/planchange/entity/ProcessPlanChange.java @@ -0,0 +1,122 @@ +package com.jero.modules.activiti.process.planchange.entity; + +import java.util.Date; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; + +import lombok.Data; +import io.swagger.annotations.ApiModel; + +/** + * 企标计划变更流程表(ProcessPlanChange)实体类 + * + * @author lijiarao + * @since 2024-09-29 15:14:54 + */ +@Data +@TableName("process_plan_change") +@ApiModel(value = "ProcessPlanChange", description = "企标计划变更流程表") +public class ProcessPlanChange implements Serializable { + private static final long serialVersionUID = -96899431864255187L; + /** + * 主键id + */ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "主键id") + private String id; + /** + * 变更类型 + */ + @ApiModelProperty(value = "变更类型") + @Excel(name = "变更类型", width = 15) + private String changeType; + /** + * 部门经理 + */ + @ApiModelProperty(value = "部门经理") + @Excel(name = "部门经理", width = 15) + private String departManager; + /** + * 法规部门处理人id + */ + @ApiModelProperty(value = "法规部门处理人id") + @Excel(name = "法规部门处理人id", width = 15) + private String standardDepartHandler; + /** + * 法规部门经理id + */ + @ApiModelProperty(value = "法规部门经理id") + @Excel(name = "法规部门经理id", width = 15) + private String standardDepartManager; + /** + * 高级经理 + */ + @ApiModelProperty(value = "高级经理") + @Excel(name = "高级经理", width = 15) + private String seniorManager; + /** + * 总监 + */ + @ApiModelProperty(value = "总监") + @Excel(name = "总监", width = 15) + private String chiefInspector; + /** + * 授权人 + */ + @ApiModelProperty(value = "授权人") + @Excel(name = "授权人", width = 15) + private String authorizedPerson; + /** + * 附件 + */ + @ApiModelProperty(value = "附件") + @Excel(name = "附件", width = 15) + private String file; + /** + * 创建人 + */ + @ApiModelProperty(value = "创建人") + private String createBy; + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date createTime; + /** + * 更新人 + */ + @ApiModelProperty(value = "更新人") + private String updateBy; + /** + * 更新时间 + */ + @ApiModelProperty(value = "更新时间") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date updateTime; + /** + * 所属部门 + */ + @ApiModelProperty(value = "所属部门") + private String orgCode; + /** + * 删除状态(0-正常,1-删除) + */ + @ApiModelProperty(value = "删除状态(0-正常,1-删除)") + @TableLogic + private String delFlag; + + +} + diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/planchange/entity/ProcessPlanChangeLink.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/planchange/entity/ProcessPlanChangeLink.java new file mode 100644 index 00000000..7561c785 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/planchange/entity/ProcessPlanChangeLink.java @@ -0,0 +1,126 @@ +package com.jero.modules.activiti.process.planchange.entity; + +import java.util.Date; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; + +import lombok.Data; +import io.swagger.annotations.ApiModel; + +/** + * 企标计划变更流程关联标准(ProcessPlanChangeLink)实体类 + * + * @author lijiarao + * @since 2024-09-29 15:15:11 + */ +@Data +@TableName("process_plan_change_link") +@ApiModel(value = "ProcessPlanChangeLink", description = "企标计划变更流程关联标准") +public class ProcessPlanChangeLink implements Serializable { + private static final long serialVersionUID = -68223646123689976L; + /** + * 主键id + */ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "主键id") + private String id; + /** + * 流程主表id + */ + @ApiModelProperty(value = "流程主表id") + @Excel(name = "流程主表id", width = 15) + private String processId; + /** + * 制修订类别 + */ + @ApiModelProperty(value = "制修订类别") + @Excel(name = "制修订类别", width = 15) + private String revisionType; + /** + * 企标计划 + */ + @ApiModelProperty(value = "企标计划") + @Excel(name = "企标计划", width = 15) + private String planId; + /** + * 起草人 + */ + @ApiModelProperty(value = "起草人") + @Excel(name = "起草人", width = 15) + private String draftingUser; + /** + * 所在部门id + */ + @ApiModelProperty(value = "所在部门id") + @Excel(name = "所在部门id", width = 15) + private String departId; + /** + * 初稿完成日期变更后 + */ + @ApiModelProperty(value = "初稿完成日期变更后") + @Excel(name = "初稿完成日期变更后", width = 15, format = "yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date draftCompleteDate; + /** + * 计划归档日期变更后 + */ + @ApiModelProperty(value = "计划归档日期变更后") + @Excel(name = "计划归档日期变更后", width = 15, format = "yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date planArchivingDate; + /** + * 变更原因 + */ + @ApiModelProperty(value = "变更原因") + @Excel(name = "变更原因", width = 15) + private String changeReason; + /** + * 创建人 + */ + @ApiModelProperty(value = "创建人") + private String createBy; + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date createTime; + /** + * 更新人 + */ + @ApiModelProperty(value = "更新人") + private String updateBy; + /** + * 更新时间 + */ + @ApiModelProperty(value = "更新时间") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date updateTime; + /** + * 所属部门 + */ + @ApiModelProperty(value = "所属部门") + private String orgCode; + /** + * 删除状态(0-正常,1-删除) + */ + @ApiModelProperty(value = "删除状态(0-正常,1-删除)") + @TableLogic + private Integer delFlag; + + +} + diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/planchange/mapper/ProcessPlanChangeLinkMapper.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/planchange/mapper/ProcessPlanChangeLinkMapper.java new file mode 100644 index 00000000..b623ecee --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/planchange/mapper/ProcessPlanChangeLinkMapper.java @@ -0,0 +1,15 @@ +package com.jero.modules.activiti.process.planchange.mapper; + +import com.jero.modules.activiti.process.planchange.entity.ProcessPlanChangeLink; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * 企标计划变更流程关联标准(ProcessPlanChangeLink)表数据库访问层 + * + * @author lijiarao + * @since 2024-09-29 15:15:11 + */ +public interface ProcessPlanChangeLinkMapper extends BaseMapper { + +} + diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/planchange/mapper/ProcessPlanChangeMapper.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/planchange/mapper/ProcessPlanChangeMapper.java new file mode 100644 index 00000000..4f2d7662 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/planchange/mapper/ProcessPlanChangeMapper.java @@ -0,0 +1,15 @@ +package com.jero.modules.activiti.process.planchange.mapper; + +import com.jero.modules.activiti.process.planchange.entity.ProcessPlanChange; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * 企标计划变更流程表(ProcessPlanChange)表数据库访问层 + * + * @author lijiarao + * @since 2024-09-29 15:14:54 + */ +public interface ProcessPlanChangeMapper extends BaseMapper { + +} + diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/planchange/mapper/xml/ProcessPlanChangeLinkMapper.xml b/laws-modules/src/main/java/com/jero/modules/activiti/process/planchange/mapper/xml/ProcessPlanChangeLinkMapper.xml new file mode 100644 index 00000000..6078b8e6 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/planchange/mapper/xml/ProcessPlanChangeLinkMapper.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + id, + process_id, + revision_type, + plan_id, + drafting_user, + depart_id, + draft_complete_date, + plan_archiving_date, + change_reason, + create_by, + create_time, + update_by, + update_time, + org_code, + del_flag + + + diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/planchange/mapper/xml/ProcessPlanChangeMapper.xml b/laws-modules/src/main/java/com/jero/modules/activiti/process/planchange/mapper/xml/ProcessPlanChangeMapper.xml new file mode 100644 index 00000000..f0ecd0ec --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/planchange/mapper/xml/ProcessPlanChangeMapper.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + id, + change_type, + depart_manager, + standard_depart_handler, + standard_depart_manager, + senior_manager, + chief_inspector, + authorized_person, + file, + create_by, + create_time, + update_by, + update_time, + org_code, + del_flag + + + diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/planchange/service/ProcessPlanChangeLinkService.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/planchange/service/ProcessPlanChangeLinkService.java new file mode 100644 index 00000000..0f4df327 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/planchange/service/ProcessPlanChangeLinkService.java @@ -0,0 +1,57 @@ +package com.jero.modules.activiti.process.planchange.service; + +import com.jero.modules.activiti.process.planchange.entity.ProcessPlanChangeLink; +import com.jero.modules.activiti.process.planchange.mapper.ProcessPlanChangeLinkMapper; +import org.springframework.stereotype.Service; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; + +import lombok.extern.slf4j.Slf4j; + +import java.util.List; + +/** + * 企标计划变更流程关联标准(ProcessPlanChangeLink)表服务实现类 + * + * @author lijiarao + * @since 2024-09-29 15:15:11 + */ +@Slf4j +@Service() +public class ProcessPlanChangeLinkService extends ServiceImpl { + @Resource + private ProcessPlanChangeLinkMapper processPlanChangeLinkMapper; + + public IPage pageList(Page page, ProcessPlanChangeLink processPlanChangeLink, HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(processPlanChangeLink, req.getParameterMap()); + return this.page(page, queryWrapper); + } + + public void add(ProcessPlanChangeLink processPlanChangeLink) { + this.save(processPlanChangeLink); + } + + public void editById(ProcessPlanChangeLink processPlanChangeLink) { + this.updateById(processPlanChangeLink); + } + + public void deleteById(String id) { + this.removeById(id); + } + + public void deleteByIds(List idList) { + for (String id : idList) { + deleteById(id); + } + } + + public ProcessPlanChangeLink queryById(String id) { + ProcessPlanChangeLink processPlanChangeLink = this.getById(id); + return processPlanChangeLink; + } +} + diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/planchange/service/ProcessPlanChangeService.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/planchange/service/ProcessPlanChangeService.java new file mode 100644 index 00000000..2875aee7 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/planchange/service/ProcessPlanChangeService.java @@ -0,0 +1,407 @@ +package com.jero.modules.activiti.process.planchange.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.google.common.collect.Lists; +import com.jero.common.system.api.ISysBaseAPI; +import com.jero.modules.activiti.common.ActivitiCommon; +import com.jero.modules.activiti.entity.ProcessAll; +import com.jero.modules.activiti.entity.ProcessApprovalRecord; +import com.jero.modules.activiti.enums.ProcessTypeEnum; +import com.jero.modules.activiti.process.annualinit.common.ProcessAnnualInitCommon; +import com.jero.modules.activiti.process.common.common.DraftCommon; +import com.jero.modules.activiti.process.common.enums.ProcessType; +import com.jero.modules.activiti.process.fb.common.ProcessDefinitionKey; +import com.jero.modules.activiti.process.fb.dto.BasicProcessInfoDTO; +import com.jero.modules.activiti.process.fb.dto.BasicTaskInfoDTO; +import com.jero.modules.activiti.process.fb.dto.ProcessDTO; +import com.jero.modules.activiti.process.fb.service.IProcessHandleService; +import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO; +import com.jero.modules.activiti.process.planchange.entity.ProcessPlanChange; +import com.jero.modules.activiti.process.planchange.entity.ProcessPlanChangeLink; +import com.jero.modules.activiti.process.planchange.mapper.ProcessPlanChangeMapper; +import com.jero.modules.activiti.process.planchange.vo.ProcessPlanChangeVO; +import com.jero.modules.activiti.service.ProcessAllService; +import com.jero.modules.laws.common.util.CurrentUserUtil; +import com.jero.modules.laws.enterprise.entity.ESPProjectStatus; +import com.jero.modules.laws.enterprise.entity.EnterpriseStandardPlan; +import com.jero.modules.laws.enterprise.enums.ESPlanStatusEnum; +import com.jero.modules.laws.enterprise.service.EnterpriseStandardPlanService; +import org.activiti.engine.TaskService; +import org.activiti.engine.task.Task; +import org.springframework.stereotype.Service; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; + +import org.apache.commons.lang3.StringUtils; +import lombok.extern.slf4j.Slf4j; + +import java.util.*; + +/** + * 企标计划变更流程表(ProcessPlanChange)表服务实现类 + * + * @author lijiarao + * @since 2024-09-29 15:14:55 + */ +@Slf4j +@Service() +public class ProcessPlanChangeService extends ServiceImpl { + @Resource + private ProcessPlanChangeMapper processPlanChangeMapper; + @Resource + private ISysBaseAPI sysBaseAPI; + @Resource + private IProcessHandleService processHandleService; + @Resource + private ProcessAllService processAllService; + @Resource + private TaskService taskService; + @Resource + private ProcessPlanChangeLinkService planChangeLinkService; + @Resource + private EnterpriseStandardPlanService esPlanService; + + public void startProcess(ProcessInfoVO processInfoVO) { + Map userInfoMap = processInfoVO.getUserInfoMap(); + ProcessPlanChangeVO businessInfoDTO = processInfoVO.getBusinessInfoDTO(); + ProcessPlanChange planChange = businessInfoDTO.getPlanChange(); + //补充流程主表信息 + String departManagerList = (String) userInfoMap.get("departManagerList"); + String standardDepartHandler = (String) userInfoMap.get("standardDepartHandler"); + String standardDepartManager = (String) userInfoMap.get("standardDepartManager"); + String seniorManagerList = (String) userInfoMap.get("seniorManagerList"); + String chiefInspectorList = (String) userInfoMap.get("chiefInspectorList"); + String authorizedPersonList = (String) userInfoMap.get("authorizedPersonList"); + + planChange.setDepartManager(departManagerList); + planChange.setStandardDepartHandler(standardDepartHandler); + planChange.setStandardDepartManager(standardDepartManager); + planChange.setSeniorManager(seniorManagerList); + planChange.setChiefInspector(chiefInspectorList); + planChange.setAuthorizedPerson(authorizedPersonList); + + this.saveOrUpdate(planChange); + String annualInitId = planChange.getId(); + List planChangeLinkList = businessInfoDTO.getPlanChangeLinkList(); + for (ProcessPlanChangeLink link : planChangeLinkList) { + link.setProcessId(annualInitId); + } + planChangeLinkService.saveOrUpdateBatch(planChangeLinkList); + processInfoVO.setBusinessId(annualInitId); + + //启动流程 + BasicProcessInfoDTO basicProcessInfoDTO = processInfoVO.getBasicProcessInfoDTO(); + basicProcessInfoDTO.setProcessDefinitionId(processHandleService.getDefinitionIdByKey(ProcessType.ANNUAL_INIT.getProcessKey())); // 流程定义id + basicProcessInfoDTO.setProcessType(ProcessTypeEnum.ANNUAL_INIT.getValue()); // 流程类型 + userInfoMap.put(ProcessAnnualInitCommon.MAIN_DRAFTING_USER, CurrentUserUtil.getId()); + processInfoVO.setUserInfoMap(userInfoMap); + String processInstanceId = processHandleService.startProcess(processInfoVO); + + //start 先保存一份初始草稿 + processInfoVO.setSaveSource(DraftCommon.INITIAL_SOURCE); + processHandleService.saveToDraft(processInfoVO, CurrentUserUtil.getId()); + //end 保存初始草稿结束 + //保存快照 start + saveToSnapshot(processInfoVO, processInstanceId); + //保存快照 end + } + + + public void submit(ProcessInfoVO processInfoVO) { + BasicTaskInfoDTO basicTaskInfoDTO = processInfoVO.getBasicTaskInfoDTO(); + String taskId = basicTaskInfoDTO.getTaskId(); + ProcessDTO processDTO = processHandleService.getProcessDTO(taskId); + String processInstanceId = processDTO.getProcessInstanceId(); + ProcessAll processAll = processAllService.getByProcessInstanceId(processInstanceId); + processInfoVO.setBusinessId(processAll.getProjectId()); + Task task = processDTO.getTask(); + String taskDefinitionKey = task.getTaskDefinitionKey(); + processHandleService.updateApprovalRecord(processInfoVO); + + Map userInfoMap = processInfoVO.getUserInfoMap(); + ProcessPlanChangeVO businessInfoDTO = processInfoVO.getBusinessInfoDTO(); + ProcessPlanChange planChange = businessInfoDTO.getPlanChange(); + //补充流程主表信息 + String departManagerList = (String) userInfoMap.get("departManagerList"); + String standardDepartHandler = (String) userInfoMap.get("standardDepartHandler"); + String standardDepartManager = (String) userInfoMap.get("standardDepartManager"); + String seniorManagerList = (String) userInfoMap.get("seniorManagerList"); + String chiefInspectorList = (String) userInfoMap.get("chiefInspectorList"); + String authorizedPersonList = (String) userInfoMap.get("authorizedPersonList"); + + planChange.setDepartManager(departManagerList); + planChange.setStandardDepartHandler(standardDepartHandler); + planChange.setStandardDepartManager(standardDepartManager); + planChange.setSeniorManager(seniorManagerList); + planChange.setChiefInspector(chiefInspectorList); + planChange.setAuthorizedPerson(authorizedPersonList); + + this.saveOrUpdate(planChange); + String annualInitId = planChange.getId(); + //先删除,在新增 + LambdaQueryWrapper myQuery = Wrappers.lambdaQuery(ProcessPlanChangeLink.class); + myQuery.eq(ProcessPlanChangeLink::getProcessId, planChange); + planChangeLinkService.remove(myQuery); + + List planChangeLinkList = businessInfoDTO.getPlanChangeLinkList(); + for (ProcessPlanChangeLink link : planChangeLinkList) { + link.setProcessId(annualInitId); + } + planChangeLinkService.saveOrUpdateBatch(planChangeLinkList); + + // 完成任务 + Map variables = new HashMap<>(); + taskService.complete(processDTO.getTaskId(), variables); + + //保存快照 start + saveToSnapshot(processInfoVO, processInstanceId); + //保存快照 end + } + + private void saveToSnapshot(ProcessInfoVO processInfoVO, String processInstanceId) { + // 获取流程通用数据 + ProcessAll process = processAllService.getByProcessInstanceId(processInstanceId); + if(!Objects.isNull(process)){ + BasicProcessInfoDTO processInfoDTO = new BasicProcessInfoDTO(); + processInfoDTO.setProcessName(process.getPrcName()); + processInfoDTO.setProcessType(process.getPrcType()); + processInfoDTO.setProcessDefinitionId(process.getProcessDefinitionId()); + processInfoDTO.setProcessInstanceId(process.getProcessInstanceId()); + processInfoDTO.setProcessDescription(process.getPrcMes()); + processInfoDTO.setProcessDueDate(process.getDueTime()); + processInfoVO.setBasicProcessInfoDTO(processInfoDTO); + // 保存快照 + processHandleService.saveToSnapshot(processInfoVO, CurrentUserUtil.getId()); + } + } + + public void approveTask(ProcessInfoVO processInfoVO, boolean pass) { + BasicTaskInfoDTO basicTaskInfoDTO = processInfoVO.getBasicTaskInfoDTO(); + String taskId = basicTaskInfoDTO.getTaskId(); + ProcessDTO processDTO = processHandleService.getProcessDTO(taskId); + String processInstanceId = processDTO.getProcessInstanceId(); + ProcessAll processAll = processAllService.getByProcessInstanceId(processInstanceId); + processInfoVO.setBusinessId(processAll.getProjectId()); + Task task = processDTO.getTask(); + String taskDefinitionKey = task.getTaskDefinitionKey(); + processHandleService.updateApprovalRecord(processInfoVO); + + switch (taskDefinitionKey) { + //部门经理审批 + case ProcessAnnualInitCommon.BMJLSP: + bmjlspApprove(processInfoVO, processDTO, pass); + break; + //法规部门处理人审批 + case ProcessAnnualInitCommon.FGBMCLRSP: + fgbmclrspApprove(processInfoVO, processDTO, pass); + break; + //法规部门经理审批 + case ProcessAnnualInitCommon.FGBMJLSP: + fgbmjlspApprove(processInfoVO, processDTO, pass); + break; + //高级经理审批 + case ProcessAnnualInitCommon.GJJLSP: + gjjlspApprove(processInfoVO, processDTO, pass); + break; + //总监审批 + case ProcessAnnualInitCommon.ZJSP: + zjspApprove(processInfoVO, processDTO, pass); + break; + //授权人审批 + case ProcessAnnualInitCommon.SQRSP: + sqrspApprove(processInfoVO, processDTO, pass); + break; + default: + } + //保存快照 start + saveToSnapshot(processInfoVO, processInstanceId); + //保存快照 end + } + + private void bmjlspApprove(ProcessInfoVO processInfoVO, ProcessDTO processDTO, boolean pass) { + ProcessApprovalRecord processApprovalRecord = processDTO.getProcessApprovalRecord(); + String originUserId = processApprovalRecord.getOriginUserId(); + String userId = CurrentUserUtil.getId(); + String businessId = processInfoVO.getBusinessId(); + ProcessPlanChange planChange = this.getById(businessId); + + // 完成任务 + Map variables = new HashMap<>(); + variables.put(ActivitiCommon.PASS, pass); + variables.put(ProcessAnnualInitCommon.STANDARD_DEPART_HANDLER, planChange.getStandardDepartHandler()); + taskService.complete(processDTO.getTaskId(), variables); + if (!Objects.equals(userId, originUserId)) { + String departManager = planChange.getDepartManager(); + String userIdList = departManager.replaceAll(originUserId, userId); + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(ProcessPlanChange::getId, businessId); + updateWrapper.set(ProcessPlanChange::getDepartManager, userIdList); + update(updateWrapper); + } + } + + private void fgbmclrspApprove(ProcessInfoVO processInfoVO, ProcessDTO processDTO, boolean pass) { + ProcessApprovalRecord processApprovalRecord = processDTO.getProcessApprovalRecord(); + String originUserId = processApprovalRecord.getOriginUserId(); + String userId = CurrentUserUtil.getId(); + String businessId = processInfoVO.getBusinessId(); + ProcessPlanChange planChange = this.getById(businessId); + // 完成任务 + Map variables = new HashMap<>(); + variables.put(ActivitiCommon.PASS, pass); + variables.put(ProcessAnnualInitCommon.STANDARD_DEPART_MANAGER, planChange.getStandardDepartManager()); + + taskService.complete(processDTO.getTaskId(), variables); + if (!Objects.equals(userId, originUserId)) { + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(ProcessPlanChange::getId, businessId); + updateWrapper.set(ProcessPlanChange::getStandardDepartHandler, userId); + update(updateWrapper); + } + } + + private void fgbmjlspApprove(ProcessInfoVO processInfoVO, ProcessDTO processDTO, boolean pass) { + ProcessApprovalRecord processApprovalRecord = processDTO.getProcessApprovalRecord(); + String originUserId = processApprovalRecord.getOriginUserId(); + String userId = CurrentUserUtil.getId(); + String businessId = processInfoVO.getBusinessId(); + ProcessPlanChange planChange = this.getById(businessId); + + // 完成任务 + Map variables = new HashMap<>(); + variables.put(ActivitiCommon.PASS, pass); + variables.put(ProcessAnnualInitCommon.SENIOR_MANAGER_LIST, Arrays.asList(planChange.getSeniorManager().split(","))); + + taskService.complete(processDTO.getTaskId(), variables); + if (!Objects.equals(userId, originUserId)) { + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(ProcessPlanChange::getId, businessId); + updateWrapper.set(ProcessPlanChange::getStandardDepartManager, userId); + update(updateWrapper); + } + } + + private void gjjlspApprove(ProcessInfoVO processInfoVO, ProcessDTO processDTO, boolean pass) { + ProcessApprovalRecord processApprovalRecord = processDTO.getProcessApprovalRecord(); + String originUserId = processApprovalRecord.getOriginUserId(); + String userId = CurrentUserUtil.getId(); + String businessId = processInfoVO.getBusinessId(); + ProcessPlanChange planChange = this.getById(businessId); + + // 完成任务 + Map variables = new HashMap<>(); + variables.put(ActivitiCommon.PASS, pass); + variables.put(ProcessAnnualInitCommon.CHIEF_INSPECTOR_LIST, Arrays.asList(planChange.getChiefInspector().split(","))); + taskService.complete(processDTO.getTaskId(), variables); + if (!Objects.equals(userId, originUserId)) { + String departManager = planChange.getSeniorManager(); + String userIdList = departManager.replaceAll(originUserId, userId); + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(ProcessPlanChange::getId, businessId); + updateWrapper.set(ProcessPlanChange::getSeniorManager, userIdList); + update(updateWrapper); + } + } + + private void zjspApprove(ProcessInfoVO processInfoVO, ProcessDTO processDTO, boolean pass) { + ProcessApprovalRecord processApprovalRecord = processDTO.getProcessApprovalRecord(); + String originUserId = processApprovalRecord.getOriginUserId(); + String userId = CurrentUserUtil.getId(); + String businessId = processInfoVO.getBusinessId(); + ProcessPlanChange planChange = this.getById(businessId); + + // 完成任务 + Map variables = new HashMap<>(); + variables.put(ActivitiCommon.PASS, pass); + variables.put(ProcessAnnualInitCommon.AUTHORIZED_PERSON_LIST, Arrays.asList(planChange.getAuthorizedPerson().split(","))); + taskService.complete(processDTO.getTaskId(), variables); + if (!Objects.equals(userId, originUserId)) { + String departManager = planChange.getChiefInspector(); + String userIdList = departManager.replaceAll(originUserId, userId); + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(ProcessPlanChange::getId, businessId); + updateWrapper.set(ProcessPlanChange::getChiefInspector, userIdList); + update(updateWrapper); + } + } + + private void sqrspApprove(ProcessInfoVO processInfoVO, ProcessDTO processDTO, boolean pass) { + ProcessApprovalRecord processApprovalRecord = processDTO.getProcessApprovalRecord(); + String originUserId = processApprovalRecord.getOriginUserId(); + String userId = CurrentUserUtil.getId(); + String businessId = processInfoVO.getBusinessId(); + ProcessPlanChange planChange = this.getById(businessId); + + // 完成任务 + Map variables = new HashMap<>(); + variables.put(ActivitiCommon.PASS, pass); + taskService.complete(processDTO.getTaskId(), variables); + if (!Objects.equals(userId, originUserId)) { + String departManager = planChange.getAuthorizedPerson(); + String userIdList = departManager.replaceAll(originUserId, userId); + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(ProcessPlanChange::getId, businessId); + updateWrapper.set(ProcessPlanChange::getAuthorizedPerson, userIdList); + update(updateWrapper); + } + //推送到企标计划 + if (pass){ + LambdaQueryWrapper myQuery = Wrappers.lambdaQuery(ProcessPlanChangeLink.class); + myQuery.eq(ProcessPlanChangeLink::getProcessId, businessId); + List list = planChangeLinkService.list(myQuery); + List enterpriseStandardPlanList = convertToEnterpriseStandardPlanList(list); + esPlanService.saveBatch(enterpriseStandardPlanList); + } + } + + private List convertToEnterpriseStandardPlanList(List list) { + List enterpriseStandardPlanlist= Lists.newArrayList(); + for (ProcessPlanChangeLink ProcessPlanChangeLink :list) { + enterpriseStandardPlanlist.add(convertFromProcessAnnualInitLink(ProcessPlanChangeLink)); + } + return enterpriseStandardPlanlist; + } + + private EnterpriseStandardPlan convertFromProcessAnnualInitLink(ProcessPlanChangeLink ProcessPlanChangeLink) { + EnterpriseStandardPlan enterpriseStandardPlan = new EnterpriseStandardPlan(); + enterpriseStandardPlan.setRevisionType(ProcessPlanChangeLink.getRevisionType()); + //enterpriseStandardPlan.setProjectType(); + //enterpriseStandardPlan.setStandardId(ProcessPlanChangeLink.getStandardId()); + //enterpriseStandardPlan.setStandardNumber(ProcessPlanChangeLink.getStandardNumber()); + //enterpriseStandardPlan.setStandardName(ProcessPlanChangeLink.getStandardName()); + //enterpriseStandardPlan.setMainDraftingUser(ProcessPlanChangeLink.getMainDraftingUser()); + enterpriseStandardPlan.setDepartId(ProcessPlanChangeLink.getDepartId()); + //enterpriseStandardPlan.setProfessionalModule(ProcessPlanChangeLink.getProfessionalModule()); + enterpriseStandardPlan.setDraftCompleteDate(ProcessPlanChangeLink.getDraftCompleteDate()); + enterpriseStandardPlan.setPlanArchivingDate(ProcessPlanChangeLink.getPlanArchivingDate()); + //enterpriseStandardPlan.setHaveEnglishVersion(ProcessPlanChangeLink.getHaveEnglishVersion()); + //enterpriseStandardPlan.setCommittee(ProcessPlanChangeLink.getCommittee()); + enterpriseStandardPlan.setProjectStatus(ESPProjectStatus.NOT_STARTED.getValue()); + enterpriseStandardPlan.setPlanStatus(ESPlanStatusEnum.ADD.getValue()); + return enterpriseStandardPlan; + } + + + public ProcessInfoVO getHandleData(String taskId) { + ProcessInfoVO processInfoVO = processHandleService.queryProcessInfoVO(taskId); + String businessId = processInfoVO.getBusinessId(); + ProcessPlanChange planChange = this.getById(businessId); + + ProcessPlanChangeVO planChangeVO = new ProcessPlanChangeVO(); + planChangeVO.setPlanChange(planChange); + + LambdaQueryWrapper myQuery = Wrappers.lambdaQuery(ProcessPlanChangeLink.class); + myQuery.eq(ProcessPlanChangeLink::getProcessId, planChange); + List list = planChangeLinkService.list(myQuery); + + planChangeVO.setPlanChangeLinkList(list); + processInfoVO.setBusinessInfoDTO(planChangeVO); + return processInfoVO; + } +} \ No newline at end of file diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/planchange/vo/ProcessPlanChangeVO.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/planchange/vo/ProcessPlanChangeVO.java new file mode 100644 index 00000000..851b7b66 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/planchange/vo/ProcessPlanChangeVO.java @@ -0,0 +1,34 @@ +package com.jero.modules.activiti.process.planchange.vo; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.jero.modules.activiti.process.planchange.entity.ProcessPlanChange; +import com.jero.modules.activiti.process.planchange.entity.ProcessPlanChangeLink; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** + * 企标计划变更流程表(ProcessPlanChange)实体类 + * + * @author lijiarao + * @since 2024-09-29 15:14:54 + */ +@Data +@ApiModel(value = "ProcessPlanChangeVO", description = "企标计划变更流程VO") +public class ProcessPlanChangeVO implements Serializable { + @ApiModelProperty(value = "流程主表信息") + private ProcessPlanChange planChange; + @ApiModelProperty(value = "关联标准信息") + private List planChangeLinkList; +} + diff --git a/laws-modules/src/main/resources/bpmn/企业标准年度制修订计划流程.bpmn b/laws-modules/src/main/resources/bpmn/企业标准年度制修订计划流程.bpmn index ec3941de..e72db524 100644 --- a/laws-modules/src/main/resources/bpmn/企业标准年度制修订计划流程.bpmn +++ b/laws-modules/src/main/resources/bpmn/企业标准年度制修订计划流程.bpmn @@ -1,6 +1,6 @@ - + Flow_0hrnklg @@ -129,7 +129,7 @@ - + diff --git a/laws-modules/src/main/resources/bpmn/企业标准计划变更流程.bpmn b/laws-modules/src/main/resources/bpmn/企业标准计划变更流程.bpmn new file mode 100644 index 00000000..e72db524 --- /dev/null +++ b/laws-modules/src/main/resources/bpmn/企业标准计划变更流程.bpmn @@ -0,0 +1,315 @@ + + + + + Flow_0hrnklg + + + Flow_0hrnklg + Flow_1jzk2qn + Flow_1e2ecjo + Flow_1torqxs + Flow_04fjdt8 + Flow_0u3ivmh + Flow_11hc0o0 + Flow_0ndqyc9 + + + Flow_0eu6g3b + Flow_1uaygks + + + Flow_0r76okg + + + Flow_0ndqyc9 + Flow_1q5o6tr + + ${nrOfInstances == nrOfCompletedInstances || !pass} + + + + Flow_1ko64jc + Flow_0rn2xkx + + + Flow_0rn2xkx + Flow_0eu6g3b + Flow_1torqxs + + + Flow_1uaygks + Flow_0ame206 + Flow_1e2ecjo + + + + ${pass} + + + + ${pass} + + + ${!pass} + + + ${!pass} + + + ${pass} + + + + + Flow_1q5o6tr + Flow_1ko64jc + Flow_1jzk2qn + + + + ${!pass} + + + Flow_0xhpgf5 + Flow_0j4zrgs + + ${nrOfInstances == nrOfCompletedInstances || !pass} + + + + Flow_0ame206 + Flow_0y6f9vg + + ${nrOfInstances == nrOfCompletedInstances || !pass} + + + + Flow_1uuss1x + Flow_0my3hgz + + ${nrOfInstances == nrOfCompletedInstances || !pass} + + + + Flow_0my3hgz + Flow_0xhpgf5 + Flow_0u3ivmh + + + Flow_0j4zrgs + Flow_0r76okg + Flow_11hc0o0 + + + Flow_0y6f9vg + Flow_1uuss1x + Flow_04fjdt8 + + + ${pass} + + + + + ${pass} + + + + ${pass} + + + ${!pass} + + + ${!pass} + + + ${!pass} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/java/com/jero/modules/activiti/process/planchange/controller/ProcessPlanChangeController.java b/src/main/java/com/jero/modules/activiti/process/planchange/controller/ProcessPlanChangeController.java new file mode 100644 index 00000000..5b9aef00 --- /dev/null +++ b/src/main/java/com/jero/modules/activiti/process/planchange/controller/ProcessPlanChangeController.java @@ -0,0 +1,102 @@ +package com.jero.modules.activiti.process.planchange.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.jero.common.aspect.annotation.AutoLog; +import com.jero.common.system.base.controller.JeroController; +import com.jero.common.system.query.QueryGenerator; +import com.jero.modules.activiti.process.planchange.entity.ProcessPlanChange; +import com.jero.modules.activiti.process.planchange.service.ProcessPlanChangeService; +import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO; +import com.jero.modules.system.vo.IdMapBody; +import com.jero.modules.system.vo.IdsMapBody; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.commons.lang3.StringUtils; +import com.jero.common.api.vo.Result; +import com.jero.common.api.vo.ResultCommon; +import org.springframework.web.servlet.ModelAndView; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.Arrays; +import java.util.List; + +/** + * 企标计划变更流程表(ProcessPlanChange)表控制层 + * + * @author lijiarao + * @since 2024-09-29 15:14:54 + */ +@Slf4j +@Api(tags = "企标计划变更流程表") +@RestController +@RequestMapping("/process/processPlanChange") +public class ProcessPlanChangeController extends JeroController { + /** + * 服务对象 + */ + @Resource + private ProcessPlanChangeService processPlanChangeService; + + @DictPoint + @GetMapping("/queryProcessInfoVO") + @AutoLog(value = "企标计划变更流程表-查询流程信息") + @ApiImplicitParams({ + @ApiImplicitParam(name = "draftId", value = "草稿id"), + @ApiImplicitParam(name = "taskId", value = "任务id"), + @ApiImplicitParam(name = "processInstanceId", value = "流程实例id") + }) + @ApiOperation("企标计划变更流程表-查询流程信息") + public Result> queryProcessInfoVO(String draftId, String processInstanceId, String taskId) { + ProcessInfoVO processInfoVO = processPlanChangeService.queryProcessInfoVO(draftId, processInstanceId, taskId); + return Result.OK(processInfoVO); + } + + @AutoLog(value = "企标计划变更流程表-发起流程") + @ApiOperation(value = "企标计划变更流程表-发起流程") + @PostMapping(value = "/startProcess") + public Result startProcess(@Validated @RequestBody ProcessInfoVO processInfoVO) { + processPlanChangeService.startProcess(processInfoVO); + return Result.OK(); + } + + @AutoLog(value = "企标计划变更流程表-同意") + @ApiOperation(value = "企标计划变更流程表-同意") + @PostMapping("/agree") + public Result agree(@Validated @RequestBody ProcessInfoVO processInfoVO) { + processPlanChangeService.approveTask(processInfoVO, true); + return Result.OK(); + } + + @AutoLog(value = "企标计划变更流程表-驳回") + @ApiOperation(value = "企标计划变更流程表-驳回") + @PostMapping("/reject") + public Result reject(@Validated @RequestBody ProcessInfoVO processInfoVO) { + processPlanChangeService.approveTask(processInfoVO, false); + return Result.OK(); + } + + @AutoLog(value = "企标计划变更流程表-提交") + @ApiOperation(value = "企标计划变更流程表-提交") + @PostMapping("/submit") + public Result submit(@Validated @RequestBody ProcessInfoVO processInfoVO) { + processPlanChangeService.submit(processInfoVO); + return Result.OK(); + } + + @AutoLog(value = "企标计划变更流程表-保存为草稿") + @ApiOperation(value = "企标计划变更流程表-保存为草稿") + @PostMapping(value = "/saveToDraft") + public Result saveToDraft(@Validated @RequestBody ProcessInfoVO processInfoVO) { + processPlanChangeService.saveToDraft(processInfoVO); + return Result.OK(); + } + +} + diff --git a/src/main/java/com/jero/modules/activiti/process/planchange/controller/ProcessPlanChangeLinkController.java b/src/main/java/com/jero/modules/activiti/process/planchange/controller/ProcessPlanChangeLinkController.java new file mode 100644 index 00000000..a76dc1ed --- /dev/null +++ b/src/main/java/com/jero/modules/activiti/process/planchange/controller/ProcessPlanChangeLinkController.java @@ -0,0 +1,172 @@ +package com.jero.modules.activiti.process.planchange.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.jero.common.aspect.annotation.AutoLog; +import com.jero.common.system.base.controller.JeroController; +import com.jero.common.system.query.QueryGenerator; +import com.jero.modules.activiti.process.planchange.entity.ProcessPlanChangeLink; +import com.jero.modules.activiti.process.planchange.service.ProcessPlanChangeLinkService; +import com.jero.modules.system.vo.IdMapBody; +import com.jero.modules.system.vo.IdsMapBody; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.commons.lang3.StringUtils; +import com.jero.common.api.vo.Result; +import com.jero.common.api.vo.ResultCommon; +import org.springframework.web.servlet.ModelAndView; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.Arrays; +import java.util.List; + +/** + * 企标计划变更流程关联标准(ProcessPlanChangeLink)表控制层 + * + * @author lijiarao + * @since 2024-09-29 15:15:10 + */ +@Slf4j +@Api(tags = "企标计划变更流程关联标准") +@RestController +@RequestMapping("processPlanChangeLink") +public class ProcessPlanChangeLinkController extends JeroController { + /** + * 服务对象 + */ + @Resource + private ProcessPlanChangeLinkService processPlanChangeLinkService; + + /** + * 分页列表查询 + */ + @ApiOperation(value = "企标计划变更流程关联标准-分页列表查询") + @GetMapping(value = "/page") + public Result> queryPageList(ProcessPlanChangeLink processPlanChangeLink, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + Page page = new Page<>(pageNo, pageSize); + IPage pageList = processPlanChangeLinkService.pageList(page, processPlanChangeLink, req); + return Result.OK(pageList); + } + + /** + * 列表查询 + */ + @ApiOperation(value = "企标计划变更流程关联标准-列表查询", notes = "企标计划变更流程关联标准-列表查询") + @GetMapping(value = "/list") + public Result> queryList(ProcessPlanChangeLink processPlanChangeLink, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(processPlanChangeLink, req.getParameterMap()); + List list = processPlanChangeLinkService.list(queryWrapper); + return Result.OK(list); + } + + /** + * 添加 + */ + @AutoLog(value = "企标计划变更流程关联标准-添加") + @ApiOperation(value = "企标计划变更流程关联标准-添加", notes = "企标计划变更流程关联标准-添加") + @PostMapping(value = "/add") + public Result add(@Validated @RequestBody ProcessPlanChangeLink processPlanChangeLink) { + processPlanChangeLinkService.add(processPlanChangeLink); + return Result.OK(ResultCommon.OK); + } + + /** + * 编辑 + */ + @AutoLog(value = "企标计划变更流程关联标准-编辑") + @ApiOperation(value = "企标计划变更流程关联标准-编辑", notes = "企标计划变更流程关联标准-编辑") + @PostMapping(value = "/edit") + public Result edit(@Validated @RequestBody ProcessPlanChangeLink processPlanChangeLink) { + processPlanChangeLinkService.editById(processPlanChangeLink); + return Result.OK(ResultCommon.EDIT_OK); + } + + /** + * 通过id删除 + */ + @AutoLog(value = "企标计划变更流程关联标准-通过id删除") + @ApiOperation(value = "企标计划变更流程关联标准-通过id删除", notes = "企标计划变更流程关联标准-通过id删除") + @PostMapping(value = "/delete") + public Result delete(@RequestBody IdMapBody map) { + String id = map.getId(); + if (StringUtils.isBlank(id)) { + return Result.error("请选择数据"); + } + processPlanChangeLinkService.deleteById(id); + return Result.OK(ResultCommon.SUCCESSFULLY_DELETED); + } + + /** + * 批量删除 + */ + @AutoLog(value = "企标计划变更流程关联标准-批量删除") + @ApiOperation(value = "企标计划变更流程关联标准-批量删除", notes = "企标计划变更流程关联标准-批量删除") + @PostMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestBody IdsMapBody map) { + String ids = map.getIds(); + if (StringUtils.isBlank(ids)) { + return Result.error(ResultCommon.PLEASE_SELECT_DATA); + } + List idList = Arrays.asList(map.getIds().split(",")); + this.processPlanChangeLinkService.deleteByIds(idList); + return Result.OK(ResultCommon.SUCCESSFULLY_DELETED_IN_BULK); + } + + /** + * 通过id查询 + */ + @AutoLog(value = "企标计划变更流程关联标准-通过id查询") + @ApiOperation(value = "企标计划变更流程关联标准-通过id查询", notes = "企标计划变更流程关联标准-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name = "id") String id) { + ProcessPlanChangeLink processPlanChangeLink = processPlanChangeLinkService.queryById(id); + if (processPlanChangeLink == null) { + return Result.error(ResultCommon.NO_CORRESPONDING_DATA_FOUND); + } + return Result.OK(processPlanChangeLink); + } + + /** + * 导出excel + */ + @ApiOperation(value = "企标计划变更流程关联标准-导出excel") + @GetMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest req, ProcessPlanChangeLink processPlanChangeLink) { + Page page = new Page<>(-1, -1); + IPage pageList = processPlanChangeLinkService.pageList(page, processPlanChangeLink, req); + // 获取数据 + List records = pageList.getRecords(); + return super.exportListXls(records, ProcessPlanChangeLink.class, "企标计划变更流程关联标准"); + } + + /** + * 下载导入模板 + */ + @ApiOperation(value = "企标计划变更流程关联标准-下载导入模板") + @GetMapping(value = "/exportTemplate") + public ModelAndView exportTemplate(HttpServletRequest req, ProcessPlanChangeLink processPlanChangeLink) { + List records = new ArrayList<>(); + return super.exportListXls(records, ProcessPlanChangeLink.class, "企标计划变更流程关联标准"); + } + + /** + * 通过excel导入数据 + */ + @ApiOperation(value = "企标计划变更流程关联标准-通过excel导入数据") + @PostMapping(value = "/importExcel") + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, ProcessPlanChangeLink.class); + } + +} + diff --git a/src/main/java/com/jero/modules/activiti/process/planchange/entity/ProcessPlanChange.java b/src/main/java/com/jero/modules/activiti/process/planchange/entity/ProcessPlanChange.java new file mode 100644 index 00000000..d0a682b4 --- /dev/null +++ b/src/main/java/com/jero/modules/activiti/process/planchange/entity/ProcessPlanChange.java @@ -0,0 +1,121 @@ +package com.jero.modules.activiti.process.planchange.entity; + +import java.util.Date; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModelProperty; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; + +import lombok.Data; +import io.swagger.annotations.ApiModel; + +/** + * 企标计划变更流程表(ProcessPlanChange)实体类 + * + * @author lijiarao + * @since 2024-09-29 15:14:54 + */ +@Data +@TableName("process_plan_change") +@ApiModel(value = "ProcessPlanChange", description = "企标计划变更流程表") +public class ProcessPlanChange implements Serializable { + private static final long serialVersionUID = -96899431864255187L; + /** + * 主键id + */ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "主键id") + private String id; + /** + * 变更类型 + */ + @ApiModelProperty(value = "变更类型") + @Excel(name = "变更类型", width = 15) + private String changeType; + /** + * 部门经理 + */ + @ApiModelProperty(value = "部门经理") + @Excel(name = "部门经理", width = 15) + private String departManager; + /** + * 法规部门处理人id + */ + @ApiModelProperty(value = "法规部门处理人id") + @Excel(name = "法规部门处理人id", width = 15) + private String standardDepartHandler; + /** + * 法规部门经理id + */ + @ApiModelProperty(value = "法规部门经理id") + @Excel(name = "法规部门经理id", width = 15) + private String standardDepartManager; + /** + * 高级经理 + */ + @ApiModelProperty(value = "高级经理") + @Excel(name = "高级经理", width = 15) + private String seniorManager; + /** + * 总监 + */ + @ApiModelProperty(value = "总监") + @Excel(name = "总监", width = 15) + private String chiefInspector; + /** + * 授权人 + */ + @ApiModelProperty(value = "授权人") + @Excel(name = "授权人", width = 15) + private String authorizedPerson; + /** + * 附件 + */ + @ApiModelProperty(value = "附件") + @Excel(name = "附件", width = 15) + private String file; + /** + * 创建人 + */ + @ApiModelProperty(value = "创建人") + private String createBy; + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date createTime; + /** + * 更新人 + */ + @ApiModelProperty(value = "更新人") + private String updateBy; + /** + * 更新时间 + */ + @ApiModelProperty(value = "更新时间") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date updateTime; + /** + * 所属部门 + */ + @ApiModelProperty(value = "所属部门") + private String orgCode; + /** + * 删除状态(0-正常,1-删除) + */ + @ApiModelProperty(value = "删除状态(0-正常,1-删除)") + @TableLogic + private String delFlag; + + +} + diff --git a/src/main/java/com/jero/modules/activiti/process/planchange/entity/ProcessPlanChangeLink.java b/src/main/java/com/jero/modules/activiti/process/planchange/entity/ProcessPlanChangeLink.java new file mode 100644 index 00000000..3b26037b --- /dev/null +++ b/src/main/java/com/jero/modules/activiti/process/planchange/entity/ProcessPlanChangeLink.java @@ -0,0 +1,125 @@ +package com.jero.modules.activiti.process.planchange.entity; + +import java.util.Date; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModelProperty; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; + +import lombok.Data; +import io.swagger.annotations.ApiModel; + +/** + * 企标计划变更流程关联标准(ProcessPlanChangeLink)实体类 + * + * @author lijiarao + * @since 2024-09-29 15:15:11 + */ +@Data +@TableName("process_plan_change_link") +@ApiModel(value = "ProcessPlanChangeLink", description = "企标计划变更流程关联标准") +public class ProcessPlanChangeLink implements Serializable { + private static final long serialVersionUID = -68223646123689976L; + /** + * 主键id + */ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "主键id") + private String id; + /** + * 流程主表id + */ + @ApiModelProperty(value = "流程主表id") + @Excel(name = "流程主表id", width = 15) + private String processId; + /** + * 制修订类别 + */ + @ApiModelProperty(value = "制修订类别") + @Excel(name = "制修订类别", width = 15) + private String revisionType; + /** + * 企标计划 + */ + @ApiModelProperty(value = "企标计划") + @Excel(name = "企标计划", width = 15) + private String planId; + /** + * 起草人 + */ + @ApiModelProperty(value = "起草人") + @Excel(name = "起草人", width = 15) + private String draftingUser; + /** + * 所在部门id + */ + @ApiModelProperty(value = "所在部门id") + @Excel(name = "所在部门id", width = 15) + private String departId; + /** + * 初稿完成日期变更后 + */ + @ApiModelProperty(value = "初稿完成日期变更后") + @Excel(name = "初稿完成日期变更后", width = 15, format = "yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date draftCompleteDate; + /** + * 计划归档日期变更后 + */ + @ApiModelProperty(value = "计划归档日期变更后") + @Excel(name = "计划归档日期变更后", width = 15, format = "yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date planArchivingDate; + /** + * 变更原因 + */ + @ApiModelProperty(value = "变更原因") + @Excel(name = "变更原因", width = 15) + private String changeReason; + /** + * 创建人 + */ + @ApiModelProperty(value = "创建人") + private String createBy; + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date createTime; + /** + * 更新人 + */ + @ApiModelProperty(value = "更新人") + private String updateBy; + /** + * 更新时间 + */ + @ApiModelProperty(value = "更新时间") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date updateTime; + /** + * 所属部门 + */ + @ApiModelProperty(value = "所属部门") + private String orgCode; + /** + * 删除状态(0-正常,1-删除) + */ + @ApiModelProperty(value = "删除状态(0-正常,1-删除)") + @TableLogic + private Integer delFlag; + + +} + diff --git a/src/main/java/com/jero/modules/activiti/process/planchange/mapper/ProcessPlanChangeLinkMapper.java b/src/main/java/com/jero/modules/activiti/process/planchange/mapper/ProcessPlanChangeLinkMapper.java new file mode 100644 index 00000000..b623ecee --- /dev/null +++ b/src/main/java/com/jero/modules/activiti/process/planchange/mapper/ProcessPlanChangeLinkMapper.java @@ -0,0 +1,15 @@ +package com.jero.modules.activiti.process.planchange.mapper; + +import com.jero.modules.activiti.process.planchange.entity.ProcessPlanChangeLink; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * 企标计划变更流程关联标准(ProcessPlanChangeLink)表数据库访问层 + * + * @author lijiarao + * @since 2024-09-29 15:15:11 + */ +public interface ProcessPlanChangeLinkMapper extends BaseMapper { + +} + diff --git a/src/main/java/com/jero/modules/activiti/process/planchange/mapper/ProcessPlanChangeMapper.java b/src/main/java/com/jero/modules/activiti/process/planchange/mapper/ProcessPlanChangeMapper.java new file mode 100644 index 00000000..4f2d7662 --- /dev/null +++ b/src/main/java/com/jero/modules/activiti/process/planchange/mapper/ProcessPlanChangeMapper.java @@ -0,0 +1,15 @@ +package com.jero.modules.activiti.process.planchange.mapper; + +import com.jero.modules.activiti.process.planchange.entity.ProcessPlanChange; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * 企标计划变更流程表(ProcessPlanChange)表数据库访问层 + * + * @author lijiarao + * @since 2024-09-29 15:14:54 + */ +public interface ProcessPlanChangeMapper extends BaseMapper { + +} + diff --git a/src/main/java/com/jero/modules/activiti/process/planchange/mapper/xml/ProcessPlanChangeLinkMapper.xml b/src/main/java/com/jero/modules/activiti/process/planchange/mapper/xml/ProcessPlanChangeLinkMapper.xml new file mode 100644 index 00000000..6078b8e6 --- /dev/null +++ b/src/main/java/com/jero/modules/activiti/process/planchange/mapper/xml/ProcessPlanChangeLinkMapper.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + id, + process_id, + revision_type, + plan_id, + drafting_user, + depart_id, + draft_complete_date, + plan_archiving_date, + change_reason, + create_by, + create_time, + update_by, + update_time, + org_code, + del_flag + + + diff --git a/src/main/java/com/jero/modules/activiti/process/planchange/mapper/xml/ProcessPlanChangeMapper.xml b/src/main/java/com/jero/modules/activiti/process/planchange/mapper/xml/ProcessPlanChangeMapper.xml new file mode 100644 index 00000000..f0ecd0ec --- /dev/null +++ b/src/main/java/com/jero/modules/activiti/process/planchange/mapper/xml/ProcessPlanChangeMapper.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + id, + change_type, + depart_manager, + standard_depart_handler, + standard_depart_manager, + senior_manager, + chief_inspector, + authorized_person, + file, + create_by, + create_time, + update_by, + update_time, + org_code, + del_flag + + + diff --git a/src/main/java/com/jero/modules/activiti/process/planchange/service/ProcessPlanChangeLinkService.java b/src/main/java/com/jero/modules/activiti/process/planchange/service/ProcessPlanChangeLinkService.java new file mode 100644 index 00000000..0f4df327 --- /dev/null +++ b/src/main/java/com/jero/modules/activiti/process/planchange/service/ProcessPlanChangeLinkService.java @@ -0,0 +1,57 @@ +package com.jero.modules.activiti.process.planchange.service; + +import com.jero.modules.activiti.process.planchange.entity.ProcessPlanChangeLink; +import com.jero.modules.activiti.process.planchange.mapper.ProcessPlanChangeLinkMapper; +import org.springframework.stereotype.Service; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; + +import lombok.extern.slf4j.Slf4j; + +import java.util.List; + +/** + * 企标计划变更流程关联标准(ProcessPlanChangeLink)表服务实现类 + * + * @author lijiarao + * @since 2024-09-29 15:15:11 + */ +@Slf4j +@Service() +public class ProcessPlanChangeLinkService extends ServiceImpl { + @Resource + private ProcessPlanChangeLinkMapper processPlanChangeLinkMapper; + + public IPage pageList(Page page, ProcessPlanChangeLink processPlanChangeLink, HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(processPlanChangeLink, req.getParameterMap()); + return this.page(page, queryWrapper); + } + + public void add(ProcessPlanChangeLink processPlanChangeLink) { + this.save(processPlanChangeLink); + } + + public void editById(ProcessPlanChangeLink processPlanChangeLink) { + this.updateById(processPlanChangeLink); + } + + public void deleteById(String id) { + this.removeById(id); + } + + public void deleteByIds(List idList) { + for (String id : idList) { + deleteById(id); + } + } + + public ProcessPlanChangeLink queryById(String id) { + ProcessPlanChangeLink processPlanChangeLink = this.getById(id); + return processPlanChangeLink; + } +} + diff --git a/src/main/java/com/jero/modules/activiti/process/planchange/service/ProcessPlanChangeService.java b/src/main/java/com/jero/modules/activiti/process/planchange/service/ProcessPlanChangeService.java new file mode 100644 index 00000000..71647959 --- /dev/null +++ b/src/main/java/com/jero/modules/activiti/process/planchange/service/ProcessPlanChangeService.java @@ -0,0 +1,184 @@ +package com.jero.modules.activiti.process.planchange.service; + +import com.jero.modules.activiti.process.planchange.entity.ProcessPlanChange; +import com.jero.modules.activiti.process.planchange.mapper.ProcessPlanChangeMapper; +import org.springframework.stereotype.Service; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; + +import org.apache.commons.lang3.StringUtils; +import lombok.extern.slf4j.Slf4j; + +import java.util.List; + +/** + * 企标计划变更流程表(ProcessPlanChange)表服务实现类 + * + * @author lijiarao + * @since 2024-09-29 15:14:55 + */ +@Slf4j +@Service() +public class ProcessPlanChangeService extends ServiceImpl { + @Resource + private ProcessPlanChangeMapper processPlanChangeMapper; + @Resource + private ISysBaseAPI sysBaseAPI; + @Resource + private IProcessHandleService processHandleService; + @Resource + private ProcessAllService processAllService; + @Resource + private TaskService taskService; + + public ProcessInfoVO queryProcessInfoVO(String draftId, String processInstanceId, String taskId) { + if (StringUtils.isNotBlank(draftId) && StringUtils.isBlank(taskId)) { + ProcessInfoVO draft = processHandleService.getDraftByDraftId(draftId); + return draft; + } + ProcessInfoVO draft = processHandleService.getDraftByTaskId(taskId); + if (draft != null) { + return draft; + } + ProcessInfoVO processInfoVO = processHandleService.queryProcessInfoVO(draftId, processInstanceId, taskId); + String businessId = processInfoVO.getBusinessId(); + ProcessDTO processDTO = processHandleService.getProcessDTO(taskId); + ProcessApprovalRecord processApprovalRecord = processDTO.getProcessApprovalRecord(); + String originUserId = processApprovalRecord.getOriginUserId(); + Task task = processDTO.getTask(); + + String taskDefinitionKey = task.getTaskDefinitionKey(); + + ProcessPlanChange processPlanChangeVO = new ProcessPlanChange(); + + processInfoVO.setBusinessInfoDTO(processPlanChangeVO); + return processInfoVO; + } + + public void startProcess(ProcessInfoVO processInfoVO) { + Map userInfoMap = processInfoVO.getUserInfoMap(); + ProcessPlanChange businessInfoDTO = processInfoVO.getBusinessInfoDTO(); + ProcessProjectNotMet processPlanChange = businessInfoDTO.getProcessProjectNotMet(); + if (processPlanChange == null) { + processPlanChange = new ProcessProjectNotMet(); + } + this.save(processPlanChange); + String processPlanChangeId = processPlanChange.getId(); + processInfoVO.setBusinessId(processPlanChangeId); + + + //启动流程 + BasicProcessInfoDTO basicProcessInfoDTO = processInfoVO.getBasicProcessInfoDTO(); + //改为手动流程名称 + //basicProcessInfoDTO.setProcessName(standardNumber+"-"+standardName+"未符合项跟踪"); + basicProcessInfoDTO.setProcessDefinitionId(processHandleService.getDefinitionIdByKey(ProcessDefinitionKey.)); // 流程定义id + basicProcessInfoDTO.setProcessType(ProcessTypeEnum..getValue()); // 流程类型 + userInfoMap.put(ProcessProjectNotMetCommon.STANDARDS_ENGINEER, CurrentUserUtil.getId()); + //processInfoVO.setUserInfoMap(userInfoMap); + processHandleService.startProcess(processInfoVO); + //保存快照 start + processHandleService.saveToSnapshot(processInfoVO, CurrentUserUtil.getId()); + //保存快照 end + //start 先保存一份初始草稿 + processInfoVO.setSaveSource(DraftCommon.INITIAL_SOURCE); + processInfoVO.setBasicTaskInfoDTO(processInfoVO.getBasicTaskInfoDTO().setTaskId(null)); + saveToDraft(processInfoVO); + //end 保存初始草稿结束 + } + + public void approveTask(ProcessInfoVO processInfoVO, boolean pass) { + BasicTaskInfoDTO basicTaskInfoDTO = processInfoVO.getBasicTaskInfoDTO(); + String taskId = basicTaskInfoDTO.getTaskId(); + ProcessDTO processDTO = processHandleService.getProcessDTO(taskId); + String processInstanceId = processDTO.getProcessInstanceId(); + ProcessAll processAll = processAllService.getByProcessInstanceId(processInstanceId); + processInfoVO.setBusinessId(processAll.getProjectId()); + Task task = processDTO.getTask(); + String taskDefinitionKey = task.getTaskDefinitionKey(); + processHandleService.updateApprovalRecord(processInfoVO); + switch (taskDefinitionKey) { + //主管级领导审批 + case ProcessProjectNotMetCommon.ZGJLDSP: + zgjldspApprove(processInfoVO, processDTO, pass); + break; + //法规工程师审批 + case ProcessProjectNotMetCommon.FGGCSSP: + fggcsspApprove(processInfoVO, processDTO, pass, processAll); + break; + default: + } + + + } + + private void zgjldspApprove(ProcessInfoVO processInfoVO, ProcessDTO processDTO, boolean pass) { + ProcessApprovalRecord processApprovalRecord = processDTO.getProcessApprovalRecord(); + String originUserId = processApprovalRecord.getOriginUserId(); + String userId = CurrentUserUtil.getId(); + String businessId = processInfoVO.getBusinessId(); + // 完成任务 + Map variables = new HashMap<>(); + variables.put(ProcessProjectNotMetCommon.PASS, pass); + //variables.put(ProcessProjectNotMetCommon.MANAGER_LEADER, userId); + taskService.complete(processDTO.getTaskId(), variables); + if (!Objects.equals(userId, originUserId)) { + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(ProcessProjectNotMet::getId, businessId); + updateWrapper.set(ProcessProjectNotMet::getManagerLeaderId, userId); + update(updateWrapper); + } + } + + public void submit(ProcessInfoVO processInfoVO) { + BasicTaskInfoDTO basicTaskInfoDTO = processInfoVO.getBasicTaskInfoDTO(); + String taskId = basicTaskInfoDTO.getTaskId(); + ProcessDTO processDTO = processHandleService.getProcessDTO(taskId); + String processInstanceId = processDTO.getProcessInstanceId(); + ProcessAll processAll = processAllService.getByProcessInstanceId(processInstanceId); + String projectId = processAll.getProjectId(); + processInfoVO.setBusinessId(projectId); + Task task = processDTO.getTask(); + processHandleService.updateApprovalRecord(processInfoVO); + + ProcessApprovalRecord processApprovalRecord = processDTO.getProcessApprovalRecord(); + String originUserId = processApprovalRecord.getOriginUserId(); + String userId = CurrentUserUtil.getId(); + //业务处理 + ProcessPlanChange businessInfoDTO = processInfoVO.getBusinessInfoDTO(); + + taskService.complete(taskId); + + } + + public void saveToDraft(ProcessInfoVO processInfoVO) { + ProcessPlanChange businessInfoDTO = processInfoVO.getBusinessInfoDTO(); + if (businessInfoDTO != null) { + ProcessProjectNotMet processPlanChange = businessInfoDTO.getProcessProjectNotMet(); + if (processPlanChange != null) { + processInfoVO.setBusinessId(processPlanChange.getId()); + } + } + + // 流程信息 + BasicProcessInfoDTO basicProcessInfoDTO = processInfoVO.getBasicProcessInfoDTO(); + if (basicProcessInfoDTO == null) { + basicProcessInfoDTO = new BasicProcessInfoDTO(); + } + basicProcessInfoDTO.setProcessType(ProcessTypeEnum..getValue()); // 流程类型 + processInfoVO.setBasicProcessInfoDTO(basicProcessInfoDTO); + //保存businessId + String processInstanceId = basicProcessInfoDTO.getProcessInstanceId(); + if (StringUtils.isNotBlank(processInstanceId)) { + ProcessAll processAll = processAllService.getByProcessInstanceId(processInstanceId); + String projectId = processAll.getProjectId(); + processInfoVO.setBusinessId(projectId); + } + + processHandleService.saveToDraft(processInfoVO); + } +} +