From 237221924378dd04ce5eadcfdf84dedffd7faa76 Mon Sep 17 00:00:00 2001 From: Vinjor Date: Fri, 25 Oct 2024 18:12:17 +0800 Subject: [PATCH 1/7] 1 --- .../admin/BaseSupplierController.java | 18 ++++++++++++++---- .../cn/iocoder/yudao/common/RepairCons.java | 2 ++ .../service/impl/DlTwItemServiceImpl.java | 13 +++++++++---- 3 files changed, 25 insertions(+), 8 deletions(-) diff --git a/dl-module-base/src/main/java/cn/iocoder/yudao/module/supplier/controller/admin/BaseSupplierController.java b/dl-module-base/src/main/java/cn/iocoder/yudao/module/supplier/controller/admin/BaseSupplierController.java index 28a7e0dd..106a4fb7 100644 --- a/dl-module-base/src/main/java/cn/iocoder/yudao/module/supplier/controller/admin/BaseSupplierController.java +++ b/dl-module-base/src/main/java/cn/iocoder/yudao/module/supplier/controller/admin/BaseSupplierController.java @@ -1,15 +1,13 @@ package cn.iocoder.yudao.module.supplier.controller.admin; import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; -import cn.iocoder.yudao.module.label.vo.LabelPageReqVO; -import cn.iocoder.yudao.module.label.vo.LabelRespVO; import cn.iocoder.yudao.module.supplier.entity.BaseSupplier; import cn.iocoder.yudao.module.supplier.service.BaseSupplierService; import cn.iocoder.yudao.module.supplier.vo.BaseSupplierPageReqVO; import cn.iocoder.yudao.module.supplier.vo.BaseSupplierRespVO; import cn.iocoder.yudao.module.supplier.vo.BaseSupplierSaveReqVO; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.v3.oas.annotations.Operation; @@ -123,8 +121,20 @@ public class BaseSupplierController { **/ @GetMapping("/list") @Operation(summary = "获得所有供应商") -// @PreAuthorize("@ss.hasPermission('supplier:base-supplier:query')") public CommonResult getBaseSupplierList(){ return success(baseSupplierService.list()); } + + /** + * 根据输入名称模糊查询供应商 + * @author 小李 + * @date 9:23 2024/9/13 + **/ + @GetMapping("/searchList") + @Operation(summary = "根据输入名称模糊查询供应商") + public CommonResult searchList(String name){ + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() + .like(BaseSupplier::getName,name); + return success(baseSupplierService.list(queryWrapper)); + } } \ No newline at end of file diff --git a/dl-module-repair/src/main/java/cn/iocoder/yudao/common/RepairCons.java b/dl-module-repair/src/main/java/cn/iocoder/yudao/common/RepairCons.java index 58848131..c1c3a3b7 100644 --- a/dl-module-repair/src/main/java/cn/iocoder/yudao/common/RepairCons.java +++ b/dl-module-repair/src/main/java/cn/iocoder/yudao/common/RepairCons.java @@ -16,4 +16,6 @@ public class RepairCons { public static final String DICT_REPAIR_RECORDS_TYPE = "repair_records_type"; /**数据字典常量-repair_type-*/ public static final String DICT_REPAIR_TYPE = "repair_type"; + /**数据字典常量-repair_unit-*/ + public static final String DICT_REPAIR_UNIT = "repair_unit"; } diff --git a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/service/impl/DlTwItemServiceImpl.java b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/service/impl/DlTwItemServiceImpl.java index 8975a29f..d4cc0054 100644 --- a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/service/impl/DlTwItemServiceImpl.java +++ b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/service/impl/DlTwItemServiceImpl.java @@ -4,9 +4,10 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollectionUtil; import cn.iocoder.yudao.module.project.entity.RepairWares; import cn.iocoder.yudao.module.project.service.RepairWaresService; +import cn.iocoder.yudao.module.system.api.dict.DictDataApi; +import cn.iocoder.yudao.module.system.api.dict.dto.DictDataRespDTO; import cn.iocoder.yudao.module.tickets.entity.DlTwItem; import cn.iocoder.yudao.module.tickets.mapper.DlTwItemMapper; -import cn.iocoder.yudao.module.tickets.service.DlTicketWaresService; import cn.iocoder.yudao.module.tickets.service.DlTwItemService; import cn.iocoder.yudao.module.tickets.vo.DlTwItemReqVO; import cn.iocoder.yudao.module.tickets.vo.DlTwItemRespVO; @@ -20,6 +21,8 @@ import java.util.List; import java.util.Map; import java.util.stream.Collectors; +import static cn.iocoder.yudao.common.RepairCons.DICT_REPAIR_UNIT; + /** * 针对表【dl_tw_item(工单配件申请/退回子表)】的数据库操作Service实现 * @@ -32,10 +35,8 @@ public class DlTwItemServiceImpl extends ServiceImpl @Resource private RepairWaresService repairWaresService; - @Resource - @Lazy - private DlTicketWaresService ticketWaresService; + private DictDataApi dictDataApi; @Resource @Lazy private RepairWaresService waresService; @@ -57,6 +58,9 @@ public class DlTwItemServiceImpl extends ServiceImpl for(Map map:typeMapList){ typeMap.put(map.get("id"),map.get("name")); } + // 单位字典 + List recordTypeList = dictDataApi.getDictDataList(DICT_REPAIR_UNIT); + Map unitMap = recordTypeList.stream().collect(Collectors.toMap(DictDataRespDTO::getValue,DictDataRespDTO::getLabel)); // 查配件详情 List ids = dlTwItems.stream().map(DlTwItem::getWaresId).collect(Collectors.toList()); if (CollectionUtil.isNotEmpty(ids)){ @@ -68,6 +72,7 @@ public class DlTwItemServiceImpl extends ServiceImpl .findFirst() .ifPresent(bean::setWares); bean.setTypeName(typeMap.get(bean.getWares().getType())); + bean.getWares().setUnit(unitMap.get(bean.getWares().getUnit())); return bean; }).collect(Collectors.toList()); } From 2f6341d8233052c3f4424211c93c37d18afdafeb Mon Sep 17 00:00:00 2001 From: lzttt <1803073139@qq.com> Date: Fri, 25 Oct 2024 18:19:55 +0800 Subject: [PATCH 2/7] =?UTF-8?q?=E6=95=91=E6=8F=B4=E5=8F=B8=E6=9C=BA?= =?UTF-8?q?=E7=AB=AF=E5=AE=A2=E6=88=B7=E4=BF=A1=E6=81=AF=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/InspectionInfoServiceImpl.java | 13 ++++++- .../impl/PartnerCustomerInfoServiceImpl.java | 2 +- .../impl/RescueDriverInfoServiceImpl.java | 38 ++++++++++++++++++- 3 files changed, 50 insertions(+), 3 deletions(-) diff --git a/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/service/impl/InspectionInfoServiceImpl.java b/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/service/impl/InspectionInfoServiceImpl.java index 04941ab3..2e68139d 100644 --- a/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/service/impl/InspectionInfoServiceImpl.java +++ b/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/service/impl/InspectionInfoServiceImpl.java @@ -9,6 +9,8 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import cn.iocoder.yudao.framework.security.core.LoginUser; import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; +import cn.iocoder.yudao.module.custom.entity.CustomerMain; +import cn.iocoder.yudao.module.custom.service.CustomerMainService; import cn.iocoder.yudao.module.partner.entity.PartnerCustomerInfo; import cn.iocoder.yudao.module.partner.service.IPartnerCustomerInfoService; import cn.iocoder.yudao.module.partner.service.IPartnerWorkerService; @@ -38,6 +40,8 @@ import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; + /** * 【请填写功能名称】Service业务层处理 * @@ -68,7 +72,8 @@ public class InspectionInfoServiceImpl extends ServiceImpl userCarList = new ArrayList<>(); + ShopUserCar userCar = new ShopUserCar(); + userCar.setCarNo(rescueInfo.getLicenseNum()); + userCar.setCarModel(rescueInfo.getCarType()); + userCar.setCarBrand(rescueInfo.getCarBrand()); + userCar.setUserId(user.getId()); + userCarList.add(userCar); + + customerInfo.setUserCarList(userCarList); + + // 设置客户来源 + CustomerMain customerMain = new CustomerMain(); + customerMain.setDataFrom("02"); + customerMainService.saveOrUpdate(customerMain); + + // 调用插入客户信息的方法 + customerInfoService.insertPartnerCustomerInfo(customerInfo); + + //所在顶级机构 String redisKey = Redis_Driver_Key + driverInfo.getTenantId() + ":" + rescueInfo.getDriverId(); Object temp = redisCache.getCacheMapValue(redisKey, "rescueIds"); @@ -588,7 +624,7 @@ public class RescueDriverInfoServiceImpl extends ServiceImpl Date: Fri, 25 Oct 2024 18:51:32 +0800 Subject: [PATCH 3/7] 1 --- .../service/impl/DlRepairSoServiceImpl.java | 2 +- .../service/impl/DlRepairTicketsServiceImpl.java | 12 +++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) 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 e9051a1d..6e53baa0 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 @@ -108,7 +108,7 @@ public class DlRepairSoServiceImpl extends ServiceImpl wares = items.stream().filter(item -> item.getItemType().equals("02")).collect(Collectors.toList()); if (CollectionUtil.isNotEmpty(wares)) { + // 单位字典 + List recordTypeList = dictDataApi.getDictDataList(DICT_REPAIR_UNIT); + Map unitMap = recordTypeList.stream().collect(Collectors.toMap(DictDataRespDTO::getValue,DictDataRespDTO::getLabel)); + Set ids = wares.stream().map(DlRepairTitemReqVO::getPartId).collect(Collectors.toSet()); List repairWares = waresService.listByIds(ids); - items.forEach(item -> repairWares.stream().filter(i -> i.getId().equals(item.getPartId())).findFirst().ifPresent(item::setWare)); + items.forEach(item -> { + repairWares.stream().filter(i -> i.getId().equals(item.getPartId())).findFirst().ifPresent(item::setWare); + item.setItemUnit(unitMap.get(item.getItemUnit())); + }); } result.setWares(wares); // 取附加 From a4257f3bd3a350758e8520bb5ad86e884c4931ab Mon Sep 17 00:00:00 2001 From: xiaofajia <1665375861@qq.com> Date: Fri, 25 Oct 2024 22:04:18 +0800 Subject: [PATCH 4/7] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=A2=86=E6=96=99?= =?UTF-8?q?=E3=80=81=E9=80=80=E6=96=99=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/DlRepairSoServiceImpl.java | 296 +++++++++++------- .../impl/DlTicketWaresServiceImpl.java | 97 +++++- 2 files changed, 261 insertions(+), 132 deletions(-) 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 44536258..4e5fecc2 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 @@ -92,6 +92,10 @@ public class DlRepairSoServiceImpl extends ServiceImpl sois = repairSoiService.list(new LambdaQueryWrapper().in(DlRepairSoi::getSoId, so.getId())); + // 查要操作申请表子表 + List oldTwItems = twItemService.list(new LambdaQueryWrapper().and(item -> { + item.eq(DlTwItem::getTwId, so.getTwId()) + .in(DlTwItem::getWaresId, sois.stream().map(DlRepairSoi::getGoodsId).collect(Collectors.toList())); + })); + // 查要操作的配件 + List oldWares = repairWaresService.list(new LambdaQueryWrapper().in(RepairWares::getId, sois.stream().map(DlRepairSoi::getGoodsId).collect(Collectors.toList()))); + // 新的申请表子表数据和配件数据 + List newTwItems = new ArrayList<>(); + List newWares = new ArrayList<>(); + // 需要区分是领料还是退料 + // 得到新申请表子表数据 + oldTwItems.forEach(item -> { + DlTwItem dlTwItem = new DlTwItem(); + dlTwItem.setId(item.getId()); + sois.stream().filter(i -> i.getGoodsId().equals(item.getWaresId())).findFirst().ifPresent(repairSoiByTwItem -> { + if (so.getSoType().equals("02")){ + dlTwItem.setWaresAlreadyCount(item.getWaresAlreadyCount() - repairSoiByTwItem.getGoodsCount()); + dlTwItem.setWaresCouldCount(item.getWaresCouldCount() + repairSoiByTwItem.getGoodsCount()); + dlTwItem.setWaresStatus("02"); + }else { + dlTwItem.setWaresAlreadyCount(item.getWaresAlreadyCount() + repairSoiByTwItem.getGoodsCount()); + dlTwItem.setWaresCouldCount(item.getWaresCouldCount() - repairSoiByTwItem.getGoodsCount()); + } + }); + newTwItems.add(dlTwItem); + }); + // 得到新配件数据 + oldWares.forEach(item -> { + RepairWares wares = new RepairWares(); + wares.setId(item.getId()); + sois.stream().filter(i -> i.getGoodsId().equals(wares.getId())).findFirst().ifPresent(repairSoiByWares -> { + if (so.getSoType().equals("02")){ + wares.setStock(item.getStock().add(BigDecimal.valueOf(repairSoiByWares.getGoodsCount()))); + }else { + wares.setStock(item.getStock().subtract(BigDecimal.valueOf(repairSoiByWares.getGoodsCount()))); + } + }); + newWares.add(wares); + }); + + // 更新申请表子表 + twItemService.updateBatchById(newTwItems); + // 更新配件 + repairWaresService.updateBatchById(newWares); } } @@ -235,53 +287,54 @@ public class DlRepairSoServiceImpl extends ServiceImpl() .eq(DlRepairSoi::getSoId, id) ); - // 查库存 - List wares = waresService - .list(new LambdaQueryWrapper() - .in(RepairWares::getId, sois.stream() - .map(DlRepairSoi::getGoodsId) - .collect(Collectors.toList()) - )); - // 更新库存 - List newWares = wares.stream().map(item -> { - RepairWares ware = new RepairWares(); - ware.setId(item.getId()); - sois.stream().filter(i -> i.getGoodsId().equals(item.getId())).findFirst().ifPresent(i -> { - ware.setStock(item.getStock().subtract(BigDecimal.valueOf(i.getGoodsCount()))); - }); - return ware; - }).collect(Collectors.toList()); - waresService.updateBatchById(newWares); + // 查库存---生成领料单的时候更新了 +// List wares = waresService +// .list(new LambdaQueryWrapper() +// .in(RepairWares::getId, sois.stream() +// .map(DlRepairSoi::getGoodsId) +// .collect(Collectors.toList()) +// )); +// // 更新库存 +// List newWares = wares.stream().map(item -> { +// RepairWares ware = new RepairWares(); +// ware.setId(item.getId()); +// sois.stream().filter(i -> i.getGoodsId().equals(item.getId())).findFirst().ifPresent(i -> { +// ware.setStock(item.getStock().subtract(BigDecimal.valueOf(i.getGoodsCount()))); +// }); +// return ware; +// }).collect(Collectors.toList()); +// waresService.updateBatchById(newWares); // 更新主表状态 为已领料 DlRepairSo dlRepairSo = new DlRepairSo(); dlRepairSo.setId(id); dlRepairSo.setSoStatus(SoStatusEnum.PICKED.getCode()); baseMapper.updateById(dlRepairSo); - // 更新申请表的数据 - DlRepairSo so = baseMapper.selectOne(new LambdaQueryWrapper().eq(DlRepairSo::getId, id)); - // 查申请表的子表对应的配件信息 - List twItems = twItemService.list(new LambdaQueryWrapper().and(item -> { - item.eq(DlTwItem::getTwId, so.getTwId()) - .in(DlTwItem::getWaresId, sois.stream().map(DlRepairSoi::getGoodsId).collect(Collectors.toList())); - })); - // 更新子表 - List newTwItems = twItems.stream().map(item -> { - DlTwItem dlTwItem = new DlTwItem(); - dlTwItem.setId(item.getId()); - dlTwItem.setWaresAlreadyCount(ObjectUtil.isNotEmpty(item.getWaresAlreadyCount()) ? item.getWaresAlreadyCount() + item.getWaresCouldCount() : item.getWaresCouldCount()); - dlTwItem.setWaresStatus(dlTwItem.getWaresAlreadyCount().equals(item.getWaresCount()) ? "01" : item.getWaresStatus()); - return dlTwItem; - }).collect(Collectors.toList()); - twItemService.updateBatchById(newTwItems); + // 更新申请表的数据----生成领料单的时候更新了 +// // 查申请表的子表对应的配件信息 +// List twItems = twItemService.list(new LambdaQueryWrapper().and(item -> { +// item.eq(DlTwItem::getTwId, so.getTwId()) +// .in(DlTwItem::getWaresId, sois.stream().map(DlRepairSoi::getGoodsId).collect(Collectors.toList())); +// })); +// // 更新子表 +// List newTwItems = twItems.stream().map(item -> { +// DlTwItem dlTwItem = new DlTwItem(); +// dlTwItem.setId(item.getId()); +// dlTwItem.setWaresAlreadyCount(ObjectUtil.isNotEmpty(item.getWaresAlreadyCount()) ? item.getWaresAlreadyCount() + item.getWaresCouldCount() : item.getWaresCouldCount()); +// dlTwItem.setWaresStatus(dlTwItem.getWaresAlreadyCount().equals(item.getWaresCount()) ? "01" : item.getWaresStatus()); +// return dlTwItem; +// }).collect(Collectors.toList()); +// twItemService.updateBatchById(newTwItems); // 查最新的子表信息 + DlRepairSo so = baseMapper.selectOne(new LambdaQueryWrapper().eq(DlRepairSo::getId, id)); List list = twItemService.list(new LambdaQueryWrapper().eq(DlTwItem::getTwId, so.getTwId())); // 判断是部分完成还是全部完成 DlTicketWares dlTicketWares = new DlTicketWares(); dlTicketWares.setId(so.getTwId()); List flag = list.stream().filter(item -> !item.getWaresStatus().equals("01")).collect(Collectors.toList()); dlTicketWares.setStatus(CollectionUtil.isEmpty(flag) ? "03" : "04"); + // 更新主表的状态 ticketWaresService.updateById(dlTicketWares); // 查主表记录 @@ -305,92 +358,94 @@ public class DlRepairSoServiceImpl extends ServiceImpl().eq(DlRepairSo::getId, id)); - // 查配件退料表子表 - List sois = repairSoiService.list(new LambdaQueryWrapper().eq(DlRepairSoi::getSoId, so.getId())); - // 查申请表子表 - List twItems = twItemService.list(new LambdaQueryWrapper().eq(DlTwItem::getTwId, so.getTwId())); - // 得到需要更新的数据 - List newTwItems = twItems.stream().map(item -> { - DlTwItem dlTwItem = new DlTwItem(); - dlTwItem.setId(item.getId()); - sois.stream().filter(i -> i.getGoodsId().equals(item.getWaresId())).findFirst().ifPresent(i -> { - dlTwItem.setWaresBackCount( - ObjectUtil.isNotEmpty(item.getWaresBackCount()) - ? item.getWaresCount() + item.getWaresBackCount() - : i.getGoodsCount()); - // 如果退料数就是领料申请数,那就是全退了 - if (i.getGoodsCount().equals(dlTwItem.getWaresCount())) { - dlTwItem.setWaresStatus("03"); - } - }); - return dlTwItem; - }).collect(Collectors.toList()); - twItemService.updateBatchById(newTwItems); - // 更新库存 - // 查库存 - List wares = waresService.list(new LambdaQueryWrapper().in(RepairWares::getId, sois.stream().map(DlRepairSoi::getGoodsId).collect(Collectors.toList()))); - // 构建新数据 - List newWares = wares.stream().map(item -> { - RepairWares ware = new RepairWares(); - ware.setId(item.getId()); - sois.stream().filter(i -> i.getGoodsId().equals(item.getId())).findFirst().ifPresent(i -> { - ware.setStock(item.getStock().add(BigDecimal.valueOf(i.getGoodsCount()))); - }); - return ware; - }).collect(Collectors.toList()); - waresService.updateBatchById(newWares); + // 更新配件申请表----生成退料单的时候更新了 +// DlRepairSo so = baseMapper.selectOne(new LambdaQueryWrapper().eq(DlRepairSo::getId, id)); +// // 查配件退料表子表 +// List sois = repairSoiService.list(new LambdaQueryWrapper().eq(DlRepairSoi::getSoId, so.getId())); +// // 查申请表子表 +// List twItems = twItemService.list(new LambdaQueryWrapper().eq(DlTwItem::getTwId, so.getTwId())); +// // 得到需要更新的数据 +// List newTwItems = twItems.stream().map(item -> { +// DlTwItem dlTwItem = new DlTwItem(); +// dlTwItem.setId(item.getId()); +// sois.stream().filter(i -> i.getGoodsId().equals(item.getWaresId())).findFirst().ifPresent(i -> { +// dlTwItem.setWaresBackCount( +// ObjectUtil.isNotEmpty(item.getWaresBackCount()) +// ? item.getWaresCount() + item.getWaresBackCount() +// : i.getGoodsCount()); +// // 如果退料数就是领料申请数,那就是全退了 +// if (i.getGoodsCount().equals(dlTwItem.getWaresCount())) { +// dlTwItem.setWaresStatus("03"); +// } +// }); +// return dlTwItem; +// }).collect(Collectors.toList()); +// twItemService.updateBatchById(newTwItems); +// // 更新库存 +// // 查库存 +// List wares = waresService.list(new LambdaQueryWrapper().in(RepairWares::getId, sois.stream().map(DlRepairSoi::getGoodsId).collect(Collectors.toList()))); +// // 构建新数据 +// List newWares = wares.stream().map(item -> { +// RepairWares ware = new RepairWares(); +// ware.setId(item.getId()); +// sois.stream().filter(i -> i.getGoodsId().equals(item.getId())).findFirst().ifPresent(i -> { +// ware.setStock(item.getStock().add(BigDecimal.valueOf(i.getGoodsCount()))); +// }); +// return ware; +// }).collect(Collectors.toList()); +// waresService.updateBatchById(newWares); - // 更新维修工单 - // 查申请表主表 - DlTicketWares ticketWares = ticketWaresService.getOne(new LambdaQueryWrapper().eq(DlTicketWares::getId, so.getTwId())); - // 查维修工单子表为配件的数据 - List titems = titemService.list(new LambdaQueryWrapper().and(item -> { - item.eq(DlRepairTitem::getTicketId, ticketWares.getTicketId()) - .eq(DlRepairTitem::getItemType, "02") - .in(DlRepairTitem::getPartId, sois.stream().map(DlRepairSoi::getGoodsId).collect(Collectors.toList())); - })); - // 构建新数据,更新维修工单子表 - List newTitems = titems.stream().map(item -> { - DlRepairTitem titem = new DlRepairTitem(); - titem.setId(item.getId()); - sois.stream().filter(i -> i.getGoodsId().equals(item.getPartId())).findFirst().ifPresent(i -> { - titem.setItemCount(item.getItemCount() - i.getGoodsCount()); - BigDecimal itemDiscount = ObjectUtil.isNotEmpty(item.getItemDiscount()) ? item.getItemDiscount() : BigDecimal.ONE; - titem.setItemMoney(new BigDecimal(titem.getItemCount()).multiply(item.getItemPrice()).multiply(itemDiscount)); - }); - return titem; - }).collect(Collectors.toList()); - // 分开全部退料了的和没有全部退料的数据 - List delTitems = newTitems.stream().filter(item -> item.getItemCount() == 0).collect(Collectors.toList()); - if (CollectionUtil.isEmpty(delTitems)) { - titemService.updateBatchById(newTitems); - } else { - titemService.removeBatchByIds(delTitems); - List updateTitems = newTitems.stream().filter(item -> !delTitems.contains(item)).collect(Collectors.toList()); - if (CollectionUtil.isEmpty(updateTitems)) { - titemService.updateBatchById(updateTitems); - } - - } - // 更新维修工单 - DlRepairTickets tickets = ticketsService.getOne(new LambdaQueryWrapper().eq(DlRepairTickets::getId, ticketWares.getTicketId())); - // 查最新的子表信息 - List list = titemService.list(new LambdaQueryWrapper().in(DlRepairTitem::getTicketId, tickets.getId())); - // 计算工单总子项、工单配件总价、工单总价 - DlRepairTickets newTickets = new DlRepairTickets(); - newTickets.setId(tickets.getId()); - newTickets.setCount(list.stream().mapToInt(DlRepairTitem::getItemCount).sum()); - newTickets.setPartPrice(list.stream() - .filter(item -> item.getItemType().equals("02")) - .map(DlRepairTitem::getItemMoney) - .reduce(BigDecimal.ZERO, BigDecimal::add)); - BigDecimal projectPrice = tickets.getProjectPrice() == null ? BigDecimal.ZERO : tickets.getProjectPrice(); - BigDecimal otherPrice = tickets.getOtherPrice() != null ? tickets.getOtherPrice() : BigDecimal.ZERO; - BigDecimal partPrice = newTickets.getPartPrice() == null ? BigDecimal.ZERO : newTickets.getPartPrice(); - newTickets.setTotalPrice(projectPrice.add(partPrice).add(otherPrice)); - ticketsService.updateById(newTickets); + // 更新维修工单----最后完成工单的时候来更新 +// // 查配件退料表子表 +// List sois = repairSoiService.list(new LambdaQueryWrapper().eq(DlRepairSoi::getSoId, so.getId())); +// // 查申请表主表 +// DlTicketWares ticketWares = ticketWaresService.getOne(new LambdaQueryWrapper().eq(DlTicketWares::getId, so.getTwId())); +// // 查维修工单子表为配件的数据 +// List titems = titemService.list(new LambdaQueryWrapper().and(item -> { +// item.eq(DlRepairTitem::getTicketId, ticketWares.getTicketId()) +// .eq(DlRepairTitem::getItemType, "02") +// .in(DlRepairTitem::getPartId, sois.stream().map(DlRepairSoi::getGoodsId).collect(Collectors.toList())); +// })); +// // 构建新数据,更新维修工单子表 +// List newTitems = titems.stream().map(item -> { +// DlRepairTitem titem = new DlRepairTitem(); +// titem.setId(item.getId()); +// sois.stream().filter(i -> i.getGoodsId().equals(item.getPartId())).findFirst().ifPresent(i -> { +// titem.setItemCount(item.getItemCount() - i.getGoodsCount()); +// BigDecimal itemDiscount = ObjectUtil.isNotEmpty(item.getItemDiscount()) ? item.getItemDiscount() : BigDecimal.ONE; +// titem.setItemMoney(new BigDecimal(titem.getItemCount()).multiply(item.getItemPrice()).multiply(itemDiscount)); +// }); +// return titem; +// }).collect(Collectors.toList()); +// // 分开全部退料了的和没有全部退料的数据 +// List delTitems = newTitems.stream().filter(item -> item.getItemCount() == 0).collect(Collectors.toList()); +// if (CollectionUtil.isEmpty(delTitems)) { +// titemService.updateBatchById(newTitems); +// } else { +// titemService.removeBatchByIds(delTitems); +// List updateTitems = newTitems.stream().filter(item -> !delTitems.contains(item)).collect(Collectors.toList()); +// if (CollectionUtil.isEmpty(updateTitems)) { +// titemService.updateBatchById(updateTitems); +// } +// +// } +// // 更新维修工单 +// DlRepairTickets tickets = ticketsService.getOne(new LambdaQueryWrapper().eq(DlRepairTickets::getId, ticketWares.getTicketId())); +// // 查最新的子表信息 +// List list = titemService.list(new LambdaQueryWrapper().in(DlRepairTitem::getTicketId, tickets.getId())); +// // 计算工单总子项、工单配件总价、工单总价 +// DlRepairTickets newTickets = new DlRepairTickets(); +// newTickets.setId(tickets.getId()); +// newTickets.setCount(list.stream().mapToInt(DlRepairTitem::getItemCount).sum()); +// newTickets.setPartPrice(list.stream() +// .filter(item -> item.getItemType().equals("02")) +// .map(DlRepairTitem::getItemMoney) +// .reduce(BigDecimal.ZERO, BigDecimal::add)); +// BigDecimal projectPrice = tickets.getProjectPrice() == null ? BigDecimal.ZERO : tickets.getProjectPrice(); +// BigDecimal otherPrice = tickets.getOtherPrice() != null ? tickets.getOtherPrice() : BigDecimal.ZERO; +// BigDecimal partPrice = newTickets.getPartPrice() == null ? BigDecimal.ZERO : newTickets.getPartPrice(); +// newTickets.setTotalPrice(projectPrice.add(partPrice).add(otherPrice)); +// ticketsService.updateById(newTickets); // 查主表 DlRepairSo newSo = baseMapper.selectById(id); @@ -455,7 +510,7 @@ public class DlRepairSoServiceImpl extends ServiceImpl wareMap = filterWare.stream().collect(Collectors.toMap(DlRepairSoi::getWareId, soi -> soi)); waresList.forEach(item -> { DlRepairSoi filterSoi = wareMap.get(item.getId()); - item.setStock((item.getStock()==null?new BigDecimal(0):item.getStock()).add(new BigDecimal(filterSoi.getInCount()))); + item.setStock((item.getStock() == null ? new BigDecimal(0) : item.getStock()).add(new BigDecimal(filterSoi.getInCount()))); }); waresService.updateBatchById(waresList); - } } 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 6e944f66..c5060b16 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 @@ -340,7 +340,7 @@ public class DlTicketWaresServiceImpl extends ServiceImpl oldData = twItemService.list(new LambdaQueryWrapper().in(DlTwItem::getId, respVO.getItems().stream().map(DlTwItem::getId).collect(Collectors.toList()))); + // 分领料和退料 + // 先取出要操作的子表数据 + List oldData = twItemService.list(new LambdaQueryWrapper().and(item -> { + item.eq(DlTwItem::getTwId, respVO.getRepairSo().getTwId()) + .in(DlTwItem::getWaresId, respVO.getRepairSois().stream().map(DlRepairSoi::getGoodsId).collect(Collectors.toList())); + })); + // 要操作的库存数据 + List wares = repairWaresService.list(new LambdaQueryWrapper().in(RepairWares::getId, respVO.getRepairSois().stream().map(DlRepairSoi::getGoodsId).collect(Collectors.toList()))); + if (type.equals("02")) { // 领料 // 构造新数据 List newData = oldData.stream().map(item -> { DlTwItem dlTwItem = new DlTwItem(); @@ -464,13 +467,85 @@ public class DlTicketWaresServiceImpl extends ServiceImpl i.getGoodsId().equals(item.getWaresId())) .findFirst() .ifPresent(repairSoi -> { - dlTwItem.setWaresCouldCount(repairSoi.getGoodsCount()); - dlTwItem.setWaresStatus(repairSoi.getGoodsCount().equals(item.getWaresCount()) ? "04" : item.getWaresStatus()); + // 先取该申请配件的已领料数量,如过是第一次就是0 + Integer waresAlreadyCount = item.getWaresAlreadyCount() == null ? 0 : item.getWaresAlreadyCount(); + // 取本来的已领取数量+本次要领取的数量 + dlTwItem.setWaresAlreadyCount(repairSoi.getGoodsCount() + waresAlreadyCount); + // 可领取数量就是申请数量-已领料数量 + // item是操作的申请配件的数量,dlTwItem取最新的已领取数量 + dlTwItem.setWaresCouldCount(item.getWaresCount() - dlTwItem.getWaresAlreadyCount()); +// dlTwItem.setWaresStatus(repairSoi.getGoodsCount().equals(item.getWaresCount()) ? "04" : item.getWaresStatus()); + // 如果已领取数量等于申请数量,那这个配件就是领料完了,为01已领料,反之不变 + dlTwItem.setWaresStatus(item.getWaresCount().equals(dlTwItem.getWaresAlreadyCount()) ? "01" : item.getWaresStatus()); }); return dlTwItem; }).collect(Collectors.toList()); twItemService.updateBatchById(newData); + + // 同时操作库存扣减 + // 构造新数据 + List newWares = wares.stream().map(item -> { + RepairWares ware = new RepairWares(); + ware.setId(item.getId()); + respVO.getRepairSois().stream().filter(i -> i.getGoodsId().equals(item.getId())).findFirst().ifPresent(repairSoi -> ware.setStock(item.getStock().subtract(BigDecimal.valueOf(repairSoi.getGoodsCount())))); + return ware; + }).collect(Collectors.toList()); + // 更新库存 + repairWaresService.updateBatchById(newWares); + } else { // 退料 + // 构造新数据 + List newData = oldData.stream().map(item -> { + DlTwItem dlTwItem = new DlTwItem(); + dlTwItem.setId(item.getId()); + respVO.getRepairSois().stream() + .filter(i -> i.getGoodsId().equals(item.getWaresId())) + .findFirst() + .ifPresent(repairSoi -> { + // 取本来的已领取数量-本次要退料的数量 + dlTwItem.setWaresAlreadyCount(item.getWaresAlreadyCount() - repairSoi.getGoodsCount()); + // 可领取数量就是上次的可领取+退料数量 + // item是操作的可领取数量,repairSoi是取本次退料的数量 + dlTwItem.setWaresCouldCount(item.getWaresCouldCount() + repairSoi.getGoodsCount()); +// dlTwItem.setWaresStatus(repairSoi.getGoodsCount().equals(item.getWaresCount()) ? "04" : item.getWaresStatus()); + // 如果可领料数量等于申请数量,那这个配件就是退料完了,为03已退料,反之不变 + dlTwItem.setWaresStatus(item.getWaresCount().equals(dlTwItem.getWaresCouldCount()) ? "03" : "02"); + }); + return dlTwItem; + }).collect(Collectors.toList()); + twItemService.updateBatchById(newData); + + // 同时操作库存新增 + // 构造新数据 + List newWares = wares.stream().map(item -> { + RepairWares ware = new RepairWares(); + ware.setId(item.getId()); + respVO.getRepairSois().stream().filter(i -> i.getGoodsId().equals(item.getId())).findFirst().ifPresent(repairSoi -> ware.setStock(item.getStock().add(BigDecimal.valueOf(repairSoi.getGoodsCount())))); + return ware; + }).collect(Collectors.toList()); + // 更新库存 + repairWaresService.updateBatchById(newWares); } +// /* +// 同理,通知领料的数量可能与实际需要的数量不一致,需要重新计算状态 +// */ +// // 先查老数据,领料才需要更新 +// if (type.equals("02")) { +// List oldData = twItemService.list(new LambdaQueryWrapper().in(DlTwItem::getId, respVO.getItems().stream().map(DlTwItem::getId).collect(Collectors.toList()))); +// // 构造新数据 +// List newData = oldData.stream().map(item -> { +// DlTwItem dlTwItem = new DlTwItem(); +// dlTwItem.setId(item.getId()); +// respVO.getRepairSois().stream() +// .filter(i -> i.getGoodsId().equals(item.getWaresId())) +// .findFirst() +// .ifPresent(repairSoi -> { +// dlTwItem.setWaresCouldCount(repairSoi.getGoodsCount()); +// dlTwItem.setWaresStatus(repairSoi.getGoodsCount().equals(item.getWaresCount()) ? "04" : item.getWaresStatus()); +// }); +// return dlTwItem; +// }).collect(Collectors.toList()); +// twItemService.updateBatchById(newData); +// } // 通知维修工 // 查维修工的userId @@ -482,7 +557,7 @@ public class DlTicketWaresServiceImpl extends ServiceImpl Date: Fri, 25 Oct 2024 22:13:14 +0800 Subject: [PATCH 5/7] =?UTF-8?q?=E7=BB=B4=E4=BF=AE=E5=B7=A5=E5=8D=95?= =?UTF-8?q?=E8=BD=A6=E8=BE=86=E3=80=81=E6=96=BD=E5=B7=A5=E4=BA=BA=E5=91=98?= =?UTF-8?q?=E3=80=81=E9=94=80=E5=94=AE=E4=BA=BA=E5=91=98=E9=9D=9E=E7=A9=BA?= =?UTF-8?q?=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/DlRepairTicketsServiceImpl.java | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) 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 d99df91d..65f79d55 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 @@ -164,6 +164,30 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl { + if (ObjectUtil.isEmpty(item.getRepairIds()) || ObjectUtil.isEmpty(item.getSaleId())){ + String message = ""; + switch (item.getItemType()){ + case "01": + message += "项目:"; + break; + case "02": + message += "配件:"; + break; + case "03": + message += "其他:"; + } + message += (item.getItemName() + (ObjectUtil.isEmpty(item.getRepairIds()) ? "施工人员" : "销售人员") + "为空"); + throw exception0(500, message); + } + }); // 门店信息 Long deptId = SecurityFrameworkUtils.getLoginUserDeptId(); From 35e61c53218388b53ae8f251dff23e88529aa832 Mon Sep 17 00:00:00 2001 From: xiaofajia <1665375861@qq.com> Date: Fri, 25 Oct 2024 22:14:21 +0800 Subject: [PATCH 6/7] =?UTF-8?q?=E7=BB=86=E8=8A=82=E8=A1=A5=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/stockOperate/service/impl/DlRepairSoServiceImpl.java | 1 + 1 file changed, 1 insertion(+) 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 55f42979..16f2f991 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 @@ -189,6 +189,7 @@ public class DlRepairSoServiceImpl extends ServiceImpl Date: Sat, 26 Oct 2024 10:05:53 +0800 Subject: [PATCH 7/7] =?UTF-8?q?=E8=A1=A5=E6=AD=A3=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E7=94=B3=E8=AF=B7=E8=A1=A8=E6=95=B0=E6=8D=AE=E5=88=B0=E5=B7=A5?= =?UTF-8?q?=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/DlRepairTicketsService.java | 9 +++ .../impl/DlRepairTicketsServiceImpl.java | 60 +++++++++++++++---- 2 files changed, 56 insertions(+), 13 deletions(-) diff --git a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/service/DlRepairTicketsService.java b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/service/DlRepairTicketsService.java index cf06aad0..fbe89c2b 100644 --- a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/service/DlRepairTicketsService.java +++ b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/service/DlRepairTicketsService.java @@ -200,4 +200,13 @@ public interface DlRepairTicketsService extends IService { * @param respVO 主要有两个参数,主表ID,itemList(这个需要前端处理成子表的对象能接收的数据) **/ void addItems(DlRepairTicketsRespVO respVO); + + /** + * 用于同步一个工单的所有配件申请表的数据到维修工单,主要针对已领取数量小于申请数量的情况 + * + * @author 小李 + * @date 9:52 2024/10/26 + * @param id 维修工单ID + **/ + boolean syncTicketWaresToTicket(String id); } 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 65f79d55..3a83af0d 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 @@ -679,6 +679,12 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl status = new ArrayList<>(); status.add("01"); // 待审核 status.add("05"); // 已驳回 // 查工单所有已通过的配件申请单 List list = ticketWaresService.list(new LambdaQueryWrapper().and(item -> { - item.eq(DlTicketWares::getTicketId, respVO.getId()) + item.eq(DlTicketWares::getTicketId, id) .notIn(DlTicketWares::getStatus, status); })); // 查配件申请表的所有已领取数量小于申请数量的子表信息 @@ -825,12 +851,12 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl waresId = twItems.stream().map(DlTwItem::getWaresId).collect(Collectors.toSet()); List items = titemService.list(new LambdaQueryWrapper().and(item -> { - item.eq(DlRepairTitem::getTicketId, respVO.getId()) + item.eq(DlRepairTitem::getTicketId, id) .eq(DlRepairTitem::getItemType, "02") .in(DlRepairTitem::getPartId, waresId); })); // 同一个配件可能申请过多次,属于是一个工单配件可能是对应多个申请表配件 - List updateItems = items.stream().map(item -> { + List AllItems = items.stream().map(item -> { DlRepairTitem titem = new DlRepairTitem(); titem.setId(item.getId()); List wares = twItems.stream().filter(i -> i.getWaresId().equals(item.getPartId())).collect(Collectors.toList()); @@ -841,19 +867,27 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl delItems = AllItems.stream().filter(item -> item.getItemCount() == 0).collect(Collectors.toList()); + if (CollectionUtil.isNotEmpty(delItems)){ + // 删除需要删的 + titemService.removeBatchByIds(delItems); + Set delIds = delItems.stream().map(DlRepairTitem::getId).collect(Collectors.toSet()); + // 得到需要改的 + List updateItems = AllItems.stream().filter(item -> delIds.contains(item.getId())).collect(Collectors.toList()); + if (CollectionUtil.isNotEmpty(updateItems)){ + titemService.updateBatchById(updateItems); + } + }else { + // 没有需要删的就是全部都需要改 + titemService.updateBatchById(AllItems); + } // 重新计算维修工单 - boolean flag = computeTicket(respVO.getId()); - if (!flag){ - throw exception0(500, "系统异常"); - } + return computeTicket(id); } - - // 通知服务顾问 - DlRepairTickets tickets = baseMapper.selectById(respVO.getId()); - repairWorkerService.sentMessage(Long.valueOf(tickets.getAdviserId()), "您有新的工单可以出厂检验"); + return true; } /**