新购优化

This commit is contained in:
mashuai 2025-08-19 17:42:18 +08:00
parent 51ec281b35
commit 61aeb35cdb
8 changed files with 446 additions and 7 deletions

View File

@ -1,10 +1,8 @@
package com.bonus.material.common.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.nacos.common.utils.StringUtils;
import com.bonus.common.biz.config.DateTimeHelper;
import com.bonus.common.biz.domain.*;
import com.bonus.common.core.exception.ServiceException;
import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.common.security.utils.SecurityUtils;
import com.bonus.material.back.domain.BackApplyInfo;

View File

@ -7,7 +7,6 @@ import com.bonus.common.log.enums.OperaType;
import com.bonus.material.common.annotation.PreventRepeatSubmit;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
@ -53,7 +52,7 @@ public class SupplierInfoController extends BaseController {
* 查询物资厂家--下拉框--不分页
*/
@ApiOperation(value = "查询物资厂家下拉框--不分页")
@RequiresPermissions("ma:info:list")
//@RequiresPermissions("ma:info:list")
@GetMapping("/select")
public TableDataInfo select(SupplierInfo supplierInfo) {
List<SupplierInfo> list = supplierInfoService.selectSupplierInfoList(supplierInfo);

View File

@ -1,14 +1,18 @@
package com.bonus.material.purchase.controller;
import cn.hutool.core.convert.Convert;
import com.bonus.common.biz.config.ListPagingUtil;
import com.bonus.common.core.utils.ServletUtils;
import com.bonus.common.core.utils.poi.ExcelUtil;
import com.bonus.common.core.web.controller.BaseController;
import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.common.core.web.page.TableDataInfo;
import com.bonus.common.log.annotation.SysLog;
import com.bonus.common.log.enums.OperaType;
import com.bonus.material.common.annotation.PreventRepeatSubmit;
import com.bonus.common.security.annotation.RequiresPermissions;
import com.bonus.common.biz.domain.purchase.PurchaseDto;
import com.bonus.material.purchase.domain.PurchaseCheckInfo;
import com.bonus.material.purchase.domain.dto.PurchaseQueryDto;
import com.bonus.material.purchase.service.IPurchaseBindService;
import com.bonus.material.purchase.domain.vo.PurchaseVo;
import io.swagger.annotations.Api;
@ -20,6 +24,9 @@ import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.NotNull;
import java.util.List;
import static com.bonus.common.core.web.page.TableSupport.PAGE_NUM;
import static com.bonus.common.core.web.page.TableSupport.PAGE_SIZE;
/**
* 新购验收绑定接口
* @Author ma_sh
@ -33,6 +40,31 @@ public class PurchaseBindController extends BaseController {
@Resource
private IPurchaseBindService purchaseBindService;
/**
* 查询新购验收绑定任务列表
* @param purchaseQueryDto
* @return
*/
@ApiOperation("查询新购验收绑定任务列表")
@GetMapping("/list")
public AjaxResult list(PurchaseQueryDto purchaseQueryDto) {
final List<PurchaseCheckInfo> list = purchaseBindService.selectPurchaseCheckInfoList(purchaseQueryDto);
final Integer pageIndex = Convert.toInt(ServletUtils.getParameter(PAGE_NUM), 1);
final Integer pageSize = Convert.toInt(ServletUtils.getParameter(PAGE_SIZE), 10);
return AjaxResult.success(ListPagingUtil.paging(pageIndex, pageSize, list));
}
/**
* 获取新购验收任务详细信息
* @param purchaseQueryDto
* @return
*/
@ApiOperation("获取新购验收任务详细信息")
@GetMapping(value = "/getInfo")
public AjaxResult getInfo(@NotNull(message = "请求对象不能为空") PurchaseQueryDto purchaseQueryDto) {
return success(purchaseBindService.getSelectPurchaseCheckInfoById(purchaseQueryDto));
}
/**
* 绑定
* @param dto

View File

@ -129,4 +129,19 @@ public interface PurchaseCheckDetailsMapper {
* @return
*/
int deleteDetails(Long[] ids);
/**
* 批量查询多个任务的验收任务详细列表
* @param taskIds
* @param userId
* @return
*/
List<PurchaseCheckDetails> selectBindList(@Param("taskIds") List<Long> taskIds, @Param("userId") Long userId);
/**
* 根据任务id查询新购验收任务详细列表--Join查询
* @param purchaseQueryDto
* @return
*/
List<PurchaseCheckDetails> selectPurchaseCheckDetailsListById(PurchaseQueryDto purchaseQueryDto);
}

View File

@ -2,6 +2,9 @@ package com.bonus.material.purchase.service;
import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.common.biz.domain.purchase.PurchaseDto;
import com.bonus.material.purchase.domain.PurchaseCheckInfo;
import com.bonus.material.purchase.domain.dto.PurchaseCheckDto;
import com.bonus.material.purchase.domain.dto.PurchaseQueryDto;
import com.bonus.material.purchase.domain.vo.PurchaseVo;
import javax.servlet.http.HttpServletResponse;
@ -60,4 +63,18 @@ public interface IPurchaseBindService {
AjaxResult inventoryBind(PurchaseVo dto);
AjaxResult getInventoryInfo(PurchaseDto dto);
/**
* 查询新购验收绑定任务列表
* @param purchaseQueryDto
* @return
*/
List<PurchaseCheckInfo> selectPurchaseCheckInfoList(PurchaseQueryDto purchaseQueryDto);
/**
* 获取新购验收任务详细信息
* @param purchaseQueryDto
* @return
*/
PurchaseCheckDto getSelectPurchaseCheckInfoById(PurchaseQueryDto purchaseQueryDto);
}

View File

@ -3,26 +3,36 @@ package com.bonus.material.purchase.service.impl;
import com.bonus.common.biz.config.BackstageApplication;
import com.bonus.common.biz.config.DateTimeHelper;
import com.bonus.common.biz.config.QrCodeUtils;
import com.bonus.common.biz.constant.MaterialConstants;
import com.bonus.common.biz.constant.BmConfigItems;
import com.bonus.common.biz.domain.BmFileInfo;
import com.bonus.common.biz.enums.HttpCodeEnum;
import com.bonus.common.biz.enums.MaTypeManageTypeEnum;
import com.bonus.common.biz.enums.PurchaseTaskStageEnum;
import com.bonus.common.biz.enums.PurchaseTaskStatusEnum;
import com.bonus.common.core.exception.ServiceException;
import com.bonus.common.core.utils.DateUtils;
import com.bonus.common.core.utils.StringUtils;
import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.common.security.utils.SecurityUtils;
import com.bonus.material.basic.mapper.BmFileInfoMapper;
import com.bonus.material.basic.service.IBmConfigService;
import com.bonus.material.codeCollection.domain.WsMaInfo;
import com.bonus.material.codeCollection.mapper.WsMaInfoMapper;
import com.bonus.material.purchase.config.RemoteConfig;
import com.bonus.common.biz.domain.purchase.PurchaseDto;
import com.bonus.material.purchase.domain.PurchaseCheckDetails;
import com.bonus.material.purchase.domain.PurchaseCheckInfo;
import com.bonus.material.purchase.domain.dto.PurchaseCheckDto;
import com.bonus.material.purchase.domain.dto.PurchaseQueryDto;
import com.bonus.material.purchase.mapper.PurchaseBindMapper;
import com.bonus.material.purchase.mapper.PurchaseCheckDetailsMapper;
import com.bonus.material.purchase.mapper.PurchaseCheckInfoMapper;
import com.bonus.material.purchase.mapper.PurchaseStorageMapper;
import com.bonus.material.purchase.service.IPurchaseBindService;
import com.bonus.material.purchase.domain.vo.PurchaseVo;
import com.bonus.material.task.domain.TmTask;
import com.bonus.material.task.mapper.TmTaskMapper;
import com.bonus.system.api.model.LoginUser;
import com.google.zxing.WriterException;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
@ -32,7 +42,10 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
@ -56,9 +69,27 @@ public class PurchaseBindServiceImpl implements IPurchaseBindService {
@Resource
private PurchaseCheckDetailsMapper purchaseCheckDetailsMapper;
@Resource
private PurchaseCheckInfoMapper purchaseCheckInfoMapper;
@Resource
private WsMaInfoMapper mapper;
@Resource
private TmTaskMapper tmTaskMapper;
@Resource
private IBmConfigService bmConfigService;
@Resource
private BmFileInfoMapper bmFileInfoMapper;
// 引入新购任务阶段常量
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_BIND = 3;
private static final int PURCHASE_TASK_STAGE_STORE = 4;
/**
* 查询所有绑定信息
@ -558,4 +589,314 @@ public class PurchaseBindServiceImpl implements IPurchaseBindService {
}
return AjaxResult.success(vo);
}
/**
* 查询新购验收绑定任务列表
* @param purchaseQueryDto
* @return
*/
@Override
public List<PurchaseCheckInfo> selectPurchaseCheckInfoList(PurchaseQueryDto purchaseQueryDto) {
log.info("=== MaterialLeaseInfoServiceImpl.selectPurchaseCheckInfoList开始执行purchaseQueryDto: {}", purchaseQueryDto);
final List<PurchaseCheckInfo> purchaseCheckInfos = purchaseCheckInfoMapper.selectPurchaseCheckInfoJoinList(purchaseQueryDto);
if (org.springframework.util.CollectionUtils.isEmpty(purchaseCheckInfos)) {
return Collections.emptyList();
}
// 检查 SecurityUtils.getLoginUser() 是否为 null
LoginUser loginUser = SecurityUtils.getLoginUser();
if (loginUser == null) {
log.error("当前用户未登录或登录信息丢失无法获取用户ID");
return Collections.emptyList();
}
final Long loginUserId = loginUser.getUserid();
if (Objects.isNull(loginUserId) || Objects.isNull(purchaseQueryDto.getTaskStage())) {
return Collections.emptyList();
}
// 提取所有任务ID用于批量查询
List<Long> taskIds = purchaseCheckInfos.stream()
.map(PurchaseCheckInfo::getTaskId)
.collect(Collectors.toList());
// 批量查询所有任务的明细信息
List<PurchaseCheckDetails> allDetails = purchaseCheckDetailsMapper.selectBindList(taskIds, loginUserId);
Map<Long, List<PurchaseCheckDetails>> detailsMap = allDetails.stream()
.filter(detail -> detail.getTaskId() != null)
.collect(Collectors.groupingBy(PurchaseCheckDetails::getTaskId));
// 批量查询任务状态信息
List<TmTask> tmTasks = tmTaskMapper.selectTmTaskByTaskIdsBatch(taskIds);
Map<Long, TmTask> taskMap = tmTasks.stream()
.filter(task -> task.getTaskId() != null)
.collect(Collectors.toMap(TmTask::getTaskId, Function.identity()));
// 批量查询物资类型名称
final boolean isAllowPartTransfer = bmConfigService.isBmConfigEnabledWithDefaultFalse(BmConfigItems.BOOLEAN_ALLOW_PURCHASE_PART_TRANSFER);
List<PurchaseCheckInfo> maTypeNames;
if (isAllowPartTransfer) {
maTypeNames = purchaseCheckDetailsMapper.selectMaTypeNameByTaskIdsBatch(taskIds, purchaseQueryDto.getStatusList());
} else {
maTypeNames = purchaseCheckDetailsMapper.selectMaTypeNameByTaskIdsBatch(taskIds, Collections.emptyList());
}
Map<Long, String> maTypeNameMap = maTypeNames.stream()
.filter(info -> info.getTaskId() != null)
.collect(Collectors.toMap(PurchaseCheckInfo::getTaskId,
info -> info.getPurchaseMaTypeName() != null ? info.getPurchaseMaTypeName() : ""));
List<PurchaseCheckInfo> purchaseCheckInfoResult = new ArrayList<>();
for (final PurchaseCheckInfo purchaseInfo : purchaseCheckInfos) {
Long taskId = purchaseInfo.getTaskId();
// 获取采购物资明细
List<PurchaseCheckDetails> purchaseCheckDetails = detailsMap.getOrDefault(taskId, Collections.emptyList());
if (org.springframework.util.CollectionUtils.isEmpty(purchaseCheckDetails)) {
continue;
}
// 过滤掉数量管理并且是待绑定状态或者驳回后待绑定状态的物资
purchaseCheckDetails = purchaseCheckDetails.stream().filter(o ->
!(MaTypeManageTypeEnum.NUMBER_DEVICE.getTypeId().equals(o.getManageType()) &&
(o.getStatus().equals(PurchaseTaskStatusEnum.TO_BIND.getStatus()) ||
o.getStatus().equals(PurchaseTaskStatusEnum.TO_BIND_AFTER_REJECT.getStatus())))).collect(Collectors.toList());
if (isAllowPartTransfer) {
// 根据任务阶段过滤
switch (purchaseQueryDto.getTaskStage()) {
case PURCHASE_TASK_STAGE_MANAGE:
// 新购管理阶段展示全部任务不进行过滤
break;
case PURCHASE_TASK_STAGE_CHECK:
purchaseCheckDetails = purchaseCheckDetails.stream().filter(o ->
!PurchaseTaskStatusEnum.TO_NOTICE.getStatus().equals(o.getStatus()) &&
!PurchaseTaskStatusEnum.TO_CHECK_AFTER_REJECT.getStatus().equals(o.getStatus())).collect(Collectors.toList());
break;
case PURCHASE_TASK_STAGE_BIND:
purchaseCheckDetails = purchaseCheckDetails.stream().filter(o ->
!PurchaseTaskStatusEnum.TO_NOTICE.getStatus().equals(o.getStatus()) &&
!PurchaseTaskStatusEnum.TO_CHECK_AFTER_REJECT.getStatus().equals(o.getStatus()) &&
!PurchaseTaskStatusEnum.TO_CHECK.getStatus().equals(o.getStatus()) &&
!PurchaseTaskStatusEnum.TO_BIND_AFTER_REJECT.getStatus().equals(o.getStatus())
).collect(Collectors.toList());
break;
case PURCHASE_TASK_STAGE_STORE:
purchaseCheckDetails = purchaseCheckDetails.stream().filter(o ->
PurchaseTaskStatusEnum.IN_STORE.getStatus().equals(o.getStatus()) ||
PurchaseTaskStatusEnum.TO_STORE.getStatus().equals(o.getStatus()) ||
PurchaseTaskStatusEnum.TASK_FINISHED.getStatus().equals(o.getStatus()) ||
(PurchaseTaskStatusEnum.TO_BIND.getStatus().equals(o.getStatus()) && null != o.getBindNum() && 0 < o.getBindNum().compareTo(BigDecimal.ZERO)) ||
(PurchaseTaskStatusEnum.TO_STORE_AFTER_REJECT.getStatus().equals(o.getStatus()) && null != o.getBindNum() && 0 < o.getBindNum().compareTo(BigDecimal.ZERO))
).collect(Collectors.toList());
break;
default:
System.err.println("未知的新购任务阶段:" + purchaseQueryDto.getTaskStage());
return Collections.emptyList();
}
}
// 设置物资类型名称
purchaseInfo.setPurchaseMaTypeName(maTypeNameMap.get(taskId));
if (!org.springframework.util.CollectionUtils.isEmpty(purchaseCheckDetails)) {
// 计算数量和金额
BigDecimal purchaseMaTotalNumber = BigDecimal.ZERO;
BigDecimal checkMaTotalNumber = BigDecimal.ZERO;
BigDecimal bindMaTotalNumber = BigDecimal.ZERO;
BigDecimal inputMaTotalNumber = BigDecimal.ZERO;
BigDecimal purchaseMaTotalPrice = BigDecimal.ZERO;
BigDecimal purchaseTaxPriceTotal = BigDecimal.ZERO;
boolean isIncludeStage = false;
for (final PurchaseCheckDetails detail : purchaseCheckDetails) {
if (null == detail.getPurchaseNum() || null == detail.getPurchasePrice()) {
continue;
}
if (0 > detail.getPurchaseNum().compareTo(BigDecimal.ZERO) || 0 > detail.getPurchasePrice().compareTo(BigDecimal.ZERO)) {
throw new IllegalArgumentException("采购数量和价格必须为非负数");
}
if (!isIncludeStage) {
isIncludeStage = PurchaseTaskStatusEnum.isStatusOfStage(detail.getStatus(), PurchaseTaskStageEnum.getByCode(purchaseQueryDto.getTaskStage()), detail.getManageType());
}
purchaseMaTotalNumber = purchaseMaTotalNumber.add(Optional.of(detail.getPurchaseNum()).orElse(BigDecimal.ZERO));
checkMaTotalNumber = checkMaTotalNumber.add(Optional.ofNullable(detail.getCheckNum()).orElse(BigDecimal.ZERO));
bindMaTotalNumber = bindMaTotalNumber.add(Optional.ofNullable(detail.getBindNum()).orElse(BigDecimal.ZERO));
inputMaTotalNumber = inputMaTotalNumber.add(Optional.ofNullable(detail.getInputNum()).orElse(BigDecimal.ZERO));
purchaseMaTotalPrice = purchaseMaTotalPrice.add(detail.getPurchaseNum().multiply(detail.getPurchasePrice()).setScale(10, RoundingMode.HALF_DOWN));
purchaseTaxPriceTotal = purchaseTaxPriceTotal.add(detail.getPurchaseNum().multiply(detail.getPurchaseTaxPrice()).setScale(10, RoundingMode.HALF_DOWN));
}
purchaseInfo.setPurchaseMaNumber(purchaseMaTotalNumber);
purchaseInfo.setPurchasePrice(purchaseMaTotalPrice);
purchaseInfo.setPurchaseTaxPrice(purchaseTaxPriceTotal);
purchaseInfo.setBindMaNumber(bindMaTotalNumber);
purchaseInfo.setCheckMaNumber(checkMaTotalNumber);
purchaseInfo.setInputMaNumber(inputMaTotalNumber);
purchaseInfo.setWaitInputNumber(purchaseMaTotalNumber.subtract(inputMaTotalNumber));
// 设置任务状态
final TmTask tmTask = taskMap.get(taskId);
purchaseInfo.setTaskStatusName(isIncludeStage ? "未完成" : "已完成");
if (null != purchaseQueryDto.getIsFinish()) {
if (1 == purchaseQueryDto.getIsFinish()) {
if (isIncludeStage) {continue;}
} else {
if (!isIncludeStage) {continue;}
}
}
// 设置采购状态
List<Integer> statusList = purchaseCheckDetails.stream()
.map(PurchaseCheckDetails::getStatus)
.collect(Collectors.toList());
if (!CollectionUtils.isEmpty(statusList)) {
if (statusList.contains(PurchaseTaskStatusEnum.TO_BIND.getStatus()) ||
statusList.contains(PurchaseTaskStatusEnum.TO_STORE.getStatus()) ||
statusList.contains(PurchaseTaskStatusEnum.TO_BIND_AFTER_REJECT.getStatus()) ||
statusList.contains(PurchaseTaskStatusEnum.TO_STORE_AFTER_REJECT.getStatus())) {
purchaseInfo.setPurchaseStatus(PurchaseTaskStatusEnum.TO_BIND.getStatus());
} else if (statusList.contains(PurchaseTaskStatusEnum.IN_STORE.getStatus()) ||
statusList.contains(PurchaseTaskStatusEnum.TASK_IN_PROGRESS.getStatus()) ||
statusList.contains(PurchaseTaskStatusEnum.TASK_FINISHED.getStatus())) {
purchaseInfo.setPurchaseStatus(PurchaseTaskStatusEnum.IN_STORE.getStatus());
} else {
purchaseInfo.setPurchaseStatus(0);
}
}
if (tmTask != null) {
purchaseInfo.setTaskStatus(tmTask.getTaskStatus());
}
// 检查是否应该加入结果列表
if (isAllowPartTransfer) {
purchaseCheckInfoResult.add(purchaseInfo);
} else {
final OptionalInt minStatus = purchaseCheckDetails.stream().mapToInt(PurchaseCheckDetails::getStatus).min();
if (minStatus.isPresent() && purchaseQueryDto.getStatusList().contains(minStatus.getAsInt())) {
purchaseCheckInfoResult.add(purchaseInfo);
}
}
}
}
if (!CollectionUtils.isEmpty(purchaseCheckInfoResult)) {
// 关键字过滤
String keyWord = purchaseQueryDto.getKeyWord();
if (!StringUtils.isBlank(keyWord)) {
purchaseCheckInfoResult = purchaseCheckInfoResult.stream()
.filter(item -> containsKeyword(item, keyWord))
.collect(Collectors.toList());
}
}
return purchaseCheckInfoResult;
}
/**
* 获取新购验收任务详细信息
* @param purchaseQueryDto
* @return
*/
@Override
public PurchaseCheckDto getSelectPurchaseCheckInfoById(PurchaseQueryDto purchaseQueryDto) {
purchaseQueryDto.setUserId(SecurityUtils.getLoginUser().getUserid());
PurchaseCheckDto purchaseCheckDtoResult = new PurchaseCheckDto();
PurchaseCheckInfo purchaseCheckInfo = purchaseCheckInfoMapper.selectPurchaseCheckInfoById(purchaseQueryDto.getId());
if (null != purchaseCheckInfo) {
purchaseCheckDtoResult.setPurchaseCheckInfo(purchaseCheckInfo);
List<PurchaseCheckDetails> purchaseCheckDetailsList = purchaseCheckDetailsMapper.selectPurchaseCheckDetailsListById(purchaseQueryDto);
if (null != purchaseQueryDto.getTaskStage()) {
// 根据阶段来过滤详情数据
switch (purchaseQueryDto.getTaskStage()) {
case PURCHASE_TASK_STAGE_MANAGE:
// 新购管理阶段展示全部任务不进行过滤
break;
case PURCHASE_TASK_STAGE_CHECK:
purchaseCheckDetailsList = purchaseCheckDetailsList.stream().filter(o -> !PurchaseTaskStatusEnum.TO_NOTICE.getStatus().equals(o.getStatus())).collect(Collectors.toList());
break;
case PURCHASE_TASK_STAGE_BIND:
purchaseCheckDetailsList = purchaseCheckDetailsList.stream().filter(o ->
!PurchaseTaskStatusEnum.TO_NOTICE.getStatus().equals(o.getStatus()) && !PurchaseTaskStatusEnum.TO_CHECK_AFTER_REJECT.getStatus().equals(o.getStatus()) &&
!PurchaseTaskStatusEnum.TO_CHECK.getStatus().equals(o.getStatus()) && !PurchaseTaskStatusEnum.TO_BIND_AFTER_REJECT.getStatus().equals(o.getStatus())
).collect(Collectors.toList());
break;
case PURCHASE_TASK_STAGE_STORE:
purchaseCheckDetailsList = purchaseCheckDetailsList.stream().filter(o ->
PurchaseTaskStatusEnum.IN_STORE.getStatus().equals(o.getStatus()) ||
PurchaseTaskStatusEnum.TO_STORE.getStatus().equals(o.getStatus()) ||
PurchaseTaskStatusEnum.TASK_FINISHED.getStatus().equals(o.getStatus()) ||
(PurchaseTaskStatusEnum.TO_BIND.getStatus().equals(o.getStatus()) && null != o.getBindNum() && 0 < o.getBindNum().compareTo(BigDecimal.ZERO)) ||
(PurchaseTaskStatusEnum.TO_STORE_AFTER_REJECT.getStatus().equals(o.getStatus()) && null != o.getBindNum() && 0 < o.getBindNum().compareTo(BigDecimal.ZERO))
).collect(Collectors.toList());
break;
default:
System.err.println("未知的新购任务阶段:" + purchaseQueryDto.getTaskStage());
}
}
//查询是否存在附件给前端用于文件颜色判断
extractedExitFile(purchaseCheckDetailsList);
//针对于app查询可能存在的验收图片
extractedFile(purchaseCheckDetailsList);
purchaseCheckDtoResult.setPurchaseCheckDetailsList(purchaseCheckDetailsList);
}
return purchaseCheckDtoResult;
}
/**
* 提取app新购验收文件信息
* @param purchaseCheckDetailsList 新购验收明细列表
*/
private void extractedFile(List<PurchaseCheckDetails> purchaseCheckDetailsList) {
if (!org.springframework.util.CollectionUtils.isEmpty(purchaseCheckDetailsList)) {
for (PurchaseCheckDetails purchaseCheckDetails : purchaseCheckDetailsList) {
final BmFileInfo fileInfo = new BmFileInfo();
fileInfo.setTaskType(10);
fileInfo.setModelId(purchaseCheckDetails.getId());
fileInfo.setTaskId(purchaseCheckDetails.getTaskId());
final List<BmFileInfo> bmFileInfoList = bmFileInfoMapper.selectBmFileInfoList(fileInfo);
if (!org.springframework.util.CollectionUtils.isEmpty(bmFileInfoList)) {
purchaseCheckDetails.setBmFileInfos(bmFileInfoList);
}
}
}
}
/**
* 查询是否存在附件给前端用于文件颜色判断
* @param purchaseCheckDetailsList 新购验收明细列表
*/
private void extractedExitFile(List<PurchaseCheckDetails> purchaseCheckDetailsList) {
if (!org.springframework.util.CollectionUtils.isEmpty(purchaseCheckDetailsList)) {
for (PurchaseCheckDetails purchaseCheckDetails : purchaseCheckDetailsList) {
final BmFileInfo fileInfo = new BmFileInfo();
fileInfo.setTaskType(0);
fileInfo.setModelId(purchaseCheckDetails.getTypeId());
fileInfo.setTaskId(purchaseCheckDetails.getTaskId());
final List<BmFileInfo> bmFileInfoList = bmFileInfoMapper.selectBmFileInfoList(fileInfo);
if (!org.springframework.util.CollectionUtils.isEmpty(bmFileInfoList)) {
purchaseCheckDetails.setIsExitFile(0);
purchaseCheckDetails.setBmFileInfos(bmFileInfoList);
}else {
purchaseCheckDetails.setIsExitFile(1);
}
}
}
}
/**
* 关键字搜索
* @param item
* @param keyWord
* @return
*/
private boolean containsKeyword(PurchaseCheckInfo item, String keyWord) {
return (item.getPurchaseMaTypeName() != null && item.getPurchaseMaTypeName().contains(keyWord)) ||
(item.getCode() != null && item.getCode().contains(keyWord)) ||
(item.getSupplier() != null && item.getSupplier().contains(keyWord)) ||
(item.getCreateBy() != null && item.getCreateBy().contains(keyWord));
}
}

View File

@ -8,7 +8,6 @@ import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Function;
import java.util.stream.Collectors;
import com.bonus.common.biz.config.DateTimeHelper;
import com.bonus.common.biz.constant.BmConfigItems;
import com.bonus.common.biz.enums.MaTypeManageTypeEnum;
import com.bonus.common.biz.enums.PurchaseTaskStageEnum;
@ -652,6 +651,7 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService {
@Transactional(rollbackFor = Exception.class)
public AjaxResult insertPurchaseCheckInfo(PurchaseCheckDto purchaseCheckInfo) {
purchaseCheckInfo.getPurchaseCheckInfo().setCreateTime(DateUtils.getNowDate());
purchaseCheckInfo.getPurchaseCheckInfo().setPurchaseTime(DateUtils.getNowDate());
purchaseCheckInfo.getPurchaseCheckInfo().setCreateBy(SecurityUtils.getLoginUser().getSysUser().getNickName());
try {
final int thisMonthMaxOrder = tmTaskMapper.getMonthMaxOrderByDate(DateUtils.getCurrentYear(), DateUtils.getCurrentMonth(), TmTaskTypeEnum.TM_TASK_PURCHASE.getTaskTypeId());

View File

@ -432,4 +432,41 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
and (del_flag = '0' or del_flag is null)
and task_id = #{taskId}
</select>
<select id="selectBindList" resultMap="PurchaseCheckDetailsResult">
<include refid="selectPurchaseCheckDetailsJoinVo"/>
<if test="userId != null">
right join ma_type_repair mtr ON mtr.type_id = mt.type_id AND mtr.user_id = #{userId}
</if>
where 1=1
<if test="taskIds != null and taskIds.size() > 0">
and pcd.task_id in
<foreach item="taskId" collection="taskIds" open="(" separator="," close=")">
#{taskId}
</foreach>
</if>
order by pcd.task_id, pcd.id
</select>
<select id="selectPurchaseCheckDetailsListById" resultType="com.bonus.material.purchase.domain.PurchaseCheckDetails" resultMap="PurchaseCheckDetailsResult">
<include refid="selectPurchaseCheckDetailsJoinVo"/>
<if test="userId != null">
right join ma_type_repair mtr ON mtr.type_id = mt.type_id AND mtr.user_id = #{userId}
</if>
where pcd.task_id = #{taskId}
<if test="typeId != null">
and pcd.type_id = #{typeId}
</if>
<if test="supplierId != null">
and pcd.supplier_id = #{supplierId}
</if>
<if test="productionTime != null">
and pcd.production_time = #{productionTime}
</if>
<if test="keyWord != null and keyWord != ''">
and (mt.type_name like concat('%', #{keyWord}, '%')
or mt.unit_name like concat('%', #{keyWord}, '%')
or mtp.type_name like concat('%', #{keyWord}, '%'))
</if>
</select>
</mapper>