This commit is contained in:
hayu 2025-10-15 00:13:52 +08:00
parent ec6f1a5ea4
commit 86f12a5413
5 changed files with 84 additions and 21 deletions

View File

@ -194,4 +194,10 @@ public class PurchaseCheckDetails extends BaseEntity {
@ApiModelProperty(value = "文件实收份数")
private Integer fileReceiveNum;
@ApiModelProperty(value = "签名URL")
private String signUrls;
@ApiModelProperty(value = "签名类型")
private int signTypes;
}

View File

@ -148,6 +148,12 @@ public class PurchaseCheckInfo extends BaseEntity {
@ApiModelProperty(value = "新购任务状态")
private Integer purchaseStatus;
@ApiModelProperty(value = "签名URL")
private String signUrls;
@ApiModelProperty(value = "签名类型")
private int signTypes;
public String getCheckUser() {
return checkUser;
}

View File

@ -62,4 +62,9 @@ public class PurchaseCheckFormVo {
@ApiModelProperty(value = "签名类型 手写0 和 图片上传1")
private String signType;
private String signUrlKg;
@ApiModelProperty(value = "签名类型 手写0 和 图片上传1")
private int signTypeKg;
}

View File

@ -9,6 +9,7 @@ import java.util.function.Function;
import java.util.stream.Collectors;
import com.bonus.common.biz.constant.BmConfigItems;
import com.bonus.common.biz.domain.lease.LeaseOutSign;
import com.bonus.common.biz.enums.MaTypeManageTypeEnum;
import com.bonus.common.biz.enums.PurchaseTaskStageEnum;
import com.bonus.common.biz.enums.PurchaseTaskStatusEnum;
@ -36,6 +37,7 @@ import com.bonus.material.purchase.mapper.PurchaseMacodeInfoMapper;
import com.bonus.material.task.domain.TmTask;
import com.bonus.material.task.mapper.TmTaskMapper;
import com.bonus.system.api.model.LoginUser;
import io.swagger.models.auth.In;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.BooleanUtils;
import org.springframework.dao.DataAccessException;
@ -914,30 +916,71 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService {
if (!CollectionUtils.isEmpty(list)) {
List<PurchaseSignRecord> purchaseSignRecordUserSignList = new ArrayList<>();
HashMap<String, PurchaseSignRecord> purchaseSignRecordMap = new HashMap<>();
for (PurchaseCheckDetails purchaseCheckDetails : list) {
// 查询已签名的记录
if (purchaseSignRecordUserSignList.isEmpty()) {
purchaseSignRecordUserSignList = signProcessMapper.getPurchaseSignUrlListByTaskId(purchaseCheckDetails.getTaskId());
for (PurchaseSignRecord purchaseSignRecord : purchaseSignRecordUserSignList) {
if (StringUtils.isNotBlank(purchaseSignRecord.getSignUrl())) {
if (!purchaseSignRecord.getSignUrl().startsWith("http")) {
purchaseSignRecord.setSignUrl("data:image/png;base64," + purchaseSignRecord.getSignUrl());
}
// for (PurchaseCheckDetails purchaseCheckDetails : list) {
// // 查询已签名的记录
// if (purchaseSignRecordUserSignList.isEmpty()) {
// purchaseSignRecordUserSignList = signProcessMapper.getPurchaseSignUrlListByTaskId(purchaseCheckDetails.getTaskId());
// for (PurchaseSignRecord purchaseSignRecord : purchaseSignRecordUserSignList) {
// if (StringUtils.isNotBlank(purchaseSignRecord.getSignUrl())) {
// if (!purchaseSignRecord.getSignUrl().startsWith("http")) {
// purchaseSignRecord.setSignUrl("data:image/png;base64," + purchaseSignRecord.getSignUrl());
// }
// }
// purchaseSignRecordMap.put(purchaseSignRecord.getSignUrl(), purchaseSignRecord);
// }
// }
// result.setSignUrl(null != purchaseCheckDetails.getSignUrl() ? purchaseCheckDetails.getSignUrl() : "");
// result.setSignType(null != purchaseCheckDetails.getSignType() ? purchaseCheckDetails.getSignType() : "");
// }
// // 分流存入集合,利用Map去重
// purchaseSignRecordMap.forEach((k, v) -> {
// if (null != v.getUserId()) {
// if (v.getOrgId() == 105) {result.getGySignUrl().add(v);}
// if (v.getOrgId() == 103) {result.getScSignUrl().add(v);}
// if (v.getOrgId() == 106 || v.getOrgId() == 334 || v.getOrgId() == 335) {result.getKgSignUrl().add(v);}
// }
// });
// 处理审批签名
// 提取details中的signType和signUrl单独作为一个集合并去重
List<LeaseOutSign> approveSignList = list.stream()
.filter(detail -> detail.getSignUrls() != null)
.map(detail -> new LeaseOutSign(detail.getSignTypes(), detail.getSignUrls()))
.distinct() // 去重操作
.collect(Collectors.toList());
if (!CollectionUtils.isEmpty(approveSignList)) {
for (LeaseOutSign leaseOutSign : approveSignList) {
if (StringUtils.isNotBlank(leaseOutSign.getOutSignUrl())) {
if (!leaseOutSign.getOutSignUrl().startsWith("http")) {
leaseOutSign.setOutSignUrl("data:image/png;base64," + leaseOutSign.getOutSignUrl());
}
purchaseSignRecordMap.put(purchaseSignRecord.getSignUrl(), purchaseSignRecord);
}
}
result.setSignUrl(null != purchaseCheckDetails.getSignUrl() ? purchaseCheckDetails.getSignUrl() : "");
result.setSignType(null != purchaseCheckDetails.getSignType() ? purchaseCheckDetails.getSignType() : "");
}
// 分流存入集合,利用Map去重
purchaseSignRecordMap.forEach((k, v) -> {
if (null != v.getUserId()) {
if (v.getOrgId() == 105) {result.getGySignUrl().add(v);}
if (v.getOrgId() == 103) {result.getScSignUrl().add(v);}
if (v.getOrgId() == 106 || v.getOrgId() == 334 || v.getOrgId() == 335) {result.getKgSignUrl().add(v);}
if (approveSignList != null && !approveSignList.isEmpty()) {
result.setSignUrl(approveSignList.get(0).getOutSignUrl());
result.setSignType(approveSignList.get(0).getOutSignType() + "");
}
});
}
List<LeaseOutSign> approveSignList2 = list.stream()
.filter(detail -> detail.getSignUrl() != null)
.map(detail -> new LeaseOutSign(Integer.parseInt(detail.getSignType()), detail.getSignUrl()))
.distinct() // 去重操作
.collect(Collectors.toList());
if (!CollectionUtils.isEmpty(approveSignList2)) {
for (LeaseOutSign leaseOutSign : approveSignList2) {
if (StringUtils.isNotBlank(leaseOutSign.getOutSignUrl())) {
if (!leaseOutSign.getOutSignUrl().startsWith("http")) {
leaseOutSign.setOutSignUrl("data:image/png;base64," + leaseOutSign.getOutSignUrl());
}
}
}
if (approveSignList2 != null && !approveSignList2.isEmpty()) {
result.setSignUrlKg(approveSignList2.get(0).getOutSignUrl());
result.setSignTypeKg(approveSignList2.get(0).getOutSignType());
}
}
}
// 执行SQL查询内层信息
List<PurchaseCheckDetails> purchaseCheckDetails = purchaseCheckDetailsMapper.selectPurchaseCheckDetailsListByTaskId(taskId, null, SecurityUtils.getLoginUser().getUserid());

View File

@ -51,13 +51,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
pcd.supplier_id, pcd.status, pcd.create_by, pcd.production_time, pcd.create_time, pcd.update_by, pcd.update_time,
pcd.remark, pcd.check_url_name, pcd.check_url, pcd.input_num, pcd.input_status, pcd.input_time, pcd.file_name,
pcd.file_url, pcd.company_id, pcd.fix_code, mt.type_name, mt.unit_name, mt.unit_value,mtp.type_name as ma_type_name,mtp2.type_name as ma_type_model, mt.manage_type as manage_type,
pcd.warn_documents as warnDocuments, pcd.reason as reason, mt.rent_price as rentPrice, su.sign_url as signUrl, su.sign_type as signType,msi.supplier as supplier_name
pcd.warn_documents as warnDocuments, pcd.reason as reason, mt.rent_price as rentPrice, su.sign_url as signUrl, su.sign_type as signType,msi.supplier as supplier_name,
su2.sign_url as signUrls,
su2.sign_type as signTypes
from purchase_check_details pcd
left join ma_supplier_info msi on msi.supplier_id = pcd.supplier_id
left join ma_type mt on pcd.type_id = mt.type_id
left join ma_type mtp on mt.parent_id = mtp.type_id
left join ma_type mtp2 on mtp.parent_id = mtp2.type_id
left join sys_user su on pcd.check_user = su.user_id
left join sys_user su2 on su2.user_id = mtp2.keep_user_id
</sql>
<select id="selectPurchaseCheckDetailsList" parameterType="com.bonus.material.purchase.domain.PurchaseCheckDetails" resultMap="PurchaseCheckDetailsResult">