新购优化
This commit is contained in:
parent
51ec281b35
commit
61aeb35cdb
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
Loading…
Reference in New Issue