From 3c8d3158765306410adbee0e0407d912e9fbbb25 Mon Sep 17 00:00:00 2001 From: xuyuncong <3422692813@qq.com> Date: Mon, 24 Nov 2025 17:36:41 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iocoder/yudao/common/RepairConstants.java | 9 +++ .../base/service/RepairStatisticsService.java | 3 +- .../stockOperate/entity/DlRepairSoi.java | 6 ++ .../service/impl/DlRepairSoServiceImpl.java | 12 ++-- .../admin/DlRepairTitemController.java | 12 ++++ .../tickets/mapper/DlRepairTitemMapper.java | 9 +++ .../tickets/service/DlRepairTitemService.java | 9 +++ .../impl/DlRepairTicketsServiceImpl.java | 2 + .../impl/DlRepairTitemServiceImpl.java | 16 +++++ .../impl/DlTicketWaresServiceImpl.java | 59 +++++++++++-------- .../tickets/vo/DlRepairTicketsRespVO.java | 1 + .../mapper/tickets/DlRepairTicketsMapper.xml | 11 ++++ .../mapper/tickets/DlRepairTitemMapper.xml | 8 +++ 13 files changed, 127 insertions(+), 30 deletions(-) diff --git a/dl-module-repair/src/main/java/cn/iocoder/yudao/common/RepairConstants.java b/dl-module-repair/src/main/java/cn/iocoder/yudao/common/RepairConstants.java index 9e0564ff..08c8981a 100644 --- a/dl-module-repair/src/main/java/cn/iocoder/yudao/common/RepairConstants.java +++ b/dl-module-repair/src/main/java/cn/iocoder/yudao/common/RepairConstants.java @@ -16,4 +16,13 @@ public class RepairConstants { * 维修类型B */ public static final String REPAIR_TYPE_B = "02"; + + /** + * 子表类型 -工时项目 + */ + public static final String ITEM_TYPE_WORK = "01"; + /** + * 子表类型 -配件项目 + */ + public static final String ITEM_TYPE_WARE = "02"; } diff --git a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/base/service/RepairStatisticsService.java b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/base/service/RepairStatisticsService.java index af8d973f..663d4cdc 100644 --- a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/base/service/RepairStatisticsService.java +++ b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/base/service/RepairStatisticsService.java @@ -1,6 +1,7 @@ package cn.iocoder.yudao.module.base.service; import cn.iocoder.yudao.module.base.entity.StaffStatisticsResp; +import cn.iocoder.yudao.module.base.service.impl.InventoryStatisticsVO; import cn.iocoder.yudao.module.base.vo.*; import cn.iocoder.yudao.module.tickets.entity.DlRepairTickets; import cn.iocoder.yudao.module.tickets.vo.DlRepairTicketsRespVO; @@ -217,7 +218,7 @@ public interface RepairStatisticsService { * @return java.util.List> **/ List> workTypeStatistics(QueryBusinessReqVO reqVO); - + /** * 根据班组(工种类型)统计班组下员工的工作量 * @param workType 工种类型 diff --git a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/stockOperate/entity/DlRepairSoi.java b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/stockOperate/entity/DlRepairSoi.java index 6ced3266..167bdde4 100644 --- a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/stockOperate/entity/DlRepairSoi.java +++ b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/stockOperate/entity/DlRepairSoi.java @@ -90,4 +90,10 @@ public class DlRepairSoi extends TenantBaseDO { */ @TableField(exist = false) private String houseName; + + /** + * 销售价格 + */ + @TableField(exist = false) + private BigDecimal salePrice; } diff --git a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/stockOperate/service/impl/DlRepairSoServiceImpl.java b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/stockOperate/service/impl/DlRepairSoServiceImpl.java index ce78ccb8..62a00286 100644 --- a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/stockOperate/service/impl/DlRepairSoServiceImpl.java +++ b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/stockOperate/service/impl/DlRepairSoServiceImpl.java @@ -490,12 +490,14 @@ public class DlRepairSoServiceImpl extends ServiceImpl repairSoi.getGoodsCount()) { //现有数量大于要退的数量,扣掉 item.setItemCount(item.getItemCount() - repairSoi.getGoodsCount()); + BigDecimal itemPrice = repairSoi.getGoodsPrice() != null ? repairSoi.getGoodsPrice() : item.getItemPrice(); + item.setItemPrice(itemPrice); item.setItemMoney(item.getItemPrice().multiply(BigDecimal.valueOf(item.getItemCount())).multiply(item.getItemDiscount())); item.setItemStatus(TicketsItemStatusEnum.RECEIVED.getCode()); // 重新计算利润和利润率 - BigDecimal salePrice = repairWaresMap.get(repairSoi.getGoodsId()).getPrice(); // 售价 + BigDecimal salePrice = repairSoi.getGoodsPrice() != null ? repairSoi.getGoodsPrice() : repairWaresMap.get(repairSoi.getGoodsId()).getPrice(); // 售价 BigDecimal purchasePrice = repairWaresMap.get(repairSoi.getGoodsId()).getPurPrice(); // 进价 //计算利润 @@ -561,7 +565,7 @@ public class DlRepairSoServiceImpl extends ServiceImpl getTeamProgressWithItems(@RequestParam("ticketId") String ticketId) { return success(dlRepairTicketsService.getTeamProgressWithItems(ticketId)); } + + /** + * @description : 查询未完成项目根据工单id + * @author xyc + * @date 10:20 2025/11/24 + * @param [ticketId] + * @return cn.iocoder.yudao.framework.common.pojo.CommonResult + **/ + @GetMapping("/getUnfinishedProjectsByTicketId") + public CommonResult getUnfinishedProjectsByTicketId(@RequestParam("ticketId") String ticketId) { + return success(dlRepairTitemService.getProjectsByTicketId(ticketId, SecurityFrameworkUtils.getLoginUserId())); + } } diff --git a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/mapper/DlRepairTitemMapper.java b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/mapper/DlRepairTitemMapper.java index 5dbbb7c6..c1508537 100644 --- a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/mapper/DlRepairTitemMapper.java +++ b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/mapper/DlRepairTitemMapper.java @@ -61,6 +61,15 @@ public interface DlRepairTitemMapper extends BaseMapper { * @return java.util.List **/ List selectProjectByTicketIds(@Param("ticketIds") List ticketIds); + + /** + * @description : 查询未完成项目 + * @author xyc + * @date 10:33 2025/11/24 + * @param [ticketId, userId] + * @return java.util.List + **/ + List getProjectsByTicketId(@Param("ticketId") String ticketId, @Param("userId") Long userId); } diff --git a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/service/DlRepairTitemService.java b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/service/DlRepairTitemService.java index 9c2d3977..a82ad170 100644 --- a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/service/DlRepairTitemService.java +++ b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/service/DlRepairTitemService.java @@ -83,4 +83,13 @@ public interface DlRepairTitemService extends IService { * @return java.util.List **/ List getProjList(String ticketId,String isOpen); + + /** + * @description : 查询未完成项目 + * @author xyc + * @date 10:22 2025/11/24 + * @param [ticketId, userId] + * @return java.util.List + **/ + List getProjectsByTicketId(String ticketId, Long userId); } diff --git a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/service/impl/DlRepairTicketsServiceImpl.java b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/service/impl/DlRepairTicketsServiceImpl.java index 4c691ff4..2dc27d4b 100644 --- a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/service/impl/DlRepairTicketsServiceImpl.java +++ b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/service/impl/DlRepairTicketsServiceImpl.java @@ -322,6 +322,8 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl getProjList(String ticketId,String isOpen) { return dlRepairTitemMapper.selectProjList(ticketId,isOpen); } + + /** + * @param ticketId + * @return java.util.List + * @description : 查询未完成项目 + * @author xyc + * @date 10:22 2025/11/24 + **/ + @Override + public List getProjectsByTicketId(String ticketId, Long userId) { + return baseMapper.getProjectsByTicketId(ticketId,userId); + } } diff --git a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/service/impl/DlTicketWaresServiceImpl.java b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/service/impl/DlTicketWaresServiceImpl.java index 88f4a2c9..59985b5d 100644 --- a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/service/impl/DlTicketWaresServiceImpl.java +++ b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/service/impl/DlTicketWaresServiceImpl.java @@ -397,35 +397,44 @@ public class DlTicketWaresServiceImpl extends ServiceImpl list = repairTitemService.list(new LambdaQueryWrapper().and(i -> { - i.eq(DlRepairTitem::getTicketId, respVO.getTicketId()) - .in(DlRepairTitem::getPartId, respVO.getRepairSois() - .stream() - .map(DlRepairSoi::getGoodsId) - .collect(Collectors.toList())); - }) - ); - // 计算总价 (通知领料的数量可能和请求的不一样,所以需要这样计算) - BigDecimal reduce = list.stream() - /* - item:维修工单子表中的每一个配件 - map中是找到与item对应的领料单子表的配件,记soi - 将item的价格设置给soi的价格 - */ - .map(item -> { - DlRepairSoi repairSoi = respVO.getRepairSois().stream() - .filter(i -> i.getGoodsId().equals(item.getPartId())).findFirst() - .orElse(null); - if (repairSoi != null) { - repairSoi.setGoodsPrice(item.getItemPrice()); - } - return repairSoi; - }) +// List list = repairTitemService.list(new LambdaQueryWrapper().and(i -> { +// i.eq(DlRepairTitem::getTicketId, respVO.getTicketId()) +// .in(DlRepairTitem::getPartId, respVO.getRepairSois() +// .stream() +// .map(DlRepairSoi::getGoodsId) +// .collect(Collectors.toList())); +// }) +// ); +// // 计算总价 (通知领料的数量可能和请求的不一样,所以需要这样计算) +// BigDecimal reduce = list.stream() +// /* +// item:维修工单子表中的每一个配件 +// map中是找到与item对应的领料单子表的配件,记soi +// 将item的价格设置给soi的价格 +// */ +// .map(item -> { +// DlRepairSoi repairSoi = respVO.getRepairSois().stream() +// .filter(i -> i.getGoodsId().equals(item.getPartId())).findFirst() +// .orElse(null); +// if (repairSoi != null) { +// repairSoi.setGoodsPrice(item.getItemPrice()); +// } +// return repairSoi; +// }) +// .filter(Objects::nonNull) +// // 计算soi的价格 +// .map(i -> new BigDecimal(i.getGoodsCount()).multiply(i.getGoodsPrice())) +// // 计算总价 +// .reduce(BigDecimal.ZERO, BigDecimal::add); + // 修改计算逻辑 根据getRepairSois中的salePrice金额来计算总价 + BigDecimal reduce = respVO.getRepairSois().stream() + // 过滤出非空的 repairSoi 项 .filter(Objects::nonNull) - // 计算soi的价格 + // 计算 salePrice 与 goodsCount 的乘积 .map(i -> new BigDecimal(i.getGoodsCount()).multiply(i.getGoodsPrice())) // 计算总价 .reduce(BigDecimal.ZERO, BigDecimal::add); + // 生成领料单、退料单 respVO.getRepairSo().setTotalPrice(reduce); respVO.getRepairSo().setItemCount(respVO.getRepairSois().stream().mapToInt(DlRepairSoi::getGoodsCount).sum()); diff --git a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/vo/DlRepairTicketsRespVO.java b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/vo/DlRepairTicketsRespVO.java index dbaa0687..fc59c7a1 100644 --- a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/vo/DlRepairTicketsRespVO.java +++ b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/vo/DlRepairTicketsRespVO.java @@ -116,4 +116,5 @@ public class DlRepairTicketsRespVO extends DlRepairTickets { /** 开票备注 */ private String billedRemark; private Integer hasChildTickets; + private List bTickets; } diff --git a/dl-module-repair/src/main/resources/mapper/tickets/DlRepairTicketsMapper.xml b/dl-module-repair/src/main/resources/mapper/tickets/DlRepairTicketsMapper.xml index 9c89b24e..cf980c3c 100644 --- a/dl-module-repair/src/main/resources/mapper/tickets/DlRepairTicketsMapper.xml +++ b/dl-module-repair/src/main/resources/mapper/tickets/DlRepairTicketsMapper.xml @@ -139,6 +139,7 @@ + @@ -434,6 +435,13 @@ order by drt.update_time desc + + +