diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/enums/DicCodeEnum.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/enums/DicCodeEnum.java index c1f571268..313ad591e 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/enums/DicCodeEnum.java +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/enums/DicCodeEnum.java @@ -6,6 +6,7 @@ package com.jero.modules.system.enums; public enum DicCodeEnum { REGION("适用地区","1493782108399820801","region"), DUTY_TERRITORY("责任领域","1513417672023441409","duty_territory"), + PROBLEM_TYPE("问题类型","1697066042058821634","wen4_ti2_lei4_xing2"), ; String name; diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/controller/NcrTrackController.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/controller/NcrTrackController.java index 3638b75e0..77aa1c209 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/controller/NcrTrackController.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/controller/NcrTrackController.java @@ -58,7 +58,7 @@ public class NcrTrackController { HttpServletRequest req) { List pageInfo = iNcrTrackService.getPageInfo(ncrTrackVO); //表头排序 - orderHeader(ncrTrackVO, pageInfo); +// orderHeader(ncrTrackVO, pageInfo); Page pages = iNcrTrackService.getPages(pageNo, pageSize, pageInfo); return Result.OK(ncrTrackVO.getCut(),pages); } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/controller/ProblemManagementEOController.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/controller/ProblemManagementEOController.java new file mode 100644 index 000000000..dc442d6ee --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/controller/ProblemManagementEOController.java @@ -0,0 +1,171 @@ +package com.jero.modules.project.controller; + +import java.util.Arrays; +import java.util.List; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import com.jero.common.api.vo.Result; +import com.jero.common.system.query.QueryGenerator; +import com.jero.modules.project.entity.ProblemManagementEO; +import com.jero.modules.project.service.IProblemManagementEOService; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +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; + + + /** + * @Description: 问题管理 + * @Author: jero-boot + * @Date: 2023-09-05 + * @Version: V1.0 + */ +@Api(tags="问题管理") +@RestController +@RequestMapping("/project/problemManagementEO") +@Slf4j +public class ProblemManagementEOController extends JeroController { + @Autowired + private IProblemManagementEOService problemManagementEOService; + + /** + * 分页列表查询 + * + * @param problemManagementEO + * @param pageNo + * @param pageSize + * @param req + * @return + */ + @AutoLog(value = "问题管理-分页列表查询") + @ApiOperation(value="问题管理-分页列表查询", notes="问题管理-分页列表查询") + @GetMapping(value = "/page") + public Result queryPageList(ProblemManagementEO problemManagementEO, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(problemManagementEO, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = problemManagementEOService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 列表查询 + * + * @return + */ + @AutoLog(value = "问题管理-列表查询") + @ApiOperation(value="问题管理-列表查询", notes="问题管理-列表查询") + @GetMapping(value = "/list") + public Result> queryList() { + List list = problemManagementEOService.queryList(); + return Result.OK(list); + } + + /** + * 添加 + * + * @param problemManagementEO + * @return + */ + @AutoLog(value = "问题管理-添加") + @ApiOperation(value="问题管理-添加", notes="问题管理-添加") + @PostMapping(value = "/add") + public Result add(@Validated @RequestBody ProblemManagementEO problemManagementEO) { + problemManagementEOService.add(problemManagementEO); + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param problemManagementEO + * @return + */ + @AutoLog(value = "问题管理-编辑") + @ApiOperation(value="问题管理-编辑", notes="问题管理-编辑") + @PutMapping(value = "/edit") + public Result edit(@Validated @RequestBody ProblemManagementEO problemManagementEO) { + problemManagementEOService.editById(problemManagementEO); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "问题管理-通过id删除") + @ApiOperation(value="问题管理-通过id删除", notes="问题管理-通过id删除") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + problemManagementEOService.deleteById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "问题管理-批量删除") + @ApiOperation(value="问题管理-批量删除", notes="问题管理-批量删除") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.problemManagementEOService.deleteByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + @AutoLog(value = "问题管理-通过id查询") + @ApiOperation(value="问题管理-通过id查询", notes="问题管理-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name="id",required=true) String id, + @RequestParam(name="cut",required=true) String cut) { + ProblemManagementEO problemManagementEO = problemManagementEOService.queryById(id,cut); + if(problemManagementEO==null) { + return Result.error("未找到对应数据"); + } + return Result.OK(problemManagementEO); + } + + /** + * 导出excel + * + * @param request + * @param problemManagementEO + */ + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, ProblemManagementEO problemManagementEO) { + return super.exportXls(request, problemManagementEO, ProblemManagementEO.class, "问题管理"); + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, ProblemManagementEO.class); + } + +} diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/controller/ProjectLawsInventoryEOController.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/controller/ProjectLawsInventoryEOController.java index d3a21eb4f..66ab3f348 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/controller/ProjectLawsInventoryEOController.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/controller/ProjectLawsInventoryEOController.java @@ -10,6 +10,7 @@ import com.jero.common.aspect.annotation.AutoLog; import com.jero.common.constant.enums.CutEnum; import com.jero.common.system.base.controller.JeroController; import com.jero.common.system.query.QueryGenerator; +import com.jero.common.util.PageUtil; import com.jero.modules.document.entity.BussDocumentLibraryEO; import com.jero.modules.document.service.IBussDocumentLibraryEOService; import com.jero.modules.dummy.entity.DummyInventoryBaseEO; @@ -550,7 +551,8 @@ public class ProjectLawsInventoryEOController extends JeroController queryNotComplianList(@RequestParam Map params) { List> result = this.projectLawsInventoryEOService.queryNotComplianList(params); - return Result.OK(result); + Page pages = PageUtil.getPages(Integer.parseInt((String) params.get("pageNo")), Integer.parseInt((String) params.get("pageSize")), result); + return Result.OK(pages); } /** @@ -563,7 +565,7 @@ public class ProjectLawsInventoryEOController extends JeroController params) { + @RequestBody Map params) { this.projectLawsInventoryEOService.exportNotComplianList(response,request, params); } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/controller/ProjectNameInfoEOController.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/controller/ProjectNameInfoEOController.java index 6697e9093..80459604d 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/controller/ProjectNameInfoEOController.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/controller/ProjectNameInfoEOController.java @@ -7,6 +7,7 @@ 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.project.entity.ProjectLibraryBase; import com.jero.modules.project.entity.ProjectNameInfoEO; import com.jero.modules.project.service.IProjectNameInfoEOService; import io.swagger.annotations.Api; @@ -36,7 +37,7 @@ import java.util.List; public class ProjectNameInfoEOController extends JeroController { @Autowired private IProjectNameInfoEOService projectNameInfoEOService; - + /** * 分页列表查询 * @@ -71,6 +72,18 @@ public class ProjectNameInfoEOController extends JeroController list = projectNameInfoEOService.queryList(); return Result.OK(list); } + /** + * 返回项目全拼 + * + * @return + */ + @AutoLog(value = "返回项目全拼") + @ApiOperation(value="返回项目全拼", notes="返回项目全拼") + @GetMapping(value = "/queryProjectNameList") + public Result> queryProjectNameList(String cut) { + List list = projectNameInfoEOService.queryProjectNameList(cut); + return Result.OK(list); + } /** * 添加 diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/entity/ProblemManagementEO.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/entity/ProblemManagementEO.java new file mode 100644 index 000000000..cb741c931 --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/entity/ProblemManagementEO.java @@ -0,0 +1,171 @@ +package com.jero.modules.project.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 com.fasterxml.jackson.annotation.JsonFormat; +import com.jero.modules.oss.entity.OSSFile; +import com.jero.modules.project.vo.ProblemManagementVO; +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; + +import java.io.Serializable; +import java.util.List; + + +/** + * @Description: 问题管理 + * @Author: jero-boot + * @Date: 2023-09-05 + * @Version: V1.0 + */ +@Data +@TableName("problem_management") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="problem_management对象", description="问题管理") +public class ProblemManagementEO implements Serializable { + private static final long serialVersionUID = 1L; + + /**主键*/ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "主键") + private java.lang.String id; + + /**创建人*/ + @ApiModelProperty(value = "创建人") + private java.lang.String createBy; + + /**创建日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "创建日期") + private java.util.Date createTime; + + /**更新人*/ + @ApiModelProperty(value = "更新人") + private java.lang.String updateBy; + + /**更新日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "更新日期") + private java.util.Date updateTime; + + /**所属部门*/ + @ApiModelProperty(value = "所属部门") + private java.lang.String sysOrgCode; + + /**标题*/ + @Excel(name = "标题", width = 15) + @ApiModelProperty(value = "标题") + private java.lang.String title; + + /**问题类型*/ + @Excel(name = "问题类型", width = 15) + @ApiModelProperty(value = "问题类型") + private java.lang.String problemType; + @TableField(exist = false) + private String problemType_dictText; + + /**ps_issue*/ + @Excel(name = "ps_issue", width = 15) + @ApiModelProperty(value = "ps_issue") + private java.lang.String psIssue; + + /**相关法规*/ + @Excel(name = "相关法规", width = 15) + @ApiModelProperty(value = "相关法规") + private java.lang.String lawsId; + + /**相关项目*/ + @Excel(name = "相关项目", width = 15) + @ApiModelProperty(value = "相关项目") + private java.lang.String projectId; + + /**责任部门*/ + @ApiModelProperty(value = "责任部门") + @Excel(name = "*责任领域", width = 15,dicCode ="duty_territory") + private java.lang.String dutyTerritory; + + /**问题状态*/ + @Excel(name = "*问题状态", width = 15,dicCode ="wen4_ti2_lei4_xing2") + @ApiModelProperty(value = "问题状态") + private java.lang.String problemState; + + /**描述和分析*/ + @Excel(name = "描述和分析", width = 15) + @ApiModelProperty(value = "描述和分析") + private java.lang.String description; + + /**相关文件链接*/ + @Excel(name = "相关文件链接", width = 15) + @ApiModelProperty(value = "相关文件链接") + private java.lang.String fileLink; + + /**相关文件*/ + @Excel(name = "相关文件", width = 15) + @ApiModelProperty(value = "相关文件") + private java.lang.String file; + + /**进度追踪*/ + @Excel(name = "进度追踪", width = 15) + @ApiModelProperty(value = "进度追踪") + private java.lang.String progressTracking; + + /**结论*/ + @Excel(name = "结论", width = 15) + @ApiModelProperty(value = "结论") + private java.lang.String conclusion; + + /**审批证据*/ + @Excel(name = "审批证据", width = 15) + @ApiModelProperty(value = "审批证据") + private java.lang.String approvalEvidence; + + /**审批证据链接*/ + @Excel(name = "审批证据链接", width = 15) + @ApiModelProperty(value = "审批证据链接") + private java.lang.String approvalEvidenceLink; + + + @TableField(exist = false) + @ApiModelProperty(value = "相关文件地址链接(前端传参)") + private List fileLinkList; + + @TableField(exist = false) + @ApiModelProperty(value = "进度追踪(前端传参)") + private List progressTrackingList; + + @TableField(exist = false) + @ApiModelProperty(value = "审批证据链接(前端传参)") + private List approvalEvidenceLinkList; + + @TableField(exist = false) + @ApiModelProperty(value = "相关法规中文名") + private String lawsName; + + @TableField(exist = false) + @ApiModelProperty(value = "相关项目中文名") + private String projectName; + + @TableField(exist = false) + @ApiModelProperty(value = "详情文件回显") + private List fileList; + + @TableField(exist = false) + @ApiModelProperty(value = "详情文件回显") + private List approvalEvidenceFileList; + + //用于区分旧数据和新数据(旧数据->old,新数据->new) + @TableField(exist = false) + @ApiModelProperty(value = "旧数据->old,新数据->new") + private String flag; + +} diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/enums/ColourEnum.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/enums/ColourEnum.java index 3261a49a9..952af50dc 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/enums/ColourEnum.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/enums/ColourEnum.java @@ -5,8 +5,8 @@ package com.jero.modules.project.enums; */ public enum ColourEnum { - RED("红色","1"), // 未完成 - YELLOW("黄色","2"), // 已完成 + RED("红","1"), // 未完成 + YELLOW("黄","2"), // 已完成 GREEN("绿色","3"), // 展示数据 BLUE("蓝色","4") // 展示数据 ; diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/enums/ComplianceFlowStatusEnum.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/enums/ComplianceFlowStatusEnum.java index 1eb7e76cf..6949a4ebb 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/enums/ComplianceFlowStatusEnum.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/enums/ComplianceFlowStatusEnum.java @@ -19,6 +19,8 @@ public enum ComplianceFlowStatusEnum { TO_TRACK("待追踪","To be tracked","To be tracked"), UNINVOLVED("不涉及","NA","NA"), TERMINATION_OF_TASK("任务终止","Termination of task","Termination of task"), + LAWS_INCONFORMITY("法规未符合项","Non-compliance of regulations","Non-compliance of regulations"), + LAWS_TO_TRACK("法规待追踪项","Regulations to track items","Regulations to track items"), ; diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/enums/DataEnum.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/enums/DataEnum.java new file mode 100644 index 000000000..fe437a5ea --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/enums/DataEnum.java @@ -0,0 +1,46 @@ +package com.jero.modules.project.enums; + +/** + * 当前状态枚举类 + */ +public enum DataEnum { + + OLD("老数据","OLD"), // 老数据 + NEW("新数据","NEW") // 新数据 + ; + + + String name; + String value; + + private DataEnum(String name, String value) { + this.name = name; + this.value = value; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public static String getTextByValue(String value) { + DataEnum[] values = values(); + for (DataEnum taskStatusEnum : values) { + if (taskStatusEnum.value.equals(value)) { + return taskStatusEnum.name; + } + } + return null; + } +} diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/ProblemManagementEOMapper.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/ProblemManagementEOMapper.java new file mode 100644 index 000000000..2ce1e634d --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/ProblemManagementEOMapper.java @@ -0,0 +1,20 @@ +package com.jero.modules.project.mapper; + +import java.util.List; + +import com.jero.modules.project.entity.ProjectLibraryBase; +import org.apache.ibatis.annotations.Param; +import com.jero.modules.project.entity.ProblemManagementEO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: 问题管理 + * @Author: jero-boot + * @Date: 2023-09-05 + * @Version: V1.0 + */ +public interface ProblemManagementEOMapper extends BaseMapper { + + List queryByIds(@Param("ids") String ids); + +} diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/xml/NcrTrackMapper.xml b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/xml/NcrTrackMapper.xml index 637345b40..e74921d7a 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/xml/NcrTrackMapper.xml +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/xml/NcrTrackMapper.xml @@ -27,20 +27,6 @@ + select + plb.id, + plb.project_name_id, + pni.project_name as project_name, + pyni.id as year_name_id, + pyni.year_name, + plb.target_market, + plb.project_status, + plb.studio_engineer, + studiouser.username as studio_engineer_name, + plb.certification_engineer, + plb.vehicle_platform, + plb.digital_platform, + plb.ipd_info, + plb.vehicle_development_plan, + plb.attestation_plan, + plb.create_by, + plb.create_time, + plb.sys_org_code, + plb.update_by, + plb.update_time, + plb.parent_id, + plb.project_version + from project_library_base as plb + left join project_name_info as pni on plb.project_name_id=pni.id + left join sys_user as studiouser on plb.studio_engineer=studiouser.id + left join project_year_name_info as pyni on plb.year_name_id=pyni.id + + + plb.id in + + #{item} + + + + + diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/xml/ProjectLawsInventoryEOMapper.xml b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/xml/ProjectLawsInventoryEOMapper.xml index 6d2dc3451..cb55c2edf 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/xml/ProjectLawsInventoryEOMapper.xml +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/xml/ProjectLawsInventoryEOMapper.xml @@ -158,8 +158,8 @@ #{item} ) temp - - + + order by temp.serial_number desc diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/IProblemManagementEOService.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/IProblemManagementEOService.java new file mode 100644 index 000000000..29b406652 --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/IProblemManagementEOService.java @@ -0,0 +1,61 @@ +package com.jero.modules.project.service; + +import com.jero.modules.project.entity.ProblemManagementEO; +import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + +/** + * @Description: 问题管理 + * @Author: jero-boot + * @Date: 2023-09-05 + * @Version: V1.0 + */ +public interface IProblemManagementEOService extends IService { + + /** + * 保存 + * + * @param problemManagementEO + * @return + */ + void add(ProblemManagementEO problemManagementEO); + + /** + * 更新 + * + * @param problemManagementEO + * @return + */ + void editById(ProblemManagementEO problemManagementEO); + + /** + * 通过id删除 + * + * @param id + * @return + */ + void deleteById(String id); + + /** + * 批量删除 + * + * @param ids + * @return + */ + void deleteByIds(List ids); + + /** + * 通过id查询 + * + * @param id + * @return + */ + ProblemManagementEO queryById(String id,String cut); + + /** + * 列表查询 + * + * @return + */ + List queryList(); +} diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/IProjectNameInfoEOService.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/IProjectNameInfoEOService.java index 1d430b3db..b1f3753eb 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/IProjectNameInfoEOService.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/IProjectNameInfoEOService.java @@ -1,5 +1,6 @@ package com.jero.modules.project.service; +import com.jero.modules.project.entity.ProjectLibraryBase; import com.jero.modules.project.entity.ProjectNameInfoEO; import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; @@ -59,6 +60,12 @@ public interface IProjectNameInfoEOService extends IService { */ List queryList(); + /** + * 返回项目全拼 + * @return + */ + List queryProjectNameList(String cut); + //void getSpaceInfo(String cut); diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/NcrTrackServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/NcrTrackServiceImpl.java index 2dd1e5608..91c89f8d2 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/NcrTrackServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/NcrTrackServiceImpl.java @@ -1,6 +1,8 @@ package com.jero.modules.project.service.impl; -import com.alibaba.fastjson.JSONObject; +import cn.hutool.core.util.ZipUtil; +import com.aliyuncs.utils.IOUtils; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -8,40 +10,71 @@ import com.jero.common.constant.enums.CutEnum; import com.jero.common.exception.JeroBootException; import com.jero.common.system.vo.DictModel; import com.jero.common.system.vo.LoginUser; +import com.jero.common.util.oss.CosBootUtil; +import com.jero.modules.document.entity.BussDocumentLibraryEO; +import com.jero.modules.document.service.impl.BussDocumentLibraryEOServiceImpl; +import com.jero.modules.dummy.enums.OrderEnum; +import com.jero.modules.oss.entity.OSSFile; +import com.jero.modules.oss.service.IOSSFileService; +import com.jero.modules.project.entity.ProblemManagementEO; +import com.jero.modules.project.entity.ProjectLibraryBase; import com.jero.modules.project.entity.ProjectTaskInventoryDetailEO; +import com.jero.modules.project.enums.ColourEnum; +import com.jero.modules.project.enums.ComplianceFlowStatusEnum; +import com.jero.modules.project.enums.DataEnum; import com.jero.modules.project.enums.ReviewResultEnum; import com.jero.modules.project.mapper.NcrTrackMapper; +import com.jero.modules.project.mapper.ProblemManagementEOMapper; import com.jero.modules.project.service.INcrTrackService; -import com.jero.modules.project.vo.NcrTrackInfoVO; import com.jero.modules.project.vo.NcrTrackVO; +import com.jero.modules.project.vo.NcrTrackVOEn; +import com.jero.modules.project.vo.ProblemManagementVO; import com.jero.modules.system.entity.SysDictItem; import com.jero.modules.system.entity.SysUser; import com.jero.modules.system.enums.DicCodeEnum; -import com.jero.modules.system.service.ISysDictService; import com.jero.modules.system.service.IProjectUserDutyTerritoryService; +import com.jero.modules.system.service.ISysDictService; import com.jero.modules.system.service.ISysUserService; import com.jero.modules.system.service.impl.SysDictItemServiceImpl; +import com.jero.modules.system.util.PDFUtils; +import com.jero.modules.todoCenter.enums.DesignComplianceFlowNodeKeyEnum; +import com.jero.modules.wkflow.entity.ProcessHistoryEO; import com.jero.modules.wkflow.enums.FlowTypeEnum; +import com.jero.modules.wkflow.service.impl.ProcessHistoryEOServiceImpl; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.apache.shiro.SecurityUtils; +import org.aspectj.util.FileUtil; import org.jeecgframework.poi.excel.ExcelExportUtil; import org.jeecgframework.poi.excel.entity.ExportParams; import org.jeecgframework.poi.excel.entity.enmus.ExcelType; +import org.jetbrains.annotations.NotNull; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; import java.io.IOException; +import java.io.InputStream; import java.io.OutputStream; +import java.text.Collator; +import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.Comparator; import java.util.Date; import java.util.HashSet; import java.util.List; +import java.util.Locale; import java.util.Set; import java.util.UUID; import java.util.stream.Collectors; @@ -66,23 +99,35 @@ public class NcrTrackServiceImpl extends ServiceImpl private ISysDictService sysDictService; @Autowired private IProjectUserDutyTerritoryService projectUserDutyTerritoryService; + @Autowired + private ProblemManagementEOServiceImpl problemManagementEOService; + @Autowired + private ProblemManagementEOMapper problemManagementEOMapper; + @Autowired + private BussDocumentLibraryEOServiceImpl bussDocumentLibraryEOService; + @Autowired + private ProcessHistoryEOServiceImpl processHistoryEOService; + @Autowired + private IOSSFileService iOSSFileService; + @Value(value = "${jero.path.upload}") + private String uploadpath; @Override public List getPageInfo(NcrTrackVO ncrTrackVO) { LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); ncrTrackVO.setUserId(loginUser.getId()); - if(StringUtils.isNotBlank(ncrTrackVO.getSerialNumber())){ - if(ncrTrackVO.getSerialNumber().contains("%")){ - ncrTrackVO.setSerialNumber(ncrTrackVO.getSerialNumber().replaceAll("%", "/%")); - } - ncrTrackVO.setSerialNumber(ncrTrackVO.getSerialNumber().replace("*","")); - } - if(StringUtils.isNotBlank(ncrTrackVO.getTitle())){ - if(ncrTrackVO.getTitle().contains("%")){ - ncrTrackVO.setTitle(ncrTrackVO.getTitle().replace("%","/%")); - } - ncrTrackVO.setTitle(ncrTrackVO.getTitle().replace("*","")); - } +// if(StringUtils.isNotBlank(ncrTrackVO.getSerialNumber())){ +// if(ncrTrackVO.getSerialNumber().contains("%")){ +// ncrTrackVO.setSerialNumber(ncrTrackVO.getSerialNumber().replaceAll("%", "/%")); +// } +// ncrTrackVO.setSerialNumber(ncrTrackVO.getSerialNumber().replace("*","")); +// } +// if(StringUtils.isNotBlank(ncrTrackVO.getTitle())){ +// if(ncrTrackVO.getTitle().contains("%")){ +// ncrTrackVO.setTitle(ncrTrackVO.getTitle().replace("%","/%")); +// } +// ncrTrackVO.setTitle(ncrTrackVO.getTitle().replace("*","")); +// } // List sysUserList = sysUserService.list(); @@ -121,15 +166,6 @@ public class NcrTrackServiceImpl extends ServiceImpl List dictItemList = sysDictItemServiceImpl.selectItemsAll(); Set userIdSet = new HashSet<>(); for (NcrTrackVO trackVO : infoList) { - /*if(StringUtils.isNotBlank(trackVO.getDesignInitiatorId())){ - userIdSet.add(trackVO.getDesignInitiatorId()); - } - if(StringUtils.isNotBlank(trackVO.getPrehomoInitiatorId())){ - userIdSet.add(trackVO.getPrehomoInitiatorId()); - } - if(StringUtils.isNotBlank(trackVO.getVerifyInitiatorId())){ - userIdSet.add(trackVO.getVerifyInitiatorId()); - }*/ if(StringUtils.isNotBlank(trackVO.getDesignDutyId())){ userIdSet.add(trackVO.getDesignDutyId()); } @@ -291,6 +327,36 @@ public class NcrTrackServiceImpl extends ServiceImpl } } + if(!trackVOList.isEmpty()){ + //流程实例id + List prcIdList = trackVOList.stream() + .filter(e -> StringUtils.isNotBlank(e.getPrcId())).map(NcrTrackVO::getPrcId).collect(Collectors.toList()); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.orderByAsc("create_time"); + queryWrapper.lambda().in(ProcessHistoryEO::getActiProcInstId, prcIdList); + List processHistoryEOList = processHistoryEOService.list(queryWrapper); + this.processHistoryEOService.disposeData(processHistoryEOList,ncrTrackVO.getCut()); + for (NcrTrackVO trackVO : trackVOList) { + trackVO.setCreateTime(null); + List collect = processHistoryEOList.stream().filter(e -> StringUtils.isNotBlank(e.getActiProcInstId()) + && e.getActiProcInstId().equals(trackVO.getPrcId())).collect(Collectors.toList()); + //创建时间为任务节点为符合性审查,处理结果为不符合或待追踪的操作时间 + //更新时间为最新的流程时间 + if(!collect.isEmpty()){ + //更新时间 + trackVO.setUpdateTime(collect.get(collect.size()-1).getCreateTime()); + //创建时间 + List processHistoryEOS = collect.stream().filter(e -> StringUtils.isNotBlank(e.getTaskDefinitionKey()) + && DesignComplianceFlowNodeKeyEnum.FGGCSSH.getValue().equals(e.getTaskDefinitionKey()) + && (ComplianceFlowStatusEnum.INCONFORMITY.getValue().equals(e.getOperatorResult()) || ComplianceFlowStatusEnum.TO_TRACK.getValue().equals(e.getOperatorResult()))).collect(Collectors.toList()); + + if (CollectionUtils.isNotEmpty(processHistoryEOS)) { + trackVO.setCreateTime(processHistoryEOS.get(0).getCreateTime()); + } + } + } + } + List trackVOListTemp = new ArrayList<>(); List ncrTrackVOListTemp = ncrTrackVO.getNcrTrackVOList(); @@ -305,14 +371,415 @@ public class NcrTrackServiceImpl extends ServiceImpl } } } + List ncrTrackVOList = getProblemManagementData(ncrTrackVOListTemp,ncrTrackVO.getCut()); if(trackVOListTemp.size() != 0){ + //旧数据处理 + oldData(ncrTrackVO, trackVOListTemp); + if(!ncrTrackVOList.isEmpty()){ + trackVOListTemp.addAll(ncrTrackVOList); + } + //条件查询 + trackVOListTemp = parameterQuery(ncrTrackVO, trackVOListTemp); return trackVOListTemp; }else{ + //旧数据处理 + oldData(ncrTrackVO, trackVOList); + if(!ncrTrackVOList.isEmpty()){ + trackVOList.addAll(ncrTrackVOList); + } + //条件查询 + trackVOList = parameterQuery(ncrTrackVO, trackVOList); + //表头排序 + heartSort(ncrTrackVO, trackVOList); + + return trackVOList; } } + private void heartSort(NcrTrackVO ncrTrackVO, List trackVOList) { + Collator comparator = Collator.getInstance(Locale.CHINESE); + if ("title".equals(ncrTrackVO.getOrderByField())) { + if (OrderEnum.POSITIVE.getValue().equals(ncrTrackVO.getOrderBy())) { + Collections.sort(trackVOList, (e1, e2) -> { + String e1Field = StringUtils.isNotBlank(e1.getTitle()) ? e1.getTitle() : ""; + String e2Field = StringUtils.isNotBlank(e2.getTitle()) ? e2.getTitle() : ""; + return comparator.compare(e1Field, e2Field); + }); + } else if (OrderEnum.REVERSE.getValue().equals(ncrTrackVO.getOrderBy())) { + Collections.sort(trackVOList, (e1, e2) -> { + String e1Field = StringUtils.isNotBlank(e1.getTitle()) ? e1.getTitle() : ""; + String e2Field = StringUtils.isNotBlank(e2.getTitle()) ? e2.getTitle() : ""; + return comparator.compare(e2Field, e1Field); + }); + } + } + if ("lawsName".equals(ncrTrackVO.getOrderByField())) { + if (OrderEnum.POSITIVE.getValue().equals(ncrTrackVO.getOrderBy())) { + Collections.sort(trackVOList, (e1, e2) -> { + String e1Field = StringUtils.isNotBlank(e1.getLawsName()) ? e1.getLawsName() : ""; + String e2Field = StringUtils.isNotBlank(e2.getLawsName()) ? e2.getLawsName() : ""; + return comparator.compare(e1Field, e2Field); + }); + } else if (OrderEnum.REVERSE.getValue().equals(ncrTrackVO.getOrderBy())) { + Collections.sort(trackVOList, (e1, e2) -> { + String e1Field = StringUtils.isNotBlank(e1.getLawsName()) ? e1.getLawsName() : ""; + String e2Field = StringUtils.isNotBlank(e2.getLawsName()) ? e2.getLawsName() : ""; + return comparator.compare(e2Field, e1Field); + }); + } + } + if ("projectName".equals(ncrTrackVO.getOrderByField())) { + if (OrderEnum.POSITIVE.getValue().equals(ncrTrackVO.getOrderBy())) { + Collections.sort(trackVOList, (e1, e2) -> { + String e1Field = StringUtils.isNotBlank(e1.getProjectName()) ? e1.getProjectName() : ""; + String e2Field = StringUtils.isNotBlank(e2.getProjectName()) ? e2.getProjectName() : ""; + return comparator.compare(e1Field, e2Field); + }); + } else if (OrderEnum.REVERSE.getValue().equals(ncrTrackVO.getOrderBy())) { + Collections.sort(trackVOList, (e1, e2) -> { + String e1Field = StringUtils.isNotBlank(e1.getProjectName()) ? e1.getProjectName() : ""; + String e2Field = StringUtils.isNotBlank(e2.getProjectName()) ? e2.getProjectName() : ""; + return comparator.compare(e2Field, e1Field); + }); + } + } + if ("problemType_dictText".equals(ncrTrackVO.getOrderByField())) { + if (OrderEnum.POSITIVE.getValue().equals(ncrTrackVO.getOrderBy())) { + Collections.sort(trackVOList, (e1, e2) -> { + String e1Field = StringUtils.isNotBlank(e1.getProblemType_dictText()) ? e1.getProblemType_dictText() : ""; + String e2Field = StringUtils.isNotBlank(e2.getProblemType_dictText()) ? e2.getProblemType_dictText() : ""; + return comparator.compare(e1Field, e2Field); + }); + } else if (OrderEnum.REVERSE.getValue().equals(ncrTrackVO.getOrderBy())) { + Collections.sort(trackVOList, (e1, e2) -> { + String e1Field = StringUtils.isNotBlank(e1.getProblemType_dictText()) ? e1.getProblemType_dictText() : ""; + String e2Field = StringUtils.isNotBlank(e2.getProblemType_dictText()) ? e2.getProblemType_dictText() : ""; + return comparator.compare(e2Field, e1Field); + }); + } + } + if ("dutyTerritory".equals(ncrTrackVO.getOrderByField())) { + if (OrderEnum.POSITIVE.getValue().equals(ncrTrackVO.getOrderBy())) { + Collections.sort(trackVOList, (e1, e2) -> { + String e1Field = StringUtils.isNotBlank(e1.getDutyTerritory()) ? e1.getDutyTerritory() : ""; + String e2Field = StringUtils.isNotBlank(e2.getDutyTerritory()) ? e2.getDutyTerritory() : ""; + return comparator.compare(e1Field, e2Field); + }); + } else if (OrderEnum.REVERSE.getValue().equals(ncrTrackVO.getOrderBy())) { + Collections.sort(trackVOList, (e1, e2) -> { + String e1Field = StringUtils.isNotBlank(e1.getDutyTerritory()) ? e1.getDutyTerritory() : ""; + String e2Field = StringUtils.isNotBlank(e2.getDutyTerritory()) ? e2.getDutyTerritory() : ""; + return comparator.compare(e2Field, e1Field); + }); + } + } + if ("problemState".equals(ncrTrackVO.getOrderByField())) { + if (OrderEnum.POSITIVE.getValue().equals(ncrTrackVO.getOrderBy())) { + Collections.sort(trackVOList, (e1, e2) -> { + String e1Field = StringUtils.isNotBlank(e1.getProblemState()) ? e1.getProblemState() : ""; + String e2Field = StringUtils.isNotBlank(e2.getProblemState()) ? e2.getProblemState() : ""; + return comparator.compare(e1Field, e2Field); + }); + } else if (OrderEnum.REVERSE.getValue().equals(ncrTrackVO.getOrderBy())) { + Collections.sort(trackVOList, (e1, e2) -> { + String e1Field = StringUtils.isNotBlank(e1.getProblemState()) ? e1.getProblemState() : ""; + String e2Field = StringUtils.isNotBlank(e2.getProblemState()) ? e2.getProblemState() : ""; + return comparator.compare(e2Field, e1Field); + }); + } + } + if ("createBy".equals(ncrTrackVO.getOrderByField())) { + if (OrderEnum.POSITIVE.getValue().equals(ncrTrackVO.getOrderBy())) { + Collections.sort(trackVOList, (e1, e2) -> { + String e1Field = StringUtils.isNotBlank(e1.getCreateBy()) ? e1.getCreateBy() : ""; + String e2Field = StringUtils.isNotBlank(e2.getCreateBy()) ? e2.getCreateBy() : ""; + return comparator.compare(e1Field, e2Field); + }); + } else if (OrderEnum.REVERSE.getValue().equals(ncrTrackVO.getOrderBy())) { + Collections.sort(trackVOList, (e1, e2) -> { + String e1Field = StringUtils.isNotBlank(e1.getCreateBy()) ? e1.getCreateBy() : ""; + String e2Field = StringUtils.isNotBlank(e2.getCreateBy()) ? e2.getCreateBy() : ""; + return comparator.compare(e2Field, e1Field); + }); + } + } + if ("createTime".equals(ncrTrackVO.getOrderByField())) { + if (OrderEnum.POSITIVE.getValue().equals(ncrTrackVO.getOrderBy())) { + Collections.sort(trackVOList, new Comparator() { + @Override + public int compare(NcrTrackVO o1, NcrTrackVO o2) { + if (o1.getCreateTime() == null || o2.getCreateTime() == null) { + return 0; + } + return o1.getCreateTime().compareTo(o2.getCreateTime()); + } + }); + } else if (OrderEnum.REVERSE.getValue().equals(ncrTrackVO.getOrderBy())) { + Collections.sort(trackVOList, new Comparator() { + @Override + public int compare(NcrTrackVO o1, NcrTrackVO o2) { + if (o1.getCreateTime() == null || o2.getCreateTime() == null) { + return 0; + } + return o2.getCreateTime().compareTo(o1.getCreateTime()); + } + }); + } + } + if ("updateTime".equals(ncrTrackVO.getOrderByField())) { + if (OrderEnum.POSITIVE.getValue().equals(ncrTrackVO.getOrderBy())) { + Collections.sort(trackVOList, new Comparator() { + @Override + public int compare(NcrTrackVO o1, NcrTrackVO o2) { + if (o1.getUpdateTime() == null || o2.getUpdateTime() == null) { + return 0; + } + return o1.getUpdateTime().compareTo(o2.getUpdateTime()); + } + }); + } else if (OrderEnum.REVERSE.getValue().equals(ncrTrackVO.getOrderBy())) { + Collections.sort(trackVOList, new Comparator() { + @Override + public int compare(NcrTrackVO o1, NcrTrackVO o2) { + if (o1.getUpdateTime() == null || o2.getUpdateTime() == null) { + return 0; + } + return o2.getUpdateTime().compareTo(o1.getUpdateTime()); + } + }); + } + } + } + + @NotNull + private List parameterQuery(NcrTrackVO ncrTrackVO, List trackVOList) { + if(!trackVOList.isEmpty()){ + if(StringUtils.isNotBlank(ncrTrackVO.getTitle())){ + trackVOList = trackVOList.stream().filter(e->StringUtils.isNotBlank(e.getTitle()) + && e.getTitle().contains(ncrTrackVO.getTitle())).collect(Collectors.toList()); + } + if(StringUtils.isNotBlank(ncrTrackVO.getLawsName())){ + trackVOList = trackVOList.stream().filter(e->StringUtils.isNotBlank(e.getLawsName()) + && e.getLawsName().contains(ncrTrackVO.getLawsName())).collect(Collectors.toList()); + } + if(StringUtils.isNotBlank(ncrTrackVO.getProjectId())){ + trackVOList = trackVOList.stream().filter(e->StringUtils.isNotBlank(e.getProjectId()) + && e.getProjectId().contains(ncrTrackVO.getProjectId())).collect(Collectors.toList()); + } + if(StringUtils.isNotBlank(ncrTrackVO.getProblemType_dictText())){ + trackVOList = trackVOList.stream().filter(e->StringUtils.isNotBlank(e.getProblemType_dictText()) + && e.getProblemType_dictText().contains(ncrTrackVO.getProblemType_dictText())).collect(Collectors.toList()); + } + if(StringUtils.isNotBlank(ncrTrackVO.getDutyTerritory())){ + trackVOList = trackVOList.stream().filter(e->StringUtils.isNotBlank(e.getDutyTerritory()) + && e.getDutyTerritory().contains(ncrTrackVO.getDutyTerritory())).collect(Collectors.toList()); + } + if(StringUtils.isNotBlank(ncrTrackVO.getProblemState())){ + trackVOList = trackVOList.stream().filter(e->StringUtils.isNotBlank(e.getProblemState()) + && e.getProblemState().contains(ncrTrackVO.getProblemState())).collect(Collectors.toList()); + } + } + return trackVOList; + } + + private void oldData(NcrTrackVO ncrTrackVO, List trackVOListTemp) { + for (NcrTrackVO trackVO : trackVOListTemp) { + String problemType = trackVO.getProblemType(); + + trackVO.setCreateBy(trackVO.getDuty()); + trackVO.setLawsName(trackVO.getSerialNumber()); + trackVO.setFlag(DataEnum.OLD.getValue()); + if(ComplianceFlowStatusEnum.INCONFORMITY.getCnName().equals(problemType) + || ComplianceFlowStatusEnum.INCONFORMITY.getEnName().equals(problemType)){ + if(CutEnum.CN.getValue().equals(ncrTrackVO.getCut())){ + trackVO.setProblemType_dictText(ComplianceFlowStatusEnum.LAWS_INCONFORMITY.getCnName()); + }else{ + trackVO.setProblemType_dictText(ComplianceFlowStatusEnum.LAWS_INCONFORMITY.getEnName()); + } + trackVO.setProblemState(ColourEnum.RED.getName()); + } + if(ComplianceFlowStatusEnum.TO_TRACK.getCnName().equals(problemType) + ||ComplianceFlowStatusEnum.TO_TRACK.getEnName().equals(problemType)){ + if(CutEnum.CN.getValue().equals(ncrTrackVO.getCut())){ + trackVO.setProblemType_dictText(ComplianceFlowStatusEnum.LAWS_TO_TRACK.getCnName()); + }else{ + trackVO.setProblemType_dictText(ComplianceFlowStatusEnum.LAWS_TO_TRACK.getEnName()); + } + trackVO.setProblemState(ColourEnum.YELLOW.getName()); + } + trackVO.setTitle(trackVO.getFlowType()+trackVO.getProblemType_dictText()); + } + } + + @NotNull + private List getProblemManagementData(List ncrTrackVOListTemp,String cut) { + List idList = new ArrayList<>(); + if(!ncrTrackVOListTemp.isEmpty()){ + //处理导出时勾选数据 + idList = ncrTrackVOListTemp.stream().filter(e -> StringUtils.isNotBlank(e.getFlowType())).map(NcrTrackVO::getId).collect(Collectors.toList()); + } + List managementEOList = new ArrayList<>(); + if(!idList.isEmpty()){ + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.in(ProblemManagementEO::getId,idList); + managementEOList = problemManagementEOService.list(wrapper); + }else{ + managementEOList = problemManagementEOService.list(); + } + //法规 + List lawsIdList = managementEOList.stream() + .filter(e->StringUtils.isNotBlank(e.getLawsId())).map(ProblemManagementEO::getLawsId).collect(Collectors.toList()); + //项目 + List projectIdList = managementEOList.stream() + .filter(e->StringUtils.isNotBlank(e.getProjectId())).map(ProblemManagementEO::getProjectId).collect(Collectors.toList()); + //相关文件 + List fileList = managementEOList.stream() + .filter(e -> StringUtils.isNotBlank(e.getFile())).map(ProblemManagementEO::getFile).collect(Collectors.toList()); + //审批证据 + List approvalEvidenceList = managementEOList.stream() + .filter(e -> StringUtils.isNotBlank(e.getApprovalEvidence())).map(ProblemManagementEO::getApprovalEvidence).collect(Collectors.toList()); + List connectList = new ArrayList<>(); + if(!fileList.isEmpty()){ + connectList.addAll(fileList); + } + if(!approvalEvidenceList.isEmpty()){ + connectList.addAll(approvalEvidenceList); + } + List fileInfoList = new ArrayList<>(); + if(!connectList.isEmpty()){ + fileInfoList = iOSSFileService.getFileInfosByConnectId(StringUtils.join(connectList,",")); + } + + List documentLibraryEOList = new ArrayList<>(); + if(!lawsIdList.isEmpty()){ + Set lawIdSet = new HashSet<>(); + for (String lawIds : lawsIdList) { + lawIdSet.addAll(Arrays.asList(lawIds.split(","))); + } + if(!lawIdSet.isEmpty()){ + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.in(BussDocumentLibraryEO::getId, lawIdSet); + documentLibraryEOList = bussDocumentLibraryEOService.list(wrapper); + } + } + + List projectLibraryBaseList = new ArrayList<>(); + if(!projectIdList.isEmpty()){ + Set projectIdSet = new HashSet<>(); + for (String projectIds : projectIdList) { + projectIdSet.addAll(Arrays.asList(projectIds.split(","))); + } + if(!projectIdSet.isEmpty()){ + projectLibraryBaseList = problemManagementEOMapper.queryByIds(StringUtils.join(projectIdSet,",")); + } + } + //wen4_ti2_lei4_xing2 问题类型 + List problemTypeList = sysDictService.queryDictItemsByCode(DicCodeEnum.PROBLEM_TYPE.getCode()); + List ncrTrackVOList = new ArrayList<>(); + for (ProblemManagementEO problemManagementEO : managementEOList) { + //问题类型 + List dictModelList = problemTypeList.stream().filter(e -> e.getValue().equals(problemManagementEO.getProblemType())).collect(Collectors.toList()); + + if(!dictModelList.isEmpty()){ + if(CutEnum.CN.getValue().equals(cut)){ + problemManagementEO.setProblemType_dictText(dictModelList.get(0).getText()); + }else{ + problemManagementEO.setProblemType_dictText(dictModelList.get(0).getTextEn()); + } + } + + //相关法规 + if(StringUtils.isNotBlank(problemManagementEO.getLawsId())){ + if(!documentLibraryEOList.isEmpty()){ + List documentLibraryEOListTemp = documentLibraryEOList.stream() + .filter(e->StringUtils.isNotBlank(problemManagementEO.getLawsId()) + && problemManagementEO.getLawsId().contains(e.getId())).collect(Collectors.toList()); + List serialNumberList = documentLibraryEOListTemp.stream().map(BussDocumentLibraryEO::getSerialNumber).collect(Collectors.toList()); + problemManagementEO.setLawsName(com.jero.modules.system.util.StringUtils.join(serialNumberList,",")); + } + } + //相关项目 + if(StringUtils.isNotBlank(problemManagementEO.getProjectId())){ + List projectLibraryBaseListTemp = projectLibraryBaseList.stream() + .filter(e->StringUtils.isNotBlank(problemManagementEO.getProjectId()) + && problemManagementEO.getProjectId().contains(e.getId())).collect(Collectors.toList()); + //目标市场数据字典 + List targetMarketList = sysDictService.queryDictItemsByCode(DicCodeEnum.REGION.getCode()); + List projectNameList = new ArrayList<>(); + for (ProjectLibraryBase projectLibraryBase : projectLibraryBaseListTemp) { + //目标市场 + String targetMarket = problemManagementEOService.getMarket(cut, targetMarketList, projectLibraryBase); + //主项目的版本号 + String projectVersion = ""; + if(com.jero.modules.system.util.StringUtils.isBlank(projectLibraryBase.getParentId())){ + projectVersion = "00"; + }else{ + projectVersion = projectLibraryBase.getProjectVersion(); + } + projectNameList.add(projectLibraryBase.getProjectName() + + "-" + projectLibraryBase.getYearName() + + "-" + targetMarket + +"-"+projectVersion); + } + if(!projectNameList.isEmpty()){ + problemManagementEO.setProjectName(StringUtils.join(projectNameList,",")); + } + } + + //相关文件连接 + if(StringUtils.isNotBlank(problemManagementEO.getFileLink())){ + List list = new ArrayList<>(); + for (String fileLink : problemManagementEO.getFileLink().split(",")) { + ProblemManagementVO problemManagementVO = new ProblemManagementVO(); + problemManagementVO.setFileLink(fileLink); + list.add(problemManagementVO); + } + problemManagementEO.setFileLinkList(list); + } + + //审批证据连接 + if(StringUtils.isNotBlank(problemManagementEO.getApprovalEvidenceLink())){ + List list = new ArrayList<>(); + for (String approvalEvidenceLink : problemManagementEO.getApprovalEvidenceLink().split(",")) { + ProblemManagementVO problemManagementVO = new ProblemManagementVO(); + problemManagementVO.setApprovalEvidenceLink(approvalEvidenceLink); + list.add(problemManagementVO); + } + problemManagementEO.setApprovalEvidenceLinkList(list); + } + //进度追踪 + if(StringUtils.isNotBlank(problemManagementEO.getProgressTracking())){ + List list = new ArrayList<>(); + for (String progressTracking : problemManagementEO.getProgressTracking().split(",")) { + ProblemManagementVO problemManagementVO = new ProblemManagementVO(); + problemManagementVO.setProgressTracking(progressTracking); + list.add(problemManagementVO); + } + problemManagementEO.setProgressTrackingList(list); + } + //相关文件 + if(StringUtils.isNotBlank(problemManagementEO.getFile())){ + List collect = fileInfoList.stream() + .filter(e -> e.getConnectId().equals(problemManagementEO.getFile())).collect(Collectors.toList()); + problemManagementEO.setFileList(collect); + } + //审批证据 + if(StringUtils.isNotBlank(problemManagementEO.getApprovalEvidence())){ + List collect = fileInfoList.stream() + .filter(e -> e.getConnectId().equals(problemManagementEO.getApprovalEvidence())).collect(Collectors.toList()); + problemManagementEO.setApprovalEvidenceFileList(collect); + } + NcrTrackVO ncrTrackVOTemp = new NcrTrackVO(); + BeanUtils.copyProperties(problemManagementEO,ncrTrackVOTemp); + ncrTrackVOTemp.setUuid(ncrTrackVOTemp.getId()); + ncrTrackVOTemp.setFlag(DataEnum.NEW.getValue()); + ncrTrackVOList.add(ncrTrackVOTemp); + } + return ncrTrackVOList; + } + private String getMarket(List targetMarketList, NcrTrackVO trackVO,String cut) { //目标市场 List dictModelList = new ArrayList<>(); @@ -472,36 +939,183 @@ public class NcrTrackServiceImpl extends ServiceImpl */ @Override public void exportData(HttpServletResponse response, HttpServletRequest request, NcrTrackVO ncrTrackVO) { + OutputStream os = null; try { + LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + SimpleDateFormat sdfTemp = new SimpleDateFormat("yyyy-MM-dd"); //导出的数据 List dataList = getPageInfo(ncrTrackVO); - List dataInfoList = new ArrayList<>(); + List ncrTrackVOList = new ArrayList<>(); + for (NcrTrackVO trackVO : dataList) { + if(ObjectUtils.isNotEmpty(trackVO.getCreateTime())){ + trackVO.setCreateTimeStr(sdf.format(trackVO.getCreateTime())); + } + NcrTrackVO ncrTrackVO1 = new NcrTrackVO(); + BeanUtils.copyProperties(trackVO,ncrTrackVO1); + ncrTrackVOList.add(ncrTrackVO1); + } + + List fileList = dataList.stream() + .filter(e -> StringUtils.isNotBlank(e.getFile())).map(NcrTrackVO::getFile).collect(Collectors.toList()); + List approvalEvidenceList = dataList + .stream().filter(e -> StringUtils.isNotBlank(e.getApprovalEvidence())).map(NcrTrackVO::getApprovalEvidence).collect(Collectors.toList()); + + response.setContentType("application/force-download"); Workbook workbook = new XSSFWorkbook(); - OutputStream excelOS = response.getOutputStream();; ExportParams exportParams = new ExportParams(); exportParams.setType(ExcelType.XSSF); - if(StringUtils.isBlank(ncrTrackVO.getProjectLibraryId())){ + List dataInfoList = new ArrayList<>(); + if(CutEnum.CN.getValue().equals(ncrTrackVO.getCut())){ workbook = ExcelExportUtil.exportExcel(exportParams, NcrTrackVO.class, dataList); }else{ - //项目详情中的导出(没有相关项目字段) for (NcrTrackVO trackVO : dataList) { - NcrTrackInfoVO ncrTrackInfoVO = new NcrTrackInfoVO(); - BeanUtils.copyProperties(trackVO,ncrTrackInfoVO); - dataInfoList.add(ncrTrackInfoVO); + if(ObjectUtils.isNotEmpty(trackVO.getCreateTime())){ + trackVO.setCreateTimeStr(sdf.format(trackVO.getCreateTime())); + } + NcrTrackVOEn ncrTrackVOEn = new NcrTrackVOEn(); + BeanUtils.copyProperties(trackVO,ncrTrackVOEn); + dataInfoList.add(ncrTrackVOEn); } - workbook = ExcelExportUtil.exportExcel(exportParams, NcrTrackInfoVO.class, dataInfoList); + workbook = ExcelExportUtil.exportExcel(exportParams, NcrTrackVOEn.class, dataInfoList); } + String path = uploadpath + "/tempZip"; + File fileTemp = new File(path); + if (fileTemp.exists()) { + fileTemp.delete(); + } + fileTemp.mkdirs(); + //excel + String name = ""; + if(CutEnum.CN.getValue().equals(ncrTrackVO.getCut())){ + name = "问题管理"; + }else{ + name = "Problem management"; + } + OutputStream excelOS = new FileOutputStream(path + File.separator + name + sdfTemp.format(new Date())+".xlsx"); workbook.write(excelOS); excelOS.flush(); + + List connectIdList = new ArrayList<>(); + if(!fileList.isEmpty()){ + connectIdList.addAll(fileList); + } + if(!approvalEvidenceList.isEmpty()){ + connectIdList.addAll(approvalEvidenceList); + } + if(!connectIdList.isEmpty()){ + List fileInfosList = iOSSFileService.getFileInfosByConnectId(StringUtils.join(connectIdList, ",")); + for (NcrTrackVO trackVO : ncrTrackVOList) { + String folder = trackVO.getTitle()+sdfTemp.format(trackVO.getCreateTime()); + List connectIdListTemp = new ArrayList<>(); + if(StringUtils.isNotBlank(trackVO.getFile())){ + connectIdListTemp.add(trackVO.getFile()); + } + if(StringUtils.isNotBlank(trackVO.getApprovalEvidence())){ + connectIdListTemp.add(trackVO.getApprovalEvidence()); + } + if(!connectIdListTemp.isEmpty()){ + List ossFileList = fileInfosList.stream().filter(e -> connectIdListTemp.contains(e.getConnectId())).collect(Collectors.toList()); + if (ossFileList.size() != 0) { + String fileNowPath = path + File.separator + folder; + File file = new File(fileNowPath); + if (file.exists()) { + file.delete(); + } + file.mkdirs(); + for (OSSFile ossFile : ossFileList) { + String url = ossFile.getUrl(); + //判断文件是否存在 + if(StringUtils.isNotBlank(url)){ + //判断文件是否存在 + boolean b = CosBootUtil.doesObjectExist(url); + if(b){ + InputStream download = CosBootUtil.download(url); + if(url.endsWith(".pdf") || url.endsWith(".PDF")){ + String currentTime = sdf.format(new Date()); + String waterContent = loginUser.getUsername() + " " + currentTime; + File newFile = PDFUtils.PDFWatermark(download,uploadpath,ossFile.getFileName(),waterContent); + download = new FileInputStream(newFile.getPath()); + } + bussDocumentLibraryEOService.copyFile(download, fileNowPath + File.separator + ossFile.getFileName()); + } + } + } + } + } + } + } + + ZipUtil.zip(path, path + ".zip"); + //文件 + FileInputStream fis = new FileInputStream(path + ".zip"); + os = response.getOutputStream(); + + int len = 0; + while ((len = fis.read()) != -1) { + os.write(len); + } + os.flush(); + fis.close(); + + + + + } catch (IOException e) { if(CutEnum.CN.getValue().equals(ncrTrackVO.getCut())){ throw new JeroBootException("下载文件失败"); }else{ throw new JeroBootException("Failed to download file"); } + } finally { + IOUtils.closeQuietly(os); + File file = new File(uploadpath + "/tempZip"); + FileUtil.deleteContents(file); + File fileTemp = new File(uploadpath + "/tempZip.zip"); + FileUtil.deleteContents(fileTemp); } } +// /** +// * 导出数据 +// * @param response +// * @param request +// * @param ncrTrackVO +// */ +// @Override +// public void exportData(HttpServletResponse response, HttpServletRequest request, NcrTrackVO ncrTrackVO) { +// try { +// //导出的数据 +// List dataList = getPageInfo(ncrTrackVO); +// List dataInfoList = new ArrayList<>(); +// response.setContentType("application/force-download"); +// Workbook workbook = new XSSFWorkbook(); +// OutputStream excelOS = response.getOutputStream();; +// ExportParams exportParams = new ExportParams(); +// exportParams.setType(ExcelType.XSSF); +// if(StringUtils.isBlank(ncrTrackVO.getProjectLibraryId())){ +// workbook = ExcelExportUtil.exportExcel(exportParams, NcrTrackVO.class, dataList); +// }else{ +// //项目详情中的导出(没有相关项目字段) +// for (NcrTrackVO trackVO : dataList) { +// NcrTrackInfoVO ncrTrackInfoVO = new NcrTrackInfoVO(); +// BeanUtils.copyProperties(trackVO,ncrTrackInfoVO); +// dataInfoList.add(ncrTrackInfoVO); +// } +// workbook = ExcelExportUtil.exportExcel(exportParams, NcrTrackInfoVO.class, dataInfoList); +// } +// workbook.write(excelOS); +// excelOS.flush(); +// +// } catch (IOException e) { +// if(CutEnum.CN.getValue().equals(ncrTrackVO.getCut())){ +// throw new JeroBootException("下载文件失败"); +// }else{ +// throw new JeroBootException("Failed to download file"); +// } +// } +// } } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProblemManagementEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProblemManagementEOServiceImpl.java new file mode 100644 index 000000000..5751478fe --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProblemManagementEOServiceImpl.java @@ -0,0 +1,299 @@ +package com.jero.modules.project.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.jero.common.constant.enums.CutEnum; +import com.jero.common.system.vo.DictModel; +import com.jero.modules.document.entity.BussDocumentLibraryEO; +import com.jero.modules.document.service.IBussDocumentLibraryEOService; +import com.jero.modules.oss.entity.OSSFile; +import com.jero.modules.oss.service.IOSSFileService; +import com.jero.modules.project.entity.ProblemManagementEO; +import com.jero.modules.project.entity.ProjectLibraryBase; +import com.jero.modules.project.mapper.ProblemManagementEOMapper; +import com.jero.modules.project.service.IProblemManagementEOService; +import com.jero.modules.project.service.IProjectLibraryBaseService; +import com.jero.modules.project.vo.ProblemManagementVO; +import com.jero.modules.system.enums.DicCodeEnum; +import com.jero.modules.system.service.ISysDictService; +import com.jero.modules.system.util.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Date; +import java.util.List; +import java.util.UUID; +import java.util.stream.Collectors; + +/** + * @Description: 问题管理 + * @Author: jero-boot + * @Date: 2023-09-05 + * @Version: V1.0 + */ +@Service +public class ProblemManagementEOServiceImpl extends ServiceImpl implements IProblemManagementEOService { + + + @Autowired + private IOSSFileService iOSSFileService; + @Autowired + private IBussDocumentLibraryEOService bussDocumentLibraryEOService; + @Autowired + private IProjectLibraryBaseService projectLibraryBaseService; + @Autowired + private ISysDictService sysDictService; + @Autowired + private ProblemManagementEOMapper problemManagementEOMapper; + + /** + * 保存 + * + * @param problemManagementEO + * @return + */ + @Override + public void add(ProblemManagementEO problemManagementEO) { + //相关文件地址链接,进度追踪,审批证据链接 + setParam(problemManagementEO); + + //处理相关文件和审批证据 + fileAndApprovalEvidence(problemManagementEO); + + Date now = new Date(); + problemManagementEO.setCreateTime(now); + problemManagementEO.setUpdateTime(now); + save(problemManagementEO); + } + + private void fileAndApprovalEvidence(ProblemManagementEO problemManagementEO) { + //处理相关文件 + if(StringUtils.isNotBlank(problemManagementEO.getFile())){ + String connectId = UUID.randomUUID().toString().replace("-", ""); + String fileIds = problemManagementEO.getFile(); + List oSSFileList = new ArrayList<>(); + updateFileInfo(fileIds, oSSFileList,connectId); + problemManagementEO.setFile(connectId); + } + //处理审批证据 + if(StringUtils.isNotBlank(problemManagementEO.getApprovalEvidence())){ + String connectId = UUID.randomUUID().toString().replace("-", ""); + String fileIds = problemManagementEO.getApprovalEvidence(); + List oSSFileList = new ArrayList<>(); + updateFileInfo(fileIds, oSSFileList,connectId); + problemManagementEO.setApprovalEvidence(connectId); + } + } + + private void updateFileInfo(String fileIds, List oSSFileList,String connectId) { + for (String fileId : fileIds.split(",")) { + OSSFile ossFile = new OSSFile(); + ossFile.setId(fileId); + ossFile.setConnectId(connectId); + oSSFileList.add(ossFile); + } + iOSSFileService.updateFileInfo(oSSFileList); + } + + private void setParam(ProblemManagementEO problemManagementEO) { + if(!problemManagementEO.getFileLinkList().isEmpty()){ + List fileLinkList = problemManagementEO.getFileLinkList(); + List collect = fileLinkList.stream().map(ProblemManagementVO::getFileLink).collect(Collectors.toList()); + problemManagementEO.setFileLink(StringUtils.join(collect,",")); + } + if(!problemManagementEO.getProgressTrackingList().isEmpty()){ + List progressTrackingList = problemManagementEO.getProgressTrackingList(); + List collect = progressTrackingList.stream().map(ProblemManagementVO::getProgressTracking).collect(Collectors.toList()); + problemManagementEO.setProgressTracking(StringUtils.join(collect,",")); + } + if(!problemManagementEO.getApprovalEvidenceLinkList().isEmpty()){ + List approvalEvidenceLinkList = problemManagementEO.getApprovalEvidenceLinkList(); + List collect = approvalEvidenceLinkList.stream().map(ProblemManagementVO::getApprovalEvidenceLink).collect(Collectors.toList()); + problemManagementEO.setApprovalEvidenceLink(StringUtils.join(collect,",")); + } + } + + /** + * 更新 + * + * @param problemManagementEO + * @return + */ + @Override + public void editById(ProblemManagementEO problemManagementEO) { + //相关文件地址链接,进度追踪,审批证据链接 + setParam(problemManagementEO); + + //处理相关文件和审批证据 + fileAndApprovalEvidence(problemManagementEO); + + Date now = new Date(); + problemManagementEO.setUpdateTime(now); + saveOrUpdate(problemManagementEO); + } + + /** + * 通过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 ProblemManagementEO queryById(String id,String cut) { + ProblemManagementEO problemManagementEO = getById(id); + //相关法规 + if(StringUtils.isNotBlank(problemManagementEO.getLawsId())){ + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.in(BussDocumentLibraryEO::getId, Arrays.asList(problemManagementEO.getLawsId().split(","))); + List documentLibraryEOList = bussDocumentLibraryEOService.list(wrapper); + if(!documentLibraryEOList.isEmpty()){ + List serialNumberList = documentLibraryEOList.stream().map(BussDocumentLibraryEO::getSerialNumber).collect(Collectors.toList()); + problemManagementEO.setLawsName(StringUtils.join(serialNumberList,",")); + } + } + + //相关项目 + if(StringUtils.isNotBlank(problemManagementEO.getProjectId())){ + List projectLibraryBaseList = problemManagementEOMapper.queryByIds(problemManagementEO.getProjectId()); + //目标市场数据字典 + List targetMarketList = sysDictService.queryDictItemsByCode(DicCodeEnum.REGION.getCode()); + List projectNameList = new ArrayList<>(); + for (ProjectLibraryBase projectLibraryBase : projectLibraryBaseList) { + //目标市场 + String targetMarket = getMarket(cut, targetMarketList, projectLibraryBase); + //主项目的版本号 + String projectVersion = ""; + if(StringUtils.isBlank(projectLibraryBase.getParentId())){ + projectVersion = "00"; + }else{ + projectVersion = projectLibraryBase.getProjectVersion(); + } + if(StringUtils.isNotBlank(projectLibraryBase.getYearName())){ + projectLibraryBase.setProjectName(projectLibraryBase.getProjectName() + + "-" + projectLibraryBase.getYearName() + + "-" + targetMarket); + } + projectNameList.add(projectLibraryBase.getProjectName() + + "-" + projectLibraryBase.getYearName() + + "-" + targetMarket + +"-"+projectVersion); + } + if(!projectNameList.isEmpty()){ + problemManagementEO.setProjectName(StringUtils.join(projectNameList,",")); + } + } + + + //责任部门 + if(StringUtils.isNotBlank(problemManagementEO.getDutyTerritory())){ + + } + + + //相关文件 + if(StringUtils.isNotBlank(problemManagementEO.getFile())){ + List fileInfos = iOSSFileService.getFileInfosByConnectId(problemManagementEO.getFile()); + problemManagementEO.setFileList(fileInfos); + } + + + //审批证据 + if(StringUtils.isNotBlank(problemManagementEO.getApprovalEvidence())){ + List fileInfos = iOSSFileService.getFileInfosByConnectId(problemManagementEO.getApprovalEvidence()); + problemManagementEO.setApprovalEvidenceFileList(fileInfos); + } + + + //相关文件连接 + if(StringUtils.isNotBlank(problemManagementEO.getFileLink())){ + List list = new ArrayList<>(); + for (String fileLink : problemManagementEO.getFileLink().split(",")) { + ProblemManagementVO problemManagementVO = new ProblemManagementVO(); + problemManagementVO.setFileLink(fileLink); + list.add(problemManagementVO); + } + problemManagementEO.setFileLinkList(list); + } + + //审批证据连接 + if(StringUtils.isNotBlank(problemManagementEO.getApprovalEvidenceLink())){ + List list = new ArrayList<>(); + for (String approvalEvidenceLink : problemManagementEO.getApprovalEvidenceLink().split(",")) { + ProblemManagementVO problemManagementVO = new ProblemManagementVO(); + problemManagementVO.setApprovalEvidenceLink(approvalEvidenceLink); + list.add(problemManagementVO); + } + problemManagementEO.setApprovalEvidenceLinkList(list); + } + //进度追踪 + if(StringUtils.isNotBlank(problemManagementEO.getProgressTracking())){ + List list = new ArrayList<>(); + for (String progressTracking : problemManagementEO.getProgressTracking().split(",")) { + ProblemManagementVO problemManagementVO = new ProblemManagementVO(); + problemManagementVO.setProgressTracking(progressTracking); + list.add(problemManagementVO); + } + problemManagementEO.setProgressTrackingList(list); + } + + return problemManagementEO; + } + + public String getMarket(String cut, List targetMarketList, ProjectLibraryBase projectLibraryBase) { + List dictModelList = new ArrayList<>(); + for (String s : projectLibraryBase.getTargetMarket().split(",")) { + List dictModelListTemp = targetMarketList.stream() + .filter(e -> s.equals(e.getValue())).collect(Collectors.toList()); + dictModelList.addAll(dictModelListTemp); + } + String targetMarket = ""; + if(dictModelList.size() != 0){ + StringBuilder sb = new StringBuilder(); + for (DictModel dictModel : dictModelList) { + if(CutEnum.CN.getValue().equals(cut)){ + sb.append(dictModel.getText()+","); + }else{ + sb.append(dictModel.getTextEn()+","); + } + } + if(StringUtils.isNotBlank(sb)){ + targetMarket = sb.substring(0,sb.length()-1); + } + } + return targetMarket; + } + + /** + * 列表查询 + * + * @return + */ + @Override + public List queryList() { + return list(); + } +} diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectLawsInventoryEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectLawsInventoryEOServiceImpl.java index 848c2ccb8..ae9423dc4 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectLawsInventoryEOServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectLawsInventoryEOServiceImpl.java @@ -30,9 +30,11 @@ import com.jero.common.system.query.QueryGenerator; import com.jero.common.system.vo.DictModel; import com.jero.common.system.vo.LoginUser; import com.jero.common.util.DateUtils; +import com.jero.common.util.PageUtil; import com.jero.common.util.oss.CosBootUtil; import com.jero.modules.document.entity.BussDocumentLibraryEO; import com.jero.modules.document.service.IBussDocumentLibraryEOService; +import com.jero.modules.document.service.impl.BussDocumentLibraryEOServiceImpl; import com.jero.modules.dummy.entity.DummyInventoryBaseEO; import com.jero.modules.dummy.entity.DummyInventoryInfoEO; import com.jero.modules.dummy.enums.AttestationRankEnum; @@ -58,6 +60,8 @@ import com.jero.modules.project.mapper.*; import com.jero.modules.project.service.*; import com.jero.modules.project.service.editImpl.ProjectLawsInventoryEOEditServiceImpl; import com.jero.modules.project.util.WordUtil; +import com.jero.modules.project.vo.NcrTrackVO; +import com.jero.modules.project.vo.ProblemManagementVO; import com.jero.modules.project.vo.ProjectTaskUrgVo; import com.jero.modules.split.common.FileUnZip; import com.jero.modules.system.entity.SysAnnouncement; @@ -73,9 +77,11 @@ import com.jero.modules.system.mapper.SysUserMapper; import com.jero.modules.system.service.IProjectUserDutyTerritoryService; import com.jero.modules.system.service.ISysAnnouncementService; import com.jero.modules.system.service.ISysDictItemService; +import com.jero.modules.system.service.ISysDictService; import com.jero.modules.system.service.ISysUserService; import com.jero.modules.system.service.impl.SysCategoryServiceImpl; import com.jero.modules.system.service.impl.SysDictItemServiceImpl; +import com.jero.modules.system.util.PDFUtils; import com.jero.modules.todoCenter.entity.ProcessInfoDetailEO; import com.jero.modules.todoCenter.entity.ProcessInfoEO; import com.jero.modules.todoCenter.enums.DesignComplianceFlowNodeKeyEnum; @@ -90,6 +96,7 @@ import com.jero.modules.wkflow.enums.FlowTypeEnum; import com.jero.modules.wkflow.feginClient.impl.TaskFeignClientImpl; import com.jero.modules.wkflow.feginClient.impl.WorkFlowFeignClientImpl; import com.jero.modules.wkflow.service.IProcessHistoryEOService; +import com.jero.modules.wkflow.service.impl.ProcessHistoryEOServiceImpl; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; @@ -272,6 +279,16 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl processInfoDetailEOS = new ArrayList<>(); + List projectLawsInventoryIdList = result.stream().map(e -> (String) e.get("id")).collect(Collectors.toList()); + List processHistoryEOList = new ArrayList<>(); + if(ObjectUtils.isNotEmpty(projectLawsInventoryIdList)){ + QueryWrapper processInfoDetailEOQueryWrapper = new QueryWrapper<>(); + processInfoDetailEOQueryWrapper.lambda().in(ProcessInfoDetailEO::getProjectLawsInventoryId,projectLawsInventoryIdList); + processInfoDetailEOQueryWrapper.orderByDesc("create_time"); + processInfoDetailEOS = this.processInfoDetailEOService.list(processInfoDetailEOQueryWrapper); + if(ObjectUtils.isNotEmpty(processInfoDetailEOS)){ + List actiProcInstIdList = processInfoDetailEOS.stream().map(ProcessInfoDetailEO::getActiProcInstId).collect(Collectors.toList()); + if(ObjectUtils.isNotEmpty(actiProcInstIdList)){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.orderByAsc("create_time"); + queryWrapper.lambda().in(ProcessHistoryEO::getActiProcInstId, actiProcInstIdList); + processHistoryEOList = processHistoryEOService.list(queryWrapper); + if(ObjectUtils.isNotEmpty(processHistoryEOList)){ + this.processHistoryEOServiceImpl.disposeData(processHistoryEOList,cut); + } + } + } + } + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); for (Map dataMap : result) { + dataMap.put("uuid",dataMap.get("id")); + //相关法规 + dataMap.put("lawsName",dataMap.get("serialNumber")); + //相关项目(旧数据的未符合项,都是属于这一个项目的) + dataMap.put("projectName",params.get("projectName")); + dataMap.put("projectid",params.get("projectLibraryId")); + //创建时间 + dataMap.put("createTime",dataMap.get("createTime")); + //更新时间 + dataMap.put("updateTime",dataMap.get("updateTime")); + String dutyTerritory = (String) dataMap.get("dutyTerritory"); if(StringUtils.isNotEmpty(dutyTerritory)){ if(StringUtils.isNotEmpty(dutyTerritory)){ String dutyTerritory_dictText = this.disposeShowDictItemValue(sysDictItems, dutyTerritory,cut,ProjectInventoryFieldEnum.DUTY_TERRITORY.getValue()); dataMap.put("dutyTerritory_dictText",dutyTerritory_dictText); + //责任部门 + dataMap.put("dutyTerritory",dutyTerritory_dictText); } } String flowStatus = (String) dataMap.get("flowStatus"); + String problemType_dictText = ""; if(StringUtils.isNotEmpty(flowStatus)){ + String textByValue = ComplianceFlowStatusEnum.getTextByValue(flowStatus, cut); + if(ComplianceFlowStatusEnum.INCONFORMITY.getCnName().equals(textByValue) + || ComplianceFlowStatusEnum.INCONFORMITY.getEnName().equals(textByValue)){ + //问题类型 + if(CutEnum.CN.getValue().equals(cut)){ + problemType_dictText = ComplianceFlowStatusEnum.LAWS_INCONFORMITY.getCnName(); + dataMap.put("problemType_dictText",problemType_dictText); + }else{ + problemType_dictText = ComplianceFlowStatusEnum.LAWS_INCONFORMITY.getEnName(); + dataMap.put("problemType_dictText",problemType_dictText); + } + //问题状态 + dataMap.put("problemState",ColourEnum.RED.getName()); + } + if(ComplianceFlowStatusEnum.TO_TRACK.getCnName().equals(textByValue) + ||ComplianceFlowStatusEnum.TO_TRACK.getEnName().equals(textByValue)){ + //问题类型 + if(CutEnum.CN.getValue().equals(cut)){ + problemType_dictText = ComplianceFlowStatusEnum.LAWS_TO_TRACK.getCnName(); + dataMap.put("problemType_dictText",problemType_dictText); + }else{ + problemType_dictText = ComplianceFlowStatusEnum.LAWS_TO_TRACK.getEnName(); + dataMap.put("problemType_dictText",problemType_dictText); + } + //问题状态 + dataMap.put("problemState",ColourEnum.YELLOW.getName()); + } dataMap.put("flowStatusName",ComplianceFlowStatusEnum.getTextByValue(flowStatus,cut)); } @@ -10329,6 +10410,8 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl processInfoDetailEOQueryWrapper = new QueryWrapper<>(); - processInfoDetailEOQueryWrapper.lambda().eq(ProcessInfoDetailEO::getProjectLawsInventoryId,(String)dataMap.get("id")); - processInfoDetailEOQueryWrapper.lambda().eq(ProcessInfoDetailEO::getFlowType,flowType); - processInfoDetailEOQueryWrapper.orderByDesc("create_time"); - List processInfoDetailEOS = this.processInfoDetailEOService.list(processInfoDetailEOQueryWrapper); - if(CollectionUtils.isNotEmpty(processInfoDetailEOS)){ - dataMap.put("actiProcInstId",processInfoDetailEOS.get(0).getActiProcInstId()); + //标题 + if(CutEnum.CN.getValue().equals(cut)){ + dataMap.put("title",(String) dataMap.get("flowTypeName") + problemType_dictText); + }else{ + dataMap.put("title",(String) dataMap.get("flowTypeName") +" " + problemType_dictText); } + + dataMap.put("flag",DataEnum.OLD.getValue()); + + // 更新时间,创建时间 + if(ObjectUtils.isNotEmpty(processInfoDetailEOS)){ + List collect = processInfoDetailEOS.stream() + .filter(e -> StringUtils.isNotBlank(e.getFlowType()) && e.getFlowType().equals(flowType)).collect(Collectors.toList()); + if(CollectionUtils.isNotEmpty(collect)){ + dataMap.put("actiProcInstId",collect.get(0).getActiProcInstId()); + if(ObjectUtils.isNotEmpty(processHistoryEOList)){ + List processHistoryEOSTemp = processHistoryEOList.stream().filter(e -> StringUtils.isNotBlank(e.getActiProcInstId()) + && e.getActiProcInstId().equals(collect.get(0).getActiProcInstId())).collect(Collectors.toList()); + //创建时间为任务节点为符合性审查,处理结果为不符合或待追踪的操作时间 + //更新时间为最新的流程时间 + if(!processHistoryEOSTemp.isEmpty()){ + //更新时间 + if(ObjectUtils.isNotEmpty(processHistoryEOSTemp.get(processHistoryEOSTemp.size()-1).getCreateTime())){ + dataMap.put("updateTime",sdf.format(processHistoryEOSTemp.get(processHistoryEOSTemp.size()-1).getCreateTime())); + } + //创建时间 + List processHistoryEOS = processHistoryEOSTemp.stream().filter(e -> StringUtils.isNotBlank(e.getTaskDefinitionKey()) + && DesignComplianceFlowNodeKeyEnum.FGGCSSH.getValue().equals(e.getTaskDefinitionKey()) + && (ComplianceFlowStatusEnum.INCONFORMITY.getValue().equals(e.getOperatorResult()) || ComplianceFlowStatusEnum.TO_TRACK.getValue().equals(e.getOperatorResult()))).collect(Collectors.toList()); + + if (CollectionUtils.isNotEmpty(processHistoryEOS)) { + if(ObjectUtils.isNotEmpty(processHistoryEOS.get(0).getCreateTime())){ + dataMap.put("createTime",sdf.format(processHistoryEOS.get(0).getCreateTime())); + } + } + } + } + } + } +// QueryWrapper processInfoDetailEOQueryWrapper = new QueryWrapper<>(); +// processInfoDetailEOQueryWrapper.lambda().eq(ProcessInfoDetailEO::getProjectLawsInventoryId,(String)dataMap.get("id")); +// processInfoDetailEOQueryWrapper.lambda().eq(ProcessInfoDetailEO::getFlowType,flowType); +// processInfoDetailEOQueryWrapper.orderByDesc("create_time"); +// List processInfoDetailEOS = this.processInfoDetailEOService.list(processInfoDetailEOQueryWrapper); +// if(CollectionUtils.isNotEmpty(processInfoDetailEOS)){ +// dataMap.put("actiProcInstId",processInfoDetailEOS.get(0).getActiProcInstId()); +// } + } + + + + } + //新数据 + List> mapList = getNewData(params, cut); + if(ObjectUtils.isNotEmpty(mapList)){ + result.addAll(mapList); + } + //条件查询 + result = dataParameter(params, result); + //表头排序 + heartSort(params, result); + + + return result; + } + + private void heartSort(Map params, List> result) { + Collator comparator = Collator.getInstance(Locale.CHINESE); + if ("title".equals(params.get("orderByField"))) { + if (OrderEnum.POSITIVE.getValue().equals(params.get("orderBy"))) { + Collections.sort(result, (e1, e2) -> { + String e1Field = ObjectUtils.isNotEmpty(e1.get("title")) ? String.valueOf(e1.get("title")) : ""; + String e2Field = ObjectUtils.isNotEmpty(e2.get("title")) ? String.valueOf(e2.get("title")) : ""; + return comparator.compare(e1Field, e2Field); + }); + } else if (OrderEnum.REVERSE.getValue().equals(params.get("orderBy"))) { + Collections.sort(result, (e1, e2) -> { + String e1Field = ObjectUtils.isNotEmpty(e1.get("title")) ? String.valueOf(e1.get("title")) : ""; + String e2Field = ObjectUtils.isNotEmpty(e2.get("title")) ? String.valueOf(e2.get("title")) : ""; + return comparator.compare(e2Field, e1Field); + }); } } - return result; + if ("lawsName".equals(params.get("orderByField"))) { + if (OrderEnum.POSITIVE.getValue().equals(params.get("orderBy"))) { + Collections.sort(result, (e1, e2) -> { + String e1Field = ObjectUtils.isNotEmpty(e1.get("lawsName")) ? String.valueOf(e1.get("lawsName")) : ""; + String e2Field = ObjectUtils.isNotEmpty(e2.get("lawsName")) ? String.valueOf(e2.get("lawsName")) : ""; + return comparator.compare(e1Field, e2Field); + }); + } else if (OrderEnum.REVERSE.getValue().equals(params.get("orderBy"))) { + Collections.sort(result, (e1, e2) -> { + String e1Field = ObjectUtils.isNotEmpty(e1.get("lawsName")) ? String.valueOf(e1.get("lawsName")) : ""; + String e2Field = ObjectUtils.isNotEmpty(e2.get("lawsName")) ? String.valueOf(e2.get("lawsName")) : ""; + return comparator.compare(e2Field, e1Field); + }); + } + } + if ("projectName".equals(params.get("orderByField"))) { + if (OrderEnum.POSITIVE.getValue().equals(params.get("orderBy"))) { + Collections.sort(result, (e1, e2) -> { + String e1Field = ObjectUtils.isNotEmpty(e1.get("projectName")) ? String.valueOf(e1.get("projectName")) : ""; + String e2Field = ObjectUtils.isNotEmpty(e2.get("projectName")) ? String.valueOf(e2.get("projectName")) : ""; + return comparator.compare(e1Field, e2Field); + }); + } else if (OrderEnum.REVERSE.getValue().equals(params.get("orderBy"))) { + Collections.sort(result, (e1, e2) -> { + String e1Field = ObjectUtils.isNotEmpty(e1.get("projectName")) ? String.valueOf(e1.get("projectName")) : ""; + String e2Field = ObjectUtils.isNotEmpty(e2.get("projectName")) ? String.valueOf(e2.get("projectName")) : ""; + return comparator.compare(e2Field, e1Field); + }); + } + } + if ("problemType_dictText".equals(params.get("orderByField"))) { + if (OrderEnum.POSITIVE.getValue().equals(params.get("orderBy"))) { + Collections.sort(result, (e1, e2) -> { + String e1Field = ObjectUtils.isNotEmpty(e1.get("problemType_dictText")) ? String.valueOf(e1.get("problemType_dictText")) : ""; + String e2Field = ObjectUtils.isNotEmpty(e2.get("problemType_dictText")) ? String.valueOf(e2.get("problemType_dictText")) : ""; + return comparator.compare(e1Field, e2Field); + }); + } else if (OrderEnum.REVERSE.getValue().equals(params.get("orderBy"))) { + Collections.sort(result, (e1, e2) -> { + String e1Field = ObjectUtils.isNotEmpty(e1.get("problemType_dictText")) ? String.valueOf(e1.get("problemType_dictText")) : ""; + String e2Field = ObjectUtils.isNotEmpty(e2.get("problemType_dictText")) ? String.valueOf(e2.get("problemType_dictText")) : ""; + return comparator.compare(e2Field, e1Field); + }); + } + } + if ("dutyTerritory".equals(params.get("orderByField"))) { + if (OrderEnum.POSITIVE.getValue().equals(params.get("orderBy"))) { + Collections.sort(result, (e1, e2) -> { + String e1Field = ObjectUtils.isNotEmpty(e1.get("dutyTerritory")) ? String.valueOf(e1.get("dutyTerritory")) : ""; + String e2Field = ObjectUtils.isNotEmpty(e2.get("dutyTerritory")) ? String.valueOf(e2.get("dutyTerritory")) : ""; + return comparator.compare(e1Field, e2Field); + }); + } else if (OrderEnum.REVERSE.getValue().equals(params.get("orderBy"))) { + Collections.sort(result, (e1, e2) -> { + String e1Field = ObjectUtils.isNotEmpty(e1.get("dutyTerritory")) ? String.valueOf(e1.get("dutyTerritory")) : ""; + String e2Field = ObjectUtils.isNotEmpty(e2.get("dutyTerritory")) ? String.valueOf(e2.get("dutyTerritory")) : ""; + return comparator.compare(e2Field, e1Field); + }); + } + } + if ("createBy".equals(params.get("orderByField"))) { + if (OrderEnum.POSITIVE.getValue().equals(params.get("orderBy"))) { + Collections.sort(result, (e1, e2) -> { + String e1Field = ObjectUtils.isNotEmpty(e1.get("createBy")) ? String.valueOf(e1.get("createBy")) : ""; + String e2Field = ObjectUtils.isNotEmpty(e2.get("createBy")) ? String.valueOf(e2.get("createBy")) : ""; + return comparator.compare(e1Field, e2Field); + }); + } else if (OrderEnum.REVERSE.getValue().equals(params.get("orderBy"))) { + Collections.sort(result, (e1, e2) -> { + String e1Field = ObjectUtils.isNotEmpty(e1.get("createBy")) ? String.valueOf(e1.get("createBy")) : ""; + String e2Field = ObjectUtils.isNotEmpty(e2.get("createBy")) ? String.valueOf(e2.get("createBy")) : ""; + return comparator.compare(e2Field, e1Field); + }); + } + } + if ("problemState".equals(params.get("orderByField"))) { + if (OrderEnum.POSITIVE.getValue().equals(params.get("orderBy"))) { + Collections.sort(result, (e1, e2) -> { + String e1Field = ObjectUtils.isNotEmpty(e1.get("problemState")) ? String.valueOf(e1.get("problemState")) : ""; + String e2Field = ObjectUtils.isNotEmpty(e2.get("problemState")) ? String.valueOf(e2.get("problemState")) : ""; + return comparator.compare(e1Field, e2Field); + }); + } else if (OrderEnum.REVERSE.getValue().equals(params.get("orderBy"))) { + Collections.sort(result, (e1, e2) -> { + String e1Field = ObjectUtils.isNotEmpty(e1.get("problemState")) ? String.valueOf(e1.get("problemState")) : ""; + String e2Field = ObjectUtils.isNotEmpty(e2.get("problemState")) ? String.valueOf(e2.get("problemState")) : ""; + return comparator.compare(e2Field, e1Field); + }); + } + } + if ("createTime".equals(params.get("orderByField"))) { + if (OrderEnum.POSITIVE.getValue().equals(params.get("orderBy"))) { + Collections.sort(result, (e1, e2) -> { + if (e1.get("createTime") == null || e2.get("createTime") == null) { + return 0; + } + return comparator.compare(e1.get("createTime"), e2.get("createTime")); + }); + } else if (OrderEnum.REVERSE.getValue().equals(params.get("orderBy"))) { + Collections.sort(result, (e1, e2) -> { + if (e1.get("createTime") == null || e2.get("createTime") == null) { + return 0; + } + return comparator.compare(e2.get("createTime"), e1.get("createTime")); + }); + } + } + if ("updateTime".equals(params.get("orderByField"))) { + if (OrderEnum.POSITIVE.getValue().equals(params.get("orderBy"))) { + Collections.sort(result, (e1, e2) -> { + if (e1.get("updateTime") == null || e2.get("updateTime") == null) { + return 0; + } + return comparator.compare(e1.get("updateTime"), e2.get("updateTime")); + }); + } else if (OrderEnum.REVERSE.getValue().equals(params.get("orderBy"))) { + Collections.sort(result, (e1, e2) -> { + if (e1.get("updateTime") == null || e2.get("updateTime") == null) { + return 0; + } + return comparator.compare(e2.get("updateTime"), e1.get("updateTime")); + }); + } + } + } + + @NotNull + private List> getNewData(Map params, String cut) { + //新数据 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.like(ProblemManagementEO::getProjectId,params.get("projectLibraryId")); + List managementEOList = problemManagementEOService.list(wrapper); + //法规 + List lawsIdList = managementEOList.stream() + .filter(e-> StringUtils.isNotBlank(e.getLawsId())).map(ProblemManagementEO::getLawsId).collect(Collectors.toList()); + //项目 + List projectIdList = managementEOList.stream() + .filter(e->StringUtils.isNotBlank(e.getProjectId())).map(ProblemManagementEO::getProjectId).collect(Collectors.toList()); + //相关文件 + List fileList = managementEOList.stream() + .filter(e -> StringUtils.isNotBlank(e.getFile())).map(ProblemManagementEO::getFile).collect(Collectors.toList()); + //审批证据 + List approvalEvidenceList = managementEOList.stream() + .filter(e -> StringUtils.isNotBlank(e.getApprovalEvidence())).map(ProblemManagementEO::getApprovalEvidence).collect(Collectors.toList()); + List connectList = new ArrayList<>(); + if(!fileList.isEmpty()){ + connectList.addAll(fileList); + } + if(!approvalEvidenceList.isEmpty()){ + connectList.addAll(approvalEvidenceList); + } + List fileInfoList = new ArrayList<>(); + if(!connectList.isEmpty()){ + fileInfoList = iOSSFileService.getFileInfosByConnectId(StringUtils.join(connectList,",")); + } + + List documentLibraryEOList = new ArrayList<>(); + if(!lawsIdList.isEmpty()){ + Set lawIdSet = new HashSet<>(); + for (String lawIds : lawsIdList) { + lawIdSet.addAll(Arrays.asList(lawIds.split(","))); + } + if(!lawIdSet.isEmpty()){ + LambdaQueryWrapper wrapperDocument = new LambdaQueryWrapper<>(); + wrapperDocument.in(BussDocumentLibraryEO::getId, lawIdSet); + documentLibraryEOList = bussDocumentLibraryEOService.list(wrapperDocument); + } + } + + List projectLibraryBaseList = new ArrayList<>(); + if(!projectIdList.isEmpty()){ + Set projectIdSet = new HashSet<>(); + for (String projectIds : projectIdList) { + projectIdSet.addAll(Arrays.asList(projectIds.split(","))); + } + if(!projectIdSet.isEmpty()){ + projectLibraryBaseList = problemManagementEOMapper.queryByIds(StringUtils.join(projectIdSet,",")); + } + } + List problemTypeList = sysDictService.queryDictItemsByCode(DicCodeEnum.PROBLEM_TYPE.getCode()); + + List ncrTrackVOList = new ArrayList<>(); + List> mapList = new ArrayList<>(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + for (ProblemManagementEO problemManagementEO : managementEOList) { + Map map = new HashMap<>(); + map.put("title",problemManagementEO.getTitle()); + map.put("psIssue",problemManagementEO.getPsIssue()); + map.put("dutyTerritory",problemManagementEO.getDutyTerritory()); + map.put("problemState",problemManagementEO.getProblemState()); + map.put("problemType",problemManagementEO.getProblemType()); + map.put("description",problemManagementEO.getDescription()); + map.put("conclusion",problemManagementEO.getConclusion()); + map.put("createBy",problemManagementEO.getCreateBy()); + map.put("createTime",sdf.format(problemManagementEO.getCreateTime())); + map.put("updateTime",sdf.format(problemManagementEO.getUpdateTime())); + map.put("uuid",problemManagementEO.getId()); + map.put("id",problemManagementEO.getId()); + map.put("flag",DataEnum.NEW.getValue()); + + List dictModelList = problemTypeList.stream().filter(e -> e.getValue().equals(problemManagementEO.getProblemType())).collect(Collectors.toList()); + + if(!dictModelList.isEmpty()){ + if(CutEnum.CN.getValue().equals(cut)){ + map.put("problemType_dictText",dictModelList.get(0).getText()); + }else{ + map.put("problemType_dictText",dictModelList.get(0).getTextEn()); + } + } + //相关法规 + if(StringUtils.isNotBlank(problemManagementEO.getLawsId())){ + if(!documentLibraryEOList.isEmpty()){ + List documentLibraryEOListTemp = documentLibraryEOList.stream() + .filter(e->StringUtils.isNotBlank(problemManagementEO.getLawsId()) + && problemManagementEO.getLawsId().contains(e.getId())).collect(Collectors.toList()); + List serialNumberList = documentLibraryEOListTemp.stream().map(BussDocumentLibraryEO::getSerialNumber).collect(Collectors.toList()); + problemManagementEO.setLawsName(StringUtils.join(serialNumberList,",")); + map.put("lawsName",StringUtils.join(serialNumberList,",")); + map.put("lawsId",problemManagementEO.getLawsId()); + } + } + //相关项目 + if(StringUtils.isNotBlank(problemManagementEO.getProjectId())){ + List projectLibraryBaseListTemp = projectLibraryBaseList.stream() + .filter(e->StringUtils.isNotBlank(problemManagementEO.getProjectId()) + && problemManagementEO.getProjectId().contains(e.getId())).collect(Collectors.toList()); + //目标市场数据字典 + List targetMarketList = sysDictService.queryDictItemsByCode(DicCodeEnum.REGION.getCode()); + List projectNameList = new ArrayList<>(); + for (ProjectLibraryBase projectLibraryBase : projectLibraryBaseListTemp) { + //目标市场 + String targetMarket = problemManagementEOService.getMarket(cut, targetMarketList, projectLibraryBase); + //主项目的版本号 + String projectVersion = ""; + if(com.jero.modules.system.util.StringUtils.isBlank(projectLibraryBase.getParentId())){ + projectVersion = "00"; + }else{ + projectVersion = projectLibraryBase.getProjectVersion(); + } + projectNameList.add(projectLibraryBase.getProjectName() + + "-" + projectLibraryBase.getYearName() + + "-" + targetMarket + +"-"+projectVersion); + } + if(!projectNameList.isEmpty()){ + problemManagementEO.setProjectName(StringUtils.join(projectNameList,",")); + map.put("projectName",StringUtils.join(projectNameList,",")); + map.put("projectId",problemManagementEO.getProjectId()); + } + } + + //相关文件连接 + if(StringUtils.isNotBlank(problemManagementEO.getFileLink())){ + List list = new ArrayList<>(); + for (String fileLink : problemManagementEO.getFileLink().split(",")) { + ProblemManagementVO problemManagementVO = new ProblemManagementVO(); + problemManagementVO.setFileLink(fileLink); + list.add(problemManagementVO); + } + problemManagementEO.setFileLinkList(list); + map.put("fileLinkList",list); + } + + //审批证据连接 + if(StringUtils.isNotBlank(problemManagementEO.getApprovalEvidenceLink())){ + List list = new ArrayList<>(); + for (String approvalEvidenceLink : problemManagementEO.getApprovalEvidenceLink().split(",")) { + ProblemManagementVO problemManagementVO = new ProblemManagementVO(); + problemManagementVO.setApprovalEvidenceLink(approvalEvidenceLink); + list.add(problemManagementVO); + } + problemManagementEO.setApprovalEvidenceLinkList(list); + map.put("approvalEvidenceLinkList",list); + } + //进度追踪 + if(StringUtils.isNotBlank(problemManagementEO.getProgressTracking())){ + List list = new ArrayList<>(); + for (String progressTracking : problemManagementEO.getProgressTracking().split(",")) { + ProblemManagementVO problemManagementVO = new ProblemManagementVO(); + problemManagementVO.setProgressTracking(progressTracking); + list.add(problemManagementVO); + } + problemManagementEO.setProgressTrackingList(list); + map.put("progressTrackingList",list); + } + //相关文件 + if(StringUtils.isNotBlank(problemManagementEO.getFile())){ + List collect = fileInfoList.stream() + .filter(e -> e.getConnectId().equals(problemManagementEO.getFile())).collect(Collectors.toList()); + problemManagementEO.setFileList(collect); + map.put("fileList",collect); + map.put("file",problemManagementEO.getFile()); + } + //审批证据 + if(StringUtils.isNotBlank(problemManagementEO.getApprovalEvidence())){ + List collect = fileInfoList.stream() + .filter(e -> e.getConnectId().equals(problemManagementEO.getApprovalEvidence())).collect(Collectors.toList()); + problemManagementEO.setApprovalEvidenceFileList(collect); + map.put("approvalEvidenceFileList",collect); + map.put("approvalEvidence",problemManagementEO.getApprovalEvidence()); + + } + mapList.add(map); + NcrTrackVO ncrTrackVOTemp = new NcrTrackVO(); + BeanUtils.copyProperties(problemManagementEO,ncrTrackVOTemp); + ncrTrackVOTemp.setUuid(ncrTrackVOTemp.getId()); + ncrTrackVOTemp.setFlag(DataEnum.NEW.getValue()); + ncrTrackVOList.add(ncrTrackVOTemp); + } + return mapList; + } + + private List> dataParameter(Map params, List> mapList) { + if(ObjectUtils.isNotEmpty(params.get("title"))){//标题 + mapList = mapList.stream().filter(e->ObjectUtils.isNotEmpty(e.get("title")) + && e.get("title").toString().contains(params.get("title").toString())).collect(Collectors.toList()); + } + if(ObjectUtils.isNotEmpty(params.get("lawsName"))){//相关法规 + mapList = mapList.stream().filter(e->ObjectUtils.isNotEmpty(e.get("lawsName")) + && e.get("lawsName").toString().contains(params.get("lawsName").toString())).collect(Collectors.toList()); + } + if(ObjectUtils.isNotEmpty(params.get("projectId"))){//相关项目 + mapList = mapList.stream().filter(e->ObjectUtils.isNotEmpty(e.get("projectId")) + && String.valueOf(e.get("projectId")).equals(String.valueOf(params.get("projectId")))).collect(Collectors.toList()); + } + if(ObjectUtils.isNotEmpty(params.get("problemType_dictText"))){//问题类型 + mapList = mapList.stream().filter(e->ObjectUtils.isNotEmpty(e.get("problemType_dictText")) + && e.get("problemType_dictText").toString().equals(params.get("problemType_dictText").toString())).collect(Collectors.toList()); + } + if(ObjectUtils.isNotEmpty(params.get("dutyTerritory"))){//责任领域 + mapList = mapList.stream().filter(e->ObjectUtils.isNotEmpty(e.get("dutyTerritory")) + && e.get("dutyTerritory").toString().contains(params.get("dutyTerritory").toString())).collect(Collectors.toList()); + } + if(ObjectUtils.isNotEmpty(params.get("problemState"))){//问题状态 + mapList = mapList.stream().filter(e->ObjectUtils.isNotEmpty(e.get("problemState")) + && e.get("problemState").toString().contains(params.get("problemState").toString())).collect(Collectors.toList()); + } + return mapList; } @Override public void exportNotComplianList(HttpServletResponse response, HttpServletRequest request, Map params) { +// params.put("projectLibraryId","1546314907190935554"); +// params.put("projectName","EDS1.2 EVO-G1.1-中国-00"); +// params.put("cut","en"); + +// Map map1 = new HashMap<>(); +// map1.put("id","e4a2fe2b042e4150943e82094250f54d"); +// Map map2 = new HashMap<>(); +// map2.put("id","e1d5b1aa19344abb8154deea15539daa"); +// List> ncrTrackVOList =new ArrayList<>(); +// ncrTrackVOList.add(map1); +// ncrTrackVOList.add(map2); +// +// params.put("ncrTrackVOList",ncrTrackVOList); + + + LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + SimpleDateFormat sdfTemp = new SimpleDateFormat("yyyy-MM-dd"); String cut = (String) params.get("cut"); String header = ""; - String sheetName = "未符合项"; + String sheetName = ""; if (StringUtils.equals(cut,CutEnum.CN.getValue())) { - header = "编号,标题,流程类型,责任领域,问题类型,发起人,责任人"; + sheetName = "问题管理"; + header = "标题,问题类型,PS_ISSUE,创建人,创建时间,相关法规,相关项目,责任部门,问题状态,描述和分析"; } else if (StringUtils.equals(cut,CutEnum.EN.getValue())) { - header = "Number,Title,Process Type,Responsible Field,Issue Type,Creator,Assignee"; - sheetName = "Non-compliant"; + header = "Title,Issue Type,PS-ISSUE,Creator,Create Date,Related Regualtions,Related Project,Resonsible Field,Status,Description"; + sheetName = "Problem management"; } OutputStream os = null; @@ -10369,6 +10879,18 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl> dataList = this.queryNotComplianList(params); + List> expertDataList = new ArrayList<>(); + if(ObjectUtils.allNotNull(dataList)){ + List> mapList = (List>) params.get("ncrTrackVOList"); + if(ObjectUtils.isNotEmpty(mapList)){ + for (Map map : mapList) { + List> collect = dataList.stream().filter(e -> ObjectUtils.isNotEmpty(e.get("id")) && e.get("id").equals(map.get("id"))).collect(Collectors.toList()); + expertDataList.addAll(collect); + } + dataList = expertDataList; + } + } + CellStyle cellStyle = workbook.createCellStyle(); cellStyle.setAlignment(HorizontalAlignment.CENTER); Row rowHeader = sheet.createRow(0);//开始创建标题行 @@ -10385,20 +10907,105 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl connectIdList = new ArrayList<>(); + List fileList = dataList.stream() + .filter(e -> ObjectUtils.isNotEmpty(e.get("file"))).map(e -> e.get("file")).collect(Collectors.toList()); + List approvalEvidenceList = dataList.stream() + .filter(e -> ObjectUtils.isNotEmpty(e.get("approvalEvidence"))).map(e -> e.get("approvalEvidence")).collect(Collectors.toList()); + if(!fileList.isEmpty()){ + connectIdList.addAll(fileList); + } + if(!approvalEvidenceList.isEmpty()){ + connectIdList.addAll(approvalEvidenceList); + } + if(!connectIdList.isEmpty()){ + List fileInfosList = iOSSFileService.getFileInfosByConnectId(StringUtils.join(connectIdList, ",")); + for (Map map : dataList) { + String title = (String) map.get("title"); + String createTime = ""; + if(ObjectUtils.isNotEmpty(map.get("createTime"))){ + createTime = String.valueOf(map.get("createTime")).split(" ")[0]; + } + String folder = title+createTime; + List connectIdListTemp = new ArrayList<>(); + if(ObjectUtils.isNotEmpty(map.get("file"))){ + connectIdListTemp.add((String) map.get("file")); + } + if(ObjectUtils.isNotEmpty(map.get("approvalEvidence"))){ + connectIdListTemp.add((String) map.get("approvalEvidence")); + } + if(!connectIdListTemp.isEmpty()){ + List ossFileList = fileInfosList.stream().filter(e -> connectIdListTemp.contains(e.getConnectId())).collect(Collectors.toList()); + if (ossFileList.size() != 0) { + String fileNowPath = path + File.separator + folder; + File file = new File(fileNowPath); + if (file.exists()) { + file.delete(); + } + file.mkdirs(); + for (OSSFile ossFile : ossFileList) { + String url = ossFile.getUrl(); + //判断文件是否存在 + if(StringUtils.isNotBlank(url)){ + //判断文件是否存在 + boolean b = CosBootUtil.doesObjectExist(url); + if(b){ + InputStream download = CosBootUtil.download(url); + if(url.endsWith(".pdf") || url.endsWith(".PDF")){ + String currentTime = sdf.format(new Date()); + String waterContent = loginUser.getUsername() + " " + currentTime; + File newFile = PDFUtils.PDFWatermark(download,uploadpath,ossFile.getFileName(),waterContent); + download = new FileInputStream(newFile.getPath()); + } + documentLibraryEOService.copyFile(download, fileNowPath + File.separator + ossFile.getFileName()); + } + } + } + } + } + } + } + ZipUtil.zip(path, path + ".zip"); + //文件 + FileInputStream fis = new FileInputStream(path + ".zip"); os = response.getOutputStream(); - workbook.write(os); + + int len = 0; + while ((len = fis.read()) != -1) { + os.write(len); + } os.flush(); + fis.close(); } catch (IOException e) { e.printStackTrace(); if(CutEnum.CN.getValue().equals(cut)){ @@ -10406,8 +11013,12 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl projectNameAndYear = projectNameInfoEOMapper.selectProjectNameAndYear(); return projectNameInfoEOList; } + /** + * 列表查询 + * + * @return + */ + @Override + public List queryProjectNameList(String cut) { + List projectLibraryBaseList = problemManagementEOMapper.queryByIds(null); + //目标市场数据字典 + List targetMarketList = sysDictService.queryDictItemsByCode(DicCodeEnum.REGION.getCode()); + for (ProjectLibraryBase projectLibraryBase : projectLibraryBaseList) { + //目标市场 + String targetMarket = problemManagementEOService.getMarket(cut, targetMarketList, projectLibraryBase); + //主项目的版本号 + String projectVersion = ""; + if(com.jero.modules.system.util.StringUtils.isBlank(projectLibraryBase.getParentId())){ + projectVersion = "00"; + }else{ + projectVersion = projectLibraryBase.getProjectVersion(); + } + if(StringUtils.isNotBlank(projectLibraryBase.getYearName())){ + projectLibraryBase.setProjectName(projectLibraryBase.getProjectName() + + "-" + projectLibraryBase.getYearName() + + "-" + targetMarket + +"-"+projectVersion); + } + } + return projectLibraryBaseList; + } /* @Override public void getSpaceInfo(String cut){ diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/vo/NcrTrackVO.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/vo/NcrTrackVO.java index 4482a77b7..f1f1e1264 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/vo/NcrTrackVO.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/vo/NcrTrackVO.java @@ -1,6 +1,8 @@ package com.jero.modules.project.vo; import com.fasterxml.jackson.annotation.JsonFormat; +import com.jero.common.aspect.annotation.Dict; +import com.jero.modules.oss.entity.OSSFile; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; @@ -33,10 +35,12 @@ public class NcrTrackVO implements Serializable { private String userId; + + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") - @ApiModelProperty(value = "创建日期") - private java.util.Date createTime; + @ApiModelProperty(value = "修改日期") + private java.util.Date updateTime; //中英文切换 private String cut; @@ -45,29 +49,61 @@ public class NcrTrackVO implements Serializable { private String standId; //编号 - @Excel(name = "编号", width = 20) private String serialNumber; //标题 @Excel(name = "标题", width = 20) private String title; - //流程类型 - @Excel(name = "流程类型", width = 20) - private String flowType; + @Excel(name = "问题类型", width = 20) + private String problemType_dictText; - //责任领域 duty_territory -// @Dict(dicCode ="duty_territory") - @Excel(name = "责任领域", width = 20,dicCode ="duty_territory") + /**ps_issue*/ + @ApiModelProperty(value = "ps_issue") + @Excel(name = "PS_ISSUE", width = 20) + private java.lang.String psIssue; + + @ApiModelProperty(value = "创建人") + @Excel(name = "创建人", width = 20) + private java.lang.String createBy; + + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "创建日期") +// @Excel(name = "创建时间", width = 20) + private java.util.Date createTime; + + @Excel(name = "创建时间", width = 20) + private String createTimeStr; + + @ApiModelProperty(value = "相关法规") + @Excel(name = "相关法规", width = 20) + private String lawsName; + + @Excel(name = "相关项目", width = 20) + private String projectName; + + @Dict(dicCode ="duty_territory") + @Excel(name = "责任部门", width = 20) private String dutyTerritory; + /**问题状态*/ + @ApiModelProperty(value = "问题状态") + @Excel(name = "问题状态", width = 20) + private java.lang.String problemState; + + /**描述和分析*/ + @ApiModelProperty(value = "描述和分析") + @Excel(name = "描述和分析", width = 20) + private java.lang.String description; + + + //流程类型 + private String flowType; + //流程类型标识(枚举) private String flowTypeNumber; - //相关项目 - @Excel(name = "相关项目", width = 20) - private String projectName; - //目标市场 private String targetMarket; @@ -78,15 +114,12 @@ public class NcrTrackVO implements Serializable { private String projectVersion; //问题类型 - @Excel(name = "问题类型", width = 20) private String problemType; //发起人 - @Excel(name = "发起人", width = 20) private String initiator; //责任人 - @Excel(name = "责任人", width = 20) private String duty; //项目库id @@ -103,8 +136,6 @@ public class NcrTrackVO implements Serializable { //验证符合性确认 verify_p_id private String verifyPId; - - //设计发起人 design_initiator_id private String designInitiatorId; //pre发起人 prehomo_initiator_id @@ -160,5 +191,65 @@ public class NcrTrackVO implements Serializable { + /**相关法规*/ + @ApiModelProperty(value = "相关法规") + private java.lang.String lawsId; + + /**相关项目*/ + @ApiModelProperty(value = "相关项目") + private java.lang.String projectId; + + + + + /**相关文件链接*/ + @ApiModelProperty(value = "相关文件链接") + private java.lang.String fileLink; + + /**相关文件*/ + @ApiModelProperty(value = "相关文件") + private java.lang.String file; + + /**进度追踪*/ + @ApiModelProperty(value = "进度追踪") + private java.lang.String progressTracking; + + /**结论*/ + @ApiModelProperty(value = "结论") + private java.lang.String conclusion; + + /**审批证据*/ + @ApiModelProperty(value = "审批证据") + private java.lang.String approvalEvidence; + + /**审批证据链接*/ + @ApiModelProperty(value = "审批证据链接") + private java.lang.String approvalEvidenceLink; + + + @ApiModelProperty(value = "相关文件地址链接(前端传参)") + private List fileLinkList; + + @ApiModelProperty(value = "进度追踪(前端传参)") + private List progressTrackingList; + + @ApiModelProperty(value = "审批证据链接(前端传参)") + private List approvalEvidenceLinkList; + + + @ApiModelProperty(value = "详情文件回显") + private List fileList; + + @ApiModelProperty(value = "详情文件回显") + private List approvalEvidenceFileList; + + //用于区分旧数据和新数据(旧数据->old,新数据->new) + @ApiModelProperty(value = "旧数据->old,新数据->new") + private String flag; + + + + + } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/vo/NcrTrackVOEn.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/vo/NcrTrackVOEn.java new file mode 100644 index 000000000..831f9e3e8 --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/vo/NcrTrackVOEn.java @@ -0,0 +1,254 @@ +package com.jero.modules.project.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.jero.common.aspect.annotation.Dict; +import com.jero.modules.oss.entity.OSSFile; +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; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; + + +/** + * @Description: 项目未符合项跟踪 + * @Author: jero-boot + * @Date: 2022-04-29 + * @Version: V1.0 + */ +@Data +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +public class NcrTrackVOEn implements Serializable { + + + //任务清单id + private String id; + + //用于导出时勾选数据 + private String uuid; + + private String userId; + + + + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "修改日期") + private java.util.Date updateTime; + + //中英文切换 + private String cut; + + //文档库ID + private String standId; + + //编号 + private String serialNumber; + + //标题 + @Excel(name = "Title", width = 20) + private String title; + + @Excel(name = "Issue Type", width = 20) + private String problemType_dictText; + + /**ps_issue*/ + @ApiModelProperty(value = "ps_issue") + @Excel(name = "PS-ISSUE", width = 20) + private String psIssue; + + @ApiModelProperty(value = "创建人") + @Excel(name = "Creator", width = 20) + private String createBy; + + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "创建日期") +// @Excel(name = "Create Date", width = 20) + private java.util.Date createTime; + @Excel(name = "Create Date", width = 20) + private String createTimeStr; + + @ApiModelProperty(value = "相关法规") + @Excel(name = " Related Regualtions", width = 20) + private String lawsName; + + @Excel(name = "Related Project", width = 20) + private String projectName; + + @Dict(dicCode ="duty_territory") + @Excel(name = "Resonsible Field", width = 20) + private String dutyTerritory; + + /**问题状态*/ + @ApiModelProperty(value = "问题状态") + @Excel(name = "Status", width = 20) + private String problemState; + + /**描述和分析*/ + @ApiModelProperty(value = "描述和分析") + @Excel(name = "Description", width = 20) + private String description; + + + //流程类型 + private String flowType; + + //流程类型标识(枚举) + private String flowTypeNumber; + + //目标市场 + private String targetMarket; + + //年款 + private String yearName; + + //项目版本 + private String projectVersion; + + //问题类型 + private String problemType; + + //发起人 + private String initiator; + + //责任人 + private String duty; + + //项目库id + private String projectLibraryId; + //不符合 + private String inconformity; + //待追踪 + private String track; + + //设计符合性确认 design_p_id + private String designPId; + //PreHomo确认 prehomo_p_id + private String prehomoPId; + //验证符合性确认 verify_p_id + private String verifyPId; + + //设计发起人 design_initiator_id + private String designInitiatorId; + //pre发起人 prehomo_initiator_id + private String prehomoInitiatorId; + //验证发起人 verify_initiator_id + private String verifyInitiatorId; + + + //设计责任人 design_duty_id + private String designDutyId; + //pre责任人 prehomo_duty_id + private String prehomoDutyId; + //验证责任人 verify_duty_id + private String verifyDutyId; + + + //设计问题类型 design_flow_task_status + private String designFlowTaskStatus; + //pre问题类型 prehomo_flow_task_status + private String prehomoFlowTaskStatus; + //验证问题类型 verify_flow_task_status + private String verifyFlowTaskStatus; + + private List ncrTrackVOList = new ArrayList<>(); + + + //以下字段跳转适用(还有项目库id) + //待办任务id + private String taskId; + //法规清单id + private String projectLawsInventoryId; + //流程实例id + private String prcId; + //流程类型 + private String prcType; + //状态:待办 、已办 + private String status; + //任务清单详情id + private String projectTaskInventoryDetailId; + //任务节点定义key + private String taskDefinitionKey; + //是否是系统管理员角色 + private String administrator; + + + //排序(1->正序, 2->倒序) + private String orderBy; + + //排序字段 + private String orderByField; + + private String flowStatus; + + + + /**相关法规*/ + @ApiModelProperty(value = "相关法规") + private String lawsId; + + /**相关项目*/ + @ApiModelProperty(value = "相关项目") + private String projectId; + + + + + /**相关文件链接*/ + @ApiModelProperty(value = "相关文件链接") + private String fileLink; + + /**相关文件*/ + @ApiModelProperty(value = "相关文件") + private String file; + + /**进度追踪*/ + @ApiModelProperty(value = "进度追踪") + private String progressTracking; + + /**结论*/ + @ApiModelProperty(value = "结论") + private String conclusion; + + /**审批证据*/ + @ApiModelProperty(value = "审批证据") + private String approvalEvidence; + + /**审批证据链接*/ + @ApiModelProperty(value = "审批证据链接") + private String approvalEvidenceLink; + + + @ApiModelProperty(value = "相关文件地址链接(前端传参)") + private List fileLinkList; + + @ApiModelProperty(value = "进度追踪(前端传参)") + private List progressTrackingList; + + @ApiModelProperty(value = "审批证据链接(前端传参)") + private List approvalEvidenceLinkList; + + + @ApiModelProperty(value = "详情文件回显") + private List fileList; + + @ApiModelProperty(value = "详情文件回显") + private List approvalEvidenceFileList; + + //用于区分旧数据和新数据(旧数据->old,新数据->new) + @ApiModelProperty(value = "旧数据->old,新数据->new") + private String flag; + + + + + + +} diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/vo/ProblemManagementVO.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/vo/ProblemManagementVO.java new file mode 100644 index 000000000..c758f5236 --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/vo/ProblemManagementVO.java @@ -0,0 +1,34 @@ +package com.jero.modules.project.vo; + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.jero.modules.oss.entity.OSSFile; +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; + +import java.io.Serializable; +import java.util.List; + + +/** + * @Description: 问题管理 + * @Author: jero-boot + * @Date: 2023-09-05 + * @Version: V1.0 + */ +@Data +public class ProblemManagementVO implements Serializable { + + private String fileLink; + private String progressTracking; + private String approvalEvidenceLink; + +} diff --git a/jero-web/src/common/lang/en-us.js b/jero-web/src/common/lang/en-us.js index 3163d1c67..cea607c6f 100644 --- a/jero-web/src/common/lang/en-us.js +++ b/jero-web/src/common/lang/en-us.js @@ -1955,6 +1955,16 @@ module.exports = { Reasonforreturn:'Reason for return', maintenanceTemplate:'Maintenance template', UserFeedback:'User Feedback', + Relevantlawsregulations:'Relevant laws and regulations', + Problemstate:'Problem state', + descriptions:'Descriptions', + documents:'Documents', + examineapproveevidence:'Examine and approve evidence', + conculsion:'Conculsion', + progresstracking:'Progress Tracking', + Fileupload:'File upload', + Addresslink:'Address link', + Problemanagement:'Problem management', Correspondingversion:'Corresponding version', Listcreationtime:'List creation time', Chinesecharacters:'The role code cannot enter Chinese characters', diff --git a/jero-web/src/common/lang/zh-cn.js b/jero-web/src/common/lang/zh-cn.js index 97890c560..4385f38cd 100644 --- a/jero-web/src/common/lang/zh-cn.js +++ b/jero-web/src/common/lang/zh-cn.js @@ -3915,4 +3915,14 @@ module.exports = { Listcreationtime:'清单创建时间', Chinesecharacters:'角色编码不可以输入汉字', alreadyexistssystem:'角色编码已存在', + Relevantlawsregulations:'相关法规', + Problemstate:'问题状态', + descriptions:'描述和分析', + documents:'相关文件', + examineapproveevidence:'审批证据', + conculsion:'结论', + progresstracking:'进度追踪', + Fileupload:'文件上传', + Addresslink:'地址链接', + Problemanagement:'问题管理', } \ No newline at end of file diff --git a/jero-web/src/views/projectManagement/components/addModelconformance.vue b/jero-web/src/views/projectManagement/components/addModelconformance.vue new file mode 100644 index 000000000..0bdd14ac0 --- /dev/null +++ b/jero-web/src/views/projectManagement/components/addModelconformance.vue @@ -0,0 +1,778 @@ + + + + + \ No newline at end of file diff --git a/jero-web/src/views/projectManagement/components/detilModel.vue b/jero-web/src/views/projectManagement/components/detilModel.vue new file mode 100644 index 000000000..23e0d70f7 --- /dev/null +++ b/jero-web/src/views/projectManagement/components/detilModel.vue @@ -0,0 +1,507 @@ + + + + + \ No newline at end of file diff --git a/jero-web/src/views/projectManagement/components/nonConformance.vue b/jero-web/src/views/projectManagement/components/nonConformance.vue index 46b5b74a5..70b02c278 100644 --- a/jero-web/src/views/projectManagement/components/nonConformance.vue +++ b/jero-web/src/views/projectManagement/components/nonConformance.vue @@ -3,15 +3,6 @@
- -
-
- {{$t('standard')}} -
- -
-
@@ -23,18 +14,105 @@
-
- {{$t('areaOfResponsibility')}} +
+ {{$t('Relevantlawsregulations')}}
- +
+ +
+
+ {{$t('RelatedItems')}} +
+ + + + {{ item.projectName}} + + + +
+
+ - {{$t('reset')}} + + {{ !toggleSearchStatus ? $t('open') : $t('away') }} + + + {{$t('reset')}} {{$t('query')}} @@ -42,7 +120,11 @@
-
+
+ + {{$t('newlyAdded')}} +
+
{{ $t('export') }}
@@ -51,360 +133,568 @@ - - - {{text}} - - - - - {{text}} - + + + + + +
+ + {{result.problemState ? result.problemState : ''}} + + + {{result.problemState ? result.problemState : ''}} + + + {{result.problemState ? result.problemState : ''}} + +
+ + + + + + {{ $t('See') }} + + + {{ $t('edit') }} + + + {{ $t('deleteLib') }} +
- - - - - - - - - - - - +
+ +
+ + \ No newline at end of file diff --git a/jero-web/src/views/projectManagement/projectNonConformance/index.vue b/jero-web/src/views/projectManagement/projectNonConformance/index.vue index 26225f031..81519f9a6 100644 --- a/jero-web/src/views/projectManagement/projectNonConformance/index.vue +++ b/jero-web/src/views/projectManagement/projectNonConformance/index.vue @@ -3,128 +3,106 @@
- -
-
- {{$t('standard')}} -
- -
-
{{$t('title')}}
- +
-
- {{$t('areaOfResponsibility')}} +
+ {{$t('Relevantlawsregulations')}}
- + +
+ + +
+
+ {{$t('RelatedItems')}} +
+ + + + {{ item.projectName}} + + +
@@ -142,6 +120,10 @@
+
+ + {{$t('newlyAdded')}} +
{{ $t('export') }} @@ -161,10 +143,44 @@ :data-source="dataSource" :columns="columns" > - - - {{text}} - + + + + + +
+ + {{result.problemState ? result.problemState : ''}} + + + {{result.problemState ? result.problemState : ''}} + + + {{result.problemState ? result.problemState : ''}} + +
+ + + + + + {{ $t('See') }} + + + {{ $t('edit') }} + + + {{ $t('deleteLib') }} +
@@ -181,6 +197,8 @@ />
+ + @@ -189,12 +207,17 @@ import PersonnelSelection from '@/components/PersonnelSelection/index' import designCompliance from '../../toDoCenter/projectRegulationTasks/components/designCompliance' import store from '@/store/' + import addModel from './moudles/addModel' + import detilModel from './moudles/detilModel' import { ResizeHeader, ResizeColumnProvide } from '@/mixins/header' + import moment from 'moment' export default { name: 'projectNonConformance', components: { PersonnelSelection, + addModel, + detilModel, designCompliance }, mixins:[ResizeHeader, ResizeColumnProvide], @@ -204,37 +227,29 @@ loading: false, dataSource: [], selectedRowKeys: [], + firstLevelDutyTerritoryList:[], projectNameList: [], + ProblemstateList:[this.$t('red'),this.$t('yellow'),this.$t('green'),], + // CertificationColor: { + // $t('red'): 'nonConformityColor', + // $t('green'): 'accordColor', + // $t('yellow'): 'TrackedColor', + // }, toggleSearchStatus: false, columns: [ - { - title: this.$t('standard'), - align: 'left', - dataIndex: 'serialNumber', - width: 170, - sorter:true, - scopedSlots: { customRender: 'standard' } - }, { title: this.$t('title'), align: 'left', dataIndex: 'title', width: 170, - scopedSlots: { customRender: 'standard' } - }, - { - title: this.$t('ProcessType'), - align: 'left', - dataIndex: 'flowType', - width: 150, sorter:true, ellipsis: true }, { - title: this.$t('areaOfResponsibility'), + title: this.$t('Relevantlawsregulations'), align: 'left', - dataIndex: 'dutyTerritory', - width: 100, + dataIndex: 'lawsName', + width: 170, sorter:true, ellipsis: true }, @@ -242,31 +257,64 @@ title: this.$t('RelatedItems'), align: 'left', dataIndex: 'projectName', - width: 180, + width: 170, sorter:true, ellipsis: true }, { title: this.$t('problemType'), align: 'left', - dataIndex: 'problemType', - width: 120, + dataIndex: 'problemType_dictText', + width: 170, + sorter:true, + ellipsis: true, + scopedSlots: { customRender: 'problemType' } + }, + { + title: this.$t('statisticalNodes'), + align: 'left', + dataIndex: 'dutyTerritory', + width: 100, sorter:true, ellipsis: true }, { - title: this.$t('Sponsor'), + title: this.$t('creator'), align: 'left', - dataIndex: 'initiator', + dataIndex: 'createBy', + width: 100, sorter:true, - width: 100 + ellipsis: true }, { - title: this.$t('personLiable'), + title: this.$t('Problemstate'), align: 'left', - dataIndex: 'duty', + dataIndex: 'problemState', + width: 120, sorter:true, - width: 100 + ellipsis: true, + scopedSlots: { customRender: 'CertificationProgress' } + }, + { + title: this.$t('createTime'), + align: 'left', + dataIndex: 'createTime', + sorter:true, + width: 180 + }, + { + title: this.$t('updateTime'), + align: 'left', + dataIndex: 'updateTime', + sorter:true, + width: 180 + }, + { + title: this.$t('operation'), + align: 'left', + fixed: 'right', + width: localStorage.getItem('language') == 'zh-cn' ? 160 : 180, + scopedSlots: { customRender: 'operation' } } ], total: 0, @@ -274,6 +322,7 @@ pageNo: 1, orderBy: '1', orderByField: '', + long: '', isPersonnelSelection:true, url: { page: '/project/ncrTrackController/queryPage', @@ -288,8 +337,10 @@ } }, mounted() { + this.long = localStorage.getItem('language') || 'zh-cn' this.getList() this.getNameList() + this.getFirstLevelDutyTerritory() }, watch: { '$socketPublic.state.msg': { @@ -304,8 +355,17 @@ } }, methods: { + getFirstLevelDutyTerritory() { + getAction('/sys/dictItem/getFirstLevelDutyTerritory', {}).then((res) => { + if (res.success) { + this.firstLevelDutyTerritoryList = res.result + } else { + this.firstLevelDutyTerritoryList = [] + } + }) + }, getNameList() { - getAction('project/projectNameInfoEO/list', {}).then((res) => { + getAction('/project/projectNameInfoEO/queryProjectNameList', {}).then((res) => { if (res.success) { this.projectNameList = res.result || [] } else { @@ -320,6 +380,13 @@ this.pageNo = 1 this.getList() }, + addModelForm(){ + this.getList() + }, + onChange(value){ + console.log(value) + this.queryParam.problemType_dictText = value + }, onSelectChange(value) { this.content = [] this.selectedRowKeys = value @@ -328,7 +395,7 @@ this.selectedRowKeys.forEach(val => { if (res.uuid == val) { this.content.push({ - id: res.id, + id: res.id || res.uuid, flowType: res.flowType }) } @@ -360,6 +427,9 @@ this.getList() }, getList() { + if(this.queryParam.problemType_dictText){ + delete this.queryParam.problemType + } let query = { pageNo: this.pageNo, pageSize: this.pageSize, @@ -384,12 +454,42 @@ } }) }, + handleAdd(){ + this.$refs.addModelRef.add() + }, + edit(record){ + this.$refs.addModelRef.edit(JSON.parse(JSON.stringify(record))) + }, + detil(record){ + if(record.flag == 'NEW'){ + this.$refs.detilModelRef.edit(JSON.parse(JSON.stringify(record))) + }else{ + this.designFlowStatusClick(record) + } + }, + deleteLib(record){ + let _this = this + this.$confirm({ + content: _this.$t('ConfirmDelete'), + onOk() { + deleteAction('/project/problemManagementEO/deleteBatch', { ids: record.uuid }).then((res) => { + if (res.success) { + _this.$message.success(_this.$t('OperationSuccessful')) + _this.getList() + } else { + _this.$message.warning(res.message) + } + }) + } + }) + }, handleExport() { let query = { ...this.queryParam, ncrTrackVOList: this.content } - downloadFilePost(this.url.exportData, this.$t('NonConformance') + '.xls', query, this.Deselect) + let date = moment(new Date()).format('YYYY-MM-DD') + downloadFilePost(this.url.exportData, this.$t('Problemanagement') + date + '.zip', query, this.Deselect) }, Deselect() { this.selectedRowKeys = [] @@ -550,7 +650,40 @@ text-align: right; margin-top: 20px; } + .box-content-Progress { + width: 78px; + height: 32px; + display: inline-block; + text-align: center; + line-height: 32px; + border-radius: 4px; + background: #f1f3f5; + color: #919399; + } + .accordColor { + background: #dbf6e2; + color: #26BD4B; + } + .nonConformityColor { + background: #f3dddd; + color: #E83030; + } + + .TrackedColor { + background: #f6ebdb; + color: #FDA71C; + } + + .notInvolvedColor { + background: #eef1f4; + color: #707486; + } + + .submittedColor { + color: #00B3BE; + background: #ddf3f4; + } .textName { width: 100%; overflow: hidden; diff --git a/jero-web/src/views/projectManagement/projectNonConformance/moudles/addModel.vue b/jero-web/src/views/projectManagement/projectNonConformance/moudles/addModel.vue new file mode 100644 index 000000000..0bdd14ac0 --- /dev/null +++ b/jero-web/src/views/projectManagement/projectNonConformance/moudles/addModel.vue @@ -0,0 +1,778 @@ + + + + + \ No newline at end of file diff --git a/jero-web/src/views/projectManagement/projectNonConformance/moudles/detilModel.vue b/jero-web/src/views/projectManagement/projectNonConformance/moudles/detilModel.vue new file mode 100644 index 000000000..284d6c5ee --- /dev/null +++ b/jero-web/src/views/projectManagement/projectNonConformance/moudles/detilModel.vue @@ -0,0 +1,507 @@ + + + + + \ No newline at end of file