From 85887779fd27b2789b7f2a88160c152df0ed17a1 Mon Sep 17 00:00:00 2001 From: hayu <1604366271@qq.com> Date: Fri, 26 Sep 2025 18:01:23 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9D=90=E6=96=99=E7=AB=99=E9=A2=86=E6=96=99?= =?UTF-8?q?=E5=8D=95=E5=8F=B7=E4=B8=80=E9=94=AE=E5=87=BA=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MaterialLeaseInfoController.java | 11 +++ .../lease/MaterialLeaseApplyDetails.java | 3 + .../clz/mapper/MaterialLeaseInfoMapper.java | 14 ++++ .../clz/service/MaterialLeaseInfoService.java | 7 ++ .../impl/MaterialLeaseInfoServiceImpl.java | 82 +++++++++++++++++++ .../material/clz/MaterialLeaseInfoMapper.xml | 35 ++++++++ 6 files changed, 152 insertions(+) diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/clz/controller/MaterialLeaseInfoController.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/clz/controller/MaterialLeaseInfoController.java index 9caf8837..cfa42f3c 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/clz/controller/MaterialLeaseInfoController.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/clz/controller/MaterialLeaseInfoController.java @@ -401,4 +401,15 @@ public class MaterialLeaseInfoController extends BaseController { return error("系统错误,请联系管理员"); } } + + /** + * 领料单号查询领料信息 + * @param info + * @return + */ + @ApiOperation(value = "领料单号查询领料信息") + @GetMapping("/getLeaseDataByCode") + public AjaxResult getLeaseDataByCode(LeaseTotalInfo info) { + return materialLeaseInfoService.getLeaseDataByCode(info); + } } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/clz/domain/lease/MaterialLeaseApplyDetails.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/clz/domain/lease/MaterialLeaseApplyDetails.java index 54dc31a6..cced6f17 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/clz/domain/lease/MaterialLeaseApplyDetails.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/clz/domain/lease/MaterialLeaseApplyDetails.java @@ -174,6 +174,9 @@ public class MaterialLeaseApplyDetails extends BaseEntity { */ private List maCodeList; + private String maIds; + private String maCodes; + public MaterialLeaseApplyDetails(Long id, Long parentId, Long typeId, BigDecimal preNum, BigDecimal auditNum, BigDecimal alNum, String status, Long companyId) { this.id = id; this.parentId = parentId; diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/clz/mapper/MaterialLeaseInfoMapper.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/clz/mapper/MaterialLeaseInfoMapper.java index f48d0d3c..15548428 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/clz/mapper/MaterialLeaseInfoMapper.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/clz/mapper/MaterialLeaseInfoMapper.java @@ -403,4 +403,18 @@ public interface MaterialLeaseInfoMapper { * @return */ MaterialLeaseApplyDetails getOutDetail(MaterialLeaseApplyDetails detail); + + /** + * 根据任务单号,查询领料工程等信息 + * @param info + * @return + */ + MaterialLeaseApplyInfo getProIdByCode(LeaseTotalInfo info); + + /** + * 根据任务单号,查询领料工器具等信息 + * @param info + * @return + */ + List getLeaseDataByCode(LeaseTotalInfo info); } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/clz/service/MaterialLeaseInfoService.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/clz/service/MaterialLeaseInfoService.java index 81e2fbbb..364071cf 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/clz/service/MaterialLeaseInfoService.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/clz/service/MaterialLeaseInfoService.java @@ -160,4 +160,11 @@ public interface MaterialLeaseInfoService { AjaxResult getInfoByCode(BmQrcodeInfo bmQrcodeInfo); AjaxResult updateLeaseRemark(MaterialLeaseApplyInfo leaseApplyInfo); + + /** + * 领料单号查询领料信息 + * @param info + * @return + */ + AjaxResult getLeaseDataByCode(LeaseTotalInfo info); } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/clz/service/impl/MaterialLeaseInfoServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/clz/service/impl/MaterialLeaseInfoServiceImpl.java index dd2a6713..479dd30b 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/clz/service/impl/MaterialLeaseInfoServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/clz/service/impl/MaterialLeaseInfoServiceImpl.java @@ -6,6 +6,7 @@ import com.bonus.common.biz.constant.MaterialConstants; import com.bonus.common.biz.domain.BmFileInfo; import com.bonus.common.biz.domain.TypeTreeBuild; import com.bonus.common.biz.domain.TypeTreeNode; +import com.bonus.common.biz.domain.lease.LeaseApplyInfo; import com.bonus.common.biz.domain.lease.LeaseOutDetails; import com.bonus.common.biz.domain.lease.LeaseOutSign; import com.bonus.common.biz.domain.lease.MaterialLeaseMaCodeDto; @@ -48,6 +49,7 @@ import com.bonus.material.task.domain.TmTaskAgreement; import com.bonus.material.task.mapper.TmTaskAgreementMapper; import com.bonus.material.task.mapper.TmTaskMapper; import lombok.extern.slf4j.Slf4j; +import org.hibernate.validator.internal.util.StringHelper; import org.springframework.dao.DataAccessException; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -348,6 +350,86 @@ public class MaterialLeaseInfoServiceImpl implements MaterialLeaseInfoService { } + @Override + public AjaxResult getLeaseDataByCode(LeaseTotalInfo info) { + try { + //查询该单号是否存在,及工程信息 + MaterialLeaseApplyInfo leaseApplyInfo = materialLeaseInfoMapper.getProIdByCode(info); + if (leaseApplyInfo == null) { + return AjaxResult.error("未查询到该单号信息"); + } + MaterialLeaseApplyRequestVo leaseApplyRequestVo = new MaterialLeaseApplyRequestVo(); + leaseApplyRequestVo.setLeaseApplyInfo(leaseApplyInfo); + //查询单号下的详情信息 + List detailsList = materialLeaseInfoMapper.getLeaseDataByCode(info); + leaseApplyRequestVo.setLeaseApplyDetailsList(detailsList); + for (MaterialLeaseApplyDetails details : leaseApplyRequestVo.getLeaseApplyDetailsList()){ + if (!StringHelper.isNullOrEmptyString(details.getMaIds())){ + //将maIds和maCodes用逗号分割 + String[] maIds = details.getMaIds().split(","); + String[] maCodes = details.getMaCodes().split(","); + List ma = new ArrayList<>(); + for (int i = 0; i < maIds.length; i++){ + MaterialLeaseMaCodeDto maCodeDto = new MaterialLeaseMaCodeDto(); + maCodeDto.setMaCode(maCodes[i]); + maCodeDto.setMaId(Long.valueOf(maIds[i])); + maCodeDto.setTypeId(String.valueOf(details.getTypeId())); + ma.add(maCodeDto); + } + details.setMaCodeList(ma); + //过滤编码:只保留在machineList中存在的数据 + if (details.getMaCodeList().size() > 0) { + List machineList = getMachineByProIdAndTypeId(leaseApplyInfo.getProId(), details.getTypeId()); + //过滤maCodeList,只保留在machineList中存在的maId + List filteredMaCodeList = details.getMaCodeList().stream() + .filter(maCodeDto -> machineList.stream() + .anyMatch(machine -> machine.getMaId().equals(maCodeDto.getMaId()))) + .collect(Collectors.toList()); + // 更新details中的maCodeList + details.setMaCodeList(filteredMaCodeList); + details.setOutNum(BigDecimal.valueOf(details.getMaCodeList().size())); + } + } + } + return AjaxResult.success(leaseApplyRequestVo); + } catch (Exception e) { + log.error("查询总站点领料详情数据异常", e); + return AjaxResult.error("未查询到该单号信息"); + } + } + + private List getMachineByProIdAndTypeId(Long proId,Long typeId){ + MaterialLeaseApplyInfo dto = new MaterialLeaseApplyInfo(); + dto.setProId(proId); + dto.setTypeId(String.valueOf(typeId)); + // 获取所有机具列表 + List allMachines = materialLeaseInfoMapper.getMachineById(dto); + + // 如果没有机具,直接返回空列表 + if (CollectionUtils.isEmpty(allMachines)) { + return new ArrayList<>(); + } + + // 获取已使用的机具列表 + List usedMachines = materialLeaseInfoMapper.getUseMachineById(dto); + + // 如果没有已使用的机具,则所有机具都是未使用的 + if (CollectionUtils.isEmpty(usedMachines)) { + return allMachines; + } + + // 创建已使用机具ID的Set,提高查找效率 + Set usedMachineIds = usedMachines.stream() + .map(MaterialMaCodeVo::getMaId) + .collect(Collectors.toSet()); + + // 筛选出未使用的机具 + List unusedMachines = allMachines.stream() + .filter(machine -> !usedMachineIds.contains(machine.getMaId())) + .collect(Collectors.toList()); + return unusedMachines; + } + /** * 查询总站点领料详情数据 * diff --git a/bonus-modules/bonus-material/src/main/resources/mapper/material/clz/MaterialLeaseInfoMapper.xml b/bonus-modules/bonus-material/src/main/resources/mapper/material/clz/MaterialLeaseInfoMapper.xml index 0525a7b3..ce4e0b1e 100644 --- a/bonus-modules/bonus-material/src/main/resources/mapper/material/clz/MaterialLeaseInfoMapper.xml +++ b/bonus-modules/bonus-material/src/main/resources/mapper/material/clz/MaterialLeaseInfoMapper.xml @@ -1414,4 +1414,39 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" parent_id = #{parentId} AND type_id = #{typeId} + +