From 8b4e9a918479c2444459b096a9450d1218ea7498 Mon Sep 17 00:00:00 2001 From: syruan <321359594@qq.com> Date: Fri, 17 Jan 2025 18:12:46 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E8=B4=AD=E9=AA=8C=E6=94=B6=E4=BC=9A?= =?UTF-8?q?=E7=AD=BE=E6=B5=81=E7=A8=8B=E5=A2=9E=E5=8A=A0=EF=BC=8C=E9=AA=8C?= =?UTF-8?q?=E6=94=B6=E5=8D=95=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../countersign/mapper/SignProcessMapper.java | 18 +++++ .../purchase/domain/PurchaseSignRecord.java | 47 +++++++++++ .../domain/vo/PurchaseCheckFormVo.java | 7 ++ .../impl/PurchaseCheckInfoServiceImpl.java | 81 ++++++++++++++++++- .../countersign/SignProcessMapper.xml | 21 +++++ 5 files changed, 172 insertions(+), 2 deletions(-) create mode 100644 bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/domain/PurchaseSignRecord.java diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/countersign/mapper/SignProcessMapper.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/countersign/mapper/SignProcessMapper.java index 5a44d23e..a2443195 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/countersign/mapper/SignProcessMapper.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/countersign/mapper/SignProcessMapper.java @@ -2,6 +2,7 @@ package com.bonus.material.countersign.mapper; import com.bonus.material.countersign.domain.SignConfigVo; import com.bonus.material.countersign.domain.SignProcessVo; +import com.bonus.material.purchase.domain.PurchaseSignRecord; import java.util.List; @@ -14,6 +15,23 @@ import java.util.List; public interface SignProcessMapper { + /** + * 查询采购任务的会签记录 + * @param taskId 任务id + */ + List getPurchaseSignRecordByTask(Long taskId); + + /** + * 查询采新购验收任务已进行会签的签名地址 + * @param taskId 任务id + */ + List getPurchaseSignUrlListByTaskId(Long taskId); + + /** + * 插入新购任务的会签记录 + */ + int insertPurchaseSignRecord(PurchaseSignRecord purchaseSignRecord); + /** * 查询会签流程配置管理列表 * diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/domain/PurchaseSignRecord.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/domain/PurchaseSignRecord.java new file mode 100644 index 00000000..e453ca9a --- /dev/null +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/domain/PurchaseSignRecord.java @@ -0,0 +1,47 @@ +package com.bonus.material.purchase.domain; + +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * @author : 阮世耀 + * @version : 1.0 + * @PackagePath: com.bonus.material.purchase.domain + * @CreateTime: 2025-01-17 16:45 + * @Description: 新购会签记录表 + */ +@Data +@Accessors(chain = true) +public class PurchaseSignRecord { + + private Long id; + + private Long taskId; + + private Long userId; + + private Long orgId; + + private String signUrl; + + private String signType; + + public PurchaseSignRecord(Long taskId, Long userId, Long orgId) { + this.taskId = taskId; + this.userId = userId; + this.orgId = orgId; + } + + public PurchaseSignRecord() { + } + + public PurchaseSignRecord(Long id, Long taskId, Long userId, Long orgId, String signUrl, String signType) { + this.id = id; + this.taskId = taskId; + this.userId = userId; + this.orgId = orgId; + this.signUrl = signUrl; + this.signType = signType; + } + +} diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/domain/vo/PurchaseCheckFormVo.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/domain/vo/PurchaseCheckFormVo.java index 7fce88c0..224ef22c 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/domain/vo/PurchaseCheckFormVo.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/domain/vo/PurchaseCheckFormVo.java @@ -2,6 +2,7 @@ package com.bonus.material.purchase.domain.vo; import com.bonus.material.archives.domain.ElcSignatureInfo; import com.bonus.material.purchase.domain.PurchaseCheckDetails; +import com.bonus.material.purchase.domain.PurchaseSignRecord; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -31,6 +32,12 @@ public class PurchaseCheckFormVo { @ApiModelProperty(value = "供应科") private String supplyDept; + private List gySignUrl = new ArrayList<>(); + + private List scSignUrl = new ArrayList<>(); + + private List kgSignUrl = new ArrayList<>(); + @ApiModelProperty("生产技术科") private String productionTechDept; diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/impl/PurchaseCheckInfoServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/impl/PurchaseCheckInfoServiceImpl.java index 18783b11..9d62e513 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/impl/PurchaseCheckInfoServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/impl/PurchaseCheckInfoServiceImpl.java @@ -15,13 +15,17 @@ import com.bonus.common.biz.enums.TmTaskTypeEnum; import com.bonus.common.core.exception.ServiceException; import com.bonus.common.core.utils.DateUtils; import com.bonus.common.core.web.domain.AjaxResult; +import com.bonus.common.core.web.domain.BaseEntity; import com.bonus.common.security.utils.SecurityUtils; import com.bonus.material.basic.domain.BmFileInfo; import com.bonus.material.basic.mapper.BmFileInfoMapper; import com.bonus.material.basic.service.IBmConfigService; +import com.bonus.material.countersign.domain.SignProcessVo; +import com.bonus.material.countersign.mapper.SignProcessMapper; import com.bonus.material.ma.domain.Type; import com.bonus.material.ma.mapper.TypeMapper; import com.bonus.material.purchase.domain.PurchaseCheckDetails; +import com.bonus.material.purchase.domain.PurchaseSignRecord; import com.bonus.material.purchase.domain.dto.PurchaseCheckDto; import com.bonus.material.purchase.domain.dto.PurchaseQueryDto; import com.bonus.material.purchase.domain.vo.PurchaseVerifyVo; @@ -30,6 +34,7 @@ import com.bonus.material.purchase.domain.vo.PurchaseCheckFormVo; import com.bonus.material.purchase.mapper.PurchaseMacodeInfoMapper; import com.bonus.material.task.domain.TmTask; import com.bonus.material.task.mapper.TmTaskMapper; +import com.sun.org.apache.bcel.internal.generic.IF_ACMPEQ; import org.apache.commons.lang3.BooleanUtils; import org.springframework.dao.DataAccessException; import org.springframework.stereotype.Service; @@ -71,6 +76,10 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService { @Resource private TypeMapper typeMapper; + @Resource + private SignProcessMapper signProcessMapper; + + // 引入新购任务阶段常量 private static final int PURCHASE_TASK_STAGE_MANAGE = 1; private static final int PURCHASE_TASK_STAGE_CHECK = 2; @@ -444,6 +453,62 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService { if (BooleanUtils.isTrue(purchaseVerifyVo.getVerifyPass())) { // 验收通过处理流程 for (PurchaseCheckDetails details : purchaseVerifyVo.getPurchaseCheckDetailsList()) { + // 前端选择验收通过操作,进入会签校验流程 + if (null != details && null != details.getTaskId()) { + // 查询已进行会签的org_id集合 + List purchaseSignRecordList = signProcessMapper.getPurchaseSignRecordByTask(details.getTaskId()); + Long loginUserDeptId = SecurityUtils.getLoginUser().getSysUser().getDeptId(); + if (null == loginUserDeptId || 0 == loginUserDeptId) { + return AjaxResult.error("会签失败!,请检查用户部门信息"); + } + if (CollectionUtils.isEmpty(purchaseSignRecordList)) { + // 如果没有进行过会签,则进行会签流程 + int addPurchaseSignResult = signProcessMapper.insertPurchaseSignRecord(new PurchaseSignRecord(details.getTaskId(), SecurityUtils.getUserId(), loginUserDeptId)); + if (0 < addPurchaseSignResult) { + return AjaxResult.success("会签成功"); + } else { + return AjaxResult.error("会签失败!,插入0条数据"); + } + } else { + // 进行过会签,进行下一步校验 + + // 查询需要进行会签的org_id集合 + List signProcessVoList = signProcessMapper.getList(new SignProcessVo()); + if (CollectionUtils.isEmpty(signProcessVoList)) { + return AjaxResult.error("会签失败!,未查询到会签配置流程!"); + } else { + // 查询出配置需要会签的org_id集合 + Set configSignOrgSet = signProcessVoList.stream().map(SignProcessVo::getOrgId).collect(Collectors.toSet()); + // 获取已进行会签的org_id集合 + Set signedOrgSet = purchaseSignRecordList.stream().map(PurchaseSignRecord::getOrgId).collect(Collectors.toSet()); + // 移除已会签的org_id + configSignOrgSet.removeAll(signedOrgSet); + if (!CollectionUtils.isEmpty(configSignOrgSet)) { + // 如果还有需要进行会签的数据,那么进行本次会签 + int addPurchaseSignResult = signProcessMapper.insertPurchaseSignRecord(new PurchaseSignRecord(details.getTaskId(), SecurityUtils.getUserId(), loginUserDeptId)); + if (0 < addPurchaseSignResult) { + // 会签成功,对配置的流程进行处理 + configSignOrgSet.remove(loginUserDeptId); + if (configSignOrgSet.isEmpty()) { + System.out.println("ONE会签成功,放行进行验收流程!"); + } else { + // 如果本次会签完成后还有需要进行会签的,那么本次会签完成,返回前端 + return AjaxResult.success("本次会签成功,还有未进行的会签部门!"); + } + } else { + return AjaxResult.error("会签失败!,插入0条数据"); + } + } else { + System.out.println("TWO会签成功,已全部进行会签,放行进行验收流程!"); + } + } + } + + } else { + return AjaxResult.error("detail数据异常,任务ID为空"); + } + + if (MaTypeManageTypeEnum.CODE_DEVICE.getTypeId().equals(details.getManageType())) { details.setStatus(PurchaseTaskStatusEnum.TO_BIND.getStatus()); } else if (MaTypeManageTypeEnum.NUMBER_DEVICE.getTypeId().equals(details.getManageType())) { @@ -504,9 +569,21 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService { purchaseCheckInfo.setTaskId(taskId); List list = purchaseCheckDetailsMapper.selectPurchaseCheckDetailsListFromInfo(purchaseCheckInfo); if (!CollectionUtils.isEmpty(list)) { + List purchaseSignRecordUserSignList = new ArrayList<>(); for (PurchaseCheckDetails purchaseCheckDetails : list) { - result.setSignUrl(purchaseCheckDetails.getSignUrl() != null ? purchaseCheckDetails.getSignUrl() : ""); - result.setSignType(purchaseCheckDetails.getSignType() != null ? purchaseCheckDetails.getSignType() : ""); + // 查询已签名的记录 + if (purchaseSignRecordUserSignList.isEmpty()) { + purchaseSignRecordUserSignList = signProcessMapper.getPurchaseSignUrlListByTaskId(purchaseCheckDetails.getTaskId()); + } + result.setSignUrl(null != purchaseCheckDetails.getSignUrl() ? purchaseCheckDetails.getSignUrl() : ""); + result.setSignType(null != purchaseCheckDetails.getSignType() ? purchaseCheckDetails.getSignType() : ""); + } + // 分流存入集合 + for (PurchaseSignRecord userSignObj : purchaseSignRecordUserSignList) { + if (null == userSignObj.getOrgId()) { continue;} + if (311 == userSignObj.getOrgId()) {result.getGySignUrl().add(userSignObj);} + if (313 == userSignObj.getOrgId()) {result.getScSignUrl().add(userSignObj);} + if (312 == userSignObj.getOrgId()) {result.getKgSignUrl().add(userSignObj);} } } // 执行SQL查询内层信息 diff --git a/bonus-modules/bonus-material/src/main/resources/mapper/material/countersign/SignProcessMapper.xml b/bonus-modules/bonus-material/src/main/resources/mapper/material/countersign/SignProcessMapper.xml index ece31254..09e475de 100644 --- a/bonus-modules/bonus-material/src/main/resources/mapper/material/countersign/SignProcessMapper.xml +++ b/bonus-modules/bonus-material/src/main/resources/mapper/material/countersign/SignProcessMapper.xml @@ -99,4 +99,25 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where id = #{id} and del_flag = 0 + + + + insert into purchase_audit_record(task_id, auditor, org_id) + values(#{taskId}, #{userId}, #{orgId}) + + + \ No newline at end of file