multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/EnvironmentDemandRiskController.java
@@ -2,6 +2,7 @@ import com.gkhy.exam.common.api.CommonResult; import com.gkhy.exam.system.domain.*; import com.gkhy.exam.system.domain.req.CopyReq; import com.gkhy.exam.system.service.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; @@ -132,6 +133,12 @@ @GetMapping("/factor/control/deleted") public CommonResult deletedFactorControl(@RequestParam("factorControlId") Integer factorControlId,@RequestParam("factorDiscrenId") Integer factorDiscrenId){ return factorControlService.deletedFactorControl(factorControlId,factorDiscrenId); } @ApiOperation(value = "内外部环境要素识别复制") @PostMapping("/factor/discern/copy") public CommonResult copyFactorDiscern(@RequestBody CopyReq copyReq){ return factorDiscernService.copyFactorDiscern(copyReq); } /** @@ -354,4 +361,10 @@ return riskMonitorService.deletedRiskMonitor(riskMonitorId); } @ApiOperation(value = "风险管理复制") @PostMapping("/risk/manage/copy") public CommonResult copyRiskMonitor(@RequestBody CopyReq copyReq){ return riskManageService.copyRiskMonitor(copyReq); } } multi-system/src/main/java/com/gkhy/exam/system/domain/CourseEffectiven.java
@@ -57,6 +57,10 @@ @JsonFormat(pattern = "yyyy-MM-dd") private LocalDate openTime; @ApiModelProperty(value = "开课年份") @TableField(exist = false) private String openYear; @ApiModelProperty(value = "员工") @TableField("staffs") private String staffs; multi-system/src/main/java/com/gkhy/exam/system/domain/ExExamRecord.java
@@ -118,4 +118,8 @@ @TableField(exist = false) private List<RecordFile> files; @ApiModelProperty("计划年份") @TableField(exist = false) private String planYear; } multi-system/src/main/java/com/gkhy/exam/system/domain/req/CopyReq.java
New file @@ -0,0 +1,16 @@ package com.gkhy.exam.system.domain.req; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @Getter @Setter public class CopyReq { @ApiModelProperty(value = "目标企业ID", required = true) private Integer companyId; @ApiModelProperty(value = "选择年份", required = true) private String copyYear; @ApiModelProperty(value = "目标年份", required = true) private String targetYear; } multi-system/src/main/java/com/gkhy/exam/system/mapper/RiskMonitorMapper.java
@@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.gkhy.exam.system.domain.RiskMonitor; import org.apache.ibatis.annotations.Param; import org.mapstruct.Mapper; import java.util.List; @@ -11,4 +12,6 @@ List<RiskMonitor> selectMonitorList(RiskMonitor riskMonitor); List<RiskMonitor> selectMonitor(RiskMonitor riskMonitor); void deletedByManageIds(@Param("collect") List<Integer> collect); } multi-system/src/main/java/com/gkhy/exam/system/service/FactorDiscernService.java
@@ -4,6 +4,7 @@ import com.gkhy.exam.common.api.CommonPage; import com.gkhy.exam.common.api.CommonResult; import com.gkhy.exam.system.domain.FactorDiscern; import com.gkhy.exam.system.domain.req.CopyReq; public interface FactorDiscernService extends IService<FactorDiscern> { CommonPage selectFactorDiscernList(FactorDiscern factorDiscern); @@ -15,4 +16,6 @@ CommonResult deletedFactorDiscern(Integer factorDiscrenId); CommonResult selectFactorDiscernListAll(FactorDiscern factorDiscern); CommonResult copyFactorDiscern(CopyReq copyReq); } multi-system/src/main/java/com/gkhy/exam/system/service/RiskManageService.java
@@ -4,6 +4,7 @@ import com.gkhy.exam.common.api.CommonPage; import com.gkhy.exam.common.api.CommonResult; import com.gkhy.exam.system.domain.RiskManage; import com.gkhy.exam.system.domain.req.CopyReq; public interface RiskManageService extends IService<RiskManage> { CommonPage selectRiskManageList(RiskManage riskManage); @@ -15,4 +16,6 @@ CommonResult updateRiskManage(RiskManage riskManage); CommonResult deletedRiskManage(Integer riskManageId); CommonResult copyRiskMonitor(CopyReq copyReq); } multi-system/src/main/java/com/gkhy/exam/system/service/impl/FactorDiscernServiceImpl.java
@@ -1,5 +1,6 @@ package com.gkhy.exam.system.service.impl; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gkhy.exam.common.api.CommonPage; import com.gkhy.exam.common.api.CommonResult; @@ -7,8 +8,11 @@ import com.gkhy.exam.common.utils.PageUtils; import com.gkhy.exam.common.utils.SecurityUtils; import com.gkhy.exam.system.domain.FactorContent; import com.gkhy.exam.system.domain.FactorControl; import com.gkhy.exam.system.domain.FactorDiscern; import com.gkhy.exam.system.domain.req.CopyReq; import com.gkhy.exam.system.mapper.FactorContentMapper; import com.gkhy.exam.system.mapper.FactorControlMapper; import com.gkhy.exam.system.mapper.FactorDiscernMapper; import com.gkhy.exam.system.service.FactorDiscernService; import org.springframework.beans.factory.annotation.Autowired; @@ -16,7 +20,9 @@ import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @Service public class FactorDiscernServiceImpl extends ServiceImpl<FactorDiscernMapper, FactorDiscern> implements FactorDiscernService { @@ -26,6 +32,9 @@ @Autowired private FactorContentMapper factorContentMapper; @Autowired private FactorControlMapper factorControlMapper; @Override @@ -56,6 +65,135 @@ @Override @Transactional public CommonResult copyFactorDiscern(CopyReq copyReq) { // 参数校验 if (copyReq.getCompanyId() == null) { throw new ApiException("企业ID不能为空"); } if (copyReq.getCopyYear() == null || copyReq.getCopyYear().isEmpty()) { throw new ApiException("选择年份不能为空"); } if (copyReq.getTargetYear() == null || copyReq.getTargetYear().isEmpty()) { throw new ApiException("目标年份不能为空"); } // 查询源数据:根据企业ID和选择年份查询要素识别记录 FactorDiscern queryParam = new FactorDiscern(); queryParam.setCompanyId(Long.valueOf(copyReq.getCompanyId())); queryParam.setYear(copyReq.getCopyYear()); List<FactorDiscern> sourceFactorDiscerns = factorDiscernMapper.selectFactorDiscernList(queryParam); if (sourceFactorDiscerns == null || sourceFactorDiscerns.isEmpty()) { throw new ApiException("未找到源年份[" + copyReq.getCopyYear() + "]的要素识别数据"); } // 检查目标年份是否已存在数据 FactorDiscern targetCheck = new FactorDiscern(); targetCheck.setCompanyId(Long.valueOf(copyReq.getCompanyId())); targetCheck.setYear(copyReq.getTargetYear()); List<FactorDiscern> existingTargetData = factorDiscernMapper.selectFactorDiscernList(targetCheck); if (existingTargetData != null && !existingTargetData.isEmpty()) { // 收集所有需要删除的ID List<Integer> deleteIds = existingTargetData.stream() .map(FactorDiscern::getId) .collect(Collectors.toList()); // 批量逻辑删除这些ID对应的要素识别记录 FactorDiscern updateEntity = new FactorDiscern(); updateEntity.setDelFlag(2); updateEntity.setUpdateTime(LocalDateTime.now()); updateEntity.setUpdateBy(SecurityUtils.getUsername()); UpdateWrapper<FactorDiscern> updateWrapper = new UpdateWrapper<>(); updateWrapper.in("id", deleteIds); factorDiscernMapper.update(updateEntity, updateWrapper); // 同时删除这些要素识别下的所有内容记录 // UpdateWrapper<FactorContent> contentWrapper = new UpdateWrapper<>(); // contentWrapper.in("factor_discern_id", deleteIds); // factorContentMapper.delete(contentWrapper); //删除要素识别控制对应数据 FactorControl factorControl = new FactorControl(); factorControl.setDelFlag(2); factorControl.setUpdateTime(LocalDateTime.now()); factorControl.setUpdateBy(SecurityUtils.getUsername()); factorControlMapper.update(factorControl, new UpdateWrapper<FactorControl>().in("factor_discern_id", deleteIds)); } // 遍历源数据进行复制 for (FactorDiscern sourceDiscern : sourceFactorDiscerns) { // 创建新的要素识别记录 FactorDiscern newFactorDiscern = new FactorDiscern(); newFactorDiscern.setCompanyId(sourceDiscern.getCompanyId()); newFactorDiscern.setDeptId(sourceDiscern.getDeptId()); newFactorDiscern.setYear(copyReq.getTargetYear()); newFactorDiscern.setFictionId(sourceDiscern.getFictionId()); newFactorDiscern.setCheckId(sourceDiscern.getCheckId()); newFactorDiscern.setRatifyId(sourceDiscern.getRatifyId()); newFactorDiscern.setFictionTime(sourceDiscern.getFictionTime()); newFactorDiscern.setDelFlag(1); newFactorDiscern.setCreateBy(SecurityUtils.getUsername()); newFactorDiscern.setCreateTime(LocalDateTime.now()); // 插入新的要素识别记录 factorDiscernMapper.insert(newFactorDiscern); // 查询源要素识别的内容 List<FactorContent> sourceContents = factorContentMapper.selectByFactorId(sourceDiscern.getId()); //添加要素识别控制 List<FactorControl> factorControls = factorControlMapper.selectFactorDiscernId(sourceDiscern.getId()); for (FactorControl factorControl : factorControls) { FactorControl newControl = new FactorControl(); newControl.setCompanyId(factorControl.getCompanyId()); newControl.setFactorDiscernId(newFactorDiscern.getId()); newControl.setNumber(factorControl.getNumber()); newControl.setFrequency(factorControl.getFrequency()); newControl.setFictionId(factorControl.getFictionId()); newControl.setCheckId(factorControl.getCheckId()); newControl.setRatifyId(factorControl.getRatifyId()); newControl.setDelFlag(1); newControl.setCreateBy(SecurityUtils.getUsername()); newControl.setCreateTime(LocalDateTime.now()); factorControlMapper.insert(newControl); } if (sourceContents != null && !sourceContents.isEmpty()) { List<FactorContent> newContents = new ArrayList<>(); // 遍历内容进行复制 for (FactorContent sourceContent : sourceContents) { FactorContent newContent = new FactorContent(); newContent.setFactorDiscernId(newFactorDiscern.getId()); newContent.setFactorName(sourceContent.getFactorName()); newContent.setFactorMess(sourceContent.getFactorMess()); newContent.setInfluence(sourceContent.getInfluence()); newContent.setMonitorMethod(sourceContent.getMonitorMethod()); newContent.setReview(sourceContent.getReview()); newContent.setSolutions(sourceContent.getSolutions()); newContent.setResult(sourceContent.getResult()); newContent.setRemark(sourceContent.getRemark()); newContent.setType(sourceContent.getType()); newContents.add(newContent); } // 批量插入内容记录 if (!newContents.isEmpty()) { factorContentMapper.insertBatch(newContents); } } } return CommonResult.success("成功从年份[" + copyReq.getCopyYear() + "]复制到年份[" + copyReq.getTargetYear() + "]"); } @Override @Transactional public CommonResult insertFactorDiscern(FactorDiscern factorDiscern) { List<FactorDiscern> factorDiscerns = factorDiscernMapper.selectByCompanyIdAndDeptId(factorDiscern); if (factorDiscerns.size()>0){ multi-system/src/main/java/com/gkhy/exam/system/service/impl/RiskManageServiceImpl.java
@@ -1,5 +1,6 @@ package com.gkhy.exam.system.service.impl; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gkhy.exam.common.api.CommonPage; import com.gkhy.exam.common.api.CommonResult; @@ -9,8 +10,11 @@ import com.gkhy.exam.system.domain.RiskContent; import com.gkhy.exam.system.domain.RiskContentMess; import com.gkhy.exam.system.domain.RiskManage; import com.gkhy.exam.system.domain.RiskMonitor; import com.gkhy.exam.system.domain.req.CopyReq; import com.gkhy.exam.system.mapper.RiskContentMapper; import com.gkhy.exam.system.mapper.RiskManageMapper; import com.gkhy.exam.system.mapper.RiskMonitorMapper; import com.gkhy.exam.system.service.RiskManageService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -19,6 +23,7 @@ import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @Service public class RiskManageServiceImpl extends ServiceImpl<RiskManageMapper, RiskManage> implements RiskManageService { @@ -28,6 +33,9 @@ @Autowired private RiskContentMapper riskContentMapper; @Autowired private RiskMonitorMapper riskMonitorMapper; @Override @@ -120,4 +128,133 @@ riskManageMapper.updateById(riskManage); return CommonResult.success(); } @Override @Transactional public CommonResult copyRiskMonitor(CopyReq copyReq) { // 参数校验 if (copyReq.getCompanyId() == null) { throw new ApiException("企业ID不能为空"); } if (copyReq.getCopyYear() == null || copyReq.getCopyYear().isEmpty()) { throw new ApiException("选择年份不能为空"); } if (copyReq.getTargetYear() == null || copyReq.getTargetYear().isEmpty()) { throw new ApiException("目标年份不能为空"); } // 查询源数据:根据企业ID和选择年份查询风险管理记录 RiskManage queryParam = new RiskManage(); queryParam.setCompanyId(Long.valueOf(copyReq.getCompanyId())); queryParam.setYear(copyReq.getCopyYear()); List<RiskManage> sourceRiskManages = riskManageMapper.selectRiskManageList(queryParam); if (sourceRiskManages == null || sourceRiskManages.isEmpty()) { throw new ApiException("未找到源年份[" + copyReq.getCopyYear() + "]的风险管理数据"); } // 检查目标年份是否已存在数据 RiskManage targetCheck = new RiskManage(); targetCheck.setCompanyId(Long.valueOf(copyReq.getCompanyId())); targetCheck.setYear(copyReq.getTargetYear()); List<RiskManage> existingTargetData = riskManageMapper.selectRiskManageList(targetCheck); if (existingTargetData != null && !existingTargetData.isEmpty()) { RiskManage updateEntity = new RiskManage(); updateEntity.setDelFlag(2); updateEntity.setUpdateTime(LocalDateTime.now()); updateEntity.setUpdateBy(SecurityUtils.getUsername()); UpdateWrapper<RiskManage> objectUpdateWrapper = new UpdateWrapper<>(); objectUpdateWrapper.eq("company_id", targetCheck.getCompanyId()) .eq("year", targetCheck.getYear()); riskManageMapper.update(updateEntity, objectUpdateWrapper); List<Integer> collect = existingTargetData.stream().map(RiskManage::getId).collect(Collectors.toList()); riskMonitorMapper.deletedByManageIds(collect); } // 遍历源数据进行复制 for (RiskManage sourceManage : sourceRiskManages) { // 创建新的风险管理记录 RiskManage newRiskManage = new RiskManage(); newRiskManage.setCompanyId(sourceManage.getCompanyId()); newRiskManage.setDeptId(sourceManage.getDeptId()); newRiskManage.setYear(copyReq.getTargetYear()); newRiskManage.setDocument(sourceManage.getDocument()); newRiskManage.setFictionId(sourceManage.getFictionId()); newRiskManage.setCheckId(sourceManage.getCheckId()); newRiskManage.setRatifyId(sourceManage.getRatifyId()); newRiskManage.setDelFlag(1); newRiskManage.setCreateBy(SecurityUtils.getUsername()); newRiskManage.setCreateTime(LocalDateTime.now()); // 插入新的风险管理记录 riskManageMapper.insert(newRiskManage); // 查询源风险管理的内容 List<RiskContent> sourceContents = riskContentMapper.selectRiskContent(sourceManage.getId()); RiskMonitor riskMonitor = new RiskMonitor(); riskMonitor.setRiskManageId(sourceManage.getId()); List<RiskMonitor> riskMonitors = riskMonitorMapper.selectMonitor(riskMonitor); for (RiskMonitor monitor : riskMonitors) { RiskMonitor newMonitor = new RiskMonitor(); newMonitor.setRiskManageId(newRiskManage.getId()); newMonitor.setCompanyId(monitor.getCompanyId()); newMonitor.setFictionId(monitor.getFictionId()); newMonitor.setCheckId(monitor.getCheckId()); newMonitor.setRatifyId(monitor.getRatifyId()); newMonitor.setCheckTime(monitor.getCheckTime()); newMonitor.setCreateBy(SecurityUtils.getUsername()); newMonitor.setCreateTime(LocalDateTime.now()); riskMonitorMapper.insert(newMonitor); } if (sourceContents != null && !sourceContents.isEmpty()) { List<RiskContentMess> allContentMesses = new ArrayList<>(); // 遍历风险内容进行复制 for (RiskContent sourceContent : sourceContents) { // 创建新的风险内容 RiskContent newContent = new RiskContent(); newContent.setRiskManageId(newRiskManage.getId()); newContent.setProcess(sourceContent.getProcess()); // 插入新的风险内容 riskContentMapper.insert(newContent); // 查询源风险内容的详细信息 List<RiskContentMess> sourceMesses = riskContentMapper.selectContentMess(sourceContent.getId()); if (sourceMesses != null && !sourceMesses.isEmpty()) { // 复制详细信息并关联到新的风险内容 for (RiskContentMess sourceMess : sourceMesses) { RiskContentMess newMess = new RiskContentMess(); newMess.setRiskContentId(newContent.getId()); newMess.setRiskEvent(sourceMess.getRiskEvent()); newMess.setRiskConsequence(sourceMess.getRiskConsequence()); newMess.setSeverity(sourceMess.getSeverity()); newMess.setFrequency(sourceMess.getFrequency()); newMess.setRpn(sourceMess.getRpn()); newMess.setRiskLevel(sourceMess.getRiskLevel()); newMess.setMeasures(sourceMess.getMeasures()); newMess.setChargeUser(sourceMess.getChargeUser()); newMess.setMonitorTime(sourceMess.getMonitorTime()); newMess.setReview(sourceMess.getReview()); allContentMesses.add(newMess); } } } // 批量插入风险详细内容 if (!allContentMesses.isEmpty()) { riskContentMapper.insertRiskContentMess(allContentMesses); } } } return CommonResult.success("成功从年份[" + copyReq.getCopyYear() + "]复制到年份[" + copyReq.getTargetYear() + "]"); } } multi-system/src/main/resources/mapper/system/CourseEffectivenMapper.xml
@@ -39,6 +39,9 @@ <if test="companyId!=null"> and ce.company_id = #{companyId} </if> <if test="openYear != null and openYear != ''"> AND YEAR(ce.open_time) = #{openYear} </if> ORDER BY ce.create_time DESC </select> multi-system/src/main/resources/mapper/system/ExExamRecordMapper.xml
@@ -58,6 +58,9 @@ <if test="companyId!=null"> and a.company_id = #{companyId} </if> <if test="planYear != null and planYear != ''"> AND YEAR(a.plan_date) = #{planYear} </if> </where> order by a.id desc </select> multi-system/src/main/resources/mapper/system/RiskMonitorMapper.xml
@@ -1,6 +1,12 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.gkhy.exam.system.mapper.RiskMonitorMapper"> <update id="deletedByManageIds"> UPDATE `risk_monitor` SET del_flag = 2 WHERE risk_manage_id IN <foreach item="item" collection="collect" separator="," open="(" close=")"> #{item} </foreach> </update> <select id="selectMonitorList" resultType="com.gkhy.exam.system.domain.RiskMonitor"> SELECT @@ -32,7 +38,7 @@ LEFT JOIN sys_user su2 ON rm.check_id = su2.id LEFT JOIN sys_user su3 ON rm.ratify_id = su3.id LEFT JOIN sys_dept sd ON rm2.dept_id = sd.dept_id WHERE rm.del_flag = 1 WHERE rm.del_flag = 1 and rm2.del_flag = 1 <if test="companyId!=null"> and rm.company_id =#{companyId} </if> multi-system/src/main/resources/mapper/system/TrainPlanMapper.xml
@@ -30,6 +30,9 @@ <if test="companyId!=null"> and tp.company_id = #{companyId} </if> <if test="trainTime != null and trainTime != ''"> and YEAR(tp.train_time) = #{trainTime} </if> ORDER BY tp.create_time ASC </select> <select id="selectByCompanyId" resultType="com.gkhy.exam.system.domain.TrainPlan">