diff --git a/laws-module-system/src/main/java/com/jero/modules/system/mapper/SysUserMapper.java b/laws-module-system/src/main/java/com/jero/modules/system/mapper/SysUserMapper.java index 4eee698f..7395b9e2 100644 --- a/laws-module-system/src/main/java/com/jero/modules/system/mapper/SysUserMapper.java +++ b/laws-module-system/src/main/java/com/jero/modules/system/mapper/SysUserMapper.java @@ -74,6 +74,13 @@ public interface SysUserMapper extends BaseMapper { */ IPage getUserByDepIds(Page page, @Param("departIds") List departIds, @Param("username") String username); + /** + * 根据部门Ids,查询部门下用户信息 + * @param departIds + * @return + */ + List getUserByDepIds(@Param("departIds") List departIds, @Param("username") String username); + /** * 根据角色Id查询用户信息 * @param page diff --git a/laws-module-system/src/main/java/com/jero/modules/system/service/ISysUserService.java b/laws-module-system/src/main/java/com/jero/modules/system/service/ISysUserService.java index 1fbe3ebe..c3280781 100644 --- a/laws-module-system/src/main/java/com/jero/modules/system/service/ISysUserService.java +++ b/laws-module-system/src/main/java/com/jero/modules/system/service/ISysUserService.java @@ -121,6 +121,13 @@ public interface ISysUserService extends IService { */ public IPage getUserByDepIds(Page page, List departIds, String username); + /** + * 根据部门Ids查询 + * @param + * @return + */ + public List getUserByDepIds(List departIds, String username); + /** * 根据 userIds查询,查询用户所属部门的名称(多个部门名逗号隔开) * @param diff --git a/laws-module-system/src/main/java/com/jero/modules/system/service/impl/SysUserServiceImpl.java b/laws-module-system/src/main/java/com/jero/modules/system/service/impl/SysUserServiceImpl.java index dccf5c32..8bbcd09a 100644 --- a/laws-module-system/src/main/java/com/jero/modules/system/service/impl/SysUserServiceImpl.java +++ b/laws-module-system/src/main/java/com/jero/modules/system/service/impl/SysUserServiceImpl.java @@ -257,6 +257,11 @@ public class SysUserServiceImpl extends ServiceImpl impl return userMapper.getUserByDepIds(page, departIds,username); } + @Override + public List getUserByDepIds(List departIds, String username) { + return userMapper.getUserByDepIds(departIds,username); + } + @Override public Map getDepNamesByUserIds(List userIds) { List userDeplist = this.baseMapper.getDepNamesByUserIds(userIds); diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esdeclare/common/EsDeclareCommon.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esdeclare/common/EsDeclareCommon.java new file mode 100644 index 00000000..5735dd70 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/esdeclare/common/EsDeclareCommon.java @@ -0,0 +1,14 @@ +package com.jero.modules.activiti.process.esdeclare.common; + +/** + * @ClassName: EsDeclareCommon + * @Description: + * @Author: yjz + * @Date: 2023-11-30 09:56 + * @Version: 1.0 + **/ +public class EsDeclareCommon { + private EsDeclareCommon(){ + + } +} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esdeclare/controller/EsDeclareFlowController.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esdeclare/controller/EsDeclareFlowController.java new file mode 100644 index 00000000..c70d8445 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/esdeclare/controller/EsDeclareFlowController.java @@ -0,0 +1,71 @@ +package com.jero.modules.activiti.process.esdeclare.controller; + +import com.jero.common.api.vo.Result; +import com.jero.common.api.vo.ResultCommon; +import com.jero.common.aspect.annotation.AutoLog; +import com.jero.common.util.MessageUtils; +import com.jero.common.util.SnowflakeUtils; +import com.jero.modules.activiti.process.esdeclare.service.IEsDeclareFlowService; +import com.jero.modules.activiti.process.esdeclare.vo.EsDeclareFlowVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.formula.functions.T; +import org.springframework.web.bind.annotation.*; + +/** + * @ClassName: EsDeclareController + * @Description: + * @Author: yjz + * @Date: 2023-11-30 09:58 + * @Version: 1.0 + **/ +@Api(tags="标准宣贯流程") +@RestController +@RequestMapping("/esinspect/esDeclareFlowController") +@Slf4j +public class EsDeclareFlowController { + private final IEsDeclareFlowService esDeclareFlowService; + + public EsDeclareFlowController(IEsDeclareFlowService esDeclareFlowService) { + this.esDeclareFlowService = esDeclareFlowService; + } + + /** + * 标准宣贯流程-生成项目id + * @return 项目id + */ + @AutoLog(value = "标准宣贯流程-生成项目id") + @ApiOperation(value="标准宣贯流程-生成项目id", notes="标准宣贯流程-生成项目id") + @GetMapping(value = "/getProjectId") + public String getProjectId() { + return String.valueOf(SnowflakeUtils.snowflake()); + } + + /** + * 标准宣贯流程-流程发起 + * @param esDeclareFlowVO 标准宣贯流程VO对象 + * @return 结果对象 + */ + @AutoLog(value = "标准宣贯流程-流程发起") + @ApiOperation(value="标准宣贯流程-流程发起", notes="标准宣贯流程-流程发起") + @PostMapping(value = "/flowStart") + public Result flowStart(@RequestBody EsDeclareFlowVO esDeclareFlowVO) { + esDeclareFlowService.flowStart(esDeclareFlowVO); + return Result.OK(MessageUtils.getMessage(ResultCommon.OK)); + } + + /** + * 标准宣贯流程-流程保存 + * @param esDeclareFlowVO 标准宣贯流程VO对象 + * @return 结果对象 + */ + @AutoLog(value = "标准宣贯流程-流程保存") + @ApiOperation(value="标准宣贯流程-流程保存", notes="标准宣贯流程-流程保存") + @PostMapping(value = "/flowSave") + public Result flowSave(@RequestBody EsDeclareFlowVO esDeclareFlowVO) { + esDeclareFlowService.flowSave(esDeclareFlowVO); + return Result.OK(MessageUtils.getMessage(ResultCommon.OK)); + } + +} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esdeclare/controller/ProcessEsDeclareController.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esdeclare/controller/ProcessEsDeclareController.java new file mode 100644 index 00000000..a2231391 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/esdeclare/controller/ProcessEsDeclareController.java @@ -0,0 +1,194 @@ +package com.jero.modules.activiti.process.esdeclare.controller; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.jero.common.api.vo.Result; +import com.jero.common.aspect.annotation.AutoLog; +import com.jero.common.system.base.controller.JeroController; +import com.jero.modules.activiti.process.esdeclare.entity.ProcessEsDeclare; +import com.jero.modules.activiti.process.esdeclare.service.IProcessEsDeclareService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.apache.poi.ss.formula.functions.T; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.Arrays; +import java.util.List; +import java.util.Map; + + + /** + * @Description: 标准宣贯业务表 + * @Author: jero-boot + * @Date: 2023-11-30 + * @Version: V1.0 + */ +@Api(tags="标准宣贯业务表") +@RestController +@RequestMapping("/esdeclare/processEsDeclare") +@Slf4j +public class ProcessEsDeclareController extends JeroController { + @Autowired + private IProcessEsDeclareService processEsDeclareService; + + /** + * 分页列表查询 + * + * @param processEsDeclare + * @param pageNo + * @param pageSize + * @param req + * @return + */ + @AutoLog(value = "标准宣贯业务表-分页列表查询") + @ApiOperation(value="标准宣贯业务表-分页列表查询", notes="标准宣贯业务表-分页列表查询") + @GetMapping(value = "/page") + public Result> queryPageList(ProcessEsDeclare processEsDeclare, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + IPage pageList = processEsDeclareService.queryPage(processEsDeclare, pageNo, pageSize, req); + return Result.OK(pageList); + } + + /** + * 列表查询 + * + * @param processEsDeclare + * @param req + * @return + */ + @AutoLog(value = "标准宣贯业务表-列表查询") + @ApiOperation(value="标准宣贯业务表-列表查询", notes="标准宣贯业务表-列表查询") + @GetMapping(value = "/list") + public Result> queryList(ProcessEsDeclare processEsDeclare, HttpServletRequest req) { + List list = processEsDeclareService.queryList(processEsDeclare, req); + return Result.OK(list); + } + + /** + * 添加 + * + * @param processEsDeclare + * @return + */ + @AutoLog(value = "标准宣贯业务表-添加") + @ApiOperation(value="标准宣贯业务表-添加", notes="标准宣贯业务表-添加") + @PostMapping(value = "/add") + public Result add(@Validated @RequestBody ProcessEsDeclare processEsDeclare) { + processEsDeclareService.add(processEsDeclare); + return Result.OK("操作成功!"); + } + + /** + * 编辑 + * + * @param processEsDeclare + * @return + */ + @AutoLog(value = "标准宣贯业务表-编辑") + @ApiOperation(value="标准宣贯业务表-编辑", notes="标准宣贯业务表-编辑") + @PostMapping(value = "/edit") + public Result edit(@Validated @RequestBody ProcessEsDeclare processEsDeclare) { + processEsDeclareService.editById(processEsDeclare); + return Result.OK("操作成功!"); + } + + /** + * 通过id删除 + * + * @param map + * @return + */ + @AutoLog(value = "标准宣贯业务表-通过id删除") + @ApiOperation(value="标准宣贯业务表-通过id删除", notes="标准宣贯业务表-通过id删除") + @PostMapping(value = "/delete") + public Result delete(@RequestBody Map map) { + if(!map.containsKey("id") || StringUtils.isEmpty(map.get("id"))){ + return Result.error("请选择数据!"); + } + processEsDeclareService.deleteById(map.get("id")); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param map + * @return + */ + @AutoLog(value = "标准宣贯业务表-批量删除") + @ApiOperation(value="标准宣贯业务表-批量删除", notes="标准宣贯业务表-批量删除") + @PostMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestBody Map map) { + if(!map.containsKey("ids") || StringUtils.isEmpty(map.get("ids"))){ + return Result.error("请选择数据!"); + } + this.processEsDeclareService.deleteByIds(Arrays.asList(map.get("ids").split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + @AutoLog(value = "标准宣贯业务表-通过id查询") + @ApiOperation(value="标准宣贯业务表-通过id查询", notes="标准宣贯业务表-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name="id",required=true) String id) { + ProcessEsDeclare processEsDeclare = processEsDeclareService.queryById(id); + if(processEsDeclare==null) { + return Result.error("未找到对应数据"); + } + return Result.OK(processEsDeclare); + } + + /** + * 通过项目id查询 + * + * @param projectId + * @return + */ + @AutoLog(value = "标准宣贯业务表-通过项目id查询") + @ApiOperation(value="标准宣贯业务表-通过项目id查询", notes="标准宣贯业务表-通过项目id查询") + @GetMapping(value = "/queryByProjectId") + public Result queryByProjectId(String projectId) { + ProcessEsDeclare processEsDeclare = processEsDeclareService.queryByProjectId(projectId); + if(processEsDeclare==null) { + return Result.error("未找到对应数据"); + } + return Result.OK(processEsDeclare); + } + + /** + * 导出excel + * + * @param request + * @param processEsDeclare + */ + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, ProcessEsDeclare processEsDeclare) { + return super.exportXls(request, processEsDeclare, ProcessEsDeclare.class, "标准宣贯业务表"); + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, ProcessEsDeclare.class); + } + +} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esdeclare/entity/ProcessEsDeclare.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esdeclare/entity/ProcessEsDeclare.java new file mode 100644 index 00000000..4c859ebc --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/esdeclare/entity/ProcessEsDeclare.java @@ -0,0 +1,86 @@ +package com.jero.modules.activiti.process.esdeclare.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.jero.common.aspect.annotation.Dict; +import com.jero.modules.laws.documenttool.entity.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + + +/** + * @Description: 企标宣贯业务表 + * @Author: jero-boot + * @Date: 2023-11-30 + * @Version: V1.0 + */ +@Data +@TableName("process_es_declare") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="process_es_declare对象", description="企标宣贯业务表") +public class ProcessEsDeclare extends BaseEntity { + /**企标id*/ + @Excel(name = "企标id", width = 15) + @ApiModelProperty(value = "企标id") + @TableField(exist = false) + private java.lang.String standardId; + /**企标编号*/ + @Excel(name = "企标编号", width = 15) + @ApiModelProperty(value = "企标编号") + private java.lang.String standardNo; + /**企标名称*/ + @Excel(name = "企标名称", width = 15) + @ApiModelProperty(value = "企标名称") + @TableField(exist = false) + private java.lang.String standardName; + /**宣贯日期*/ + @Excel(name = "宣贯日期", width = 15, format = "yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = "宣贯日期") + private java.util.Date declareDate; + /**宣贯人*/ + @Excel(name = "宣贯人", width = 15) + @ApiModelProperty(value = "宣贯人") + private java.lang.String declareUser; + /**主题*/ + @Excel(name = "主题", width = 15) + @ApiModelProperty(value = "主题") + private java.lang.String declareTopic; + /**相关材料*/ + @Excel(name = "相关材料", width = 15) + @ApiModelProperty(value = "相关材料") + private java.lang.String declareFile; + /**内容*/ + @Excel(name = "内容", width = 15) + @ApiModelProperty(value = "内容") + private java.lang.String declareContent; + /**主送部门*/ + @Excel(name = "主送部门", width = 15) + @ApiModelProperty(value = "主送部门") + private java.lang.String mainDepart; + /**参宣单位*/ + @Excel(name = "参宣单位", width = 15) + @ApiModelProperty(value = "参宣单位") + private java.lang.String attendUnit; + /**联络人*/ + @ApiModelProperty(value = "联络人") + @TableField(exist = false) + private java.lang.String initiator; + /**紧急程度(1:一般 2:急)*/ + @Excel(name = "紧急程度(1:一般 2:急)", width = 15) + @ApiModelProperty(value = "紧急程度(1:一般 2:急)") + @Dict(dicCode = "emergency_degree") + private java.lang.String emergencyDegree; + /**项目id*/ + @Excel(name = "项目id", width = 15) + @ApiModelProperty(value = "项目id") + private java.lang.String projectId; +} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esdeclare/mapper/ProcessEsDeclareMapper.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esdeclare/mapper/ProcessEsDeclareMapper.java new file mode 100644 index 00000000..a1689eee --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/esdeclare/mapper/ProcessEsDeclareMapper.java @@ -0,0 +1,14 @@ +package com.jero.modules.activiti.process.esdeclare.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.jero.modules.activiti.process.esdeclare.entity.ProcessEsDeclare; + +/** + * @Description: 企标宣贯业务表 + * @Author: jero-boot + * @Date: 2023-11-30 + * @Version: V1.0 + */ +public interface ProcessEsDeclareMapper extends BaseMapper { + +} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esdeclare/mapper/xml/ProcessEsDeclareMapper.xml b/laws-modules/src/main/java/com/jero/modules/activiti/process/esdeclare/mapper/xml/ProcessEsDeclareMapper.xml new file mode 100644 index 00000000..2ba88383 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/esdeclare/mapper/xml/ProcessEsDeclareMapper.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esdeclare/service/IEsDeclareFlowService.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esdeclare/service/IEsDeclareFlowService.java new file mode 100644 index 00000000..dd1e9237 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/esdeclare/service/IEsDeclareFlowService.java @@ -0,0 +1,24 @@ +package com.jero.modules.activiti.process.esdeclare.service; + +import com.jero.modules.activiti.process.esdeclare.vo.EsDeclareFlowVO; + +/** + * @InterfaceName: IEsDeclareService + * @Description: + * @Author: yjz + * @Date: 2023-11-30 10:11 + * @Version: 1.0 + **/ +public interface IEsDeclareFlowService { + /** + * 标准宣贯流程-流程发起 + * @param esDeclareFlowVO + */ + void flowStart(EsDeclareFlowVO esDeclareFlowVO); + + /** + * 标准宣贯流程-流程保存 + * @param esDeclareFlowVO + */ + void flowSave(EsDeclareFlowVO esDeclareFlowVO); +} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esdeclare/service/IProcessEsDeclareService.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esdeclare/service/IProcessEsDeclareService.java new file mode 100644 index 00000000..2f9f325a --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/esdeclare/service/IProcessEsDeclareService.java @@ -0,0 +1,84 @@ +package com.jero.modules.activiti.process.esdeclare.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; +import com.jero.modules.activiti.process.esdeclare.entity.ProcessEsDeclare; + +import javax.servlet.http.HttpServletRequest; +import java.util.List; + +/** + * @Description: 企标宣贯业务表 + * @Author: jero-boot + * @Date: 2023-11-30 + * @Version: V1.0 + */ +public interface IProcessEsDeclareService extends IService { + + /** + * 分页查询 + * + * @param processEsDeclare + * @param pageNo + * @param pageSize + * @param req + * @return + */ + IPage queryPage(ProcessEsDeclare processEsDeclare, Integer pageNo, Integer pageSize, HttpServletRequest req); + + /** + * 列表查询 + * + * @param processEsDeclare + * @param req + * @return + */ + List queryList(ProcessEsDeclare processEsDeclare, HttpServletRequest req); + + /** + * 保存 + * + * @param processEsDeclare + * @return + */ + void add(ProcessEsDeclare processEsDeclare); + + /** + * 更新 + * + * @param processEsDeclare + * @return + */ + void editById(ProcessEsDeclare processEsDeclare); + + /** + * 通过id删除 + * + * @param id + * @return + */ + void deleteById(String id); + + /** + * 批量删除 + * + * @param ids + * @return + */ + void deleteByIds(List ids); + + /** + * 通过id查询 + * + * @param id + * @return + */ + ProcessEsDeclare queryById(String id); + + /** + * 标准宣贯业务表-通过项目id查询 + * @param projectId + * @return + */ + ProcessEsDeclare queryByProjectId(String projectId); +} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esdeclare/service/impl/EsDeclareFlowServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esdeclare/service/impl/EsDeclareFlowServiceImpl.java new file mode 100644 index 00000000..4e17f17d --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/esdeclare/service/impl/EsDeclareFlowServiceImpl.java @@ -0,0 +1,195 @@ +package com.jero.modules.activiti.process.esdeclare.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.jero.common.exception.JeroBootException; +import com.jero.common.system.vo.LoginUser; +import com.jero.modules.activiti.entity.ProcessAll; +import com.jero.modules.activiti.entity.ProcessApprovalRecord; +import com.jero.modules.activiti.enums.FinishFlagEnum; +import com.jero.modules.activiti.process.common.entity.ProcessDraft; +import com.jero.modules.activiti.process.common.enums.ProcessType; +import com.jero.modules.activiti.process.common.service.ProcessDraftService; +import com.jero.modules.activiti.process.esdeclare.entity.ProcessEsDeclare; +import com.jero.modules.activiti.process.esdeclare.service.IEsDeclareFlowService; +import com.jero.modules.activiti.process.esdeclare.service.IProcessEsDeclareService; +import com.jero.modules.activiti.process.esdeclare.vo.EsDeclareFlowVO; +import com.jero.modules.activiti.process.esinspect.common.EsInspectCommon; +import com.jero.modules.activiti.service.ProcessAllService; +import com.jero.modules.activiti.service.ProcessApprovalRecordService; +import com.jero.modules.activiti.service.ProcessNodeLinkService; +import com.jero.modules.laws.enterprise.entity.EnterpriseStandardDeclare; +import com.jero.modules.laws.enterprise.service.EnterpriseStandardDeclareService; +import com.jero.modules.oss.entity.OSSFile; +import com.jero.modules.oss.service.IOSSFileService; +import org.activiti.engine.ProcessEngine; +import org.activiti.engine.ProcessEngines; +import org.activiti.engine.RuntimeService; +import org.activiti.engine.TaskService; +import org.activiti.engine.runtime.ProcessInstance; +import org.activiti.engine.task.Task; +import org.apache.shiro.SecurityUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +/** + * @ClassName: EsDeclareServiceImpl + * @Description: + * @Author: yjz + * @Date: 2023-11-30 10:11 + * @Version: 1.0 + **/ +@Service +@Transactional(rollbackFor = JeroBootException.class) +public class EsDeclareFlowServiceImpl implements IEsDeclareFlowService { + private final ProcessAllService processAllService; + private final ProcessApprovalRecordService processApprovalRecordService; + private final ProcessDraftService processDraftService; + private final ProcessNodeLinkService processNodeLinkService; + private final IProcessEsDeclareService processEsDeclareService; + private final EnterpriseStandardDeclareService enterpriseStandardDeclareService; + private final IOSSFileService ossFileService; + + public EsDeclareFlowServiceImpl(ProcessAllService processAllService, + ProcessApprovalRecordService processApprovalRecordService, + ProcessDraftService processDraftService, + ProcessNodeLinkService processNodeLinkService, + IProcessEsDeclareService processEsDeclareService, + EnterpriseStandardDeclareService enterpriseStandardDeclareService, + IOSSFileService ossFileService) { + this.processAllService = processAllService; + this.processApprovalRecordService = processApprovalRecordService; + this.processDraftService = processDraftService; + this.processNodeLinkService = processNodeLinkService; + this.processEsDeclareService = processEsDeclareService; + this.enterpriseStandardDeclareService = enterpriseStandardDeclareService; + this.ossFileService = ossFileService; + } + + ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); + RuntimeService runtimeService = processEngine.getRuntimeService(); + @Resource + private TaskService taskService; + + @Override + public void flowStart(EsDeclareFlowVO esDeclareFlowVO) { + // 流程信息 + ProcessAll processAll = esDeclareFlowVO.getProcessAll(); + // 流程审批信息 + ProcessApprovalRecord processApprovalRecord = esDeclareFlowVO.getProcessApprovalRecord(); + // map(参数) + Map map = esDeclareFlowVO.getMap(); + + // 根据流程key启动流程 同时 设置审批人员参数 + ProcessInstance processInstance = runtimeService + .startProcessInstanceByKey(EsInspectCommon.KEY, map); + + // 再次设置map + runtimeService.setVariables(processInstance.getId(), map); + + // 更新流程总表信息 + LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + processAll.setPrcType(Integer.valueOf(ProcessType.ES_INSPECT.getValue())); + processAll.setCreateUserId(loginUser.getId()); + processAllService.update(processAll, + new LambdaUpdateWrapper() + .eq(ProcessAll::getProcessInstanceId, processInstance.getId())); + + // 根据流程实例id查询 + Task task = taskService.createTaskQuery() + .processInstanceId(processInstance.getId()) + .singleResult(); + + // 更新流程审批信息 + processApprovalRecord.setUserId(loginUser.getId()); + processApprovalRecord.setProjectId(processAll.getProjectId()); + processApprovalRecord.setFinishFlag(FinishFlagEnum.COMPLETE.getValue()); + processApprovalRecordService.update(processApprovalRecord, + new LambdaUpdateWrapper() + .eq(ProcessApprovalRecord::getTaskId, task.getId())); + + // 新增流程实例节点关联用户表 + processNodeLinkService.saveNodeUserLink(processInstance.getProcessDefinitionId(), processInstance.getId(), listToString(map)); + + // 自动完成第一个节点 + taskService.complete(task.getId()); + + // 删除草稿 + processDraftService.remove(new LambdaQueryWrapper() + .eq(ProcessDraft::getProjectId, processAll.getProjectId()) + .eq(ProcessDraft::getUserId, loginUser.getId())); + + // 发起即结束 + ProcessEsDeclare processEsDeclare = processEsDeclareService.queryByProjectId(processAll.getProjectId()); + // 保存数据至企标宣贯 + EnterpriseStandardDeclare enterpriseStandardDeclare = new EnterpriseStandardDeclare(); + BeanUtils.copyProperties(processEsDeclare, enterpriseStandardDeclare); + enterpriseStandardDeclare.setCreateTime(null); + enterpriseStandardDeclare.setUpdateTime(null); + enterpriseStandardDeclareService.save(enterpriseStandardDeclare); + // 保存企标关联文件 + if (!Objects.isNull(processEsDeclare.getDeclareFile()) && StringUtils.isNotBlank(enterpriseStandardDeclare.getStandardId())){ + List list = Arrays.asList(processEsDeclare.getDeclareFile().split(",")); + ossFileService.update( + new LambdaUpdateWrapper() + .in(OSSFile::getId, list) + .set(OSSFile::getStandardId, enterpriseStandardDeclare.getStandardId()) + .set(OSSFile::getStandardNumber, enterpriseStandardDeclare.getStandardNo()) + .set(OSSFile::getStandardFileType, "associated_file")); + } + + } + + @Override + public void flowSave(EsDeclareFlowVO esDeclareFlowVO) { + // 流程信息 + ProcessAll processAll = esDeclareFlowVO.getProcessAll(); + // 流程审批信息 + ProcessApprovalRecord processApprovalRecord = esDeclareFlowVO.getProcessApprovalRecord(); + + // 流程总表信息 + LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + processAll.setPrcType(Integer.valueOf(ProcessType.ES_INSPECT_PLAN.getValue())); + ProcessDraft processDraft = new ProcessDraft(); + // 属性拷贝 + BeanUtils.copyProperties(processAll, processDraft); + processDraft.setId(""); + processDraft.setUpdateBy(""); + Date date = new Date(); + processDraft.setCreateTime(date); + processDraft.setUpdateBy(""); + processDraft.setUpdateTime(date); + // 保存草稿表 + if (StringUtils.isNotBlank(processApprovalRecord.getCommitFile())){ + processDraft.setHandleFile(processApprovalRecord.getCommitFile()); + } + if (StringUtils.isNotBlank(processApprovalRecord.getCommitText())){ + processDraft.setHandleText(processApprovalRecord.getCommitText()); + } + processDraft.setUserId(loginUser.getId()); + // 删除旧草稿 + processDraftService.remove(new LambdaQueryWrapper() + .eq(ProcessDraft::getProjectId, processAll.getProjectId()) + .eq(ProcessDraft::getUserId, loginUser.getId())); + // 保存新草稿 + processDraftService.save(processDraft); + } + + private Map listToString(Map map) { + Map stringObjectHashMap; + stringObjectHashMap = map.entrySet().stream().map(v -> { + if (v.getValue() instanceof List) { + List list = (List)v.getValue(); + v.setValue(String.join(",", list)); + } + return v; + }).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); + return stringObjectHashMap; + } +} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esdeclare/service/impl/ProcessEsDeclareServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esdeclare/service/impl/ProcessEsDeclareServiceImpl.java new file mode 100644 index 00000000..f0a643ac --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/esdeclare/service/impl/ProcessEsDeclareServiceImpl.java @@ -0,0 +1,159 @@ +package com.jero.modules.activiti.process.esdeclare.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.jero.common.exception.JeroBootException; +import com.jero.common.system.query.QueryGenerator; +import com.jero.modules.activiti.process.esdeclare.entity.ProcessEsDeclare; +import com.jero.modules.activiti.process.esdeclare.mapper.ProcessEsDeclareMapper; +import com.jero.modules.activiti.process.esdeclare.service.IProcessEsDeclareService; +import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard; +import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService; +import com.jero.modules.system.entity.SysUser; +import com.jero.modules.system.service.ISysUserService; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.servlet.http.HttpServletRequest; +import java.util.Arrays; +import java.util.Date; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + + +/** + * @Description: 企标宣贯业务表 + * @Author: jero-boot + * @Date: 2023-11-30 + * @Version: V1.0 + */ +@Service +@Transactional(rollbackFor = JeroBootException.class) +public class ProcessEsDeclareServiceImpl extends ServiceImpl implements IProcessEsDeclareService { + + private final ISysUserService sysUserService; + private final ILawsEnterpriseStandardService lawsEnterpriseStandardService; + + public ProcessEsDeclareServiceImpl(ISysUserService sysUserService, + ILawsEnterpriseStandardService lawsEnterpriseStandardService) { + this.sysUserService = sysUserService; + this.lawsEnterpriseStandardService = lawsEnterpriseStandardService; + } + + /** + * 分页查询 + * + * @param processEsDeclare + * @param pageNo + * @param pageSize + * @param req + * @return + */ + @Override + public IPage queryPage(ProcessEsDeclare processEsDeclare, Integer pageNo, Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(processEsDeclare, req.getParameterMap()); + Page page = new Page<>(pageNo, pageSize); + return page(page, queryWrapper); + } + + /** + * 列表查询 + * + * @param processEsDeclare + * @param req + * @return + */ + @Override + public List queryList(ProcessEsDeclare processEsDeclare, HttpServletRequest req) { + return list(QueryGenerator.initQueryWrapper(processEsDeclare, req.getParameterMap())); + } + + /** + * 保存 + * + * @param processEsDeclare + * @return + */ + @Override + public void add(ProcessEsDeclare processEsDeclare) { + Date now = new Date(); + processEsDeclare.setCreateTime(now); + processEsDeclare.setUpdateTime(now); + save(processEsDeclare); + } + + /** + * 更新 + * + * @param processEsDeclare + * @return + */ + @Override + public void editById(ProcessEsDeclare processEsDeclare) { + Date now = new Date(); + processEsDeclare.setUpdateTime(now); + saveOrUpdate(processEsDeclare); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @Override + public void deleteById(String id) { + removeById(id); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @Override + public void deleteByIds(List ids) { + removeByIds(ids); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + @Override + public ProcessEsDeclare queryById(String id) { + return getById(id); + } + + @Override + public ProcessEsDeclare queryByProjectId(String projectId) { + ProcessEsDeclare processEsDeclare = getOne(new LambdaQueryWrapper().eq(ProcessEsDeclare::getProjectId, projectId), false); + if (!Objects.isNull(processEsDeclare)){ + // 标准名称 + LawsEnterpriseStandard lawsEnterpriseStandard = lawsEnterpriseStandardService.getOne( + new LambdaQueryWrapper() + .eq(LawsEnterpriseStandard::getStandardNumber, processEsDeclare.getStandardNo()), false); + if (!Objects.isNull(lawsEnterpriseStandard)){ + processEsDeclare.setStandardId(lawsEnterpriseStandard.getId()); + processEsDeclare.setStandardName(lawsEnterpriseStandard.getStandardName()); + } + // 联络人 + List list = Arrays.asList(processEsDeclare.getAttendUnit().split(",")); + List userByDepIds = sysUserService.getUserByDepIds(list, ""); + if (!userByDepIds.isEmpty()){ + String userIds = userByDepIds.stream().map(SysUser::getId).collect(Collectors.joining(",")); + // 翻译 + processEsDeclare.setInitiator(sysUserService.dictByIdsOrUserNames(userIds, "")); + } + } + return processEsDeclare; + } +} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esdeclare/vo/EsDeclareFlowVO.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esdeclare/vo/EsDeclareFlowVO.java new file mode 100644 index 00000000..b2edac96 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/esdeclare/vo/EsDeclareFlowVO.java @@ -0,0 +1,32 @@ +package com.jero.modules.activiti.process.esdeclare.vo; + +import com.jero.modules.activiti.entity.ProcessAll; +import com.jero.modules.activiti.entity.ProcessApprovalRecord; +import com.jero.modules.activiti.process.esdeclare.entity.ProcessEsDeclare; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Map; + +/** + * @ClassName: EsDEclareFlowVO + * @Description: + * @Author: yjz + * @Date: 2023-11-30 09:57 + * @Version: 1.0 + **/ +@Data +public class EsDeclareFlowVO { + /**流程信息*/ + @ApiModelProperty(value = "流程信息") + private ProcessAll processAll; + /**流程审批信息*/ + @ApiModelProperty(value = "流程审批信息") + private ProcessApprovalRecord processApprovalRecord; + /**业务基本信息*/ + @ApiModelProperty(value = "业务基本信息") + private ProcessEsDeclare processEsDeclare; + /**map*/ + @ApiModelProperty(value = "map") + private Map map; +} diff --git a/laws-modules/src/main/java/com/jero/modules/laws/documenttool/entity/BaseEntity.java b/laws-modules/src/main/java/com/jero/modules/laws/documenttool/entity/BaseEntity.java index d16a2763..a5c044ba 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/documenttool/entity/BaseEntity.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/documenttool/entity/BaseEntity.java @@ -31,7 +31,7 @@ public class BaseEntity implements Serializable { /** 创建人 */ @ApiModelProperty(value = "创建人") // @Excel(name = "创建人", width = 15) - @Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname") + @Dict(dictTable = "sys_user", dicCode = "username", dicText = "realname") private java.lang.String createBy; /** 创建人 翻译 */ @ApiModelProperty(value = "创建人 翻译") @@ -46,7 +46,7 @@ public class BaseEntity implements Serializable { /** 更新人 */ @ApiModelProperty(value = "更新人") // @Excel(name = "更新人", width = 15) - @Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname") + @Dict(dictTable = "sys_user", dicCode = "username", dicText = "realname") private java.lang.String updateBy; /** 更新人 翻译 */ @ApiModelProperty(value = "更新人 翻译")