diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/controller/LawsAsmsDomesticController.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/controller/LawsAsmsDomesticController.java deleted file mode 100644 index b36f106c..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/controller/LawsAsmsDomesticController.java +++ /dev/null @@ -1,179 +0,0 @@ -package com.jero.modules.docking.asms.controller; - -import java.util.Arrays; -import java.util.List; -import java.util.Map; -import javax.annotation.Resource; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import com.jero.common.api.vo.Result; -import com.jero.modules.docking.asms.entity.LawsAsmsDomestic; -import com.jero.modules.docking.asms.service.ILawsAsmsDomesticService; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.jero.modules.docking.asms.service.impl.SynchronizationAsmsService; -import lombok.extern.slf4j.Slf4j; -import com.jero.common.system.base.controller.JeroController; -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 io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import com.jero.common.aspect.annotation.AutoLog; -import org.apache.commons.lang3.StringUtils; -import org.apache.poi.ss.formula.functions.T; - - - /** - * @Description: ASMS国内法规 - * @Author: jero-boot - * @Date: 2023-10-20 - * @Version: V1.0 - */ -@Api(tags="ASMS国内法规") -@RestController -@RequestMapping("/docking/asms/lawsAsmsDomestic") -@Slf4j -public class LawsAsmsDomesticController extends JeroController { - @Autowired - private ILawsAsmsDomesticService lawsAsmsDomesticService; - @Resource - private SynchronizationAsmsService synchronizationAsmsService; - /** - * 分页列表查询 - * - * @param lawsAsmsDomestic - * @param pageNo - * @param pageSize - * @param req - * @return - */ - @AutoLog(value = "ASMS国内法规-分页列表查询") - @ApiOperation(value="ASMS国内法规-分页列表查询", notes="ASMS国内法规-分页列表查询") - @GetMapping(value = "/page") - public Result> queryPageList(LawsAsmsDomestic lawsAsmsDomestic, - @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, - @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, - HttpServletRequest req) { - IPage pageList = lawsAsmsDomesticService.queryPage(lawsAsmsDomestic, pageNo, pageSize, req); - return Result.OK(pageList); - } - - /** - * 列表查询 - * - * @param lawsAsmsDomestic - * @param req - * @return - */ - @AutoLog(value = "ASMS国内法规-列表查询") - @ApiOperation(value="ASMS国内法规-列表查询", notes="ASMS国内法规-列表查询") - @GetMapping(value = "/list") - public Result> queryList(LawsAsmsDomestic lawsAsmsDomestic, HttpServletRequest req) { - List list = lawsAsmsDomesticService.queryList(lawsAsmsDomestic, req); - return Result.OK(list); - } - - /** - * 添加 - * - * @param lawsAsmsDomestic - * @return - */ - @AutoLog(value = "ASMS国内法规-添加") - @ApiOperation(value="ASMS国内法规-添加", notes="ASMS国内法规-添加") - @PostMapping(value = "/add") - public Result add(@Validated @RequestBody LawsAsmsDomestic lawsAsmsDomestic) { - lawsAsmsDomesticService.add(lawsAsmsDomestic); - return Result.OK("操作成功!"); - } - - /** - * 编辑 - * - * @param lawsAsmsDomestic - * @return - */ - @AutoLog(value = "ASMS国内法规-编辑") - @ApiOperation(value="ASMS国内法规-编辑", notes="ASMS国内法规-编辑") - @PostMapping(value = "/edit") - public Result edit(@Validated @RequestBody LawsAsmsDomestic lawsAsmsDomestic) { - lawsAsmsDomesticService.editById(lawsAsmsDomestic); - return Result.OK("操作成功!"); - } - - /** - * 通过id删除 - * - * @param map - * @return - */ - @AutoLog(value = "ASMS国内法规-通过id删除") - @ApiOperation(value="ASMS国内法规-通过id删除", notes="ASMS国内法规-通过id删除") - @PostMapping(value = "/delete") - public Result delete(@RequestBody Map map) { - if(!map.containsKey("id") || StringUtils.isEmpty(map.get("id"))){ - return Result.error("请选择数据!"); - } - lawsAsmsDomesticService.deleteById(map.get("id")); - return Result.OK("删除成功!"); - } - - /** - * 批量删除 - * - * @param map - * @return - */ - @AutoLog(value = "ASMS国内法规-批量删除") - @ApiOperation(value="ASMS国内法规-批量删除", notes="ASMS国内法规-批量删除") - @PostMapping(value = "/deleteBatch") - public Result deleteBatch(@RequestBody Map map) { - if(!map.containsKey("ids") || StringUtils.isEmpty(map.get("ids"))){ - return Result.error("请选择数据!"); - } - this.lawsAsmsDomesticService.deleteByIds(Arrays.asList(map.get("ids").split(","))); - return Result.OK("批量删除成功!"); - } - - /** - * 通过id查询 - * - * @param id - * @return - */ - @AutoLog(value = "ASMS国内法规-通过id查询") - @ApiOperation(value="ASMS国内法规-通过id查询", notes="ASMS国内法规-通过id查询") - @GetMapping(value = "/queryById") - public Result queryById(@RequestParam(name="id") String id) { - LawsAsmsDomestic lawsAsmsDomestic = lawsAsmsDomesticService.queryById(id); - if(lawsAsmsDomestic==null) { - return Result.error("未找到对应数据"); - } - return Result.OK(lawsAsmsDomestic); - } - - /** - * 清理数据接口 - * - * @return - */ - @AutoLog(value = "ASMS国内法规-清理数据接口") - @ApiOperation(value="ASMS国内法规-清理数据接口", notes="ASMS国内法规-清理数据接口") - @GetMapping(value = "/cleanData") - public Result cleanData() { - lawsAsmsDomesticService.cleanData(); - return Result.OK("清理成功!"); - } - - /** - * 根据标准号同步拆分 - * - * @return - */ - @GetMapping(value = "/syncSplitByStandardNumber") - public Result syncSplitByStandardNumber(@RequestParam(name="standardNumber") String standardNumber) { - synchronizationAsmsService.syncSplitByStandardNumber(standardNumber); - return Result.OK("!"); - } -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/controller/LawsAsmsOpenApiController.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/controller/LawsAsmsOpenApiController.java deleted file mode 100644 index 93190ae7..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/controller/LawsAsmsOpenApiController.java +++ /dev/null @@ -1,188 +0,0 @@ -package com.jero.modules.docking.asms.controller; - -import java.util.Arrays; -import java.util.List; -import java.util.Map; -import javax.servlet.http.HttpServletRequest; - -import com.alibaba.fastjson.JSON; -import com.jero.common.api.vo.Result; -import com.jero.modules.docking.asms.entity.LawsAsmsOpenApi; -import com.jero.modules.docking.asms.service.ILawsAsmsOpenApiService; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.jero.modules.docking.asms.util.AsmsPostUtil; -import lombok.extern.slf4j.Slf4j; -import com.jero.common.system.base.controller.JeroController; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import com.jero.common.aspect.annotation.AutoLog; -import org.apache.commons.lang3.StringUtils; -import org.apache.poi.ss.formula.functions.T; - - - /** - * @Description: 汽车标准数字化平台ASMS开放API接口管理 - * @Author: jero-boot - * @Date: 2023-10-18 - * @Version: V1.0 - */ -@Api(tags="汽车标准数字化平台ASMS开放API接口管理") -@RestController -@RequestMapping("/docking/asms/api/lawsAsmsOpenApi") -@Slf4j -public class LawsAsmsOpenApiController extends JeroController { - @Autowired - private ILawsAsmsOpenApiService lawsAsmsOpenApiService; - @Autowired - private AsmsPostUtil asmsPostUtil; - - /** - * 分页列表查询 - * - * @param lawsAsmsOpenApi - * @param pageNo - * @param pageSize - * @param req - * @return - */ - @AutoLog(value = "汽车标准数字化平台ASMS开放API接口管理-分页列表查询") - @ApiOperation(value="汽车标准数字化平台ASMS开放API接口管理-分页列表查询", notes="汽车标准数字化平台ASMS开放API接口管理-分页列表查询") - @GetMapping(value = "/page") - public Result> queryPageList(LawsAsmsOpenApi lawsAsmsOpenApi, - @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, - @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, - HttpServletRequest req) { - IPage pageList = lawsAsmsOpenApiService.queryPage(lawsAsmsOpenApi, pageNo, pageSize, req); - return Result.OK(pageList); - } - - /** - * 列表查询 - * - * @param lawsAsmsOpenApi - * @param req - * @return - */ - @AutoLog(value = "汽车标准数字化平台ASMS开放API接口管理-列表查询") - @ApiOperation(value="汽车标准数字化平台ASMS开放API接口管理-列表查询", notes="汽车标准数字化平台ASMS开放API接口管理-列表查询") - @GetMapping(value = "/list") - public Result> queryList(LawsAsmsOpenApi lawsAsmsOpenApi, HttpServletRequest req) { - List list = lawsAsmsOpenApiService.queryList(lawsAsmsOpenApi, req); - return Result.OK(list); - } - - /** - * 添加 - * - * @param lawsAsmsOpenApi - * @return - */ - @AutoLog(value = "汽车标准数字化平台ASMS开放API接口管理-添加") - @ApiOperation(value="汽车标准数字化平台ASMS开放API接口管理-添加", notes="汽车标准数字化平台ASMS开放API接口管理-添加") - @PostMapping(value = "/add") - public Result add(@Validated @RequestBody LawsAsmsOpenApi lawsAsmsOpenApi) { - lawsAsmsOpenApi.setStatus("0"); - lawsAsmsOpenApiService.add(lawsAsmsOpenApi); - return Result.OK("操作成功!"); - } - - /** - * 编辑 - * - * @param lawsAsmsOpenApi - * @return - */ - @AutoLog(value = "汽车标准数字化平台ASMS开放API接口管理-编辑") - @ApiOperation(value="汽车标准数字化平台ASMS开放API接口管理-编辑", notes="汽车标准数字化平台ASMS开放API接口管理-编辑") - @PostMapping(value = "/edit") - public Result edit(@Validated @RequestBody LawsAsmsOpenApi lawsAsmsOpenApi) { - lawsAsmsOpenApiService.editById(lawsAsmsOpenApi); - return Result.OK("操作成功!"); - } - - /** - * 通过id删除 - * - * @param map - * @return - */ - @AutoLog(value = "汽车标准数字化平台ASMS开放API接口管理-通过id删除") - @ApiOperation(value="汽车标准数字化平台ASMS开放API接口管理-通过id删除", notes="汽车标准数字化平台ASMS开放API接口管理-通过id删除") - @PostMapping(value = "/delete") - public Result delete(@RequestBody Map map) { - if(!map.containsKey("id") || StringUtils.isEmpty(map.get("id"))){ - return Result.error("请选择数据!"); - } - lawsAsmsOpenApiService.deleteById(map.get("id")); - return Result.OK("删除成功!"); - } - - /** - * 批量删除 - * - * @param map - * @return - */ - @AutoLog(value = "汽车标准数字化平台ASMS开放API接口管理-批量删除") - @ApiOperation(value="汽车标准数字化平台ASMS开放API接口管理-批量删除", notes="汽车标准数字化平台ASMS开放API接口管理-批量删除") - @PostMapping(value = "/deleteBatch") - public Result deleteBatch(@RequestBody Map map) { - if(!map.containsKey("ids") || StringUtils.isEmpty(map.get("ids"))){ - return Result.error("请选择数据!"); - } - this.lawsAsmsOpenApiService.deleteByIds(Arrays.asList(map.get("ids").split(","))); - return Result.OK("批量删除成功!"); - } - - /** - * 通过id查询 - * - * @param id - * @return - */ - @AutoLog(value = "汽车标准数字化平台ASMS开放API接口管理-通过id查询") - @ApiOperation(value="汽车标准数字化平台ASMS开放API接口管理-通过id查询", notes="汽车标准数字化平台ASMS开放API接口管理-通过id查询") - @GetMapping(value = "/queryById") - public Result queryById(@RequestParam(name="id",required=true) String id) { - LawsAsmsOpenApi lawsAsmsOpenApi = lawsAsmsOpenApiService.queryById(id); - if(lawsAsmsOpenApi==null) { - return Result.error("未找到对应数据"); - } - return Result.OK(lawsAsmsOpenApi); - } - - @AutoLog(value = "查询接口返回信息") - @ApiOperation(value="查询接口返回信息", notes="查询接口返回信息") - @GetMapping(value = "/getInfoById") - public Result getInfoById(@RequestParam(name="id") String id) { - LawsAsmsOpenApi lawsAsmsOpenApi = lawsAsmsOpenApiService.queryById(id); - if(lawsAsmsOpenApi==null) { - return Result.error("未找到对应数据"); - } - Map map = null; - if (StringUtils.isNotBlank(lawsAsmsOpenApi.getQueryParamJson())) { - map = (Map) JSON.parse(lawsAsmsOpenApi.getQueryParamJson()); - } - return Result.OK(asmsPostUtil.sendGetReq(lawsAsmsOpenApi.getApiUrl(), map)); - } - - @AutoLog(value = "批量同步") - @ApiOperation(value="批量同步", notes="批量同步") - @GetMapping(value = "/syncBatch") - public Result syncBatch(@RequestParam(name="ids") String ids) { - lawsAsmsOpenApiService.syncBatch(Arrays.asList(ids.split(","))); - return Result.OK("操作成功"); - } - - @AutoLog(value = "批量删除原字典配置项") - @ApiOperation(value="批量删除原字典配置项", notes="批量删除原字典配置项") - @GetMapping(value = "/removeDictItemBatch") - public Result removeDictItemBatch(@RequestParam(name="ids") String ids) { - lawsAsmsOpenApiService.removeDictItemBatch(Arrays.asList(ids.split(","))); - return Result.OK("操作成功"); - } - -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/entity/LawsAsmsDomestic.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/entity/LawsAsmsDomestic.java deleted file mode 100644 index 8ccf50cd..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/entity/LawsAsmsDomestic.java +++ /dev/null @@ -1,143 +0,0 @@ -package com.jero.modules.docking.asms.entity; - -import java.io.Serializable; -import java.io.UnsupportedEncodingException; -import java.util.Date; -import java.math.BigDecimal; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; -import com.fasterxml.jackson.annotation.JsonFormat; -import org.springframework.format.annotation.DateTimeFormat; -import org.jeecgframework.poi.excel.annotation.Excel; -import com.jero.common.aspect.annotation.Dict; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; - - -/** - * @Description: ASMS国内法规 - * @Author: jero-boot - * @Date: 2023-10-20 - * @Version: V1.0 - */ -@Data -@TableName("laws_asms_domestic") -@Accessors(chain = true) -@EqualsAndHashCode(callSuper = false) -@ApiModel(value="laws_asms_domestic对象", description="ASMS国内法规") -public class LawsAsmsDomestic implements Serializable { - private static final long serialVersionUID = 1L; - - /**主键ID*/ - @TableId(type = IdType.ASSIGN_ID) - @ApiModelProperty(value = "主键ID") - private java.lang.String id; - /**标准法规编号/标准号*/ - @Excel(name = "标准法规编号/标准号", width = 15) - @ApiModelProperty(value = "标准法规编号/标准号") - private java.lang.String code; - /**标准法规名称/标准名称*/ - @Excel(name = "标准法规名称/标准名称", width = 15) - @ApiModelProperty(value = "标准法规名称/标准名称") - private java.lang.String name; - /**法规英文名称*/ - @Excel(name = "法规英文名称", width = 15) - @ApiModelProperty(value = "法规英文名称") - private java.lang.String englishName; - /**标准法规类别/标准类别*/ - @Excel(name = "标准法规类别/标准类别", width = 15) - @ApiModelProperty(value = "标准法规类别/标准类别") - private java.lang.String type; - /**适用认证*/ - @Excel(name = "适用认证", width = 15) - @ApiModelProperty(value = "适用认证") - private java.lang.String applicableCertificationListString; - /**适用车型拼接名称*/ - @Excel(name = "适用车型拼接名称", width = 15) - @ApiModelProperty(value = "适用车型拼接名称") - private java.lang.String applicableModelsListString; - /**采标程度*/ - @Excel(name = "采标程度", width = 15) - @ApiModelProperty(value = "采标程度") - private java.lang.String degreeAdoption; - /**起草人*/ - @Excel(name = "起草人", width = 15) - @ApiModelProperty(value = "起草人") - private java.lang.String draftingPeople; - /**起草单位*/ - @Excel(name = "起草单位", width = 15) - @ApiModelProperty(value = "起草单位") - private java.lang.String draftingUnit; - /**标准领域名称*/ - @Excel(name = "标准领域名称", width = 15) - @ApiModelProperty(value = "标准领域名称") - private java.lang.String focalPointName; - /**实施日期*/ - @Excel(name = "实施日期", width = 15) - @ApiModelProperty(value = "实施日期") - private java.lang.String implementationDate; - /**采用国际标准号*/ - @Excel(name = "采用国际标准号", width = 15) - @ApiModelProperty(value = "采用国际标准号") - private java.lang.String internationalStandard; - /**新车实施日期*/ - @Excel(name = "新车实施日期", width = 15) - @ApiModelProperty(value = "新车实施日期") - private java.lang.String newCarImplementationDate; - /**新注册车实施日期*/ - @Excel(name = "新注册车实施日期", width = 15) - @ApiModelProperty(value = "新注册车实施日期") - private java.lang.String newRegisterCarImplementationDate; - /**动力类型*/ - @Excel(name = "动力类型", width = 15) - @ApiModelProperty(value = "动力类型") - private java.lang.String powerTypeListString; - /**在产车实施日期*/ - @Excel(name = "在产车实施日期", width = 15) - @ApiModelProperty(value = "在产车实施日期") - private java.lang.String productionCarImplementationDate; - /**提出部门*/ - @Excel(name = "提出部门", width = 15) - @ApiModelProperty(value = "提出部门") - private java.lang.String proposingDepartment; - /**发布日期*/ - @Excel(name = "发布日期", width = 15) - @ApiModelProperty(value = "发布日期") - private java.lang.String publishDate; - /**代替标准号*/ - @Excel(name = "代替标准号", width = 15) - @ApiModelProperty(value = "代替标准号") - private java.lang.String replaceCode; - /**适用范围*/ - @Excel(name = "适用范围", width = 15) - @ApiModelProperty(value = "适用范围") - private java.lang.String scopeApplication; - /**标准性质*/ - @Excel(name = "标准性质", width = 15) - @ApiModelProperty(value = "标准性质") - private java.lang.String standardNature; - /**标准状态*/ - @Excel(name = "标准状态", width = 15) - @ApiModelProperty(value = "标准状态") - private java.lang.String standardStatus; - /**分标委*/ - @Excel(name = "分标委", width = 15) - @ApiModelProperty(value = "分标委") - private java.lang.String subcommittee; - /**创建时间*/ - @ApiModelProperty(value = "创建时间") - private java.lang.String createTimeString; - /**更新时间*/ - @ApiModelProperty(value = "更新时间") - private java.lang.String updateTimeString; - /**同步标识*/ - @Excel(name = "同步标识", width = 15) - @ApiModelProperty(value = "同步标识") - @Dict(dicCode = "sync_flag") - private java.lang.String syncFlag; -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/entity/LawsAsmsOpenApi.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/entity/LawsAsmsOpenApi.java deleted file mode 100644 index a9c37f54..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/entity/LawsAsmsOpenApi.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.jero.modules.docking.asms.entity; - -import java.io.Serializable; -import java.io.UnsupportedEncodingException; -import java.util.Date; -import java.math.BigDecimal; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; -import com.fasterxml.jackson.annotation.JsonFormat; -import org.springframework.format.annotation.DateTimeFormat; -import org.jeecgframework.poi.excel.annotation.Excel; -import com.jero.common.aspect.annotation.Dict; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; - - -/** - * @Description: 汽车标准数字化平台ASMS开放API接口管理 - * @Author: jero-boot - * @Date: 2023-10-18 - * @Version: V1.0 - */ -@Data -@TableName("laws_asms_open_api") -@Accessors(chain = true) -@EqualsAndHashCode(callSuper = false) -@ApiModel(value="laws_asms_open_api对象", description="汽车标准数字化平台ASMS开放API接口管理") -public class LawsAsmsOpenApi implements Serializable { - private static final long serialVersionUID = 1L; - - /**主键ID*/ - @TableId(type = IdType.ASSIGN_ID) - @ApiModelProperty(value = "主键ID") - private java.lang.String id; - /**api名称*/ - @Excel(name = "api名称", width = 15) - @ApiModelProperty(value = "api名称") - private java.lang.String apiName; - /**api路径*/ - @Excel(name = "api路径", width = 15) - @ApiModelProperty(value = "api路径") - private java.lang.String apiUrl; - /**数据字典id*/ - @Excel(name = "数据字典id", width = 15) - @ApiModelProperty(value = "数据字典id") - @Dict(dictTable = "sys_dict", dicCode = "id", dicText = "dict_name") - private java.lang.String dictId; - /**接口类型(1字典,2分标委,3法规)*/ - @Excel(name = "接口类型(1字典,2分标委,3法规)", width = 15) - @ApiModelProperty(value = "接口类型(1字典,2分标委,3法规)") - @Dict(dicCode = "asms_open_api_type") - private java.lang.String apiType; - /**参数map*/ - @Excel(name = "参数map", width = 15) - @ApiModelProperty(value = "参数map") - private java.lang.String queryParamJson; - /**状态(0未同步、1已同步)*/ - @Excel(name = "状态(0未同步、1已同步)", width = 15) - @ApiModelProperty(value = "状态(0未同步、1已同步)") - @Dict(dicCode = "sync_status") - private java.lang.String status; -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/job/AsmsDomesticJob.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/job/AsmsDomesticJob.java deleted file mode 100644 index cd581935..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/job/AsmsDomesticJob.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.jero.modules.docking.asms.job; - -import com.jero.common.util.SpringContextUtils; -import com.jero.modules.docking.asms.service.impl.SynchronizationAsmsService; -import org.quartz.Job; -import org.quartz.JobExecutionContext; -import org.quartz.JobExecutionException; - -/** - * @Author: liao - * @Date: 2023/11/3 13:43 - * @Description: 同步asms国内法规 - */ -public class AsmsDomesticJob implements Job { - @Override - public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { - SynchronizationAsmsService bean = SpringContextUtils.getBean(SynchronizationAsmsService.class); - bean.syncDomestic(); - } -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/job/AsmsSplitJob.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/job/AsmsSplitJob.java deleted file mode 100644 index e107b4eb..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/job/AsmsSplitJob.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.jero.modules.docking.asms.job; - -import com.jero.common.util.SpringContextUtils; -import com.jero.modules.docking.asms.service.impl.SynchronizationAsmsService; -import org.quartz.Job; -import org.quartz.JobExecutionContext; -import org.quartz.JobExecutionException; - -/** - * @Author: liao - * @Date: 2023/11/3 13:44 - * @Description: 同步asms文档拆分 - */ -public class AsmsSplitJob implements Job { - @Override - public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { - SynchronizationAsmsService bean = SpringContextUtils.getBean(SynchronizationAsmsService.class); - bean.syncSplit(); - } -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/mapper/LawsAsmsDomesticMapper.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/mapper/LawsAsmsDomesticMapper.java deleted file mode 100644 index d3c880ea..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/mapper/LawsAsmsDomesticMapper.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.jero.modules.docking.asms.mapper; - -import java.util.List; - -import org.apache.ibatis.annotations.Param; -import com.jero.modules.docking.asms.entity.LawsAsmsDomestic; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; - -/** - * @Description: ASMS国内法规 - * @Author: jero-boot - * @Date: 2023-10-20 - * @Version: V1.0 - */ -public interface LawsAsmsDomesticMapper extends BaseMapper { - -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/mapper/LawsAsmsOpenApiMapper.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/mapper/LawsAsmsOpenApiMapper.java deleted file mode 100644 index cff1ddb1..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/mapper/LawsAsmsOpenApiMapper.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.jero.modules.docking.asms.mapper; - -import org.apache.ibatis.annotations.Mapper; -import com.jero.modules.docking.asms.entity.LawsAsmsOpenApi; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import org.apache.ibatis.annotations.Param; - -import java.util.List; - -/** - * @Description: 汽车标准数字化平台ASMS开放API接口管理 - * @Author: jero-boot - * @Date: 2023-10-18 - * @Version: V1.0 - */ -@Mapper -public interface LawsAsmsOpenApiMapper extends BaseMapper { - - /** - * @Author: liao - * @Date: 2023/10/18 16:25 - * @Description: 物理删除字典配置项数据 - **/ - void removeDictItemBatch(@Param("dictIdList") List dictIdList); - - /** - * @Author: liao - * @Date: 2023/10/23 9:54 - * @Description: 获取asms国内法规的标准性质列表 - **/ - List getStandardTypeList(); - -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/mapper/xml/LawsAsmsDomesticMapper.xml b/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/mapper/xml/LawsAsmsDomesticMapper.xml deleted file mode 100644 index 2a1f457d..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/mapper/xml/LawsAsmsDomesticMapper.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/mapper/xml/LawsAsmsOpenApiMapper.xml b/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/mapper/xml/LawsAsmsOpenApiMapper.xml deleted file mode 100644 index 611903f7..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/mapper/xml/LawsAsmsOpenApiMapper.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - DELETE FROM sys_dict_item WHERE dict_id IN - - #{item} - - - - \ No newline at end of file diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/service/ILawsAsmsDomesticService.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/service/ILawsAsmsDomesticService.java deleted file mode 100644 index fb11ce1f..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/service/ILawsAsmsDomesticService.java +++ /dev/null @@ -1,81 +0,0 @@ -package com.jero.modules.docking.asms.service; - -import com.jero.modules.docking.asms.entity.LawsAsmsDomestic; -import com.baomidou.mybatisplus.extension.service.IService; -import javax.servlet.http.HttpServletRequest; -import com.baomidou.mybatisplus.core.metadata.IPage; -import java.util.List; - -/** - * @Description: ASMS国内法规 - * @Author: jero-boot - * @Date: 2023-10-20 - * @Version: V1.0 - */ -public interface ILawsAsmsDomesticService extends IService { - - /** - * 分页查询 - * - * @param lawsAsmsDomestic - * @param pageNo - * @param pageSize - * @param req - * @return - */ - IPage queryPage(LawsAsmsDomestic lawsAsmsDomestic, Integer pageNo, Integer pageSize, HttpServletRequest req); - - /** - * 列表查询 - * - * @param lawsAsmsDomestic - * @param req - * @return - */ - List queryList(LawsAsmsDomestic lawsAsmsDomestic, HttpServletRequest req); - - /** - * 保存 - * - * @param lawsAsmsDomestic - * @return - */ - void add(LawsAsmsDomestic lawsAsmsDomestic); - - /** - * 更新 - * - * @param lawsAsmsDomestic - * @return - */ - void editById(LawsAsmsDomestic lawsAsmsDomestic); - - /** - * 通过id删除 - * - * @param id - * @return - */ - void deleteById(String id); - - /** - * 批量删除 - * - * @param ids - * @return - */ - void deleteByIds(List ids); - - /** - * 通过id查询 - * - * @param id - * @return - */ - LawsAsmsDomestic queryById(String id); - - /** - * 清理同步进来的脏数据 - */ - void cleanData(); -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/service/ILawsAsmsOpenApiService.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/service/ILawsAsmsOpenApiService.java deleted file mode 100644 index aef53f8f..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/service/ILawsAsmsOpenApiService.java +++ /dev/null @@ -1,100 +0,0 @@ -package com.jero.modules.docking.asms.service; - -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.service.IService; -import com.jero.modules.docking.asms.entity.LawsAsmsOpenApi; -import com.jero.modules.laws.documenttool.entity.LawsDocumentSplit; -import org.jetbrains.annotations.NotNull; - -import javax.servlet.http.HttpServletRequest; -import java.util.List; - -/** - * @Description: 汽车标准数字化平台ASMS开放API接口管理 - * @Author: jero-boot - * @Date: 2023-10-18 - * @Version: V1.0 - */ -public interface ILawsAsmsOpenApiService extends IService { - - /** - * 分页查询 - * - * @param lawsAsmsOpenApi - * @param pageNo - * @param pageSize - * @param req - * @return - */ - IPage queryPage(LawsAsmsOpenApi lawsAsmsOpenApi, Integer pageNo, Integer pageSize, HttpServletRequest req); - - /** - * 列表查询 - * - * @param lawsAsmsOpenApi - * @param req - * @return - */ - List queryList(LawsAsmsOpenApi lawsAsmsOpenApi, HttpServletRequest req); - - /** - * 保存 - * - * @param lawsAsmsOpenApi - * @return - */ - void add(LawsAsmsOpenApi lawsAsmsOpenApi); - - /** - * 更新 - * - * @param lawsAsmsOpenApi - * @return - */ - void editById(LawsAsmsOpenApi lawsAsmsOpenApi); - - /** - * 通过id删除 - * - * @param id - * @return - */ - void deleteById(String id); - - /** - * 批量删除 - * - * @param ids - * @return - */ - void deleteByIds(List ids); - - /** - * 通过id查询 - * - * @param id - * @return - */ - LawsAsmsOpenApi queryById(String id); - - /** - * @Author: liao - * @Date: 2023/10/18 13:46 - * @Description: 批量同步 - **/ - void syncBatch(List idList); - - @NotNull - String disposeImg(String articleContent); - - /** - * @Author: liao - * @Date: 2023/10/18 16:20 - * @Description: 批量删除原字典配置项 - **/ - void removeDictItemBatch(List idList); - - void disposeItemVal(LawsDocumentSplit lawsDocumentSplit, String articleContent); - - String judgeStandardProperty(String standardNumber); -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/service/impl/LawsAsmsDomesticServiceImpl.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/service/impl/LawsAsmsDomesticServiceImpl.java deleted file mode 100644 index 7fb93050..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/service/impl/LawsAsmsDomesticServiceImpl.java +++ /dev/null @@ -1,206 +0,0 @@ -package com.jero.modules.docking.asms.service.impl; - -import cn.hutool.core.util.StrUtil; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.jero.modules.docking.asms.entity.LawsAsmsDomestic; -import com.jero.modules.docking.asms.mapper.LawsAsmsDomesticMapper; -import com.jero.modules.docking.asms.service.ILawsAsmsDomesticService; -import com.jero.modules.laws.standard.entity.LawsDomesticStandard; -import com.jero.modules.laws.standard.entity.LawsOverseasStandard; -import com.jero.modules.laws.standard.mapper.LawsDomesticStandardMapper; -import com.jero.modules.laws.standard.mapper.LawsOverseasStandardMapper; -import com.jero.modules.laws.standard.service.ILawsDomesticStandardService; -import com.jero.modules.laws.standard.service.ILawsOverseasStandardService; -import org.hibernate.validator.constraints.pl.REGON; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import com.jero.common.exception.JeroBootException; - -import java.util.Arrays; -import java.util.List; -import java.util.Date; -import java.util.stream.Collectors; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.jero.common.system.query.QueryGenerator; - -import javax.annotation.Resource; -import javax.servlet.http.HttpServletRequest; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; - - -/** - * @Description: ASMS国内法规 - * @Author: jero-boot - * @Date: 2023-10-20 - * @Version: V1.0 - */ -@Service -@Transactional(rollbackFor = JeroBootException.class) -public class LawsAsmsDomesticServiceImpl extends ServiceImpl implements ILawsAsmsDomesticService { - - @Resource - private LawsDomesticStandardMapper lawsDomesticStandardMapper; - - @Resource - private LawsOverseasStandardMapper lawsOverseasStandardMapper; - - /** - * 分页查询 - * - * @param lawsAsmsDomestic - * @param pageNo - * @param pageSize - * @param req - * @return - */ - @Override - public IPage queryPage(LawsAsmsDomestic lawsAsmsDomestic, Integer pageNo, Integer pageSize, - HttpServletRequest req) { - QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(lawsAsmsDomestic, req.getParameterMap()); - Page page = new Page<>(pageNo, pageSize); - return page(page, queryWrapper); - } - - /** - * 列表查询 - * - * @param lawsAsmsDomestic - * @param req - * @return - */ - @Override - public List queryList(LawsAsmsDomestic lawsAsmsDomestic, HttpServletRequest req) { - return list(QueryGenerator.initQueryWrapper(lawsAsmsDomestic, req.getParameterMap())); - } - - /** - * 保存 - * - * @param lawsAsmsDomestic - * @return - */ - @Override - public void add(LawsAsmsDomestic lawsAsmsDomestic) { - save(lawsAsmsDomestic); - } - - /** - * 更新 - * - * @param lawsAsmsDomestic - * @return - */ - @Override - public void editById(LawsAsmsDomestic lawsAsmsDomestic) { - saveOrUpdate(lawsAsmsDomestic); - } - - /** - * 通过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 LawsAsmsDomestic queryById(String id) { - return getById(id); - } - - /** - * 清理导入进来的脏数据 - */ - @Override - public void cleanData() { - // 先清理废止日期垃圾时间数据 - lawsDomesticStandardMapper.cleanAnnulmentDate(); - lawsOverseasStandardMapper.cleanAnnulmentDate(); - List gblist = lawsDomesticStandardMapper.listWithoutDelFlag(); - List fblist = lawsOverseasStandardMapper.listWithoutDelFlag(); - // 遍历所有国标数据,清理新车型实施日期 在产车实施日期两个字段中的脏数据 - for (LawsDomesticStandard standard : gblist) { - String newModelImplementationDate = standard.getNewModelImplementationDate(); - String onTheProductionDate = standard.getOnTheProductionDate(); - if (StrUtil.isBlank(newModelImplementationDate) && StrUtil.isBlank(onTheProductionDate)) { - continue; - } - - if (StrUtil.isNotBlank(newModelImplementationDate)) { - if (newModelImplementationDate.equals(",")) { - standard.setNewModelImplementationDate(""); - } else { - List dateList = Arrays.asList(newModelImplementationDate.split(",")); - // 去重 - standard.setNewModelImplementationDate(dateList.stream() - .distinct().collect(Collectors.joining(","))); - } - } - - if (StrUtil.isNotBlank(onTheProductionDate)) { - if (onTheProductionDate.equals(",")) { - standard.setOnTheProductionDate(""); - } else { - List dateList = Arrays.asList(onTheProductionDate.split(",")); - // 去重 - standard.setOnTheProductionDate(dateList.stream() - .distinct().collect(Collectors.joining(","))); - } - } - lawsDomesticStandardMapper.updateIgnoreDelFlag(standard); - } - - for (LawsOverseasStandard standard : fblist) { - String newModelImplementationDate = standard.getNewModelImplementationDate(); - String onTheProductionDate = standard.getOnTheProductionDate(); - if (StrUtil.isBlank(newModelImplementationDate) && StrUtil.isBlank(onTheProductionDate)) { - continue; - } - - if (StrUtil.isNotBlank(newModelImplementationDate)) { - if (newModelImplementationDate.equals(",")) { - standard.setNewModelImplementationDate(""); - } else { - List dateList = Arrays.asList(newModelImplementationDate.split(",")); - // 去重 - standard.setNewModelImplementationDate(dateList.stream() - .distinct().collect(Collectors.joining(","))); - } - } - - if (StrUtil.isNotBlank(onTheProductionDate)) { - if (onTheProductionDate.equals(",")) { - standard.setOnTheProductionDate(""); - } else { - List dateList = Arrays.asList(onTheProductionDate.split(",")); - // 去重 - standard.setOnTheProductionDate(dateList.stream() - .distinct().collect(Collectors.joining(","))); - } - } - lawsOverseasStandardMapper.updateIgnoreDelFlag(standard); - } - } -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/service/impl/LawsAsmsOpenApiServiceImpl.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/service/impl/LawsAsmsOpenApiServiceImpl.java deleted file mode 100644 index 9df64e18..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/service/impl/LawsAsmsOpenApiServiceImpl.java +++ /dev/null @@ -1,1127 +0,0 @@ -package com.jero.modules.docking.asms.service.impl; - -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -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.common.util.MinioUtil; -import com.jero.common.util.SnowflakeUtils; -import com.jero.common.util.UUIDUtils; -import com.jero.modules.docking.asms.entity.LawsAsmsDomestic; -import com.jero.modules.docking.asms.entity.LawsAsmsOpenApi; -import com.jero.modules.docking.asms.mapper.LawsAsmsOpenApiMapper; -import com.jero.modules.docking.asms.service.ILawsAsmsDomesticService; -import com.jero.modules.docking.asms.service.ILawsAsmsOpenApiService; -import com.jero.modules.docking.asms.util.AlphanumericComparator; -import com.jero.modules.docking.asms.util.AsmsPostUtil; -import com.jero.modules.laws.documenttool.entity.LawsDocumentSplit; -import com.jero.modules.laws.documenttool.mapper.LawsDocumentSplitMapper; -import com.jero.modules.laws.home.common.LawsHomeSearchCommon; -import com.jero.modules.laws.home.service.ILawsHomeSearchService; -import com.jero.modules.laws.standard.entity.LawsDomesticStandard; -import com.jero.modules.laws.standard.service.ILawsDomesticStandardService; -import com.jero.modules.laws.standard.service.ILawsReplacedStandardService; -import com.jero.modules.laws.standardization.common.LawsStandardizationCommon; -import com.jero.modules.laws.standardization.entity.LawsStandardization; -import com.jero.modules.laws.standardization.service.ILawsStandardizationService; -import com.jero.modules.oss.entity.OSSFile; -import com.jero.modules.oss.service.IOSSFileService; -import com.jero.modules.split.entity.SarFileSplitInfoEO; -import com.jero.modules.split.entity.SarFileSplitItemsValEO; -import com.jero.modules.split.entity.SarFileSplitMenuEO; -import com.jero.modules.split.mapper.SarFileSplitMenuEOMapper; -import com.jero.modules.split.service.ISarFileSplitInfoService; -import com.jero.modules.split.service.ISarFileSplitItemsValEOService; -import com.jero.modules.split.service.ISarFileSplitMenuEOService; -import com.jero.modules.system.entity.SysDict; -import com.jero.modules.system.entity.SysDictItem; -import com.jero.modules.system.service.ISysDictItemService; -import com.jero.modules.system.service.ISysDictService; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang3.StringUtils; -import org.jetbrains.annotations.NotNull; -import org.jsoup.Jsoup; -import org.jsoup.nodes.Document; -import org.jsoup.nodes.Element; -import org.jsoup.select.Elements; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.http.*; -import org.springframework.mock.web.MockMultipartFile; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.web.client.RestTemplate; -import org.springframework.web.multipart.MultipartFile; - -import javax.annotation.Resource; -import javax.servlet.http.HttpServletRequest; -import java.io.InputStream; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.time.LocalDate; -import java.util.*; -import java.util.concurrent.atomic.AtomicInteger; -import java.util.regex.Matcher; -import java.util.regex.Pattern; -import java.util.stream.Collectors; - - -/** - * @Description: 汽车标准数字化平台ASMS开放API接口管理 - * @Author: jero-boot - * @Date: 2023-10-18 - * @Version: V1.0 - */ -@Service -@Slf4j -@Transactional(rollbackFor = JeroBootException.class) -public class LawsAsmsOpenApiServiceImpl extends ServiceImpl implements ILawsAsmsOpenApiService { - - @Autowired - private AsmsPostUtil asmsPostUtil; - @Autowired - private ISysDictItemService sysDictItemService; - @Autowired - private ILawsAsmsDomesticService lawsAsmsDomesticService; - @Autowired - private LawsAsmsOpenApiMapper lawsAsmsOpenApiMapper; - @Autowired - private ILawsStandardizationService lawsStandardizationService; - @Autowired - private ILawsDomesticStandardService lawsDomesticStandardService; - @Autowired - private ISarFileSplitInfoService sarFileSplitInfoService; - @Autowired - private LawsDocumentSplitMapper lawsDocumentSplitMapper; - @Autowired - private ISarFileSplitMenuEOService sarFileSplitMenuEOService; - @Autowired - private SarFileSplitMenuEOMapper sarFileSplitMenuEOMapper; - @Autowired - private ISarFileSplitItemsValEOService sarFileSplitItemsValEOService; - @Autowired - private ILawsReplacedStandardService lawsReplacedStandardService; - @Autowired - private IOSSFileService ossFileService; - @Autowired - private ISysDictService sysDictService; - @Resource - private ILawsHomeSearchService lawsHomeSearchService; - @Autowired - private RestTemplate restTemplate; - - private final static String filePath = "asms/"; - private static SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); - private static SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - private static SimpleDateFormat oldDateFormat = new SimpleDateFormat("yyyy年MM月dd日"); - - @Value("#{'${standardProperty.admittance:}'.split(',')}") - private List admittanceList; - - /** - * 分页查询 - * - * @param lawsAsmsOpenApi - * @param pageNo - * @param pageSize - * @param req - * @return - */ - @Override - public IPage queryPage(LawsAsmsOpenApi lawsAsmsOpenApi, Integer pageNo, Integer pageSize, - HttpServletRequest req) { - QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(lawsAsmsOpenApi, req.getParameterMap()); - queryWrapper.orderByAsc("api_name"); - Page page = new Page<>(pageNo, pageSize); - return page(page, queryWrapper); - } - - /** - * 列表查询 - * - * @param lawsAsmsOpenApi - * @param req - * @return - */ - @Override - public List queryList(LawsAsmsOpenApi lawsAsmsOpenApi, HttpServletRequest req) { - return list(QueryGenerator.initQueryWrapper(lawsAsmsOpenApi, req.getParameterMap())); - } - - /** - * 保存 - * - * @param lawsAsmsOpenApi - * @return - */ - @Override - public void add(LawsAsmsOpenApi lawsAsmsOpenApi) { - save(lawsAsmsOpenApi); - } - - /** - * 更新 - * - * @param lawsAsmsOpenApi - * @return - */ - @Override - public void editById(LawsAsmsOpenApi lawsAsmsOpenApi) { - saveOrUpdate(lawsAsmsOpenApi); - } - - /** - * 通过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 LawsAsmsOpenApi queryById(String id) { - return getById(id); - } - - /** - * @Author: liao - * @Date: 2023/10/18 13:46 - * @Description: 批量同步 - **/ - @Override - @Transactional - public void syncBatch(List idList) { - List lawsAsmsOpenApiList = listByIds(idList); - - lawsAsmsOpenApiList.forEach(lawsAsmsOpenApi -> { - - Map map = new HashMap<>(); - if (StringUtils.isNotBlank(lawsAsmsOpenApi.getQueryParamJson())) { - map = (Map) JSON.parse(lawsAsmsOpenApi.getQueryParamJson()); - } - - if ("1".equals(lawsAsmsOpenApi.getApiType()) && StringUtils.isNotBlank(lawsAsmsOpenApi.getDictId())) { - // 如果是下拉字典(普通)、字典id不为空、返回的数据不为空,则进行数据字典同步操作 - // 查询该字典全部数据项 - List> mapList = asmsPostUtil.sendGetReq(lawsAsmsOpenApi.getApiUrl(), map); - if (CollectionUtils.isNotEmpty(mapList)) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(SysDictItem::getDictId, lawsAsmsOpenApi.getDictId()); - List dictItemList = sysDictItemService.list(queryWrapper); - List codeList; - List insertDictItemList = new ArrayList(); - List updateDictItemList = new ArrayList(); - if (CollectionUtils.isNotEmpty(dictItemList)) { - codeList = dictItemList.stream().map(SysDictItem::getItemValue).collect(Collectors.toList()); - } else { - codeList = new ArrayList(); - } - SysDict sysDict = sysDictService.getById(lawsAsmsOpenApi.getDictId()); - // 遍历返回数据,封装字典数据项 - for (int i = 0; i < mapList.size(); i++) { - Map eMap = mapList.get(i); - SysDictItem dictItem = new SysDictItem(); - // 字典id - dictItem.setDictId(lawsAsmsOpenApi.getDictId()); - // 是否标签管理显示(显示) - dictItem.setIsTagDict(1); - // 状态(启用) - dictItem.setStatus(1); - dictItem.setDelFlag(0); - // 排序 - dictItem.setSortOrder(i + 1); - - // 是否固定 - dictItem.setIsReadOnly(sysDict.getIsReadOnly()); - - eMap.forEach((k, v) -> { - if ("code".equals(k)) { - // 字典项值 - dictItem.setItemValue(v); - } else if ("name".equals(k)) { - // 字典项名称 - dictItem.setItemText(v); - } else if ("id".equals(k)) { - // 主键 - dictItem.setId(v); - } else if ("pid".equals(k)) { - // 父节点id - dictItem.setParentId(v); - } else if ("source".equals(k)) { - // 来源 - dictItem.setDescription(v); - } - }); - if (StringUtils.isBlank(dictItem.getItemValue())) { - throw new JeroBootException("字典值不能为空"); - } - if (codeList.contains(dictItem.getItemValue())) { - // 如果code在数据库存在,则将数据库的id赋予对接的数据 - dictItem.setId(dictItemList.stream().filter(e -> - e.getItemValue().equals(dictItem.getItemValue())) - .collect(Collectors.toList()).get(0).getId()); - updateDictItemList.add(dictItem); - } else { - // 如果不存在则新增 - insertDictItemList.add(dictItem); - } - } - // 操作数据库 - if (CollectionUtils.isNotEmpty(updateDictItemList)) { - // 更新 - sysDictItemService.updateBatchById(updateDictItemList); - } - if (CollectionUtils.isNotEmpty(insertDictItemList)) { - // 新增 - sysDictItemService.saveBatch(insertDictItemList); - } - // 状态设置为已同步 - lawsAsmsOpenApi.setStatus("1"); - } - - log.info("{}同步成功{}条数据", lawsAsmsOpenApi.getApiName(), mapList.size()); - } else if ("2".equals(lawsAsmsOpenApi.getApiType())) { - // 如果是分标委 - List> mapList = asmsPostUtil.sendGetReq(lawsAsmsOpenApi.getApiUrl(), map); - List lawsStandardizationList = new ArrayList(); - -// LambdaQueryWrapper parentQueryWrapper = new LambdaQueryWrapper<>(); -// parentQueryWrapper.eq(LawsStandardization::getPid, "0"); -// List parentList = lawsStandardizationService.list(parentQueryWrapper); -// String parentId; -// if (CollectionUtils.isEmpty(parentList)) { -// parentId = "0"; -// } else { -// parentId = parentList.get(0).getId(); -// } - - mapList.forEach(eMap -> { - LawsStandardization lawsStandardization = new LawsStandardization(); - lawsStandardization.setStandardizationType(LawsStandardizationCommon.FBW); - // 固定放到“其他”层级下 - lawsStandardization.setPid("1752134517340114944"); - eMap.forEach((k,v) -> { - if ("code".equals(k)) { - lawsStandardization.setNum(v); - } else if ("name".equals(k)) { - lawsStandardization.setName(v); - } else if ("field".equals(k)) { - lawsStandardization.setWorkingArea(v); - } - }); - lawsStandardizationList.add(lawsStandardization); - }); - lawsStandardizationService.saveBatch(lawsStandardizationList); - // 状态设置为已同步 - lawsAsmsOpenApi.setStatus("1"); - } else if ("3".equals(lawsAsmsOpenApi.getApiType()) && "xiaobodata/openApi/domesticLaws/list".equals(lawsAsmsOpenApi.getApiUrl())) { - // 如果是国内法规,并且url为国内法规标准检索列表 - - // 法规列表 - String url = "xiaobodata/openApi/domesticLaws/list"; - map.put("pageNo", "1"); - map.put("pageSize", "2"); - Map totalMap = asmsPostUtil.sendGetReq2(url, map); - Integer total = (Integer) totalMap.get("total"); - map.put("pageSize", total.toString()); - - List> mapList = asmsPostUtil.sendGetReq(lawsAsmsOpenApi.getApiUrl(), map); - if (CollectionUtils.isNotEmpty(mapList)) { - List lawsAsmsDomesticList = new ArrayList(); - mapList.forEach(eMap -> { - LawsAsmsDomestic lawsAsmsDomestic = JSONObject.parseObject(JSONObject.toJSONString(eMap), LawsAsmsDomestic.class); - lawsAsmsDomestic.setCreateTimeString(eMap.get("createTime")); - lawsAsmsDomestic.setUpdateTimeString(eMap.get("updateTime")); - lawsAsmsDomestic.setFocalPointName(eMap.get("focalPoint")); - lawsAsmsDomestic.setSyncFlag("A"); - lawsAsmsDomesticList.add(lawsAsmsDomestic); - }); - lawsAsmsDomesticService.saveBatch(lawsAsmsDomesticList); - } - // 已同步 - lawsAsmsOpenApi.setStatus("1"); - - log.info("{}同步成功{}条数据", lawsAsmsOpenApi.getApiName(), mapList.size()); - } else if ("3".equals(lawsAsmsOpenApi.getApiType()) && "xiaobodata/openApi/domesticLaws/getInfo".equals(lawsAsmsOpenApi.getApiUrl())) { - // 如果是国内法规,并且url为国内法规标准基本信息 - List lawsAsmsDomesticList = lawsAsmsDomesticService.list(); - if (CollectionUtils.isEmpty(lawsAsmsDomesticList)) { - lawsAsmsOpenApi.setStatus("1"); - } - List updateList = new ArrayList(); - if (CollectionUtils.isNotEmpty(lawsAsmsDomesticList)) { - Map paramMap = new HashMap<>(); - lawsAsmsDomesticList.forEach(lawsAsmsDomestic -> { - paramMap.put("lawCode", lawsAsmsDomestic.getCode()); - - List> mapList = null; - try { - mapList = asmsPostUtil.sendGetReq(lawsAsmsOpenApi.getApiUrl(), paramMap); - } catch (Exception e) { - return; - } - LawsAsmsDomestic parseObject = JSONObject.parseObject(JSONObject.toJSONString(mapList.get(0)), LawsAsmsDomestic.class); - log.info(parseObject.toString()); - parseObject.setSyncFlag("B"); - parseObject.setId(lawsAsmsDomestic.getId()); - parseObject.setCreateTimeString(mapList.get(0).get("createTime")); - parseObject.setUpdateTimeString(mapList.get(0).get("updateTime")); - parseObject.setFocalPointName(mapList.get(0).get("focalPoint")); - updateList.add(parseObject); - }); - lawsAsmsDomesticService.updateBatchById(updateList); - log.info("{}同步成功{}条数据", lawsAsmsOpenApi.getApiName(), lawsAsmsDomesticList.size()); - } - } else if ("4".equals(lawsAsmsOpenApi.getApiType()) && "A".equals(lawsAsmsOpenApi.getApiUrl())) { - // 同步标准类别(国内) - String standardTypeDictId = "1695983156705095681"; - List standardTypeList = lawsAsmsOpenApiMapper.getStandardTypeList(); - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(SysDictItem::getDictId, standardTypeDictId); - queryWrapper.in(SysDictItem::getItemValue, standardTypeList); - List sysDictItems = sysDictItemService.list(queryWrapper); - if (CollectionUtils.isNotEmpty(sysDictItems)) { - List itemValueList = sysDictItems.stream().map(SysDictItem::getItemValue).collect(Collectors.toList()); - standardTypeList.removeAll(itemValueList); - } - if (CollectionUtils.isNotEmpty(standardTypeList)) { - List dictItemList = new ArrayList(); - for (int i = 0; i < standardTypeList.size(); i++) { - SysDictItem dictItem = new SysDictItem(); - // 字典id - dictItem.setDictId(standardTypeDictId); - // 是否标签管理显示(显示) - dictItem.setIsTagDict(1); - // 状态(启用) - dictItem.setStatus(1); - dictItem.setDelFlag(0); - // 排序 - dictItem.setSortOrder(i + 1); - String standardType = standardTypeList.get(i); - dictItem.setItemValue(standardType); - String itemText; - switch (standardType) { - case "GB": - itemText = "强制性国家标准GB"; - break; - case "GB/T": - itemText = "推荐性国家标准GB/T"; - break; - case "QC/T": - itemText = "汽车行业标准QC/T"; - break; - case "QCn": - itemText = "汽车行业标准QCn"; - break; - case "HJ/T": - itemText = "环境保护行业标准HJ/T"; - break; - case "GB/Z": - itemText = "国家职业卫生标准GB/Z"; - break; - default: - itemText = standardType; - } - - dictItem.setItemText(itemText); - - dictItemList.add(dictItem); - } - sysDictItemService.saveBatch(dictItemList); - } - // 状态设置为已同步 - lawsAsmsOpenApi.setStatus("1"); - } else if ("4".equals(lawsAsmsOpenApi.getApiType()) && "B".equals(lawsAsmsOpenApi.getApiUrl())) { - // 国内法规同步到业务表 - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.orderByAsc(LawsAsmsDomestic::getId); - List lawsAsmsDomesticList = lawsAsmsDomesticService.list(queryWrapper); - List sysDictItemList = sysDictItemService.list(); - List lawsStandardizationList = lawsStandardizationService.list(); - AtomicInteger addNum = new AtomicInteger(); - lawsAsmsDomesticList.forEach(lawsAsmsDomestic -> { - // 获取标准号,如果国标文件中存在则不进行后粗操作 - String standardCode = lawsAsmsDomestic.getCode(); - LawsDomesticStandard testStandard = lawsDomesticStandardService.queryByStandardNumber(standardCode); - if(!Objects.isNull(testStandard)){ - return; - } - - String[] parts = lawsAsmsDomestic.getCode().split("[-\\s]"); // 使用空格或破折号作为分隔符 - if (parts.length < 3) { - parts = lawsAsmsDomestic.getCode().split("[—\\s]"); // 使用空格或破折号作为分隔符 - if (parts.length < 3) { - parts = lawsAsmsDomestic.getCode().split("[一\\s]"); // 使用一或破折号作为分隔符 - } - } - // 封装实例 - LawsDomesticStandard lawsDomesticStandard = new LawsDomesticStandard(); - // 主键 - lawsDomesticStandard.setId(lawsAsmsDomestic.getId()); - // 对接标识 - lawsDomesticStandard.setIsAsmsImport("1"); - // 标准编号 - lawsDomesticStandard.setStandardNumber(lawsAsmsDomestic.getCode()); - // 标准类别 - lawsDomesticStandard.setStandardClass(parts[0]); - // 标准号 - lawsDomesticStandard.setStandardNumberTemp(parts[1]); - // 年代号 - lawsDomesticStandard.setYearNumber(parts[2]); - // 标准名称 - lawsDomesticStandard.setStandardName(lawsAsmsDomestic.getName()); - // 标准英文名称 - lawsDomesticStandard.setStandardEnglishName(lawsAsmsDomestic.getEnglishName()); - // 适用认证 - String itemValues = getItemValues(lawsAsmsDomestic.getApplicableCertificationListString(), - "1696008107352854529", sysDictItemList); - lawsDomesticStandard.setApplicableCertification(itemValues); - // 适用车型 - itemValues = getItemValues(lawsAsmsDomestic.getApplicableModelsListString(), - "1702518672924110850", sysDictItemList); - lawsDomesticStandard.setApplicableVehicle(itemValues); - // 采标程度 - itemValues = getItemValues(lawsAsmsDomestic.getDegreeAdoption(), - "1696042735686049793", sysDictItemList); - lawsDomesticStandard.setDegreeOfBidAcquisition(itemValues); - // 实施日期 - lawsDomesticStandard.setImplementationDate(getSimpleDate(lawsAsmsDomestic.getImplementationDate())); - // 采用国际标准号 - lawsDomesticStandard.setAdoptTheInternationalStandardNumber(lawsAsmsDomestic.getInternationalStandard()); - // 新车实施日期 - lawsDomesticStandard.setNewModelImplementationDate(getManyDateString(lawsAsmsDomestic.getNewCarImplementationDate())); - // 动力类型 - itemValues = getItemValues(lawsAsmsDomestic.getPowerTypeListString(), - "1702518671166697474", sysDictItemList); - lawsDomesticStandard.setDynamicType(itemValues); - // 在产车实施日期 - lawsDomesticStandard.setOnTheProductionDate(getManyDateString(lawsAsmsDomestic.getProductionCarImplementationDate())); - // 发布日期 - lawsDomesticStandard.setReleaseDate(getSimpleDate(lawsAsmsDomestic.getPublishDate())); - // 代替标准号 - lawsReplacedStandardService.addRelation(lawsAsmsDomestic.getReplaceCode(), lawsAsmsDomestic.getCode(), 1); - // 标准性质 - /*itemValues = getItemValues(lawsAsmsDomestic.getStandardNature(), - "1695010513489833985", sysDictItemList);*/ - lawsDomesticStandard.setStandardProperty("SN002"); - // 标准性质判断 - if (Objects.equals("强制性", lawsAsmsDomestic.getStandardNature())){ - lawsDomesticStandard.setStandardProperty(judgeStandardProperty(lawsDomesticStandard.getStandardNumber())); - } - // 标准状态 - itemValues = getItemValues(lawsAsmsDomestic.getStandardStatus(), - "1695991936599715842", sysDictItemList); - lawsDomesticStandard.setStandardState(itemValues); - // 分标委 - String subcommittee = lawsAsmsDomestic.getSubcommittee(); - if (StringUtils.isNotBlank(subcommittee)) { - lawsDomesticStandard.setBiddingCommittee(lawsStandardizationList.stream() - .filter(e -> subcommittee.equals(e.getName())).collect(Collectors.toList()).get(0).getId()); - } - // 创建时间 - lawsDomesticStandard.setCreateTime(getSimpleDate2(lawsAsmsDomestic.getCreateTimeString())); - // 更新时间 - lawsDomesticStandard.setUpdateTime(getSimpleDate2(lawsAsmsDomestic.getUpdateTimeString())); - LawsDomesticStandard domesticStandard = lawsDomesticStandardService.getById(lawsAsmsDomestic.getId()); - if(Objects.isNull(domesticStandard)){ - // 物理删除 - lawsDomesticStandardService.delById(lawsAsmsDomestic.getId()); - } - lawsDomesticStandardService.saveOrUpdate(lawsDomesticStandard); - addNum.getAndIncrement(); - // 同步es数据库 - lawsHomeSearchService.updateEsData(LawsHomeSearchCommon.LAWS_DOMESTIC_STANDARD, lawsDomesticStandard.getId(), LawsHomeSearchCommon.LAWS_ES_ADD); - }); - // 状态设置为已同步 - lawsAsmsOpenApi.setStatus("1"); - log.info("{}同步成功{}条数据", lawsAsmsOpenApi.getApiName(), addNum); - } else if ("3".equals(lawsAsmsOpenApi.getApiType()) && "xiaobodata/openApi/domesticLaws/getFile".equals(lawsAsmsOpenApi.getApiUrl())) { - // 国内法规相关文档 - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.orderByAsc(LawsAsmsDomestic::getId); - List lawsAsmsDomesticList = lawsAsmsDomesticService.list(queryWrapper); - lawsAsmsDomesticList.forEach(lawsAsmsDomestic -> { - // 初始化是通过ASMS同步过来的数据 进行标准表的匹配。 - // 但是20240320日 需要二次刷新标准的数据,所以就不能用ASMS表中标准的id了,需要用国标表中标准的信息去匹配。 - - String code = lawsAsmsDomestic.getCode(); - String id = lawsAsmsDomestic.getId(); - LawsDomesticStandard testStandard = lawsDomesticStandardService.queryByStandardNumber(code); - - if(!Objects.isNull(testStandard)){ - id = testStandard.getId(); - } - - Map paramMap = new HashMap<>(); - paramMap.put("lawCode", code); - Map objectMap = asmsPostUtil.sendGetReq2(lawsAsmsOpenApi.getApiUrl(), paramMap); - if (Objects.isNull(objectMap)) return; - - // 判断是否有文件信息, 存在则将现有的发布稿信息直接删除? - LambdaQueryWrapper wrapperOss = new LambdaQueryWrapper<>(); - wrapperOss.eq(OSSFile::getStandardFileType, "publish_of_original"); // 发布稿 - wrapperOss.eq(OSSFile::getStandardId, id); // 当前标准的id - List fileList = ossFileService.list(wrapperOss); - if (fileList.size() > 0){ - // 很多个的话 删除后重新上传。 - for (OSSFile file : fileList) { - ossFileService.removeById(file.getId()); - } - } - - Map standardTextPdf = (Map) objectMap.get("standardTextPdf"); - if (!Objects.isNull(standardTextPdf)){ - String fileName = standardTextPdf.get("fileName"); - String fileType = standardTextPdf.get("fileType"); - String url = standardTextPdf.get("url"); - if (StringUtils.isNotBlank(url)) { - upload(url, fileName, fileType, id, code); - } - } - - Map standardTextWord = (Map) objectMap.get("standardTextWord"); - if (!Objects.isNull(standardTextWord)){ - String fileName = standardTextWord.get("fileName"); - String fileType = standardTextWord.get("fileType"); - String url = standardTextWord.get("url"); - if (StringUtils.isNotBlank(url)) { - upload(url, fileName, fileType, id, code); - } - } - }); - // 状态设置为已同步 - lawsAsmsOpenApi.setStatus("1"); - log.info("{}同步成功{}条数据", lawsAsmsOpenApi.getApiName(), lawsAsmsDomesticList.size()); - } else if ("3".equals(lawsAsmsOpenApi.getApiType()) && "xiaobodata/openApi/article/search".equals(lawsAsmsOpenApi.getApiUrl())) { - - // 文档拆分 - String url = "xiaobodata/openApi/article/search"; - map.put("pageNo", "1"); - map.put("pageSize", "2"); - Map totalMap = asmsPostUtil.sendGetReq2(url, map); - Integer total = (Integer) totalMap.get("total"); - map.put("pageSize", total.toString()); - - // 如果是国内法规,并且url为法规条文检索国内法规列表 - List> mapList = asmsPostUtil.sendGetReq(lawsAsmsOpenApi.getApiUrl(), map); - mapList.forEach(eMap -> { - String code = eMap.get("code"); - - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(LawsDomesticStandard::getStandardNumber, code); - LawsDomesticStandard lawsDomesticStandard = lawsDomesticStandardService.getOne(queryWrapper, false); - if (Objects.isNull(lawsDomesticStandard)) { - return; - } - LambdaQueryWrapper queryWrapper1 = new LambdaQueryWrapper<>(); - queryWrapper1.eq(OSSFile::getStandardId, lawsDomesticStandard.getId()); - queryWrapper1.eq(OSSFile::getStandardFileType, "publish_of_original"); - queryWrapper1.like(OSSFile::getFileName, ".docx"); - OSSFile ossFile = ossFileService.getOne(queryWrapper1, false); - if (Objects.isNull(ossFile)){ - return; - } - SarFileSplitInfoEO sarFileSplitInfoEO = new SarFileSplitInfoEO(); - sarFileSplitInfoEO.setStandardId(lawsDomesticStandard.getId()); - sarFileSplitInfoEO.setSerialNumber(lawsDomesticStandard.getStandardNumber()); - sarFileSplitInfoEO.setTitle(lawsDomesticStandard.getStandardName()); - sarFileSplitInfoEO.setFileType("publish_of_original"); - sarFileSplitInfoEO.setFileId(ossFile.getId()); - sarFileSplitInfoEO.setFileName(ossFile.getFileName()); - sarFileSplitInfoEO.setSplitStatus("1"); - sarFileSplitInfoEO.setCreateTime(getSimpleDate2(eMap.get("createTime"))); - sarFileSplitInfoEO.setUpdateTime(getSimpleDate2(eMap.get("updateTime"))); - sarFileSplitInfoEO.setIsAsmsImport("1"); - sarFileSplitInfoEO.setAuthor("云平台"); - sarFileSplitInfoEO.setSplitResult("成功"); - - sarFileSplitInfoService.save(sarFileSplitInfoEO); - }); - // 状态设置为已同步 - lawsAsmsOpenApi.setStatus("1"); - log.info("{}同步成功{}条数据", lawsAsmsOpenApi.getApiName(), mapList.size()); - } else if ("3".equals(lawsAsmsOpenApi.getApiType()) && "xiaobodata/openApi/article/details".equals(lawsAsmsOpenApi.getApiUrl())) { - // 单个法规的条文列表 - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(SarFileSplitInfoEO::getIsAsmsImport, "1"); - List sarFileSplitInfoEOList = sarFileSplitInfoService.list(queryWrapper); - List sysDictItemList = sysDictItemService.list(); - Map paramMap = new HashMap<>(); - Map paramMap2 = new HashMap<>(); - Map paramMap3 = new HashMap<>(); - sarFileSplitInfoEOList.forEach(sarFileSplitInfoEO -> { - paramMap.put("standardCode", sarFileSplitInfoEO.getSerialNumber()); - List> mapList = new ArrayList<>(); - try{ - mapList = asmsPostUtil.sendGetReq(lawsAsmsOpenApi.getApiUrl(), paramMap); - } catch (JeroBootException e){ - log.error(e.getMessage()); - } -// List> mapList = asmsPostUtil.sendGetReq(lawsAsmsOpenApi.getApiUrl(), paramMap); - mapList.forEach(eMap -> { - // 单个法规的条文解读详情 - paramMap2.put("standardCode", sarFileSplitInfoEO.getSerialNumber()); - paramMap2.put("termsCode", eMap.get("termsNum")); - Map objectMap = asmsPostUtil.sendGetReq2("xiaobodata/openApi/article/interpretation/details", paramMap2); - - // 单个法规的条文标签详情 - paramMap3.put("standardCode", sarFileSplitInfoEO.getSerialNumber()); - paramMap3.put("termsCode", eMap.get("termsNum")); - Map objectMap2 = asmsPostUtil.sendGetReq2("xiaobodata/openApi/article/label/details", paramMap3); - - LawsDocumentSplit lawsDocumentSplit = new LawsDocumentSplit(); - lawsDocumentSplit.setId(String.valueOf(SnowflakeUtils.snowflake())); - lawsDocumentSplit.setInfoId(sarFileSplitInfoEO.getId()); - lawsDocumentSplit.setItemNum(eMap.get("termsNum")); - lawsDocumentSplit.setItemTitle(eMap.get("termsName")); - // 条文内容 - String articleContent = eMap.get("articleContent"); - try { - // 处理图片 - articleContent = disposeImg(articleContent); - }catch (Exception e){ - log.error(e.getMessage()); - log.error("图片处理失败!"); - } - // 处理条文详情 - disposeItemVal(lawsDocumentSplit, articleContent); - // 重复性校验 -// if (duplicateCheck(lawsDocumentSplit, articleContent)) {return;} - - lawsDocumentSplit.setItemContent(articleContent); - lawsDocumentSplit.setCreateTime(getSimpleDate2(eMap.get("createTime"))); - lawsDocumentSplit.setUpdateTime(getSimpleDate2(eMap.get("updateTime"))); - - lawsDocumentSplit.setInterpretationArticles((String) objectMap.get("termsInterpretation")); - - lawsDocumentSplit.setFunctionClassification((String) objectMap2.get("functionClassification")); - lawsDocumentSplit.setFunctionProfessional((String) objectMap2.get("functionProfession")); - //lawsDocumentSplit.setFunctionGroupName((String) objectMap2.get("groupingName")); - lawsDocumentSplit.setFunctionGroupName((String) objectMap2.get("groupingNum")); - lawsDocumentSplit.setFunctionGroupCode((String) objectMap2.get("groupingNum")); - lawsDocumentSplit.setCerImplementDate((String) objectMap2.get("implementDateCertified")); - lawsDocumentSplit.setNewCerImplementDate((String) objectMap2.get("implementDateNewCer")); - lawsDocumentSplit.setNewRegisterImplementDate((String) objectMap2.get("implementDateNewRegister")); - lawsDocumentSplit.setLawsRequireType((String) objectMap2.get("lawsRequireType")); - lawsDocumentSplit.setApplications((String) objectMap2.get("modelsType")); - lawsDocumentSplit.setDynamicType((String) objectMap2.get("powerType")); - - if (StringUtils.isNotBlank(lawsDocumentSplit.getLawsRequireType())){ - lawsDocumentSplit.setLawsRequireType(getItemValues(lawsDocumentSplit.getLawsRequireType().replace(",", ";"), - "1702212236079886338", sysDictItemList)); // 法规要求类型 - } - if (StringUtils.isNotBlank(lawsDocumentSplit.getFunctionClassification())){ - lawsDocumentSplit.setFunctionClassification(getItemValues(lawsDocumentSplit.getFunctionClassification().replace(",", ";"), - "1702212237296234497", sysDictItemList)); // 功能分类 - } - if (StringUtils.isNotBlank(lawsDocumentSplit.getFunctionProfessional())){ - lawsDocumentSplit.setFunctionProfessional(getItemValues(lawsDocumentSplit.getFunctionProfessional().replace(",", ";"), - "1702202280677044226", sysDictItemList)); // 功能专业 - } - if (StringUtils.isNotBlank(lawsDocumentSplit.getApplications())){ - lawsDocumentSplit.setApplications(getItemValues(lawsDocumentSplit.getApplications().replace(",", ";"), - "1702518672924110850", sysDictItemList)); // 适用车型 - } - if (StringUtils.isNotBlank(lawsDocumentSplit.getDynamicType())){ - lawsDocumentSplit.setDynamicType(getItemValues(lawsDocumentSplit.getDynamicType().replace(",", ";"), - "1702518671166697474", sysDictItemList)); // 动力类型 - } - - lawsDocumentSplitMapper.insert(lawsDocumentSplit); - }); - }); - // 状态设置为已同步 - lawsAsmsOpenApi.setStatus("1"); - log.info("{}同步成功{}条数据", lawsAsmsOpenApi.getApiName(), sarFileSplitInfoEOList.size()); - } else if ("4".equals(lawsAsmsOpenApi.getApiType()) && "C".equals(lawsAsmsOpenApi.getApiUrl())) { - // 给拆分的条款加上左侧目录 - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(SarFileSplitInfoEO::getIsAsmsImport, "1"); - List sarFileSplitInfoEOList = sarFileSplitInfoService.list(queryWrapper); - String regex = "[^a-zA-Z0-9.]"; - sarFileSplitInfoEOList.forEach(sarFileSplitInfoEO -> { - String infoId = sarFileSplitInfoEO.getId(); - LambdaQueryWrapper queryWrapper1 = new LambdaQueryWrapper<>(); - queryWrapper1.eq(LawsDocumentSplit::getInfoId, infoId); - List lawsDocumentSplitList = lawsDocumentSplitMapper.selectList(queryWrapper1); - List itemNumList = new ArrayList<>(); - for (LawsDocumentSplit lawsDocumentSplit : lawsDocumentSplitList) { - String itemNum = lawsDocumentSplit.getItemNum(); - itemNumList.add(itemNum.replaceAll(regex, "")); - } - // 对目录排序 - Collections.sort(itemNumList, new AlphanumericComparator()); - Map sortMap = new HashMap<>(); - for (int i = 0; i < itemNumList.size(); i++) { - sortMap.put(itemNumList.get(i), i+2L); - } - List sarFileSplitMenuEOList = new java.util.ArrayList<>(); - // 根目录 - SarFileSplitMenuEO rootEO = new SarFileSplitMenuEO(); - String rootId = UUIDUtils.randomUUID20(); - rootEO.setId(rootId); - rootEO.setInfoId(infoId); - rootEO.setName("总目录"); - rootEO.setDisplaySeq(1L); - rootEO.setValidFlag(0); - sarFileSplitMenuEOMapper.insertSelective(rootEO); - - Map idMap = new HashMap<>(); - lawsDocumentSplitList.forEach(lawsDocumentSplit -> { - SarFileSplitMenuEO sarFileSplitMenuEO = new SarFileSplitMenuEO(); - String itemNum = lawsDocumentSplit.getItemNum(); - String id = UUIDUtils.randomUUID20(); - sarFileSplitMenuEO.setId(id); - sarFileSplitMenuEO.setInfoId(infoId); - sarFileSplitMenuEO.setName(itemNum); - sarFileSplitMenuEO.setDisplaySeq(sortMap.get(itemNum.replaceAll(regex, ""))); - sarFileSplitMenuEO.setValidFlag(0); - String itemTitle = lawsDocumentSplit.getItemTitle(); - sarFileSplitMenuEO.setItemName(itemTitle.substring(0, Math.min(10, itemTitle.length()))); - sarFileSplitMenuEOList.add(sarFileSplitMenuEO); - idMap.put(itemNum.replaceAll(regex, ""), id); - - lawsDocumentSplit.setMenuId(id); - lawsDocumentSplitMapper.updateById(lawsDocumentSplit); - }); - - // 设置父id - sarFileSplitMenuEOList.forEach(sarFileSplitMenuEO -> { - String itemNum = sarFileSplitMenuEO.getName().replaceAll(regex, ""); - String[] split = itemNum.split("\\."); - if (split.length == 1) { - sarFileSplitMenuEO.setPId(rootId); - } else { - // 去除数组中的最后一个元素 - split = Arrays.copyOf(split, split.length - 1); - String pid = idMap.get(StringUtils.join(split, ".")); - if (StringUtils.isBlank(pid)) { - pid = rootId; - } - sarFileSplitMenuEO.setPId(pid); - } - }); - if (!sarFileSplitMenuEOList.isEmpty()){ - sarFileSplitMenuEOMapper.insertForeach(sarFileSplitMenuEOList); - } - }); - // 状态设置为已同步 - lawsAsmsOpenApi.setStatus("1"); - log.info("{}同步成功{}条数据", lawsAsmsOpenApi.getApiName(), sarFileSplitInfoEOList.size()); - } else if ("4".equals(lawsAsmsOpenApi.getApiType()) && "D".equals(lawsAsmsOpenApi.getApiUrl())) { - // 拆分的条款的条文列表 - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(SarFileSplitInfoEO::getIsAsmsImport, "1"); - List sarFileSplitInfoEOList = sarFileSplitInfoService.list(queryWrapper); - sarFileSplitInfoEOList.forEach(sarFileSplitInfoEO -> { - String infoId = sarFileSplitInfoEO.getId(); - LambdaQueryWrapper queryWrapper1 = new LambdaQueryWrapper<>(); - queryWrapper1.eq(LawsDocumentSplit::getInfoId, infoId); - List lawsDocumentSplitList = lawsDocumentSplitMapper.selectList(queryWrapper1); - lawsDocumentSplitList.forEach(lawsDocumentSplit -> { - String itemContent = lawsDocumentSplit.getItemContent(); - // 使用 jsoup 解析 HTML - Document doc = Jsoup.parse(itemContent); - - // 选择所有的

元素 - Elements paragraphs = doc.select("p"); - - // 存储提取的文本内容 - List textContents = new java.util.ArrayList<>(); - - for (Element paragraph : paragraphs) { - // 获取每个

元素的文本内容并添加到集合中 - String textContent = paragraph.text(); - textContents.add(textContent); - } - - //List sarFileSplitItemsValEOList = new ArrayList<>(); - for (int i = 0; i < textContents.size(); i++) { - SarFileSplitItemsValEO sarFileSplitItemsValEO = new SarFileSplitItemsValEO(); - sarFileSplitItemsValEO.setId(UUIDUtils.randomUUID20()); - sarFileSplitItemsValEO.setType("TEXT"); - sarFileSplitItemsValEO.setItemId(lawsDocumentSplit.getId()); - sarFileSplitItemsValEO.setItemContent(textContents.get(i)); - sarFileSplitItemsValEO.setDisplaySeq(i+1); - sarFileSplitItemsValEO.setValidFlag(0); - //sarFileSplitItemsValEOList.add(sarFileSplitItemsValEO); - sarFileSplitItemsValEOService.insertSelective(sarFileSplitItemsValEO); - } - //sarFileSplitItemsValEOService.insertForeach(sarFileSplitItemsValEOList); - }); - }); - // 状态设置为已同步 - lawsAsmsOpenApi.setStatus("1"); - log.info("{}同步成功{}条数据", lawsAsmsOpenApi.getApiName(), sarFileSplitInfoEOList.size()); - } - }); - // 同步接口的状态 - updateBatchById(lawsAsmsOpenApiList); - } - - @Override - public String judgeStandardProperty(String standardNumber) { - for (String admittance : admittanceList) { - // 准入性判断 - if (admittance.equals(standardNumber) || Pattern.matches(admittance, standardNumber)){ - return "SN001"; - } - } - return "SN002"; - } - - private boolean duplicateCheck(LawsDocumentSplit lawsDocumentSplit, String articleContent) { - LawsDocumentSplit lawsDocumentSplits = lawsDocumentSplitMapper.selectOne( - new LambdaQueryWrapper() - .eq(LawsDocumentSplit::getInfoId, lawsDocumentSplit.getInfoId()) - .eq(LawsDocumentSplit::getItemNum, lawsDocumentSplit.getItemNum()) - .eq(LawsDocumentSplit::getItemTitle, lawsDocumentSplit.getItemTitle())); - if (!Objects.isNull(lawsDocumentSplits)){ - // 合并 - String itemContent = StringUtils.isNotBlank(lawsDocumentSplits.getItemContent()) ? lawsDocumentSplits.getItemContent() : ""; - lawsDocumentSplitMapper.update(null, - new LambdaUpdateWrapper() - .set(LawsDocumentSplit::getItemContent, itemContent + articleContent) - .eq(LawsDocumentSplit::getId, lawsDocumentSplits.getId())); - return true; - } - return false; - } - - @Override - public void disposeItemVal(LawsDocumentSplit lawsDocumentSplit, String articleContent) { - // 处理条文内容详情表 - Document document = Jsoup.parse(articleContent); - Elements elements = document.select("p:not(table p):not(:empty), img, table"); - if (elements.isEmpty() && StringUtils.isNotBlank(articleContent)){ - SarFileSplitItemsValEO sarFileSplitItemsValEO = new SarFileSplitItemsValEO(); - sarFileSplitItemsValEO.setId(UUIDUtils.randomUUID20()); - sarFileSplitItemsValEO.setItemId(lawsDocumentSplit.getId()); - sarFileSplitItemsValEO.setDisplaySeq(1); - sarFileSplitItemsValEO.setValidFlag(0); - sarFileSplitItemsValEO.setType("TEXT"); - sarFileSplitItemsValEO.setItemContent(articleContent); - sarFileSplitItemsValEOService.insertSelective(sarFileSplitItemsValEO); - return; - } - for (int i = 0; i < elements.size(); i++) { - Element element = elements.get(i); - if (StringUtils.isBlank(element.text()) && "p".equals(element.tagName())){ - continue; - } - SarFileSplitItemsValEO sarFileSplitItemsValEO = new SarFileSplitItemsValEO(); - if ("table".equals(element.tagName())){ - sarFileSplitItemsValEO.setType("TABLE"); - sarFileSplitItemsValEO.setItemContent(element.outerHtml()); - }else if ("img".equals(element.tagName())){ - sarFileSplitItemsValEO.setType("IMG"); - sarFileSplitItemsValEO.setItemContent(element.attr("src")); - }else if ("p".equals(element.tagName())){ - sarFileSplitItemsValEO.setType("TEXT"); - sarFileSplitItemsValEO.setItemContent(element.text()); - } - sarFileSplitItemsValEO.setId(UUIDUtils.randomUUID20()); - sarFileSplitItemsValEO.setItemId(lawsDocumentSplit.getId()); - sarFileSplitItemsValEO.setDisplaySeq(i + 1); - sarFileSplitItemsValEO.setValidFlag(0); - sarFileSplitItemsValEOService.insertSelective(sarFileSplitItemsValEO); - } - } - - @NotNull - @Override - public String disposeImg(String articleContent) { - if (articleContent.contains("").append(articleContent).append("

"); - articleContent = stringBuilder.toString(); - }else { - // 定义正则表达式匹配 img 标签及其属性值 - String regex = "(<\\s*img[^>]*>)"; - Pattern pattern = Pattern.compile(regex); - Matcher matcher = pattern.matcher(articleContent); - String regex2 = "src\\s*=\\s*\"?(.*?)(\"|>|\\s+)"; - while (matcher.find()) { - String imageUrl = matcher.group(1); - Matcher m = Pattern.compile(regex2).matcher(imageUrl); - String urlSuffix = ""; - while (m.find()) { - String group = m.group(1); - urlSuffix = group.substring(group.indexOf("getImg")); - } - String url = asmsPostUtil.getHost() + urlSuffix; - String fileName = url.substring(url.lastIndexOf("/") + 1); - // 获取图片 - HttpHeaders headers = new HttpHeaders(); - headers.set(HttpHeaders.USER_AGENT, "Mozilla/5.0"); - headers.set(HttpHeaders.ACCEPT, MediaType.ALL_VALUE); - HttpEntity entity = new HttpEntity<>(headers); - ResponseEntity responseEntity = restTemplate.exchange(url, HttpMethod.GET, entity, byte[].class); - if (HttpStatus.OK == responseEntity.getStatusCode()) { - byte[] imageBytes = responseEntity.getBody(); - MultipartFile file = new MockMultipartFile(fileName, fileName,"application/octet-stream" ,imageBytes); - // 上传图片 - OSSFile oSSFile = ossFileService.uploadLocalForSplit(file, "", "", ""); - StringBuilder stringBuilder = new StringBuilder(); - stringBuilder.append(""); - // 在此处进行替换操作,将图片链接替换为新的地址或者删除该图片标签等 - articleContent = articleContent.replaceAll(imageUrl,stringBuilder.toString()); - } - } - - } - } - return articleContent; - } - - @Transactional - public void upload(String url, String fileName, String fileType, String id, String code) { - InputStream inputStream = asmsPostUtil.getFileByteArray(url); - try { - MinioUtil.upload(inputStream, filePath + url); - } catch (Exception e) { - e.printStackTrace(); - throw new JeroBootException("文件上传错误"); - } - OSSFile ossFile = new OSSFile(); - ossFile.setFileName(fileName + "." + fileType); - ossFile.setUrl(filePath + url); - ossFile.setStandardId(id); - ossFile.setStandardNo(code); - ossFile.setStandardFileType("publish_of_original"); - ossFileService.save(ossFile); - log.info("存储文件:{},url:{}", fileName, url); - } - - private Date getSimpleDate(String dateStr) { - if (StringUtils.isBlank(dateStr)) return null; - try { - return simpleDateFormat.parse(dateStr); - } catch (ParseException e) { - e.printStackTrace(); - throw new JeroBootException("时间格式转换错误"); - } - } - - private Date getSimpleDate2(String dateStr) { - if (StringUtils.isBlank(dateStr)) return null; - try { - return dateFormat.parse(dateStr); - } catch (ParseException e) { - e.printStackTrace(); - throw new JeroBootException("时间格式转换错误"); - } - } - - /** - * @Author: liao - * @Date: 2023/10/23 15:57 - * @Description: 获取多日期字符串 - **/ - private String getManyDateString(String oldManyDateString) { - if (StringUtils.isBlank(oldManyDateString)) return ""; - List oldValueList = Arrays.asList(oldManyDateString.split("、")); - // 使用正则表达式提取日期部分 - Pattern pattern = Pattern.compile("\\d{4}年\\d{2}月\\d{2}日"); - - List valueList = new java.util.ArrayList<>(); - oldValueList.forEach(value -> { - Matcher matcher = pattern.matcher(value); - String dateStr; - if (matcher.find()) { - dateStr = matcher.group(0); - } else { - return; - } - try { - Date parse = oldDateFormat.parse(dateStr); - String format = simpleDateFormat.format(parse); - valueList.add(format); - } catch (ParseException e) { - e.printStackTrace(); - throw new JeroBootException("时间格式转换错误"); - } - }); - if (valueList.size() == 1) { - // 如果只有一个日期值,则复制成两个,用于查询和排序 - return valueList.get(0) + "," + valueList.get(0); - } - List dateList = valueList.stream() - .map(LocalDate::parse) // 解析日期字符串为 LocalDate 对象 - .sorted() // 按照日期大小进行排序 - .collect(Collectors.toList()); - - // 将排序后的 LocalDate 对象转换为字符串 - List sortedDateStrList = dateList.stream() - .map(LocalDate::toString) - .collect(Collectors.toList()); - - return String.join(",", sortedDateStrList); - } - - /** - * @Author: liao - * @Date: 2023/10/23 15:09 - * @Description: 获取字典值 - **/ - private String getItemValues(String itemTexts, String dictId, List sysDictItemList) { - if (StringUtils.isBlank(itemTexts)) return ""; - List itemTextList = Arrays.asList(itemTexts.split(";")); - List itemValues = sysDictItemList.stream() - .filter(sysDictItem -> itemTextList.contains(sysDictItem.getItemText()) && dictId.equals(sysDictItem.getDictId())) - .map(SysDictItem::getItemValue).collect(Collectors.toList()); - return StringUtils.join(itemValues, ","); - } - - /** - * @Author: liao - * @Date: 2023/10/18 16:20 - * @Description: 批量删除原字典配置项 - **/ - @Override - public void removeDictItemBatch(List idList) { - List lawsAsmsOpenApiList = listByIds(idList); - lawsAsmsOpenApiList = lawsAsmsOpenApiList.stream() - .filter(e -> StringUtils.isNotBlank(e.getDictId())).collect(Collectors.toList()); - if (CollectionUtils.isNotEmpty(lawsAsmsOpenApiList)) { - List dictIdList = lawsAsmsOpenApiList.stream() - .map(LawsAsmsOpenApi::getDictId).collect(Collectors.toList()); - // 状态转为未同步 - lawsAsmsOpenApiList.forEach(e -> e.setStatus("0")); - updateBatchById(lawsAsmsOpenApiList); - // 物理删除字典配置项 - lawsAsmsOpenApiMapper.removeDictItemBatch(dictIdList); - } - } -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/service/impl/SynchronizationAsmsService.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/service/impl/SynchronizationAsmsService.java deleted file mode 100644 index 4ba57ebb..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/service/impl/SynchronizationAsmsService.java +++ /dev/null @@ -1,933 +0,0 @@ -package com.jero.modules.docking.asms.service.impl; - -import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import com.jero.common.exception.JeroBootException; -import com.jero.common.util.MinioUtil; -import com.jero.common.util.SnowflakeUtils; -import com.jero.common.util.UUIDUtils; -import com.jero.modules.docking.asms.entity.LawsAsmsDomestic; -import com.jero.modules.docking.asms.mapper.LawsAsmsOpenApiMapper; -import com.jero.modules.docking.asms.service.ILawsAsmsDomesticService; -import com.jero.modules.docking.asms.service.ILawsAsmsOpenApiService; -import com.jero.modules.docking.asms.util.AlphanumericComparator; -import com.jero.modules.docking.asms.util.AsmsPostUtil; -import com.jero.modules.laws.common.util.DateUtil; -import com.jero.modules.laws.documenttool.entity.LawsDocumentSplit; -import com.jero.modules.laws.documenttool.mapper.LawsDocumentSplitMapper; -import com.jero.modules.laws.documenttool.service.IDocumentSplitService; -import com.jero.modules.laws.home.common.LawsHomeSearchCommon; -import com.jero.modules.laws.home.service.ILawsHomeSearchService; -import com.jero.modules.laws.standard.entity.LawsDomesticStandard; -import com.jero.modules.laws.standard.service.ILawsDomesticStandardService; -import com.jero.modules.laws.standard.service.ILawsReplacedStandardService; -import com.jero.modules.laws.standardization.entity.LawsStandardization; -import com.jero.modules.laws.standardization.service.ILawsStandardizationService; -import com.jero.modules.oss.entity.OSSFile; -import com.jero.modules.oss.service.IOSSFileService; -import com.jero.modules.split.entity.SarFileSplitInfoEO; -import com.jero.modules.split.entity.SarFileSplitItemsValEO; -import com.jero.modules.split.entity.SarFileSplitMenuEO; -import com.jero.modules.split.mapper.SarFileSplitMenuEOMapper; -import com.jero.modules.split.service.ISarFileSplitInfoService; -import com.jero.modules.split.service.ISarFileSplitItemsValEOService; -import com.jero.modules.split.service.ISarFileSplitMenuEOService; -import com.jero.modules.system.entity.SysDictItem; -import com.jero.modules.system.service.ISysDictItemService; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang3.StringUtils; -import org.jsoup.Jsoup; -import org.jsoup.nodes.Document; -import org.jsoup.nodes.Element; -import org.jsoup.select.Elements; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.web.client.RestTemplate; - -import javax.annotation.Resource; -import java.io.InputStream; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.time.LocalDate; -import java.util.*; -import java.util.regex.Matcher; -import java.util.regex.Pattern; -import java.util.stream.Collectors; - -/** - * @Author: liao - * @Date: 2023/11/3 13:46 - * @Description: 定时同步asms - */ -@Component -@Slf4j -public class SynchronizationAsmsService { - - @Autowired - private AsmsPostUtil asmsPostUtil; - @Autowired - private ISysDictItemService sysDictItemService; - @Autowired - private ILawsAsmsDomesticService lawsAsmsDomesticService; - @Autowired - private LawsAsmsOpenApiMapper lawsAsmsOpenApiMapper; - @Autowired - private ILawsStandardizationService lawsStandardizationService; - @Autowired - private ILawsDomesticStandardService lawsDomesticStandardService; - @Autowired - private ISarFileSplitInfoService sarFileSplitInfoService; - @Autowired - private LawsDocumentSplitMapper lawsDocumentSplitMapper; - @Autowired - private ISarFileSplitMenuEOService sarFileSplitMenuEOService; - @Autowired - private SarFileSplitMenuEOMapper sarFileSplitMenuEOMapper; - @Autowired - private ISarFileSplitItemsValEOService sarFileSplitItemsValEOService; - @Autowired - private ILawsReplacedStandardService lawsReplacedStandardService; - @Resource - private ILawsHomeSearchService lawsHomeSearchService; - @Autowired - private IOSSFileService ossFileService; - @Autowired - private IDocumentSplitService documentSplitService; - @Autowired - private RestTemplate restTemplate; - @Resource - private ILawsAsmsOpenApiService lawsAsmsOpenApiService; - - private final static String filePath = "asms/"; - private static SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); - private static SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - private static SimpleDateFormat oldDateFormat = new SimpleDateFormat("yyyy年MM月dd日"); - - /** - * @Author: liao - * @Date: 2023/11/3 13:48 - * @Description: 定时同步国内法规 - **/ - @Transactional - public void syncDomestic() { - log.info("=====================定时同步国内法规====================="); - long start = System.currentTimeMillis(); - - // 法规列表 - String url = "xiaobodata/openApi/domesticLaws/list"; - Map paramMap = new HashMap<>(); - paramMap.put("pageNo", "1"); - paramMap.put("pageSize", "2"); - Map totalMap = asmsPostUtil.sendGetReq2(url, paramMap); - Integer total = (Integer) totalMap.get("total"); - paramMap.put("pageSize", total.toString()); - - List> mapList = asmsPostUtil.sendGetReq(url, paramMap); - if (Objects.isNull(mapList)) { - log.info("=====================没有获取到ASMS系统数据,同步结束====================="); - return; - } - - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.select(LawsDomesticStandard::getStandardNumber); - List lawsDomesticStandards = lawsDomesticStandardService.list(queryWrapper); - List dupCodeList; - if (CollectionUtils.isNotEmpty(lawsDomesticStandards)) { - dupCodeList = lawsDomesticStandards.stream().map(LawsDomesticStandard::getStandardNumber).collect(Collectors.toList()); - } else { - dupCodeList = new ArrayList<>(); - } - List lawsAsmsDomesticList = new ArrayList(); - mapList.forEach(eMap -> { - String createTimeString = eMap.get("createTime"); - Date createTime = DateUtil.getDateSecond(createTimeString); - Date yesterday = DateUtil.getDateAddDays(new Date(), -1); - // 创建时间为昨天的数据 - if (createTime.after(DateUtil.getDayStart(yesterday)) && createTime.before(DateUtil.getDayEnd(yesterday))) { - if (!dupCodeList.contains((String) eMap.get("code"))) { - LawsAsmsDomestic lawsAsmsDomestic = JSONObject.parseObject(JSONObject.toJSONString(eMap), LawsAsmsDomestic.class); - lawsAsmsDomestic.setCreateTimeString(createTimeString); - lawsAsmsDomestic.setUpdateTimeString(eMap.get("updateTime")); - lawsAsmsDomestic.setFocalPointName(eMap.get("focalPoint")); - lawsAsmsDomesticList.add(lawsAsmsDomestic); - } - } - }); - if (CollectionUtils.isEmpty(lawsAsmsDomesticList)) { - log.info("=====================昨天新增法规0条,同步结束====================="); - return; - } - - // 法规详情 - String detailUrl = "xiaobodata/openApi/domesticLaws/getInfo"; - List detailList = new ArrayList(); - Map detailMap = new HashMap<>(); - lawsAsmsDomesticList.forEach(lawsAsmsDomestic -> { - detailMap.put("lawCode", lawsAsmsDomestic.getCode()); - Map objectMap = asmsPostUtil.sendGetReq2(detailUrl, detailMap); - - LawsAsmsDomestic parseObject = JSONObject.parseObject(JSONObject.toJSONString(objectMap), LawsAsmsDomestic.class); - parseObject.setCreateTimeString((String) objectMap.get("createTime")); - parseObject.setUpdateTimeString((String) objectMap.get("updateTime")); - parseObject.setFocalPointName((String) objectMap.get("focalPoint")); - detailList.add(parseObject); - }); - - // 同步到数据库 - List sysDictItemList = sysDictItemService.list(); - List lawsStandardizationList = lawsStandardizationService.list(); - List insertDomesticList = new ArrayList<>(); - detailList.forEach(lawsAsmsDomestic -> { - String[] parts = lawsAsmsDomestic.getCode().split("[-\\s]"); // 使用空格或破折号作为分隔符 - if (parts.length < 3) { - parts = lawsAsmsDomestic.getCode().split("[—\\s]"); // 使用空格或破折号作为分隔符 - if (parts.length < 3) { - parts = lawsAsmsDomestic.getCode().split("[一\\s]"); // 使用一或破折号作为分隔符 - } - } - // 封装实例 - LawsDomesticStandard lawsDomesticStandard = new LawsDomesticStandard(); - // 对接标识 - lawsDomesticStandard.setIsAsmsImport("1"); - // 标准编号 - lawsDomesticStandard.setStandardNumber(lawsAsmsDomestic.getCode()); - // 标准类别 - lawsDomesticStandard.setStandardClass(parts[0]); - // 标准号 - lawsDomesticStandard.setStandardNumberTemp(parts[1]); - // 年代号 - lawsDomesticStandard.setYearNumber(parts[2]); - // 标准名称 - lawsDomesticStandard.setStandardName(lawsAsmsDomestic.getName()); - // 标准英文名称 - lawsDomesticStandard.setStandardEnglishName(lawsAsmsDomestic.getEnglishName()); - // 适用认证 - String itemValues = getItemValues(lawsAsmsDomestic.getApplicableCertificationListString(), - "1696008107352854529", sysDictItemList); - lawsDomesticStandard.setApplicableCertification(itemValues); - // 适用车型 - itemValues = getItemValues(lawsAsmsDomestic.getApplicableModelsListString(), - "1702518672924110850", sysDictItemList); - lawsDomesticStandard.setApplicableVehicle(itemValues); - // 采标程度 - itemValues = getItemValues(lawsAsmsDomestic.getDegreeAdoption(), - "1696042735686049793", sysDictItemList); - lawsDomesticStandard.setDegreeOfBidAcquisition(itemValues); - // 实施日期 - lawsDomesticStandard.setImplementationDate(getSimpleDate(lawsAsmsDomestic.getImplementationDate())); - // 采用国际标准号 - lawsDomesticStandard.setAdoptTheInternationalStandardNumber(lawsAsmsDomestic.getInternationalStandard()); - // 新车实施日期 - lawsDomesticStandard.setNewModelImplementationDate(getManyDateString(lawsAsmsDomestic.getNewCarImplementationDate())); - // 动力类型 - itemValues = getItemValues(lawsAsmsDomestic.getPowerTypeListString(), - "1702518671166697474", sysDictItemList); - lawsDomesticStandard.setDynamicType(itemValues); - // 在产车实施日期 - lawsDomesticStandard.setOnTheProductionDate(getManyDateString(lawsAsmsDomestic.getProductionCarImplementationDate())); - // 发布日期 - lawsDomesticStandard.setReleaseDate(getSimpleDate(lawsAsmsDomestic.getPublishDate())); - // 代替标准号 - lawsReplacedStandardService.addRelation(lawsAsmsDomestic.getReplaceCode(), lawsAsmsDomestic.getCode(), 1); - // 标准性质 - /*itemValues = getItemValues(lawsAsmsDomestic.getStandardNature(), - "1695010513489833985", sysDictItemList);*/ - lawsDomesticStandard.setStandardProperty("SN002"); - // 标准性质判断 - if (Objects.equals("强制性", lawsAsmsDomestic.getStandardNature())){ - lawsDomesticStandard.setStandardProperty(lawsAsmsOpenApiService.judgeStandardProperty(lawsDomesticStandard.getStandardNumber())); - } - // 标准状态 - itemValues = getItemValues(lawsAsmsDomestic.getStandardStatus(), - "1695991936599715842", sysDictItemList); - lawsDomesticStandard.setStandardState(itemValues); - // 分标委 - String subcommittee = lawsAsmsDomestic.getSubcommittee(); - if (StringUtils.isNotBlank(subcommittee)) { - lawsDomesticStandard.setBiddingCommittee(lawsStandardizationList.stream() - .filter(e -> subcommittee.equals(e.getName())).collect(Collectors.toList()).get(0).getId()); - } - // 创建时间 - lawsDomesticStandard.setCreateTime(getSimpleDate2(lawsAsmsDomestic.getCreateTimeString())); - // 更新时间 - lawsDomesticStandard.setUpdateTime(getSimpleDate2(lawsAsmsDomestic.getUpdateTimeString())); - - // 生成id - lawsDomesticStandard.setId(UUIDUtils.randomUUID20()); - - insertDomesticList.add(lawsDomesticStandard); - }); - // 插入国内法规标准数据库 - lawsDomesticStandardService.saveBatch(insertDomesticList, insertDomesticList.size()); - // 同步es数据库 - insertDomesticList.forEach(e -> - lawsHomeSearchService.updateEsData(LawsHomeSearchCommon.LAWS_DOMESTIC_STANDARD, e.getId(), LawsHomeSearchCommon.LAWS_ES_ADD)); - long time1 = System.currentTimeMillis(); - log.info("=====================同步国内法规标准数据:{}条,耗时:{}毫秒=====================", insertDomesticList.size(), time1 - start); - - // 同步国内法规相关文档 - String fileUrl = "xiaobodata/openApi/domesticLaws/getFile"; - insertDomesticList.forEach(lawsDomesticStandard -> { - String id = lawsDomesticStandard.getId(); - String code = lawsDomesticStandard.getStandardNumber(); - Map fileParamMap = new HashMap<>(); - fileParamMap.put("lawCode", code); - Map objectMap = asmsPostUtil.sendGetReq2(fileUrl, fileParamMap); - if (!Objects.isNull(objectMap)) { - Map standardTextPdf = (Map) objectMap.get("standardTextPdf"); - if (!Objects.isNull(standardTextPdf)){ - String fileName = standardTextPdf.get("fileName"); - String fileType = standardTextPdf.get("fileType"); - String urls = standardTextPdf.get("url"); - if (StringUtils.isNotBlank(urls)) { - upload(urls, fileName, fileType, id, code); - } - } - - Map standardTextWord = (Map) objectMap.get("standardTextWord"); - if (!Objects.isNull(standardTextWord)){ - String fileName = standardTextWord.get("fileName"); - String fileType = standardTextWord.get("fileType"); - String urls = standardTextWord.get("url"); - if (StringUtils.isNotBlank(urls)) { - upload(urls, fileName, fileType, id, code); - } - } - } - }); - long time2 = System.currentTimeMillis(); - log.info("=====================同步国内法规文件耗时:{}毫秒=====================", time2 - time1); - - long end = System.currentTimeMillis(); - log.info("=====================全部同步完成,耗时:{} 毫秒=====================", end - start); - log.info("=====================定时任务同步结束====================="); - } - - /** - * @Author: liao - * @Date: 2023/11/3 13:49 - * @Description: 同步文档拆分 - **/ - @Transactional - public void syncSplit() { - log.info("=====================定时同步文档拆分====================="); - long start = System.currentTimeMillis(); - - // 文档拆分 - String url = "xiaobodata/openApi/article/search"; - Map paramMap = new HashMap<>(); - paramMap.put("pageNo", "1"); - paramMap.put("pageSize", "2"); - Map totalMap = asmsPostUtil.sendGetReq2(url, paramMap); - Integer total = (Integer) totalMap.get("total"); - paramMap.put("pageSize", total.toString()); - - List> mapList = asmsPostUtil.sendGetReq(url, paramMap); - if (Objects.isNull(mapList)) { - log.info("=====================没有获取到ASMS系统数据,同步结束====================="); - return; - } - - List allSplitList = sarFileSplitInfoService.list( - new LambdaQueryWrapper().isNull(SarFileSplitInfoEO::getPublishBeforeId)); - List codeList = allSplitList.stream().map(SarFileSplitInfoEO::getSerialNumber).collect(Collectors.toList()); - - List insertSplitList = new ArrayList<>(); - mapList.forEach(eMap -> { - String code = eMap.get("code"); - if (CollectionUtils.isEmpty(codeList) || !codeList.contains(code)) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(LawsDomesticStandard::getStandardNumber, code); - LawsDomesticStandard lawsDomesticStandard = lawsDomesticStandardService.getOne(queryWrapper, false); - if(Objects.isNull(lawsDomesticStandard)){ - return; - } - - LambdaQueryWrapper queryWrapper1 = new LambdaQueryWrapper<>(); - queryWrapper1.eq(OSSFile::getStandardId, lawsDomesticStandard.getId()); - queryWrapper1.eq(OSSFile::getStandardFileType, "publish_of_original"); - queryWrapper1.like(OSSFile::getFileName, ".docx"); - OSSFile ossFile = ossFileService.getOne(queryWrapper1, false); - - SarFileSplitInfoEO sarFileSplitInfoEO = new SarFileSplitInfoEO(); - sarFileSplitInfoEO.setStandardId(lawsDomesticStandard.getId()); - sarFileSplitInfoEO.setSerialNumber(lawsDomesticStandard.getStandardNumber()); - sarFileSplitInfoEO.setTitle(lawsDomesticStandard.getStandardName()); - sarFileSplitInfoEO.setFileType("publish_of_original"); - sarFileSplitInfoEO.setFileId(ossFile.getId()); - sarFileSplitInfoEO.setFileName(ossFile.getFileName()); - sarFileSplitInfoEO.setSplitStatus("1"); - sarFileSplitInfoEO.setCreateTime(getSimpleDate2(eMap.get("createTime"))); - sarFileSplitInfoEO.setUpdateTime(getSimpleDate2(eMap.get("updateTime"))); - sarFileSplitInfoEO.setIsAsmsImport("1"); - sarFileSplitInfoEO.setAuthor("云平台"); - sarFileSplitInfoEO.setSplitResult("成功"); - - sarFileSplitInfoEO.setId(UUIDUtils.randomUUID20()); - - insertSplitList.add(sarFileSplitInfoEO); - } - }); - if (CollectionUtils.isEmpty(insertSplitList)) { - log.info("=====================昨天新增拆分0条,同步结束====================="); - return; - } - - sarFileSplitInfoService.saveBatch(insertSplitList, insertSplitList.size()); - long time1 = System.currentTimeMillis(); - log.info("=====================同步标准拆分数据:{}条,耗时:{}毫秒=====================", insertSplitList.size(), time1 - start); - - // 单条拆分的详情 - String splitUrl = "xiaobodata/openApi/article/details"; - List sysDictItemList = sysDictItemService.list(); - Map paramMap1 = new HashMap<>(); - Map paramMap2 = new HashMap<>(); - Map paramMap3 = new HashMap<>(); - Map> infoMap = new HashMap<>(); - int[] n = {0}; - insertSplitList.forEach(sarFileSplitInfoEO -> { - paramMap.put("standardCode", sarFileSplitInfoEO.getSerialNumber()); - paramMap1.put("standardCode", sarFileSplitInfoEO.getSerialNumber()); - List> mapListAll = asmsPostUtil.sendGetReq(splitUrl, paramMap1); - List insertDocumentList = new ArrayList<>(); - mapListAll.forEach(eMap -> { - // 单个法规的条文解读详情 - paramMap2.put("standardCode", sarFileSplitInfoEO.getSerialNumber()); - paramMap2.put("termsCode", eMap.get("termsNum")); - Map objectMap = asmsPostUtil.sendGetReq2("xiaobodata/openApi/article/interpretation/details", paramMap2); - - // 单个法规的条文标签详情 - paramMap3.put("standardCode", sarFileSplitInfoEO.getSerialNumber()); - paramMap3.put("termsCode", eMap.get("termsNum")); - Map objectMap2 = asmsPostUtil.sendGetReq2("xiaobodata/openApi/article/label/details", paramMap3); - - LawsDocumentSplit lawsDocumentSplit = new LawsDocumentSplit(); - lawsDocumentSplit.setId(String.valueOf(SnowflakeUtils.snowflake())); - lawsDocumentSplit.setInfoId(sarFileSplitInfoEO.getId()); - lawsDocumentSplit.setItemNum(eMap.get("termsNum")); - lawsDocumentSplit.setItemTitle(eMap.get("termsName")); - // 条文内容 - String articleContent = eMap.get("articleContent"); - try { - // 处理图片 - articleContent = lawsAsmsOpenApiService.disposeImg(articleContent); - }catch (Exception e){ - log.error(e.getMessage()); - log.error("图片处理失败!"); - } - // 处理条文详情 - lawsAsmsOpenApiService.disposeItemVal(lawsDocumentSplit, articleContent); - // 重复性校验 -// if (duplicateCheck(lawsDocumentSplit, articleContent)) {return;} - - lawsDocumentSplit.setItemContent(articleContent); - lawsDocumentSplit.setCreateTime(getSimpleDate2(eMap.get("createTime"))); - lawsDocumentSplit.setUpdateTime(getSimpleDate2(eMap.get("updateTime"))); - - lawsDocumentSplit.setInterpretationArticles((String) objectMap.get("termsInterpretation")); - - lawsDocumentSplit.setFunctionClassification((String) objectMap2.get("functionClassification")); - lawsDocumentSplit.setFunctionProfessional((String) objectMap2.get("functionProfession")); - lawsDocumentSplit.setFunctionGroupCode((String) objectMap2.get("groupingNum")); - lawsDocumentSplit.setFunctionGroupName((String) objectMap2.get("groupingNum")); - lawsDocumentSplit.setCerImplementDate((String) objectMap2.get("implementDateCertified")); - lawsDocumentSplit.setNewCerImplementDate((String) objectMap2.get("implementDateNewCer")); - lawsDocumentSplit.setNewRegisterImplementDate((String) objectMap2.get("implementDateNewRegister")); - lawsDocumentSplit.setLawsRequireType((String) objectMap2.get("lawsRequireType")); - lawsDocumentSplit.setApplications((String) objectMap2.get("modelsType")); - lawsDocumentSplit.setDynamicType((String) objectMap2.get("powerType")); - - if (StringUtils.isNotBlank(lawsDocumentSplit.getLawsRequireType())){ - lawsDocumentSplit.setLawsRequireType(getItemValues(lawsDocumentSplit.getLawsRequireType().replace(",", ";"), - "1702212236079886338", sysDictItemList)); // 法规要求类型 - } - if (StringUtils.isNotBlank(lawsDocumentSplit.getFunctionClassification())){ - lawsDocumentSplit.setFunctionClassification(getItemValues(lawsDocumentSplit.getFunctionClassification().replace(",", ";"), - "1702212237296234497", sysDictItemList)); // 功能分类 - } - if (StringUtils.isNotBlank(lawsDocumentSplit.getFunctionProfessional())){ - lawsDocumentSplit.setFunctionProfessional(getItemValues(lawsDocumentSplit.getFunctionProfessional().replace(",", ";"), - "1702202280677044226", sysDictItemList)); // 功能专业 - } - if (StringUtils.isNotBlank(lawsDocumentSplit.getApplications())){ - lawsDocumentSplit.setApplications(getItemValues(lawsDocumentSplit.getApplications().replace(",", ";"), - "1702518672924110850", sysDictItemList)); // 适用车型 - } - if (StringUtils.isNotBlank(lawsDocumentSplit.getDynamicType())){ - lawsDocumentSplit.setDynamicType(getItemValues(lawsDocumentSplit.getDynamicType().replace(",", ";"), - "1702518671166697474", sysDictItemList)); // 动力类型 - } - - insertDocumentList.add(lawsDocumentSplit); - lawsDocumentSplitMapper.insert(lawsDocumentSplit); - n[0]++; - }); - infoMap.put(sarFileSplitInfoEO.getId(), insertDocumentList); - }); - long time2 = System.currentTimeMillis(); - log.info("=====================同步DocumentSplit条文数据:{}条,耗时:{}毫秒=====================", n[0], time2 - time1); - String regex = "[^a-zA-Z0-9.]"; - insertSplitList.forEach(sarFileSplitInfoEO -> { - String infoId = sarFileSplitInfoEO.getId(); - List lawsDocumentSplitList = infoMap.get(infoId); - List itemNumList = new ArrayList<>(); - for (LawsDocumentSplit lawsDocumentSplit : lawsDocumentSplitList) { - String itemNum = lawsDocumentSplit.getItemNum(); - itemNumList.add(itemNum.replaceAll(regex, "")); - } - // 对目录排序 - Collections.sort(itemNumList, new AlphanumericComparator()); - Map sortMap = new HashMap<>(); - for (int i = 0; i < itemNumList.size(); i++) { - sortMap.put(itemNumList.get(i), i + 2L); - } - List sarFileSplitMenuEOList = new java.util.ArrayList<>(); - // 根目录 - SarFileSplitMenuEO rootEO = new SarFileSplitMenuEO(); - String rootId = UUIDUtils.randomUUID20(); - rootEO.setId(rootId); - rootEO.setInfoId(infoId); - rootEO.setName("总目录"); - rootEO.setDisplaySeq(1L); - rootEO.setValidFlag(0); - sarFileSplitMenuEOMapper.insertSelective(rootEO); - - Map idMap = new HashMap<>(); - lawsDocumentSplitList.forEach(lawsDocumentSplit -> { - SarFileSplitMenuEO sarFileSplitMenuEO = new SarFileSplitMenuEO(); - String itemNum = lawsDocumentSplit.getItemNum(); - String id = UUIDUtils.randomUUID20(); - sarFileSplitMenuEO.setId(id); - sarFileSplitMenuEO.setInfoId(infoId); - sarFileSplitMenuEO.setName(itemNum); - sarFileSplitMenuEO.setDisplaySeq(sortMap.get(itemNum.replaceAll(regex, ""))); - sarFileSplitMenuEO.setValidFlag(0); - String itemTitle = lawsDocumentSplit.getItemTitle(); - sarFileSplitMenuEO.setItemName(itemTitle.substring(0, Math.min(10, itemTitle.length()))); - sarFileSplitMenuEOList.add(sarFileSplitMenuEO); - idMap.put(itemNum.replaceAll(regex, ""), id); - - lawsDocumentSplit.setMenuId(id); - lawsDocumentSplitMapper.updateById(lawsDocumentSplit); - }); - - // 设置父id - sarFileSplitMenuEOList.forEach(sarFileSplitMenuEO -> { - String itemNum = sarFileSplitMenuEO.getName().replaceAll(regex, ""); - String[] split = itemNum.split("\\."); - if (split.length == 1) { - sarFileSplitMenuEO.setPId(rootId); - } else { - // 去除数组中的最后一个元素 - split = Arrays.copyOf(split, split.length - 1); - String pid = idMap.get(StringUtils.join(split, ".")); - if (StringUtils.isBlank(pid)) { - pid = rootId; - } - sarFileSplitMenuEO.setPId(pid); - } - }); - if (!sarFileSplitMenuEOList.isEmpty()) { - sarFileSplitMenuEOMapper.insertForeach(sarFileSplitMenuEOList); - } - }); - long time3 = System.currentTimeMillis(); - log.info("=====================生成拆分详情左侧目录耗时:{}毫秒=====================", time3 - time2); - - for (SarFileSplitInfoEO sarFileSplitInfoEO : insertSplitList) { - HashMap parameter = new HashMap<>(); - parameter.put("id", sarFileSplitInfoEO.getId()); - documentSplitService.publishTwo(parameter); - } - long end = System.currentTimeMillis(); - log.info("=====================全部同步完成,耗时:{} 毫秒=====================", end - start); - log.info("=====================定时任务同步结束====================="); - } - - private boolean duplicateCheck(LawsDocumentSplit lawsDocumentSplit, String articleContent) { - LawsDocumentSplit lawsDocumentSplits = lawsDocumentSplitMapper.selectOne( - new LambdaQueryWrapper() - .eq(LawsDocumentSplit::getInfoId, lawsDocumentSplit.getInfoId()) - .eq(LawsDocumentSplit::getItemNum, lawsDocumentSplit.getItemNum()) - .eq(LawsDocumentSplit::getItemTitle, lawsDocumentSplit.getItemTitle())); - if (!Objects.isNull(lawsDocumentSplits)){ - // 合并 - String itemContent = StringUtils.isNotBlank(lawsDocumentSplits.getItemContent()) ? lawsDocumentSplits.getItemContent() : ""; - lawsDocumentSplitMapper.update(null, - new LambdaUpdateWrapper() - .set(LawsDocumentSplit::getItemContent, itemContent + articleContent) - .eq(LawsDocumentSplit::getId, lawsDocumentSplits.getId())); - return true; - } - return false; - } - - public void syncSplitByStandardNumber(String standardNumber) { - log.info("=====================定时同步文档拆分====================="); - long start = System.currentTimeMillis(); - - // 文档拆分 - String url = "xiaobodata/openApi/article/search"; - Map paramMap = new HashMap<>(); - paramMap.put("pageNo", "1"); - paramMap.put("pageSize", "2"); - Map totalMap = asmsPostUtil.sendGetReq2(url, paramMap); - Integer total = (Integer) totalMap.get("total"); - paramMap.put("pageSize", total.toString()); - - List> mapList = asmsPostUtil.sendGetReq(url, paramMap); - if (Objects.isNull(mapList)) { - log.info("=====================没有获取到ASMS系统数据,同步结束====================="); - return; - } - - List insertSplitList = new ArrayList<>(); - mapList.forEach(eMap -> { - String code = eMap.get("code").trim(); - String name = eMap.get("name"); - if (!code.contains(standardNumber)) { - return; - } - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(LawsDomesticStandard::getStandardNumber, code); - LawsDomesticStandard lawsDomesticStandard = lawsDomesticStandardService.getOne(queryWrapper); - if (Objects.isNull(lawsDomesticStandard)) { - return; - } - - LambdaQueryWrapper queryWrapper1 = new LambdaQueryWrapper<>(); - queryWrapper1.eq(OSSFile::getStandardId, lawsDomesticStandard.getId()); - queryWrapper1.eq(OSSFile::getStandardFileType, "publish_of_original"); - queryWrapper1.like(OSSFile::getFileName, ".docx"); - OSSFile ossFile = ossFileService.getOne(queryWrapper1); - - SarFileSplitInfoEO sarFileSplitInfoEO = new SarFileSplitInfoEO(); - sarFileSplitInfoEO.setStandardId(lawsDomesticStandard.getId()); - sarFileSplitInfoEO.setSerialNumber(lawsDomesticStandard.getStandardNumber()); - sarFileSplitInfoEO.setTitle(lawsDomesticStandard.getStandardName()); - sarFileSplitInfoEO.setFileType("publish_of_original"); - sarFileSplitInfoEO.setFileId(ossFile.getId()); - sarFileSplitInfoEO.setFileName(ossFile.getFileName()); - sarFileSplitInfoEO.setSplitStatus("1"); - sarFileSplitInfoEO.setCreateTime(getSimpleDate2(eMap.get("createTime"))); - sarFileSplitInfoEO.setUpdateTime(getSimpleDate2(eMap.get("updateTime"))); - sarFileSplitInfoEO.setIsAsmsImport("1"); - sarFileSplitInfoEO.setAuthor("云平台"); - sarFileSplitInfoEO.setSplitResult("成功"); - - sarFileSplitInfoEO.setId(UUIDUtils.randomUUID20()); - - insertSplitList.add(sarFileSplitInfoEO); - }); - if (CollectionUtils.isEmpty(insertSplitList)) { - log.info("=====================昨天新增拆分0条,同步结束====================="); - return; - } - - sarFileSplitInfoService.saveBatch(insertSplitList, insertSplitList.size()); - long time1 = System.currentTimeMillis(); - log.info("=====================同步标准拆分数据:{}条,耗时:{}毫秒=====================", insertSplitList.size(), time1 - start); - - // 单条拆分的详情 - String splitUrl = "xiaobodata/openApi/article/details"; - List sysDictItemList = sysDictItemService.list(); - Map paramMap1 = new HashMap<>(); - Map paramMap2 = new HashMap<>(); - Map paramMap3 = new HashMap<>(); - Map> infoMap = new HashMap<>(); - int[] n = {0}; - - for (SarFileSplitInfoEO sarFileSplitInfoEO : insertSplitList) { - paramMap.put("standardCode", sarFileSplitInfoEO.getSerialNumber()); - paramMap1.put("standardCode", sarFileSplitInfoEO.getSerialNumber()); - List> mapListAll = asmsPostUtil.sendGetReq(splitUrl, paramMap1); - List insertDocumentList = new ArrayList<>(); - for (Map eMap : mapListAll) { - // 单个法规的条文解读详情 - paramMap2.put("standardCode", sarFileSplitInfoEO.getSerialNumber()); - - paramMap2.put("termsCode", eMap.get("termsNum")); - Map objectMap = asmsPostUtil.sendGetReq2("xiaobodata/openApi/article/interpretation/details", paramMap2); - - // 单个法规的条文标签详情 - paramMap3.put("standardCode", sarFileSplitInfoEO.getSerialNumber()); - paramMap3.put("termsCode", eMap.get("termsNum")); - Map objectMap2 = asmsPostUtil.sendGetReq2("xiaobodata/openApi/article/label/details", paramMap3); - - LawsDocumentSplit lawsDocumentSplit = new LawsDocumentSplit(); - lawsDocumentSplit.setInfoId(sarFileSplitInfoEO.getId()); - lawsDocumentSplit.setItemNum(eMap.get("termsNum")); - lawsDocumentSplit.setItemTitle(eMap.get("termsName")); - String articleContent = eMap.get("articleContent"); - String disposeImg = articleContent; - try { - // 处理图片 - disposeImg = lawsAsmsOpenApiService.disposeImg(articleContent); - }catch (Exception e){ - log.error(e.getMessage()); - log.error("图片处理失败!"); - } - lawsDocumentSplit.setItemContent(disposeImg); - lawsDocumentSplit.setCreateTime(getSimpleDate2(eMap.get("createTime"))); - lawsDocumentSplit.setUpdateTime(getSimpleDate2(eMap.get("updateTime"))); - - lawsDocumentSplit.setInterpretationArticles((String) objectMap.get("termsInterpretation")); - - lawsDocumentSplit.setFunctionClassification((String) objectMap2.get("functionClassification")); - lawsDocumentSplit.setFunctionProfessional((String) objectMap2.get("functionProfession")); - lawsDocumentSplit.setFunctionGroupCode((String) objectMap2.get("groupingNum")); - lawsDocumentSplit.setFunctionGroupName((String) objectMap2.get("groupingNum")); - lawsDocumentSplit.setCerImplementDate((String) objectMap2.get("implementDateCertified")); - lawsDocumentSplit.setNewCerImplementDate((String) objectMap2.get("implementDateNewCer")); - lawsDocumentSplit.setNewRegisterImplementDate((String) objectMap2.get("implementDateNewRegister")); - lawsDocumentSplit.setLawsRequireType((String) objectMap2.get("lawsRequireType")); - lawsDocumentSplit.setApplications((String) objectMap2.get("modelsType")); - lawsDocumentSplit.setDynamicType((String) objectMap2.get("powerType")); - - lawsDocumentSplit.setId(UUIDUtils.randomUUID20()); - - if (StringUtils.isNotBlank(lawsDocumentSplit.getLawsRequireType())) { - lawsDocumentSplit.setLawsRequireType(getItemValues(lawsDocumentSplit.getLawsRequireType().replace(",", ";"), - "1702212236079886338", sysDictItemList)); // 法规要求类型 - } - if (StringUtils.isNotBlank(lawsDocumentSplit.getFunctionClassification())) { - lawsDocumentSplit.setFunctionClassification(getItemValues(lawsDocumentSplit.getFunctionClassification().replace(",", ";"), - "1702212237296234497", sysDictItemList)); // 功能分类 - } - if (StringUtils.isNotBlank(lawsDocumentSplit.getFunctionProfessional())) { - lawsDocumentSplit.setFunctionProfessional(getItemValues(lawsDocumentSplit.getFunctionProfessional().replace(",", ";"), - "1702202280677044226", sysDictItemList)); // 功能专业 - } - if (StringUtils.isNotBlank(lawsDocumentSplit.getApplications())) { - lawsDocumentSplit.setApplications(getItemValues(lawsDocumentSplit.getApplications().replace(",", ";"), - "1702518672924110850", sysDictItemList)); // 适用车型 - } - if (StringUtils.isNotBlank(lawsDocumentSplit.getDynamicType())) { - lawsDocumentSplit.setDynamicType(getItemValues(lawsDocumentSplit.getDynamicType().replace(",", ";"), - "1702518671166697474", sysDictItemList)); // 动力类型 - } - - insertDocumentList.add(lawsDocumentSplit); - lawsDocumentSplitMapper.insert(lawsDocumentSplit); - n[0]++; - } - ; - infoMap.put(sarFileSplitInfoEO.getId(), insertDocumentList); - } - ; - long time2 = System.currentTimeMillis(); - log.info("=====================同步DocumentSplit条文数据:{}条,耗时:{}毫秒=====================", n[0], time2 - time1); - String regex = "[^a-zA-Z0-9.]"; - insertSplitList.forEach(sarFileSplitInfoEO -> { - String infoId = sarFileSplitInfoEO.getId(); - List lawsDocumentSplitList = infoMap.get(infoId); - List itemNumList = new ArrayList<>(); - for (LawsDocumentSplit lawsDocumentSplit : lawsDocumentSplitList) { - String itemNum = lawsDocumentSplit.getItemNum(); - itemNumList.add(itemNum.replaceAll(regex, "")); - } - // 对目录排序 - Collections.sort(itemNumList, new AlphanumericComparator()); - Map sortMap = new HashMap<>(); - for (int i = 0; i < itemNumList.size(); i++) { - sortMap.put(itemNumList.get(i), i + 2L); - } - List sarFileSplitMenuEOList = new java.util.ArrayList<>(); - // 根目录 - SarFileSplitMenuEO rootEO = new SarFileSplitMenuEO(); - String rootId = UUIDUtils.randomUUID20(); - rootEO.setId(rootId); - rootEO.setInfoId(infoId); - rootEO.setName("总目录"); - rootEO.setDisplaySeq(1L); - rootEO.setValidFlag(0); - sarFileSplitMenuEOMapper.insertSelective(rootEO); - - Map idMap = new HashMap<>(); - lawsDocumentSplitList.forEach(lawsDocumentSplit -> { - SarFileSplitMenuEO sarFileSplitMenuEO = new SarFileSplitMenuEO(); - String itemNum = lawsDocumentSplit.getItemNum(); - String id = UUIDUtils.randomUUID20(); - sarFileSplitMenuEO.setId(id); - sarFileSplitMenuEO.setInfoId(infoId); - sarFileSplitMenuEO.setName(itemNum); - sarFileSplitMenuEO.setDisplaySeq(sortMap.get(itemNum.replaceAll(regex, ""))); - sarFileSplitMenuEO.setValidFlag(0); - String itemTitle = lawsDocumentSplit.getItemTitle(); - sarFileSplitMenuEO.setItemName(itemTitle.substring(0, Math.min(10, itemTitle.length()))); - sarFileSplitMenuEOList.add(sarFileSplitMenuEO); - idMap.put(itemNum.replaceAll(regex, ""), id); - - lawsDocumentSplit.setMenuId(id); - lawsDocumentSplitMapper.updateById(lawsDocumentSplit); - }); - - // 设置父id - sarFileSplitMenuEOList.forEach(sarFileSplitMenuEO -> { - String itemNum = sarFileSplitMenuEO.getName().replaceAll(regex, ""); - String[] split = itemNum.split("\\."); - if (split.length == 1) { - sarFileSplitMenuEO.setPId(rootId); - } else { - // 去除数组中的最后一个元素 - split = Arrays.copyOf(split, split.length - 1); - String pid = idMap.get(StringUtils.join(split, ".")); - if (StringUtils.isBlank(pid)) { - pid = rootId; - } - sarFileSplitMenuEO.setPId(pid); - } - }); - sarFileSplitMenuEOMapper.insertForeach(sarFileSplitMenuEOList); - }); - long time3 = System.currentTimeMillis(); - log.info("=====================生成拆分详情左侧目录耗时:{}毫秒=====================", time3 - time2); - - insertSplitList.forEach(sarFileSplitInfoEO -> { - String infoId = sarFileSplitInfoEO.getId(); - List lawsDocumentSplitList = infoMap.get(infoId); - lawsDocumentSplitList.forEach(lawsDocumentSplit -> { - String itemContent = lawsDocumentSplit.getItemContent(); - // 使用 jsoup 解析 HTML - Document doc = Jsoup.parse(itemContent); - - // 选择所有的

元素 - Elements paragraphs = doc.select("p"); - - // 存储提取的文本内容 - List textContents = new java.util.ArrayList<>(); - - for (Element paragraph : paragraphs) { - // 获取每个

元素的文本内容并添加到集合中 - String textContent = paragraph.text(); - textContents.add(textContent); - } - - for (int i = 0; i < textContents.size(); i++) { - SarFileSplitItemsValEO sarFileSplitItemsValEO = new SarFileSplitItemsValEO(); - sarFileSplitItemsValEO.setId(UUIDUtils.randomUUID20()); - sarFileSplitItemsValEO.setType("TEXT"); - sarFileSplitItemsValEO.setItemId(lawsDocumentSplit.getId()); - sarFileSplitItemsValEO.setItemContent(textContents.get(i)); - sarFileSplitItemsValEO.setDisplaySeq(i + 1); - sarFileSplitItemsValEO.setValidFlag(0); - sarFileSplitItemsValEOService.insertSelective(sarFileSplitItemsValEO); - } - }); - }); - - for (SarFileSplitInfoEO sarFileSplitInfoEO : insertSplitList) { - HashMap parameter = new HashMap<>(); - parameter.put("id", sarFileSplitInfoEO.getId()); - documentSplitService.publish(parameter); - } - long time4 = System.currentTimeMillis(); - log.info("=====================生成条文详情耗时:{}毫秒=====================", time4 - time3); - - long end = System.currentTimeMillis(); - log.info("=====================全部同步完成,耗时:{} 毫秒=====================", end - start); - log.info("=====================定时任务同步结束====================="); - } - - @Transactional - public void upload(String url, String fileName, String fileType, String id, String code) { - InputStream inputStream = asmsPostUtil.getFileByteArray(url); - try { - MinioUtil.upload(inputStream, filePath + url); - } catch (Exception e) { - e.printStackTrace(); - throw new JeroBootException("文件上传错误"); - } - OSSFile ossFile = new OSSFile(); - ossFile.setFileName(fileName + "." + fileType); - ossFile.setUrl(filePath + url); - ossFile.setStandardId(id); - ossFile.setStandardNo(code); - ossFile.setStandardFileType("publish_of_original"); - ossFileService.save(ossFile); - } - - private Date getSimpleDate(String dateStr) { - if (StringUtils.isBlank(dateStr)) return null; - try { - return simpleDateFormat.parse(dateStr); - } catch (ParseException e) { - e.printStackTrace(); - throw new JeroBootException("时间格式转换错误"); - } - } - - private Date getSimpleDate2(String dateStr) { - if (StringUtils.isBlank(dateStr)) return null; - try { - return dateFormat.parse(dateStr); - } catch (ParseException e) { - e.printStackTrace(); - throw new JeroBootException("时间格式转换错误"); - } - } - - /** - * @Author: liao - * @Date: 2023/10/23 15:57 - * @Description: 获取多日期字符串 - **/ - private String getManyDateString(String oldManyDateString) { - if (StringUtils.isBlank(oldManyDateString)) return ""; - List oldValueList = Arrays.asList(oldManyDateString.split("、")); - // 使用正则表达式提取日期部分 - Pattern pattern = Pattern.compile("\\d{4}年\\d{2}月\\d{2}日"); - - List valueList = new java.util.ArrayList<>(); - oldValueList.forEach(value -> { - Matcher matcher = pattern.matcher(value); - String dateStr; - if (matcher.find()) { - dateStr = matcher.group(0); - } else { - return; - } - try { - Date parse = oldDateFormat.parse(dateStr); - String format = simpleDateFormat.format(parse); - valueList.add(format); - } catch (ParseException e) { - e.printStackTrace(); - throw new JeroBootException("时间格式转换错误"); - } - }); - if (valueList.size() == 1) { - // 如果只有一个日期值,则复制成两个,用于查询和排序 - return valueList.get(0) + "," + valueList.get(0); - } - List dateList = valueList.stream() - .map(LocalDate::parse) // 解析日期字符串为 LocalDate 对象 - .sorted() // 按照日期大小进行排序 - .collect(Collectors.toList()); - - // 将排序后的 LocalDate 对象转换为字符串 - List sortedDateStrList = dateList.stream() - .map(LocalDate::toString) - .collect(Collectors.toList()); - - return String.join(",", sortedDateStrList); - } - - /** - * @Author: liao - * @Date: 2023/10/23 15:09 - * @Description: 获取字典值 - **/ - private String getItemValues(String itemTexts, String dictId, List sysDictItemList) { - if (StringUtils.isBlank(itemTexts)) return ""; - List itemTextList = Arrays.asList(itemTexts.split(";")); - List itemValues = sysDictItemList.stream() - .filter(sysDictItem -> itemTextList.contains(sysDictItem.getItemText()) && dictId.equals(sysDictItem.getDictId())) - .map(SysDictItem::getItemValue).collect(Collectors.toList()); - return StringUtils.join(itemValues, ","); - } - -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/util/AlphanumericComparator.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/util/AlphanumericComparator.java deleted file mode 100644 index 3dfdb80b..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/util/AlphanumericComparator.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.jero.modules.docking.asms.util; - -import java.util.Comparator; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -/** - * @Author: liao - * @Date: 2023/10/25 9:33 - * @Description: 目录顺序排序 - */ -public class AlphanumericComparator implements Comparator { - private Pattern pattern = Pattern.compile("(\\d+|\\D+)"); - - @Override - public int compare(String s1, String s2) { - Matcher matcher1 = pattern.matcher(s1); - Matcher matcher2 = pattern.matcher(s2); - - while (matcher1.find() && matcher2.find()) { - String group1 = matcher1.group(); - String group2 = matcher2.group(); - - int result; - if (isInteger(group1) && isInteger(group2)) { - result = Integer.compare(Integer.parseInt(group1), Integer.parseInt(group2)); - } else { - result = group1.compareTo(group2); - } - - if (result != 0) { - return result; - } - } - - return 0; - } - - private boolean isInteger(String s) { - try { - Integer.parseInt(s); - return true; - } catch (NumberFormatException e) { - return false; - } - } -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/util/AsmsPostUtil.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/util/AsmsPostUtil.java deleted file mode 100644 index 33ba9ca7..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/util/AsmsPostUtil.java +++ /dev/null @@ -1,154 +0,0 @@ -package com.jero.modules.docking.asms.util; - -import com.jero.common.api.vo.Result; -import com.jero.common.exception.JeroBootException; -import com.jero.common.util.RedisUtil; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.http.HttpEntity; -import org.springframework.http.HttpHeaders; -import org.springframework.http.HttpMethod; -import org.springframework.http.ResponseEntity; -import org.springframework.stereotype.Component; -import org.springframework.web.client.RestTemplate; - -import java.io.ByteArrayInputStream; -import java.io.InputStream; -import java.util.*; - -/** - * @Author: liao - * @Date: 2023/10/17 15:12 - * @Description: 远程调用 - */ -@Component -@Slf4j -public class AsmsPostUtil { - - @Autowired - private RestTemplate restTemplate; - @Autowired - private RedisUtil redisUtil; - @Value("${asms.host}") - private String host; - @Value("${asms.username}") - private String username; - - public String getHost() { - return host; - } - - @Value("${asms.password}") - private String password; - @Value("${asms.expire}") - private Long expire; - // 汽车标准数字化平台ASMS权限验证token - private final static String ASMS_SYSTEM_AUTH_TOKEN = "ASMS_SYSTEM_AUTH_TOKEN"; - - /** - * @Author: liao - * @Date: 2023/10/17 15:43 - * @Description: 获取token字符串 - **/ - private String getToken() { - // 从redis中获取token - String token = (String) redisUtil.get(ASMS_SYSTEM_AUTH_TOKEN); - // 如果token为空则重新获取 - if (StringUtils.isBlank(token)) { - Map map = new HashMap<>(); - map.put("username", username); - map.put("password", password); - ResponseEntity responseEntity = restTemplate.postForEntity(host + "xiaobodata/openApi/login", map, Result.class); - if (!responseEntity.getBody().isSuccess()) { - System.out.println("汽车标准数字化平台:token获取失败" + responseEntity.getBody().toString()); - throw new JeroBootException("汽车标准数字化平台:token获取失败" + responseEntity.getBody().toString()); - } - Map resultMap = (Map) responseEntity.getBody().getResult(); - token = resultMap.get("token"); - // 将新获取的token存入redis - redisUtil.set(ASMS_SYSTEM_AUTH_TOKEN, token, expire * 60 * 60); - log.info("new token is creating: {}", token); - } - return token; - } - - /** - * @Author: liao - * @Date: 2023/10/17 16:33 - * @Description: 发送get请求 - * uri:接口地址 - * map:参数map - **/ - public List> sendGetReq(String uri, Map map) { - ResponseEntity responseEntity = getSendGetReq(uri, map); - Map resultMap = (Map) responseEntity.getBody().getResult(); - if (Objects.isNull(resultMap)) { - throw new JeroBootException("返回数据为空"); - } - List> mapList = (List>) resultMap.get("records"); - if (CollectionUtils.isEmpty(mapList)) { - mapList = new ArrayList<>(); - Map result = (Map) responseEntity.getBody().getResult(); - if (result.containsKey("records")) { - return new ArrayList<>(); - } - mapList.add(result); - } - log.info("返回{}条数据", mapList.size()); - return mapList; - } - - public Map sendGetReq2(String uri, Map map) { - ResponseEntity responseEntity = getSendGetReq(uri, map); - return (Map) responseEntity.getBody().getResult(); - } - - private ResponseEntity getSendGetReq(String uri, Map map) { - // 准备请求头 - String token = getToken(); - HttpHeaders headers = new HttpHeaders(); - headers.set("Content-Type", "application/x-www-form-urlencoded"); - headers.set("X-Access-Token", token); - - if (StringUtils.isBlank(uri)) { - throw new JeroBootException("url不能为空"); - } - // 准备url - String url = host + uri; - if (!Objects.isNull(map)) { - StringBuilder sb = new StringBuilder(); - map.forEach((k, v) -> sb.append("&" + k + "=" + v)); - String s = sb.toString(); - url += "?" + s.substring(1); - } - - ResponseEntity responseEntity; - try { - log.info("request url : {}", url); - responseEntity = restTemplate.exchange(url.toString(), - HttpMethod.GET, new HttpEntity<>(null, headers), Result.class); - } catch (Exception e) { - log.info("old token is deleting: {}", token); - redisUtil.del(ASMS_SYSTEM_AUTH_TOKEN); - e.printStackTrace(); - throw new JeroBootException("操作失败,请稍后重试"); - } - - if (!responseEntity.getBody().isSuccess()) { - System.out.println("汽车标准数字化平台:请求发送失败" + responseEntity.getBody().toString()); - throw new JeroBootException("汽车标准数字化平台:请求发送失败" + responseEntity.getBody().toString()); - } - return responseEntity; - } - - public InputStream getFileByteArray(String fileUrl) { - // 执行GET请求 - ResponseEntity response = restTemplate.getForEntity(host + fileUrl, byte[].class); - byte[] bytes = response.getBody(); - return new ByteArrayInputStream(bytes); - } - -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/download/config/ContentCachingWrapperFilter.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/download/config/ContentCachingWrapperFilter.java deleted file mode 100644 index 29be7da3..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/download/config/ContentCachingWrapperFilter.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.jero.modules.docking.download.config; -import org.apache.commons.io.IOUtils; -import org.springframework.core.Ordered; -import org.springframework.stereotype.Component; -import org.springframework.web.filter.OncePerRequestFilter; -import org.springframework.web.util.ContentCachingRequestWrapper; -import org.springframework.web.util.ContentCachingResponseWrapper; -import org.springframework.web.util.WebUtils; - -import javax.servlet.FilterChain; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.io.InputStream; -import java.nio.charset.StandardCharsets; -import java.util.Objects; - -/** - * @author lqt - * @version 1.0 - * @date 2023/11/24 11:36 - */ -@Component -public class ContentCachingWrapperFilter extends OncePerRequestFilter implements Ordered { - - @Override - public int getOrder() { - return Ordered.LOWEST_PRECEDENCE - 10; - } - - @Override - protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) - throws ServletException, IOException { - // 包装流,可重复读取 - if (!(request instanceof ContentCachingRequestWrapper)) { - request = new ContentCachingRequestWrapper(request); - } - if (!(response instanceof ContentCachingResponseWrapper)) { - response = new ContentCachingResponseWrapper(response); - } - - filterChain.doFilter(request, response); - updateResponse(response); - } - - /** - * 更新响应(不操作这一步,会导致接口响应空白) - * - * @param response 响应对象 - * @throws IOException / - */ - public static void updateResponse(HttpServletResponse response) throws IOException { - ContentCachingResponseWrapper responseWrapper = WebUtils.getNativeResponse(response, ContentCachingResponseWrapper.class); - Objects.requireNonNull(responseWrapper).copyBodyToResponse(); - } - - /** - * 获取请求体 - * - * @param request 请求对象 - * @return 请求体 - */ - public static String getRequestBody(HttpServletRequest request) throws IOException { - String requestBody = ""; - ContentCachingRequestWrapper wrapper = WebUtils.getNativeRequest(request, ContentCachingRequestWrapper.class); - if (wrapper != null) { - requestBody = IOUtils.toString(wrapper.getContentAsByteArray(), StandardCharsets.UTF_8.toString()); - } - return requestBody; - } - - /** - * 获取响应体 - * - * @param response 响应对象 - * @return 响应体 - */ - public static InputStream getResponseBody(HttpServletResponse response) throws IOException { - InputStream responseBody = null; - ContentCachingResponseWrapper wrapper = WebUtils.getNativeResponse(response, ContentCachingResponseWrapper.class); - if (wrapper != null) { - responseBody = wrapper.getContentInputStream(); - } - return responseBody; - } -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/download/config/DownloadInterceptor.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/download/config/DownloadInterceptor.java deleted file mode 100644 index d5a300c9..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/download/config/DownloadInterceptor.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.jero.modules.docking.download.config; - -import com.jero.modules.docking.download.service.DownloadDecryptFileService; -import org.springframework.lang.Nullable; -import org.springframework.stereotype.Component; -import org.springframework.web.servlet.HandlerInterceptor; -import org.springframework.web.servlet.ModelAndView; - -import javax.annotation.Resource; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -/** - * @author lqt - * @version 1.0 - * @date 2023/11/23 18:20 - */ -@Component -public class DownloadInterceptor implements HandlerInterceptor{ - - @Resource - private DownloadDecryptFileService downloadDecryptFileService; - - public DownloadInterceptor(DownloadDecryptFileService downloadDecryptFileService) { - this.downloadDecryptFileService = downloadDecryptFileService; - } - - /** - * 预处理回调方法,实现处理器的预处理(如检查登陆),第三个参数为响应的处理器 - * 返回值:true表示继续流程(如调用下一个拦截器或处理器);false表示流程中断(如登录检查失败),不会继续调用其他的拦截器或处理器,此时我们需要通过response来产生响应 - * @throws Exception - */ - @Override - public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { - return true; - } - - /** - * 后处理回调方法,实现处理器的后处理(但在渲染视图之前),此时我们可以通过modelAndView(模型和视图对象)对模型数据进行处理或对视图进行处理,modelAndView也可能为null - */ - @Override - public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable ModelAndView modelAndView) throws Exception { - downloadDecryptFileService.downloadDecryptFile(request,response,handler,"1"); - } - - /** - *整个请求处理完毕回调方法,即在视图渲染完毕时回调,如性能监控中我们可以在此记录结束时间并输出消耗时间,还可以进行一些资源清理,类似于try-catch-finally中的finally,但仅调用处理器执行链中 - */ - @Override - public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) throws Exception { - downloadDecryptFileService.downloadDecryptFile(request,response,handler,null); - } -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/download/config/InterceptorConfig.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/download/config/InterceptorConfig.java deleted file mode 100644 index 74cf99b8..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/download/config/InterceptorConfig.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.jero.modules.docking.download.config; - -import com.jero.modules.docking.download.service.DownloadDecryptFileService; -import org.springframework.context.annotation.Configuration; -import org.springframework.web.servlet.config.annotation.InterceptorRegistry; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; - -import javax.annotation.Resource; - -/** - * @author lqt - * @version 1.0 - * @date 2023/11/23 18:21 - */ -@Configuration -public class InterceptorConfig implements WebMvcConfigurer { - @Resource - private DownloadDecryptFileService downloadDecryptFileService; - - @Override - public void addInterceptors(InterceptorRegistry registry) { - registry.addInterceptor(new DownloadInterceptor(downloadDecryptFileService)).addPathPatterns("/**"); - } - -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/download/controller/SearchController.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/download/controller/SearchController.java deleted file mode 100644 index 53af8e60..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/download/controller/SearchController.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.jero.modules.docking.download.controller; - -import com.jero.common.util.IntekeyUtils; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; -import org.springframework.web.multipart.MultipartFile; - -import javax.servlet.http.HttpServletResponse; -import java.io.InputStream; -import java.io.OutputStream; - -/** - * @author lqt - * @version 1.0 - * @date 2023/11/27 17:41 - */ -@RestController -@RequestMapping("/home/search") -public class SearchController { - - - @PostMapping(value = "/download") - public void downloadAndView(@RequestParam("file") MultipartFile file, - @RequestParam("url") String url, - @RequestParam("appCode") String appCode, - @RequestParam("secretKey") String secretKey, - @RequestParam(value = "scope",required = false) Integer scope, - HttpServletResponse response) { - try (InputStream inputStream = IntekeyUtils.decryptFile(url, appCode, secretKey, scope, file); - OutputStream outputStream = response.getOutputStream() - ) { - byte[] buf = new byte[1024]; - int len; - while ((len = inputStream.read(buf)) > 0) { - outputStream.write(buf, 0, len); - } - response.flushBuffer(); - } catch (Exception e) { - response.setStatus(404); - e.printStackTrace(); - } - } -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/download/service/DownloadDecryptFileService.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/download/service/DownloadDecryptFileService.java deleted file mode 100644 index 65d4d176..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/download/service/DownloadDecryptFileService.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.jero.modules.docking.download.service; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -/** - * @author lqt - * @version 1.0 - * @date 2023/11/24 9:04 - */ -public interface DownloadDecryptFileService { - - /** - * - * @author LQT - * @date 2023/11/24 9:06 - * @param request - * @param response - * @param handler - * @param type 1 为直接返回文件流,其他为modelandview - * @return void - */ - void downloadDecryptFile(HttpServletRequest request, HttpServletResponse response, Object handler,String type); -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/download/service/impl/DownloadDecryptFileServiceImpl.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/download/service/impl/DownloadDecryptFileServiceImpl.java deleted file mode 100644 index ebeef32c..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/download/service/impl/DownloadDecryptFileServiceImpl.java +++ /dev/null @@ -1,269 +0,0 @@ -package com.jero.modules.docking.download.service.impl; - -import com.jero.modules.docking.download.config.ContentCachingWrapperFilter; -import com.jero.modules.docking.download.service.DownloadDecryptFileService; -import com.jero.common.util.IntekeyUtils; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.apache.http.entity.ContentType; -import org.jetbrains.annotations.NotNull; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.mock.web.MockMultipartFile; -import org.springframework.stereotype.Service; -import org.springframework.web.method.HandlerMethod; -import org.springframework.web.multipart.MultipartFile; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.util.List; -import java.util.Objects; -import java.util.UUID; - -/** - * @author lqt - * @version 1.0 - * @date 2023/11/24 9:04 - */ -@Slf4j -@Service -public class DownloadDecryptFileServiceImpl implements DownloadDecryptFileService { - - @Value("#{'${download.download_url}'.split(',')}") - private List downloadUrl; - - @Value("#{'${download.view_url}'.split(',')}") - private List viewUrl; - - @Value("#{'${download.enable}'}") - private boolean enable; - - @Value("#{'${download.white_url}'.split(',')}") - private List whiteUrls; - - @Value("#{'${download.dev_encrypt_url}'.split(',')}") - private List devEncryptUrls; - - /** - * 管理员角色 - */ - @Value("#{'${download.admin_role_code}'.split(',')}") - private List adminRoleCode; - - /** - * 加密 - */ - @Value("#{'${download.encrypt.url}'}") - private String encryptUrl; - @Value("#{'${download.encrypt.app_code}'}") - private String encryptAppCode; - @Value("#{'${download.encrypt.secret_key}'}") - private String encryptSecretKey; - - /** - * 解密 - */ - @Value("#{'${download.decrypt.url}'}") - private String decryptUrl; - @Value("#{'${download.decrypt.app_code}'}") - private String decryptAppCode; - @Value("#{'${download.decrypt.secret_key}'}") - private String decryptSecretKey; - - /** - * 研发域 - */ - @Value("#{'${download.scope_dev}'}") - private int scopeDev; - /** - * 办公域 - */ - @Value("#{'${download.scope_work}'}") - private int scopeWork; - - - @Override - public void downloadDecryptFile(HttpServletRequest request, HttpServletResponse response, Object handler,String type) { - if(!enable){ - return; - } - // 白名单不执行 - String requestUrl = request.getRequestURI(); - for (String whiteUrl : whiteUrls) { - if (requestUrl.contains(whiteUrl)) { - return; - } - } - - // 是否加研发密 - boolean isDevEncrypt = false; - for (String devEncryptUrl : devEncryptUrls) { - if (requestUrl.contains(devEncryptUrl)) { - isDevEncrypt = true; - break; - } - } - // 判断返回值是否为文件流,否则其他接口返回值会变更成字符串,导致前端无法解析 - HandlerMethod handlerMethod = (HandlerMethod) handler; - InputStream responseBody = null; - try { - String returnType = handlerMethod.getMethod().getReturnType().getName(); - if(!Objects.equals(returnType,"void") && !Objects.equals(returnType,"org.springframework.web.servlet.ModelAndView")){ - return; - } - if(Objects.equals(returnType,"void") && !Objects.equals(type,"1")){ - return; - } - responseBody = ContentCachingWrapperFilter.getResponseBody(response); - } catch (Exception e) { - log.error("Exception:",e); - response.setStatus(404); - } - - String contentType = response.getContentType(); - String fileName = getFileName(response); - if (!fileName.contains(".")) { - return; - } - MultipartFile file = getMultipartFile(response,responseBody, contentType, fileName); - // 访问路径 - String str = request.getRequestURI(); - - boolean b = isBoolean(str, viewUrl); - - boolean b1 = isBoolean(str, downloadUrl); - - int scope = getScope(isDevEncrypt); - - if(b){ - // 预览,进行解密 - decryptFile(response, file, null); - }else if(b1){ - // 下载文件 先解密,判断组织域,加密 - try (InputStream is = IntekeyUtils.decryptFile(decryptUrl, decryptAppCode, decryptSecretKey, null, file)) { - MultipartFile fileDecrypt = getMultipartFile(response,is, contentType, fileName); - // 判断fileDecrypt是不是zip压缩包,如果是压缩包的话则不加密 - boolean isZipFile = false; - String originalFileName = fileDecrypt.getOriginalFilename(); - if (originalFileName != null && originalFileName.endsWith(".zip")) { - isZipFile = true; - } - if (isZipFile) { - return; - } - // 加密 - encryptFile(response, fileDecrypt, scope); - } catch (Exception e) { - log.error("Exception:",e); - response.setStatus(404); - } - - }else{ - // 加密 - encryptFile(response, file, scope); - } - } - - @NotNull - private String getFileName(HttpServletResponse response) { - String fileName = ""; - String headerField = response.getHeader("Content-Disposition"); - - if (headerField != null && - (!StringUtils.isBlank(headerField) || headerField.contains("fileName=") || headerField.contains("filename="))){ - String name = ""; - if(headerField.contains("fileName=")){ - name = "fileName"; - }else{ - name = "filename"; - } - fileName = headerField.substring(headerField.lastIndexOf(name + "=") + 9); - if (headerField.contains("filename*=UTF-8")){ - fileName = headerField.substring(headerField.lastIndexOf("filename*=UTF-8") + 17); - } - }else { - fileName = UUID.randomUUID().toString(); - } - return fileName; - } - - private void decryptFile(HttpServletResponse response, MultipartFile file, Integer scope) { - try (InputStream is = IntekeyUtils.decryptFile(decryptUrl, decryptAppCode, decryptSecretKey, scope, file)) { - writeResponse(response, is); - } catch (Exception e) { - log.error("Exception:",e); - response.setStatus(404); - } - } - - private void encryptFile(HttpServletResponse response, MultipartFile file, Integer scope) { - try (InputStream is = IntekeyUtils.decryptFile(encryptUrl, encryptAppCode, encryptSecretKey, scope, file)) { - writeResponse(response, is); - } catch (Exception e) { - log.error("Exception:",e); - response.setStatus(404); - } - } - - @NotNull - private MultipartFile getMultipartFile(HttpServletResponse response,InputStream responseBody,String contentType,String fileName) { - MultipartFile file = null; - try { - file = new MockMultipartFile(ContentType.APPLICATION_OCTET_STREAM.toString(),fileName,contentType, responseBody); - } catch (IOException e) { - log.error("Exception:",e); - response.setStatus(404); - } - return file; - } - - private boolean isBoolean(String str, List viewUrl) { - boolean b = false; - for (String s : viewUrl) { - if (str.contains(s)) { - b = true; - break; - } - } - return b; - } - - private int getScope(boolean isDevEncrypt) { -// 角色信息中存在 【系统管理员】或者 【标准管理员】即加为研发密,其他情况都是OA密 -// 研发密比较高级(加密需要传参) -// 研发域 scope = 51 -// 办公密 scope = 52 -// LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); -// List listRoleCode = Arrays.asList(sysUser.getRoleIds().split(",")); -// if(CollectionUtils.isEmpty(listRoleCode)){ -// throw new JeroBootException(ResultCommon.ERROR); -// } -// int scope = scopeWork; -// long l = listRoleCode.stream().filter(o->adminRoleCode.contains(o)).count(); -// if(l > 0){ -// scope = scopeDev; -// } - if (isDevEncrypt) { - return scopeDev; - } else { - return scopeWork; - } - } - - private void writeResponse(HttpServletResponse response,InputStream is) { - response.resetBuffer(); - try (OutputStream outputStream = response.getOutputStream()) { - byte[] buf = new byte[1024]; - int len; - while ((len = is.read(buf)) > 0) { - outputStream.write(buf, 0, len); - } - response.flushBuffer(); - }catch (Exception e){ - log.error("Exception:",e); - response.setStatus(404); - } - } -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/controller/HiworkLoginController.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/controller/HiworkLoginController.java deleted file mode 100644 index aac34a37..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/controller/HiworkLoginController.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.jero.modules.docking.hiwork.controller; - -import com.alibaba.fastjson.JSONObject; -import com.jero.common.api.vo.Result; -import com.jero.modules.docking.hiwork.service.impl.HiworkService; -import io.swagger.annotations.ApiOperation; -import lombok.extern.slf4j.Slf4j; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import javax.annotation.Resource; - -/** - * @author liJiaRao - * @date 2024-03-01 14:01 - */ -@RestController -@RequestMapping("/hiwork") -@Slf4j -public class HiworkLoginController { - @Resource - private HiworkService hiworkService; - - @ApiOperation("hiwork单点登录") - @PostMapping("/login") - public Result login(@RequestBody JSONObject jsonObject){ - return hiworkService.login(jsonObject); - } -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/entity/HiworkDingDingMsg.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/entity/HiworkDingDingMsg.java deleted file mode 100644 index 6fbd8971..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/entity/HiworkDingDingMsg.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.jero.modules.docking.hiwork.entity; - -import com.alibaba.fastjson.JSONObject; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; - -/** - * @Author: liao - * @Date: 2023/10/13 17:49 - * @Description: 统一消息集成-钉钉消息 - */ -@Data -@Accessors(chain = true) -@EqualsAndHashCode(callSuper = false) -@ApiModel(value="统一消息集成-钉钉消息", description="统一消息集成-钉钉消息") -public class HiworkDingDingMsg { - @ApiModelProperty(value = "异构系统标识") - private String sysCode; - @ApiModelProperty(value = "服务号消息") - private String noticeServiceCode; - @ApiModelProperty(value = "消息推送类型 ding | message | jpush") - private String noticePushType; - @ApiModelProperty(value = "发送人员Id") - private String useridList; - @ApiModelProperty(value = "发送部门id") - private String deptIdList; - @ApiModelProperty(value = "agentId") - private String agentId; - @ApiModelProperty(value = "标题") - private String title; - @ApiModelProperty(value = "消息体") - private JSONObject msg; -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/entity/HiworkResult.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/entity/HiworkResult.java deleted file mode 100644 index 5c632245..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/entity/HiworkResult.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.jero.modules.docking.hiwork.entity; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; - -/** - * @Author: liao - * @Date: 2023/10/13 14:39 - * @Description: 统一待办集成返回 - */ -@Data -@Accessors(chain = true) -@EqualsAndHashCode(callSuper = false) -@ApiModel(value="统一待办集成返回", description="统一待办集成返回") -public class HiworkResult { - @ApiModelProperty(value = "成功true,失败false") - private Boolean success; - @ApiModelProperty(value = "成功1,失败0") - private Integer code; - @ApiModelProperty(value = "消息") - private String msg; - @ApiModelProperty(value = "成功null,失败null") - private Object data; -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/entity/HiworkSystemMsg.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/entity/HiworkSystemMsg.java deleted file mode 100644 index df629b65..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/entity/HiworkSystemMsg.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.jero.modules.docking.hiwork.entity; - -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; - -/** - * @Author: liao - * @Date: 2023/10/13 17:49 - * @Description: 统一消息集成-系统消息 - */ -@Data -@Accessors(chain = true) -@EqualsAndHashCode(callSuper = false) -@ApiModel(value="统一消息集成-系统消息", description="统一消息集成-系统消息") -public class HiworkSystemMsg { - @ApiModelProperty(value = "异构系统标识") - private String sysCode; - @ApiModelProperty(value = "消息推送类型 ding | message | jpush") - private String noticePushType; - @ApiModelProperty(value = "发送人员编号") - private String sendCode; - @ApiModelProperty(value = "发送人员姓名") - private String sendName; - @ApiModelProperty(value = "消息类型 字典") - private String messageType; - @ApiModelProperty(value = "消息标题") - private String title; - @ApiModelProperty(value = "消息接收人 集合") - private JSONArray receiverList; - @ApiModelProperty(value = "消息体") - private JSONObject msg; -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/entity/HiworkTodo.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/entity/HiworkTodo.java deleted file mode 100644 index 466cf350..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/entity/HiworkTodo.java +++ /dev/null @@ -1,78 +0,0 @@ -package com.jero.modules.docking.hiwork.entity; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; - -import java.time.Instant; - -/** - * @Author: liao - * @Date: 2023/10/13 14:22 - * @Description: 待办 - */ -@Data -@Accessors(chain = true) -@EqualsAndHashCode(callSuper = false) -@ApiModel(value="统一待办集成", description="统一待办集成") -public class HiworkTodo { - @ApiModelProperty(value = "异构系统标识") - private String sysCode; - @ApiModelProperty(value = "标题") - private String noticeTitle; - @ApiModelProperty(value = "描述") - private String noticeDescription; - @ApiModelProperty(value = "流程编号") - private String busiDefCode; - @ApiModelProperty(value = "流程id") - private String flowid; - @ApiModelProperty(value = "流程实例id") - private String processId; - @ApiModelProperty(value = "流程实例名称") - private String processName; - @ApiModelProperty(value = "流程类型,字典") - private String processType; - @ApiModelProperty(value = "任务id") - private String taskId; - @ApiModelProperty(value = "节点名称") - private String taskName; - @ApiModelProperty(value = "是否进入下一节点(0是 1不是)") - private Integer multiInstance; - @ApiModelProperty(value = "节点编号") - private String nodeBusiCode; - @ApiModelProperty(value = "跳转链接") - private String businessLink; - @ApiModelProperty(value = "APP跳转链接") - private String appBusinessLink; - @ApiModelProperty(value = "创建人code") - private String createUserCode; - @ApiModelProperty(value = "创建人姓名") - private String createUserName; - @ApiModelProperty(value = "接收人id") - private String userId; - @ApiModelProperty(value = "接收人code") - private String userCode; - @ApiModelProperty(value = "接收人姓名") - private String userName; - @ApiModelProperty(value = "参与者id") - private String participantId; - @ApiModelProperty(value = "参与者编号") - private String participantCode; - @ApiModelProperty(value = "接收时间") - private Instant receiveTime; - @ApiModelProperty(value = "截止时间") - private Long dueTime; - @ApiModelProperty(value = "业务主键") - private String bid; - @ApiModelProperty(value = "待办、已办") - private String isTodo; - @ApiModelProperty(value = "是否展示在列表中") - private String isShow; - @ApiModelProperty(value = "优先级") - private String priority; - @ApiModelProperty(value = "是否通知消息") - private String notifyConfig; - -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/entity/HiworkUserInfo.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/entity/HiworkUserInfo.java deleted file mode 100644 index 93ea75d0..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/entity/HiworkUserInfo.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.jero.modules.docking.hiwork.entity; - -import com.alibaba.fastjson.annotation.JSONField; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * @author liJiaRao - * @date 2024-03-01 14:26 - */ -@NoArgsConstructor -@Data -public class HiworkUserInfo { - /** - * errcode - */ - @JSONField(name = "errcode") - private Integer errcode; - /** - * result - */ - @JSONField(name = "result") - private ResultDTO result; - /** - * errmsg - */ - @JSONField(name = "errmsg") - private String errmsg; - - /** - * ResultDTO - */ - @NoArgsConstructor - @Data - public static class ResultDTO { - /** - * associatedUnionid - */ - @JSONField(name = "associated_unionid") - private String associatedUnionid; - /** - * unionid - */ - @JSONField(name = "unionid") - private String unionid; - /** - * deviceId - */ - @JSONField(name = "device_id") - private String deviceId; - /** - * sysLevel - */ - @JSONField(name = "sys_level") - private Integer sysLevel; - /** - * name - */ - @JSONField(name = "name") - private String name; - /** - * sys - */ - @JSONField(name = "sys") - private Boolean sys; - /** - * userid - */ - @JSONField(name = "userid") - private String userid; - } -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/enums/IsTodoEnum.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/enums/IsTodoEnum.java deleted file mode 100644 index e90dc76d..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/enums/IsTodoEnum.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.jero.modules.docking.hiwork.enums; - -/** - * @Author: liao - * @Date: 2023/10/13 15:05 - * @Description: 待办、已办 - */ -public enum IsTodoEnum { - TODO( "待办", "1"), - DONE("已办", "2"), - FINISH("结束", "3"), - DEL("删除", "6") - ; - - String name; - String value; - - IsTodoEnum(String name, String value) { - this.name = name; - this.value = value; - } - - public String getName() {return name;} - public String getValue() {return value;} -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/handle/DingDingSendMsgHandle.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/handle/DingDingSendMsgHandle.java deleted file mode 100644 index 42234491..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/handle/DingDingSendMsgHandle.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.jero.modules.docking.hiwork.handle; - -import com.jero.common.util.SpringContextUtils; -import com.jero.modules.docking.hiwork.service.IHiworkMsgService; -import com.jero.modules.message.handle.ISendMsgHandle; -import lombok.extern.slf4j.Slf4j; - -import java.util.Arrays; - -/** - * @Author: liao - * @Date: 2023/10/17 14:29 - * @Description: Hiwork钉钉消息 - **/ -@Slf4j -public class DingDingSendMsgHandle implements ISendMsgHandle { - - /** - * @Author: liao - * @Date: 2023/10/17 14:29 - * @Description: Hiwork钉钉消息 - **/ - @Override - public void SendMsg(String esReceiver, String esTitle, String esContent, String openType, String messageUrl) { - IHiworkMsgService hiworkMsgService = SpringContextUtils.getBean(IHiworkMsgService.class); - hiworkMsgService.sendDingDingMsg(Arrays.asList(esReceiver.split(",")), esTitle, esContent, messageUrl); - } - -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/handle/SystemSendMsgHandle.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/handle/SystemSendMsgHandle.java deleted file mode 100644 index 6671e307..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/handle/SystemSendMsgHandle.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.jero.modules.docking.hiwork.handle; - -import com.jero.common.util.SpringContextUtils; -import com.jero.modules.docking.hiwork.service.IHiworkMsgService; -import com.jero.modules.message.handle.ISendMsgHandle; -import lombok.extern.slf4j.Slf4j; - -import java.util.Arrays; - -@Slf4j -public class SystemSendMsgHandle implements ISendMsgHandle { - - @Override - public void SendMsg(String esReceiver, String esTitle, String esContent, String openType, String openPage) { - IHiworkMsgService hiworkMsgService = SpringContextUtils.getBean(IHiworkMsgService.class); - // TODO 先写死 01 消息类型(暂未确定) - String messageType = "01"; - hiworkMsgService.sendSystemMsg(Arrays.asList(esReceiver.split(",")), messageType, esTitle, esContent, openPage); - } - -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/IHiworkMsgService.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/IHiworkMsgService.java deleted file mode 100644 index 990b7ffd..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/IHiworkMsgService.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.jero.modules.docking.hiwork.service; - -import java.util.List; - -/** - * @Author: liao - * @Date: 2023/10/16 15:18 - * @Description: 统一消息集成 - */ -public interface IHiworkMsgService { - - /** - * @Author: liao - * @Date: 2023/10/16 15:32 - * @Description: 发送钉钉消息 - * senderIdList:发送人员id集合 - * title:消息标题 - * content:文本内容 - **/ - void sendDingDingMsg(List senderIdList, String title, String content, String messageUrl); - - /** - * @Author: liao - * @Date: 2023/10/16 16:11 - * @Description: 发送系统消息 - * senderId:发送人员id - * receiverIdList:消息接收人id集合 - * messageType:消息类型 字典 - * title:消息标题 - * content:消息内容 - **/ - void sendSystemMsg(List receiverIdList, String messageType, String title, String content, String messageUrl); -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/IHiworkTodoService.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/IHiworkTodoService.java deleted file mode 100644 index f1d144a7..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/IHiworkTodoService.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.jero.modules.docking.hiwork.service; - - -import com.jero.common.api.dto.message.HiworkTodoAdd; - -import java.util.List; - -/** - * @Author: liao - * @Date: 2023/10/13 14:23 - * @Description: 待办 - */ -public interface IHiworkTodoService { - - /** - * @Author: liao - * @Date: 2023/10/13 15:12 - * @Description: 统一待办集成 - **/ - void sendTodoTask(List hiworkTodoAddList); - -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/impl/HiworkMsgServiceImpl.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/impl/HiworkMsgServiceImpl.java deleted file mode 100644 index 6c946161..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/impl/HiworkMsgServiceImpl.java +++ /dev/null @@ -1,152 +0,0 @@ -package com.jero.modules.docking.hiwork.service.impl; - -import cn.hutool.core.annotation.Link; -import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; -import com.jero.common.exception.JeroBootException; -import com.jero.common.system.vo.LoginUser; -import com.jero.modules.docking.hiwork.entity.HiworkDingDingMsg; -import com.jero.modules.docking.hiwork.entity.HiworkSystemMsg; -import com.jero.modules.docking.hiwork.service.IHiworkMsgService; -import com.jero.modules.docking.hiwork.util.HiworkPostUtil; -import com.jero.common.api.vo.ResultCommon; -import com.jero.modules.system.entity.SysUser; -import com.jero.modules.system.service.ISysUserService; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang3.StringUtils; -import org.apache.shiro.SecurityUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -/** - * @Author: liao - * @Date: 2023/10/16 15:18 - * @Description: 统一消息集成 - */ -@Service -@Slf4j -public class HiworkMsgServiceImpl implements IHiworkMsgService { - - @Autowired - private HiworkPostUtil hiworkPostUtil; - @Autowired - private ISysUserService sysUserService; - - private final static String TEXT = "text"; // 消息类型-文本 - private final static String LINK = "link"; // 消息类型-文本 - private final static String MSG_TYPE = "msgtype"; // 消息类型 - private final static String CONTENT = "content"; // 消息内容 - private final static String MESSAGE_URL = "messageUrl"; // 消息内容 - - /** - * @Author: liao - * @Date: 2023/10/16 15:32 - * @Description: 发送钉钉消息 - * senderIdList:发送人员id集合 - * content:文本内容 - **/ - @Override - public void sendDingDingMsg(List senderIdList, String title, String content, String messageUrl) { - HiworkDingDingMsg hiworkDingDingMsg = new HiworkDingDingMsg(); - // 异步系统标识 - hiworkDingDingMsg.setSysCode(HiworkPostUtil.getSysCode()); - //服务号消息 - hiworkDingDingMsg.setNoticeServiceCode(HiworkPostUtil.getServiceCode()); - //消息推送类型 - hiworkDingDingMsg.setNoticePushType(HiworkPostUtil.Ding); - - if (CollectionUtils.isEmpty(senderIdList)) { - throw new JeroBootException(ResultCommon.EMPTY_COMMON, "senderIdList"); - } - List senderUserList = sysUserService.listByIds(senderIdList); - List usernameList = senderUserList.stream().map(SysUser::getUsername).collect(Collectors.toList()); - // 发送人员id(工号以英文逗号分隔) - hiworkDingDingMsg.setUseridList(StringUtils.join(usernameList, ",")); - // 标题 - hiworkDingDingMsg.setTitle(title); - - // 消息体 - JSONObject msgJsonObject = new JSONObject(); - msgJsonObject.put(MSG_TYPE, TEXT); - JSONObject textJsonObject = new JSONObject(); - textJsonObject.put(CONTENT, content); - msgJsonObject.put(TEXT, textJsonObject); - hiworkDingDingMsg.setMsg(msgJsonObject); - - log.info("发送Hiwork钉钉消息: {}", JSONObject.toJSONString(hiworkDingDingMsg)); - - hiworkPostUtil.postDingDingMsg(hiworkDingDingMsg); - } - - /** - * @Author: liao - * @Date: 2023/10/16 16:12 - * @Description: 发送系统消息 - * senderId:发送人员id - * receiverIdList:消息接收人id集合 - * messageType:消息类型 字典 - * title:消息标题 - * content:消息内容 - **/ - @Override - public void sendSystemMsg(List receiverIdList, String messageType, String title, String content, String messageUrl) { - HiworkSystemMsg hiworkSystemMsg = new HiworkSystemMsg(); - - // 异步系统标识 - hiworkSystemMsg.setSysCode(HiworkPostUtil.getSysCode()); - //消息推送类型 - hiworkSystemMsg.setNoticePushType(HiworkPostUtil.Message); - - LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); - // 发送人员编号 - hiworkSystemMsg.setSendCode(loginUser.getUsername()); - // 发送人员姓名 - hiworkSystemMsg.setSendName(loginUser.getRealname()); - // 消息标题 - hiworkSystemMsg.setTitle(title); - // 消息类型 - hiworkSystemMsg.setMessageType(messageType); - - if (CollectionUtils.isEmpty(receiverIdList)) { - throw new JeroBootException(ResultCommon.EMPTY_COMMON, "receiverIdList"); - } - List receiverUserList = sysUserService.listByIds(receiverIdList); - JSONArray jsonArray = new JSONArray(); - receiverUserList.forEach(receiverUser -> { - Map receiverMap = new HashMap<>(); - // 人员编号 - receiverMap.put("employeeNo", receiverUser.getUsername()); - // 人员名称 - receiverMap.put("userName", receiverUser.getRealname()); - jsonArray.add(receiverMap); - }); - // 消息接收人 集合 - hiworkSystemMsg.setReceiverList(jsonArray); - - // 消息体 - JSONObject msgJsonObject = new JSONObject(); - msgJsonObject.put(MSG_TYPE, TEXT); - - JSONObject textJsonObject = new JSONObject(); - textJsonObject.put(CONTENT, content); - - JSONObject linkJsonObject = new JSONObject(); - linkJsonObject.put(MESSAGE_URL, messageUrl); - - msgJsonObject.put(TEXT, textJsonObject); - msgJsonObject.put(LINK, linkJsonObject); - - hiworkSystemMsg.setMsg(msgJsonObject); - - log.info("发送Hiwork系统消息: {}", JSONObject.toJSONString(hiworkSystemMsg)); - - hiworkPostUtil.postSystemMsg(hiworkSystemMsg); - } -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/impl/HiworkService.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/impl/HiworkService.java deleted file mode 100644 index b07df9e3..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/impl/HiworkService.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.jero.modules.docking.hiwork.service.impl; - -import cn.hutool.http.HttpRequest; -import com.alibaba.fastjson.JSONObject; -import com.jero.common.api.vo.Result; -import com.jero.modules.docking.hiwork.entity.HiworkUserInfo; -import com.jero.modules.system.service.ILoginService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Service; - -import javax.annotation.Resource; - -/** - * @author liJiaRao - * @date 2024-03-01 14:02 - */ -@Slf4j -@Service -public class HiworkService { - @Resource - private ILoginService loginService; - - @Value("${hiwork.appkey}") - private String appkey; - @Value("${hiwork.appsecret}") - private String appsecret; - - public Result login(JSONObject jsonObject) { - //根据appkey和appsecret获取accessToken - String url1 = "https://oapi.dingtalk.com/gettoken?appkey=" + appkey + "&appsecret=" + appsecret; - log.info("url:"+url1); - String body = HttpRequest.get(url1) - .execute().body(); - JSONObject responseJson = JSONObject.parseObject(body); - log.info("responseJson:"+responseJson.toJSONString()); - String accessToken = responseJson.getString("access_token"); - //根据accessToken和前端传过来的jsonObject获得用户信息 - String url2 = "https://oapi.dingtalk.com/topapi/v2/user/getuserinfo?access_token=" + accessToken; - log.info("url:"+url2); - String body1 = HttpRequest.post(url2) - //jsonObject中有code - .body(jsonObject.toJSONString()) - .execute().body(); - HiworkUserInfo hiworkUserInfo = JSONObject.parseObject(body1, HiworkUserInfo.class); - log.info("response:"+hiworkUserInfo.toString()); - String userid = hiworkUserInfo.getResult().getUserid(); - log.info("userid:"+userid); - return loginService.loginByUserName(userid); - } -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/impl/HiworkTodoServiceImpl.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/impl/HiworkTodoServiceImpl.java deleted file mode 100644 index 6afe84e6..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/impl/HiworkTodoServiceImpl.java +++ /dev/null @@ -1,275 +0,0 @@ -package com.jero.modules.docking.hiwork.service.impl; - -import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.jero.common.api.PushWorkflowIntegrationAPI; -import com.jero.common.api.dto.message.HiworkTodoAdd; -import com.jero.common.api.vo.ResultCommon; -import com.jero.common.constant.enums.YesOrNoEnum; -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.entity.ProcessNode; -import com.jero.modules.activiti.enums.ProcessTypeEnum; -import com.jero.modules.activiti.service.ProcessAllService; -import com.jero.modules.activiti.service.ProcessApprovalRecordService; -import com.jero.modules.activiti.service.ProcessNodeService; -import com.jero.modules.docking.hiwork.entity.HiworkTodo; -import com.jero.modules.docking.hiwork.util.HiworkPostUtil; -import com.jero.modules.system.entity.SysUser; -import com.jero.modules.system.service.ISysUserService; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.shiro.SecurityUtils; -import org.jetbrains.annotations.NotNull; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Service; -import org.springframework.web.client.RestTemplate; - -import javax.annotation.Resource; -import java.time.Instant; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Objects; - -/** - * @Author: liao - * @Date: 2023/10/13 14:23 - * @Description: 待办 - */ -@Slf4j -@Service -public class HiworkTodoServiceImpl implements PushWorkflowIntegrationAPI { - - @Resource - private ISysUserService sysUserService; - @Resource - private ProcessApprovalRecordService processApprovalRecordService; - @Resource - private HiworkPostUtil hiworkPostUtil; - @Resource - private ProcessNodeService processNodeService; - @Resource - private ProcessAllService processAllService; - @Resource - private RestTemplate restTemplate; - - @Value("${hiwork.ip}") - private String ip; - @Value("${hiwork.todoUrl}") - private String todoUrl; - @Value("${hiwork.isWorkflow}") - private boolean isWorkflow; - @Value("${hiwork.sysCode}") - private String hiworkSysCode; - @Value("${hiwork.url}") - private String hiworkUrl; - @Value("${hiwork.fontUrl}") - private String hiworkFontUrl; - @Value("${hiwork.fontAppUrl}") - private String hiworkFontAppUrl; - - - private static final String PROCESS_TYPE = "srms"; - private static final String TODO_TYPE_2 = "2"; - private static final String TODO_TYPE_3 = "3"; - private static final String TODO_TYPE_6 = "6"; - - /** - * @Author: liao - * @Date: 2023/10/13 15:12 - * @Description: 统一待办集成 - **/ - @Override - public void sendTodoTask(List hiworkTodoAddList) { - if(!isWorkflow){ - return; - } - - if (CollectionUtils.isEmpty(hiworkTodoAddList)) { - throw new JeroBootException(ResultCommon.EMPTY_COMMON, "hiworkTodoAddList"); - } - try { - List hiworkTodoList = getHiworkTodos(hiworkTodoAddList); - log.info("统一待办推送入参" + JSON.toJSONString(hiworkTodoList)); - log.info("统一待办推送url" + ip + todoUrl); - // 远程调用 - JSONObject json = restTemplate.postForObject(ip + todoUrl,hiworkTodoList, JSONObject.class); - if(!Objects.isNull(json) && json.containsKey("success") && Objects.equals("true",json.getString("success"))){ - log.info("统一待办推送成功"); - }else{ - log.info("统一待办推送失败{}",json); - } - }catch (Exception e){ - log.error("统一待办推送异常",e); - } - } - - @Override - public void sendActivityComplete(List hiworkTodoAddList) { - if(!isWorkflow){ - return; - } - try { - for (HiworkTodoAdd hiworkTodoAdd : hiworkTodoAddList) { - hiworkTodoAdd.setType(TODO_TYPE_3); - } - List hiworkTodoList = getHiworkTodos(hiworkTodoAddList); - log.info("统一待办推送入参" + JSON.toJSONString(hiworkTodoList)); - log.info("统一待办推送url" + ip + todoUrl); - // 远程调用 - JSONObject json = restTemplate.postForObject(ip + todoUrl,hiworkTodoList, JSONObject.class); - if(!Objects.isNull(json) && json.containsKey("success") && Objects.equals("true",json.getString("success"))){ - log.info("统一待办推送成功"); - }else{ - log.info("统一待办推送失败{}",json); - } - }catch (Exception e){ - log.error("统一待办推送异常",e); - } - } - - @Override - public void sendDeleteTask(List hiworkTodoAddList) { - if(!isWorkflow){ - return; - } - try { - for (HiworkTodoAdd hiworkTodoAdd : hiworkTodoAddList) { - hiworkTodoAdd.setType(TODO_TYPE_6); - } - List hiworkTodoList = getHiworkTodos(hiworkTodoAddList); - log.info("统一待办删除推送入参" + JSON.toJSONString(hiworkTodoList)); - log.info("统一待办推送url" + ip + todoUrl); - // 远程调用 - JSONObject json = restTemplate.postForObject(ip + todoUrl,hiworkTodoList, JSONObject.class); - if(!Objects.isNull(json) && json.containsKey("success") && Objects.equals("true",json.getString("success"))){ - log.info("统一待办删除推送成功"); - }else{ - log.info("统一待办删除推送失败{}",json); - } - }catch (Exception e){ - log.error("统一待办删除推送异常",e); - } - } - - @NotNull - private List getHiworkTodos(List hiworkTodoAddList) { - List hiworkTodoList = new ArrayList<>(); - for (HiworkTodoAdd hiworkTodoAdd : hiworkTodoAddList) { - String recordId = hiworkTodoAdd.getRecordId(); - String processDefinitionId = hiworkTodoAdd.getProcessDefinitionId(); - String type = hiworkTodoAdd.getType(); - ProcessApprovalRecord processApprovalRecord = processApprovalRecordService.getById(recordId); - if(Objects.isNull(processApprovalRecord)){ - continue; - } - HiworkTodo hiworkTodo = new HiworkTodo(); - hiworkTodo.setSysCode(hiworkSysCode); - - String date = DateUtil.formatDateTime(new Date()); - - hiworkTodo.setFlowid(processApprovalRecord.getProcessInstanceId()); - hiworkTodo.setProcessId(processApprovalRecord.getProcessInstanceId()); - hiworkTodo.setProcessType(PROCESS_TYPE); - hiworkTodo.setTaskId(processApprovalRecord.getTaskId()); - hiworkTodo.setTaskName(processApprovalRecord.getTaskName()); - - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(ProcessNode::getProcessDefinitionId,processDefinitionId); - wrapper.eq(ProcessNode::getNodeName,processApprovalRecord.getTaskName()); - wrapper.eq(ProcessNode::getIsView, YesOrNoEnum.YES.getValue()); - ProcessNode processNode = processNodeService.getOne(wrapper,false); - if(!Objects.isNull(processNode)){ - if(processNode.getNodeName().contains("会签")){ - - } - hiworkTodo.setNodeBusiCode(processNode.getXmlNodeId()); - // 是否显示(0否,1是) - hiworkTodo.setIsShow(String.valueOf(processNode.getIsView())); - } - String userId; - if (hiworkTodoAdd.getToUserId() == null){ - userId = processApprovalRecord.getUserId(); - }else { - userId = hiworkTodoAdd.getToUserId(); - } - SysUser sysUser = sysUserService.getById(userId); - - String noticeTitle = processApprovalRecord.getTaskName() + "(" + sysUser.getRealname() + " " + date + ")"; - LambdaQueryWrapper queryProcessAll = new LambdaQueryWrapper<>(); - queryProcessAll.eq(ProcessAll::getProcessInstanceId,processApprovalRecord.getProcessInstanceId()); - ProcessAll processAll = processAllService.getOne(queryProcessAll); - if(!Objects.isNull(processAll)){ - String processName = ProcessTypeEnum.getNameByValue(processAll.getPrcType()); - noticeTitle = processName + "(" + sysUser.getRealname() + " " + date + ")"; - hiworkTodo.setProcessName(processName); - - SysUser createUser = sysUserService.getById(processAll.getCreateUserId()); - if(!Objects.isNull(createUser)){ - hiworkTodo.setCreateUserCode(createUser.getUsername()); - hiworkTodo.setCreateUserName(createUser.getRealname()); - } - if(!Objects.isNull(processAll.getDueTime())){ - hiworkTodo.setDueTime(processAll.getDueTime().getTime()); - } - String projectId = ""; - if (StrUtil.isNotBlank(processAll.getProjectId())){ - projectId = processAll.getProjectId(); - } - hiworkTodo.setBid(projectId); - String url = hiworkFontUrl - //.replaceAll("&","%26") - //.replaceAll("\\?","%3F") - .replace("{projectId}",projectId) - .replace("{taskName}",processApprovalRecord.getTaskName()) - .replace("{taskId}",processApprovalRecord.getTaskId()) - .replace("{processInstanceId}",processApprovalRecord.getProcessInstanceId()) - .replace("{nodeId}",processApprovalRecord.getNodeId()); - // 跳转链接 - String businessLink = Objects.requireNonNull(ProcessTypeEnum.getFontReturnUrlPc(processAll.getPrcType())) + url; - hiworkTodo.setBusinessLink(businessLink); - // APP跳转链接 - String appUrl = hiworkFontAppUrl - //.replaceAll("&","%26") - //.replaceAll("\\?","%3F") - .replace("{projectId}",projectId) - .replace("{taskName}",processApprovalRecord.getTaskName()) - .replace("{taskId}",processApprovalRecord.getTaskId()) - .replace("{processInstanceId}",processApprovalRecord.getProcessInstanceId()) - .replace("{nodeId}",processApprovalRecord.getNodeId()); - String appBusinessLink = appUrl.replace("{url}", Objects.requireNonNull(ProcessTypeEnum.getFontReturnUrlPc(processAll.getPrcType()))); - hiworkTodo.setAppBusinessLink(appBusinessLink); - } - hiworkTodo.setNoticeTitle(noticeTitle); - hiworkTodo.setUserId(userId); - hiworkTodo.setUserCode(sysUser.getUsername()); - hiworkTodo.setUserName(sysUser.getRealname()); - hiworkTodo.setReceiveTime(Instant.now()); - //2已完成时进入下一节点 - Integer finishFlag = processApprovalRecord.getFinishFlag(); - if (finishFlag.equals(2)){ - hiworkTodo.setMultiInstance(0); - }else { - hiworkTodo.setMultiInstance(1); - } - if (TODO_TYPE_3.equals(type)){ - hiworkTodo.setIsTodo(TODO_TYPE_3); - }else if (TODO_TYPE_6.equals(type)){ - hiworkTodo.setIsTodo(TODO_TYPE_6); - }else if (TODO_TYPE_2.equals(type)){ - hiworkTodo.setIsTodo(TODO_TYPE_2); - }else { - hiworkTodo.setIsTodo(String.valueOf(finishFlag)); - } - hiworkTodoList.add(hiworkTodo); - } - return hiworkTodoList; - } - -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/impl/SendMessageServiceImpl.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/impl/SendMessageServiceImpl.java deleted file mode 100644 index dbaa563d..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/impl/SendMessageServiceImpl.java +++ /dev/null @@ -1,127 +0,0 @@ -package com.jero.modules.docking.hiwork.service.impl; - -import cn.hutool.core.util.StrUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.jero.common.api.dto.message.SendMessageDTO; -import com.jero.common.api.vo.SendMessageAPI; -import com.jero.common.exception.JeroBootException; -import com.jero.modules.docking.hiwork.handle.DingDingSendMsgHandle; -import com.jero.modules.docking.hiwork.handle.SystemSendMsgHandle; -import com.jero.modules.message.entity.SysMessageTemplate; -import com.jero.modules.message.handle.ISendMsgHandle; -import com.jero.modules.message.handle.impl.SmsSendMsgHandle; -import com.jero.modules.message.service.ISysMessageTemplateService; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.lang.StringUtils; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Service; - -import javax.annotation.Resource; -import java.io.UnsupportedEncodingException; -import java.net.URLEncoder; -import java.nio.charset.CharsetEncoder; -import java.nio.charset.StandardCharsets; -import java.util.Arrays; -import java.util.List; -import java.util.Map; -import java.util.Objects; - -/** - * @Author: liao - * @Date: 2023/10/17 11:23 - * @Description: 发送消息 - */ -@Slf4j -@Service -public class SendMessageServiceImpl implements SendMessageAPI { - - @Resource - private ISysMessageTemplateService sysMessageTemplateService; - @Value("${hiwork.isSend}") - private Boolean isSend; - @Value("${hiwork.hiworkUrlPrefix}") - private String hiworkUrlPrefix; - - /** - * @Author: liao - * @Date: 2023/10/17 11:25 - * @Description: 根据模板发送消息 - **/ - @Override - public void sendMessage(SendMessageDTO sendMessageDTO) { - if (StringUtils.isEmpty(sendMessageDTO.getToUserId())) { - throw new JeroBootException("消息接收人id不能为空"); - } - if (StringUtils.isEmpty(sendMessageDTO.getTemplateCode())) { - throw new JeroBootException("消息模板编码不能为空!"); - } - - LambdaQueryWrapper query = new LambdaQueryWrapper<>(); - query.eq(SysMessageTemplate::getTemplateCode, sendMessageDTO.getTemplateCode()); - List sysSmsTemplates = sysMessageTemplateService.list(query); - if (CollectionUtils.isEmpty(sysSmsTemplates)) { - throw new JeroBootException("消息模板不存在"); - } - SysMessageTemplate sysMessageTemplate = sysSmsTemplates.get(0); - - String openType = sysMessageTemplate.getOpenType(); - String openPage = sysMessageTemplate.getOpenPage(); - - try { - // 替换模板内容 - if (!Objects.isNull(sendMessageDTO.getMap())) { - Map map = sendMessageDTO.getMap(); - map.forEach((k, v) -> sysMessageTemplate.setTemplateContent( - sysMessageTemplate.getTemplateContent().replace("${" + k + "}", v))); - if (null != map.get("openType")) { - openType = map.get("openType"); - } - if (null != map.get("openPage")) { - openPage = map.get("openPage"); - } - } - - List typeList = Arrays.asList(sysMessageTemplate.getTemplateType().split(",")); - if (StrUtil.isNotBlank(openPage)) { - if (openPage.contains("/workCenter/processCenter/processCenter")) { - if (openPage.contains("?")) { - openPage = openPage + "&activeTab=TodoList"; - } else { - openPage = openPage + "?activeTab=TodoList"; - } - } - } - String finalOpenType = openType; - String finalOpenPage = openPage; - typeList.forEach(type -> { - log.info("消息标题:{},消息内容:{},消息类型:{}", sysMessageTemplate.getTemplateName(), sysMessageTemplate.getTemplateContent(), type); - ISendMsgHandle sendMsgHandle; - if ("5".equals(type)) { - // Hiwork钉钉消息 - sendMsgHandle = new DingDingSendMsgHandle(); - if (isSend) { - sendMsgHandle.SendMsg(sendMessageDTO.getToUserId(), sysMessageTemplate.getTemplateName(), sysMessageTemplate.getTemplateContent(), null, null); - } - } else if ("6".equals(type)) { - // Hiwork系统消息 - sendMsgHandle = new SystemSendMsgHandle(); - if (isSend) { - String messageUrl = hiworkUrlPrefix + finalOpenPage; - sendMsgHandle.SendMsg(sendMessageDTO.getToUserId(), sysMessageTemplate.getTemplateName(), sysMessageTemplate.getTemplateContent(), finalOpenType, messageUrl); - } - } else if ("4".equals(type)) { - // 普通系统消息 - sendMsgHandle = new SmsSendMsgHandle(); - if (isSend) { - sendMsgHandle.SendMsg(sendMessageDTO.getToUserId(), sysMessageTemplate.getTemplateName(), sysMessageTemplate.getTemplateContent(), finalOpenType, finalOpenPage); - } - } - }); - } catch (Exception e) { - log.error("发送消息异常", e); - throw new JeroBootException("发送消息异常"); - } - - } -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/util/HiworkPostUtil.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/util/HiworkPostUtil.java deleted file mode 100644 index c8514c34..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/util/HiworkPostUtil.java +++ /dev/null @@ -1,147 +0,0 @@ -package com.jero.modules.docking.hiwork.util; - -import cn.hutool.http.Header; -import cn.hutool.http.HttpResponse; -import cn.hutool.http.HttpUtil; -import com.alibaba.fastjson.JSONObject; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.jero.common.exception.JeroBootException; -import com.jero.modules.docking.hiwork.entity.HiworkResult; -import com.jero.modules.docking.hiwork.entity.HiworkTodo; -import com.jero.modules.docking.hiwork.entity.HiworkDingDingMsg; -import com.jero.modules.docking.hiwork.entity.HiworkSystemMsg; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.http.HttpEntity; -import org.springframework.http.HttpHeaders; -import org.springframework.http.MediaType; -import org.springframework.http.ResponseEntity; -import org.springframework.stereotype.Component; -import org.springframework.web.client.RestTemplate; - -import java.util.List; - -import static net.sf.jsqlparser.parser.feature.Feature.execute; - -/** - * @Author: liao - * @Date: 2023/10/13 16:55 - * @Description: Hiwork集成 - */ -@Slf4j -@Component -public class HiworkPostUtil { - @Autowired - private RestTemplate restTemplate; - @Value("${hiwork.ip}") - private String ip; - @Value("${hiwork.todoUrl}") - private String todoUrl; - @Value("${hiwork.messageUrl}") - private String messageUrl; - - // 异构系统标识 - private static String sysCode; - - @Value("${hiwork.sysCode}") - public void setSysCode(String sysCode) { - HiworkPostUtil.sysCode = sysCode; - } - - public static String getSysCode() { - return sysCode; - } - // 异构系统标识 - private static String serviceCode; - - @Value("${hiwork.serviceCode}") - public void setServiceCode(String serviceCode) { - HiworkPostUtil.serviceCode = serviceCode; - } - - public static String getServiceCode() { - return serviceCode; - } - public static String Ding = "ding"; - public static String Message = "message"; - - /** - * @Author: liao - * @Date: 2023/10/13 17:45 - * @Description: 远程调用Hiwork - **/ - private void postHiwork(String jsonString, String url) { - log.info("远程调用Hiwork,url: {}, body: {}",url,jsonString); - // 设置请求头 - HttpHeaders headers = new HttpHeaders(); - headers.setContentType(MediaType.APPLICATION_JSON); - - HttpEntity requestEntity = new HttpEntity<>(jsonString, headers); - - // 发送 POST 请求并获取响应 - HttpResponse response = HttpUtil.createPost(url) - .header(Header.CONTENT_TYPE, "application/json") - .body(jsonString) - .execute(); - // 处理响应数据 - if (response.isOk()) { - String body = response.body(); - HiworkResult hiworkResult = JSONObject.parseObject(body, HiworkResult.class); - if (!hiworkResult.getSuccess()) { - throw new JeroBootException("Hiwork:" + hiworkResult.getMsg()); - } - } else { - throw new JeroBootException("Hiwork: request failed with status code: " + response.getStatus()); - } - } - - /** - * @Author: liao - * @Date: 2023/10/13 17:45 - * @Description: 统一待办集成远程调用 - **/ - public void postTodo(List hiworkTodoList) { - ObjectMapper objectMapper = new ObjectMapper(); - String jsonString; - try { - jsonString = objectMapper.writeValueAsString(hiworkTodoList); - } catch (JsonProcessingException e) { - throw new JeroBootException("JSON string format conversion error"); - } - postHiwork(jsonString, ip + todoUrl); - } - - /** - * @Author: liao - * @Date: 2023/10/13 17:45 - * @Description: 统一消息集成远程调用-钉钉消息 - **/ - public void postDingDingMsg(HiworkDingDingMsg hiworkDingDingMsg) { - ObjectMapper objectMapper = new ObjectMapper(); - String jsonString; - try { - jsonString = objectMapper.writeValueAsString(hiworkDingDingMsg); - } catch (JsonProcessingException e) { - throw new JeroBootException("JSON string format conversion error"); - } - postHiwork(jsonString, ip + messageUrl); - } - - /** - * @Author: liao - * @Date: 2023/10/13 17:45 - * @Description: 统一消息集成远程调用-系统消息 - **/ - public void postSystemMsg(HiworkSystemMsg hiworkSystemMsg) { - ObjectMapper objectMapper = new ObjectMapper(); - String jsonString; - try { - jsonString = objectMapper.writeValueAsString(hiworkSystemMsg); - } catch (JsonProcessingException e) { - throw new JeroBootException("JSON string format conversion error"); - } - postHiwork(jsonString, ip + messageUrl); - } -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/annotation/IamProperty.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/annotation/IamProperty.java deleted file mode 100644 index 66d17bc9..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/annotation/IamProperty.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.jero.modules.docking.iam.annotation; - -import java.lang.annotation.*; - -@Target({ElementType.FIELD}) -@Retention(RetentionPolicy.RUNTIME) -@Documented -@Inherited -public @interface IamProperty { - -// /** -// * 字段属性名 -// * @return -// */ -// String name() default ""; -// -// /** -// * -// * @return -// */ -// String type() default ""; - - /** - * 定义对象的属性字段在创建时是否为必填字段 - * @return - */ - boolean required() default true; - - /** - * 定义对象的属性字段是否为多值 - * @return - */ - boolean multivalued() default false; - -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/client/TestClient.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/client/TestClient.java deleted file mode 100644 index c6676aa9..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/client/TestClient.java +++ /dev/null @@ -1,322 +0,0 @@ -package com.jero.modules.docking.iam.client; - -import cn.hutool.http.HttpUtil; -import com.bamboocloud.codec.BamboocloudFacade; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.jero.common.util.DateUtils; -import com.jero.common.util.UUIDGenerator; -import com.jero.common.util.UUIDUtils; -import com.jero.modules.docking.iam.dto.IamCommonAcceptDto; -import com.jero.modules.docking.iam.dto.IamOrgAcceptDto; -import com.jero.modules.docking.iam.dto.IamUserAcceptDto; -import com.jero.modules.docking.iam.po.encrypt.AcceptEncryptPo; -import com.jero.modules.docking.iam.po.MessageHeader; -import com.jero.modules.docking.iam.po.encrypt.MessageEncryptTabels; -import com.jero.modules.docking.iam.po.encrypt.MessageEncryptTabelsHeader; -import com.jero.modules.docking.iam.po.encrypt.SendPoEncryptPo; -import com.jero.modules.docking.utils.BamboocloudUtils; -import com.jero.modules.docking.utils.DockingConstant; - -import java.util.Date; - -/** - * 测试接口是否正确的客户端,mock IAM发送请求 - */ -public class TestClient { - - public static void main(String[] args) throws JsonProcessingException { - TestClient testClient = new TestClient(); -// testClient.sendSchemaService(); // 字段映射接口测试 -// for (int i = 0; i < 1; i++) { -// System.out.println(i); -// testClient.sendUserCreate(i); -// } - // 创建用户接口测试 -// testClient.sendUserUpdate(); // 更新用户接口测试 -// testClient.sendOrgCreate(); // 组织创建接口测试 -// testClient.sendQueryAllUserIdsService(); // 查询所有用户ID接口测试 -// testClient.sendQueryAllOrgIdsService(); // 查询所有组织ID接口测试 -// testClient.sendQueryOrgByIdService(); // 查询指定id的组织数据测试 -// testClient.sendQueryUserByIdService(); // 查询指定id的用户数据测试 - testClient.decryptSting("8rAKWPUwkEZ3yYLy/1TuGGkIGCYtc+MD56pShLi97OmMttoFooo5GXZ/lY4NrQ5DiWmVUX23zqDwyQqufXLZNDU+KuJO/9UonpqUlZxM91w="); - } - - private void decryptSting(String encryptString) { - String decrypt = BamboocloudUtils.getPlaintext(encryptString, DockingConstant.IAM_ENCRYPT_SECRET, DockingConstant.IAM_ENCRYPT_TYPE); - System.out.println("解密后数据:" + decrypt); - } - - // 对数据解密 - private void decryptData(String encryptData) throws JsonProcessingException { - ObjectMapper objectMapper = new ObjectMapper(); - SendPoEncryptPo sendPoEncryptPo = objectMapper.readValue(encryptData, SendPoEncryptPo.class); - String decrypt = BamboocloudUtils.getPlaintext(sendPoEncryptPo.getReturns().getData(), DockingConstant.IAM_ENCRYPT_SECRET, DockingConstant.IAM_ENCRYPT_TYPE); - - System.out.println("解密后数据:" + decrypt); - } - - /** - * 封装统一发送的PO层 - * @param encryptData - * @return - */ - private AcceptEncryptPo handlerPoPackage(String encryptData) { - MessageHeader messageHeader = new MessageHeader(); - messageHeader.setInterfaceID("SRMSUSERCREATE"); - messageHeader.setUUID(UUIDGenerator.generate()); - messageHeader.setMessageId(UUIDGenerator.generate()); - messageHeader.setSender(DockingConstant.IAM_SYSTEM_NAME); - messageHeader.setReceiver(DockingConstant.SYSTEM_NAME); - - Date curDate = new Date(); - messageHeader.setSendDate(DateUtils.formatDate(curDate, "YYYYMMDD")); - messageHeader.setSendTime(DateUtils.formatDate(curDate, "HHmmss")); - - MessageEncryptTabelsHeader messageEncryptTabelsHeader = new MessageEncryptTabelsHeader(); - messageEncryptTabelsHeader.setData(encryptData); - - MessageEncryptTabels messageEncryptTabels = new MessageEncryptTabels(); - messageEncryptTabels.setHeader(messageEncryptTabelsHeader); - - AcceptEncryptPo acceptEncryptPo = new AcceptEncryptPo(); - acceptEncryptPo.setMessageHeader(messageHeader); - acceptEncryptPo.setMessageEncryptTabels(messageEncryptTabels); - - return acceptEncryptPo; - } - - /** - * Schema映射获取 - */ - private void sendSchemaService() throws JsonProcessingException { - String url = "http://localhost:8184/laws-sinotruk/sync/iam/UserCreateService"; - - IamCommonAcceptDto iamCommonAcceptDto = new IamCommonAcceptDto(); - iamCommonAcceptDto.setBimRequestId(UUIDUtils.randomUUID20()); - iamCommonAcceptDto.setBimRemoteUser("srmsIam"); - iamCommonAcceptDto.setBimRemotePwd("srmsIam2023"); - - // 加密数据 - ObjectMapper objectMapper = new ObjectMapper(); - String sendData = objectMapper.writeValueAsString(iamCommonAcceptDto); - String encryptData = BamboocloudFacade.encrypt(sendData, DockingConstant.IAM_ENCRYPT_SECRET, DockingConstant.IAM_ENCRYPT_TYPE); - - AcceptEncryptPo sendPoDataEntity = handlerPoPackage(encryptData); - String sendPoDataJson = objectMapper.writeValueAsString(sendPoDataEntity); - - String response = HttpUtil.post(url, sendPoDataJson); - System.out.println("映射接口响应:" + response); - } - - /** - * 用户创建测试 - */ - private void sendUserCreate(int i) throws JsonProcessingException { - // 封装 IamUserAcceptDto 为用户数据层 - IamUserAcceptDto iamUserAcceptDto = new IamUserAcceptDto(); - iamUserAcceptDto.setSrmsCompanyCode("123"); - iamUserAcceptDto.setSrmsOrgCode("123/321"); - iamUserAcceptDto.setSrmsTypeId("001"); - iamUserAcceptDto.setSrmsUsername((108088 + i) +""); - iamUserAcceptDto.setSrmsRealname("测试" + i); - iamUserAcceptDto.setSrmsPassword("1qaz@WSX"); - iamUserAcceptDto.setSrmsSex("1"); // 男 - iamUserAcceptDto.setSrmsPost("主任"); - iamUserAcceptDto.setSrmsDutyLevelId("4"); // 主管级,srms不解析,直接存 - iamUserAcceptDto.setSrmsDirectLeadership("1706939999105900545"); // 直接上级,不清楚应该存什么,暂时存为id(fcc-test) - iamUserAcceptDto.setSrmsPostStatus("1"); // 在岗,srms不解析,直接存 - iamUserAcceptDto.setSrmsStatus("1"); // 1在册,0离职 - iamUserAcceptDto.setSrmsOfficePhone("022-87648762"); - iamUserAcceptDto.setSrmsPhone("13811112232"); - iamUserAcceptDto.setSrmsEmail("test@sinotruk.com"); - iamUserAcceptDto.setSrmsCreateTime("2023-10-15 10:35:20"); - - iamUserAcceptDto.setBimRequestId(UUIDUtils.randomUUID20()); - iamUserAcceptDto.setBimRemoteUser("srmsIam"); - iamUserAcceptDto.setBimRemotePwd("srmsIam2023"); - - // 加密数据 - ObjectMapper objectMapper = new ObjectMapper(); - String sendData = objectMapper.writeValueAsString(iamUserAcceptDto); - String encryptData = BamboocloudFacade.encrypt(sendData, DockingConstant.IAM_ENCRYPT_SECRET, DockingConstant.IAM_ENCRYPT_TYPE); - - // 封装 AcceptPoSystemPo 为PO层套壳 - AcceptEncryptPo sendPoDataEntity = handlerPoPackage(encryptData); - String sendPoDataJson = objectMapper.writeValueAsString(sendPoDataEntity); - - // 发送数据 - String url = "http://localhost:8184/laws-sinotruk/sync/iam/UserCreateService"; -// String url = "laws-test.sinotruk.com/laws-sinotruk/sync/iam/UserCreateService"; - String response = HttpUtil.post(url, sendPoDataJson); - System.out.println("用户创建接口响应:" + response); - } - - /** - * 用户更新测试 - */ - private void sendUserUpdate() throws JsonProcessingException { - // 封装 IamUserAcceptDto 为用户数据层 - IamUserAcceptDto iamUserAcceptDto = new IamUserAcceptDto(); - iamUserAcceptDto.setBimUid("1709786346053017601"); // 数据库中取到的ID - iamUserAcceptDto.setSrmsPost("科长"); - iamUserAcceptDto.setSrmsUpdateTime("2023-10-15 10:35:20"); // 测试不发送UpdateTime的情况 - - iamUserAcceptDto.setBimRequestId(UUIDUtils.randomUUID20()); - iamUserAcceptDto.setBimRemoteUser("srmsIam"); - iamUserAcceptDto.setBimRemotePwd("srmsIam2023"); - - // 加密数据 - ObjectMapper objectMapper = new ObjectMapper(); - String sendData = objectMapper.writeValueAsString(iamUserAcceptDto); - String encryptData = BamboocloudFacade.encrypt(sendData, DockingConstant.IAM_ENCRYPT_SECRET, DockingConstant.IAM_ENCRYPT_TYPE); - - // 封装 AcceptPoSystemPo 为PO层套壳 - AcceptEncryptPo sendPoDataEntity = handlerPoPackage(encryptData); - String sendPoDataJson = objectMapper.writeValueAsString(sendPoDataEntity); - - // 发送数据 - String url = "http://localhost:8184/laws-sinotruk/sync/iam/UserUpdateService"; - String response = HttpUtil.post(url, sendPoDataJson); - System.out.println("用户更新接口响应:" + response); - } - - /** - * 用户创建测试 - */ - private void sendOrgCreate() throws JsonProcessingException { - // 封装 IamUserAcceptDto 为用户数据层 - IamOrgAcceptDto iamOrgAcceptDto = new IamOrgAcceptDto(); - - iamOrgAcceptDto.setSrmsOrgCode("IA00102"); - iamOrgAcceptDto.setSrmsDepartName("测试IAM部门"); - iamOrgAcceptDto.setSrmsParentCode(""); - iamOrgAcceptDto.setSrmsCompany("测试公司"); - iamOrgAcceptDto.setSrmsStatus("1"); - iamOrgAcceptDto.setSrmsCreateTime("2023-10-12 10:35:20"); - iamOrgAcceptDto.setSrmsType("002"); - iamOrgAcceptDto.setSrmsOrgCategory("2"); - - iamOrgAcceptDto.setBimRequestId(UUIDUtils.randomUUID20()); - iamOrgAcceptDto.setBimRemoteUser("srmsIam"); - iamOrgAcceptDto.setBimRemotePwd("srmsIam2023"); - - // 加密数据 - ObjectMapper objectMapper = new ObjectMapper(); - String sendData = objectMapper.writeValueAsString(iamOrgAcceptDto); - String encryptData = BamboocloudFacade.encrypt(sendData, DockingConstant.IAM_ENCRYPT_SECRET, DockingConstant.IAM_ENCRYPT_TYPE); - - // 封装 AcceptPoSystemPo 为PO层套壳 - AcceptEncryptPo sendPoDataEntity = handlerPoPackage(encryptData); - String sendPoDataJson = objectMapper.writeValueAsString(sendPoDataEntity); - - // 发送数据 - String url = "http://localhost:8184/laws-sinotruk/sync/iam/OrgCreateService"; - String response = HttpUtil.post(url, sendPoDataJson); - System.out.println("组织创建接口响应:" + response); - } - - /** - * 获取全部用户id - */ - private void sendQueryAllUserIdsService() throws JsonProcessingException { - String url = "http://localhost:8184/laws-sinotruk/sync/iam/QueryAllUserIdsService"; - - IamCommonAcceptDto iamCommonAcceptDto = new IamCommonAcceptDto(); - iamCommonAcceptDto.setBimRequestId(UUIDUtils.randomUUID20()); - iamCommonAcceptDto.setBimRemoteUser("srmsIam"); - iamCommonAcceptDto.setBimRemotePwd("srmsIam2023"); - - // 加密数据 - ObjectMapper objectMapper = new ObjectMapper(); - String sendData = objectMapper.writeValueAsString(iamCommonAcceptDto); - String encryptData = BamboocloudFacade.encrypt(sendData, DockingConstant.IAM_ENCRYPT_SECRET, DockingConstant.IAM_ENCRYPT_TYPE); - - AcceptEncryptPo sendPoDataEntity = handlerPoPackage(encryptData); - String sendPoDataJson = objectMapper.writeValueAsString(sendPoDataEntity); - String response = HttpUtil.post(url, sendPoDataJson); - System.out.println("查询全部用户id接口响应:" + response); - - this.decryptData(response); - } - - /** - * 获取全部组织id - */ - private void sendQueryAllOrgIdsService() throws JsonProcessingException { - String url = "http://localhost:8184/laws-sinotruk/sync/iam/QueryAllOrgIdsService"; - - IamCommonAcceptDto iamCommonAcceptDto = new IamCommonAcceptDto(); - iamCommonAcceptDto.setBimRequestId(UUIDUtils.randomUUID20()); - iamCommonAcceptDto.setBimRemoteUser("srmsIam"); - iamCommonAcceptDto.setBimRemotePwd("srmsIam2023"); - - // 加密数据 - ObjectMapper objectMapper = new ObjectMapper(); - String sendData = objectMapper.writeValueAsString(iamCommonAcceptDto); - String encryptData = BamboocloudFacade.encrypt(sendData, DockingConstant.IAM_ENCRYPT_SECRET, DockingConstant.IAM_ENCRYPT_TYPE); - - AcceptEncryptPo sendPoDataEntity = handlerPoPackage(encryptData); - String sendPoDataJson = objectMapper.writeValueAsString(sendPoDataEntity); - - String response = HttpUtil.post(url, sendPoDataJson); - System.out.println("查询全部组织id接口响应:" + response); - - this.decryptData(response); - } - - /** - * 用户查询接口测试 - */ - private void sendQueryUserByIdService() throws JsonProcessingException { - // 封装 IamUserAcceptDto 为用户数据层 - IamUserAcceptDto iamUserAcceptDto = new IamUserAcceptDto(); - iamUserAcceptDto.setBimUid("1709786346053017601"); // 数据库中取到的ID - iamUserAcceptDto.setBimRemoteUser("srmsIam"); - iamUserAcceptDto.setBimRemotePwd("srmsIam2023"); - - // 加密数据 - ObjectMapper objectMapper = new ObjectMapper(); - String sendData = objectMapper.writeValueAsString(iamUserAcceptDto); - String encryptData = BamboocloudFacade.encrypt(sendData, DockingConstant.IAM_ENCRYPT_SECRET, DockingConstant.IAM_ENCRYPT_TYPE); - - // 封装 AcceptPoSystemPo 为PO层套壳 - AcceptEncryptPo sendPoDataEntity = handlerPoPackage(encryptData); - String sendPoDataJson = objectMapper.writeValueAsString(sendPoDataEntity); - - // 发送数据 - String url = "http://localhost:8184/laws-sinotruk/sync/iam/QueryUserByIdService"; - String response = HttpUtil.post(url, sendPoDataJson); - System.out.println("用户查询接口响应:" + response); - - this.decryptData(response); - } - - /** - * 组织查询接口测试 - */ - private void sendQueryOrgByIdService() throws JsonProcessingException { - // 封装 IamUserAcceptDto 为用户数据层 - IamOrgAcceptDto iamOrgAcceptDto = new IamOrgAcceptDto(); - iamOrgAcceptDto.setBimOrgId("IA00102"); // 数据库中取到的ID - iamOrgAcceptDto.setBimRemoteUser("srmsIam"); - iamOrgAcceptDto.setBimRemotePwd("srmsIam2023"); - - // 加密数据 - ObjectMapper objectMapper = new ObjectMapper(); - String sendData = objectMapper.writeValueAsString(iamOrgAcceptDto); - String encryptData = BamboocloudFacade.encrypt(sendData, DockingConstant.IAM_ENCRYPT_SECRET, DockingConstant.IAM_ENCRYPT_TYPE); - - // 封装 AcceptPoSystemPo 为PO层套壳 - AcceptEncryptPo sendPoDataEntity = handlerPoPackage(encryptData); - String sendPoDataJson = objectMapper.writeValueAsString(sendPoDataEntity); - - // 发送数据 - String url = "http://localhost:8184/laws-sinotruk/sync/iam/QueryOrgByIdService"; - String response = HttpUtil.post(url, sendPoDataJson); - System.out.println("组织查询接口响应:" + response); - - this.decryptData(response); - } - -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/controller/IamLoginController.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/controller/IamLoginController.java deleted file mode 100644 index 0953662b..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/controller/IamLoginController.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.jero.modules.docking.iam.controller; - -import com.alibaba.fastjson.JSONObject; -import com.jero.common.api.vo.Result; -import com.jero.modules.system.entity.Oauth; -import com.jero.modules.system.service.ILoginService; -import io.swagger.annotations.ApiOperation; -import lombok.extern.slf4j.Slf4j; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -/** - * @Author: yjz - * @Date: 2023/10/17/10:09 - * @Description: - */ -@RestController -@RequestMapping("/iam") -@Slf4j -public class IamLoginController { - private final ILoginService loginService; - - public IamLoginController(ILoginService loginService) { - this.loginService = loginService; - } - - @ApiOperation("单点登录") - @PostMapping("/loginByOauth2") - public Result loginByOauth2(@Validated @RequestBody Oauth oauth){ - return loginService.loginByOauth2(oauth); - } -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/controller/SyncIamController.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/controller/SyncIamController.java deleted file mode 100644 index 50c9c97f..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/controller/SyncIamController.java +++ /dev/null @@ -1,599 +0,0 @@ -package com.jero.modules.docking.iam.controller; - -import cn.hutool.core.text.CharSequenceUtil; -import com.alibaba.fastjson.JSON; -import com.aliyun.oss.ServiceException; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.jero.common.constant.CacheConstant; -import com.jero.modules.base.service.BaseCommonService; -import com.jero.modules.docking.iam.dto.IamCommonAcceptDto; -import com.jero.modules.docking.iam.dto.IamOrgAcceptDto; -import com.jero.modules.docking.iam.dto.IamUserAcceptDto; -import com.jero.modules.docking.iam.dto.bpmc.*; -import com.jero.modules.docking.iam.dto.response.*; -import com.jero.modules.docking.iam.exception.IamGlobalException; -import com.jero.modules.docking.iam.po.MessageHeader; -import com.jero.modules.docking.iam.po.decrypt.AcceptDecryptPo; -import com.jero.modules.docking.iam.po.encrypt.AcceptEncryptPo; -import com.jero.modules.docking.iam.po.encrypt.SendPoEncryptPo; -import com.jero.modules.docking.iam.service.SyncIamService; -import com.jero.modules.docking.utils.BamboocloudUtils; -import com.jero.modules.docking.utils.DockingConstant; -import com.jero.modules.docking.utils.SHA256Util; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.cache.annotation.CacheEvict; -import org.springframework.dao.DuplicateKeyException; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import javax.annotation.Resource; -import java.util.List; - -/** - * IAM同步的控制器,提供用户、组织、菜单和权限的同步 - */ -@RestController -@RequestMapping("/sync/iam") -@Slf4j -public class SyncIamController { - - @Value("${iam.bpmcAppkey}") - private String bpmcAppkey; - - @Resource - private SyncIamService syncIamService; - - public final String paramNotGetError = "参数传递错误,未收到参数"; - - @Resource - private BaseCommonService baseCommonService; - - @PostMapping({"/SchemaService"}) - public SendPoEncryptPo schemaService(@RequestBody AcceptEncryptPo iamCommon) throws JsonProcessingException { - if (iamCommon == null - || iamCommon.getMessageEncryptTabels() == null - || iamCommon.getMessageEncryptTabels().getHeader() == null - || iamCommon.getMessageEncryptTabels().getHeader().getData() == null){ - throw new IamGlobalException(null, this.paramNotGetError); - } - - // 对核心数据解密 - String bodyParam = iamCommon.getMessageEncryptTabels().getHeader().getData(); - String bodyParamDecrypt = BamboocloudUtils.getPlaintext(bodyParam, DockingConstant.IAM_ENCRYPT_SECRET, DockingConstant.IAM_ENCRYPT_TYPE); - - ObjectMapper objectMapper = new ObjectMapper(); - IamCommonAcceptDto commonAcceptDto = objectMapper.readValue(bodyParamDecrypt, IamCommonAcceptDto.class); - - // 校验身份认证,确保接口正确 必须调用! - this.syncIamService.validateUserAndPwd(commonAcceptDto); - - // 处理业务逻辑,封装字段 - IamSchemaResponse iamSchemaResponse = this.syncIamService.getSchemaInfo(commonAcceptDto); - - // 处理统一响应PO层,并加密业务字段 - MessageHeader acceptMessageHeader = iamCommon.getMessageHeader(); - SendPoEncryptPo sendPoEncryptPo = this.syncIamService.handlerGloablEncryptResponse(acceptMessageHeader, iamSchemaResponse); - - return sendPoEncryptPo; - } - - @PostMapping({"/UserCreateService"}) - public SendPoEncryptPo userCreateService(@RequestBody AcceptEncryptPo iamUserInfo) throws JsonProcessingException { - log.info("进入账号创建"); - IamUserAcceptDto userAcceptDto = null; - IamUserCreateResponse iamUserCreateResponse = new IamUserCreateResponse(); - SendPoEncryptPo sendPoEncryptPo = new SendPoEncryptPo(); - try { - if (iamUserInfo == null - || iamUserInfo.getMessageEncryptTabels() == null - || iamUserInfo.getMessageEncryptTabels().getHeader() == null - || iamUserInfo.getMessageEncryptTabels().getHeader().getData() == null){ - throw new IamGlobalException(null, "参数传递错误,未收到参数"); - } - - // 对核心数据解密 - String bodyParam = iamUserInfo.getMessageEncryptTabels().getHeader().getData(); - String bodyParamDecrypt = BamboocloudUtils.getPlaintext(bodyParam, DockingConstant.IAM_ENCRYPT_SECRET, DockingConstant.IAM_ENCRYPT_TYPE); - - ObjectMapper objectMapper = new ObjectMapper(); - userAcceptDto = objectMapper.readValue(bodyParamDecrypt, IamUserAcceptDto.class); - - // 校验身份认证,确保接口正确 必须调用! - this.syncIamService.validateUserAndPwd(userAcceptDto); - iamUserCreateResponse.setBimRequestId(userAcceptDto.getBimRequestId()); - // 处理业务逻辑,存储用户,返回用户id - iamUserCreateResponse = this.syncIamService.userCreateService(userAcceptDto); - } catch (ServiceException e) { - iamUserCreateResponse.setResultCode(DockingConstant.IAM_ERROR_RESULT_CODE); - String message = e.getErrorMessage(); - iamUserCreateResponse.setMessage(message); - log.error(iamUserCreateResponse.getMessage()); - }catch (Exception e){ - iamUserCreateResponse.setResultCode(DockingConstant.IAM_ERROR_RESULT_CODE); - iamUserCreateResponse.setMessage("操作失败" + e.getMessage()); - log.error(iamUserCreateResponse.getMessage()); - } - // 处理统一响应PO层,并加密业务字段 - MessageHeader acceptMessageHeader = iamUserInfo.getMessageHeader(); - sendPoEncryptPo = this.syncIamService.handlerGloablEncryptResponse(acceptMessageHeader, iamUserCreateResponse); - return sendPoEncryptPo; - } - - @PostMapping({"/UserUpdateService"}) - public SendPoEncryptPo userUpdateService(@RequestBody AcceptEncryptPo iamUserInfo) throws JsonProcessingException { - IamCommonResponseDto iamCommonResponseDto = new IamCommonResponseDto(); - try { - if (iamUserInfo == null - || iamUserInfo.getMessageEncryptTabels() == null - || iamUserInfo.getMessageEncryptTabels().getHeader() == null - || iamUserInfo.getMessageEncryptTabels().getHeader().getData() == null){ - throw new IamGlobalException(null, "参数传递错误,未收到参数"); - } - - // 对核心数据解密 - String bodyParam = iamUserInfo.getMessageEncryptTabels().getHeader().getData(); - String bodyParamDecrypt = BamboocloudUtils.getPlaintext(bodyParam, DockingConstant.IAM_ENCRYPT_SECRET, DockingConstant.IAM_ENCRYPT_TYPE); - - ObjectMapper objectMapper = new ObjectMapper(); - IamUserAcceptDto userAcceptDto = objectMapper.readValue(bodyParamDecrypt, IamUserAcceptDto.class); - - // 校验身份认证,确保接口正确 必须调用! - this.syncIamService.validateUserAndPwd(userAcceptDto); - - // 处理业务逻辑,存储用户,返回用户id - iamCommonResponseDto = this.syncIamService.userUpdateService(userAcceptDto); - iamCommonResponseDto.setBimRequestId(userAcceptDto.getBimRequestId()); - }catch (IamGlobalException e){ - iamCommonResponseDto.setResultCode(DockingConstant.IAM_ERROR_RESULT_CODE); - String message = e.getMessage(); - iamCommonResponseDto.setMessage(message); - log.error(iamCommonResponseDto.getMessage()); - }catch (Exception e){ - iamCommonResponseDto.setResultCode(DockingConstant.IAM_ERROR_RESULT_CODE); - iamCommonResponseDto.setMessage("操作失败" + e.getMessage()); - log.error(iamCommonResponseDto.getMessage()); - } - // 处理统一响应PO层,并加密业务字段 - MessageHeader acceptMessageHeader = iamUserInfo.getMessageHeader(); - SendPoEncryptPo sendPoEncryptPo = this.syncIamService.handlerGloablEncryptResponse(acceptMessageHeader, iamCommonResponseDto); - return sendPoEncryptPo; - } - - @PostMapping({"/UserDeleteService"}) - public SendPoEncryptPo userDeleteService(@RequestBody AcceptEncryptPo iamUserInfo) throws JsonProcessingException { - IamCommonResponseDto iamCommonResponseDto = new IamCommonResponseDto(); - try { - if (iamUserInfo == null - || iamUserInfo.getMessageEncryptTabels() == null - || iamUserInfo.getMessageEncryptTabels().getHeader() == null - || iamUserInfo.getMessageEncryptTabels().getHeader().getData() == null){ - throw new IamGlobalException(null, "参数传递错误,未收到参数"); - } - - // 对核心数据解密 - String bodyParam = iamUserInfo.getMessageEncryptTabels().getHeader().getData(); - String bodyParamDecrypt = BamboocloudUtils.getPlaintext(bodyParam, DockingConstant.IAM_ENCRYPT_SECRET, DockingConstant.IAM_ENCRYPT_TYPE); - - ObjectMapper objectMapper = new ObjectMapper(); - IamUserAcceptDto userAcceptDto = objectMapper.readValue(bodyParamDecrypt, IamUserAcceptDto.class); - - // 校验身份认证,确保接口正确 必须调用! - this.syncIamService.validateUserAndPwd(userAcceptDto); - - // 处理业务逻辑,存储用户,返回用户id - iamCommonResponseDto = this.syncIamService.userDeleteService(userAcceptDto); - iamCommonResponseDto.setBimRequestId(userAcceptDto.getBimRequestId()); - }catch (IamGlobalException e){ - iamCommonResponseDto.setResultCode(DockingConstant.IAM_ERROR_RESULT_CODE); - String message = e.getMessage(); - iamCommonResponseDto.setMessage(message); - log.error(iamCommonResponseDto.getMessage()); - }catch (Exception e){ - iamCommonResponseDto.setResultCode(DockingConstant.IAM_ERROR_RESULT_CODE); - iamCommonResponseDto.setMessage("操作失败" + e.getMessage()); - log.error(iamCommonResponseDto.getMessage()); - } - // 处理统一响应PO层,并加密业务字段 - MessageHeader acceptMessageHeader = iamUserInfo.getMessageHeader(); - SendPoEncryptPo sendPoEncryptPo = this.syncIamService.handlerGloablEncryptResponse(acceptMessageHeader, iamCommonResponseDto); - return sendPoEncryptPo; - } - - /** - * 组织创建和更新移除缓存 - * @param iamOrgInfo - * @return - * @throws JsonProcessingException - */ - @PostMapping({"/OrgCreateService"}) - @CacheEvict(value= {CacheConstant.SYS_DEPARTS_CACHE,CacheConstant.SYS_DEPART_IDS_CACHE}, allEntries=true) - public SendPoEncryptPo orgCreateService(@RequestBody AcceptEncryptPo iamOrgInfo) throws JsonProcessingException { - IamOrgAcceptDto orgAcceptDto = null; - try { - if (iamOrgInfo == null - || iamOrgInfo.getMessageEncryptTabels() == null - || iamOrgInfo.getMessageEncryptTabels().getHeader() == null - || iamOrgInfo.getMessageEncryptTabels().getHeader().getData() == null){ - throw new IamGlobalException(null, "参数传递错误,未收到参数"); - } - - // 对核心数据解密 - String bodyParam = iamOrgInfo.getMessageEncryptTabels().getHeader().getData(); - String bodyParamDecrypt = BamboocloudUtils.getPlaintext(bodyParam, DockingConstant.IAM_ENCRYPT_SECRET, DockingConstant.IAM_ENCRYPT_TYPE); - - ObjectMapper objectMapper = new ObjectMapper(); - orgAcceptDto = objectMapper.readValue(bodyParamDecrypt, IamOrgAcceptDto.class); - - // 校验身份认证,确保接口正确 必须调用! - this.syncIamService.validateUserAndPwd(orgAcceptDto); - - // 处理业务逻辑,存储组织,返回组织id - IamOrgCreateResponse iamOrgCreateResponse = this.syncIamService.orgCreateService(orgAcceptDto); - - // 处理统一响应PO层,并加密业务字段 - MessageHeader acceptMessageHeader = iamOrgInfo.getMessageHeader(); - SendPoEncryptPo sendPoEncryptPo = this.syncIamService.handlerGloablEncryptResponse(acceptMessageHeader, iamOrgCreateResponse); - return sendPoEncryptPo; - } catch (DuplicateKeyException duplicateKeyException) { - log.error("数据库值重复:{}", duplicateKeyException.getMessage()); - if (orgAcceptDto != null) { - throw new IamGlobalException(orgAcceptDto.getBimRequestId(), "数据库值重复,请检查组织编号【" + orgAcceptDto.getSrmsOrgCode() + "】是否异常"); - } else { - throw new IamGlobalException(null, "未知异常,请联系管理员"); - } - } - } - - /** - * 组织创建和更新移除缓存 - * @param iamOrgInfo - * @return - * @throws JsonProcessingException - */ - @PostMapping({"/OrgUpdateService"}) - @CacheEvict(value= {CacheConstant.SYS_DEPARTS_CACHE,CacheConstant.SYS_DEPART_IDS_CACHE}, allEntries=true) - public SendPoEncryptPo orgUpdateService(@RequestBody AcceptEncryptPo iamOrgInfo) throws JsonProcessingException { - if (iamOrgInfo == null - || iamOrgInfo.getMessageEncryptTabels() == null - || iamOrgInfo.getMessageEncryptTabels().getHeader() == null - || iamOrgInfo.getMessageEncryptTabels().getHeader().getData() == null){ - throw new IamGlobalException(null, "参数传递错误,未收到参数"); - } - - // 对核心数据解密 - String bodyParam = iamOrgInfo.getMessageEncryptTabels().getHeader().getData(); - String bodyParamDecrypt = BamboocloudUtils.getPlaintext(bodyParam, DockingConstant.IAM_ENCRYPT_SECRET, DockingConstant.IAM_ENCRYPT_TYPE); - - ObjectMapper objectMapper = new ObjectMapper(); - IamOrgAcceptDto orgAcceptDto = objectMapper.readValue(bodyParamDecrypt, IamOrgAcceptDto.class); - - // 校验身份认证,确保接口正确 必须调用! - this.syncIamService.validateUserAndPwd(orgAcceptDto); - - // 处理业务逻辑,更新组织 - IamCommonResponseDto iamCommonResponseDto = this.syncIamService.orgUpdateService(orgAcceptDto); - - // 处理统一响应PO层,并加密业务字段 - MessageHeader acceptMessageHeader = iamOrgInfo.getMessageHeader(); - SendPoEncryptPo sendPoEncryptPo = this.syncIamService.handlerGloablEncryptResponse(acceptMessageHeader, iamCommonResponseDto); - - return sendPoEncryptPo; - } - - @PostMapping({"/OrgDeleteService"}) - public SendPoEncryptPo orgDeleteService(@RequestBody AcceptEncryptPo iamOrgInfo) throws JsonProcessingException { - if (iamOrgInfo == null - || iamOrgInfo.getMessageEncryptTabels() == null - || iamOrgInfo.getMessageEncryptTabels().getHeader() == null - || iamOrgInfo.getMessageEncryptTabels().getHeader().getData() == null){ - throw new IamGlobalException(null, "参数传递错误,未收到参数"); - } - - // 对核心数据解密 - String bodyParam = iamOrgInfo.getMessageEncryptTabels().getHeader().getData(); - String bodyParamDecrypt = BamboocloudUtils.getPlaintext(bodyParam, DockingConstant.IAM_ENCRYPT_SECRET, DockingConstant.IAM_ENCRYPT_TYPE); - - ObjectMapper objectMapper = new ObjectMapper(); - IamOrgAcceptDto orgAcceptDto = objectMapper.readValue(bodyParamDecrypt, IamOrgAcceptDto.class); - - // 校验身份认证,确保接口正确 必须调用! - this.syncIamService.validateUserAndPwd(orgAcceptDto); - - // 处理业务逻辑,更新组织 - IamCommonResponseDto iamCommonResponseDto = this.syncIamService.orgDeleteService(orgAcceptDto); - - // 处理统一响应PO层,并加密业务字段 - MessageHeader acceptMessageHeader = iamOrgInfo.getMessageHeader(); - SendPoEncryptPo sendPoEncryptPo = this.syncIamService.handlerGloablEncryptResponse(acceptMessageHeader, iamCommonResponseDto); - - return sendPoEncryptPo; - } - - /** - * 对接统一权限服务平台。 - * 该接口包含角色创建、菜单创建、角色菜单关联、用户角色关联等4个接口 - * 通过type字段来区分 - */ - @PostMapping({"/bpmcCreate"}) - public SendPoEncryptPo bpmcCreate(@RequestBody AcceptDecryptPo acceptDecryptPo) throws JsonProcessingException { - if (acceptDecryptPo == null - || acceptDecryptPo.getMessageDecryptTabels() == null - || acceptDecryptPo.getMessageDecryptTabels().getHeader() == null){ - throw new IamGlobalException(null, "参数传递错误,未收到参数"); - } - - log.info("统一权限服务平台请求数据:{}", acceptDecryptPo.toString()); - ObjectMapper objectMapper = new ObjectMapper(); - BpmcAcceptDto bpmcAcceptDto = objectMapper.readValue(acceptDecryptPo.getMessageDecryptTabels().getHeader().getData(), BpmcAcceptDto.class); - - MessageHeader messageHeader = acceptDecryptPo.getMessageHeader(); - BpmcResponseDto bpmcResponseDto = BpmcResponseDto.success(); - SendPoEncryptPo sendPoEncryptPo = new SendPoEncryptPo(); - - if (CharSequenceUtil.isEmpty(bpmcAcceptDto.getType())){ - bpmcResponseDto.setResultCode(DockingConstant.IAM_ERROR_RESULT_CODE); - bpmcResponseDto.setMessage("接口类型(type)未传参,请检查"); - log.error(bpmcResponseDto.getMessage()); - sendPoEncryptPo = this.syncIamService.handlerGloablEncryptResponse(messageHeader, bpmcResponseDto); - sendPoEncryptPo.getReturns().setData(JSON.toJSONString(bpmcResponseDto)); - return sendPoEncryptPo; - } - - if (CharSequenceUtil.isEmpty(bpmcAcceptDto.getEntity())){ - bpmcResponseDto.setResultCode(DockingConstant.IAM_ERROR_RESULT_CODE); - bpmcResponseDto.setMessage("数据实体(entity)未传参,请检查"); - log.error(bpmcResponseDto.getMessage()); - sendPoEncryptPo = this.syncIamService.handlerGloablEncryptResponse(messageHeader, bpmcResponseDto); - sendPoEncryptPo.getReturns().setData(JSON.toJSONString(bpmcResponseDto)); - return sendPoEncryptPo; - } - - if (CharSequenceUtil.isEmpty(bpmcAcceptDto.getAction())){ - bpmcResponseDto.setResultCode(DockingConstant.IAM_ERROR_RESULT_CODE); - bpmcResponseDto.setMessage("操作方式(action)未传参,请检查"); - log.error(bpmcResponseDto.getMessage()); - sendPoEncryptPo = this.syncIamService.handlerGloablEncryptResponse(messageHeader, bpmcResponseDto); - sendPoEncryptPo.getReturns().setData(JSON.toJSONString(bpmcResponseDto)); - return sendPoEncryptPo; - } - - if (CharSequenceUtil.isEmpty(bpmcAcceptDto.getSignature())){ - bpmcResponseDto.setResultCode(DockingConstant.IAM_ERROR_RESULT_CODE); - bpmcResponseDto.setMessage("签名(signature)未传参,请检查"); - log.error(bpmcResponseDto.getMessage()); - sendPoEncryptPo = this.syncIamService.handlerGloablEncryptResponse(messageHeader, bpmcResponseDto); - sendPoEncryptPo.getReturns().setData(JSON.toJSONString(bpmcResponseDto)); - return sendPoEncryptPo; - } - - // 验证签名 - String validateSign = SHA256Util.getSHA256StrJava(bpmcAcceptDto.getEntity() + bpmcAppkey + bpmcAcceptDto.getTimestamp()); - if (!bpmcAcceptDto.getSignature().equals(validateSign)){ - bpmcResponseDto.setResultCode(DockingConstant.IAM_ERROR_RESULT_CODE); - bpmcResponseDto.setMessage("签名校验不通过,请检查"); - log.error(bpmcResponseDto.getMessage()); - sendPoEncryptPo = this.syncIamService.handlerGloablEncryptResponse(messageHeader, bpmcResponseDto); - sendPoEncryptPo.getReturns().setData(JSON.toJSONString(bpmcResponseDto)); - return sendPoEncryptPo; - } - - try { - switch (bpmcAcceptDto.getType()){ - // 角色 - case DockingConstant.BPMC_TYPE_ROLE: - bpmcResponseDto = bpmcTypeRole(objectMapper, bpmcAcceptDto, bpmcResponseDto); - break; - - // 菜单 - case DockingConstant.BPMC_TYPE_RESOURCE: - bpmcResponseDto = bpmcTypeResource(objectMapper, bpmcAcceptDto, bpmcResponseDto); - break; - - // 用户角色关联 - case DockingConstant.BPMC_TYPE_USER_ROLE: - bpmcResponseDto = bpmcTypeUserRole(objectMapper, bpmcAcceptDto, bpmcResponseDto); - break; - - // 角色菜单关联 - case DockingConstant.BPMC_TYPE_ROLE_RESOURCE: - bpmcResponseDto = bpmcTypeRoleResource(objectMapper, bpmcAcceptDto, bpmcResponseDto); - break; - - default: - bpmcResponseDto = BpmcResponseDto.error("接口类型(type)未找到,请检查"); - break; - } - }catch (Exception e){ - e.printStackTrace(); - log.error(e.getMessage()); - bpmcResponseDto = BpmcResponseDto.error(e.getMessage()); - } - log.info(bpmcResponseDto.getMessage()); - sendPoEncryptPo = this.syncIamService.handlerGloablEncryptResponse(messageHeader, bpmcResponseDto); - sendPoEncryptPo.getReturns().setData(JSON.toJSONString(bpmcResponseDto)); - return sendPoEncryptPo; - } - - private BpmcResponseDto bpmcTypeRoleResource(ObjectMapper objectMapper, BpmcAcceptDto bpmcAcceptDto, BpmcResponseDto bpmcResponseDto) throws JsonProcessingException { - List roleResourceDtoList = objectMapper.readValue(bpmcAcceptDto.getEntity(), new TypeReference>() {}); - // 根据新增/删除调用不同的业务处理代码 - if (bpmcAcceptDto.getAction().equals(DockingConstant.BPMC_ACTION_ADD)){ - bpmcResponseDto = this.syncIamService.roleResourceCreateService(roleResourceDtoList); - } else if (bpmcAcceptDto.getAction().equals(DockingConstant.BPMC_ACTION_DELETE)) { - bpmcResponseDto = this.syncIamService.roleResourceDeleteService(roleResourceDtoList); - } - return bpmcResponseDto; - } - - private BpmcResponseDto bpmcTypeUserRole(ObjectMapper objectMapper, BpmcAcceptDto bpmcAcceptDto, BpmcResponseDto bpmcResponseDto) throws JsonProcessingException { - List userRoleDtoList = objectMapper.readValue(bpmcAcceptDto.getEntity(), new TypeReference>() {}); - // 根据新增/删除调用不同的业务处理代码 - if (bpmcAcceptDto.getAction().equals(DockingConstant.BPMC_ACTION_ADD)){ - bpmcResponseDto = this.syncIamService.userRoleCreateService(userRoleDtoList); - } else if (bpmcAcceptDto.getAction().equals(DockingConstant.BPMC_ACTION_DELETE)) { - bpmcResponseDto = this.syncIamService.userRoleDeleteService(userRoleDtoList); - } - return bpmcResponseDto; - } - - private BpmcResponseDto bpmcTypeResource(ObjectMapper objectMapper, BpmcAcceptDto bpmcAcceptDto, BpmcResponseDto bpmcResponseDto) throws JsonProcessingException { - ResourceDto resourceDto = objectMapper.readValue(bpmcAcceptDto.getEntity(), ResourceDto.class); - // 根据新增/编辑/删除调用不同的业务处理代码 - if (bpmcAcceptDto.getAction().equals(DockingConstant.BPMC_ACTION_ADD)){ - bpmcResponseDto = this.syncIamService.resourceCreateService(resourceDto); - } else if (bpmcAcceptDto.getAction().equals(DockingConstant.BPMC_ACTION_UPDATE)) { - bpmcResponseDto = this.syncIamService.resourceUpdateService(resourceDto); - } else if (bpmcAcceptDto.getAction().equals(DockingConstant.BPMC_ACTION_DELETE)) { - bpmcResponseDto = this.syncIamService.resourceDeleteService(resourceDto); - } - return bpmcResponseDto; - } - - private BpmcResponseDto bpmcTypeRole(ObjectMapper objectMapper, BpmcAcceptDto bpmcAcceptDto, BpmcResponseDto bpmcResponseDto) throws JsonProcessingException { - RoleDto roleDto = objectMapper.readValue(bpmcAcceptDto.getEntity(), RoleDto.class); - // 根据新增/编辑/删除调用不同的业务处理代码 - if (bpmcAcceptDto.getAction().equals(DockingConstant.BPMC_ACTION_ADD)){ - bpmcResponseDto = this.syncIamService.roleCreateService(roleDto); - } else if (bpmcAcceptDto.getAction().equals(DockingConstant.BPMC_ACTION_UPDATE)) { - bpmcResponseDto = this.syncIamService.roleUpdateService(roleDto); - } else if (bpmcAcceptDto.getAction().equals(DockingConstant.BPMC_ACTION_DELETE)) { - bpmcResponseDto = this.syncIamService.roleDeleteService(roleDto); - } - return bpmcResponseDto; - } - - /** - * 查询全部用户id - * @param iamCommon - * @return - * @throws JsonProcessingException - */ - @PostMapping({"/QueryAllUserIdsService"}) - public SendPoEncryptPo QueryAllUserIdsService(@RequestBody AcceptEncryptPo iamCommon) throws JsonProcessingException { - if (iamCommon == null - || iamCommon.getMessageEncryptTabels() == null - || iamCommon.getMessageEncryptTabels().getHeader() == null - || iamCommon.getMessageEncryptTabels().getHeader().getData() == null){ - throw new IamGlobalException(null, this.paramNotGetError); - } - - // 对核心数据解密 - String bodyParam = iamCommon.getMessageEncryptTabels().getHeader().getData(); - String bodyParamDecrypt = BamboocloudUtils.getPlaintext(bodyParam, DockingConstant.IAM_ENCRYPT_SECRET, DockingConstant.IAM_ENCRYPT_TYPE); - - ObjectMapper objectMapper = new ObjectMapper(); - IamCommonAcceptDto commonAcceptDto = objectMapper.readValue(bodyParamDecrypt, IamCommonAcceptDto.class); - - // 校验身份认证,确保接口正确 必须调用! - this.syncIamService.validateUserAndPwd(commonAcceptDto); - - // 处理业务逻辑,封装字段 - IamUserIdListResponse userIdListResponse = this.syncIamService.getAllUserIds(commonAcceptDto); - - // 处理统一响应PO层,并加密业务字段 - MessageHeader acceptMessageHeader = iamCommon.getMessageHeader(); - SendPoEncryptPo sendPoEncryptPo = this.syncIamService.handlerGloablEncryptResponse(acceptMessageHeader, userIdListResponse); - - return sendPoEncryptPo; - } - - /** - * 查询全部组织id - * @param iamCommon - * @return - * @throws JsonProcessingException - */ - @PostMapping({"/QueryAllOrgIdsService"}) - public SendPoEncryptPo QueryAllOrgIdsService(@RequestBody AcceptEncryptPo iamCommon) throws JsonProcessingException { - if (iamCommon == null - || iamCommon.getMessageEncryptTabels() == null - || iamCommon.getMessageEncryptTabels().getHeader() == null - || iamCommon.getMessageEncryptTabels().getHeader().getData() == null){ - throw new IamGlobalException(null, this.paramNotGetError); - } - - // 对核心数据解密 - String bodyParam = iamCommon.getMessageEncryptTabels().getHeader().getData(); - String bodyParamDecrypt = BamboocloudUtils.getPlaintext(bodyParam, DockingConstant.IAM_ENCRYPT_SECRET, DockingConstant.IAM_ENCRYPT_TYPE); - - ObjectMapper objectMapper = new ObjectMapper(); - IamCommonAcceptDto commonAcceptDto = objectMapper.readValue(bodyParamDecrypt, IamCommonAcceptDto.class); - - // 校验身份认证,确保接口正确 必须调用! - this.syncIamService.validateUserAndPwd(commonAcceptDto); - - // 处理业务逻辑,封装字段 - IamOrgIdListResponse orgIdListResponse = this.syncIamService.getAllOrgIds(commonAcceptDto); - - // 处理统一响应PO层,并加密业务字段 - MessageHeader acceptMessageHeader = iamCommon.getMessageHeader(); - SendPoEncryptPo sendPoEncryptPo = this.syncIamService.handlerGloablEncryptResponse(acceptMessageHeader, orgIdListResponse); - - return sendPoEncryptPo; - } - - @PostMapping({"/QueryUserByIdService"}) - public SendPoEncryptPo QueryUserByIdService(@RequestBody AcceptEncryptPo iamUserInfo) throws JsonProcessingException { - if (iamUserInfo == null - || iamUserInfo.getMessageEncryptTabels() == null - || iamUserInfo.getMessageEncryptTabels().getHeader() == null - || iamUserInfo.getMessageEncryptTabels().getHeader().getData() == null){ - throw new IamGlobalException(null, "参数传递错误,未收到参数"); - } - - // 对核心数据解密 - String bodyParam = iamUserInfo.getMessageEncryptTabels().getHeader().getData(); - String bodyParamDecrypt = BamboocloudUtils.getPlaintext(bodyParam, DockingConstant.IAM_ENCRYPT_SECRET, DockingConstant.IAM_ENCRYPT_TYPE); - - ObjectMapper objectMapper = new ObjectMapper(); - IamUserAcceptDto userAcceptDto = objectMapper.readValue(bodyParamDecrypt, IamUserAcceptDto.class); - - // 校验身份认证,确保接口正确 必须调用! - this.syncIamService.validateUserAndPwd(userAcceptDto); - - // 处理业务逻辑,存储用户,返回用户id - IamUserInfoResponse iamUserInfoResponse = this.syncIamService.getUserInfoById(userAcceptDto); - - // 处理统一响应PO层,并加密业务字段 - MessageHeader acceptMessageHeader = iamUserInfo.getMessageHeader(); - SendPoEncryptPo sendPoEncryptPo = this.syncIamService.handlerGloablEncryptResponse(acceptMessageHeader, iamUserInfoResponse); - - return sendPoEncryptPo; - } - - @PostMapping({"/QueryOrgByIdService"}) - public SendPoEncryptPo QueryOrgByIdService(@RequestBody AcceptEncryptPo iamUserInfo) throws JsonProcessingException { - if (iamUserInfo == null - || iamUserInfo.getMessageEncryptTabels() == null - || iamUserInfo.getMessageEncryptTabels().getHeader() == null - || iamUserInfo.getMessageEncryptTabels().getHeader().getData() == null){ - throw new IamGlobalException(null, "参数传递错误,未收到参数"); - } - - // 对核心数据解密 - String bodyParam = iamUserInfo.getMessageEncryptTabels().getHeader().getData(); - String bodyParamDecrypt = BamboocloudUtils.getPlaintext(bodyParam, DockingConstant.IAM_ENCRYPT_SECRET, DockingConstant.IAM_ENCRYPT_TYPE); - - ObjectMapper objectMapper = new ObjectMapper(); - IamOrgAcceptDto orgAcceptDto = objectMapper.readValue(bodyParamDecrypt, IamOrgAcceptDto.class); - - // 校验身份认证,确保接口正确 必须调用! - this.syncIamService.validateUserAndPwd(orgAcceptDto); - - // 处理业务逻辑,存储用户,返回用户id - IamOrgInfoResponse iamOrgInfoResponse = this.syncIamService.getOrgInfoById(orgAcceptDto); - - // 处理统一响应PO层,并加密业务字段 - MessageHeader acceptMessageHeader = iamUserInfo.getMessageHeader(); - SendPoEncryptPo sendPoEncryptPo = this.syncIamService.handlerGloablEncryptResponse(acceptMessageHeader, iamOrgInfoResponse); - - return sendPoEncryptPo; - } - - -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/IamCommonAcceptDto.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/IamCommonAcceptDto.java deleted file mode 100644 index a318a0c0..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/IamCommonAcceptDto.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.jero.modules.docking.iam.dto; - -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import lombok.Data; -import lombok.ToString; - -/** - * IAM的通用Dto,存放IAM接口的非业务通用属性。接口呗请求时会带着该参数 - */ -@Data -@ToString -@JsonIgnoreProperties(ignoreUnknown = true) -public class IamCommonAcceptDto { - - /** - * BIM每次调用生成的随机ID,应用系统每次响应返回此ID - */ - private String bimRequestId; - - /** - *BIM调用三方应用接口的授权账号,由应用分配给BIM系统 - */ - private String bimRemoteUser ; - - - /** - * BIM调用三方应用接口的密码,由应用分配给BIM系统 - */ - private String bimRemotePwd; - -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/IamOrgAcceptDto.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/IamOrgAcceptDto.java deleted file mode 100644 index 233fa565..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/IamOrgAcceptDto.java +++ /dev/null @@ -1,91 +0,0 @@ -package com.jero.modules.docking.iam.dto; - -import com.jero.modules.docking.iam.annotation.IamProperty; -import lombok.Data; -import lombok.ToString; - -/** - * IAM的组织实体,接收IAM传递的组织数据 - */ -@Data -@ToString -public class IamOrgAcceptDto extends IamCommonAcceptDto { - - /** - * 组织的id,在删除或编辑的接口会传递 - */ - private String bimOrgId; - - /** - * 机构编码.全集团唯一,不可重复,撤销后不可重新启用 - */ - @IamProperty(required = true, multivalued = false) - private String srmsOrgCode; - - /** - * 组织名称 - */ - @IamProperty(required = true, multivalued = false) - private String srmsDepartName; - - /** - * 父级机构编码.当前组织所属的父节点code - */ - @IamProperty(required = true, multivalued = false) - private String srmsParentCode; - - /** - * 所属单位,10位HR机构编号 - */ - @IamProperty(required = true, multivalued = false) - private String srmsCompany; - - /** - * 机构状态 - */ - @IamProperty(required = true, multivalued = false) - private String srmsStatus; - - /** - * 机构类型。001内部机构 002 外部机构 003 虚拟机构 - */ - @IamProperty(required = true, multivalued = false) - private String srmsType; - - /** - * 组织类型。1.单位 2.部门。单位下可以有单位,但是部门下不能有单位 - */ - @IamProperty(required = true, multivalued = false) - private String srmsOrgCategory; - - /** - * 创建时间 - */ - @IamProperty(required = true, multivalued = false) - private String srmsCreateTime; - - /** - * 更新时间 - */ - @IamProperty(required = true, multivalued = false) - private String srmsUpdateTime; - - /** - * 部门负责人 - */ - @IamProperty(required = false, multivalued = false) - private String srmsHeadOfDepartment; - - /** - * 分管领导 - */ - @IamProperty(required = false, multivalued = false) - private String srmsLeadersInCharge; - - /** - * 副职领导 - */ - @IamProperty(required = false, multivalued = false) - private String srmsDeputyLeader; - -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/IamUserAcceptDto.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/IamUserAcceptDto.java deleted file mode 100644 index 844aa9d6..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/IamUserAcceptDto.java +++ /dev/null @@ -1,121 +0,0 @@ -package com.jero.modules.docking.iam.dto; - -import com.jero.modules.docking.iam.annotation.IamProperty; -import lombok.Data; -import lombok.ToString; - -/** - * IAM的用户实体,接收IAM传递的用户数据 - */ -@Data -@ToString -public class IamUserAcceptDto extends IamCommonAcceptDto { - - /** - * 用户的id,在删除或编辑的接口会传递 - */ - private String bimUid; - - /** - * 单位编码 - */ - @IamProperty(required = true, multivalued = false) - private String srmsCompanyCode; - - /** - * 部门编码,用于做人员和组织的关联 - */ - @IamProperty(required = true, multivalued = false) - private String srmsOrgCode; - - /** - * 人员类型 - */ - @IamProperty(required = true, multivalued = false) - private String srmsTypeId; - - /** - * 工号 - */ - @IamProperty(required = true, multivalued = false) - private String srmsUsername; - - /** - * 姓名 - */ - @IamProperty(required = true, multivalued = false) - private String srmsRealname; - - /** - * 密码 - */ - @IamProperty(required = false, multivalued = false) - private String srmsPassword; - - /** - * 性别 - */ - @IamProperty(required = true, multivalued = false) - private String srmsSex; - - /** - * 岗位 - */ - @IamProperty(required = true, multivalued = false) - private String srmsPost; - - /** - * 职务级别 - */ - @IamProperty(required = true, multivalued = false) - private String srmsDutyLevelId; - - /** - * 直接上级 - */ - @IamProperty(required = true, multivalued = false) - private String srmsDirectLeadership; - - /** - * 岗位状态 - */ - @IamProperty(required = true, multivalued = false) - private String srmsPostStatus; - - /** - * 是否在册 - */ - @IamProperty(required = true, multivalued = false) - private String srmsStatus; - - /** - * 办公电话 - */ - @IamProperty(required = true, multivalued = false) - private String srmsOfficePhone; - - /** - * 移动电话 - */ - @IamProperty(required = true, multivalued = false) - private String srmsPhone; - - /** - * 电子邮件 - */ - @IamProperty(required = true, multivalued = false) - private String srmsEmail; - - /** - * 创建时间 - */ - @IamProperty(required = true, multivalued = false) - private String srmsCreateTime; - - /** - * 更新时间 - */ - @IamProperty(required = true, multivalued = false) - private String srmsUpdateTime; - -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/bpmc/BpmcAcceptDto.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/bpmc/BpmcAcceptDto.java deleted file mode 100644 index 61233796..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/bpmc/BpmcAcceptDto.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.jero.modules.docking.iam.dto.bpmc; - -import lombok.Data; -import lombok.ToString; - -/** - * 和竹云统一权限服务平台对接的实体 - */ -@Data -@ToString -public class BpmcAcceptDto { - - /** - * 角色:D_AR (本系统对接) - * 功能权限:D_AM (本系统对接) - * 账号与应用角色关系: R_USER_AR (本系统对接) - * 应用角色与应用功能权限关系:R_AR_AM (本系统对接) - * 账号与功能权限关系:R_USER_AM - * 群组与应用角色关系:R_ACCSET_AR - * 群组与功能权限关系:R_ACCSET_AM - * 机构/岗位与应用角色关系:R_USERSET_AR - * 机构/岗位与功能权限关系:R_USERSET_AM - */ - private String type; - - /** - * 后续基础数据接口、权限关系接口章节中对应操作的entity JSON格式数据字符串 - */ - private String entity; - - /** - * 操作方式 - * 基础数据接口:(add:新增;delete:删除;update:更新) - * 关系数据接口: - * (add:新增;delete:删除;) - */ - private String action; - - /** - * 请求签名,计算方式 - * SHA256 (entity+appKey+timestamp) - */ - private String signature; - - /** - * 时间戳 - */ - private long timestamp; - -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/bpmc/ResourceDto.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/bpmc/ResourceDto.java deleted file mode 100644 index c29f444b..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/bpmc/ResourceDto.java +++ /dev/null @@ -1,112 +0,0 @@ -package com.jero.modules.docking.iam.dto.bpmc; - -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import lombok.Data; - -import java.util.Date; - -/** - * 统一权限服务平台的菜单实体 - */ -@Data -@JsonIgnoreProperties(ignoreUnknown = true) -public class ResourceDto { - - private String id; - - /** - * 功能编码 - */ - private String code; - - /** - * 父级id - */ - private String parentId; - - /** - * 功能名称 - */ - private String name; - - /** - * 对应前端组件 - */ - private String component; - - /** - * 描述 - */ - private String description; - - /** - * 一级菜单跳转地址 - */ - private String redirect; - - /** - * 路径 - */ - private String url; - - /** - * 类型(0:一级菜单; 1:子菜单:2:按钮权限) - */ - private int menu_type; - - /** - * 排序号 - */ - private Integer sort; - - /** - * 菜单英文 - */ - private String menu_en; - - /** - * 菜单是否为路径菜单(默认值为1) - */ - private Integer is_route; - - /** - * 打开外部链接菜单的方式(默认值为0) - */ - private Integer internal_or_external; - - /** - * 菜单是否隐藏(默认值为0) - */ - private Integer hidden; - - /** - * 菜单是否需要缓存(默认值为0) - */ - private Integer keep_alive; - - /** - * 创建时间 - */ - private Date createTime; - - /** - * 创建人 - */ - private String createBy; - - /** - * 修改时间 - */ - private Date modifyTime; - - /** - * 最近修改人 - */ - private String modifyBy; - - /** - * 应用id - */ - private String appId; - -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/bpmc/RoleDto.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/bpmc/RoleDto.java deleted file mode 100644 index 1a4284e5..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/bpmc/RoleDto.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.jero.modules.docking.iam.dto.bpmc; - -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import lombok.Data; - -import java.util.Date; - -/** - * 统一权限服务平台的角色实体 - */ -@Data -@JsonIgnoreProperties(ignoreUnknown = true) -public class RoleDto { - - private String id; - - /** - * 角色编码 - */ - private String code; - - /** - * 角色名称 - */ - private String name; - - /** - * 描述 - */ - private String description; - - /** - * 排序号 - */ - private int sort; - - /** - * 创建时间 - */ - private Date createTime; - - /** - * 创建人 - */ - private String createBy; - - /** - * 修改时间 - */ - private Date modifyTime; - - /** - * 最近修改人 - */ - private String modifyBy; - - /** - * 应用id - */ - private String appId; - -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/bpmc/RoleResourceDto.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/bpmc/RoleResourceDto.java deleted file mode 100644 index 30a798f3..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/bpmc/RoleResourceDto.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.jero.modules.docking.iam.dto.bpmc; - -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import lombok.Data; - -/** - * 统一权限服务平台的 角色-菜单关联 实体 - */ -@Data -@JsonIgnoreProperties(ignoreUnknown = true) -public class RoleResourceDto { - - /** - * 角色id - */ - private String arId; - - /** - * 角色名称 - */ - private String arName; - - /** - * 角色编码 - */ - private String arCode; - - /** - * 菜单id - */ - private String amId; - - /** - * 菜单名称 - */ - private String amName; - - /** - * 菜单编码 - */ - private String amCode; - - /** - * 菜单类型(0 菜单 、1行为) - */ - private int amType; - - /** - * 菜单code绝对路径 - */ - private String codePath; - -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/bpmc/UserRoleDto.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/bpmc/UserRoleDto.java deleted file mode 100644 index 82cb8d5e..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/bpmc/UserRoleDto.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.jero.modules.docking.iam.dto.bpmc; - -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import lombok.Data; - -/** - * 统一权限服务平台的 用户-角色关联 实体 - */ -@Data -@JsonIgnoreProperties(ignoreUnknown = true) -public class UserRoleDto { - - /** - * 用户ID - */ - private String userId; - - /** - * 账号名 - */ - private String accountCode; - - /** - * 账号id - */ - private String accountId; - - /** - * 姓名 - */ - private String fullName; - - /** - * 角色id - */ - private String arId; - - /** - * 角色编码 - */ - private String arCode; - - /** - * 角色名称 - */ - private String arName; - -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/response/BpmcResponseDto.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/response/BpmcResponseDto.java deleted file mode 100644 index 22a8c64f..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/response/BpmcResponseDto.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.jero.modules.docking.iam.dto.response; - -import lombok.Data; - -@Data -public class BpmcResponseDto { - - private String resultCode; - - @Override - public String toString() { - return "{" + - "resultCode:'" + resultCode + '\'' + - ", message:'" + message + '\'' + - '}'; - } - - private String message; - public static BpmcResponseDto success(){ - BpmcResponseDto bpmcResponseDto = new BpmcResponseDto(); - bpmcResponseDto.resultCode = "200"; // 成功时固定为200 - bpmcResponseDto.message = "操作成功"; - - return bpmcResponseDto; - } - - public static BpmcResponseDto error(String message){ - BpmcResponseDto bpmcResponseDto = new BpmcResponseDto(); - bpmcResponseDto.resultCode = "500"; // 失败时固定为500 - bpmcResponseDto.message = message; - - return bpmcResponseDto; - } - -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/response/IamCommonResponseDto.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/response/IamCommonResponseDto.java deleted file mode 100644 index 0574a1ab..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/response/IamCommonResponseDto.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.jero.modules.docking.iam.dto.response; - -import lombok.Data; - -/** - * IAM出SchemaService外的成功响应 或 失败响应 通用报文 - */ -@Data -public class IamCommonResponseDto { - - /** - * 请求id,收到什么就返回什么 - */ - private String bimRequestId; - - /** - * 相应码,0位正常 - */ - private String resultCode; - - /** - * 消息 - */ - private String message; - -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/response/IamOrgCreateResponse.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/response/IamOrgCreateResponse.java deleted file mode 100644 index be5c641b..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/response/IamOrgCreateResponse.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.jero.modules.docking.iam.dto.response; - -import lombok.Data; - -/** - * 组织机构创建的响应体 - */ -@Data -public class IamOrgCreateResponse extends IamCommonResponseDto{ - - /** - * 用户创建后生成的id - */ - private String orgId; - -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/response/IamOrgIdListResponse.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/response/IamOrgIdListResponse.java deleted file mode 100644 index 9fb1ce3c..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/response/IamOrgIdListResponse.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.jero.modules.docking.iam.dto.response; - -import lombok.Data; - -import java.util.List; - -/** - * 组织机构创建的响应体 - */ -@Data -public class IamOrgIdListResponse extends IamCommonResponseDto{ - - /** - * 用户创建后生成的id - */ - private List orgIdList; - -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/response/IamOrgInfoResponse.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/response/IamOrgInfoResponse.java deleted file mode 100644 index 0e631a50..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/response/IamOrgInfoResponse.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.jero.modules.docking.iam.dto.response; - -import com.jero.modules.docking.iam.dto.IamOrgAcceptDto; -import com.jero.modules.docking.iam.dto.IamUserAcceptDto; -import lombok.Data; - -/** - * 组织机构创建的响应体 - */ -@Data -public class IamOrgInfoResponse extends IamCommonResponseDto{ - - private IamOrgAcceptDto organization; - -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/response/IamSchemaResponse.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/response/IamSchemaResponse.java deleted file mode 100644 index e8e95a43..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/response/IamSchemaResponse.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.jero.modules.docking.iam.dto.response; - -import lombok.Data; - -import java.util.List; - -/** - * Schema映射的响应体 - */ -@Data -public class IamSchemaResponse { - - /** - * 请求id,收到什么就返回什么 - */ - private String bimRequestId; - - /** - * 用户账号的具体内容响应实体 - */ - private List account; - - /** - * 组织机构的具体内容响应实体 - */ - private List organization; - -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/response/IamUserCreateResponse.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/response/IamUserCreateResponse.java deleted file mode 100644 index 21bab740..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/response/IamUserCreateResponse.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.jero.modules.docking.iam.dto.response; - -import lombok.Data; - -/** - * 用户创建的响应体 - */ -@Data -public class IamUserCreateResponse extends IamCommonResponseDto{ - - /** - * 用户创建后生成的id - */ - private String uid; - -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/response/IamUserIdListResponse.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/response/IamUserIdListResponse.java deleted file mode 100644 index b8065fa9..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/response/IamUserIdListResponse.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.jero.modules.docking.iam.dto.response; - -import lombok.Data; - -import java.util.List; - -/** - * 组织机构创建的响应体 - */ -@Data -public class IamUserIdListResponse extends IamCommonResponseDto{ - - /** - * 用户创建后生成的id - */ - private List userIdList; - -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/response/IamUserInfoResponse.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/response/IamUserInfoResponse.java deleted file mode 100644 index 7a6a8e2b..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/response/IamUserInfoResponse.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.jero.modules.docking.iam.dto.response; - -import com.jero.modules.docking.iam.dto.IamUserAcceptDto; -import lombok.Data; - -import java.util.List; - -/** - * 组织机构创建的响应体 - */ -@Data -public class IamUserInfoResponse extends IamCommonResponseDto{ - - private IamUserAcceptDto account; - -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/response/SchemaResponseInner.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/response/SchemaResponseInner.java deleted file mode 100644 index 5fbb5037..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/response/SchemaResponseInner.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.jero.modules.docking.iam.dto.response; - -import lombok.Data; - -/** - * Schema的核心内容 - */ -@Data -public class SchemaResponseInner { - - /** - * 定义对象的属性字段名称 - */ - private String name; - - /** - * 定义对象的属性字段类型,可选值为String、int、double、float、long、byte、boolean - */ - private String type; - - /** - * 定义对象的属性字段在创建时是否为必填字段。可选值true或者false - */ - private boolean required; - - /** - * 定义对象的属性字段是否为多值。可选值true或者false。字段为boolean类型 - */ - private boolean multivalued; - -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/exception/IamGlobalException.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/exception/IamGlobalException.java deleted file mode 100644 index 38f2785c..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/exception/IamGlobalException.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.jero.modules.docking.iam.exception; - -import com.jero.common.util.MessageUtils; - -public class IamGlobalException extends RuntimeException { - - private String bimRequestId; - private String message; - - private static final long serialVersionUID = 3634632351214L; - - public IamGlobalException(String bimRequestId, String message){ - super(message); - this.bimRequestId = bimRequestId; - this.message = message; - } - - public String getBimRequestId() { - return bimRequestId; - } - - @Override - public String getMessage() { - return message; - } - -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/exception/IamGlobalExceptionHandler.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/exception/IamGlobalExceptionHandler.java deleted file mode 100644 index 0b5b51d3..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/exception/IamGlobalExceptionHandler.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.jero.modules.docking.iam.exception; - -import com.jero.common.api.vo.Result; -import com.jero.common.exception.JeroBootException; -import com.jero.modules.docking.iam.dto.response.IamCommonResponseDto; -import lombok.extern.slf4j.Slf4j; -import org.apache.poi.ss.formula.functions.T; -import org.apache.shiro.authz.AuthorizationException; -import org.apache.shiro.authz.UnauthorizedException; -import org.springframework.dao.DataIntegrityViolationException; -import org.springframework.dao.DuplicateKeyException; -import org.springframework.data.redis.connection.PoolException; -import org.springframework.web.HttpRequestMethodNotSupportedException; -import org.springframework.web.bind.annotation.ExceptionHandler; -import org.springframework.web.bind.annotation.RestControllerAdvice; -import org.springframework.web.multipart.MaxUploadSizeExceededException; -import org.springframework.web.servlet.NoHandlerFoundException; - -/** - * IAM对接全局异常处理器 - */ -@RestControllerAdvice -@Slf4j -public class IamGlobalExceptionHandler { - - /** - * 处理自定义异常 - */ - @ExceptionHandler(IamGlobalException.class) - public IamCommonResponseDto handleJeroBootException(IamGlobalException e){ - IamCommonResponseDto iamCommonResponseDto = new IamCommonResponseDto(); - iamCommonResponseDto.setBimRequestId(e.getBimRequestId()); - iamCommonResponseDto.setResultCode("-1"); // 错误码统一为-1 - iamCommonResponseDto.setMessage(e.getMessage()); - - return iamCommonResponseDto; - } - -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/po/MessageHeader.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/po/MessageHeader.java deleted file mode 100644 index 4f569f63..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/po/MessageHeader.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.jero.modules.docking.iam.po; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; - -/** - * PO系统交互必须的实体,包含接口传递的基本信息头 - */ -@Data -public class MessageHeader { - - /** - * 接口ID - */ - @JsonProperty("Interface_ID") - private String interfaceID; - - /** - * UUID - */ - @JsonProperty("UUID") - private String UUID; - - /** - * 消息Id - */ - @JsonProperty("MessageId") - private String messageId; - - /** - * 发送系统 - */ - @JsonProperty("Sender") - private String sender; - - /** - * 接收系统 - */ - @JsonProperty("Receiver") - private String receiver; - - /** - * 发送日期 - */ - @JsonProperty("SendDate") - private String sendDate; - - /** - * 发送时间 - */ - @JsonProperty("SendTime") - private String sendTime; - -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/po/decrypt/AcceptDecryptPo.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/po/decrypt/AcceptDecryptPo.java deleted file mode 100644 index 891d2911..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/po/decrypt/AcceptDecryptPo.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.jero.modules.docking.iam.po.decrypt; - -import com.fasterxml.jackson.annotation.JsonProperty; -import com.jero.modules.docking.iam.po.MessageHeader; -import lombok.Data; - -/** - * 和PO系统做数据交互的最外层壳,做数据接收用 - */ -@Data -public class AcceptDecryptPo { - - @JsonProperty("MessageHeader") - private MessageHeader messageHeader; - - @JsonProperty("Tables") - private MessageDecryptTabels messageDecryptTabels; - -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/po/decrypt/MessageDecryptTabels.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/po/decrypt/MessageDecryptTabels.java deleted file mode 100644 index 8be046df..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/po/decrypt/MessageDecryptTabels.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.jero.modules.docking.iam.po.decrypt; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; - -/** - * PO系统交互必须的实体,包含接口传递的正式数据(仅为套的一层壳) - */ -@Data -public class MessageDecryptTabels { - - @JsonProperty("Header") - private MessageTablesData header; -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/po/decrypt/MessageTablesData.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/po/decrypt/MessageTablesData.java deleted file mode 100644 index 57908672..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/po/decrypt/MessageTablesData.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.jero.modules.docking.iam.po.decrypt; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; - -/** - * @ClassName: MessageTablesData - * @Description: - * @Author: yjz - * @Date: 2023-11-07 14:21 - * @Version: 1.0 - **/ -@Data -public class MessageTablesData { - @JsonProperty("data") - private String data; -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/po/decrypt/SendPoDecryptPo.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/po/decrypt/SendPoDecryptPo.java deleted file mode 100644 index 39f1c969..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/po/decrypt/SendPoDecryptPo.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.jero.modules.docking.iam.po.decrypt; - -import com.fasterxml.jackson.annotation.JsonProperty; -import com.jero.modules.docking.iam.po.MessageHeader; -import lombok.Data; - -/** - * 和PO系统做数据交互的最外层壳,做数据发送用 - */ -@Data -public class SendPoDecryptPo { - - @JsonProperty("MessageHeader") - private MessageHeader messageHeader; - - @JsonProperty("Returns") - private T returns; - - public SendPoDecryptPo response(MessageHeader messageHeader, T t){ - SendPoDecryptPo sendPoDecryptPo = new SendPoDecryptPo<>(); - sendPoDecryptPo.setMessageHeader(messageHeader); - sendPoDecryptPo.setReturns(t); - - return sendPoDecryptPo; - } - -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/po/encrypt/AcceptEncryptPo.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/po/encrypt/AcceptEncryptPo.java deleted file mode 100644 index 0b15350d..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/po/encrypt/AcceptEncryptPo.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.jero.modules.docking.iam.po.encrypt; - -import com.fasterxml.jackson.annotation.JsonProperty; -import com.jero.modules.docking.iam.po.MessageHeader; -import lombok.Data; - -/** - * 和PO系统做数据交互的最外层壳,做数据接收用 - */ -@Data -public class AcceptEncryptPo { - - @JsonProperty("MessageHeader") - private MessageHeader messageHeader; - - @JsonProperty("Tables") - private MessageEncryptTabels messageEncryptTabels; - -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/po/encrypt/MessageEncryptTabels.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/po/encrypt/MessageEncryptTabels.java deleted file mode 100644 index 20a0498c..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/po/encrypt/MessageEncryptTabels.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.jero.modules.docking.iam.po.encrypt; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; - -/** - * PO系统交互必须的实体,包含接口传递的正式数据(仅为套的一层壳) - */ -@Data -public class MessageEncryptTabels { - - @JsonProperty("Header") - private MessageEncryptTabelsHeader header; - -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/po/encrypt/MessageEncryptTabelsHeader.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/po/encrypt/MessageEncryptTabelsHeader.java deleted file mode 100644 index 608f8918..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/po/encrypt/MessageEncryptTabelsHeader.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.jero.modules.docking.iam.po.encrypt; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; - -/** - * 接受数据的tables中的header层 - */ -@Data -public class MessageEncryptTabelsHeader { - - @JsonProperty("data") - private String data; - -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/po/encrypt/SendEncryptReturnsPo.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/po/encrypt/SendEncryptReturnsPo.java deleted file mode 100644 index f0166352..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/po/encrypt/SendEncryptReturnsPo.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.jero.modules.docking.iam.po.encrypt; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * 返回数据的Return层 - */ -@Data -@NoArgsConstructor -public class SendEncryptReturnsPo { - - @JsonProperty("data") - private String data; - - public SendEncryptReturnsPo(String data){ - this.data = data; - } - -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/po/encrypt/SendPoEncryptPo.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/po/encrypt/SendPoEncryptPo.java deleted file mode 100644 index af01464a..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/po/encrypt/SendPoEncryptPo.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.jero.modules.docking.iam.po.encrypt; - -import com.fasterxml.jackson.annotation.JsonProperty; -import com.jero.modules.docking.iam.po.MessageHeader; -import lombok.Data; - -/** - * 和PO系统做数据交互的最外层壳,做数据发送用 - */ -@Data -public class SendPoEncryptPo { - - @JsonProperty("MessageHeader") - private MessageHeader messageHeader; - - @JsonProperty("Returns") - private SendEncryptReturnsPo returns; - -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/service/SyncIamService.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/service/SyncIamService.java deleted file mode 100644 index 7c30224b..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/service/SyncIamService.java +++ /dev/null @@ -1,1037 +0,0 @@ -package com.jero.modules.docking.iam.service; - -import cn.hutool.core.date.DatePattern; -import cn.hutool.core.date.DateUtil; -import cn.hutool.core.text.CharSequenceUtil; -import cn.hutool.core.util.NumberUtil; -import com.alibaba.fastjson.JSONObject; -import com.bamboocloud.codec.BamboocloudFacade; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.jero.common.constant.CommonConstant; -import com.jero.common.constant.FillRuleConstant; -import com.jero.common.system.api.ISysBaseAPI; -import com.jero.common.system.vo.LoginUser; -import com.jero.common.util.*; -import com.jero.modules.docking.iam.annotation.IamProperty; -import com.jero.modules.docking.iam.dto.IamCommonAcceptDto; -import com.jero.modules.docking.iam.dto.IamOrgAcceptDto; -import com.jero.modules.docking.iam.dto.IamUserAcceptDto; -import com.jero.modules.docking.iam.dto.bpmc.ResourceDto; -import com.jero.modules.docking.iam.dto.bpmc.RoleDto; -import com.jero.modules.docking.iam.dto.bpmc.RoleResourceDto; -import com.jero.modules.docking.iam.dto.bpmc.UserRoleDto; -import com.jero.modules.docking.iam.dto.response.*; -import com.jero.modules.docking.iam.exception.IamGlobalException; -import com.jero.modules.docking.iam.po.MessageHeader; -import com.jero.modules.docking.iam.po.encrypt.SendEncryptReturnsPo; -import com.jero.modules.docking.iam.po.encrypt.SendPoEncryptPo; -import com.jero.modules.docking.utils.DockingConstant; -import com.jero.modules.system.entity.*; -import com.jero.modules.system.service.*; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.jetbrains.annotations.NotNull; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import javax.annotation.Resource; -import java.lang.reflect.Field; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Objects; -import java.util.stream.Collectors; - -/** - * IAM对接业务处理类 - */ -@Slf4j -@Service -@Transactional -public class SyncIamService { - - @Value("${iam.bimRemoteUser}") - private String bimRemoteUser; - - @Value("${iam.bimRemotePwd}") - private String bimRemotePwd; - - @Value("${iam.defaultRoleIds}") - private String defaultRoleIds; - - @Resource - private ISysUserService sysUserService; - - @Resource - private ISysDepartService sysDepartService; - - @Resource - private ISysRoleService sysRoleService; - - @Resource - private ISysPermissionService sysPermissionService; - - @Resource - private ISysUserRoleService sysUserRoleService; - - @Resource - private ISysRolePermissionService sysRolePermissionService; - - @Resource - private ISysBaseAPI sysBaseAPI; - - private String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss"; - - /** - * 校验IAM调用时的账号密码是否正确 - * 校验通过了正常走后续,不通过直接返回 - * @return - */ - public void validateUserAndPwd(IamCommonAcceptDto commonAcceptDto) { - if (!bimRemoteUser.equals(commonAcceptDto.getBimRemoteUser()) - || !bimRemotePwd.equals(commonAcceptDto.getBimRemotePwd())){ - throw new IamGlobalException(commonAcceptDto.getBimRequestId(), "用户名或密码不对,无法调用接口"); - } - } - - /** - * 生成Schema的信息 - * @return - */ - public IamSchemaResponse getSchemaInfo(IamCommonAcceptDto commonAcceptDto){ - // 获取用户同步的字段 - List accountFiledList = new ArrayList<>(); - Field[] userFields = IamUserAcceptDto.class.getDeclaredFields(); - this.extractedFieldProperty(accountFiledList, userFields); - - // 获取组织机构同步的字段 - List orgFiledList = new ArrayList<>(); - Field[] orgFields = IamOrgAcceptDto.class.getDeclaredFields(); - this.extractedFieldProperty(orgFiledList, orgFields); - - IamSchemaResponse iamSchemaResponse = new IamSchemaResponse(); - iamSchemaResponse.setAccount(accountFiledList); - iamSchemaResponse.setOrganization(orgFiledList); - iamSchemaResponse.setBimRequestId(commonAcceptDto.getBimRequestId()); - - - return iamSchemaResponse; - } - - /** - * 抽取含有IamProperty注解的字段元属性 - * @param filedList - * @param fields - */ - private void extractedFieldProperty(List filedList, Field[] fields) { - for (Field field : fields) { - if (field.isAnnotationPresent(IamProperty.class)) { - SchemaResponseInner schemaInfo = new SchemaResponseInner(); - - //获取Annotation对象 - IamProperty iamProperty = field.getAnnotation(IamProperty.class); - //提取注解对象元数据 - boolean required = iamProperty.required(); - boolean multivalued = iamProperty.multivalued(); - String name = field.getName(); - String type = field.getType().getSimpleName(); - - schemaInfo.setName(name); - schemaInfo.setType(type); - schemaInfo.setRequired(required); - schemaInfo.setMultivalued(multivalued); - - filedList.add(schemaInfo); - } - } - } - - /** - * 转换Iam传来的用户数据,进行转换后存储 - * @param userAcceptDto - * @return - */ - public IamUserCreateResponse userCreateService(IamUserAcceptDto userAcceptDto){ - log.info("用户创建收到的解密后数据:{}", userAcceptDto.toString()); - - IamUserCreateResponse iamUserCreateResponse = new IamUserCreateResponse(); - iamUserCreateResponse.setBimRequestId(userAcceptDto.getBimRequestId()); - iamUserCreateResponse.setResultCode(DockingConstant.IAM_SUCCESS_RESULT_CODE); - iamUserCreateResponse.setMessage(DockingConstant.IAM_SUCCESS_MESSAGE); - // 将iam的数据转换成sysUser数据存入数据库 - SysUser sysUser = new SysUser(); - sysUser.setUsername(userAcceptDto.getSrmsUsername()); - sysUser.setRealname(userAcceptDto.getSrmsRealname()); - - sysUser.setPassword(CommonConstant.DEFAULT_PASSWORD); - String salt = UUIDUtils.randomUUID(8); - System.out.println(salt); - sysUser.setSalt(salt); - String passwordEncode = PasswordUtil.encrypt(sysUser.getUsername(), sysUser.getPassword(), salt); - sysUser.setPassword(passwordEncode); - if (NumberUtil.isInteger(userAcceptDto.getSrmsSex())){ - sysUser.setSex(Integer.valueOf(userAcceptDto.getSrmsSex())); - } - - sysUser.setEmail(userAcceptDto.getSrmsEmail()); - sysUser.setPhone(userAcceptDto.getSrmsPhone()); - - if ("1".equals(userAcceptDto.getSrmsStatus())){ - sysUser.setStatus(CommonConstant.USER_UNFREEZE); - sysUser.setDelFlag(CommonConstant.DEL_FLAG_0); - } else { - sysUser.setStatus(CommonConstant.USER_FREEZE); - sysUser.setDelFlag(CommonConstant.DEL_FLAG_1); - } - - sysUser.setTelephone(userAcceptDto.getSrmsOfficePhone()); - sysUser.setCreateBy(DockingConstant.IAM_SYSTEM_NAME); - sysUser.setUpdateBy(DockingConstant.IAM_SYSTEM_NAME); - - if (CharSequenceUtil.isNotEmpty(userAcceptDto.getSrmsCreateTime())){ - Date createTime = DateUtils.str2Date(userAcceptDto.getSrmsCreateTime(), new SimpleDateFormat(DATE_FORMAT)); - sysUser.setCreateTime(createTime); - } - - if (CharSequenceUtil.isNotEmpty(userAcceptDto.getSrmsUpdateTime())){ - Date updateTime = DateUtils.str2Date(userAcceptDto.getSrmsUpdateTime(), new SimpleDateFormat(DATE_FORMAT)); - sysUser.setCreateTime(updateTime); - } - - sysUser.setActivitiSync(0); - sysUser.setUserIdentity(0); - - sysUser.setTypeId(userAcceptDto.getSrmsTypeId()); - sysUser.setPost(userAcceptDto.getSrmsPost()); - sysUser.setDutyLevelId(userAcceptDto.getSrmsDutyLevelId()); - sysUser.setDirectLeadership(userAcceptDto.getSrmsDirectLeadership()); - sysUser.setPostStatus(userAcceptDto.getSrmsPostStatus()); - - // 获取组织机构(多个逗号分隔) - String orgCode = userAcceptDto.getSrmsOrgCode(); - String selectedDeparts = orgCode; - - // 获取角色(多个逗号分隔),针对大部分角用户默认写死一般用户 - // (TODO 需要根据实际情况再沟通一遍角色怎么自动赋予),需要和角色接口那边沟通,确认具体情况 - String selectedRoles = defaultRoleIds; // 一般用户的角色ID - // 存储到用户表中 - this.sysUserService.saveUser(sysUser, selectedRoles, selectedDeparts); - iamUserCreateResponse.setUid(sysUser.getId()); - return iamUserCreateResponse; - } - - /** - *根据传过来看的bimUid标识用户的唯一id,取出后修改新传递的字符串 - * @param userAcceptDto - * @return - */ - public IamCommonResponseDto userUpdateService(IamUserAcceptDto userAcceptDto){ - log.info("用户更新收到的解密后数据:{}", userAcceptDto.toString()); - - if (userAcceptDto == null || CharSequenceUtil.isEmpty(userAcceptDto.getBimUid())){ - throw new IamGlobalException(userAcceptDto.getBimRequestId(), "用户id(bimUid)为空,无法进行用户信息更新"); - } - - // 取出对应的SysUser数据,将iam的数据全部抓取进行判空赋值后存入 - SysUser sysUser = this.sysUserService.getById(userAcceptDto.getBimUid()); - if (sysUser == null){ - throw new IamGlobalException(userAcceptDto.getBimRequestId(), "未查询到id为(" + userAcceptDto.getBimUid() + ")用户,无法更新"); - } - - if (CharSequenceUtil.isNotEmpty(userAcceptDto.getSrmsUsername())){ - sysUser.setUsername(userAcceptDto.getSrmsUsername()); - } - - if (CharSequenceUtil.isNotEmpty(userAcceptDto.getSrmsRealname())){ - sysUser.setRealname(userAcceptDto.getSrmsRealname()); - } - - if (CharSequenceUtil.isNotEmpty(userAcceptDto.getSrmsSex()) && NumberUtil.isInteger(userAcceptDto.getSrmsSex())){ - sysUser.setSex(Integer.valueOf(userAcceptDto.getSrmsSex())); - } - - - // 手机号 和 邮箱有加密,需要单独处理 - sysUser.setEmail(userAcceptDto.getSrmsEmail()); - sysUser.setPhone(userAcceptDto.getSrmsPhone()); - - if (CharSequenceUtil.isNotEmpty(userAcceptDto.getSrmsStatus())){ - if ("1".equals(userAcceptDto.getSrmsStatus())){ - sysUser.setStatus(CommonConstant.USER_UNFREEZE); - sysUser.setDelFlag(CommonConstant.DEL_FLAG_0); - } else { - sysUser.setStatus(CommonConstant.USER_FREEZE); - sysUser.setDelFlag(CommonConstant.DEL_FLAG_1); - } - } - - if (CharSequenceUtil.isNotEmpty(userAcceptDto.getSrmsOfficePhone())){ - sysUser.setTelephone(userAcceptDto.getSrmsOfficePhone()); - } - - sysUser.setUpdateBy(DockingConstant.IAM_SYSTEM_NAME); - - if (CharSequenceUtil.isNotEmpty(userAcceptDto.getSrmsUpdateTime())){ - Date updateTime = DateUtils.str2Date(userAcceptDto.getSrmsUpdateTime(), new SimpleDateFormat(DATE_FORMAT)); - sysUser.setCreateTime(updateTime); - } - - if (CharSequenceUtil.isNotEmpty(userAcceptDto.getSrmsTypeId())){ - sysUser.setTypeId(userAcceptDto.getSrmsTypeId()); - } - - if (CharSequenceUtil.isNotEmpty(userAcceptDto.getSrmsPost())){ - sysUser.setPost(userAcceptDto.getSrmsPost()); - } - - if (CharSequenceUtil.isNotEmpty(userAcceptDto.getSrmsDutyLevelId())){ - sysUser.setDutyLevelId(userAcceptDto.getSrmsDutyLevelId()); - } - - if (CharSequenceUtil.isNotEmpty(userAcceptDto.getSrmsDirectLeadership())){ - sysUser.setDirectLeadership(userAcceptDto.getSrmsDirectLeadership()); - } - - - if (CharSequenceUtil.isNotEmpty(userAcceptDto.getSrmsPostStatus())){ - sysUser.setPostStatus(userAcceptDto.getSrmsPostStatus()); - } - - // 获取组织机构(多个逗号分隔) - String orgCode = userAcceptDto.getSrmsOrgCode(); - - String selectedDeparts = null; - if (CharSequenceUtil.isNotEmpty(orgCode)){ - selectedDeparts = orgCode; - } - - // 编辑存储到用户表中,角色是系统自己处理的,更新不会影响角色,所以不传 - this.sysUserService.editUser(sysUser, null, selectedDeparts); - - IamCommonResponseDto iamCommonResponseDto = new IamCommonResponseDto(); - iamCommonResponseDto.setBimRequestId(userAcceptDto.getBimRequestId()); - iamCommonResponseDto.setResultCode(DockingConstant.IAM_SUCCESS_RESULT_CODE); - iamCommonResponseDto.setMessage(DockingConstant.IAM_SUCCESS_MESSAGE); - - return iamCommonResponseDto; - } - - /** - * 删除用户 - * @param userAcceptDto - * @return - */ - public IamCommonResponseDto userDeleteService(IamUserAcceptDto userAcceptDto){ - if (userAcceptDto == null || CharSequenceUtil.isEmpty(userAcceptDto.getBimUid())){ - String bimRequestId = null; - if (userAcceptDto != null) { - bimRequestId = userAcceptDto.getBimRequestId(); - } - - throw new IamGlobalException(bimRequestId, "用户id(bimUid)为空,无法进行用户删除"); - } - - log.info("用户删除收到的解密后数据:{}", userAcceptDto.toString()); - - this.sysUserService.deleteUser(userAcceptDto.getBimUid()); - - IamCommonResponseDto iamCommonResponseDto = new IamCommonResponseDto(); - iamCommonResponseDto.setBimRequestId(userAcceptDto.getBimRequestId()); - iamCommonResponseDto.setResultCode(DockingConstant.IAM_SUCCESS_RESULT_CODE); - iamCommonResponseDto.setMessage(DockingConstant.IAM_SUCCESS_MESSAGE); - - return iamCommonResponseDto; - } - - /** - * 转换Iam传来的组织数据,进行转换后存储 - * @param orgAcceptDto - * @return - */ - public IamOrgCreateResponse orgCreateService(IamOrgAcceptDto orgAcceptDto){ - if (orgAcceptDto == null || CharSequenceUtil.isEmpty(orgAcceptDto.getSrmsOrgCode())){ - String bimRequestId = null; - if (orgAcceptDto != null) { - bimRequestId = orgAcceptDto.getBimRequestId(); - } - - throw new IamGlobalException(bimRequestId, "机构编码为空,无法进行数据存储"); - } - - log.info("组织创建收到的解密后数据:{}", orgAcceptDto.toString()); - - IamOrgCreateResponse iamOrgCreateResponse = new IamOrgCreateResponse(); - iamOrgCreateResponse.setBimRequestId(orgAcceptDto.getBimRequestId()); - iamOrgCreateResponse.setResultCode(DockingConstant.IAM_SUCCESS_RESULT_CODE); - iamOrgCreateResponse.setMessage(DockingConstant.IAM_SUCCESS_MESSAGE); - - // 将iam的数据转换成sysDepart数据存入数据库 - SysDepart sysDepart = new SysDepart(); - sysDepart.setId(orgAcceptDto.getSrmsOrgCode()); - sysDepart.setParentId(orgAcceptDto.getSrmsParentCode()); - // 生成orgCode - JSONObject formData = new JSONObject(); - formData.put("parentId", orgAcceptDto.getSrmsParentCode()); - String[] codeArray = (String[]) FillRuleUtil.executeRule(FillRuleConstant.DEPART, formData); - sysDepart.setOrgCode(codeArray[0]); - sysDepart.setDepartName(orgAcceptDto.getSrmsDepartName()); - sysDepart.setDepartOrder(100); // 接入数据无排序,都设置为100 - - // 1为单位,2为部门,转映射到 本系统内的数据 1公司,2组织机构,映射关系一致。如下代码是为了后续修改方便 - if ("1".equals(orgAcceptDto.getSrmsOrgCategory())){ - sysDepart.setOrgCategory("1"); - } else { - sysDepart.setOrgCategory("2"); - } - - sysDepart.setOrgType(orgAcceptDto.getSrmsType()); - sysDepart.setOrgCode(orgAcceptDto.getSrmsOrgCode()); - - if ("1".equals(orgAcceptDto.getSrmsStatus())){ - sysDepart.setStatus(CommonConstant.STATUS_1); - sysDepart.setDelFlag(String.valueOf(CommonConstant.DEL_FLAG_0)); - } else { - sysDepart.setStatus(CommonConstant.STATUS_0); - sysDepart.setDelFlag(String.valueOf(CommonConstant.DEL_FLAG_1)); - } - - sysDepart.setCreateBy(DockingConstant.IAM_SYSTEM_NAME); - if (CharSequenceUtil.isNotEmpty(orgAcceptDto.getSrmsCreateTime())){ - Date createTime = DateUtils.str2Date(orgAcceptDto.getSrmsCreateTime(), new SimpleDateFormat(DATE_FORMAT)); - sysDepart.setCreateTime(createTime); - } - - sysDepart.setUpdateBy(DockingConstant.IAM_SYSTEM_NAME); - if (CharSequenceUtil.isNotEmpty(orgAcceptDto.getSrmsUpdateTime())){ - Date updateTime = DateUtils.str2Date(orgAcceptDto.getSrmsUpdateTime(), new SimpleDateFormat(DATE_FORMAT)); - sysDepart.setCreateTime(updateTime); - } - - sysDepart.setCompany(orgAcceptDto.getSrmsCompany()); - sysDepart.setHeadOfDepartment(orgAcceptDto.getSrmsHeadOfDepartment()); - sysDepart.setLeadersInCharge(orgAcceptDto.getSrmsLeadersInCharge()); - sysDepart.setDeputyLeader(orgAcceptDto.getSrmsDeputyLeader()); - - // 存储到组织机构表中 - this.sysDepartService.save(sysDepart); - - iamOrgCreateResponse.setOrgId(sysDepart.getId()); - - return iamOrgCreateResponse; - } - - /** - * 更新组织机构 - * @param orgAcceptDto - * @return - */ - public IamCommonResponseDto orgUpdateService(IamOrgAcceptDto orgAcceptDto){ - log.info("组织更新收到的解密后数据:{}", orgAcceptDto.toString()); - - if (orgAcceptDto == null || CharSequenceUtil.isEmpty(orgAcceptDto.getBimOrgId())){ - throw new IamGlobalException(orgAcceptDto.getBimRequestId(), "机构id为空,无法进行组织信息更新"); - } - - IamCommonResponseDto iamCommonResponseDto = new IamCommonResponseDto(); - iamCommonResponseDto.setBimRequestId(orgAcceptDto.getBimRequestId()); - iamCommonResponseDto.setResultCode(DockingConstant.IAM_SUCCESS_RESULT_CODE); - iamCommonResponseDto.setMessage(DockingConstant.IAM_SUCCESS_MESSAGE); - - // 将iam的数据转换成sysDepart数据存入数据库 - SysDepart sysDepart = this.sysDepartService.getById(orgAcceptDto.getBimOrgId()); - if (sysDepart == null){ - throw new IamGlobalException(orgAcceptDto.getBimRequestId(), "未查询到id为(" + orgAcceptDto.getBimOrgId() + ")组织,无法更新"); - } - - if (CharSequenceUtil.isNotEmpty(orgAcceptDto.getSrmsParentCode())){ - sysDepart.setParentId(orgAcceptDto.getSrmsParentCode()); - } - - if (CharSequenceUtil.isNotEmpty(orgAcceptDto.getSrmsDepartName())){ - sysDepart.setDepartName(orgAcceptDto.getSrmsDepartName()); - } - - if (CharSequenceUtil.isNotEmpty(orgAcceptDto.getSrmsOrgCategory())){ - // 1为单位,2为部门,转映射到 本系统内的数据 1公司,2组织机构,映射关系一致。如下代码是为了后续修改方便 - if ("1".equals(orgAcceptDto.getSrmsOrgCategory())){ - sysDepart.setOrgCategory("1"); - } else { - sysDepart.setOrgCategory("2"); - } - } - - if (CharSequenceUtil.isNotEmpty(orgAcceptDto.getSrmsType())){ - sysDepart.setOrgType(orgAcceptDto.getSrmsType()); - } - - if (CharSequenceUtil.isNotEmpty(orgAcceptDto.getSrmsOrgCode())){ - sysDepart.setOrgCode(orgAcceptDto.getSrmsOrgCode()); - } - - if (CharSequenceUtil.isNotEmpty(orgAcceptDto.getSrmsStatus())){ - if ("1".equals(orgAcceptDto.getSrmsStatus())){ - sysDepart.setStatus(CommonConstant.STATUS_1); - sysDepart.setDelFlag(String.valueOf(CommonConstant.DEL_FLAG_0)); - } else { - sysDepart.setStatus(CommonConstant.STATUS_0); - sysDepart.setDelFlag(String.valueOf(CommonConstant.DEL_FLAG_1)); - } - } - - sysDepart.setUpdateBy(DockingConstant.IAM_SYSTEM_NAME); - if (CharSequenceUtil.isNotEmpty(orgAcceptDto.getSrmsUpdateTime())){ - Date updateTime = DateUtils.str2Date(orgAcceptDto.getSrmsUpdateTime(), new SimpleDateFormat(DATE_FORMAT)); - sysDepart.setCreateTime(updateTime); - } - - if (CharSequenceUtil.isNotEmpty(orgAcceptDto.getSrmsCompany())){ - sysDepart.setCompany(orgAcceptDto.getSrmsCompany()); - } - - if (CharSequenceUtil.isNotEmpty(orgAcceptDto.getSrmsHeadOfDepartment())){ - sysDepart.setHeadOfDepartment(orgAcceptDto.getSrmsHeadOfDepartment()); - } - - if (CharSequenceUtil.isNotEmpty(orgAcceptDto.getSrmsLeadersInCharge())){ - sysDepart.setLeadersInCharge(orgAcceptDto.getSrmsLeadersInCharge()); - } - - if (CharSequenceUtil.isNotEmpty(orgAcceptDto.getSrmsDeputyLeader())){ - sysDepart.setDeputyLeader(orgAcceptDto.getSrmsDeputyLeader()); - } - - // 存储到组织机构表中 - this.sysDepartService.updateById(sysDepart); - - return iamCommonResponseDto; - } - - /** - * 删除组织机构 - * @param orgAcceptDto - * @return - */ - public IamCommonResponseDto orgDeleteService(IamOrgAcceptDto orgAcceptDto){ - if (orgAcceptDto == null || CharSequenceUtil.isEmpty(orgAcceptDto.getBimOrgId())){ - String bimRequestId = null; - if (orgAcceptDto != null) { - bimRequestId = orgAcceptDto.getBimRequestId(); - } - - throw new IamGlobalException(bimRequestId, "用户id(bimUid)为空,无法进行组织删除"); - } - - log.info("组织删除收到的解密后数据:{}", orgAcceptDto.toString()); - - this.sysDepartService.delete(orgAcceptDto.getBimOrgId()); - - IamCommonResponseDto iamCommonResponseDto = new IamCommonResponseDto(); - iamCommonResponseDto.setBimRequestId(orgAcceptDto.getBimRequestId()); - iamCommonResponseDto.setResultCode(DockingConstant.IAM_SUCCESS_RESULT_CODE); - iamCommonResponseDto.setMessage(DockingConstant.IAM_SUCCESS_MESSAGE); - - return iamCommonResponseDto; - } - - /** - * 处理统一响应PO层,并加密业务字段 - * @param acceptMessageHeader - * @param object - * @return - * @throws JsonProcessingException - */ - public SendPoEncryptPo handlerGloablEncryptResponse(MessageHeader acceptMessageHeader, Object object) throws JsonProcessingException { - SendPoEncryptPo sendPoEncryptPo = new SendPoEncryptPo(); - - MessageHeader sendMessageHeader = generatorReturnMessageHeader(acceptMessageHeader); - - ObjectMapper objectMapper = new ObjectMapper(); - String returnData = objectMapper.writeValueAsString(object); - // 加密PO层外的业务数据 - String encryptData = BamboocloudFacade.encrypt(returnData, DockingConstant.IAM_ENCRYPT_SECRET, DockingConstant.IAM_ENCRYPT_TYPE); - - sendPoEncryptPo.setMessageHeader(sendMessageHeader); - sendPoEncryptPo.setReturns(new SendEncryptReturnsPo(encryptData)); - - return sendPoEncryptPo; - } - - - /** - * @param acceptMessageHeader - * @return - */ - @NotNull - public MessageHeader generatorReturnMessageHeader(MessageHeader acceptMessageHeader) { - MessageHeader sendMessageHeader = new MessageHeader(); - sendMessageHeader.setInterfaceID(acceptMessageHeader.getInterfaceID()); - sendMessageHeader.setUUID(UUIDGenerator.generate()); - sendMessageHeader.setMessageId(UUIDGenerator.generate()); - sendMessageHeader.setSender(DockingConstant.SYSTEM_NAME); // 固定值,即本系统 - sendMessageHeader.setReceiver(DockingConstant.IAM_SYSTEM_NAME); - - Date curDate = new Date(); - sendMessageHeader.setSendDate(DateUtils.formatDate(curDate, "YYYYMMDD")); - sendMessageHeader.setSendTime(DateUtils.formatDate(curDate, "HHmmss")); - return sendMessageHeader; - } - - /** - * 角色创建 - */ - public BpmcResponseDto roleCreateService(RoleDto roleDto){ - SysRole sysRole = new SysRole(); - sysRole.setId(roleDto.getId()); - sysRole.setRoleName(roleDto.getName()); - sysRole.setRoleCode(roleDto.getCode()); - sysRole.setDescription(roleDto.getDescription()); - sysRole.setCreateBy(DockingConstant.IAM_SYSTEM_NAME); - sysRole.setCreateTime(roleDto.getCreateTime()); - sysRole.setUpdateBy(DockingConstant.IAM_SYSTEM_NAME); - sysRole.setUpdateTime(roleDto.getModifyTime()); - sysRole.setAppId(roleDto.getAppId()); - - sysRoleService.save(sysRole); - return BpmcResponseDto.success(); - } - - /** - * 角色更新 - */ - public BpmcResponseDto roleUpdateService(RoleDto roleDto){ - if (CharSequenceUtil.isEmpty(roleDto.getId())){ - return BpmcResponseDto.error("角色id为空,无法更新"); - } - - SysRole sysRole = sysRoleService.getById(roleDto.getId()); - - if (sysRole == null){ - return BpmcResponseDto.error("未找到对应id角色,无法更新"); - }else { - sysRole.setId(roleDto.getId()); - } - - if (CharSequenceUtil.isNotEmpty(roleDto.getName())){ - sysRole.setRoleName(roleDto.getName()); - } - - if (CharSequenceUtil.isNotEmpty(roleDto.getCode())){ - sysRole.setRoleCode(roleDto.getCode()); - } - - if (CharSequenceUtil.isNotEmpty(roleDto.getDescription())){ - sysRole.setDescription(roleDto.getDescription()); - } - - if (CharSequenceUtil.isNotEmpty(roleDto.getAppId())){ - sysRole.setAppId(roleDto.getAppId()); - } - - sysRole.setUpdateBy(DockingConstant.IAM_SYSTEM_NAME); - - if (roleDto.getModifyTime() != null){ - sysRole.setUpdateTime(roleDto.getModifyTime()); - } - - sysRoleService.updateById(sysRole); - - return BpmcResponseDto.success(); - } - - /** - * 角色删除 - */ - public BpmcResponseDto roleDeleteService(RoleDto roleDto){ - if (CharSequenceUtil.isEmpty(roleDto.getId())){ - return BpmcResponseDto.error("角色id为空,无法删除"); - } - - sysRoleService.deleteRole(roleDto.getId()); - - return BpmcResponseDto.success(); - } - - /** - * 菜单创建 - */ - public BpmcResponseDto resourceCreateService(ResourceDto resourceDto){ - SysPermission sysPermission = new SysPermission(); - sysPermission.setId(resourceDto.getId()); - if (StringUtils.isNotBlank(resourceDto.getParentId())){ - sysPermission.setParentId(resourceDto.getParentId()); - } - sysPermission.setName(resourceDto.getName()); - sysPermission.setPermsType("1"); // 1显示2禁用,固定为1 - sysPermission.setIcon("copy"); //IAM 没有icon字段,设定为固定值 - if (StringUtils.isNotBlank(resourceDto.getCode())){ - sysPermission.setPerms(resourceDto.getCode()); - } - sysPermission.setComponent(resourceDto.getComponent()); // 组件的路径 - if (CharSequenceUtil.isNotEmpty(resourceDto.getRedirect())){ - sysPermission.setRedirect(resourceDto.getRedirect()); // 地址栏显示的路径 - } - if (CharSequenceUtil.isNotEmpty(resourceDto.getUrl())){ - sysPermission.setUrl(resourceDto.getUrl()); // 路径 - } - sysPermission.setAppId(resourceDto.getAppId()); // appId - if (!Objects.isNull(resourceDto.getSort())){ - sysPermission.setSortNo(Double.valueOf(resourceDto.getSort())); - }else { - sysPermission.setSortNo(1D); - } - - - // TODO 菜单英文名数据库中没有,需要确认 - - // sysPermission的 menuType (0:一级菜单;1:子菜单 ;2:按钮权限) - if (DockingConstant.BPMC_RESOURCE_TYPE_MENU == resourceDto.getMenu_type()){ - if (CharSequenceUtil.isEmpty(resourceDto.getParentId())){ - sysPermission.setMenuType(0); - } else { - sysPermission.setMenuType(1); - } - } else { - sysPermission.setMenuType(2); - } - - sysPermission.setCreateTime(new Date()); - sysPermission.setCreateBy(DockingConstant.IAM_SYSTEM_NAME); - if (!Objects.isNull(resourceDto.getModifyTime())){ - sysPermission.setUpdateTime(resourceDto.getModifyTime()); - } - sysPermission.setUpdateBy(DockingConstant.IAM_SYSTEM_NAME); - - if (StringUtils.isNotBlank(resourceDto.getDescription())){ - sysPermission.setDescription(resourceDto.getDescription()); - } - - // 以下为IAM没有的属性,设置默认值 - sysPermission.setRoute(resourceDto.getIs_route() == 0 ? false : true); // 是否路由,设固定值 - sysPermission.setKeepAlive(resourceDto.getKeep_alive() == 0 ? false : true); // 是否缓存,设固定值 - sysPermission.setDelFlag(CommonConstant.DEL_FLAG_0); - sysPermission.setRuleFlag(0); // 是否配置菜单的数据权限 1是0否 默认0 - sysPermission.setHidden(resourceDto.getHidden() == 0 ? false : true); // 是否配置菜单的数据权限 1是0否 默认0 - sysPermission.setStatus("1"); // 按钮权限状态(0无效1有效) - sysPermission.setAlwaysShow(false); - sysPermission.setInternalOrExternal(resourceDto.getInternal_or_external() == 0 ? false : true); - - sysPermissionService.addPermission(sysPermission); - - return BpmcResponseDto.success(); - } - - /** - * 菜单更新 - */ - public BpmcResponseDto resourceUpdateService(ResourceDto resourceDto){ - if (CharSequenceUtil.isEmpty(resourceDto.getId())){ - return BpmcResponseDto.error("菜单id为空,无法更新"); - } - - SysPermission sysPermission = sysPermissionService.getById(resourceDto.getId()); - - if (sysPermission == null){ - return BpmcResponseDto.error("未找到对应id功能权限,无法更新"); - }else { - sysPermission.setId(resourceDto.getId()); - } - - if (CharSequenceUtil.isNotEmpty(resourceDto.getParentId())){ - sysPermission.setParentId(resourceDto.getParentId()); - } - - if (CharSequenceUtil.isNotEmpty(resourceDto.getName())){ - sysPermission.setName(resourceDto.getName()); - } - - if (CharSequenceUtil.isNotEmpty(resourceDto.getCode())){ - sysPermission.setPerms(resourceDto.getCode()); - } - - if (CharSequenceUtil.isNotEmpty(resourceDto.getComponent())){ - sysPermission.setComponent(resourceDto.getComponent()); // 组件的路径 - } - - if (CharSequenceUtil.isNotEmpty(resourceDto.getRedirect())){ - sysPermission.setRedirect(resourceDto.getRedirect()); // 地址栏显示的路径 - } - - if (CharSequenceUtil.isNotEmpty(resourceDto.getUrl())){ - sysPermission.setUrl(resourceDto.getUrl()); // 路径 - } - - if (resourceDto.getSort() != null){ - sysPermission.setSortNo(Double.valueOf(resourceDto.getSort())); - } - - if (CharSequenceUtil.isNotEmpty(resourceDto.getAppId())){ - sysPermission.setAppId(resourceDto.getAppId()); - } - - // sysPermission的 menuType (0:一级菜单;1:子菜单 ;2:按钮权限) - if (DockingConstant.BPMC_RESOURCE_TYPE_MENU == resourceDto.getMenu_type()){ - if (CharSequenceUtil.isEmpty(resourceDto.getParentId())){ - sysPermission.setMenuType(0); - } else { - sysPermission.setMenuType(1); - } - } else { - sysPermission.setMenuType(2); - } - if (!Objects.isNull(resourceDto.getModifyTime())){ - sysPermission.setUpdateTime(resourceDto.getModifyTime()); - } - sysPermission.setUpdateBy(DockingConstant.IAM_SYSTEM_NAME); - if (StringUtils.isNotBlank(resourceDto.getDescription())){ - sysPermission.setDescription(resourceDto.getDescription()); - } - - if (resourceDto.getIs_route() != null){ - sysPermission.setRoute(resourceDto.getIs_route() == 0 ? false : true); - } - - if (resourceDto.getKeep_alive() != null){ - sysPermission.setKeepAlive(resourceDto.getKeep_alive() == 0 ? false : true); - } - - if (resourceDto.getHidden() != null){ - sysPermission.setHidden(resourceDto.getKeep_alive() == 0 ? false : true); - } - - if (resourceDto.getInternal_or_external() != null){ - sysPermission.setInternalOrExternal(resourceDto.getInternal_or_external() == 0 ? false : true); - } - - sysPermissionService.editPermission(sysPermission); - return BpmcResponseDto.success(); - } - - /** - * 菜单删除(真实删除) - */ - public BpmcResponseDto resourceDeleteService(ResourceDto resourceDto){ - if (CharSequenceUtil.isEmpty(resourceDto.getId())){ - return BpmcResponseDto.error("菜单id为空,无法删除"); - } - sysPermissionService.deletePermission(resourceDto.getId()); - return BpmcResponseDto.success(); - } - - /** - * 用户角色关联 创建(批量) - */ - public BpmcResponseDto userRoleCreateService(List userRoleDtoList){ - List userRoleList = new ArrayList<>(); - - for (UserRoleDto userRoleDto : userRoleDtoList){ - if (CharSequenceUtil.isNotEmpty(userRoleDto.getAccountCode())){ - SysUserRole sysUserRole = new SysUserRole(); - // 根据 accountCode 字段(即用户名username) 从数据库里查出来用户id,在给到sysUserRole - LoginUser userInfo = sysBaseAPI.getUserByName(userRoleDto.getAccountCode()); - - if (userInfo == null){ - continue; - } - - sysUserRole.setUserId(userInfo.getId()); - sysUserRole.setRoleId(userRoleDto.getArId()); - - // 角色重复性校验 - int count = sysUserRoleService.count(new LambdaQueryWrapper() - .eq(SysUserRole::getUserId, sysUserRole.getUserId()) - .eq(SysUserRole::getRoleId, sysUserRole.getRoleId())); - if (count > 0){ - continue; - } - - userRoleList.add(sysUserRole); - } - } - this.sysUserRoleService.saveBatch(userRoleList); - - return BpmcResponseDto.success(); - } - - /** - * 用户角色关联 刪除(批量) - */ - public BpmcResponseDto userRoleDeleteService(List userRoleDtoList){ - for (UserRoleDto userRoleDto : userRoleDtoList){ - QueryWrapper queryWrapper = new QueryWrapper<>(); - // 根据 accountCode 字段(即用户名username) 从数据库里查出来用户id,在给到sysUserRole - LoginUser userInfo = sysBaseAPI.getUserByName(userRoleDto.getAccountCode()); - if (userInfo == null){ - continue; - } - - queryWrapper.eq("user_id", userInfo.getId()); - queryWrapper.eq("role_id", userRoleDto.getArId()); - - this.sysUserRoleService.remove(queryWrapper); - } - return BpmcResponseDto.success(); - } - - /** - * 角色菜单关联 创建(批量) - */ - public BpmcResponseDto roleResourceCreateService(List roleResourceDtoList){ - List sysRolePermissionList = new ArrayList<>(); - - for (RoleResourceDto roleResourceDto : roleResourceDtoList){ - SysRolePermission sysRolePermission = new SysRolePermission(); - sysRolePermission.setPermissionId(roleResourceDto.getAmId()); - sysRolePermission.setRoleId(roleResourceDto.getArId()); - // 重复性校验 - int count = sysRolePermissionService.count(new LambdaQueryWrapper() - .eq(SysRolePermission::getRoleId, sysRolePermission.getRoleId()) - .eq(SysRolePermission::getPermissionId, sysRolePermission.getPermissionId())); - if (count > 0){ - continue; - } - sysRolePermissionList.add(sysRolePermission); - } - this.sysRolePermissionService.saveBatch(sysRolePermissionList); - return BpmcResponseDto.success(); - } - - /** - * 用户角色关联 刪除(批量) - */ - public BpmcResponseDto roleResourceDeleteService(List roleResourceDtoList){ - for (RoleResourceDto roleResourceDto : roleResourceDtoList){ - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("permission_id", roleResourceDto.getAmId()); - queryWrapper.eq("role_id", roleResourceDto.getArId()); - - this.sysRolePermissionService.remove(queryWrapper); - } - - return BpmcResponseDto.success(); - } - - /** - * 返回全部用户的id - * @return - */ - public IamUserIdListResponse getAllUserIds(IamCommonAcceptDto commonAcceptDto){ - QueryWrapper userQueryWrapper = new QueryWrapper(); - userQueryWrapper.select("id"); - userQueryWrapper.ne("username", "admin"); - // 获取全部用户的id,得到一个String的list - List userIds = this.sysUserService.list(userQueryWrapper).stream().map(SysUser::getId).collect(Collectors.toList()); - - IamUserIdListResponse iamUserIdListResponse = new IamUserIdListResponse(); - iamUserIdListResponse.setUserIdList(userIds); - iamUserIdListResponse.setBimRequestId(commonAcceptDto.getBimRequestId()); - iamUserIdListResponse.setResultCode(DockingConstant.IAM_SUCCESS_RESULT_CODE); - iamUserIdListResponse.setMessage(DockingConstant.IAM_SUCCESS_MESSAGE); - - return iamUserIdListResponse; - } - - /** - * 返回全部组织的id - * @return - */ - public IamOrgIdListResponse getAllOrgIds(IamCommonAcceptDto commonAcceptDto){ - QueryWrapper departQueryWrapper = new QueryWrapper(); - departQueryWrapper.select("id"); - // 获取全部用户的id,得到一个String的list - List departIds = this.sysDepartService.list(departQueryWrapper).stream().map(SysDepart::getId).collect(Collectors.toList()); - - IamOrgIdListResponse iamOrgIdListResponse = new IamOrgIdListResponse(); - iamOrgIdListResponse.setOrgIdList(departIds); - iamOrgIdListResponse.setBimRequestId(commonAcceptDto.getBimRequestId()); - iamOrgIdListResponse.setResultCode(DockingConstant.IAM_SUCCESS_RESULT_CODE); - iamOrgIdListResponse.setMessage(DockingConstant.IAM_SUCCESS_MESSAGE); - - return iamOrgIdListResponse; - } - - /** - * 根据id查询用户信息 - * @return - */ - public IamUserInfoResponse getUserInfoById(IamUserAcceptDto iamUserAcceptDto){ - LoginUser userInfo = sysBaseAPI.getUserById(iamUserAcceptDto.getBimUid()); - SysUser sysUser = sysUserService.getById(iamUserAcceptDto.getBimUid()); - - if (userInfo == null || "admin".equals(userInfo.getUsername())){ - throw new IamGlobalException(iamUserAcceptDto.getBimRequestId(), "查询用户不存在"); - } - - IamUserAcceptDto userAcceptDto = new IamUserAcceptDto(); - userAcceptDto.setBimUid(userInfo.getId()); - userAcceptDto.setSrmsUsername(userInfo.getUsername()); - userAcceptDto.setSrmsRealname(userInfo.getRealname()); - userAcceptDto.setSrmsOrgCode(userInfo.getOrgCode()); - if (!Objects.isNull(userInfo.getSex())){ - userAcceptDto.setSrmsSex(String.valueOf(userInfo.getSex())); - } - userAcceptDto.setSrmsEmail(userInfo.getEmail()); - userAcceptDto.setSrmsPhone(userInfo.getPhone()); - userAcceptDto.setSrmsOfficePhone(userInfo.getTelephone()); - if (!Objects.isNull(userInfo.getCreateTime())){ - userAcceptDto.setSrmsCreateTime(new SimpleDateFormat(DATE_FORMAT).format(userInfo.getCreateTime())); - } - if (!Objects.isNull(sysUser.getUpdateTime())){ - userAcceptDto.setSrmsUpdateTime(new SimpleDateFormat(DATE_FORMAT).format(sysUser.getUpdateTime())); - } - userAcceptDto.setSrmsTypeId(sysUser.getTypeId()); - userAcceptDto.setSrmsPost(sysUser.getPost()); - userAcceptDto.setSrmsDutyLevelId(sysUser.getDutyLevelId()); - userAcceptDto.setSrmsDirectLeadership(sysUser.getDirectLeadership()); - userAcceptDto.setSrmsPostStatus(sysUser.getPostStatus()); - - IamUserInfoResponse iamUserInfoResponse = new IamUserInfoResponse(); - iamUserInfoResponse.setAccount(userAcceptDto); - iamUserInfoResponse.setBimRequestId(iamUserAcceptDto.getBimRequestId()); - iamUserInfoResponse.setResultCode(DockingConstant.IAM_SUCCESS_RESULT_CODE); - iamUserInfoResponse.setMessage(DockingConstant.IAM_SUCCESS_MESSAGE); - - return iamUserInfoResponse; - } - - /** - * 根据id查询用户信息 - * @return - */ - public IamOrgInfoResponse getOrgInfoById(IamOrgAcceptDto iamOrgAcceptDto){ - SysDepart sysDepart = this.sysDepartService.getById(iamOrgAcceptDto.getBimOrgId()); - - if (sysDepart == null){ - throw new IamGlobalException(iamOrgAcceptDto.getBimRequestId(), "查询组织不存在"); - } - - IamOrgAcceptDto orgAcceptDto = new IamOrgAcceptDto(); - orgAcceptDto.setBimOrgId(sysDepart.getId()); - orgAcceptDto.setSrmsOrgCode(sysDepart.getOrgCode()); - orgAcceptDto.setSrmsDepartName(sysDepart.getDepartName()); - orgAcceptDto.setSrmsParentCode(sysDepart.getParentId()); - orgAcceptDto.setSrmsCompany(sysDepart.getCompany()); - orgAcceptDto.setSrmsStatus(sysDepart.getStatus()); - orgAcceptDto.setSrmsType(sysDepart.getOrgType()); - orgAcceptDto.setSrmsOrgCategory(sysDepart.getOrgCategory()); - orgAcceptDto.setSrmsCreateTime(DateUtil.format(sysDepart.getCreateTime(), DatePattern.NORM_DATETIME_PATTERN)); - orgAcceptDto.setSrmsUpdateTime(DateUtil.format(sysDepart.getUpdateTime(), DatePattern.NORM_DATETIME_PATTERN)); - orgAcceptDto.setSrmsHeadOfDepartment(sysDepart.getHeadOfDepartment()); - orgAcceptDto.setSrmsLeadersInCharge(sysDepart.getLeadersInCharge()); - orgAcceptDto.setSrmsDeputyLeader(sysDepart.getDeputyLeader()); - - - IamOrgInfoResponse iamOrgInfoResponse = new IamOrgInfoResponse(); - iamOrgInfoResponse.setOrganization(orgAcceptDto); - iamOrgInfoResponse.setBimRequestId(iamOrgAcceptDto.getBimRequestId()); - iamOrgInfoResponse.setResultCode(DockingConstant.IAM_SUCCESS_RESULT_CODE); - iamOrgInfoResponse.setMessage(DockingConstant.IAM_SUCCESS_MESSAGE); - - return iamOrgInfoResponse; - } - -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/oa/controller/OALoginController.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/oa/controller/OALoginController.java deleted file mode 100644 index f6124945..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/oa/controller/OALoginController.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.jero.modules.docking.oa.controller; - -import com.alibaba.fastjson.JSONObject; -import com.jero.common.api.vo.Result; -import com.jero.modules.docking.oa.service.OAService; -import io.swagger.annotations.ApiOperation; -import lombok.extern.slf4j.Slf4j; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import javax.annotation.Resource; - - -/** - * @author lijiarao - */ -@RestController -@RequestMapping("/oa") -@Slf4j -public class OALoginController { - @Resource - private OAService oaService; - - @ApiOperation("OA单点登录") - @PostMapping("/login") - public Result login(@RequestBody JSONObject jsonObject){ - return oaService.login(jsonObject); - } -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/oa/service/OAService.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/oa/service/OAService.java deleted file mode 100644 index 0e8e8be8..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/oa/service/OAService.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.jero.modules.docking.oa.service; - -import cn.hutool.http.Header; -import cn.hutool.http.HttpRequest; -import cn.hutool.http.HttpUtil; -import com.alibaba.fastjson.JSONObject; -import com.jero.common.api.vo.Result; -import com.jero.modules.system.service.ILoginService; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Service; - -import javax.annotation.Resource; - -/** - * @author liJiaRao - * @date 2024-02-26 17:20 - */ -@Service -public class OAService { - @Resource - private ILoginService loginService; - - public static final String TICKET = "ticket"; - public static final String APP_ID = "appId"; - public static final String APP_SECRET = "appSecret"; - public static final String ACCESS_TOKEN = "accessToken"; - public static final String USER_NAME = "userName"; - - @Value("${oa.getAccessTokenUrl}") - private String getAccessTokenUrl; - @Value("${oa.getTicketInfoUrl}") - private String getTicketInfoUrl; - @Value("${oa.appId}") - private String appId; - @Value("${oa.appSecret}") - private String appSecret; - - - public Result login(JSONObject jsonObject) { - String ticket = jsonObject.getString(TICKET); - JSONObject body = new JSONObject(); - body.put(APP_ID, appId); - body.put(APP_SECRET, appSecret); - - String post = HttpRequest.post(getAccessTokenUrl) - .header(Header.CONTENT_TYPE, "application/json") - .body(body.toJSONString()) - .execute().body(); - JSONObject responseJson = JSONObject.parseObject(post); - - String accessToken = responseJson.getString(ACCESS_TOKEN); - JSONObject body1 = new JSONObject(); - body1.put(ACCESS_TOKEN, accessToken); - body1.put(TICKET, ticket); - String post1 = HttpRequest.post(getTicketInfoUrl) - .header(Header.CONTENT_TYPE, "application/json") - .body(body1.toJSONString()) - .execute().body(); - JSONObject responseJson1 = JSONObject.parseObject(post1); - String userName = responseJson1.getString(USER_NAME); - - return loginService.loginByUserName(userName); - } -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/controller/SrmsApiController.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/controller/SrmsApiController.java deleted file mode 100644 index ad331527..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/controller/SrmsApiController.java +++ /dev/null @@ -1,219 +0,0 @@ -package com.jero.modules.docking.srms.controller; - -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; -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.constant.CommonConstant; -import com.jero.modules.docking.srms.service.SrmsApiService; -import com.jero.modules.docking.srms.vo.ByFileRows; -import com.jero.modules.docking.srms.vo.StandardPageVO; -import com.jero.modules.docking.srms.vo.StandardTree; -import com.jero.modules.docking.utils.ResponsesUtil; -import com.jero.modules.laws.standard.service.PartNameService; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import lombok.extern.slf4j.Slf4j; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import javax.annotation.Resource; -import javax.servlet.http.HttpServletRequest; -import java.util.List; -import java.util.Objects; - -/** - * @author lqt - * @version 1.0 - * @date 2024/1/18 9:52 - */ -@Slf4j -@Api(tags="srms") -@RestController -@RequestMapping("/srms") -public class SrmsApiController { - @Resource - private SrmsApiService srmsApiService; - - private static final String MESSAGE_HEADER = "MessageHeader"; - private static final String RESULT = "Result"; - - @Resource - private PartNameService partNameService; - - @ApiOperation("获取token") - @AutoLog(value = "获取token") - @PostMapping("/getByToken") - public JSONObject getByToken(@RequestBody JSONObject json){ - try { - Result re = srmsApiService.getByToken(json); - if(!re.isSuccess()){ - return ResponsesUtil.getJsonResult(json.get(MESSAGE_HEADER),ResponsesUtil.getJsonErr(re.getMessage(),re.getCode())); - } - String token = re.getResult().get("token").toString(); - JSONObject jsonResponses = ResponsesUtil.getJsonOk(re.getMessage()); - jsonResponses.put("token",token); - return ResponsesUtil.getJsonResult(json.get(MESSAGE_HEADER),jsonResponses); - }catch (Exception e){ - log.error("获取token异常:",e); - return ResponsesUtil.getJsonResult(json.get(MESSAGE_HEADER),ResponsesUtil.getJsonErr("操作失败",CommonConstant.SC_INTERNAL_SERVER_ERROR_500)); - } - } - - @ApiOperation("标准法规文档查询") - @AutoLog(value = "标准法规文档查询") - @PostMapping("/getByLawsFileList") - public JSONObject getByLawsFileList(@RequestBody JSONObject json, HttpServletRequest req){ - try { - Result> re = srmsApiService.getByLawsFileList(json,req); - if(!re.isSuccess()){ - return ResponsesUtil.getJsonResult(json.get(MESSAGE_HEADER),ResponsesUtil.getJsonErr(re.getMessage(),re.getCode())); - } - List list = re.getResult(); - JSONObject jsonResponses = ResponsesUtil.getJsonOk(re.getMessage()); - jsonResponses.put("Rows",list); - return ResponsesUtil.getJsonResult(json.get(MESSAGE_HEADER),jsonResponses); - }catch (Exception e){ - log.error("标准法规文档查询异常:",e); - return ResponsesUtil.getJsonResult(json.get(MESSAGE_HEADER),ResponsesUtil.getJsonErr("操作失败", CommonConstant.SC_INTERNAL_SERVER_ERROR_500)); - } - } - - @ApiOperation("设计导航-产品设计条款查询") - @AutoLog(value = "设计导航-产品设计条款查询") - @PostMapping("/getByLawsProductDesign") - public JSONObject getByLawsProductDesign(@RequestBody JSONObject json, HttpServletRequest req){ - try { - Result> re = srmsApiService.getByLawsProductDesign(json,req); - if(!re.isSuccess()){ - return ResponsesUtil.getJsonResult(json.get(MESSAGE_HEADER),ResponsesUtil.getJsonErr(re.getMessage(),re.getCode())); - } - List list = re.getResult(); - JSONObject jsonResponses = ResponsesUtil.getJsonOk(re.getMessage()); - jsonResponses.put("Rows",list); - return ResponsesUtil.getJsonResult(json.get(MESSAGE_HEADER),jsonResponses); - }catch (Exception e){ - log.error("设计导航-产品设计条款查询异常:",e); - return ResponsesUtil.getJsonResult(json.get(MESSAGE_HEADER),ResponsesUtil.getJsonErr("操作失败",CommonConstant.SC_INTERNAL_SERVER_ERROR_500)); - } - } - - @ApiOperation("获取所有体系数据") - @AutoLog(value = "获取所有体系数据") - @PostMapping("/getByLawsSystem") - public JSONObject getByLawsSystem(@RequestBody JSONObject json, HttpServletRequest req){ - try { - Result> re = srmsApiService.getByLawsSystem(json,req); - if(!re.isSuccess()){ - return ResponsesUtil.getJsonResult(json.get(MESSAGE_HEADER),ResponsesUtil.getJsonErr(re.getMessage(),re.getCode())); - } - List list = re.getResult(); - JSONObject jsonResponses = ResponsesUtil.getJsonOk(re.getMessage()); - jsonResponses.put("result",JSON.toJSONString(list)); - return ResponsesUtil.getJsonResult(json.get(MESSAGE_HEADER),jsonResponses); - }catch (Exception e){ - log.error("获取所有体系数据异常:",e); - return ResponsesUtil.getJsonResult(json.get(MESSAGE_HEADER),ResponsesUtil.getJsonErr("操作失败",CommonConstant.SC_INTERNAL_SERVER_ERROR_500)); - } - } - - @ApiOperation("分页查询标准数据") - @AutoLog(value = "分页查询标准数据") - @PostMapping("/getByLawsStandardPage") - public JSONObject getByLawsStandardPage(@RequestBody JSONObject json, HttpServletRequest req){ - try { - Result> re = srmsApiService.getByLawsStandardPage(json,req); - if(!re.isSuccess()){ - return ResponsesUtil.getJsonResult(json.get(MESSAGE_HEADER),ResponsesUtil.getJsonErr(re.getMessage(),re.getCode())); - } - IPage page = re.getResult(); - JSONObject jsonPage = new JSONObject(); - jsonPage.put("current",page.getCurrent()); - jsonPage.put("pages",page.getPages()); - jsonPage.put("size",page.getSize()); - jsonPage.put("total",page.getTotal()); - jsonPage.put("Rows_Result",page.getRecords()); - JSONObject jsonResponses = ResponsesUtil.getJsonOk(re.getMessage()); - jsonResponses.put(RESULT,jsonPage); - return ResponsesUtil.getJsonResult(json.get(MESSAGE_HEADER),jsonResponses); - }catch (Exception e){ - log.error("分页查询标准数据异常:",e); - return ResponsesUtil.getJsonResult(json.get(MESSAGE_HEADER),ResponsesUtil.getJsonErr("操作失败",CommonConstant.SC_INTERNAL_SERVER_ERROR_500)); - } - } - - @ApiOperation("零部件分类树同步接口") - @AutoLog(value = "零部件分类树同步接口") - @PostMapping("/syncPartData") - public JSONObject syncPartData(@RequestBody JSONObject json, HttpServletRequest req){ - try { - Result re = srmsApiService.syncPartData(json,req); - partNameService.fixFirstNodeCode(); - if(!re.isSuccess()){ - log.error("零部件分类树同步接口同步失败",re.getMessage()); - return ResponsesUtil.getJsonResult(json.get(MESSAGE_HEADER),null); - } - return ResponsesUtil.getJsonResult(json.get(MESSAGE_HEADER),null); - }catch (Exception e){ - log.error("零部件分类树同步接口异常:",e); - return ResponsesUtil.getJsonResult(json.get(MESSAGE_HEADER),null); - } - } - - @PostMapping("/syncPartStandard") - public Result syncPartStandard(){ - return srmsApiService.syncPartStandard(); - } - - @ApiOperation("E采通获取标准信息") - @AutoLog(value = "E采通获取标准信息") - @PostMapping("/getEStandardInfo") - public JSONObject getEStandardInfo(@RequestBody JSONObject json, HttpServletRequest req) { - JSONObject messageHandler = JSON.parseObject(JSON.toJSONString(json.get(MESSAGE_HEADER))); - String uuid = messageHandler.get("UUID").toString(); - try { - Result re = srmsApiService.getEStandardInfo(json, req); - JSONArray rows = re.getResult(); - JSONObject resultJson = new JSONObject(); - resultJson.put("MessageHeader", srmsApiService.getMessageHandler("CNHTC_PO1000402", uuid, "SCM")); - JSONObject jsonResponses = ResponsesUtil.getJsonOkUpper(); - if (!Objects.isNull(rows)) { - jsonResponses.put("Rows", rows); - } - resultJson.put("Responses", jsonResponses); - return resultJson; - } catch (Exception e) { - log.error("E采通获取标准信息异常:", e); - return ResponsesUtil.getJsonResult( - srmsApiService.getMessageHandler("interface_id", uuid, "SCM"), - ResponsesUtil.getJsonErrUpper("操作失败", CommonConstant.SC_INTERNAL_SERVER_ERROR_500)); - } - } - - @AutoLog(value = "PDM获取零部件号绑定的法规数据信息") - @PostMapping("/bindPartStandardInfo") - public JSONObject getBindPartStandardInfo(@RequestBody JSONObject json) { - JSONObject messageHandler = JSON.parseObject(JSON.toJSONString(json.get(MESSAGE_HEADER))); - String uuid = messageHandler.get("UUID").toString(); - try { - List rows = srmsApiService.getBindPartStandardInfo(json); - JSONObject resultJson = new JSONObject(); - resultJson.put("MessageHeader", srmsApiService.getMessageHandler("CNHTC_PO1000496", uuid, "PDM")); - JSONObject jsonResponses = ResponsesUtil.getJsonOkUpper(); - if (!Objects.isNull(rows)) { - jsonResponses.put("Rows", rows); - } - resultJson.put("Responses", jsonResponses); - return resultJson; - } catch (Exception e) { - log.error("PDM获取零部件号绑定的法规数据信息异常:", e); - return ResponsesUtil.getJsonResult( - srmsApiService.getMessageHandler("interface_id", uuid, "PDM"), - ResponsesUtil.getJsonErrUpper("操作失败", CommonConstant.SC_INTERNAL_SERVER_ERROR_500)); - } - } -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/dto/ByFileListRequests.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/dto/ByFileListRequests.java deleted file mode 100644 index 9c571fc5..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/dto/ByFileListRequests.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.jero.modules.docking.srms.dto; - -import lombok.Data; - -import java.io.Serializable; - -/** - * @author lqt - * @version 1.0 - * @date 2024/1/18 10:10 - */ -@Data -public class ByFileListRequests implements Serializable { - - /** - * 工号(唯一值) - */ - private String partCategoryNum; - /** - * 系统的key值(对接时SRMS提供) - */ - private String partCategoryName; - /** - * 系统对应秘钥(对接时SRMS提供) - */ - private String secret; -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/dto/ByTokenRequests.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/dto/ByTokenRequests.java deleted file mode 100644 index 903a93ea..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/dto/ByTokenRequests.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.jero.modules.docking.srms.dto; - -import lombok.Data; - -import java.io.Serializable; - -/** - * @author lqt - * @version 1.0 - * @date 2024/1/18 10:10 - */ -@Data -public class ByTokenRequests implements Serializable { - - /** - * 工号(唯一值) - */ - private String username; - /** - * 系统的key值(对接时SRMS提供) - */ - private String appkey; - /** - * 系统对应秘钥(对接时SRMS提供) - */ - private String secret; -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/dto/ProductDesign.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/dto/ProductDesign.java deleted file mode 100644 index 4aed4c10..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/dto/ProductDesign.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.jero.modules.docking.srms.dto; - -import lombok.Data; - -import java.io.Serializable; - -/** - * @author lqt - * @version 1.0 - * @date 2024/1/19 17:48 - */ -@Data -public class ProductDesign implements Serializable { - /** - * 设计导航唯一值 - */ - private String id; - /** - * 标准编号 - */ - private String standardNumber; - /** - * 条款标签 - */ - private String queryLabels; - /** - * 条款内容 - */ - private String itemContent; -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/entity/LawsPartStandard.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/entity/LawsPartStandard.java deleted file mode 100644 index 466a4b42..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/entity/LawsPartStandard.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.jero.modules.docking.srms.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableLogic; -import com.fasterxml.jackson.annotation.JsonFormat; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import org.springframework.format.annotation.DateTimeFormat; - -import java.io.Serializable; -import java.util.Date; - -/** - * @author lqt - * @version 1.0 - * @date 2024/1/30 14:05 - */ -@Data -public class LawsPartStandard implements Serializable { - private static final long serialVersionUID = 1L; - - /**主键ID*/ - @TableId(type = IdType.ASSIGN_ID) - @ApiModelProperty(value = "主键ID") - private String id; - /**标准id*/ - @ApiModelProperty(value = "标准id") - private String standardId; - /**分类内部码*/ - @ApiModelProperty(value = "分类内部码") - private String partCategoryNum; - /**标准分类:设计规范:1释放规范:2*/ - @ApiModelProperty(value = "标准分类:设计规范:1释放规范:2") - private String standardPdmType; - /**标准编号*/ - @ApiModelProperty(value = "标准编号") - private String standardNumber; - /**备用字段1*/ - @ApiModelProperty(value = "备用字段1") - private String remark1; - /**备用字段2*/ - @ApiModelProperty(value = "备用字段2") - private String remark2; - /**备用字段3*/ - @ApiModelProperty(value = "备用字段3") - private String remark3; - /**创建人*/ - @ApiModelProperty(value = "创建人") - private String createBy; - /**创建日期*/ - @JsonFormat(timezone = "GMT+8",pattern = "yyyy年MM月dd日 EEEE") - @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") - @ApiModelProperty(value = "创建日期") - private Date createTime; - /**更新人*/ - @ApiModelProperty(value = "更新人") - private String updateBy; - /**更新日期*/ - @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") - @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") - @ApiModelProperty(value = "更新日期") - private Date updateTime; - /**删除状态(0-正常,1-删除)*/ - @ApiModelProperty(value = "删除状态(0-正常,1-删除)") - @TableLogic - private Integer delFlag; -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/entity/LawsSysApiInfo.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/entity/LawsSysApiInfo.java deleted file mode 100644 index f50f2b80..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/entity/LawsSysApiInfo.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.jero.modules.docking.srms.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.jero.common.aspect.annotation.Dict; -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 java.io.Serializable; - - -/** - * @Description: 系统对接信息 - * @Author: jero-boot - * @Date: 2023-10-18 - * @Version: V1.0 - */ -@Data -@TableName("laws_sys_api_info") -@Accessors(chain = true) -@EqualsAndHashCode(callSuper = false) -@ApiModel(value="laws_sys_api_info对象", description="系统对接信息") -public class LawsSysApiInfo implements Serializable { - private static final long serialVersionUID = 1L; - - /**主键ID*/ - @TableId(type = IdType.ASSIGN_ID) - @ApiModelProperty(value = "主键ID") - private String id; - /**系统中文名称*/ - @ApiModelProperty(value = "系统中文名称") - private String sysName; - /**系统唯一标识*/ - @ApiModelProperty(value = "系统唯一标识") - private String sysCode; - /**系统的key值*/ - @ApiModelProperty(value = "系统的key值") - private String appKey; - /**系统对应秘钥*/ - @ApiModelProperty(value = "系统对应秘钥") - private String secret; - /**限制IP*/ - @ApiModelProperty(value = "限制IP") - private String ip; -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/job/SyncPartStandardJob.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/job/SyncPartStandardJob.java deleted file mode 100644 index f63fca37..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/job/SyncPartStandardJob.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.jero.modules.docking.srms.job; - -import com.jero.modules.docking.srms.service.SrmsApiService; -import lombok.extern.slf4j.Slf4j; -import org.quartz.Job; -import org.quartz.JobExecutionContext; -import org.quartz.JobExecutionException; - -import javax.annotation.Resource; - -/** -* 分类树标准法规回写 -* @author LQT -* @date 2024/2/21 16:01 -*/ -@Slf4j -public class SyncPartStandardJob implements Job { - - @Resource - private SrmsApiService srmsApiService; - - @Override - public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { - log.info("每日分类树标准法规回写开始"); - // 同步数据 - srmsApiService.syncPartStandard(); - // 发送请求 - srmsApiService.sendPartStandard(); - } -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/mapper/LawsPartStandardMapper.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/mapper/LawsPartStandardMapper.java deleted file mode 100644 index 7508aa05..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/mapper/LawsPartStandardMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.jero.modules.docking.srms.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.jero.modules.docking.srms.entity.LawsPartStandard; -import org.apache.ibatis.annotations.Mapper; - -/** - * @Description: - * @Author: jero-boot - * @Date: 2023-10-18 - * @Version: V1.0 - */ -@Mapper -public interface LawsPartStandardMapper extends BaseMapper { - -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/mapper/LawsStandardMapper.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/mapper/LawsStandardMapper.java deleted file mode 100644 index 1e0e3ff5..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/mapper/LawsStandardMapper.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.jero.modules.docking.srms.mapper; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.core.toolkit.Constants; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.jero.modules.docking.srms.entity.LawsPartStandard; -import com.jero.modules.docking.srms.vo.ByFileRows; -import com.jero.modules.docking.srms.vo.StandardPageVO; -import com.jero.modules.docking.srms.vo.StandardVO; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; - -import java.util.List; -import java.util.Map; - -/** - * @Description: ASMS国内法规 - * @Author: jero-boot - * @Date: 2023-10-20 - * @Version: V1.0 - */ -@Mapper -public interface LawsStandardMapper{ - - /** - * - * @author LQT - * @date 2024/1/19 15:43 - * @param standard - * @return java.util.List - */ - List getStandard(@Param("standard") StandardVO standard); - - /** - * - * @author LQT - * @date 2024/1/19 15:43 - * @param standardNumber - * @param queryLabels - * @return java.util.List - */ - List> getStandardByProductDesign(@Param("standardNumber") String standardNumber, - @Param("queryLabels") String queryLabels); - - IPage getByLawsStandardPage(Page page, - @Param(Constants.WRAPPER) QueryWrapper queryWrapper); - - /** - * 更新父级id - * @author LQT - * @date 2024/1/30 15:07 - * @param - * @return void - */ - void updatePartParentId(); - - /** - * 获取所有 标准分类: - * 设计规范:1 - * 释放规范:2 (系统中编码为4) - * @author LQT - * @date 2024/1/30 16:51 - * @param - * @return void - */ - List getSyncPartStandard(); - -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/mapper/LawsSysApiInfoMapper.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/mapper/LawsSysApiInfoMapper.java deleted file mode 100644 index 3a4be91c..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/mapper/LawsSysApiInfoMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.jero.modules.docking.srms.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.jero.modules.docking.srms.entity.LawsSysApiInfo; -import org.apache.ibatis.annotations.Mapper; - -/** - * @Description: - * @Author: jero-boot - * @Date: 2023-10-18 - * @Version: V1.0 - */ -@Mapper -public interface LawsSysApiInfoMapper extends BaseMapper { - -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/mapper/xml/LawsPartStandardMapper.xml b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/mapper/xml/LawsPartStandardMapper.xml deleted file mode 100644 index fc0e61a4..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/mapper/xml/LawsPartStandardMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/mapper/xml/LawsStandardMapper.xml b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/mapper/xml/LawsStandardMapper.xml deleted file mode 100644 index c7667541..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/mapper/xml/LawsStandardMapper.xml +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - - - - - update laws_part_name l1 set parent_id = (select id from (select id from laws_part_name l2 where l2.code = l1.parent_code) aa) - - - diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/mapper/xml/LawsSysApiInfoMapper.xml b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/mapper/xml/LawsSysApiInfoMapper.xml deleted file mode 100644 index e813e363..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/mapper/xml/LawsSysApiInfoMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/service/ILawsPartStandardService.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/service/ILawsPartStandardService.java deleted file mode 100644 index cd44a009..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/service/ILawsPartStandardService.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.jero.modules.docking.srms.service; - -import com.baomidou.mybatisplus.extension.service.IService; -import com.jero.modules.docking.srms.entity.LawsPartStandard; - -/** - * @Description: 系统对接信息 - * @Author: jero-boot - * @Date: 2023-10-18 - * @Version: V1.0 - */ -public interface ILawsPartStandardService extends IService { - -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/service/ILawsSysApiInfoService.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/service/ILawsSysApiInfoService.java deleted file mode 100644 index 4579e4e5..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/service/ILawsSysApiInfoService.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.jero.modules.docking.srms.service; - -import com.baomidou.mybatisplus.extension.service.IService; -import com.jero.modules.docking.srms.entity.LawsSysApiInfo; - -/** - * @Description: 系统对接信息 - * @Author: jero-boot - * @Date: 2023-10-18 - * @Version: V1.0 - */ -public interface ILawsSysApiInfoService extends IService { - -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/service/SrmsApiService.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/service/SrmsApiService.java deleted file mode 100644 index 180eb3a0..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/service/SrmsApiService.java +++ /dev/null @@ -1,122 +0,0 @@ -package com.jero.modules.docking.srms.service; - -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.jero.common.api.vo.Result; -import com.jero.modules.docking.srms.vo.ByFileRows; -import com.jero.modules.docking.srms.vo.StandardPageVO; -import com.jero.modules.docking.srms.vo.StandardTree; - -import javax.servlet.http.HttpServletRequest; -import java.util.List; - -/** - * @author lqt - * @version 1.0 - * @date 2024/1/18 9:49 - */ -public interface SrmsApiService { - - /** - * 获取token - * @author LQT - * @date 2024/1/18 15:41 - * @param json - * @return com.jero.common.api.vo.Result - */ - Result getByToken(JSONObject json); - - /** - * 标准法规文档查询 - * @author LQT - * @date 2024/1/18 16:59 - * @param json - * @param req - * @return com.alibaba.fastjson.JSONObject - */ - Result> getByLawsFileList(JSONObject json, HttpServletRequest req); - - /** - * 设计导航-产品设计条款查询 - * @author LQT - * @date 2024/1/19 17:32 - * @param json - * @param req - * @return com.jero.common.api.vo.Result - */ - Result> getByLawsProductDesign(JSONObject json, HttpServletRequest req); - - /** - * 获取所有体系数据 - * @author LQT - * @date 2024/1/19 17:32 - * @param json - * @param req - * @return com.jero.common.api.vo.Result - */ - Result> getByLawsSystem(JSONObject json, HttpServletRequest req); - - /** - * 分页查询标准数据 - * @author LQT - * @date 2024/1/19 17:32 - * @param json - * @param req - * @return com.jero.common.api.vo.Result - */ - Result> getByLawsStandardPage(JSONObject json, HttpServletRequest req); - - /** - * 零部件分类树同步接口 - * @author LQT - * @date 2024/1/26 16:05 - * @param json - * @param req - * @return com.jero.common.api.vo.Result - */ - Result syncPartData(JSONObject json, HttpServletRequest req); - - /** - * 分类树标准法规回写 - * @author LQT - * @date 2024/1/26 16:05 - * @return com.jero.common.api.vo.Result - */ - Result syncPartStandard(); - - /** - * 发送分类树标准法规 - * @author LQT - * @date 2024/1/30 17:15 - * @param - * @return com.jero.common.api.vo.Result - */ - void sendPartStandard(); - - /** - * E采通获取标准信息 - * @author LQT - * @date 2024/1/26 15:08 - * @param json - * @param req - * @return com.jero.common.api.vo.Result> - */ - Result getEStandardInfo(JSONObject json, HttpServletRequest req); - - /** - * 获取固定的MessageHandler - * @param interfaceId - * @return com.jero.common.api.vo.Result> - */ - JSONObject getMessageHandler(String interfaceId, String uuid, String receiver); - - /** - * 获取零部件号绑定的法规数据 - * @author CHH - * @date 2024/4/28 15:08 - * @param json - * @return com.jero.common.api.vo.Result> - */ - List getBindPartStandardInfo(JSONObject json); -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/service/impl/ILawsPartStandardServiceImpl.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/service/impl/ILawsPartStandardServiceImpl.java deleted file mode 100644 index f4e3801f..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/service/impl/ILawsPartStandardServiceImpl.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.jero.modules.docking.srms.service.impl; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.jero.modules.docking.srms.entity.LawsPartStandard; -import com.jero.modules.docking.srms.mapper.LawsPartStandardMapper; -import com.jero.modules.docking.srms.service.ILawsPartStandardService; -import org.springframework.stereotype.Service; - -/** - * @Description: - * @Author: jero-boot - * @Date: 2023-10-18 - * @Version: V1.0 - */ -@Service -public class ILawsPartStandardServiceImpl extends ServiceImpl implements ILawsPartStandardService { - -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/service/impl/ILawsSysApiInfoServiceImpl.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/service/impl/ILawsSysApiInfoServiceImpl.java deleted file mode 100644 index 84e15929..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/service/impl/ILawsSysApiInfoServiceImpl.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.jero.modules.docking.srms.service.impl; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.jero.modules.docking.srms.entity.LawsSysApiInfo; -import com.jero.modules.docking.srms.mapper.LawsSysApiInfoMapper; -import com.jero.modules.docking.srms.service.ILawsSysApiInfoService; -import org.springframework.stereotype.Service; - -/** - * @Description: - * @Author: jero-boot - * @Date: 2023-10-18 - * @Version: V1.0 - */ -@Service -public class ILawsSysApiInfoServiceImpl extends ServiceImpl implements ILawsSysApiInfoService { - -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/service/impl/SrmsApiServiceImpl.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/service/impl/SrmsApiServiceImpl.java deleted file mode 100644 index b8b80076..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/service/impl/SrmsApiServiceImpl.java +++ /dev/null @@ -1,1024 +0,0 @@ -package com.jero.modules.docking.srms.service.impl; - -import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.google.common.base.CaseFormat; -import com.jero.common.api.CommonAPI; -import com.jero.common.api.vo.Result; -import com.jero.common.exception.JeroBootException; -import com.jero.common.system.api.ISysBaseAPI; -import com.jero.common.system.vo.LoginUser; -import com.jero.common.util.MD5Util; -import com.jero.common.util.RedisUtil; -import com.jero.common.util.TokenUtils; -import com.jero.modules.bindPart.entity.BindPartStandardVO; -import com.jero.modules.docking.srms.dto.ByTokenRequests; -import com.jero.modules.docking.srms.dto.ProductDesign; -import com.jero.modules.docking.srms.entity.LawsPartStandard; -import com.jero.modules.docking.srms.entity.LawsSysApiInfo; -import com.jero.modules.docking.srms.mapper.LawsStandardMapper; -import com.jero.modules.docking.srms.service.ILawsPartStandardService; -import com.jero.modules.docking.srms.service.ILawsSysApiInfoService; -import com.jero.modules.docking.srms.service.SrmsApiService; -import com.jero.modules.docking.srms.vo.*; -import com.jero.modules.bindPart.entity.LawsBindPart; -import com.jero.modules.bindPart.service.ILawsBindPartService; -import com.jero.modules.laws.documenttool.entity.LawsDocumentSplit; -import com.jero.modules.laws.documenttool.mapper.LawsDocumentSplitMapper; -import com.jero.modules.laws.documenttool.service.IDocumentSplitService; -import com.jero.modules.laws.enterprise.entity.vo.LawsTreeNodeModel; -import com.jero.modules.laws.standard.entity.LawsDomesticStandard; -import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard; -import com.jero.modules.laws.standard.entity.LawsOverseasStandard; -import com.jero.modules.laws.standard.entity.PartName; -import com.jero.modules.laws.standard.service.*; -import com.jero.modules.oss.entity.OSSFile; -import com.jero.modules.oss.service.IOSSFileService; -import com.jero.modules.split.entity.SarFileSplitInfoEO; -import com.jero.modules.split.entity.SarFileSplitMenuEO; -import com.jero.modules.split.page.SarFileSplitMenuEOPage; -import com.jero.modules.split.service.ISarFileSplitInfoService; -import com.jero.modules.split.service.ISarFileSplitMenuEOService; -import com.jero.modules.sys.utils.UserUtils; -import com.jero.modules.system.service.ILoginService; -import com.jero.modules.tag.enums.TableNameEnum; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang3.StringUtils; -import org.apache.shiro.SecurityUtils; -import org.apache.shiro.authc.AuthenticationException; -import org.jetbrains.annotations.Nullable; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.http.HttpEntity; -import org.springframework.http.HttpHeaders; -import org.springframework.http.MediaType; -import org.springframework.stereotype.Service; -import org.springframework.web.client.RestTemplate; - -import javax.annotation.Resource; -import javax.servlet.http.HttpServletRequest; -import java.net.URLEncoder; -import java.nio.charset.StandardCharsets; -import java.text.SimpleDateFormat; -import java.time.LocalDateTime; -import java.util.*; -import java.util.stream.Collectors; - -/** - * @author lqt - * @version 1.0 - * @date 2024/1/18 9:53 - */ -@Slf4j -@Service -public class SrmsApiServiceImpl implements SrmsApiService { - - @Resource - private ILoginService loginService; - @Resource - private RedisUtil redisUtil; - @Resource - private ISarFileSplitMenuEOService sarFileSplitMenuEOService; - @Resource - private ISarFileSplitInfoService sarFileSplitInfoService; - @Resource - private LawsDocumentSplitMapper lawsDocumentSplitMapper; - @Resource - private LawsStandardMapper lawsStandardMapper; - @Resource - private ISysBaseAPI sysBaseAPI; - @Resource - private IOSSFileService ossFileService; - @Resource - private ILawsTreeNodeService lawsTreeNodeService; - @Resource - private PartNameService partNameService; - @Resource - private ILawsSysApiInfoService lawsSysApiInfoService; - @Resource - private ILawsPartStandardService lawsPartStandardService; - @Resource - private RestTemplate restTemplate; - @Resource - private ILawsBindPartService lawsBindPartService; - @Resource - private ILawsEnterpriseStandardService esService; - @Resource - private ILawsDomesticStandardService gbService; - @Resource - private ILawsOverseasStandardService fbService; - @Resource - private IDocumentSplitService documentSplitService; - @Resource - private CommonAPI commonAPI; - - @Value("${srms.font_url_pdf}") - private String fontUrlPdf; - @Value("${srms.back_url_pdf}") - private String backUrlPdf; - @Value("${srms.font_url_other}") - private String fontUrlOther; - @Value("${srms.back_url_other}") - private String backUrlOther; - @Value("${srms.other_md5_mark}") - private String otherMd5Mark; - @Value("${srms.etton_sys_code}") - private String ettonSysCode; - @Value("${srms.etton_sys_user}") - private String ettonSysUser; - @Value("${srms.part_standard_url}") - private String partStandardRewriteUrl; - @Value("${bindPart.pdm_Ip}") - private String poIp; - @Value("${bindPart.auth_username}") - private String authUsername; - @Value("${bindPart.auth_password}") - private String authPassword; - - private static final String REQUESTS = "Requests"; - private static final String MESSAGE_HANDLER = "MessageHeader"; - private static final String SYS_ERR = "访问受限,token授权过期"; - private static final String STANDARD_NAME = "standardName"; - private static final String STANDARD_NUMBER = "standardNumber"; - private static final String PUBLISH_OF_ORIGINAL = "publish_of_original"; - private static final String X_ACCESS_TOKEN = "X-Access-Token"; - private static final String ADD_NOT_NULL = "必填项不能为空"; - private static final String PART_CATEGORY_NUM = "PartCategoryNum"; - private static final String PART_CATEGORY_NAME = "PartCategoryName"; - private static final String PARENT_NUM = "ParentNum"; - private static final String PRINT_TOKEN = "token============================"; - - - @Override - public Result getByToken(JSONObject json) { - try { - ByTokenRequests byTokenRequests = JSON.parseObject(JSON.toJSONString(json.get(REQUESTS)), ByTokenRequests.class); - // 验证数据必填项 - if (StringUtils.isAllBlank(byTokenRequests.getUsername()) - || StringUtils.isBlank(byTokenRequests.getAppkey()) - || StringUtils.isBlank(byTokenRequests.getSecret())) { - return Result.error(ADD_NOT_NULL); - } - LambdaQueryWrapper queryLawsSysApiInfo = new LambdaQueryWrapper<>(); - queryLawsSysApiInfo.eq(LawsSysApiInfo::getAppKey, byTokenRequests.getAppkey()); - queryLawsSysApiInfo.eq(LawsSysApiInfo::getSecret, byTokenRequests.getSecret()); - LawsSysApiInfo lawsSysApiInfo = lawsSysApiInfoService.getOne(queryLawsSysApiInfo, false); - if (Objects.isNull(lawsSysApiInfo)) { - return Result.error(403, SYS_ERR); - } - Result re; - // E彩通访问,使用默认账户 - if (Objects.equals(ettonSysCode, lawsSysApiInfo.getSysCode())) { - re = loginService.srmsByToken(ettonSysUser); - String token = re.getResult().get("token").toString(); - String tokenKey = byTokenRequests.getUsername() + token; - redisUtil.set(tokenKey, token, 3600); - } else { - re = loginService.srmsByToken(byTokenRequests.getUsername()); - } - return re; - } catch (Exception e) { - log.error("获取token异常:", e); - return Result.error("操作失败"); - } - } - - @Override - public Result> getByLawsFileList(JSONObject json, HttpServletRequest req) { - // 验证token - String token = req.getHeader(X_ACCESS_TOKEN); - try { - log.info(PRINT_TOKEN + token); - // 验证Token有效性 - boolean tokenOK = TokenUtils.verifyToken(req, sysBaseAPI, redisUtil); - if (!tokenOK) { - return Result.error(403, SYS_ERR); - } - } catch (Exception ignored) { - return Result.error(403, SYS_ERR); - } - JSONObject requests = JSON.parseObject(JSON.toJSONString(json.get(REQUESTS))); - // 零部件-分类内部码(精准查询) - String partCategoryNum = getStr(requests, "partCategoryNum"); - if (StringUtils.isBlank(partCategoryNum)) { - return Result.error("零部件-分类内部码不能为空"); - } - try { - StandardVO standardVO = new StandardVO(); - standardVO.setPartCategoryNum(partCategoryNum); - // 零部件-分类名称 - String partCategoryName = getStr(requests, "partCategoryName"); - standardVO.setPartCategoryName(partCategoryName); - // 标准编号 - String standardNumber = getStr(requests, STANDARD_NUMBER); - standardVO.setStandardNumber(standardNumber); - // 标准名称 - String standardName = getStr(requests, STANDARD_NAME); - standardVO.setStandardName(standardName); - // 标准状态 - String standardState = getStr(requests, "standardState"); - standardVO.setStandardState(standardState); - // 是否存在拆分信息,默认false; true-是,false-否 - setHasSplit(requests, standardVO); - List listByFileRows = getByFileRows(partCategoryNum, standardVO, token); - return Result.OK(listByFileRows); - } catch (Exception e) { - log.error("标准法规文档查询异常:", e); - return Result.error("操作失败" + e.getMessage()); - } - } - - @Nullable - private List getByFileRows(String partCategoryNum, StandardVO standardVO, String token) { - List listByFileRows = lawsStandardMapper.getStandard(standardVO); - if (CollectionUtils.isEmpty(listByFileRows)) { - return listByFileRows; - } - List listFileId = listByFileRows.stream().map(ByFileRows::getId).collect(Collectors.toList()); - LambdaQueryWrapper queryOssFile = new LambdaQueryWrapper<>(); - queryOssFile.in(OSSFile::getStandardId, listFileId); - queryOssFile.eq(OSSFile::getStandardFileType, PUBLISH_OF_ORIGINAL); - queryOssFile.orderByDesc(OSSFile::getCreateTime); - List listOssFile = ossFileService.list(queryOssFile); - // 查询零件名称 - LambdaQueryWrapper queryPartName = new LambdaQueryWrapper<>(); - queryPartName.eq(PartName::getCode, partCategoryNum); - PartName partName = partNameService.getOne(queryPartName, false); - - for (ByFileRows byFileRows : listByFileRows) { - byFileRows.setPartCategoryNum(partCategoryNum); - if (!Objects.isNull(partName)) { - byFileRows.setPartCategoryName(partName.getName()); - } - - byFileRows.setStandardState_dictText(sysBaseAPI.translateDict("standard_state", byFileRows.getStandardState())); - if (!CollectionUtils.isEmpty(listOssFile)) { - List listFile = listOssFile.stream().filter(o -> Objects.equals(o.getStandardId(), byFileRows.getId())).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(listFile)) { - listFile = listFile.stream().sorted(Comparator.comparing(OSSFile::getCreateTime).reversed()).collect(Collectors.toList()); - byFileRows.setStandardUrl(getUrl(listFile.get(0), token)); - } - } - LambdaQueryWrapper querySarFileSplitInfoEo = new LambdaQueryWrapper<>(); - querySarFileSplitInfoEo.eq(SarFileSplitInfoEO::getStandardId, byFileRows.getId()); - querySarFileSplitInfoEo.isNull(SarFileSplitInfoEO::getPublishBeforeId); - querySarFileSplitInfoEo.eq(SarFileSplitInfoEO::getFileType, PUBLISH_OF_ORIGINAL); - SarFileSplitInfoEO sarFileSplitInfoEo = sarFileSplitInfoService.getOne(querySarFileSplitInfoEo, false); - addSarFileSplitInfoEO(byFileRows, sarFileSplitInfoEo); - } - return listByFileRows; - } - - private void addSarFileSplitInfoEO(ByFileRows byFileRows, SarFileSplitInfoEO sarFileSplitInfoEo) { - if (!Objects.isNull(sarFileSplitInfoEo)) { - SarFileSplitMenuEOPage page = new SarFileSplitMenuEOPage(); - page.setValidFlag("0"); - page.setOrderBy("display_seq asc"); - page.setInfoId(sarFileSplitInfoEo.getId()); - List getList = sarFileSplitMenuEOService.queryByApiList(page); - if (!CollectionUtils.isEmpty(getList)) { - List listSarFileSplitMenu = new ArrayList<>(); - for (SarFileSplitMenuEO sarFileSplitMenuEo : getList) { - SarFileSplitMenu sarFileSplitMenu = new SarFileSplitMenu(); - sarFileSplitMenu.setId(sarFileSplitMenuEo.getId()); - sarFileSplitMenu.setPid(sarFileSplitMenuEo.getPId()); - sarFileSplitMenu.setItemName(sarFileSplitMenuEo.getItemName()); - sarFileSplitMenu.setName(sarFileSplitMenuEo.getName()); - listSarFileSplitMenu.add(sarFileSplitMenu); - } - SplitResult splitResult = new SplitResult(); - if (!CollectionUtils.isEmpty(listSarFileSplitMenu)) { - List listIds = listSarFileSplitMenu.stream().map(SarFileSplitMenu::getId).collect(Collectors.toList()); - LambdaQueryWrapper queryLawsDocumentSplit = new LambdaQueryWrapper<>(); - queryLawsDocumentSplit.in(LawsDocumentSplit::getMenuId, listIds); - queryLawsDocumentSplit.eq(LawsDocumentSplit::getDelFlag, "0"); - List listLawsDocumentSplit = lawsDocumentSplitMapper.selectList(queryLawsDocumentSplit); - if (!CollectionUtils.isEmpty(listLawsDocumentSplit)) { - List listDocumentSplitDetail = JSON.parseArray(JSON.toJSONString(listLawsDocumentSplit), DocumentSplitDetail.class); - splitResult.setDocumentSplitDetail(listDocumentSplitDetail); - } - - List finalResult = listSarFileSplitMenu; - listSarFileSplitMenu = listSarFileSplitMenu.stream().filter(v -> StringUtils.isBlank(v.getPid())) - .peek(v -> v.setChildren(createChildList(v, finalResult))).collect(Collectors.toList()); - splitResult.setSarFileSplitMenuEO(JSON.toJSONString(listSarFileSplitMenu)); - } - - byFileRows.setSplitResult(splitResult); - } - } - } - - private void setHasSplit(JSONObject requests, StandardVO standardVO) { - if (!Objects.isNull(requests.get("hasSplit"))) { - boolean hasSplit = Boolean.parseBoolean(requests.get("hasSplit").toString()); - if (hasSplit) { - standardVO.setHasSplit("1"); - } else { - standardVO.setHasSplit("2"); - } - } - } - - private String getStr(JSONObject requests, String partCategoryNum) { - return requests.containsKey(partCategoryNum) ? requests.get(partCategoryNum).toString() : ""; - } - - private List createChildList(SarFileSplitMenu testTree, List treeList) { - return treeList.stream().filter(v -> testTree.getId().equals(v.getPid())) - .peek(v -> v.setChildren(createChildList(v, treeList))) - .collect(Collectors.toList()); - } - - @Override - public Result> getByLawsProductDesign(JSONObject json, HttpServletRequest req) { - // 验证token - try { - String token = req.getHeader(X_ACCESS_TOKEN); - log.info(PRINT_TOKEN + token); - // 验证Token有效性 - boolean tokenOK = TokenUtils.verifyToken(req, sysBaseAPI, redisUtil); - if (!tokenOK) { - return Result.error(403, SYS_ERR); - } - } catch (Exception ignored) { - return Result.error(403, SYS_ERR); - } - JSONObject requests = JSON.parseObject(JSON.toJSONString(json.get(REQUESTS))); - JSONArray rows = JSON.parseArray(JSON.toJSONString(requests.get("Rows"))); - if (CollectionUtils.isEmpty(rows)) { - return Result.error(ADD_NOT_NULL); - } - List listProductDesign = new ArrayList<>(); - String queryLabels = "queryLabels"; - for (Object request : rows) { - JSONObject js = JSON.parseObject(JSON.toJSONString(request)); - if (!js.containsKey("ID") || !js.containsKey(STANDARD_NUMBER) || !js.containsKey(queryLabels)) { - return Result.error(ADD_NOT_NULL); - } - if (StringUtils.isBlank(js.getString("ID")) || StringUtils.isBlank(js.getString(STANDARD_NUMBER)) - || StringUtils.isBlank(js.getString(queryLabels))) { - return Result.error(ADD_NOT_NULL); - } - ProductDesign productDesign = new ProductDesign(); - productDesign.setId(js.getString("ID")); - productDesign.setStandardNumber(js.getString(STANDARD_NUMBER)); - productDesign.setQueryLabels(js.getString(queryLabels)); - listProductDesign.add(productDesign); - } - try { - List listObj = new ArrayList<>(); - for (ProductDesign productDesign : listProductDesign) { - List> list = lawsStandardMapper.getStandardByProductDesign(productDesign.getStandardNumber(), productDesign.getQueryLabels()); - for (Map stringStringMap : list) { - JSONObject obj = new JSONObject(); - obj.put("ID", productDesign.getId()); - obj.put(queryLabels, productDesign.getQueryLabels()); - obj.put("itemContent", stringStringMap.get("item_content")); - obj.put(STANDARD_NUMBER, stringStringMap.get("standard_number")); - listObj.add(obj); - } - - } - return Result.OK(listObj); - } catch (Exception e) { - log.error("设计导航-产品设计条款查询异常:", e); - return Result.error("操作失败" + e.getMessage()); - } - } - - @Override - public Result> getByLawsSystem(JSONObject json, HttpServletRequest req) { - // 验证token - try { - String token = req.getHeader(X_ACCESS_TOKEN); - log.info(PRINT_TOKEN + token); - // 验证Token有效性 - boolean tokenOK = TokenUtils.verifyToken(req, sysBaseAPI, redisUtil); - if (!tokenOK) { - return Result.error(403, SYS_ERR); - } - } catch (Exception ignored) { - return Result.error(403, SYS_ERR); - } - JSONObject requests = JSON.parseObject(JSON.toJSONString(json.get(REQUESTS))); - String nodeName = ""; - if (!Objects.isNull(requests) && requests.containsKey("nodeName")) { - nodeName = requests.get("nodeName").toString(); - } - try { - List listStandardTreeAll = new ArrayList<>(); - // 国内标准 - List listDomestic = lawsTreeNodeService.queryTreeNodeList(TableNameEnum.DOMESTIC_REGULATIONS.getValue(), nodeName, "1"); - getStandardTree(listStandardTreeAll, listDomestic, nodeName); - // 海外标准 - List listForeign = lawsTreeNodeService.queryTreeNodeList(TableNameEnum.FOREIGN_REGULATIONS.getValue(), nodeName, "1"); - getStandardTree(listStandardTreeAll, listForeign, nodeName); - // 企业标准 - List listEnterprise = lawsTreeNodeService.queryTreeNodeList(TableNameEnum.ENTERPRISE_STANDARDS.getValue(), nodeName, "1"); - getStandardTree(listStandardTreeAll, listEnterprise, nodeName); - return Result.OK(listStandardTreeAll); - } catch (Exception e) { - log.error("获取所有体系数据异常:", e); - return Result.error("操作失败" + e.getMessage()); - } - } - - private void getStandardTree(List listStandardTreeAll, List listEnterprise, String nodeName) { - if (CollectionUtils.isEmpty(listEnterprise)) { - return; - } - Optional op = listEnterprise.stream().filter(o -> StringUtils.isBlank(o.getParentId())).findFirst(); - if (op.isPresent()) { - LawsTreeNodeModel lawsTreeNodeModel = op.get(); - StandardTree standardTree = new StandardTree(); - standardTree.setNodeCode(lawsTreeNodeModel.getNodeCode()); - standardTree.setNodeName(lawsTreeNodeModel.getNodeName()); - if (!CollectionUtils.isEmpty(lawsTreeNodeModel.getChildren())) { - List sub = getTree(lawsTreeNodeModel.getChildren()); - if (!CollectionUtils.isEmpty(sub)) { - standardTree.setChildren(sub); - } - } - if (!StringUtils.isBlank(nodeName)) { - if (!CollectionUtils.isEmpty(lawsTreeNodeModel.getChildren()) || lawsTreeNodeModel.getNodeName().contains(nodeName)) { - listStandardTreeAll.add(standardTree); - } - } else { - listStandardTreeAll.add(standardTree); - } - } - } - - private List getTree(List listEnterprise) { - if (CollectionUtils.isEmpty(listEnterprise)) { - return Collections.emptyList(); - } - List list = new ArrayList<>(); - for (LawsTreeNodeModel treeNodeModel : listEnterprise) { - StandardTree obj = new StandardTree(); - obj.setNodeCode(treeNodeModel.getNodeCode()); - obj.setNodeName(treeNodeModel.getNodeName()); - List listSub = treeNodeModel.getChildren(); - if (!CollectionUtils.isEmpty(listSub)) { - List listStandardTree = getTree(listSub); - if (!CollectionUtils.isEmpty(listStandardTree)) { - obj.setChildren(listStandardTree); - } - } - list.add(obj); - } - return list; - } - - @Override - public Result> getByLawsStandardPage(JSONObject json, HttpServletRequest req) { - // 验证token - String token = req.getHeader(X_ACCESS_TOKEN); - try { - log.info(PRINT_TOKEN + token); - // 验证Token有效性 - boolean tokenOK = TokenUtils.verifyToken(req, sysBaseAPI, redisUtil); - if (!tokenOK) { - return Result.error(403, SYS_ERR); - } - } catch (Exception ignored) { - return Result.error(403, SYS_ERR); - } - - JSONObject requests = JSON.parseObject(JSON.toJSONString(json.get(REQUESTS))); - if (Objects.isNull(requests)) { - return Result.error(ADD_NOT_NULL); - } - String pageNoKey = "pageNo"; - String pageSizeKey = "pageSize"; - if (!requests.containsKey(pageNoKey) || !requests.containsKey(pageSizeKey)) { - return Result.error(ADD_NOT_NULL); - } - try { - Long.parseLong(requests.get(pageNoKey).toString()); - Long.parseLong(requests.get(pageSizeKey).toString()); - } catch (Exception e) { - return Result.error(ADD_NOT_NULL); - } - QueryWrapper queryStandardPageVO = new QueryWrapper<>(); - setQuery(requests, queryStandardPageVO); - String columnKey = "column"; - if (requests.containsKey(columnKey) && !StringUtils.isBlank(requests.get(columnKey).toString())) { - String[] column = requests.get(columnKey).toString().split(","); - String[] order = null; - String orderKey = "order"; - if (requests.containsKey(orderKey) && StringUtils.isBlank(requests.get(orderKey).toString())) { - order = requests.get(orderKey).toString().split(","); - if (column.length != order.length) { - return Result.error("排序参数异常"); - } - } - setOrder(queryStandardPageVO, column, order); - } - Page page = new Page<>(Long.parseLong(requests.get(pageNoKey).toString()), - Long.parseLong(requests.get(pageSizeKey).toString())); - IPage pageList = lawsStandardMapper.getByLawsStandardPage(page, queryStandardPageVO); - getListStandardPageVO(pageList, token); - return Result.OK(pageList); - } - - private void setQuery(JSONObject requests, QueryWrapper queryStandardPageVO) { - queryStandardPageVO.eq("'1'", "1"); - String nodeCodeKey = "nodeCode"; - if (requests.containsKey(nodeCodeKey) && !StringUtils.isEmpty(requests.get(nodeCodeKey).toString())) { - String nodeCode = requests.get(nodeCodeKey).toString(); - queryStandardPageVO.eq(!StringUtils.isEmpty(nodeCode), "l.node_code", nodeCode); - } - if (requests.containsKey(STANDARD_NUMBER) && !StringUtils.isEmpty(requests.get(STANDARD_NUMBER).toString())) { - String standardNumber = requests.get(STANDARD_NUMBER).toString(); - queryStandardPageVO.like("standard_number", standardNumber); - } - if (requests.containsKey(STANDARD_NAME) && !StringUtils.isEmpty(requests.get(STANDARD_NAME).toString())) { - String standardName = requests.get(STANDARD_NAME).toString(); - queryStandardPageVO.like("standard_name", standardName); - } - } - - private void setOrder(QueryWrapper queryStandardPageVO, String[] column, String[] order) { - for (int i = 0; i < column.length; i++) { - String c = CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, column[i]); - if (Objects.isNull(order)) { - queryStandardPageVO.orderByDesc(c); - } else { - if (Objects.equals(order[i], "asc") || Objects.equals(order[i], "ASC")) { - queryStandardPageVO.orderByAsc(c); - } else { - queryStandardPageVO.orderByDesc(c); - } - } - } - } - - private void getListStandardPageVO(IPage pageList, String token) { - List listStandardPageVO = pageList.getRecords(); - if (CollectionUtils.isEmpty(listStandardPageVO)) { - return; - } - List listFileId = listStandardPageVO.stream().map(StandardPageVO::getId).collect(Collectors.toList()); - QueryWrapper queryOssFile = new QueryWrapper<>(); - queryOssFile.eq("lower(right(url, 4))", ".pdf"); - queryOssFile.lambda().in(OSSFile::getStandardId, listFileId); - queryOssFile.lambda().eq(OSSFile::getStandardFileType, PUBLISH_OF_ORIGINAL); - queryOssFile.lambda().orderByDesc(OSSFile::getCreateTime); - List listOssFile = ossFileService.list(queryOssFile); - - List listStandardPageVOPartName = listStandardPageVO.stream().filter(o -> !StringUtils.isBlank(o.getPartCategoryNum())).collect(Collectors.toList()); - List listPartName = getPartNames(listStandardPageVOPartName); - - for (StandardPageVO standardPageVO : listStandardPageVO) { - standardPageVO.setStandardState_dictText(sysBaseAPI.translateDict("standard_state", standardPageVO.getStandardState())); - if (!CollectionUtils.isEmpty(listOssFile)) { - List listOssFileOne = listOssFile.stream().filter(o -> Objects.equals(o.getStandardId(), standardPageVO.getId())).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(listOssFileOne)) { - listOssFileOne = listOssFileOne.stream().sorted(Comparator.comparing(OSSFile::getCreateTime).reversed()).collect(Collectors.toList()); - standardPageVO.setStandardUrl(getUrl(listOssFileOne.get(0), token)); - } - } - // 零件号查询 - if (!CollectionUtils.isEmpty(listPartName) && !StringUtils.isBlank(standardPageVO.getPartCategoryNum())) { - List listPartNameNew = listPartName.stream().filter(o -> Arrays.asList(standardPageVO.getPartCategoryNum().split(",")).contains(o.getCode())).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(listPartNameNew)) { - List listName = listPartNameNew.stream().map(PartName::getName).collect(Collectors.toList()); - standardPageVO.setPartCategoryName(String.join(",", listName)); - } - } - } - } - - private List getPartNames(List listStandardPageVOPartName) { - List listPartName = new ArrayList<>(); - if (!CollectionUtils.isEmpty(listStandardPageVOPartName)) { - List listPartCategoryNum = listStandardPageVOPartName.stream().map(StandardPageVO::getPartCategoryNum).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(listPartCategoryNum)) { - // 零件号查询 - LambdaQueryWrapper queryPartName = new LambdaQueryWrapper<>(); - queryPartName.in(PartName::getCode, Arrays.stream(String.join(",", listPartCategoryNum).split(",")).collect(Collectors.toList()).stream().distinct().collect(Collectors.toList())); - listPartName = partNameService.list(queryPartName); - } - } - return listPartName; - } - - private String getUrl(OSSFile ossFile, String token) { - String url = ""; - try { - if (ossFile.getFileName().toUpperCase().lastIndexOf(".PDF") > 0) { - // 拼接url pdf预览 - String back = backUrlPdf.replace("{id}", ossFile.getId()).replace("{token}", token); - url = fontUrlPdf.replace("{back_url_pdf}", URLEncoder.encode(back, StandardCharsets.UTF_8.name())); - } else { - LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); - String mark = loginUser.getUsername() + loginUser.getRealname() + LocalDateTime.now(); - String markMd5 = MD5Util.MD5Encode(mark + otherMd5Mark, null); - String backOther = backUrlOther.replace("{id}", ossFile.getId()).replace("{token}", token) - .replace("{file_name}", ossFile.getFileName()); - url = fontUrlOther.replace("{back_url_other}", URLEncoder.encode(Base64.getEncoder().encodeToString(backOther.getBytes(StandardCharsets.UTF_8)), StandardCharsets.UTF_8.name())) - .replace("{mark}", URLEncoder.encode(mark, StandardCharsets.UTF_8.name())) - .replace("{mark_md5}", markMd5); - } - } catch (Exception e) { - log.error("拼接url异常", e); - } - return url; - } - - @Override - public Result syncPartData(JSONObject json, HttpServletRequest req) { - try { - JSONObject requests = JSON.parseObject(JSON.toJSONString(json.get(REQUESTS))); - JSONArray rows = JSON.parseArray(JSON.toJSONString(requests.get("Rows"))); - if (CollectionUtils.isEmpty(rows)) { - return Result.error(ADD_NOT_NULL); - } - List listPartName = new ArrayList<>(); - for (Object request : rows) { - JSONObject js = JSON.parseObject(JSON.toJSONString(request)); - if (!js.containsKey(PART_CATEGORY_NUM) || !js.containsKey(PART_CATEGORY_NAME) || !js.containsKey(PARENT_NUM)) { - return Result.error(ADD_NOT_NULL); - } - if (StringUtils.isBlank(js.getString(PART_CATEGORY_NUM)) - || StringUtils.isBlank(js.getString(PART_CATEGORY_NAME)) - || StringUtils.isBlank(js.getString(PARENT_NUM))) { - return Result.error(ADD_NOT_NULL); - } - PartName partName = new PartName(); - partName.setCode(js.getString(PART_CATEGORY_NUM)); - partName.setName(js.getString(PART_CATEGORY_NAME)); - partName.setParentCode(js.getString(PARENT_NUM)); - partName.setRemark1(js.getString("Remark1")); - partName.setRemark2(js.getString("Remark2")); - partName.setRemark3(js.getString("Remark3")); - listPartName.add(partName); - } - if (!CollectionUtils.isEmpty(listPartName)) { - // 清空数据 - LambdaUpdateWrapper updatePartName = new LambdaUpdateWrapper<>(); - updatePartName.eq(PartName::getDelFlag, "0"); - partNameService.remove(updatePartName); - // 保存数据 - partNameService.saveBatch(listPartName); - // 更新父级id - lawsStandardMapper.updatePartParentId(); - } - return Result.OK("操作成功"); - } catch (Exception e) { - log.error("零部件分类树同步接口异常:", e); - return Result.error("操作失败" + e.getMessage()); - } - } - - @Override - public Result syncPartStandard() { - // 清理数据 - LambdaUpdateWrapper updateLawsPartStandard = new LambdaUpdateWrapper<>(); - updateLawsPartStandard.eq(LawsPartStandard::getDelFlag, "0"); - lawsPartStandardService.remove(updateLawsPartStandard); - // 同步数据到分类树标准法规回写表 - List listLawsPartStandard = lawsStandardMapper.getSyncPartStandard(); - lawsPartStandardService.saveBatch(listLawsPartStandard); - return Result.OK("操作成功"); - } - - @Override - public void sendPartStandard() { - List listLawsPartStandard = lawsPartStandardService.list(); - int size = listLawsPartStandard.size(); - log.info("零部件分类回写总数居条数为:{}", size); - if (size == 0) { - return; - } - // 每10000条记录为一个子列表 - int chunkSize = 10000; - List> listOfChunks = new ArrayList<>(); - - // 使用for循环和subList方法分割列表 - for (int i = 0; i < size; i += chunkSize) { - int end = Math.min(size, i + chunkSize); // 确保不会超出列表的末尾 - List chunk = listLawsPartStandard.subList(i, end); - listOfChunks.add(chunk); - } - String batchId = IdWorker.getIdStr(); - for (int i = 0; i < listOfChunks.size(); i++) { - List list = listOfChunks.get(i); - // 判断数据量是否大于指定大小 - JSONObject all = new JSONObject(); - all.put(MESSAGE_HANDLER, getMessageHandler("CNHTC_PO1000400", null, "PDM")); - JSONObject requests = new JSONObject(); - // 批次信息 - requests.put("BatchId", batchId); - requests.put("BatchNo", String.valueOf(i + 1)); - // rows - List listObj = new ArrayList<>(); - if (!CollectionUtils.isEmpty(listLawsPartStandard)) { - for (LawsPartStandard lawsPartStandard : list) { - JSONObject rows = new JSONObject(); - rows.put(PART_CATEGORY_NUM, lawsPartStandard.getPartCategoryNum()); - rows.put("StandardPdmType", lawsPartStandard.getStandardPdmType()); - rows.put("StandardNumber", lawsPartStandard.getStandardNumber()); - rows.put("Remark1", lawsPartStandard.getRemark1()); - rows.put("Remark2", lawsPartStandard.getRemark2()); - rows.put("Remark3", lawsPartStandard.getRemark3()); - listObj.add(rows); - } - } - requests.put("Rows", listObj); - all.put(REQUESTS, requests); - // 创建 HttpEntity 包含请求体和头信息 - HttpHeaders headers = this.getBasicAuthHeaders(); - HttpEntity entity = new HttpEntity<>(all.toString(), headers); - // 打印完整的请求报文信息 - log.info("零部件分类回写相关信息"); - log.info("IP: " + poIp + partStandardRewriteUrl); - log.info("Headers: " + headers); - JSONObject reData = restTemplate.postForObject(poIp + partStandardRewriteUrl, entity, JSONObject.class); - try { - Thread.sleep(3000); - } catch (InterruptedException e) { - log.error(e.getMessage()); - } - log.info("零部件分类回写请求返回"); - log.info("返回报文: " + JSON.toJSONString(reData)); - } - } - - @Override - public Result getEStandardInfo(JSONObject json, HttpServletRequest req) { - String token = TokenUtils.getTokenByRequest(req); - // 验证token - try { - // 验证Token有效性 - boolean tokenOK = TokenUtils.verifyToken(req, sysBaseAPI, redisUtil); - if (!tokenOK) { - return Result.error(403, SYS_ERR); - } - } catch (Exception ignored) { - return Result.error(403, SYS_ERR); - } - JSONObject requests = JSON.parseObject(JSON.toJSONString(json.get(REQUESTS))); - JSONArray rows = JSON.parseArray(JSON.toJSONString(requests.get("Rows"))); - if (CollectionUtils.isEmpty(rows)) { - return Result.error(ADD_NOT_NULL); - } - List partNumList = new ArrayList<>(); - for (Object request : rows) { - JSONObject js = JSON.parseObject(JSON.toJSONString(request)); - if (js.containsKey("PartNum") && StringUtils.isBlank(js.getString("PartNum"))) { - return Result.error(ADD_NOT_NULL); - } - partNumList.add(js.getString("PartNum")); - } - - // 根据所有零部件分类码获取相关联的标准 - LambdaQueryWrapper partStandardQueryWrapper = new LambdaQueryWrapper<>(); - partStandardQueryWrapper.in(LawsPartStandard::getPartCategoryNum, partNumList); - List partStandardList = lawsPartStandardService.list(partStandardQueryWrapper); - Set standardIdSet = partStandardList.stream().map(LawsPartStandard::getStandardId).collect(Collectors.toSet()); - - // 获取所有可选的标准 - List allStandardInfoList = this.getAllStandardInfo(); - // 筛选出需要的标准数据后填充剩余字段 - allStandardInfoList = allStandardInfoList.stream() - .filter(e -> standardIdSet.contains(e.getId())) - .collect(Collectors.toList()); - // 填充字段 - this.fillColumn(allStandardInfoList, token); - // 转换为Map - Map allStandardInfoMap = allStandardInfoList.stream() - .filter(e -> standardIdSet.contains(e.getId())) - .collect(Collectors.toMap(BindPartStandardVO::getId, e -> e)); - - SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); - try { - JSONArray resultRows = new JSONArray(); - Map parameter = new HashMap<>(); - parameter.put("pageNo", "1"); - parameter.put("pageSize", String.valueOf(Integer.MAX_VALUE)); - for (String standardId : standardIdSet) { - // 获取标准相关信息 - BindPartStandardVO standard = allStandardInfoMap.get(standardId); - // 判断是否有拆分信息 - String infoId = standard.getInfoId(); - boolean isSplit = StrUtil.isNotBlank(infoId); - // 根据info_id 获取所有拆分数据 后按照拆分数据条数填充rows - if (isSplit) { - parameter.put("info_id", infoId); - IPage> data = documentSplitService.queryDocumentSplitDetail(parameter, false); - List> records = data.getRecords(); - for (Map r : records) { - JSONObject row = new JSONObject(); - row.put("standardNumber", standard.getStandardNumber()); - row.put("standardName", standard.getStandardName()); - row.put("standardState_dictText", standard.getStandardState()); - row.put("standardUrl", standard.getStandardUrl()); - row.put("CreateTime", format.format(standard.getCreateTime())); - row.put("UpdateTime", format.format(standard.getUpdateTime())); - row.put("ReleaseDate", format.format(standard.getReleaseDate())); - row.put("ImplementationDate", format.format(standard.getImplementationDate())); - row.put("Remark1", ""); - row.put("Remark2", ""); - row.put("Remark3", ""); - JSONObject documentSplitDetail = new JSONObject(); - documentSplitDetail.put("id", r.get("id")); - documentSplitDetail.put("itemNum", r.get("item_num")); - documentSplitDetail.put("itemTitle", r.get("item_title")); - documentSplitDetail.put("itemContent", r.get("item_content")); - documentSplitDetail.put("Remark1", ""); - documentSplitDetail.put("Remark2", ""); - documentSplitDetail.put("Remark3", ""); - row.put("documentSplitDetail", documentSplitDetail); - resultRows.add(row); - } - } else { - // 只填充一条数据 - JSONObject row = new JSONObject(); - row.put("standardNumber", standard.getStandardNumber()); - row.put("standardName", standard.getStandardName()); - row.put("standardState_dictText", standard.getStandardState()); - row.put("standardUrl", standard.getStandardUrl()); - row.put("CreateTime", format.format(standard.getCreateTime())); - row.put("UpdateTime", format.format(standard.getUpdateTime())); - row.put("ReleaseDate", format.format(standard.getReleaseDate())); - row.put("ImplementationDate", format.format(standard.getImplementationDate())); - row.put("Remark1", ""); - row.put("Remark2", ""); - row.put("Remark3", ""); - resultRows.add(row); - } - } - return Result.OK(resultRows); - } catch (Exception e) { - log.error("E采通获取标准信息失败:", e); - return Result.error("操作失败" + e.getMessage()); - } - } - - private void fillColumn(List allStandardInfoList, String token) { - if (CollectionUtils.isEmpty(allStandardInfoList)) { - return; - } - // 获取所有标准id 找到各自的ossFile文件 - List standardIdList = allStandardInfoList.stream().map(BindPartStandardVO::getId).collect(Collectors.toList()); - LambdaQueryWrapper ossFileLambdaQueryWrapper = new LambdaQueryWrapper<>(); - ossFileLambdaQueryWrapper.in(OSSFile::getStandardId, standardIdList); - ossFileLambdaQueryWrapper.in(OSSFile::getStandardFileType, PUBLISH_OF_ORIGINAL); - List ossFileList = ossFileService.list(ossFileLambdaQueryWrapper); - Map> ossFileMap = new HashMap<>(); - if (CollectionUtils.isNotEmpty(ossFileList)) { - ossFileMap = ossFileList.stream().collect(Collectors.groupingBy(OSSFile::getStandardId)); - } - for (BindPartStandardVO standard : allStandardInfoList) { - String code = standard.getStandardType() - .equals(TableNameEnum.ENTERPRISE_STANDARDS.getValue()) ? "es_status" : "standard_state"; - // 填充预览地址 - standard.setStandardUrl(this.getStandardUrl(standard, ossFileMap, token)); - // 填充标准状态 - standard.setStandardState(commonAPI.translateDict(code, standard.getStandardState())); - } - } - - /** - * 根据标准相关信息获取默认预览链接 - * @param standard 标准信息 - * @param ossFileMap 相关文件 - * @param token token - * @return - */ - private String getStandardUrl(BindPartStandardVO standard, Map> ossFileMap, String token) { - String type = standard.getStandardType(); - OSSFile finalOssFile = null; - List ossFileList = ossFileMap.get(standard.getId()); - if (CollectionUtils.isEmpty(ossFileList)) { - return null; - } - // 如果是国标外标 则找最新的pdf进行预览 - if (TableNameEnum.DOMESTIC_REGULATIONS.getValue().equals(type) || - TableNameEnum.FOREIGN_REGULATIONS.getValue().equals(type)) { - ossFileList = ossFileList.stream() - .filter(o -> o.getUrl().endsWith(".pdf")) - .sorted(Comparator.comparing(OSSFile::getId).reversed()) - .collect(Collectors.toList()); - finalOssFile = ossFileList.get(0); - return this.getUrl(finalOssFile, token); - } else if (TableNameEnum.ENTERPRISE_STANDARDS.getValue().equals(type)) { - // 如果是企标则找docx和pdf中最新的 - ossFileList = ossFileList.stream() - .filter(o -> o.getUrl().endsWith(".pdf") || o.getUrl().endsWith(".docx")) - .sorted(Comparator.comparing(OSSFile::getId).reversed()) - .collect(Collectors.toList()); - finalOssFile = ossFileList.get(0); - // 如果是docx则需要查找是否有绑定的pdf - if (finalOssFile.getUrl().endsWith(".docx")) { - LambdaQueryWrapper bindWrapper = new LambdaQueryWrapper<>(); - bindWrapper.eq(OSSFile::getBindId, finalOssFile.getId()); - List list = ossFileService.list(bindWrapper); - if (CollectionUtils.isNotEmpty(list)) { - finalOssFile = list.get(0); - } - } - return this.getUrl(finalOssFile, token); - } - return ""; - } - - private List getAllStandardInfo() { - List result = new ArrayList<>(); - BindPartStandardVO vo = new BindPartStandardVO(); - // 国标 - vo.setStandardType(TableNameEnum.DOMESTIC_REGULATIONS.getValue()); - List gbRecords = lawsBindPartService.selectStandard(vo, 1, Integer.MAX_VALUE).getRecords(); - result.addAll(gbRecords); - // 外标 - vo.setStandardType(TableNameEnum.FOREIGN_REGULATIONS.getValue()); - List fbRecords = lawsBindPartService.selectStandard(vo, 1, Integer.MAX_VALUE).getRecords(); - result.addAll(fbRecords); - // 企标 - vo.setStandardType(TableNameEnum.ENTERPRISE_STANDARDS.getValue()); - List esRecords = lawsBindPartService.selectStandard(vo, 1, Integer.MAX_VALUE).getRecords(); - result.addAll(esRecords); - return result; - } - - @Override - public JSONObject getMessageHandler(String interfaceId, String uuid, String receiver) { - if (StrUtil.isBlank(uuid)) { - uuid = UUID.randomUUID().toString(); - } - JSONObject messageHeader = new JSONObject(); - String date = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()); - messageHeader.put("Interface_ID", interfaceId); - messageHeader.put("UUID", uuid); - messageHeader.put("MessageId", ""); - messageHeader.put("Sender", "SRMS"); - messageHeader.put("Receiver", receiver); - messageHeader.put("SendDate", date.substring(0, 8)); - messageHeader.put("SendTime", date.substring(8)); - return messageHeader; - } - - // 创建 HttpHeaders 并设置 Basic Auth - private HttpHeaders getBasicAuthHeaders() { - // 创建 HttpHeaders 并设置 Basic Auth - HttpHeaders headers = new HttpHeaders(); - headers.setContentType(MediaType.APPLICATION_JSON); - String auth = authUsername + ":" + authPassword; // 用户名:密码 - byte[] encodedAuth = Base64.getEncoder().encode(auth.getBytes(StandardCharsets.US_ASCII)); - String authHeader = "Basic " + new String(encodedAuth); - headers.set("Authorization", authHeader); - return headers; - } - - @Override - public List getBindPartStandardInfo(JSONObject json) { - JSONObject requests = JSON.parseObject(JSON.toJSONString(json.get(REQUESTS))); - String partNum = requests.get("PartNum").toString(); - if (StrUtil.isBlank(partNum)) { - throw new JeroBootException("零部件编号PartNum不能为空"); - } - LawsBindPart lawsBindPart = new LawsBindPart(); - lawsBindPart.setPartNo(partNum); - - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.eq(LawsBindPart::getPartNo, partNum); - List lawsBindPartList = lawsBindPartService.list(lambdaQueryWrapper); - List listObj = new ArrayList<>(); - if (!CollectionUtils.isEmpty(lawsBindPartList)) { - // 设置标准名称 - Set standardIdSet = lawsBindPartList.stream().map(LawsBindPart::getStandardId).collect(Collectors.toSet()); - List lawsStandardList = new ArrayList<>(); - List esStandardList = esService.listByIds(standardIdSet); - List gbStandardList = gbService.listByIds(standardIdSet); - List fbStandardList = fbService.listByIds(standardIdSet); - // 将三种标准集合转换为通用VO - lawsStandardList.addAll(esStandardList.stream().map(e -> new StandardVO(e.getStandardNumber(), e.getStandardName())).collect(Collectors.toList())); - lawsStandardList.addAll(gbStandardList.stream().map(e -> new StandardVO(e.getStandardNumber(), e.getStandardName())).collect(Collectors.toList())); - lawsStandardList.addAll(fbStandardList.stream().map(e -> new StandardVO(e.getStandardNumber(), e.getStandardName())).collect(Collectors.toList())); - - for (StandardVO standard : lawsStandardList) { - JSONObject rows = new JSONObject(); - rows.put("PartNum", lawsBindPartList.get(0).getPartName()); - rows.put("PartName", lawsBindPartList.get(0).getPartName()); - rows.put("StandardNumber", standard.getStandardNumber()); - rows.put("StandardName", standard.getStandardName()); - rows.put("Remark1", ""); - rows.put("Remark2", ""); - rows.put("Remark3", ""); - listObj.add(rows); - } - } - return listObj; - } -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/vo/ByFileRows.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/vo/ByFileRows.java deleted file mode 100644 index 2ba7e0d0..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/vo/ByFileRows.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.jero.modules.docking.srms.vo; - -import lombok.Data; - -import java.io.Serializable; - -/** - * @author lqt - * @version 1.0 - * @date 2024/1/19 8:51 - */ -@Data -public class ByFileRows implements Serializable { - /** - * id - */ - private String id; - /** - * 零部件-分类内部码(精准查询) - */ - private String partCategoryNum; - /** - * 零部件-分类名称 - */ - private String partCategoryName; - /** - * 标准编号 - */ - private String standardNumber; - /** - * 标准名称 - */ - private String standardName; - /** - * 标准英文名称 - */ - private String standardEnglishName; - - /** - * 标准状态 - */ - private String standardState; - /** - * 标准状态 - */ - private String standardState_dictText; - /** - * 发布日期(转成字符串传) - * 示例:2024-01-05 - */ - private String releaseDate; - /** - * 实施日期 - * 示例:2024-01-05 - */ - private String implementationDate; - /** - * 标准跳转链接,即发布稿查看链接(url+at信息),试验存在 - */ - private String standardUrl; - - private SplitResult splitResult; -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/vo/DocumentSplitDetail.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/vo/DocumentSplitDetail.java deleted file mode 100644 index 0cb5df25..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/vo/DocumentSplitDetail.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.jero.modules.docking.srms.vo; - -import lombok.Data; - -import java.io.Serializable; - -/** - * @author lqt - * @version 1.0 - * @date 2024/1/19 8:58 - */ -@Data -public class DocumentSplitDetail implements Serializable { - - /** - * 条款主键 - */ - private String id; - /** - * 目录id 和sarFileSplitMenuEO中对应 - */ - private String menuId; - /** - * 条款内容 - */ - private String itemContent; - /** - * 条款号 - */ - private String itemNum; - /** - * 条款标题 - */ - private String itemTitle; -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/vo/SarFileSplitMenu.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/vo/SarFileSplitMenu.java deleted file mode 100644 index f147e09a..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/vo/SarFileSplitMenu.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.jero.modules.docking.srms.vo; - -import lombok.Data; - -import java.io.Serializable; -import java.util.List; - -/** - * @author lqt - * @version 1.0 - * @date 2024/1/19 13:55 - */ -@Data -public class SarFileSplitMenu implements Serializable { - - /** - * id - */ - private String id; - /** - * - */ - private String itemName; - /** - * - */ - private String name; - /** - * - */ - private String pid; - - /** - * - */ - private List children; -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/vo/SplitResult.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/vo/SplitResult.java deleted file mode 100644 index c12b6fac..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/vo/SplitResult.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.jero.modules.docking.srms.vo; - -import lombok.Data; - -import java.io.Serializable; -import java.util.List; - -/** - * @author lqt - * @version 1.0 - * @date 2024/1/19 8:57 - */ -@Data -public class SplitResult implements Serializable { - - /** - * 文档拆分详情 - */ - private List documentSplitDetail; - /** - * 条款信息的全部内容 - */ - private String sarFileSplitMenuEO; -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/vo/StandardPageVO.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/vo/StandardPageVO.java deleted file mode 100644 index f5481cb5..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/vo/StandardPageVO.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.jero.modules.docking.srms.vo; - -import lombok.Data; - -import java.io.Serializable; - -/** - * @author lqt - * @version 1.0 - * @date 2024/1/19 14:58 - */ -@Data -public class StandardPageVO implements Serializable { - - /** - * id - */ - private String id; - /** - * 零部件-分类内部码(精准查询) - */ - private String partCategoryNum; - /** - * 零部件-分类名称 - */ - private String partCategoryName; - /** - * 标准编号 - */ - private String standardNumber; - /** - * 标准名称 - */ - private String standardName; - /** - * 标准英文名称 - */ - private String standardEnglishName; - - /** - * 标准状态 - */ - private String standardState; - /** - * 标准状态 - */ - private String standardState_dictText; - /** - * 发布日期(转成字符串传) - * 示例:2024-01-05 - */ - private String releaseDate; - /** - * 实施日期 - * 示例:2024-01-05 - */ - private String implementationDate; - /** - * 标准跳转链接,即发布稿查看链接(url+at信息),试验存在 - */ - private String standardUrl; - - -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/vo/StandardTree.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/vo/StandardTree.java deleted file mode 100644 index de999997..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/vo/StandardTree.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.jero.modules.docking.srms.vo; - -import lombok.Data; - -import java.io.Serializable; -import java.util.List; - -/** - * @author lqt - * @version 1.0 - * @date 2024/1/21 18:44 - */ -@Data -public class StandardTree implements Serializable { - /** - * 节点编码 - */ - private String nodeCode; - /** - * 节点名称 - */ - private String nodeName; - /** - * 子集 - */ - private List children; -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/vo/StandardVO.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/vo/StandardVO.java deleted file mode 100644 index 4ef53a2b..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/vo/StandardVO.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.jero.modules.docking.srms.vo; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.io.Serializable; - -/** - * @author lqt - * @version 1.0 - * @date 2024/1/19 14:58 - */ -@Data -@NoArgsConstructor -@AllArgsConstructor -public class StandardVO implements Serializable { - - /** - * 零部件-分类内部码(精准查询) - */ - private String partCategoryNum; - /** - * 零部件-分类名称 - */ - private String partCategoryName; - /** - * 标准编号 - */ - private String standardNumber; - /** - * 标准名称 - */ - private String standardName; - /** - * 标准状态 - */ - private String standardState; - /** - * 是否存在拆分信息,1 成功 2 null - */ - private String hasSplit; - - public StandardVO(String standardNumber, String standardName) { - this.standardNumber = standardNumber; - this.standardName = standardName; - } -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/utils/BamboocloudUtils.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/utils/BamboocloudUtils.java deleted file mode 100644 index 6fd84298..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/utils/BamboocloudUtils.java +++ /dev/null @@ -1,85 +0,0 @@ -package com.jero.modules.docking.utils;//package com.jero.modules.iam; - -import com.bamboocloud.codec.BamboocloudFacade; -import lombok.extern.slf4j.Slf4j; - -import javax.servlet.http.HttpServletRequest; -import java.io.BufferedReader; -import java.io.IOException; -import java.util.Iterator; -import java.util.Map; -import java.util.TreeMap; -@Slf4j -public class BamboocloudUtils { - public static void main(String[] args) { - String aes = BamboocloudFacade.encrypt("{\"uid\":\"104\",\"bimRequestId\":\"95d73fe7aa7a4930a3edea779708a46c\",\"resultCode\":\"0\",\"message\":\"success\"}", "123456", "AES"); - System.out.println(aes); - String aes1 = getPlaintext("RCDFN8z1xhTVuDL8jCNwwYLlH9OqZZhZy+ExtFaM7ppAzIgcaf6MxVq/1hRmm8o7JWmro9Q8yMF7Jnb+Sw0JYOIxXcxgDvOb8E4OIHPXPMgMeuZokKANWQa7aZvGfQA7s+ncR1st9NyjSgo9MtUC7cL4zG+eGcDTb55b/TBBp2G/wqiXM2iNZs0mNMUgyAt7KpeCkvcxkugSbbR0uEteMiFjHTb11xdX/d2ySnJQe7eJ2OCuqC43ugnUr898BLZ+xuPQ1jBUb+OAo9yqvXcYD4nwrC7gKS1qlzTy09U4rymymC9olFpMA9TyP12M+My0XoFJ0gq5kJZnUpax9Xi1aghB0iSGXxUmJzL9kWm18KnMaVFtRYGhwYBv5doUa5bzTGExdokx2YMEzUjkY1MfCcBCGk6VfoiF56a5zfh2w13Okwke19jmFvwp8p4s04n6xrgK8ejg96kiMXjmu2R/HffRieNLK9wtXaEdsTCWwqdgyrm4I3mpmmrLIKnpe/cnYuzZw5wvDwVL0se/j9jVAhnLFyklxwb+x9iJK+EnUzbk9S/OOI8XxGIIgMC6SeNVNjuonzb3xN01IPCOteEAA43vYkRkcIWZnCFRVHez8fBVs4PlsGIN3GK+PpqZfcIKozrbBMD08YAvFGA9KL/wnp2pggpiixuXD+oG18WT3FsO1XD3yX7d7Gu/jONE2SDTNdtGQCXhYJ1ul9/Hp4uNAs6TCR7X2OYW/CnynizTifrGuArx6OD3qSIxeOa7ZH8d99GJ40sr3C1doR2xMJbCp0AmXDbpb/M9qYpLapBu2+BVs4PlsGIN3GK+PpqZfcIKsr9QrVNVIpgXmi+Af40P6qSJjek9yzYXDgzCWx9ry4IEEnyb2ZF42lVhmwOg6dIZ8qiG305NE9wxdW08KjWFDE23TbwkxdmWAAZy4nYp4LEX7nUIzGLsfmtq2h4D0CtioawcrJqNr67/BWlqwfkzl1NHoSnZozOqXE3eSCz3uKsuHJK4bMLTvoPAjhMA4ukMs+ncR1st9NyjSgo9MtUC7cL4zG+eGcDTb55b/TBBp2G/wqiXM2iNZs0mNMUgyAt7fw66deHvwplBeSRYdqWH0V5dH1+B1lYwX3nd1kAlHwez6dxHWy303KNKCj0y1QLtwvjMb54ZwNNvnlv9MEGnYb/CqJczaI1mzSY0xSDIC3uTr7zmnwMR5bQNIDP5s3/LhMSi3nNM2ZTAQfqZM8k0Ql6BSdIKuZCWZ1KWsfV4tWoIQdIkhl8VJicy/ZFptfCpzGlRbUWBocGAb+XaFGuW8w/VpjlYjjcDMh/x6yH1DpUKw9Uhgi5ypiFigrGuTGKSVbOD5bBiDdxivj6amX3CCrK/UK1TVSKYF5ovgH+ND+qkiY3pPcs2Fw4Mwlsfa8uCBBJ8m9mReNpVYZsDoOnSGe1TfeqA4g863/uHzY7iDjpawoNzZmGRL8j2nNhSxQ5F2EPL2VBKQ6qz8T+KD5pVlRpG513hlJIJTqU76qPYiwEWh+cZhAmZIcgN4t/Ao7kOGxvHtVBv24aHAzGnW1PMqM6TCR7X2OYW/CnynizTifrGuArx6OD3qSIxeOa7ZH8d99GJ40sr3C1doR2xMJbCp9/nxHeoEq7BrXIZOamG7dLDxrCHZj8jLTmGvMJREDNJs+ncR1st9NyjSgo9MtUC7cL4zG+eGcDTb55b/TBBp2G/wqiXM2iNZs0mNMUgyAt7R2Ly5850yACGSmx2687YmlWzg+WwYg3cYr4+mpl9wgqyv1CtU1UimBeaL4B/jQ/qpImN6T3LNhcODMJbH2vLggQSfJvZkXjaVWGbA6Dp0hmQ5+XEJykk0ygA1dEpxVSKaFtk5Pymwmv9bXqZrzj7E2dFOiF3Qw02R5xTY3kdeCt3tjzQwAjIZk1xu8aSyA51a9HH7ORSHbLC2odaKM7+R3eSzc73yprSM4ahKLw9g5ObDsl2fxBIcSBc2DEPANMC0rsHuVKLxkKyGGhc79bvlutQBAql+ZS57Yiob6qLIV+FSH7Bsk8dz1dcZM1Qcu9bEMkzY+INICBiJOB1wsVHsInY4K6oLje6CdSvz3wEtn7G49DWMFRv44Cj3Kq9dxgPifCsLuApLWqXNPLT1TivKbKe5XfgQH7+tPPbZM5dzR6155+FR9TbKL/SFDsDn4UFWsKDc2ZhkS/I9pzYUsUORVXCS7dZ54M/8vwQJPk2cgKhrBysmo2vrv8FaWrB+TOXU0ehKdmjM6pcTd5ILPe4qzLLUuVRkEKlSLrpFkFLHplEnNyMgh4SGTZBVyDVO4ED8FSM3DsdwQf8EAslOI+TvqFvMY04IdDTKol6Ggr0b6g/LVkdGi/5zyRKTtlG7ywQP7fw7wOatjZdSiAyHd4GcV2FOYWnylVtqOXfcZa+DjOhBpf77N8yqeClz4u7r/F2Bfl2xnKy0msdf5HSTSMg4sILp/BzbvOlSNy+95pkt/Rbun0JgKlC8vtOk0nsvQ++VbOD5bBiDdxivj6amX3CCqM62wTA9PGALxRgPSi/8J6dqYIKYosblw/qBtfFk9xbDtVw98l+3exrv4zjRNkg099i7AsRJvPp8ujh3VuQM9YQoFCbAFXyVALX3AtSXTWR1v6z2zY/O9ZE/cY5GJFIZ85FAC4u/cWWNknHIYkhiSm/wqiXM2iNZs0mNMUgyAt74NZpySRsMW4myzkMhW0vGgYuiY9YBQ7E16IM66swANIszSUdPD7DTYb1nn+X4nQHGcsXKSXHBv7H2Ikr4SdTNnIoqKznnUBlzkEvjF7jItLrUAQKpfmUue2IqG+qiyFfKFRbZ653kyAJFYEDsjxhnLFVjLloIPTtscY665JQsV8nDRf+NIbBDKQbxtCtCeT5JhmbYGRP3n2nWWUM3Y/m1QX5dsZystJrHX+R0k0jIOI91/XOz0G4csX/lV0/zwLLm6Ld99I8bawwp7DMZzPRpM6TCR7X2OYW/CnynizTifrGuArx6OD3qSIxeOa7ZH8dG+u+zS090O6PFigACG8Rp4VcWYgiVQguIzGdziVJQ38FJz9ez8lXw7E9M10CU7+qoGIhtWEGqmfThhOAWSlvuRnLFyklxwb+x9iJK+EnUzbk9S/OOI8XxGIIgMC6SeNVNjuonzb3xN01IPCOteEAA5HYDZVP7dy9JrGpLpwhqakhYx029dcXV/3dskpyUHu3idjgrqguN7oJ1K/PfAS2fsbj0NYwVG/jgKPcqr13GA+J8Kwu4Cktapc08tPVOK8pJtXmClh9/Wo2gLBFYWle51Wzg+WwYg3cYr4+mpl9wgqyv1CtU1UimBeaL4B/jQ/qpImN6T3LNhcODMJbH2vLggQSfJvZkXjaVWGbA6Dp0hkEHR7bpFZ3pOJLVZd33bnAXYU5hafKVW2o5d9xlr4OM6EGl/vs3zKp4KXPi7uv8XYF+XbGcrLSax1/kdJNIyDiODeK2/B0McXnO+NqhcB2zgmimMlDMmb/mMFMlg8xR3KbDsl2fxBIcSBc2DEPANMC0rsHuVKLxkKyGGhc79bvlutQBAql+ZS57Yiob6qLIV/o4VAE10DqfJcBhDDOYyk2RJzcjIIeEhk2QVcg1TuBA/BUjNw7HcEH/BALJTiPk76hbzGNOCHQ0yqJehoK9G+oPy1ZHRov+c8kSk7ZRu8sEE2BY3DKU8KxY4dvK6cI3oVegUnSCrmQlmdSlrH1eLVqCEHSJIZfFSYnMv2RabXwqcxpUW1FgaHBgG/l2hRrlvNOatmPEXzmtphZe1WoU220zTHBa0Wr6Bv4wNekbjQW6CcNF/40hsEMpBvG0K0J5PnGByStQR+czDTw/PskpqL8d4gWfAWqQwC4piREXJqCMlSg4nL5rkic6Ui/FO2pfAgFcb9RvDP4uwvljSOejSsIzpMJHtfY5hb8KfKeLNOJ+sa4CvHo4PepIjF45rtkfx330YnjSyvcLV2hHbEwlsKnBR34jI1sFr3w6u9HrzxxAM1agTZoUkEViFdIGlSQzodegUnSCrmQlmdSlrH1eLVqZa6wd8Guwj8sumb7Iwx/gKFvMY04IdDTKol6Ggr0b6g/LVkdGi/5zyRKTtlG7ywQEof2S70odz+MTkcK/h3ftVWzg+WwYg3cYr4+mpl9wgqjOtsEwPTxgC8UYD0ov/CenamCCmKLG5cP6gbXxZPcWw7VcPfJft3sa7+M40TZINMsQ17srKPL7v9frPXvm9E+ocn5y5dsGfPDW51szMq7r5IuO1T166XswzGk4T7A47CXW2Y/Gc5D42pKEXx8tu2i9Ew/UgT8eGfprJx0k4DWHQ==", "123456", "AES"); - System.out.println(aes1); - } - public static boolean checkUsernamePassword(String username, String password) { - log.info("username --->" + username + " password --- >" + password + " ----ok"); - if("bbcadmin".equals(username)&&"P@ssw0rd".equals(password)) { - return true; - } - else { - return false; - } - } - - public static String getPlaintext(String ciphertext, String key, String type) { - return BamboocloudFacade.decrypt(ciphertext, key, type); - } - - public static Boolean verify(Map reqmap, String type) { - Map verifymap = new TreeMap(); - StringBuffer sb = new StringBuffer(); - Iterator it = reqmap.keySet().iterator(); - while (it.hasNext()) { - String key = (String) it.next(); - verifymap.put(key, reqmap.get(key)); - } - Iterator ittree = verifymap.keySet().iterator(); - while (ittree.hasNext()) { - String key = (String) ittree.next(); - if (!"signature".equals(key)) { - sb.append(key).append("=").append(verifymap.get(key)).append("&"); - } - } - sb.deleteCharAt(sb.length() - 1); - System.out.println(reqmap.get("signature") + " now " + sb.toString()); - return BamboocloudFacade.verify(reqmap.get("signature").toString(), sb.toString(), type); - } - - public static String getRequestBody(HttpServletRequest request) { - BufferedReader br = null; - StringBuilder sb = new StringBuilder(); - String str = ""; - try { - br = request.getReader(); - while ((str = br.readLine()) != null) { - sb.append(str); - } - br.close(); - } catch (IOException e) { - e.printStackTrace(); - if (br != null) { - try { - br.close(); - } catch (IOException eo) { - eo.printStackTrace(); - } - } - } finally { - if (br != null) { - try { - br.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } - } - return sb.toString(); - } - -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/utils/DockingConstant.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/utils/DockingConstant.java deleted file mode 100644 index 3ebe29c0..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/utils/DockingConstant.java +++ /dev/null @@ -1,92 +0,0 @@ -package com.jero.modules.docking.utils; - -/** - * 常量类 - */ -public class DockingConstant { - - /** - * 本系统名称 - */ - public static String SYSTEM_NAME = "SRMS"; - - /** - * IAM系统名称 - */ - public static String IAM_SYSTEM_NAME = "IAM"; - - /** - * IAM对称加密算法 - */ - public static String IAM_ENCRYPT_TYPE = "AES"; - - /** - * IAM对称加密密钥 - */ - public static String IAM_ENCRYPT_SECRET = "123456"; - - /** - * IAM正确时的返回码 - */ - public static String IAM_SUCCESS_RESULT_CODE = "0"; - - /** - * IAM正确时的返回消息 - */ - public static String IAM_SUCCESS_MESSAGE = "success"; - - /** - * IAM错误时的返回码 - */ - public static String IAM_ERROR_RESULT_CODE = "500"; - - /** - * 竹云统一认证平台,接口类型:角色 - */ - public static final String BPMC_TYPE_ROLE = "D_AR"; - - /** - * 竹云统一认证平台,接口类型:功能权限 - */ - public static final String BPMC_TYPE_RESOURCE = "D_AM"; - - /** - * 竹云统一认证平台,接口类型:账号与应用角色关系 - */ - public static final String BPMC_TYPE_USER_ROLE = "R_USER_AR"; - - /** - * 竹云统一认证平台,接口类型:应用角色与应用功能权限关系 - */ - public static final String BPMC_TYPE_ROLE_RESOURCE = "R_AR_AM"; - - /** - * 竹云统一认证平台,操作类型:新增 - */ - public static String BPMC_ACTION_ADD = "add"; - /** - * 竹云统一认证平台,操作类型:更新 - */ - public static String BPMC_ACTION_UPDATE = "update"; - - /** - * 竹云统一认证平台,操作类型:删除 - */ - public static String BPMC_ACTION_DELETE = "delete"; - - /** - * 竹云统一认证平台,功能权限(资源类型):菜单 - */ - public static int BPMC_RESOURCE_TYPE_MENU = 0; - - /** - * 竹云统一认证平台,功能权限(资源类型):子菜单 - */ - public static int BPMC_RESOURCE_TYPE_CHILD_MENU = 1; - - /** - * 竹云统一认证平台,功能权限(资源类型):按钮 - */ - public static int BPMC_RESOURCE_TYPE_BUTTON = 2; - -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/utils/ResponsesUtil.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/utils/ResponsesUtil.java deleted file mode 100644 index 2231be95..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/utils/ResponsesUtil.java +++ /dev/null @@ -1,78 +0,0 @@ -package com.jero.modules.docking.utils; - -import com.alibaba.fastjson.JSONObject; -import com.jero.common.constant.CommonConstant; - -import java.util.Objects; - -/** - * @author lqt - * @version 1.0 - * @date 2024/1/18 14:45 - */ -public class ResponsesUtil { - private ResponsesUtil(){} - - public static JSONObject getJsonResult(Object jsonMessageHeader,JSONObject jsonResponses) { - JSONObject json = new JSONObject(); - json.put("MessageHeader",jsonMessageHeader); - if(!Objects.isNull(jsonResponses)){ - json.put("Responses",jsonResponses); - } - return json; - } - - public static JSONObject getJsonOk() { - return getJsonOk(""); - } - - public static JSONObject getJsonOkUpper() { - return getJsonOkUpper(""); - } - - public static JSONObject getJsonOkUpper(String message) { - JSONObject jsonResponses = new JSONObject(); - jsonResponses.put("SrmsCode",CommonConstant.SC_OK_200); - jsonResponses.put("Message",message); - jsonResponses.put("Success",true); - jsonResponses.put("Timestamp",System.currentTimeMillis()); - return jsonResponses; - } - - public static JSONObject getJsonOk(String message) { - JSONObject jsonResponses = new JSONObject(); - jsonResponses.put("srmsCode",CommonConstant.SC_OK_200); - jsonResponses.put("message",message); - jsonResponses.put("success",true); - jsonResponses.put("timestamp",System.currentTimeMillis()); - return jsonResponses; - } - - public static JSONObject getJsonErrUpper() { - return getJsonErrUpper("",CommonConstant.SC_INTERNAL_SERVER_ERROR_500); - } - - public static JSONObject getJsonErrUpper(String message,Integer code) { - JSONObject jsonResponses = new JSONObject(); - jsonResponses.put("SrmsCode",code); - jsonResponses.put("Message",message); - jsonResponses.put("Success",false); - jsonResponses.put("Timestamp",System.currentTimeMillis()); - return jsonResponses; - } - - public static JSONObject getJsonErr() { - return getJsonErr("",CommonConstant.SC_INTERNAL_SERVER_ERROR_500); - } - - public static JSONObject getJsonErr(String message,Integer code) { - JSONObject jsonResponses = new JSONObject(); - jsonResponses.put("srmsCode",code); - jsonResponses.put("message",message); - jsonResponses.put("success",false); - jsonResponses.put("timestamp",System.currentTimeMillis()); - return jsonResponses; - } - - -} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/utils/SHA256Util.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/utils/SHA256Util.java deleted file mode 100644 index 477f67c0..00000000 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/utils/SHA256Util.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.jero.modules.docking.utils; - -import java.nio.charset.StandardCharsets; -import java.security.MessageDigest; -import java.security.NoSuchAlgorithmException; - -public class SHA256Util { - public static void main(String[] args) { - String sha256StrJava = getSHA256StrJava("123456"); - System.out.println(sha256StrJava); - } - /** - * 利用java原生的摘要实现SHA256加密密后的报文 - */ - public static String getSHA256StrJava(String str) { - MessageDigest messageDigest; - String encodeStr = ""; - try { - messageDigest = MessageDigest.getInstance("SHA-256"); - messageDigest.update(str.getBytes(StandardCharsets.UTF_8)); - encodeStr = byte2Hex(messageDigest.digest()); - } catch (NoSuchAlgorithmException e) { - e.printStackTrace(); - } - return encodeStr; - } - - /** - * 将byte转为16进制 - */ - private static String byte2Hex(byte[] bytes) { - StringBuilder stringBuffer = new StringBuilder(); - String temp; - for (byte aByte : bytes) { - temp = Integer.toHexString(aByte & 0xFF); - if (temp.length() == 1) { - //1得到一位的进行补0操作 - stringBuffer.append("0"); - } - stringBuffer.append(temp); - } - return stringBuffer.toString(); - } -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAbolish/controller/ESAbolishController.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esAbolish/controller/ESAbolishController.java deleted file mode 100644 index a4ddd178..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAbolish/controller/ESAbolishController.java +++ /dev/null @@ -1,137 +0,0 @@ -package com.jero.modules.activiti.process.esAbolish.controller; - -import com.jero.common.api.vo.Result; -import com.jero.common.aspect.annotation.AutoLog; -import com.jero.common.aspect.annotation.Translation; -import com.jero.modules.activiti.enums.ProcessTypeEnum; -import com.jero.modules.activiti.process.common.entity.ProcessDraft; -import com.jero.modules.activiti.process.common.entity.TransferVO; -import com.jero.modules.activiti.process.common.service.ActFlowCommonService; -import com.jero.modules.activiti.process.esAbolish.entity.ProcessEsAbolish; -import com.jero.modules.activiti.process.esAbolish.entity.vo.ESAbolishDataVO; -import com.jero.modules.activiti.process.esAbolish.service.ProcessEsAbolishService; -import com.jero.modules.activiti.process.fb.service.IProcessHandleService; -import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO; -import com.jero.modules.activiti.process.projectassess.vo.ProcessProjectAssessVO; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import io.swagger.annotations.ApiParam; -import lombok.extern.slf4j.Slf4j; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import javax.annotation.Resource; - - -/** - * @author: Mzaxd - * @Date: 2023/10/18 10:44 - */ -@Slf4j -@RestController -@Api(tags = "企标废止发起流程") -@RequestMapping("/process/es/abolish") -public class ESAbolishController { - - @Resource - private ProcessEsAbolishService abolishService; - - @Resource - private IProcessHandleService processHandleService; - - @Resource - private ActFlowCommonService actFlowCommonService; - - /** - * 新增立项变更申请 - * - * @param abolishData - */ - @AutoLog(value = "企标废止发起流程-发起流程") - @ApiOperation(value="企标废止发起流程-发起流程", notes="企标废止发起流程-发起流程") - @PostMapping("/start") - public Result startProcess(@RequestBody ESAbolishDataVO abolishData) { - abolishService.startProcess(abolishData); - return Result.OK(); - } - - /** - * 保存到草稿 - * @param processInfoVO - */ - @AutoLog(value = "企标废止发起流程-保存") - @ApiOperation(value="企标废止发起流程-保存", notes="企标废止发起流程-保存") - @PostMapping("/save") - public Result save(@Validated @RequestBody ProcessInfoVO processInfoVO) { - abolishService.saveToDraft(processInfoVO); - return Result.OK(); - } - - /** - * 草稿办理 - * @param draftId - */ - @AutoLog(value = "企标废止发起流程-草稿办理") - @ApiOperation(value="企标废止发起流程-草稿办理", notes="企标废止发起流程-草稿办理") - @GetMapping("/draftHandle") - @Translation - public Result draftHandle(@RequestParam("draftId") @ApiParam("草稿Id") String draftId) { - return Result.OK(actFlowCommonService.getExistDraft(draftId, ProcessTypeEnum.ES_ABOLISH)); - } - - - /** - * 保存到待办 - * @param taskId - */ - @AutoLog(value = "企标废止发起流程-办理") - @ApiOperation(value="企标废止发起流程-办理", notes="企标废止发起流程-办理") - @GetMapping("/handle/{taskId}") - @Translation - public Result handle(@PathVariable("taskId") String taskId) { - ProcessDraft draft = actFlowCommonService.getExistDraftByTaskId(taskId, ProcessTypeEnum.ES_ABOLISH); - if (draft != null) { - return Result.OK(draft); - } - return Result.OK(abolishService.getHandleData(taskId)); - } - - /** - * 同意 - * - * @param abolishData - */ - @AutoLog(value = "企标废止发起流程-同意") - @ApiOperation(value="企标废止发起流程-同意", notes="企标废止发起流程-同意") - @PostMapping("/agree") - public Result agree(@RequestBody ESAbolishDataVO abolishData) { - abolishService.approval(abolishData, true); - return Result.OK(); - } - - /** - * 驳回 - * - * @param abolishData - */ - @AutoLog(value = "企标废止发起流程-驳回") - @ApiOperation(value="企标废止发起流程-驳回", notes="企标废止发起流程-驳回") - @PostMapping("/reject") - public Result reject(@RequestBody ESAbolishDataVO abolishData) { - abolishService.approval(abolishData, false); - return Result.OK(); - } - - /** - * 转办 - * - */ - @AutoLog(value = "企标废止发起流程-转办") - @ApiOperation(value="企标废止发起流程-转办", notes="企标废止发起流程-转办") - @PostMapping(value = "/transfer") - public Result transfer(@RequestBody TransferVO transferVO) { - processHandleService.transfer(transferVO.getTaskId(), transferVO.getUserId()); - return Result.OK(); - } - -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAbolish/entity/ProcessEsAbolish.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esAbolish/entity/ProcessEsAbolish.java deleted file mode 100644 index 7a341b7a..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAbolish/entity/ProcessEsAbolish.java +++ /dev/null @@ -1,137 +0,0 @@ -package com.jero.modules.activiti.process.esAbolish.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import java.io.Serializable; -import java.util.Date; - -import com.fasterxml.jackson.annotation.JsonFormat; -import com.jero.common.aspect.annotation.Dict; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import org.springframework.format.annotation.DateTimeFormat; - -/** - * 企业标准 - * @TableName process_es_abolish - */ -@TableName(value ="process_es_abolish") -@Data -public class ProcessEsAbolish implements Serializable { - /** - * 主键ID - */ - @TableId(type = IdType.ASSIGN_ID) - @ApiModelProperty(value = "主键ID") - private String id; - - /** - * 创建人 - */ - @ApiModelProperty(value = "创建人") - private String createBy; - - /** - * 创建时间 - */ - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") - @DateTimeFormat(pattern="yyyy-MM-dd") - @ApiModelProperty(value = "创建时间") - private Date createTime; - - /** - * 更新人 - */ - @ApiModelProperty(value = "更新人") - private String updateBy; - - /** - * 更新时间 - */ - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") - @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") - @ApiModelProperty(value = "更新时间") - private Date updateTime; - - /** - * 所属部门 - */ - @ApiModelProperty(value = "所属部门") - private String orgCode; - - /** - * 0表示未删除,1表示删除 - */ - @ApiModelProperty(value = "0表示未删除,1表示删除") - private Integer delFlag; - - /** - * 流程实例Id - */ - @ApiModelProperty(value = "流程实例Id") - private String processInstanceId; - - /** - * 企标编号 - */ - @ApiModelProperty(value = "企标编号") - private String standardNumber; - - /** - * 企标名称 - */ - @ApiModelProperty(value = "企标名称") - private String standardName; - - /** - * 企标英文名称 - */ - @ApiModelProperty(value = "企标英文名称") - private String englishName; - - /** - * 企标类型 - */ - @Dict(dicCode = "esp_standard_type") - @ApiModelProperty(value = "企标类型") - private String standardCategory; - - /** - * 代替标准号 - */ - @ApiModelProperty(value = "代替标准号") - private String substituteStandardNumber; - - /** - * 被代替标准号 - */ - @ApiModelProperty(value = "被代替标准号") - private String replacedByStandardNumber; - - /** - * 发布日期 - */ - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") - @DateTimeFormat(pattern="yyyy-MM-dd") - @ApiModelProperty(value = "发布日期") - private Date releaseDate; - - /** - * 实施日期 - */ - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") - @DateTimeFormat(pattern="yyyy-MM-dd") - @ApiModelProperty(value = "实施日期") - private Date implementationDate; - - /** - * 废止理由 - */ - @ApiModelProperty(value = "废止理由") - private String abolishReason; - - @TableField(exist = false) - private static final long serialVersionUID = 1L; -} \ No newline at end of file diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAbolish/entity/vo/ESAbolishDataVO.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esAbolish/entity/vo/ESAbolishDataVO.java deleted file mode 100644 index 0e9f8850..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAbolish/entity/vo/ESAbolishDataVO.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.jero.modules.activiti.process.esAbolish.entity.vo; - -import com.fasterxml.jackson.annotation.JsonProperty; -import com.jero.modules.activiti.process.common.entity.CommonVO; -import com.jero.modules.activiti.process.esAbolish.entity.ProcessEsAbolish; -import com.jero.modules.activiti.process.esInitChange.entity.ProcessEsInitChange; -import lombok.Data; - -import java.util.List; -import java.util.Map; - -/** - * @author: Mzaxd - * @Date: 2023/10/26 8:13 - */ -@Data -public class ESAbolishDataVO { - - @JsonProperty("common") - private CommonVO common; - - @JsonProperty("data") - private ProcessEsAbolish data; - - @JsonProperty("flowUser") - private Map flowUser; -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAbolish/listener/ProcessESAbolishEndListener.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esAbolish/listener/ProcessESAbolishEndListener.java deleted file mode 100644 index 15aa267f..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAbolish/listener/ProcessESAbolishEndListener.java +++ /dev/null @@ -1,76 +0,0 @@ -package com.jero.modules.activiti.process.esAbolish.listener; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import com.jero.modules.activiti.process.common.enums.StandardStateEnum; -import com.jero.modules.activiti.process.esAbolish.entity.ProcessEsAbolish; -import com.jero.modules.activiti.process.esAbolish.service.ProcessEsAbolishService; -import com.jero.modules.activiti.process.esEnable.entity.ProcessEsEnable; -import com.jero.modules.activiti.process.esEnable.service.ProcessEsEnableService; -import com.jero.modules.activiti.process.esInitChange.entity.ProcessEsInitChange; -import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPApplicationCategoryEnum; -import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPChangeType; -import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPProjectType; -import com.jero.modules.activiti.process.esInitChange.service.ProcessEsInitChangeService; -import com.jero.modules.bindPart.docking.DockingService; -import com.jero.modules.laws.enterprise.entity.EnterpriseStandardPlan; -import com.jero.modules.laws.enterprise.service.EnterpriseStandardPlanService; -import com.jero.modules.laws.enterprise.util.BeanCopyUtils; -import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard; -import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService; -import com.jero.modules.tag.enums.TableNameEnum; -import lombok.extern.slf4j.Slf4j; -import org.activiti.engine.delegate.DelegateExecution; -import org.activiti.engine.delegate.ExecutionListener; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; -import java.util.List; - -import static com.jero.modules.bindPart.docking.DockingServiceImpl.STANDARD_ABOLISH; - -/** - * @author: Mzaxd - * @Date: 2023/10/10 14:14 - */ -@Slf4j -@Component -public class ProcessESAbolishEndListener implements ExecutionListener { - - @Resource - private ILawsEnterpriseStandardService esService; - - @Resource - private ProcessEsAbolishService esAbolishService; - - @Resource - private DockingService dockingService; - - /** - * 企标废止流程结束之后需要把标准状态设为废止 - * @param delegateExecution - */ - @Override - public void notify(DelegateExecution delegateExecution) { - log.info("企标废止流程结束 监听执行器开始执行"); - // 找到流程实例Id - String processInstanceId = delegateExecution.getProcessInstanceId(); - LambdaQueryWrapper abolishLambdaQueryWrapper = new LambdaQueryWrapper<>(); - abolishLambdaQueryWrapper.eq(ProcessEsAbolish::getProcessInstanceId, processInstanceId); - ProcessEsAbolish abolish = esAbolishService.getOne(abolishLambdaQueryWrapper); - String standNo = abolish.getStandardNumber(); - LambdaQueryWrapper esWrapper = new LambdaQueryWrapper<>(); - esWrapper.eq(LawsEnterpriseStandard::getStandardNumber, standNo); - LawsEnterpriseStandard one = esService.getOne(esWrapper); - log.info("企标废止流程监听执行器开始执行,企标编号为:{}", standNo); - esService.update(new LambdaUpdateWrapper() - .set(LawsEnterpriseStandard::getStandardState, StandardStateEnum.ABOLISH.getStateValue()) - .eq(LawsEnterpriseStandard::getStandardNumber, standNo)); - try { - dockingService.sendStandardChangeToSCM(one.getId(), TableNameEnum.ENTERPRISE_STANDARDS.getValue(), STANDARD_ABOLISH, null); - } catch (Exception e) { - log.error("E采通同步标准信息出错", e); - } - log.info("企标废止流程结束监听执行器执行结束"); - } -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAbolish/mapper/ProcessEsAbolishMapper.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esAbolish/mapper/ProcessEsAbolishMapper.java deleted file mode 100644 index 5c911d54..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAbolish/mapper/ProcessEsAbolishMapper.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.jero.modules.activiti.process.esAbolish.mapper; - -import com.jero.modules.activiti.process.esAbolish.entity.ProcessEsAbolish; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; - -/** -* @author ThinkBook -* @description 针对表【process_es_abolish(企业标准)】的数据库操作Mapper -* @createDate 2023-10-29 21:02:55 -* @Entity com.jero.modules.activiti.process.esAbolish.entity.ProcessEsAbolish -*/ -public interface ProcessEsAbolishMapper extends BaseMapper { - -} - - - - diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAbolish/mapper/xml/ProcessEsAbolishMapper.xml b/laws-modules/src/main/java/com/jero/modules/activiti/process/esAbolish/mapper/xml/ProcessEsAbolishMapper.xml deleted file mode 100644 index 236b1e67..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAbolish/mapper/xml/ProcessEsAbolishMapper.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - id,create_by,create_time, - update_by,update_time,org_code, - del_flag,process_instance_id,standard_number, - standard_name,english_name,standard_category, - substitute_standard_number,replaced_by_standard_number,release_date, - implementation_date,abolish_reason - - diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAbolish/service/ProcessEsAbolishService.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esAbolish/service/ProcessEsAbolishService.java deleted file mode 100644 index 9b4f49a5..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAbolish/service/ProcessEsAbolishService.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.jero.modules.activiti.process.esAbolish.service; - -import com.jero.modules.activiti.process.esAbolish.entity.ProcessEsAbolish; -import com.baomidou.mybatisplus.extension.service.IService; -import com.jero.modules.activiti.process.esAbolish.entity.vo.ESAbolishDataVO; -import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO; - -/** -* @author ThinkBook -* @description 针对表【process_es_abolish(企业标准)】的数据库操作Service -* @createDate 2023-10-29 21:02:55 -*/ -public interface ProcessEsAbolishService extends IService { - - void startProcess(ESAbolishDataVO annualInitData); - - void saveToDraft(ProcessInfoVO annualInitData); - - ESAbolishDataVO getHandleData(String taskId); - - void approval(ESAbolishDataVO annualInitData, boolean pass); - -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAbolish/service/impl/ProcessEsAbolishServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esAbolish/service/impl/ProcessEsAbolishServiceImpl.java deleted file mode 100644 index 29c72bbb..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAbolish/service/impl/ProcessEsAbolishServiceImpl.java +++ /dev/null @@ -1,254 +0,0 @@ -package com.jero.modules.activiti.process.esAbolish.service.impl; - -import cn.hutool.core.util.StrUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.jero.common.api.vo.ResultCommon; -import com.jero.common.aspect.TranslationAspect; -import com.jero.common.constant.enums.YesOrNoEnum; -import com.jero.common.exception.JeroBootException; -import com.jero.modules.activiti.enums.ProcessTypeEnum; -import com.jero.modules.activiti.process.common.entity.CommonVO; -import com.jero.modules.activiti.process.common.entity.CounterSignNodeNameConstants; -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.enums.StandardStateEnum; -import com.jero.modules.activiti.process.common.service.ActFlowCommonService; -import com.jero.modules.activiti.process.esAbolish.entity.ProcessEsAbolish; -import com.jero.modules.activiti.process.esAbolish.entity.vo.ESAbolishDataVO; -import com.jero.modules.activiti.process.esAbolish.service.ProcessEsAbolishService; -import com.jero.modules.activiti.process.esAbolish.mapper.ProcessEsAbolishMapper; -import com.jero.modules.activiti.process.esEnable.entity.ProcessEsEnable; -import com.jero.modules.activiti.process.fb.dto.BasicProcessInfoDTO; -import com.jero.modules.activiti.process.fb.service.IProcessHandleService; -import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO; -import com.jero.modules.activiti.process.projectassess.entity.ProcessProjectAssess; -import com.jero.modules.activiti.process.projectassess.vo.ProcessProjectAssessVO; -import com.jero.modules.activiti.service.ProcessNodeLinkService; -import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard; -import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService; -import com.jero.modules.sys.utils.UserUtils; -import lombok.extern.slf4j.Slf4j; -import org.activiti.engine.RuntimeService; -import org.activiti.engine.TaskService; -import org.activiti.engine.runtime.ProcessInstance; -import org.activiti.engine.task.Task; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import javax.annotation.Resource; -import java.util.*; - -/** - * @author ThinkBook - * @description 针对表【process_es_abolish(企业标准)】的数据库操作Service实现 - * @createDate 2023-10-29 21:02:55 - */ -@Slf4j -@Transactional(rollbackFor = JeroBootException.class) -@Service -public class ProcessEsAbolishServiceImpl extends ServiceImpl - implements ProcessEsAbolishService { - - @Resource - private ActFlowCommonService actFlowCommonService; - - @Resource - private ProcessNodeLinkService processNodeLinkService; - - @Resource - private RuntimeService runtimeService; - - @Resource - private IProcessHandleService processHandleService; - - @Resource - private TaskService taskService; - - @Resource - private ILawsEnterpriseStandardService esService; - - @Resource - private TranslationAspect translationAspect; - - @Override - public void startProcess(ESAbolishDataVO abolishData) { - // 执行流程发起前的操作 - this.startRunTask(abolishData); - // 流程Key - String processDefinitionKey = ProcessType.ES_ABOLISH.getProcessKey(); - // 当前用户Id - String userId = UserUtils.getUserId(); - // 业务数据 - ProcessEsAbolish esAbolish = abolishData.getData(); - // 通用数据 - CommonVO commonVO = abolishData.getCommon(); - // 人员数据 - Map variables = abolishData.getFlowUser(); - // 流程变量 - Map actVariables = this.setVariables(variables); - // 删除草稿 - actFlowCommonService.getExistDraftAndRemove(commonVO, ProcessTypeEnum.ES_ABOLISH); - // 启动流程 - ProcessInstance processInstance = actFlowCommonService.startProcess(processDefinitionKey, actVariables); - // 获取流程实例ID - String processDefinitionId = processInstance.getProcessDefinitionId(); - String processInstanceId = processInstance.getId(); - // 手动设置所有流程变量 - actFlowCommonService.setProcessVariables(processInstanceId, actVariables); - // 设置流程实例Id - esAbolish.setProcessInstanceId(processInstanceId); - // 保存到业务流程表 - saveOrUpdate(esAbolish); - // 保存选人信息 - processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, this.getUserMap(variables)); - // 获取第一个任务的taskId - String taskId = actFlowCommonService.getFirstTaskId(processInstanceId, userId, processDefinitionId); - // 手动翻译 - String jsonData = translationAspect.manualParseDictText(this.getHandleData(taskId), this.getUserMap(variables)); - // 强制撤回 - commonVO.setProcessInstanceId(processInstanceId); - actFlowCommonService.saveFirstNodeDraft(commonVO, ProcessTypeEnum.ES_ABOLISH, jsonData); - // 更新审批表为完成,填充数据 - actFlowCommonService.updateApprovalInfo(commonVO, taskId, true); - // 自动完成第一个任务 - actFlowCommonService.completeTask(taskId, userId); - // 根据流程实例id更新流程总表 - String prcName = commonVO.getPrcName(); - String prcMes = commonVO.getPrcMes(); - Date dueTime = commonVO.getDueTime(); - Integer prcType = ProcessTypeEnum.ES_ABOLISH.getValue(); - actFlowCommonService.updateProcessAll(processInstanceId, userId, prcName, prcMes, prcType, dueTime); - } - - public Map setVariables(Map flowUser) { - Map actVariables = new HashMap<>(); - if (flowUser.get("relatedUserList") == null || StrUtil.isBlank((String) flowUser.get("relatedUserList"))) { - actFlowCommonService.putIfNotNull(actVariables, "countersign", false); - } else { - actFlowCommonService.putIfNotNull(actVariables, "countersign", true); - String relatedUsers = (String) flowUser.get("relatedUserList"); - // 将relatedUserList从逗号拼接转为List - List relatedUserList = StrUtil.split(relatedUsers, ','); - actFlowCommonService.putIfNotNull(actVariables, "relatedUserList", relatedUserList); - } - for (Map.Entry entry : flowUser.entrySet()) { - String key = entry.getKey(); - if (!key.equals("relatedUserList")) { - actVariables.put(key, entry.getValue()); - } - } - return actVariables; - } - - private Map getUserMap(Map variables) { - variables.remove("pass"); - variables.remove("countersign"); - return variables; - } - - @Override - public void saveToDraft(ProcessInfoVO processInfoVO) { - ESAbolishDataVO businessInfoDTO = processInfoVO.getBusinessInfoDTO(); - if (businessInfoDTO != null) { - ProcessEsAbolish data = businessInfoDTO.getData(); - if (data != null) { - processInfoVO.setBusinessId(data.getId()); - } - } - - // 流程信息 - BasicProcessInfoDTO basicProcessInfoDTO = processInfoVO.getBasicProcessInfoDTO(); - basicProcessInfoDTO.setProcessType(ProcessTypeEnum.ES_ABOLISH.getValue()); // 流程类型 - - processHandleService.saveToDraft(processInfoVO); - } - - public void startRunTask(ESAbolishDataVO abolishData) { - // do nothing now - } - - @Override - public ESAbolishDataVO getHandleData(String taskId) { - if (!actFlowCommonService.taskExists(taskId)) { - throw new JeroBootException(ResultCommon.TASK_NOT_EXISTS); - } - ESAbolishDataVO abolishData = new ESAbolishDataVO(); - // 使用流程引擎根据taskId找到流程实例Id - String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId); - abolishData.setCommon(actFlowCommonService.getHandleCommon(taskId)); - // 获取流程实例数据 - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.eq(ProcessEsAbolish::getProcessInstanceId, processInstanceId); - lambdaQueryWrapper.eq(ProcessEsAbolish::getDelFlag, YesOrNoEnum.NO.getValue()); - ProcessEsAbolish data = getOne(lambdaQueryWrapper); - abolishData.setData(data); - return abolishData; - } - - @Override - public void approval(ESAbolishDataVO abolishData, boolean pass) { - String userId = UserUtils.getUserId(); - CommonVO commonVO = abolishData.getCommon(); - String taskId = commonVO.getTaskId(); - if (StrUtil.isBlank(taskId) || !actFlowCommonService.taskExists(taskId)) { - throw new JeroBootException(ResultCommon.TASK_NOT_EXISTS); - } - Map flowUser = abolishData.getFlowUser(); - // 获取流程实例ID - String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId); - // 获取流程实例对象 - ProcessInstance processInstance = runtimeService.createProcessInstanceQuery() - .processInstanceId(processInstanceId).singleResult(); - // 获取流程定义ID - String processDefinitionId = processInstance.getProcessDefinitionId(); - // 如果是最后一个节点的审批则需要判断是否可以通过 - String taskName = taskService.createTaskQuery().taskId(taskId).singleResult().getName(); - if (pass && taskName.equals("标准化审批")) { - ProcessEsAbolish data = this.getOne(new LambdaQueryWrapper() - .eq(ProcessEsAbolish::getProcessInstanceId, processInstanceId)); - String standardNumber = data.getStandardNumber(); - LawsEnterpriseStandard es = esService.getOne(new LambdaQueryWrapper() - .eq(LawsEnterpriseStandard::getStandardNumber, standardNumber)); - if (StandardStateEnum.ABOLISH.getStateValue().equals(es.getStandardState())) { - throw new JeroBootException("该标准已废止,需要驳回重新选择"); - } - } - ProcessEsAbolish data = abolishData.getData(); - if (data != null) { - updateById(data); - // 根据流程实例id更新流程总表 - String prcName = commonVO.getPrcName(); - String prcMes = commonVO.getPrcMes(); - Date dueTime = commonVO.getDueTime(); - Integer prcType = ProcessTypeEnum.ES_ABOLISH.getValue(); - actFlowCommonService.updateProcessAll(processInstanceId, userId, prcName, prcMes, prcType, dueTime); - } - if (flowUser != null) { - Map variables = setVariables(flowUser); - Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); - // 获取执行id - String executionId = task.getExecutionId(); - // 设置流程变量 - runtimeService.setVariables(executionId, variables); - processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, this.getUserMap(flowUser)); - } - // 设置流程变量 - runtimeService.setVariable(processInstanceId, "pass", pass); - // 更新审批表为完成,填充数据 - actFlowCommonService.updateApprovalInfo(commonVO, taskId, pass); - // 审批节点 - actFlowCommonService.completeTask(taskId, userId); - // 删除草稿 - actFlowCommonService.removeDraft(commonVO); - // 如果是会签节点,驳回后要将其余节点recode设置为 未处理 状态 - if (!pass) { - actFlowCommonService.updateOtherCountersignRecodeStatus(processInstanceId, CounterSignNodeNameConstants.COUNTER_SIGN_NODE_NAME); - } - } - -} - - - - diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualInit/controller/ESAnnualInitController.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualInit/controller/ESAnnualInitController.java deleted file mode 100644 index 77f59ae2..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualInit/controller/ESAnnualInitController.java +++ /dev/null @@ -1,211 +0,0 @@ -package com.jero.modules.activiti.process.esAnnualInit.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.aspect.annotation.Translation; -import com.jero.common.constant.enums.YesOrNoEnum; -import com.jero.common.util.IntekeyUtils; -import com.jero.common.util.MessageUtils; -import com.jero.modules.activiti.enums.ProcessTypeEnum; -import com.jero.modules.activiti.process.common.entity.ProcessDraft; -import com.jero.modules.activiti.process.common.entity.TransferVO; -import com.jero.modules.activiti.process.common.service.ActFlowCommonService; -import com.jero.modules.activiti.process.esAnnualInit.entity.ProcessEsAnnualInit; -import com.jero.modules.activiti.process.esAnnualInit.entity.vo.AnnualInitDataVO; -import com.jero.modules.activiti.process.esAnnualInit.service.ProcessEsAnnualInitService; -import com.jero.modules.activiti.process.fb.service.IProcessHandleService; -import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO; -import io.swagger.annotations.*; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.compress.utils.IOUtils; -import org.springframework.core.io.ClassPathResource; -import org.springframework.http.HttpHeaders; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; -import org.springframework.web.multipart.MultipartFile; - -import javax.annotation.Resource; -import javax.servlet.http.HttpServletResponse; -import java.io.InputStream; -import java.io.OutputStream; -import java.net.URLEncoder; -import java.nio.charset.StandardCharsets; -import java.util.List; -import java.util.Map; - - -/** - * @author: Mzaxd - * @Date: 2023/10/18 10:44 - */ -@Slf4j -@RestController -@Api(tags = "企标年度制修订标准化发起流程") -@RequestMapping("/process/es/annualInit") -public class ESAnnualInitController { - - @Resource - private ProcessEsAnnualInitService annualInitService; - - @Resource - private IProcessHandleService processHandleService; - - @Resource - private ActFlowCommonService actFlowCommonService; - - /** - * 新增立项变更申请 - * - * @param annualInitData - */ - @AutoLog(value = "企标年度制修订标准化发起流程-发起立项变更申请") - @ApiOperation(value="企标年度制修订标准化发起流程-发起立项变更申请", notes="企标年度制修订标准化发起流程-发起立项变更申请") - @PostMapping("/start") - public Result startProcess(@RequestBody AnnualInitDataVO annualInitData) { - annualInitService.startProcess(annualInitData); - return Result.OK(); - } - - /** - * 保存到待办 - * @param processInfoVO - */ - @AutoLog(value = "企标年度制修订标准化发起流程-保存") - @ApiOperation(value="企标年度制修订标准化发起流程-保存", notes="企标年度制修订标准化发起流程-保存") - @PostMapping("/save") - public Result save(@Validated @RequestBody ProcessInfoVO processInfoVO) { - annualInitService.saveToDraft(processInfoVO); - return Result.OK(); - } - - /** - * 草稿办理 - * @param draftId - */ - @AutoLog(value = "企标封存流程-草稿办理") - @ApiOperation(value="企标封存流程-草稿办理", notes="企标封存流程-草稿办理") - @GetMapping("/draftHandle") - @Translation - public Result draftHandle(@RequestParam("draftId") @ApiParam("草稿Id") String draftId) { - return Result.OK(actFlowCommonService.getExistDraft(draftId, ProcessTypeEnum.ES_ANNUAL_INIT)); - } - - /** - * 待办回显 - * @param taskId - */ - @AutoLog(value = "企标年度制修订标准化发起流程-办理") - @ApiOperation(value="企标年度制修订标准化发起流程-办理", notes="企标年度制修订标准化发起流程-办理") - @GetMapping("/handle/{taskId}") - @Translation - public Result handle(@PathVariable("taskId") String taskId) { - ProcessDraft draft = actFlowCommonService.getExistDraftByTaskId(taskId, ProcessTypeEnum.ES_ANNUAL_INIT); - if (draft != null) { - return Result.OK(draft); - } - return Result.OK(annualInitService.getHandleData(taskId)); - } - - /** - * 同意 - * - * @param annualInitData - */ - @AutoLog(value = "企标年度制修订标准化发起流程-同意") - @ApiOperation(value="企标年度制修订标准化发起流程-同意", notes="企标年度制修订标准化发起流程-同意") - @PostMapping("/agree") - public Result agree(@RequestBody AnnualInitDataVO annualInitData) { - annualInitService.approvalProcess(annualInitData, true); - return Result.OK(); - } - - /** - * 驳回 - * - * @param annualInitData - */ - @AutoLog(value = "企标年度制修订标准化发起流程-驳回") - @ApiOperation(value="企标年度制修订标准化发起流程-驳回", notes="企标年度制修订标准化发起流程-驳回") - @PostMapping("/reject") - public Result reject(@RequestBody AnnualInitDataVO annualInitData) { - annualInitService.approvalProcess(annualInitData, false); - return Result.OK(); - } - - - /** - * 批量驳回 - * - * @param annualInitData - */ - @AutoLog(value = "企标年度制修订标准化发起流程-批量驳回") - @ApiOperation(value="企标年度制修订标准化发起流程-批量驳回", notes="企标年度制修订标准化发起流程-批量驳回") - @PostMapping("/batchReject") - public Result batchReject(@RequestBody AnnualInitDataVO annualInitData) { - annualInitService.batchReject(annualInitData, annualInitData.getBatchRejectIds()); - return Result.OK(); - } - - /** - * 导入模板下载 - */ - @GetMapping("/templateDownload") - @ApiOperation(value = "企标年度制修订标准化发起流程-导入模板下载", notes = "企标年度制修订标准化发起流程-导入模板下载" - ,produces = "application/octet-stream") - @AutoLog(value = "企标年度制修订标准化发起流程-导入模板下载") - public void templateDownload(HttpServletResponse response) { - try { - ClassPathResource resource = new ClassPathResource("excelTemplate/年度制修订计划(标准化发起)导入模板.xls"); - response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); - response.setCharacterEncoding("UTF-8"); // 这行确保响应流使用UTF-8编码 - - // 处理文件名乱码问题 - String encodedFileName = URLEncoder.encode("年度制修订计划(标准化发起)导入模板", StandardCharsets.UTF_8.name()).replace("+", "%20"); - response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename*=UTF-8''" + encodedFileName + ".xls"); - - try (InputStream in = resource.getInputStream(); OutputStream out = response.getOutputStream()) { - IOUtils.copy(in, out); - } - response.flushBuffer(); - } catch (Exception e) { - // 记录错误或执行其他处理 - e.printStackTrace(); - } - } - - /** - * 通过excel导入数据 - * - * @return - */ - @PostMapping("/importExcel") - @ApiOperation(value = "企标年度制修订标准化发起流程-导入", notes = "企标年度制修订标准化发起流程-导入") - @AutoLog(value = "企标年度制修订标准化发起流程-导入") - @Translation - public Result importExcel(@ApiParam(value = "要上传的文件", required = true) @RequestParam("file") MultipartFile file) { - file = IntekeyUtils.autoDecryptFile(file); - Map resultMap = annualInitService.importData(file); - Object flag = resultMap.get("flag"); - if (flag == YesOrNoEnum.YES.getValue()) { - List dataList = (List) resultMap.get("dataList"); - return Result.OK(dataList); - } else { - List msg = (List) resultMap.get("msg"); - return Result.error(MessageUtils.getMessage(ResultCommon.IMPORT_ERROR), msg); - } - } - - /** - * 转办 - * - */ - @AutoLog(value = "企标年度制修订标准化发起流程-转办") - @ApiOperation(value="企标年度制修订标准化发起流程-转办", notes="企标年度制修订标准化发起流程-转办") - @PostMapping(value = "/transfer") - public Result transfer(@RequestBody TransferVO transferVO) { - processHandleService.transfer(transferVO.getTaskId(), transferVO.getUserId()); - return Result.OK(); - } - -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualInit/entity/AnnualInitTaskNameConstant.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualInit/entity/AnnualInitTaskNameConstant.java deleted file mode 100644 index 3a9c6564..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualInit/entity/AnnualInitTaskNameConstant.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.jero.modules.activiti.process.esAnnualInit.entity; - -/** - * @author: Mzaxd - * @Date: 2023/10/27 7:32 - */ -public class AnnualInitTaskNameConstant { - - public static final String STANDARD_ENGINEER_INIT = "标准化工程师发起"; - public static final String CONTACT_USER_SELECT = "部所联络人选取审批人"; - public static final String STANDARD_ENGINEER_EDIT = "标准化工程师修改调整"; - public static final String STANDARD_ENGINEER_SECOND_EDIT = "标准化工程师二次修改调整"; - public static final String MAIN_DRAFT_LEADER_APPROVAL_DISTRIBUTE = "主起草单位主管级领导审批下发"; - public static final String CONTACT_USER_EDIT = "部所联络人修改调整"; - public static final String MAIN_DRAFT_WRITE = "主起草人填写信息"; - public static final String CONTACT_USER_COLLECT = "部所联络人汇总"; - public static final String MAIN_DRAFT_LEADER_APPROVAL = "主起草单位主管级领导审批"; - public static final String STANDARD_ENGINEER_COLLECT = "标准化归档"; -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualInit/entity/ProcessEsAnnualInit.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualInit/entity/ProcessEsAnnualInit.java deleted file mode 100644 index 03b28181..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualInit/entity/ProcessEsAnnualInit.java +++ /dev/null @@ -1,392 +0,0 @@ -package com.jero.modules.activiti.process.esAnnualInit.entity; - -import cn.hutool.core.util.StrUtil; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import java.io.Serializable; -import java.util.Date; - -import com.fasterxml.jackson.annotation.JsonFormat; -import com.jero.common.aspect.annotation.Dict; -import com.jero.common.constant.enums.YesOrNoEnum; -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; - -/** - * 企标-年度制修订计划-标准化发起 - * @TableName process_es_annual_init - */ -@TableName(value ="process_es_annual_init") -@Data -@Accessors(chain = true) -@EqualsAndHashCode(callSuper = false) -@ApiModel(value="process_es_annual_init", description="企标-年度制修订计划-标准化发起") -public class ProcessEsAnnualInit implements Serializable { - - /** - * 主键ID - */ - @TableId(type = IdType.ASSIGN_ID) - @ApiModelProperty(value = "主键ID") - private String id; - - /** - * 企标计划Id - */ - @ApiModelProperty(value = "企标计划Id") - private String espId; - - /** - * 创建人 - */ - @ApiModelProperty(value = "创建人") - private String createBy; - - /** - * 创建时间 - */ - @ApiModelProperty(value = "创建时间") - private Date createTime; - - /** - * 更新人 - */ - @ApiModelProperty(value = "更新人") - private String updateBy; - - /** - * 更新时间 - */ - @ApiModelProperty(value = "更新时间") - private Date updateTime; - - /** - * 所属部门 - */ - @ApiModelProperty(value = "所属部门") - private String orgCode; - - /** - * 0表示未删除,1表示删除 - */ - @ApiModelProperty(value = "0表示未删除,1表示删除") - private Integer delFlag; - - /** - * 流程实例Id - */ - @ApiModelProperty(value = "流程实例Id") - private String processInstanceId; - - /** - * 申请类别 - */ - @Dict(dicCode = "esp_application_category") - @ApiModelProperty(value = "申请类别") - private String applicationCategory; - - /** - * 制修订类型 - */ - @Excel(name = "*制修订类型", width = 15, orderNum = "1") - @Dict(dicCode = "esp_revision_type") - @ApiModelProperty(value = "制修订类型") - private String projectType; - - /** - * 原企标编号 - */ - @Excel(name = "原企标编号", width = 15, orderNum = "2") - @ApiModelProperty(value = "原企标编号") - private String originEnStandardNo; - - /** - * 新企标编号 - */ - @ApiModelProperty(value = "新企标编号") - private String newEnStandardNo; - - /** - * 原企标名称 - */ - @ApiModelProperty(value = "原企标名称") - private String originEnStandardName; - - /** - * 新企标名称 - */ - @Excel(name = "新企标名称", width = 15, orderNum = "3") - @ApiModelProperty(value = "新企标名称") - private String newEnStandardName; - - /** - * 企标英文名称 - */ - @ApiModelProperty(value = "企标英文名称") - private String enStandardEnglishName; - - /** - * 企业标准代号 - */ - @Excel(name = "企业标准代号", width = 15, orderNum = "4") - @ApiModelProperty(value = "企业标准代号") - @Dict(dicCode = "enterprise_standard_code") - private String enStandardCode; - - /** - * 企业名称代号 - */ - @Excel(name = "企业名称代号", width = 15, orderNum = "5") - @Dict(dicCode = "enterprise_name_code") - @ApiModelProperty(value = "企业名称代号") - private String enNameCode; - - /** - * 标准类别代号 - */ - @Excel(name = "标准类别代号", width = 15, orderNum = "6") - @Dict(dicCode = "standard_category_code") - @ApiModelProperty(value = "标准类别代号") - private String standardCategoryCode; - - /** - * 企标体系 - */ - @Excel(name = "标准体系", width = 25, orderNum = "7") - @Dict(dictTable = "laws_tree_node", dicCode = "id", dicText = "node_name") - @ApiModelProperty(value = "企标体系") - private String enStandardSystem; - - /** - * 年代号 - */ - @ApiModelProperty(value = "年代号") - private String decadeCode; - - /** - * 标准类型 - */ - @Excel(name = "标准类型", width = 15, orderNum = "8") - @Dict(dicCode = "esp_standard_type") - @ApiModelProperty(value = "标准类型") - private String standardType; - - /** - * 企标等级分类 - */ - @Excel(name = "标准等级分类", width = 15, orderNum = "9") - @Dict(dicCode = "standard_grade_classify") - @ApiModelProperty(value = "企标等级分类") - private String enStandardClassification; - - /** - * 草稿计划完成日期 - */ - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") - @DateTimeFormat(pattern="yyyy-MM-dd") - @ApiModelProperty(value = "草稿计划完成日期") - private Date draftPlannedCompleteDate; - - @Excel(name = "草稿计划完成日期", width = 20, orderNum = "10") - @TableField(exist = false) - private String draftPlannedCompleteDateString; - - @ApiModelProperty(value = "草稿计划完成日期是否可以编辑") - private String draftPlannedCompleteDateEditFlag; - - /** - * 征求意见稿计划完成日期 - */ - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") - @DateTimeFormat(pattern="yyyy-MM-dd") - @ApiModelProperty(value = "征求意见稿计划完成日期") - private Date solicitationDraftPlanCompleteDate; - - @Excel(name = "征求意见稿计划完成日期", width = 24, orderNum = "11") - @TableField(exist = false) - private String solicitationDraftPlanCompleteDateString; - - @ApiModelProperty(value = "征求意见稿计划完成日期是否可以编辑") - private String solicitationDraftPlanCompleteDateEditFlag; - - /** - * 计划报批日期 - */ - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") - @DateTimeFormat(pattern="yyyy-MM-dd") - @ApiModelProperty(value = "计划报批日期") - private Date planApprovalDate; - - @Excel(name = "计划报批日期", width = 15, orderNum = "12") - @TableField(exist = false) - private String planApprovalDateString; - - @ApiModelProperty(value = "计划报批日期是否可以编辑") - private String planApprovalDateEditFlag; - - /** - * 项目状态 - */ - @ApiModelProperty(value = "项目状态") - private String projectStatus; - - /** - * 编制说明 - */ - @ApiModelProperty(value = "编制说明") - private String compilationDescription; - - /** - * 零部件名称 - */ - @Excel(name = "零部件名称", width = 15, orderNum = "13") - @Dict(dictTable = "laws_part_name", dicCode = "code", dicText = "name") - @ApiModelProperty(value = "零部件名称") - private String componentName; - - /** - * 授权部门 - */ - @Excel(name = "授权部门", width = 15, orderNum = "14") - @Dict(dictTable = "sys_depart", dicCode = "id", dicText = "depart_name") - @ApiModelProperty(value = "授权部门") - private String authDept; - - /** - * 主起草人 - */ - @Excel(name = "*主起草人", width = 15, orderNum = "15") - @Dict(dicCode = "id", dictTable = "sys_user", dicText = "CONCAT(realname, '(', username, ')')") - @ApiModelProperty(value = "主起草人") - private String mainDraftingUser; - - /** - * 主起草单位 - */ - @Excel(name = "*主起草单位", width = 15, orderNum = "16") - @Dict(dictTable = "sys_depart", dicCode = "id", dicText = "depart_name") - @ApiModelProperty(value = "主起草单位") - private String mainDraftingUnit; - - /** - * 主起草单位责任人 - */ - @Excel(name = "*主起草单位责任人", width = 20, orderNum = "17") - @Dict(dicCode = "id", dictTable = "sys_user", dicText = "CONCAT(realname, '(', username, ')')") - @ApiModelProperty(value = "主起草单位责任人") - private String mainDraftingUnitResponsiblePerson; - - /** - * 标准推进人 - */ - @Excel(name = "*标准推进人", width = 15, orderNum = "18") - @Dict(dicCode = "id", dictTable = "sys_user", dicText = "CONCAT(realname, '(', username, ')')") - @ApiModelProperty(value = "标准推进人") - private String standardPromoter; - - /** - * 征求意见稿完成日期 - */ - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") - @DateTimeFormat(pattern="yyyy-MM-dd") - @ApiModelProperty(value = "征求意见稿完成日期") - private Date solicitationDraftCompletionDate; - - /** - * 变更状态 - */ - @Dict(dicCode = "esp_change_status") - @ApiModelProperty(value = "变更状态") - private String changeStatus; - - /** - * 上传附件 - */ - @ApiModelProperty(value = "上传附件") - private String uploadAttachment; - - /** - * 变更原因 - */ - @ApiModelProperty(value = "变更原因") - private String changeReason; - - /** - * 配合单位 - */ - @Excel(name = "配合单位", width = 15, orderNum = "19") - @Dict(dictTable = "sys_depart", dicCode = "id", dicText = "depart_name") - @ApiModelProperty(value = "配合单位") - private String cooperationUnit; - - /** - * 联络人 - */ - @Excel(name = "*联络人", width = 15, orderNum = "20") - @Dict(dicCode = "id", dictTable = "sys_user", dicText = "CONCAT(realname, '(', username, ')')") - @ApiModelProperty(value = "联络人") - private String contactUser; - - /** - * 流程中的主起草人 - */ - @Dict(dicCode = "id", dictTable = "sys_user", dicText = "CONCAT(realname, '(', username, ')')") - @ApiModelProperty(value = "流程中的主起草人") - private String prcMainDraftUser; - - /** - * 驳回标识 - */ - @ApiModelProperty(value = "驳回标识") - @Dict(dicCode = "YN") - private String rejectFlag; - - @ApiModelProperty(value = "二级驳回标识") - @Dict(dicCode = "YN") - private String rejectSecondFlag; - - /** - * 执行id - */ - @ApiModelProperty(value = "执行id") - private String executionId; - - /** - * 审批人 - */ - @Dict(dicCode = "id", dictTable = "sys_user", dicText = "CONCAT(realname, '(', username, ')')") - @ApiModelProperty(value = "审批人") - private String approvalUser; - - @TableField(exist = false) - private static final long serialVersionUID = 1L; - - @TableField(exist = false) - private String sort; - - public void setDateEditFlag() { - if (this.getDraftPlannedCompleteDate() != null) { - this.setDraftPlannedCompleteDateEditFlag(YesOrNoEnum.NO.getValue()); - } else { - this.setDraftPlannedCompleteDateEditFlag(YesOrNoEnum.YES.getValue()); - } - if (this.getSolicitationDraftPlanCompleteDate() != null) { - this.setSolicitationDraftPlanCompleteDateEditFlag(YesOrNoEnum.NO.getValue()); - } else { - this.setSolicitationDraftPlanCompleteDateEditFlag(YesOrNoEnum.YES.getValue()); - } - if (this.getPlanApprovalDate() != null) { - this.setPlanApprovalDateEditFlag(YesOrNoEnum.NO.getValue()); - } else { - this.setPlanApprovalDateEditFlag(YesOrNoEnum.YES.getValue()); - } - } - -} \ No newline at end of file diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualInit/entity/vo/AnnualInitDataVO.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualInit/entity/vo/AnnualInitDataVO.java deleted file mode 100644 index a23fd407..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualInit/entity/vo/AnnualInitDataVO.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.jero.modules.activiti.process.esAnnualInit.entity.vo; - -import com.fasterxml.jackson.annotation.JsonProperty; -import com.jero.modules.activiti.process.common.entity.CommonVO; -import com.jero.modules.activiti.process.esAnnualInit.entity.ProcessEsAnnualInit; -import lombok.Data; -import org.springframework.web.bind.annotation.RequestParam; - -import java.util.List; -import java.util.Map; - -/** - * @author: Mzaxd - * @Date: 2023/10/26 17:28 - */ -@Data -public class AnnualInitDataVO { - - @JsonProperty("common") - private CommonVO commonVO; - - @JsonProperty("dataList") - private List dataList; - - @JsonProperty("flowUser") - private Map flowUser; - - @JsonProperty("batchRejectIds") - private String batchRejectIds; -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualInit/entity/vo/AnnualInitFlowUserVO.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualInit/entity/vo/AnnualInitFlowUserVO.java deleted file mode 100644 index 0fd0cc5c..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualInit/entity/vo/AnnualInitFlowUserVO.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.jero.modules.activiti.process.esAnnualInit.entity.vo; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.jero.common.aspect.annotation.Dict; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import java.util.List; - -/** - * @author: Mzaxd - * @Date: 2023/10/26 17:29 - */ -@Data -public class AnnualInitFlowUserVO { - - @Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname") - @ApiModelProperty("标准化工程师") - private String standardEngineer; - - // 部所联络人 - @Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname") - @ApiModelProperty("各部所联络人") - private String contactUser; - - // 部所联络人 - @Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname") - @ApiModelProperty("各部所联络人集合") - @JsonIgnore - private List contactUserList; - - // 主起草单位主管 - @Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname") - @ApiModelProperty("主起草单位主管") - private String approvalUser; - - // 主起草单位主管 - @Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname") - @ApiModelProperty("主起草单位主管集合") - private List approvalUserList; - - // 主起草人 - @Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname") - @ApiModelProperty("主起草人") - private String mainDraftUser; - - // 主起草人 - @Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname") - @ApiModelProperty("主起草人集合") - @JsonIgnore - private List mainDraftUserList; - -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualInit/listener/ContactUserDistributeCreateListener.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualInit/listener/ContactUserDistributeCreateListener.java deleted file mode 100644 index 16a826d4..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualInit/listener/ContactUserDistributeCreateListener.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.jero.modules.activiti.process.esAnnualInit.listener; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.jero.modules.activiti.process.esAnnualInit.entity.ProcessEsAnnualInit; -import com.jero.modules.activiti.process.esAnnualInit.service.impl.ProcessEsAnnualInitServiceImpl; -import lombok.extern.slf4j.Slf4j; -import org.activiti.engine.delegate.DelegateTask; -import org.activiti.engine.delegate.TaskListener; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; -import java.util.List; - -/** - * @author: Mzaxd - * @Date: 2023/10/10 14:14 - */ -@Slf4j -@Component("contactUserDistributeCreateListener") -public class ContactUserDistributeCreateListener implements TaskListener { - - @Resource - private ProcessEsAnnualInitServiceImpl annualInitService; - - /** - * 流程结束之后需要把数据存入企标计划数据库 - * - * @param delegateTask task - */ - @Override - public void notify(DelegateTask delegateTask) { - String executionId = delegateTask.getExecutionId(); - String contactUser = (String) delegateTask.getVariable("contactUser"); - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(ProcessEsAnnualInit::getContactUser, contactUser); - wrapper.eq(ProcessEsAnnualInit::getProcessInstanceId, delegateTask.getProcessInstanceId()); - List list = annualInitService.list(wrapper); - list.forEach(l -> l.setExecutionId(executionId)); - annualInitService.updateBatchById(list); - } -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualInit/listener/MainDraftLeaderDistributeCreateListener.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualInit/listener/MainDraftLeaderDistributeCreateListener.java deleted file mode 100644 index 36a4ed15..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualInit/listener/MainDraftLeaderDistributeCreateListener.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.jero.modules.activiti.process.esAnnualInit.listener; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.jero.modules.activiti.process.esAnnualInit.entity.ProcessEsAnnualInit; -import com.jero.modules.activiti.process.esAnnualInit.service.impl.ProcessEsAnnualInitServiceImpl; -import com.jero.modules.activiti.util.ThreadLocalUtil; -import lombok.extern.slf4j.Slf4j; -import org.activiti.engine.TaskService; -import org.activiti.engine.delegate.DelegateTask; -import org.activiti.engine.delegate.TaskListener; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; -import java.util.List; - -/** - * @author: Mzaxd - * @Date: 2023/10/10 14:14 - */ -@Slf4j -@Component("mainDraftLeaderDistributeCreateListener") -public class MainDraftLeaderDistributeCreateListener implements TaskListener { - - @Resource - private ProcessEsAnnualInitServiceImpl annualInitService; - - @Resource - private TaskService taskService; - - /** - * 流程结束之后需要把数据存入企标计划数据库 - * - * @param delegateTask task - */ - @Override - public void notify(DelegateTask delegateTask) { - String contactExecutionId = (String) taskService.getVariable(delegateTask.getId(), "contactExecutionId"); - String executionId = delegateTask.getExecutionId(); - String approvalUser = (String) delegateTask.getVariable("approvalUser"); - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(ProcessEsAnnualInit::getApprovalUser, approvalUser); - wrapper.eq(ProcessEsAnnualInit::getExecutionId, contactExecutionId); - wrapper.eq(ProcessEsAnnualInit::getProcessInstanceId, delegateTask.getProcessInstanceId()); - List list = annualInitService.list(wrapper); - list.forEach(l -> l.setExecutionId(executionId)); - annualInitService.updateBatchById(list); - } -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualInit/listener/MainDraftWriteCreateListener.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualInit/listener/MainDraftWriteCreateListener.java deleted file mode 100644 index 70a1d60e..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualInit/listener/MainDraftWriteCreateListener.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.jero.modules.activiti.process.esAnnualInit.listener; - -import com.jero.modules.activiti.util.ThreadLocalUtil; -import lombok.extern.slf4j.Slf4j; -import org.activiti.engine.RuntimeService; -import org.activiti.engine.TaskService; -import org.activiti.engine.delegate.DelegateTask; -import org.activiti.engine.delegate.TaskListener; -import org.activiti.engine.runtime.Execution; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; - - -/** - * @author: Mzaxd - * @Date: 2023/10/10 14:14 - */ -@Slf4j -@Component("mainDraftWriteCreateListener") -public class MainDraftWriteCreateListener implements TaskListener { - - @Resource - private TaskService taskService; - - - /** - * 流程结束之后需要把数据存入企标计划数据库 - * - * @param delegateTask task - */ - @Override - public void notify(DelegateTask delegateTask) { - String parentExecutionId = (String) taskService.getVariable(delegateTask.getId(), "parentExecutionId"); - delegateTask.setVariableLocal("parentExecutionId", parentExecutionId); - } -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualInit/listener/ProcessESAnnualInitEndListener.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualInit/listener/ProcessESAnnualInitEndListener.java deleted file mode 100644 index aa3d7832..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualInit/listener/ProcessESAnnualInitEndListener.java +++ /dev/null @@ -1,125 +0,0 @@ -package com.jero.modules.activiti.process.esAnnualInit.listener; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.jero.common.constant.enums.YesOrNoEnum; -import com.jero.common.exception.JeroBootException; -import com.jero.modules.activiti.entity.ProcessAll; -import com.jero.modules.activiti.enums.ProcessStatusEnum; -import com.jero.modules.activiti.enums.ProcessTypeEnum; -import com.jero.modules.activiti.process.esAnnualInit.entity.ProcessEsAnnualInit; -import com.jero.modules.activiti.process.esAnnualInit.service.impl.ProcessEsAnnualInitServiceImpl; -import com.jero.modules.activiti.process.esInitChange.entity.ProcessEsInitChange; -import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPRevisionType; -import com.jero.modules.activiti.process.esRevision.entity.ProcessEsRevision; -import com.jero.modules.activiti.process.esRevision.entity.vo.ESRevisionDataVO; -import com.jero.modules.activiti.process.esRevision.service.EsRevisionService; -import com.jero.modules.activiti.service.ProcessAllService; -import com.jero.modules.laws.common.constant.FieldCommon; -import com.jero.modules.laws.enterprise.entity.EnterpriseStandardPlan; -import com.jero.modules.laws.enterprise.service.EnterpriseStandardPlanService; -import com.jero.modules.laws.enterprise.util.BeanCopyUtils; -import com.jero.modules.laws.enterprise.util.EnterpriseStandardUtil; -import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard; -import lombok.extern.slf4j.Slf4j; -import org.activiti.engine.delegate.DelegateExecution; -import org.activiti.engine.delegate.ExecutionListener; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; -import java.util.*; -import java.util.stream.Collectors; - -/** - * @author: Mzaxd - * @Date: 2023/10/10 14:14 - */ -@Slf4j -@Component -public class ProcessESAnnualInitEndListener implements ExecutionListener { - - @Resource - private EnterpriseStandardPlanService espService; - - @Resource - private ProcessEsAnnualInitServiceImpl annualInitService; - - @Resource - private EsRevisionService esRevisionService; - - @Resource - private EnterpriseStandardUtil esUtil; - - @Resource - private ProcessAllService processAllService; - - /** - * 流程结束之后需要把数据存入企标计划数据库 - * - * @param delegateExecution - */ - @Override - public void notify(DelegateExecution delegateExecution) { - log.info("年度制修订标准化发起流程结束 监听执行器开始执行"); - // 获取流程实例ID - String processInstanceId = delegateExecution.getProcessInstanceId(); - // 根据流程实例Id找到所有流程业务数据 - LambdaQueryWrapper esAnnualInitWrapper = new LambdaQueryWrapper<>(); - esAnnualInitWrapper.eq(ProcessEsAnnualInit::getProcessInstanceId, processInstanceId); - List annualInits = annualInitService.list(esAnnualInitWrapper); - if (annualInits == null || annualInits.isEmpty()) { - log.info("年度制修订标准化发起流程结束 监听执行器未找到流程业务数据"); - return; - } - List enterpriseStandardPlans; - // 立项新增-Id置空 - annualInits.forEach(annualInit -> annualInit.setId(null)); - // 转换为企标计划数据并入库 - enterpriseStandardPlans = BeanCopyUtils.copyBeanList(annualInits, EnterpriseStandardPlan.class); - // 设置一些字段 - // 制修订类型字段 - for (EnterpriseStandardPlan esp : enterpriseStandardPlans) { - esp.setApplicationCategory(esp.getProjectType()); - } - // 生成企标编号 - Map map = new HashMap<>(); - String newStandardNumber; - // 获取当前年份 - Calendar date = Calendar.getInstance(); - String curYearNumber = String.valueOf(date.get(Calendar.YEAR)); - List needValidList = new ArrayList<>(); - for (EnterpriseStandardPlan esp : enterpriseStandardPlans) { - // 修订只改年代号 - if (esp.getApplicationCategory().equals(ESPRevisionType.MODIFY.getValue())) { - newStandardNumber = esUtil.changeStandardNumberYearNumber(esp.getOriginEnStandardNo(), curYearNumber); - esp.setNewEnStandardNo(newStandardNumber); - needValidList.add(esp); - } - } - if (!needValidList.isEmpty()) { - List duplicateStandardNumbers = esUtil.verifyEsNumberByPlans(needValidList); - if (duplicateStandardNumbers != null && !duplicateStandardNumbers.isEmpty()) { - throw new JeroBootException("原企标编号" + String.join(",", duplicateStandardNumbers) + "修订后,与已存在的企标编号重复,请删除后重新提交"); - } - } - // 判断修订的新标准号是否有效 - for (EnterpriseStandardPlan esp : enterpriseStandardPlans) { - // 制定生成新企标编号 - if (esp.getApplicationCategory().equals(ESPRevisionType.ENACT.getValue())) { - map.put(FieldCommon.ENTERPRISE_STANDARD_CODE, esp.getEnStandardCode()); - map.put(FieldCommon.ENTERPRISE_NAME_CODE, esp.getEnNameCode()); - map.put(FieldCommon.STANDARD_CATEGORY_CODE, esp.getStandardCategoryCode()); - map.put(FieldCommon.YEAR_NUMBER, curYearNumber); - newStandardNumber = esUtil.generateStandardNumber(map); - esp.setNewEnStandardNo(newStandardNumber); - } - espService.save(esp); - log.info("数据存入企标计划数据库"); - ESRevisionDataVO revisionDataVO = new ESRevisionDataVO(); - ProcessEsRevision revision = new ProcessEsRevision(); - revision.setEspId(esp.getId()); - revisionDataVO.setData(revision); - esRevisionService.autoStartProcess(revisionDataVO); - log.info("自动发起企标制修订流程"); - } - } -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualInit/mapper/ProcessEsAnnualInitMapper.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualInit/mapper/ProcessEsAnnualInitMapper.java deleted file mode 100644 index 0a6895b9..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualInit/mapper/ProcessEsAnnualInitMapper.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.jero.modules.activiti.process.esAnnualInit.mapper; - -import com.jero.modules.activiti.process.esAnnualInit.entity.ProcessEsAnnualInit; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; - -/** -* @author ThinkBook -* @description 针对表【process_es_annual_init(企标立项变更流程)】的数据库操作Mapper -* @createDate 2023-10-18 10:01:44 -* @Entity com.jero.modules.activiti.process.esAnnualInit.entity.ProcessEsAnnualInit -*/ -public interface ProcessEsAnnualInitMapper extends BaseMapper { - -} - - - - diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualInit/mapper/xml/ProcessEsAnnualInitMapper.xml b/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualInit/mapper/xml/ProcessEsAnnualInitMapper.xml deleted file mode 100644 index 6face39e..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualInit/mapper/xml/ProcessEsAnnualInitMapper.xml +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - id,esp_id,create_by, - create_time,update_by,update_time, - org_code,del_flag,process_instance_id, - application_category,project_type,origin_en_standard_no, - new_en_standard_no,origin_en_standard_name,new_en_standard_name, - en_standard_english_name,en_standard_system,en_standard_code, - en_name_code,standard_category_code,decade_code, - standard_type,en_standard_classification,draft_planned_complete_date, - solicitation_draft_plan_complete_date,plan_approval_date,project_status, - compilation_description,component_name,main_drafting_user, - main_drafting_unit,main_drafting_unit_responsible_person,standard_promoter, - solicitation_draft_completion_date,change_status,remarks, - upload_attachment,change_reason,auth_dept, - cooperation_unit,contact_user,approval_user - - diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualInit/service/ProcessEsAnnualInitService.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualInit/service/ProcessEsAnnualInitService.java deleted file mode 100644 index d51b99fa..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualInit/service/ProcessEsAnnualInitService.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.jero.modules.activiti.process.esAnnualInit.service; - -import com.jero.modules.activiti.process.esAnnualInit.entity.ProcessEsAnnualInit; -import com.baomidou.mybatisplus.extension.service.IService; -import com.jero.modules.activiti.process.esAnnualInit.entity.vo.AnnualInitDataVO; -import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO; -import org.springframework.web.multipart.MultipartFile; - -import java.util.Map; - -/** -* @author ThinkBook -* @description 针对表【process_es_annual_init(企标立项变更流程)】的数据库操作Service -* @createDate 2023-10-18 10:01:44 -*/ -public interface ProcessEsAnnualInitService extends IService { - - /** - * 导入数据,返回数据列表 - * @return - */ - Map importData(MultipartFile file); - - void startProcess(AnnualInitDataVO annualInitData); - - void saveToDraft(ProcessInfoVO annualInitData); - - AnnualInitDataVO getHandleData(String taskId); - - void approvalProcess(AnnualInitDataVO annualInitData, boolean b); - - void batchReject(AnnualInitDataVO ids, String prcId); -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualInit/service/impl/ProcessEsAnnualInitServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualInit/service/impl/ProcessEsAnnualInitServiceImpl.java deleted file mode 100644 index 02622b4f..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualInit/service/impl/ProcessEsAnnualInitServiceImpl.java +++ /dev/null @@ -1,709 +0,0 @@ -package com.jero.modules.activiti.process.esAnnualInit.service.impl; - -import cn.hutool.core.util.StrUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.jero.common.api.CommonAPI; -import com.jero.common.aspect.TranslationAspect; -import com.jero.common.constant.enums.YesOrNoEnum; -import com.jero.common.exception.JeroBootException; -import com.jero.common.system.vo.SysDictItemCore; -import com.jero.modules.activiti.entity.ProcessAll; -import com.jero.modules.activiti.enums.ProcessTypeEnum; -import com.jero.modules.activiti.process.common.entity.CommonVO; -import com.jero.modules.activiti.process.common.enums.ProcessType; -import com.jero.modules.activiti.process.common.service.ActFlowCommonService; -import com.jero.modules.activiti.process.esAnnualInit.entity.ProcessEsAnnualInit; -import com.jero.modules.activiti.process.esAnnualInit.entity.vo.AnnualInitDataVO; -import com.jero.modules.activiti.process.esAnnualInit.service.ProcessEsAnnualInitService; -import com.jero.modules.activiti.process.esAnnualInit.mapper.ProcessEsAnnualInitMapper; -import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPChangeType; -import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPProjectType; -import com.jero.modules.activiti.process.fb.dto.BasicProcessInfoDTO; -import com.jero.modules.activiti.process.fb.service.IProcessHandleService; -import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO; -import com.jero.modules.activiti.service.ProcessAllService; -import com.jero.modules.activiti.service.ProcessNodeLinkService; -import com.jero.modules.activiti.util.ExcelUtils; -import com.jero.modules.laws.common.util.ImportUtil; -import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard; -import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService; -import com.jero.modules.sys.utils.UserUtils; -import lombok.Cleanup; -import lombok.SneakyThrows; -import lombok.extern.slf4j.Slf4j; -import org.activiti.engine.RuntimeService; -import org.activiti.engine.TaskService; -import org.activiti.engine.runtime.ProcessInstance; -import org.activiti.engine.task.Task; -import org.jeecgframework.poi.excel.ExcelImportUtil; -import org.jeecgframework.poi.excel.entity.ImportParams; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.web.multipart.MultipartFile; - -import javax.annotation.Resource; -import java.io.InputStream; -import java.util.*; -import java.util.stream.Collectors; - -import static com.jero.modules.activiti.process.esAnnualInit.entity.AnnualInitTaskNameConstant.*; - -/** - * @author ThinkBook - * @description 针对表【process_es_annual_init(企标立项变更流程)】的数据库操作Service实现 - * @createDate 2023-10-18 10:01:44 - */ -@Slf4j -@Transactional(rollbackFor = JeroBootException.class) -@Service -public class ProcessEsAnnualInitServiceImpl extends ServiceImpl - implements ProcessEsAnnualInitService { - - @Resource - private CommonAPI commonAPI; - - @Resource - private ExcelUtils excelUtils; - - @Resource - private ILawsEnterpriseStandardService enterpriseStandardService; - - @Resource - private ActFlowCommonService actFlowCommonService; - - @Resource - private ProcessNodeLinkService processNodeLinkService; - - @Resource - private ProcessAllService processAllService; - - @Resource - private RuntimeService runtimeService; - - @Resource - private TaskService taskService; - - @Resource - private ImportUtil importUtil; - - @Resource - private IProcessHandleService processHandleService; - - @Resource - private TranslationAspect translationAspect; - - @Resource - private ILawsEnterpriseStandardService esService; - - @Override - public void startProcess(AnnualInitDataVO annualInitData) { - // 流程Key - String processDefinitionKey = ProcessType.ES_ANNUAL_INIT.getProcessKey(); - // 通用数据 - CommonVO commonVO = annualInitData.getCommonVO(); - // 当前用户Id - String userId = UserUtils.getUserId(); - // 业务数据 - List dataList = annualInitData.getDataList(); - // 设置流程变量 - Map actVariables = this.setVariables(annualInitData); - // 删除草稿 - actFlowCommonService.getExistDraftAndRemove(commonVO, ProcessTypeEnum.ES_ANNUAL_INIT); - // 启动流程 - ProcessInstance processInstance = actFlowCommonService.startProcess(processDefinitionKey, actVariables); - // 获取流程实例ID - String processDefinitionId = processInstance.getProcessDefinitionId(); - String processInstanceId = processInstance.getId(); - // 保存数据 - dataList.forEach(data -> data.setProcessInstanceId(processInstanceId)); - dataList.forEach(ProcessEsAnnualInit::setDateEditFlag); - saveOrUpdateBatch(dataList); - // 手动设置所有流程变量 - actFlowCommonService.setProcessVariables(processInstanceId, actVariables); - // 保存选人信息 - processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, this.getUserMap(actVariables)); - // 获取第一个任务的taskId - String taskId = actFlowCommonService.getFirstTaskId(processInstanceId, userId, processDefinitionId); - // 手动翻译 - String jsonData = translationAspect.manualParseDictText(this.getHandleData(taskId), actVariables); - // 强制撤回 - commonVO.setProcessInstanceId(processInstanceId); - actFlowCommonService.saveFirstNodeDraft(commonVO, ProcessTypeEnum.ES_ANNUAL_INIT, jsonData); - // 更新审批表为完成,填充数据 - actFlowCommonService.updateApprovalInfo(commonVO, taskId, true); - // 自动完成第一个任务 - actFlowCommonService.completeTask(taskId, userId); - // 根据流程实例id更新流程总表 - String prcName = commonVO.getPrcName(); - String prcMes = commonVO.getPrcMes(); - Date dueTime = commonVO.getDueTime(); - Integer prcType = ProcessTypeEnum.ES_ANNUAL_INIT.getValue(); - actFlowCommonService.updateProcessAll(processInstanceId, userId, prcName, prcMes, prcType, dueTime); - } - - /** - * 驳回以后重新发起流程 - */ - public void restartProcess(AnnualInitDataVO annualInitData, String originTaskId) { - Task task = taskService.createTaskQuery().taskId(originTaskId).singleResult(); - // 获取流程相关信息 - ProcessAll processAll = processAllService.getByProcessInstanceId(task.getProcessInstanceId()); - String standardEngineer = (String) taskService.getVariable(originTaskId, "standardEngineer"); - Map actVariables = new HashMap<>(); - actVariables.put("standardEngineer", standardEngineer); - // 流程Key - String processDefinitionKey = ProcessType.ES_ANNUAL_INIT.getProcessKey(); - // 业务数据 - List dataList = annualInitData.getDataList(); - // 启动流程 - ProcessInstance processInstance = actFlowCommonService.startProcess(processDefinitionKey, actVariables); - // 获取流程实例ID - String processDefinitionId = processInstance.getProcessDefinitionId(); - String processInstanceId = processInstance.getId(); - // 手动设置所有流程变量 - actFlowCommonService.setProcessVariables(processInstanceId, actVariables); - // 保存选人信息 - processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, this.getUserMap(actVariables)); - // 保存数据 - dataList.forEach(data -> data.setProcessInstanceId(processInstanceId)); - dataList.forEach(ProcessEsAnnualInit::setDateEditFlag); - saveOrUpdateBatch(dataList); - // 强制撤回 - CommonVO commonVO = annualInitData.getCommonVO(); - String prcName = processAll.getPrcName(); - String prcMes = processAll.getPrcMes(); - Date dueTime = processAll.getDueTime(); - commonVO.setProcessInstanceId(processInstanceId); - commonVO.setPrcName(prcName); - commonVO.setPrcMes(prcMes); - commonVO.setDueTime(dueTime); - commonVO.setCommitText(null); - commonVO.setCommitFile(null); - // 手动翻译 - String jsonData = translationAspect.autoParseDictText(annualInitData, actVariables); - // 强制撤回 - actFlowCommonService.saveFirstNodeDraft(commonVO, ProcessTypeEnum.ES_ANNUAL_INIT, jsonData); - // 根据流程实例id更新流程总表 - Integer prcType = ProcessTypeEnum.ES_ANNUAL_INIT.getValue(); - // 更新流程信息 - actFlowCommonService.updateProcessAll(processInstanceId, standardEngineer, prcName, prcMes, prcType, dueTime); - } - - public Map setVariables(AnnualInitDataVO annualInitData) { - Map actVariables = new HashMap<>(); - Map flowUser = annualInitData.getFlowUser(); - List dataList = annualInitData.getDataList(); - Set contactUserSet = dataList.stream().map(ProcessEsAnnualInit::getContactUser).collect(Collectors.toSet()); - actVariables.put("contactUserList", contactUserSet); - actVariables.put("passFinalCollect", true); - actVariables.put("standardEngineer", flowUser.get("standardEngineer")); - return actVariables; - } - - private Map getUserMap(Map variables) { - variables.remove("passFinalCollect"); - // 转成逗号拼接 - variables.put("contactUserList", Optional.ofNullable((HashSet) variables.get("contactUserList")) - .map(list -> String.join(",", list)) - .orElse("")); - return variables; - } - - @Override - public void saveToDraft(ProcessInfoVO processInfoVO) { - // 流程信息 - BasicProcessInfoDTO basicProcessInfoDTO = processInfoVO.getBasicProcessInfoDTO(); - basicProcessInfoDTO.setProcessType(ProcessTypeEnum.ES_ANNUAL_INIT.getValue()); // 流程类型 - processHandleService.saveToDraft(processInfoVO); - } - - @Override - public AnnualInitDataVO getHandleData(String taskId) { - if (!actFlowCommonService.taskExists(taskId)) { - throw new JeroBootException("任务不存在"); - } - String userId = actFlowCommonService.getOriginTaskAssignee(taskId); - String executionId = taskService.createTaskQuery().taskId(taskId).singleResult().getExecutionId(); - // 根据当前执行Id获取所有子执行Id - List executionIdList = actFlowCommonService.getAllChildExecutionIds(executionId); - executionIdList.add(executionId); - AnnualInitDataVO annualInitDataVO = new AnnualInitDataVO(); - // 使用流程引擎根据taskId找到流程实例Id - String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId); - // 获取流程通用数据 - ProcessAll process = processAllService.getByProcessInstanceId(processInstanceId); - CommonVO commonVO = new CommonVO(); - commonVO.setPrcName(process.getPrcName()); - commonVO.setTaskId(process.getTaskId()); - commonVO.setPrcMes(process.getPrcMes()); - commonVO.setDueTime(process.getDueTime()); - commonVO.setNodeId(process.getNodeId()); - annualInitDataVO.setCommonVO(commonVO); - // 获取流程实例数据 - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); - String taskName = task.getName(); - String parentExecutionId = (String) taskService.getVariableLocal(taskId, "parentExecutionId"); - switch (taskName) { - case CONTACT_USER_SELECT: - case MAIN_DRAFT_LEADER_APPROVAL_DISTRIBUTE: - case CONTACT_USER_COLLECT: - case MAIN_DRAFT_LEADER_APPROVAL: - wrapper.eq(ProcessEsAnnualInit::getExecutionId, executionId); - break; - case CONTACT_USER_EDIT: - wrapper.eq(ProcessEsAnnualInit::getRejectFlag, YesOrNoEnum.YES.getValue()); - wrapper.eq(ProcessEsAnnualInit::getExecutionId, executionId); - break; - case MAIN_DRAFT_WRITE: - wrapper.eq(ProcessEsAnnualInit::getPrcMainDraftUser, userId); - wrapper.eq(ProcessEsAnnualInit::getExecutionId, parentExecutionId); - break; - case STANDARD_ENGINEER_COLLECT: - // do nothing now - break; - } - wrapper.eq(ProcessEsAnnualInit::getProcessInstanceId, processInstanceId); - wrapper.eq(ProcessEsAnnualInit::getDelFlag, YesOrNoEnum.NO.getInteger()); - annualInitDataVO.setDataList(list(wrapper)); - return annualInitDataVO; - } - - @Override - public void approvalProcess(AnnualInitDataVO annualInitData, boolean pass) { - CommonVO commonVO = annualInitData.getCommonVO(); - String taskId = commonVO.getTaskId(); - // 获取task - if (StrUtil.isBlank(taskId) || !actFlowCommonService.taskExists(taskId)) { - throw new JeroBootException("taskId为空或任务不存在"); - } - String userId = actFlowCommonService.getOriginTaskAssignee(taskId); - Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); - // 获取执行id - String executionId = task.getExecutionId(); - String taskName = task.getName(); - String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId); - List dataList; - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); - wrapper.eq(ProcessEsAnnualInit::getProcessInstanceId, processInstanceId); - wrapper.eq(ProcessEsAnnualInit::getDelFlag, YesOrNoEnum.NO.getValue()); - updateWrapper.eq(ProcessEsAnnualInit::getProcessInstanceId, processInstanceId); - updateWrapper.eq(ProcessEsAnnualInit::getDelFlag, YesOrNoEnum.NO.getValue()); - // 获取当前流程 - ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult(); - String processDefinitionId = processInstance.getProcessDefinitionId(); - Map userMap = new HashMap<>(); - AnnualInitDataVO handleData = this.getHandleData(taskId); - List dbDataList = handleData.getDataList(); - String curUserId = UserUtils.getUserId(); - String contactUser = (String) runtimeService.getVariable(executionId, "contactUser"); - switch (taskName) { - case STANDARD_ENGINEER_INIT: - dataList = annualInitData.getDataList(); - // 设置流程变量 - Map actVariables = this.setVariables(annualInitData); - // 删除草稿 - actFlowCommonService.getExistDraftAndRemove(commonVO, ProcessTypeEnum.ES_ANNUAL_INIT); - // 删除原来的数据 - remove(wrapper); - // 保存数据 - dataList.forEach(data -> data.setProcessInstanceId(processInstanceId)); - dataList.forEach(ProcessEsAnnualInit::setDateEditFlag); - saveOrUpdateBatch(dataList); - // 手动设置所有流程变量 - actFlowCommonService.setProcessVariables(processInstanceId, actVariables); - // 保存选人信息 - processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, this.getUserMap(actVariables)); - // 强制撤回 - commonVO.setProcessInstanceId(processInstanceId); - // 根据流程实例id更新流程总表 - String prcName = commonVO.getPrcName(); - String prcMes = commonVO.getPrcMes(); - Date dueTime = commonVO.getDueTime(); - Integer prcType = ProcessTypeEnum.ES_ANNUAL_INIT.getValue(); - actFlowCommonService.updateProcessAll(processInstanceId, userId, prcName, prcMes, prcType, dueTime); - break; - case CONTACT_USER_SELECT: - dataList = annualInitData.getDataList(); - // 处理驳回 - if (pass) { - dataList.forEach(d -> d.setRejectFlag(YesOrNoEnum.NO.getValue())); - Set approvalUserSet = new HashSet<>(); - dataList.forEach(d -> approvalUserSet.add(d.getApprovalUser())); - taskService.setVariable(taskId, "approvalUserList", approvalUserSet); - // 保存人员 - userMap.put("approvalUserList", String.join(",", approvalUserSet)); - processNodeLinkService.incrementSaveNodeUserLink(processDefinitionId, processInstanceId, userMap); - dataList.forEach(data -> data.setExecutionId(executionId)); - saveOrUpdateBatch(dataList); - taskService.setVariable(taskId, "contactExecutionId", executionId); - } else { - // 找到所有被驳回的数据,发起新流程 - annualInitData.setDataList(dbDataList); - this.restartProcess(annualInitData, taskId); - } - break; - case MAIN_DRAFT_LEADER_APPROVAL_DISTRIBUTE: - dataList = annualInitData.getDataList(); - // 如果不驳回 - if (pass) { - dataList.forEach(d -> d.setRejectFlag(YesOrNoEnum.NO.getValue())); - // 设置本地变量 - Set mainDraftUserSet = new HashSet<>(); - dataList.forEach(d -> mainDraftUserSet.add(d.getPrcMainDraftUser())); - dataList.forEach(data -> data.setExecutionId(executionId)); - saveOrUpdateBatch(dataList); - taskService.setVariable(taskId, "mainDraftUserList", mainDraftUserSet); - taskService.setVariable(taskId, "parentExecutionId", executionId); - // 保存人员 - userMap.put("mainDraftUserList", String.join(",", mainDraftUserSet)); - processNodeLinkService.incrementSaveNodeUserLink(processDefinitionId, processInstanceId, userMap); - } else { - // 找到对应数据,然后设置驳回标志位 - dbDataList.forEach(d -> d.setRejectFlag(YesOrNoEnum.YES.getValue())); - runtimeService.setVariable(executionId, "contactEditUser", contactUser); - // 保存人员 - userMap.put("contactEditUser", contactUser); - processNodeLinkService.incrementSaveNodeUserLink(processDefinitionId, processInstanceId, userMap); - updateBatchById(dbDataList); - } - // 转办 - runtimeService.setVariableLocal(executionId, "approvalUser", curUserId); - break; - case CONTACT_USER_EDIT: - dataList = annualInitData.getDataList(); - if (pass) { - dataList.forEach(d -> d.setRejectFlag(YesOrNoEnum.NO.getValue())); - taskService.setVariable(taskId, "approvalUser", annualInitData.getDataList().get(0).getApprovalUser()); - dataList.forEach(data -> data.setExecutionId(executionId)); - dataList.forEach(data -> data.setApprovalUser(annualInitData.getDataList().get(0).getApprovalUser())); - saveOrUpdateBatch(dataList); - // 保存人员 - userMap.put("approvalUserList", annualInitData.getDataList().get(0).getApprovalUser()); - processNodeLinkService.incrementSaveNodeUserLink(processDefinitionId, processInstanceId, userMap); - } else { - // 找到所有被驳回的数据,发起新流程 - annualInitData.setDataList(dbDataList); - this.restartProcess(annualInitData, taskId); - } - // 转办 - runtimeService.setVariableLocal(executionId, "contactUser", curUserId); - break; - case MAIN_DRAFT_WRITE: - dataList = annualInitData.getDataList(); - dataList.forEach(d -> d.setMainDraftingUser(userId)); - updateBatchById(dataList); - // 找出所有主起草人 - Set mainDraftUserSet = new HashSet<>(); - dataList.forEach(d -> mainDraftUserSet.add(d.getMainDraftingUser())); - // 保存人员 - userMap.put("mainDraftUser", String.join(",", mainDraftUserSet)); - processNodeLinkService.incrementSaveNodeUserLink(processDefinitionId, processInstanceId, userMap); - // 能走到这个节点则不需要跳过最终汇总 - taskService.setVariable(taskId, "passFinalCollect", false); - break; - case CONTACT_USER_COLLECT: - dataList = annualInitData.getDataList(); - dataList.forEach(d -> d.setExecutionId(executionId)); - saveOrUpdateBatch(dataList); - // 转办 - runtimeService.setVariableLocal(executionId, "contactUser", curUserId); - break; - case MAIN_DRAFT_LEADER_APPROVAL: - // 如果不驳回 - if (pass) { - dbDataList.forEach(d -> d.setRejectFlag(YesOrNoEnum.NO.getValue())); - } else { - dbDataList.forEach(d -> d.setRejectFlag(YesOrNoEnum.YES.getValue())); - } - dbDataList.forEach(d -> d.setExecutionId(executionId)); - updateBatchById(dbDataList); - // 转办 - runtimeService.setVariableLocal(executionId, "approvalUser", curUserId); - break; - case STANDARD_ENGINEER_COLLECT: - // 根据流程ID删除所有数据后新增 - dataList = annualInitData.getDataList(); - remove(wrapper); - saveBatch(dataList); - break; - } - if (pass) { - runtimeService.setVariable(processInstanceId, "pass", true); - } else { - // 设置流程变量 - runtimeService.setVariable(processInstanceId, "pass", false); - } - // 更新审批表为完成,填充数据 - actFlowCommonService.updateApprovalInfo(commonVO, taskId, pass); - // 审批节点 - actFlowCommonService.completeTask(taskId, userId); - } - - @Override - public void batchReject(AnnualInitDataVO annualInitData, String ids) { - CommonVO commonVO = annualInitData.getCommonVO(); - String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(commonVO.getTaskId()); - String taskId = commonVO.getTaskId(); - // 获取task - Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); - // 获取执行id - String executionId = task.getExecutionId(); - if (StrUtil.isBlank(taskId) && !actFlowCommonService.taskExists(taskId)) { - throw new JeroBootException("taskId为空或任务不存在"); - } - String userId = actFlowCommonService.getOriginTaskAssignee(taskId); - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(ProcessEsAnnualInit::getProcessInstanceId, processInstanceId); - wrapper.eq(ProcessEsAnnualInit::getDelFlag, YesOrNoEnum.NO.getValue()); - wrapper.eq(ProcessEsAnnualInit::getContactUser, userId); - wrapper.in(ProcessEsAnnualInit::getId, Arrays.asList(ids.split(","))); - if (STANDARD_ENGINEER_SECOND_EDIT.equals(task.getName())) { - wrapper.eq(ProcessEsAnnualInit::getExecutionId, executionId); - } - List list = list(wrapper); - annualInitData.setDataList(list); - if (list.isEmpty()) { - throw new JeroBootException("无法获取数据,请重试。"); - } - // 将对应数据找出来 - this.approvalProcess(annualInitData, false); - } - - @Override - @SneakyThrows - public Map importData(MultipartFile file) { - List listDict = commonAPI.getDictItemAll(); - Map resultMap = new HashMap<>(); - List errorMsgs = new ArrayList<>(); - - // 获取Excel的header - List headers; - try { - headers = ExcelUtils.getHeaderFromExcel(file.getInputStream(), 0); - } catch (Exception e) { - errorMsgs.add("模板错误,请按照系统模板导入!"); - resultMap.put("msg", errorMsgs); - resultMap.put("flag", YesOrNoEnum.NO.getValue()); - log.error(e.getMessage(), e); - return resultMap; // 返回错误信息 - } - - // 使用静态方法验证header - boolean isMatched = headers.equals(ExcelUtils.getSortedHeadersFromClass(ProcessEsAnnualInit.class)); - if (!isMatched) { - errorMsgs.add("模板错误,请按照系统模板导入!"); - resultMap.put("msg", errorMsgs); - resultMap.put("flag", YesOrNoEnum.NO.getValue()); - return resultMap; // 返回错误信息 - } - - ImportParams params = new ImportParams(); - params.setTitleRows(0); - params.setHeadRows(1); - params.setNeedSave(true); - - try { - @Cleanup - InputStream inputStream = file.getInputStream(); - List list = ExcelImportUtil.importExcel(inputStream, ProcessEsAnnualInit.class, params); - list.remove(0); - list.remove(0); - if (list.isEmpty()) { - errorMsgs.add("文件暂无数据,请检查后重试。"); - resultMap.put("msg", errorMsgs); - resultMap.put("flag", YesOrNoEnum.NO.getValue()); - return resultMap; // 返回错误信息 - } - // 批量检查数据是否有效 - errorMsgs = this.validationList(list, listDict); - if (!errorMsgs.isEmpty()) { - resultMap.put("msg", errorMsgs); - resultMap.put("flag", YesOrNoEnum.NO.getValue()); - } else { - resultMap.put("flag", YesOrNoEnum.YES.getValue()); - // 转换为字典值 - this.transToDictValue(list, listDict); - // 清洗 - this.cleanData(list); - resultMap.put("dataList", list); - } - } catch (Exception e) { - errorMsgs.add("文件导入异常:" + e.getMessage()); - resultMap.put("msg", errorMsgs); - resultMap.put("flag", YesOrNoEnum.NO.getValue()); - log.error(e.getMessage(), e); - } - return resultMap; - } - - private void cleanData(List list) { - // 查找所有企标 并转换成key为标准编号的map - LambdaQueryWrapper esWrapper = new LambdaQueryWrapper<>(); - esWrapper.eq(LawsEnterpriseStandard::getDelFlag, YesOrNoEnum.NO.getValue()); - Map> esMap = - esService.list(esWrapper).stream().collect(Collectors.groupingBy(LawsEnterpriseStandard::getStandardNumber)); - - list.forEach(item -> { - // 如果是制定则去除掉所有的原企标名称 原企标编号 - if (ESPProjectType.ENACT.getValue().equals(item.getProjectType())) { - item.setOriginEnStandardName(null); - item.setOriginEnStandardNo(null); - String decadeCode = item.getDecadeCode(); - if (StrUtil.isBlank(decadeCode)) { - // 获取当前年份 - Calendar date = Calendar.getInstance(); - String curYearNumber = String.valueOf(date.get(Calendar.YEAR)); - item.setDecadeCode(curYearNumber); - } - } else { - List esList = esMap.get(item.getOriginEnStandardNo()); - if (esList != null && !esList.isEmpty()) { - item.setOriginEnStandardName(esList.get(0).getStandardName()); - } - } - item.setChangeStatus(ESPChangeType.ADD.getValue()); - }); - } - - private void transToDictValue(List list, List listDict) { - list.forEach(item -> { - item.setProjectType(excelUtils.translateDictValue("esp_revision_type", item.getProjectType(), listDict)); - item.setEnStandardCode(excelUtils.translateDictValue("enterprise_standard_code", item.getEnStandardCode(), listDict)); - item.setAuthDept(excelUtils.translateDictValue("depart_name", "id", "sys_depart", item.getAuthDept(), listDict)); - item.setCooperationUnit(excelUtils.translateDictValue("depart_name", "id", "sys_depart", item.getCooperationUnit(), listDict)); - item.setMainDraftingUser(excelUtils.translateDictValue("CONCAT(realname, '(', username, ')')", "id", "sys_user", item.getMainDraftingUser(), listDict)); - item.setMainDraftingUnit(excelUtils.translateDictValue("depart_name", "id", "sys_depart", item.getMainDraftingUnit(), listDict)); - item.setMainDraftingUnitResponsiblePerson(excelUtils.translateDictValue("CONCAT(realname, '(', username, ')')", "id", "sys_user", item.getMainDraftingUnitResponsiblePerson(), listDict)); - item.setStandardPromoter(excelUtils.translateDictValue("CONCAT(realname, '(', username, ')')", "id", "sys_user", item.getStandardPromoter(), listDict)); - item.setEnStandardSystem(importUtil.convertStandardSystem(item.getEnStandardSystem(), "3")); - item.setContactUser(excelUtils.translateDictValue("CONCAT(realname, '(', username, ')')", "id", "sys_user", item.getContactUser(), listDict)); - item.setStandardType(excelUtils.translateDictValue("esp_standard_type", item.getStandardType(), listDict)); - item.setEnStandardClassification(excelUtils.translateDictValue("standard_grade_classify", item.getEnStandardClassification(), listDict)); - item.setDraftPlannedCompleteDate(importUtil.convertDate(item.getDraftPlannedCompleteDateString())); - item.setSolicitationDraftPlanCompleteDate(importUtil.convertDate(item.getSolicitationDraftPlanCompleteDateString())); - item.setPlanApprovalDate(importUtil.convertDate(item.getPlanApprovalDateString())); - item.setComponentName(excelUtils.translateDictValue("name", "code", "laws_part_name", item.getComponentName(), listDict)); - }); - } - - private List validationList(List list, List listDict) { - // 找到各标准等级的授权部门 - Map> authDeptMap = excelUtils.getAllLevelAuthDeptMap(); - - List esList = enterpriseStandardService.list(); - List errorMsgs = new ArrayList<>(); - - int i = 4; - Iterator iterator = list.iterator(); - while (iterator.hasNext()) { - ProcessEsAnnualInit plan = iterator.next(); - if (ExcelUtils.isEmptyRow(plan)) { - iterator.remove(); - if (list.isEmpty()) { - errorMsgs.add("文件暂无数据,请检查后重试。"); - } - continue; - } - plan.setSort(String.valueOf(i++)); - String authDept = plan.getAuthDept(); - String cooperationUnit = plan.getCooperationUnit(); - String mainDraftingUnit = plan.getMainDraftingUnit(); - String mainDraftingUser = plan.getMainDraftingUser(); - String mainDraftingUnitResponsiblePerson = plan.getMainDraftingUnitResponsiblePerson(); - String standardPromoter = plan.getStandardPromoter(); - String contactUser = plan.getContactUser(); - String standardSystem = plan.getEnStandardSystem(); - String standardType = plan.getStandardType(); - String standardClassification = plan.getEnStandardClassification(); - String enStandardCode = plan.getEnStandardCode(); - String partName = plan.getComponentName(); - String draftPlannedCompleteDateString = plan.getDraftPlannedCompleteDateString(); - String solicitationDraftPlanCompleteDateString = plan.getSolicitationDraftPlanCompleteDateString(); - String planApprovalDateString = plan.getPlanApprovalDateString(); - - StringBuilder errMsgHeader = new StringBuilder(); - StringBuilder errMsg = new StringBuilder(); - errMsgHeader.append("第").append(plan.getSort()).append("行"); - - // 检查制修订类型 编号 名称 - errMsg.append(validProjectType(plan, listDict, esList)); - // 检查标准等级分类和授权部门 - errMsg.append(excelUtils.validAuthDept(authDept, listDict, mainDraftingUnit, standardClassification, authDeptMap, false)); - // 检查所有数据字典校验的字段 - errMsg.append(excelUtils.validCooperateUnit(cooperationUnit, listDict)); - errMsg.append(excelUtils.validMainDraftingUser(mainDraftingUser, listDict)); - errMsg.append(excelUtils.validMainDraftingUnitResponsiblePerson(mainDraftingUnitResponsiblePerson, listDict)); - errMsg.append(excelUtils.validStandardPromoter(standardPromoter, listDict)); - errMsg.append(excelUtils.validStandardSystem(standardSystem, listDict, false)); - errMsg.append(excelUtils.validContactUser(contactUser, listDict)); - errMsg.append(excelUtils.validStandardType(standardType, listDict, false)); - errMsg.append(excelUtils.validPartName(partName, listDict, false)); - errMsg.append(excelUtils.validSingleDateNotBeforeToday(draftPlannedCompleteDateString, "草稿计划完成日期")); - errMsg.append(excelUtils.validSingleDateNotBeforeToday(solicitationDraftPlanCompleteDateString, "征求意见稿计划完成日期")); - errMsg.append(excelUtils.validSingleDateNotBeforeToday(planApprovalDateString, "计划报批日期")); - // 如果数据有问题,则将提示信息添加到 errorMsgs 中 - if (errMsg.length() > 0) { - errorMsgs.add(errMsgHeader.append(errMsg).toString()); - } - } - return errorMsgs; - } - - private String validProjectType(ProcessEsAnnualInit plan, List listDict, List esList) { - StringBuilder errMsg = new StringBuilder(); - String projectType = plan.getProjectType(); - String originEnStandardNo = plan.getOriginEnStandardNo(); - String newEnStandardName = plan.getNewEnStandardName(); - errMsg.append(excelUtils.validStandardName(newEnStandardName)); - if (StrUtil.isBlank(projectType)) { - return "'制修订类型'不能为空。"; - } - if (!excelUtils.validDict("esp_revision_type", projectType, null, null, true, listDict)) { - return "'制修订类型'无效。"; - } - // 修订 - if (projectType.equals(ESPProjectType.MODIFY.getName())) { - // 检查企标编号是否有效 - if (StrUtil.isBlank(originEnStandardNo)) { - errMsg.append("'原企标编号'不能为空。"); - } else { - if (!esList.stream().map(LawsEnterpriseStandard::getStandardNumber).collect(Collectors.toList()).contains(originEnStandardNo)) { - return "'原企标编号'无效。"; - } - } - } else { - // 制定校验三个代号 - String enStandardCode = plan.getEnStandardCode(); - String enNameCode = plan.getEnNameCode(); - String standardCategoryCode = plan.getStandardCategoryCode(); - // 检查企标编号是否有效 - if (StrUtil.isNotBlank(enStandardCode)) { - // 检查企业标准代号 - if (!excelUtils.validDict("enterprise_standard_code", enStandardCode, null, null, true, listDict)) { - errMsg.append("'企业标准代号'无效。"); - } - } - if (StrUtil.isNotBlank(enNameCode)) { - // 检查企业标准代号 - if (!excelUtils.validDict("enterprise_name_code", enNameCode, null, null, true, listDict)) { - errMsg.append("'企业名称代号'无效。"); - } - } - if (StrUtil.isNotBlank(standardCategoryCode)) { - // 检查企业标准代号 - if (!excelUtils.validDict("standard_category_code", standardCategoryCode, null, null, true, listDict)) { - errMsg.append("'标准类别代号'无效。"); - } - } - } - return errMsg.toString(); - } -} - - - - diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualReport/controller/ESAnnualReportController.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualReport/controller/ESAnnualReportController.java deleted file mode 100644 index e3e7dced..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualReport/controller/ESAnnualReportController.java +++ /dev/null @@ -1,201 +0,0 @@ -package com.jero.modules.activiti.process.esAnnualReport.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.aspect.annotation.DictPoint; -import com.jero.common.aspect.annotation.Translation; -import com.jero.common.constant.enums.YesOrNoEnum; -import com.jero.common.util.IntekeyUtils; -import com.jero.common.util.MessageUtils; -import com.jero.modules.activiti.enums.ProcessTypeEnum; -import com.jero.modules.activiti.process.common.entity.ProcessDraft; -import com.jero.modules.activiti.process.common.entity.TransferVO; -import com.jero.modules.activiti.process.common.service.ActFlowCommonService; -import com.jero.modules.activiti.process.esAnnualReport.entity.ProcessEsAnnualReport; -import com.jero.modules.activiti.process.esAnnualReport.entity.vo.AnnualReportDataVO; -import com.jero.modules.activiti.process.esAnnualReport.service.ProcessEsAnnualReportService; -import com.jero.modules.activiti.process.esArchive.entity.vo.ESArchiveDataVO; -import com.jero.modules.activiti.process.fb.service.IProcessHandleService; -import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import io.swagger.annotations.ApiParam; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.compress.utils.IOUtils; -import org.springframework.core.io.ClassPathResource; -import org.springframework.http.HttpHeaders; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; -import org.springframework.web.multipart.MultipartFile; - -import javax.servlet.http.HttpServletResponse; -import java.io.InputStream; -import java.io.OutputStream; - - -import javax.annotation.Resource; -import java.net.URLEncoder; -import java.nio.charset.StandardCharsets; -import java.util.List; -import java.util.Map; - -/** - * @author: Mzaxd - * @Date: 2023/10/18 10:44 - */ -@Slf4j -@RestController -@Api(tags = "企标年度制修订主动上报流程") -@RequestMapping("/process/es/annualReport") -public class ESAnnualReportController { - - @Resource - private ProcessEsAnnualReportService annualReportService; - - @Resource - private IProcessHandleService processHandleService; - - @Resource - private ActFlowCommonService actFlowCommonService; - - /** - * 导入模板下载 - */ - @GetMapping("/templateDownload") - @ApiOperation(value = "企标年度制修订主动上报流程-导入模板下载", notes = "企标年度制修订主动上报流程-导入模板下载" - ,produces = "application/octet-stream") - @AutoLog(value = "企标年度制修订主动上报流程-导入模板下载") - public void templateDownload(HttpServletResponse response) { - try { - ClassPathResource resource = new ClassPathResource("excelTemplate/年度制修订计划(各部门主动上报)导入模板.xls"); - response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); - response.setCharacterEncoding("UTF-8"); // 这行确保响应流使用UTF-8编码 - - // 处理文件名乱码问题 - String encodedFileName = URLEncoder.encode("年度制修订计划(各部门主动上报)导入模板", StandardCharsets.UTF_8.name()).replace("+", "%20"); - response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename*=UTF-8''" + encodedFileName + ".xls"); - - try (InputStream in = resource.getInputStream(); OutputStream out = response.getOutputStream()) { - IOUtils.copy(in, out); - } - response.flushBuffer(); - } catch (Exception e) { - // 记录错误或执行其他处理 - e.printStackTrace(); - } - } - - /** - * 通过excel导入数据 - * - * @return - */ - @PostMapping("/importExcel") - @ApiOperation(value = "企标年度制修订主动上报流程-导入", notes = "企标年度制修订主动上报流程-导入") - @AutoLog(value = "企标年度制修订主动上报流程-导入") - @Translation - public Result importExcel(@ApiParam(value = "要上传的文件", required = true) @RequestParam("file") MultipartFile file) { - file = IntekeyUtils.autoDecryptFile(file); - Map resultMap = annualReportService.importData(file); - Object flag = resultMap.get("flag"); - if (flag == YesOrNoEnum.YES.getValue()) { - List dataList = (List) resultMap.get("dataList"); - return Result.OK(dataList); - } else { - List msg = (List) resultMap.get("msg"); - return Result.error(MessageUtils.getMessage(ResultCommon.IMPORT_ERROR), msg); - } - } - - /** - * 新增主动上报申请 - * - * @param - */ - @AutoLog(value = "企标年度制修订主动上报流程-发起流程") - @ApiOperation(value="企标年度制修订主动上报流程-发起流程", notes="企标年度制修订主动上报流程-发起流程") - @PostMapping("/start") - public Result startInitChange(@RequestBody AnnualReportDataVO annualReportDataVO) { - annualReportService.startProcess(annualReportDataVO); - return Result.OK(); - } - - /** - * 保存到待办 - * @param processInfoVO - */ - @AutoLog(value = "企标立项变更流程-保存") - @ApiOperation(value="企标立项变更流程-保存", notes="企标立项变更流程-保存") - @PostMapping("/save") - public Result save(@Validated @RequestBody ProcessInfoVO processInfoVO) { - annualReportService.saveToDraft(processInfoVO); - return Result.OK(); - } - - /** - * 保存到待办 - * @param taskId - */ - @AutoLog(value = "企标年度制修订主动上报流程-办理") - @ApiOperation(value="企标年度制修订主动上报流程-办理", notes="企标年度制修订主动上报流程-办理") - @GetMapping("/handle/{taskId}") - @Translation - public Result handle(@PathVariable(value = "taskId") String taskId) { - ProcessDraft draft = actFlowCommonService.getExistDraftByTaskId(taskId, ProcessTypeEnum.ES_ANNUAL_REPORT); - if (draft != null) { - return Result.OK(draft); - } - return Result.OK(annualReportService.getHandleData(taskId)); - } - - /** - * 同意 - * - * @param annualReportDataVO - */ - @AutoLog(value = "企标年度制修订主动上报流程-同意") - @ApiOperation(value="企标年度制修订主动上报流程-同意", notes="企标年度制修订主动上报流程-同意") - @PostMapping("/agree") - public Result agree(@RequestBody AnnualReportDataVO annualReportDataVO) { - annualReportService.approvalProcess(annualReportDataVO, true); - return Result.OK(); - } - - /** - * 驳回 - * - * @param annualReportDataVO - */ - @AutoLog(value = "企标年度制修订主动上报流程-驳回") - @ApiOperation(value="企标年度制修订主动上报流程-驳回", notes="企标年度制修订主动上报流程-驳回") - @PostMapping("/reject") - public Result reject(@RequestBody AnnualReportDataVO annualReportDataVO) { - annualReportService.approvalProcess(annualReportDataVO, false); - return Result.OK(); - } - - /** - * 转办 - * - */ - @AutoLog(value = "企标年度制修订主动上报流程-转办") - @ApiOperation(value="企标年度制修订主动上报流程-转办", notes="企标年度制修订主动上报流程-转办") - @PostMapping(value = "/transfer") - public Result transfer(@RequestBody TransferVO transferVO) { - processHandleService.transfer(transferVO.getTaskId(), transferVO.getUserId()); - return Result.OK(); - } - - /** - * 草稿办理 - * @param draftId - */ - @AutoLog(value = "企标年度制修订主动上报流程-草稿办理") - @ApiOperation(value="企标年度制修订主动上报流程-草稿办理", notes="企标年度制修订主动上报流程-草稿办理") - @GetMapping("/draftHandle") - @Translation - public Result draftHandle(@RequestParam("draftId") @ApiParam("草稿Id") String draftId) { - return Result.OK(actFlowCommonService.getExistDraft(draftId, ProcessTypeEnum.ES_ANNUAL_REPORT)); - } -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualReport/entity/AnnualReportTaskNameConstant.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualReport/entity/AnnualReportTaskNameConstant.java deleted file mode 100644 index b4030d8f..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualReport/entity/AnnualReportTaskNameConstant.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.jero.modules.activiti.process.esAnnualReport.entity; - -/** - * @author: Mzaxd - * @Date: 2023/10/27 7:32 - */ -public class AnnualReportTaskNameConstant { - public static final String STANDARD_ENGINEER_INIT = "标准化工程师发起"; - public static final String CONTACT_USER_DISTRIBUTE = "各部所联络人 填写/下发任务"; - public static final String WORK_GROUP_COLLECT = "工作组/所联络人填写企标"; - public static final String COLLECT_LEADER_APPROVAL = "收集联络人主管级领导审批"; - public static final String CONTACT_USER_COLLECT = "各部所联络人汇总"; - public static final String CONTACT_USER_LEADER_APPROVAL = "联络人主管级上一级领导审批"; - public static final String STANDARD_ENGINEER_COLLECT = "标准化工程师归档"; -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualReport/entity/ProcessEsAnnualReport.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualReport/entity/ProcessEsAnnualReport.java deleted file mode 100644 index 6835d0df..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualReport/entity/ProcessEsAnnualReport.java +++ /dev/null @@ -1,388 +0,0 @@ -package com.jero.modules.activiti.process.esAnnualReport.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import java.io.Serializable; -import java.util.Date; - -import com.fasterxml.jackson.annotation.JsonFormat; -import com.jero.common.aspect.annotation.Dict; -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; - -/** - * 企标-年度制修订计划-各部门主动上报 - * @TableName process_es_annual_report - */ -@Data -@TableName(value ="process_es_annual_report") -@Accessors(chain = true) -@EqualsAndHashCode(callSuper = false) -@ApiModel(value="process_es_annual_report对象", description="企标-年度制修订计划-各部门主动上报") -public class ProcessEsAnnualReport implements Serializable { - - /** - * 主键ID - */ - @TableId(type = IdType.ASSIGN_ID) - @ApiModelProperty(value = "主键ID") - private String id; - - /** - * 企标计划Id - */ - @ApiModelProperty(value = "企标计划Id") - private String espId; - - /** - * 创建人 - */ - @ApiModelProperty(value = "创建人") - private String createBy; - - /** - * 创建时间 - */ - @ApiModelProperty(value = "创建时间") - private Date createTime; - - /** - * 更新人 - */ - @ApiModelProperty(value = "更新人") - private String updateBy; - - /** - * 更新时间 - */ - @ApiModelProperty(value = "更新时间") - private Date updateTime; - - /** - * 所属部门 - */ - @ApiModelProperty(value = "所属部门") - private String orgCode; - - /** - * 0表示未删除,1表示删除 - */ - @ApiModelProperty(value = "0表示未删除,1表示删除") - private Integer delFlag; - - /** - * 流程实例Id - */ - @ApiModelProperty(value = "流程实例Id") - private String processInstanceId; - - /** - * 申请类别 - */ - @Dict(dicCode = "esp_application_category") - @ApiModelProperty(value = "申请类别") - private String applicationCategory; - - /** - * 项目类型 - */ - @Excel(name = "*制修订类型", width = 15, orderNum = "1") - @Dict(dicCode = "esp_revision_type") - @ApiModelProperty(value = "制修订类型") - private String projectType; - - /** - * 原企标编号 - */ - @Excel(name = "原企标编号", width = 15, orderNum = "2") - @ApiModelProperty(value = "原企标编号") - private String originEnStandardNo; - - /** - * 新企标编号 - */ - @ApiModelProperty(value = "新企标编号") - private String newEnStandardNo; - - /** - * 原企标名称 - */ - @ApiModelProperty(value = "原企标名称") - private String originEnStandardName; - - /** - * 新企标名称 - */ - @Excel(name = "*新企标名称", width = 15, orderNum = "4") - @ApiModelProperty(value = "新企标名称") - private String newEnStandardName; - - /** - * 企标英文名称 - */ - @ApiModelProperty(value = "企标英文名称") - private String enStandardEnglishName; - - /** - * 标准体系 - */ - @Excel(name = "*标准体系", width = 25, orderNum = "6") - @Dict(dictTable = "laws_tree_node", dicCode = "id", dicText = "node_name") - @ApiModelProperty(value = "企标体系") - private String enStandardSystem; - - /** - * 企业标准代号 - */ - @Excel(name = "企业标准代号", width = 15, orderNum = "6") - @Dict(dicCode = "enterprise_standard_code") - @ApiModelProperty(value = "企业标准代号") - private String enStandardCode; - - /** - * 企业名称代号 - */ - @Excel(name = "企业名称代号", width = 15, orderNum = "6") - @Dict(dicCode = "enterprise_name_code") - @ApiModelProperty(value = "企业名称代号") - private String enNameCode; - - /** - * 标准类别代号 - */ - @Excel(name = "标准类别代号", width = 15, orderNum = "6") - @Dict(dicCode = "standard_category_code") - @ApiModelProperty(value = "标准类别代号") - private String standardCategoryCode; - - /** - * 年代号 - */ - @ApiModelProperty(value = "年代号") - private String decadeCode; - - /** - * 标准类型 - */ - @Excel(name = "*标准类型", width = 15, orderNum = "10") - @Dict(dicCode = "esp_standard_type") - @ApiModelProperty(value = "标准类型") - private String standardType; - - /** - * 企标等级分类 - */ - @Excel(name = "标准等级分类", width = 15, orderNum = "10") - @Dict(dicCode = "standard_grade_classify") - @ApiModelProperty(value = "企标等级分类") - private String enStandardClassification; - - /** - * 草稿计划完成日期 - */ - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") - @DateTimeFormat(pattern="yyyy-MM-dd") - @ApiModelProperty(value = "草稿计划完成日期") - private Date draftPlannedCompleteDate; - - @Excel(name = "*草稿计划完成日期", width = 20, orderNum = "12") - @TableField(exist = false) - private String draftPlannedCompleteDateString; - - /** - * 征求意见稿计划完成日期 - */ - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") - @DateTimeFormat(pattern="yyyy-MM-dd") - @ApiModelProperty(value = "征求意见稿计划完成日期") - private Date solicitationDraftPlanCompleteDate; - - @Excel(name = "*征求意见稿计划完成日期", width = 24, orderNum = "13") - @TableField(exist = false) - private String solicitationDraftPlanCompleteDateString; - - /** - * 计划报批日期 - */ - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") - @DateTimeFormat(pattern="yyyy-MM-dd") - @ApiModelProperty(value = "计划报批日期") - private Date planApprovalDate; - - @Excel(name = "*计划报批日期", width = 15, orderNum = "14") - @TableField(exist = false) - private String planApprovalDateString; - - /** - * 项目状态 - */ - @ApiModelProperty(value = "项目状态") - private String projectStatus; - - /** - * 编制说明 - */ - @ApiModelProperty(value = "编制说明") - private String compilationDescription; - - /** - * 零部件名称 - */ - @Excel(name = "零部件名称", width = 15, orderNum = "15") - @Dict(dictTable = "laws_part_name", dicCode = "code", dicText = "name") - @ApiModelProperty(value = "零部件名称") - private String componentName; - /** - * 主起草人 - */ - @Excel(name = "*主起草人", width = 15, orderNum = "8") - @Dict(dictTable = "sys_user", dicCode = "id", dicText = "CONCAT(realname, '(', username, ')')") - @ApiModelProperty(value = "主起草人") - private String mainDraftingUser; - - /** - * 主起草单位 - */ - @Excel(name = "*主起草单位", width = 15, orderNum = "8") - @Dict(dictTable = "sys_depart", dicCode = "id", dicText = "depart_name") - @ApiModelProperty(value = "主起草单位") - private String mainDraftingUnit; - - /** - * 主起草单位责任人 - */ - @Excel(name = "*起草单位责任人", width = 20, orderNum = "9") - @Dict(dicCode = "id", dictTable = "sys_user", dicText = "CONCAT(realname, '(', username, ')')") - @ApiModelProperty(value = "主起草单位责任人") - private String mainDraftingUnitResponsiblePerson; - - /** - * 标准推进人 - */ - @Excel(name = "*标准推进人", width = 15, orderNum = "11") - @Dict(dicCode = "id", dictTable = "sys_user", dicText = "CONCAT(realname, '(', username, ')')") - @ApiModelProperty(value = "标准推进人") - private String standardPromoter; - - /** - * 草稿完成日期 - */ - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") - @DateTimeFormat(pattern="yyyy-MM-dd") - @ApiModelProperty(value = "草稿完成日期") - private Date draftCompletionDate; - - /** - * 提交草稿日期 - */ - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") - @DateTimeFormat(pattern="yyyy-MM-dd") - @ApiModelProperty(value = "提交草稿日期") - private Date draftSubmissionDate; - - /** - * 征求意见稿完成日期 - */ - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") - @DateTimeFormat(pattern="yyyy-MM-dd") - @ApiModelProperty(value = "征求意见稿完成日期") - private Date solicitationDraftCompletionDate; - - /** - * 变更状态 - */ - @Dict(dicCode = "esp_change_status") - @ApiModelProperty(value = "变更状态") - private String changeStatus; - - /** - * 上传附件 - */ - @ApiModelProperty(value = "上传附件") - private String uploadAttachment; - - /** - * 变更原因 - */ - @ApiModelProperty(value = "变更原因") - private String changeReason; - - /** - * 授权部门 - */ - @Excel(name = "授权部门", width = 15, orderNum = "5") - @Dict(dictTable = "sys_depart", dicCode = "id", dicText = "depart_name") - @ApiModelProperty(value = "授权部门") - private String authDept; - - /** - * 配合单位 - */ - @Excel(name = "配合单位", width = 15, orderNum = "7") - @Dict(dictTable = "sys_depart", dicCode = "id", dicText = "depart_name") - @ApiModelProperty(value = "配合单位") - private String cooperationUnit; - - /** - * 隶属工作组 - */ - @Excel(name = "隶属工作组", width = 15, orderNum = "10") - @Dict(dictTable = "laws_working_group", dicCode = "id", dicText = "name") - @ApiModelProperty(value = "隶属工作组") - private String workGroup; - - /** - * 是否下发联络人标识 0不下发 1下发 - */ - @Dict(dicCode = "YN") - @ApiModelProperty(value = "是否下发联络人标识 0不下发 1下发") - private String distributeFlag; - - /** - * 部门联络人 - */ - @Dict(dicCode = "id", dictTable = "sys_user", dicText = "CONCAT(realname, '(', username, ')')") - @ApiModelProperty(value = "部门联络人") - private String contactUser; - - /** - * 工作组所联络人 - */ - @Dict(dicCode = "id", dictTable = "sys_user", dicText = "CONCAT(realname, '(', username, ')')") - @ApiModelProperty(value = "工作组所联络人") - private String workGroupUser; - - /** - * 联络人主管级上一级领导 - */ - @Dict(dicCode = "id", dictTable = "sys_user", dicText = "CONCAT(realname, '(', username, ')')") - @ApiModelProperty(value = "联络人主管级上一级领导") - private String contactUserLeaderLeader; - - /** - * 收集联络人主管级领导 - */ - @Dict(dicCode = "id", dictTable = "sys_user", dicText = "CONCAT(realname, '(', username, ')')") - @ApiModelProperty(value = "收集联络人主管级领导") - private String collectUserLeader; - - /** - * 执行Id - */ - @ApiModelProperty(value = "执行Id") - private String executionId; - - @TableField(exist = false) - private static final long serialVersionUID = 1L; - - @TableField(exist = false) - private String sort; - -} \ No newline at end of file diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualReport/entity/vo/AnnualReportDataVO.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualReport/entity/vo/AnnualReportDataVO.java deleted file mode 100644 index a15ab3fd..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualReport/entity/vo/AnnualReportDataVO.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.jero.modules.activiti.process.esAnnualReport.entity.vo; - -import com.fasterxml.jackson.annotation.JsonProperty; -import com.jero.modules.activiti.process.common.entity.CommonVO; -import com.jero.modules.activiti.process.esAnnualReport.entity.ProcessEsAnnualReport; -import lombok.Data; - -import java.util.List; -import java.util.Map; - -/** - * @author: Mzaxd - * @Date: 2023/10/26 17:28 - */ -@Data -public class AnnualReportDataVO { - - @JsonProperty("common") - private CommonVO commonVO; - - @JsonProperty("dataList") - private List dataList; - - @JsonProperty("flowUser") - private Map flowUser; - -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualReport/listener/ProcessESAnnualReportEndListener.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualReport/listener/ProcessESAnnualReportEndListener.java deleted file mode 100644 index dddb6010..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualReport/listener/ProcessESAnnualReportEndListener.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.jero.modules.activiti.process.esAnnualReport.listener; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.jero.common.exception.JeroBootException; -import com.jero.modules.activiti.process.esAnnualReport.entity.ProcessEsAnnualReport; -import com.jero.modules.activiti.process.esAnnualReport.service.impl.ProcessEsAnnualReportServiceImpl; -import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPRevisionType; -import com.jero.modules.activiti.process.esRevision.entity.ProcessEsRevision; -import com.jero.modules.activiti.process.esRevision.entity.vo.ESRevisionDataVO; -import com.jero.modules.activiti.process.esRevision.service.EsRevisionService; -import com.jero.modules.laws.common.constant.FieldCommon; -import com.jero.modules.laws.enterprise.entity.EnterpriseStandardPlan; -import com.jero.modules.laws.enterprise.service.EnterpriseStandardPlanService; -import com.jero.modules.laws.enterprise.util.BeanCopyUtils; -import com.jero.modules.laws.enterprise.util.EnterpriseStandardUtil; -import lombok.extern.slf4j.Slf4j; -import org.activiti.engine.delegate.DelegateExecution; -import org.activiti.engine.delegate.ExecutionListener; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; -import java.util.*; - -/** - * @author: Mzaxd - * @Date: 2023/10/10 14:14 - */ -@Slf4j -@Component -public class ProcessESAnnualReportEndListener implements ExecutionListener { - - @Resource - private EnterpriseStandardPlanService espService; - - @Resource - private ProcessEsAnnualReportServiceImpl annualReportService; - - @Resource - private EsRevisionService esRevisionService; - - @Resource - private EnterpriseStandardUtil esUtil; - - /** - * 流程结束之后需要把数据存入企标计划数据库 - * - * @param delegateExecution - */ - @Override - public void notify(DelegateExecution delegateExecution) { - log.info("年度制修订各部门主动上报流程结束 监听执行器开始执行"); - // 获取流程实例ID - String processInstanceId = delegateExecution.getProcessInstanceId(); - // 根据流程实例Id找到所有流程业务数据 - LambdaQueryWrapper esAnnualReportWrapper = new LambdaQueryWrapper<>(); - esAnnualReportWrapper.eq(ProcessEsAnnualReport::getProcessInstanceId, processInstanceId); - List annualReports = annualReportService.list(esAnnualReportWrapper); - List enterpriseStandardPlans; - // 立项新增-Id置空 - annualReports.forEach(annualReport -> annualReport.setId(null)); - // 转换为企标计划数据并入库 - enterpriseStandardPlans = BeanCopyUtils.copyBeanList(annualReports, EnterpriseStandardPlan.class); - // 设置一些字段 - // 制修订类型字段 - for (EnterpriseStandardPlan esp : enterpriseStandardPlans) { - esp.setApplicationCategory(esp.getProjectType()); - } - // 生成企标编号 - Map map = new HashMap<>(); - String newStandardNumber; - // 获取当前年份 - Calendar date = Calendar.getInstance(); - String curYearNumber = String.valueOf(date.get(Calendar.YEAR)); - List needValidList = new ArrayList<>(); - for (EnterpriseStandardPlan esp : enterpriseStandardPlans) { - // 修订只改年代号 - if (esp.getApplicationCategory().equals(ESPRevisionType.MODIFY.getValue())) { - newStandardNumber = esUtil.changeStandardNumberYearNumber(esp.getOriginEnStandardNo(), curYearNumber); - esp.setNewEnStandardNo(newStandardNumber); - needValidList.add(esp); - } - } - if (!needValidList.isEmpty()) { - List duplicateStandardNumbers = esUtil.verifyEsNumberByPlans(needValidList); - if (duplicateStandardNumbers != null && !duplicateStandardNumbers.isEmpty()) { - throw new JeroBootException("原企标编号" + String.join(",", duplicateStandardNumbers) + "修订后,与已存在的企标编号重复,请删除后重新提交"); - } - } - // 判断修订的新标准号是否有效 - for (EnterpriseStandardPlan esp : enterpriseStandardPlans) { - // 制定生成新企标编号 - if (esp.getApplicationCategory().equals(ESPRevisionType.ENACT.getValue())) { - map.put(FieldCommon.ENTERPRISE_STANDARD_CODE, esp.getEnStandardCode()); - map.put(FieldCommon.ENTERPRISE_NAME_CODE, esp.getEnNameCode()); - map.put(FieldCommon.STANDARD_CATEGORY_CODE, esp.getStandardCategoryCode()); - map.put(FieldCommon.YEAR_NUMBER, curYearNumber); - newStandardNumber = esUtil.generateStandardNumber(map); - esp.setNewEnStandardNo(newStandardNumber); - } - espService.save(esp); - log.info("数据存入企标计划数据库"); - ESRevisionDataVO revisionDataVO = new ESRevisionDataVO(); - ProcessEsRevision revision = new ProcessEsRevision(); - revision.setEspId(esp.getId()); - revisionDataVO.setData(revision); - esRevisionService.autoStartProcess(revisionDataVO); - log.info("自动发起企标制修订流程"); - } - } -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualReport/mapper/ProcessEsAnnualReportMapper.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualReport/mapper/ProcessEsAnnualReportMapper.java deleted file mode 100644 index ae94bff8..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualReport/mapper/ProcessEsAnnualReportMapper.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.jero.modules.activiti.process.esAnnualReport.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.jero.modules.activiti.process.esAnnualReport.entity.ProcessEsAnnualReport; - -/** -* @author ThinkBook -* @description 针对表【process_es_annual_report(企标-年度制修订计划-各部门主动上报)】的数据库操作Mapper -* @createDate 2023-10-18 09:52:41 -* @Entity com.jero.modules.activiti.process.esAnnualInit.entity.ProcessEsAnnualReport -*/ -public interface ProcessEsAnnualReportMapper extends BaseMapper { - -} - - - - diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualReport/service/ProcessEsAnnualReportService.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualReport/service/ProcessEsAnnualReportService.java deleted file mode 100644 index 3a23eb17..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualReport/service/ProcessEsAnnualReportService.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.jero.modules.activiti.process.esAnnualReport.service; - -import com.baomidou.mybatisplus.extension.service.IService; -import com.jero.modules.activiti.process.esAnnualReport.entity.ProcessEsAnnualReport; -import com.jero.modules.activiti.process.esAnnualReport.entity.vo.AnnualReportDataVO; -import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO; -import org.springframework.web.multipart.MultipartFile; - -import java.util.Map; - -/** -* @author ThinkBook -* @description 针对表【process_es_annual_report(企标-年度制修订计划-各部门主动上报)】的数据库操作Service -* @createDate 2023-10-18 09:52:41 -*/ -public interface ProcessEsAnnualReportService extends IService { - - Map importData(MultipartFile file); - - void startProcess(AnnualReportDataVO annualReportDataVO); - - void approvalProcess(AnnualReportDataVO annualReportDataVO, boolean b); - - void saveToDraft(ProcessInfoVO annualReportDataVO); - - AnnualReportDataVO getHandleData(String taskId); -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualReport/service/impl/ProcessEsAnnualReportServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualReport/service/impl/ProcessEsAnnualReportServiceImpl.java deleted file mode 100644 index 00a150fc..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualReport/service/impl/ProcessEsAnnualReportServiceImpl.java +++ /dev/null @@ -1,625 +0,0 @@ -package com.jero.modules.activiti.process.esAnnualReport.service.impl; - -import cn.hutool.core.util.StrUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.jero.common.api.CommonAPI; -import com.jero.common.api.dto.message.SendMessageDTO; -import com.jero.common.api.vo.SendMessageAPI; -import com.jero.common.aspect.TranslationAspect; -import com.jero.common.constant.enums.YesOrNoEnum; -import com.jero.common.exception.JeroBootException; -import com.jero.common.system.vo.SysDictItemCore; -import com.jero.modules.activiti.entity.ProcessAll; -import com.jero.modules.activiti.enums.ProcessTypeEnum; -import com.jero.modules.activiti.process.common.entity.CommonVO; -import com.jero.modules.activiti.process.common.enums.ProcessType; -import com.jero.modules.activiti.process.common.service.ActFlowCommonService; -import com.jero.modules.activiti.process.esAnnualReport.entity.ProcessEsAnnualReport; -import com.jero.modules.activiti.process.esAnnualReport.entity.vo.AnnualReportDataVO; -import com.jero.modules.activiti.process.esAnnualReport.mapper.ProcessEsAnnualReportMapper; -import com.jero.modules.activiti.process.esAnnualReport.service.ProcessEsAnnualReportService; -import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPChangeType; -import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPProjectType; -import com.jero.modules.activiti.process.fb.dto.BasicProcessInfoDTO; -import com.jero.modules.activiti.process.fb.service.IProcessHandleService; -import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO; -import com.jero.modules.activiti.service.ProcessAllService; -import com.jero.modules.activiti.service.ProcessNodeLinkService; -import com.jero.modules.activiti.util.ExcelUtils; -import com.jero.modules.laws.common.constant.MessageTemplateCodeCommon; -import com.jero.modules.laws.common.util.ImportUtil; -import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard; -import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService; -import com.jero.modules.sys.utils.UserUtils; -import lombok.Cleanup; -import lombok.extern.slf4j.Slf4j; -import org.activiti.engine.RuntimeService; -import org.activiti.engine.TaskService; -import org.activiti.engine.runtime.ProcessInstance; -import org.activiti.engine.task.Task; -import org.jeecgframework.poi.excel.ExcelImportUtil; -import org.jeecgframework.poi.excel.entity.ImportParams; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.web.multipart.MultipartFile; - -import javax.annotation.Resource; -import java.io.InputStream; -import java.util.*; -import java.util.stream.Collectors; - -import static com.jero.modules.activiti.process.esAnnualReport.entity.AnnualReportTaskNameConstant.*; - -/** - * @author ThinkBook - * @description 针对表【process_es_annual_report(企标-年度制修订计划-各部门主动上报)】的数据库操作Service实现 - * @createDate 2023-10-18 09:52:41 - */ -@Slf4j -@Service -@Transactional(rollbackFor = JeroBootException.class) -public class ProcessEsAnnualReportServiceImpl extends ServiceImpl - implements ProcessEsAnnualReportService { - - @Resource - private CommonAPI commonAPI; - - @Resource - private ExcelUtils excelUtils; - - @Resource - private ILawsEnterpriseStandardService enterpriseStandardService; - - @Resource - private ActFlowCommonService actFlowCommonService; - @Resource - private ProcessNodeLinkService processNodeLinkService; - - @Resource - private ProcessAllService processAllService; - - @Resource - private RuntimeService runtimeService; - - @Resource - private TaskService taskService; - - @Resource - private ImportUtil importUtil; - - @Resource - private IProcessHandleService processHandleService; - - @Resource - private TranslationAspect translationAspect; - - @Resource - private SendMessageAPI sendMessageAPI; - - @Resource - private ILawsEnterpriseStandardService esService; - - @Override - public void startProcess(AnnualReportDataVO annualReportData) { - // 流程Key - String processDefinitionKey = ProcessType.ES_ANNUAL_REPORT.getProcessKey(); - // 通用数据 - CommonVO commonVO = annualReportData.getCommonVO(); - // 当前用户Id - String userId = UserUtils.getUserId(); - // 人员数据 - Map variables = annualReportData.getFlowUser(); - // 设置流程变量 - Map actVariables = this.setVariables(annualReportData); - // 删除草稿 - actFlowCommonService.getExistDraftAndRemove(commonVO, ProcessTypeEnum.ES_ANNUAL_REPORT); - // 启动流程 - ProcessInstance processInstance = actFlowCommonService.startProcess(processDefinitionKey, actVariables); - // 获取流程实例ID - String processDefinitionId = processInstance.getProcessDefinitionId(); - String processInstanceId = processInstance.getId(); - // 手动设置所有流程变量 - actFlowCommonService.setProcessVariables(processInstanceId, actVariables); - // 保存选人信息 - processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, this.getUserMap(variables)); - // 获取第一个任务的taskId - String taskId = actFlowCommonService.getFirstTaskId(processInstanceId, userId, processDefinitionId); - // 手动翻译 - String jsonData = translationAspect.manualParseDictText(this.getHandleData(taskId), variables); - // 强制撤回 - commonVO.setProcessInstanceId(processInstanceId); - actFlowCommonService.saveFirstNodeDraft(commonVO, ProcessTypeEnum.ES_ANNUAL_REPORT, jsonData); - // 更新审批表为完成,填充数据 - actFlowCommonService.updateApprovalInfo(commonVO, taskId, true); - // 自动完成第一个任务 - actFlowCommonService.completeTask(taskId, userId); - // 根据流程实例id更新流程总表 - String prcName = commonVO.getPrcName(); - String prcMes = commonVO.getPrcMes(); - Date dueTime = commonVO.getDueTime(); - Integer prcType = ProcessTypeEnum.ES_ANNUAL_REPORT.getValue(); - actFlowCommonService.updateProcessAll(processInstanceId, userId, prcName, prcMes, prcType, dueTime); - // 执行流程发起前的操作 - this.startRunTask(annualReportData, processInstanceId); - } - - public Map setVariables(AnnualReportDataVO annualReportData) { - Map actVariables = new HashMap<>(); - CommonVO commonVO = annualReportData.getCommonVO(); - Map flowUser = annualReportData.getFlowUser(); - actFlowCommonService.putIfNotNull(actVariables, "contactUserList", - Optional.ofNullable((String) flowUser.get("contactUserList")) - .map(s -> Arrays.asList(s.split(","))) - .orElse(null)); - actVariables.put("standardEngineer", flowUser.get("standardEngineer")); - actVariables.put("processDescription", commonVO.getProcessDescription()); - return actVariables; - } - - private Map getUserMap(Map variables) { - variables.remove("pass"); - variables.remove("processDescription"); - return variables; - } - - public void startRunTask(AnnualReportDataVO annualReportDataVO, String processInstanceId) { - ProcessAll processAll = processAllService.getByProcessInstanceId(processInstanceId); - // 发消息 - CommonVO commonVO = annualReportDataVO.getCommonVO(); - Map flowUser = annualReportDataVO.getFlowUser(); - String contactUsers = (String) flowUser.get("contactUserList"); - String processDescription = commonVO.getProcessDescription(); - String[] contactUserList = contactUsers.split(","); - for (String contactUser : contactUserList) { - SendMessageDTO sendMessageDTO = new SendMessageDTO(); - sendMessageDTO.setTemplateCode(MessageTemplateCodeCommon.ES_ANNUAL_REPORT_CONTACT_USER); - sendMessageDTO.setToUserId(contactUser); - Map sendMap = new HashMap<>(); - sendMap.put("prcNum", processAll.getPrcNum()); - sendMap.put("prcName", processAll.getPrcName()); - sendMap.put("description", processDescription); - sendMessageDTO.setMap(sendMap); - sendMessageAPI.sendMessage(sendMessageDTO); - } - - } - - @Override - public void approvalProcess(AnnualReportDataVO annualReportDataVO, boolean pass) { - CommonVO commonVO = annualReportDataVO.getCommonVO(); - List dataList = annualReportDataVO.getDataList(); - String taskId = commonVO.getTaskId(); - // 获取task - if (StrUtil.isBlank(taskId) || !actFlowCommonService.taskExists(taskId)) { - throw new JeroBootException("taskId为空或任务不存在"); - } - Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); - String taskName = task.getName(); - String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId); - // 获取流程实例 - ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult(); - String processDefinitionId = processInstance.getProcessDefinitionId(); - ProcessEsAnnualReport annualReport; - String executionId = task.getExecutionId(); - String contactUser = (String) runtimeService.getVariable(executionId, "contactUser"); - String workGroupUser = (String) runtimeService.getVariable(executionId, "workGroupUser"); - String contactUserLeaderLeader; - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - Map userVariable = new HashMap<>(); - runtimeService.setVariableLocal(processInstanceId, "pass", pass); - switch (taskName) { - case CONTACT_USER_DISTRIBUTE: - annualReport = annualReportDataVO.getDataList().get(0); - boolean distribute = annualReport.getDistributeFlag().equals("1"); - contactUserLeaderLeader = annualReport.getContactUserLeaderLeader(); - taskService.setVariable(taskId, "distribute", distribute); - String curContactUser = UserUtils.getUserId(); - // 获取是否分发 - if (distribute) { - String workGroupUsers = annualReport.getWorkGroupUser(); - // 将workGroupUserList从逗号拼接转为List - List workGroupUserList = StrUtil.split(workGroupUsers, ','); - // 设置流程变量 - taskService.setVariable(taskId, "workGroupUserList", workGroupUserList); - // 将联络人主管级上一级领导保存到流程变量中 - userVariable.put("workGroupUserList", workGroupUsers); - userVariable.put("contactUser", contactUser); - } else { - // 保存联络人主管级上级领导 - dataList.forEach(data -> data.setContactUserLeaderLeader(contactUserLeaderLeader)); - dataList.forEach(data -> data.setExecutionId(executionId)); - dataList.forEach(data -> data.setProcessInstanceId(processInstanceId)); - dataList.forEach(data -> data.setContactUser(curContactUser)); - // 不分发,入库存表 - saveBatch(dataList); - taskService.setVariable(taskId, "contactUserLeaderLeader", contactUserLeaderLeader); - } - taskService.setVariable(taskId, curContactUser + "-ContactUserLeaderLeader", contactUserLeaderLeader); - userVariable.put("contactUserLeaderLeader", contactUserLeaderLeader); - processNodeLinkService.incrementSaveNodeUserLink(processDefinitionId, processInstanceId, userVariable); - // 转办 - runtimeService.setVariable(executionId, "contactUser", curContactUser); - break; - case WORK_GROUP_COLLECT: - // 先删后增 - AnnualReportDataVO handleData = this.getHandleData(taskId); - List handaleDataList = handleData.getDataList(); - List idList = new ArrayList<>(); - handaleDataList.forEach(h -> idList.add(h.getId())); - wrapper.eq(ProcessEsAnnualReport::getWorkGroupUser, workGroupUser); - removeByIds(idList); - annualReport = annualReportDataVO.getDataList().get(0); - String collectUserLeader = annualReport.getCollectUserLeader(); - contactUserLeaderLeader = annualReport.getContactUserLeaderLeader(); - dataList.forEach(data -> data.setContactUser(contactUser)); - dataList.forEach(data -> data.setExecutionId(executionId)); - dataList.forEach(data -> data.setProcessInstanceId(processInstanceId)); - // 保存收集联络人主管级领导 - dataList.forEach(data -> data.setCollectUserLeader(collectUserLeader)); - dataList.forEach(data -> data.setContactUserLeaderLeader(contactUserLeaderLeader)); - String curWorkGroupUser = UserUtils.getUserId(); - dataList.forEach(data -> data.setWorkGroupUser(curWorkGroupUser)); - saveBatch(dataList); - // 转办 - runtimeService.setVariable(executionId, "workGroupUser", curWorkGroupUser); - // 设置下一个节点的审批人流程变量 - taskService.setVariable(taskId, "collectUserLeader", collectUserLeader); - userVariable.put("collectUserLeader", collectUserLeader); - processNodeLinkService.incrementSaveNodeUserLink(processDefinitionId, processInstanceId, userVariable); - break; - case COLLECT_LEADER_APPROVAL: - // 转办 - runtimeService.setVariable(executionId, "collectUserLeader", UserUtils.getUserId()); - break; - case CONTACT_USER_COLLECT: - // 先删后增 - wrapper.eq(ProcessEsAnnualReport::getContactUser, contactUser); - wrapper.eq(ProcessEsAnnualReport::getProcessInstanceId, processInstanceId); - remove(wrapper); - contactUserLeaderLeader = (String) runtimeService.getVariable(executionId, contactUser + "-ContactUserLeaderLeader"); - dataList.forEach(data -> data.setContactUser(contactUser)); - dataList.forEach(data -> data.setExecutionId(executionId)); - dataList.forEach(data -> data.setProcessInstanceId(processInstanceId)); - dataList.forEach(data -> data.setContactUserLeaderLeader(contactUserLeaderLeader)); - taskService.setVariable(taskId, "contactUserLeaderLeader", contactUserLeaderLeader); - userVariable.put("contactUserLeaderLeader", contactUserLeaderLeader); - processNodeLinkService.incrementSaveNodeUserLink(processDefinitionId, processInstanceId, userVariable); - saveBatch(dataList); - // 转办 - runtimeService.setVariable(executionId, "contactUser", UserUtils.getUserId()); - break; - case CONTACT_USER_LEADER_APPROVAL: - if (!pass) { - userVariable.put("contactUser", contactUser); - processNodeLinkService.incrementSaveNodeUserLink(processDefinitionId, processInstanceId, userVariable); - } - // 转办 - String curLeader = UserUtils.getUserId(); - taskService.setVariable(taskId, contactUser + "-ContactUserLeaderLeader", curLeader); - userVariable.put("contactUserLeaderLeader", curLeader); - processNodeLinkService.incrementSaveNodeUserLink(processDefinitionId, processInstanceId, userVariable); - break; - case STANDARD_ENGINEER_COLLECT: - // 根据流程ID删除所有数据后新增 - dataList = annualReportDataVO.getDataList(); - wrapper.eq(ProcessEsAnnualReport::getProcessInstanceId, processInstanceId); - wrapper.eq(ProcessEsAnnualReport::getDelFlag, YesOrNoEnum.NO.getValue()); - remove(wrapper); - saveBatch(dataList); - break; - } - // 更新审批表为完成,填充数据 - actFlowCommonService.updateApprovalInfo(commonVO, taskId, pass); - // 审批节点 - actFlowCommonService.completeTask(taskId, UserUtils.getUserId()); - } - - @Override - public void saveToDraft(ProcessInfoVO processInfoVO) { - // 流程信息 - BasicProcessInfoDTO basicProcessInfoDTO = processInfoVO.getBasicProcessInfoDTO(); - basicProcessInfoDTO.setProcessType(ProcessTypeEnum.ES_ANNUAL_REPORT.getValue()); // 流程类型 - processHandleService.saveToDraft(processInfoVO); - } - - @Override - public AnnualReportDataVO getHandleData(String taskId) { - // 判断是否是转办的 找到原始任务办理人 - if (!actFlowCommonService.taskExists(taskId)) { - throw new JeroBootException("任务不存在"); - } - String userId = actFlowCommonService.getOriginTaskAssignee(taskId); - String executionId = taskService.createTaskQuery().taskId(taskId).singleResult().getExecutionId(); - AnnualReportDataVO annualReportDataVO = new AnnualReportDataVO(); - // 使用流程引擎根据taskId找到流程实例Id - String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId); - // 获取流程通用数据 - ProcessAll process = processAllService.getByProcessInstanceId(processInstanceId); - CommonVO commonVO = new CommonVO(); - commonVO.setPrcName(process.getPrcName()); - commonVO.setTaskId(process.getTaskId()); - commonVO.setPrcMes(process.getPrcMes()); - commonVO.setDueTime(process.getDueTime()); - commonVO.setTaskId(taskId); - commonVO.setNodeId(process.getNodeId()); - String processDescription = (String) runtimeService.getVariable(processInstanceId, "processDescription"); - commonVO.setProcessDescription(processDescription); - annualReportDataVO.setCommonVO(commonVO); - // 获取流程实例数据 - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(ProcessEsAnnualReport::getProcessInstanceId, processInstanceId); - Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); - String taskName = task.getName(); - switch (taskName) { - case STANDARD_ENGINEER_INIT: - // do nothing now - break; - case CONTACT_USER_DISTRIBUTE: - // do nothing now - break; - case WORK_GROUP_COLLECT: - wrapper.eq(ProcessEsAnnualReport::getWorkGroupUser, userId); - wrapper.eq(ProcessEsAnnualReport::getExecutionId, executionId); - break; - case COLLECT_LEADER_APPROVAL: - wrapper.eq(ProcessEsAnnualReport::getCollectUserLeader, userId); - wrapper.eq(ProcessEsAnnualReport::getExecutionId, executionId); - break; - case CONTACT_USER_COLLECT: - wrapper.eq(ProcessEsAnnualReport::getContactUser, userId); - break; - case CONTACT_USER_LEADER_APPROVAL: - wrapper.eq(ProcessEsAnnualReport::getContactUserLeaderLeader, userId); - wrapper.in(ProcessEsAnnualReport::getExecutionId, executionId); - break; - case STANDARD_ENGINEER_COLLECT: - break; - } - wrapper.eq(ProcessEsAnnualReport::getProcessInstanceId, processInstanceId); - wrapper.eq(ProcessEsAnnualReport::getDelFlag, YesOrNoEnum.NO.getInteger()); - annualReportDataVO.setDataList(list(wrapper)); - return annualReportDataVO; - } - - @Override - public Map importData(MultipartFile file) { - List listDict = commonAPI.getDictItemAll(); - Map resultMap = new HashMap<>(); - List errorMsgs = new ArrayList<>(); - - // 获取Excel的header - List headers; - try { - headers = ExcelUtils.getHeaderFromExcel(file.getInputStream(), 0); - } catch (Exception e) { - errorMsgs.add("模板错误,请按照系统模板导入!"); - resultMap.put("msg", errorMsgs); - resultMap.put("flag", YesOrNoEnum.NO.getValue()); - log.error(e.getMessage(), e); - return resultMap; // 返回错误信息 - } - - // 使用静态方法验证header - boolean isMatched = headers.equals(ExcelUtils.getSortedHeadersFromClass(ProcessEsAnnualReport.class)); - if (!isMatched) { - errorMsgs.add("模板错误,请按照系统模板导入!"); - resultMap.put("msg", errorMsgs); - resultMap.put("flag", YesOrNoEnum.NO.getValue()); - return resultMap; // 返回错误信息 - } - - ImportParams params = new ImportParams(); - params.setTitleRows(0); - params.setHeadRows(1); - params.setNeedSave(true); - try { - @Cleanup - InputStream inputStream = file.getInputStream(); - List list = ExcelImportUtil.importExcel(inputStream, ProcessEsAnnualReport.class, params); - list.remove(0); - list.remove(0); - if (list.isEmpty()) { - errorMsgs.add("文件暂无数据,请检查后重试。"); - resultMap.put("msg", errorMsgs); - resultMap.put("flag", YesOrNoEnum.NO.getValue()); - return resultMap; // 返回错误信息 - } - // 批量检查数据是否有效 - errorMsgs = this.validationList(list, listDict); - if (!errorMsgs.isEmpty()) { - resultMap.put("msg", errorMsgs); - resultMap.put("flag", YesOrNoEnum.NO.getValue()); - } else { - resultMap.put("flag", YesOrNoEnum.YES.getValue()); - // 转换为字典值 - this.transToDictValue(list, listDict); - // 清洗 - this.cleanData(list); - resultMap.put("dataList", list); - } - } catch (Exception e) { - errorMsgs.add("文件导入异常:" + e.getMessage()); - resultMap.put("msg", errorMsgs); - resultMap.put("flag", YesOrNoEnum.NO.getValue()); - log.error(e.getMessage(), e); - } - return resultMap; - } - - private void cleanData(List list) { - // 查找所有企标 并转换成key为标准编号的map - LambdaQueryWrapper esWrapper = new LambdaQueryWrapper<>(); - esWrapper.eq(LawsEnterpriseStandard::getDelFlag, YesOrNoEnum.NO.getValue()); - Map> esMap = - esService.list(esWrapper).stream().collect(Collectors.groupingBy(LawsEnterpriseStandard::getStandardNumber)); - - list.forEach(item -> { - // 如果是制定则去除掉所有的原企标名称 原企标编号 - if (ESPProjectType.ENACT.getValue().equals(item.getProjectType())) { - item.setOriginEnStandardName(null); - item.setOriginEnStandardNo(null); - String decadeCode = item.getDecadeCode(); - if (StrUtil.isBlank(decadeCode)) { - // 获取当前年份 - Calendar date = Calendar.getInstance(); - String curYearNumber = String.valueOf(date.get(Calendar.YEAR)); - item.setDecadeCode(curYearNumber); - } - } else { - List esList = esMap.get(item.getOriginEnStandardNo()); - if (esList != null && !esList.isEmpty()) { - item.setOriginEnStandardName(esList.get(0).getStandardName()); - } - } - item.setChangeStatus(ESPChangeType.ADD.getValue()); - }); - } - - private void transToDictValue(List list, List listDict) { - list.forEach(item -> { - item.setProjectType(excelUtils.translateDictValue("esp_revision_type", item.getProjectType(), listDict)); - item.setEnStandardCode(excelUtils.translateDictValue("enterprise_standard_code", item.getEnStandardCode(), listDict)); - item.setAuthDept(excelUtils.translateDictValue("depart_name", "id", "sys_depart", item.getAuthDept(), listDict)); - item.setCooperationUnit(excelUtils.translateDictValue("depart_name", "id", "sys_depart", item.getCooperationUnit(), listDict)); - item.setMainDraftingUser(excelUtils.translateDictValue("CONCAT(realname, '(', username, ')')", "id", "sys_user", item.getMainDraftingUser(), listDict)); - item.setMainDraftingUnit(excelUtils.translateDictValue("depart_name", "id", "sys_depart", item.getMainDraftingUnit(), listDict)); - item.setMainDraftingUnitResponsiblePerson(excelUtils.translateDictValue("CONCAT(realname, '(', username, ')')", "id", "sys_user", item.getMainDraftingUnitResponsiblePerson(), listDict)); - item.setStandardPromoter(excelUtils.translateDictValue("CONCAT(realname, '(', username, ')')", "id", "sys_user", item.getStandardPromoter(), listDict)); - item.setEnStandardSystem(importUtil.convertStandardSystem(item.getEnStandardSystem(), "3")); - item.setWorkGroup(excelUtils.translateDictValue("name", "id", "laws_working_group", item.getWorkGroup(), listDict)); - item.setStandardType(excelUtils.translateDictValue("esp_standard_type", item.getStandardType(), listDict)); - item.setEnStandardClassification(excelUtils.translateDictValue("standard_grade_classify", item.getEnStandardClassification(), listDict)); - item.setDraftPlannedCompleteDate(importUtil.convertDate(item.getDraftPlannedCompleteDateString())); - item.setSolicitationDraftPlanCompleteDate(importUtil.convertDate(item.getSolicitationDraftPlanCompleteDateString())); - item.setPlanApprovalDate(importUtil.convertDate(item.getPlanApprovalDateString())); - item.setComponentName(excelUtils.translateDictValue("name", "code", "laws_part_name", item.getComponentName(), listDict)); - }); - } - - private List validationList(List list, List listDict) { - // 找到各标准等级的授权部门 - Map> authDeptMap = excelUtils.getAllLevelAuthDeptMap(); - - List esList = enterpriseStandardService.list(); - List errorMsgs = new ArrayList<>(); - - int i = 4; - Iterator iterator = list.iterator(); - while (iterator.hasNext()) { - ProcessEsAnnualReport plan = iterator.next(); - if (ExcelUtils.isEmptyRow(plan)) { - iterator.remove(); - if (list.isEmpty()) { - errorMsgs.add("文件暂无数据,请检查后重试。"); - } - continue; - } - plan.setSort(String.valueOf(i++)); - String authDept = plan.getAuthDept(); - String cooperationUnit = plan.getCooperationUnit(); - String mainDraftingUnit = plan.getMainDraftingUnit(); - String mainDraftingUser = plan.getMainDraftingUser(); - String mainDraftingUnitResponsiblePerson = plan.getMainDraftingUnitResponsiblePerson(); - String standardPromoter = plan.getStandardPromoter(); - String workGroup = plan.getWorkGroup(); - String standardSystem = plan.getEnStandardSystem(); - String standardType = plan.getStandardType(); - String standardClassification = plan.getEnStandardClassification(); - String draftPlannedCompleteDateString = plan.getDraftPlannedCompleteDateString(); - String solicitationDraftPlanCompleteDateString = plan.getSolicitationDraftPlanCompleteDateString(); - String planApprovalDateString = plan.getPlanApprovalDateString(); - String partName = plan.getComponentName(); - - StringBuilder errMsgHeader = new StringBuilder(); - StringBuilder errMsg = new StringBuilder(); - errMsgHeader.append("第").append(plan.getSort()).append("行"); - - // 检查制修订类型 编号 名称 - errMsg.append(validProjectType(plan, listDict, esList)); - // 检查标准等级分类和授权部门 - errMsg.append(excelUtils.validAuthDept(authDept, listDict, mainDraftingUnit, standardClassification, authDeptMap, false)); - // 检查所有数据字典校验的字段 - errMsg.append(excelUtils.validCooperateUnit(cooperationUnit, listDict)); - errMsg.append(excelUtils.validMainDraftingUser(mainDraftingUser, listDict)); - errMsg.append(excelUtils.validMainDraftingUnitResponsiblePerson(mainDraftingUnitResponsiblePerson, listDict)); - errMsg.append(excelUtils.validStandardPromoter(standardPromoter, listDict)); - errMsg.append(excelUtils.validWorkGroup(workGroup, listDict)); - errMsg.append(excelUtils.validStandardSystem(standardSystem, listDict, true)); - errMsg.append(excelUtils.validStandardType(standardType, listDict, true)); - errMsg.append(excelUtils.validSingleDateMustInputNotBeforeToday(draftPlannedCompleteDateString, "草稿计划完成日期")); - errMsg.append(excelUtils.validSingleDateMustInputNotBeforeToday(solicitationDraftPlanCompleteDateString, "征求意见稿计划完成日期")); - errMsg.append(excelUtils.validSingleDateMustInputNotBeforeToday(planApprovalDateString, "计划报批日期")); - errMsg.append(excelUtils.validPartName(partName, listDict, false)); - // 如果数据有问题,则将提示信息添加到 errorMsgs 中 - if (errMsg.length() > 0) { - errorMsgs.add(errMsgHeader.append(errMsg).toString()); - } - } - return errorMsgs; - } - - private String validProjectType(ProcessEsAnnualReport plan, List listDict, List esList) { - StringBuilder errMsg = new StringBuilder(); - String projectType = plan.getProjectType(); - String originEnStandardNo = plan.getOriginEnStandardNo(); - String newEnStandardName = plan.getNewEnStandardName(); - if (StrUtil.isBlank(projectType)) { - return "'制修订类型'不能为空。"; - } - if (!excelUtils.validDict("esp_revision_type", projectType, null, null, true, listDict)) { - return "'制修订类型'无效。"; - } - // 新企标名称不能为空 - if (StrUtil.isBlank(newEnStandardName)) { - errMsg.append("'新企标名称'不能为空。"); - } - // 修订 - if (projectType.equals(ESPProjectType.MODIFY.getName())) { - // 检查企标编号是否有效 - if (StrUtil.isBlank(originEnStandardNo)) { - errMsg.append("'原企标编号'不能为空。"); - } else { - if (!esList.stream().map(LawsEnterpriseStandard::getStandardNumber).collect(Collectors.toList()).contains(originEnStandardNo)) { - return "'原企标编号'无效。"; - } - } - } else { - // 制定校验三个代号 - String enStandardCode = plan.getEnStandardCode(); - String enNameCode = plan.getEnNameCode(); - String standardCategoryCode = plan.getStandardCategoryCode(); - // 检查企标编号是否有效 - if (StrUtil.isBlank(enStandardCode)) { - errMsg.append("'企业标准代号'不能为空。"); - } else { - // 检查企业标准代号 - if (!excelUtils.validDict("enterprise_standard_code", enStandardCode, null, null, true, listDict)) { - errMsg.append("'企业标准代号'无效。"); - } - } - if (StrUtil.isBlank(enNameCode)) { - errMsg.append("'企业名称代号'不能为空。"); - } else { - // 检查企业标准代号 - if (!excelUtils.validDict("enterprise_name_code", enNameCode, null, null, true, listDict)) { - errMsg.append("'企业名称代号'无效。"); - } - } - if (StrUtil.isBlank(standardCategoryCode)) { - errMsg.append("'标准类别代号'不能为空。"); - } else { - // 检查企业标准代号 - if (!excelUtils.validDict("standard_category_code", standardCategoryCode, null, null, true, listDict)) { - errMsg.append("'标准类别代号'无效。"); - } - } - } - errMsg.append(excelUtils.validStandardName(newEnStandardName)); - return errMsg.toString(); - } -} - - - - diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esArchive/controller/ESArchiveController.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esArchive/controller/ESArchiveController.java deleted file mode 100644 index c0043c25..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esArchive/controller/ESArchiveController.java +++ /dev/null @@ -1,134 +0,0 @@ -package com.jero.modules.activiti.process.esArchive.controller; - -import com.jero.common.api.vo.Result; -import com.jero.common.aspect.annotation.AutoLog; -import com.jero.common.aspect.annotation.Translation; -import com.jero.modules.activiti.enums.ProcessTypeEnum; -import com.jero.modules.activiti.process.common.entity.ProcessDraft; -import com.jero.modules.activiti.process.common.entity.TransferVO; -import com.jero.modules.activiti.process.common.service.ActFlowCommonService; -import com.jero.modules.activiti.process.esArchive.entity.vo.ESArchiveDataVO; -import com.jero.modules.activiti.process.esArchive.service.ProcessEsArchiveService; -import com.jero.modules.activiti.process.fb.service.IProcessHandleService; -import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import io.swagger.annotations.ApiParam; -import lombok.extern.slf4j.Slf4j; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import javax.annotation.Resource; - - -/** - * @author: Mzaxd - * @Date: 2023/10/18 10:44 - */ -@Slf4j -@RestController -@Api(tags = "企标封存流程") -@RequestMapping("/process/es/archive") -public class ESArchiveController { - - @Resource - private ProcessEsArchiveService archiveService; - - @Resource - private IProcessHandleService processHandleService; - - @Resource - private ActFlowCommonService actFlowCommonService; - - /** - * 新增企标封存申请 - * - * @param archiveData - */ - @AutoLog(value = "企标封存流程-发起流程") - @ApiOperation(value="企标封存流程-发起流程", notes="企标封存流程-发起流程") - @PostMapping("/start") - public Result startProcess(@RequestBody ESArchiveDataVO archiveData) { - archiveService.startProcess(archiveData); - return Result.OK(); - } - - /** - * 保存到待办 - * @param processInfoVO - */ - @AutoLog(value = "企标封存流程-保存") - @ApiOperation(value="企标封存流程-保存", notes="企标封存流程-保存") - @PostMapping("/save") - public Result save(@Validated @RequestBody ProcessInfoVO processInfoVO) { - archiveService.saveToDraft(processInfoVO); - return Result.OK(); - } - - /** - * 保存到待办 - * @param taskId - */ - @AutoLog(value = "企标封存流程-办理") - @ApiOperation(value="企标封存流程-办理", notes="企标封存流程-办理") - @GetMapping("/handle/{taskId}") - @Translation - public Result handle(@PathVariable("taskId") String taskId) { - ProcessDraft draft = actFlowCommonService.getExistDraftByTaskId(taskId, ProcessTypeEnum.ES_ARCHIVE); - if (draft != null) { - return Result.OK(draft); - } - return Result.OK(archiveService.getHandleData(taskId)); - } - - /** - * 草稿办理 - * @param draftId - */ - @AutoLog(value = "企标封存流程-草稿办理") - @ApiOperation(value="企标封存流程-草稿办理", notes="企标封存流程-草稿办理") - @GetMapping("/draftHandle") - @Translation - public Result draftHandle(@RequestParam("draftId") @ApiParam("草稿Id") String draftId) { - return Result.OK(actFlowCommonService.getExistDraft(draftId, ProcessTypeEnum.ES_ARCHIVE)); - } - - /** - * 同意 - * - * @param archiveData - */ - @AutoLog(value = "企标封存流程-同意") - @ApiOperation(value="企标封存流程-同意", notes="企标封存流程-同意") - @PostMapping("/agree") - public Result agree(@RequestBody ESArchiveDataVO archiveData) { - archiveService.approval(archiveData, true); - return Result.OK(); - } - - /** - * 驳回 - * - * @param archiveData - */ - @AutoLog(value = "企标封存流程-驳回") - @ApiOperation(value="企标封存流程-驳回", notes="企标封存流程-驳回") - @PostMapping("/reject") - public Result reject(@RequestBody ESArchiveDataVO archiveData) { - archiveService.approval(archiveData, false); - return Result.OK(); - } - - /** - * 转办 - * - */ - @AutoLog(value = "企标封存流程-转办") - @ApiOperation(value="企标封存流程-转办", notes="企标封存流程-转办") - @PostMapping(value = "/transfer") - public Result transfer(@RequestBody TransferVO transferVO) { - processHandleService.transfer(transferVO.getTaskId(), transferVO.getUserId()); - return Result.OK(); - } - -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esArchive/entity/ProcessEsArchive.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esArchive/entity/ProcessEsArchive.java deleted file mode 100644 index 2ba4cee3..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esArchive/entity/ProcessEsArchive.java +++ /dev/null @@ -1,138 +0,0 @@ -package com.jero.modules.activiti.process.esArchive.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import java.io.Serializable; -import java.util.Date; - -import com.fasterxml.jackson.annotation.JsonFormat; -import com.jero.common.aspect.annotation.Dict; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import org.springframework.format.annotation.DateTimeFormat; - -/** - * 企业标准 - * @TableName process_es_archive - */ -@TableName(value ="process_es_archive") -@Data -public class ProcessEsArchive implements Serializable { - /** - * 主键ID - */ - @TableId(type = IdType.ASSIGN_ID) - @ApiModelProperty(value = "主键ID") - private String id; - - /** - * 创建人 - */ - @ApiModelProperty(value = "创建人") - private String createBy; - - /** - * 创建时间 - */ - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") - @DateTimeFormat(pattern="yyyy-MM-dd") - @ApiModelProperty(value = "创建时间") - private Date createTime; - - /** - * 更新人 - */ - @ApiModelProperty(value = "更新人") - private String updateBy; - - /** - * 更新时间 - */ - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") - @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") - @ApiModelProperty(value = "更新时间") - private Date updateTime; - - /** - * 所属部门 - */ - @ApiModelProperty(value = "所属部门") - private String orgCode; - - /** - * 0表示未删除,1表示删除 - */ - @ApiModelProperty(value = "0表示未删除,1表示删除") - private Integer delFlag; - - /** - * 流程实例Id - */ - @ApiModelProperty(value = "流程实例Id") - private String processInstanceId; - - /** - * 企标编号 - */ - @ApiModelProperty(value = "企标编号") - private String standardNumber; - - /** - * 企标名称 - */ - @ApiModelProperty(value = "企标名称") - private String standardName; - - /** - * 企标英文名称 - */ - @ApiModelProperty(value = "企标英文名称") - private String englishName; - - /** - * 企标类型 - */ - @Dict(dicCode = "esp_standard_type") - @ApiModelProperty(value = "企标类型") - private String standardCategory; - - /** - * 代替标准号 - */ - @ApiModelProperty(value = "代替标准号") - private String substituteStandardNumber; - - /** - * 被代替标准号 - */ - @ApiModelProperty(value = "被代替标准号") - private String replacedByStandardNumber; - - /** - * 发布日期 - */ - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") - @DateTimeFormat(pattern="yyyy-MM-dd") - @ApiModelProperty(value = "发布日期") - private Date releaseDate; - - /** - * 实施日期 - */ - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") - @DateTimeFormat(pattern="yyyy-MM-dd") - @ApiModelProperty(value = "实施日期") - private Date implementationDate; - - /** - * 封存理由 - */ - @ApiModelProperty(value = "封存理由") - private String archiveReason; - - @TableField(exist = false) - private static final long serialVersionUID = 1L; -} \ No newline at end of file diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esArchive/entity/vo/ESArchiveDataVO.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esArchive/entity/vo/ESArchiveDataVO.java deleted file mode 100644 index 74770656..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esArchive/entity/vo/ESArchiveDataVO.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.jero.modules.activiti.process.esArchive.entity.vo; - -import com.fasterxml.jackson.annotation.JsonProperty; -import com.jero.modules.activiti.process.common.entity.CommonVO; -import com.jero.modules.activiti.process.esArchive.entity.ProcessEsArchive; -import com.jero.modules.activiti.process.esInitChange.entity.ProcessEsInitChange; -import lombok.Data; - -import java.util.List; -import java.util.Map; - -/** - * @author: Mzaxd - * @Date: 2023/10/26 8:13 - */ -@Data -public class ESArchiveDataVO { - - @JsonProperty("common") - private CommonVO common; - - @JsonProperty("data") - private ProcessEsArchive data; - - @JsonProperty("flowUser") - private Map flowUser; -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esArchive/listener/ProcessESArchiveEndListener.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esArchive/listener/ProcessESArchiveEndListener.java deleted file mode 100644 index 57598da1..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esArchive/listener/ProcessESArchiveEndListener.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.jero.modules.activiti.process.esArchive.listener; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import com.jero.modules.activiti.process.common.enums.StandardStateEnum; -import com.jero.modules.activiti.process.esAbolish.entity.ProcessEsAbolish; -import com.jero.modules.activiti.process.esArchive.entity.ProcessEsArchive; -import com.jero.modules.activiti.process.esArchive.service.ProcessEsArchiveService; -import com.jero.modules.activiti.process.esInitChange.entity.ProcessEsInitChange; -import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPApplicationCategoryEnum; -import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPChangeType; -import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPProjectType; -import com.jero.modules.activiti.process.esInitChange.service.ProcessEsInitChangeService; -import com.jero.modules.laws.enterprise.entity.EnterpriseStandardPlan; -import com.jero.modules.laws.enterprise.service.EnterpriseStandardPlanService; -import com.jero.modules.laws.enterprise.util.BeanCopyUtils; -import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard; -import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService; -import lombok.extern.slf4j.Slf4j; -import org.activiti.engine.delegate.DelegateExecution; -import org.activiti.engine.delegate.ExecutionListener; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; -import java.util.List; - -/** - * @author: Mzaxd - * @Date: 2023/10/10 14:14 - */ -@Slf4j -@Component -public class ProcessESArchiveEndListener implements ExecutionListener { - - @Resource - private ILawsEnterpriseStandardService esService; - - @Resource - private ProcessEsArchiveService esArchiveService; - - /** - * 企标立项变更流程结束之后需要把数据存入企标计划数据库 然后自动发起企标制修订流程 - * @param delegateExecution - */ - @Override - public void notify(DelegateExecution delegateExecution) { - log.info("企标封存流程结束 监听执行器开始执行"); - // 找到流程实例Id - String processInstanceId = delegateExecution.getProcessInstanceId(); - LambdaQueryWrapper archiveLambdaQueryWrapper = new LambdaQueryWrapper<>(); - archiveLambdaQueryWrapper.eq(ProcessEsArchive::getProcessInstanceId, processInstanceId); - ProcessEsArchive archive = esArchiveService.getOne(archiveLambdaQueryWrapper); - String standNo = archive.getStandardNumber(); - log.info("企标封存流程监听执行器开始执行,企标编号为:{}", standNo); - esService.update(new LambdaUpdateWrapper() - .set(LawsEnterpriseStandard::getStandardState, StandardStateEnum.ARCHIVE.getStateValue()) - .eq(LawsEnterpriseStandard::getStandardNumber, standNo)); - log.info("企标封存流程结束监听执行器执行结束"); - } -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esArchive/mapper/ProcessEsArchiveMapper.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esArchive/mapper/ProcessEsArchiveMapper.java deleted file mode 100644 index ea8f132a..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esArchive/mapper/ProcessEsArchiveMapper.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.jero.modules.activiti.process.esArchive.mapper; - -import com.jero.modules.activiti.process.esArchive.entity.ProcessEsArchive; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; - -/** -* @author ThinkBook -* @description 针对表【process_es_archive(企业标准)】的数据库操作Mapper -* @createDate 2023-10-29 21:00:37 -* @Entity com.jero.modules.activiti.process.esArchive.entity.ProcessEsArchive -*/ -public interface ProcessEsArchiveMapper extends BaseMapper { - -} - - - - diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esArchive/mapper/xml/ProcessEsArchiveMapper.xml b/laws-modules/src/main/java/com/jero/modules/activiti/process/esArchive/mapper/xml/ProcessEsArchiveMapper.xml deleted file mode 100644 index 26049437..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esArchive/mapper/xml/ProcessEsArchiveMapper.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - id,create_by,create_time, - update_by,update_time,org_code, - del_flag,process_instance_id,standard_number, - standard_name,english_name,standard_category, - substitute_standard_number,replaced_by_standard_number,release_date, - implementation_date,archive_reason - - diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esArchive/service/ProcessEsArchiveService.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esArchive/service/ProcessEsArchiveService.java deleted file mode 100644 index 3e620f1b..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esArchive/service/ProcessEsArchiveService.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.jero.modules.activiti.process.esArchive.service; - -import com.jero.modules.activiti.process.esArchive.entity.ProcessEsArchive; -import com.baomidou.mybatisplus.extension.service.IService; -import com.jero.modules.activiti.process.esArchive.entity.vo.ESArchiveDataVO; -import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO; - -/** -* @author ThinkBook -* @description 针对表【process_es_archive(企业标准)】的数据库操作Service -* @createDate 2023-10-29 21:00:37 -*/ -public interface ProcessEsArchiveService extends IService { - - void startProcess(ESArchiveDataVO annualInitData); - - void saveToDraft(ProcessInfoVO processInfoVO); - - ESArchiveDataVO getHandleData(String taskId); - - void approval(ESArchiveDataVO archiveData, boolean pass); - -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esArchive/service/impl/ProcessEsArchiveServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esArchive/service/impl/ProcessEsArchiveServiceImpl.java deleted file mode 100644 index ede902ec..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esArchive/service/impl/ProcessEsArchiveServiceImpl.java +++ /dev/null @@ -1,259 +0,0 @@ -package com.jero.modules.activiti.process.esArchive.service.impl; - -import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.jero.common.api.vo.ResultCommon; -import com.jero.common.aspect.TranslationAspect; -import com.jero.common.constant.enums.YesOrNoEnum; -import com.jero.common.exception.JeroBootException; -import com.jero.modules.activiti.enums.ProcessTypeEnum; -import com.jero.modules.activiti.process.common.common.DraftCommon; -import com.jero.modules.activiti.process.common.entity.CommonVO; -import com.jero.modules.activiti.process.common.entity.CounterSignNodeNameConstants; -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.enums.StandardStateEnum; -import com.jero.modules.activiti.process.common.service.ActFlowCommonService; -import com.jero.modules.activiti.process.esAbolish.entity.ProcessEsAbolish; -import com.jero.modules.activiti.process.esAbolish.entity.vo.ESAbolishDataVO; -import com.jero.modules.activiti.process.esArchive.entity.ProcessEsArchive; -import com.jero.modules.activiti.process.esArchive.entity.vo.ESArchiveDataVO; -import com.jero.modules.activiti.process.esArchive.service.ProcessEsArchiveService; -import com.jero.modules.activiti.process.esArchive.mapper.ProcessEsArchiveMapper; -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.service.IProcessHandleService; -import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO; -import com.jero.modules.activiti.service.ProcessNodeLinkService; -import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard; -import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService; -import com.jero.modules.sys.utils.UserUtils; -import lombok.extern.slf4j.Slf4j; -import org.activiti.engine.RuntimeService; -import org.activiti.engine.TaskService; -import org.activiti.engine.runtime.ProcessInstance; -import org.activiti.engine.task.Task; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import javax.annotation.Resource; -import java.util.*; - -/** -* @author ThinkBook -* @description 针对表【process_es_archive(企业标准)】的数据库操作Service实现 -* @createDate 2023-10-29 21:00:37 -*/ -@Slf4j -@Transactional(rollbackFor = JeroBootException.class) -@Service -public class ProcessEsArchiveServiceImpl extends ServiceImpl - implements ProcessEsArchiveService{ - - @Resource - private ActFlowCommonService actFlowCommonService; - - @Resource - private ProcessNodeLinkService processNodeLinkService; - - @Resource - private RuntimeService runtimeService; - - @Resource - private TaskService taskService; - - @Resource - private IProcessHandleService processHandleService; - - @Resource - private ILawsEnterpriseStandardService esService; - - @Resource - private TranslationAspect translationAspect; - - - @Override - public void startProcess(ESArchiveDataVO archiveData) { - // 执行流程发起前的操作 - this.startRunTask(archiveData); - // 流程Key - String processDefinitionKey = ProcessType.ES_ARCHIVE.getProcessKey(); - // 当前用户Id - String userId = UserUtils.getUserId(); - // 业务数据 - ProcessEsArchive esArchive = archiveData.getData(); - // 通用数据 - CommonVO common = archiveData.getCommon(); - // 人员数据 - Map variables = archiveData.getFlowUser(); - // 设置流程变量 - Map actVariables = this.setVariables(variables); - // 删除草稿 - actFlowCommonService.getExistDraftAndRemove(common, ProcessTypeEnum.ES_ARCHIVE); - // 启动流程 - ProcessInstance processInstance = actFlowCommonService.startProcess(processDefinitionKey, actVariables); - // 获取流程实例ID - String processDefinitionId = processInstance.getProcessDefinitionId(); - String processInstanceId = processInstance.getId(); - // 手动设置所有流程变量 - actFlowCommonService.setProcessVariables(processInstanceId, actVariables); - // 设置流程实例Id - esArchive.setProcessInstanceId(processInstanceId); - // 保存到业务流程表 - saveOrUpdate(esArchive); - // 保存选人信息 - processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, this.getUserMap(variables)); - // 获取第一个任务的taskId - String taskId = actFlowCommonService.getFirstTaskId(processInstanceId, userId, processDefinitionId); - // 手动翻译 - String jsonData = translationAspect.manualParseDictText(this.getHandleData(taskId), this.getUserMap(variables)); - // 强制撤回 - common.setProcessInstanceId(processInstanceId); - actFlowCommonService.saveFirstNodeDraft(common, ProcessTypeEnum.ES_ARCHIVE, jsonData); - // 更新审批表为完成,填充数据 - actFlowCommonService.updateApprovalInfo(common, taskId, true); - // 自动完成第一个任务 - actFlowCommonService.completeTask(taskId, userId); - // 根据流程实例id更新流程总表 - String prcName = common.getPrcName(); - String prcMes = common.getPrcMes(); - Date dueTime = common.getDueTime(); - Integer prcType = ProcessTypeEnum.ES_ARCHIVE.getValue(); - actFlowCommonService.updateProcessAll(processInstanceId, userId, prcName, prcMes, prcType, dueTime); - } - - public Map setVariables(Map flowUser) { - HashMap actVariables = new HashMap<>(); - if (flowUser.get("relatedUserList") == null || StrUtil.isBlank((String)flowUser.get("relatedUserList"))) { - actFlowCommonService.putIfNotNull(actVariables, "countersign", false); - } else { - actFlowCommonService.putIfNotNull(actVariables, "countersign", true); - String relatedUsers = (String) flowUser.get("relatedUserList"); - // 将relatedUserList从逗号拼接转为List - List relatedUserList = StrUtil.split(relatedUsers, ','); - actFlowCommonService.putIfNotNull(actVariables, "relatedUserList", relatedUserList); - } - for (Map.Entry entry : flowUser.entrySet()) { - String key = entry.getKey(); - if (!key.equals("relatedUserList")) { - actVariables.put(key, entry.getValue()); - } - } - return actVariables; - } - - private Map getUserMap(Map variables) { - variables.remove("pass"); - variables.remove("countersign"); - return variables; - } - - @Override - public void saveToDraft(ProcessInfoVO processInfoVO) { - ESArchiveDataVO businessInfoDTO = processInfoVO.getBusinessInfoDTO(); - if (businessInfoDTO != null) { - ProcessEsArchive data = businessInfoDTO.getData(); - if (data != null) { - processInfoVO.setBusinessId(data.getId()); - } - } - - // 流程信息 - BasicProcessInfoDTO basicProcessInfoDTO = processInfoVO.getBasicProcessInfoDTO(); - basicProcessInfoDTO.setProcessType(ProcessTypeEnum.ES_ARCHIVE.getValue()); // 流程类型 - - processHandleService.saveToDraft(processInfoVO); - } - - public void startRunTask(ESArchiveDataVO archiveData) { - // do nothing now - } - - @Override - public ESArchiveDataVO getHandleData(String taskId) { - if (!actFlowCommonService.taskExists(taskId)) { - throw new JeroBootException(ResultCommon.TASK_NOT_EXISTS); - } - ESArchiveDataVO archiveData = new ESArchiveDataVO(); - // 使用流程引擎根据taskId找到流程实例Id - String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId); - archiveData.setCommon(actFlowCommonService.getHandleCommon(taskId)); - // 获取流程实例数据 - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.eq(ProcessEsArchive::getProcessInstanceId, processInstanceId); - lambdaQueryWrapper.eq(ProcessEsArchive::getDelFlag, YesOrNoEnum.NO.getValue()); - ProcessEsArchive data = getOne(lambdaQueryWrapper); - archiveData.setData(data); - return archiveData; - } - - @Override - public void approval(ESArchiveDataVO archiveDataVO, boolean pass) { - String userId = UserUtils.getUserId(); - CommonVO commonVO = archiveDataVO.getCommon(); - Map flowUser = archiveDataVO.getFlowUser(); - String taskId = commonVO.getTaskId(); - if (StrUtil.isBlank(taskId) || !actFlowCommonService.taskExists(taskId)) { - throw new JeroBootException(ResultCommon.TASK_NOT_EXISTS); - } - // 获取流程实例ID - String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId); - // 获取流程实例对象 - ProcessInstance processInstance = runtimeService.createProcessInstanceQuery() - .processInstanceId(processInstanceId).singleResult(); - // 获取流程定义ID - String processDefinitionId = processInstance.getProcessDefinitionId(); - // 如果是最后一个节点的审批则需要判断是否可以通过 - String taskName = taskService.createTaskQuery().taskId(taskId).singleResult().getName(); - if (pass && taskName.equals("标准化审批")) { - ProcessEsArchive data = this.getOne(new LambdaQueryWrapper() - .eq(ProcessEsArchive::getProcessInstanceId, processInstanceId)); - String standardNumber = data.getStandardNumber(); - LawsEnterpriseStandard es = esService.getOne(new LambdaQueryWrapper() - .eq(LawsEnterpriseStandard::getStandardNumber, standardNumber)); - if (StandardStateEnum.ARCHIVE.getStateValue().equals(es.getStandardState())) { - throw new JeroBootException("该标准已封存,需要驳回重新选择"); - } - if (StandardStateEnum.ABOLISH.getStateValue().equals(es.getStandardState())) { - throw new JeroBootException("该标准已废止,需要驳回重新选择"); - } - } - ProcessEsArchive data = archiveDataVO.getData(); - if (data != null) { - updateById(data); - // 根据流程实例id更新流程总表 - String prcName = commonVO.getPrcName(); - String prcMes = commonVO.getPrcMes(); - Date dueTime = commonVO.getDueTime(); - Integer prcType = ProcessTypeEnum.ES_ARCHIVE.getValue(); - actFlowCommonService.updateProcessAll(processInstanceId, userId, prcName, prcMes, prcType, dueTime); - } - if (flowUser != null) { - Map variables = setVariables(flowUser); - Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); - // 获取执行id - String executionId = task.getExecutionId(); - // 设置流程变量 - runtimeService.setVariables(executionId, variables); - processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, this.getUserMap(flowUser)); - } - // 设置流程变量 - runtimeService.setVariable(processInstanceId, "pass", pass); - // 更新审批表为完成,填充数据 - actFlowCommonService.updateApprovalInfo(commonVO, taskId, pass); - // 审批节点 - actFlowCommonService.completeTask(taskId, userId); - // 删除草稿 - actFlowCommonService.removeDraft(commonVO); - // 如果是会签节点,驳回后要将其余节点recode设置为 未处理 状态 - if (!pass) { - actFlowCommonService.updateOtherCountersignRecodeStatus(processInstanceId, CounterSignNodeNameConstants.COUNTER_SIGN_NODE_NAME); - } - } -} - - - - diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esChange/controller/ESChangeController.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esChange/controller/ESChangeController.java deleted file mode 100644 index 48625198..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esChange/controller/ESChangeController.java +++ /dev/null @@ -1,149 +0,0 @@ -package com.jero.modules.activiti.process.esChange.controller; - -import com.jero.common.api.vo.Result; -import com.jero.common.aspect.annotation.AutoLog; -import com.jero.common.aspect.annotation.Translation; -import com.jero.modules.activiti.enums.ProcessTypeEnum; -import com.jero.modules.activiti.process.common.entity.ProcessDraft; -import com.jero.modules.activiti.process.common.entity.TransferVO; -import com.jero.modules.activiti.process.common.service.ActFlowCommonService; -import com.jero.modules.activiti.process.esArchive.entity.vo.ESArchiveDataVO; -import com.jero.modules.activiti.process.esChange.entity.ProcessEsChange; -import com.jero.modules.activiti.process.esChange.entity.vo.ESChangeDataVO; -import com.jero.modules.activiti.process.esChange.listener.ProcessESChangeEndListener; -import com.jero.modules.activiti.process.esChange.service.ProcessEsChangeService; -import com.jero.modules.activiti.process.fb.service.IProcessHandleService; -import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import io.swagger.annotations.ApiParam; -import lombok.extern.slf4j.Slf4j; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import javax.annotation.Resource; -import javax.servlet.http.HttpServletResponse; - - -/** - * @author: Mzaxd - * @Date: 2023/10/18 10:44 - */ -@Slf4j -@RestController -@Api(tags = "企标更改流程") -@RequestMapping("/process/es/change") -public class ESChangeController { - - @Resource - private ProcessEsChangeService changeService; - - @Resource - private IProcessHandleService processHandleService; - - @Resource - private ActFlowCommonService actFlowCommonService; - - /** - * 新增企标更改流程 - * - * @param changeData - */ - @AutoLog(value = "企标更改流程-发起流程") - @ApiOperation(value = "企标更改流程-发起流程", notes = "企标更改流程-发起流程") - @PostMapping("/start") - public Result startProcess(@RequestBody ESChangeDataVO changeData) { - changeService.startProcess(changeData); - return Result.OK(); - } - - /** - * 保存到待办 - * - * @param processInfoVO - */ - @AutoLog(value = "企标更改流程-保存") - @ApiOperation(value = "企标更改流程-保存", notes = "企标更改流程-保存") - @PostMapping("/save") - public Result save(@Validated @RequestBody ProcessInfoVO processInfoVO) { - String draftId = changeService.saveToDraft(processInfoVO); - return Result.OK((Object) draftId); - } - - /** - * 保存到待办 - * - * @param taskId - */ - @AutoLog(value = "企标更改流程-办理") - @ApiOperation(value = "企标更改流程-办理", notes = "企标更改流程-办理") - @GetMapping("/handle/{taskId}") - @Translation - public Result handle(@PathVariable("taskId") String taskId) { - ProcessDraft draft = actFlowCommonService.getExistDraftByTaskId(taskId, ProcessTypeEnum.ES_CHANGE); - if (draft != null) { - return Result.OK(draft); - } - return Result.OK(changeService.getHandleData(taskId)); - } - - /** - * 同意 - * - * @param changeData - */ - @AutoLog(value = "企标更改流程-同意") - @ApiOperation(value = "企标更改流程-同意", notes = "企标更改流程-同意") - @PostMapping("/agree") - public Result agree(@RequestBody ESChangeDataVO changeData) { - changeService.approval(changeData, true); - return Result.OK(); - } - - @AutoLog(value = "企标更改流程-测试修改单生成") - @ApiOperation(value = "企标更改流程-测试修改单生成", notes = "企标更改流程-测试修改单生成", produces = "application/octet-stream") - @PostMapping("/test") - public Result testModifyGen(HttpServletResponse response) throws Exception { -// processESChangeEndListener.genModificationOrder(new ProcessEsChange(), response); - return Result.OK(); - } - - /** - * 驳回 - * - * @param changeData - */ - @AutoLog(value = "企标更改流程-驳回") - @ApiOperation(value = "企标更改流程-驳回", notes = "企标更改流程-驳回") - @PostMapping("/reject") - public Result reject(@RequestBody ESChangeDataVO changeData) { - changeService.approval(changeData, false); - return Result.OK(); - } - - /** - * 转办 - */ - @AutoLog(value = "企标更改流程-转办") - @ApiOperation(value = "企标更改流程-转办", notes = "企标更改流程-转办") - @PostMapping(value = "/transfer") - public Result transfer(@RequestBody TransferVO transferVO) { - processHandleService.transfer(transferVO.getTaskId(), transferVO.getUserId()); - return Result.OK(); - } - - /** - * 草稿办理 - * - * @param draftId - * @param projectId - */ - @AutoLog(value = "企标更改流程-草稿办理") - @ApiOperation(value = "企标更改流程-草稿办理", notes = "企标更改流程-草稿办理") - @GetMapping("/draftHandle") - @Translation - public Result draftHandle(@RequestParam("draftId") @ApiParam("草稿Id") String draftId) { - return Result.OK(actFlowCommonService.getExistDraft(draftId, ProcessTypeEnum.ES_CHANGE)); - } - -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esChange/entity/ESChangeTaskNodeIdConstant.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esChange/entity/ESChangeTaskNodeIdConstant.java deleted file mode 100644 index a3c0676c..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esChange/entity/ESChangeTaskNodeIdConstant.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.jero.modules.activiti.process.esChange.entity; - -public class ESChangeTaskNodeIdConstant { - - /** 主起草人发起 */ - public static final String MAIN_DRAFT_USER_START = "sid-030A34BF-65B2-460C-BCAB-4BFEE0F77987"; - /** 相关人员校对 */ - public static final String OTHER_USER_CHECK= "sid-109C6F14-FB23-4A90-A462-F10F344BECD1"; - /** 主起草人主管级领导审批 */ - public static final String MAIN_DRAFT_LEADER_APPROVAL = "sid-8A8307F2-20BB-423C-80AA-F426F5F612C3"; - /** 标准化审批 */ - public static final String STANDARDIZATION_APPROVAL = "sid-F0B237E0-1D97-455B-BE15-C3796429B412"; - /** 起草人主管级上一级领导审批 */ - public static final String MAIN_DRAFT_LEADER_LEADER_APPROVAL = "sid-05CC5BD1-2451-45AF-9453-74AE93D026EF"; - -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esChange/entity/EsChangeOpinion.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esChange/entity/EsChangeOpinion.java deleted file mode 100644 index c93ac20b..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esChange/entity/EsChangeOpinion.java +++ /dev/null @@ -1,116 +0,0 @@ -package com.jero.modules.activiti.process.esChange.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import java.io.Serializable; -import java.util.Date; - -import com.jero.common.aspect.annotation.Dict; -import io.swagger.annotations.ApiModelProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * 企标修改流程意见内容列表 - * @TableName process_es_change_opinion - */ -@TableName(value ="process_es_change_opinion") -@Data -@NoArgsConstructor -@AllArgsConstructor -public class EsChangeOpinion implements Serializable { - - /** - * 主键ID - */ - @TableId(type = IdType.ASSIGN_ID) - @ApiModelProperty(value = "主键ID") - private String id; - - /** - * 创建人 - */ - @ApiModelProperty(value = "创建人") - private String createBy; - - /** - * 创建时间 - */ - @ApiModelProperty(value = "创建时间") - private Date createTime; - - /** - * 更新人 - */ - @ApiModelProperty(value = "更新人") - private String updateBy; - - /** - * 更新时间 - */ - @ApiModelProperty(value = "更新时间") - private Date updateTime; - - /** - * 所属部门 - */ - @ApiModelProperty(value = "所属部门") - private String orgCode; - - /** - * 业务id - */ - @ApiModelProperty(value = "业务id") - private String businessId; - - /** - * 条款号 - */ - @ApiModelProperty(value = "条款号") - private String clauseNumber; - - /** - * 条款名称 - */ - @ApiModelProperty(value = "条款名称") - private String clauseName; - - /** - * 修改前 - */ - @ApiModelProperty(value = "修改前") - private String beforeUpdate; - - /** - * 修改后 - */ - @ApiModelProperty(value = "修改后") - private String afterUpdate; - - /** - * 修改理由 - */ - @ApiModelProperty(value = "修改理由") - private String updateReason; - - /** - * 提出人 - */ - @Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname") - @ApiModelProperty(value = "提出人") - private String createUser; - - /** - * 提出部门 - */ - @Dict(dictTable = "sys_depart", dicCode = "id", dicText = "depart_name") - @ApiModelProperty(value = "提出部门") - private String createUnit; - - @TableField(exist = false) - private static final long serialVersionUID = 1L; - -} \ No newline at end of file diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esChange/entity/EsChangeTaskNameConstant.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esChange/entity/EsChangeTaskNameConstant.java deleted file mode 100644 index 31fac64b..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esChange/entity/EsChangeTaskNameConstant.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.jero.modules.activiti.process.esChange.entity; - -/** - * @author: Mzaxd - * @Date: 2023/10/27 7:32 - */ -public class EsChangeTaskNameConstant { - - public static final String MAIN_DRAFTER_INIT = "主起草人发起"; - public static final String RELATED_USER_CHECK = "相关人员校对"; - public static final String MAIN_DRAFTER_LEADER_APPROVAL = "主起草人主管级领导审批"; - public static final String STANDARDIZATION_APPROVAL = "标准化审批"; - public static final String MAIN_DRAFTER_LEADER_LEADER_APPROVAL = "起草人主管级上一级领导审批"; - -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esChange/entity/ProcessEsChange.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esChange/entity/ProcessEsChange.java deleted file mode 100644 index 99b860e5..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esChange/entity/ProcessEsChange.java +++ /dev/null @@ -1,306 +0,0 @@ -package com.jero.modules.activiti.process.esChange.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import java.io.Serializable; -import java.util.Date; -import java.util.List; - -import com.fasterxml.jackson.annotation.JsonFormat; -import com.jero.common.aspect.annotation.Dict; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import org.springframework.format.annotation.DateTimeFormat; - -/** - * 企业标准 - * @TableName process_es_change - */ -@TableName(value ="process_es_change") -@Data -public class ProcessEsChange implements Serializable { - /** - * 主键ID - */ - @TableId(type = IdType.ASSIGN_ID) - @ApiModelProperty(value = "主键ID") - private String id; - - /** - * 创建人 - */ - @ApiModelProperty(value = "创建人") - private String createBy; - - /** - * 创建时间 - */ - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") - @DateTimeFormat(pattern="yyyy-MM-dd") - @ApiModelProperty(value = "创建时间") - private Date createTime; - - /** - * 更新人 - */ - @ApiModelProperty(value = "更新人") - private String updateBy; - - /** - * 更新时间 - */ - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") - @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") - @ApiModelProperty(value = "更新时间") - private Date updateTime; - - /** - * 所属部门 - */ - @Dict(dictTable = "sys_depart", dicCode = "id", dicText = "depart_name") - @ApiModelProperty(value = "所属部门") - private String orgCode; - - /** - * 0表示未删除,1表示删除 - */ - @ApiModelProperty(value = "0表示未删除,1表示删除") - private Integer delFlag; - - /** - * 流程实例Id - */ - @ApiModelProperty(value = "流程实例Id") - private String processInstanceId; - - /** - * 企标Id - */ - @ApiModelProperty(value = "企标Id") - private String standardId; - - /** - * 企标编号 - */ - @ApiModelProperty(value = "企标编号") - private String standardNumber; - - /** - * 企标名称 - */ - @ApiModelProperty(value = "企标名称") - private String standardName; - - /** - * 企标体系 - */ - @ApiModelProperty(value = "企标体系") - private String standardSystem; - - /** - * 企标类型 - */ - @ApiModelProperty(value = "企标类型") - private String standardCategory; - - /** - * 标准等级分类 - */ - @ApiModelProperty(value = "标准等级分类") - private String gradeClassification; - - /** - * 企标英文名称 - */ - @ApiModelProperty(value = "企标英文名称") - private String standardEnglishName; - - /** - * 发布日期 - */ - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") - @DateTimeFormat(pattern="yyyy-MM-dd") - @ApiModelProperty(value = "发布日期") - private Date releaseDate; - - /** - * 实施日期 - */ - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") - @DateTimeFormat(pattern="yyyy-MM-dd") - @ApiModelProperty(value = "实施日期") - private Date implementationDate; - - /** - * 是否试行(0代表不试行,1代表试行) - */ - @ApiModelProperty(value = "是否试行(0代表不试行,1代表试行)") - private String tryFlag; - - /** - * 试行周期 - */ - @ApiModelProperty(value = "试行周期") - private String trialPeriod; - - /** - * 零部件名称 - */ - @Dict(dictTable = "laws_part_name", dicCode = "code", dicText = "name") - @ApiModelProperty(value = "零部件名称") - private String partName; - - /** - * 主起草人 - */ - @Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname") - @ApiModelProperty(value = "主起草人") - private String mainDraftingUser; - - /** - * 主起草单位 - */ - @Dict(dictTable = "sys_depart", dicCode = "id", dicText = "depart_name") - @ApiModelProperty(value = "主起草单位") - private String mainDraftingUnit; - - /** - * 标准适用范围 - */ - @ApiModelProperty(value = "标准适用范围") - private String standardScope; - - /** - * 代替标准号 - */ - @ApiModelProperty(value = "代替标准号") - private String substituteStandardNumber; - - /** - * 引用标准 - */ - @ApiModelProperty(value = "引用标准") - private String referenceStandard; - - /** - * 关联文件 - */ - @ApiModelProperty(value = "关联文件") - private String associatedFile; - - /** - * 采标程度 - */ - @ApiModelProperty(value = "采标程度") - private String acquisitionDegree; - - /** - * 采用国际标准号 - */ - @ApiModelProperty(value = "采用国际标准号") - private String internationalStandardNum; - - /** - * 授权部门 - */ - @ApiModelProperty(value = "授权部门") - private String authDept; - - /** - * 授权部门 - */ - @ApiModelProperty(value = "更改级别代号") - @Dict(dicCode = "change_level_code") - private String levelCode; - - /** - * 有无二维或三维图 - */ - @ApiModelProperty(value = "有无二维或三维图") - private String has2d3dGraph; - - /** - * 顾客确认 - */ - @ApiModelProperty(value = "顾客确认") - private String customerConfirmation; - - /** - * 刷新文件号 - */ - @ApiModelProperty(value = "刷新文件号") - private String refreshFileNumber; - - /** - * 库存 - */ - @ApiModelProperty(value = "库存") - private String inventory; - - /** - * 在制品 - */ - @ApiModelProperty(value = "在制品") - private String workInProgress; - - /** - * 备件 - */ - @ApiModelProperty(value = "备件") - private String spareParts; - - /** - * 关联更改项 - */ - @ApiModelProperty(value = "关联更改项") - private String relatedChanges; - - /** - * 更改标记 - */ - @ApiModelProperty(value = "更改标记") - private String changeTag; - - /** - * 处数 - */ - @ApiModelProperty(value = "处数") - private String treatmentCount; - - /** - * 生效日期 - */ - @ApiModelProperty(value = "生效日期") - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") - @DateTimeFormat(pattern = "yyyy-MM-dd") - private Date effectiveDate; - - /** - * 更改单号 - */ - @ApiModelProperty(value = "更改单号") - private String modifyOrderNum; - - /** - * 在线编辑文件id - */ - @ApiModelProperty(value = "在线编辑文件id") - private String onEditFile; - - /** - * 需要替换的fileId - */ - @ApiModelProperty(value = "需要替换的fileId") - private String replaceFileId; - - /** - * 修改意见内容列表 - */ - @TableField(exist = false) - private List list; - - @TableField(exist = false) - private static final long serialVersionUID = 1L; -} \ No newline at end of file diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esChange/entity/vo/ESChangeDataVO.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esChange/entity/vo/ESChangeDataVO.java deleted file mode 100644 index c307abca..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esChange/entity/vo/ESChangeDataVO.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.jero.modules.activiti.process.esChange.entity.vo; - -import com.fasterxml.jackson.annotation.JsonProperty; -import com.jero.modules.activiti.process.common.entity.CommonVO; -import com.jero.modules.activiti.process.esChange.entity.ProcessEsChange; -import lombok.Data; - -import java.util.Map; - - -/** - * @author: Mzaxd - * @Date: 2023/10/26 8:13 - */ -@Data -public class ESChangeDataVO { - - @JsonProperty("common") - CommonVO common; - - @JsonProperty("data") - ProcessEsChange data; - - @JsonProperty("flowUser") - Map flowUser; -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esChange/listener/ProcessESChangeEndListener.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esChange/listener/ProcessESChangeEndListener.java deleted file mode 100644 index a6683930..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esChange/listener/ProcessESChangeEndListener.java +++ /dev/null @@ -1,442 +0,0 @@ -package com.jero.modules.activiti.process.esChange.listener; - -import cn.hutool.core.util.StrUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.jero.common.api.CommonAPI; -import com.jero.common.api.vo.Result; -import com.jero.common.exception.JeroBootException; -import com.jero.common.system.vo.DictModel; -import com.jero.common.system.vo.SysDictItemCore; -import com.jero.modules.activiti.entity.ProcessApprovalRecord; -import com.jero.modules.activiti.process.common.enums.StandardStateEnum; -import com.jero.modules.activiti.process.esChange.entity.EsChangeOpinion; -import com.jero.modules.activiti.process.esChange.entity.EsChangeTaskNameConstant; -import com.jero.modules.activiti.process.esChange.entity.ProcessEsChange; -import com.jero.modules.activiti.process.esChange.service.EsChangeOpinionService; -import com.jero.modules.activiti.process.esChange.service.ProcessEsChangeService; -import com.jero.modules.activiti.service.ProcessApprovalRecordService; -import com.jero.modules.activiti.util.ExcelUtils; -import com.jero.modules.laws.common.constant.FieldCommon; -import com.jero.modules.laws.common.service.ILawsCommonService; -import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard; -import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService; -import com.jero.modules.onlyoffice.service.IBusProcessModelHisService; -import com.jero.modules.oss.entity.OSSFile; -import com.jero.modules.oss.service.IOSSFileService; -import com.jero.modules.system.controller.CommonController; -import com.jero.modules.system.entity.SysDepart; -import com.jero.modules.system.service.*; -import com.jero.modules.tag.enums.TableNameEnum; -import lombok.extern.slf4j.Slf4j; -import org.activiti.engine.delegate.DelegateExecution; -import org.activiti.engine.delegate.ExecutionListener; -import org.apache.poi.xwpf.usermodel.*; -import org.springframework.core.io.ClassPathResource; -import org.springframework.mock.web.MockHttpServletResponse; -import org.springframework.mock.web.MockMultipartFile; -import org.springframework.mock.web.MockMultipartHttpServletRequest; -import org.springframework.stereotype.Component; -import org.springframework.web.multipart.MultipartFile; - -import javax.annotation.Resource; -import javax.servlet.http.HttpServletResponse; -import java.io.*; -import java.nio.file.Files; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -/** - * @author: Mzaxd - * @Date: 2023/10/10 14:14 - */ -@Slf4j -@Component -public class ProcessESChangeEndListener implements ExecutionListener { - - /** - * 企标更改流程结束之后需要把数据存入企标数据库 - * @param delegateExecution - */ - - @Resource - private ILawsEnterpriseStandardService esService; - - @Resource - private ProcessEsChangeService esChangeService; - - @Resource - private ILawsCommonService commonService; - - @Resource - private ISysDepartService sysDepartService; - - @Resource - private ISysDictService dictService; - - @Resource - private ProcessApprovalRecordService approvalRecordService; - - @Resource - private CommonController commonController; - - @Resource - private IOSSFileService ossFileService; - - @Resource - private EsChangeOpinionService changeOpinionService; - - @Resource - private ExcelUtils excelUtils; - - @Resource - private CommonAPI commonAPI; - - @Resource - private IBusProcessModelHisService busProcessModelHisService; - - @Resource - private ILawsCommonService lawsCommonService; - - private static final String MODULE_VALUE = TableNameEnum.ENTERPRISE_STANDARDS.getValue(); - - @Override - public void notify(DelegateExecution delegateExecution) { - log.info("企标更改流程结束 监听执行器开始执行"); - // 找到流程实例Id - String processInstanceId = delegateExecution.getProcessInstanceId(); - LambdaQueryWrapper changeLambdaQueryWrapper = new LambdaQueryWrapper<>(); - changeLambdaQueryWrapper.eq(ProcessEsChange::getProcessInstanceId, processInstanceId); - ProcessEsChange change = esChangeService.getOne(changeLambdaQueryWrapper); - String standNo = change.getStandardNumber(); - log.info("企标更改流程结束 监听执行器开始执行,企标编号为:{}", standNo); - // 根据标准编号找到标准Id - LawsEnterpriseStandard es = esService.getOne(new LambdaQueryWrapper() - .eq(LawsEnterpriseStandard::getStandardNumber, standNo)); - Map esDataMap = lawsCommonService.getByIdAndModule(es.getId(), MODULE_VALUE, "2", null); - // 转换成Map 然后走commonEdit接口 - Map parameterMap = new HashMap<>(); - this.buildMap(parameterMap, change); - String onEditFileId = change.getOnEditFile(); - String replaceFileId = change.getReplaceFileId(); - if (StrUtil.isNotBlank(onEditFileId)) { - if (StrUtil.isNotBlank(replaceFileId)) { - busProcessModelHisService.replaceFile(onEditFileId, replaceFileId); - } else { - String fileId = busProcessModelHisService.saveProcessFileToOss(onEditFileId); - String existFileIds = (String) esDataMap.get(FieldCommon.FILE_PUBLISH_OF_ORIGINAL); - if (StrUtil.isNotBlank(existFileIds)) { - fileId += "," + existFileIds; - } - parameterMap.put(FieldCommon.FILE_PUBLISH_OF_ORIGINAL, fileId); - } - } - // 保存修改的文件 - commonService.commonEdit(parameterMap); - // 生成修改单号 - this.genModificationOrderNumber(change); - esChangeService.updateById(change); - // 生成修改单 - try { - this.genModificationOrder(change); - } catch (Exception e) { - log.error("生成企标编号为{}的更改单失败", es.getStandardNumber()); - log.error(e.getMessage()); - throw new JeroBootException("生成企标编号为" + es.getStandardNumber() + "的更改单失败"); - } - log.info("企标更改流程监听执行器执行结束"); - } - - public void genModificationOrder(ProcessEsChange change) throws Exception { - String esNo = change.getStandardNumber(); - ClassPathResource resource = new ClassPathResource("wordTemplate/企标更改单模板.docx"); - // 使用ClassPathResource来读取模板文件 - try (InputStream fis = resource.getInputStream()) { - XWPFDocument document = new XWPFDocument(fis); - - // 获取并修改文档中的表格 - List tables = document.getTables(); - if (!tables.isEmpty()) { - XWPFTable firstTable = tables.get(0); - setFirstTableContents(firstTable, change); - } - - // 循环遍历所有页脚 - for (XWPFFooter footer : document.getFooterList()) { - // 获取页脚中的所有表格 - List footerTables = footer.getTables(); - - // 假设您想要修改第一个表格 - if (!footerTables.isEmpty()) { - XWPFTable footerTable = footerTables.get(0); - // 在这里调用您的方法来修改页脚中的表格 - setSecondTableContents(footerTable, change); - } - } - // 创建临时文件 - String fileName = change.getModifyOrderNum() + "-" + esNo + "标准更改单"; - fileName = fileName.replaceAll("/", ""); - File tempFile = Files.createTempFile(fileName, ".docx").toFile(); - - // 将更改写入临时文件 - try (FileOutputStream fos = new FileOutputStream(tempFile)) { - document.write(fos); - } - - // 将文件作为MultipartFile封装 - MultipartFile multipartFile = new MockMultipartFile( - "file", // 表单字段名称 - tempFile.getName(), // 文件名 - "application/vnd.openxmlformats-officedocument.wordprocessingml.document", // 内容类型 - Files.newInputStream(tempFile.toPath()) // 文件内容 - ); - - // 创建模拟的MultipartHttpServletRequest - MockMultipartHttpServletRequest mockRequest = new MockMultipartHttpServletRequest(); - mockRequest.addFile(multipartFile); // 添加文件 - mockRequest.addParameter("biz", "temp"); // 添加其他表单字段 - - // 调用上传接口 - Result result = commonController.upload(mockRequest, new MockHttpServletResponse()); - OSSFile file = result.getResult(); - file.setStandardFileType(FieldCommon.FILE_MODIFICATION_LIST); - file.setStandardNumber(esNo); - file.setStandardId(change.getStandardId()); - file.setFileName(fileName.substring(0, fileName.lastIndexOf("标准更改单") + 5) + ".docx"); - ossFileService.updateById(file); - // 删除临时文件 - boolean delete = tempFile.delete(); - } - } - - private void writeToResponse(HttpServletResponse response, File file) throws IOException { - response.setContentType("application/vnd.openxmlformats-officedocument.wordprocessingml.document"); - response.setHeader("Content-Disposition", "attachment; filename=" + file.getName()); - - try (OutputStream out = response.getOutputStream(); FileInputStream fis = new FileInputStream(file)) { - byte[] buffer = new byte[1024]; - int bytesRead; - while ((bytesRead = fis.read(buffer)) != -1) { - out.write(buffer, 0, bytesRead); - } - } - } - - private void setFirstTableContents(XWPFTable table, ProcessEsChange change) { - List opinions = changeOpinionService.list(new LambdaQueryWrapper() - .eq(EsChangeOpinion::getBusinessId, change.getId())); - - List changeReasonList = opinions.stream().map(EsChangeOpinion::getUpdateReason).collect(Collectors.toList()); - List beforeUpdateList = opinions.stream().map(EsChangeOpinion::getBeforeUpdate).collect(Collectors.toList()); - List afterUpdateList = opinions.stream().map(EsChangeOpinion::getAfterUpdate).collect(Collectors.toList()); - SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); - // 获取表格的行列表 - List rows = table.getRows(); - if (!rows.isEmpty()) { - // 图样文件代号 - setContent(rows, 1, 0, change.getStandardNumber(), false, false, false); - // 图样(文件)更改通知单号 - setContent(rows, 1, 1, change.getModifyOrderNum(), false, false, false); - // 名称 - setContent(rows, 2, 0, change.getStandardName(), false, false, false); - // 更改级别代号 - setContent(rows, 2, 1, change.getLevelCode(), false, false, false); - // 有无二维或三维图 - setContent(rows, 3, 1, change.getHas2d3dGraph(), false, false, false); - // 更改理由(依据) - setContentList(rows, 4, 0, changeReasonList); - // 更改前 - setContentList(rows, 5, 0, beforeUpdateList); - // 更改后 - setContentList(rows, 5, 1, afterUpdateList); - // 顾客确认(适用军品) - setContent(rows, 6, 0, change.getCustomerConfirmation(), true, false, false); - // 刷新文件号(三维) - setContent(rows, 6, 1, change.getRefreshFileNumber(), true, false, false); - // 关联更改项 - setContent(rows, 7, 1, change.getRelatedChanges(), true, false, false); - // 库存 - setContent(rows, 8, 1, change.getInventory(), false, true, true); - // 在制品 - setContent(rows, 9, 1, change.getWorkInProgress(), false, true, true); - // 备件 - setContent(rows, 10, 1, change.getSpareParts(), false, true, true); - // 更改标记 - setContent(rows, 11, 1, change.getChangeTag(), false, true, true); - // 处数 - setContent(rows, 11, 3, change.getTreatmentCount(), false, true, true); - // 生效日期 - setContent(rows, 11, 5, formatter.format(change.getEffectiveDate()), false, true, true); - } - } - - private void setContentList(List rows, int rowNum, int cellNum, List contentList) { - for (String content : contentList) { - if (StrUtil.isBlank(content)) { - continue; - } - setContent(rows, rowNum, cellNum, content, true, false, false); - } - } - - private void genModificationOrderNumber(ProcessEsChange change) { - String deptCode = ""; - // 找到单位代号 - String deptId = change.getMainDraftingUnit(); - SysDepart dept = sysDepartService.getById(deptId); - if (dept != null) { - String deptName = dept.getDepartName(); - List dictItems = dictService.queryEnableDictItemsByCode("es_modify_order_dept_code"); - for (DictModel dictItem : dictItems) { - if (dictItem.getText().equals(deptName)) { - deptCode = dictItem.getValue(); - break; - } - } - } - if (StrUtil.isBlank(deptCode)) { - throw new JeroBootException("生成修改单失败,找不到主起草单位的单位代号,请前往数据字典中添加后再试"); - } - // 找到年份 - Date effectiveDate = new Date(); - SimpleDateFormat formatter = new SimpleDateFormat("yyyy"); - String year = formatter.format(effectiveDate); - // 找到月份 - formatter = new SimpleDateFormat("MM"); - String month = formatter.format(effectiveDate); - // 获取顺序号 - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.like(ProcessEsChange::getModifyOrderNum, "B" + deptCode + year + month); - queryWrapper.orderByDesc(ProcessEsChange::getModifyOrderNum); - List changes = esChangeService.list(queryWrapper); - String modifyOrderNum; - if (changes.isEmpty()) { - modifyOrderNum = "B" + deptCode + year + month + "001"; - change.setModifyOrderNum(modifyOrderNum); - return; - } - String lastModifyOrderNum = changes.get(0).getModifyOrderNum().substring(9); - String newModifyOrderNum = String.format("%03d", Integer.parseInt(lastModifyOrderNum) + 1); - modifyOrderNum = "B" + deptCode + year + month + newModifyOrderNum; - change.setModifyOrderNum(modifyOrderNum); - } - - private void setSecondTableContents(XWPFTable table, ProcessEsChange change) { - List listDict = commonAPI.getDictItemAll(); - // 找到所有节点审批记录 - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(ProcessApprovalRecord::getProcessInstanceId, change.getProcessInstanceId()); - List records = approvalRecordService.list(queryWrapper); - Map> userMap = records.stream() - .collect(Collectors.groupingBy(ProcessApprovalRecord::getTaskName)); - - // 获取表格的行列表 - List rows = table.getRows(); - SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); - if (!rows.isEmpty()) { - List recordListOne = userMap.get(EsChangeTaskNameConstant.MAIN_DRAFTER_INIT); - List recordListTwo = userMap.get(EsChangeTaskNameConstant.RELATED_USER_CHECK); - List recordListThree = userMap.get(EsChangeTaskNameConstant.MAIN_DRAFTER_LEADER_APPROVAL); - List recordListFour = userMap.get(EsChangeTaskNameConstant.STANDARDIZATION_APPROVAL); - List recordListFive = userMap.get(EsChangeTaskNameConstant.MAIN_DRAFTER_LEADER_LEADER_APPROVAL); - - recordListOne = recordListOne.stream().sorted((o1, o2) -> o2.getEndTime().compareTo(o1.getEndTime())).collect(Collectors.toList()); - recordListTwo = recordListTwo.stream().sorted((o1, o2) -> o2.getEndTime().compareTo(o1.getEndTime())).collect(Collectors.toList()); - recordListThree = recordListThree.stream().sorted((o1, o2) -> o2.getEndTime().compareTo(o1.getEndTime())).collect(Collectors.toList()); - recordListFour = recordListFour.stream().sorted((o1, o2) -> o2.getEndTime().compareTo(o1.getEndTime())).collect(Collectors.toList()); - recordListFive = recordListFive.stream().sorted((o1, o2) -> o2.getEndTime().compareTo(o1.getEndTime())).collect(Collectors.toList()); - - ProcessApprovalRecord recordOne = recordListOne.get(0); - ProcessApprovalRecord recordTwo = recordListTwo.get(0); - ProcessApprovalRecord recordThree = recordListThree.get(0); - ProcessApprovalRecord recordFour = recordListFour.get(0); - ProcessApprovalRecord recordFive = recordListFive.get(0); - - String recordOneUser = excelUtils.translateDictValue("id", "CONCAT(realname, '(', username, ')')", "sys_user", recordOne.getUserId(), listDict); - String recordTwoUser = excelUtils.translateDictValue("id", "CONCAT(realname, '(', username, ')')", "sys_user", recordTwo.getUserId(), listDict); - String recordThreeUser = excelUtils.translateDictValue("id", "CONCAT(realname, '(', username, ')')", "sys_user", recordThree.getUserId(), listDict); - String recordFourUser = excelUtils.translateDictValue("id", "CONCAT(realname, '(', username, ')')", "sys_user", recordFour.getUserId(), listDict); - String recordFiveUser = excelUtils.translateDictValue("id", "CONCAT(realname, '(', username, ')')", "sys_user", recordFive.getUserId(), listDict); - // 设计 - setContent(rows, 0, 1, recordOneUser, false, true, true); - setContent(rows, 1, 1, formatter.format(recordOne.getEndTime()), false, true, true); - // 校对 - setContent(rows, 0, 3, recordTwoUser, false, true, true); - setContent(rows, 1, 3, formatter.format(recordTwo.getEndTime()), false, true, true); - // 审核 - setContent(rows, 0, 5, recordThreeUser, false, true, true); - setContent(rows, 1, 5, formatter.format(recordThree.getEndTime()), false, true, true); - // 标准化 - setContent(rows, 0, 7, recordFourUser, false, true, true); - setContent(rows, 1, 7, formatter.format(recordFour.getEndTime()), false, true, true); - // 批准 - setContent(rows, 0, 11, recordFiveUser, false, true, true); - setContent(rows, 1, 11, formatter.format(recordFive.getEndTime()), false, true, true); - } - } - - private void setContent(List rows, int rowNum, int cellNum, String content, - boolean newLine, boolean alignCenter, boolean verCenter) { - if (StrUtil.isBlank(content)) { - return; - } - XWPFTableRow row = rows.get(rowNum); - List cells = row.getTableCells(); - if (!cells.isEmpty()) { - XWPFTableCell cell = cells.get(cellNum); - XWPFParagraph paragraph; - if (newLine) { - paragraph = cell.addParagraph(); - } else { - paragraph = cell.getParagraphs().get(0); - } - XWPFRun run = paragraph.createRun(); - // 设置段落居中(水平) - if (alignCenter) { - paragraph.setAlignment(ParagraphAlignment.CENTER); - } - run.setText(content); - run.setFontSize(12); - run.setFontFamily("新宋体"); - // 设置单元格垂直居中 - if (verCenter) { - cell.setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER); - } - } - } - - private void buildMap(Map parameterMap, ProcessEsChange change) { - SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); - parameterMap.put(FieldCommon.MODULE, TableNameEnum.ENTERPRISE_STANDARDS.getValue()); - parameterMap.put(FieldCommon.ID, change.getStandardId()); - parameterMap.put(FieldCommon.STANDARD_NUMBER, change.getStandardNumber()); - parameterMap.put(FieldCommon.STANDARD_NAME, change.getStandardName()); - parameterMap.put(FieldCommon.GRADE_CLASSIFICATION, change.getGradeClassification()); - parameterMap.put(FieldCommon.AUTH_DEPT, change.getAuthDept()); - parameterMap.put(FieldCommon.STANDARD_SYSTEM, change.getStandardSystem()); - parameterMap.put(FieldCommon.STANDARD_ENGLISH_NAME, change.getStandardEnglishName()); - parameterMap.put(FieldCommon.IMPLEMENTATION_DATE, formatter.format(change.getImplementationDate())); - parameterMap.put(FieldCommon.PART_NAME, change.getPartName()); - parameterMap.put(FieldCommon.MAIN_DRAFT_USER, change.getMainDraftingUser()); - parameterMap.put(FieldCommon.MAIN_DRAFTING_UNIT, change.getMainDraftingUnit()); - parameterMap.put(FieldCommon.STANDARD_SCOPE, change.getStandardScope()); - parameterMap.put(FieldCommon.REPLACED_STANDARD, change.getSubstituteStandardNumber()); - parameterMap.put(FieldCommon.REFERENCE_STANDARD, change.getReferenceStandard()); - parameterMap.put(FieldCommon.ASSOCIATED_FILE, change.getAssociatedFile()); - parameterMap.put(FieldCommon.ACQUISITION_DEGREE, change.getAcquisitionDegree()); - parameterMap.put(FieldCommon.INTERNATIONAL_STANDARD_NUM, change.getInternationalStandardNum()); - // 是否试行 - Date releaseDate = change.getReleaseDate(); - boolean tryFlag = !change.getTryFlag().equals("0"); - String trialPeriod = change.getTrialPeriod(); - if (tryFlag) { - parameterMap.put(FieldCommon.TRY_FLAG, change.getTryFlag()); - parameterMap.put(FieldCommon.STANDARD_STATE, StandardStateEnum.TRIAL_OPERATION.getStateValue()); - parameterMap.put(FieldCommon.TRIAL_PERIOD,trialPeriod); - } - parameterMap.put(FieldCommon.RELEASE_DATE, formatter.format(releaseDate)); - } -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esChange/mapper/EsChangeOpinionMapper.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esChange/mapper/EsChangeOpinionMapper.java deleted file mode 100644 index 13cbf791..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esChange/mapper/EsChangeOpinionMapper.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.jero.modules.activiti.process.esChange.mapper; - -import com.jero.modules.activiti.process.esChange.entity.EsChangeOpinion; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; - -/** -* @author ThinkBook -* @description 针对表【process_es_change_opinion(企标修改流程意见内容列表)】的数据库操作Mapper -* @createDate 2023-12-04 15:22:36 -* @Entity com.jero.modules.activiti.process.esChange.entity.EsChangeOpinion -*/ -public interface EsChangeOpinionMapper extends BaseMapper { - -} - - - - diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esChange/mapper/ProcessEsChangeMapper.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esChange/mapper/ProcessEsChangeMapper.java deleted file mode 100644 index c6b467f9..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esChange/mapper/ProcessEsChangeMapper.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.jero.modules.activiti.process.esChange.mapper; - -import com.jero.modules.activiti.process.esChange.entity.ProcessEsChange; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; - -/** -* @author ThinkBook -* @description 针对表【process_es_change(企业标准)】的数据库操作Mapper -* @createDate 2023-10-29 21:00:13 -* @Entity com.jero.modules.activiti.process.esChange.entity.ProcessEsChange -*/ -public interface ProcessEsChangeMapper extends BaseMapper { - -} - - - - diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esChange/service/EsChangeOpinionService.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esChange/service/EsChangeOpinionService.java deleted file mode 100644 index 7cb21389..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esChange/service/EsChangeOpinionService.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.jero.modules.activiti.process.esChange.service; - -import com.jero.modules.activiti.process.esChange.entity.EsChangeOpinion; -import com.baomidou.mybatisplus.extension.service.IService; - -/** -* @author ThinkBook -* @description 针对表【process_es_change_opinion(企标修改流程意见内容列表)】的数据库操作Service -* @createDate 2023-12-04 15:22:36 -*/ -public interface EsChangeOpinionService extends IService { - -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esChange/service/ProcessEsChangeService.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esChange/service/ProcessEsChangeService.java deleted file mode 100644 index be2ba391..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esChange/service/ProcessEsChangeService.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.jero.modules.activiti.process.esChange.service; - -import com.jero.modules.activiti.process.esChange.entity.ProcessEsChange; -import com.baomidou.mybatisplus.extension.service.IService; -import com.jero.modules.activiti.process.esChange.entity.vo.ESChangeDataVO; -import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO; - -/** -* @author ThinkBook -* @description 针对表【process_es_change(企业标准)】的数据库操作Service -* @createDate 2023-10-29 21:00:13 -*/ -public interface ProcessEsChangeService extends IService { - - void startProcess(ESChangeDataVO changeData); - - String saveToDraft(ProcessInfoVO changeData); - - ESChangeDataVO getHandleData(String taskId); - - void approval(ESChangeDataVO changeData, boolean pass); - - /** - * 检查是否在流程中,如果在流程中则不允许删除 - * @param ids - */ - void delCheck(String ids); -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esChange/service/impl/EsChangeOpinionServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esChange/service/impl/EsChangeOpinionServiceImpl.java deleted file mode 100644 index 93d2e5bd..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esChange/service/impl/EsChangeOpinionServiceImpl.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.jero.modules.activiti.process.esChange.service.impl; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.jero.modules.activiti.process.esChange.entity.EsChangeOpinion; -import com.jero.modules.activiti.process.esChange.service.EsChangeOpinionService; -import com.jero.modules.activiti.process.esChange.mapper.EsChangeOpinionMapper; -import org.springframework.stereotype.Service; - -/** -* @author ThinkBook -* @description 针对表【process_es_change_opinion(企标修改流程意见内容列表)】的数据库操作Service实现 -* @createDate 2023-12-04 15:22:36 -*/ -@Service -public class EsChangeOpinionServiceImpl extends ServiceImpl - implements EsChangeOpinionService{ - -} - - - - diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esChange/service/impl/ProcessEsChangeServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esChange/service/impl/ProcessEsChangeServiceImpl.java deleted file mode 100644 index 08b02f19..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esChange/service/impl/ProcessEsChangeServiceImpl.java +++ /dev/null @@ -1,382 +0,0 @@ -package com.jero.modules.activiti.process.esChange.service.impl; - -import cn.hutool.core.util.StrUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.jero.common.api.vo.ResultCommon; -import com.jero.common.aspect.TranslationAspect; -import com.jero.common.constant.enums.YesOrNoEnum; -import com.jero.common.exception.JeroBootException; -import com.jero.common.system.vo.DictModel; -import com.jero.modules.activiti.entity.ProcessAll; -import com.jero.modules.activiti.entity.ProcessApprovalRecord; -import com.jero.modules.activiti.enums.ProcessStatusEnum; -import com.jero.modules.activiti.enums.ProcessTypeEnum; -import com.jero.modules.activiti.process.common.entity.CommonVO; -import com.jero.modules.activiti.process.common.entity.CounterSignNodeNameConstants; -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.enums.StandardStateEnum; -import com.jero.modules.activiti.process.common.service.ActFlowCommonService; -import com.jero.modules.activiti.process.esArchive.entity.ProcessEsArchive; -import com.jero.modules.activiti.process.esArchive.entity.vo.ESArchiveDataVO; -import com.jero.modules.activiti.process.esChange.entity.EsChangeOpinion; -import com.jero.modules.activiti.process.esChange.entity.ProcessEsChange; -import com.jero.modules.activiti.process.esChange.entity.vo.ESChangeDataVO; -import com.jero.modules.activiti.process.esChange.service.EsChangeOpinionService; -import com.jero.modules.activiti.process.esChange.service.ProcessEsChangeService; -import com.jero.modules.activiti.process.esChange.mapper.ProcessEsChangeMapper; -import com.jero.modules.activiti.process.fb.dto.BasicProcessInfoDTO; -import com.jero.modules.activiti.process.fb.service.IProcessHandleService; -import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO; -import com.jero.modules.activiti.service.ProcessAllService; -import com.jero.modules.activiti.service.ProcessNodeLinkService; -import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard; -import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService; -import com.jero.modules.onlyoffice.service.IBusProcessModelHisService; -import com.jero.modules.oss.entity.OSSFile; -import com.jero.modules.sys.utils.UserUtils; -import com.jero.modules.system.entity.SysDepart; -import com.jero.modules.system.service.ISysDepartService; -import com.jero.modules.system.service.ISysDictService; -import com.jero.modules.system.service.ISysUserDepartService; -import lombok.extern.slf4j.Slf4j; -import org.activiti.engine.RuntimeService; -import org.activiti.engine.TaskService; -import org.activiti.engine.runtime.ProcessInstance; -import org.activiti.engine.task.Task; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import javax.annotation.Resource; -import java.util.*; -import java.util.stream.Collectors; - -import static com.jero.modules.activiti.process.esChange.entity.ESChangeTaskNodeIdConstant.MAIN_DRAFT_USER_START; - -/** - * @author ThinkBook - * @description 针对表【process_es_change(企业标准)】的数据库操作Service实现 - * @createDate 2023-10-29 21:00:13 - */ -@Slf4j -@Transactional(rollbackFor = JeroBootException.class) -@Service -public class ProcessEsChangeServiceImpl extends ServiceImpl - implements ProcessEsChangeService { - - @Resource - private ActFlowCommonService actFlowCommonService; - - @Resource - private ProcessNodeLinkService processNodeLinkService; - - @Resource - private RuntimeService runtimeService; - - @Resource - private EsChangeOpinionService esChangeOpinionService; - - @Resource - private ISysUserDepartService userDepartService; - - @Resource - private IProcessHandleService processHandleService; - - @Resource - private TaskService taskService; - - @Resource - private TranslationAspect translationAspect; - - @Resource - private ProcessAllService processAllService; - - @Resource - private IBusProcessModelHisService busProcessModelHisService; - - @Resource - private ISysDepartService sysDepartService; - - @Resource - private ISysDictService dictService; - - - @Override - public void startProcess(ESChangeDataVO changeData) { - // 执行流程发起前的操作 - this.startRunTask(changeData); - // 流程Key - String processDefinitionKey = ProcessType.ES_CHANGE.getProcessKey(); - // 当前用户Id - String userId = UserUtils.getUserId(); - // 业务数据 - ProcessEsChange esChange = changeData.getData(); - List opinionList = esChange.getList(); - // 通用数据 - CommonVO common = changeData.getCommon(); - // 人员数据 - Map variables = changeData.getFlowUser(); - // 设置流程变量 - Map actVariables = this.setVariables(variables); - // 删除草稿 - actFlowCommonService.getExistDraftAndRemove(common, ProcessTypeEnum.ES_CHANGE); - // 启动流程 - ProcessInstance processInstance = actFlowCommonService.startProcess(processDefinitionKey, actVariables); - // 获取流程实例ID - String processDefinitionId = processInstance.getProcessDefinitionId(); - String processInstanceId = processInstance.getId(); - // 手动设置所有流程变量 - actFlowCommonService.setProcessVariables(processInstanceId, actVariables); - // 设置流程实例Id - esChange.setProcessInstanceId(processInstanceId); - // 设置替换文件id - OSSFile lastDocFileByStandardNo = busProcessModelHisService.findLastDocFileByStandardNo(esChange.getStandardNumber()); - if (lastDocFileByStandardNo != null) { - esChange.setReplaceFileId(lastDocFileByStandardNo.getId()); - } else { - esChange.setReplaceFileId(null); - } - // 保存到业务流程表 - saveOrUpdate(esChange); - if (opinionList != null && !opinionList.isEmpty()) { - String deptId = userDepartService.getFirstDeptIdByUserId(userId); - // 遍历 opinionList,设置 opinion 的 BusinessId - opinionList.forEach(opinion -> { - opinion.setBusinessId(esChange.getId()); - if (StrUtil.isBlank(opinion.getCreateUser())) opinion.setCreateUser(userId); - if (StrUtil.isBlank(opinion.getCreateUnit())) opinion.setCreateUnit(deptId); - }); - esChangeOpinionService.saveOrUpdateBatch(opinionList); - } - // 保存选人信息 - processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, this.getUserMap(variables)); - // 获取第一个任务的taskId - String taskId = actFlowCommonService.getFirstTaskId(processInstanceId, userId, processDefinitionId); - // 手动翻译 - String jsonData = translationAspect.manualParseDictText(this.getHandleData(taskId), this.getUserMap(variables)); - // 强制撤回 - common.setProcessInstanceId(processInstanceId); - actFlowCommonService.saveFirstNodeDraft(common, ProcessTypeEnum.ES_CHANGE, jsonData); - // 更新审批表为完成,填充数据 - actFlowCommonService.updateApprovalInfo(common, taskId, true); - // 自动完成第一个任务 - actFlowCommonService.completeTask(taskId, userId); - // 根据流程实例id更新流程总表 - String prcName = common.getPrcName(); - String prcMes = common.getPrcMes(); - Date dueTime = common.getDueTime(); - Integer prcType = ProcessTypeEnum.ES_CHANGE.getValue(); - actFlowCommonService.updateProcessAll(processInstanceId, userId, prcName, prcMes, prcType, dueTime); - } - - public Map setVariables(Map flowUser) { - Map actVariables = new HashMap<>(); - String relatedUsers = (String) flowUser.get("relatedUserList"); - // 将relatedUserList从逗号拼接转为List - List relatedUserList = StrUtil.split(relatedUsers, ','); - actFlowCommonService.putIfNotNull(actVariables, "relatedUserList", relatedUserList); - for (Map.Entry entry : flowUser.entrySet()) { - String key = entry.getKey(); - if (!key.equals("relatedUserList")) { - actVariables.put(key, entry.getValue()); - } - } - actVariables.put("pass", true); - return actVariables; - } - - private Map getUserMap(Map variables) { - variables.remove("pass"); - return variables; - } - - @Override - public String saveToDraft(ProcessInfoVO processInfoVO) { - ESChangeDataVO businessInfoDTO = processInfoVO.getBusinessInfoDTO(); - if (businessInfoDTO != null) { - ProcessEsChange data = businessInfoDTO.getData(); - if (data != null) { - processInfoVO.setBusinessId(data.getId()); - } - } - - // 流程信息 - BasicProcessInfoDTO basicProcessInfoDTO = processInfoVO.getBasicProcessInfoDTO(); - basicProcessInfoDTO.setProcessType(ProcessTypeEnum.ES_CHANGE.getValue()); // 流程类型 - - return processHandleService.saveToDraft(processInfoVO); - } - - public void startRunTask(ESChangeDataVO changeData) { - // 如果标准当前状态是废止或封存,不能发起变更流程 - ProcessEsChange data = changeData.getData(); - if (data != null) { - actFlowCommonService.checkStandardState(data.getStandardId()); - // 判断主起草部门是否有对应的修改单代码 - if (StrUtil.isBlank(data.getMainDraftingUnit())) { - throw new JeroBootException("主起草单位不能为空"); - } - this.validDepartCode(changeData.getData().getMainDraftingUnit()); - } - } - - - public void validDepartCode(String deptId) { - String deptCode = ""; - // 找到单位代号 - SysDepart dept = sysDepartService.getById(deptId); - if (dept != null) { - String deptName = dept.getDepartName(); - List dictItems = dictService.queryEnableDictItemsByCode("es_modify_order_dept_code"); - for (DictModel dictItem : dictItems) { - if (dictItem.getText().equals(deptName)) { - deptCode = dictItem.getValue(); - break; - } - } - } - if (StrUtil.isBlank(deptCode)) { - throw new JeroBootException("发起失败,找不到主起草单位对应的单位代号,请前往数据字典中添加后再试"); - } - } - - @Override - public ESChangeDataVO getHandleData(String taskId) { - if (!actFlowCommonService.taskExists(taskId)) { - throw new JeroBootException(ResultCommon.TASK_NOT_EXISTS); - } - ESChangeDataVO changeData = new ESChangeDataVO(); - // 使用流程引擎根据taskId找到流程实例Id - String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId); - changeData.setCommon(actFlowCommonService.getHandleCommon(taskId)); - // 获取流程实例数据 - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.eq(ProcessEsChange::getProcessInstanceId, processInstanceId); - lambdaQueryWrapper.eq(ProcessEsChange::getDelFlag, YesOrNoEnum.NO.getValue()); - ProcessEsChange data = getOne(lambdaQueryWrapper); - // 获取修改意见列表 - LambdaQueryWrapper opinionLambdaQueryWrapper = new LambdaQueryWrapper<>(); - opinionLambdaQueryWrapper.eq(EsChangeOpinion::getBusinessId, data.getId()); - List opinionList = esChangeOpinionService.list(opinionLambdaQueryWrapper); - data.setList(opinionList); - changeData.setData(data); - return changeData; - } - - @Override - public void approval(ESChangeDataVO changeData, boolean pass) { - String userId = UserUtils.getUserId(); - CommonVO commonVO = changeData.getCommon(); - String taskId = commonVO.getTaskId(); - if (StrUtil.isBlank(taskId) || !actFlowCommonService.taskExists(taskId)) { - throw new JeroBootException(ResultCommon.TASK_NOT_EXISTS); - } - Map flowUser = changeData.getFlowUser(); - // 获取流程实例ID - String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId); - // 获取流程实例对象 - ProcessInstance processInstance = runtimeService.createProcessInstanceQuery() - .processInstanceId(processInstanceId).singleResult(); - // 获取流程定义ID - String processDefinitionId = processInstance.getProcessDefinitionId(); - ProcessEsChange data = changeData.getData(); - if (data != null) { - updateById(data); - // 根据流程实例id更新流程总表 - String prcName = commonVO.getPrcName(); - String prcMes = commonVO.getPrcMes(); - Date dueTime = commonVO.getDueTime(); - Integer prcType = ProcessTypeEnum.ES_CHANGE.getValue(); - actFlowCommonService.updateProcessAll(processInstanceId, userId, prcName, prcMes, prcType, dueTime); - // 第一个节点更新修改意见 - ProcessApprovalRecord record = actFlowCommonService.getNodeIdByTaskId(taskId); - String xmlNodeId = record.getNodeId(); - if (xmlNodeId.equals(MAIN_DRAFT_USER_START)) { - // 判断主起草单位 - actFlowCommonService.checkStandardState(data.getStandardId()); - // 判断主起草部门是否有对应的修改单代码 - if (StrUtil.isBlank(data.getMainDraftingUnit())) { - throw new JeroBootException("主起草单位不能为空"); - } - this.validDepartCode(changeData.getData().getMainDraftingUnit()); - // 清理原来的修改意见 - LambdaQueryWrapper esChangeOpinionLambdaQueryWrapper = new LambdaQueryWrapper<>(); - esChangeOpinionLambdaQueryWrapper.eq(EsChangeOpinion::getBusinessId, data.getId()); - esChangeOpinionService.remove(esChangeOpinionLambdaQueryWrapper); - // 新增修改意见 - List opinionList = data.getList(); - if (opinionList != null && !opinionList.isEmpty()) { - String deptId = userDepartService.getFirstDeptIdByUserId(userId); - // 遍历 opinionList,设置 opinion 的 BusinessId - opinionList.forEach(opinion -> { - opinion.setBusinessId(data.getId()); - if (StrUtil.isBlank(opinion.getCreateUser())) opinion.setCreateUser(userId); - if (StrUtil.isBlank(opinion.getCreateUnit())) opinion.setCreateUnit(deptId); - }); - esChangeOpinionService.saveOrUpdateBatch(opinionList); - } - } - } - if (flowUser != null) { - Map variables = setVariables(flowUser); - Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); - // 获取执行id - String executionId = task.getExecutionId(); - // 设置流程变量 - runtimeService.setVariables(executionId, variables); - processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, this.getUserMap(flowUser)); - } - - // 设置流程变量 - runtimeService.setVariable(processInstanceId, "pass", pass); - // 更新审批表为完成,填充数据 - actFlowCommonService.updateApprovalInfo(commonVO, taskId, pass); - // 审批节点 - actFlowCommonService.completeTask(taskId, userId); - // 删除草稿 - actFlowCommonService.removeDraft(commonVO); - // 如果是会签节点,驳回后要将其余节点recode设置为 未处理 状态 - if (!pass) { - actFlowCommonService.updateOtherCountersignRecodeStatus(processInstanceId, CounterSignNodeNameConstants.ES_CHANGE_COUNTER_SIGN_NODE_NAME); - } - } - - @Override - public void delCheck(String ids) { - String[] idsList = ids.split(","); - // 找到所有进行中的企标修改流程 - LambdaQueryWrapper processAllWrapper = new LambdaQueryWrapper<>(); - processAllWrapper.eq(ProcessAll::getPrcType, ProcessTypeEnum.ES_CHANGE.getValue()); - processAllWrapper.eq(ProcessAll::getPrcStatus, ProcessStatusEnum.INCOMPLETE.getValue()); - List processAllList = processAllService.list(processAllWrapper); - if (processAllList.isEmpty()) { - return; - } - // 获取所有流程实例ID - List processInstanceIdList = new ArrayList<>(); - for (ProcessAll processAll : processAllList) { - processInstanceIdList.add(processAll.getProcessInstanceId()); - } - // 根据所有流程实例Id找到相应的企标修改流程 - LambdaQueryWrapper processEsChangeWrapper = new LambdaQueryWrapper<>(); - processEsChangeWrapper.in(ProcessEsChange::getProcessInstanceId, processInstanceIdList); - List processEsChangeList = list(processEsChangeWrapper); - Map> processEsChangeMap = processEsChangeList.stream() - .filter(e -> e.getStandardId() != null) - .collect(Collectors.groupingBy(ProcessEsChange::getStandardId)); - // 判断是否有进行中的企标修改流程 - for (String id : idsList) { - if (processEsChangeMap.containsKey(id)) { - List processEsChanges = processEsChangeMap.get(id); - throw new JeroBootException("标准编号为:" + processEsChanges.get(0).getStandardNumber() + "已在企标更改流程进行中,不可删除!"); - } - } - - } - -} - - - - diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esEnable/controller/ESEnableController.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esEnable/controller/ESEnableController.java deleted file mode 100644 index 015f0d06..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esEnable/controller/ESEnableController.java +++ /dev/null @@ -1,135 +0,0 @@ -package com.jero.modules.activiti.process.esEnable.controller; - -import com.jero.common.api.vo.Result; -import com.jero.common.aspect.annotation.AutoLog; -import com.jero.common.aspect.annotation.Translation; -import com.jero.modules.activiti.enums.ProcessTypeEnum; -import com.jero.modules.activiti.process.common.entity.ProcessDraft; -import com.jero.modules.activiti.process.common.entity.TransferVO; -import com.jero.modules.activiti.process.common.service.ActFlowCommonService; -import com.jero.modules.activiti.process.esArchive.entity.vo.ESArchiveDataVO; -import com.jero.modules.activiti.process.esEnable.entity.vo.ESEnableDataVO; -import com.jero.modules.activiti.process.esEnable.service.ProcessEsEnableService; -import com.jero.modules.activiti.process.fb.service.IProcessHandleService; -import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import io.swagger.annotations.ApiParam; -import lombok.extern.slf4j.Slf4j; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import javax.annotation.Resource; - - -/** - * @author: Mzaxd - * @Date: 2023/10/18 10:44 - */ -@Slf4j -@RestController -@Api(tags = "企标启用发起流程") -@RequestMapping("/process/es/enable") -public class ESEnableController { - - @Resource - private ProcessEsEnableService enableService; - - @Resource - private IProcessHandleService processHandleService; - - @Resource - private ActFlowCommonService actFlowCommonService; - - /** - * 新增立项变更申请 - * - * @param enableData - */ - @AutoLog(value = "企标启用发起流程-发起流程") - @ApiOperation(value="企标启用发起流程-发起流程", notes="企标启用发起流程-发起流程") - @PostMapping("/start") - public Result startProcess(@RequestBody ESEnableDataVO enableData) { - enableService.startProcess(enableData); - return Result.OK(); - } - - /** - * 保存到草稿 - * @param enableData - */ - @AutoLog(value = "企标启用发起流程-保存") - @ApiOperation(value="企标启用发起流程-保存", notes="企标启用发起流程-保存") - @PostMapping("/save") - public Result save(@Validated @RequestBody ProcessInfoVO processInfoVO) { - enableService.saveToDraft(processInfoVO); - return Result.OK(); - } - - /** - * 草稿办理 - * @param draftId - */ - @AutoLog(value = "企标封存流程-草稿办理") - @ApiOperation(value="企标封存流程-草稿办理", notes="企标封存流程-草稿办理") - @GetMapping("/draftHandle") - @Translation - public Result draftHandle(@RequestParam("draftId") @ApiParam("草稿Id") String draftId) { - return Result.OK(actFlowCommonService.getExistDraft(draftId, ProcessTypeEnum.ES_ENABLE)); - } - - /** - * 保存到待办 - * @param taskId - */ - @AutoLog(value = "企标启用发起流程-办理") - @ApiOperation(value="企标启用发起流程-办理", notes="企标启用发起流程-办理") - @GetMapping("/handle/{taskId}") - @Translation - public Result handle(@PathVariable("taskId") String taskId) { - ProcessDraft draft = actFlowCommonService.getExistDraftByTaskId(taskId, ProcessTypeEnum.ES_ENABLE); - if (draft != null) { - return Result.OK(draft); - } - return Result.OK(enableService.getHandleData(taskId)); - } - - /** - * 同意 - * - * @param enableData - */ - @AutoLog(value = "企标启用发起流程-同意") - @ApiOperation(value="企标启用发起流程-同意", notes="企标启用发起流程-同意") - @PostMapping("/agree") - public Result agree(@RequestBody ESEnableDataVO enableData) { - enableService.approval(enableData, true); - return Result.OK(); - } - - /** - * 驳回 - * - * @param enableData - */ - @AutoLog(value = "企标启用发起流程-驳回") - @ApiOperation(value="企标启用发起流程-驳回", notes="企标启用发起流程-驳回") - @PostMapping("/reject") - public Result reject(@RequestBody ESEnableDataVO enableData) { - enableService.approval(enableData, false); - return Result.OK(); - } - - /** - * 转办 - * - */ - @AutoLog(value = "企标启用发起流程-转办") - @ApiOperation(value="企标启用发起流程-转办", notes="企标启用发起流程-转办") - @PostMapping(value = "/transfer") - public Result transfer(@RequestBody TransferVO transferVO) { - processHandleService.transfer(transferVO.getTaskId(), transferVO.getUserId()); - return Result.OK(); - } - -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esEnable/entity/ProcessEsEnable.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esEnable/entity/ProcessEsEnable.java deleted file mode 100644 index 744ec3ce..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esEnable/entity/ProcessEsEnable.java +++ /dev/null @@ -1,138 +0,0 @@ -package com.jero.modules.activiti.process.esEnable.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import java.io.Serializable; -import java.util.Date; - -import com.fasterxml.jackson.annotation.JsonFormat; -import com.jero.common.aspect.annotation.Dict; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import org.springframework.format.annotation.DateTimeFormat; - -/** - * 企业标准 - * @TableName process_es_enable - */ -@TableName(value ="process_es_enable") -@Data -public class ProcessEsEnable implements Serializable { - /** - * 主键ID - */ - @TableId(type = IdType.ASSIGN_ID) - @ApiModelProperty(value = "主键ID") - private String id; - - /** - * 创建人 - */ - @ApiModelProperty(value = "创建人") - private String createBy; - - /** - * 创建时间 - */ - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") - @DateTimeFormat(pattern="yyyy-MM-dd") - @ApiModelProperty(value = "创建时间") - private Date createTime; - - /** - * 更新人 - */ - @ApiModelProperty(value = "更新人") - private String updateBy; - - /** - * 更新时间 - */ - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") - @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") - @ApiModelProperty(value = "更新时间") - private Date updateTime; - - /** - * 所属部门 - */ - @ApiModelProperty(value = "所属部门") - @Dict(dictTable = "sys_depart", dicCode = "id", dicText = "depart_name") - private String orgCode; - - /** - * 0表示未删除,1表示删除 - */ - @ApiModelProperty(value = "0表示未删除,1表示删除") - private Integer delFlag; - - /** - * 流程实例Id - */ - @ApiModelProperty(value = "流程实例Id") - private String processInstanceId; - - /** - * 企标编号 - */ - @ApiModelProperty(value = "企标编号") - private String standardNumber; - - /** - * 企标名称 - */ - @ApiModelProperty(value = "企标名称") - private String standardName; - - /** - * 企标英文名称 - */ - @ApiModelProperty(value = "企标英文名称") - private String englishName; - - /** - * 企标类型 - */ - @Dict(dicCode = "esp_standard_type") - @ApiModelProperty(value = "企标类型") - private String standardCategory; - - /** - * 代替标准号 - */ - @ApiModelProperty(value = "代替标准号") - private String substituteStandardNumber; - - /** - * 被代替标准号 - */ - @ApiModelProperty(value = "被代替标准号") - private String replacedByStandardNumber; - - /** - * 发布日期 - */ - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") - @DateTimeFormat(pattern="yyyy-MM-dd") - @ApiModelProperty(value = "发布日期") - private Date releaseDate; - - /** - * 实施日期 - */ - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") - @DateTimeFormat(pattern="yyyy-MM-dd") - @ApiModelProperty(value = "实施日期") - private Date implementationDate; - - /** - * 启用理由 - */ - @ApiModelProperty(value = "启用理由") - private String archiveReason; - - @TableField(exist = false) - private static final long serialVersionUID = 1L; -} \ No newline at end of file diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esEnable/entity/vo/ESEnableDataVO.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esEnable/entity/vo/ESEnableDataVO.java deleted file mode 100644 index 9fc70402..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esEnable/entity/vo/ESEnableDataVO.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.jero.modules.activiti.process.esEnable.entity.vo; - -import com.fasterxml.jackson.annotation.JsonProperty; -import com.jero.modules.activiti.process.common.entity.CommonVO; -import com.jero.modules.activiti.process.esEnable.entity.ProcessEsEnable; -import com.jero.modules.activiti.process.esInitChange.entity.ProcessEsInitChange; -import lombok.Data; - -import java.util.List; -import java.util.Map; - -/** - * @author: Mzaxd - * @Date: 2023/10/26 8:13 - */ -@Data -public class ESEnableDataVO { - - @JsonProperty("common") - CommonVO common; - - @JsonProperty("data") - ProcessEsEnable data; - - @JsonProperty("flowUser") - Map flowUser; -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esEnable/listener/ProcessESEnableEndListener.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esEnable/listener/ProcessESEnableEndListener.java deleted file mode 100644 index 29bf087f..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esEnable/listener/ProcessESEnableEndListener.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.jero.modules.activiti.process.esEnable.listener; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import com.jero.modules.activiti.process.common.enums.StandardStateEnum; -import com.jero.modules.activiti.process.esEnable.entity.ProcessEsEnable; -import com.jero.modules.activiti.process.esEnable.service.ProcessEsEnableService; -import com.jero.modules.activiti.process.esInitChange.entity.ProcessEsInitChange; -import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPApplicationCategoryEnum; -import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPChangeType; -import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPProjectType; -import com.jero.modules.activiti.process.esInitChange.service.ProcessEsInitChangeService; -import com.jero.modules.activiti.process.esRecheck.entity.ProcessEsRecheck; -import com.jero.modules.laws.enterprise.entity.EnterpriseStandardPlan; -import com.jero.modules.laws.enterprise.service.EnterpriseStandardPlanService; -import com.jero.modules.laws.enterprise.util.BeanCopyUtils; -import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard; -import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService; -import lombok.extern.slf4j.Slf4j; -import org.activiti.engine.delegate.DelegateExecution; -import org.activiti.engine.delegate.ExecutionListener; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; -import java.util.List; - -import static com.jero.modules.activiti.process.esRecheck.entity.ProcessRecheckConstants.*; -import static com.jero.modules.activiti.process.esRecheck.entity.ProcessRecheckConstants.RECHECK_ARCHIVE; - -/** - * @author: Mzaxd - * @Date: 2023/10/10 14:14 - */ -@Slf4j -@Component -public class ProcessESEnableEndListener implements ExecutionListener { - - @Resource - private ProcessEsEnableService esEnableService; - - @Resource - private ILawsEnterpriseStandardService esService; - - /** - * 企标立项变更流程结束之后需要把数据存入企标计划数据库 然后自动发起企标制修订流程 - * @param delegateExecution - */ - @Override - public void notify(DelegateExecution delegateExecution) { - log.info("企标封存启用流程结束 监听执行器开始执行"); - // 找到流程实例Id - String processInstanceId = delegateExecution.getProcessInstanceId(); - LambdaQueryWrapper enableLambdaQueryWrapper = new LambdaQueryWrapper<>(); - enableLambdaQueryWrapper.eq(ProcessEsEnable::getProcessInstanceId, processInstanceId); - ProcessEsEnable enable = esEnableService.getOne(enableLambdaQueryWrapper); - String standNo = enable.getStandardNumber(); - log.info("企标封存启用监听执行器开始执行,企标编号为:{}", standNo); - esService.update(new LambdaUpdateWrapper() - .set(LawsEnterpriseStandard::getStandardState, StandardStateEnum.CURRENTLY_EFFECTIVE.getStateValue()) - .eq(LawsEnterpriseStandard::getStandardNumber, standNo)); - log.info("企标封存启用流程监听执行器执行结束"); - } -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esEnable/mapper/ProcessEsEnableMapper.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esEnable/mapper/ProcessEsEnableMapper.java deleted file mode 100644 index 5d59d35b..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esEnable/mapper/ProcessEsEnableMapper.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.jero.modules.activiti.process.esEnable.mapper; - -import com.jero.modules.activiti.process.esEnable.entity.ProcessEsEnable; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; - -/** -* @author ThinkBook -* @description 针对表【process_es_enable(企业标准)】的数据库操作Mapper -* @createDate 2023-10-29 21:00:26 -* @Entity com.jero.modules.activiti.process.esEnable.entity.ProcessEsEnable -*/ -public interface ProcessEsEnableMapper extends BaseMapper { - -} - - - - diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esEnable/mapper/xml/ProcessEsEnableMapper.xml b/laws-modules/src/main/java/com/jero/modules/activiti/process/esEnable/mapper/xml/ProcessEsEnableMapper.xml deleted file mode 100644 index 3aeea1e7..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esEnable/mapper/xml/ProcessEsEnableMapper.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - id,create_by,create_time, - update_by,update_time,org_code, - del_flag,process_instance_id,standard_number, - standard_name,english_name,standard_category, - substitute_standard_number,replaced_by_standard_number,release_date, - implementation_date,archive_reason - - diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esEnable/service/ProcessEsEnableService.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esEnable/service/ProcessEsEnableService.java deleted file mode 100644 index fb0fc3bb..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esEnable/service/ProcessEsEnableService.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.jero.modules.activiti.process.esEnable.service; - -import com.jero.modules.activiti.process.esEnable.entity.ProcessEsEnable; -import com.baomidou.mybatisplus.extension.service.IService; -import com.jero.modules.activiti.process.esEnable.entity.vo.ESEnableDataVO; -import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO; - -/** -* @author ThinkBook -* @description 针对表【process_es_enable(企业标准)】的数据库操作Service -* @createDate 2023-10-29 21:00:26 -*/ -public interface ProcessEsEnableService extends IService { - - void startProcess(ESEnableDataVO enableData); - - void saveToDraft(ProcessInfoVO enableData); - - ESEnableDataVO getHandleData(String taskId); - - void approval(ESEnableDataVO enableData, boolean pass); - -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esEnable/service/impl/ProcessEsEnableServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esEnable/service/impl/ProcessEsEnableServiceImpl.java deleted file mode 100644 index b42a8f88..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esEnable/service/impl/ProcessEsEnableServiceImpl.java +++ /dev/null @@ -1,256 +0,0 @@ -package com.jero.modules.activiti.process.esEnable.service.impl; - -import cn.hutool.core.util.StrUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.jero.common.api.vo.ResultCommon; -import com.jero.common.aspect.TranslationAspect; -import com.jero.common.constant.enums.YesOrNoEnum; -import com.jero.common.exception.JeroBootException; -import com.jero.modules.activiti.enums.ProcessTypeEnum; -import com.jero.modules.activiti.process.common.entity.CommonVO; -import com.jero.modules.activiti.process.common.entity.CounterSignNodeNameConstants; -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.enums.StandardStateEnum; -import com.jero.modules.activiti.process.common.service.ActFlowCommonService; -import com.jero.modules.activiti.process.esArchive.entity.ProcessEsArchive; -import com.jero.modules.activiti.process.esArchive.entity.vo.ESArchiveDataVO; -import com.jero.modules.activiti.process.esEnable.entity.ProcessEsEnable; -import com.jero.modules.activiti.process.esEnable.entity.vo.ESEnableDataVO; -import com.jero.modules.activiti.process.esEnable.service.ProcessEsEnableService; -import com.jero.modules.activiti.process.esEnable.mapper.ProcessEsEnableMapper; -import com.jero.modules.activiti.process.fb.dto.BasicProcessInfoDTO; -import com.jero.modules.activiti.process.fb.service.IProcessHandleService; -import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO; -import com.jero.modules.activiti.service.ProcessNodeLinkService; -import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard; -import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService; -import com.jero.modules.sys.utils.UserUtils; -import lombok.extern.slf4j.Slf4j; -import org.activiti.engine.RuntimeService; -import org.activiti.engine.TaskService; -import org.activiti.engine.runtime.ProcessInstance; -import org.activiti.engine.task.Task; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import javax.annotation.Resource; -import java.util.*; - -/** -* @author ThinkBook -* @description 针对表【process_es_enable(企业标准)】的数据库操作Service实现 -* @createDate 2023-10-29 21:00:26 -*/ -@Slf4j -@Transactional(rollbackFor = JeroBootException.class) -@Service -public class ProcessEsEnableServiceImpl extends ServiceImpl - implements ProcessEsEnableService{ - - @Resource - private ActFlowCommonService actFlowCommonService; - - @Resource - private ProcessNodeLinkService processNodeLinkService; - - @Resource - private RuntimeService runtimeService; - - @Resource - private IProcessHandleService processHandleService; - - @Resource - private TaskService taskService; - - @Resource - private ILawsEnterpriseStandardService esService; - - @Resource - private TranslationAspect translationAspect; - - @Override - public void startProcess(ESEnableDataVO enableData) { - // 执行流程发起前的操作 - this.startRunTask(enableData); - // 流程Key - String processDefinitionKey = ProcessType.ES_ENABLE.getProcessKey(); - // 当前用户Id - String userId = UserUtils.getUserId(); - // 业务数据 - ProcessEsEnable esEnable = enableData.getData(); - // 通用数据 - CommonVO common = enableData.getCommon(); - // 人员数据 - Map variables = enableData.getFlowUser(); - // 设置流程变量 - Map actVariables = this.setVariables(variables); - // 删除草稿 - actFlowCommonService.getExistDraftAndRemove(common, ProcessTypeEnum.ES_ENABLE); - // 启动流程 - ProcessInstance processInstance = actFlowCommonService.startProcess(processDefinitionKey, actVariables); - // 获取流程实例ID - String processDefinitionId = processInstance.getProcessDefinitionId(); - String processInstanceId = processInstance.getId(); - // 手动设置所有流程变量 - actFlowCommonService.setProcessVariables(processInstanceId, actVariables); - // 设置流程实例Id - esEnable.setProcessInstanceId(processInstanceId); - // 保存到业务流程表 - saveOrUpdate(esEnable); - // 保存选人信息 - processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, this.getUserMap(variables)); - // 获取第一个任务的taskId - String taskId = actFlowCommonService.getFirstTaskId(processInstanceId, userId, processDefinitionId); - // 手动翻译 - String jsonData = translationAspect.manualParseDictText(this.getHandleData(taskId), this.getUserMap(variables)); - // 强制撤回 - common.setProcessInstanceId(processInstanceId); - actFlowCommonService.saveFirstNodeDraft(common, ProcessTypeEnum.ES_ENABLE, jsonData); - // 更新审批表为完成,填充数据 - actFlowCommonService.updateApprovalInfo(common, taskId, true); - // 自动完成第一个任务 - actFlowCommonService.completeTask(taskId, userId); - // 根据流程实例id更新流程总表 - String prcName = common.getPrcName(); - String prcMes = common.getPrcMes(); - Date dueTime = common.getDueTime(); - Integer prcType = ProcessTypeEnum.ES_ENABLE.getValue(); - actFlowCommonService.updateProcessAll(processInstanceId, userId, prcName, prcMes, prcType, dueTime); - } - - public Map setVariables(Map flowUser) { - Map actVariables = new HashMap<>(); - if (flowUser.get("relatedUserList") == null || StrUtil.isBlank((String)flowUser.get("relatedUserList"))) { - actFlowCommonService.putIfNotNull(actVariables, "countersign", false); - } else { - actFlowCommonService.putIfNotNull(actVariables, "countersign", true); - String relatedUsers = (String) flowUser.get("relatedUserList"); - // 将relatedUserList从逗号拼接转为List - List relatedUserList = StrUtil.split(relatedUsers, ','); - actFlowCommonService.putIfNotNull(actVariables, "relatedUserList", relatedUserList); - } - for (Map.Entry entry : flowUser.entrySet()) { - String key = entry.getKey(); - if (!key.equals("relatedUserList")) { - actVariables.put(key, entry.getValue()); - } - } - return actVariables; - } - - private Map getUserMap(Map variables) { - variables.remove("pass"); - variables.remove("countersign"); - return variables; - } - - @Override - public void saveToDraft(ProcessInfoVO processInfoVO) { - ESEnableDataVO businessInfoDTO = processInfoVO.getBusinessInfoDTO(); - if (businessInfoDTO != null) { - ProcessEsEnable data = businessInfoDTO.getData(); - if (data != null) { - processInfoVO.setBusinessId(data.getId()); - } - } - - // 流程信息 - BasicProcessInfoDTO basicProcessInfoDTO = processInfoVO.getBasicProcessInfoDTO(); - basicProcessInfoDTO.setProcessType(ProcessTypeEnum.ES_ENABLE.getValue()); // 流程类型 - - processHandleService.saveToDraft(processInfoVO); - } - - public void startRunTask(ESEnableDataVO enableData) { - // do nothing now - } - - @Override - public ESEnableDataVO getHandleData(String taskId) { - if (!actFlowCommonService.taskExists(taskId)) { - throw new JeroBootException(ResultCommon.TASK_NOT_EXISTS); - } - ESEnableDataVO enableData = new ESEnableDataVO(); - // 使用流程引擎根据taskId找到流程实例Id - String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId); - enableData.setCommon(actFlowCommonService.getHandleCommon(taskId)); - // 获取流程实例数据 - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.eq(ProcessEsEnable::getProcessInstanceId, processInstanceId); - lambdaQueryWrapper.eq(ProcessEsEnable::getDelFlag, YesOrNoEnum.NO.getValue()); - ProcessEsEnable data = getOne(lambdaQueryWrapper); - enableData.setData(data); - return enableData; - } - - @Override - public void approval(ESEnableDataVO enableData, boolean pass) { - String userId = UserUtils.getUserId(); - CommonVO commonVO = enableData.getCommon(); - String taskId = commonVO.getTaskId(); - if (StrUtil.isBlank(taskId) || !actFlowCommonService.taskExists(taskId)) { - throw new JeroBootException(ResultCommon.TASK_NOT_EXISTS); - } - Map flowUser = enableData.getFlowUser(); - // 获取流程实例ID - String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId); - // 获取流程实例对象 - ProcessInstance processInstance = runtimeService.createProcessInstanceQuery() - .processInstanceId(processInstanceId).singleResult(); - // 获取流程定义ID - String processDefinitionId = processInstance.getProcessDefinitionId(); - // 如果是最后一个节点的审批则需要判断是否可以通过 - String taskName = taskService.createTaskQuery().taskId(taskId).singleResult().getName(); - if (pass && taskName.equals("标准化审批")) { - ProcessEsEnable data = this.getOne(new LambdaQueryWrapper() - .eq(ProcessEsEnable::getProcessInstanceId, processInstanceId)); - String standardNumber = data.getStandardNumber(); - LawsEnterpriseStandard es = esService.getOne(new LambdaQueryWrapper() - .eq(LawsEnterpriseStandard::getStandardNumber, standardNumber)); - if (StandardStateEnum.CURRENTLY_EFFECTIVE.getStateValue().equals(es.getStandardState())) { - throw new JeroBootException("该标准已现行有效,需要驳回重新选择"); - } - if (StandardStateEnum.ABOLISH.getStateValue().equals(es.getStandardState())) { - throw new JeroBootException("该标准已废止,需要驳回重新选择"); - } - } - ProcessEsEnable data = enableData.getData(); - if (data != null) { - updateById(data); - // 根据流程实例id更新流程总表 - String prcName = commonVO.getPrcName(); - String prcMes = commonVO.getPrcMes(); - Date dueTime = commonVO.getDueTime(); - Integer prcType = ProcessTypeEnum.ES_ENABLE.getValue(); - actFlowCommonService.updateProcessAll(processInstanceId, userId, prcName, prcMes, prcType, dueTime); - } - if (flowUser != null) { - Map variables = setVariables(flowUser); - Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); - // 获取执行id - String executionId = task.getExecutionId(); - // 设置流程变量 - runtimeService.setVariables(executionId, variables); - processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, this.getUserMap(flowUser)); - } - // 设置流程变量 - runtimeService.setVariable(processInstanceId, "pass", pass); - // 更新审批表为完成,填充数据 - actFlowCommonService.updateApprovalInfo(commonVO, taskId, pass); - // 审批节点 - actFlowCommonService.completeTask(taskId, userId); - // 删除草稿 - actFlowCommonService.removeDraft(commonVO); - // 如果是会签节点,驳回后要将其余节点recode设置为 未处理 状态 - if (!pass) { - actFlowCommonService.updateOtherCountersignRecodeStatus(processInstanceId, CounterSignNodeNameConstants.COUNTER_SIGN_NODE_NAME); - } - } - -} - - - - diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/controller/ProcessESInitChangeController.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/controller/ProcessESInitChangeController.java deleted file mode 100644 index 544222ef..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/controller/ProcessESInitChangeController.java +++ /dev/null @@ -1,188 +0,0 @@ -package com.jero.modules.activiti.process.esInitChange.controller; - -import com.jero.common.api.vo.Result; -import com.jero.common.aspect.annotation.AutoLog; -import com.jero.common.aspect.annotation.Translation; -import com.jero.modules.activiti.enums.ProcessTypeEnum; -import com.jero.modules.activiti.process.common.entity.ProcessDraft; -import com.jero.modules.activiti.process.common.entity.TransferVO; -import com.jero.modules.activiti.process.common.service.ActFlowCommonService; -import com.jero.modules.activiti.process.esArchive.entity.vo.ESArchiveDataVO; -import com.jero.modules.activiti.process.esInitChange.entity.ProcessEsInitChange; -import com.jero.modules.activiti.process.esInitChange.entity.vo.InitChangeDataVO; -import com.jero.modules.activiti.process.esInitChange.service.ProcessEsInitChangeService; -import com.jero.modules.activiti.process.fb.service.IProcessHandleService; -import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO; -import com.jero.modules.laws.common.constant.FieldCommon; -import com.jero.modules.laws.enterprise.entity.dto.ESPlanQueryDTO; -import com.jero.modules.laws.enterprise.service.EnterpriseStandardPlanService; -import com.jero.modules.laws.enterprise.util.EnterpriseStandardUtil; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import io.swagger.annotations.ApiParam; -import lombok.extern.slf4j.Slf4j; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; -import javax.annotation.Resource; -import java.util.HashMap; -import java.util.Map; - -/** - * @author: Mzaxd - * @Date: 2023/10/10 14:14 - */ -@Slf4j -@RestController -@Api(tags = "企标立项变更流程") -@RequestMapping("/process/es/initChange") -public class ProcessESInitChangeController { - - @Resource - private ProcessEsInitChangeService initChangeService; - - @Resource - private EnterpriseStandardUtil esUtil; - - @Resource - private EnterpriseStandardPlanService espService; - - @Resource - private IProcessHandleService processHandleService; - - @Resource - private ActFlowCommonService actFlowCommonService; - - /** - * 新增立项变更申请 - * - * @param initChangeData - */ - @AutoLog(value = "企标立项变更流程-发起立项变更申请") - @ApiOperation(value="企标立项变更流程-发起立项变更申请", notes="企标立项变更流程-发起立项变更申请") - @PostMapping("/start") - public Result startInitChange(@RequestBody InitChangeDataVO initChangeData) { - initChangeService.startProcess(initChangeData); - return Result.OK(); - } - - /** - * 生成企标编号并返回 - * @param esInitChange - */ - @AutoLog(value = "企标立项变更流程-生成企标编号并返回") - @ApiOperation(value="企标立项变更流程-生成企标编号并返回", notes="企标立项变更流程-生成企标编号并返回") - @PostMapping("/getStandardNo") - public Result getStandardNo(@RequestBody ProcessEsInitChange esInitChange) { - // 生成企标编号并返回 - Map map = new HashMap<>(); - map.put(FieldCommon.ENTERPRISE_STANDARD_CODE, esInitChange.getEnStandardCode()); - map.put(FieldCommon.ENTERPRISE_NAME_CODE, esInitChange.getEnNameCode()); - map.put(FieldCommon.STANDARD_CATEGORY_CODE, esInitChange.getStandardCategoryCode()); - map.put(FieldCommon.YEAR_NUMBER, esInitChange.getDecadeCode()); - return Result.OK(esUtil.generateStandardNumber(map)); - } - - /** - * 保存到待办 - * @param processInfoVO - */ - @AutoLog(value = "企标立项变更流程-保存") - @ApiOperation(value="企标立项变更流程-保存", notes="企标立项变更流程-保存") - @PostMapping("/save") - public Result save(@Validated @RequestBody ProcessInfoVO processInfoVO) { - initChangeService.saveToDraft(processInfoVO); - return Result.OK(); - } - - /** - * 保存到待办 - * @param taskId - */ - @AutoLog(value = "企标立项变更流程-办理") - @ApiOperation(value="企标立项变更流程-办理", notes="企标立项变更流程-办理") - @GetMapping("/handle/{taskId}") - @Translation - public Result handle(@PathVariable("taskId") String taskId) { - ProcessDraft draft = actFlowCommonService.getExistDraftByTaskId(taskId, ProcessTypeEnum.ES_INIT_CHANGE); - if (draft != null) { - return Result.OK(draft); - } - return Result.OK(initChangeService.getHandleData(taskId)); - } - - /** - * 草稿办理 - * @param draftId - * @param projectId - */ - @AutoLog(value = "企标立项变更流程-草稿办理") - @ApiOperation(value="企标立项变更流程-草稿办理", notes="企标立项变更流程-草稿办理") - @GetMapping("/draftHandle") - @Translation - public Result draftHandle(@RequestParam("draftId") @ApiParam("草稿Id") String draftId) { - return Result.OK(actFlowCommonService.getExistDraft(draftId, ProcessTypeEnum.ES_INIT_CHANGE)); - } - - /** - * 同意 - * - * @param initChangeData - */ - @AutoLog(value = "企标立项变更流程-同意") - @ApiOperation(value="企标立项变更流程-同意", notes="企标立项变更流程-同意") - @PostMapping("/agree") - public Result agree(@RequestBody InitChangeDataVO initChangeData) { - initChangeService.approvalInitChange(initChangeData, true); - return Result.OK(); - } - - /** - * 驳回 - * - * @param initChangeData - */ - @AutoLog(value = "企标立项变更流程-驳回") - @ApiOperation(value="企标立项变更流程-驳回", notes="企标立项变更流程-驳回") - @PostMapping("/reject") - public Result reject(@RequestBody InitChangeDataVO initChangeData) { - initChangeService.approvalInitChange(initChangeData, false); - return Result.OK(); - } - - /** - * 选择企标编号带出数据 - * - * @param espId - */ - @AutoLog(value = "企标立项变更流程-选择企标编号带出数据") - @ApiOperation(value="企标立项变更流程-选择企标编号带出数据", notes="企标立项变更流程-选择企标编号带出数据") - @GetMapping(value = "/getESPDetail") - public Result getESPDetail(@RequestParam("id") String espId) { - return Result.OK(espService.getDetailById(espId)); - } - - /** - * 企标计划列表 - */ - @AutoLog(value = "企标立项变更流程-企标计划列表") - @ApiOperation(value="企标立项变更流程-企标计划列表", notes="企标立项变更流程-企标计划列表") - @GetMapping(value = "/getESPList") - public Result getESPList(@RequestParam(name="pageNo", defaultValue="1") Integer pageNo, - @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, - ESPlanQueryDTO esPlanQueryDTO, - @RequestParam("projectType") String projectType) { - return Result.OK(espService.getESPList(pageNo, pageSize, esPlanQueryDTO, projectType)); - } - - /** - * 转办 - * - */ - @AutoLog(value = "企标立项变更流程-转办") - @ApiOperation(value="企标立项变更流程-转办", notes="企标立项变更流程-转办") - @PostMapping(value = "/transfer") - public Result transfer(@RequestBody TransferVO transferVO) { - processHandleService.transfer(transferVO.getTaskId(), transferVO.getUserId()); - return Result.OK(); - } -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/entity/EsInitChangeConstant.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/entity/EsInitChangeConstant.java deleted file mode 100644 index c917ad7c..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/entity/EsInitChangeConstant.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.jero.modules.activiti.process.esInitChange.entity; - -/** - * @author: Mzaxd - * @Date: 2023/10/28 11:47 - */ -public class EsInitChangeConstant { - - public static final String MAIN_DRAFT_USER_INIT = "主起草人发起"; - public static final String CONTACT_USER_CHECK = "部所联络人校对"; - public static final String EXPERT_CHECK = "专家审批"; - public static final String MAIN_DRAFT_USER_LEADER = "主管级领导审批"; - public static final String MAIN_DRAFT_USER_LEADER_LEADER = "主管级上一级领导审批"; - public static final String STANDARDIZATION_CHECK = "标准化审批"; - public static final String NEW_MAIN_DRAFT_LEADER_LEADER = "新起草部门主管级上一级领导下发"; - public static final String NEW_MAIN_DRAFT_LEADER = "新起草部门主管级领导确认"; - public static final String RELATE_USER_SIGN = "相关人员会签"; - public static final String AUTO_COPY = "主起草人抄送"; -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/entity/ProcessEsInitChange.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/entity/ProcessEsInitChange.java deleted file mode 100644 index 90667ba2..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/entity/ProcessEsInitChange.java +++ /dev/null @@ -1,515 +0,0 @@ -package com.jero.modules.activiti.process.esInitChange.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import java.io.Serializable; -import java.util.Date; - -import com.fasterxml.jackson.annotation.JsonFormat; -import com.jero.common.aspect.annotation.Dict; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; -import org.springframework.format.annotation.DateTimeFormat; - -/** - * 企标立项变更计划 - * @TableName process_es_init_change - */ -@Data -@TableName(value ="process_es_init_change") -@Accessors(chain = true) -@EqualsAndHashCode(callSuper = false) -@ApiModel(value="process_es_init_change对象", description="企标立项变更对象") -public class ProcessEsInitChange implements Serializable { - - /** 主键ID */ - @TableId(type = IdType.ASSIGN_ID) - @ApiModelProperty(value = "主键ID") - private String id; - - /** 企标计划ID */ - @ApiModelProperty(value = "企标计划ID") - private String espId; - - /** - * 标准计划Id1(合并流程字段) - */ - @ApiModelProperty(value = "标准计划Id1(合并流程字段)") - private String standardIdOne; - - /** - * 标准编号1(合并流程字段) - */ - @ApiModelProperty(value = "标准编号1(合并流程字段)") - private String standardNoOne; - - /** - * 标准名称1(合并流程字段) - */ - @ApiModelProperty(value = "标准名称1(合并流程字段)") - private String standardNameOne; - - /** - * 制修订类型1(合并流程字段) - */ - @Dict(dicCode = "esp_project_type") - @ApiModelProperty(value = "制修订类型1(合并流程字段)") - private String projectTypeOne; - - /** - * 制修订类型2(合并流程字段) - */ - @Dict(dicCode = "esp_project_type") - @ApiModelProperty(value = "制修订类型2(合并流程字段)") - private String projectTypeTwo; - - /** - * 标准计划Id2(合并流程字段) - */ - @ApiModelProperty(value = "标准计划Id2(合并流程字段)") - private String standardIdTwo; - - /** - * 标准编号2(合并流程字段) - */ - @ApiModelProperty(value = "标准编号2(合并流程字段)") - private String standardNoTwo; - - /** - * 标准名称2(合并流程字段) - */ - @ApiModelProperty(value = "标准名称2(合并流程字段)") - private String standardNameTwo; - - /** - * 创建人 - */ - @ApiModelProperty(value = "创建人") - private String createBy; - - /** - * 创建时间 - */ - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") - @DateTimeFormat(pattern="yyyy-MM-dd") - @ApiModelProperty(value = "创建时间") - private Date createTime; - - /** - * 更新人 - */ - @ApiModelProperty(value = "更新人") - private String updateBy; - - /** - * 更新时间 - */ - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") - @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") - @ApiModelProperty(value = "更新时间") - private Date updateTime; - - /** - * 所属部门 - */ - @ApiModelProperty(value = "所属部门") - private String orgCode; - - /** - * 0表示未删除,1表示删除 - */ - @ApiModelProperty(value = "0表示未删除,1表示删除") - private String delFlag; - - /** - * 流程实例Id - */ - @ApiModelProperty(value = "流程实例Id") - private String processInstanceId; - - /** - * 申请类别 - */ - @Dict(dicCode = "esp_application_category") - @ApiModelProperty(value = "申请类别") - private String applicationCategory; - - /** - * 项目类型 - */ - @Dict(dicCode = "esp_project_type") - @ApiModelProperty(value = "项目类型") - private String projectType; - - /** - * 原企标编号 - */ - @ApiModelProperty(value = "原企标编号") - private String originEnStandardNo; - - /** - * 新企标编号 - */ - @ApiModelProperty(value = "新企标编号") - private String newEnStandardNo; - - /** - * 原企标名称 - */ - @ApiModelProperty(value = "原企标名称") - private String originEnStandardName; - - /** - * 新企标名称 - */ - @ApiModelProperty(value = "新企标名称") - private String newEnStandardName; - - /** - * 企标英文名称 - */ - @ApiModelProperty(value = "企标英文名称") - private String enStandardEnglishName; - - /** - * 企标体系 - */ - @ApiModelProperty(value = "企标体系") - private String enStandardSystem; - - /** - * 企业标准代号 - */ - @ApiModelProperty(value = "企业标准代号") - private String enStandardCode; - - /** - * 企业名称代号 - */ - @ApiModelProperty(value = "企业名称代号") - private String enNameCode; - - /** - * 标准类别代号 - */ - @ApiModelProperty(value = "标准类别代号") - private String standardCategoryCode; - - /** - * 年代号 - */ - @ApiModelProperty(value = "年代号") - private String decadeCode; - - /** - * 标准类型 - */ - @ApiModelProperty(value = "标准类型") - private String standardType; - - /** - * 企标等级分类 - */ - @ApiModelProperty(value = "企标等级分类") - private String enStandardClassification; - - /** - * 原草稿计划完成日期 - */ - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") - @DateTimeFormat(pattern="yyyy-MM-dd") - @ApiModelProperty(value = "原草稿计划完成日期") - private Date originDraftPlannedCompleteDate; - - /** - * 原征求意见稿计划完成日期 - */ - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") - @DateTimeFormat(pattern="yyyy-MM-dd") - @ApiModelProperty(value = "原征求意见稿计划完成日期") - private Date originSolicitationDraftPlanCompleteDate; - - /** - * 原计划报批日期 - */ - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") - @DateTimeFormat(pattern="yyyy-MM-dd") - @ApiModelProperty(value = "原计划报批日期") - private Date originPlanApprovalDate; - - /** - * 草稿计划完成日期 - */ - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") - @DateTimeFormat(pattern="yyyy-MM-dd") - @ApiModelProperty(value = "草稿计划完成日期") - private Date draftPlannedCompleteDate; - - /** - * 征求意见稿计划完成日期 - */ - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") - @DateTimeFormat(pattern="yyyy-MM-dd") - @ApiModelProperty(value = "征求意见稿计划完成日期") - private Date solicitationDraftPlanCompleteDate; - - /** - * 计划报批日期 - */ - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") - @DateTimeFormat(pattern="yyyy-MM-dd") - @ApiModelProperty(value = "计划报批日期") - private Date planApprovalDate; - - /** - * 项目状态 - */ - @ApiModelProperty(value = "项目状态") - private String projectStatus; - - /** - * 编制说明 - */ - @ApiModelProperty(value = "编制说明") - private String compilationDescription; - - /** - * 零部件名称 - */ - @Dict(dictTable = "laws_part_name", dicCode = "code", dicText = "name") - @ApiModelProperty(value = "零部件名称") - private String componentName; - - @Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname") - @ApiModelProperty(value = "主起草人") - private String mainDraftingUser; - - @Dict(dictTable = "sys_depart", dicCode = "id", dicText = "depart_name") - @ApiModelProperty(value = "主起草单位") - private String mainDraftingUnit; - - @Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname") - @ApiModelProperty(value = "主起草单位责任人") - private String mainDraftingUnitResponsiblePerson; - - /** - * 新主起草单位负责人 - */ - @Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname") - @ApiModelProperty(value = "新主起草单位负责人") - private String newMainDraftingUnitResponsiblePerson; - - @Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname") - @ApiModelProperty(value = "标准推进人") - private String standardPromoter; - - /** - * 草稿完成日期 - */ - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") - @DateTimeFormat(pattern="yyyy-MM-dd") - @ApiModelProperty(value = "草稿完成日期") - private Date draftCompletionDate; - - /** - * 提交草稿日期 - */ - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") - @DateTimeFormat(pattern="yyyy-MM-dd") - @ApiModelProperty(value = "提交草稿日期") - private Date draftSubmissionDate; - - /** - * 是否征求意见 - */ - @ApiModelProperty(value = "是否征求意见") - private String solicitationOpinionEnabled; - - /** - * 征求意见稿完成日期 - */ - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") - @DateTimeFormat(pattern="yyyy-MM-dd") - @ApiModelProperty(value = "征求意见稿完成日期") - private Date solicitationDraftCompletionDate; - - /** - * 评审日期 - */ - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") - @DateTimeFormat(pattern="yyyy-MM-dd") - @ApiModelProperty(value = "评审日期") - private Date reviewDate; - - /** - * 报批日期 - */ - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") - @DateTimeFormat(pattern="yyyy-MM-dd") - @ApiModelProperty(value = "报批日期") - private Date approvalDate; - - /** - * 发布日期 - */ - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") - @DateTimeFormat(pattern="yyyy-MM-dd") - @ApiModelProperty(value = "发布日期") - private Date releaseDate; - - /** - * 变更状态 - */ - @ApiModelProperty(value = "变更状态") - private String changeStatus; - - /** - * 立项背景、立项依据 - */ - @ApiModelProperty(value = "立项背景、立项依据") - private String projectBackground; - - /** - * 国际、国家及行业同类标准分析 - */ - @ApiModelProperty(value = "国家及行业同类标准分析") - private String similarNaStandardsAnalysis; - - /** - * 企业同类标准对比分析 - */ - @ApiModelProperty(value = "企业同类标准对比分析") - private String similarEnStandardsAnalysis; - - /** - * 立项标准的领先性与必要性 - */ - @ApiModelProperty(value = "立项标准的领先性与必要性") - private String standardLeadingNecessity; - - /** - * 立项目的及预期效果等 - */ - @ApiModelProperty(value = "立项目的及预期效果等") - private String projectExpectedEffects; - - /** - * 上传附件 - */ - @Dict(dictTable = "oss_file", dicCode = "id", dicText = "file_name") - @ApiModelProperty(value = "上传附件") - private String uploadAttachment; - - /** - * 变更原因 - */ - @ApiModelProperty(value = "变更原因") - private String changeReason; - - /** - * 新主起草人 - */ - @Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname") - @ApiModelProperty(value = "新主起草人") - private String newMainDraftingUser; - - /** - * 新主起草单位 - */ - @Dict(dictTable = "sys_depart", dicCode = "id", dicText = "depart_name") - @ApiModelProperty(value = "新主起草单位") - private String newMainDraftingUnit; - - /** - * 部所联络人 - */ - @Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname") - @ApiModelProperty(value = "部所联络人") - private String contactUser; - - /** - * 标准专家 - */ - @Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname") - @ApiModelProperty(value = "标准专家") - private String standardExpert; - - /** - * 主起草人主管级领导 - */ - @Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname") - @ApiModelProperty(value = "主起草人主管级领导") - private String mainDraftUserLeader; - - /** - * 主起草人主管级领导上级领导 - */ - @Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname") - @ApiModelProperty(value = "主起草人主管级领导上级领导") - private String mainDraftUserLeaderLeader; - - /** - * 标准化审批人 - */ - @Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname") - @ApiModelProperty(value = "标准化审批人") - private String standardizationApprovalUser; - - /** - * 新主起草部门领导的领导 - */ - @Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname") - @ApiModelProperty(value = "新主起草部门领导的领导") - private String newMainDraftUserLeaderLeader; - - /** - * 新主起草部门领导 - */ - @Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname") - @ApiModelProperty(value = "新主起草部门领导") - private String newMainDraftUserLeader; - - /** - * 相关人员 - */ - @Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname") - @ApiModelProperty(value = "相关人员") - private String relatedUserList; - - /** - * 抄送人 - */ - @Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname") - @ApiModelProperty(value = "抄送人") - private String copyUser; - - /** - * 授权部门 - */ - @Dict(dictTable = "sys_depart", dicCode = "id", dicText = "depart_name") - @ApiModelProperty(value = "授权部门") - private String authDept; - - /** - * 配合单位 - */ - @Dict(dictTable = "sys_depart", dicCode = "id", dicText = "depart_name") - @ApiModelProperty(value = "配合单位") - private String cooperationUnit; - - /** - * 隶属工作组 - */ - @Dict(dictTable = "laws_working_group", dicCode = "id", dicText = "name") - @ApiModelProperty(value = "隶属工作组") - private String workGroup; - - - @TableField(exist = false) - private static final long serialVersionUID = 1781238971297838971L; -} \ No newline at end of file diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/entity/enums/ESPApplicationCategoryEnum.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/entity/enums/ESPApplicationCategoryEnum.java deleted file mode 100644 index 810e1409..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/entity/enums/ESPApplicationCategoryEnum.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.jero.modules.activiti.process.esInitChange.entity.enums; - -/** - * @author: Mzaxd - * @Date: 2023/10/9 16:28 - */ -public enum ESPApplicationCategoryEnum { - INITIATION("立项", "3"), - - CHANGE("变更", "4") - ; - - private final String name; - - private final String value; - - public String getName() { - return name; - } - - public String getValue() { - return value; - } - - ESPApplicationCategoryEnum(String name, String value) { - this.name = name; - this.value = value; - } -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/entity/enums/ESPChangeType.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/entity/enums/ESPChangeType.java deleted file mode 100644 index f4ba0da6..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/entity/enums/ESPChangeType.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.jero.modules.activiti.process.esInitChange.entity.enums; - -/** - * @author: Mzaxd - * @Date: 2023/10/13 10:57 - */ -public enum ESPChangeType { - - ADD("新增", "1", "新增计划入库时"), - - CHANGE("变更", "2", "变更类型为完成时间变更、责任部门变更、"), - - CANCEL("取消", "3", "项目类型为工作终止为取消"), - ; - - - private final String name; - private final String value; - private final String description; - - ESPChangeType(String name, String value, String description) { - this.name = name; - this.value = value; - this.description = description; - } - - public String getName() { - return name; - } - - public String getValue() { - return value; - } - - public String getDescription() { - return description; - } - - public static String getValueByName(String name) { - for (ESPChangeType type : ESPChangeType.values()) { - if (type.getName().equals(name)) { - return type.getValue(); - } - } - // 如果找不到对应的状态值,则返回“新增”的状态值 - return ESPChangeType.ADD.getValue(); - } -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/entity/enums/ESPProjectStatus.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/entity/enums/ESPProjectStatus.java deleted file mode 100644 index 3d771bbb..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/entity/enums/ESPProjectStatus.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.jero.modules.activiti.process.esInitChange.entity.enums; - -/** - * @author: Mzaxd - * @Date: 2023/10/13 14:17 - */ -public enum ESPProjectStatus { - - NOT_STARTED("未开始", "1"), - IN_PROGRESS("进行中", "2"), - OVERDUE_COMPLETED("逾期完成", "3"), - OVERDUE("逾期", "4"), - COMPLETED("完成", "5"); - - private final String name; - - private final String value; - - ESPProjectStatus(String name, String value) { - this.name = name; - this.value = value; - } - - public String getName() { - return name; - } - - public String getValue() { - return value; - } - - public static String getValueByName(String name) { - for (ESPProjectStatus status : ESPProjectStatus.values()) { - if (status.getName().equals(name)) { - return status.getValue(); - } - } - // 如果找不到对应的状态值,则返回“未开始”的状态值 - return ESPProjectStatus.NOT_STARTED.getValue(); - } - -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/entity/enums/ESPProjectType.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/entity/enums/ESPProjectType.java deleted file mode 100644 index 875e25d8..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/entity/enums/ESPProjectType.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.jero.modules.activiti.process.esInitChange.entity.enums; - -/** - * @author: Mzaxd - * @Date: 2023/10/9 16:28 - */ -public enum ESPProjectType { - - /** 立项 **/ - ENACT("制定", "1"), - MODIFY("修订", "2"), - - /** 变更 **/ - COMPLETE_TIME_CHANGE("完成时间变更", "3"), - WORK_TERMINATE("工作中止", "4"), - RESPONSIBLE_DEPT_CHANGE("责任部门变更", "5"), - MERGE("合并", "6"), - ; - - private final String name; - - private final String value; - - public String getName() { - return name; - } - - public String getValue() { - return value; - } - - ESPProjectType(String name, String value) { - this.name = name; - this.value = value; - } - - public static String getValueByName(String name) { - for (ESPProjectType type : ESPProjectType.values()) { - if (type.getName().equals(name)) { - return type.getValue(); - } - } - return ESPProjectType.ENACT.getValue(); // 返回ENACT枚举值对应的value值 - } - -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/entity/enums/ESPRevisionType.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/entity/enums/ESPRevisionType.java deleted file mode 100644 index 47851656..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/entity/enums/ESPRevisionType.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.jero.modules.activiti.process.esInitChange.entity.enums; - -/** - * @author: Mzaxd - * @Date: 2023/10/13 15:14 - */ -public enum ESPRevisionType { - - /** 立项 **/ - ENACT("制定", "1"), - MODIFY("修订", "2"), - ; - - private final String name; - - private final String value; - - public String getName() { - return name; - } - - public String getValue() { - return value; - } - - ESPRevisionType(String name, String value) { - this.name = name; - this.value = value; - } - -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/entity/vo/InitChangeDataVO.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/entity/vo/InitChangeDataVO.java deleted file mode 100644 index ac25dafe..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/entity/vo/InitChangeDataVO.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.jero.modules.activiti.process.esInitChange.entity.vo; - -import com.fasterxml.jackson.annotation.JsonProperty; -import com.jero.modules.activiti.process.common.entity.CommonVO; -import com.jero.modules.activiti.process.esInitChange.entity.ProcessEsInitChange; -import lombok.Data; - -import java.util.List; -import java.util.Map; - -/** - * @author: Mzaxd - * @Date: 2023/10/26 8:13 - */ -@Data -public class InitChangeDataVO { - - @JsonProperty("common") - private CommonVO commonVO; - - @JsonProperty("dataList") - private List dataList; - - @JsonProperty("flowUser") - private Map flowUserInfoVO; -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/listener/InitChangeMainDraftUserCopyStartListener.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/listener/InitChangeMainDraftUserCopyStartListener.java deleted file mode 100644 index c5e3662d..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/listener/InitChangeMainDraftUserCopyStartListener.java +++ /dev/null @@ -1,82 +0,0 @@ -package com.jero.modules.activiti.process.esInitChange.listener; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.jero.common.api.dto.message.SendMessageDTO; -import com.jero.common.api.vo.SendMessageAPI; -import com.jero.modules.activiti.entity.ProcessAll; -import com.jero.modules.activiti.process.esInitChange.entity.ProcessEsInitChange; -import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPProjectType; -import com.jero.modules.activiti.process.esInitChange.service.ProcessEsInitChangeService; -import com.jero.modules.activiti.service.ProcessAllService; -import com.jero.modules.laws.common.constant.MessageTemplateCodeCommon; -import lombok.extern.slf4j.Slf4j; -import org.activiti.engine.delegate.DelegateTask; -import org.activiti.engine.delegate.TaskListener; -import org.jetbrains.annotations.NotNull; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * @author: Mzaxd - * @Date: 2024/1/26 15:58 - */ -@Slf4j -@Component("InitChangeMainDraftUserCopyStartListener") -public class InitChangeMainDraftUserCopyStartListener implements TaskListener { - - @Resource - private SendMessageAPI sendMessageAPI; - - @Resource - private ProcessEsInitChangeService initChangeService; - - @Resource - private ProcessAllService processAllService; - - /** - * 责任部门变更,抄送主起草人节点开始监听器 - * - * @param delegateExecution - */ - @Override - public void notify(DelegateTask delegateTask) { - log.info("抄送主起草人节点开始监听器开始执行"); - // 判断当前变更流程是否是责任部门变更流程 - String processInstanceId = delegateTask.getProcessInstanceId(); - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(ProcessEsInitChange::getProcessInstanceId, processInstanceId); - List esInitChanges = initChangeService.list(wrapper); - if (esInitChanges.isEmpty()) { - log.error("抄送主起草人节点开始监听器执行错误,未找到相关流程数据"); - return; - } - ProcessEsInitChange esInitChange = esInitChanges.get(0); - if (esInitChange.getProjectType().equals(ESPProjectType.RESPONSIBLE_DEPT_CHANGE.getValue())) { - // 获取流程变量 - String mainDraftUser = (String) delegateTask.getVariable("createUser"); - // 获取流程名称 - ProcessAll processAll = processAllService.getByProcessInstanceId(processInstanceId); - SendMessageDTO sendMessageDTO = getSendMessageDTO(processAll, mainDraftUser, esInitChange); - sendMessageAPI.sendMessage(sendMessageDTO); - } - log.info("抄送主起草人节点开始监听器执行结束"); - } - - @NotNull - private static SendMessageDTO getSendMessageDTO(ProcessAll processAll, String mainDraftUser, ProcessEsInitChange esInitChange) { - String prcName = processAll.getPrcName(); - // 发送消息 - SendMessageDTO sendMessageDTO = new SendMessageDTO(); - sendMessageDTO.setTemplateCode(MessageTemplateCodeCommon.ES_INIT_CHANGE_MAIN_DRAFT_USER_COPY); - sendMessageDTO.setToUserId(mainDraftUser); - Map sendMap = new HashMap<>(); - sendMap.put("standardNumber", esInitChange.getOriginEnStandardNo()); - sendMap.put("prcName", prcName); - sendMessageDTO.setMap(sendMap); - return sendMessageDTO; - } -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/listener/InitChangeNewMainDraftLeaderEndListener.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/listener/InitChangeNewMainDraftLeaderEndListener.java deleted file mode 100644 index f192c288..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/listener/InitChangeNewMainDraftLeaderEndListener.java +++ /dev/null @@ -1,81 +0,0 @@ -package com.jero.modules.activiti.process.esInitChange.listener; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.jero.common.api.dto.message.SendMessageDTO; -import com.jero.common.api.vo.SendMessageAPI; -import com.jero.modules.activiti.entity.ProcessAll; -import com.jero.modules.activiti.process.esInitChange.entity.ProcessEsInitChange; -import com.jero.modules.activiti.process.esInitChange.service.ProcessEsInitChangeService; -import com.jero.modules.activiti.service.ProcessAllService; -import com.jero.modules.laws.common.constant.MessageTemplateCodeCommon; -import lombok.extern.slf4j.Slf4j; -import org.activiti.engine.delegate.DelegateTask; -import org.activiti.engine.delegate.TaskListener; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; -import javax.validation.constraints.NotNull; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - - -/** - * @author: Mzaxd - * @Date: 2023/10/10 14:14 - */ -@Slf4j -@Component("InitChangeNewMainDraftLeaderEndListener") -public class InitChangeNewMainDraftLeaderEndListener implements TaskListener { - - @Resource - private SendMessageAPI sendMessageAPI; - - @Resource - private ProcessEsInitChangeService initChangeService; - - @Resource - private ProcessAllService processAllService; - - /** - * 责任部门变更,新起草部门主管级领导确认选择会签人员 - * - * @param delegateExecution - */ - @Override - public void notify(DelegateTask delegateTask) { - log.info("新起草部门主管级领导结束监听器开始执行"); - // 发送消息 - String processInstanceId = delegateTask.getProcessInstanceId(); - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(ProcessEsInitChange::getProcessInstanceId, processInstanceId); - List esInitChanges = initChangeService.list(wrapper); - if (esInitChanges.isEmpty()) { - return; - } - ProcessEsInitChange esInitChange = esInitChanges.get(0); - // 获取流程变量 - List relatedUserList = (List) delegateTask.getVariable("relatedUserList"); - // 发送消息 - String relatedUsers = String.join(",", relatedUserList); - // 获取流程名称 - ProcessAll processAll = processAllService.getByProcessInstanceId(processInstanceId); - SendMessageDTO sendMessageDTO = getSendMessageDTO(processAll, relatedUsers, esInitChange); - sendMessageAPI.sendMessage(sendMessageDTO); - } - - @NotNull - private static SendMessageDTO getSendMessageDTO(ProcessAll processAll, String relatedUsers, ProcessEsInitChange esInitChange) { - String prcName = processAll.getPrcName(); - // 发送消息 - SendMessageDTO sendMessageDTO = new SendMessageDTO(); - sendMessageDTO.setTemplateCode(MessageTemplateCodeCommon.ES_INIT_CHANGE_NEW_MAIN_DRAFT_LEADER_END); - sendMessageDTO.setToUserId(relatedUsers); - Map sendMap = new HashMap<>(); - sendMap.put("standardNumber", esInitChange.getOriginEnStandardNo()); - sendMap.put("prcName", prcName); - sendMessageDTO.setMap(sendMap); - return sendMessageDTO; - } - -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/listener/ProcessESInitChangeEndListener.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/listener/ProcessESInitChangeEndListener.java deleted file mode 100644 index a6ad39a4..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/listener/ProcessESInitChangeEndListener.java +++ /dev/null @@ -1,234 +0,0 @@ -package com.jero.modules.activiti.process.esInitChange.listener; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import com.jero.common.api.vo.ResultCommon; -import com.jero.common.constant.enums.YesOrNoEnum; -import com.jero.common.exception.JeroBootException; -import com.jero.modules.activiti.entity.ProcessAll; -import com.jero.modules.activiti.enums.ProcessStatusEnum; -import com.jero.modules.activiti.process.esInitChange.entity.ProcessEsInitChange; -import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPApplicationCategoryEnum; -import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPChangeType; -import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPProjectStatus; -import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPProjectType; -import com.jero.modules.activiti.process.esInitChange.service.ProcessEsInitChangeService; -import com.jero.modules.activiti.process.esRevision.entity.ProcessEsRevision; -import com.jero.modules.activiti.process.esRevision.entity.vo.ESRevisionDataVO; -import com.jero.modules.activiti.process.esRevision.service.EsRevisionService; -import com.jero.modules.activiti.service.ProcessAllService; -import com.jero.modules.laws.enterprise.entity.EnterpriseStandardPlan; -import com.jero.modules.laws.enterprise.service.EnterpriseStandardPlanService; -import com.jero.modules.laws.enterprise.util.BeanCopyUtils; -import com.jero.modules.laws.enterprise.util.EnterpriseStandardUtil; -import lombok.extern.slf4j.Slf4j; -import org.activiti.engine.ActivitiObjectNotFoundException; -import org.activiti.engine.delegate.DelegateExecution; -import org.activiti.engine.delegate.ExecutionListener; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -/** - * @author: Mzaxd - * @Date: 2023/10/10 14:14 - */ -@Slf4j -@Component -public class ProcessESInitChangeEndListener implements ExecutionListener { - - @Resource - private EnterpriseStandardPlanService espService; - - @Resource - private ProcessEsInitChangeService esInitChangeService; - - @Resource - private EsRevisionService esRevisionService; - - @Resource - private EnterpriseStandardUtil esUtil; - - @Resource - private ProcessAllService processAllService; - - @Resource - private EsRevisionService revisionService; - - /** - * 企标立项变更流程结束之后需要把数据存入企标计划数据库 然后自动发起企标制修订流程 - * @param delegateExecution - */ - @Override - public void notify(DelegateExecution delegateExecution) { - log.info("企标立项变更流程结束 监听执行器开始执行"); - // 获取流程实例ID - String processInstanceId = delegateExecution.getProcessInstanceId(); - // 根据流程实例Id找到所有流程业务数据 - LambdaQueryWrapper esInitChangeWrapper = new LambdaQueryWrapper<>(); - esInitChangeWrapper.eq(ProcessEsInitChange::getProcessInstanceId, processInstanceId); - List processEsInitChanges = esInitChangeService.list(esInitChangeWrapper); - String applicationCategory = processEsInitChanges.get(0).getApplicationCategory(); - String projectType = processEsInitChanges.get(0).getProjectType(); - List enterpriseStandardPlans; - if (ESPApplicationCategoryEnum.INITIATION.getValue().equals(applicationCategory)) { - // 立项新增-Id置空 - for (ProcessEsInitChange processEsInitChange : processEsInitChanges) { - processEsInitChange.setId(null); - processEsInitChange.setProjectStatus(ESPProjectStatus.IN_PROGRESS.getValue()); - processEsInitChange.setChangeStatus(ESPChangeType.ADD.getValue()); - if (ESPProjectType.MODIFY.getValue().equals(projectType)) { - processEsInitChange.setApplicationCategory(ESPProjectType.MODIFY.getValue()); - if (!this.verifyEnStandardNumberInitChangeLast(processEsInitChanges.get(0).getNewEnStandardNo())) { - throw new JeroBootException(ResultCommon.NEW_EN_STANDARD_NUMBER_CONFLICT); - } - } else { - processEsInitChange.setApplicationCategory(ESPProjectType.ENACT.getValue()); - } - // 设置企业标准代号字段值 - processEsInitChange.setEnStandardCode(esUtil.getEnStandardCode(processEsInitChange.getNewEnStandardNo())); - } - // 转换为企标计划数据并入库 - enterpriseStandardPlans = BeanCopyUtils.copyBeanList(processEsInitChanges, EnterpriseStandardPlan.class); - espService.saveBatch(enterpriseStandardPlans); - log.info("自动发起企标制修订流程"); - EnterpriseStandardPlan esp = enterpriseStandardPlans.get(0); - esRevisionService.autoStartProcess(getRevisionDataVO(esp)); - } else { - // 如果是变更流程且不是完成时间变更,则需要撤回制修订流程 - this.judgeForcedWithdrawal(projectType, processEsInitChanges); - - // 将Id设为企标计划的Id - for (ProcessEsInitChange processEsInitChange : processEsInitChanges) { - processEsInitChange.setId(processEsInitChange.getEspId()); - processEsInitChange.setApplicationCategory(null); - } - - // 完成时间变更 - if (ESPProjectType.COMPLETE_TIME_CHANGE.getValue().equals(projectType)) { - // 将企标计划变更状态设为取消 - for (ProcessEsInitChange processEsInitChange : processEsInitChanges) { - processEsInitChange.setChangeStatus(ESPChangeType.CHANGE.getValue()); - } - enterpriseStandardPlans = BeanCopyUtils.copyBeanList(processEsInitChanges, EnterpriseStandardPlan.class); - espService.updateBatchById(enterpriseStandardPlans); - } - - // 工作中止 - if (ESPProjectType.WORK_TERMINATE.getValue().equals(projectType)) { - LambdaUpdateWrapper espWrapper = new LambdaUpdateWrapper<>(); - // 将企标计划变更状态设为取消 - for (ProcessEsInitChange processEsInitChange : processEsInitChanges) { - espWrapper.eq(EnterpriseStandardPlan::getId, processEsInitChange.getEspId()); - espWrapper.set(EnterpriseStandardPlan::getProjectStatus, ESPProjectStatus.NOT_STARTED.getValue()); - espWrapper.set(EnterpriseStandardPlan::getChangeStatus, ESPChangeType.CANCEL.getValue()); - espService.update(espWrapper); - espWrapper.clear(); - } - } - - // 责任部门变更 - if (ESPProjectType.RESPONSIBLE_DEPT_CHANGE.getValue().equals(projectType)) { - // 将企标计划变更状态设为变更 - for (ProcessEsInitChange processEsInitChange : processEsInitChanges) { - processEsInitChange.setChangeStatus(ESPChangeType.CHANGE.getValue()); - processEsInitChange.setMainDraftingUser(processEsInitChange.getNewMainDraftingUser()); - processEsInitChange.setMainDraftingUnitResponsiblePerson(processEsInitChange.getNewMainDraftingUnitResponsiblePerson()); - processEsInitChange.setMainDraftingUnit(processEsInitChange.getNewMainDraftingUnit()); - } - enterpriseStandardPlans = BeanCopyUtils.copyBeanList(processEsInitChanges, EnterpriseStandardPlan.class); - espService.updateBatchById(enterpriseStandardPlans); - } - - // 合并 - if (ESPProjectType.MERGE.getValue().equals(projectType)) { - for (ProcessEsInitChange processEsInitChange : processEsInitChanges) { - processEsInitChange.setId(null); - processEsInitChange.setProjectStatus(ESPProjectStatus.IN_PROGRESS.getValue()); - processEsInitChange.setChangeStatus(ESPChangeType.CHANGE.getValue()); - } - ProcessEsInitChange processEsInitChange = processEsInitChanges.get(0); - // 删除两个老企标计划 - espService.deleteById(processEsInitChange.getStandardIdOne()); - espService.deleteById(processEsInitChange.getStandardIdTwo()); - // 生成新企标计划 - EnterpriseStandardPlan plan = BeanCopyUtils.copyBean(processEsInitChange, EnterpriseStandardPlan.class); - plan.setApplicationCategory(ESPProjectType.ENACT.getValue()); - espService.save(plan); - //发起制修订流程 - esRevisionService.autoStartProcess(getRevisionDataVO(plan)); - log.info("自动发起企标制修订流程"); - } - } - log.info("数据存入企标计划数据库"); - } - - /** - * 如果是变更流程且不是完成时间变更,则需要撤回制修订流程 - * @param projectType 变更类型 - * @param processEsInitChanges 流程业务数据 - */ - public void judgeForcedWithdrawal(String projectType, List processEsInitChanges) { - // 如果是变更流程且不是完成时间变更,则需要撤回制修订流程 - if (!ESPProjectType.COMPLETE_TIME_CHANGE.getValue().equals(projectType)) { - List espIdList = processEsInitChanges.stream().map(ProcessEsInitChange::getEspId).collect(Collectors.toList()); - // 未开始的企标计划不需要强制撤回 - espService.listByIds(espIdList).forEach(esp -> { - if (esp.getProjectStatus().equals(ESPProjectStatus.NOT_STARTED.getValue())) { - espIdList.remove(esp.getId()); - } - }); - if (espIdList.isEmpty()) { - return; - } - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.in(ProcessEsRevision::getEspId, espIdList); - lambdaQueryWrapper.eq(ProcessEsRevision::getDelFlag, YesOrNoEnum.NO.getValue()); - List enactList = revisionService.list(lambdaQueryWrapper); - if (enactList == null || enactList.isEmpty()) { - return; - } - List revisionProcessInstanceIdList = enactList.stream().map(ProcessEsRevision::getProcessInstanceId) - .collect(Collectors.toList()); - // 根据流程主表筛选出未完成的流程 - LambdaQueryWrapper paWrapper = new LambdaQueryWrapper<>(); - paWrapper.in(ProcessAll::getProcessInstanceId, revisionProcessInstanceIdList); - paWrapper.eq(ProcessAll::getPrcStatus, ProcessStatusEnum.INCOMPLETE.getValue()); - List list = processAllService.list(paWrapper); - Map validProcessAllMap = list.stream() - .collect(Collectors.toMap(ProcessAll::getProcessInstanceId, e -> e)); - - // 根据流程表 - for (ProcessEsRevision esRevision : enactList) { - if (!validProcessAllMap.containsKey(esRevision.getProcessInstanceId())) { - continue; - } - processAllService.forcedWithdrawal(esRevision.getProcessInstanceId()); - processAllService.updateDraftStatusByProjectId(esRevision.getId()); - } - } - } - - public ESRevisionDataVO getRevisionDataVO(EnterpriseStandardPlan esp) { - ESRevisionDataVO revisionDataVO = new ESRevisionDataVO(); - ProcessEsRevision revision = new ProcessEsRevision(); - revision.setEspId(esp.getId()); - revisionDataVO.setData(revision); - return revisionDataVO; - } - - - /** - * 立项变更流程修订最后一个节点提交的时候需要判断是否已经有另外一个重复的企标编号了, 但此时需要排除掉自己 - */ - public boolean verifyEnStandardNumberInitChangeLast(String StandardNumber) { - List duplicateStandardNumbers = esUtil.verifyBatchEsNumber(Collections.singletonList(StandardNumber)); - if (duplicateStandardNumbers == null || duplicateStandardNumbers.isEmpty()) { - return true; - } else return duplicateStandardNumbers.size() == 1; - } -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/mapper/ProcessEsInitChangeMapper.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/mapper/ProcessEsInitChangeMapper.java deleted file mode 100644 index 2b29177d..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/mapper/ProcessEsInitChangeMapper.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.jero.modules.activiti.process.esInitChange.mapper; - -import com.jero.modules.activiti.process.esInitChange.entity.ProcessEsInitChange; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; - -/** -* @author ThinkBook -* @description 针对表【process_es_init_change(企标计划)】的数据库操作Mapper -* @createDate 2023-10-10 13:48:56 -* @Entity com.jero.modules.activiti.process.esInitChange.entity.ProcessEsInitChange -*/ -public interface ProcessEsInitChangeMapper extends BaseMapper { - -} - - - - diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/service/ProcessEsInitChangeService.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/service/ProcessEsInitChangeService.java deleted file mode 100644 index 714bd089..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/service/ProcessEsInitChangeService.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.jero.modules.activiti.process.esInitChange.service; - -import com.jero.modules.activiti.process.esInitChange.entity.ProcessEsInitChange; -import com.baomidou.mybatisplus.extension.service.IService; -import com.jero.modules.activiti.process.esInitChange.entity.vo.InitChangeDataVO; -import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO; - -/** -* @author ThinkBook -* @description 针对表【process_es_init_change(企标计划)】的数据库操作Service -* @createDate 2023-10-10 13:48:56 -*/ -public interface ProcessEsInitChangeService extends IService { - - /** - * 新增记录 - * @param initChangeData - * @return - */ - void startProcess(InitChangeDataVO initChangeData); - - /** - * 审批 - * @param pass - * @param initChangeData - */ - void approvalInitChange(InitChangeDataVO initChangeData, boolean pass); - - /** - * 保存到草稿 - * - * @param initChangeData - */ - void saveToDraft(ProcessInfoVO initChangeData); - - /** - * 获取办理数据 - * @param taskId - * @return - */ - InitChangeDataVO getHandleData(String taskId); - - - /** - * 复审-继续有效-自动发起立项变更流程 - * @param standNo - */ - void autoStartProcessByRecheck(String standardNo); - -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/service/impl/ProcessEsInitChangeServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/service/impl/ProcessEsInitChangeServiceImpl.java deleted file mode 100644 index 2d1de8e9..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/service/impl/ProcessEsInitChangeServiceImpl.java +++ /dev/null @@ -1,424 +0,0 @@ -package com.jero.modules.activiti.process.esInitChange.service.impl; - -import cn.hutool.core.util.StrUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.jero.common.api.vo.ResultCommon; -import com.jero.common.aspect.TranslationAspect; -import com.jero.common.constant.enums.YesOrNoEnum; -import com.jero.common.exception.JeroBootException; -import com.jero.modules.activiti.enums.ProcessTypeEnum; -import com.jero.modules.activiti.process.common.entity.CommonVO; -import com.jero.modules.activiti.process.common.entity.CounterSignNodeNameConstants; -import com.jero.modules.activiti.process.common.enums.ProcessType; -import com.jero.modules.activiti.process.common.service.ActFlowCommonService; -import com.jero.modules.activiti.process.esInitChange.entity.ProcessEsInitChange; -import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPApplicationCategoryEnum; -import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPProjectStatus; -import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPProjectType; -import com.jero.modules.activiti.process.esInitChange.entity.vo.InitChangeDataVO; -import com.jero.modules.activiti.process.esInitChange.service.ProcessEsInitChangeService; -import com.jero.modules.activiti.process.esInitChange.mapper.ProcessEsInitChangeMapper; -import com.jero.modules.activiti.process.esRevision.entity.ProcessEsRevision; -import com.jero.modules.activiti.process.esRevision.service.EsRevisionService; -import com.jero.modules.activiti.process.fb.dto.BasicProcessInfoDTO; -import com.jero.modules.activiti.process.fb.service.IProcessHandleService; -import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO; -import com.jero.modules.activiti.service.ProcessAllService; -import com.jero.modules.activiti.service.ProcessNodeLinkService; -import com.jero.modules.laws.common.constant.FieldCommon; -import com.jero.modules.laws.common.service.ILawsCommonService; -import com.jero.modules.laws.enterprise.entity.EnterpriseStandardAuthDept; -import com.jero.modules.laws.enterprise.entity.EnterpriseStandardPlan; -import com.jero.modules.laws.enterprise.service.ESSequenceNumberProvider; -import com.jero.modules.laws.enterprise.service.EnterpriseStandardAuthDeptService; -import com.jero.modules.laws.enterprise.service.EnterpriseStandardPlanService; -import com.jero.modules.laws.enterprise.util.EnterpriseStandardUtil; -import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard; -import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService; -import com.jero.modules.sys.utils.UserUtils; -import com.jero.modules.tag.enums.TableNameEnum; -import lombok.extern.slf4j.Slf4j; -import org.activiti.engine.RuntimeService; -import org.activiti.engine.TaskService; -import org.activiti.engine.runtime.ProcessInstance; -import org.activiti.engine.task.Task; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Propagation; -import org.springframework.transaction.annotation.Transactional; - -import javax.annotation.Resource; -import java.util.*; -import java.util.stream.Collectors; - -import static com.jero.modules.activiti.process.esInitChange.entity.EsInitChangeConstant.*; - -/** - * @author ThinkBook - * @description 针对表【process_es_init_change(企标计划)】的数据库操作Service实现 - * @createDate 2023-10-10 13:48:56 - */ -@Service -@Transactional(rollbackFor = JeroBootException.class) -@Slf4j -public class ProcessEsInitChangeServiceImpl extends ServiceImpl implements ProcessEsInitChangeService, ESSequenceNumberProvider { - - @Resource - private ActFlowCommonService actFlowCommonService; - - @Resource - private EnterpriseStandardUtil esUtil; - - @Resource - private ProcessNodeLinkService processNodeLinkService; - - @Resource - private RuntimeService runtimeService; - - @Resource - private TaskService taskService; - - @Resource - private ILawsEnterpriseStandardService esService; - - @Resource - private IProcessHandleService processHandleService; - - @Resource - private EsRevisionService revisionService; - - @Resource - private ProcessAllService processAllService; - - @Resource - private ILawsCommonService commonService; - - @Resource - private EnterpriseStandardPlanService espService; - - @Resource - private TranslationAspect translationAspect; - - @Resource - private EnterpriseStandardAuthDeptService esAdService; - - @Override - public void startProcess(InitChangeDataVO initChangeData) { - // 发起的时候校验标准编号是是否重复 - this.validStandardNumber(initChangeData); - // 执行流程发起前的操作 - this.startRunTask(initChangeData); - // 流程Key - String processDefinitionKey = ProcessType.ES_INIT_CHANGE.getProcessKey(); - // 当前用户Id - String userId = UserUtils.getUserId(); - // 业务数据 - List esInitChangeList = initChangeData.getDataList(); - // 通用数据 - CommonVO commonVO = initChangeData.getCommonVO(); - // 设置流程变量 - Map variables = this.setVariables(initChangeData); - // 删除草稿 - actFlowCommonService.getExistDraftAndRemove(commonVO, ProcessTypeEnum.ES_INIT_CHANGE); - // 启动流程 - ProcessInstance processInstance = actFlowCommonService.startProcess(processDefinitionKey, variables); - // 获取流程实例ID - String processDefinitionId = processInstance.getProcessDefinitionId(); - String processInstanceId = processInstance.getId(); - // 手动设置所有流程变量 - actFlowCommonService.setProcessVariables(processInstanceId, variables); - // 设置流程实例Id - esInitChangeList.forEach(e -> e.setProcessInstanceId(processInstanceId)); - // 保存到业务流程表 - saveOrUpdateBatch(esInitChangeList); - // 保存选人信息 - // 人员 - Map flowUserInfoVO = initChangeData.getFlowUserInfoVO(); - processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, flowUserInfoVO); - // 获取第一个任务的taskId - String taskId = actFlowCommonService.getFirstTaskId(processInstanceId, userId, processDefinitionId); - // 手动翻译 - String jsonData = translationAspect.manualParseDictText(this.getHandleData(taskId), flowUserInfoVO); - // 强制撤回 - commonVO.setProcessInstanceId(processInstanceId); - actFlowCommonService.saveFirstNodeDraft(commonVO, ProcessTypeEnum.ES_INIT_CHANGE, jsonData); - // 更新审批表为完成,填充数据 - actFlowCommonService.updateApprovalInfo(commonVO, taskId, true); - // 自动完成第一个任务 - actFlowCommonService.completeTask(taskId, userId); - // 根据流程实例id更新流程总表 - String prcName = commonVO.getPrcName(); - String prcMes = commonVO.getPrcMes(); - Date dueTime = commonVO.getDueTime(); - Integer prcType = ProcessTypeEnum.ES_INIT_CHANGE.getValue(); - actFlowCommonService.updateProcessAll(processInstanceId, userId, prcName, prcMes, prcType, dueTime); - } - - public Map setVariables(InitChangeDataVO initChangeData) { - Map flowUserInfoVO = initChangeData.getFlowUserInfoVO(); - HashMap map = new HashMap<>(flowUserInfoVO); - List initChangeList = initChangeData.getDataList(); - if (initChangeList != null && !initChangeList.isEmpty()) { - ProcessEsInitChange initChange = initChangeList.get(0); - // 添加非列表类型的变量 - actFlowCommonService.putIfNotNull(map, "applicationCategory", initChange.getApplicationCategory()); - actFlowCommonService.putIfNotNull(map, "projectType", initChange.getProjectType()); - } - // 添加列表类型的变量 - actFlowCommonService.convertAndPutList(map, flowUserInfoVO, "standardExpertList"); - actFlowCommonService.convertAndPutList(map, flowUserInfoVO, "relatedUserList"); - return map; - } - - private Map getUserMap(Map variables) { - variables.remove("pass"); - variables.remove("applicationCategory"); - variables.remove("projectType"); - // 转成逗号拼接 - actFlowCommonService.convertListToString(variables); - return variables; - } - - @Override - public InitChangeDataVO getHandleData(String taskId) { - if (!actFlowCommonService.taskExists(taskId)) { - throw new JeroBootException(ResultCommon.TASK_NOT_EXISTS); - } - InitChangeDataVO initChangeDataVO = new InitChangeDataVO(); - // 使用流程引擎根据taskId找到流程实例Id - String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId); - initChangeDataVO.setCommonVO(actFlowCommonService.getHandleCommon(taskId)); - // 获取流程实例数据 - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.eq(ProcessEsInitChange::getProcessInstanceId, processInstanceId); - lambdaQueryWrapper.eq(ProcessEsInitChange::getDelFlag, YesOrNoEnum.NO.getValue()); - List dataList = list(lambdaQueryWrapper); - initChangeDataVO.setDataList(dataList); - return initChangeDataVO; - } - - @Override - public void autoStartProcessByRecheck(String standardNo) { - // 1. 根据企标编号找到对应企标的主起草人 - LambdaQueryWrapper esWrapper = new LambdaQueryWrapper<>(); - esWrapper.eq(LawsEnterpriseStandard::getStandardNumber, standardNo); - esWrapper.eq(LawsEnterpriseStandard::getDelFlag, YesOrNoEnum.NO.getValue()); - LawsEnterpriseStandard es = esService.getOne(esWrapper); - String mainDraftUser = es.getMainDraftingUser(); - if (StrUtil.isBlank(mainDraftUser)) { - log.info("企标编号为{}的主起草人为空,无法自动发起立项变更流程", es.getStandardNumber()); - return; - } - // 流程Key - String processDefinitionKey = ProcessType.ES_INIT_CHANGE.getProcessKey(); - // 设置流程变量 - Map variables = new HashMap<>(); - variables.put("createUser", mainDraftUser); - // 启动流程 - ProcessInstance processInstance = actFlowCommonService.startProcess(processDefinitionKey, variables); - ProcessEsInitChange initChange = new ProcessEsInitChange(); - // 获取流程实例ID - String processDefinitionId = processInstance.getProcessDefinitionId(); - String processInstanceId = processInstance.getId(); - this.setInitChangeData(standardNo, initChange, processInstanceId); - // 保存到业务流程表 - save(initChange); - // 流程名 - String prcName = standardNo + "--立项"; - // 保存选人信息 - // 人员 - processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, variables); - // 创建相应数据 - CommonVO commonVO = new CommonVO(); - commonVO.setPrcName(prcName); - commonVO.setPrcMes(null); - commonVO.setDueTime(null); - commonVO.setProcessInstanceId(processInstanceId); - InitChangeDataVO initChangeDataVO = new InitChangeDataVO(); - initChangeDataVO.setDataList(Collections.singletonList(initChange)); - initChangeDataVO.setCommonVO(commonVO); - // 获取第一个任务的taskId - actFlowCommonService.getFirstTaskId(processInstanceId, mainDraftUser, processDefinitionId); - // 手动翻译 - String jsonData = translationAspect.autoParseDictText(initChangeDataVO, this.getUserMap(variables)); - // 强制撤回 - actFlowCommonService.saveFirstNodeDraft(commonVO, ProcessTypeEnum.ES_INIT_CHANGE, jsonData); - // 根据流程实例id更新流程总表 - Integer prcType = ProcessTypeEnum.ES_INIT_CHANGE.getValue(); - actFlowCommonService.updateProcessAllWithUserId(processInstanceId, mainDraftUser, prcName, null, prcType, null); - } - - private void setInitChangeData(String standardNo, ProcessEsInitChange initChange, String processInstanceId) { - Map es = commonService.getByIdAndModule(null, TableNameEnum.ENTERPRISE_STANDARDS.getValue(), "1", standardNo); - // 获取当前年份 - Calendar date = Calendar.getInstance(); - String curYearNumber = String.valueOf(date.get(Calendar.YEAR)); - initChange.setProcessInstanceId(processInstanceId) - .setNewEnStandardNo(esUtil.changeStandardNumberYearNumber(standardNo, curYearNumber)) - .setApplicationCategory(ESPApplicationCategoryEnum.INITIATION.getValue()) - .setProjectType(ESPProjectType.MODIFY.getValue()) - .setOriginEnStandardNo((String) es.get(FieldCommon.STANDARD_NUMBER)) - .setOriginEnStandardName((String) es.get(FieldCommon.STANDARD_NAME)) - .setDecadeCode((String) es.get(FieldCommon.YEAR_NUMBER)) - .setEnStandardEnglishName((String) es.get(FieldCommon.STANDARD_ENGLISH_NAME)) - .setEnStandardSystem((String) es.get(FieldCommon.STANDARD_SYSTEM)) - .setStandardType((String) es.get(FieldCommon.STANDARD_CLASS)) - .setStandardCategoryCode((String) es.get(FieldCommon.STANDARD_CATEGORY_CODE)) - .setCompilationDescription((String) es.get(FieldCommon.COMP_ILLUSTRATION)) - .setComponentName((String) es.get(FieldCommon.PART_NAME)) - .setMainDraftingUser((String) es.get(FieldCommon.MAIN_DRAFTING_USER)) - .setMainDraftingUnit((String) es.get(FieldCommon.MAIN_DRAFTING_UNIT)) - .setMainDraftingUnitResponsiblePerson((String) es.get(FieldCommon.MAIN_DRAFTING_UNIT_RESPONSIBLE_PERSON)) - .setStandardPromoter((String) es.get(FieldCommon.STANDARD_PROMOTER)) - .setCooperationUnit((String) es.get(FieldCommon.COOPERATION_UNIT)) - .setEnStandardClassification((String) es.get(FieldCommon.GRADE_CLASSIFICATION)) - .setAuthDept((String) es.get(FieldCommon.AUTH_DEPT)); - } - - @Override - public void approvalInitChange(InitChangeDataVO initChangeDataVO, boolean pass) { - String userId = UserUtils.getUserId(); - CommonVO commonVO = initChangeDataVO.getCommonVO(); - String taskId = commonVO.getTaskId(); - if (StrUtil.isBlank(taskId) || !actFlowCommonService.taskExists(taskId)) { - throw new JeroBootException(ResultCommon.TASK_NOT_EXISTS); - } - List initChangeList = initChangeDataVO.getDataList(); - Map flowUserInfoVO = initChangeDataVO.getFlowUserInfoVO(); - String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId); - String processDefinitionId = actFlowCommonService.getProcessDefId(processInstanceId); - Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); - String taskName = task.getName(); - if (pass) { - if (initChangeList != null) { - // 先删后增 - LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); - updateWrapper.eq(ProcessEsInitChange::getProcessInstanceId, processInstanceId); - remove(updateWrapper); - initChangeList.forEach(e -> e.setProcessInstanceId(processInstanceId)); - saveBatch(initChangeList); - // 根据流程实例id更新流程总表 - String prcName = commonVO.getPrcName(); - String prcMes = commonVO.getPrcMes(); - Date dueTime = commonVO.getDueTime(); - Integer prcType = ProcessTypeEnum.ES_INIT_CHANGE.getValue(); - actFlowCommonService.updateProcessAll(processInstanceId, userId, prcName, prcMes, prcType, dueTime); - } - if (flowUserInfoVO != null && !flowUserInfoVO.isEmpty()) { - Map variables = setVariables(initChangeDataVO); - actFlowCommonService.setProcessVariables(processInstanceId, variables); - Map userMap = getUserMap(variables); - processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, userMap); - // 如果是责任部门变更分支,后几个流程需要将部分选人信息保存到业务表中 - String newMainDraftUserLeaderLeader = (String) userMap.get("newMainDraftUserLeaderLeader"); - String newMainDraftUserLeader = (String) userMap.get("newMainDraftUserLeader"); - String relatedUserList = (String) userMap.get("relatedUserList"); - LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); - updateWrapper.eq(ProcessEsInitChange::getProcessInstanceId, processInstanceId); - updateWrapper.set(ProcessEsInitChange::getProcessInstanceId, processInstanceId); - updateWrapper.set(StrUtil.isNotBlank(newMainDraftUserLeaderLeader), ProcessEsInitChange::getNewMainDraftUserLeaderLeader, newMainDraftUserLeaderLeader); - updateWrapper.set(StrUtil.isNotBlank(newMainDraftUserLeader), ProcessEsInitChange::getNewMainDraftUserLeader, newMainDraftUserLeader); - updateWrapper.set(StrUtil.isNotBlank(relatedUserList), ProcessEsInitChange::getRelatedUserList, relatedUserList); - update(updateWrapper); - } - runtimeService.setVariableLocal(processInstanceId, "pass", true); - if (taskName.equals(STANDARDIZATION_CHECK)) { - taskService.setVariable(taskId, "standardizationApprovalUser", userId); - } - } else { - // 设置流程变量 - runtimeService.setVariableLocal(processInstanceId, "pass", false); - } - // 更新审批表为完成,填充数据 - actFlowCommonService.updateApprovalInfo(commonVO, taskId, pass); - // 审批节点 - actFlowCommonService.completeTask(taskId, userId); - // 删除草稿 - actFlowCommonService.removeDraft(commonVO); - if (!pass) { - // 如果是会签节点,驳回后要将其余节点recode设置为 未处理 状态 - if (taskName.equals(CounterSignNodeNameConstants.ES_INIT_CHANGE_EXPERT_NODE_NAME)) { - actFlowCommonService.updateOtherCountersignRecodeStatus(processInstanceId, CounterSignNodeNameConstants.ES_INIT_CHANGE_EXPERT_NODE_NAME); - } - if (taskName.equals(CounterSignNodeNameConstants.COUNTER_SIGN_NODE_NAME)) { - actFlowCommonService.updateOtherCountersignRecodeStatus(processInstanceId, CounterSignNodeNameConstants.COUNTER_SIGN_NODE_NAME); - } - } - } - - @Override - public void saveToDraft(ProcessInfoVO processInfoVO) { - // 流程信息 - BasicProcessInfoDTO basicProcessInfoDTO = processInfoVO.getBasicProcessInfoDTO(); - basicProcessInfoDTO.setProcessType(ProcessTypeEnum.ES_INIT_CHANGE.getValue()); // 流程类型 - - processHandleService.saveToDraft(processInfoVO); - } - - private void validStandardNumber(InitChangeDataVO initChangeData) { - List esInitChangeList = initChangeData.getDataList(); - // 校验企标编号是否冲突 - ProcessEsInitChange initChange = esInitChangeList.get(0); - if (initChange.getProjectType().equals(ESPProjectType.ENACT.getValue())) { - if (!esUtil.verifyEnStandardNumber(initChange.getNewEnStandardNo())) { - throw new JeroBootException(ResultCommon.EN_STANDARD_NUMBER_CONFLICT); - } - } - if (initChange.getProjectType().equals(ESPProjectType.MERGE.getValue())) { - if (!esUtil.verifyEnStandardNumber(initChange.getNewEnStandardNo())) { - throw new JeroBootException(ResultCommon.EN_STANDARD_NUMBER_CONFLICT); - } - } - if (initChange.getProjectType().equals(ESPProjectType.MODIFY.getValue())) { - if (!esUtil.verifyEnStandardNumber(initChange.getNewEnStandardNo())) { - throw new JeroBootException(ResultCommon.NEW_EN_STANDARD_NUMBER_CONFLICT); - } - } - } - - public void startRunTask(InitChangeDataVO initChangeData) { - List esInitChangeList = initChangeData.getDataList(); - // 校验企标编号是否冲突 - ProcessEsInitChange initChange = esInitChangeList.get(0); - if (ESPApplicationCategoryEnum.CHANGE.getValue().equals(initChange.getApplicationCategory())) { - Set espIdSet = new HashSet<>(); - // 如果是变更流程,则需要判断计划是否有效 - if (ESPProjectType.MERGE.getValue().equals(initChange.getProjectType())) { - espIdSet.add(initChange.getStandardIdOne()); - espIdSet.add(initChange.getStandardIdTwo()); - } else { - espIdSet = esInitChangeList.stream().map(ProcessEsInitChange::getEspId).collect(Collectors.toSet()); - } - List esplist = espService.list(new LambdaQueryWrapper().in(EnterpriseStandardPlan::getId, espIdSet)); - if (esplist == null || esplist.size() != espIdSet.size()) { - throw new JeroBootException(ResultCommon.INVALID_ESP); - } - // 如果是责任部门变更,需要判断计划是否已经逾期 - if (ESPProjectType.RESPONSIBLE_DEPT_CHANGE.getValue().equals(initChange.getProjectType())) { - for (EnterpriseStandardPlan esp : esplist) { - if (esp.getProjectStatus().equals(ESPProjectStatus.OVERDUE.getValue())) { - throw new JeroBootException(ResultCommon.INVALID_ESP); - } - } - } - } - } - - @Override - public List getSequenceNumbers(String esCodeDictValue, String esNameCodeDictValue, String categoryCodeDictValue) { - // 已经存在的标准 - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.eq(ProcessEsInitChange::getEnStandardCode, esCodeDictValue); - lambdaQueryWrapper.eq(ProcessEsInitChange::getEnNameCode, esNameCodeDictValue); - lambdaQueryWrapper.eq(ProcessEsInitChange::getStandardCategoryCode, categoryCodeDictValue); - lambdaQueryWrapper.isNotNull(ProcessEsInitChange::getNewEnStandardNo); - List list = this.list(lambdaQueryWrapper); - - return list.stream().map(ProcessEsInitChange::getNewEnStandardNo).map(EnterpriseStandardUtil::getSequenceNoFromStandardNo).collect(Collectors.toList()); - } -} - - - - diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRecheck/controller/ESRecheckController.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esRecheck/controller/ESRecheckController.java deleted file mode 100644 index 14ac9265..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRecheck/controller/ESRecheckController.java +++ /dev/null @@ -1,157 +0,0 @@ -package com.jero.modules.activiti.process.esRecheck.controller; - -import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; -import com.jero.common.api.vo.Result; -import com.jero.common.aspect.annotation.AutoLog; -import com.jero.common.aspect.annotation.Translation; -import com.jero.modules.activiti.enums.ProcessTypeEnum; -import com.jero.modules.activiti.process.common.entity.ProcessDraft; -import com.jero.modules.activiti.process.common.entity.TransferVO; -import com.jero.modules.activiti.process.common.service.ActFlowCommonService; -import com.jero.modules.activiti.process.esRecheck.entity.vo.ESRecheckDataVO; -import com.jero.modules.activiti.process.esRecheck.service.ProcessEsRecheckService; -import com.jero.modules.activiti.process.fb.service.IProcessHandleService; -import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO; -import com.jero.modules.laws.enterprise.entity.dto.ESQueryCommonDTO; -import com.jero.modules.laws.enterprise.service.EnterpriseStandardRecheckPlanService; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import io.swagger.annotations.ApiParam; -import lombok.extern.slf4j.Slf4j; -import org.apache.shiro.authz.annotation.RequiresPermissions; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import javax.annotation.Resource; - - -/** - * @author: Mzaxd - * @Date: 2023/10/18 10:44 - */ -@Slf4j -@RestController -@Api(tags = "企标复审流程") -@RequestMapping("/process/es/recheck") -public class ESRecheckController { - - @Resource - private ProcessEsRecheckService recheckService; - - @Resource - private IProcessHandleService processHandleService; - - @Resource - private ActFlowCommonService actFlowCommonService; - - @Resource - private EnterpriseStandardRecheckPlanService recheckPlanService; - - /** - * 企标复审申请 - * - * @param recheckData - */ - @AutoLog(value = "企标复审流程-发起流程") - @ApiOperation(value="企标复审流程-发起流程", notes="企标复审流程-发起流程") - @PostMapping("/start") - public Result startProcess(@RequestBody ESRecheckDataVO recheckData) { - recheckService.startProcess(recheckData); - return Result.OK(); - } - - /** - * 保存到草稿 - * @param processInfoVO - */ - @AutoLog(value = "企标复审流程-保存") - @ApiOperation(value="企标复审流程-保存", notes="企标复审流程-保存") - @PostMapping("/save") - public Result save(@Validated @RequestBody ProcessInfoVO processInfoVO) { - recheckService.saveToDraft(processInfoVO); - return Result.OK(); - } - - /** - * 保存到待办 - * @param taskId - */ - @AutoLog(value = "企标复审流程-办理") - @ApiOperation(value="企标复审流程-办理", notes="企标复审流程-办理") - @GetMapping("/handle/{taskId}") - @Translation - public Result handle(@PathVariable("taskId") String taskId) { - ProcessDraft draft = actFlowCommonService.getExistDraftByTaskId(taskId, ProcessTypeEnum.ES_RECHECK); - if (draft != null) { - return Result.OK(draft); - } - return Result.OK(recheckService.getHandleData(taskId)); - } - - /** - * 草稿办理 - * @param draftId - */ - @AutoLog(value = "企标复审流程-草稿办理") - @ApiOperation(value="企标复审流程-草稿办理", notes="企标复审流程-草稿办理") - @GetMapping("/draftHandle") - @Translation - public Result draftHandle(@RequestParam("draftId") @ApiParam("草稿Id") String draftId) { - return Result.OK(actFlowCommonService.getExistDraft(draftId, ProcessTypeEnum.ES_RECHECK)); - } - - /** - * 同意 - * - * @param recheckData - */ - @AutoLog(value = "企标复审流程-同意") - @ApiOperation(value="企标复审流程-同意", notes="企标复审流程-同意") - @PostMapping("/agree") - public Result agree(@RequestBody ESRecheckDataVO recheckData) { - recheckService.approval(recheckData, true); - return Result.OK(); - } - - /** - * 驳回 - * - * @param recheckData - */ - @AutoLog(value = "企标复审流程-驳回") - @ApiOperation(value="企标复审流程-驳回", notes="企标复审流程-驳回") - @PostMapping("/reject") - public Result reject(@RequestBody ESRecheckDataVO recheckData) { - recheckService.approval(recheckData, false); - return Result.OK(); - } - - /** - * 转办 - * - */ - @AutoLog(value = "企标复审流程-转办") - @ApiOperation(value="企标复审流程-转办", notes="企标复审流程-转办") - @PostMapping(value = "/transfer") - public Result transfer(@RequestBody TransferVO transferVO) { - processHandleService.transfer(transferVO.getTaskId(), transferVO.getUserId()); - return Result.OK(); - } - - /** - * 分页列表查询 - * - * @return - */ - @AutoLog(value = "企标复审流程-分页列表查询") - @ApiOperationSupport(order = 1) - @ApiOperation(value="企标复审流程-分页列表查询", notes="企标复审流程-分页列表查询") - @GetMapping(value = "/page") - public Result queryPageList(ESQueryCommonDTO esDeclare, - @RequestParam(name="pageNo", defaultValue="1") @ApiParam("页码") Integer pageNo, - @RequestParam(name="pageSize", defaultValue="10") @ApiParam("页面显示数量") Integer pageSize) { - return Result.OK(recheckPlanService.queryPageList(esDeclare, pageNo, pageSize)); - } - - -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRecheck/entity/ProcessEsRecheck.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esRecheck/entity/ProcessEsRecheck.java deleted file mode 100644 index 03ee84da..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRecheck/entity/ProcessEsRecheck.java +++ /dev/null @@ -1,156 +0,0 @@ -package com.jero.modules.activiti.process.esRecheck.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import java.io.Serializable; -import java.util.Date; - -import com.fasterxml.jackson.annotation.JsonFormat; -import com.jero.common.aspect.annotation.Dict; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import org.springframework.format.annotation.DateTimeFormat; - -/** - * 企业标准 - * @TableName process_es_recheck - */ -@TableName(value ="process_es_recheck") -@Data -public class ProcessEsRecheck implements Serializable { - /** - * 主键ID - */ - @TableId(type = IdType.ASSIGN_ID) - @ApiModelProperty(value = "主键ID") - private String id; - - /** - * 创建人 - */ - @ApiModelProperty(value = "创建人") - private String createBy; - - /** - * 创建时间 - */ - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") - @DateTimeFormat(pattern="yyyy-MM-dd") - @ApiModelProperty(value = "创建时间") - private Date createTime; - - /** - * 更新人 - */ - @ApiModelProperty(value = "更新人") - private String updateBy; - - /** - * 更新时间 - */ - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") - @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") - @ApiModelProperty(value = "更新时间") - private Date updateTime; - - /** - * 所属部门 - */ - @ApiModelProperty(value = "所属部门") - private String orgCode; - - /** - * 0表示未删除,1表示删除 - */ - @ApiModelProperty(value = "0表示未删除,1表示删除") - private Integer delFlag; - - /** - * 流程实例Id - */ - @ApiModelProperty(value = "流程实例Id") - private String processInstanceId; - - /** - * 企标Id - */ - @ApiModelProperty(value = "企标Id") - private String standardId; - - /** - * 企标编号 - */ - @ApiModelProperty(value = "企标编号") - private String standardNumber; - - /** - * 企标名称 - */ - @ApiModelProperty(value = "企标名称") - private String standardName; - - /** - * 发布日期 - */ - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") - @DateTimeFormat(pattern="yyyy-MM-dd") - @ApiModelProperty(value = "发布日期") - private Date releaseDate; - - /** - * 实施日期 - */ - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") - @DateTimeFormat(pattern="yyyy-MM-dd") - @ApiModelProperty(value = "实施日期") - private Date implementationDate; - - /** - * 复审日期 - */ - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") - @DateTimeFormat(pattern="yyyy-MM-dd") - @ApiModelProperty(value = "复审日期") - private Date recheckDate; - - /** - * 主起草人 - */ - @ApiModelProperty(value = "主起草人") - @Dict(dictTable = "sys_user", dicCode = "id", dicText = "CONCAT(realname, '(', username, ')')") - private String mainDraftingUser; - - /** - * 主起草单位 - */ - @ApiModelProperty(value = "主起草单位") - @Dict(dictTable = "sys_depart", dicCode = "id", dicText = "depart_name") - private String mainDraftingUnit; - - /** - * 复审意见 继续有效/修订/废止/封存 - */ - @Dict(dicCode = "recheck_advice") - @ApiModelProperty(value = "复审意见 继续有效/修订/废止/封存") - private String recheckAdvice; - - @ApiModelProperty(value = "复审计划Id") - private String recheckPlanId; - - /** - * 是否显示 - */ - @ApiModelProperty(value = "0不显示 1显示") - private Integer showFirstNode; - - /** - * 联络人 - */ - @ApiModelProperty(value = "联络人") - private String standardizationUser; - - @TableField(exist = false) - private static final long serialVersionUID = 1L; -} \ No newline at end of file diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRecheck/entity/ProcessRecheckConstants.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esRecheck/entity/ProcessRecheckConstants.java deleted file mode 100644 index 1c996b9d..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRecheck/entity/ProcessRecheckConstants.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.jero.modules.activiti.process.esRecheck.entity; - -/** - * @author: Mzaxd - * @Date: 2023/11/20 14:17 - */ -public class ProcessRecheckConstants { - - // 继续有效 - public static final String RECHECK_CONTINUE_VALID = "1"; - - // 修订 - public static final String RECHECK_INIT_CHANGE = "2"; - - // 废止 - public static final String RECHECK_ABOLISH = "3"; - - // 封存 - public static final String RECHECK_ARCHIVE = "4"; -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRecheck/entity/RecheckTaskNameConstant.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esRecheck/entity/RecheckTaskNameConstant.java deleted file mode 100644 index 786a067a..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRecheck/entity/RecheckTaskNameConstant.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.jero.modules.activiti.process.esRecheck.entity; - -/** - * @author: Mzaxd - * @Date: 2024/1/10 10:28 - */ -public class RecheckTaskNameConstant { - - public static final String STANDARD_ENGINEER_INIT = "标准化发起"; - public static final String CONTACT_USER_DISTRIBUTE = "联络人下发"; - public static final String DRAFTER_EDIT = "起草人填写意见"; - public static final String DRAFTER_LEADER_APPROVAL = "起草人部长审批"; - public static final String STANDARDIZATION_APPROVAL = "标准化审批"; - -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRecheck/entity/vo/ESRecheckDataVO.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esRecheck/entity/vo/ESRecheckDataVO.java deleted file mode 100644 index 72667d07..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRecheck/entity/vo/ESRecheckDataVO.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.jero.modules.activiti.process.esRecheck.entity.vo; - -import com.fasterxml.jackson.annotation.JsonProperty; -import com.jero.modules.activiti.process.common.entity.CommonVO; -import com.jero.modules.activiti.process.esInitChange.entity.ProcessEsInitChange; -import com.jero.modules.activiti.process.esRecheck.entity.ProcessEsRecheck; -import lombok.Data; - -import java.util.List; -import java.util.Map; - -/** - * @author: Mzaxd - * @Date: 2023/10/26 8:13 - */ -@Data -public class ESRecheckDataVO { - - @JsonProperty("common") - CommonVO common; - - @JsonProperty("data") - ProcessEsRecheck data; - - @JsonProperty("flowUser") - Map flowUser; -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRecheck/listener/ProcessESRecheckEndListener.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esRecheck/listener/ProcessESRecheckEndListener.java deleted file mode 100644 index b73d9a9f..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRecheck/listener/ProcessESRecheckEndListener.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.jero.modules.activiti.process.esRecheck.listener; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import com.jero.common.constant.enums.YesOrNoEnum; -import com.jero.modules.activiti.process.common.enums.StandardStateEnum; -import com.jero.modules.activiti.process.esInitChange.service.ProcessEsInitChangeService; -import com.jero.modules.activiti.process.esRecheck.entity.ProcessEsRecheck; -import com.jero.modules.activiti.process.esRecheck.service.ProcessEsRecheckService; -import com.jero.modules.laws.enterprise.entity.EnterpriseStandardRecheckPlan; -import com.jero.modules.laws.enterprise.service.EnterpriseStandardRecheckPlanService; -import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard; -import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService; -import lombok.extern.slf4j.Slf4j; -import org.activiti.engine.delegate.DelegateExecution; -import org.activiti.engine.delegate.ExecutionListener; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; -import java.util.Date; - -import static com.jero.modules.activiti.process.esRecheck.entity.ProcessRecheckConstants.*; - -/** - * @author: Mzaxd - * @Date: 2023/10/10 14:14 - */ -@Slf4j -@Component -public class ProcessESRecheckEndListener implements ExecutionListener { - - /** - * 1.继续有效:更新下次复审时间,不做其他处理。企标属性里留下复审记录(列表)(复审时间更新的逻辑待定) - * 2.修订:自动刚发起企标立项变更流程(修订模式) - * 3.废止:自动把企标的状态改为“废止” - * 4.封存:自动把企标的状态改为“封存” - * @param delegateExecution - */ - - @Resource - private ProcessEsRecheckService esRecheckService; - - @Resource - private EnterpriseStandardRecheckPlanService esRecheckPlanService; - - @Resource - private ProcessEsInitChangeService esInitChangeService; - - @Resource - private ILawsEnterpriseStandardService esService; - - @Override - public void notify(DelegateExecution delegateExecution) { - log.info("企标复审流程结束 监听执行器开始执行"); - // 找到流程实例Id - String processInstanceId = delegateExecution.getProcessInstanceId(); - LambdaQueryWrapper recheckLambdaQueryWrapper = new LambdaQueryWrapper<>(); - recheckLambdaQueryWrapper.eq(ProcessEsRecheck::getProcessInstanceId, processInstanceId); - ProcessEsRecheck recheck = esRecheckService.getOne(recheckLambdaQueryWrapper); - String recheckAdvice = recheck.getRecheckAdvice(); - String recheckPlanId = recheck.getRecheckPlanId(); - EnterpriseStandardRecheckPlan recheckPlan = esRecheckPlanService.getById(recheckPlanId); - recheckPlan.setInProcessFlag(YesOrNoEnum.NO.getValue()); - esRecheckPlanService.updateById(recheckPlan); - String standNo = recheck.getStandardNumber(); - LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); - wrapper.eq(EnterpriseStandardRecheckPlan::getStandardNo, standNo); - wrapper.set(EnterpriseStandardRecheckPlan::getInProcessFlag, YesOrNoEnum.NO.getValue()); - log.info("企标复审流程结束 监听执行器开始执行,企标编号为:{}", standNo); - if (RECHECK_CONTINUE_VALID.equals(recheckAdvice)) { - // 获取复审计划记录 - EnterpriseStandardRecheckPlan plan = esRecheckPlanService.getById(recheck.getRecheckPlanId()); - // 继续有效 - plan.setRecheckResult(RECHECK_CONTINUE_VALID); - Date recheckDate = plan.getRecheckDate(); - // 复审日期再加3年 - Date nextRecheckDate = new Date(recheckDate.getTime() + (3 * 365 - 1) * 24 * 60 * 60 * 1000L); - plan.setRecheckDate(nextRecheckDate); - esRecheckPlanService.updateById(plan); - LambdaUpdateWrapper esWrapper = new LambdaUpdateWrapper<>(); - esWrapper.eq(LawsEnterpriseStandard::getStandardNumber, standNo); - esWrapper.set(LawsEnterpriseStandard::getStandardState, StandardStateEnum.CURRENTLY_EFFECTIVE.getStateValue()); - esService.update(esWrapper); - } - if (RECHECK_INIT_CHANGE.equals(recheckAdvice)) { - // 废止 - wrapper.set(EnterpriseStandardRecheckPlan::getRecheckResult, RECHECK_INIT_CHANGE); - // 修订 自动发起企标立项/变更流程(修订模式) - esInitChangeService.autoStartProcessByRecheck(standNo); - } - if (RECHECK_ABOLISH.equals(recheckAdvice)) { - // 废止 - wrapper.set(EnterpriseStandardRecheckPlan::getRecheckResult, RECHECK_ABOLISH); - LambdaUpdateWrapper esWrapper = new LambdaUpdateWrapper<>(); - esWrapper.eq(LawsEnterpriseStandard::getStandardNumber, standNo); - esWrapper.set(LawsEnterpriseStandard::getStandardState, StandardStateEnum.ABOLISH.getStateValue()); - esService.update(esWrapper); - } - if (RECHECK_ARCHIVE.equals(recheckAdvice)) { - // 封存 - wrapper.set(EnterpriseStandardRecheckPlan::getRecheckResult, RECHECK_ARCHIVE); - LambdaUpdateWrapper esWrapper = new LambdaUpdateWrapper<>(); - esWrapper.eq(LawsEnterpriseStandard::getStandardNumber, standNo); - esWrapper.set(LawsEnterpriseStandard::getStandardState, StandardStateEnum.ARCHIVE.getStateValue()); - esService.update(esWrapper); - } - esRecheckPlanService.update(wrapper); - log.info("企标复审流程监听执行器执行结束"); - } -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRecheck/mapper/ProcessEsRecheckMapper.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esRecheck/mapper/ProcessEsRecheckMapper.java deleted file mode 100644 index 802b436f..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRecheck/mapper/ProcessEsRecheckMapper.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.jero.modules.activiti.process.esRecheck.mapper; - -import com.jero.modules.activiti.process.esRecheck.entity.ProcessEsRecheck; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; - -/** -* @author ThinkBook -* @description 针对表【process_es_recheck(企业标准)】的数据库操作Mapper -* @createDate 2023-10-29 21:00:54 -* @Entity com.jero.modules.activiti.process.esRecheck.entity.ProcessEsRecheck -*/ -public interface ProcessEsRecheckMapper extends BaseMapper { - -} - - - - diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRecheck/mapper/xml/ProcessEsRecheckMapper.xml b/laws-modules/src/main/java/com/jero/modules/activiti/process/esRecheck/mapper/xml/ProcessEsRecheckMapper.xml deleted file mode 100644 index cc4d6199..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRecheck/mapper/xml/ProcessEsRecheckMapper.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - id,create_by,create_time, - update_by,update_time,org_code, - del_flag,process_instance_id,standard_number, - standard_name,release_date,implementation_date, - main_drafting_user,main_drafting_unit,recheck_advice - - diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRecheck/service/ProcessEsRecheckService.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esRecheck/service/ProcessEsRecheckService.java deleted file mode 100644 index 01dc5e12..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRecheck/service/ProcessEsRecheckService.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.jero.modules.activiti.process.esRecheck.service; - -import com.jero.modules.activiti.process.esRecheck.entity.ProcessEsRecheck; -import com.baomidou.mybatisplus.extension.service.IService; -import com.jero.modules.activiti.process.esRecheck.entity.vo.ESRecheckDataVO; -import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO; - -/** -* @author ThinkBook -* @description 针对表【process_es_recheck(企业标准)】的数据库操作Service -* @createDate 2023-10-29 21:00:54 -*/ -public interface ProcessEsRecheckService extends IService { - - void startProcess(ESRecheckDataVO recheckData); - - void autoStartProcess(ESRecheckDataVO recheckData); - - void saveToDraft(ProcessInfoVO recheckData); - - ESRecheckDataVO getHandleData(String taskId); - - void approval(ESRecheckDataVO recheckData, boolean pass); - -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRecheck/service/impl/ProcessEsRecheckServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esRecheck/service/impl/ProcessEsRecheckServiceImpl.java deleted file mode 100644 index 19d4887b..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRecheck/service/impl/ProcessEsRecheckServiceImpl.java +++ /dev/null @@ -1,318 +0,0 @@ -package com.jero.modules.activiti.process.esRecheck.service.impl; - -import cn.hutool.core.util.StrUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.jero.common.api.vo.ResultCommon; -import com.jero.common.aspect.TranslationAspect; -import com.jero.common.constant.enums.YesOrNoEnum; -import com.jero.common.exception.JeroBootException; -import com.jero.modules.activiti.enums.ProcessTypeEnum; -import com.jero.modules.activiti.process.common.entity.CommonVO; -import com.jero.modules.activiti.process.common.enums.ProcessType; -import com.jero.modules.activiti.process.common.service.ActFlowCommonService; -import com.jero.modules.activiti.process.esChange.entity.ProcessEsChange; -import com.jero.modules.activiti.process.esRecheck.entity.ProcessEsRecheck; -import com.jero.modules.activiti.process.esRecheck.entity.vo.ESRecheckDataVO; -import com.jero.modules.activiti.process.esRecheck.service.ProcessEsRecheckService; -import com.jero.modules.activiti.process.esRecheck.mapper.ProcessEsRecheckMapper; -import com.jero.modules.activiti.process.fb.dto.BasicProcessInfoDTO; -import com.jero.modules.activiti.process.fb.service.IProcessHandleService; -import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO; -import com.jero.modules.activiti.service.ProcessNodeLinkService; -import com.jero.modules.laws.enterprise.entity.EnterpriseStandardRecheckPlan; -import com.jero.modules.laws.enterprise.service.EnterpriseStandardRecheckPlanService; -import com.jero.modules.sys.utils.UserUtils; -import lombok.extern.slf4j.Slf4j; -import org.activiti.engine.RuntimeService; -import org.activiti.engine.TaskService; -import org.activiti.engine.runtime.ProcessInstance; -import org.activiti.engine.task.Task; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import javax.annotation.Resource; -import java.util.*; - - -import static com.jero.modules.activiti.process.esRecheck.entity.RecheckTaskNameConstant.*; - -/** - * @author ThinkBook - * @description 针对表【process_es_recheck(企业标准)】的数据库操作Service实现 - * @createDate 2023-10-29 21:00:54 - */ -@Slf4j -@Transactional(rollbackFor = JeroBootException.class) -@Service -public class ProcessEsRecheckServiceImpl extends ServiceImpl - implements ProcessEsRecheckService { - - @Resource - private ActFlowCommonService actFlowCommonService; - - @Resource - private ProcessNodeLinkService processNodeLinkService; - - @Resource - private RuntimeService runtimeService; - - @Resource - private IProcessHandleService processHandleService; - - @Resource - private TaskService taskService; - - @Resource - private TranslationAspect translationAspect; - - @Resource - private EnterpriseStandardRecheckPlanService esRecheckService; - - @Override - public void startProcess(ESRecheckDataVO recheckData) { - // 执行流程发起前的操作 - this.startRunTask(recheckData); - // 将计划设为流程进行中 - String recheckPlanId = recheckData.getData().getRecheckPlanId(); - EnterpriseStandardRecheckPlan recheckPlan = esRecheckService.getById(recheckPlanId); - if (recheckPlan == null) { - throw new JeroBootException("企标复审计划无效,请重新提交"); - } - recheckPlan.setInProcessFlag(YesOrNoEnum.YES.getValue()); - esRecheckService.updateById(recheckPlan); - // 流程Key - String processDefinitionKey = ProcessType.ES_RECHECK.getProcessKey(); - // 当前用户Id - String userId = UserUtils.getUserId(); - // 业务数据 - ProcessEsRecheck esRecheck = recheckData.getData(); - // 手动发起不显示第一个节点 - esRecheck.setShowFirstNode(YesOrNoEnum.NO.getInteger()); - // 通用数据 - CommonVO common = recheckData.getCommon(); - // 人员数据 - Map variables = recheckData.getFlowUser(); - // 设置流程变量 - Map actVariables = this.setVariables(variables); - // 删除草稿 - actFlowCommonService.getExistDraftAndRemove(common, ProcessTypeEnum.ES_RECHECK); - // 启动流程 - ProcessInstance processInstance = actFlowCommonService.startProcess(processDefinitionKey, actVariables); - // 获取流程实例ID - String processDefinitionId = processInstance.getProcessDefinitionId(); - String processInstanceId = processInstance.getId(); - // 手动设置所有流程变量 - actFlowCommonService.setProcessVariables(processInstanceId, actVariables); - // 设置流程实例Id - esRecheck.setProcessInstanceId(processInstanceId); - // 保存到业务流程表 - saveOrUpdate(esRecheck); - // 保存选人信息 - processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, this.getUserMap(variables)); - // 获取第一个任务的taskId - String taskId = actFlowCommonService.getFirstTaskId(processInstanceId, userId, processDefinitionId); - // 手动翻译 - String jsonData = translationAspect.manualParseDictText(this.getHandleData(taskId), this.getUserMap(variables)); - // 强制撤回 - common.setProcessInstanceId(processInstanceId); - actFlowCommonService.saveFirstNodeDraft(common, ProcessTypeEnum.ES_RECHECK, jsonData); - // 更新审批表为完成,填充数据 - actFlowCommonService.updateApprovalInfo(common, taskId, true); - // 自动完成第一个任务 - actFlowCommonService.completeTask(taskId, userId); - // 根据流程实例id更新流程总表 - String prcName = common.getPrcName(); - String prcMes = common.getPrcMes(); - Date dueTime = common.getDueTime(); - Integer prcType = ProcessTypeEnum.ES_RECHECK.getValue(); - actFlowCommonService.updateProcessAll(processInstanceId, userId, prcName, prcMes, prcType, dueTime); - } - - @Override - public void autoStartProcess(ESRecheckDataVO recheckData) { - // 执行流程发起前的操作 - this.startRunTask(recheckData); - // 流程Key - String processDefinitionKey = ProcessType.ES_RECHECK.getProcessKey(); - // 业务数据 - ProcessEsRecheck esRecheck = recheckData.getData(); - // 通用数据 - CommonVO common = recheckData.getCommon(); - // 人员数据 - Map variables = recheckData.getFlowUser(); - // 当前数据的标准化工程师 - String standardEngineerId = (String) variables.get("standardEngineer"); - String standardizationUserId = (String) variables.get("standardizationUser"); - String userId = StrUtil.isNotBlank(standardizationUserId) ? standardizationUserId : standardEngineerId; - // 设置流程变量 - Map actVariables = this.setVariablesAutoStart(variables); - // 启动流程 - ProcessInstance processInstance = actFlowCommonService.startProcess(processDefinitionKey, actVariables); - // 获取流程实例ID - String processDefinitionId = processInstance.getProcessDefinitionId(); - String processInstanceId = processInstance.getId(); - // 手动设置所有流程变量 - actFlowCommonService.setProcessVariables(processInstanceId, actVariables); - // 设置流程实例Id - esRecheck.setProcessInstanceId(processInstanceId); - // 保存到业务流程表 - saveOrUpdate(esRecheck); - // 保存选人信息 - processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, this.getUserMap(variables)); - // 获取第一个任务的taskId - actFlowCommonService.getFirstTaskId(processInstanceId, userId, processDefinitionId); - recheckData.setFlowUser(null); - // 手动翻译 - String jsonData = translationAspect.autoParseDictText(recheckData, this.getUserMap(variables)); - // 强制撤回 - common.setProcessInstanceId(processInstanceId); - actFlowCommonService.saveFirstNodeDraftCustomUserId(common, ProcessTypeEnum.ES_RECHECK, jsonData, userId); - // 根据流程实例id更新流程总表 - String prcName = common.getPrcName(); - String prcMes = common.getPrcMes(); - Date dueTime = common.getDueTime(); - Integer prcType = ProcessTypeEnum.ES_RECHECK.getValue(); - actFlowCommonService.updateProcessAllWithUserId(processInstanceId, userId, prcName, prcMes, prcType, dueTime); - } - - public Map setVariables(Map flowUser) { - Map actVariables = new HashMap<>(); - for (Map.Entry entry : flowUser.entrySet()) { - String key = entry.getKey(); - actFlowCommonService.putIfNotNull(actVariables, key, entry.getValue()); - } - return actVariables; - } - - public Map setVariablesAutoStart(Map flowUser) { - Map actVariables = new HashMap<>(); - for (Map.Entry entry : flowUser.entrySet()) { - String key = entry.getKey(); - actFlowCommonService.putIfNotNull(actVariables, key, entry.getValue()); - actVariables.put(key, entry.getValue()); - } - return actVariables; - } - - private Map getUserMap(Map variables) { - variables.remove("pass"); - return variables; - } - - @Override - public void saveToDraft(ProcessInfoVO processInfoVO) { - ESRecheckDataVO businessInfoDTO = processInfoVO.getBusinessInfoDTO(); - if (businessInfoDTO != null) { - ProcessEsRecheck data = businessInfoDTO.getData(); - if (data != null) { - processInfoVO.setBusinessId(data.getId()); - } - } - - // 流程信息 - BasicProcessInfoDTO basicProcessInfoDTO = processInfoVO.getBasicProcessInfoDTO(); - basicProcessInfoDTO.setProcessType(ProcessTypeEnum.ES_RECHECK.getValue()); // 流程类型 - - processHandleService.saveToDraft(processInfoVO); - } - - public void startRunTask(ESRecheckDataVO recheckData) { - // 如果标准当前状态是废止或封存,不能发起变更流程 - ProcessEsRecheck data = recheckData.getData(); - if (data != null) { - actFlowCommonService.checkStandardState(data.getStandardId()); - } - } - - @Override - public ESRecheckDataVO getHandleData(String taskId) { - if (!actFlowCommonService.taskExists(taskId)) { - throw new JeroBootException(ResultCommon.TASK_NOT_EXISTS); - } - ESRecheckDataVO recheckData = new ESRecheckDataVO(); - // 使用流程引擎根据taskId找到流程实例Id - String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId); - recheckData.setCommon(actFlowCommonService.getHandleCommon(taskId)); - // 获取流程实例数据 - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.eq(ProcessEsRecheck::getProcessInstanceId, processInstanceId); - lambdaQueryWrapper.eq(ProcessEsRecheck::getDelFlag, YesOrNoEnum.NO.getValue()); - ProcessEsRecheck data = getOne(lambdaQueryWrapper); - recheckData.setData(data); - return recheckData; - } - - @Override - public void approval(ESRecheckDataVO recheckData, boolean pass) { - String userId = UserUtils.getUserId(); - CommonVO commonVO = recheckData.getCommon(); - String taskId = commonVO.getTaskId(); - if (StrUtil.isBlank(taskId) || !actFlowCommonService.taskExists(taskId)) { - throw new JeroBootException(ResultCommon.TASK_NOT_EXISTS); - } - ProcessEsRecheck data = recheckData.getData(); - Map flowUser = recheckData.getFlowUser(); - String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId); - if (pass) { - saveOrUpdate(recheckData.getData()); - if (flowUser != null) { - // 人员数据 - Map variables = recheckData.getFlowUser(); - // 设置联络人节点人员 - actFlowCommonService.putIfNotNull(variables, "standardizationUser", data.getStandardizationUser()); - // 设置流程变量 - Map actVariables = this.setVariables(variables); - // 根据流程实例Id获取流程定义ID - ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult(); - // 获取流程实例ID - String processDefinitionId = processInstance.getProcessDefinitionId(); - // 手动设置所有流程变量 - actFlowCommonService.setProcessVariables(processInstanceId, actVariables); - // 保存选人信息 - processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, this.getUserMap(variables)); - // 根据流程实例id更新流程总表 - String prcName = commonVO.getPrcName(); - String prcMes = commonVO.getPrcMes(); - Date dueTime = commonVO.getDueTime(); - Integer prcType = ProcessTypeEnum.ES_RECHECK.getValue(); - actFlowCommonService.updateProcessAll(processInstanceId, userId, prcName, prcMes, prcType, dueTime); - } - if (data != null) { - updateById(data); - // 根据流程实例id更新流程总表 - String prcName = commonVO.getPrcName(); - String prcMes = commonVO.getPrcMes(); - Date dueTime = commonVO.getDueTime(); - Integer prcType = ProcessTypeEnum.ES_RECHECK.getValue(); - actFlowCommonService.updateProcessAll(processInstanceId, userId, prcName, prcMes, prcType, dueTime); - } - } - Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); - String taskName = task.getName(); - switch (taskName) { - case DRAFTER_EDIT: - taskService.setVariable(taskId, "mainDraftUser", userId); - break; - case DRAFTER_LEADER_APPROVAL: - taskService.setVariable(taskId, "mainDraftUserLeader", userId); - break; - case STANDARDIZATION_APPROVAL: - taskService.setVariable(taskId, "finalStandardEngineer", userId); - break; - } - // 设置流程变量 - runtimeService.setVariable(processInstanceId, "pass", pass); - // 更新审批表为完成,填充数据 - actFlowCommonService.updateApprovalInfo(commonVO, taskId, pass); - // 审批节点 - actFlowCommonService.completeTask(taskId, userId); - // 删除草稿 - actFlowCommonService.removeDraft(commonVO); - } - -} - - - - diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/controller/ESRevisionController.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/controller/ESRevisionController.java deleted file mode 100644 index 8aa27d3e..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/controller/ESRevisionController.java +++ /dev/null @@ -1,145 +0,0 @@ -package com.jero.modules.activiti.process.esRevision.controller; - -import com.jero.common.api.vo.Result; -import com.jero.common.aspect.annotation.AutoLog; -import com.jero.common.aspect.annotation.Translation; -import com.jero.modules.activiti.enums.ProcessTypeEnum; -import com.jero.modules.activiti.process.common.entity.ProcessDraft; -import com.jero.modules.activiti.process.common.entity.TransferVO; -import com.jero.modules.activiti.process.common.service.ActFlowCommonService; -import com.jero.modules.activiti.process.esRevision.entity.vo.ESRevisionDataVO; -import com.jero.modules.activiti.process.esRevision.service.EsRevisionService; -import com.jero.modules.activiti.process.fb.service.IProcessHandleService; -import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import io.swagger.annotations.ApiParam; -import lombok.extern.slf4j.Slf4j; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import javax.annotation.Resource; - - -/** - * @author: Mzaxd - * @Date: 2023/10/18 10:44 - */ -@Slf4j -@RestController -@Api(tags = "企标制修订流程") -@RequestMapping("/process/es/revision") -public class ESRevisionController { - - @Resource - private EsRevisionService revisionService; - - @Resource - private IProcessHandleService processHandleService; - - @Resource - private ActFlowCommonService actFlowCommonService; - - /** - * 企标制修订流程 - * - * @param revisionData - */ - @AutoLog(value = "企标制修订流程-发起流程") - @ApiOperation(value="企标制修订流程-发起流程", notes="企标制修订流程-发起流程") - @PostMapping("/start") - public Result startProcess(@RequestBody ESRevisionDataVO revisionData) { - revisionService.startProcess(revisionData); - return Result.OK(); - } - - /** - * 保存到草稿 - * @param processInfoVO - */ - @AutoLog(value = "企标制修订流程-保存") - @ApiOperation(value="企标制修订流程-保存", notes="企标制修订流程-保存") - @PostMapping("/save") - public Result save(@Validated @RequestBody ProcessInfoVO processInfoVO) { - String draftId = revisionService.saveToDraft(processInfoVO); - return Result.OK((Object) draftId); - } - - /** - * 保存到待办 - * @param taskId - */ - @AutoLog(value = "企标制修订流程-办理") - @ApiOperation(value="企标制修订流程-办理", notes="企标制修订流程-办理") - @GetMapping("/handle/{taskId}") - @Translation - public Result handle(@PathVariable("taskId") String taskId) { - ProcessDraft draft = actFlowCommonService.getExistDraftByTaskId(taskId, ProcessTypeEnum.ES_REVISION); - if (draft != null) { - return Result.OK(draft); - } - return Result.OK(revisionService.getHandleData(taskId)); - } - - /** - * 草稿办理 - * @param draftId - */ - @AutoLog(value = "企标制修订流程-草稿办理") - @ApiOperation(value="企标制修订流程-草稿办理", notes="企标制修订流程-草稿办理") - @GetMapping("/draftHandle") - @Translation - public Result draftHandle(@RequestParam("draftId") @ApiParam("草稿Id") String draftId) { - return Result.OK(actFlowCommonService.getExistDraft(draftId, ProcessTypeEnum.ES_REVISION)); - } - - /** - * 同意 - * - * @param revisionData - */ - @AutoLog(value = "企标制修订流程-同意") - @ApiOperation(value="企标制修订流程-同意", notes="企标制修订流程-同意") - @PostMapping("/agree") - public Result agree(@RequestBody ESRevisionDataVO revisionData) { - revisionService.approval(revisionData, true); - return Result.OK(); - } - - /** - * 驳回 - * - * @param revisionData - */ - @AutoLog(value = "企标制修订流程-驳回") - @ApiOperation(value="企标制修订流程-驳回", notes="企标制修订流程-驳回") - @PostMapping("/reject") - public Result reject(@RequestBody ESRevisionDataVO revisionData) { - revisionService.approval(revisionData, false); - return Result.OK(); - } - - /** - * 转办 - * - */ - @AutoLog(value = "企标制修订流程-转办") - @ApiOperation(value="企标制修订流程-转办", notes="企标制修订流程-转办") - @PostMapping(value = "/transfer") - public Result transfer(@RequestBody TransferVO transferVO) { - revisionService.transfer(transferVO.getTaskId(), transferVO.getUserId()); - return Result.OK(); - } - - /** - * 获取签署信息 - * - */ - @AutoLog(value = "企标制修订流程-获取签署信息") - @ApiOperation(value="企标制修订流程-获取签署信息", notes="企标制修订流程-获取签署信息") - @GetMapping(value = "/getSignInfo") - public Result getSignInfo(@RequestParam String processInstanceId) { - return Result.OK(revisionService.getSignInfo(processInstanceId)); - } - -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/entity/EsRevisionAdvice.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/entity/EsRevisionAdvice.java deleted file mode 100644 index df4279cd..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/entity/EsRevisionAdvice.java +++ /dev/null @@ -1,114 +0,0 @@ -package com.jero.modules.activiti.process.esRevision.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import java.io.Serializable; -import java.util.Date; - -import com.jero.common.aspect.annotation.Dict; -import io.swagger.annotations.ApiModelProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * - * @TableName process_es_revision_advice - */ -@TableName(value ="process_es_revision_advice") -@Data -@NoArgsConstructor -@AllArgsConstructor -public class EsRevisionAdvice implements Serializable { - /** - * 主键ID - */ - @TableId(type = IdType.ASSIGN_ID) - @ApiModelProperty(value = "主键ID") - private String id; - - /** - * 创建人 - */ - @ApiModelProperty(value = "创建人") - private String createBy; - - /** - * 创建时间 - */ - @ApiModelProperty(value = "创建时间") - private Date createTime; - - /** - * 更新人 - */ - @ApiModelProperty(value = "更新人") - private String updateBy; - - /** - * 更新时间 - */ - @ApiModelProperty(value = "更新时间") - private Date updateTime; - - /** - * 所属部门 - */ - @ApiModelProperty(value = "所属部门") - private String orgCode; - - /** - * 流程实例Id - */ - @ApiModelProperty(value = "流程实例Id") - private String processInstanceId; - - /** - * 执行id - */ - @ApiModelProperty(value = "执行id") - private String executionId; - - /** - * 条款号 - */ - @ApiModelProperty(value = "条款号") - private String clauseNum; - - /** - * 条款名称 - */ - @ApiModelProperty(value = "条款名称") - private String clauseName; - - /** - * 修改意见内容(包括修改理由和依据) - */ - @ApiModelProperty(value = "修改意见内容(包括修改理由和依据)") - private String editAdvice; - - /** - * 意见提出人 - */ - @Dict(dictTable = "sys_user", dicText = "CONCAT(realname, '(', username, ')')", dicCode = "id") - @ApiModelProperty(value = "意见提出人") - private String createUserId; - - /** - * 1采纳 2部分采纳 3不采纳 - */ - @ApiModelProperty(value = "1采纳 2部分采纳 3不采纳") - @Dict(dicCode = "consultation_opinion") - private String handleAdvice; - - /** - * 理由 - */ - @ApiModelProperty(value = "理由") - private String reason; - - @TableField(exist = false) - private static final long serialVersionUID = 1L; -} \ No newline at end of file diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/entity/HandleAdviceEnum.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/entity/HandleAdviceEnum.java deleted file mode 100644 index 30773d91..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/entity/HandleAdviceEnum.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.jero.modules.activiti.process.esRevision.entity; - -import lombok.Getter; - -/** - * @author: Mzaxd - * @Date: 2024/1/28 17:36 - */ -@Getter -public enum HandleAdviceEnum { - - /** - * 1:采纳 - */ - AGREE("同意", "1"), - - /** - * 2:部分采纳 - */ - PART_DISAGREE("部分采纳", "2"), - - /** - * 3:不采纳 - */ - DISAGREE("不采纳", "3"), - ; - - private final String name; - - private final String value; - - - HandleAdviceEnum(String name, String value) { - this.name = name; - this.value = value; - } - -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/entity/OperateTypeEnum.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/entity/OperateTypeEnum.java deleted file mode 100644 index f7b40243..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/entity/OperateTypeEnum.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.jero.modules.activiti.process.esRevision.entity; - -import lombok.Getter; - -/** - * @author: Mzaxd - * @Date: 2023/12/22 15:04 - */ -@Getter -public enum OperateTypeEnum { - - CANNOT_OPERATE("不能操作显示", "1"), - UPLOAD_AND_CHANGE_DRAFT_USER("可以上传并且将起草人改为‘我’", "2"), - UPLOAD("可以上传起草人字段维持不变", "3"); - - private final String name; - private final String value; - - OperateTypeEnum(String name, String value) { - this.name = name; - this.value = value; - } - -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/entity/ProcessEsRevision.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/entity/ProcessEsRevision.java deleted file mode 100644 index d3e21988..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/entity/ProcessEsRevision.java +++ /dev/null @@ -1,363 +0,0 @@ -package com.jero.modules.activiti.process.esRevision.entity; - -import com.alibaba.fastjson.JSON; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import java.io.Serializable; -import java.util.Date; -import java.util.List; - -import com.fasterxml.jackson.annotation.JsonFormat; -import com.jero.common.aspect.annotation.Dict; -import com.jero.modules.activiti.process.esRevision.entity.vo.InspectContentVO; -import com.jero.modules.activiti.process.esRevision.entity.vo.OtherDraftUserVO; -import com.jero.modules.activiti.process.esRevision.entity.vo.ReviewMeetingDetailVO; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import org.springframework.format.annotation.DateTimeFormat; - -/** - * - * @TableName process_es_revision - */ -@TableName(value ="process_es_revision") -@Data -public class ProcessEsRevision implements Serializable { - /** - * 主键ID - */ - @TableId(type = IdType.ASSIGN_ID) - @ApiModelProperty(value = "主键ID") - private String id; - - /** - * 创建人 - */ - @ApiModelProperty(value = "创建人") - private String createBy; - - /** - * 创建时间 - */ - @ApiModelProperty(value = "创建时间") - private Date createTime; - - /** - * 更新人 - */ - @ApiModelProperty(value = "更新人") - private String updateBy; - - /** - * 更新时间 - */ - @ApiModelProperty(value = "更新时间") - private Date updateTime; - - /** - * 所属部门 - */ - @ApiModelProperty(value = "所属部门") - private String orgCode; - - /** - * 0表示未删除,1表示删除 - */ - @ApiModelProperty(value = "0表示未删除,1表示删除") - private Integer delFlag; - - /** - * 企标计划Id - */ - @ApiModelProperty(value = "企标计划Id") - private String espId; - - /** - * 流程实例Id - */ - @ApiModelProperty(value = "流程实例Id") - private String processInstanceId; - - /** - * 业务json数据 - */ - @ApiModelProperty(value = "业务JSON数据") - private String businessJson; - - /** - * 其他起草人上传文件JSON - */ - @ApiModelProperty(value = "其他起草人上传文件JSON") - private String otherDrafterUploadFileJson; - - /** - * 稽查内容JSON - */ - @ApiModelProperty(value = "稽查内容JSON") - private String inspectContentJson; - - /** - * 评审会评分细节JSON - */ - @ApiModelProperty(value = "评审会评分细节JSON") - private String reviewMeetingDetailJson; - - /** - * 执行id - */ - @ApiModelProperty(value = "执行id") - private String executionId; - - /** - * 是否需要稽查 0不需要 1需要 - */ - @Dict(dicCode = "yn") - @ApiModelProperty(value = "是否需要稽查 0不需要 1需要") - private String inspectFlag; - - /** - * 是否可以进行评审会 - */ - @TableField(exist = false) - @ApiModelProperty(value = "是否可以进行评审会") - private String reviewMeetingFlag; - - /** - * 评审人 - */ - @ApiModelProperty(value = "评审人") - private String reviewUser; - - /** - * 评分人 - */ - @TableField(exist = false) - @ApiModelProperty(value = "评分人") - private String raters; - - /** - * 评审日期 - */ - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") - @DateTimeFormat(pattern = "yyyy-MM-dd") - @ApiModelProperty(value = "评审日期") - private Date reviewDate; - - /** - * 评审地点 - */ - @TableField(exist = false) - @ApiModelProperty(value = "评审地点") - private String reviewPlace; - - /** - * 是否开启征求意见 0不征求 1征求 - */ - @TableField(exist = false) - @ApiModelProperty(value = "是否开启征求意见 0不征求 1征求") - private String adviceFlag; - - /** - * 部门联络人 - */ - @TableField(exist = false) - @ApiModelProperty(value = "部门联络人") - private String contactUser; - - /** - * 部门联络人主管级领导 - */ - @TableField(exist = false) - @Dict(dictTable = "sys_user", dicCode = "id", dicText = "CONCAT(realname, '(', username, ')')") - @ApiModelProperty(value = "部门联络人主管级领导") - private String contactUserLeader; - - /** - * 会议纪要 - */ - @ApiModelProperty(value = "会议纪要") - private String meetingSummary; - - /** - * 会议纪要(主起草人上传会议纪要节点) - */ - @ApiModelProperty(value = "会议纪要(主起草人上传会议纪要节点)") - private String meetingSummarySecond; - - /** - * 参会人员 - */ - @Dict(dictTable = "sys_user", dicCode = "id", dicText = "CONCAT(realname, '(', username, ')')") - @ApiModelProperty(value = "参会人员") - private String meetingUsers; - - /** - * 参会人员(主起草人上传会议纪要节点) - */ - @Dict(dictTable = "sys_user", dicCode = "id", dicText = "CONCAT(realname, '(', username, ')')") - @ApiModelProperty(value = "参会人员(主起草人上传会议纪要节点)") - private String meetingUsersSecond; - - /** - * 校对人 - */ - @Dict(dictTable = "sys_user", dicCode = "id", dicText = "CONCAT(realname, '(', username, ')')") - @ApiModelProperty(value = "校对人") - private String proofreader; - - /** - * 审批人(主管级领导) - */ - @Dict(dictTable = "sys_user", dicCode = "id", dicText = "CONCAT(realname, '(', username, ')')") - @ApiModelProperty(value = "审批人(主管级领导)") - private String approvalUser; - - /** - * 审批人(标准化) - */ - @Dict(dictTable = "sys_user", dicCode = "id", dicText = "CONCAT(realname, '(', username, ')')") - @ApiModelProperty(value = "审批人(标准化)") - private String approvalUserStandard; - - /** - * 相关部门领导 - */ - @Dict(dictTable = "sys_user", dicCode = "id", dicText = "CONCAT(realname, '(', username, ')')") - @ApiModelProperty(value = "相关部门领导") - private String relatedLeader; - - /** - * 授权部门 - */ - @ApiModelProperty(value = "授权部门") - private String authDept; - - /** - * 发布日期 - */ - @ApiModelProperty(value = "发布日期") - private String releaseDate; - - /** - * 实施日期 - */ - @ApiModelProperty(value = "实施日期") - private String implementDate; - - /** - * 征求意见截止日期 - */ - @TableField(exist = false) - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") - @DateTimeFormat(pattern = "yyyy-MM-dd") - @ApiModelProperty(value = "征求意见截止日期") - private Date adviceDeadline; - - /** - * 工作组 - */ - @ApiModelProperty(value = "工作组") - private String workGroup; - - /** - * 主起草人 - */ - @ApiModelProperty(value = "主起草人") - private String mainDraftUser; - - @ApiModelProperty(value = "其他起草人上传节点是否完成标识 0未完成 1已完成") - private String otherDrafterUploadFinishFlag; - - /** - * 总工程师 - */ - @Dict(dictTable = "sys_user", dicCode = "id", dicText = "CONCAT(realname, '(', username, ')')") - @ApiModelProperty(value = "总工程师") - private String chiefEngineer; - - @TableField(exist = false) - @ApiModelProperty(value = "评审会总分") - private String totalScore; - - @TableField(exist = false) - @ApiModelProperty(value = "其他起草人") - private List otherDraftUserVOS; - - @TableField(exist = false) - @ApiModelProperty(value = "稽查内容") - private List inspectContents; - - @TableField(exist = false) - @ApiModelProperty(value = "评审结果") - private List reviewMeetingDetails; - - @TableField(exist = false) - @ApiModelProperty(value = "意见列表") - private List advices; - - /** - * 编制说明 - */ - @ApiModelProperty(value = "编制说明") - private String compIllustration; - - /** - * 在线编辑文件id - */ - @ApiModelProperty(value = "在线编辑文件id") - private String onEditFile; - - /** - * 意见汇总 - */ - @ApiModelProperty(value = "意见汇总") - private String commentsSummary; - - /** - * 自动发起标识 - */ - @TableField(exist = false) - @ApiModelProperty(value = "自动发起标识") - private boolean autoStartFlag; - - public void setOtherDrafterUploadFileJson(String otherDrafterUploadFileJson) { - this.otherDrafterUploadFileJson = otherDrafterUploadFileJson; - } - - public void setInspectContentJson(String inspectContentJson) { - this.inspectContentJson = inspectContentJson; - } - - public void setReviewMeetingDetailJson(String reviewMeetingDetailJson) { - this.reviewMeetingDetailJson = reviewMeetingDetailJson; - } - - public void setOtherDrafterUploadFileJson(List otherDraftUserVOS) { - this.otherDrafterUploadFileJson = JSON.toJSONString(otherDraftUserVOS); - } - - public void setInspectContentJson(List inspectContents) { - this.inspectContentJson = JSON.toJSONString(inspectContents); - } - - public void setReviewMeetingDetailJson(List reviewMeetingDetails) { - this.reviewMeetingDetailJson = JSON.toJSONString(reviewMeetingDetails); - } - - public List parseOtherDraftUserVOS() { - return JSON.parseArray(this.otherDrafterUploadFileJson, OtherDraftUserVO.class); - } - - public List parseInspectContents() { - return JSON.parseArray(this.inspectContentJson, InspectContentVO.class); - } - - public List parseReviewMeetingDetails() { - return JSON.parseArray(this.reviewMeetingDetailJson, ReviewMeetingDetailVO.class); - } - - @TableField(exist = false) - private static final long serialVersionUID = 1L; -} \ No newline at end of file diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/entity/RevisionTaskNodeIdConstant.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/entity/RevisionTaskNodeIdConstant.java deleted file mode 100644 index 390e26e4..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/entity/RevisionTaskNodeIdConstant.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.jero.modules.activiti.process.esRevision.entity; - -/** - * @author: Mzaxd - * @Date: 2023/12/19 15:14 - */ -public class RevisionTaskNodeIdConstant { - - /** 主起草人分发 */ - public static final String MAIN_DRAFT_USER_DISTRIBUTE = "Activity_0v98tow"; - /** 其他起草人上传企标 */ - public static final String OTHER_DRAFT_USER_UPLOAD = "Activity_1d2la4l"; - /** 主起草人汇总 */ - public static final String MAIN_DRAFT_USER_COLLECT_FIRST = "Activity_1dz3u0m"; - /** 标准化审批 */ - public static final String STANDARDIZATION_CHECK = "Activity_0m576ex"; - /** 评分人评分 */ - public static final String RATER_RATE = "Activity_1qhpnpa"; - /** 标准化确认是否开启征求意见 */ - public static final String CONFIRM_ADVISE = "Activity_1siuksf"; - /** 部门联络人下发 */ - public static final String CONTACT_USER_DISTRIBUTE = "Activity_1ns6olf"; - /** 征求意见对象填写意见 */ - public static final String ADVICE = "Activity_04m430n"; - /** 部门联络人汇总数据 */ - public static final String CONTACT_USER_COLLECT = "Activity_1riqzkp"; - /** 部所联络人主管级领导审批 */ - public static final String CONTACT_USER_LEADER_APPROVAL = "Activity_1ralk8e"; - /** 主起草人汇总 */ - public static final String MAIN_DRAFT_USER_COLLECT_SECOND = "Activity_1hb9aun"; - /** 主起草人上传会议纪要 */ - public static final String MAIN_DRAFT_USER_UPLOAD = "Activity_11uuyg0"; - /** 其它起草人校对 */ - public static final String OTHER_DRAFT_USER_CHECK = "Activity_1seways"; - /** 主管级领导审批 */ - public static final String LEADER_APPROVAL = "Activity_1l028rz"; - /** 标准化审批 */ - public static final String STANDARDIZATION_APPROVAL = "Activity_0uxua0b"; - /** 相关部门领导会签 */ - public static final String RELATED_LEADER_APPROVAL = "Activity_05pybsc"; - /** 总工程师审批 */ - public static final String CHIEF_ENGINEER_APPROVAL = "Activity_1yr56ac"; - /** 主起草人发布 */ - public static final String MAIN_DRAFT_USER_RELEASE = "Activity_0n0h60s"; - -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/entity/SignInfo.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/entity/SignInfo.java deleted file mode 100644 index 62a9e8be..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/entity/SignInfo.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.jero.modules.activiti.process.esRevision.entity; - -import com.fasterxml.jackson.annotation.JsonFormat; -import io.swagger.annotations.ApiModelProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; -import org.springframework.format.annotation.DateTimeFormat; - -import java.util.Date; - -/** - * @author: Mzaxd - * @Date: 2024/1/31 9:58 - */ - -@Data -@NoArgsConstructor -@AllArgsConstructor -public class SignInfo { - - /** - * 人员信息 - */ - @ApiModelProperty(value = "人员信息") - private String userId; - - /** - * 人员信息 - */ - @ApiModelProperty(value = "人员姓名") - private String userName; - - /** - * 签署日期 - */ - @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") - @DateTimeFormat(pattern="yyyy-MM-dd") - @ApiModelProperty(value = "签署日期") - private Date signTime; - - /** - * 手写签字图片id - */ - @ApiModelProperty(value = "手写签字图片id") - private String avatarFileId; - - /** - * 手写签字图片url - */ - @ApiModelProperty(value = "手写签字图片url") - private String avatarFileUrl; - -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/entity/vo/ESRevisionDataVO.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/entity/vo/ESRevisionDataVO.java deleted file mode 100644 index f4371958..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/entity/vo/ESRevisionDataVO.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.jero.modules.activiti.process.esRevision.entity.vo; - -import com.fasterxml.jackson.annotation.JsonProperty; -import com.jero.modules.activiti.process.common.entity.CommonVO; -import com.jero.modules.activiti.process.esRevision.entity.ProcessEsRevision; -import lombok.Data; - -import java.util.Map; - -/** - * @author: Mzaxd - * @Date: 2023/12/19 14:50 - */ -@Data -public class ESRevisionDataVO { - - @JsonProperty("common") - CommonVO common; - - @JsonProperty("data") - ProcessEsRevision data; - - @JsonProperty("flowUser") - Map flowUser; - -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/entity/vo/InspectContentVO.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/entity/vo/InspectContentVO.java deleted file mode 100644 index 64f20f62..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/entity/vo/InspectContentVO.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.jero.modules.activiti.process.esRevision.entity.vo; - -import com.alibaba.fastjson.annotation.JSONField; -import com.jero.common.aspect.annotation.Dict; -import io.swagger.annotations.ApiModelProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * @author: Mzaxd - * @Date: 2023/12/20 17:46 - */ -@Data -@NoArgsConstructor -@AllArgsConstructor -public class InspectContentVO { - - /** 条款 */ - @JSONField(name = "clause") - @ApiModelProperty(value = "条款") - private String clause; - - /** 标准内容或要求 */ - @JSONField(name = "requirement") - @ApiModelProperty(value = "标准内容或要求") - private String requirement; - - @JSONField(name = "rectificationDepartment") - @Dict(dictTable = "sys_depart", dicCode = "id", dicText = "depart_name") - @ApiModelProperty(value = "整改部门") - private String rectificationDepartment; -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/entity/vo/OtherDraftUserVO.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/entity/vo/OtherDraftUserVO.java deleted file mode 100644 index a54b4b59..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/entity/vo/OtherDraftUserVO.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.jero.modules.activiti.process.esRevision.entity.vo; - -import com.fasterxml.jackson.annotation.JsonFormat; -import com.jero.common.aspect.annotation.Dict; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import org.springframework.format.annotation.DateTimeFormat; - -import java.text.SimpleDateFormat; -import java.util.Date; - -/** - * @author: Mzaxd - * @Date: 2023/12/20 10:16 - */ - -@Data -public class OtherDraftUserVO { - - @Dict(dictTable = "sys_depart", dicCode = "id", dicText = "depart_name") - @ApiModelProperty(value = "起草人责任单位") - private String dept; - - @Dict(dictTable = "sys_user", dicCode = "id", dicText = "CONCAT(realname, '(', username, ')')") - @ApiModelProperty(value = "起草人") - private String user; - - @ApiModelProperty(value = "起草范围") - private String scope; - - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") - @DateTimeFormat(pattern = "yyyy-MM-dd") - @ApiModelProperty(value = "截止日期") - private Date deadline; - - @Dict(dicCode = "id", dicText = "file_name", dictTable = "oss_file") - @ApiModelProperty(value = "文件ID") - private String fileId; - - @ApiModelProperty(value = "1:不能操作显示/2:可以上传并且将起草人改为‘我’/3:可以上传起草人字段维持不变") - private String operateType; - - @ApiModelProperty(value = "绑定的taskId") - private String taskId; - - @ApiModelProperty(value = "未完成为0 已完成为1") - private String finishFlag; - - public String getISODeadlineTime() { - SimpleDateFormat isoFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); - return isoFormat.format(this.deadline); - } -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/entity/vo/ReviewMeetingDetailVO.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/entity/vo/ReviewMeetingDetailVO.java deleted file mode 100644 index a7a55dbb..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/entity/vo/ReviewMeetingDetailVO.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.jero.modules.activiti.process.esRevision.entity.vo; - -import com.baomidou.mybatisplus.annotation.TableField; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -/** - * @author: Mzaxd - * @Date: 2023/12/20 16:13 - */ - -@Data -public class ReviewMeetingDetailVO { - - /**评分项目*/ - @ApiModelProperty(value = "评分项目") - private String evaluateItem; - - /**评分分值*/ - @ApiModelProperty(value = "评分分值") - private String evaluateScore; - - /**评分人id*/ - @ApiModelProperty(value = "评分人id") - private String adjudicatorId; - - /**扣分理由*/ - @ApiModelProperty(value = "扣分理由") - private String deductionScoreReason; -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/job/AdviceDeadlineJob.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/job/AdviceDeadlineJob.java deleted file mode 100644 index 7ae1d758..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/job/AdviceDeadlineJob.java +++ /dev/null @@ -1,114 +0,0 @@ -package com.jero.modules.activiti.process.esRevision.job; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.jero.common.constant.enums.YesOrNoEnum; -import com.jero.modules.activiti.entity.ProcessApprovalRecord; -import com.jero.modules.activiti.enums.FinishFlagEnum; -import com.jero.modules.activiti.process.esRevision.entity.EsRevisionAdvice; -import com.jero.modules.activiti.process.esRevision.entity.ProcessEsRevision; -import com.jero.modules.activiti.process.esRevision.entity.vo.ESRevisionDataVO; -import com.jero.modules.activiti.process.esRevision.service.EsRevisionService; -import com.jero.modules.activiti.service.ProcessApprovalRecordService; -import lombok.extern.slf4j.Slf4j; -import org.activiti.engine.RuntimeService; -import org.activiti.engine.TaskService; -import org.activiti.engine.runtime.Execution; -import org.jetbrains.annotations.NotNull; -import org.quartz.Job; -import org.quartz.JobExecutionContext; -import org.quartz.JobExecutionException; - -import javax.annotation.Resource; -import java.util.*; -import java.util.stream.Collectors; - -/** - * @author: Mzaxd - * @Date: 2023/12/28 18:40 - */ -@Slf4j -public class AdviceDeadlineJob implements Job { - - @Resource - private EsRevisionService revisionService; - - @Resource - private ProcessApprovalRecordService approvalRecordService; - - @Resource - private RuntimeService runtimeService; - - @Resource - private TaskService taskService; - - @Override - public void execute(JobExecutionContext context) throws JobExecutionException { - log.info("开始执行征求意见截止日期每日定时任务"); - LambdaQueryWrapper revisionLambdaQueryWrapper = new LambdaQueryWrapper<>(); - revisionLambdaQueryWrapper.eq(ProcessEsRevision::getDelFlag, YesOrNoEnum.NO.getValue()); - revisionLambdaQueryWrapper.isNotNull(ProcessEsRevision::getProcessInstanceId); - List revisionList = revisionService.list(revisionLambdaQueryWrapper); - if (revisionList == null || revisionList.isEmpty()) { - return; - } - Map revisionMap = revisionList.stream() - .collect(Collectors.toMap(ProcessEsRevision::getProcessInstanceId, revision -> revision)); - // 找到所有征求意见的未完成的待办 - LambdaQueryWrapper arWrapper = new LambdaQueryWrapper<>(); - arWrapper.eq(ProcessApprovalRecord::getFinishFlag, FinishFlagEnum.INCOMPLETE.getValue()); - arWrapper.in(ProcessApprovalRecord::getProcessInstanceId, revisionMap.keySet()); - arWrapper.eq(ProcessApprovalRecord::getTaskName, "征求意见对象填写意见"); - arWrapper.isNotNull(ProcessApprovalRecord::getTaskId); - List arList = approvalRecordService.list(arWrapper); - Date curDate = new Date(); - for (ProcessApprovalRecord record : arList) { - String taskId = record.getTaskId(); - // 根据record获取每一个任务的deadline - // 获取Task - taskService.createTaskQuery().taskId(record.getTaskId()).singleResult(); - // 根据Task获取其父级executionId - String executionId = taskService.createTaskQuery() - .taskId(record.getTaskId()).singleResult().getExecutionId(); - // 获取Execution - Execution execution = runtimeService.createExecutionQuery().executionId(executionId).singleResult(); - String parentExecutionId = execution.getParentId(); - // 根据executionId获取流程变量 - Date adviceDeadline = (Date) taskService.getVariable(taskId, parentExecutionId + "-adviceDeadline"); - if (adviceDeadline == null) { - continue; - } - adviceDeadline = getDeadlineDate(adviceDeadline); - // 如果当前日期大于该条数据的截止日期 则自动完成任务 - if (curDate.after(adviceDeadline)) { - ESRevisionDataVO handleData = revisionService.getHandleData(taskId); - handleData.getCommon().setTaskId(taskId); - ProcessEsRevision data = handleData.getData(); - EsRevisionAdvice esRevisionAdvice = new EsRevisionAdvice(); - esRevisionAdvice.setClauseName("无"); - esRevisionAdvice.setClauseNum("无"); - esRevisionAdvice.setEditAdvice("无"); - data.setAdvices(new ArrayList<>(Collections.singletonList(esRevisionAdvice))); - revisionService.approval(handleData, true); - } - } - log.info("征求意见截止日期每日定时任务执行结束"); - } - - @NotNull - private static Date getDeadlineDate(Date deadline) { - // 设置deadline为今天的最后一秒 - // 创建一个 Calendar 对象 - Calendar calendar = Calendar.getInstance(); - // 获取当前日期和时间 - calendar.setTime(deadline); - // 设置时间部分为当天的最后一秒 - calendar.set(Calendar.HOUR_OF_DAY, 23); - calendar.set(Calendar.MINUTE, 59); - calendar.set(Calendar.SECOND, 59); - calendar.set(Calendar.MILLISECOND, 999); - - // 将修改后的日期和时间设置回原始的 Date 对象 - deadline = calendar.getTime(); - return deadline; - } -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/job/OtherDraftUserUploadDeadlineJob.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/job/OtherDraftUserUploadDeadlineJob.java deleted file mode 100644 index 53f28ce0..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/job/OtherDraftUserUploadDeadlineJob.java +++ /dev/null @@ -1,164 +0,0 @@ -package com.jero.modules.activiti.process.esRevision.job; - -import cn.hutool.core.util.StrUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.jero.common.constant.enums.YesOrNoEnum; -import com.jero.modules.activiti.entity.ProcessApprovalRecord; -import com.jero.modules.activiti.enums.FinishFlagEnum; -import com.jero.modules.activiti.process.common.entity.CommonVO; -import com.jero.modules.activiti.process.common.enums.ProcessType; -import com.jero.modules.activiti.process.common.service.ActFlowCommonService; -import com.jero.modules.activiti.process.esRevision.entity.ProcessEsRevision; -import com.jero.modules.activiti.process.esRevision.entity.RevisionTaskNodeIdConstant; -import com.jero.modules.activiti.process.esRevision.entity.vo.ESRevisionDataVO; -import com.jero.modules.activiti.process.esRevision.entity.vo.OtherDraftUserVO; -import com.jero.modules.activiti.process.esRevision.service.EsRevisionService; -import com.jero.modules.activiti.service.ProcessApprovalRecordService; -import lombok.extern.slf4j.Slf4j; -import org.activiti.engine.RuntimeService; -import org.activiti.engine.TaskService; -import org.apache.tomcat.jni.Proc; -import org.jetbrains.annotations.NotNull; -import org.quartz.Job; -import org.quartz.JobExecutionContext; -import org.quartz.JobExecutionException; - -import javax.annotation.Resource; -import java.util.*; -import java.util.stream.Collectors; - -import static org.apache.tools.ant.taskdefs.SetPermissions.NonPosixMode.pass; - -/** - * @author: Mzaxd - * @Date: 2023/12/28 18:40 - */ -@Slf4j -public class OtherDraftUserUploadDeadlineJob implements Job { - - @Resource - private EsRevisionService revisionService; - - @Resource - private ProcessApprovalRecordService approvalRecordService; - - @Resource - private ActFlowCommonService actFlowCommonService; - - @Resource - private TaskService taskService; - - @Resource - private RuntimeService runtimeService; - - @Override - public void execute(JobExecutionContext context) throws JobExecutionException { - LambdaQueryWrapper revisionLambdaQueryWrapper = new LambdaQueryWrapper<>(); - revisionLambdaQueryWrapper.eq(ProcessEsRevision::getOtherDrafterUploadFinishFlag, YesOrNoEnum.NO.getValue()); - List revisionList = revisionService.list(revisionLambdaQueryWrapper); - LambdaQueryWrapper arWrapper = new LambdaQueryWrapper<>(); - arWrapper.eq(ProcessApprovalRecord::getFinishFlag, FinishFlagEnum.INCOMPLETE.getValue()); - for (ProcessEsRevision revision : revisionList) { - String prcId = revision.getProcessInstanceId(); - if (StrUtil.isBlank(prcId)) { - continue; - } - List otherDraftUserVOS = revision.parseOtherDraftUserVOS(); - if (otherDraftUserVOS == null || otherDraftUserVOS.isEmpty()) { - continue; - } - arWrapper.eq(ProcessApprovalRecord::getProcessInstanceId, prcId); - List arList = approvalRecordService.list(arWrapper); - arWrapper.clear(); - - // 将task和记录进行绑定 - this.bundleTaskAndApprovalRecord(otherDraftUserVOS, arList); - - Date curDate = new Date(); - for (OtherDraftUserVO otherDraftUser : otherDraftUserVOS) { - if (StrUtil.isNotBlank(otherDraftUser.getFileId())) { - continue; - } - if (StrUtil.isBlank(otherDraftUser.getTaskId())) { - log.error("未找到对应待办"); - continue; - } - // 获取TaskId - Date deadline = getDeadlineDate(otherDraftUser); - // 如果当前日期大于该条数据的截止日期 则自动完成任务 - if (curDate.after(deadline)) { - // 审批节点 - // 更新审批表为完成,填充数据 - actFlowCommonService.updateApprovalInfoWithoutNodeId(otherDraftUser.getTaskId()); - // 判断能否根据TaskId找到有效的Task - if (taskService.createTaskQuery().taskId(otherDraftUser.getTaskId()).singleResult() == null) { - log.error("未找到对应Task"); - continue; - } - taskService.complete(otherDraftUser.getTaskId()); - otherDraftUser.setFinishFlag(YesOrNoEnum.YES.getValue()); - } - } - revision.setOtherDrafterUploadFileJson(otherDraftUserVOS); - revisionService.updateById(revision); - } - } - - private void bundleTaskAndApprovalRecord(List otherDraftUserVOS, List arList) { - Map> arMap = arList.stream().filter(p -> StrUtil.isNotBlank(p.getOriginUserId())) - .collect(Collectors.groupingBy(ProcessApprovalRecord::getOriginUserId)); - List alreadyTaskId = new ArrayList<>(); - otherDraftUserVOS.forEach(o -> alreadyTaskId.add(o.getTaskId())); - for (OtherDraftUserVO otherDraftUser : otherDraftUserVOS) { - if (StrUtil.isNotBlank(otherDraftUser.getTaskId())) { - continue; - } - if (YesOrNoEnum.YES.getValue().equals(otherDraftUser.getFinishFlag())) { - continue; - } - String originUserId = otherDraftUser.getUser(); - List ar = arMap.get(originUserId); - if (ar == null || ar.isEmpty()) { - log.error("未找到对应待办"); - continue; - } - - for (ProcessApprovalRecord processApprovalRecord : ar) { - if (alreadyTaskId.contains(processApprovalRecord.getTaskId())) { - continue; - } - String taskId = processApprovalRecord.getTaskId(); - String taskName = processApprovalRecord.getTaskName(); - if (StrUtil.isBlank(taskId)) { - log.error("任务Id为空"); - continue; - } - if (!taskName.equals("其他起草人上传企标")) { - continue; - } - otherDraftUser.setTaskId(taskId); - alreadyTaskId.add(taskId); - break; - } - } - } - - @NotNull - private static Date getDeadlineDate(OtherDraftUserVO otherDraftUser) { - Date deadline = otherDraftUser.getDeadline(); - // 设置deadline为今天的最后一秒 - // 创建一个 Calendar 对象 - Calendar calendar = Calendar.getInstance(); - // 获取当前日期和时间 - calendar.setTime(deadline); - // 设置时间部分为当天的最后一秒 - calendar.set(Calendar.HOUR_OF_DAY, 23); - calendar.set(Calendar.MINUTE, 59); - calendar.set(Calendar.SECOND, 59); - calendar.set(Calendar.MILLISECOND, 999); - - // 将修改后的日期和时间设置回原始的 Date 对象 - deadline = calendar.getTime(); - return deadline; - } -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/listener/AdviceCreateListener.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/listener/AdviceCreateListener.java deleted file mode 100644 index 9eb65997..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/listener/AdviceCreateListener.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.jero.modules.activiti.process.esRevision.listener; - -import lombok.extern.slf4j.Slf4j; -import org.activiti.engine.TaskService; -import org.activiti.engine.delegate.DelegateTask; -import org.activiti.engine.delegate.TaskListener; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; - - -/** - * @author: Mzaxd - * @Date: 2023/10/10 14:14 - */ -@Slf4j -@Component("adviceCreateListener") -public class AdviceCreateListener implements TaskListener { - - @Resource - private TaskService taskService; - - - @Override - public void notify(DelegateTask delegateTask) { - String parentExecutionId = (String) taskService.getVariable(delegateTask.getId(), "contactExecutionId"); - delegateTask.setVariable(delegateTask.getExecutionId() + "-ContactExecutionId", parentExecutionId); - } -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/listener/ProcessESRevisionEndListener.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/listener/ProcessESRevisionEndListener.java deleted file mode 100644 index 3f3d79c7..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/listener/ProcessESRevisionEndListener.java +++ /dev/null @@ -1,142 +0,0 @@ -package com.jero.modules.activiti.process.esRevision.listener; - -import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.TypeReference; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.jero.common.constant.enums.YesOrNoEnum; -import com.jero.modules.activiti.process.common.enums.StandardStateEnum; -import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPProjectStatus; -import com.jero.modules.activiti.process.esRevision.entity.ProcessEsRevision; -import com.jero.modules.activiti.process.esRevision.entity.vo.ReviewMeetingDetailVO; -import com.jero.modules.activiti.process.esRevision.service.EsRevisionService; -import com.jero.modules.laws.common.constant.FieldCommon; -import com.jero.modules.laws.common.service.ILawsCommonService; -import com.jero.modules.laws.enterprise.entity.EnterpriseStandardPlan; -import com.jero.modules.laws.enterprise.entity.EnterpriseStandardReviewMeetingRecord; -import com.jero.modules.laws.enterprise.entity.EnterpriseStandardRmrEvaluateDetail; -import com.jero.modules.laws.enterprise.service.EnterpriseStandardPlanService; -import com.jero.modules.laws.enterprise.service.EnterpriseStandardReviewMeetingRecordService; -import com.jero.modules.laws.enterprise.service.EnterpriseStandardRmrEvaluateDetailService; -import com.jero.modules.laws.enterprise.util.BeanCopyUtils; -import com.jero.modules.laws.enterprise.util.EnterpriseStandardUtil; -import com.jero.modules.onlyoffice.service.IBusProcessModelHisService; -import com.jero.modules.tag.enums.TableNameEnum; -import org.activiti.engine.delegate.DelegateExecution; -import org.activiti.engine.delegate.ExecutionListener; -import org.apache.commons.lang3.StringUtils; -import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Propagation; -import org.springframework.transaction.annotation.Transactional; - -import javax.annotation.Resource; -import java.util.*; - -/** - * @author: Mzaxd - * @Date: 2023/12/19 11:59 - */ -@Component -public class ProcessESRevisionEndListener implements ExecutionListener { - - @Resource - private EnterpriseStandardPlanService espService; - - @Resource - private EsRevisionService esRevisionService; - - @Resource - private EnterpriseStandardReviewMeetingRecordService rmrService; - - @Resource - private EnterpriseStandardRmrEvaluateDetailService rmrDetailService; - - @Resource - private ILawsCommonService lawsCommonService; - - @Resource - private IBusProcessModelHisService busProcessModelHisService; - - @Override - public void notify(DelegateExecution delegateExecution) { - // 获取流程实例Id - String processInstanceId = delegateExecution.getProcessInstanceId(); - // 根据流程Id获取业务数据 - LambdaQueryWrapper revisionWrapper = new LambdaQueryWrapper<>(); - revisionWrapper.eq(ProcessEsRevision::getProcessInstanceId, processInstanceId); - // 获取企标相关数据 - ProcessEsRevision data = esRevisionService.getOne(revisionWrapper); - Map variables = JSON.parseObject(data.getBusinessJson(), Map.class); - String inspectContentJson = data.getInspectContentJson(); - List> inspectContentList; - if (StrUtil.isNotBlank(inspectContentJson)) { - inspectContentList = - JSON.parseObject(inspectContentJson, new TypeReference>>() {}); - variables.put(FieldCommon.CHECK_LIST, inspectContentList); - } - // 将标准号进行拆分后填充字段 - String standardNumber = (String) variables.get(FieldCommon.STANDARD_NUMBER); - if (StringUtils.isNotBlank(standardNumber)) { - Map map = EnterpriseStandardUtil.splitStandardNumber(standardNumber); - variables.putAll(map); - // 如果没有主起草人,则需要填充主起草人 - } - // 主起草人 - String mainDraftUser = (String) variables.get(FieldCommon.MAIN_DRAFTING_USER); - if (StringUtils.isBlank(mainDraftUser)) { - variables.put(FieldCommon.MAIN_DRAFTING_USER, data.getMainDraftUser()); - } - // 标准状态 - variables.put(FieldCommon.STANDARD_STATE, StandardStateEnum.RELEASE.getStateValue()); - String tryFlag = (String) variables.get(FieldCommon.TRY_FLAG); - if (tryFlag != null) { - if (tryFlag.equals(YesOrNoEnum.YES.getValue())) { - variables.put(FieldCommon.STANDARD_STATE, StandardStateEnum.TRIAL_OPERATION.getStateValue()); - } - } - variables.put(FieldCommon.COMP_ILLUSTRATION, data.getCompIllustration()); - variables.put(FieldCommon.RELEASE_DATE, data.getReleaseDate()); - variables.put(FieldCommon.IMPLEMENTATION_DATE, data.getImplementDate()); - variables.put(FieldCommon.MAIN_DRAFTING_UNIT_RESPONSIBLE_PERSON, data.getApprovalUser()); - variables.put(FieldCommon.MODULE, TableNameEnum.ENTERPRISE_STANDARDS.getValue()); - variables.put(FieldCommon.AUTH_DEPT, data.getAuthDept()); - String standardId = IdWorker.getIdStr(); - variables.put(FieldCommon.ID, standardId); - // minio上传在线编辑文件 - String onEditFile = data.getOnEditFile(); - if (StringUtils.isNotBlank(onEditFile)) { - String fileId = busProcessModelHisService.saveProcessFileToOss(onEditFile); - variables.put(FieldCommon.FILE_PUBLISH_OF_ORIGINAL, fileId); - } - // 发布企标 - lawsCommonService.commonAdd(variables); - String espId = data.getEspId(); - EnterpriseStandardPlan esp = espService.getById(espId); - // 保存评审会记录 - EnterpriseStandardReviewMeetingRecord esRmr = new EnterpriseStandardReviewMeetingRecord(); - esRmr.setStandardId(standardId); - esRmr.setPlanId(esp.getId()); - esRmr.setReviewDate(data.getReviewDate()); - esRmr.setReviewUser(data.getReviewUser()); - rmrService.save(esRmr); - // 保存评审会评审结果 - List reviewMeetingDetailVOS = data.parseReviewMeetingDetails(); - List rmrEvaluateDetails = - BeanCopyUtils.copyBeanList(reviewMeetingDetailVOS, EnterpriseStandardRmrEvaluateDetail.class); - rmrEvaluateDetails.forEach(r -> r.setReviewMeetingId(esRmr.getId())); - rmrDetailService.saveBatch(rmrEvaluateDetails); - // 企标计划改为已完成或者逾期完成 - Date curDate = new Date(); - if (curDate.after(esp.getDraftPlannedCompleteDate()) || - curDate.after(esp.getSolicitationDraftPlanCompleteDate()) || - curDate.after(esp.getPlanApprovalDate())) { - esp.setProjectStatus(ESPProjectStatus.OVERDUE_COMPLETED.getValue()); - } else { - esp.setProjectStatus(ESPProjectStatus.COMPLETED.getValue()); - } - espService.updateById(esp); - // 软删除制修订计划 - esRevisionService.removeById(data.getId()); - } -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/mapper/EsRevisionAdviceMapper.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/mapper/EsRevisionAdviceMapper.java deleted file mode 100644 index 1b37c70a..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/mapper/EsRevisionAdviceMapper.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.jero.modules.activiti.process.esRevision.mapper; - -import com.jero.modules.activiti.process.esRevision.entity.EsRevisionAdvice; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; - -/** -* @author ThinkBook -* @description 针对表【process_es_revision_advice】的数据库操作Mapper -* @createDate 2023-12-20 17:17:56 -* @Entity com.jero.modules.activiti.process.esRevision.entity.EsRevisionAdvice -*/ -public interface EsRevisionAdviceMapper extends BaseMapper { - -} - - - - diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/mapper/EsRevisionMapper.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/mapper/EsRevisionMapper.java deleted file mode 100644 index 60755f63..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/mapper/EsRevisionMapper.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.jero.modules.activiti.process.esRevision.mapper; - -import com.jero.modules.activiti.process.esRevision.entity.ProcessEsRevision; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; - -/** -* @author ThinkBook -* @description 针对表【process_es_revision】的数据库操作Mapper -* @createDate 2023-12-19 11:58:59 -* @Entity com.jero.modules.activiti.process.esRevision.entity.EsRevision -*/ -public interface EsRevisionMapper extends BaseMapper { - -} - - - - diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/service/EsRevisionAdviceService.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/service/EsRevisionAdviceService.java deleted file mode 100644 index 06fc5dac..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/service/EsRevisionAdviceService.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.jero.modules.activiti.process.esRevision.service; - -import com.jero.modules.activiti.process.esRevision.entity.EsRevisionAdvice; -import com.baomidou.mybatisplus.extension.service.IService; - -/** -* @author ThinkBook -* @description 针对表【process_es_revision_advice】的数据库操作Service -* @createDate 2023-12-20 17:17:56 -*/ -public interface EsRevisionAdviceService extends IService { - -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/service/EsRevisionService.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/service/EsRevisionService.java deleted file mode 100644 index adb66239..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/service/EsRevisionService.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.jero.modules.activiti.process.esRevision.service; - -import com.jero.modules.activiti.process.esRevision.entity.ProcessEsRevision; -import com.baomidou.mybatisplus.extension.service.IService; -import com.jero.modules.activiti.process.esRevision.entity.SignInfo; -import com.jero.modules.activiti.process.esRevision.entity.vo.ESRevisionDataVO; -import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO; - -import java.util.List; -import java.util.Map; - -/** - * @author ThinkBook - * @description 针对表【process_es_revision】的数据库操作Service - * @createDate 2023-12-19 11:58:59 - */ -public interface EsRevisionService extends IService { - - - ESRevisionDataVO getHandleData(String taskId); - - void autoStartProcess(ESRevisionDataVO revisionData); - - String saveToDraft(ProcessInfoVO processInfoVO); - - void startProcess(ESRevisionDataVO revisionData); - - void approval(ESRevisionDataVO revisionData, boolean pass); - - void transfer(String taskId, String userId); - - Map> getSignInfo(String processInstanceId); -} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/service/impl/EsRevisionAdviceServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/service/impl/EsRevisionAdviceServiceImpl.java deleted file mode 100644 index b193e00b..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/service/impl/EsRevisionAdviceServiceImpl.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.jero.modules.activiti.process.esRevision.service.impl; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.jero.modules.activiti.process.esRevision.entity.EsRevisionAdvice; -import com.jero.modules.activiti.process.esRevision.service.EsRevisionAdviceService; -import com.jero.modules.activiti.process.esRevision.mapper.EsRevisionAdviceMapper; -import org.springframework.stereotype.Service; - -/** -* @author ThinkBook -* @description 针对表【process_es_revision_advice】的数据库操作Service实现 -* @createDate 2023-12-20 17:17:56 -*/ -@Service -public class EsRevisionAdviceServiceImpl extends ServiceImpl - implements EsRevisionAdviceService{ - -} - - - - diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/service/impl/EsRevisionServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/service/impl/EsRevisionServiceImpl.java deleted file mode 100644 index 68221fe4..00000000 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRevision/service/impl/EsRevisionServiceImpl.java +++ /dev/null @@ -1,885 +0,0 @@ -package com.jero.modules.activiti.process.esRevision.service.impl; - -import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.jero.common.api.dto.message.SendMessageDTO; -import com.jero.common.api.vo.ResultCommon; -import com.jero.common.api.vo.SendMessageAPI; -import com.jero.common.aspect.TranslationAspect; -import com.jero.common.constant.enums.YesOrNoEnum; -import com.jero.common.exception.JeroBootException; -import com.jero.modules.activiti.entity.ProcessAll; -import com.jero.modules.activiti.entity.ProcessApprovalRecord; -import com.jero.modules.activiti.enums.CommitFlagEnum; -import com.jero.modules.activiti.enums.FinishFlagEnum; -import com.jero.modules.activiti.enums.ProcessTypeEnum; -import com.jero.modules.activiti.process.common.entity.CommonVO; -import com.jero.modules.activiti.process.common.entity.CounterSignNodeNameConstants; -import com.jero.modules.activiti.process.common.enums.ProcessType; -import com.jero.modules.activiti.process.common.service.ActFlowCommonService; -import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPProjectStatus; -import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPRevisionType; -import com.jero.modules.activiti.process.esRevision.entity.*; -import com.jero.modules.activiti.process.esRevision.entity.vo.InspectContentVO; -import com.jero.modules.activiti.process.esRevision.entity.vo.OtherDraftUserVO; -import com.jero.modules.activiti.process.esRevision.entity.vo.ESRevisionDataVO; -import com.jero.modules.activiti.process.esRevision.entity.vo.ReviewMeetingDetailVO; -import com.jero.modules.activiti.process.esRevision.service.EsRevisionAdviceService; -import com.jero.modules.activiti.process.esRevision.service.EsRevisionService; -import com.jero.modules.activiti.process.esRevision.mapper.EsRevisionMapper; -import com.jero.modules.activiti.process.fb.dto.BasicProcessInfoDTO; -import com.jero.modules.activiti.process.fb.service.IProcessHandleService; -import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO; -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.common.constant.MessageTemplateCodeCommon; -import com.jero.modules.laws.enterprise.entity.EnterpriseStandardPlan; -import com.jero.modules.laws.enterprise.service.EnterpriseStandardPlanService; -import com.jero.modules.laws.system.entity.LawsContactManage; -import com.jero.modules.laws.system.service.ILawsContactManageService; -import com.jero.modules.sys.utils.UserUtils; -import com.jero.modules.system.entity.SysUser; -import com.jero.modules.system.service.ISysUserDepartService; -import com.jero.modules.system.service.ISysUserService; -import lombok.extern.slf4j.Slf4j; -import org.activiti.engine.RuntimeService; -import org.activiti.engine.TaskService; -import org.activiti.engine.runtime.ProcessInstance; -import org.activiti.engine.task.Task; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import javax.annotation.Resource; -import java.util.*; -import java.util.stream.Collectors; - -import static com.jero.modules.activiti.process.esRevision.entity.RevisionTaskNodeIdConstant.*; - -/** - * @author ThinkBook - * @description 针对表【process_es_revision】的数据库操作Service实现 - * @createDate 2023-12-19 11:58:59 - */ -@Service -@Slf4j -@Transactional(rollbackFor = JeroBootException.class) -public class EsRevisionServiceImpl extends ServiceImpl - implements EsRevisionService { - - @Resource - private ActFlowCommonService actFlowCommonService; - - @Resource - private ProcessNodeLinkService processNodeLinkService; - - @Resource - private RuntimeService runtimeService; - - @Resource - private IProcessHandleService processHandleService; - - @Resource - private ProcessAllService processAllService; - - @Resource - private TaskService taskService; - - @Resource - private EnterpriseStandardPlanService espService; - - @Resource - private EsRevisionAdviceService adviceService; - - @Resource - private TranslationAspect translationAspect; - - @Resource - private ISysUserDepartService sysUserDepartService; - - @Resource - private SendMessageAPI sendMessageAPI; - - @Resource - private ILawsContactManageService contactManageService; - - @Resource - private ProcessApprovalRecordService parService; - - @Resource - private ISysUserService userService; - - @Override - public void startProcess(ESRevisionDataVO revisionData) { - // 执行流程发起前的操作 - this.startRunTask(revisionData); - // 流程Key - String processDefinitionKey = ProcessType.ES_REVISION.getProcessKey(); - // 通用数据 - CommonVO commonVO = revisionData.getCommon(); - // 当前用户Id - String userId = UserUtils.getUserId(); - // 业务数据 - ProcessEsRevision data = revisionData.getData(); - data.setId(null); - // 设置流程变量 - Map actVariables = this.setVariables(revisionData); - // 删除草稿 - actFlowCommonService.getExistDraftAndRemove(commonVO, ProcessTypeEnum.ES_REVISION); - // 启动流程 - ProcessInstance processInstance = actFlowCommonService.startProcess(processDefinitionKey, actVariables); - // 获取流程实例ID - String processDefinitionId = processInstance.getProcessDefinitionId(); - String processInstanceId = processInstance.getId(); - // 保存数据 - data.setProcessInstanceId(processInstanceId); - List otherDraftUserVOS = data.getOtherDraftUserVOS(); - if (otherDraftUserVOS != null && !otherDraftUserVOS.isEmpty()) { - data.getOtherDraftUserVOS().forEach(o -> o.setFinishFlag(YesOrNoEnum.NO.getValue())); - data.setOtherDrafterUploadFileJson(otherDraftUserVOS); - data.setProofreader(otherDraftUserVOS.stream() - .map(OtherDraftUserVO::getUser) - .distinct() - .collect(Collectors.joining(","))); - } - save(data); - // 手动设置所有流程变量 - actFlowCommonService.setProcessVariables(processInstanceId, actVariables); - // 保存选人信息 - processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, this.getUserMap(actVariables)); - // 获取第一个任务的taskId - String taskId = actFlowCommonService.getFirstTaskId(processInstanceId, userId, processDefinitionId); - ESRevisionDataVO handleData = this.getHandleData(taskId); - handleData.getData().setAutoStartFlag(false); - // 手动翻译 - String jsonData = translationAspect.manualParseDictText(handleData, revisionData.getFlowUser()); - // 强制撤回 - commonVO.setProcessInstanceId(processInstanceId); - actFlowCommonService.saveFirstNodeDraft(commonVO, ProcessTypeEnum.ES_REVISION, jsonData); - // 根据流程实例id更新流程总表 - String prcName = commonVO.getPrcName(); - String prcMes = commonVO.getPrcMes(); - Date dueTime = commonVO.getDueTime(); - Integer prcType = ProcessTypeEnum.ES_REVISION.getValue(); - actFlowCommonService.updateProcessAll(processInstanceId, userId, prcName, prcMes, prcType, dueTime); - // 更新审批表为完成,填充数据 - actFlowCommonService.updateApprovalInfo(commonVO, taskId, true); - // 自动完成第一个任务 - actFlowCommonService.completeTask(taskId, userId); - } - - private Map setVariables(ESRevisionDataVO revisionData) { - Map actVariables = new HashMap<>(); - Map flowUser = revisionData.getFlowUser(); - ProcessEsRevision data = revisionData.getData(); - actVariables.put("mainDraftUser", flowUser.get("mainDraftUser")); - actVariables.put("standardizationUser", flowUser.get("standardizationUser")); - List otherDraftUserVOS = data.getOtherDraftUserVOS(); - if (otherDraftUserVOS == null || otherDraftUserVOS.isEmpty()) { - actVariables.put("distribute", false); - } else { - actVariables.put("distribute", true); - actVariables.put("otherDraftUserList", otherDraftUserVOS.stream().map(OtherDraftUserVO::getUser) - .collect(Collectors.toList())); - // 遍历其他起草人列表,将截止时间放置到流程变量中 - Map deadlineMap = new HashMap<>(); - otherDraftUserVOS.forEach(otherDraftUserVO -> deadlineMap - .put(otherDraftUserVO.getUser() + "-deadline", otherDraftUserVO.getISODeadlineTime())); - actVariables.putAll(deadlineMap); - data.setOtherDraftUserVOS(otherDraftUserVOS); - data.setOtherDrafterUploadFileJson(otherDraftUserVOS); - } - // 获取分发人 - return actVariables; - } - - private Map getUserMap(Map variables) { - // 转成逗号拼接 - variables.put("otherDraftUserList", Optional.ofNullable((ArrayList) variables.get("otherDraftUserList")) - .map(list -> String.join(",", list)) - .orElse("")); - variables.remove("distribute"); - return variables; - } - - public void startRunTask(ESRevisionDataVO revisionData) { - // 检查企标计划是否已被删除 - String espId = revisionData.getData().getEspId(); - EnterpriseStandardPlan esp = espService.getById(espId); - if (esp == null) { - throw new JeroBootException(ResultCommon.INVALID_ESP); - } - // 设置状态为运行中 - esp.setProjectStatus(ESPProjectStatus.IN_PROGRESS.getValue()); - espService.updateById(esp); - } - - @Override - public void autoStartProcess(ESRevisionDataVO revisionData) { - // 自动发起制修订流程 需要定义制定还是修订 并且存储对应的企标计划id 所有数据由第一个节点之后再保存 - // 1. 找到对应企标的主起草人 - String espId = revisionData.getData().getEspId(); - EnterpriseStandardPlan esp = espService.getById(espId); - String mainDraftUser = esp.getMainDraftingUser(); - if (StrUtil.isBlank(mainDraftUser)) { - log.error("新企标编号为{}的企标计划的主起草人为空,无法自动发起制修订流程", esp.getNewEnStandardNo()); - // 企标计划改为未开始 - esp.setProjectStatus(ESPProjectStatus.NOT_STARTED.getValue()); - espService.updateById(esp); - return; - } - // 根据流程实例id更新流程总表 - String standardNo = esp.getNewEnStandardNo(); - if (StrUtil.isBlank(standardNo)) { - log.error("企标计划Id为{}的企标计划新企标编号为空,无法自动发起制修订流程", esp.getId()); - // 企标计划改为未开始 - esp.setProjectStatus(ESPProjectStatus.NOT_STARTED.getValue()); - espService.updateById(esp); - return; - } - // 流程Key - String processDefinitionKey = ProcessType.ES_REVISION.getProcessKey(); - // 设置流程变量 - Map variables = new HashMap<>(); - variables.put("mainDraftUser", mainDraftUser); - // 启动流程 - ProcessInstance processInstance = actFlowCommonService.startProcess(processDefinitionKey, variables); - ProcessEsRevision revision = new ProcessEsRevision(); - // 获取流程实例ID - String processDefinitionId = processInstance.getProcessDefinitionId(); - String processInstanceId = processInstance.getId(); - // 设置流程实例Id - revision.setProcessInstanceId(processInstanceId); - revision.setEspId(espId); - // 保存到业务流程表 - save(revision); - // 保存选人信息 - // 人员 - processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, variables); - String newStandardName = esp.getNewEnStandardName(); - String revisionType = esp.getProjectType().equals(ESPRevisionType.ENACT.getValue()) ? "制定" : "修订"; - String prcName = standardNo + "-" + newStandardName + "-" + revisionType; - Integer prcType = ProcessTypeEnum.ES_REVISION.getValue(); - processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, this.getUserMap(variables)); - // 将企标计划改为运行中 - esp.setProjectStatus(ESPProjectStatus.IN_PROGRESS.getValue()); - espService.updateById(esp); - // 强制撤回 - CommonVO commonVO = new CommonVO(); - commonVO.setPrcName(prcName); - commonVO.setPrcMes(null); - commonVO.setDueTime(null); - revisionData.setCommon(commonVO); - // 获取第一个任务的taskId - actFlowCommonService.getFirstTaskId(processInstanceId, mainDraftUser, processDefinitionId); - revisionData.getData().setAutoStartFlag(true); - // 手动翻译 - String jsonData = translationAspect.autoParseDictText(revisionData, variables); - // 强制撤回 - commonVO.setProcessInstanceId(processInstanceId); - actFlowCommonService.saveFirstNodeDraft(commonVO, ProcessTypeEnum.ES_REVISION, jsonData); - // 更新流程信息 - actFlowCommonService.updateProcessAllWithUserId(processInstanceId, mainDraftUser, prcName, null, prcType, null); - } - - @Override - public ESRevisionDataVO getHandleData(String taskId) { - if (!actFlowCommonService.taskExists(taskId)) { - throw new JeroBootException("任务不存在"); - } - String userId = actFlowCommonService.getOriginTaskAssignee(taskId); - String executionId = taskService.createTaskQuery().taskId(taskId).singleResult().getExecutionId(); - // 根据当前执行Id获取所有子执行Id - List executionIdList = actFlowCommonService.getAllChildExecutionIds(executionId); - executionIdList.add(executionId); - ESRevisionDataVO revisionDataVO = new ESRevisionDataVO(); - // 使用流程引擎根据taskId找到流程实例Id - String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId); - // 获取流程通用数据 - ProcessAll process = processAllService.getByProcessInstanceId(processInstanceId); - CommonVO commonVO = new CommonVO(); - commonVO.setPrcName(process.getPrcName()); - commonVO.setTaskId(process.getTaskId()); - commonVO.setPrcMes(process.getPrcMes()); - commonVO.setDueTime(process.getDueTime()); - commonVO.setNodeId(process.getNodeId()); - revisionDataVO.setCommon(commonVO); - ProcessApprovalRecord record = actFlowCommonService.getNodeIdByTaskId(taskId); - // 获取流程实例数据 - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - LambdaQueryWrapper advicesWrapper = new LambdaQueryWrapper<>(); - advicesWrapper.eq(EsRevisionAdvice::getProcessInstanceId, processInstanceId); - wrapper.eq(ProcessEsRevision::getProcessInstanceId, processInstanceId); - ProcessEsRevision data = getOne(wrapper); - List adviceList = new ArrayList<>(); - List otherDraftUserVOS = data.parseOtherDraftUserVOS(); - List inspectContentVOS = data.parseInspectContents(); - String xmlNodeId = record.getNodeId(); - Object passObject = taskService.getVariable(taskId, "pass"); - boolean pass = true; - if (passObject != null) { - pass = (boolean) passObject; - } - // 某些节点需要对数据进行特殊处理 - switch (xmlNodeId) { - case OTHER_DRAFT_USER_UPLOAD: - boolean findFlag = false; - otherDraftUserVOS.forEach(o -> o.setOperateType(null)); - for (OtherDraftUserVO o : otherDraftUserVOS) { - if (findFlag) { - o.setOperateType(OperateTypeEnum.CANNOT_OPERATE.getValue()); - continue; - } - if (o.getUser().equals(userId)) { - if (StrUtil.isBlank(o.getTaskId())) { - o.setOperateType(OperateTypeEnum.UPLOAD.getValue()); - o.setTaskId(taskId); - findFlag = true; - } else { - if (!taskId.equals(o.getTaskId())) { - o.setOperateType(OperateTypeEnum.CANNOT_OPERATE.getValue()); - } - } - } else { - o.setOperateType(OperateTypeEnum.CANNOT_OPERATE.getValue()); - } - } - data.setOtherDraftUserVOS(otherDraftUserVOS); - data.setOtherDrafterUploadFileJson(otherDraftUserVOS); - updateById(data); - break; - case CONTACT_USER_DISTRIBUTE: - if (pass) { - data.setWorkGroup(null); - data.setAuthDept(null); - data.setReviewUser(null); - } - case CONTACT_USER_COLLECT: - // 根据联络人找到部门联络人主管级领导 - LambdaQueryWrapper contactWrapper = new LambdaQueryWrapper<>(); - advicesWrapper.eq(EsRevisionAdvice::getExecutionId, executionId); - contactWrapper.eq(LawsContactManage::getContactId, userId); - List list = contactManageService.list(contactWrapper); - if (list != null && !list.isEmpty()) { - data.setContactUserLeader(list.get(0).getLeaderId()); - } - case CONTACT_USER_LEADER_APPROVAL: - advicesWrapper.eq(EsRevisionAdvice::getExecutionId, executionId); - adviceList = adviceService.list(advicesWrapper); - break; - case MAIN_DRAFT_USER_COLLECT_SECOND: - adviceList = adviceService.list(advicesWrapper); - break; - } - data.setAdvices(adviceList); - data.setOtherDraftUserVOS(otherDraftUserVOS); - data.setInspectContents(inspectContentVOS); - revisionDataVO.setData(data); - return revisionDataVO; - } - - @Override - public void approval(ESRevisionDataVO revisionData, boolean pass) { - CommonVO commonVO = revisionData.getCommon(); - String taskId = commonVO.getTaskId(); - // 获取task - if (StrUtil.isBlank(taskId) || !actFlowCommonService.taskExists(taskId)) { - throw new JeroBootException("taskId为空或任务不存在"); - } - String userId = actFlowCommonService.getOriginTaskAssignee(taskId); - Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); - // 获取执行id - String executionId = task.getExecutionId(); - // 获取当前节点的id - ProcessApprovalRecord record = actFlowCommonService.getNodeIdByTaskId(taskId); - String xmlNodeId = record.getNodeId(); - String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId); - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); - LambdaUpdateWrapper adviceWrapper = new LambdaUpdateWrapper<>(); - wrapper.eq(ProcessEsRevision::getProcessInstanceId, processInstanceId); - wrapper.eq(ProcessEsRevision::getDelFlag, YesOrNoEnum.NO.getValue()); - adviceWrapper.eq(EsRevisionAdvice::getProcessInstanceId, processInstanceId); - ProcessEsRevision dataDb = getOne(wrapper); - updateWrapper.eq(ProcessEsRevision::getProcessInstanceId, processInstanceId); - updateWrapper.eq(ProcessEsRevision::getDelFlag, YesOrNoEnum.NO.getValue()); - // 获取当前流程 - ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult(); - String processDefinitionId = processInstance.getProcessDefinitionId(); - Map userMap = new HashMap<>(); - List advices; - ProcessEsRevision data; - Map flowUser; - String contactUser = (String) runtimeService.getVariable(executionId, "contactUser"); - // 更新审批表为完成,填充数据 - actFlowCommonService.updateApprovalInfo(commonVO, taskId, pass); - String curUserId; - switch (xmlNodeId) { - case MAIN_DRAFT_USER_DISTRIBUTE: - // 判断是否分发 设置流程变量 - data = revisionData.getData(); - flowUser = revisionData.getFlowUser(); - List otherDraftUserVOS = data.getOtherDraftUserVOS(); - if (otherDraftUserVOS == null || otherDraftUserVOS.isEmpty()) { - taskService.setVariable(taskId, "distribute", false); - } else { - taskService.setVariable(taskId, "distribute", true); - taskService.setVariable(taskId, "otherDraftUserList", otherDraftUserVOS.stream().map(OtherDraftUserVO::getUser) - .collect(Collectors.toList())); - otherDraftUserVOS.forEach(o -> o.setFinishFlag(YesOrNoEnum.NO.getValue())); - data.setProofreader(otherDraftUserVOS.stream() - .map(OtherDraftUserVO::getUser) - .distinct() - .collect(Collectors.joining(","))); - data.setOtherDraftUserVOS(otherDraftUserVOS); - data.setOtherDrafterUploadFileJson(otherDraftUserVOS); - } - saveOrUpdate(data); - String standardizationUser = (String) flowUser.get("standardizationUser"); - taskService.setVariable(taskId, "standardizationUser", standardizationUser); - // 保存人员信息 - Map actVariables = this.setVariables(revisionData); - processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, this.getUserMap(actVariables)); - break; - case OTHER_DRAFT_USER_UPLOAD: - data = revisionData.getData(); - List otherDraftUserVOList = data.getOtherDraftUserVOS(); - otherDraftUserVOList.forEach(o -> { - if (StrUtil.isNotBlank(o.getFileId())) { - o.setFinishFlag(YesOrNoEnum.YES.getValue()); - } - }); - dataDb.setOtherDrafterUploadFileJson(otherDraftUserVOList); - saveOrUpdate(dataDb); - break; - case MAIN_DRAFT_USER_COLLECT_FIRST: - // 判断是否需要稽查 设置流程变量 保存稽查列表 - data = revisionData.getData(); - boolean inspectFlag = !data.getInspectFlag().equals(YesOrNoEnum.NO.getValue()); - if (inspectFlag) { - List inspectContents = data.getInspectContents(); - data.setInspectContentJson(inspectContents); - } - // 保存流程数据 - saveOrUpdate(data); - break; - case STANDARDIZATION_CHECK: - // 判断是否可以评审 - if (pass) { - data = revisionData.getData(); - List raterList = Arrays.asList(data.getRaters().split(",")); - taskService.setVariable(taskId, "raterList", raterList); - // 保存流程数据 - saveOrUpdate(data); - userMap.put("raterList", data.getRaters()); - processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, userMap); - } - break; - case RATER_RATE: - // 保存打分记录 - data = revisionData.getData(); - List reviewMeetingDetails = data.getReviewMeetingDetails(); - // 设置当前评分人 - curUserId = UserUtils.getUserId(); - String finalCurUserId = curUserId; - reviewMeetingDetails.forEach(reviewMeetingDetail -> reviewMeetingDetail.setAdjudicatorId(finalCurUserId)); - ProcessEsRevision revisionDb = getById(dataDb.getId()); - List reviewMeetingDetailsDb = revisionDb.parseReviewMeetingDetails(); - if (reviewMeetingDetailsDb == null) { - reviewMeetingDetailsDb = new ArrayList<>(); - } - reviewMeetingDetailsDb.addAll(reviewMeetingDetails); - revisionDb.setReviewMeetingDetailJson(reviewMeetingDetailsDb); - saveOrUpdate(revisionDb); - break; - case CONFIRM_ADVISE: - // 判断是否开启征求意见子流程 设置流程变量 - data = revisionData.getData(); - boolean adviceFlag = !data.getAdviceFlag().equals("0"); - if (adviceFlag) { - List contactUserList = Arrays.asList(data.getContactUser().split(",")); - taskService.setVariable(taskId, "contactUserList", contactUserList); - taskService.setVariable(taskId, "open", true); - String mainDraftUser = (String) taskService.getVariable(taskId, "mainDraftUser"); - // 保存流程数据 - saveOrUpdate(data); - userMap.put("mainDraftCollectUser", mainDraftUser); - userMap.put("contactUser", data.getContactUser()); - processNodeLinkService.incrementSaveNodeUserLink(processDefinitionId, processInstanceId, userMap); - } else { - taskService.setVariable(taskId, "open", false); - } - break; - case CONTACT_USER_DISTRIBUTE: - data = revisionData.getData(); - String workGroup = data.getWorkGroup(); - List adviceUserList = Arrays.asList(workGroup.split(",")); - runtimeService.setVariableLocal(executionId, "adviceUserList", adviceUserList); - runtimeService.setVariable(executionId, executionId + "-adviceDeadline", data.getAdviceDeadline()); - runtimeService.setVariable(executionId, "contactExecutionId", executionId); - userMap.put("adviceUserList", workGroup); - processNodeLinkService.incrementSaveNodeUserLink(processDefinitionId, processInstanceId, userMap); - // 设置截止时间 - saveOrUpdate(data); - break; - case ADVICE: - data = revisionData.getData(); - advices = data.getAdvices(); - advices.forEach(advice -> advice.setCreateUserId(userId)); - advices.forEach(advice -> advice.setProcessInstanceId(processInstanceId)); - String contactUserExecutionId = (String) runtimeService.getVariable(executionId, executionId + "-ContactExecutionId"); - advices.forEach(advice -> advice.setExecutionId(contactUserExecutionId)); - adviceService.saveBatch(advices); - break; - case CONTACT_USER_COLLECT: - data = revisionData.getData(); - // 先删后增 - String contactUserLeader = data.getContactUserLeader(); - runtimeService.setVariable(executionId, "contactUserLeader", contactUserLeader); - runtimeService.setVariable(executionId, executionId + "-ContactUserLeader", contactUserLeader); - userMap.put("contactUserLeader", data.getContactUserLeader()); - advices = data.getAdvices(); - adviceWrapper.eq(EsRevisionAdvice::getExecutionId, executionId); - adviceService.remove(adviceWrapper); - advices.forEach(advice -> advice.setProcessInstanceId(processInstanceId)); - advices.forEach(advice -> advice.setExecutionId(executionId)); - adviceService.saveBatch(advices); - processNodeLinkService.incrementSaveNodeUserLink(processDefinitionId, processInstanceId, userMap); - break; - case CONTACT_USER_LEADER_APPROVAL: - // 保存流程数据 - if (pass) { - data = revisionData.getData(); - // 保存征求意见记录 先删后增 - adviceService.remove(new LambdaQueryWrapper() - .eq(EsRevisionAdvice::getProcessInstanceId, processInstanceId) - .eq(EsRevisionAdvice::getExecutionId, executionId)); - advices = data.getAdvices(); - adviceWrapper.eq(EsRevisionAdvice::getExecutionId, executionId); - adviceService.remove(adviceWrapper); - advices.forEach(advice -> advice.setProcessInstanceId(processInstanceId)); - advices.forEach(advice -> advice.setExecutionId(executionId)); - advices.forEach(advice -> { - if (StrUtil.isBlank(advice.getCreateUserId())) { - advice.setCreateUserId(UserUtils.getUserId()); - } - }); - adviceService.saveBatch(advices); - } - break; - case MAIN_DRAFT_USER_COLLECT_SECOND: - // 保存流程数据 - data = revisionData.getData(); - // 更改保存征求意见记录 - advices = data.getAdvices(); - // 如果没有创建人的记录说明是主起草人新增的 需要设置创建人 - advices.forEach(advice -> { - if (StrUtil.isBlank(advice.getCreateUserId())) { - advice.setCreateUserId(UserUtils.getUserId()); - } - }); - adviceService.saveOrUpdateBatch(advices); - if (StrUtil.isNotBlank(data.getId())) { - updateById(data); - } - // 给所有意见提出人发送意见反馈消息 - this.sendMessageToAdviceUser(data, processInstanceId); - break; - case MAIN_DRAFT_USER_UPLOAD: - // 设置后续节点的办理人 - data = revisionData.getData(); - List proofreaderList = Arrays.asList(data.getProofreader().split(",")); - List approvalUserList = Arrays.asList(data.getApprovalUser().split(",")); - String approvalUserStandard = data.getApprovalUserStandard(); - List relatedLeaderList = Arrays.asList(data.getRelatedLeader().split(",")); - String chiefEngineer = data.getChiefEngineer(); - flowUser = new HashMap<>(); - flowUser.put("otherDraftCheckUserList", proofreaderList); - flowUser.put("mainDraftUserLeaderList", approvalUserList); - flowUser.put("standardizationUser", approvalUserStandard); - flowUser.put("relatedDeptLeaderList", relatedLeaderList); - flowUser.put("chiefEngineer", chiefEngineer); - taskService.setVariables(taskId, flowUser); - userMap.put("otherDraftCheckUserList", data.getProofreader()); - userMap.put("mainDraftUserLeaderList", data.getApprovalUser()); - userMap.put("standardizationUserFinal", approvalUserStandard); - userMap.put("relatedDeptLeaderList", data.getRelatedLeader()); - userMap.put("chiefEngineer", chiefEngineer); - saveOrUpdate(data); - processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, userMap); - break; - case OTHER_DRAFT_USER_CHECK: - // 如果是会签节点,驳回后要将其余节点recode设置为 未处理 状态 - if (!pass) { - actFlowCommonService.updateOtherCountersignRecodeStatus(processInstanceId, CounterSignNodeNameConstants.ES_REVISION_OTHER_DRAFT_USER_CHECK_NODE_NAME); - } - break; - case LEADER_APPROVAL: - // 如果是会签节点,驳回后要将其余节点recode设置为 未处理 状态 - if (!pass) { - actFlowCommonService.updateOtherCountersignRecodeStatus(processInstanceId, CounterSignNodeNameConstants.ES_REVISION_LEADER_APPROVAL_NODE_NAME); - } - break; - case RELATED_LEADER_APPROVAL: - // 如果是会签节点,驳回后要将其余节点recode设置为 未处理 状态 - if (!pass) { - actFlowCommonService.updateOtherCountersignRecodeStatus(processInstanceId, CounterSignNodeNameConstants.ES_REVISION_RELATED_LEADER_APPROVAL_NODE_NAME); - } - break; - case MAIN_DRAFT_USER_RELEASE: - data = revisionData.getData(); - curUserId = UserUtils.getUserId(); - data.setMainDraftUser(curUserId); - saveOrUpdate(data); - // 给授权部门的所有人员发送消息 - this.sendMessageToAuthDeptUser(processInstanceId); - break; - } - // 转办修改流程变量逻辑 - switch (xmlNodeId) { - case MAIN_DRAFT_USER_COLLECT_FIRST: - case MAIN_DRAFT_USER_COLLECT_SECOND: - case MAIN_DRAFT_USER_UPLOAD: - // 获取当前节点的id - curUserId = UserUtils.getUserId(); - taskService.setVariable(taskId, "mainDraftUser", curUserId); - break; - case STANDARDIZATION_CHECK: - case CONFIRM_ADVISE: - // 获取当前节点的id - curUserId = UserUtils.getUserId(); - taskService.setVariable(taskId, "standardizationUser", curUserId); - break; - case CONTACT_USER_DISTRIBUTE: - case CONTACT_USER_COLLECT: - // 获取当前节点的id - curUserId = UserUtils.getUserId(); - runtimeService.setVariable(executionId, "contactUser", curUserId); - runtimeService.setVariable(executionId, curUserId + "-ExecutionId", executionId); - break; - case CONTACT_USER_LEADER_APPROVAL: - // 获取当前节点的id - curUserId = UserUtils.getUserId(); - runtimeService.setVariable(executionId, "contactUserLeader", curUserId); - runtimeService.setVariable(executionId, executionId + "-ContactUserLeader", curUserId); - break; - case LEADER_APPROVAL: - // 根据流程实例Id修改审批人字段 - // 获取当前节点的id - curUserId = UserUtils.getUserId(); - runtimeService.setVariable(executionId, "contactUserLeader", curUserId); - } - runtimeService.setVariable(processInstanceId, "pass", pass); - // 审批节点 - actFlowCommonService.completeTask(taskId, userId); - } - - @Override - public void transfer(String taskId, String toUserId) { - processHandleService.transfer(taskId, toUserId); - } - - @Override - public Map> getSignInfo(String processInstanceId) { - Map> result = new LinkedHashMap<>(); - LambdaQueryWrapper parWrapper = new LambdaQueryWrapper<>(); - parWrapper.eq(ProcessApprovalRecord::getProcessInstanceId, processInstanceId); - parWrapper.eq(ProcessApprovalRecord::getFinishFlag, FinishFlagEnum.COMPLETE.getValue()); - LambdaQueryWrapper revisionWrapper = new LambdaQueryWrapper<>(); - revisionWrapper.eq(ProcessEsRevision::getProcessInstanceId, processInstanceId); - ProcessEsRevision revision = getOne(revisionWrapper); - // 获取流程审批信息 - List approvalRecords = parService.list(parWrapper); - if (approvalRecords == null || approvalRecords.isEmpty()) { - throw new JeroBootException("流程审批记录为空"); - } - Map> parMap = approvalRecords.stream() - .collect(Collectors.groupingBy(ProcessApprovalRecord::getNodeId)); - List processApprovalRecords; - SignInfo singInfo; - - // 获取主起草用户 - processApprovalRecords = parMap.get(MAIN_DRAFT_USER_UPLOAD); - processApprovalRecords.sort(Comparator.comparing(ProcessApprovalRecord::getEndTime).reversed()); - singInfo = this.getSingInfo(processApprovalRecords.get(0)); - result.put("起草签署", Collections.singletonList(singInfo)); - - // 获取其他起草人用户 - List otherDraftUsers = new ArrayList<>(); - processApprovalRecords = parMap.get(OTHER_DRAFT_USER_CHECK); - List proofreaderlist = Arrays.asList(revision.getProofreader().split(",")); - // 剔除所有驳回和未审批的记录 - processApprovalRecords.removeIf(ar -> CommitFlagEnum.REJECT.getValue().equals(ar.getCommitFlag())); - processApprovalRecords.removeIf(ar -> ar.getCommitFlag() == null); - // 将processApprovalRecords按照EndTime倒序排序 - processApprovalRecords.sort(Comparator.comparing(ProcessApprovalRecord::getEndTime).reversed()); - // 取list.size()个数据 - processApprovalRecords = processApprovalRecords.subList(0, proofreaderlist.size()); - for (ProcessApprovalRecord processApprovalRecord : processApprovalRecords) { - singInfo = this.getSingInfo(processApprovalRecord); - otherDraftUsers.add(singInfo); - } - result.put("校对签署", otherDraftUsers); - - // 获取审核签署+主管级领导用户 - List approvalLeaders = new ArrayList<>(); - processApprovalRecords = parMap.get(LEADER_APPROVAL); - List approvalUserList = (List) runtimeService.getVariable(processInstanceId, "mainDraftUserLeaderList"); - // 剔除所有驳回的记录 - processApprovalRecords.removeIf(ar -> ar.getCommitFlag().equals(CommitFlagEnum.REJECT.getValue())); - // 将processApprovalRecords按照EndTime倒序排序 - processApprovalRecords.sort(Comparator.comparing(ProcessApprovalRecord::getEndTime).reversed()); - // 取list.size()个数据 - processApprovalRecords = processApprovalRecords.subList(0, approvalUserList.size()); - for (ProcessApprovalRecord processApprovalRecord : processApprovalRecords) { - singInfo = this.getSingInfo(processApprovalRecord); - approvalLeaders.add(singInfo); - } - result.put("审核签署", approvalLeaders); - - // 获取标准化签署+标准化审核用户 - processApprovalRecords = parMap.get(STANDARDIZATION_APPROVAL); - // 将processApprovalRecords按照EndTime倒序排序 - processApprovalRecords.sort(Comparator.comparing(ProcessApprovalRecord::getEndTime).reversed()); - singInfo = this.getSingInfo(processApprovalRecords.get(0)); - result.put("标准化签署", Collections.singletonList(singInfo)); - - // 获取会签签署+相关部门领导用户 - List relatedLeaders = new ArrayList<>(); - processApprovalRecords = parMap.get(RELATED_LEADER_APPROVAL); - List list = Arrays.asList(revision.getRelatedLeader().split(",")); - // 剔除所有驳回的记录 - processApprovalRecords.removeIf(ar -> ar.getCommitFlag().equals(CommitFlagEnum.REJECT.getValue())); - // 将processApprovalRecords按照EndTime倒序排序 - processApprovalRecords.sort(Comparator.comparing(ProcessApprovalRecord::getEndTime).reversed()); - // 取list.size()个数据 - processApprovalRecords = processApprovalRecords.subList(0, list.size()); - for (ProcessApprovalRecord processApprovalRecord : processApprovalRecords) { - singInfo = this.getSingInfo(processApprovalRecord); - relatedLeaders.add(singInfo); - } - result.put("会签签署", relatedLeaders); - - // 获取批准签署+总工程师用户姓名 - processApprovalRecords = parMap.get(CHIEF_ENGINEER_APPROVAL); - // 将processApprovalRecords按照EndTime倒序排序 - processApprovalRecords.sort(Comparator.comparing(ProcessApprovalRecord::getEndTime).reversed()); - singInfo = this.getSingInfo(processApprovalRecords.get(0)); - result.put("批准签署", Collections.singletonList(singInfo)); - - return result; - } - - private SignInfo getSingInfo(ProcessApprovalRecord approvalRecord) { - SignInfo signInfo = new SignInfo(); - String userId = approvalRecord.getUserId(); - signInfo.setUserId(userId); - SysUser user = userService.getById(userId); - signInfo.setUserName(user.getRealname().concat("(").concat(user.getUsername()).concat(")")); - signInfo.setAvatarFileId(user.getAvatar()); - signInfo.setSignTime(approvalRecord.getEndTime()); - if (StrUtil.isNotBlank(user.getAvatar())) { - signInfo.setAvatarFileUrl("/sys/common/downloadWithoutToken/".concat(user.getAvatar())); - } - return signInfo; - } - - @Override - public String saveToDraft(ProcessInfoVO processInfoVO) { - ESRevisionDataVO businessInfoDTO = processInfoVO.getBusinessInfoDTO(); - if (businessInfoDTO != null) { - ProcessEsRevision data = businessInfoDTO.getData(); - if (data != null) { - processInfoVO.setBusinessId(data.getId()); - } - } - - // 流程信息 - BasicProcessInfoDTO basicProcessInfoDTO = processInfoVO.getBasicProcessInfoDTO(); - basicProcessInfoDTO.setProcessType(ProcessTypeEnum.ES_REVISION.getValue()); // 流程类型 - - return processHandleService.saveToDraft(processInfoVO); - } - - private void sendMessageToAuthDeptUser(String processInstanceId) { - // 根据流程实例ID找到json数据 - ProcessEsRevision revision = getOne(new LambdaQueryWrapper() - .eq(ProcessEsRevision::getProcessInstanceId, processInstanceId)); - String businessJson = revision.getBusinessJson(); - // 找到authDept字段 - JSONObject jsonObject = JSON.parseObject(businessJson); - String authDept = revision.getAuthDept(); - if (StrUtil.isBlank(authDept)) { - return; - } - String standardNumber = jsonObject.getString("standard_number"); - String standardName = jsonObject.getString("standard_name"); - // 根据部门找到所有人员 - List userIdList = new ArrayList<>(); - String[] authDeptList = authDept.split(","); - for (String deptId : authDeptList) { - List sysUsers = sysUserDepartService.queryUserByDepId(deptId); - sysUsers.forEach(sysUser -> userIdList.add(sysUser.getId())); - } - // 发送消息 - if (userIdList.isEmpty()) { - return; - } - SendMessageDTO sendMessageDTO = new SendMessageDTO(); - sendMessageDTO.setTemplateCode(MessageTemplateCodeCommon.ES_REVISION_STANDARD_RELEASE); - sendMessageDTO.setToUserId(String.join(",", userIdList)); - Map sendMap = new HashMap<>(); - sendMap.put("standardNumber", standardNumber); - sendMap.put("standardName", standardName); - sendMap.put("openType", "url"); - sendMap.put("openPage", "/enterpriseStandardLibrary/enterpriseStandardList?standard_number=" + standardNumber); - sendMessageDTO.setMap(sendMap); - sendMessageAPI.sendMessage(sendMessageDTO); - } - - private void sendMessageToAdviceUser(ProcessEsRevision revision, String processInstanceId) { - ProcessAll processAll = processAllService.getByProcessInstanceId(processInstanceId); - List advices = revision.getAdvices(); - Map> adviceMap = advices.stream() - .collect(Collectors.groupingBy(EsRevisionAdvice::getCreateUserId)); - // 按照Map的Key遍历 - for (String userId : adviceMap.keySet()) { - List adviceList = adviceMap.get(userId); - SendMessageDTO sendMessageDTO = new SendMessageDTO(); - sendMessageDTO.setTemplateCode(MessageTemplateCodeCommon.ES_REVISION_ADVICE); - sendMessageDTO.setToUserId(userId); - Map sendMap = new HashMap<>(); - sendMap.put("prcNum", processAll.getPrcNum()); - sendMap.put("prcName", processAll.getPrcName()); - StringBuilder msg = new StringBuilder(); - for (EsRevisionAdvice advice : adviceList) { - // 采纳的不发消息 - if (HandleAdviceEnum.AGREE.getValue().equals(advice.getHandleAdvice())) { - continue; - } - msg.append(advice.getClauseNum()).append(" ").append(advice.getClauseName()); - if (HandleAdviceEnum.DISAGREE.getValue().equals(advice.getHandleAdvice())) { - msg.append(" 未被采纳,"); - } else { - msg.append(" 被部分采纳,"); - } - msg.append("理由为:").append(advice.getReason()).append(";"); - } - // 去除最后一个分号 - if (StrUtil.isNotBlank(msg)) { - msg.deleteCharAt(msg.length() - 1); - } - sendMap.put("msg", msg.toString()); - sendMessageDTO.setMap(sendMap); - sendMessageAPI.sendMessage(sendMessageDTO); - } - } -} - - - - diff --git a/laws-modules/src/main/java/com/jero/modules/bindPart/controller/LawsBindPartController.java b/laws-modules/src/main/java/com/jero/modules/bindPart/controller/LawsBindPartController.java deleted file mode 100644 index c834d5d7..00000000 --- a/laws-modules/src/main/java/com/jero/modules/bindPart/controller/LawsBindPartController.java +++ /dev/null @@ -1,189 +0,0 @@ -package com.jero.modules.bindPart.controller; - -import com.baomidou.mybatisplus.core.metadata.IPage; -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.exception.JeroBootException; -import com.jero.common.util.MessageUtils; -import com.jero.modules.bindPart.entity.BindPartStandardVO; -import com.jero.modules.bindPart.entity.LawsBindPart; -import com.jero.modules.bindPart.service.ILawsBindPartService; -import com.jero.modules.laws.documenttool.service.IDocumentSplitService; -import com.jero.modules.split.entity.SarFileSplitMenuEO; -import com.jero.modules.split.page.SarFileSplitMenuEOPage; -import com.jero.modules.split.service.ISarFileSplitMenuEOService; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import io.swagger.annotations.ApiParam; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.apache.poi.ss.formula.functions.T; -import org.apache.shiro.authz.annotation.RequiresPermissions; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import javax.annotation.Resource; -import java.util.Arrays; -import java.util.List; -import java.util.Map; - -@Slf4j -@Api(tags="绑定零部件") -@RestController -@RequestMapping("/laws/bindPart") -public class LawsBindPartController { - - @Autowired - private ILawsBindPartService lawsBindPartService; - - @Resource - private IDocumentSplitService documentSplitService; - - @Resource - private ISarFileSplitMenuEOService sarFileSplitMenuEOService; - - - @AutoLog(value = "绑定零部件-分页列表查询") - @ApiOperation(value="绑定零部件-分页列表查询", notes="绑定零部件-分页列表查询") - @GetMapping(value = "/page") - @RequiresPermissions("sys:bindingPart:search") - public Result> queryPageList(LawsBindPart lawsBindPart, - @RequestParam(name="pageNo", defaultValue="1") @ApiParam("页码") Integer pageNo, - @RequestParam(name="pageSize", defaultValue="10") @ApiParam("页面显示数量") Integer pageSize) { - IPage pageList= lawsBindPartService.queryPage(lawsBindPart, pageNo, pageSize); - return Result.OK(pageList); - } - - @AutoLog(value = "绑定零部件-是否显示使用绑定关系") - @ApiOperation(value="绑定零部件-是否显示使用绑定关系", notes="绑定零部件-是否显示使用绑定关系") - @GetMapping(value = "/isShowUseBindRelation") - public Result isShowUseBindRelation(LawsBindPart lawsBindPart) { - return Result.OK(lawsBindPartService.isShowUseBindRelation(lawsBindPart)); - } - - @AutoLog(value = "绑定零部件-使用绑定关系") - @ApiOperation(value="绑定零部件-使用绑定关系", notes="绑定零部件-使用绑定关系") - @GetMapping(value = "/useBindRelation") - public Result useBindRelation(@RequestParam("id") String id) { - lawsBindPartService.useBindRelation(id); - return Result.OK(); - } - - /** - * 添加 - * - * @param lawsBindPart - * @return - */ - @AutoLog(value = "绑定零部件-添加") - @ApiOperation(value="绑定零部件-添加", notes="绑定零部件-添加") - @PostMapping(value = "/add") - @RequiresPermissions("sys:bindingPart:add") - public Result add(@Validated @RequestBody LawsBindPart lawsBindPart) { - lawsBindPartService.add(lawsBindPart); - return Result.OK("操作成功!"); - } - - /** - * 编辑 - * - * @param lawsBindPart - * @return - */ - @AutoLog(value = "绑定零部件-编辑") - @ApiOperation(value="绑定零部件-编辑", notes="绑定零部件-编辑") - @PostMapping(value = "/edit") - @RequiresPermissions("sys:bindingPart:edit") - public Result edit(@Validated @RequestBody LawsBindPart lawsBindPart) { - lawsBindPartService.editById(lawsBindPart); - return Result.OK("操作成功!"); - } - - /** - * 通过id删除 - * - * @param map - * @return - */ - @AutoLog(value = "绑定零部件-通过id删除") - @ApiOperation(value="绑定零部件-通过id删除", notes="绑定零部件-通过id删除") - @PostMapping(value = "/delete") - @RequiresPermissions("sys:bindingPart:delete") - public Result delete(@RequestBody Map map) { - if(!map.containsKey("id") || StringUtils.isEmpty(map.get("id"))){ - return Result.error("请选择数据!"); - } - lawsBindPartService.deleteById(map.get("id")); - return Result.OK("删除成功!"); - } - - /** - * 批量删除 - * - * @param map - * @return - */ - @AutoLog(value = "绑定零部件-批量删除") - @ApiOperation(value="绑定零部件-批量删除", notes="绑定零部件-批量删除") - @PostMapping(value = "/deleteBatch") - @RequiresPermissions("sys:bindingPart:batchDel") - public Result deleteBatch(@RequestBody Map map) { - if(!map.containsKey("ids") || StringUtils.isEmpty(map.get("ids"))){ - return Result.error("请选择数据!"); - } - this.lawsBindPartService.deleteByIds(Arrays.asList(map.get("ids").split(","))); - return Result.OK("批量删除成功!"); - } - - /** - * 选择标准 - * - * @return - */ - @AutoLog(value = "绑定零部件-选择标准") - @ApiOperation(value="绑定零部件-选择标准", notes="绑定零部件-选择标准") - @GetMapping(value = "/selectStandard") - public Result> selectStandard(BindPartStandardVO bindPartStandardVO, - @RequestParam(name="pageNo", defaultValue="1") @ApiParam("页码") Integer pageNo, - @RequestParam(name="pageSize", defaultValue="10") @ApiParam("页面显示数量") Integer pageSize) { - IPage pageList= lawsBindPartService.selectStandard(bindPartStandardVO, pageNo, pageSize); - return Result.OK(pageList); - } - - /** - * 选择条款 - * - * @return - */ - @AutoLog(value = "绑定零部件-条款列表") - @ApiOperation(value="绑定零部件-条款列表", notes="绑定零部件-条款列表") - @PostMapping(value = "/selectClause") - public Result>> selectClause(@RequestBody Map parameter) { - try { - IPage> data = documentSplitService.queryDocumentSplitDetail(parameter, false); - return Result.OK(data); - } catch (JeroBootException e){ - return Result.error(e.getMessage()); - } catch (Exception e){ - return Result.error(MessageUtils.getMessage(ResultCommon.ERROR)); - } - } - - /** - * 选择条款 - * - * @return - */ - @AutoLog(value = "绑定零部件-条款目录树") - @ApiOperation(value="绑定零部件-条款目录树", notes="绑定零部件-条款目录树") - @GetMapping(value = "/clauseTree") - public Result> clauseTree(SarFileSplitMenuEOPage page) { - page.setValidFlag("0"); - page.setOrderBy("display_seq asc"); - List getList = sarFileSplitMenuEOService.queryByList(page); - return Result.OK(getList); - } - -} diff --git a/laws-modules/src/main/java/com/jero/modules/bindPart/docking/DockingService.java b/laws-modules/src/main/java/com/jero/modules/bindPart/docking/DockingService.java deleted file mode 100644 index 588d7b4e..00000000 --- a/laws-modules/src/main/java/com/jero/modules/bindPart/docking/DockingService.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.jero.modules.bindPart.docking; - -public interface DockingService { - - /** - * PDM验证零部件号是否可修改 - * - * @return com.jero.common.api.vo.Result> - * @author CHH - * @date 2024/4/28 15:08 - */ - void validPartNoEdit(String partNo, String partName, String bindUserInfo); - - /** - * PDM校验某个零部件是否所属于某个零部件分类 - * @author CHH - * @date 2024/4/28 15:08 - * @return com.jero.common.api.vo.Result> - */ - boolean validPartBelong(String partNo, String partName, String partCategoryNum); - - /** - * E采通接收消息接口 - * @author CHH - * @date 2024/5/20 15:08 - * @return com.jero.common.api.vo.Result> - */ - void sendStandardChangeToSCM(String standardId, String standardType, String operateType, String bindPartId); - -} diff --git a/laws-modules/src/main/java/com/jero/modules/bindPart/docking/DockingServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/bindPart/docking/DockingServiceImpl.java deleted file mode 100644 index de301592..00000000 --- a/laws-modules/src/main/java/com/jero/modules/bindPart/docking/DockingServiceImpl.java +++ /dev/null @@ -1,280 +0,0 @@ -package com.jero.modules.bindPart.docking; - -import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.jero.common.exception.JeroBootException; -import com.jero.modules.bindPart.entity.LawsBindPart; -import com.jero.modules.bindPart.service.ILawsBindPartService; -import com.jero.modules.laws.standard.entity.LawsDomesticStandard; -import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard; -import com.jero.modules.laws.standard.entity.LawsOverseasStandard; -import com.jero.modules.laws.standard.service.ILawsDomesticStandardService; -import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService; -import com.jero.modules.laws.standard.service.ILawsOverseasStandardService; -import com.jero.modules.tag.enums.TableNameEnum; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections4.CollectionUtils; -import org.jetbrains.annotations.NotNull; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.http.HttpEntity; -import org.springframework.http.HttpHeaders; -import org.springframework.http.MediaType; -import org.springframework.stereotype.Service; -import org.springframework.web.client.RestTemplate; - -import javax.annotation.Resource; -import java.nio.charset.StandardCharsets; -import java.text.SimpleDateFormat; -import java.util.*; - -@Slf4j -@Service -public class DockingServiceImpl implements DockingService{ - - @Resource - private RestTemplate restTemplate; - @Resource - private ILawsBindPartService lawsBindPartService; - @Resource - private ILawsEnterpriseStandardService esService; - @Resource - private ILawsDomesticStandardService gbService; - @Resource - private ILawsOverseasStandardService fbService; - - @Value("${bindPart.pdm_Ip}") - private String poIp; - @Value("${bindPart.edit_valid_url}") - private String editValidUrl; - @Value("${bindPart.part_belong_url}") - private String partBelongUrl; - @Value("${srms.etton_message_url}") - private String etton_message_url; - @Value("${bindPart.auth_username}") - private String authUsername; - @Value("${bindPart.auth_password}") - private String authPassword; - - private static final String REQUESTS = "Requests"; - private static final String MESSAGE_HANDLER = "MessageHeader"; - private static final String STANDARD_NUMBER = "standardNumber"; - private static final String STANDARD_NAME = "standardName"; - public static final String BIND_RELATION_CHANGE = "1"; - public static final String STANDARD_EDIT = "2"; - public static final String STANDARD_ABOLISH = "3"; - - @Override - public void validPartNoEdit(@NotNull String partNo, String partName, @NotNull String bindUserInfo) { - JSONObject all = new JSONObject(); - all.put(MESSAGE_HANDLER, getMessageHandler("CNHTC_PO1000495", null, "PDM")); - JSONObject requests = new JSONObject(); - requests.put("PartNum", partNo); - requests.put("PartName", partName); - requests.put("BindUserInfo", bindUserInfo); - requests.put("Remark1", ""); - requests.put("Remark2", ""); - requests.put("Remark3", ""); - all.put(REQUESTS, requests); - - // 创建 HttpEntity 包含请求体和头信息 - HttpHeaders headers = this.getBasicAuthHeaders(); - HttpEntity entity = new HttpEntity<>(all.toString(), headers); - // 打印完整的请求报文信息 - log.info("发送验证零部件是否可修改请求"); - log.info("IP: " + poIp + editValidUrl); - log.info("Headers: " + headers); - log.info("Request body: " + all); - - JSONObject reData = restTemplate.postForObject(poIp + editValidUrl, entity, JSONObject.class); - log.info("接收验证零部件是否可修改请求返回"); - log.info("返回报文: " + JSON.toJSONString(reData)); - JSONObject response = null; - if (!Objects.isNull(reData) && reData.containsKey("Responses")) { - response = reData.getJSONObject("Responses"); - } - if (!Objects.isNull(response) && response.containsKey("Success")) { - String success = response.getString("Success"); - String message = ""; - if (response.containsKey("Message")) { - message = response.getString("Message"); - } - if ("true".equals(success)) { - log.info("验证零部件号是否可修改接口成功"); - return; - } - if ("false".equals(success)) { - log.error("验证零部件号是否可修改接口失败"); - log.error("验证零部件号是否可修改接口失败原因: " + message); - throw new JeroBootException(message); - } - } - throw new JeroBootException("零部件号" + partNo + "不可新增"); - } - - @Override - public boolean validPartBelong(String partNo, String partName, String partCategoryNum) { - try { - JSONObject all = new JSONObject(); - all.put(MESSAGE_HANDLER, getMessageHandler("CNHTC_PO1000497", null, "PDM")); - JSONObject requests = new JSONObject(); - requests.put("PartNum", partNo); - requests.put("PartName", partName); - requests.put("PartCategoryNum", partCategoryNum); - requests.put("PartCategoryName", ""); - requests.put("Remark1", ""); - requests.put("Remark2", ""); - requests.put("Remark3", ""); - all.put(REQUESTS, requests); - - // 创建 HttpEntity 包含请求体和头信息 - HttpHeaders headers = this.getBasicAuthHeaders(); - HttpEntity entity = new HttpEntity<>(all.toString(), headers); - // 打印完整的请求报文信息 - log.info("发送校验某个零部件是否属于某个零部件分类请求"); - log.info("IP: " + poIp + editValidUrl); - log.info("Headers: " + headers); - log.info("Request body: " + all); - - JSONObject reData = restTemplate.postForObject(poIp + partBelongUrl, entity, JSONObject.class); - log.info("接收校验某个零部件是否属于某个零部件分类返回"); - log.info("返回报文: " + JSON.toJSONString(reData)); - JSONObject response = null; - if (!Objects.isNull(reData) && reData.containsKey("Responses")) { - response = reData.getJSONObject("Responses"); - } - if (!Objects.isNull(response) && response.containsKey("Success")) { - String success = response.getString("Success"); - String message = ""; - if (response.containsKey("Message")) { - message = response.getString("Message"); - } - if ("true".equals(success)) { - log.info("校验某个零部件是否所属于某个零部件分类接口成功"); - return true; - } - if ("false".equals(success)) { - log.error("校验某个零部件是否所属于某个零部件分类接口失败"); - log.error("失败原因: " + message); - return false; - } - } - } catch (Exception e) { - log.error("校验某个零部件是否所属于某个零部件分类异常", e); - } - return false; - } - - @Override - public void sendStandardChangeToSCM(String standardId, String standardType, String operateType, String bindPartId) { - LawsBindPart lawsBindPart = null; - if (BIND_RELATION_CHANGE.equals(operateType)) { - lawsBindPart = lawsBindPartService.getById(bindPartId); - standardId = lawsBindPart.getStandardId(); - } else if (STANDARD_EDIT.equals(operateType) || STANDARD_ABOLISH.equals(operateType)) { - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.eq(LawsBindPart::getStandardId, standardId); - List list = lawsBindPartService.list(lambdaQueryWrapper); - if (CollectionUtils.isEmpty(list)) { - log.info("没有标准Id为{}的零部件绑定关系,不向E采通发送消息", standardId); - return; - } - lawsBindPart = list.get(0); - } else { - throw new JeroBootException("E采通接收消息接口失败,参数不正确,未发送"); - } - // 根据操作类型和标准id 填充标准编号和标准名称字段 - if (standardType == null || TableNameEnum.DOMESTIC_REGULATIONS.getValue().equals(standardType)) { - LawsDomesticStandard gb = gbService.getById(standardId); - if (gb != null) { - standardType = TableNameEnum.DOMESTIC_REGULATIONS.getValue(); - lawsBindPart.setStandardNo(gb.getStandardNumber()); - lawsBindPart.setStandardName(gb.getStandardName()); - } - } - if (standardType == null || TableNameEnum.FOREIGN_REGULATIONS.getValue().equals(standardType)) { - LawsOverseasStandard fb = fbService.getById(standardId); - if (fb != null) { - standardType = TableNameEnum.FOREIGN_REGULATIONS.getValue(); - lawsBindPart.setStandardNo(fb.getStandardNumber()); - lawsBindPart.setStandardName(fb.getStandardName()); - } - } - if (standardType == null || TableNameEnum.ENTERPRISE_STANDARDS.getValue().equals(standardType)) { - LawsEnterpriseStandard es = esService.getById(standardId); - if (es != null) { - standardType = TableNameEnum.ENTERPRISE_STANDARDS.getValue(); - lawsBindPart.setStandardNo(es.getStandardNumber()); - lawsBindPart.setStandardName(es.getStandardName()); - } - } - try { - JSONObject all = new JSONObject(); - all.put(MESSAGE_HANDLER, getMessageHandler("CNHTC_PO1000401", null, "SCM")); - JSONObject requests = new JSONObject(); - requests.put("partNum", lawsBindPart.getPartNo()); - requests.put("partName", lawsBindPart.getPartName()); - requests.put(STANDARD_NUMBER, lawsBindPart.getStandardNo()); - requests.put(STANDARD_NAME, lawsBindPart.getStandardName()); - requests.put("type", Integer.valueOf(operateType)); - all.put(REQUESTS, requests); - - // 创建 HttpEntity 包含请求体和头信息 - HttpHeaders headers = this.getBasicAuthHeaders(); - HttpEntity entity = new HttpEntity<>(all.toString(), headers); - // 打印完整的请求报文信息 - log.info("发送E采通接收消息请求"); - log.info("IP: " + poIp + etton_message_url); - log.info("Headers: " + headers); - log.info("Request body: " + all); - - JSONObject reData = restTemplate.postForObject(poIp + etton_message_url, entity, JSONObject.class); - log.info("接收E采通接收消息接口返回"); - log.info("返回报文: " + JSON.toJSONString(reData)); - JSONObject response = null; - if (!Objects.isNull(reData) && reData.containsKey("Responses")) { - response = reData.getJSONObject("Responses"); - } - if (!Objects.isNull(response) && response.containsKey("success")) { - String success = response.getString("success"); - if ("true".equals(success)) { - log.info("E采通接收消息接口成功"); - } - if ("false".equals(success)) { - log.error("E采通接收消息接口失败"); - } - } - } catch (Exception e) { - log.error("E采通接收消息接口异常", e); - } - } - - // 创建 HttpHeaders 并设置 Basic Auth - private HttpHeaders getBasicAuthHeaders() { - // 创建 HttpHeaders 并设置 Basic Auth - HttpHeaders headers = new HttpHeaders(); - headers.setContentType(MediaType.APPLICATION_JSON); - String auth = authUsername + ":" + authPassword; // 用户名:密码 - byte[] encodedAuth = Base64.getEncoder().encode(auth.getBytes(StandardCharsets.US_ASCII)); - String authHeader = "Basic " + new String(encodedAuth); - headers.set("Authorization", authHeader); - return headers; - } - - public JSONObject getMessageHandler(String interfaceId, String uuid, String receiver) { - if (StrUtil.isBlank(uuid)) { - uuid = UUID.randomUUID().toString(); - } - JSONObject messageHeader = new JSONObject(); - String date = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()); - messageHeader.put("Interface_ID", interfaceId); - messageHeader.put("UUID", uuid); - messageHeader.put("MessageId", ""); - messageHeader.put("Sender", "SRMS"); - messageHeader.put("Receiver", receiver); - messageHeader.put("SendDate", date.substring(0, 8)); - messageHeader.put("SendTime", date.substring(8)); - return messageHeader; - } -} diff --git a/laws-modules/src/main/java/com/jero/modules/bindPart/entity/BindPartStandardVO.java b/laws-modules/src/main/java/com/jero/modules/bindPart/entity/BindPartStandardVO.java deleted file mode 100644 index d4965bb3..00000000 --- a/laws-modules/src/main/java/com/jero/modules/bindPart/entity/BindPartStandardVO.java +++ /dev/null @@ -1,92 +0,0 @@ -package com.jero.modules.bindPart.entity; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.fasterxml.jackson.annotation.JsonFormat; -import com.jero.common.aspect.annotation.Dict; -import io.swagger.annotations.ApiModelProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; -import org.jeecgframework.poi.excel.annotation.Excel; -import org.springframework.format.annotation.DateTimeFormat; - -import java.io.Serializable; -import java.util.Date; - -/** - * @author: Mzaxd - * @Date: 2024/4/18 10:09 - */ -@Data -@NoArgsConstructor -@AllArgsConstructor -public class BindPartStandardVO implements Serializable { - /** - * id - */ - @ApiModelProperty(value = "id") - private String id; - /** - * 标准号 - */ - @ApiModelProperty(value = "标准号") - private String standardNumber; - /** - * 标准名称 - */ - @ApiModelProperty(value = "标准名称") - private String standardName; - /** - * 标准状态 - */ - @ApiModelProperty(value = "标准状态") - @Dict(dicCode = "standard_state") - private String standardState; - /** - * 标准状态 - */ - @ApiModelProperty(value = "企标标准状态") - @Dict(dicCode = "es_status") - private String esStandardState; - /** - * 发布日期 - */ - @ApiModelProperty(value = "发布日期") - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") - @DateTimeFormat(pattern="yyyy-MM-dd") - private Date releaseDate; - /**实施日期*/ - @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") - @DateTimeFormat(pattern="yyyy-MM-dd") - @ApiModelProperty(value = "实施日期") - private java.util.Date implementationDate; - /**创建时间*/ - @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") - @DateTimeFormat(pattern="yyyy-MM-dd") - @ApiModelProperty(value = "创建时间") - private java.util.Date createTime; - /**更新时间*/ - @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") - @DateTimeFormat(pattern="yyyy-MM-dd") - @ApiModelProperty(value = "更新时间") - private java.util.Date updateTime; - /** - * 标准类型(1:国内,2:海外,3:企业) - */ - @ApiModelProperty(value = "标准类型(1:国内,2:海外,3:企业)") - @Dict(dicCode = "standard_source") - private String standardType; - /** - * 拆分条款记录Id(选择条款用) - */ - @ApiModelProperty(value = "拆分条款记录Id(选择条款用)") - private String infoId; - /** - * 预览地址 - */ - @ApiModelProperty(value = "预览地址") - private String standardUrl; - - @TableField(exist = false) - private static final long serialVersionUID = 1L; -} \ No newline at end of file diff --git a/laws-modules/src/main/java/com/jero/modules/bindPart/entity/LawsBindPart.java b/laws-modules/src/main/java/com/jero/modules/bindPart/entity/LawsBindPart.java deleted file mode 100644 index f24f7eea..00000000 --- a/laws-modules/src/main/java/com/jero/modules/bindPart/entity/LawsBindPart.java +++ /dev/null @@ -1,141 +0,0 @@ -package com.jero.modules.bindPart.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import java.io.Serializable; -import java.util.Date; - -import com.fasterxml.jackson.annotation.JsonFormat; -import com.jero.common.aspect.annotation.Dict; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import org.springframework.format.annotation.DateTimeFormat; - -/** - * - * @TableName laws_bind_part - */ -@TableName(value ="laws_bind_part") -@Data -public class LawsBindPart implements Serializable { - /** - * 主键ID - */ - @TableId(type = IdType.ASSIGN_ID) - @ApiModelProperty(value = "主键ID") - private String id; - - /** - * 创建人 - */ - @ApiModelProperty(value = "创建人") - private String createBy; - - /** - * 创建时间 - */ - @ApiModelProperty(value = "创建时间") - private Date createTime; - - /** - * 更新人 - */ - @ApiModelProperty(value = "更新人") - private String updateBy; - - /** - * 更新时间 - */ - @ApiModelProperty(value = "更新时间") - private Date updateTime; - - /** - * 所属部门 - */ - @ApiModelProperty(value = "所属部门") - private String orgCode; - - /** - * 标准Id - */ - @ApiModelProperty(value = "标准Id") - private String standardId; - - /** - * 标准类型 - */ - @ApiModelProperty(value = "标准类型") - private String standardType; - - /** - * 零部件号 - */ - @ApiModelProperty(value = "零部件号") - private String partNo; - - /** - * 零部件分类码 - */ - @ApiModelProperty(value = "零部件分类码") - private String partCategoryNum; - - /** - * 零部件名称 - */ - @ApiModelProperty(value = "零部件名称") - private String partName; - - /** - * 文档拆分Id - */ - @ApiModelProperty(value = "文档拆分Id") - private String docSplitId; - - /** - * 绑定人员 - */ - @ApiModelProperty(value = "绑定人员") - @Dict(dicCode = "id", dictTable = "sys_user", dicText = "realname") - private String bindUser; - - /** - * 绑定时间 - */ - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm") - @DateTimeFormat(pattern="yyyy-MM-dd HH:mm") - @ApiModelProperty(value = "绑定时间") - private Date bindTime; - - /** - * 条款Id - */ - @ApiModelProperty(value = "条款Id(多个逗号拼接)") - @TableField(exist = false) - private String clauseIds; - - /** - * 条款号 - */ - @ApiModelProperty(value = "条款号(多个逗号拼接)") - @TableField(exist = false) - private String clauseNos; - - /** - * 标准编号 - */ - @ApiModelProperty(value = "标准编号") - @TableField(exist = false) - private String standardNo; - - /** - * 标准名称 - */ - @ApiModelProperty(value = "标准名称") - @TableField(exist = false) - private String standardName; - - @TableField(exist = false) - private static final long serialVersionUID = 1L; -} \ No newline at end of file diff --git a/laws-modules/src/main/java/com/jero/modules/bindPart/entity/LawsBindPartDoc.java b/laws-modules/src/main/java/com/jero/modules/bindPart/entity/LawsBindPartDoc.java deleted file mode 100644 index b19b5bd4..00000000 --- a/laws-modules/src/main/java/com/jero/modules/bindPart/entity/LawsBindPartDoc.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.jero.modules.bindPart.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import java.io.Serializable; -import java.util.Date; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -/** - * - * @TableName laws_bind_part_doc - */ -@TableName(value ="laws_bind_part_doc") -@Data -public class LawsBindPartDoc implements Serializable { - /** - * 主键ID - */ - @TableId(type = IdType.ASSIGN_ID) - @ApiModelProperty(value = "主键ID") - private String id; - - - /**创建人*/ - @ApiModelProperty(value = "创建人") - private String createBy; - - /** - * 创建时间 - */ - @ApiModelProperty(value = "创建时间") - private Date createTime; - - /** - * 更新人 - */ - @ApiModelProperty(value = "更新人") - private String updateBy; - - /** - * 更新时间 - */ - @ApiModelProperty(value = "更新时间") - private Date updateTime; - - /** - * 所属部门 - */ - @ApiModelProperty(value = "所属部门") - private String orgCode; - - /** - * 绑定id - */ - @ApiModelProperty(value = "绑定id") - private String bindId; - - /** - * 条款id - */ - @ApiModelProperty(value = "条款id") - private String clauseId; - - @TableField(exist = false) - private static final long serialVersionUID = 1L; -} \ No newline at end of file diff --git a/laws-modules/src/main/java/com/jero/modules/bindPart/entity/SAMStandardInfo.java b/laws-modules/src/main/java/com/jero/modules/bindPart/entity/SAMStandardInfo.java deleted file mode 100644 index ec82845a..00000000 --- a/laws-modules/src/main/java/com/jero/modules/bindPart/entity/SAMStandardInfo.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.jero.modules.bindPart.entity; - -import com.baomidou.mybatisplus.annotation.TableField; -import io.swagger.annotations.ApiModelProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.io.Serializable; - -@Data -@NoArgsConstructor -@AllArgsConstructor -public class SAMStandardInfo implements Serializable { - - /** - * id - */ - @ApiModelProperty(value = "id") - private String id; - /** - * 标准号 - */ - @ApiModelProperty(value = "标准号") - private String standardNumber; - /** - * 标准名称 - */ - @ApiModelProperty(value = "标准名称") - private String standardName; - /** - * 标准状态 - */ - @ApiModelProperty(value = "标准状态") - private String standardState; - /** - * 预览链接 - */ - @ApiModelProperty(value = "预览链接") - private String standardUrl; - - @TableField(exist = false) - private static final long serialVersionUID = 1L; - -} diff --git a/laws-modules/src/main/java/com/jero/modules/bindPart/mapper/LawsBindPartDocMapper.java b/laws-modules/src/main/java/com/jero/modules/bindPart/mapper/LawsBindPartDocMapper.java deleted file mode 100644 index 5f93be30..00000000 --- a/laws-modules/src/main/java/com/jero/modules/bindPart/mapper/LawsBindPartDocMapper.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.jero.modules.bindPart.mapper; - -import com.jero.modules.bindPart.entity.LawsBindPartDoc; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; - -/** -* @author ThinkBook -* @description 针对表【laws_bind_part_doc】的数据库操作Mapper -* @createDate 2024-04-15 11:27:29 -* @Entity com.jero.modules.laws.bindPart.entity.LawsBindPartDoc -*/ -public interface LawsBindPartDocMapper extends BaseMapper { - -} - - - - diff --git a/laws-modules/src/main/java/com/jero/modules/bindPart/mapper/LawsBindPartMapper.java b/laws-modules/src/main/java/com/jero/modules/bindPart/mapper/LawsBindPartMapper.java deleted file mode 100644 index 3113609f..00000000 --- a/laws-modules/src/main/java/com/jero/modules/bindPart/mapper/LawsBindPartMapper.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.jero.modules.bindPart.mapper; - -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.jero.modules.bindPart.entity.LawsBindPart; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import org.apache.ibatis.annotations.Param; - -/** -* @author ThinkBook -* @description 针对表【laws_bind_part】的数据库操作Mapper -* @createDate 2024-04-15 11:27:06 -* @Entity com.jero.modules.laws.bindPart.entity.LawsBindPart -*/ -public interface LawsBindPartMapper extends BaseMapper { - - IPage page(IPage page, @Param("param") LawsBindPart lawsBindPart); -} - - - - diff --git a/laws-modules/src/main/java/com/jero/modules/bindPart/mapper/xml/LawsBindPartDocMapper.xml b/laws-modules/src/main/java/com/jero/modules/bindPart/mapper/xml/LawsBindPartDocMapper.xml deleted file mode 100644 index 70874465..00000000 --- a/laws-modules/src/main/java/com/jero/modules/bindPart/mapper/xml/LawsBindPartDocMapper.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - id,create_by,create_time, - update_by,update_time,org_code, - bind_id,doc_id - - diff --git a/laws-modules/src/main/java/com/jero/modules/bindPart/mapper/xml/LawsBindPartMapper.xml b/laws-modules/src/main/java/com/jero/modules/bindPart/mapper/xml/LawsBindPartMapper.xml deleted file mode 100644 index fae77d09..00000000 --- a/laws-modules/src/main/java/com/jero/modules/bindPart/mapper/xml/LawsBindPartMapper.xml +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - id,create_by,create_time, - update_by,update_time,org_code, - part_no,part_name,standard_id, - bind_user,bind_time - - - - diff --git a/laws-modules/src/main/java/com/jero/modules/bindPart/service/ILawsBindPartDocService.java b/laws-modules/src/main/java/com/jero/modules/bindPart/service/ILawsBindPartDocService.java deleted file mode 100644 index df6bfd9d..00000000 --- a/laws-modules/src/main/java/com/jero/modules/bindPart/service/ILawsBindPartDocService.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.jero.modules.bindPart.service; - -import com.jero.modules.bindPart.entity.LawsBindPartDoc; -import com.baomidou.mybatisplus.extension.service.IService; - -/** -* @author ThinkBook -* @description 针对表【laws_bind_part_doc】的数据库操作Service -* @createDate 2024-04-15 11:27:29 -*/ -public interface ILawsBindPartDocService extends IService { - -} diff --git a/laws-modules/src/main/java/com/jero/modules/bindPart/service/ILawsBindPartService.java b/laws-modules/src/main/java/com/jero/modules/bindPart/service/ILawsBindPartService.java deleted file mode 100644 index 6db263d4..00000000 --- a/laws-modules/src/main/java/com/jero/modules/bindPart/service/ILawsBindPartService.java +++ /dev/null @@ -1,89 +0,0 @@ -package com.jero.modules.bindPart.service; - -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.jero.modules.bindPart.entity.BindPartStandardVO; -import com.jero.modules.bindPart.entity.LawsBindPart; -import com.baomidou.mybatisplus.extension.service.IService; - -import java.util.List; - -/** -* @author ThinkBook -* @description 针对表【laws_bind_part】的数据库操作Service -* @createDate 2024-04-15 11:27:06 -*/ -public interface ILawsBindPartService extends IService { - - /** - * 分页查询 - * - * @param lawsBindPart - * @param pageNo - * @param pageSize - * @return - */ - IPage queryPage(LawsBindPart lawsBindPart, Integer pageNo, Integer pageSize); - - /** - * 保存 - * - * @param lawsBindPart - * @return - */ - void add(LawsBindPart lawsBindPart); - - /** - * 更新 - * - * @param lawsBindPart - * @return - */ - void editById(LawsBindPart lawsBindPart); - - /** - * 通过id删除 - * - * @param id - * @return - */ - void deleteById(String id); - - /** - * 批量删除 - * - * @param ids - * @return - */ - void deleteByIds(List ids); - - /** - * 通过id查询 - * - * @param id - * @return - */ - LawsBindPart queryById(String id); - - /** - * 选择标准 - * @param bindPartStandardVO - * @param pageNo - * @param pageSize - * @return - */ - IPage selectStandard(BindPartStandardVO bindPartStandardVO, Integer pageNo, Integer pageSize); - - /** - * 是否显示使用绑定关系按钮 - * @param id - * @return - */ - void useBindRelation(String id); - - /** - * 使用绑定关系 - * @param lawsBindPart - * @return - */ - LawsBindPart isShowUseBindRelation(LawsBindPart lawsBindPart); -} diff --git a/laws-modules/src/main/java/com/jero/modules/bindPart/service/impl/LawsBindPartDocServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/bindPart/service/impl/LawsBindPartDocServiceImpl.java deleted file mode 100644 index 35947997..00000000 --- a/laws-modules/src/main/java/com/jero/modules/bindPart/service/impl/LawsBindPartDocServiceImpl.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.jero.modules.bindPart.service.impl; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.jero.modules.bindPart.mapper.LawsBindPartDocMapper; -import com.jero.modules.bindPart.entity.LawsBindPartDoc; -import com.jero.modules.bindPart.service.ILawsBindPartDocService; -import org.springframework.stereotype.Service; - -/** -* @author ThinkBook -* @description 针对表【laws_bind_part_doc】的数据库操作Service实现 -* @createDate 2024-04-15 11:27:29 -*/ -@Service -public class LawsBindPartDocServiceImpl extends ServiceImpl - implements ILawsBindPartDocService { - -} - - - - diff --git a/laws-modules/src/main/java/com/jero/modules/bindPart/service/impl/LawsBindPartServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/bindPart/service/impl/LawsBindPartServiceImpl.java deleted file mode 100644 index e93424a8..00000000 --- a/laws-modules/src/main/java/com/jero/modules/bindPart/service/impl/LawsBindPartServiceImpl.java +++ /dev/null @@ -1,418 +0,0 @@ -package com.jero.modules.bindPart.service.impl; - -import cn.hutool.core.collection.CollectionUtil; -import cn.hutool.core.util.StrUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -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.api.dto.message.SendMessageDTO; -import com.jero.common.api.vo.SendMessageAPI; -import com.jero.common.exception.JeroBootException; -import com.jero.common.system.vo.LoginUser; -import com.jero.modules.activiti.process.common.enums.StandardStateEnum; -import com.jero.modules.bindPart.docking.DockingService; -import com.jero.modules.bindPart.mapper.LawsBindPartMapper; -import com.jero.modules.bindPart.entity.BindPartStandardVO; -import com.jero.modules.bindPart.entity.LawsBindPart; -import com.jero.modules.bindPart.entity.LawsBindPartDoc; -import com.jero.modules.bindPart.service.ILawsBindPartDocService; -import com.jero.modules.bindPart.service.ILawsBindPartService; - -import com.jero.modules.laws.common.constant.MessageTemplateCodeCommon; -import com.jero.modules.laws.documenttool.entity.LawsDocumentSplit; -import com.jero.modules.laws.documenttool.mapper.DocumentSplitMapper; -import com.jero.modules.laws.enterprise.util.BeanCopyUtils; -import com.jero.modules.laws.standard.entity.LawsDomesticStandard; -import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard; -import com.jero.modules.laws.standard.entity.LawsOverseasStandard; -import com.jero.modules.laws.standard.service.ILawsDomesticStandardService; -import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService; -import com.jero.modules.laws.standard.service.ILawsOverseasStandardService; -import com.jero.modules.onlyoffice.entity.StandardFileType; -import com.jero.modules.split.entity.SarFileSplitInfoEO; -import com.jero.modules.split.service.ISarFileSplitInfoService; -import com.jero.modules.sys.utils.UserUtils; -import com.jero.modules.system.entity.SysUser; -import com.jero.modules.system.service.ISysUserService; -import com.jero.modules.tag.enums.TableNameEnum; -import org.springframework.stereotype.Service; - -import javax.annotation.Resource; -import java.util.*; -import java.util.stream.Collectors; - -import static com.jero.common.constant.CommonConstant.HAS_SEND; -import static com.jero.modules.bindPart.docking.DockingServiceImpl.BIND_RELATION_CHANGE; - -/** -* @author ThinkBook -* @description 针对表【laws_bind_part】的数据库操作Service实现 -* @createDate 2024-04-15 11:27:06 -*/ -@Service -public class LawsBindPartServiceImpl extends ServiceImpl - implements ILawsBindPartService { - - @Resource - private LawsBindPartMapper lawsBindPartMapper; - - @Resource - private ISarFileSplitInfoService fileSplitInfoService; - - @Resource - private ILawsBindPartDocService lawsBindPartDocService; - - @Resource - private ILawsDomesticStandardService gbService; - - @Resource - private ILawsOverseasStandardService fbService; - - @Resource - private ILawsEnterpriseStandardService esService; - - @Resource - private DockingService dockingService; - - @Resource - private ISysUserService sysUserService; - - @Resource - private SendMessageAPI sendMessageAPI; - - @Resource - private DocumentSplitMapper documentSplitMapper; - - @Override - public IPage queryPage(LawsBindPart lawsBindPart, Integer pageNo, Integer pageSize) { - IPage page = new Page<>(pageNo, pageSize); - lawsBindPartMapper.page(page, lawsBindPart); - return page; - } - - @Override - public void add(LawsBindPart lawsBindPart) { - // 访问PDM校验该零部件号是否可以修改 - try { - dockingService.validPartNoEdit(lawsBindPart.getPartNo(), - lawsBindPart.getPartName(), - getBindUsernameAndRealName(lawsBindPart.getBindUser())); - } catch (Exception e) { - throw new JeroBootException(e.getMessage()); - } - lawsBindPart.setBindTime(new Date()); - save(lawsBindPart); - String clauseIds = lawsBindPart.getClauseIds(); - this.saveBindPartDoc(clauseIds, lawsBindPart.getId()); - // 发消息 - this.sendMessageToBindUser(lawsBindPart); - try { - dockingService.sendStandardChangeToSCM(lawsBindPart.getStandardId(), lawsBindPart.getStandardType(), BIND_RELATION_CHANGE, lawsBindPart.getId()); - } catch (Exception e) { - log.error("E采通同步标准信息出错", e); - } - } - - private void saveBindPartDoc(String clauseIds, String bindId) { - if (StrUtil.isBlank(clauseIds)) { - return; - } - String[] clauseIdList = clauseIds.split(","); - List lawsBindPartDocList = new ArrayList<>(); - for (String clause : clauseIdList) { - LawsBindPartDoc lawsBindPartDoc = new LawsBindPartDoc(); - lawsBindPartDoc.setBindId(bindId); - lawsBindPartDoc.setClauseId(clause); - lawsBindPartDocList.add(lawsBindPartDoc); - } - lawsBindPartDocService.saveBatch(lawsBindPartDocList); - } - - private String getBindUsernameAndRealName(String userId) { - SysUser user = sysUserService.getById(userId); - return user.getUsername(); - } - - /** - * 向pdm确认零部件是否可以修改 - * @param ids - */ - private void pdmValidPartEdit(List ids) { - List lawsBindParts = lawsBindPartMapper.selectBatchIds(ids); - if (CollectionUtil.isEmpty(lawsBindParts)) { - return; - } - // 转换为Map - Map lawsBindPartMap = lawsBindParts.stream().collect(Collectors.toMap(LawsBindPart::getId, e -> e)); - Set errPartSet = new HashSet<>(); - // 访问PDM校验该零部件号是否可以修改 - for (String id : ids) { - LawsBindPart existBindPart = lawsBindPartMap.get(id); - try { - dockingService.validPartNoEdit(existBindPart.getPartNo(), - existBindPart.getPartName(), - getBindUsernameAndRealName(existBindPart.getBindUser())); - } catch (Exception e) { - errPartSet.add(existBindPart.getPartNo()); - } - } - if (CollectionUtil.isNotEmpty(errPartSet)) { - throw new JeroBootException("零部件号" + String.join(",", errPartSet) + "不能修改"); - } - } - - @Override - public void editById(LawsBindPart lawsBindPart) { - if (StrUtil.isBlank(lawsBindPart.getId())) { - throw new JeroBootException("id不能为空"); - } - this.pdmValidPartEdit(Collections.singletonList(lawsBindPart.getId())); - lawsBindPart.setBindUser(UserUtils.getUserId()); - updateById(lawsBindPart); - // 清空关联关系 - removeBindPartDoc(lawsBindPart.getId()); - // 保存新关系 - String clauseIds = lawsBindPart.getClauseIds(); - this.saveBindPartDoc(clauseIds, lawsBindPart.getId()); - try { - dockingService.sendStandardChangeToSCM(lawsBindPart.getStandardId(), lawsBindPart.getStandardType(), BIND_RELATION_CHANGE, lawsBindPart.getId()); - } catch (Exception e) { - log.error("E采通同步标准信息出错", e); - } - } - - private void removeBindPartDoc(String bindIds) { - if (StrUtil.isBlank(bindIds)) { - return; - } - List bindIdList = Arrays.asList(bindIds.split(",")); - LambdaQueryWrapper lawsBindPartDocLambdaQueryWrapper = new LambdaQueryWrapper<>(); - lawsBindPartDocLambdaQueryWrapper.in(LawsBindPartDoc::getBindId, bindIdList); - lawsBindPartDocService.remove(lawsBindPartDocLambdaQueryWrapper); - } - - @Override - public void deleteById(String id) { - // 访问PDM校验该零部件号是否可以修改 - this.pdmValidPartEdit(Collections.singletonList(id)); - try { - dockingService.sendStandardChangeToSCM(null, null, BIND_RELATION_CHANGE, id); - } catch (Exception e) { - log.error("E采通同步标准信息出错", e); - } - removeById(id); - removeBindPartDoc(id); - } - - @Override - public void deleteByIds(List ids) { - // 访问PDM校验该零部件号是否可以修改 - this.pdmValidPartEdit(ids); - for (String id : ids) { - try { - dockingService.sendStandardChangeToSCM(null, null, BIND_RELATION_CHANGE, id); - } catch (Exception e) { - log.error("E采通同步标准信息出错", e); - } - } - removeByIds(ids); - removeBindPartDoc(ids.stream().map(String::valueOf).collect(Collectors.joining(","))); - } - - @Override - public LawsBindPart queryById(String id) { - return getById(id); - } - - @Override - public IPage selectStandard(BindPartStandardVO bindPartStandardVO, Integer pageNo, Integer pageSize) { - String standardType = bindPartStandardVO.getStandardType(); - String standardName = bindPartStandardVO.getStandardName(); - IPage resultPage = new Page<>(pageNo, pageSize); - List records = new ArrayList<>(); - if (StrUtil.isBlank(standardType) || standardType.equals(TableNameEnum.DOMESTIC_REGULATIONS.getValue())) { - IPage page = new Page<>(pageNo, pageSize); - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.ne(LawsDomesticStandard::getStandardState, "7"); - queryWrapper.like(StrUtil.isNotBlank(standardName), LawsDomesticStandard::getStandardNumber, standardName).or() - .like(StrUtil.isNotBlank(standardName),LawsDomesticStandard::getStandardName, standardName); - IPage lawsDomesticStandardIPage = gbService.page(page, queryWrapper); - records = BeanCopyUtils.copyBeanList(lawsDomesticStandardIPage.getRecords(), BindPartStandardVO.class); - records.forEach(r -> { - r.setStandardType(TableNameEnum.DOMESTIC_REGULATIONS.getValue()); - }); - resultPage.setPages(page.getPages()) - .setCurrent(page.getCurrent()) - .setSize(page.getSize()) - .setTotal(page.getTotal()) - .setRecords(records); - } - if (standardType.equals(TableNameEnum.FOREIGN_REGULATIONS.getValue())){ - IPage page = new Page<>(pageNo, pageSize); - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.ne(LawsOverseasStandard::getStandardState, "7"); - queryWrapper.like(StrUtil.isNotBlank(standardName), LawsOverseasStandard::getStandardNumber, standardName).or() - .like(StrUtil.isNotBlank(standardName), LawsOverseasStandard::getStandardName, standardName); - IPage lawsOverseasStandardIPage = fbService.page(page, queryWrapper); - records = BeanCopyUtils.copyBeanList(lawsOverseasStandardIPage.getRecords(), BindPartStandardVO.class); - records.forEach(r -> { - r.setStandardType(TableNameEnum.FOREIGN_REGULATIONS.getValue()); - }); - resultPage.setPages(page.getPages()) - .setCurrent(page.getCurrent()) - .setSize(page.getSize()) - .setTotal(page.getTotal()) - .setRecords(records); - } - if (standardType.equals(TableNameEnum.ENTERPRISE_STANDARDS.getValue())){ - IPage page = new Page<>(pageNo, pageSize); - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.ne(LawsEnterpriseStandard::getStandardState, StandardStateEnum.ABOLISH); - queryWrapper.like(StrUtil.isNotBlank(standardName), LawsEnterpriseStandard::getStandardNumber, standardName).or() - .like(StrUtil.isNotBlank(standardName), LawsEnterpriseStandard::getStandardName, standardName); - IPage lawsEnterpriseStandardIPage = esService.page(page, queryWrapper); - records = BeanCopyUtils.copyBeanList(lawsEnterpriseStandardIPage.getRecords(), BindPartStandardVO.class); - records.forEach(r -> { - r.setEsStandardState(r.getStandardState()); - r.setStandardType(TableNameEnum.ENTERPRISE_STANDARDS.getValue()); - }); - resultPage.setPages(page.getPages()) - .setCurrent(page.getCurrent()) - .setSize(page.getSize()) - .setTotal(page.getTotal()) - .setRecords(records); - } - - // 获取所有标准Id - List standardIdList = records.stream().map(BindPartStandardVO::getId).collect(Collectors.toList()); - LambdaQueryWrapper sarFileSplitInfoEOLambdaQueryWrapper = new LambdaQueryWrapper<>(); - sarFileSplitInfoEOLambdaQueryWrapper.isNotNull(SarFileSplitInfoEO::getStandardId); - sarFileSplitInfoEOLambdaQueryWrapper.in(!standardIdList.isEmpty(), SarFileSplitInfoEO::getStandardId, standardIdList); - sarFileSplitInfoEOLambdaQueryWrapper.eq(SarFileSplitInfoEO::getSplitStatus, HAS_SEND); - // 设置拆分信息id - List splitInfoEOList = fileSplitInfoService.list(sarFileSplitInfoEOLambdaQueryWrapper); - Map> map = splitInfoEOList.stream().collect(Collectors.groupingBy(SarFileSplitInfoEO::getStandardId)); - // 创建映射:枚举的value到order的映射 - Map orderMap = java.util.Arrays.stream(StandardFileType.values()) - .collect(Collectors.toMap(StandardFileType::getValue, StandardFileType::getOrder)); - records.forEach(standard -> { - List sarFileSplitInfoEOS = map.get(standard.getId()); - if (sarFileSplitInfoEOS == null || sarFileSplitInfoEOS.isEmpty()) { - return; - } - if (sarFileSplitInfoEOS.size() == 1) { - standard.setInfoId(sarFileSplitInfoEOS.get(0).getId()); - return; - } - // 需要对所有拆分信息按照文件类型排序 - sarFileSplitInfoEOS.sort((file1, file2) -> { - Integer order1 = orderMap.get(file1.getFileType()); - Integer order2 = orderMap.get(file2.getFileType()); - return Integer.compare(order1, order2); - }); - standard.setInfoId(sarFileSplitInfoEOS.get(0).getId()); - }); - // 设置编辑Id - return resultPage; - } - - @Override - public void useBindRelation(String id) { - LawsBindPart bindPart = getById(id); - LawsBindPart newBindPart = BeanCopyUtils.copyBean(bindPart, LawsBindPart.class); - LoginUser currentUser = UserUtils.getCurrentUser(); - newBindPart.setCreateBy(null); - newBindPart.setCreateTime(null); - newBindPart.setUpdateBy(null); - newBindPart.setUpdateTime(null); - newBindPart.setBindUser(currentUser.getId()); - newBindPart.setBindTime(new Date()); - newBindPart.setId(null); - save(newBindPart); - String newId = newBindPart.getId(); - LambdaQueryWrapper lawsBindPartDocLambdaQueryWrapper = new LambdaQueryWrapper<>(); - lawsBindPartDocLambdaQueryWrapper.eq(LawsBindPartDoc::getBindId, id); - List list = lawsBindPartDocService.list(lawsBindPartDocLambdaQueryWrapper); - list.forEach(b -> { - b.setId(null); - b.setBindId(newId); - }); - lawsBindPartDocService.saveBatch(list); - - // 发消息 - this.sendMessageToBindUser(newBindPart); - } - - /** - 1、如当前零部件绑定关系数据为空,则查询法规绑定关系中 当前零部件分类树下是否有绑定关系,无则进入序号3;有则获取零部件分类、零部件编号调用PDM的接口,判断零部件编号是否在当前的零部件分类下。 - 2、在零部件分类下则 弹框文字提醒:【当前零部件分类结构下已有XXXX绑定标准关联关系,是否引入对应关系?】(XXXX指第一次绑定的零部件名称+编号)。 - 3、如某分类的第一个零部件第一次绑定,进入法规系统点击新增/编辑,弹窗中自动带出零部件号、零部件名称和绑定人员。需要选择标准以及该标准下的条款,其中标准为单选,条款可以多选。绑定成功后,在列表最上方生成一条数据。pdm可以获取到零部件绑定的全部标准信息。 - * @param lawsBindPart - * @return - */ - @Override - public LawsBindPart isShowUseBindRelation(LawsBindPart lawsBindPart) { - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.eq(LawsBindPart::getPartCategoryNum, lawsBindPart.getPartCategoryNum()); - List list = this.list(lambdaQueryWrapper); - // 第一次绑定不显示使用绑定关系 - if (list == null || list.isEmpty()) { - return null; - } - for (LawsBindPart existBind : list) { - // 调用PDM判断零部件编号是否在当前的零部件分类下 - boolean validPartBelong = dockingService.validPartBelong(lawsBindPart.getPartNo(), lawsBindPart.getPartName(), existBind.getPartCategoryNum()); - if (validPartBelong) { - return existBind; - } - // 零部件编号和零部件分类码绑定关系发生变更,所以需要将系统中存储的所有该零部件号的零部件分类码清空 - existBind.setPartCategoryNum(null); - updateById(existBind); - } - return null; - } - - - private void sendMessageToBindUser(LawsBindPart lawsBindPart) { - String userId = UserUtils.getUserId(); - String standardId = lawsBindPart.getStandardId(); - String clauseIds = lawsBindPart.getClauseIds(); - Map sendMap = new HashMap<>(); - if (StrUtil.isBlank(clauseIds)) { - sendMap.put("clause", ""); - } else { - List clauseIdList = Arrays.asList(clauseIds.split(",")); - List lawsDocumentSplits = documentSplitMapper.selectBatchIds(clauseIdList); - String clause = lawsDocumentSplits.stream().sorted() - .map(LawsDocumentSplit::getItemNum).collect(Collectors.joining(",")); - String msg = "的" + clause + "条款"; - sendMap.put("clause", msg); - } - String standardNumber = ""; - LawsEnterpriseStandard es = esService.getById(standardId); - if (es != null) { - standardNumber = es.getStandardNumber(); - } - LawsDomesticStandard gb = gbService.getById(standardId); - if (gb != null) { - standardNumber = gb.getStandardNumber(); - } - LawsOverseasStandard fb = fbService.getById(standardId); - if (fb != null) { - standardNumber = fb.getStandardNumber(); - } - // 发送消息 - SendMessageDTO sendMessageDTO = new SendMessageDTO(); - sendMessageDTO.setTemplateCode(MessageTemplateCodeCommon.BIND_PART_ADD); - sendMessageDTO.setToUserId(userId); - sendMap.put("standardNo", standardNumber); - sendMap.put("partNo", lawsBindPart.getPartNo() + lawsBindPart.getPartName()); - sendMessageDTO.setMap(sendMap); - sendMessageAPI.sendMessage(sendMessageDTO); - } -} - - - - diff --git a/laws-modules/src/main/java/com/jero/modules/document/controller/BussDocumentLibraryEOController.java b/laws-modules/src/main/java/com/jero/modules/document/controller/BussDocumentLibraryEOController.java deleted file mode 100644 index 1d1ac16c..00000000 --- a/laws-modules/src/main/java/com/jero/modules/document/controller/BussDocumentLibraryEOController.java +++ /dev/null @@ -1,523 +0,0 @@ -package com.jero.modules.document.controller; - -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.jero.common.api.vo.Result; -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.document.entity.BussDocumentLibraryEO; -import com.jero.modules.document.entity.OSSFileForDocumentLibrary; -import com.jero.modules.document.service.IBussDocumentLibraryEOService; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import lombok.extern.slf4j.Slf4j; -import net.sf.json.JSONObject; -import org.apache.shiro.authz.annotation.RequiresPermissions; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; -import org.springframework.web.multipart.MultipartFile; - -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: 2022-01-21 - * @Version: V1.0 - */ -@Api(tags="文档库信息表") -@RestController -@RequestMapping("/document/bussDocumentLibraryEO") -@Slf4j -@Deprecated -public class BussDocumentLibraryEOController extends JeroController { - @Autowired - private IBussDocumentLibraryEOService bussDocumentLibraryEOService; - - -// /** -// * 分页列表查询 -// * @param parameter -// * @return -// */ -// @AutoLog(value = "分页查询") -// @ApiOperation(value="分页查询", notes="分页查询") -// @PostMapping(value = "/queryPageInfo") -// @ResponseBody -// @RequiresPermissions("document:queryPageInfo") -// public JSONObject queryPageInfo(@RequestBody Map parameter) { -// IPage infoPage = bussDocumentLibraryEOService.getInfoPage(parameter); -// Result ok = Result.OK(infoPage); -// JSONObject jsonResult = JSONObject.fromObject(ok); -// return jsonResult; -// } - -// /** -// * 代替标准分页列表查询 -// * @param parameter -// * @return -// */ -// @AutoLog(value = "代替标准分页列表查询") -// @ApiOperation(value="代替标准分页列表查询", notes="代替标准分页列表查询") -// @PostMapping(value = "/replacePageInfo") -// @ResponseBody -// @RequiresPermissions("document:getInfoById") -// public Result replacePageInfo(@RequestBody Map parameter) { -// IPage infoPage = bussDocumentLibraryEOService.replacePageInfo(parameter); -// return Result.OK(infoPage); -// } -// -// /** -// * ocr识别调取已入库文件 -// * @param parameter -// * @return -// */ -// @AutoLog(value = "ocr识别调取已入库文件分页") -// @ApiOperation(value="ocr识别调取已入库文件", notes="ocr识别调取已入库文件") -// @PostMapping(value = "/ocrPageInfo") -// @ResponseBody -// @RequiresPermissions("document:ocrPageInfo") -// public Result>> ocrPageInfo(@RequestBody Map parameter) { -// IPage> infoPage = bussDocumentLibraryEOService.ocrPageInfo(parameter); -// return Result.OK(infoPage); -// } - -// /** -// * 文档翻译调取已入库文件 -// * @param parameter -// * @return -// */ -// @AutoLog(value = "文档翻译调取已入库文件") -// @ApiOperation(value="文档翻译调取已入库文件", notes="文档翻译调取已入库文件") -// @PostMapping(value = "/transPageInfo") -// @ResponseBody -// @RequiresPermissions("documentTranslation:retrieval") -// public Result>> transPageInfo(@RequestBody Map parameter) { -// IPage> infoPage = bussDocumentLibraryEOService.ocrPageInfo(parameter); -// return Result.OK(infoPage); -// } - -// /** -// * 列表查询 -// * -// * @return -// */ -// @AutoLog(value = "文档库信息表-列表查询") -// @ApiOperation(value="文档库信息表-列表查询", notes="文档库信息表-列表查询") -// @GetMapping(value = "/list") -// public Result> queryList() { -// List list = bussDocumentLibraryEOService.queryList(); -// return Result.OK(list); -// } - - -// /** -// * 通过id删除 -// * -// * @param id -// * @return -// */ -// @AutoLog(value = "文档库信息表-通过id删除") -// @ApiOperation(value="文档库信息表-通过id删除", notes="文档库信息表-通过id删除") -// @GetMapping(value = "/delete") -// @RequiresPermissions("document:deleteBatch") -// public Result delete(@RequestParam(name="id",required=true) String id) { -// bussDocumentLibraryEOService.deleteById(id); -// return Result.OK("删除成功!"); -// } - -// /** -// * 批量删除 -// * -// * @param ids -// * @return -// */ -// @AutoLog(value = "文档库信息表-批量删除") -// @ApiOperation(value="文档库信息表-批量删除", notes="文档库信息表-批量删除") -// @GetMapping(value = "/deleteBatch") -// @RequiresPermissions("document:deleteBatch") -// public Result deleteBatch(@RequestParam(name="ids",required=true) String ids, String cut) { -// this.bussDocumentLibraryEOService.deleteByIds(Arrays.asList(ids.split(",")),cut); -// return Result.OK("批量删除成功!"); -// } - -// /** -// * 通过id查询 -// * -// * @param id -// * @return -// */ -// @AutoLog(value = "文档库信息表-通过id查询") -// @ApiOperation(value="文档库信息表-通过id查询", notes="文档库信息表-通过id查询") -// @GetMapping(value = "/queryById") -// @RequiresPermissions("document:queryById") -// public Result queryById(@RequestParam(name="id",required=true) String id) { -// BussDocumentLibraryEO bussDocumentLibraryEO = bussDocumentLibraryEOService.queryById(id); -// if(bussDocumentLibraryEO==null) { -// return Result.error("未找到对应数据"); -// } -// return Result.OK(bussDocumentLibraryEO); -// } - - - - /** - * 列表查询条件 标识传 1-->用于查询文档库字段属性 - * @param flag - * @return - */ - @AutoLog(value = "文档库信息表-查询条件") - @ApiOperation(value="文档库信息表-查询条件", notes="文档库信息表-查询条件") - @GetMapping(value = "/queryCondition") - @RequiresPermissions("document:queryPageInfo") - public Result>> queryCondition(@RequestParam(name="flag",required=true) String flag, - @RequestParam(name="cut",required=true) String cut) { - List> list = bussDocumentLibraryEOService.queryCondition(flag,cut,null); - return Result.OK(list); - } - -// /** -// * 列表表头 -// * @param flag 标识传 1-->用于查询文档库字段属性 -// * @return -// */ -// @AutoLog(value = "文档库信息表-列表表头") -// @ApiOperation(value="文档库信息表-列表表头", notes="文档库信息表-列表表头") -// @GetMapping(value = "/getHeader") -// @RequiresPermissions("document:queryPageInfo") -// public Result>> getHeader(@RequestParam(name="flag",required=true) String flag, -// @RequestParam(name="cut",required=true) String cut) { -// List> list = bussDocumentLibraryEOService.getHeader(flag,cut,null); -// return Result.OK(list); -// } - -// /** -// * 新增表单 -// * @param flag 标识传 1-->用于查询文档库字段属性 -// * @return -// */ -// @AutoLog(value = "文档库信息表-新增表单") -// @ApiOperation(value="文档库信息表-新增表单", notes="文档库信息表-新增表单") -// @GetMapping(value = "/getAddForm") -// @RequiresPermissions("document:queryPageInfo") -// public Result>> getAddForm(@RequestParam(name="flag",required=true) String flag, -// @RequestParam(name="cut",required=true) String cut, -// @RequestParam(name="type",required=true) String type) { -// List> list = bussDocumentLibraryEOService.getAddForm(flag,cut,type); -// return Result.OK(list); -// } - - /** - * ocr识别调取已入库文件-中英文切换 - * @param flag 标识传 1-->用于查询文档库字段属性 - * @return - */ -// @AutoLog(value = "文档库信息表-ocr表头和查询条件") -// @ApiOperation(value="文档库信息表-ocr表头和查询条件", notes="文档库信息表-ocr表头和查询条件") -// @GetMapping(value = "/getHeaderOrConditionForOcr") -// @RequiresPermissions("document:ocrPageInfo") -// public Result>> getHeaderOrConditionForOcr(@RequestParam(name="flag",required=true) String flag, -// @RequestParam(name="cut",required=true) String cut) { -// List> list = bussDocumentLibraryEOService.getHeaderOrConditionForOcr(flag,cut); -// return Result.OK(list); -// } -// -// /** -// * @param flag 标识传 1-->用于查询文档库字段属性 -// * @return -// */ -// @AutoLog(value = "文档库信息表-文档拆分表头和查询条件") -// @ApiOperation(value="文档库信息表-文档拆分表头和查询条件", notes="文档库信息表-文档拆分表头和查询条件") -// @GetMapping(value = "/getHeaderOrConditionForSplitFile") -// @RequiresPermissions("split:sarFileSplitInfo:splitFile") -// public Result>> getHeaderOrConditionForSplitFile(@RequestParam(name="flag",required=true) String flag, -// @RequestParam(name="cut",required=true) String cut) { -// List> list = bussDocumentLibraryEOService.getHeaderOrConditionForSplit(flag,cut); -// return Result.OK(list); -// } -// - /** - * @param flag 标识传 1-->用于查询文档库字段属性 - * @return - */ - @AutoLog(value = "文档库信息表-文档拆分表头和查询条件") - @ApiOperation(value="文档库信息表-文档拆分表头和查询条件", notes="文档库信息表-文档拆分表头和查询条件") - @GetMapping(value = "/getHeaderOrConditionForSplitResult") - public Result>> getHeaderOrConditionForSplitResult(@RequestParam(name="flag",required=true) String flag, - @RequestParam(name="cut",required=true) String cut) { - List> list = bussDocumentLibraryEOService.getHeaderOrConditionForSplit(flag,cut); - return Result.OK(list); - } -// -// /** -// * 编辑数据查询 -// * @param id -// * @return -// */ -//// @AutoLog(value = "编辑数据查询") -//// @ApiOperation(value="编辑数据查询", notes="编辑数据查询") -//// @GetMapping(value = "/getDocumentInfoById") -//// @RequiresPermissions("document:updateInfo") -//// public Result>> getDocumentInfoById(@RequestParam(name="id",required=true) String id, -//// @RequestParam(name="cut",required=true) String cut) { -//// List> list = bussDocumentLibraryEOService.getDocumentInfoById(id,cut); -//// return Result.OK(list); -//// } -// /** -// * 详情数据查询 -// * @param id -// * @return -// */ -//// @AutoLog(value = "详情数据查询") -//// @ApiOperation(value="详情数据查询", notes="详情数据查询") -//// @GetMapping(value = "/getInfoById") -//// @RequiresPermissions("document:queryPageInfo") -//// public Result>> getInfoById(@RequestParam(name="id",required=true) String id, -//// @RequestParam(name="cut",required=true) String cut) { -//// List> list = bussDocumentLibraryEOService.getInfoById(id,cut); -//// return Result.OK(list); -//// } -// -//// @ApiOperation(value="详情目录查询", notes="详情目录查询") -//// @GetMapping(value = "/getMenuList") -//// public Result>> getMenuList(@RequestParam(name="id",required=true) String id, -//// @RequestParam(name="cut",required=true) String cut) { -//// List> list = bussDocumentLibraryEOService.getMenuList(id,cut); -//// return Result.OK(list); -//// } -// -//// /** -//// * 新增数据 -//// * @param map -//// * @return -//// */ -//// @AutoLog(value = "新增数据") -//// @ApiOperation(value="新增数据", notes="新增数据") -//// @PostMapping(value = "/addInfo") -//// @RequiresPermissions("document:getInfoById") -//// public Result getInfoById(@RequestBody Map map) { -//// try { -//// bussDocumentLibraryEOService.addInfo(map); -//// } catch (Exception e) { -//// return Result.error(e.getMessage()); -//// } -//// return Result.OK("新增成功"); -//// } -//// /** -//// * 编辑数据 -//// * @param map -//// * @return -//// */ -//// @AutoLog(value = "编辑数据") -//// @ApiOperation(value="编辑数据", notes="编辑数据") -//// @PostMapping(value = "/updateInfo") -//// @RequiresPermissions("document:updateInfo") -//// public Result updateInfo(@RequestBody Map map) { -//// try { -//// bussDocumentLibraryEOService.updateInfo(map); -//// } catch (Exception e) { -//// return Result.error(e.getMessage()); -//// } -//// return Result.OK("编辑成功"); -//// } -// -// -//// /** -//// * 添加收藏 -//// * @param id -//// * @return -//// */ -//// @AutoLog(value = "添加收藏") -//// @ApiOperation(value="添加收藏", notes="添加收藏") -//// @GetMapping(value = "/addCollect") -//// @RequiresPermissions("document:addCollect") -//// public Result addCollect(String id) { -//// try { -//// bussDocumentLibraryEOService.addCollect(id); -//// } catch (Exception e) { -//// return Result.error("收藏失败"); -//// } -//// return Result.OK("收藏成功"); -//// } -// -//// /** -//// * 取消收藏 -//// * @param id -//// * @return -//// */ -//// @AutoLog(value = "取消收藏") -//// @ApiOperation(value="取消收藏", notes="取消收藏") -//// @GetMapping(value = "/cancelCollect") -//// @RequiresPermissions("document:addCollect") -//// public Result cancelCollect(String id) { -//// try { -//// bussDocumentLibraryEOService.cancelCollect(id); -//// } catch (Exception e) { -//// return Result.error("取消收藏失败"); -//// } -//// return Result.OK("取消收藏成功"); -//// } -// -//// /** -//// * 添加订阅 -//// * @param id -//// * @return -//// */ -//// @AutoLog(value = "添加订阅") -//// @ApiOperation(value="添加订阅", notes="添加订阅") -//// @GetMapping(value = "/addSubscribe") -//// @RequiresPermissions("document:addSubscribe") -//// public Result addSubscribe(String id) { -//// try { -//// bussDocumentLibraryEOService.addSubscribe(id); -//// } catch (Exception e) { -//// return Result.error("订阅失败"); -//// } -//// return Result.OK("订阅成功"); -//// } -//// -//// /** -//// * 取消订阅 -//// * @param id -//// * @return -//// */ -//// @AutoLog(value = "取消订阅") -//// @ApiOperation(value="取消订阅", notes="取消订阅") -//// @GetMapping(value = "/cancelSubscribe") -//// @RequiresPermissions("document:addSubscribe") -//// public Result cancelSubscribe(String id) { -//// try { -//// bussDocumentLibraryEOService.cancelSubscribe(id); -//// } catch (Exception e) { -//// return Result.error("取消订阅失败"); -//// } -//// return Result.OK("取消订阅成功"); -//// } -// -// -// @ApiOperation(value = "导出excel") -// @GetMapping(value = "/exportExcel") -// @RequiresPermissions("document:exportExcel") -// public void exportExcel(@RequestParam Map map, -// HttpServletResponse response, -// HttpServletRequest request){ -// bussDocumentLibraryEOService.exportExcel(map,response,request); -// } -// -// @ApiOperation(value = "带文件导出") -// @GetMapping(value = "/exportZip") -// @RequiresPermissions("document:exportZip") -// public void exportZip(@RequestParam Map map, -// HttpServletResponse response, -// HttpServletRequest request) throws Exception { -// bussDocumentLibraryEOService.exportZip(map,response,request); -// } -// -// -// @ApiOperation(value = "模板下载") -// @GetMapping(value = "/exportTemplate") -// @RequiresPermissions("document:exportTemplate") -// public void exportTemplate(@RequestParam Map map, HttpServletResponse response, HttpServletRequest request) throws Exception { -// bussDocumentLibraryEOService.exportTemplate(map,response,request); -// } -// -// -// @ApiOperation(value = "导入.zip") -// @PostMapping(value = "/importZip") -// @RequiresPermissions("document:importZip") -// public Result importZip(@RequestParam(value = "file", required = false) MultipartFile file, -// @RequestParam(value = "cut",required = false) String cut) { -// try { -// bussDocumentLibraryEOService.importZip(file,cut); -// } catch (Exception e) { -// log.error(null,e); -// return Result.error(e.getMessage()); -// } -// return Result.OK("导入成功"); -// } - -// @ApiOperation(value = "推送") -// @GetMapping(value = "/pullMessage") -// @RequiresPermissions("document:pullMessage") -// public Result pullMessage(String departIds, String userIds, String documentIds) { -// -// bussDocumentLibraryEOService.pullMessage(departIds,userIds,documentIds); -// -// return Result.OK("推送成功"); -// } - - - -// /** -// * 验证文档是否被其他的文档绑定 -// * -// * @param ids -// * @return -// */ -// @AutoLog(value = "验证文档是否被其他的文档绑定") -// @ApiOperation(value="验证文档是否被其他的文档绑定", notes="验证文档是否被其他的文档绑定") -// @GetMapping(value = "/verifyBind") -// public Result verifyBind(@RequestParam(name="ids",required=true) String ids) { -// String msg = bussDocumentLibraryEOService.verifyBind(Arrays.asList(ids.split(","))); -// return Result.OK(msg); -// } - -// @AutoLog(value = "虚拟中心添加调用文档库数据--分页") -// @ApiOperation(value="虚拟中心添加调用文档库数据--分页", notes="虚拟中心添加调用文档库数据--分页") -// @PostMapping(value = "/queryPageInfoDummy") -// public Result> queryPageInfoDummy(@RequestBody BussDocumentLibraryEO bussDocumentLibraryEO, -// HttpServletRequest req) { -// QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(bussDocumentLibraryEO, req.getParameterMap()); -// Page page = new Page(bussDocumentLibraryEO.getPageNo(), bussDocumentLibraryEO.getPageSize()); -// IPage pageList = bussDocumentLibraryEOService.queryPageInfoDummy(page, queryWrapper,bussDocumentLibraryEO); -// return Result.OK(pageList); -// } - - -// @ApiOperation(value="虚拟中心添加调用文档库数据--分页", notes="虚拟中心添加调用文档库数据--分页") -// @PostMapping(value = "/queryPageDummy") -// @ResponseBody -// public JSONObject queryPageDummy(@RequestBody Map parameter) { -// IPage infoPage = bussDocumentLibraryEOService.getPageDummy(parameter); -// Result ok = Result.OK(infoPage); -// JSONObject jsonResult = JSONObject.fromObject(ok); -// return jsonResult; -// } - -// /** -// * 查看已上传的文件 -// * @param id -// * @return -// */ -// @ApiOperation(value="查看已上传的文件", notes="查看已上传的文件") -// @GetMapping(value = "/getFileInfos") -// @RequiresPermissions("document:queryPageInfo") -// public Result> getFileInfos(String id) { -// List fileInfos = bussDocumentLibraryEOService.getFileInfos(id); -// return Result.OK(fileInfos); -// } -// /** -// * 根据id查询编号和标题 -// * @param id -// * @return -// */ -// @ApiOperation(value="查看已上传的文件", notes="查看已上传的文件") -// @GetMapping(value = "/getTitle") -// public Result getTitle(String id, String cut) { -// String title = bussDocumentLibraryEOService.getTitle(id, cut); -// return Result.OK(title); -// } -// @ApiOperation(value="编辑ES数据(添加module_type_flag)", notes="编辑ES数据(添加module_type_flag)") -// @GetMapping(value = "/updateES") -// public Result getTitle() { -// int count = bussDocumentLibraryEOService.updateES(); -// return Result.OK(count); -// } -} diff --git a/laws-modules/src/main/java/com/jero/modules/laws/enterprise/job/ESInspectStatusRefresh.java b/laws-modules/src/main/java/com/jero/modules/laws/enterprise/job/ESInspectStatusRefresh.java deleted file mode 100644 index 19b26c75..00000000 --- a/laws-modules/src/main/java/com/jero/modules/laws/enterprise/job/ESInspectStatusRefresh.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.jero.modules.laws.enterprise.job; - -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import com.jero.modules.activiti.process.esinspect.common.EsInspectCommon; -import com.jero.modules.laws.enterprise.entity.EnterpriseStandardInspect; -import com.jero.modules.laws.enterprise.service.EnterpriseStandardInspectReportService; -import com.jero.modules.laws.enterprise.service.EnterpriseStandardInspectService; -import lombok.extern.slf4j.Slf4j; -import org.quartz.Job; -import org.quartz.JobExecutionContext; -import org.quartz.JobExecutionException; - -import javax.annotation.Resource; -import java.util.Date; - -/** - * @author: Mzaxd - * @Date: 2023/12/12 14:18 - */ -@Slf4j -public class ESInspectStatusRefresh implements Job { - - @Resource - private EnterpriseStandardInspectService inspectService; - - @Resource - private EnterpriseStandardInspectReportService inspectReportService; - - - public static final String INSPECT_STATUS_DELAY = "4"; - - @Override - public void execute(JobExecutionContext context) throws JobExecutionException { - log.info("企标稽查状态刷新任务执行开始"); - inspectService.update(new LambdaUpdateWrapper() - .and(qw -> qw.eq(EnterpriseStandardInspect::getInspectStatus, EsInspectCommon.INSPECT_STATUS_1) - .or().eq(EnterpriseStandardInspect::getInspectStatus, EsInspectCommon.INSPECT_STATUS_2)) - .le(EnterpriseStandardInspect::getPlanInspectDate, new Date()) - .set(EnterpriseStandardInspect::getInspectStatus, EsInspectCommon.INSPECT_STATUS_4)); - log.info("企标稽查状态刷新任务执行结束"); - } -} diff --git a/laws-modules/src/main/java/com/jero/modules/laws/enterprise/job/ESPlanProjectStatusJob.java b/laws-modules/src/main/java/com/jero/modules/laws/enterprise/job/ESPlanProjectStatusJob.java deleted file mode 100644 index f48e9161..00000000 --- a/laws-modules/src/main/java/com/jero/modules/laws/enterprise/job/ESPlanProjectStatusJob.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.jero.modules.laws.enterprise.job; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.jero.common.constant.enums.YesOrNoEnum; -import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPProjectStatus; -import com.jero.modules.laws.enterprise.entity.EnterpriseStandardPlan; -import com.jero.modules.laws.enterprise.service.EnterpriseStandardPlanService; -import org.quartz.Job; -import org.quartz.JobExecutionContext; -import org.quartz.JobExecutionException; - -import javax.annotation.Resource; -import java.util.Date; -import java.util.List; - -/** - * @author: Mzaxd - * @Date: 2024/1/16 11:42 - */ -public class ESPlanProjectStatusJob implements Job { - - @Resource - private EnterpriseStandardPlanService espService; - - @Override - public void execute(JobExecutionContext context) throws JobExecutionException { - // 每天执行定时任务 判断所有进行中的计划是否逾期 逾期则修改项目状态为逾期 - LambdaQueryWrapper espWrapper = new LambdaQueryWrapper<>(); - espWrapper.eq(EnterpriseStandardPlan::getProjectStatus, ESPProjectStatus.IN_PROGRESS.getValue()) - .or().eq(EnterpriseStandardPlan::getProjectStatus, ESPProjectStatus.OVERDUE.getValue()); - espWrapper.eq(EnterpriseStandardPlan::getDelFlag, YesOrNoEnum.NO.getValue()); - List list = espService.list(espWrapper); - Date curDate = new Date(); - list.forEach(p -> { - if (curDate.after(p.getDraftPlannedCompleteDate()) || - curDate.after(p.getSolicitationDraftPlanCompleteDate()) || - curDate.after(p.getPlanApprovalDate())) { - p.setProjectStatus(ESPProjectStatus.OVERDUE.getValue()); - } else { - p.setProjectStatus(ESPProjectStatus.IN_PROGRESS.getValue()); - } - }); - espService.updateBatchById(list); - } - -} diff --git a/laws-modules/src/main/java/com/jero/modules/laws/enterprise/job/ESRecheckPlanJob.java b/laws-modules/src/main/java/com/jero/modules/laws/enterprise/job/ESRecheckPlanJob.java deleted file mode 100644 index e39187b5..00000000 --- a/laws-modules/src/main/java/com/jero/modules/laws/enterprise/job/ESRecheckPlanJob.java +++ /dev/null @@ -1,203 +0,0 @@ -package com.jero.modules.laws.enterprise.job; - -import cn.hutool.core.util.StrUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.jero.common.constant.enums.YesOrNoEnum; -import com.jero.modules.activiti.process.common.entity.CommonVO; -import com.jero.modules.activiti.process.common.enums.StandardStateEnum; -import com.jero.modules.activiti.process.esRecheck.entity.ProcessEsRecheck; -import com.jero.modules.activiti.process.esRecheck.entity.vo.ESRecheckDataVO; -import com.jero.modules.activiti.process.esRecheck.service.ProcessEsRecheckService; -import com.jero.modules.laws.enterprise.entity.EnterpriseStandardRecheckPlan; -import com.jero.modules.laws.enterprise.entity.dto.ESQueryCommonDTO; -import com.jero.modules.laws.enterprise.entity.vo.EnterpriseStandardRecheckPlanVo; -import com.jero.modules.laws.enterprise.mapper.EnterpriseStandardRecheckPlanMapper; -import com.jero.modules.laws.enterprise.service.EnterpriseStandardRecheckPlanService; -import com.jero.modules.laws.enterprise.util.BeanCopyUtils; -import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard; -import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService; -import com.jero.modules.laws.system.service.ILawsContactManageService; -import lombok.extern.slf4j.Slf4j; -import org.quartz.Job; -import org.quartz.JobExecutionContext; -import org.quartz.JobExecutionException; - -import javax.annotation.Resource; -import java.time.LocalDate; -import java.time.ZoneId; -import java.time.ZonedDateTime; -import java.util.*; -import java.util.stream.Collectors; - -/** - * @author: Mzaxd - * @Date: 2023/11/8 9:11 - */ - -@Slf4j -public class ESRecheckPlanJob implements Job { - - @Resource - private EnterpriseStandardRecheckPlanService esRecheckPlanService; - - @Resource - private ILawsEnterpriseStandardService esService; - - @Resource - private ILawsContactManageService contactManageService; - - @Resource - private ProcessEsRecheckService recheckService; - - @Resource - private EnterpriseStandardRecheckPlanMapper esRecheckPlanMapper; - - @Override - public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { - // 任务1 遍历所有复审计划数据 如果当前时间超过复审日期7天,则显示下一次复审日期 - IPage page = new Page<>(1, Integer.MAX_VALUE); - List records = esRecheckPlanMapper.page(page, new ESQueryCommonDTO()).getRecords(); - records.forEach(recheckPlan -> { - // 获取复审日期前7天的时间戳 - long sevenDaysAfterRecheck = recheckPlan.getRecheckDate().getTime() + (8L * 24 * 60 * 60 * 1000); - // 检查当前时间是否在复审日期前7天内 - if (System.currentTimeMillis() > sevenDaysAfterRecheck) { - // 获取发布日期 - Date releaseDate = recheckPlan.getReleaseDate(); - // 使用Calendar进行日期的加减 - Calendar calendar = Calendar.getInstance(); - if (releaseDate != null) { - calendar.setTime(releaseDate); // 设置发布日期 - calendar.add(Calendar.YEAR, 6); // 在发布日期的基础上加三年 - // 如果新的日期小于等于复审日期,则在复审日期的基础上加三年 - if (calendar.getTime().getTime() <= recheckPlan.getRecheckDate().getTime()) { - calendar.setTime(recheckPlan.getRecheckDate()); - calendar.add(Calendar.YEAR, 3); - } - // 将新的复审日期设置回对象中 - recheckPlan.setRecheckDate(calendar.getTime()); - recheckPlan.setRecheckResult(null); - } - } - }); - List enterpriseStandardRecheckPlans = BeanCopyUtils - .copyBeanList(records, EnterpriseStandardRecheckPlan.class); - esRecheckPlanService.updateBatchById(enterpriseStandardRecheckPlans); - - // 任务2 遍历所有企标,如果企标发布日期已经达到35个月,则自动发起复审流程 - List allEs = esService.list(new LambdaQueryWrapper() - .eq(LawsEnterpriseStandard::getDelFlag, YesOrNoEnum.NO.getValue()) - .ne(LawsEnterpriseStandard::getStandardState, StandardStateEnum.ABOLISH.getStateValue()) - .ne(LawsEnterpriseStandard::getStandardState, StandardStateEnum.ARCHIVE.getStateValue())); - List recheckPlanList = esRecheckPlanService.list(); - Map> recheckPlanMap = recheckPlanList.stream().collect(Collectors.groupingBy(EnterpriseStandardRecheckPlan::getStandardId)); - - for (LawsEnterpriseStandard es : allEs) { - // 根据企标发布日期判断是否当前已经达到35个月 - if (es.getReleaseDate() == null) { - log.info("无法找到企标编号为{}的发布日期,无法进行复审计划定时任务", es.getStandardNumber()); - continue; - } - ZonedDateTime releaseZonedDateTime = es.getReleaseDate().toInstant() - .atZone(ZoneId.of("Asia/Shanghai")); - LocalDate releaseLocalDate = releaseZonedDateTime.toLocalDate(); - LocalDate now = LocalDate.now(); - // 36个月的复审日期 - LocalDate recheckDate36Months = releaseLocalDate.plusMonths(36); - LocalDate plusMonths = releaseLocalDate.plusMonths(35).minusDays(1); - if (plusMonths.isBefore(now)) { - // 判断是否已经存在复审计划 - List recheckPlans = recheckPlanMap.get(es.getId()); - if (recheckPlans == null || recheckPlans.isEmpty()) { - // 企标已经达到35个月,需要重新复审 - EnterpriseStandardRecheckPlan recheckPlan = new EnterpriseStandardRecheckPlan(); - recheckPlan.setStandardId(es.getId()); - recheckPlan.setStandardNo(es.getStandardNumber()); - // 正确处理时区,转换回Date类型 - ZonedDateTime zdtRecheck = recheckDate36Months.atStartOfDay(ZoneId.of("Asia/Shanghai")); - // 加一天 - Date recheckDate = Date.from(zdtRecheck.toInstant()); - recheckPlan.setRecheckDate(recheckDate); - esRecheckPlanService.save(recheckPlan); - // 自动发起流程 - autoStartProcess(es, recheckPlan); - log.info("企标编号为{}的企标已经达到35个月,已经自动发起复审流程", es.getStandardNumber()); - } else { - // 如果已经有复审计划,则需要判断是否到达复审日期前一个月,如果到达则需要发起流程,已经发起过流程的不能重复发送 - EnterpriseStandardRecheckPlan recheckPlan = recheckPlans.get(0); - Date recheckDate = recheckPlan.getRecheckDate(); - LocalDate recheckLocalDate = recheckDate.toInstant().atZone(ZoneId.of("Asia/Shanghai")).toLocalDate(); - LocalDate minusMonths = recheckLocalDate.minusMonths(1); - if (YesOrNoEnum.YES.getValue().equals(recheckPlan.getInProcessFlag())) { - // 已经发起过流程,不需要重复发起 - log.info("企标编号为{}的企标已经达到复审日期前一个月,但是已经发起过复审流程,无需重复发起", es.getStandardNumber()); - continue; - } - if (now.isAfter(minusMonths) && now.isBefore(recheckLocalDate)) { - autoStartProcess(es, recheckPlan); - log.info("企标编号为{}的企标已经达到复审日期前一个月,已经自动发起复审流程", es.getStandardNumber()); - } - } - } - } - log.info("企标复审计划定时任务执行完成"); - } - - /** - * 自动发起流程 - * @param es 企标 - * @param recheckPlan 复审计划 - */ - private void autoStartProcess(LawsEnterpriseStandard es, EnterpriseStandardRecheckPlan recheckPlan) { - // 找到各自企标的联络人,如果找不到联络人则发给标准化工程师 - String deptId = es.getMainDraftingUnit(); - String standardNo = es.getStandardNumber(); - if (StrUtil.isBlank(deptId)) { - log.error("企标复审流程发起失败,企标编号为{}的企标部门ID为空,无法找到其联络人", standardNo); - return; - } - String standardizationUser = contactManageService.findContactUserByDept(deptId); - String standardEngineer = null; - if (StrUtil.isBlank(standardizationUser)) { - standardEngineer = contactManageService.findStandardEngineerByDept(deptId); - } - if (StrUtil.isBlank(standardizationUser) && StrUtil.isBlank(standardEngineer)) { - log.error("企标复审流程发起失败,无法找到企标编号为{}的联络人和标准化工程师", standardNo); - return; - } - // 构建发起流程数据 - ESRecheckDataVO esRecheckDataVO = getEsRecheckDataVO(es, standardizationUser, standardEngineer, recheckPlan); - // 发起流程 - recheckService.autoStartProcess(esRecheckDataVO); - // 更新标识 - recheckPlan.setInProcessFlag(YesOrNoEnum.YES.getValue()); - recheckPlan.setRecheckResult(null); - esRecheckPlanService.updateById(recheckPlan); - } - - public static ESRecheckDataVO getEsRecheckDataVO(LawsEnterpriseStandard es, String standardizationUser - , String standardEngineer, EnterpriseStandardRecheckPlan recheckPlan) { - ESRecheckDataVO esRecheckDataVO = new ESRecheckDataVO(); - ProcessEsRecheck recheck = BeanCopyUtils.copyBean(es, ProcessEsRecheck.class); - recheck.setId(null); - recheck.setStandardId(es.getId()); - recheck.setRecheckPlanId(recheckPlan.getId()); - recheck.setRecheckDate(recheckPlan.getRecheckDate()); - if (standardizationUser == null) { - recheck.setShowFirstNode(YesOrNoEnum.YES.getInteger()); - } else { - recheck.setShowFirstNode(YesOrNoEnum.NO.getInteger()); - } - CommonVO commonVO = new CommonVO(); - commonVO.setPrcName(es.getStandardNumber() + "-" + es.getStandardName() + "-复审"); - Map map = new HashMap<>(); - map.put("standardizationUser", standardizationUser); - map.put("standardEngineer", standardEngineer); - esRecheckDataVO.setCommon(commonVO); - esRecheckDataVO.setData(recheck); - esRecheckDataVO.setFlowUser(map); - return esRecheckDataVO; - } -} diff --git a/laws-modules/src/main/java/com/jero/modules/laws/enterprise/job/ESTrialEndRecheckJob.java b/laws-modules/src/main/java/com/jero/modules/laws/enterprise/job/ESTrialEndRecheckJob.java deleted file mode 100644 index fbbae872..00000000 --- a/laws-modules/src/main/java/com/jero/modules/laws/enterprise/job/ESTrialEndRecheckJob.java +++ /dev/null @@ -1,112 +0,0 @@ -package com.jero.modules.laws.enterprise.job; - -import cn.hutool.core.util.StrUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.jero.common.constant.enums.YesOrNoEnum; -import com.jero.modules.activiti.process.esRecheck.entity.ProcessEsRecheck; -import com.jero.modules.activiti.process.esRecheck.entity.vo.ESRecheckDataVO; -import com.jero.modules.activiti.process.esRecheck.service.ProcessEsRecheckService; -import com.jero.modules.laws.common.constant.FieldCommon; -import com.jero.modules.laws.enterprise.entity.EnterpriseStandardRecheckPlan; -import com.jero.modules.laws.enterprise.service.EnterpriseStandardRecheckPlanService; -import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard; -import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService; -import com.jero.modules.laws.system.service.ILawsContactManageService; -import lombok.extern.slf4j.Slf4j; -import org.quartz.Job; -import org.quartz.JobExecutionContext; -import org.quartz.JobExecutionException; - -import javax.annotation.Resource; -import java.time.ZoneId; -import java.time.ZonedDateTime; -import java.util.*; -import java.util.stream.Collectors; - -/** - * @author: Mzaxd - * @Date: 2023/12/25 13:54 - */ -@Slf4j -public class ESTrialEndRecheckJob implements Job { - - @Resource - private ILawsEnterpriseStandardService esService; - - @Resource - private ProcessEsRecheckService recheckService; - - @Resource - private EnterpriseStandardRecheckPlanService recheckPlanService; - - @Resource - private EnterpriseStandardRecheckPlanService esRecheckPlanService; - - @Resource - private ILawsContactManageService contactManageService; - - @Override - public void execute(JobExecutionContext context) throws JobExecutionException { - // 找到所有在试用期且没有发过复审流程的企标 - LambdaQueryWrapper esWrapper = new LambdaQueryWrapper<>(); - esWrapper.eq(LawsEnterpriseStandard::getDelFlag, YesOrNoEnum.NO.getValue()); - esWrapper.eq(LawsEnterpriseStandard::getTryFlag, YesOrNoEnum.YES.getValue()); - List trialStandards = esService.list(esWrapper); - List expireStandards = new ArrayList<>(); - // 找到所有超出试用期的企标 - Date currentDate = new Date(); - for (LawsEnterpriseStandard es : trialStandards) { - Date releaseDate = es.getReleaseDate(); - int trialPeriodMonths = Integer.parseInt(String.valueOf(es.getTrialPeriod())); // 将试用周期转换为天数 - Calendar calendar = Calendar.getInstance(); - calendar.setTime(releaseDate); - calendar.add(Calendar.MONTH, trialPeriodMonths); // 将试用周期加到发布日期上 - Date trialEndDate = calendar.getTime(); // 获取试用期结束日期 - // 超出试用期的企标 - if (currentDate.compareTo(trialEndDate) > 0) { - expireStandards.add(es); - } - } - LambdaQueryWrapper recheckWrapper = new LambdaQueryWrapper<>(); - recheckWrapper.in(EnterpriseStandardRecheckPlan::getStandardNo, - expireStandards.stream().map(LawsEnterpriseStandard::getStandardNumber).collect(Collectors.toList())); - List recheckList = recheckPlanService.list(recheckWrapper); - if (recheckList != null && !recheckList.isEmpty()) { - // 找到已经存在复审计划的企标 - List recheckStandardNumbers = recheckList.stream().map(EnterpriseStandardRecheckPlan::getStandardNo).collect(Collectors.toList()); - // 将已经存在的企标从发起集合中移除 - expireStandards = expireStandards.stream().filter(es -> !recheckStandardNumbers.contains(es.getStandardNumber())).collect(Collectors.toList()); - } - // 发起复审流程 - for (LawsEnterpriseStandard es : expireStandards) { - EnterpriseStandardRecheckPlan recheckPlan = new EnterpriseStandardRecheckPlan(); - recheckPlan.setStandardId(es.getId()); - recheckPlan.setStandardNo(es.getStandardNumber()); - // 加一天 - Date recheckDate = new Date(); - recheckPlan.setRecheckDate(recheckDate); - esRecheckPlanService.save(recheckPlan); - // 自动发起流程 - // 找到各自企标的联络人,如果找不到联络人则发给标准化工程师 - String deptId = es.getMainDraftingUnit(); - String standardNo = es.getStandardNumber(); - if (StrUtil.isBlank(deptId)) { - log.error("企标复审流程发起失败,企标编号为{}的企标部门ID为空,无法找到其联络人", standardNo); - continue; - } - String standardizationUser = contactManageService.findContactUserByDept(deptId); - String standardEngineer = null; - if (StrUtil.isBlank(standardizationUser)) { - standardEngineer = contactManageService.findStandardEngineerByDept(deptId); - } - if (StrUtil.isBlank(standardizationUser) && StrUtil.isBlank(standardEngineer)) { - log.error("企标复审流程发起失败,无法找到企标编号为{}的联络人和标准化工程师", standardNo); - continue; - } - // 构建发起流程数据 - ESRecheckDataVO esRecheckDataVO = ESRecheckPlanJob.getEsRecheckDataVO(es, standardizationUser, standardEngineer, recheckPlan); - // 发起流程 - recheckService.autoStartProcess(esRecheckDataVO); - } - } -} diff --git a/laws-modules/src/main/java/com/jero/modules/laws/enterprise/job/QualityStandardResetJob.java b/laws-modules/src/main/java/com/jero/modules/laws/enterprise/job/QualityStandardResetJob.java deleted file mode 100644 index 3c14cd5b..00000000 --- a/laws-modules/src/main/java/com/jero/modules/laws/enterprise/job/QualityStandardResetJob.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.jero.modules.laws.enterprise.job; - -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import com.jero.modules.laws.enterprise.entity.EnterpriseStandardPlan; -import com.jero.modules.laws.enterprise.service.EnterpriseStandardPlanService; -import lombok.extern.slf4j.Slf4j; -import org.quartz.Job; -import org.quartz.JobExecutionContext; -import org.quartz.JobExecutionException; - -import javax.annotation.Resource; - - -@Slf4j -public class QualityStandardResetJob implements Job { - - @Resource - private EnterpriseStandardPlanService enterpriseStandardPlanService; - - @Override - public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { - LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); - updateWrapper.set(EnterpriseStandardPlan::getQualityFlag, 0); - enterpriseStandardPlanService.update(updateWrapper); - log.info("重置优质企标状态完成"); - } -} diff --git a/laws-modules/src/main/java/com/jero/modules/laws/oldSystem/controller/OldSystemController.java b/laws-modules/src/main/java/com/jero/modules/laws/oldSystem/controller/OldSystemController.java deleted file mode 100644 index 9e7e8d24..00000000 --- a/laws-modules/src/main/java/com/jero/modules/laws/oldSystem/controller/OldSystemController.java +++ /dev/null @@ -1,220 +0,0 @@ -package com.jero.modules.laws.oldSystem.controller; - -import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; -import com.github.xiaoymin.knife4j.annotations.ApiSupport; -import com.jero.common.api.vo.Result; -import com.jero.common.aspect.annotation.AutoLog; -import com.jero.modules.laws.oldSystem.service.OldSystemDepartRelationService; -import com.jero.modules.laws.oldSystem.service.OldSystemService; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import io.swagger.annotations.ApiParam; -import lombok.extern.slf4j.Slf4j; -import org.springframework.web.bind.annotation.*; -import org.springframework.web.multipart.MultipartFile; -import javax.annotation.Resource; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; - -/** - * @author: Mzaxd - * @Date: 2023/11/10 14:46 - */ - - -@ApiSupport(order = 10101) -@Api(tags="老法规系统") -@RestController -@RequestMapping("/oldSystem") -@Slf4j -public class OldSystemController { - - @Resource - private OldSystemService oldSystemService; - - @Resource - private OldSystemDepartRelationService oldSystemDeptRelationService; - - /** - * 通过excel导入数据 - * - * @return - */ - @PostMapping("/importOldDeptRelationExcel") - @ApiOperation(value = "老法规系统-老部门现部门关系导入", notes = "老法规系统-老部门现部门关系导入") - @ApiOperationSupport(order = 1) - @AutoLog(value = "老法规系统-老部门现部门关系导入") - public void importExcel(@ApiParam(value = "要上传的文件", required = true) @RequestParam("file") MultipartFile file, - HttpServletResponse response) { - oldSystemDeptRelationService.importDepartRelationData(file, response); - } - - - @PostMapping("/importOldSystemExcel") - @AutoLog(value = "老法规系统-老法规企标国标外标数据导入") - @ApiOperation(value="老法规系统-老法规企标国标外标数据导入", notes="老法规系统-老法规企标国标外标数据导入", produces = "application/octet-stream") - @ApiOperationSupport(order = 2) - public void importOldSystemESZip(@RequestParam("file") MultipartFile file, - @ApiParam(value = "0不导入 1导入企标 2导入国标 3外标", required = true) - @RequestParam("type") String type, - HttpServletResponse response) { - oldSystemService.importExcelOldSystem(file, type, response); - } - - @PostMapping("/importOldSystemStateAndReplaceStandardFix") - @AutoLog(value = "老法规系统-老法规企标国标外标数据修正") - @ApiOperation(value="老法规系统-老法规企标国标外标数据修正", notes="老法规系统-老法规企标国标外标数据修正", produces = "application/octet-stream") - @ApiOperationSupport(order = 12) - public void importOldSystemDataFix(@RequestParam("file") MultipartFile file, - @ApiParam(value = "0不导入 1导入企标 2导入国标 3外标", required = true) - @RequestParam("type") String type, - HttpServletResponse response) { - oldSystemService.importOldSystemDataFix(file, type, response); - } - - @PostMapping("/importOldSystemFileFix") - @AutoLog(value = "老法规系统-老法规企标国标外标文件数据修正") - @ApiOperation(value="老法规系统-老法规企标国标外标文件数据修正", notes="老法规系统-老法规企标国标外标文件数据修正", produces = "application/octet-stream") - @ApiOperationSupport(order = 12) - public void importOldSystemDataFileFix(@RequestParam("file") MultipartFile file, - @ApiParam(value = "0不导入 1导入企标 2导入国标 3外标", required = true) - @RequestParam("type") String type, - HttpServletResponse response) { - oldSystemService.importOldSystemDataFileFix(file, type, response); - } - - @PostMapping("/importOldSystemFileFixFinal") - @AutoLog(value = "老法规系统-老法规企标国标外标文件数据最终修正") - @ApiOperation(value="老法规系统-老法规企标国标外标文件数据最终修正", notes="老法规系统-老法规企标国标外标文件数据最终修正", produces = "application/octet-stream") - @ApiOperationSupport(order = 13) - public void importOldSystemFileFixFinal(@RequestParam("file") MultipartFile file, - @ApiParam(value = "0不导入 1导入企标 2导入国标 3外标", required = true) - @RequestParam("type") String type, - HttpServletResponse response) { - oldSystemService.importOldSystemDataFileFixFinal(file, type, response); - } - - @PostMapping("/importOldSystemFileFixDocPath") - @AutoLog(value = "老法规系统-老法规企标国标外标文件DOC路径") - @ApiOperation(value="老法规系统-老法规企标国标外标文件DOC路径", notes="老法规系统-老法规企标国标外标文件DOC路径", produces = "application/octet-stream") - @ApiOperationSupport(order = 14) - public void importOldSystemFileFixDocPath(@RequestParam("file") MultipartFile file, - @ApiParam(value = "0不导入 1导入企标 2导入国标 3外标", required = true) - @RequestParam("type") String type, - HttpServletResponse response) { - oldSystemService.importOldSystemFileFixDocPath(file, type, response); - } - - @PostMapping("/importOldESAuthAllExcel") - @AutoLog(value = "老法规系统-老法规企标所有人权限数据导入") - @ApiOperation(value="老法规系统-老法规企标所有人权限数据导入", notes="老法规系统-老法规企标所有人权限数据导入", produces = "application/octet-stream") - @ApiOperationSupport(order = 3) - public void importOldESAuthAllExcel(@RequestParam("file") MultipartFile file, - HttpServletResponse response) { - oldSystemService.importOldESAuthAllExcel(file, response); - } - - @PostMapping("/importOldESAuthUserExcel") - @AutoLog(value = "老法规系统-老法规企标个人权限数据导入") - @ApiOperation(value="老法规系统-老法规企标个人权限数据导入", notes="老法规系统-老法规企标个人权限数据导入", produces = "application/octet-stream") - @ApiOperationSupport(order = 4) - public void importOldESAuthUserExcel(@RequestParam("file") MultipartFile file, - HttpServletResponse response) { - oldSystemService.importOldESAuthUserExcel(file, response); - } - @PostMapping("/importOldESAuthDeptExcel") - @AutoLog(value = "老法规系统-老法规企标部门权限数据导入") - @ApiOperation(value="老法规系统-老法规企标部门权限数据导入", notes="老法规系统-老法规企标部门权限数据导入", produces = "application/octet-stream") - @ApiOperationSupport(order = 5) - public void importOldESAuthDeptExcel(@RequestParam("file") MultipartFile file, - HttpServletResponse response) { - oldSystemService.importOldESAuthDeptExcel(file, response); - } - - @PostMapping("/filterChineseStandardNo") - @AutoLog(value = "老法规系统-过滤带中文的标准号") - @ApiOperation(value="老法规系统-过滤带中文的标准号", notes="老法规系统-过滤带中文的标准号", produces = "application/octet-stream") - @ApiOperationSupport(order = 6) - public void filterChineseStandardNo(@RequestParam("file") MultipartFile file, - HttpServletResponse response) throws IOException { - oldSystemService.filterChineseStandardNo(file, response); - } - - @PostMapping("/importFileRelationExcel") - @AutoLog(value = "老法规系统-导入文件附件等关联关系") - @ApiOperation(value="老法规系统-导入文件附件等关联关系", notes="老法规系统-导入文件附件等关联关系", produces = "application/octet-stream") - @ApiOperationSupport(order = 7) - public void importFileRelationExcel(@RequestParam("file") MultipartFile file, - HttpServletResponse response) throws IOException { - oldSystemService.importFileRelationExcel(file, response); - } - - @PostMapping("/findDuplicateStandardNoData") - @AutoLog(value = "老法规系统-找到标准号重复的数据") - @ApiOperation(value="老法规系统-找到标准号重复的数据", notes="老法规系统-找到标准号重复的数据", produces = "application/octet-stream") - @ApiOperationSupport(order = 8) - public void findDuplicateStandardNoData(@RequestParam("file") MultipartFile file, - HttpServletResponse response) throws IOException { - oldSystemService.findDuplicateStandardNoData(file, response); - } - - @PostMapping("/importEsStandSystem") - @AutoLog(value = "老法规系统-导入企标体系") - @ApiOperation(value="老法规系统-导入企标体系", notes="老法规系统-导入企标体系", produces = "application/octet-stream") - @ApiOperationSupport(order = 9) - public void importEsStandSystem(@RequestParam("file") MultipartFile file, - HttpServletResponse response) throws IOException { - oldSystemService.importEsStandSystem(file, response); - } - - @PostMapping("/importGbStandSystemApproval") - @AutoLog(value = "老法规系统-导入国标体系(准入性)") - @ApiOperation(value="老法规系统-导入国标体系(准入性)", notes="老法规系统-导入国标体系(准入性)", produces = "application/octet-stream") - @ApiOperationSupport(order = 10) - public void importGbStandSystemApproval(@RequestParam("file") MultipartFile file, - HttpServletResponse response) throws IOException { - oldSystemService.importGbStandSystem(file, response, "approval"); - } - - @PostMapping("/importGbStandSystemRecommend") - @AutoLog(value = "老法规系统-导入国标体系(推荐性)") - @ApiOperation(value="老法规系统-导入国标体系(推荐性)", notes="老法规系统-导入国标体系(推荐性)", produces = "application/octet-stream") - @ApiOperationSupport(order = 11) - public void importGbStandSystemRecommend(@RequestParam("file") MultipartFile file, - HttpServletResponse response) throws IOException { - oldSystemService.importGbStandSystem(file, response, "recommend"); - } - @GetMapping("/esAuthDeptDataFix") - @AutoLog(value = "老法规系统-企标授权部门数据修复") - @ApiOperation(value="老法规系统-企标授权部门数据修复", notes="老法规系统-企标授权部门数据修复") - @ApiOperationSupport(order = 100) - public Result esAuthDeptDataFix() { - return Result.OK(oldSystemDeptRelationService.esAuthDeptDataFix()); - } - - @GetMapping("/dataFileFix") - @AutoLog(value = "老法规系统-上线后检测ossFile表中的数据和minio中的数据是否一致/找到minio中不存在的数据") - @ApiOperation(value="老法规系统-上线后检测ossFile表中的数据和minio中的数据是否一致/找到minio中不存在的数据", notes="老法规系统-上线后检测ossFile表中的数据和minio中的数据是否一致/找到minio中不存在的数据") - @ApiOperationSupport(order = 15) - public void dataFileFix(HttpServletResponse response) { - oldSystemService.dataFileFix(response); - } - - - @GetMapping("/fbDataFix") - @AutoLog(value = "老法规系统-海外标准数据修复") - @ApiOperation(value="老法规系统-海外标准数据修复", notes="老法规系统-海外标准数据修复") - @ApiOperationSupport(order = 16) - public Result fbDataFix(HttpServletResponse response) { - return Result.OK(oldSystemService.fbDataFix(response)); - } - - @GetMapping("/fbAuthDeptDataFix") - @AutoLog(value = "老法规系统-外标授权部门数据修复") - @ApiOperation(value="老法规系统-外标授权部门数据修复", notes="老法规系统-外标授权部门数据修复") - @ApiOperationSupport(order = 100) - public Result fbAuthDeptDataFix() { - return Result.OK(oldSystemDeptRelationService.fbAuthDeptDataFix()); - } - -} diff --git a/laws-modules/src/main/java/com/jero/modules/laws/oldSystem/entity/ESAuthAll.java b/laws-modules/src/main/java/com/jero/modules/laws/oldSystem/entity/ESAuthAll.java deleted file mode 100644 index b0bc9df3..00000000 --- a/laws-modules/src/main/java/com/jero/modules/laws/oldSystem/entity/ESAuthAll.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.jero.modules.laws.oldSystem.entity; - -import io.swagger.annotations.ApiModelProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; -import org.jeecgframework.poi.excel.annotation.Excel; - -/** - * @author: Mzaxd - * @Date: 2023/11/29 11:47 - * - * 对应标准权限-1所有人.xlsx - */ - -@Data -@NoArgsConstructor -@AllArgsConstructor -public class ESAuthAll { - - @Excel(name = "标准ID") - @ApiModelProperty(value = "标准ID") - private String standardId; - - @Excel(name = "标准号") - @ApiModelProperty(value = "标准号") - private String standardNumber; - - @Excel(name = "标准名称") - @ApiModelProperty(value = "标准名称") - private String standardName; - - @Excel(name = "标准分类") - @ApiModelProperty(value = "标准分类") - private String standardType; - - @Excel(name = "权限") - @ApiModelProperty(value = "权限") - private String standardLevel; - - public boolean isEmptyRow() { - return standardId == null && - standardNumber == null && - standardName == null && - standardType == null && - standardLevel == null; - } - -} diff --git a/laws-modules/src/main/java/com/jero/modules/laws/oldSystem/entity/ESAuthDept.java b/laws-modules/src/main/java/com/jero/modules/laws/oldSystem/entity/ESAuthDept.java deleted file mode 100644 index afb70b89..00000000 --- a/laws-modules/src/main/java/com/jero/modules/laws/oldSystem/entity/ESAuthDept.java +++ /dev/null @@ -1,73 +0,0 @@ -package com.jero.modules.laws.oldSystem.entity; - -import com.baomidou.mybatisplus.annotation.TableField; -import io.swagger.annotations.ApiModelProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; -import org.jeecgframework.poi.excel.annotation.Excel; - -/** - * @author: Mzaxd - * @Date: 2023/11/29 11:48 - * 对应标准权限-1部门.xlsx - */ -@Data -@NoArgsConstructor -@AllArgsConstructor -public class ESAuthDept { - - @Excel(name = "标准ID") - @ApiModelProperty(value = "标准ID") - private String standardId; - - @Excel(name = "标准号") - @ApiModelProperty(value = "标准号") - private String standardNumber; - - @Excel(name = "标准名称") - @ApiModelProperty(value = "标准名称") - private String standardName; - - @Excel(name = "标准分类") - @ApiModelProperty(value = "标准分类") - private String standardType; - - @Excel(name = "旧上级组织") - @ApiModelProperty(value = "上级组织") - private String oldHigherDeptName; - - @Excel(name = "旧组织部门") - @ApiModelProperty(value = "组织部门") - private String oldDeptName; - - @Excel(name = "再上一级组织(部分存在)") - @ApiModelProperty(value = "再上一级组织(部分存在)") - private String higherHigherDeptName; - - @Excel(name = "上级组织") - @ApiModelProperty(value = "上级组织") - private String higherDeptName; - - @Excel(name = "新部门") - @ApiModelProperty(value = "组织部门") - private String deptName; - - @Excel(name = "错误信息", width = 35) - @ApiModelProperty(value = "错误信息") - @TableField(exist = false) - private String errorInfo; - - public boolean isEmptyRow() { - return standardId == null && - standardNumber == null && - standardName == null && - standardType == null && - oldHigherDeptName == null && - oldDeptName == null && - higherHigherDeptName == null && - higherDeptName == null && - deptName == null; - } - -} diff --git a/laws-modules/src/main/java/com/jero/modules/laws/oldSystem/entity/ESAuthUser.java b/laws-modules/src/main/java/com/jero/modules/laws/oldSystem/entity/ESAuthUser.java deleted file mode 100644 index 5c9a4b91..00000000 --- a/laws-modules/src/main/java/com/jero/modules/laws/oldSystem/entity/ESAuthUser.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.jero.modules.laws.oldSystem.entity; - -import com.baomidou.mybatisplus.annotation.TableField; -import io.swagger.annotations.ApiModelProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; -import org.jeecgframework.poi.excel.annotation.Excel; - -/** - * @author: Mzaxd - * @Date: 2023/11/29 11:48 - * 对应标准权限-3个人.xlsx - */ - -@Data -@NoArgsConstructor -@AllArgsConstructor -public class ESAuthUser { - - @Excel(name = "标准ID", width = 15, orderNum = "1") - @ApiModelProperty(value = "标准ID") - private String standardId; - - @Excel(name = "标准号", width = 15, orderNum = "2") - @ApiModelProperty(value = "标准号") - private String standardNumber; - - @Excel(name = "标准名称", width = 15, orderNum = "3") - @ApiModelProperty(value = "标准名称") - private String standardName; - - @Excel(name = "标准分类", width = 15, orderNum = "4") - @ApiModelProperty(value = "标准分类") - private String standardType; - - @Excel(name = "工号", width = 15, orderNum = "5") - @ApiModelProperty(value = "工号") - private String workNumber; - - @Excel(name = "姓名", width = 15, orderNum = "6") - @ApiModelProperty(value = "姓名") - private String realName; - - @Excel(name = "错误信息", width = 35, orderNum = "7") - @ApiModelProperty(value = "错误信息") - @TableField(exist = false) - private String errorInfo; - - public boolean isEmptyRow() { - return standardId == null && - standardNumber == null && - standardName == null && - standardType == null && - workNumber == null && - realName == null; - } - -} diff --git a/laws-modules/src/main/java/com/jero/modules/laws/oldSystem/entity/ESOldStandardSystem.java b/laws-modules/src/main/java/com/jero/modules/laws/oldSystem/entity/ESOldStandardSystem.java deleted file mode 100644 index e3fb0b7d..00000000 --- a/laws-modules/src/main/java/com/jero/modules/laws/oldSystem/entity/ESOldStandardSystem.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.jero.modules.laws.oldSystem.entity; - -import com.baomidou.mybatisplus.annotation.TableField; -import lombok.Data; -import org.jeecgframework.poi.excel.annotation.Excel; - -/** - * @author: Mzaxd - * @Date: 2023/12/5 10:49 - */ - -@Data -public class ESOldStandardSystem { - - @Excel(name = "ID", width = 15, orderNum = "0") - private String id; - - @Excel(name = "BZH", width = 15, orderNum = "1") - private String bzh; - - @Excel(name = "BZMC", width = 15, orderNum = "4") - private String bzmc; - - @Excel(name = "BZYWMC", width = 15, orderNum = "5") - private String bzywmc; - - @Excel(name = "BZFL-NEW", width = 15, orderNum = "6") - private String bzfl; - - @Excel(name = "错误信息", width = 35, orderNum = "52") - @TableField(exist = false) - private String errorInfo; - - /** - * 判断是否是空行 - * @return 如果所有字段都为null或空字符串,返回true,否则返回false - */ - public boolean isEmptyRow() { - return id == null && bzmc == null && bzywmc == null && bzfl == null; - } - - - - - -} diff --git a/laws-modules/src/main/java/com/jero/modules/laws/oldSystem/entity/GBStandSystem.java b/laws-modules/src/main/java/com/jero/modules/laws/oldSystem/entity/GBStandSystem.java deleted file mode 100644 index e79b1b5b..00000000 --- a/laws-modules/src/main/java/com/jero/modules/laws/oldSystem/entity/GBStandSystem.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.jero.modules.laws.oldSystem.entity; - -import io.swagger.annotations.ApiModelProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; -import org.jeecgframework.poi.excel.annotation.Excel; - -/** - * @author: Mzaxd - * @Date: 2023/11/29 11:47 - * - * 对应标准权限-1所有人.xlsx - */ - -@Data -@NoArgsConstructor -@AllArgsConstructor -public class GBStandSystem { - - - @Excel(name = "标准号") - @ApiModelProperty(value = "标准号") - private String standardNumber; - - @Excel(name = "标准名称") - @ApiModelProperty(value = "标准名称") - private String standardName; - - @Excel(name = "标准分类") - @ApiModelProperty(value = "标准分类") - private String standardType; - - @Excel(name = "制修订状态") - @ApiModelProperty(value = "制修订状态") - private String status; - - @Excel(name = "错误信息") - @ApiModelProperty(value = "错误信息") - private String errorInfo; - - public boolean isEmptyRow() { - return - standardNumber == null && - standardName == null && - standardType == null && - status == null; - } - - public boolean isNoNeedImport() { - return status == null || !status.equals("发布"); - } - -} diff --git a/laws-modules/src/main/java/com/jero/modules/laws/oldSystem/entity/OldSystemDepartRelation.java b/laws-modules/src/main/java/com/jero/modules/laws/oldSystem/entity/OldSystemDepartRelation.java deleted file mode 100644 index 9835654a..00000000 --- a/laws-modules/src/main/java/com/jero/modules/laws/oldSystem/entity/OldSystemDepartRelation.java +++ /dev/null @@ -1,90 +0,0 @@ -package com.jero.modules.laws.oldSystem.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import java.io.Serializable; - -import io.swagger.annotations.ApiModelProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; -import org.jeecgframework.poi.excel.annotation.Excel; - -/** - * - * @TableName old_system_depart_relation - */ -@TableName(value ="old_system_depart_relation") -@Data -@NoArgsConstructor -@AllArgsConstructor -public class OldSystemDepartRelation implements Serializable { - /** - * id - */ - @TableId(type = IdType.ASSIGN_ID) - @ApiModelProperty(value = "主键ID") - private String id; - - /** - * 上级组织 - */ - @Excel(name = "旧上级组织", width = 15) - @ApiModelProperty(value = "旧上级组织") - private String oldOrgSuperior; - - /** - * 组织部门 - */ - @Excel(name = "旧组织部门", width = 15) - @ApiModelProperty(value = "旧组织部门") - private String oldOrgName; - - /** - * 现上级组织 - */ - @Excel(name = "现上级组织", width = 15) - @ApiModelProperty(value = "现上级组织") - private String curOrgSuperior; - - /** - * 现组织部门 - */ - @Excel(name = "现组织部门", width = 15) - @ApiModelProperty(value = "现组织部门") - private String curOrgName; - - /** - * 现组织部门Id - */ - @ApiModelProperty(value = "现组织部门Id") - private String curOrgId; - - /** - * 现上级组织Id - */ - @ApiModelProperty(value = "现上级组织Id") - private String curOrgSuperiorId; - - /** - * 错误信息 - */ - @Excel(name = "错误信息", width = 35) - @ApiModelProperty(value = "错误信息") - @TableField(exist = false) - private String errorInfo; - - @TableField(exist = false) - private static final long serialVersionUID = 1L; - - public boolean isEmptyRow() { - return oldOrgName == null && - oldOrgSuperior == null && - curOrgName == null && - curOrgSuperior == null && - curOrgId == null && - curOrgSuperiorId == null; - } -} \ No newline at end of file diff --git a/laws-modules/src/main/java/com/jero/modules/laws/oldSystem/entity/OldSystemImportDTO.java b/laws-modules/src/main/java/com/jero/modules/laws/oldSystem/entity/OldSystemImportDTO.java deleted file mode 100644 index edf1b004..00000000 --- a/laws-modules/src/main/java/com/jero/modules/laws/oldSystem/entity/OldSystemImportDTO.java +++ /dev/null @@ -1,203 +0,0 @@ -package com.jero.modules.laws.oldSystem.entity; - -import com.baomidou.mybatisplus.annotation.TableField; -import lombok.Data; -import org.jeecgframework.poi.excel.annotation.Excel; - -import java.util.Date; - -/** - * @author: Mzaxd - * @Date: 2023/10/20 16:17 - */ -@Data -public class OldSystemImportDTO { - - @Excel(name = "ID", width = 15, orderNum = "0") - private String id; - - @Excel(name = "BZH", width = 15, orderNum = "1") - private String bzh; - - @Excel(name = "STATUS", width = 15, orderNum = "2") - private String status; - - @Excel(name = "CYBZH", width = 15, orderNum = "3") - private String cybzh; - - @Excel(name = "BZMC", width = 15, orderNum = "4") - private String bzmc; - - @Excel(name = "BZYWMC", width = 15, orderNum = "5") - private String bzywmc; - - @Excel(name = "BZFL", width = 15, orderNum = "6") - private String bzfl; - - @Excel(name = "国家/地区", width = 15, orderNum = "6", dicCode = "country_or_region") - private String country; - - @Excel(name = "BZYYTYPE", width = 15, orderNum = "7") - private String bzyytype; - - @Excel(name = "BZDJTYPE", width = 15, orderNum = "8") - private String bzdjtype; - - @Excel(name = "BZLBTYPE", width = 15, orderNum = "9") - private String bzlbtype; - - @Excel(name = "BZLCFJ", width = 15, orderNum = "10") - private String bzlcgj; - - @Excel(name = "BZSYDW", width = 15, orderNum = "11") - private String bzsydw; - - @Excel(name = "ZTC", width = 15, orderNum = "12") - private String ztc; - - @Excel(name = "FBRQ", width = 15, orderNum = "13") - private String fbrq; - - @Excel(name = "SSRQ", width = 15, orderNum = "14") - private String ssrq; - - @Excel(name = "TY", width = 15, orderNum = "15") - private String ty; - - @Excel(name = "BZZT", width = 15, orderNum = "16") - private String bzzt; - - @Excel(name = "BZXZ", width = 15, orderNum = "17") - private String bzxz; - - @Excel(name = "TDBZH", width = 15, orderNum = "18") - private String tdbzh; - - @Excel(name = "BTDBZH", width = 15, orderNum = "19") - private String btdbzh; - - @Excel(name = "BZLY", width = 15, orderNum = "20") - private String bzly; - - @Excel(name = "BGFS", width = 15, orderNum = "21") - private String bgfs; - - @Excel(name = "BGDD", width = 15, orderNum = "22") - private String bgdd; - - @Excel(name = "FZRQ", width = 15, orderNum = "23") - private String fzrq; - - @Excel(name = "LRRQ", width = 15, orderNum = "24") - private String lrrq; - - @Excel(name = "LRR", width = 15, orderNum = "25") - private String lrr; - - @Excel(name = "LRRID", width = 15, orderNum = "26") - private String lrrid; - - @Excel(name = "LRGS", width = 15, orderNum = "27") - private String lrgs; - - @Excel(name = "LRBM", width = 15, orderNum = "28") - private String lrbm; - - @Excel(name = "BZ", width = 15, orderNum = "29") - private String bz; - - @Excel(name = "GKYF", width = 15, orderNum = "30") - private String gkyf; - - @Excel(name = "SCLJ", width = 15, orderNum = "31") - private String sclj; - - @Excel(name = "SWFLJ", width = 15, orderNum = "32") - private String swflj; - - @Excel(name = "DOCLJ", width = 15, orderNum = "33") - private String doclj; - - @Excel(name = "BZJD", width = 15, orderNum = "34") - private String bzjd; - - @Excel(name = "BZJDRQ", width = 15, orderNum = "35") - private String bzjdrq; - - @Excel(name = "BZSH", width = 15, orderNum = "36") - private String bzsh; - - @Excel(name = "BZSHRQ", width = 15, orderNum = "37") - private String bzshrq; - - @Excel(name = "QSQC", width = 15, orderNum = "38") - private String qsqc; - - @Excel(name = "QSJD", width = 15, orderNum = "39") - private String qsjd; - - @Excel(name = "QSSH", width = 15, orderNum = "40") - private String qssh; - - @Excel(name = "QSBZH", width = 15, orderNum = "41") - private String qsbzh; - - @Excel(name = "QSHQ", width = 15, orderNum = "42") - private String qshq; - - @Excel(name = "QSPZ", width = 15, orderNum = "43") - private String qspz; - - @Excel(name = "QSRQ", width = 15, orderNum = "44") - private String qsrq; - - @Excel(name = "SYZY", width = 15, orderNum = "45") - private String syzy; - - @Excel(name = "BAZT", width = 15, orderNum = "46") - private String bazt; - - @Excel(name = "BAJB", width = 15, orderNum = "47") - private String bajb; - - @Excel(name = "ZRR", width = 15, orderNum = "48") - private String zrr; - - @Excel(name = "ZRRID", width = 15, orderNum = "49") - private String zrrid; - - @Excel(name = "ZRBM", width = 15, orderNum = "50") - private String zrbm; - - @Excel(name = "BZCOUNTRY", width = 15, orderNum = "51") - private String bzcountry; - - @Excel(name = "错误信息", width = 35, orderNum = "52") - @TableField(exist = false) - private String errorInfo; - - @Excel(name = "OssFileID", width = 15, orderNum = "53") - @TableField(exist = false) - private String ossFileId; - - /** - * 判断是否是空行 - * @return 如果所有字段都为null或空字符串,返回true,否则返回false - */ - public boolean isEmptyRow() { - return id == null && status == null && cybzh == null - && bzmc == null && bzywmc == null && bzfl == null && bzyytype == null - && bzdjtype == null && bzlbtype == null && bzlcgj == null && bzsydw == null - && ztc == null && fbrq == null && ssrq == null && ty == null - && bzzt == null && bzxz == null && tdbzh == null && btdbzh == null - && bzly == null && bgfs == null && bgdd == null && fzrq == null - && lrrq == null && lrr == null && lrrid == null && lrgs == null - && lrbm == null && bz == null && gkyf == null && sclj == null - && swflj == null && doclj == null && bzjd == null && bzjdrq == null - && bzsh == null && bzshrq == null && qsqc == null && qsjd == null - && qssh == null && qsbzh == null && qshq == null && qspz == null - && qsrq == null && syzy == null && bazt == null && bajb == null - && zrr == null && zrrid == null && zrbm == null && bzcountry == null; - } - -} diff --git a/laws-modules/src/main/java/com/jero/modules/laws/oldSystem/mapper/OldSystemDepartRelationMapper.java b/laws-modules/src/main/java/com/jero/modules/laws/oldSystem/mapper/OldSystemDepartRelationMapper.java deleted file mode 100644 index 4a880bc9..00000000 --- a/laws-modules/src/main/java/com/jero/modules/laws/oldSystem/mapper/OldSystemDepartRelationMapper.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.jero.modules.laws.oldSystem.mapper; - -import com.jero.modules.laws.oldSystem.entity.OldSystemDepartRelation; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; - -/** -* @author ThinkBook -* @description 针对表【old_system_depart_relation】的数据库操作Mapper -* @createDate 2023-11-10 14:17:20 -* @Entity com.jero.modules.laws.entity.OldSystemDepartRelation -*/ -public interface OldSystemDepartRelationMapper extends BaseMapper { - -} - - - - diff --git a/laws-modules/src/main/java/com/jero/modules/laws/oldSystem/service/OldSystemDepartRelationService.java b/laws-modules/src/main/java/com/jero/modules/laws/oldSystem/service/OldSystemDepartRelationService.java deleted file mode 100644 index 35997d38..00000000 --- a/laws-modules/src/main/java/com/jero/modules/laws/oldSystem/service/OldSystemDepartRelationService.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.jero.modules.laws.oldSystem.service; - -import com.jero.modules.laws.oldSystem.entity.OldSystemDepartRelation; -import com.baomidou.mybatisplus.extension.service.IService; -import org.springframework.web.multipart.MultipartFile; - -import javax.servlet.http.HttpServletResponse; -import java.util.Map; - -/** -* @author ThinkBook -* @description 针对表【old_system_depart_relation】的数据库操作Service -* @createDate 2023-11-10 14:17:20 -*/ -public interface OldSystemDepartRelationService extends IService { - - /** - * 导入新老部门关系 - * - * @param file - * @param response - */ - void importDepartRelationData(MultipartFile file, HttpServletResponse response); - - String esAuthDeptDataFix(); - - String fbAuthDeptDataFix(); -} diff --git a/laws-modules/src/main/java/com/jero/modules/laws/oldSystem/service/OldSystemService.java b/laws-modules/src/main/java/com/jero/modules/laws/oldSystem/service/OldSystemService.java deleted file mode 100644 index 43b31274..00000000 --- a/laws-modules/src/main/java/com/jero/modules/laws/oldSystem/service/OldSystemService.java +++ /dev/null @@ -1,128 +0,0 @@ -package com.jero.modules.laws.oldSystem.service; - -import org.springframework.web.multipart.MultipartFile; - -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; - -/** - * @author: Mzaxd - * @Date: 2023/12/5 9:48 - */ -public interface OldSystemService { - - /** - * 老法规系统Excel导入 - * - * @param file - * @param response - * @return - */ - void importExcelOldSystem(MultipartFile file, String type, HttpServletResponse response); - - /** - * 老法规企标所有人权限数据导入 - * - * @param file - * @param response - * @return - */ - void importOldESAuthAllExcel(MultipartFile file, HttpServletResponse response); - - /** - * 老法规企标个人权限数据导入 - * - * @param file - * @param response - * @return - */ - void importOldESAuthUserExcel(MultipartFile file, HttpServletResponse response); - - /** - * 老法规企标部门权限数据导入 - * - * @param file - * @param response - * @return - */ - void importOldESAuthDeptExcel(MultipartFile file, HttpServletResponse response); - - /** - * 过滤中文标准号 - * @param file - * @param response - */ - void filterChineseStandardNo(MultipartFile file, HttpServletResponse response) throws IOException; - - /** - * 导入文件关系Excel - * @param file - * @param response - */ - void importFileRelationExcel(MultipartFile file, HttpServletResponse response); - - /** - * 找到标准号重复的数据 - * @param file - * @param response - */ - void findDuplicateStandardNoData(MultipartFile file, HttpServletResponse response); - - /** - * 导入企标体系 - * @param file - * @param response - */ - void importEsStandSystem(MultipartFile file, HttpServletResponse response); - - /** - * 导入国标体系 - * @param file - * @param response - */ - void importGbStandSystem(MultipartFile file, HttpServletResponse response, String type); - - /** - * 老法规数据导入状态和代替标准数据修正 - * @param file - * @param type - * @param response - */ - void importOldSystemDataFix(MultipartFile file, String type, HttpServletResponse response); - - /** - * 老法规数据导入和文件修正 - * @param file - * @param type - * @param response - */ - void importOldSystemDataFileFix(MultipartFile file, String type, HttpServletResponse response); - - /** - * 老法规数据导入和文件最终修正 - * @param file - * @param type - * @param response - */ - void importOldSystemDataFileFixFinal(MultipartFile file, String type, HttpServletResponse response); - - /** - * 老法规企标国标外标文件DOC路径 - * @param file - * @param type - * @param response - */ - void importOldSystemFileFixDocPath(MultipartFile file, String type, HttpServletResponse response); - - /** - * 上线后检测ossFile表中的数据和minio中的数据是否一致/找到minio中不存在的数据 - * @param response - */ - void dataFileFix(HttpServletResponse response); - - /** - * 海外标准数据修复 - * @param response - */ - String fbDataFix(HttpServletResponse response); -} diff --git a/laws-modules/src/main/java/com/jero/modules/laws/oldSystem/service/impl/OldSystemDepartRelationServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/laws/oldSystem/service/impl/OldSystemDepartRelationServiceImpl.java deleted file mode 100644 index d4988fe2..00000000 --- a/laws-modules/src/main/java/com/jero/modules/laws/oldSystem/service/impl/OldSystemDepartRelationServiceImpl.java +++ /dev/null @@ -1,377 +0,0 @@ -package com.jero.modules.laws.oldSystem.service.impl; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.jero.common.api.vo.ResultCommon; -import com.jero.common.constant.CommonConstant; -import com.jero.common.constant.enums.YesOrNoEnum; -import com.jero.common.exception.JeroBootException; -import com.jero.common.system.vo.SysDepartTreeModel; -import com.jero.common.system.vo.SysDictItemCore; -import com.jero.common.util.MessageUtils; -import com.jero.modules.activiti.process.esAnnualInit.entity.ProcessEsAnnualInit; -import com.jero.modules.activiti.util.ExcelUtils; -import com.jero.modules.laws.oldSystem.entity.ESAuthDept; -import com.jero.modules.laws.enterprise.entity.EnterpriseStandardAuthDept; -import com.jero.modules.laws.enterprise.mapper.EnterpriseStandardAuthDeptMapper; -import com.jero.modules.laws.enterprise.service.EnterpriseStandardAuthDeptService; -import com.jero.modules.laws.oldSystem.entity.OldSystemDepartRelation; -import com.jero.modules.laws.oldSystem.service.OldSystemDepartRelationService; -import com.jero.modules.laws.oldSystem.mapper.OldSystemDepartRelationMapper; -import com.jero.modules.laws.standard.entity.LawsOverseasStandard; -import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService; -import com.jero.modules.laws.standard.service.ILawsOverseasStandardService; -import com.jero.modules.system.entity.SysDepart; -import com.jero.modules.system.service.ISysDepartService; -import lombok.Cleanup; -import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard; -import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService; -import com.jero.modules.laws.standard.service.ILawsTreeNodeService; -import com.jero.modules.system.entity.SysDepart; -import com.jero.modules.system.service.ISysDepartService; -import lombok.extern.slf4j.Slf4j; -import org.apache.poi.ss.usermodel.Workbook; -import org.jeecgframework.poi.excel.ExcelExportUtil; -import org.jeecgframework.poi.excel.ExcelImportUtil; -import org.jeecgframework.poi.excel.entity.ExportParams; -import org.jeecgframework.poi.excel.entity.ImportParams; -import org.jetbrains.annotations.Nullable; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.web.multipart.MultipartFile; - -import javax.annotation.Resource; -import javax.servlet.http.HttpServletResponse; -import javax.annotation.Resource; -import java.io.IOException; -import java.io.InputStream; -import java.util.*; -import java.util.stream.Collectors; -import java.util.*; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -/** - * @author ThinkBook - * @description 针对表【old_system_depart_relation】的数据库操作Service实现 - * @createDate 2023-11-10 14:17:20 - */ -@Slf4j -@Service -@Transactional(rollbackFor = JeroBootException.class) -public class OldSystemDepartRelationServiceImpl extends ServiceImpl - implements OldSystemDepartRelationService { - - @Resource - private ISysDepartService sysDepartService; - - @Resource - private ILawsEnterpriseStandardService enterpriseStandardService; - - @Resource - private EnterpriseStandardAuthDeptService esAdService; - - @Resource - private ILawsEnterpriseStandardService esService; - - @Resource - private ISysDepartService departService; - - @Resource - private EnterpriseStandardAuthDeptMapper esAdMapper; - - @Resource - private ILawsOverseasStandardService fbService; - - @Override - public void importDepartRelationData(MultipartFile file, HttpServletResponse response) { - List errImportList = new ArrayList<>(); - - ImportParams params = new ImportParams(); - params.setTitleRows(0); - params.setHeadRows(1); - params.setNeedSave(true); - - try { - @Cleanup - InputStream inputStream = file.getInputStream(); - List list = ExcelImportUtil.importExcel(inputStream, OldSystemDepartRelation.class, params); - - // 删除空行 - for (int i = 0; i < list.size(); i++) { - OldSystemDepartRelation data = list.get(i); - if (data.isEmptyRow()) { - list.remove(i); - i--; - } - } - - log.info("导入数据条数:{}", list.size()); - // 过滤掉新部门为空的数据 - list = list.stream().filter(dr -> dr.getCurOrgName() != null && !dr.getCurOrgName().isEmpty()).collect(Collectors.toList()); - // 将所获取到的所有数据去除前后空格 - list = list.stream().peek(dr -> { - // 判断是否为空 - if (dr.getOldOrgSuperior() == null) { - dr.setOldOrgSuperior(""); - } - if (dr.getOldOrgName() == null) { - dr.setOldOrgName(""); - } - if (dr.getCurOrgSuperior() == null) { - dr.setCurOrgSuperior(""); - } - if (dr.getCurOrgName() == null) { - dr.setCurOrgName(""); - } - dr.setOldOrgSuperior(dr.getOldOrgSuperior().trim()); - dr.setOldOrgName(dr.getOldOrgName().trim()); - dr.setCurOrgSuperior(dr.getCurOrgSuperior().trim()); - dr.setCurOrgName(dr.getCurOrgName().trim()); - }).collect(Collectors.toList()); - log.info("过滤掉新部门为空的数据后数据条数:{}", list.size()); - // 获取所有有关联的新部门 - LambdaQueryWrapper sysDeptWrapper = new LambdaQueryWrapper<>(); - sysDeptWrapper.eq(SysDepart::getDelFlag, CommonConstant.DEL_FLAG_0.toString()); - sysDeptWrapper.eq(SysDepart::getStatus, 1); - List curDeptList = sysDepartService.list(sysDeptWrapper); - Map> curDeptNameMap = curDeptList.stream().collect(Collectors.groupingBy(SysDepart::getDepartName)); - Map curDeptIdMap = curDeptList.stream().collect(Collectors.toMap(SysDepart::getId, o -> o)); - - // 每个部门名称都查一下是否和现部门匹配 - list = list.stream().filter(dr -> { - List sysDeparts = curDeptNameMap.get(dr.getCurOrgName()); - if (sysDeparts == null || sysDeparts.isEmpty()) { - dr.setErrorInfo("系统中未找到同名的现部门"); - errImportList.add(dr); - return false; - } else { - if (sysDeparts.size() > 1) { - // 根据上级部门名称再次匹配 - for (SysDepart sysDepart : sysDeparts) { - String parentDeptName = curDeptIdMap.get(sysDepart.getParentId()).getDepartName(); - if (parentDeptName.equals(dr.getCurOrgSuperior())) { - dr.setCurOrgId(sysDepart.getId()); - dr.setCurOrgSuperiorId(sysDepart.getParentId()); - return true; - } - } - dr.setErrorInfo("匹配到多个同名部门,但无法通过上级部门名称确定具体部门"); - errImportList.add(dr); - return false; - } else { - SysDepart sysDepart = sysDeparts.get(0); - dr.setCurOrgId(sysDepart.getId()); - dr.setCurOrgSuperiorId(sysDepart.getParentId()); - return true; - } - } - }).collect(Collectors.toList()); - saveBatch(list, list.size()); - } catch (Exception e) { - log.error(e.getMessage(), e); - } - if (!errImportList.isEmpty()) { - log.info("导入失败数据条数:{}", errImportList.size()); - this.exportWithExcel(response, errImportList, "DeptRelationErrorData.xls"); - } - log.info("企标新老部门对应关系导入结束"); - } - - public void exportWithExcel(HttpServletResponse response, List dtoList, String fileName) { - try { - // 设置导出参数 - ExportParams exportParams = new ExportParams(null, fileName); // 可以为标题添加更多的配置 - Workbook workbook = ExcelExportUtil.exportExcel(exportParams, dtoList.get(0).getClass(), dtoList); - - // 设置响应头和内容类型 - response.setContentType("application/vnd.ms-excel"); - response.setHeader("Content-Disposition", "attachment; filename=" + fileName); - - // 写出到响应流 - workbook.write(response.getOutputStream()); - workbook.close(); - } catch (Exception e) { - log.error("导出excel异常", e); - throw new JeroBootException(MessageUtils.getMessage(ResultCommon.EXPORT_ERROR), e); - } - } - - - @Override - public String esAuthDeptDataFix() { - List needSaveAllData = new ArrayList<>(); - // 获取所有没有被删除的部门 - LambdaQueryWrapper departWrapper = new LambdaQueryWrapper<>(); - departWrapper.eq(SysDepart::getDelFlag, YesOrNoEnum.NO.getValue()); - List departListTree = departService.queryTreeList(); - // 找到所有已有授权部门权限 - LambdaQueryWrapper esAdWrapper = new LambdaQueryWrapper<>(); - esAdWrapper.isNull(EnterpriseStandardAuthDept::getAuthExpireDate); - List esAdList = esAdService.list(esAdWrapper); - Map> esAdMap = esAdList.stream() - .collect(Collectors.groupingBy(EnterpriseStandardAuthDept::getStandardId)); - List esIdList = esAdList.stream() - .map(EnterpriseStandardAuthDept::getStandardId).distinct().collect(Collectors.toList()); - // 找到所有授权部门不为空的企标 - List lawsEnterpriseStandards = esService.listByIds(esIdList); - // 遍历企标数据的现有授权部门 - for (LawsEnterpriseStandard es : lawsEnterpriseStandards) { - String curStandardId = es.getId(); - Set authDeptIdList = esAdMap.get(es.getId()).stream() - .map(EnterpriseStandardAuthDept::getAuthDept) - .collect(Collectors.toSet()); - // 创建一个部门Id Set 根据现有授权部门的部门Id找到所有子部门Id - Set childDeptIdSet = new HashSet<>(); - // 根据现有授权部门的部门Id找到所有子部门Id - for (String authDeptId : authDeptIdList) { - List childDeptIdList = this.queryChildDeptIdList(authDeptId, departListTree); - if (childDeptIdList.isEmpty()) { - continue; - } - childDeptIdSet.addAll(childDeptIdList); - } - // 根据authDeptIdList去重 - childDeptIdSet.removeAll(authDeptIdList); - // 构造需要保存的数据 - for (String childDeptId : childDeptIdSet) { - EnterpriseStandardAuthDept esAd = new EnterpriseStandardAuthDept(); - esAd.setId(IdWorker.getIdStr()); - esAd.setStandardId(curStandardId); - esAd.setAuthDept(childDeptId); - needSaveAllData.add(esAd); - } - if (childDeptIdSet.isEmpty()) { - log.info("企标编号为{}的企标没有需要修复的数据", es.getStandardNumber()); - } else { - log.info("企标编号为{}的企标需要修复的数据条数为:{}", es.getStandardNumber(), childDeptIdSet.size()); - } - } - if (needSaveAllData.isEmpty()) { - return "没有需要修复的数据"; - } - // 根据standardId和authDept去重 - List distinctData = needSaveAllData.stream() - .collect(Collectors.collectingAndThen(Collectors.toCollection(() -> - new TreeSet<>(Comparator.comparing(o -> o.getStandardId() + ";" + o.getAuthDept()))), ArrayList::new)); - log.info("需要保存的数据条数为:{}", distinctData.size()); - esAdService.batchInsertWithTransaction(needSaveAllData, 5000); - return "修复完成,共修复数据" + distinctData.size() + "条"; - } - - @Override - public String fbAuthDeptDataFix() { - List needSaveAllData = new ArrayList<>(); - // 获取所有没有被删除的部门 - LambdaQueryWrapper departWrapper = new LambdaQueryWrapper<>(); - departWrapper.eq(SysDepart::getDelFlag, YesOrNoEnum.NO.getValue()); - List departListTree = departService.queryTreeList(); - // 找到所有外标 - List fbList = fbService.list(); - List allFbIdList = fbList.stream().map(LawsOverseasStandard::getId).collect(Collectors.toList()); - // 找到所有已有授权部门权限 - LambdaQueryWrapper esAdWrapper = new LambdaQueryWrapper<>(); - esAdWrapper.in(!allFbIdList.isEmpty(), EnterpriseStandardAuthDept::getStandardId, allFbIdList); - esAdWrapper.isNull(EnterpriseStandardAuthDept::getAuthExpireDate); - List adList = esAdService.list(esAdWrapper); - Map> esAdMap = adList.stream() - .collect(Collectors.groupingBy(EnterpriseStandardAuthDept::getStandardId)); - List fbIdList = adList.stream() - .map(EnterpriseStandardAuthDept::getStandardId).distinct().collect(Collectors.toList()); - // 找到所有授权部门不为空的企标 - List lawsOverseasStandards = fbService.listByIds(fbIdList); - // 遍历企标数据的现有授权部门 - for (LawsOverseasStandard fb : lawsOverseasStandards) { - String curStandardId = fb.getId(); - Set authDeptIdList = esAdMap.get(fb.getId()).stream() - .map(EnterpriseStandardAuthDept::getAuthDept) - .collect(Collectors.toSet()); - // 创建一个部门Id Set 根据现有授权部门的部门Id找到所有子部门Id - Set childDeptIdSet = new HashSet<>(); - // 根据现有授权部门的部门Id找到所有子部门Id - for (String authDeptId : authDeptIdList) { - List childDeptIdList = this.queryChildDeptIdList(authDeptId, departListTree); - if (childDeptIdList.isEmpty()) { - continue; - } - childDeptIdSet.addAll(childDeptIdList); - } - // 根据authDeptIdList去重 - childDeptIdSet.removeAll(authDeptIdList); - // 构造需要保存的数据 - for (String childDeptId : childDeptIdSet) { - EnterpriseStandardAuthDept esAd = new EnterpriseStandardAuthDept(); - esAd.setId(IdWorker.getIdStr()); - esAd.setStandardId(curStandardId); - esAd.setAuthDept(childDeptId); - needSaveAllData.add(esAd); - } - if (childDeptIdSet.isEmpty()) { - log.info("外标编号为{}的企标没有需要修复的数据", fb.getStandardNumber()); - } else { - log.info("外标编号为{}的企标需要修复的数据条数为:{}", fb.getStandardNumber(), childDeptIdSet.size()); - } - } - if (needSaveAllData.isEmpty()) { - return "没有需要修复的数据"; - } - // 根据standardId和authDept去重 - List distinctData = needSaveAllData.stream() - .collect(Collectors.collectingAndThen(Collectors.toCollection(() -> - new TreeSet<>(Comparator.comparing(o -> o.getStandardId() + ";" + o.getAuthDept()))), ArrayList::new)); - log.info("需要保存的数据条数为:{}", distinctData.size()); - esAdService.batchInsertWithTransaction(needSaveAllData, 5000); - return "修复完成,共修复数据" + distinctData.size() + "条"; - } - - // 递归查询所有子部门Id - private List queryChildDeptIdList(String parentId, List departListTree) { - List childDeptIdList = new ArrayList<>(); - SysDepartTreeModel depart = getDepartTreeModel(parentId, departListTree); - if (depart != null) { - childDeptIdList.add(depart.getId()); - List childList = depart.getChildren(); - if (childList != null && !childList.isEmpty()) { - for (SysDepartTreeModel child : childList) { - // 这里改为传递完整的 departList - childDeptIdList.addAll(queryChildDeptIdList(child.getId(), departListTree)); - } - } - } - return childDeptIdList; - } - - private SysDepartTreeModel getDepartTreeModel(String parentId, List departListTree) { - return getSysDepartTreeModel(parentId, departListTree); - } - - private SysDepartTreeModel findDepartInTree(String parentId, List children) { - if (children == null || children.isEmpty()) { - return null; - } - - return getSysDepartTreeModel(parentId, children); - } - - @Nullable - private SysDepartTreeModel getSysDepartTreeModel(String parentId, List children) { - for (SysDepartTreeModel child : children) { - if (parentId.equals(child.getId())) { - return child; - } - // 继续在子节点的子节点中查找 - SysDepartTreeModel found = findDepartInTree(parentId, child.getChildren()); - if (found != null) { - return found; - } - } - return null; - } - - -} - - - - diff --git a/laws-modules/src/main/java/com/jero/modules/laws/oldSystem/service/impl/OldSystemServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/laws/oldSystem/service/impl/OldSystemServiceImpl.java deleted file mode 100644 index 86fd73ff..00000000 --- a/laws-modules/src/main/java/com/jero/modules/laws/oldSystem/service/impl/OldSystemServiceImpl.java +++ /dev/null @@ -1,2634 +0,0 @@ -package com.jero.modules.laws.oldSystem.service.impl; - -import cn.hutool.core.io.FileUtil; -import cn.hutool.core.util.StrUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; -import com.jero.common.api.CommonAPI; -import com.jero.common.api.vo.ResultCommon; -import com.jero.common.constant.enums.YesOrNoEnum; -import com.jero.common.exception.JeroBootException; -import com.jero.common.system.vo.SysDictItemCore; -import com.jero.common.util.MessageUtils; -import com.jero.common.util.MinioUtil; -import com.jero.modules.activiti.util.ExcelUtils; -import com.jero.modules.laws.common.constant.FieldCommon; -import com.jero.modules.laws.enterprise.entity.EnterpriseStandardAuthDept; -import com.jero.modules.laws.enterprise.entity.EnterpriseStandardAuthUser; -import com.jero.modules.laws.enterprise.entity.vo.LawsTreeNodeModel; -import com.jero.modules.laws.oldSystem.entity.OldSystemImportDTO; -import com.jero.modules.laws.enterprise.service.EnterpriseStandardAuthDeptService; -import com.jero.modules.laws.enterprise.service.EnterpriseStandardAuthUserService; -import com.jero.modules.laws.enterprise.util.EnterpriseStandardUtil; -import com.jero.modules.laws.home.service.ILawsHomeSearchService; -import com.jero.modules.laws.oldSystem.entity.*; -import com.jero.modules.laws.oldSystem.service.OldSystemDepartRelationService; -import com.jero.modules.laws.oldSystem.service.OldSystemService; -import com.jero.modules.laws.standard.entity.*; -import com.jero.modules.laws.standard.mapper.LawsEnterpriseStandardMapper; -import com.jero.modules.laws.standard.service.*; -import com.jero.modules.laws.standard.util.StandardSplitUtils; -import com.jero.modules.oss.entity.OSSFile; -import com.jero.modules.oss.service.IOSSFileService; -import com.jero.modules.system.entity.SysDepart; -import com.jero.modules.system.entity.SysUser; -import com.jero.modules.system.service.ISysDepartService; -import com.jero.modules.system.service.ISysUserService; -import com.jero.modules.tag.enums.TableNameEnum; -import io.minio.errors.MinioException; -import lombok.Cleanup; -import lombok.SneakyThrows; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.apache.poi.ss.usermodel.Workbook; -import org.jeecgframework.poi.excel.ExcelExportUtil; -import org.jeecgframework.poi.excel.ExcelImportUtil; -import org.jeecgframework.poi.excel.entity.ExportParams; -import org.jeecgframework.poi.excel.entity.ImportParams; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.web.multipart.MultipartFile; - -import javax.annotation.Resource; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.io.InputStream; -import java.lang.reflect.Field; -import java.text.SimpleDateFormat; -import java.util.*; -import java.util.regex.Matcher; -import java.util.regex.Pattern; -import java.util.stream.Collectors; - -/** - * @author: Mzaxd - * @Date: 2023/12/5 9:48 - */ -@Slf4j -@Service -@Transactional(rollbackFor = JeroBootException.class) -public class OldSystemServiceImpl implements OldSystemService { - - @Resource - private ILawsTreeNodeService lawsTreeNodeService; - - @Resource - private LawsEnterpriseStandardMapper esMapper; - - @Resource - private ILawsDomesticStandardService domesticStandardService; - - @Resource - private ExcelUtils excelUtils; - - @Resource - private CommonAPI commonAPI; - - @Resource - private ILawsReplacedStandardService lawsReplacedStandardService; - - @Resource - private OldSystemDepartRelationService oldDeptService; - - @Resource - private ISysDepartService departService; - - @Resource - private ISysUserService sysUserService; - - @Resource - private IOSSFileService ossFileService; - - @Resource - private EnterpriseStandardAuthUserService esAuthUserService; - - @Resource - private EnterpriseStandardAuthDeptService esAuthDeptService; - - @Resource - private ILawsHomeSearchService lawsHomeSearchService; - - @Resource - private ISysDepartService sysDepartService; - - @Resource - private OldSystemDepartRelationService oldSystemDepartRelationService; - - @Resource - private ILawsOverseasStandardService overseasStandardService; - - @Resource - private ILawsEnterpriseStandardService esService; - - @Resource - private ILawsDomesticStandardService gbService; - - @Resource - private ILawsTreeNodeService treeNodeService; - - @Resource - private ILawsNodeRelationService lawsNodeRelationService; - - @Override - public void importExcelOldSystem(MultipartFile file, String type, HttpServletResponse response) { - List errImportList = new ArrayList<>(); - - // 验证文件是否为压缩格式file.getContentType()).contains("xls") - if (!Objects.requireNonNull(file.getOriginalFilename()).contains("xls")) { - throw new JeroBootException("文件格式不正确,请上传Excel。"); - } - ImportParams params = new ImportParams(); - params.setTitleRows(0); - params.setNeedSave(true); - // 获取数据 - List allDatalist = null; - - try { - // 获取当前时间戳(毫秒) - long startTime = System.currentTimeMillis(); - @Cleanup - InputStream inputStream = file.getInputStream(); - allDatalist = ExcelImportUtil.importExcel(inputStream, OldSystemImportDTO.class, params); - // 删除空行 - allDatalist.removeIf(OldSystemImportDTO::isEmptyRow); - log.info("获取数据成功,数据条数:{}", allDatalist.size()); - // 获取当前时间戳(毫秒) - long endTime = System.currentTimeMillis(); - // 计算执行时间(毫秒) - long executionTime = endTime - startTime; - log.info("数据转换执行时间:" + executionTime + " 毫秒"); - } catch (Exception e) { - log.error("导入失败;{}", e.getMessage()); - } - if (allDatalist == null) { - throw new JeroBootException("导入失败,数据为空"); - } - // 导入企标 - switch (type) { - case "0": - break; - case "1": - // 导入企标 - this.oldSysESImport(allDatalist, errImportList); - break; - case "2": - // 导入国标 - this.oldSysGBImport(allDatalist, errImportList); - break; - case "3": - // 导入外标 - this.oldSysFBImport(allDatalist, errImportList); - - } - // 统一清理代替被代替重复数据 - lawsReplacedStandardService.clearRepeatData(); - if (!errImportList.isEmpty()) { - this.exportWithExcel(response, errImportList, "OldSystemStandardErrorData.xls"); - } - } - - - @Override - public void importOldSystemDataFix(MultipartFile file, String type, HttpServletResponse response) { - List errImportList = new ArrayList<>(); - - // 验证文件是否为压缩格式file.getContentType()).contains("xls") - if (!Objects.requireNonNull(file.getOriginalFilename()).contains("xls")) { - throw new JeroBootException("文件格式不正确,请上传Excel。"); - } - ImportParams params = new ImportParams(); - params.setTitleRows(0); - params.setNeedSave(true); - // 获取数据 - List allDatalist = null; - - try { - // 获取当前时间戳(毫秒) - long startTime = System.currentTimeMillis(); - @Cleanup - InputStream inputStream = file.getInputStream(); - allDatalist = ExcelImportUtil.importExcel(inputStream, OldSystemImportDTO.class, params); - // 删除空行 - allDatalist.removeIf(OldSystemImportDTO::isEmptyRow); - log.info("获取数据成功,数据条数:{}", allDatalist.size()); - // 获取当前时间戳(毫秒) - long endTime = System.currentTimeMillis(); - // 计算执行时间(毫秒) - long executionTime = endTime - startTime; - log.info("数据转换执行时间:" + executionTime + " 毫秒"); - } catch (Exception e) { - log.error("导入失败;{}", e.getMessage()); - } - if (allDatalist == null) { - throw new JeroBootException("导入失败,数据为空"); - } - // 导入企标 - switch (type) { - case "0": - break; - case "1": - // 导入企标 - this.oldSysESDataFix(allDatalist, errImportList); - break; - case "2": - // 导入国标 - this.oldSysGBDataFix(allDatalist, errImportList); - break; - case "3": - // 导入外标 - this.oldSysFBDataFix(allDatalist, errImportList); - - } - // 统一清理代替被代替重复数据 - lawsReplacedStandardService.clearRepeatData(); - if (!errImportList.isEmpty()) { - this.exportWithExcel(response, errImportList, "OldSystemStandardErrorData.xls"); - } - } - - @Override - public void importOldSystemDataFileFix(MultipartFile file, String type, HttpServletResponse response) { - List errImportList = new ArrayList<>(); - - // 验证文件是否为压缩格式file.getContentType()).contains("xls") - if (!Objects.requireNonNull(file.getOriginalFilename()).contains("xls")) { - throw new JeroBootException("文件格式不正确,请上传Excel。"); - } - ImportParams params = new ImportParams(); - params.setTitleRows(0); - params.setNeedSave(true); - // 获取数据 - List allDatalist = null; - - try { - // 获取当前时间戳(毫秒) - long startTime = System.currentTimeMillis(); - @Cleanup - InputStream inputStream = file.getInputStream(); - allDatalist = ExcelImportUtil.importExcel(inputStream, OldSystemImportDTO.class, params); - // 删除空行 - allDatalist.removeIf(OldSystemImportDTO::isEmptyRow); - log.info("获取数据成功,数据条数:{}", allDatalist.size()); - // 获取当前时间戳(毫秒) - long endTime = System.currentTimeMillis(); - // 计算执行时间(毫秒) - long executionTime = endTime - startTime; - log.info("数据转换执行时间:" + executionTime + " 毫秒"); - } catch (Exception e) { - log.error("导入失败;{}", e.getMessage()); - } - if (allDatalist == null) { - throw new JeroBootException("导入失败,数据为空"); - } - // 导入企标 - switch (type) { - case "0": - break; - case "1": - // 导入企标 - this.oldSysESDataFileFix(allDatalist, errImportList); - break; - case "2": - // 导入国标 - this.oldSysGBDataFileFix(allDatalist, errImportList); - break; - case "3": - // 导入外标 - this.oldSysFBDataFileFix(allDatalist, errImportList); - - } - // 统一清理代替被代替重复数据 - lawsReplacedStandardService.clearRepeatData(); - if (!errImportList.isEmpty()) { - this.exportWithExcel(response, errImportList, "OldSystemStandardErrorData.xls"); - } - } - - @Override - public void importOldSystemDataFileFixFinal(MultipartFile file, String type, HttpServletResponse response) { - List errImportList = new ArrayList<>(); - - // 验证文件是否为压缩格式file.getContentType()).contains("xls") - if (!Objects.requireNonNull(file.getOriginalFilename()).contains("xls")) { - throw new JeroBootException("文件格式不正确,请上传Excel。"); - } - ImportParams params = new ImportParams(); - params.setTitleRows(0); - params.setNeedSave(true); - // 获取数据 - List allDatalist = null; - - try { - // 获取当前时间戳(毫秒) - long startTime = System.currentTimeMillis(); - @Cleanup - InputStream inputStream = file.getInputStream(); - allDatalist = ExcelImportUtil.importExcel(inputStream, OldSystemImportDTO.class, params); - // 删除空行 - allDatalist.removeIf(OldSystemImportDTO::isEmptyRow); - log.info("获取数据成功,数据条数:{}", allDatalist.size()); - // 获取当前时间戳(毫秒) - long endTime = System.currentTimeMillis(); - // 计算执行时间(毫秒) - long executionTime = endTime - startTime; - log.info("数据转换执行时间:" + executionTime + " 毫秒"); - } catch (Exception e) { - log.error("导入失败;{}", e.getMessage()); - } - if (allDatalist == null) { - throw new JeroBootException("导入失败,数据为空"); - } - // 导入企标 - switch (type) { - case "0": - break; - case "1": - // 导入企标 - this.oldSysESDataFileFixFinal(allDatalist, errImportList); - break; - case "2": - // 导入国标 - this.oldSysGBDataFileFix(allDatalist, errImportList); - break; - case "3": - // 导入外标 - this.oldSysFBDataFileFixFinal(allDatalist, errImportList); - - } - // 统一清理代替被代替重复数据 - lawsReplacedStandardService.clearRepeatData(); - if (!errImportList.isEmpty()) { - this.exportWithExcel(response, errImportList, "OldSystemStandardErrorData.xls"); - } - } - - @Override - public void importOldSystemFileFixDocPath(MultipartFile file, String type, HttpServletResponse response) { - List errImportList = new ArrayList<>(); - - // 验证文件是否为压缩格式file.getContentType()).contains("xls") - if (!Objects.requireNonNull(file.getOriginalFilename()).contains("xls")) { - throw new JeroBootException("文件格式不正确,请上传Excel。"); - } - ImportParams params = new ImportParams(); - params.setTitleRows(0); - params.setNeedSave(true); - // 获取数据 - List allDatalist = null; - - try { - // 获取当前时间戳(毫秒) - long startTime = System.currentTimeMillis(); - @Cleanup - InputStream inputStream = file.getInputStream(); - allDatalist = ExcelImportUtil.importExcel(inputStream, OldSystemImportDTO.class, params); - // 删除空行 - allDatalist.removeIf(OldSystemImportDTO::isEmptyRow); - log.info("获取数据成功,数据条数:{}", allDatalist.size()); - // 获取当前时间戳(毫秒) - long endTime = System.currentTimeMillis(); - // 计算执行时间(毫秒) - long executionTime = endTime - startTime; - log.info("数据转换执行时间:" + executionTime + " 毫秒"); - } catch (Exception e) { - log.error("导入失败;{}", e.getMessage()); - } - if (allDatalist == null) { - throw new JeroBootException("导入失败,数据为空"); - } - // 导入企标 - switch (type) { - case "0": - break; - case "1": - // 导入企标 - this.oldSysESDataFileDocPath(allDatalist, errImportList); - break; - case "2": - // 导入国标 - this.oldSysGBDataFileDocPath(allDatalist, errImportList); - break; - case "3": - // 导入外标 - this.oldSysFBDataFileDocPath(allDatalist, errImportList); - - } - // 统一清理代替被代替重复数据 - lawsReplacedStandardService.clearRepeatData(); - if (!errImportList.isEmpty()) { - this.exportWithExcel(response, errImportList, "OldSystemStandardErrorData.xls"); - } - } - - @Override - public void dataFileFix(HttpServletResponse response) { - List errImportList = new ArrayList<>(); - - List ossFileList = ossFileService.list(); - for (OSSFile ossFile : ossFileList) { - String url = ossFile.getUrl(); - if (StrUtil.isBlank(url)) { - OldSystemImportDTO dto = new OldSystemImportDTO(); - dto.setBzh(ossFile.getStandardNo()); - log.error("文件路径为空"); - dto.setErrorInfo("文件路径为空"); - dto.setOssFileId(ossFile.getId()); - errImportList.add(dto); - continue; - } - if (!MinioUtil.doesObjectExist(url)) { - OldSystemImportDTO dto = new OldSystemImportDTO(); - dto.setBzh(ossFile.getStandardNo()); - log.error("文件不存在,路径是:" + url); - dto.setErrorInfo("文件不存在,路径是:" + url); - dto.setOssFileId(ossFile.getId()); - errImportList.add(dto); - } - } - if (!errImportList.isEmpty()) { - this.exportWithExcel(response, errImportList, "OldSystemStandardErrorData.xls"); - } - } - - @Override - public String fbDataFix(HttpServletResponse response) { - LambdaQueryWrapper treeNodeLambdaQueryWrapper = new LambdaQueryWrapper<>(); - treeNodeLambdaQueryWrapper.eq(LawsTreeNode::getNodeName, "引进标准"); - treeNodeLambdaQueryWrapper.eq(LawsTreeNode::getModuleCode, TableNameEnum.FOREIGN_REGULATIONS.getValue()); - LawsTreeNode node = lawsTreeNodeService.getOne(treeNodeLambdaQueryWrapper); - // 获取引进标准的id - LambdaQueryWrapper nodeRelationLambdaQueryWrapper = new LambdaQueryWrapper<>(); - nodeRelationLambdaQueryWrapper.eq(LawsNodeRelation::getNodeId, node.getId()); - List fbList = lawsNodeRelationService.list(nodeRelationLambdaQueryWrapper); - List fbIdList = fbList.stream().map(LawsNodeRelation::getUniqueRelationFlag).collect(Collectors.toList()); - // 给外标添加汽车研究总院的权限 - LambdaQueryWrapper departLambdaQueryWrapper = new LambdaQueryWrapper<>(); - departLambdaQueryWrapper.eq(SysDepart::getDepartName, "汽车研究总院"); - SysDepart depart = departService.getOne(departLambdaQueryWrapper); - List esAdList = new ArrayList<>(); - for (String fbId : fbIdList) { - EnterpriseStandardAuthDept ad = new EnterpriseStandardAuthDept(); - ad.setAuthDept(depart.getId()); - ad.setStandardId(fbId); - esAdList.add(ad); - log.info("新增海外标准id为{}的权限", fbId); - } - if (!esAdList.isEmpty()) { - log.info("共新增{}条权限数据", esAdList.size()); - esAuthDeptService.saveBatch(esAdList); - } - return "共新增" + esAdList.size() + "条权限数据"; - } - - private void oldSysFBDataFileDocPath(List allDatalist, List errImportList) { - List fbDatalist = allDatalist.stream().filter(o -> o.getBzfl().contains("ISO") || - o.getBzfl().contains("引进") || - o.getBzfl().contains("国外")).collect(Collectors.toList()); - log.info("外标相关数据条数:{}", fbDatalist.size()); - - // 过滤字段 根据标准号字段去重 - fbDatalist = fbDatalist.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() - -> new TreeSet<>(Comparator.comparing(OldSystemImportDTO::getBzh))), ArrayList::new)); - log.info("根据标准号去重后的外标相关数据条数:{}", fbDatalist.size()); - long startTime = System.currentTimeMillis(); - // 转换数据 - List fbList = overseasStandardService.list(); - Map fbMap = fbList.stream() - .collect(Collectors.toMap(LawsOverseasStandard::getStandardNumber, o -> o)); - - for (OldSystemImportDTO dto : fbDatalist) { - // 先将标准号中的中文横杠替换为英文横杠 - String newBzh = dto.getBzh().replace("—", "-"); - dto.setBzh(newBzh); - } - List ossFileList = new ArrayList<>(); - - // 导入企标 - for (OldSystemImportDTO dto : fbDatalist) { - LawsOverseasStandard fb = fbMap.get(dto.getBzh()); - String doclj = dto.getDoclj(); - if (StrUtil.isBlank(doclj)) { - dto.setErrorInfo("没有需要导入的文件"); - errImportList.add(dto); - continue; - } - if (fb == null) { - dto.setErrorInfo("未找到对应的外标数据"); - errImportList.add(dto); - continue; - } - String filePath = this.getFilePath(doclj); - - log.info("文件存在"); - // 存入关系表 - OSSFile ossFile = new OSSFile(); - ossFile.setUrl(filePath); - ossFile.setStandardNo(fb.getStandardNumber()); - ossFile.setStandardId(fb.getId()); - ossFile.setFileName(FileUtil.getName(filePath)); - ossFile.setStandardFileType("publish_of_original"); - ossFileList.add(ossFile); - } - ossFileService.saveBatch(ossFileList); - // 获取当前时间戳(毫秒) - long endTime = System.currentTimeMillis(); - // 计算执行时间(毫秒) - long executionTime = endTime - startTime; - log.info("代码执行时间:" + executionTime + " 毫秒"); - } - - private void oldSysGBDataFileDocPath(List allDatalist, List errImportList) { - List gbDatalist = allDatalist.stream().filter(o -> - o.getBzfl().contains("国家标准/") || // “/”是为了避免匹配到“美国国家标准”这个外标 - o.getBzfl().contains("团体标准") || - o.getBzfl().contains("地方标准") || - o.getBzfl().contains("行业标准")).collect(Collectors.toList()); - log.info("国标相关数据条数:{}", gbDatalist.size()); - - // 过滤字段 根据标准号字段去重 - gbDatalist = gbDatalist.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() - -> new TreeSet<>(Comparator.comparing(OldSystemImportDTO::getBzh))), ArrayList::new)); - log.info("根据标准号去重后的国标相关数据条数:{}", gbDatalist.size()); - long startTime = System.currentTimeMillis(); - // 转换数据 - List gbList = gbService.list(); - Map gbMap = gbList.stream() - .collect(Collectors.toMap(LawsDomesticStandard::getStandardNumber, o -> o)); - - for (OldSystemImportDTO dto : gbDatalist) { - // 先将标准号中的中文横杠替换为英文横杠 - String newBzh = dto.getBzh().replace("—", "-"); - dto.setBzh(newBzh); - } - - List ossFileList = new ArrayList<>(); - - // 导入企标 - for (OldSystemImportDTO dto : gbDatalist) { - LawsDomesticStandard gb = gbMap.get(dto.getBzh()); - String doclj = dto.getDoclj(); - if (StrUtil.isBlank(doclj)) { - dto.setErrorInfo("没有需要导入的文件"); - errImportList.add(dto); - continue; - } - if (gb == null) { - dto.setErrorInfo("未找到对应的国标数据"); - errImportList.add(dto); - continue; - } - String filePath = this.getFilePath(doclj); - log.info("文件存在"); - // 存入关系表 - OSSFile ossFile = new OSSFile(); - ossFile.setUrl(filePath); - ossFile.setStandardNo(gb.getStandardNumber()); - ossFile.setStandardId(gb.getId()); - ossFile.setFileName(FileUtil.getName(filePath)); - ossFile.setStandardFileType("publish_of_original"); - ossFileList.add(ossFile); - } - ossFileService.saveBatch(ossFileList); - // 获取当前时间戳(毫秒) - long endTime = System.currentTimeMillis(); - // 计算执行时间(毫秒) - long executionTime = endTime - startTime; - log.info("代码执行时间:" + executionTime + " 毫秒"); - } - - private void oldSysESDataFileDocPath(List allDatalist, List errImportList) { - // 过滤字段 根据标准号字段去重 - allDatalist = allDatalist.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() - -> new TreeSet<>(Comparator.comparing(OldSystemImportDTO::getBzh))), ArrayList::new)); - log.info("根据标准号去重后的企标相关数据条数:{}", allDatalist.size()); - - long startTime = System.currentTimeMillis(); - // 转换数据 - List esList = esService.list(); - Map esMap = esList.stream() - .collect(Collectors.toMap(LawsEnterpriseStandard::getStandardNumber, o -> o)); - - for (OldSystemImportDTO dto : allDatalist) { - // 先将标准号中的中文横杠替换为英文横杠 - String newBzh = dto.getBzh().replace("—", "-"); - dto.setBzh(newBzh); - } - - List ossFileList = new ArrayList<>(); - - // 导入企标 - for (OldSystemImportDTO dto : allDatalist) { - LawsEnterpriseStandard es = esMap.get(dto.getBzh()); - String doclj = dto.getDoclj(); - if (StrUtil.isBlank(doclj)) { - dto.setErrorInfo("没有需要导入的文件"); - errImportList.add(dto); - continue; - } - if (es == null) { - dto.setErrorInfo("未找到对应的企标数据"); - errImportList.add(dto); - continue; - } - String filePath = this.getFilePath(doclj); - // 存入关系表 - OSSFile ossFile = new OSSFile(); - ossFile.setUrl(filePath); - ossFile.setStandardNo(es.getStandardNumber()); - ossFile.setStandardId(es.getId()); - ossFile.setFileName(FileUtil.getName(filePath)); - ossFile.setStandardFileType("publish_of_original"); - ossFileList.add(ossFile); - } - ossFileService.saveBatch(ossFileList); - // 获取当前时间戳(毫秒) - long endTime = System.currentTimeMillis(); - // 计算执行时间(毫秒) - long executionTime = endTime - startTime; - log.info("代码执行时间:" + executionTime + " 毫秒"); - } - - private void oldSysESDataFileFixFinal(List allDatalist, List errImportList) { - // 过滤字段 根据标准号字段去重 - allDatalist = allDatalist.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() - -> new TreeSet<>(Comparator.comparing(OldSystemImportDTO::getBzh))), ArrayList::new)); - log.info("根据标准号去重后的企标相关数据条数:{}", allDatalist.size()); - long startTime = System.currentTimeMillis(); - // 转换数据 - List esList = esService.list(); - Map esMap = esList.stream() - .collect(Collectors.toMap(LawsEnterpriseStandard::getStandardNumber, o -> o)); - - List ossFileList = new ArrayList<>(); - for (OldSystemImportDTO dto : allDatalist) { - LawsEnterpriseStandard es = esMap.get(dto.getBzh().replace("—", "-")); - if (es == null) { - dto.setErrorInfo("企标数据不存在"); - errImportList.add(dto); - continue; - } - String filePath = dto.getCybzh() + "_" + dto.getBzmc() + ".pdf"; - filePath = filePath.replaceAll("/", "_"); - String path = "Standard/20240307/" + filePath; - if (MinioUtil.doesObjectExist(path)) { - log.info("文件存在"); - // 存入关系表 - OSSFile ossFile = new OSSFile(); - ossFile.setUrl(path); - ossFile.setStandardNo(es.getStandardNumber()); - ossFile.setStandardId(es.getId()); - ossFile.setFileName(FileUtil.getName(path)); - ossFile.setStandardFileType("publish_of_original"); - ossFileList.add(ossFile); - errImportList.add(dto); - } else { - log.info("文件不存在"); - dto.setErrorInfo("文件不存在"); - errImportList.add(dto); - } - } - if (!ossFileList.isEmpty()) { - ossFileService.saveBatch(ossFileList); - } - // 获取当前时间戳(毫秒) - long endTime = System.currentTimeMillis(); - // 计算执行时间(毫秒) - long executionTime = endTime - startTime; - log.info("代码执行时间:" + executionTime + " 毫秒"); - } - - private void oldSysFBDataFileFixFinal(List allDatalist, List errImportList) { - // 过滤字段 根据标准号字段去重 - allDatalist = allDatalist.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() - -> new TreeSet<>(Comparator.comparing(OldSystemImportDTO::getBzh))), ArrayList::new)); - log.info("根据标准号去重后的外标相关数据条数:{}", allDatalist.size()); - long startTime = System.currentTimeMillis(); - // 转换数据 - List fbList = overseasStandardService.list(); - Map fbMap = fbList.stream() - .collect(Collectors.toMap(LawsOverseasStandard::getStandardNumber, o -> o)); - - List ossFileList = new ArrayList<>(); - for (OldSystemImportDTO dto : allDatalist) { - LawsOverseasStandard fb = fbMap.get(dto.getBzh().replace("—", "-")); - if (fb == null) { - dto.setErrorInfo("外标数据不存在"); - errImportList.add(dto); - continue; - } - String filePath = dto.getCybzh() + "_" + dto.getBzmc() + ".pdf"; - filePath = filePath.replaceAll("/", "_"); - String path = "Standard/20240307/" + filePath; - if (MinioUtil.doesObjectExist(path)) { - log.info("文件存在"); - // 存入关系表 - OSSFile ossFile = new OSSFile(); - ossFile.setUrl(path); - ossFile.setStandardNo(fb.getStandardNumber()); - ossFile.setStandardId(fb.getId()); - ossFile.setFileName(FileUtil.getName(path)); - ossFile.setStandardFileType("publish_of_original"); - ossFileList.add(ossFile); - errImportList.add(dto); - } else { - log.info("文件不存在"); - dto.setErrorInfo("文件不存在"); - errImportList.add(dto); - } - } - if (!ossFileList.isEmpty()) { - ossFileService.saveBatch(ossFileList); - } - // 获取当前时间戳(毫秒) - long endTime = System.currentTimeMillis(); - // 计算执行时间(毫秒) - long executionTime = endTime - startTime; - log.info("代码执行时间:" + executionTime + " 毫秒"); - } - - private void oldSysFBDataFix(List allDatalist, List errImportList) { - List fbDatalist = allDatalist.stream().filter(o -> o.getBzfl().contains("ISO") || - o.getBzfl().contains("引进") || - o.getBzfl().contains("国外")).collect(Collectors.toList()); - log.info("外标相关数据条数:{}", fbDatalist.size()); - - // 过滤字段 根据标准号字段去重 - fbDatalist = fbDatalist.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() - -> new TreeSet<>(Comparator.comparing(OldSystemImportDTO::getBzh))), ArrayList::new)); - log.info("根据标准号去重后的外标相关数据条数:{}", fbDatalist.size()); - long startTime = System.currentTimeMillis(); - // 转换数据 - List fbList = new ArrayList<>(); - // 导入企标 - for (OldSystemImportDTO dto : fbDatalist) { - LawsOverseasStandard fb = new LawsOverseasStandard(); - String tdbzh = dto.getTdbzh(); - String btdbzh = dto.getBtdbzh(); - // 先将标准号中的中文横杠替换为英文横杠 - String newBzh = dto.getBzh().replace("—", "-"); - fb.setStandardNumber(newBzh); - fb.setStandardName(dto.getBzmc()); - String standardState = dto.getBzzt(); - switch (standardState) { - case "现行有效": - fb.setStandardState("6"); - break; - case "作废": - fb.setStandardState("7"); - break; - } - fb.setSubstituteStandardNumber(tdbzh); - fb.setReplacedByStandardNumber(btdbzh); - fbList.add(fb); - } - List existingEntities = overseasStandardService.list(); - Map dataMap = existingEntities.stream() - .collect(Collectors.toMap(LawsOverseasStandard::getStandardNumber, d -> d)); - // 获取所有相关标准号 - List replaceStandardNoList = fbList.stream().map(LawsOverseasStandard::getStandardNumber).collect(Collectors.toList()); - replaceStandardNoList.addAll(fbList.stream().map(LawsOverseasStandard::getSubstituteStandardNumber).collect(Collectors.toList())); - replaceStandardNoList.addAll(fbList.stream().map(LawsOverseasStandard::getReplacedByStandardNumber).collect(Collectors.toList())); - // 清除所有外标 - LambdaQueryWrapper replacedStandardWrapper = new LambdaQueryWrapper<>(); - replacedStandardWrapper - .in(LawsReplacedStandard::getReplaced, replaceStandardNoList).or() - .in(LawsReplacedStandard::getReplacedBy, replaceStandardNoList); - lawsReplacedStandardService.remove(replacedStandardWrapper); - for (LawsOverseasStandard fb : fbList) { - LawsOverseasStandard dbData = dataMap.get(fb.getStandardNumber()); - dbData.setStandardState(fb.getStandardState()); - String tdbzh = fb.getSubstituteStandardNumber(); - String btdbzh = fb.getReplacedByStandardNumber(); - // 代替标准号 - // 先删除已经存储的关联 - String standardNumber = dbData.getStandardNumber(); - if (StringUtils.isNotBlank(tdbzh)) { - lawsReplacedStandardService.addRelationOldSystemSync(tdbzh, standardNumber, 1); - } - // 被代替标准号 - if (StringUtils.isNotBlank(btdbzh)) { - List replaceCodeList = Arrays.asList(btdbzh.split(",")); - replaceCodeList.forEach(replaceCode -> { - lawsReplacedStandardService.addRelationOldSystemSync(standardNumber, replaceCode, 1); - }); - } - LambdaUpdateWrapper fbWrapper = new LambdaUpdateWrapper<>(); - fbWrapper.eq(LawsOverseasStandard::getId, dbData.getId()); - fbWrapper.set(LawsOverseasStandard::getStandardState, fb.getStandardState()); - overseasStandardService.update(fbWrapper); - } - - // 获取当前时间戳(毫秒) - long endTime = System.currentTimeMillis(); - // 计算执行时间(毫秒) - long executionTime = endTime - startTime; - log.info("代码执行时间:" + executionTime + " 毫秒"); - } - - private void oldSysGBDataFix(List allDatalist, List errImportList) { - List gbDatalist = allDatalist.stream().filter(o -> - o.getBzfl().contains("国家标准/") || // “/”是为了避免匹配到“美国国家标准”这个外标 - o.getBzfl().contains("团体标准") || - o.getBzfl().contains("地方标准") || - o.getBzfl().contains("行业标准")).collect(Collectors.toList()); - log.info("国标相关数据条数:{}", gbDatalist.size()); - - // 首先,使用Map来记录每个标准号出现的次数 - Map frequencyMap = gbDatalist.stream() - .collect(Collectors.groupingBy(OldSystemImportDTO::getBzh, Collectors.counting())); - - // 然后,过滤掉那些出现次数超过1次的数据 - gbDatalist = gbDatalist.stream() - .filter(dto -> frequencyMap.get(dto.getBzh()) == 1) - .collect(Collectors.toList()); - - log.info("删除掉所有重复的数据后相关数据条数:{}", gbDatalist.size()); - - long startTime = System.currentTimeMillis(); - // 转换数据 - List gbList = new ArrayList<>(); - // 导入企标 - for (OldSystemImportDTO dto : gbDatalist) { - LawsDomesticStandard db = new LawsDomesticStandard(); - String tdbzh = dto.getTdbzh(); - String btdbzh = dto.getBtdbzh(); - // 先将标准号中的中文横杠替换为英文横杠 - String newBzh = dto.getBzh().replace("—", "-"); - db.setStandardNumber(newBzh); - db.setStandardName(dto.getBzmc()); - String standardState = dto.getBzzt(); - switch (standardState) { - case "现行有效": - db.setStandardState("6"); - break; - case "作废": - db.setStandardState("7"); - break; - case "预发布": - db.setStandardState("4"); - break; - } - db.setSubstituteStandardNumber(tdbzh); - db.setReplacedByStandardNumber(btdbzh); - gbList.add(db); - } - List existingEntities = domesticStandardService.list(); - Map dataMap = existingEntities.stream() - .collect(Collectors.toMap(LawsDomesticStandard::getStandardNumber, d -> d)); - // 获取所有相关标准号 - List replaceStandardNoList = gbList.stream().map(LawsDomesticStandard::getStandardNumber).collect(Collectors.toList()); - replaceStandardNoList.addAll(gbList.stream().map(LawsDomesticStandard::getSubstituteStandardNumber).collect(Collectors.toList())); - replaceStandardNoList.addAll(gbList.stream().map(LawsDomesticStandard::getReplacedByStandardNumber).collect(Collectors.toList())); - // 清除所有国标 - LambdaQueryWrapper replacedStandardWrapper = new LambdaQueryWrapper<>(); - replacedStandardWrapper - .in(LawsReplacedStandard::getReplaced, replaceStandardNoList).or() - .in(LawsReplacedStandard::getReplacedBy, replaceStandardNoList); - lawsReplacedStandardService.remove(replacedStandardWrapper); - for (LawsDomesticStandard gb : gbList) { - LawsDomesticStandard dbData = dataMap.get(gb.getStandardNumber()); - dbData.setStandardState(gb.getStandardState()); - String tdbzh = gb.getSubstituteStandardNumber(); - String btdbzh = gb.getReplacedByStandardNumber(); - // 代替标准号 - // 先删除已经存储的关联 - String standardNumber = dbData.getStandardNumber(); - lawsReplacedStandardService.removeRelation(standardNumber, 1); - if (StringUtils.isNotBlank(tdbzh)) { - lawsReplacedStandardService.addRelationOldSystemSync(tdbzh, standardNumber, 1); - } - // 被代替标准号 - if (StringUtils.isNotBlank(btdbzh)) { - List replaceCodeList = Arrays.asList(btdbzh.split(",")); - replaceCodeList.forEach(replaceCode -> { - lawsReplacedStandardService.removeRelation(replaceCode, 1); - lawsReplacedStandardService.addRelationOldSystemSync(standardNumber, replaceCode, 1); - }); - } - LambdaUpdateWrapper gbWrapper = new LambdaUpdateWrapper<>(); - gbWrapper.eq(LawsDomesticStandard::getId, dbData.getId()); - gbWrapper.set(LawsDomesticStandard::getStandardState, gb.getStandardState()); - domesticStandardService.update(gbWrapper); - } - - // 获取当前时间戳(毫秒) - long endTime = System.currentTimeMillis(); - // 计算执行时间(毫秒) - long executionTime = endTime - startTime; - log.info("代码执行时间:" + executionTime + " 毫秒"); - } - - private void oldSysESDataFix(List esDatalist, List errImportList) { - esDatalist = esDatalist.stream().filter(o -> o.getBzfl().contains("企业标准")) - .collect(Collectors.toList()); - log.info("企标相关数据条数:{}", esDatalist.size()); - // 首先,使用Map来记录每个标准号出现的次数 - Map frequencyMap = esDatalist.stream() - .collect(Collectors.groupingBy(OldSystemImportDTO::getBzh, Collectors.counting())); - // 然后,过滤掉那些出现次数超过1次的数据 - esDatalist = esDatalist.stream() - .filter(dto -> frequencyMap.get(dto.getBzh()) == 1) - .collect(Collectors.toList()); - log.info("删除掉所有重复的数据后相关数据条数:{}", esDatalist.size()); - long startTime = System.currentTimeMillis(); - // 转换数据 - List esList = new ArrayList<>(); - // 导入企标 - for (OldSystemImportDTO dto : esDatalist) { - LawsEnterpriseStandard es = new LawsEnterpriseStandard(); - String tdbzh = dto.getTdbzh(); - String btdbzh = dto.getBtdbzh(); - es.setOldSystemId(dto.getId()); - es.setStandardNumber(dto.getBzh()); - es.setStandardName(dto.getBzmc()); - String standardState = dto.getBzzt(); - switch (standardState) { - case "现行有效": - es.setStandardState("8"); - break; - case "作废": - es.setStandardState("9"); - break; - case "封存": - es.setStandardState("A"); - break; - case "预发布": - es.setStandardState("5"); - break; - } - es.setSubstituteStandardNumber(tdbzh); - es.setReplacedByStandardNumber(btdbzh); - esList.add(es); - } - List existingEntities = esService.list(); - Map dataMap = existingEntities.stream() - .collect(Collectors.toMap(LawsEnterpriseStandard::getOldSystemId, d -> d)); - // 获取所有相关标准号 - List replaceStandardNoList = esList.stream().map(LawsEnterpriseStandard::getStandardNumber).collect(Collectors.toList()); - replaceStandardNoList.addAll(esList.stream().map(LawsEnterpriseStandard::getSubstituteStandardNumber).collect(Collectors.toList())); - replaceStandardNoList.addAll(esList.stream().map(LawsEnterpriseStandard::getReplacedByStandardNumber).collect(Collectors.toList())); - // 清除所有企标标 - LambdaQueryWrapper replacedStandardWrapper = new LambdaQueryWrapper<>(); - replacedStandardWrapper - .in(LawsReplacedStandard::getReplaced, replaceStandardNoList).or() - .in(LawsReplacedStandard::getReplacedBy, replaceStandardNoList); - lawsReplacedStandardService.remove(replacedStandardWrapper); - for (LawsEnterpriseStandard es : esList) { - LawsEnterpriseStandard dbData = dataMap.get(es.getOldSystemId()); - dbData.setStandardState(es.getStandardState()); - String tdbzh = es.getSubstituteStandardNumber(); - String btdbzh = es.getReplacedByStandardNumber(); - // 代替标准号 - // 先删除已经存储的关联 - String standardNumber = dbData.getStandardNumber(); - if (StringUtils.isNotBlank(tdbzh)) { - lawsReplacedStandardService.addRelationOldSystemSync(tdbzh, standardNumber, 1); - } - // 被代替标准号 - if (StringUtils.isNotBlank(btdbzh)) { - List replaceCodeList = Arrays.asList(btdbzh.split(",")); - replaceCodeList.forEach(replaceCode -> { - lawsReplacedStandardService.addRelationOldSystemSync(standardNumber, replaceCode, 1); - }); - } - LambdaUpdateWrapper esWrapper = new LambdaUpdateWrapper<>(); - esWrapper.eq(LawsEnterpriseStandard::getId, dbData.getId()); - esWrapper.set(LawsEnterpriseStandard::getStandardState, es.getStandardState()); - esService.update(esWrapper); - } - // 获取当前时间戳(毫秒) - long endTime = System.currentTimeMillis(); - // 计算执行时间(毫秒) - long executionTime = endTime - startTime; - log.info("代码执行时间:" + executionTime + " 毫秒"); - } - - private void oldSysESDataFileFix(List esDatalist, List errImportList) { - esDatalist = esDatalist.stream().filter(o -> o.getBzfl().contains("企业标准")) - .collect(Collectors.toList()); - log.info("企标相关数据条数:{}", esDatalist.size()); - // 首先,使用Map来记录每个标准号出现的次数 - Map frequencyMap = esDatalist.stream() - .collect(Collectors.groupingBy(OldSystemImportDTO::getBzh, Collectors.counting())); - // 然后,过滤掉那些出现次数超过1次的数据 - esDatalist = esDatalist.stream() - .filter(dto -> frequencyMap.get(dto.getBzh()) == 1) - .collect(Collectors.toList()); - log.info("删除掉所有重复的数据后相关数据条数:{}", esDatalist.size()); - List esList = esService.list(); - Map esMap = esList.stream().collect(Collectors.toMap(LawsEnterpriseStandard::getOldSystemId, o -> o)); - List ossFileList = ossFileService.list(); - Map> ossFileMap = ossFileList.stream() - .filter(o -> o.getStandardId() != null) - .collect(Collectors.groupingBy(OSSFile::getStandardId)); - long startTime = System.currentTimeMillis(); - // 根据老法规中的标准号找到数据库中数据 再去ossFile表中找到相应数据,如果没有则将数据存入errImportList - for (OldSystemImportDTO dto : esDatalist) { - if (StrUtil.isBlank(dto.getSclj())) { - dto.setErrorInfo("没有需要导入的文件"); - errImportList.add(dto); - continue; - } - LawsEnterpriseStandard es = esMap.get(dto.getId()); - if (es == null) { - dto.setErrorInfo("未找到对应的企标数据"); - errImportList.add(dto); - continue; - } - List ossFile = ossFileMap.get(es.getId()); - if (ossFile == null || ossFile.isEmpty()) { - dto.setErrorInfo("未找到对应的文件数据"); - errImportList.add(dto); - } - } - // 获取当前时间戳(毫秒) - long endTime = System.currentTimeMillis(); - // 计算执行时间(毫秒) - long executionTime = endTime - startTime; - log.info("代码执行时间:" + executionTime + " 毫秒"); - } - - private void oldSysGBDataFileFix(List allDatalist, List errImportList) { - List gbDatalist = allDatalist.stream().filter(o -> - o.getBzfl().contains("国家标准/") || // “/”是为了避免匹配到“美国国家标准”这个外标 - o.getBzfl().contains("团体标准") || - o.getBzfl().contains("地方标准") || - o.getBzfl().contains("行业标准")).collect(Collectors.toList()); - log.info("国标相关数据条数:{}", gbDatalist.size()); - - // 首先,使用Map来记录每个标准号出现的次数 - Map frequencyMap = gbDatalist.stream() - .collect(Collectors.groupingBy(OldSystemImportDTO::getBzh, Collectors.counting())); - - // 然后,过滤掉那些出现次数超过1次的数据 - gbDatalist = gbDatalist.stream() - .filter(dto -> frequencyMap.get(dto.getBzh()) == 1) - .collect(Collectors.toList()); - - log.info("删除掉所有重复的数据后相关数据条数:{}", gbDatalist.size()); - - long startTime = System.currentTimeMillis(); - // 转换数据 - List gbList = gbService.list(); - Map gbMap = gbList.stream().collect(Collectors.toMap(LawsDomesticStandard::getStandardNumber, o -> o)); - List ossFileList = ossFileService.list(); - Map> ossFileMap = ossFileList.stream() - .filter(o -> o.getStandardId() != null) - .collect(Collectors.groupingBy(OSSFile::getStandardId)); - for (OldSystemImportDTO dto : gbDatalist) { - // 先将标准号中的中文横杠替换为英文横杠 - String newBzh = dto.getBzh().replace("—", "-"); - dto.setBzh(newBzh); - } - // 导入企标 - for (OldSystemImportDTO dto : gbDatalist) { - LawsDomesticStandard gb = gbMap.get(dto.getBzh()); - if (StrUtil.isBlank(dto.getSclj())) { - dto.setErrorInfo("没有需要导入的文件"); - errImportList.add(dto); - continue; - } - if (gb == null) { - dto.setErrorInfo("未找到对应的国标数据"); - errImportList.add(dto); - continue; - } - List ossFile = ossFileMap.get(gb.getId()); - if (ossFile == null || ossFile.isEmpty()) { - dto.setErrorInfo("未找到对应的文件数据"); - errImportList.add(dto); - } - } - - // 获取当前时间戳(毫秒) - long endTime = System.currentTimeMillis(); - // 计算执行时间(毫秒) - long executionTime = endTime - startTime; - log.info("代码执行时间:" + executionTime + " 毫秒"); - } - - private void oldSysFBDataFileFix(List allDatalist, List errImportList) { - List fbDatalist = allDatalist.stream().filter(o -> o.getBzfl().contains("ISO") || - o.getBzfl().contains("引进") || - o.getBzfl().contains("国外")).collect(Collectors.toList()); - log.info("外标相关数据条数:{}", fbDatalist.size()); - - // 过滤字段 根据标准号字段去重 - fbDatalist = fbDatalist.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() - -> new TreeSet<>(Comparator.comparing(OldSystemImportDTO::getBzh))), ArrayList::new)); - log.info("根据标准号去重后的外标相关数据条数:{}", fbDatalist.size()); - long startTime = System.currentTimeMillis(); - // 转换数据 - List fbList = overseasStandardService.list(); - Map fbMap = fbList.stream() - .collect(Collectors.toMap(LawsOverseasStandard::getStandardNumber, o -> o)); - List ossFileList = ossFileService.list(); - Map> ossFileMap = ossFileList.stream() - .filter(o -> o.getStandardId() != null) - .collect(Collectors.groupingBy(OSSFile::getStandardId)); - for (OldSystemImportDTO dto : fbDatalist) { - // 先将标准号中的中文横杠替换为英文横杠 - String newBzh = dto.getBzh().replace("—", "-"); - dto.setBzh(newBzh); - } - // 导入企标 - for (OldSystemImportDTO dto : fbDatalist) { - LawsOverseasStandard fb = fbMap.get(dto.getBzh()); - if (StrUtil.isBlank(dto.getDoclj())) { - dto.setErrorInfo("没有需要导入的文件"); - errImportList.add(dto); - continue; - } - if (fb == null) { - dto.setErrorInfo("未找到对应的外标数据"); - errImportList.add(dto); - continue; - } - List ossFile = ossFileMap.get(fb.getId()); - if (ossFile == null || ossFile.isEmpty()) { - dto.setErrorInfo("未找到对应的文件数据"); - errImportList.add(dto); - } - } - // 获取当前时间戳(毫秒) - long endTime = System.currentTimeMillis(); - // 计算执行时间(毫秒) - long executionTime = endTime - startTime; - log.info("代码执行时间:" + executionTime + " 毫秒"); - } - - private void oldSysFBImport(List allDatalist, List errImportList) { - List fbDatalist = allDatalist.stream().filter(o -> o.getBzfl().contains("ISO") || - o.getBzfl().contains("引进") || - o.getBzfl().contains("国外")).collect(Collectors.toList()); - log.info("外标相关数据条数:{}", fbDatalist.size()); - - // 过滤字段 根据标准号字段去重 - fbDatalist = fbDatalist.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() - -> new TreeSet<>(Comparator.comparing(OldSystemImportDTO::getBzh))), ArrayList::new)); - log.info("根据标准号去重后的外标相关数据条数:{}", fbDatalist.size()); - - // 找到所有人 并且用 姓名加工号做key - Map allUserMap = sysUserService.list().stream().collect(Collectors.toMap(o -> o.getRealname() + o.getUsername(), o -> o)); - - // 现所有部门 - List curDepartList = departService.list(); - Map> curDeptMap = curDepartList.stream().collect(Collectors.groupingBy(SysDepart::getDepartName)); - - // 部门关系列表 - List list = oldDeptService.list(); - list = list.stream().filter(o -> StrUtil.isNotBlank(o.getOldOrgName())).collect(Collectors.toList()); - Map> oldDeptMap = list.stream().collect(Collectors.groupingBy(OldSystemDepartRelation::getOldOrgName)); - - // 文件关联 - List ossFileList = new ArrayList<>(); - long startTime = System.currentTimeMillis(); - LambdaQueryWrapper userWrapper = new LambdaQueryWrapper<>(); - userWrapper.eq(SysUser::getRealname, "杨永鹏"); - userWrapper.eq(SysUser::getUsername, "077652"); - SysUser defaultUser = sysUserService.getOne(userWrapper); - if (defaultUser == null) { - throw new JeroBootException("未找到默认用户"); - } - - // 获取所有企标体系节点并转为Map - String moduleCode = TableNameEnum.FOREIGN_REGULATIONS.getValue(); - LambdaQueryWrapper treeNodeWrapper = new LambdaQueryWrapper<>(); - treeNodeWrapper.eq(LawsTreeNode::getModuleCode, moduleCode); - treeNodeWrapper.eq(LawsTreeNode::getDelFlag, YesOrNoEnum.NO.getValue()); - List treeNodeList = treeNodeService.list(treeNodeWrapper); - Map nodeNameMap = treeNodeList.stream().collect(Collectors.toMap(LawsTreeNode::getNodeName, o -> o)); - // 转换数据 - List fbList = new ArrayList<>(); - for (OldSystemImportDTO dto : fbDatalist) { - try { - LawsOverseasStandard fb = new LawsOverseasStandard(); - - // 先将标准号中的中文横杠替换为英文横杠 - String newBzh = dto.getBzh().replace("—", "-"); - fb.setStandardNumber(newBzh); - String cybzh = dto.getCybzh(); - // 采用标准号为空跳过拆分 - if (StrUtil.isNotBlank(cybzh)) { - // 执行拆分 - Map map = StandardSplitUtils.simpleSplitStandardNumber(newBzh, cybzh); - fb.setStandardClass(map.get(FieldCommon.STANDARD_CLASS)); - fb.setStandardNumberTemp(map.get(FieldCommon.STANDARD_NUMBER_TEMP)); - fb.setYearNumber(map.get(FieldCommon.YEAR_NUMBER)); - } - - fb.setStandardName(dto.getBzmc()); - fb.setStandardEnglishName(dto.getBzywmc()); - - // 发布日期和实施日期入库之前需要校验 为空或者不符合规则的不入库 - String fbrq = dto.getFbrq(); - String ssrq = dto.getSsrq(); - SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); - if (StrUtil.isNotBlank(fbrq)) { - if (fbrq.length() == 6) { - fbrq = fbrq + "01"; - } - Date newDate = sdf.parse(fbrq.trim()); - if (newDate != null) { - fb.setReleaseDate(newDate); - } else { - throw new JeroBootException("发布日期格式不正确,标准编号:" + dto.getBzh()); - } - } - if (StrUtil.isNotBlank(ssrq)) { - if (ssrq.length() == 6) { - ssrq = ssrq + "01"; - } - Date newDate = sdf.parse(ssrq.trim()); - if (newDate != null) { - fb.setImplementationDate(newDate); - } else { - throw new JeroBootException("实施日期格式不正确,标准编号:" + dto.getBzh()); - } - } - - String standardState = dto.getBzzt(); - switch (standardState) { - case "现行有效": - fb.setStandardState("6"); - break; - case "作废": - fb.setStandardState("7"); - break; - } - // 代替被代替特殊逻辑 - fb.setSubstituteStandardNumber(dto.getTdbzh()); - fb.setReplacedByStandardNumber(dto.getBtdbzh()); - - String excelCountry = dto.getCountry(); - if (StrUtil.isNotBlank(excelCountry)) { - fb.setCountryOrRegion(dto.getCountry()); - } - - // 责任部门暂不导入 - String zrbm = dto.getZrbm(); - if (oldDeptMap.get(zrbm) != null && oldDeptMap.get(zrbm).get(0) != null) { - String curOrgName = oldDeptMap.get(zrbm).get(0).getCurOrgName(); - if (StrUtil.isNotBlank(curOrgName)) { - List departList = curDeptMap.get(curOrgName); - if (departList.size() == 1) { - fb.setResponsibleDepartment(departList.get(0).getId()); - } - } - } - String zrr = dto.getZrr(); - String zrrid = dto.getZrrid(); - if (StrUtil.isNotBlank(zrr) && StrUtil.isNotBlank(zrrid)) { - SysUser sysUser = allUserMap.get(zrr + zrrid); - if (sysUser != null) { - fb.setResponsibleDepartmentUser(sysUser.getId()); - } else { - fb.setResponsibleDepartmentUser(defaultUser.getId()); - } - } - - // 根据文件路径获取文件Id - String originPath = dto.getSclj(); - if (StrUtil.isNotBlank(originPath)) { - String filePath = this.getFilePath(originPath); - if (MinioUtil.doesObjectExist(filePath)) { - // 存入关系表 - OSSFile ossFile = new OSSFile(); - ossFile.setUrl(filePath); - ossFile.setStandardNo(dto.getBzh()); - ossFile.setFileName(FileUtil.getName(filePath)); - ossFile.setStandardFileType("publish_of_original"); - ossFileList.add(ossFile); - } - } - - // 校验体系 - String bzfl = dto.getBzfl(); - if (StrUtil.isNotBlank(bzfl)) { - // 如果有/的话,只取第一个/后面的数据,无论后面有没有/ - if (bzfl.contains("/")) { - bzfl = bzfl.substring(bzfl.indexOf("/") + 1); - } - // 到Map中找到对应的体系 - LawsTreeNode treeNode = nodeNameMap.get(bzfl.trim()); - if (treeNode != null) { - fb.setStandardSystem(treeNode.getId()); - } else { - throw new JeroBootException("未找到对应的体系,标准编号:" + dto.getBzh() + "体系名称:" + bzfl); - } - } - fbList.add(fb); - } catch (Exception e) { - log.error("导入转换外标数据时发生错误:{}", e.getMessage()); - log.error("错误数据:{}", dto.toString()); - dto.setErrorInfo(e.getMessage()); - errImportList.add(dto); - } - } - // 保存数据 - // 1. 首先获取所有现有的国标标准号 - List existingEntities = overseasStandardService.list(); - - // 2. 创建一个Map,用于快速查找是否存在相同的标准号 - Map standardNumberToEntityMap = new HashMap<>(); - for (LawsOverseasStandard existingEntity : existingEntities) { - standardNumberToEntityMap.put(existingEntity.getStandardNumber(), existingEntity); - } - - // 3. 将文件关系列表转为Map,用于快速查找 - Map> standardNumberToFileMap = ossFileList.stream().collect(Collectors.groupingBy(OSSFile::getStandardNo)); - - // 4. 遍历待保存或更新的列表,设置ID - StringBuilder oldIds = new StringBuilder(); - StringBuilder newIds = new StringBuilder(); - // 获取所有相关标准号 - List replaceStandardNoList = fbList.stream().map(LawsOverseasStandard::getStandardNumber).collect(Collectors.toList()); - replaceStandardNoList.addAll(fbList.stream().map(LawsOverseasStandard::getSubstituteStandardNumber).collect(Collectors.toList())); - replaceStandardNoList.addAll(fbList.stream().map(LawsOverseasStandard::getReplacedByStandardNumber).collect(Collectors.toList())); - // 清除所有外标 - LambdaQueryWrapper replacedStandardWrapper = new LambdaQueryWrapper<>(); - replacedStandardWrapper - .in(LawsReplacedStandard::getReplaced, replaceStandardNoList).or() - .in(LawsReplacedStandard::getReplacedBy, replaceStandardNoList); - lawsReplacedStandardService.remove(replacedStandardWrapper); - for (LawsOverseasStandard entity : fbList) { - LawsOverseasStandard existingEntity = standardNumberToEntityMap.get(entity.getStandardNumber()); - if (existingEntity != null) { - // 如果存在,则执行更新操作 - // 删除替代 - lawsReplacedStandardService.removeRelation(existingEntity.getStandardNumber(), 1); - // 删除文件关联 - LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); - wrapper.eq(OSSFile::getStandardId, existingEntity.getId()); - ossFileService.remove(wrapper); - // 拼接老id - oldIds.append(existingEntity.getId()).append(","); - - entity.setId(existingEntity.getId()); - } - String standardNumber = entity.getStandardNumber(); - String tdbzh = entity.getSubstituteStandardNumber(); - String btdbzh = entity.getReplacedByStandardNumber(); - // 代替标准号 - // 先删除已经存储的关联 - if (StringUtils.isNotBlank(tdbzh)) { - lawsReplacedStandardService.addRelationOldSystemSync(tdbzh, standardNumber, 1); - } - // 被代替标准号 - if (StringUtils.isNotBlank(btdbzh)) { - List replaceCodeList = Arrays.asList(btdbzh.split(",")); - replaceCodeList.forEach(replaceCode -> { - lawsReplacedStandardService.addRelationOldSystemSync(standardNumber, replaceCode, 1); - }); - } - entity.setSubstituteStandardNumber(null); - entity.setReplacedByStandardNumber(null); - - String nodeId = entity.getStandardSystem(); - entity.setStandardSystem(null); - overseasStandardService.saveOrUpdate(entity); - - String standardId = entity.getId(); - // 保存文件关联 - List ossFiles = standardNumberToFileMap.get(entity.getStandardNumber()); - if (ossFiles != null && !ossFiles.isEmpty()) { - OSSFile ossFile = ossFiles.get(0); - ossFile.setStandardId(standardId); - ossFileService.save(ossFile); - } - - // 保存体系 - if (StrUtil.isNotBlank(nodeId)) { - lawsNodeRelationService.removeByStandardId(standardId); - lawsNodeRelationService.addRelation(nodeId, null, standardId); - } - } - log.info("老法规外标覆盖导入完成"); - // 获取当前时间戳(毫秒) - long endTime = System.currentTimeMillis(); - // 计算执行时间(毫秒) - long executionTime = endTime - startTime; - log.info("代码执行时间:" + executionTime + " 毫秒"); - // es中删除数据 -// if (oldIds.length() > 0) { -// oldIds = new StringBuilder(oldIds.substring(0, oldIds.length() - 1)); -// lawsHomeSearchService.updateEsData(LawsHomeSearchCommon.LAWS_OVERSEAS_STANDARD, oldIds.toString(), LawsHomeSearchCommon.LAWS_ES_DELETE); -// } -// // 同步es数据库 -// if (newIds.length() > 0) { -// newIds = new StringBuilder(newIds.substring(0, newIds.length() - 1)); -// lawsHomeSearchService.updateEsData(LawsHomeSearchCommon.LAWS_OVERSEAS_STANDARD, newIds.toString(), LawsHomeSearchCommon.LAWS_ES_ADD); -// } - } - - @Override - public void importOldESAuthAllExcel(MultipartFile file, HttpServletResponse response) { - List errImportList = new ArrayList<>(); - // 验证文件是否为压缩格式file.getContentType()).contains("xls") - if (!Objects.requireNonNull(file.getOriginalFilename()).contains("xls")) { - throw new JeroBootException("文件格式不正确,请上传Excel。"); - } - ImportParams params = new ImportParams(); - params.setTitleRows(0); - params.setNeedSave(true); - - // 获取数据 - List datalist; - try { - // 获取当前时间戳(毫秒) - long startTime = System.currentTimeMillis(); - @Cleanup - InputStream inputStream = file.getInputStream(); - datalist = ExcelImportUtil.importExcel(inputStream, ESAuthAll.class, params); - // 删除空行 - datalist.removeIf(ESAuthAll::isEmptyRow); - // 只取用企标数据 - // 区分数据 - log.info("获取数据成功,总数据条数:{}", datalist.size()); - datalist = datalist.stream().filter(data -> data.getStandardType().startsWith("企业标准")).collect(Collectors.toList()); - log.info("企标相关数据条数:{}", datalist.size()); - // 获取当前时间戳(毫秒) - long endTime = System.currentTimeMillis(); - // 计算执行时间(毫秒) - long executionTime = endTime - startTime; - log.info("数据转换执行时间:" + executionTime + " 毫秒"); - - // 筛选有oldSystemId的数据 - LambdaQueryWrapper esWrapper = new LambdaQueryWrapper<>(); - List esList = esService.list(esWrapper.isNotNull(LawsEnterpriseStandard::getOldSystemId)); - Map esMap = esList.stream().collect(Collectors.toMap(LawsEnterpriseStandard::getOldSystemId, o -> o)); - - // 遍历dataList 并且构造Update语句 - List updateList = new ArrayList<>(); - for (ESAuthAll data : datalist) { - try { - LawsEnterpriseStandard es = esMap.get(data.getStandardId()); - if (es != null) { - es.setGradeClassification("1"); - updateList.add(es); - } else { - throw new JeroBootException("未找到该企标,标准编号:" + data.getStandardNumber() + ",标准名称:" + data.getStandardName()); - } - } catch (Exception e) { - errImportList.add(data); - } - } - // 批量更新 - esService.updateBatchById(updateList, updateList.size()); - log.info("企标所有人权限导入成功"); - } catch (Exception e) { - log.error("导入失败;{}", e.getMessage()); - } - if (!errImportList.isEmpty()) { - log.info("导入失败数据条数:{}", errImportList.size()); - this.exportWithExcel(response, errImportList, "ESAuthAllErrorData.xls"); - } - log.info("企标所有人权限导入结束"); - } - - @Override - public void importOldESAuthUserExcel(MultipartFile file, HttpServletResponse response) { - List errImportList = new ArrayList<>(); - // 验证文件是否为压缩格式file.getContentType()).contains("xls") - if (!Objects.requireNonNull(file.getOriginalFilename()).contains("xls")) { - throw new JeroBootException("文件格式不正确,请上传Excel。"); - } - ImportParams params = new ImportParams(); - params.setTitleRows(0); - params.setNeedSave(true); - - // 获取数据 - List datalist; - try { - // 获取当前时间戳(毫秒) - long startTime = System.currentTimeMillis(); - @Cleanup - InputStream inputStream = file.getInputStream(); - datalist = ExcelImportUtil.importExcel(inputStream, ESAuthUser.class, params); - // 删除空行 - datalist.removeIf(ESAuthUser::isEmptyRow); - // 只取用企标数据 - // 区分数据 - log.info("获取数据成功,总数据条数:{}", datalist.size()); - // 删选标准分类不为空且是企标的数据 - datalist = datalist.stream().filter(data -> StrUtil.isNotBlank(data.getStandardType())) - .filter(data -> data.getStandardType().startsWith("企业标准")).collect(Collectors.toList()); - log.info("企标相关数据条数:{}", datalist.size()); - // 获取当前时间戳(毫秒) - long endTime = System.currentTimeMillis(); - // 计算执行时间(毫秒) - long executionTime = endTime - startTime; - log.info("数据转换执行时间:" + executionTime + " 毫秒"); - - // 筛选有oldSystemId的数据 - LambdaQueryWrapper esWrapper = new LambdaQueryWrapper<>(); - List esList = esService.list(esWrapper.isNotNull(LawsEnterpriseStandard::getOldSystemId)); - Map esMap = esList.stream().collect(Collectors.toMap(LawsEnterpriseStandard::getOldSystemId, o -> o)); - List userlist = sysUserService.list(); - Map userMap = userlist.stream().collect(Collectors.toMap(u -> u.getUsername().trim(), o -> o)); - - // 构造一个2099-12-31的Date时间 - Calendar calendar = Calendar.getInstance(); - - // 设置日期为2099年12月31日 - calendar.set(Calendar.YEAR, 2099); - calendar.set(Calendar.MONTH, Calendar.DECEMBER); // 12月,注意月份是从0开始的,所以12表示12月 - calendar.set(Calendar.DAY_OF_MONTH, 31); - calendar.set(Calendar.HOUR_OF_DAY, 23); // 设置小时为23(表示23:59:59) - calendar.set(Calendar.MINUTE, 59); // 设置分钟为59 - calendar.set(Calendar.SECOND, 59); // 设置秒钟为59 - - // 获取Date对象 - Date date = calendar.getTime(); - List authUserList = new ArrayList<>(); - // 遍历dataList 并且构造save语句 - for (ESAuthUser au : datalist) { - try { - String oldStandardId = au.getStandardId(); - LawsEnterpriseStandard es = esMap.get(oldStandardId); - if (es == null) { - throw new JeroBootException("未找到该企标,老标准编号:" + au.getStandardNumber() + ",标准名称:" + au.getStandardName()); - } - String standardId = es.getId(); - // 获取用户 - SysUser user = userMap.get(au.getWorkNumber().trim()); - if (user == null) { - throw new JeroBootException("未找到该用户,姓名:" + au.getRealName() + ",工号:" + au.getWorkNumber() + "老标准编号:" + au.getStandardNumber()); - } - EnterpriseStandardAuthUser esAu = new EnterpriseStandardAuthUser(); - esAu.setStandardId(standardId); - esAu.setAuthUser(user.getId()); - esAu.setAuthExpireDate(date); - authUserList.add(esAu); - } catch (Exception e) { - au.setErrorInfo(e.getMessage()); - errImportList.add(au); - } - } - esAuthUserService.saveBatch(authUserList, authUserList.size()); - log.info("企标个人权限导入成功,成功条数{}", authUserList.size()); - } catch (Exception e) { - log.error("导入失败;{}", e.getMessage()); - } - if (!errImportList.isEmpty()) { - log.info("导入失败数据条数:{}", errImportList.size()); - this.exportWithExcel(response, errImportList, "ESAuthUserErrorData.xls"); - } - log.info("企标个人权限导入结束"); - } - - @Override - public void importOldESAuthDeptExcel(MultipartFile file, HttpServletResponse response) { - List errImportList = new ArrayList<>(); - // 验证文件是否为压缩格式 - if (!Objects.requireNonNull(file.getOriginalFilename()).contains("xls")) { - throw new JeroBootException("文件格式不正确,请上传Excel。"); - } - ImportParams params = new ImportParams(); - params.setTitleRows(0); - params.setNeedSave(true); - - // 获取数据 - List datalist; - List correctList = new ArrayList<>(); - try { - // 获取当前时间戳(毫秒) - long startTime = System.currentTimeMillis(); - @Cleanup - InputStream inputStream = file.getInputStream(); - datalist = ExcelImportUtil.importExcel(inputStream, ESAuthDept.class, params); - // 删除空行 - datalist.removeIf(ESAuthDept::isEmptyRow); - // 区分数据 - log.info("获取数据成功,总数据条数:{}", datalist.size()); - // 删选标准分类不为空且是企标的数据 - datalist = datalist.stream().filter(data -> StrUtil.isNotBlank(data.getStandardType())) - .filter(data -> data.getStandardType().startsWith("企业标准")).collect(Collectors.toList()); - log.info("企标相关数据条数:{}", datalist.size()); - // 过滤掉新部门为空的数据 - datalist = datalist.stream().filter(dr -> dr.getDeptName() != null && !dr.getDeptName().isEmpty()).collect(Collectors.toList()); - log.info("过滤掉新部门为空的数据后数据条数:{}", datalist.size()); - - // 获取当前时间戳(毫秒) - long endTime = System.currentTimeMillis(); - // 计算执行时间(毫秒) - long executionTime = endTime - startTime; - log.info("数据转换执行时间:" + executionTime + " 毫秒"); - - // 筛选有oldSystemId的数据 - LambdaQueryWrapper esWrapper = new LambdaQueryWrapper<>(); - List esList = esService.list(esWrapper.isNotNull(LawsEnterpriseStandard::getOldSystemId)); - Map esMap = esList.stream().collect(Collectors.toMap(LawsEnterpriseStandard::getOldSystemId, o -> o)); - - // 获取所有有关联的新部门 - LambdaQueryWrapper sysDeptWrapper = new LambdaQueryWrapper<>(); - sysDeptWrapper.eq(SysDepart::getDelFlag, YesOrNoEnum.NO.getValue()); - sysDeptWrapper.eq(SysDepart::getStatus, 1); - - List drList = oldSystemDepartRelationService.list(); - Map drMap = drList.stream().collect(Collectors.toMap(o -> o.getOldOrgName().trim() + "-" + o.getOldOrgSuperior().trim(), o -> o)); - - for (ESAuthDept ad : datalist) { - try { - LawsEnterpriseStandard es = esMap.get(ad.getStandardId()); - if (es == null) { - throw new JeroBootException("系统中未找到标准编号:" + ad.getStandardNumber()); - } - String oldDeptName = ad.getOldDeptName().trim(); - String oldHigherDeptName = ad.getOldHigherDeptName().trim(); - // 根据老部门名称从关系表中找到新部门名称 - OldSystemDepartRelation oldSystemDepartRelation = drMap.get(oldDeptName + "-" + oldHigherDeptName); - if (oldSystemDepartRelation == null) { - throw new JeroBootException("未找到该部门的现部门名称:" + oldDeptName + ",上级部门名称:" + oldHigherDeptName + ",标准编号:" + ad.getStandardNumber()); - } else { - EnterpriseStandardAuthDept authDept = new EnterpriseStandardAuthDept(); - authDept.setStandardId(es.getId()); - authDept.setAuthDept(oldSystemDepartRelation.getCurOrgId()); - correctList.add(authDept); - } - } catch (Exception e) { - log.error("导入部门对应出现错误:{}", e.getMessage()); - log.error("错误数据:{}", ad.toString()); - ad.setErrorInfo(e.getMessage()); - errImportList.add(ad); - } - } - } catch (Exception e) { - log.error("导入失败;{}", e.getMessage()); - } - // 打印成功数量 - log.info("企标部门权限导入成功,成功条数{}", correctList.size()); - // 批量保存 - esAuthDeptService.saveBatch(correctList, correctList.size()); - if (!errImportList.isEmpty()) { - log.info("导入失败数据条数:{}", errImportList.size()); - this.exportWithExcel(response, errImportList, "ESAuthDeptErrorData.xls"); - } - log.info("企标部门权限导入结束"); - } - - @Override - public void filterChineseStandardNo(MultipartFile file, HttpServletResponse response) throws IOException { - List chineseStandardNo = new ArrayList<>(); - // 验证文件是否为压缩格式 - if (!Objects.requireNonNull(file.getOriginalFilename()).contains("xls")) { - throw new JeroBootException("文件格式不正确,请上传Excel。"); - } - ImportParams params = new ImportParams(); - params.setTitleRows(0); - params.setNeedSave(true); - - // 获取数据 - List datalist = new ArrayList<>(); - List emptyData = new ArrayList<>(); - List chineseData = new ArrayList<>(); - try { - // 获取当前时间戳(毫秒) - long startTime = System.currentTimeMillis(); - params.setSheetNum(1); - try (InputStream newInputStream = file.getInputStream()) { - datalist = ExcelImportUtil.importExcel(newInputStream, OldSystemImportDTO.class, params); - } - - // 空行数据 - emptyData = datalist.stream().filter(OldSystemImportDTO::isEmptyRow).collect(Collectors.toList()); - // 删除空行之后的数据 - datalist.removeIf(OldSystemImportDTO::isEmptyRow); - - datalist = datalist.stream().filter(data -> !this.containsChinese(data.getBzh())).collect(Collectors.toList()); - // 剔除不导入的数据 国家标准/GJB国家军用标准 -// datalist = datalist.stream().filter(data -> !data.getBzfl().equals("国家标准/GJB国家军用标准")).collect(Collectors.toList()); - // 删除政策 文件 之后的数据 - datalist = datalist.stream().filter(data -> !this.containsChinese(data.getBzh())).collect(Collectors.toList()); -//// // 只取用国标数据 -//// datalist = datalist.stream().filter(data -> data.getBzfl().startsWith("国家标准")).collect(Collectors.toList()); -// // 只取用外标数据 - datalist = datalist.stream().filter(data -> data.getBzfl().contains("国外") || - data.getBzfl().contains("ISO") || - data.getBzfl().contains("引进")) - .collect(Collectors.toList()); - - - // 区分数据 - log.info("获取数据成功,总数据条数:{}", datalist.size()); - // 删选标准分类不为空且是企标的数据 - - log.info("企标相关数据条数:{}", datalist.size()); - // 获取当前时间戳(毫秒) - long endTime = System.currentTimeMillis(); - // 计算执行时间(毫秒) - long executionTime = endTime - startTime; - log.info("数据转换执行时间:" + executionTime + " 毫秒"); - } catch (Exception e) { - log.error("导入失败;{}", e.getMessage()); - } - this.exportWithExcel(response, datalist, "needImportAllData.xls"); - if (false) { - this.exportWithExcel(response, chineseStandardNo, "ChineseStandardNo.xls"); - } - } - - @Override - public void importFileRelationExcel(MultipartFile file, HttpServletResponse response) { - List errImportList = new ArrayList<>(); - - // 验证文件是否为压缩格式 - if (!Objects.requireNonNull(file.getOriginalFilename()).contains("xls")) { - throw new JeroBootException("文件格式不正确,请上传Excel。"); - } - ImportParams params = new ImportParams(); - params.setTitleRows(0); - params.setNeedSave(true); - // 获取数据 - List allDatalist = null; - - try { - // 获取当前时间戳(毫秒) - long startTime = System.currentTimeMillis(); - @Cleanup - InputStream inputStream = file.getInputStream(); - allDatalist = ExcelImportUtil.importExcel(inputStream, OldSystemImportDTO.class, params); - // 删除空行 - allDatalist.removeIf(OldSystemImportDTO::isEmptyRow); - log.info("获取数据成功,数据条数:{}", allDatalist.size()); - // 获取当前时间戳(毫秒) - long endTime = System.currentTimeMillis(); - // 计算执行时间(毫秒) - long executionTime = endTime - startTime; - log.info("数据转换执行时间:" + executionTime + " 毫秒"); - } catch (Exception e) { - log.error("导入失败;{}", e.getMessage()); - } - if (allDatalist == null) { - throw new JeroBootException("导入失败,数据为空"); - } - - // 查询所有企标 - LambdaQueryWrapper esWrapper = new LambdaQueryWrapper<>(); - esWrapper.eq(LawsEnterpriseStandard::getDelFlag, YesOrNoEnum.NO.getValue()); - List esList = esService.list(esWrapper); - // 查询所有外标 - LambdaQueryWrapper fbWrapper = new LambdaQueryWrapper<>(); - fbWrapper.eq(LawsOverseasStandard::getDelFlag, YesOrNoEnum.NO.getValue()); - List fbList = overseasStandardService.list(fbWrapper); - // 查询所有国标 - LambdaQueryWrapper gbWrapper = new LambdaQueryWrapper<>(); - gbWrapper.eq(LawsDomesticStandard::getDelFlag, YesOrNoEnum.NO.getValue()); - List gbList = domesticStandardService.list(gbWrapper); - - Map standardMap = esList.stream().collect(Collectors.toMap(LawsEnterpriseStandard::getStandardNumber, LawsEnterpriseStandard::getId)); - standardMap.putAll(fbList.stream().collect(Collectors.toMap(LawsOverseasStandard::getStandardNumber, LawsOverseasStandard::getId))); - standardMap.putAll(gbList.stream().collect(Collectors.toMap(LawsDomesticStandard::getStandardNumber, LawsDomesticStandard::getId))); - // 文件关联 - List ossFileList = new ArrayList<>(); - long startTime = System.currentTimeMillis(); - // 转换数据 - for (OldSystemImportDTO dto : allDatalist) { - try { - // 将标准号中的括号删除 - String standardFileType = StandardSplitUtils.getStandardFileTypeByBZH(dto.getBzh()); - String standardNo = StandardSplitUtils.extractStandardNumber(dto.getBzh()); - String standardId = null; - for (String s : standardMap.keySet()) { - if (s.contains(standardNo)) { - standardId = standardMap.get(s); - break; - } - } - if (StrUtil.isBlank(standardId)) { - throw new JeroBootException("未找到该标准,标准编号:" + dto.getBzh()); - } - // 根据文件路径获取文件Id - String originPath = dto.getSclj(); - if (StrUtil.isNotBlank(originPath)) { - String filePath = this.getFilePath(originPath); - if (MinioUtil.doesObjectExist(filePath)) { - // 存入关系表 - OSSFile ossFile = new OSSFile(); - ossFile.setUrl(filePath); - ossFile.setStandardNo(standardNo); - ossFile.setFileName(FileUtil.getName(filePath)); - ossFile.setStandardFileType(standardFileType); - ossFile.setStandardId(standardId); - ossFileList.add(ossFile); - } - } - } catch (Exception e) { - log.error("导入转换外标数据时发生错误:{}", e.getMessage()); - log.error("错误数据:{}", dto.toString()); - dto.setErrorInfo(e.getMessage()); - errImportList.add(dto); - } - } - - for (OSSFile ossfile : ossFileList) { - // 保存文件关联 - ossFileService.save(ossfile); - } - log.info("文件关系覆盖导入完成"); - // 获取当前时间戳(毫秒) - long endTime = System.currentTimeMillis(); - // 计算执行时间(毫秒) - long executionTime = endTime - startTime; - log.info("代码执行时间:" + executionTime + " 毫秒"); - if (!errImportList.isEmpty()) { - this.exportWithExcel(response, errImportList, "OldSystemStandardErrorData.xls"); - } - } - - @Override - public void findDuplicateStandardNoData(MultipartFile file, HttpServletResponse response) { - List duplicateDataList = new ArrayList<>(); - - // 验证文件是否为压缩格式 - if (!Objects.requireNonNull(file.getOriginalFilename()).contains("xls")) { - throw new JeroBootException("文件格式不正确,请上传Excel。"); - } - ImportParams params = new ImportParams(); - params.setTitleRows(0); - params.setNeedSave(true); - // 获取数据 - List allDatalist = null; - - try { - // 获取当前时间戳(毫秒) - long startTime = System.currentTimeMillis(); - @Cleanup - InputStream inputStream = file.getInputStream(); - allDatalist = ExcelImportUtil.importExcel(inputStream, OldSystemImportDTO.class, params); - // 删除空行 - allDatalist.removeIf(OldSystemImportDTO::isEmptyRow); - log.info("获取数据成功,数据条数:{}", allDatalist.size()); - // 获取当前时间戳(毫秒) - long endTime = System.currentTimeMillis(); - // 计算执行时间(毫秒) - long executionTime = endTime - startTime; - log.info("数据转换执行时间:" + executionTime + " 毫秒"); - } catch (Exception e) { - log.error("导入失败;{}", e.getMessage()); - } - if (allDatalist == null) { - throw new JeroBootException("导入失败,数据为空"); - } - //找到所欲标准编号重复的数据 - Map> duplicateMap = allDatalist.stream().collect(Collectors.groupingBy(OldSystemImportDTO::getBzh)); - for (String key : duplicateMap.keySet()) { - List list = duplicateMap.get(key); - if (list.size() > 1) { - duplicateDataList.addAll(list); - } - } - // 导出 - this.exportWithExcel(response, duplicateDataList, "DuplicateStandardNoData.xls"); - } - - @Override - public void importEsStandSystem(MultipartFile file, HttpServletResponse response) { - List errImportList = new ArrayList<>(); - // 验证文件是否为压缩格式file.getContentType()).contains("xls") - if (!Objects.requireNonNull(file.getOriginalFilename()).contains("xls")) { - throw new JeroBootException("文件格式不正确,请上传Excel。"); - } - ImportParams params = new ImportParams(); - params.setTitleRows(0); - params.setNeedSave(true); - - // 获取所有企标转为Map - // 筛选有oldSystemId的数据 - LambdaQueryWrapper esWrapper = new LambdaQueryWrapper<>(); - List esList = esService.list(esWrapper.isNotNull(LawsEnterpriseStandard::getOldSystemId)); - Map esMap = esList.stream().collect(Collectors.toMap(LawsEnterpriseStandard::getOldSystemId, o -> o)); - - // 获取所有企标体系节点并转为Map - String moduleCode = TableNameEnum.ENTERPRISE_STANDARDS.getValue(); - LambdaQueryWrapper treeNodeWrapper = new LambdaQueryWrapper<>(); - treeNodeWrapper.eq(LawsTreeNode::getModuleCode, moduleCode); - treeNodeWrapper.eq(LawsTreeNode::getDelFlag, YesOrNoEnum.NO.getValue()); - List treeNodeList = treeNodeService.list(treeNodeWrapper); - Map nodeIdMap = treeNodeList.stream().collect(Collectors.toMap(LawsTreeNode::getId, o -> o)); - // 构建路径Map - Map pathMap = treeNodeList.stream() - .collect(Collectors.toMap( - node -> buildPathToRoot(node.getId(), nodeIdMap), - o -> o)); - - // 获取数据 - List datalist; - try { - // 获取当前时间戳(毫秒) - long startTime = System.currentTimeMillis(); - @Cleanup - InputStream inputStream = file.getInputStream(); - datalist = ExcelImportUtil.importExcel(inputStream, ESOldStandardSystem.class, params); - // 删除空行 - datalist.removeIf(ESOldStandardSystem::isEmptyRow); - // 只取用企标数据 - // 区分数据 - log.info("获取数据成功,总数据条数:{}", datalist.size()); - // 获取当前时间戳(毫秒) - long endTime = System.currentTimeMillis(); - // 计算执行时间(毫秒) - long executionTime = endTime - startTime; - log.info("数据转换执行时间:" + executionTime + " 毫秒"); - - for (ESOldStandardSystem ss : datalist) { - try { - String bzfl = ss.getBzfl(); - // 根据标准分类找到对应的节点 - LawsTreeNode treeNode = pathMap.get(bzfl); - if (treeNode == null) { - throw new JeroBootException("未找到该节点,节点名称:" + bzfl); - } - // 根据当前数据的id找到对应的企标 - LawsEnterpriseStandard es = esMap.get(ss.getId()); - if (es == null) { - throw new JeroBootException("未找到该企标,标准编号:" + ss.getBzh() + ",标准名称:" + ss.getBzmc()); - } - lawsNodeRelationService.removeByStandardId(es.getId()); - lawsNodeRelationService.addRelation(treeNode.getId(), null, es.getId()); - } catch (Exception e) { - log.error("错误数据:{}", ss.toString()); - ss.setErrorInfo(e.getMessage()); - errImportList.add(ss); - } - } - log.info("企标体系导入成功"); - } catch (Exception e) { - log.error("导入失败;{}", e.getMessage()); - - } - if (!errImportList.isEmpty()) { - log.info("导入失败数据条数:{}", errImportList.size()); - this.exportWithExcel(response, errImportList, "ESStandSystemErrorData.xls"); - } - log.info("企标体系导入结束"); - } - - private String buildPathToRoot(String nodeId, Map nodeIdMap) { - // 获取当前节点 - LawsTreeNode currentNode = nodeIdMap.get(nodeId); - if (currentNode == null) { - return ""; // 或者处理节点不存在的情况 - } - // 检查是否是根节点 - if (currentNode.getParentId() == null || currentNode.getParentId().isEmpty()) { - return currentNode.getNodeName(); // 根节点的情况 - } - // 递归地构建路径 - String parentPath = buildPathToRoot(currentNode.getParentId(), nodeIdMap); - return parentPath + "/" + currentNode.getNodeName(); - } - - @Override - public void importGbStandSystem(MultipartFile file, HttpServletResponse response, String type) { - List errImportList = new ArrayList<>(); - // 验证文件是否为压缩格式file.getContentType()).contains("xls") - if (!Objects.requireNonNull(file.getOriginalFilename()).contains("xls")) { - throw new JeroBootException("文件格式不正确,请上传Excel。"); - } - ImportParams params = new ImportParams(); - params.setTitleRows(0); - params.setNeedSave(true); - - // 获取所有企标转为Map - // 筛选有oldSystemId的数据 - LambdaQueryWrapper gbWrapper = new LambdaQueryWrapper<>(); - List gbList = gbService.list(gbWrapper.eq(LawsDomesticStandard::getDelFlag, YesOrNoEnum.NO.getValue())); - Map gbMap = gbList.stream().collect(Collectors.toMap(LawsDomesticStandard::getStandardNumber, o -> o)); - - // 获取所有企标体系节点并转为Map - String moduleCode = TableNameEnum.DOMESTIC_REGULATIONS.getValue(); - LambdaQueryWrapper treeNodeWrapper = new LambdaQueryWrapper<>(); - treeNodeWrapper.eq(LawsTreeNode::getModuleCode, moduleCode); - treeNodeWrapper.eq(LawsTreeNode::getDelFlag, YesOrNoEnum.NO.getValue()); - List treeNodeList = treeNodeService.list(treeNodeWrapper); - Map nodeNameMap = treeNodeList.stream().collect(Collectors.toMap(LawsTreeNode::getNodeName, o -> o)); - - // 获取数据 - List datalist; - List gbIdList = new ArrayList<>(); - try { - // 获取当前时间戳(毫秒) - long startTime = System.currentTimeMillis(); - @Cleanup - InputStream inputStream = file.getInputStream(); - datalist = ExcelImportUtil.importExcel(inputStream, GBStandSystem.class, params); - // 删除空行 - datalist.removeIf(GBStandSystem::isEmptyRow); - // 删除不需要导入的行 - datalist.removeIf(GBStandSystem::isNoNeedImport); - // 区分数据 - log.info("获取数据成功,总数据条数:{}", datalist.size()); - // 获取当前时间戳(毫秒) - long endTime = System.currentTimeMillis(); - // 计算执行时间(毫秒) - long executionTime = endTime - startTime; - log.info("数据转换执行时间:" + executionTime + " 毫秒"); - - for (GBStandSystem gbStandSystem : datalist) { - try { - // 校验体系 - String standardType = gbStandSystem.getStandardType(); - if (StrUtil.isNotBlank(standardType)) { - // 如果有/的话,只取第一个/后面的数据,无论后面有没有/ - if (standardType.contains("/")) { - standardType = standardType.substring(standardType.indexOf("/") + 1); - } - // 根据当前数据的id找到对应的企标 - LawsDomesticStandard gb = gbMap.get(gbStandSystem.getStandardNumber()); - if (gb == null) { - throw new JeroBootException("未找到该国标,标准编号:" + gbStandSystem.getStandardNumber() - + ",标准名称:" + gbStandSystem.getStandardName()); - } - if (type.equals("approval")) { - if (!standardType.endsWith("标准")) { - standardType = standardType + "标准"; - } - } - // 到Map中找到对应的体系 - LawsTreeNode treeNode = nodeNameMap.get(standardType.trim()); - if (treeNode == null) { - throw new JeroBootException("未找到对应的体系,标准编号:" + gbStandSystem.getStandardNumber() - + "体系名称:" + gbStandSystem.getStandardType()); - } else { - gbIdList.add(gb.getId()); - lawsNodeRelationService.addRelation(treeNode.getId(), null, gb.getId()); - } - } - } catch (Exception e) { - log.error("错误数据:{}", gbStandSystem.toString()); - gbStandSystem.setErrorInfo(e.getMessage()); - errImportList.add(gbStandSystem); - } - } - // 修改所有国标的状态为推荐 - LambdaUpdateWrapper dsWrapper = new LambdaUpdateWrapper<>(); - dsWrapper.in(LawsDomesticStandard::getId, gbIdList); - if (type.equals("approval")) { - dsWrapper.set(LawsDomesticStandard::getStandardProperty, "SN001"); - } else { - dsWrapper.set(LawsDomesticStandard::getStandardProperty, "SN002"); - } - gbService.update(dsWrapper); - log.info("国标体系导入成功"); - } catch (Exception e) { - log.error("导入失败;{}", e.getMessage()); - - } - if (!errImportList.isEmpty()) { - log.info("导入失败数据条数:{}", errImportList.size()); - String fileName = type.equals("approval") ? "GBStandSystemErrorData(Approval).xls" : "GBStandSystemErrorData(Recommend).xls"; - this.exportWithExcel(response, errImportList, fileName); - } - log.info("国标体系导入结束"); - } - - public boolean containsChinese(String text) { - Pattern pattern = Pattern.compile("[\u4E00-\u9FA5]"); - Matcher matcher = pattern.matcher(text); - return matcher.find(); - } - - public void exportWithExcel(HttpServletResponse response, List dtoList, String fileName) { - try { - // 设置导出参数 - ExportParams exportParams = new ExportParams(null, fileName); // 可以为标题添加更多的配置 - Workbook workbook = ExcelExportUtil.exportExcel(exportParams, dtoList.get(0).getClass(), dtoList); - - // 设置响应头和内容类型 - response.setContentType("application/vnd.ms-excel"); - response.setHeader("Content-Disposition", "attachment; filename=" + fileName); - - // 写出到响应流 - workbook.write(response.getOutputStream()); - workbook.close(); - } catch (Exception e) { - log.error("导出excel异常", e); - throw new JeroBootException(MessageUtils.getMessage(ResultCommon.EXPORT_ERROR), e); - } - } - - private void oldSysGBImport(List allDatalist, List errImportList) { - List gbDatalist = allDatalist.stream().filter(o -> - o.getBzfl().contains("国家标准/") || // “/”是为了避免匹配到“美国国家标准”这个外标 - o.getBzfl().contains("团体标准") || - o.getBzfl().contains("地方标准") || - o.getBzfl().contains("行业标准")).collect(Collectors.toList()); - log.info("国标相关数据条数:{}", gbDatalist.size()); - - // 首先,使用Map来记录每个标准号出现的次数 - Map frequencyMap = gbDatalist.stream() - .collect(Collectors.groupingBy(OldSystemImportDTO::getBzh, Collectors.counting())); - - // 然后,过滤掉那些出现次数超过1次的数据 - gbDatalist = gbDatalist.stream() - .filter(dto -> frequencyMap.get(dto.getBzh()) == 1) - .collect(Collectors.toList()); - - log.info("删除掉所有重复的数据后相关数据条数:{}", gbDatalist.size()); - - // 找到所有人 并且用 姓名加工号做key - Map allUserMap = sysUserService.list().stream().collect(Collectors.toMap(o -> o.getRealname() + o.getUsername(), o -> o)); - - // 现所有部门 - List curDepartList = departService.list(); - Map> curDeptMap = curDepartList.stream().collect(Collectors.groupingBy(SysDepart::getDepartName)); - - // 部门关系列表 - List list = oldDeptService.list(); - list = list.stream().filter(o -> StrUtil.isNotBlank(o.getOldOrgName())).collect(Collectors.toList()); - Map> oldDeptMap = list.stream().collect(Collectors.groupingBy(OldSystemDepartRelation::getOldOrgName)); - - // 文件关联 - List ossFileList = new ArrayList<>(); - long startTime = System.currentTimeMillis(); - // 获取默认用户 - LambdaQueryWrapper userWrapper = new LambdaQueryWrapper<>(); - userWrapper.eq(SysUser::getRealname, "杨永鹏"); - userWrapper.eq(SysUser::getUsername, "077652"); - SysUser defaultUser = sysUserService.getOne(userWrapper); - if (defaultUser == null) { - throw new JeroBootException("未找到默认用户"); - } - // 获取所有企标体系节点并转为Map - String moduleCode = TableNameEnum.DOMESTIC_REGULATIONS.getValue(); - LambdaQueryWrapper treeNodeWrapper = new LambdaQueryWrapper<>(); - treeNodeWrapper.eq(LawsTreeNode::getModuleCode, moduleCode); - treeNodeWrapper.eq(LawsTreeNode::getDelFlag, YesOrNoEnum.NO.getValue()); - List treeNodeList = treeNodeService.list(treeNodeWrapper); - Map nodeNameMap = treeNodeList.stream().collect(Collectors.toMap(LawsTreeNode::getNodeName, o -> o)); - // 转换数据 - List gbList = new ArrayList<>(); - for (OldSystemImportDTO dto : gbDatalist) { - try { - LawsDomesticStandard gb = new LawsDomesticStandard(); - - // 先将标准号中的中文横杠替换为英文横杠 - String newBzh = dto.getBzh().replace("—", "-"); - gb.setStandardNumber(newBzh); - String cybzh = dto.getCybzh(); - // 采用标准号为空跳过拆分 - if (StrUtil.isNotBlank(cybzh)) { - // 执行拆分 - Map map = StandardSplitUtils.simpleSplitStandardNumber(newBzh, cybzh); - gb.setStandardClass(map.get(FieldCommon.STANDARD_CLASS)); - gb.setStandardNumberTemp(map.get(FieldCommon.STANDARD_NUMBER_TEMP)); - gb.setYearNumber(map.get(FieldCommon.YEAR_NUMBER)); - } - - gb.setStandardName(dto.getBzmc()); - gb.setStandardEnglishName(dto.getBzywmc()); - - // 发布日期和实施日期入库之前需要校验 为空或者不符合规则的不入库 - String fbrq = dto.getFbrq(); - String ssrq = dto.getSsrq(); - SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); - if (StrUtil.isNotBlank(fbrq)) { - if (fbrq.length() == 6) { - fbrq = fbrq + "01"; - } - Date newDate = sdf.parse(fbrq.trim()); - if (newDate != null) { - gb.setReleaseDate(newDate); - } else { - throw new JeroBootException("发布日期格式不正确,标准编号:" + dto.getBzh()); - } - } - if (StrUtil.isNotBlank(ssrq)) { - if (ssrq.length() == 6) { - ssrq = ssrq + "01"; - } - Date newDate = sdf.parse(ssrq.trim()); - if (newDate != null) { - gb.setImplementationDate(newDate); - } else { - throw new JeroBootException("实施日期格式不正确,标准编号:" + dto.getBzh()); - } - } - - String standardState = dto.getBzzt(); - switch (standardState) { - case "现行有效": - gb.setStandardState("6"); - break; - case "作废": - gb.setStandardState("7"); - break; - case "预发布": - gb.setStandardState("4"); - break; - } - // 代替被代替特殊逻辑 - gb.setSubstituteStandardNumber(dto.getTdbzh()); - gb.setReplacedByStandardNumber(dto.getBtdbzh()); - - // 责任部门暂不导入 - String zrbm = dto.getZrbm(); - if (oldDeptMap.get(zrbm) != null && oldDeptMap.get(zrbm).get(0) != null) { - String curOrgName = oldDeptMap.get(zrbm).get(0).getCurOrgName(); - if (StrUtil.isNotBlank(curOrgName)) { - List departList = curDeptMap.get(curOrgName); - if (departList.size() == 1) { - gb.setResponsibleDepartment(departList.get(0).getId()); - } - } - } - String zrr = dto.getZrr(); - String zrrid = dto.getZrrid(); - if (StrUtil.isNotBlank(zrr) && StrUtil.isNotBlank(zrrid)) { - SysUser sysUser = allUserMap.get(zrr + zrrid); - if (sysUser != null) { - gb.setResponsibleDepartmentUser(sysUser.getId()); - } else { - gb.setResponsibleDepartmentUser(defaultUser.getId()); - } - } - - // 根据文件路径获取文件Id - String originPath = dto.getSclj(); - if (StrUtil.isNotBlank(originPath)) { - String filePath = this.getFilePath(originPath); - if (MinioUtil.doesObjectExist(filePath)) { - // 存入关系表 - OSSFile ossFile = new OSSFile(); - ossFile.setUrl(filePath); - ossFile.setStandardNo(dto.getBzh()); - ossFile.setFileName(FileUtil.getName(filePath)); - ossFile.setStandardFileType("publish_of_original"); - ossFileList.add(ossFile); - } - } - - // 校验体系 - String bzfl = dto.getBzfl(); - if (StrUtil.isNotBlank(bzfl)) { - // 如果有/的话,只取第一个/后面的数据,无论后面有没有/ - if (bzfl.contains("/")) { - bzfl = bzfl.substring(bzfl.indexOf("/") + 1); - } - // 到Map中找到对应的体系 - LawsTreeNode treeNode = nodeNameMap.get(bzfl.trim()); - if (treeNode != null) { - gb.setStandardSystem(treeNode.getId()); - } else { - throw new JeroBootException("未找到对应的体系,标准编号:" + dto.getBzh() + "体系名称:" + bzfl); - } - } - gb.setIsAsmsImport("0"); - gbList.add(gb); - } catch (Exception e) { - log.error("导入转换国标数据时发生错误:{}", e.getMessage()); - log.error("错误数据:{}", dto.toString()); - dto.setErrorInfo(e.getMessage()); - errImportList.add(dto); - } - } - // 保存数据 - // 1. 首先获取所有现有的国标标准号 - List existingEntities = domesticStandardService.list(); - - // 2. 创建一个Map,用于快速查找是否存在相同的标准号 - Map standardNumberToEntityMap = new HashMap<>(); - for (LawsDomesticStandard existingEntity : existingEntities) { - standardNumberToEntityMap.put(existingEntity.getStandardNumber(), existingEntity); - } - - // 3. 将文件关系列表转为Map,用于快速查找 - Map> standardNumberToFileMap = ossFileList.stream().collect(Collectors.groupingBy(OSSFile::getStandardNo)); - - // 4. 遍历待保存或更新的列表,设置ID - StringBuilder oldIds = new StringBuilder(); - StringBuilder newIds = new StringBuilder(); - - // 获取所有相关标准号 - List replaceStandardNoList = gbList.stream().map(LawsDomesticStandard::getStandardNumber).collect(Collectors.toList()); - replaceStandardNoList.addAll(gbList.stream().map(LawsDomesticStandard::getSubstituteStandardNumber).collect(Collectors.toList())); - replaceStandardNoList.addAll(gbList.stream().map(LawsDomesticStandard::getReplacedByStandardNumber).collect(Collectors.toList())); - // 清除所有外标 - LambdaQueryWrapper replacedStandardWrapper = new LambdaQueryWrapper<>(); - replacedStandardWrapper - .in(LawsReplacedStandard::getReplaced, replaceStandardNoList).or() - .in(LawsReplacedStandard::getReplacedBy, replaceStandardNoList); - lawsReplacedStandardService.remove(replacedStandardWrapper); - for (LawsDomesticStandard entity : gbList) { - LawsDomesticStandard existingEntity = standardNumberToEntityMap.get(entity.getStandardNumber()); - if (existingEntity != null) { - // 如果存在,则执行更新操作 - // 删除替代 - lawsReplacedStandardService.removeRelation(existingEntity.getStandardNumber(), 1); - // 删除文件关联 - LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); - wrapper.eq(OSSFile::getStandardId, existingEntity.getId()); - ossFileService.remove(wrapper); - // 拼接老id - oldIds.append(existingEntity.getId()).append(","); - - entity.setId(existingEntity.getId()); - } - String tdbzh = entity.getSubstituteStandardNumber(); - String btdbzh = entity.getReplacedByStandardNumber(); - // 代替标准号 - // 先删除已经存储的关联 - String standardNumber = entity.getStandardNumber(); - if (StringUtils.isNotBlank(tdbzh)) { - lawsReplacedStandardService.addRelationOldSystemSync(tdbzh, standardNumber, 1); - } - // 被代替标准号 - if (StringUtils.isNotBlank(btdbzh)) { - List replaceCodeList = Arrays.asList(btdbzh.split(",")); - replaceCodeList.forEach(replaceCode -> { - lawsReplacedStandardService.addRelationOldSystemSync(standardNumber, replaceCode, 1); - }); - } - entity.setSubstituteStandardNumber(null); - entity.setReplacedByStandardNumber(null); - - String nodeId = entity.getStandardSystem(); - entity.setStandardSystem(null); - - // 构建updateWrapper 将其余字段全部设为null - if (existingEntity != null) { - // 如果存在,则执行更新操作 - entity.setIsAsmsImport("0"); - domesticStandardService.updateById(entity); - } else { - // 如果不存在,则执行保存操作 - domesticStandardService.save(entity); - } - String standardId = entity.getId(); - - // 保存文件关联 - List ossFiles = standardNumberToFileMap.get(entity.getStandardNumber()); - if (ossFiles != null && !ossFiles.isEmpty()) { - OSSFile ossFile = ossFiles.get(0); - ossFile.setStandardId(standardId); - ossFileService.save(ossFile); - } - // 保存体系 - if (StrUtil.isNotBlank(nodeId)) { - lawsNodeRelationService.removeByStandardId(standardId); - lawsNodeRelationService.addRelation(nodeId, null, standardId); - } - } - log.info("老法规国标覆盖导入完成"); - // 获取当前时间戳(毫秒) - long endTime = System.currentTimeMillis(); - // 计算执行时间(毫秒) - long executionTime = endTime - startTime; - log.info("代码执行时间:" + executionTime + " 毫秒"); - // es中删除数据 -// if (oldIds.length() > 0) { -// oldIds = new StringBuilder(oldIds.substring(0, oldIds.length() - 1)); -// lawsHomeSearchService.updateEsData(LawsHomeSearchCommon.LAWS_DOMESTIC_STANDARD, oldIds.toString(), LawsHomeSearchCommon.LAWS_ES_DELETE); -// } -// // 同步es数据库 -// if (newIds.length() > 0) { -// newIds = new StringBuilder(newIds.substring(0, newIds.length() - 1)); -// lawsHomeSearchService.updateEsData(LawsHomeSearchCommon.LAWS_DOMESTIC_STANDARD, newIds.toString(), LawsHomeSearchCommon.LAWS_ES_ADD); -// } - } - - private void oldSysESImport(List esDatalist, List errImportList) { - esDatalist = esDatalist.stream().filter(o -> o.getBzfl().contains("企业标准")) - .collect(Collectors.toList()); - log.info("企标相关数据条数:{}", esDatalist.size()); - - // 首先,使用Map来记录每个标准号出现的次数 - Map frequencyMap = esDatalist.stream() - .collect(Collectors.groupingBy(OldSystemImportDTO::getBzh, Collectors.counting())); - - // 然后,过滤掉那些出现次数超过1次的数据 - esDatalist = esDatalist.stream() - .filter(dto -> frequencyMap.get(dto.getBzh()) == 1) - .collect(Collectors.toList()); - - log.info("删除掉所有重复的数据后相关数据条数:{}", esDatalist.size()); - - long startTime = System.currentTimeMillis(); - // 转换数据 - List esList = new ArrayList<>(); - List listDict = commonAPI.getDictItemAll(); - // 文件关联 - List ossFileList = new ArrayList<>(); - // 导入企标 - for (OldSystemImportDTO dto : esDatalist) { - try { - LawsEnterpriseStandard es = new LawsEnterpriseStandard(); - es.setOldSystemId(dto.getId()); - es.setStandardNumber(dto.getBzh()); - es.setStandardName(dto.getBzmc()); - es.setStandardEnglishName(dto.getBzywmc()); - - // 发布日期和实施日期入库之前需要校验 为空或者不符合规则的不入库 - String fbrq = dto.getFbrq(); - String ssrq = dto.getSsrq(); - SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); - if (StrUtil.isNotBlank(fbrq)) { - Date newDate = sdf.parse(fbrq.trim()); - if (newDate != null) { - es.setReleaseDate(newDate); - } else { - throw new JeroBootException("发布日期格式不正确,标准编号:" + dto.getBzh()); - } - } - if (StrUtil.isNotBlank(ssrq)) { - Date newDate = sdf.parse(ssrq.trim()); - if (newDate != null) { - es.setImplementationDate(newDate); - } else { - throw new JeroBootException("实施日期格式不正确,标准编号:" + dto.getBzh()); - } - } - String standardState = dto.getBzzt(); - switch (standardState) { - case "现行有效": - es.setStandardState("8"); - break; - case "作废": - es.setStandardState("9"); - break; - case "封存": - es.setStandardState("A"); - break; - case "预发布": - es.setStandardState("5"); - break; - } - es.setGradeClassification(null); - // 代替被代替特殊逻辑 - es.setSubstituteStandardNumber(dto.getTdbzh()); - es.setReplacedByStandardNumber(dto.getBtdbzh()); - - String standardNumber = dto.getBzh(); - // 如果标准号中有错误符号 则需要修正一下 - // 正则表达式用于检测是否存在错误的“-”作为分隔符 - String regex = "([A-Za-z]{1,2})-([A-Za-z]{1,2}) (\\d{4,5}(\\.\\d+)?)-([A-Za-z0-9]+)"; - - // 使用Pattern和Matcher检测是否匹配 - Pattern pattern = Pattern.compile(regex); - Matcher matcher = pattern.matcher(standardNumber); - if (matcher.find()) { - // 如果匹配,将第一个“-”替换为“/” - standardNumber = standardNumber.replaceFirst("-", "/"); - es.setStandardNumber(standardNumber); - } - if (StringUtils.isNotBlank(standardNumber)) { - Map map = EnterpriseStandardUtil.splitStandardNumber(standardNumber); - es.setStandardCode(map.get(FieldCommon.ENTERPRISE_STANDARD_CODE)); - es.setNameCode(map.get(FieldCommon.ENTERPRISE_NAME_CODE)); - es.setCategoryCode(map.get(FieldCommon.STANDARD_CATEGORY_CODE)); - es.setStandardNumberTemp(map.get(FieldCommon.STANDARD_NUMBER_TEMP)); - es.setYearNumber(map.get(FieldCommon.YEAR_NUMBER)); - } - - // 翻译 - String standardCode = es.getStandardCode(); - String nameCode = es.getNameCode(); - String categoryCode = es.getCategoryCode(); - if (StringUtils.isNotBlank(standardCode)) { - es.setStandardCode(excelUtils.translateDictValue("enterprise_standard_code", standardCode, listDict)); - } - if (StringUtils.isNotBlank(nameCode)) { - es.setNameCode(excelUtils.translateDictValue("enterprise_name_code", nameCode, listDict)); - } - if (StringUtils.isNotBlank(categoryCode)) { - es.setCategoryCode(excelUtils.translateDictValue("standard_category_code", categoryCode, listDict)); - } - // 根据文件路径获取文件Id - String originPath = dto.getSclj(); - if (StrUtil.isNotBlank(originPath)) { - String filePath = this.getFilePath(originPath); - if (MinioUtil.doesObjectExist(filePath)) { - // 存入关系表 - OSSFile ossFile = new OSSFile(); - ossFile.setUrl(filePath); - ossFile.setStandardNo(dto.getBzh()); - ossFile.setFileName(FileUtil.getName(filePath)); - ossFile.setStandardFileType("publish_of_original"); - ossFileList.add(ossFile); - } - } - esList.add(es); - } catch (Exception e) { - log.error("导入转换企标数据时发生错误:{}", e.getMessage()); - log.error("错误数据:{}", dto.toString()); - errImportList.add(dto); - } - } - // 保存数据 - // 1. 首先获取所有现有的企标标准号 - List existingEntities = esService.list(); - - // 2. 创建一个Map,用于快速查找是否存在相同的标准号 - Map standardNumberToEntityMap = new HashMap<>(); - for (LawsEnterpriseStandard existingEntity : existingEntities) { - standardNumberToEntityMap.put(existingEntity.getStandardNumber(), existingEntity); - } - - // 3. 将文件关系列表转为Map,用于快速查找 - Map> standardNumberToFileMap = ossFileList.stream().collect(Collectors.groupingBy(OSSFile::getStandardNo)); - - // 4. 遍历待保存或更新的列表,设置ID - StringBuilder oldIds = new StringBuilder(); - StringBuilder newIds = new StringBuilder(); - - // 获取所有相关标准号 - List replaceStandardNoList = esList.stream().map(LawsEnterpriseStandard::getStandardNumber).collect(Collectors.toList()); - replaceStandardNoList.addAll(esList.stream().map(LawsEnterpriseStandard::getSubstituteStandardNumber).collect(Collectors.toList())); - replaceStandardNoList.addAll(esList.stream().map(LawsEnterpriseStandard::getReplacedByStandardNumber).collect(Collectors.toList())); - // 清除所有外标 - LambdaQueryWrapper replacedStandardWrapper = new LambdaQueryWrapper<>(); - replacedStandardWrapper - .in(LawsReplacedStandard::getReplaced, replaceStandardNoList).or() - .in(LawsReplacedStandard::getReplacedBy, replaceStandardNoList); - lawsReplacedStandardService.remove(replacedStandardWrapper); - for (LawsEnterpriseStandard entity : esList) { - LawsEnterpriseStandard existingEntity = standardNumberToEntityMap.get(entity.getStandardNumber()); - if (existingEntity != null) { - // 如果存在执行更新操作 - // 代替 - lawsReplacedStandardService.removeRelation(existingEntity.getStandardNumber(), 1); - // 删除文件关联 - LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); - wrapper.eq(OSSFile::getStandardId, existingEntity.getId()); - ossFileService.remove(wrapper); - // 拼接老id - oldIds.append(existingEntity.getId()).append(","); - - entity.setId(existingEntity.getId()); - } - String standardNumber = entity.getStandardNumber(); - String tdbzh = entity.getSubstituteStandardNumber(); - String btdbzh = entity.getReplacedByStandardNumber(); - // 代替标准号 - if (StringUtils.isNotBlank(tdbzh)) { - lawsReplacedStandardService.addRelationOldSystemSync(tdbzh, standardNumber, 1); - } - // 被代替标准号 - if (StringUtils.isNotBlank(btdbzh)) { - List replaceCodeList = Arrays.asList(btdbzh.split(",")); - replaceCodeList.forEach(replaceCode -> { - lawsReplacedStandardService.addRelationOldSystemSync(standardNumber, replaceCode, 1); - }); - } - entity.setSubstituteStandardNumber(null); - entity.setReplacedByStandardNumber(null); - // 保存标准 - esService.saveOrUpdate(entity); - // 保存文件关联 - String standardId = entity.getId(); - // 保存文件关联 - List ossFiles = standardNumberToFileMap.get(entity.getStandardNumber()); - if (ossFiles != null && !ossFiles.isEmpty()) { - OSSFile ossFile = ossFiles.get(0); - ossFile.setStandardId(standardId); - ossFileService.save(ossFile); - } - entity.setId(standardId); - // 拼接新id - newIds.append(standardId).append(","); - } - log.info("老法规企标覆盖导入完成"); - // 获取当前时间戳(毫秒) - long endTime = System.currentTimeMillis(); - // 计算执行时间(毫秒) - long executionTime = endTime - startTime; - log.info("代码执行时间:" + executionTime + " 毫秒"); - // es中删除数据 -// if (oldIds.length() > 0) { -// oldIds = new StringBuilder(oldIds.substring(0, oldIds.length() - 1)); -// lawsHomeSearchService.updateEsData(LawsHomeSearchCommon.LAWS_ENTERPRISE_STANDARD, oldIds.toString(), LawsHomeSearchCommon.LAWS_ES_DELETE); -// } -// // 同步es数据库 -// if (newIds.length() > 0) { -// newIds = new StringBuilder(newIds.substring(0, newIds.length() - 1)); -// lawsHomeSearchService.updateEsData(LawsHomeSearchCommon.LAWS_ENTERPRISE_STANDARD, newIds.toString(), LawsHomeSearchCommon.LAWS_ES_ADD); -// } - } - - /** - * 截取正确的文件路径 - * - * @param originalPath 文件路径 - * @return 文件的InputStream - * @throws MinioException - */ - private String getFilePath(String originalPath) { - // 将所有的反斜杠转换为正斜杠 - String normalizedPath = originalPath.replace('\\', '/').replace("//", "/"); - - // 检查路径是否以"/Document"或"Document/"开头 - if (normalizedPath.startsWith("/Document/")) { - // 移除开头的"/Document/" - normalizedPath = normalizedPath.substring("/Document/".length()); - } else if (normalizedPath.startsWith("Document/")) { - // 移除开头的"Document/" - normalizedPath = normalizedPath.substring("Document/".length()); - } - return normalizedPath; - } - - -}