新购验收会签流程增加,验收单修改
This commit is contained in:
parent
b14bed4d9a
commit
8b4e9a9184
|
|
@ -2,6 +2,7 @@ package com.bonus.material.countersign.mapper;
|
||||||
|
|
||||||
import com.bonus.material.countersign.domain.SignConfigVo;
|
import com.bonus.material.countersign.domain.SignConfigVo;
|
||||||
import com.bonus.material.countersign.domain.SignProcessVo;
|
import com.bonus.material.countersign.domain.SignProcessVo;
|
||||||
|
import com.bonus.material.purchase.domain.PurchaseSignRecord;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
|
@ -14,6 +15,23 @@ import java.util.List;
|
||||||
public interface SignProcessMapper
|
public interface SignProcessMapper
|
||||||
{
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询采购任务的会签记录
|
||||||
|
* @param taskId 任务id
|
||||||
|
*/
|
||||||
|
List<PurchaseSignRecord> getPurchaseSignRecordByTask(Long taskId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询采新购验收任务已进行会签的签名地址
|
||||||
|
* @param taskId 任务id
|
||||||
|
*/
|
||||||
|
List<PurchaseSignRecord> getPurchaseSignUrlListByTaskId(Long taskId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 插入新购任务的会签记录
|
||||||
|
*/
|
||||||
|
int insertPurchaseSignRecord(PurchaseSignRecord purchaseSignRecord);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询会签流程配置管理列表
|
* 查询会签流程配置管理列表
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -2,6 +2,7 @@ package com.bonus.material.purchase.domain.vo;
|
||||||
|
|
||||||
import com.bonus.material.archives.domain.ElcSignatureInfo;
|
import com.bonus.material.archives.domain.ElcSignatureInfo;
|
||||||
import com.bonus.material.purchase.domain.PurchaseCheckDetails;
|
import com.bonus.material.purchase.domain.PurchaseCheckDetails;
|
||||||
|
import com.bonus.material.purchase.domain.PurchaseSignRecord;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
|
@ -31,6 +32,12 @@ public class PurchaseCheckFormVo {
|
||||||
@ApiModelProperty(value = "供应科")
|
@ApiModelProperty(value = "供应科")
|
||||||
private String supplyDept;
|
private String supplyDept;
|
||||||
|
|
||||||
|
private List<PurchaseSignRecord> gySignUrl = new ArrayList<>();
|
||||||
|
|
||||||
|
private List<PurchaseSignRecord> scSignUrl = new ArrayList<>();
|
||||||
|
|
||||||
|
private List<PurchaseSignRecord> kgSignUrl = new ArrayList<>();
|
||||||
|
|
||||||
@ApiModelProperty("生产技术科")
|
@ApiModelProperty("生产技术科")
|
||||||
private String productionTechDept;
|
private String productionTechDept;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,13 +15,17 @@ import com.bonus.common.biz.enums.TmTaskTypeEnum;
|
||||||
import com.bonus.common.core.exception.ServiceException;
|
import com.bonus.common.core.exception.ServiceException;
|
||||||
import com.bonus.common.core.utils.DateUtils;
|
import com.bonus.common.core.utils.DateUtils;
|
||||||
import com.bonus.common.core.web.domain.AjaxResult;
|
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.common.security.utils.SecurityUtils;
|
||||||
import com.bonus.material.basic.domain.BmFileInfo;
|
import com.bonus.material.basic.domain.BmFileInfo;
|
||||||
import com.bonus.material.basic.mapper.BmFileInfoMapper;
|
import com.bonus.material.basic.mapper.BmFileInfoMapper;
|
||||||
import com.bonus.material.basic.service.IBmConfigService;
|
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.domain.Type;
|
||||||
import com.bonus.material.ma.mapper.TypeMapper;
|
import com.bonus.material.ma.mapper.TypeMapper;
|
||||||
import com.bonus.material.purchase.domain.PurchaseCheckDetails;
|
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.PurchaseCheckDto;
|
||||||
import com.bonus.material.purchase.domain.dto.PurchaseQueryDto;
|
import com.bonus.material.purchase.domain.dto.PurchaseQueryDto;
|
||||||
import com.bonus.material.purchase.domain.vo.PurchaseVerifyVo;
|
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.purchase.mapper.PurchaseMacodeInfoMapper;
|
||||||
import com.bonus.material.task.domain.TmTask;
|
import com.bonus.material.task.domain.TmTask;
|
||||||
import com.bonus.material.task.mapper.TmTaskMapper;
|
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.apache.commons.lang3.BooleanUtils;
|
||||||
import org.springframework.dao.DataAccessException;
|
import org.springframework.dao.DataAccessException;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
@ -71,6 +76,10 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService {
|
||||||
@Resource
|
@Resource
|
||||||
private TypeMapper typeMapper;
|
private TypeMapper typeMapper;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private SignProcessMapper signProcessMapper;
|
||||||
|
|
||||||
|
|
||||||
// 引入新购任务阶段常量
|
// 引入新购任务阶段常量
|
||||||
private static final int PURCHASE_TASK_STAGE_MANAGE = 1;
|
private static final int PURCHASE_TASK_STAGE_MANAGE = 1;
|
||||||
private static final int PURCHASE_TASK_STAGE_CHECK = 2;
|
private static final int PURCHASE_TASK_STAGE_CHECK = 2;
|
||||||
|
|
@ -444,6 +453,62 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService {
|
||||||
if (BooleanUtils.isTrue(purchaseVerifyVo.getVerifyPass())) {
|
if (BooleanUtils.isTrue(purchaseVerifyVo.getVerifyPass())) {
|
||||||
// 验收通过处理流程
|
// 验收通过处理流程
|
||||||
for (PurchaseCheckDetails details : purchaseVerifyVo.getPurchaseCheckDetailsList()) {
|
for (PurchaseCheckDetails details : purchaseVerifyVo.getPurchaseCheckDetailsList()) {
|
||||||
|
// 前端选择验收通过操作,进入会签校验流程
|
||||||
|
if (null != details && null != details.getTaskId()) {
|
||||||
|
// 查询已进行会签的org_id集合
|
||||||
|
List<PurchaseSignRecord> 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<SignProcessVo> signProcessVoList = signProcessMapper.getList(new SignProcessVo());
|
||||||
|
if (CollectionUtils.isEmpty(signProcessVoList)) {
|
||||||
|
return AjaxResult.error("会签失败!,未查询到会签配置流程!");
|
||||||
|
} else {
|
||||||
|
// 查询出配置需要会签的org_id集合
|
||||||
|
Set<Long> configSignOrgSet = signProcessVoList.stream().map(SignProcessVo::getOrgId).collect(Collectors.toSet());
|
||||||
|
// 获取已进行会签的org_id集合
|
||||||
|
Set<Long> 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())) {
|
if (MaTypeManageTypeEnum.CODE_DEVICE.getTypeId().equals(details.getManageType())) {
|
||||||
details.setStatus(PurchaseTaskStatusEnum.TO_BIND.getStatus());
|
details.setStatus(PurchaseTaskStatusEnum.TO_BIND.getStatus());
|
||||||
} else if (MaTypeManageTypeEnum.NUMBER_DEVICE.getTypeId().equals(details.getManageType())) {
|
} else if (MaTypeManageTypeEnum.NUMBER_DEVICE.getTypeId().equals(details.getManageType())) {
|
||||||
|
|
@ -504,9 +569,21 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService {
|
||||||
purchaseCheckInfo.setTaskId(taskId);
|
purchaseCheckInfo.setTaskId(taskId);
|
||||||
List<PurchaseCheckDetails> list = purchaseCheckDetailsMapper.selectPurchaseCheckDetailsListFromInfo(purchaseCheckInfo);
|
List<PurchaseCheckDetails> list = purchaseCheckDetailsMapper.selectPurchaseCheckDetailsListFromInfo(purchaseCheckInfo);
|
||||||
if (!CollectionUtils.isEmpty(list)) {
|
if (!CollectionUtils.isEmpty(list)) {
|
||||||
|
List<PurchaseSignRecord> purchaseSignRecordUserSignList = new ArrayList<>();
|
||||||
for (PurchaseCheckDetails purchaseCheckDetails : list) {
|
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查询内层信息
|
// 执行SQL查询内层信息
|
||||||
|
|
|
||||||
|
|
@ -99,4 +99,25 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
where id = #{id} and del_flag = 0
|
where id = #{id} and del_flag = 0
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
|
<select id="getPurchaseSignRecordByTask" resultType="com.bonus.material.purchase.domain.PurchaseSignRecord">
|
||||||
|
select
|
||||||
|
id, task_id as taskId, auditor as userId, org_id as orgId
|
||||||
|
from
|
||||||
|
purchase_audit_record
|
||||||
|
where
|
||||||
|
task_id = #{taskId}
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<insert id="insertPurchaseSignRecord">
|
||||||
|
insert into purchase_audit_record(task_id, auditor, org_id)
|
||||||
|
values(#{taskId}, #{userId}, #{orgId})
|
||||||
|
</insert>
|
||||||
|
|
||||||
|
<select id="getPurchaseSignUrlListByTaskId" resultType="com.bonus.material.purchase.domain.PurchaseSignRecord">
|
||||||
|
SELECT par.id, par.task_id as taskId, par.org_id as orgId, par.auditor as userId,
|
||||||
|
su.sign_url as signUrl,su.sign_type as signType
|
||||||
|
FROM purchase_audit_record par
|
||||||
|
LEFT JOIN sys_user su ON su.user_id = par.auditor
|
||||||
|
WHERE par.task_id = '844'
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
Loading…
Reference in New Issue