From 01678fda6af9029bafb69b2fd16df40e128000f4 Mon Sep 17 00:00:00 2001 From: zt Date: Fri, 15 Aug 2025 03:04:19 +0800 Subject: [PATCH] =?UTF-8?q?=E7=89=A9=E8=B5=84=E5=92=8C=E8=AE=BE=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BusMaterialbatchdemandplanController.java | 2 - .../controller/BusMrpBaseController.java | 12 ++ .../controller/BusPurchaseDocController.java | 29 ++++ .../dromara/cailiaoshebei/domain/BusLtn.java | 3 +- .../cailiaoshebei/domain/BusPurchaseDoc.java | 5 + .../cailiaoshebei/domain/bo/BusLtnBo.java | 4 +- .../bo/BusMaterialbatchdemandplanBo.java | 8 + .../domain/dto/BusLtnListDto.java | 4 +- .../BusMaterialbatchdemandplanExportDto.java | 60 ++++++++ .../domain/dto/BusMrpExportDto.java | 43 ++++++ .../cailiaoshebei/domain/vo/BusLtnVo.java | 8 +- .../domain/vo/BusPurchaseDocVo.java | 10 ++ .../service/IBusMrpBaseService.java | 6 + .../service/IBusPurchaseDocService.java | 8 + .../service/impl/BusLtnServiceImpl.java | 35 ++++- ...BusMaterialbatchdemandplanServiceImpl.java | 2 + .../service/impl/BusMrpBaseServiceImpl.java | 67 +++++---- .../impl/BusPurchaseDocServiceImpl.java | 141 ++++++++++++++++-- .../controller/DesVolumeFileController.java | 1 + .../DesVolumeFileViewerController.java | 106 +++++++++++++ .../design/domain/DesVolumeFileViewer.java | 12 ++ .../domain/bo/DesVolumeFileViewerBo.java | 43 ++++++ .../DesVolumeFileViewerVo.java | 19 +++ .../service/IDesVolumeFileViewerService.java | 65 +++++++- .../impl/DesDesignChangeServiceImpl.java | 4 + .../impl/DesVolumeFileViewerServiceImpl.java | 129 +++++++++++++++- .../domain/MatMaterialReceiveItem.java | 5 + .../MatMaterialReceiveItemDto.java | 6 + .../service/IMatMaterialsService.java | 8 + .../impl/MatMaterialReceiveServiceImpl.java | 30 +++- .../service/impl/MatMaterialsServiceImpl.java | 51 ++++++- 31 files changed, 858 insertions(+), 68 deletions(-) create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/dto/BusMaterialbatchdemandplanExportDto.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/dto/BusMrpExportDto.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/DesVolumeFileViewerController.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/bo/DesVolumeFileViewerBo.java diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/controller/BusMaterialbatchdemandplanController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/controller/BusMaterialbatchdemandplanController.java index e3a978a9..7a04faeb 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/controller/BusMaterialbatchdemandplanController.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/controller/BusMaterialbatchdemandplanController.java @@ -183,6 +183,4 @@ public class BusMaterialbatchdemandplanController extends BaseController { // return toAjax(busMaterialbatchdemandplanService.deleteWithValidByIds(List.of(ids), true)); // } - - } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/controller/BusMrpBaseController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/controller/BusMrpBaseController.java index 9e9e1a86..33923cc6 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/controller/BusMrpBaseController.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/controller/BusMrpBaseController.java @@ -7,6 +7,7 @@ import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.constraints.*; import cn.dev33.satoken.annotation.SaCheckPermission; import org.dromara.cailiaoshebei.domain.dto.BusMrpDto; +import org.dromara.cailiaoshebei.domain.dto.BusMrpExportDto; import org.dromara.cailiaoshebei.domain.vo.BusMrpVo; import org.dromara.design.domain.dto.desCollect.DesCollectBatchDto; import org.dromara.design.domain.vo.DesCollectVo; @@ -117,4 +118,15 @@ public class BusMrpBaseController extends BaseController { } + /** + * 导入物资需求批次计划 + */ + @SaCheckPermission("cailiaoshebei:mrpBase:add") + @Log(title = "物资-批次需求计划基础信息", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping("/import") + public R importData(BusMrpExportDto dto) { + return toAjax(busMrpBaseService.importData(dto)); + } + } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/controller/BusPurchaseDocController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/controller/BusPurchaseDocController.java index 24005520..3a464ff5 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/controller/BusPurchaseDocController.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/controller/BusPurchaseDocController.java @@ -1,11 +1,18 @@ package org.dromara.cailiaoshebei.controller; +import java.util.ArrayList; import java.util.List; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.constraints.*; import cn.dev33.satoken.annotation.SaCheckPermission; +import org.dromara.cailiaoshebei.domain.BusPlanDocAssociation; +import org.dromara.cailiaoshebei.domain.bo.BusMaterialbatchdemandplanBo; +import org.dromara.cailiaoshebei.domain.vo.BusMaterialbatchdemandplanVo; +import org.dromara.cailiaoshebei.service.IBusMaterialbatchdemandplanService; +import org.dromara.cailiaoshebei.service.IBusPlanDocAssociationService; import org.springframework.web.bind.annotation.*; import org.springframework.validation.annotation.Validated; import org.dromara.common.idempotent.annotation.RepeatSubmit; @@ -36,6 +43,10 @@ public class BusPurchaseDocController extends BaseController { private final IBusPurchaseDocService busPurchaseDocService; + private final IBusMaterialbatchdemandplanService materialbatchdemandplanService; + + private final IBusPlanDocAssociationService planDocAssociationService; + /** * 查询物资-采购联系单列表 */ @@ -102,4 +113,22 @@ public class BusPurchaseDocController extends BaseController { @PathVariable Long[] ids) { return toAjax(busPurchaseDocService.deleteWithValidByIds(List.of(ids), true)); } + + + /** + * 查询采购单关联的计划 + */ + @GetMapping("/planList/{id}") + public R> list(@NotNull(message = "主键不能为空") + @PathVariable("id") Long id) { + List list = planDocAssociationService.list(Wrappers.lambdaQuery(BusPlanDocAssociation.class) + .eq(BusPlanDocAssociation::getDocId, id)); + List list1 = list.stream().map(BusPlanDocAssociation::getPlanId).toList(); + if (list1.isEmpty()) { + return R.ok(new ArrayList<>()); + } + BusMaterialbatchdemandplanBo bo = new BusMaterialbatchdemandplanBo(); + bo.setIds(list1); + return R.ok(materialbatchdemandplanService.queryList(bo)); + } } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/BusLtn.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/BusLtn.java index 243d14df..975d6602 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/BusLtn.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/BusLtn.java @@ -6,6 +6,7 @@ import lombok.Data; import lombok.EqualsAndHashCode; import java.io.Serial; +import java.math.BigDecimal; /** * 物资-物流单号对象 bus_ltn @@ -45,7 +46,7 @@ public class BusLtn extends BaseEntity { /** * 数量 */ - private Long num; + private BigDecimal num; /** * 物流单号 diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/BusPurchaseDoc.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/BusPurchaseDoc.java index 07168249..17a61181 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/BusPurchaseDoc.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/BusPurchaseDoc.java @@ -33,6 +33,11 @@ public class BusPurchaseDoc extends BaseEntity { */ private Long projectId; + /** + * 1-采购单,2-补货单 + */ + private String docType; + /** * 采购单编号 */ diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/bo/BusLtnBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/bo/BusLtnBo.java index d07e0706..9056449d 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/bo/BusLtnBo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/bo/BusLtnBo.java @@ -9,6 +9,8 @@ import lombok.Data; import lombok.EqualsAndHashCode; import jakarta.validation.constraints.*; +import java.math.BigDecimal; + /** * 物资-物流单号业务对象 bus_ltn * @@ -46,7 +48,7 @@ public class BusLtnBo extends BaseEntity { /** * 数量 */ - private Long num; + private BigDecimal num; /** * 物流单号 diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/bo/BusMaterialbatchdemandplanBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/bo/BusMaterialbatchdemandplanBo.java index 8eea5600..e92fe127 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/bo/BusMaterialbatchdemandplanBo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/bo/BusMaterialbatchdemandplanBo.java @@ -11,6 +11,8 @@ import jakarta.validation.constraints.*; import java.time.LocalDate; import java.util.Date; +import java.util.List; + import com.fasterxml.jackson.annotation.JsonFormat; /** @@ -105,4 +107,10 @@ public class BusMaterialbatchdemandplanBo extends BaseEntity { * 质量标准 */ private String qs; + + + /** + * 主键集合 + */ + private List ids; } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/dto/BusLtnListDto.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/dto/BusLtnListDto.java index 46aaa5be..cfdffc45 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/dto/BusLtnListDto.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/dto/BusLtnListDto.java @@ -10,6 +10,8 @@ import org.dromara.common.core.validate.AddGroup; import org.dromara.common.core.validate.EditGroup; import org.dromara.common.mybatis.core.domain.BaseEntity; +import java.math.BigDecimal; + /** * 物资-物流单号业务对象 bus_ltn * @@ -28,7 +30,7 @@ public class BusLtnListDto{ /** * 数量 */ - private Long num; + private BigDecimal num; /** * 物流单号 diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/dto/BusMaterialbatchdemandplanExportDto.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/dto/BusMaterialbatchdemandplanExportDto.java new file mode 100644 index 00000000..0091e43c --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/dto/BusMaterialbatchdemandplanExportDto.java @@ -0,0 +1,60 @@ +package org.dromara.cailiaoshebei.domain.dto; + +import io.github.linpeilie.annotations.AutoMapper; +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.cailiaoshebei.domain.BusMaterialbatchdemandplan; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.mybatis.core.domain.BaseEntity; + +import java.time.LocalDate; +import java.util.List; + +/** + * 物资-批次需求计划业务对象 bus_materialbatchdemandplan + * + * @author Lion Li + * @date 2025-08-02 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = BusMaterialbatchdemandplan.class, reverseConvertGenerate = false) +public class BusMaterialbatchdemandplanExportDto extends BaseEntity { + + /** + * 设备材料名称 + */ + private String name; + + /** + * 规格型号 + */ + private String specification; + + /** + * 计量单位 + */ + private String unit; + + /** + * 需求数量 + */ + private Long demandQuantity; + + /** + * 质量标准 + */ + private String qs; + + /** + * 计划到场时间 + */ + private LocalDate arrivalTime; + + /** + * 备注 + */ + private String remark; + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/dto/BusMrpExportDto.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/dto/BusMrpExportDto.java new file mode 100644 index 00000000..4aa80385 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/dto/BusMrpExportDto.java @@ -0,0 +1,43 @@ +package org.dromara.cailiaoshebei.domain.dto; + +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import org.dromara.cailiaoshebei.domain.bo.BusMaterialbatchdemandplanBo; +import org.dromara.cailiaoshebei.domain.bo.BusMrpBaseBo; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.springframework.web.multipart.MultipartFile; + +import java.time.LocalDate; +import java.util.List; + +@Data +public class BusMrpExportDto { + + /** + * 项目ID + */ + @NotNull(message = "项目ID不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long projectId; + + /** + * 计划编号 + */ + @NotBlank(message = "计划编号不能为空", groups = { AddGroup.class, EditGroup.class }) + private String planCode; + + /** + * 物资类别 + */ + private String matCat; + + /** + * 编制日期 + */ + private LocalDate preparedDate; + + + + private MultipartFile file; +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/vo/BusLtnVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/vo/BusLtnVo.java index 29fdc0d0..6dbad36d 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/vo/BusLtnVo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/vo/BusLtnVo.java @@ -10,6 +10,7 @@ import lombok.Data; import java.io.Serial; import java.io.Serializable; +import java.math.BigDecimal; import java.util.Date; @@ -52,11 +53,16 @@ public class BusLtnVo implements Serializable { @ExcelProperty(value = "计划id") private Long planId; + /** + * 物资名称 + */ + private String name; + /** * 数量 */ @ExcelProperty(value = "数量") - private Long num; + private BigDecimal num; /** * 物流单号 diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/vo/BusPurchaseDocVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/vo/BusPurchaseDocVo.java index ea4080ec..bf8b27eb 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/vo/BusPurchaseDocVo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/vo/BusPurchaseDocVo.java @@ -154,6 +154,16 @@ public class BusPurchaseDocVo implements Serializable { */ private Long mrpBaseId; + /** + * 计划编号 + */ + private String planCode; + + /** + * 1-采购单,2-补货单 + */ + private String docType; + /** * 关联计划 */ diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/IBusMrpBaseService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/IBusMrpBaseService.java index 995dfc63..e3754f63 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/IBusMrpBaseService.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/IBusMrpBaseService.java @@ -1,6 +1,7 @@ package org.dromara.cailiaoshebei.service; import org.dromara.cailiaoshebei.domain.dto.BusMrpDto; +import org.dromara.cailiaoshebei.domain.dto.BusMrpExportDto; import org.dromara.cailiaoshebei.domain.vo.BusMrpBaseVo; import org.dromara.cailiaoshebei.domain.bo.BusMrpBaseBo; import org.dromara.cailiaoshebei.domain.BusMrpBase; @@ -76,4 +77,9 @@ public interface IBusMrpBaseService extends IService{ * 批量新增或修改物资-批次需求计划 */ Boolean batchAddOrUpdate(BusMrpDto dto); + + /** + * 导入物资需求批次计划 + */ + Boolean importData(BusMrpExportDto dto); } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/IBusPurchaseDocService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/IBusPurchaseDocService.java index ddc97f0f..6257bc15 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/IBusPurchaseDocService.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/IBusPurchaseDocService.java @@ -7,7 +7,10 @@ import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.PageQuery; import com.baomidou.mybatisplus.extension.service.IService; + +import java.math.BigDecimal; import java.util.Collection; +import java.util.HashMap; import java.util.List; /** @@ -67,4 +70,9 @@ public interface IBusPurchaseDocService extends IService{ * @return 是否删除成功 */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + /** + * 创建补货采购单 + */ + void create(Long id, HashMap map); } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/impl/BusLtnServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/impl/BusLtnServiceImpl.java index d027335e..f690a3e7 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/impl/BusLtnServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/impl/BusLtnServiceImpl.java @@ -1,8 +1,13 @@ package org.dromara.cailiaoshebei.service.impl; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import jakarta.annotation.Resource; import org.dromara.cailiaoshebei.domain.dto.BusLtnDto; +import org.dromara.cailiaoshebei.domain.dto.BusLtnListDto; import org.dromara.cailiaoshebei.domain.vo.BusPurchaseDocVo; +import org.dromara.cailiaoshebei.service.IBusMaterialbatchdemandplanService; import org.dromara.cailiaoshebei.service.IBusPurchaseDocService; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.utils.MapstructUtils; @@ -13,6 +18,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.dromara.cailiaoshebei.domain.bo.BusLtnBo; import org.dromara.cailiaoshebei.domain.vo.BusLtnVo; @@ -20,6 +26,7 @@ import org.dromara.cailiaoshebei.domain.BusLtn; import org.dromara.cailiaoshebei.mapper.BusLtnMapper; import org.dromara.cailiaoshebei.service.IBusLtnService; +import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Collection; @@ -38,6 +45,12 @@ public class BusLtnServiceImpl extends ServiceImpl impleme private final IBusPurchaseDocService purchaseDocService; + private final IBusMaterialbatchdemandplanService planService; + + @Resource + @Lazy + private IBusLtnService busLtnService; + /** * 查询物资-物流单号 * @@ -60,6 +73,9 @@ public class BusLtnServiceImpl extends ServiceImpl impleme public TableDataInfo queryPageList(BusLtnBo bo, PageQuery pageQuery) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + result.getRecords().forEach(e -> { + e.setName(planService.queryById(e.getPlanId()).getName()); + }); return TableDataInfo.build(result); } @@ -146,10 +162,19 @@ public class BusLtnServiceImpl extends ServiceImpl impleme if (busPurchaseDocVo == null) { throw new ServiceException("采购单不存在"); } - - - - - return null; + busLtnService.getBaseMapper().delete(Wrappers.lambdaQuery(BusLtn.class) + .eq(BusLtn::getDocId, dto.getDocId())); + ArrayList busLtns = new ArrayList<>(); + for (BusLtnListDto ltnListDto : dto.getList()) { + BusLtn busLtn = BeanUtil.copyProperties(ltnListDto, BusLtn.class); + busLtn.setProjectId(busPurchaseDocVo.getProjectId()); + busLtn.setDocId(dto.getDocId()); + busLtns.add(busLtn); + } + boolean save = true; + if(CollectionUtil.isNotEmpty(busLtns)){ + save = busLtnService.saveBatch(busLtns); + } + return save; } } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/impl/BusMaterialbatchdemandplanServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/impl/BusMaterialbatchdemandplanServiceImpl.java index f95d5778..8f5545bb 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/impl/BusMaterialbatchdemandplanServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/impl/BusMaterialbatchdemandplanServiceImpl.java @@ -1,6 +1,7 @@ package org.dromara.cailiaoshebei.service.impl; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; @@ -113,6 +114,7 @@ public class BusMaterialbatchdemandplanServiceImpl extends ServiceImpl voList = planservice.queryList(planBo); + List voList = planservice.queryList(planBo); busMrpVo.setMrpBaseBo(busMrpBaseVo); busMrpVo.setPlanList(voList); @@ -142,7 +147,7 @@ public class BusMrpBaseServiceImpl extends ServiceImpl ids, Boolean isValid) { - if(isValid){ + if (isValid) { //TODO 做一些业务上的校验,判断是否需要校验 } planservice.remove(Wrappers.lambdaQuery() - .in(BusMaterialbatchdemandplan::getMrpBaseId,ids)); + .in(BusMaterialbatchdemandplan::getMrpBaseId, ids)); return baseMapper.deleteByIds(ids) > 0; } @@ -173,10 +178,10 @@ public class BusMrpBaseServiceImpl extends ServiceImpllambdaQuery() - .eq(BusMaterialbatchdemandplan::getMrpBaseId,convert.getId())); + .eq(BusMaterialbatchdemandplan::getMrpBaseId, convert.getId())); - if(CollectionUtil.isNotEmpty(dto.getPlanList())){ - List plans = MapstructUtils.convert(dto.getPlanList(), BusMaterialbatchdemandplan.class); + if (CollectionUtil.isNotEmpty(dto.getPlanList())) { + List plans = MapstructUtils.convert(dto.getPlanList(), BusMaterialbatchdemandplan.class); plans.forEach(item -> { item.setMrpBaseId(convert.getId()); item.setProjectId(convert.getProjectId()); @@ -186,6 +191,31 @@ public class BusMrpBaseServiceImpl extends ServiceImpl dtoList = ExcelDynamicReader.readExcel(dto.getFile(), 1, 1, 7, BusMaterialbatchdemandplanExportDto.class); + BusMrpBase busMrpBase = BeanUtil.copyProperties(dto, BusMrpBase.class); + save(busMrpBase); + + ArrayList busMaterialbatchdemandplans = new ArrayList<>(); + + for (BusMaterialbatchdemandplanExportDto plan : dtoList) { + BusMaterialbatchdemandplan plan1 = BeanUtil.copyProperties(plan, BusMaterialbatchdemandplan.class); + plan1.setMrpBaseId(busMrpBase.getId()); + plan1.setProjectId(busMrpBase.getProjectId()); + + busMaterialbatchdemandplans.add(plan1); + } + planservice.saveBatch(busMaterialbatchdemandplans); + } catch (Exception e) { + throw new RuntimeException(e); + } + return true; + } + /** * 总体流程监听(例如: 草稿,撤销,退回,作废,终止,已完成,单任务完成等) * 正常使用只需#processEvent.flowCode=='leave1' @@ -232,24 +262,5 @@ public class BusMrpBaseServiceImpl extends ServiceImpl implements IBusPurchaseDocService { private final BusPurchaseDocMapper baseMapper; private final IBusPlanDocAssociationService planDocAssociationService; + private final IBusMaterialbatchdemandplanService materialbatchdemandplanService; + + private final IBusMrpBaseService mrpBaseService; + + /** * 查询物资-采购联系单 * @@ -47,7 +68,7 @@ public class BusPurchaseDocServiceImpl extends ServiceImpl queryPageList(BusPurchaseDocBo bo, PageQuery pageQuery) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + result.getRecords().forEach(v -> { + v.setPlanCode(mrpBaseService.getById(v.getMrpBaseId()).getPlanCode()); + }); return TableDataInfo.build(result); } @@ -116,6 +140,11 @@ public class BusPurchaseDocServiceImpl extends ServiceImpl 0; @@ -123,14 +152,13 @@ public class BusPurchaseDocServiceImpl extends ServiceImpl convert = MapstructUtils.convert(bo.getAssociationList(), BusPlanDocAssociation.class); - convert.forEach(item -> { - item.setProjectId(add.getProjectId()); - item.setDocId(add.getId()); - }); - planDocAssociationService.saveBatch(convert); - } + List convert = MapstructUtils.convert(bo.getAssociationList(), BusPlanDocAssociation.class); + convert.forEach(item -> { + item.setProjectId(add.getProjectId()); + item.setDocId(add.getId()); + }); + planDocAssociationService.saveBatch(convert); + return flag; } @@ -149,7 +177,7 @@ public class BusPurchaseDocServiceImpl extends ServiceImpl convert = MapstructUtils.convert(bo.getAssociationList(), BusPlanDocAssociation.class); convert.forEach(item -> { item.setProjectId(update.getProjectId()); @@ -163,7 +191,7 @@ public class BusPurchaseDocServiceImpl extends ServiceImpl ids, Boolean isValid) { - if(isValid){ + if (isValid) { //TODO 做一些业务上的校验,判断是否需要校验 } return baseMapper.deleteByIds(ids) > 0; } + + + @Override + @Async + @Transactional(rollbackFor = Exception.class) + public void create(Long id, HashMap map) { + BusPurchaseDoc busPurchaseDoc = baseMapper.selectById(id); + if (busPurchaseDoc == null) { + return; + } + if (CollectionUtil.isEmpty(map.keySet())) { + return; + } + LocalDateTime now = LocalDateTime.now(); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss"); // 年月日时分秒格式 + String dateTimeStr = now.format(formatter); + busPurchaseDoc.setId(null); + busPurchaseDoc.setDocCode("BH-" + busPurchaseDoc.getDocCode() + "-" + dateTimeStr); + busPurchaseDoc.setFeedbackUrl(null); + busPurchaseDoc.setStatus(BusinessStatusEnum.DRAFT.getStatus()); + busPurchaseDoc.setDocType("2"); + save(busPurchaseDoc); + + //创建计划 + ArrayList busPlanDocAssociations = new ArrayList<>(); + for (Long planId : map.keySet()) { + BusPlanDocAssociation busPlanDocAssociation = new BusPlanDocAssociation(); + busPlanDocAssociation.setProjectId(busPurchaseDoc.getProjectId()); + busPlanDocAssociation.setPlanId(planId); + busPlanDocAssociation.setDocId(busPurchaseDoc.getId()); + + busPlanDocAssociations.add(busPlanDocAssociation); + } + planDocAssociationService.saveBatch(busPlanDocAssociations); + } + + /** + * 总体流程监听(例如: 草稿,撤销,退回,作废,终止,已完成,单任务完成等) + * 正常使用只需#processEvent.flowCode=='leave1' + * 示例为了方便则使用startsWith匹配了全部示例key + * + * @param processEvent 参数 + */ + @EventListener(condition = "#processEvent.flowCode.endsWith('purchaseDoc')") + public void processHandler(ProcessEvent processEvent) { + log.info("收资清单审核任务执行了{}", processEvent.toString()); + BusPurchaseDoc purchaseDoc = this.getById(Convert.toLong(processEvent.getBusinessId())); + purchaseDoc.setStatus(processEvent.getStatus()); + if (processEvent.getSubmit()) { + purchaseDoc.setStatus(BusinessStatusEnum.WAITING.getStatus()); + purchaseDoc.setPreparedDate(LocalDate.now()); + } + this.updateById(purchaseDoc); + + } + + /** + * 执行任务创建监听 + * 示例:也可通过 @EventListener(condition = "#processTaskEvent.flowCode=='leave1'")进行判断 + * 在方法中判断流程节点key + * if ("xxx".equals(processTaskEvent.getNodeCode())) { + * //执行业务逻辑 + * } + * + * @param processTaskEvent 参数 + */ + @EventListener(condition = "#processTaskEvent.flowCode.endsWith('purchaseDoc')") + public void processTaskHandler(ProcessTaskEvent processTaskEvent) { + log.info("收资清单审核任务创建了{}", processTaskEvent.toString()); + } + + /** + * 监听删除流程事件 + * 正常使用只需#processDeleteEvent.flowCode=='leave1' + * 示例为了方便则使用startsWith匹配了全部示例key + * + * @param processDeleteEvent 参数 + */ + @EventListener(condition = "#processDeleteEvent.flowCode.endsWith('purchaseDoc')") + public void processDeleteHandler(ProcessDeleteEvent processDeleteEvent) { + log.info("监听删除流程事件,收资清单审核任务执行了{}", processDeleteEvent.toString()); + } + } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/DesVolumeFileController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/DesVolumeFileController.java index c710c159..8c59d602 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/DesVolumeFileController.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/DesVolumeFileController.java @@ -66,4 +66,5 @@ public class DesVolumeFileController extends BaseController { @PathVariable Long[] ids) { return toAjax(desVolumeFileService.deleteByIds(List.of(ids))); } + } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/DesVolumeFileViewerController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/DesVolumeFileViewerController.java new file mode 100644 index 00000000..106ec940 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/DesVolumeFileViewerController.java @@ -0,0 +1,106 @@ +package org.dromara.design.controller; +import java.util.List; + +import lombok.RequiredArgsConstructor; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.*; +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.dromara.design.domain.vo.volumefileviewer.DesVolumeFileViewerVo; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.web.core.BaseController; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.excel.utils.ExcelUtil; +import org.dromara.design.domain.bo.DesVolumeFileViewerBo; +import org.dromara.design.service.IDesVolumeFileViewerService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 卷册文件查阅人 + * + * @author lilemy + * @date 2025-08-14 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/design/volumeFileViewer") +public class DesVolumeFileViewerController extends BaseController { + + private final IDesVolumeFileViewerService desVolumeFileViewerService; + + /** + * 查询卷册文件查阅人列表 + */ + @SaCheckPermission("design:volumeFileViewer:list") + @GetMapping("/list") + public TableDataInfo list(DesVolumeFileViewerBo bo, PageQuery pageQuery) { + return desVolumeFileViewerService.queryPageList(bo, pageQuery); + } + + /** + * 导出卷册文件查阅人列表 + */ + @SaCheckPermission("design:volumeFileViewer:export") + @Log(title = "卷册文件查阅人", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(DesVolumeFileViewerBo bo, HttpServletResponse response) { + List list = desVolumeFileViewerService.queryList(bo); + ExcelUtil.exportExcel(list, "卷册文件查阅人", DesVolumeFileViewerVo.class, response); + } + + /** + * 获取卷册文件查阅人详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("design:volumeFileViewer:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(desVolumeFileViewerService.queryById(id)); + } + + /** + * 新增卷册文件查阅人 + */ + @SaCheckPermission("design:volumeFileViewer:add") + @Log(title = "卷册文件查阅人", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody DesVolumeFileViewerBo bo) { + return toAjax(desVolumeFileViewerService.insertByBo(bo)); + } + + /** + * 修改卷册文件查阅人 + */ + @SaCheckPermission("design:volumeFileViewer:edit") + @Log(title = "卷册文件查阅人", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody DesVolumeFileViewerBo bo) { + return toAjax(desVolumeFileViewerService.updateByBo(bo)); + } + + /** + * 删除卷册文件查阅人 + * + * @param ids 主键串 + */ + @SaCheckPermission("design:volumeFileViewer:remove") + @Log(title = "卷册文件查阅人", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(desVolumeFileViewerService.deleteWithValidByIds(List.of(ids), true)); + } +} + + diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/DesVolumeFileViewer.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/DesVolumeFileViewer.java index 08b1c02d..d56ba3b0 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/DesVolumeFileViewer.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/DesVolumeFileViewer.java @@ -6,6 +6,7 @@ import lombok.Data; import java.io.Serial; import java.io.Serializable; +import java.time.LocalDateTime; /** * 卷册文件查阅人对象 des_volume_file_viewer @@ -31,6 +32,11 @@ public class DesVolumeFileViewer implements Serializable { */ private Long volumeCatalogId; + /** + * 卷册文件ID + */ + private Long volumeFileId; + /** * 用户ID */ @@ -41,4 +47,10 @@ public class DesVolumeFileViewer implements Serializable { */ private String status; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/bo/DesVolumeFileViewerBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/bo/DesVolumeFileViewerBo.java new file mode 100644 index 00000000..4ec98c7d --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/bo/DesVolumeFileViewerBo.java @@ -0,0 +1,43 @@ +package org.dromara.design.domain.bo; + + +import org.dromara.design.domain.DesVolumeFileViewer; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; + +/** + * 卷册文件查阅人业务对象 des_volume_file_viewer + * + * @author lilemy + * @date 2025-08-14 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = DesVolumeFileViewer.class, reverseConvertGenerate = false) +public class DesVolumeFileViewerBo extends BaseEntity { + + /** + * 主键ID + */ + @NotNull(message = "主键ID不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 卷册文件ID + */ + @NotNull(message = "卷册文件ID不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long volumeFileId; + + + private Long userId; + + + private String status; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/vo/volumefileviewer/DesVolumeFileViewerVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/vo/volumefileviewer/DesVolumeFileViewerVo.java index 92e80fdf..40e85c40 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/vo/volumefileviewer/DesVolumeFileViewerVo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/vo/volumefileviewer/DesVolumeFileViewerVo.java @@ -1,15 +1,22 @@ package org.dromara.design.domain.vo.volumefileviewer; +import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; +import org.dromara.common.translation.annotation.Translation; +import org.dromara.common.translation.constant.TransConstant; +import org.dromara.design.domain.DesPrelimScheme; +import org.dromara.design.domain.DesVolumeFileViewer; import java.io.Serial; import java.io.Serializable; +import java.time.LocalDateTime; /** * @author lilemy * @date 2025-07-30 19:52 */ @Data +@AutoMapper(target = DesVolumeFileViewer.class) public class DesVolumeFileViewerVo implements Serializable { @Serial @@ -30,8 +37,20 @@ public class DesVolumeFileViewerVo implements Serializable { */ private Long userId; + /** + * 用户ID + */ + @Translation(type = TransConstant.USER_ID_TO_NAME, mapper = "userId") + private String userName; + + /** * 状态(1未查阅 2已查阅) */ private String status; + + /** + * 创建时间 + */ + private LocalDateTime createTime; } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/IDesVolumeFileViewerService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/IDesVolumeFileViewerService.java index 5b79b861..c49101a5 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/IDesVolumeFileViewerService.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/IDesVolumeFileViewerService.java @@ -1,14 +1,73 @@ package org.dromara.design.service; -import com.baomidou.mybatisplus.extension.service.IService; + import org.dromara.design.domain.DesVolumeFileViewer; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.dromara.design.domain.bo.DesVolumeFileViewerBo; +import org.dromara.design.domain.vo.volumefileviewer.DesVolumeFileViewerVo; + +import java.util.Collection; +import java.util.List; /** * 卷册文件查阅人Service接口 * * @author lilemy - * @date 2025-07-30 + * @date 2025-08-14 */ -public interface IDesVolumeFileViewerService extends IService { +public interface IDesVolumeFileViewerService extends IService{ + /** + * 查询卷册文件查阅人 + * + * @param id 主键 + * @return 卷册文件查阅人 + */ + DesVolumeFileViewerVo queryById(Long id); + + /** + * 分页查询卷册文件查阅人列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 卷册文件查阅人分页列表 + */ + TableDataInfo queryPageList(DesVolumeFileViewerBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的卷册文件查阅人列表 + * + * @param bo 查询条件 + * @return 卷册文件查阅人列表 + */ + List queryList(DesVolumeFileViewerBo bo); + + /** + * 新增卷册文件查阅人 + * + * @param bo 卷册文件查阅人 + * @return 是否新增成功 + */ + Boolean insertByBo(DesVolumeFileViewerBo bo); + + /** + * 修改卷册文件查阅人 + * + * @param bo 卷册文件查阅人 + * @return 是否修改成功 + */ + Boolean updateByBo(DesVolumeFileViewerBo bo); + + /** + * 校验并批量删除卷册文件查阅人信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); } + diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/impl/DesDesignChangeServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/impl/DesDesignChangeServiceImpl.java index 29477359..8055f09e 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/impl/DesDesignChangeServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/impl/DesDesignChangeServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; @@ -217,6 +218,9 @@ public class DesDesignChangeServiceImpl extends ServiceImpl - implements IDesVolumeFileViewerService { +public class DesVolumeFileViewerServiceImpl extends ServiceImpl implements IDesVolumeFileViewerService { + private final DesVolumeFileViewerMapper baseMapper; + + /** + * 查询卷册文件查阅人 + * + * @param id 主键 + * @return 卷册文件查阅人 + */ + @Override + public DesVolumeFileViewerVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 分页查询卷册文件查阅人列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 卷册文件查阅人分页列表 + */ + @Override + public TableDataInfo queryPageList(DesVolumeFileViewerBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的卷册文件查阅人列表 + * + * @param bo 查询条件 + * @return 卷册文件查阅人列表 + */ + @Override + public List queryList(DesVolumeFileViewerBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(DesVolumeFileViewerBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByDesc(DesVolumeFileViewer::getId); + lqw.eq(bo.getVolumeFileId() != null, DesVolumeFileViewer::getVolumeFileId, bo.getVolumeFileId()); + lqw.eq(bo.getUserId() != null, DesVolumeFileViewer::getUserId, bo.getUserId()); + lqw.eq(StringUtils.isNotBlank(bo.getStatus()), DesVolumeFileViewer::getStatus, bo.getStatus()); + return lqw; + } + + /** + * 新增卷册文件查阅人 + * + * @param bo 卷册文件查阅人 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(DesVolumeFileViewerBo bo) { + DesVolumeFileViewer add = MapstructUtils.convert(bo, DesVolumeFileViewer.class); + validEntityBeforeSave(add); + add.setUserId(LoginHelper.getUserId()); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改卷册文件查阅人 + * + * @param bo 卷册文件查阅人 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(DesVolumeFileViewerBo bo) { + DesVolumeFileViewer update = MapstructUtils.convert(bo, DesVolumeFileViewer.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(DesVolumeFileViewer entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除卷册文件查阅人信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } } + + diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/domain/MatMaterialReceiveItem.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/domain/MatMaterialReceiveItem.java index c31b900e..0062099b 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/domain/MatMaterialReceiveItem.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/domain/MatMaterialReceiveItem.java @@ -74,4 +74,9 @@ public class MatMaterialReceiveItem extends BaseEntity { */ private String remark; + /** + * 需求计划Id + */ + private Long planId; + } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/domain/dto/materialreceiveitem/MatMaterialReceiveItemDto.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/domain/dto/materialreceiveitem/MatMaterialReceiveItemDto.java index c1c386fd..96649fda 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/domain/dto/materialreceiveitem/MatMaterialReceiveItemDto.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/domain/dto/materialreceiveitem/MatMaterialReceiveItemDto.java @@ -55,4 +55,10 @@ public class MatMaterialReceiveItemDto { */ private String remark; + + /** + * 需求计划Id + */ + private Long planId; + } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/service/IMatMaterialsService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/service/IMatMaterialsService.java index 22def9ac..9c21a022 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/service/IMatMaterialsService.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/service/IMatMaterialsService.java @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.materials.domain.MatMaterials; +import org.dromara.materials.domain.dto.materialreceiveitem.MatMaterialReceiveItemDto; import org.dromara.materials.domain.dto.materials.MatMaterialsCreateReq; import org.dromara.materials.domain.dto.materials.MatMaterialsGisReq; import org.dromara.materials.domain.dto.materials.MatMaterialsQueryReq; @@ -105,4 +106,11 @@ public interface IMatMaterialsService extends IService { * @return 材料分页对象视图 */ Page getMaterialsVoPage(Page materialsPage); + + /** + * 生成材料并入库 + */ + void create(Long projectId, List itemList); + + } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/service/impl/MatMaterialReceiveServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/service/impl/MatMaterialReceiveServiceImpl.java index f53d643c..83979303 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/service/impl/MatMaterialReceiveServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/service/impl/MatMaterialReceiveServiceImpl.java @@ -10,6 +10,8 @@ import com.deepoove.poi.plugin.table.LoopRowTableRenderPolicy; import jakarta.annotation.Resource; import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; +import org.dromara.cailiaoshebei.domain.BusMaterialbatchdemandplan; +import org.dromara.cailiaoshebei.service.IBusPurchaseDocService; import org.dromara.common.core.constant.HttpStatus; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.utils.ObjectUtils; @@ -34,6 +36,7 @@ import org.dromara.materials.domain.vo.materialreceive.MatMaterialReceiveVo; import org.dromara.materials.mapper.MatMaterialReceiveMapper; import org.dromara.materials.service.IMatMaterialReceiveItemService; import org.dromara.materials.service.IMatMaterialReceiveService; +import org.dromara.materials.service.IMatMaterialsService; import org.dromara.project.service.IBusProjectService; import org.dromara.system.domain.vo.SysOssVo; import org.dromara.system.service.ISysOssService; @@ -72,6 +75,12 @@ public class MatMaterialReceiveServiceImpl extends ServiceImpl itemList = req.getItemList(); + + HashMap map = new HashMap<>(); + if (CollUtil.isNotEmpty(itemList)) { - List materialReceiveItemList = itemList.stream().map(item -> { + List materialReceiveItemList = new ArrayList<>(); + for (MatMaterialReceiveItemDto item : itemList) { MatMaterialReceiveItem materialReceiveItem = new MatMaterialReceiveItem(); BeanUtils.copyProperties(item, materialReceiveItem); materialReceiveItem.setReceiveId(materialReceive.getId()); materialReceiveItem.setProjectId(materialReceive.getProjectId()); - return materialReceiveItem; - }).toList(); + //生成缺货采购单 + if(item.getShortageQuantity().compareTo(BigDecimal.ZERO) > 0){ + map.put(item.getPlanId(),item.getShortageQuantity()); + } + materialReceiveItemList.add(materialReceiveItem); + } boolean result = materialReceiveItemService.saveBatch(materialReceiveItemList); if (!result) { throw new RuntimeException("物料接收单明细项新增失败"); } + //生成缺货采购单 + purchaseDocService.create(materialReceive.getDocId(), map); + //生成库存 + materialsService.create(materialReceive.getProjectId(), itemList); } return true; } + + + /** * 修改物料接收单 * diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/service/impl/MatMaterialsServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/service/impl/MatMaterialsServiceImpl.java index 5beceddb..94724d8f 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/service/impl/MatMaterialsServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/service/impl/MatMaterialsServiceImpl.java @@ -5,6 +5,7 @@ import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import jakarta.annotation.Resource; @@ -18,6 +19,9 @@ import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.materials.domain.MatMaterials; import org.dromara.materials.domain.MatMaterialsInventory; +import org.dromara.materials.domain.dto.materialreceiveitem.MatMaterialReceiveItemDto; +import org.dromara.materials.domain.dto.materialsinventory.MatMaterialsInventoryCreateReq; +import org.dromara.materials.domain.dto.materialsinventory.MatMaterialsInventoryUpdateReq; import org.dromara.materials.domain.enums.MatMaterialsInventoryOutPutEnum; import org.dromara.materials.domain.dto.materials.MatMaterialsCreateReq; import org.dromara.materials.domain.dto.materials.MatMaterialsGisReq; @@ -33,12 +37,11 @@ import org.dromara.project.domain.BusProject; import org.dromara.project.service.IBusProjectService; import org.springframework.beans.BeanUtils; import org.springframework.context.annotation.Lazy; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; -import java.util.Collection; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.math.BigDecimal; +import java.util.*; import java.util.stream.Collectors; /** @@ -61,6 +64,7 @@ public class MatMaterialsServiceImpl extends ServiceImpl itemList) { + for (MatMaterialReceiveItemDto item : itemList) { + + Long materialsId ; + + MatMaterials one = this.getOne(Wrappers.lambdaQuery() + .eq(MatMaterials::getMaterialsName, item.getName()) + .eq(MatMaterials::getTypeSpecificationName, item.getSpecification())); + if (one != null) { + materialsId = one.getId(); + BigDecimal bigDecimal = new BigDecimal(one.getQuantityCount()); + BigDecimal add = item.getQuantity().add(bigDecimal); + one.setQuantityCount(add.toString()); + }else { + MatMaterials matMaterials = new MatMaterials(); + matMaterials.setMaterialsName(item.getName()); + matMaterials.setProjectId(projectId); + matMaterials.setTypeSpecificationName(item.getSpecification()); + matMaterials.setWeightId(item.getUnit()); + matMaterials.setQuantityCount(item.getQuantity().toString()); + + save(matMaterials); + materialsId = matMaterials.getId(); + } + + MatMaterialsInventoryCreateReq req = new MatMaterialsInventoryCreateReq(); + + req.setMaterialsId(materialsId); + req.setProjectId(projectId); + req.setOutPut("0"); + req.setNumber(item.getAcceptedQuantity().longValue()); + req.setOutPutTime(new Date()); + req.setOperator(LoginHelper.getUsername()); + materialsInventoryService.insertByBo(req); + } + } }