From 96bb9c2bcd965ddba86c0b84aba8f8da3a876372 Mon Sep 17 00:00:00 2001 From: my_ong <429426262@qq.com> Date: Sat, 15 Mar 2025 12:42:13 +0800 Subject: [PATCH] =?UTF-8?q?:new:=20=E6=8A=A5=E5=BA=9F=E5=87=BA=E5=BA=93=20?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E5=92=8C=E5=AE=A1=E6=A0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../material/ApplyFormController.java | 42 +++++++++++++++- .../riemann/ims/dto/response/ApplyDTO.java | 12 +++++ .../ims/dto/response/ScrapOutApplyDTO.java | 49 +++++++++++++++++++ .../riemann/ims/enums/StockStatusEnum.java | 1 + .../mapper/material/ApplyDetailMapper.java | 3 ++ .../service/material/IApplyDetailService.java | 3 ++ .../material/impl/ApplyDetailServiceImpl.java | 6 +++ .../resources/mapper/ApplyDetailMapper.xml | 27 ++++++++++ src/main/resources/mapper/ApplyFormMapper.xml | 10 +++- 9 files changed, 151 insertions(+), 2 deletions(-) create mode 100644 src/main/java/tech/riemann/ims/dto/response/ScrapOutApplyDTO.java diff --git a/src/main/java/tech/riemann/ims/controller/platform/material/ApplyFormController.java b/src/main/java/tech/riemann/ims/controller/platform/material/ApplyFormController.java index 277a9ee..4b4c88a 100644 --- a/src/main/java/tech/riemann/ims/controller/platform/material/ApplyFormController.java +++ b/src/main/java/tech/riemann/ims/controller/platform/material/ApplyFormController.java @@ -22,6 +22,7 @@ import tech.riemann.ims.service.material.*; import java.time.LocalDateTime; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -44,6 +45,9 @@ public class ApplyFormController { private final ITypeService typeService; private final IManualStockDetailService manualStockDetailService; + // 缓存需要审核的报废出库数据 key是申请id,value是材料库存详情列表 + private final Map> scrapOutCacheMap = new HashMap<>(); + @GetMapping("applies") @Operation(summary = "分页查询申请列表") public IPage searchPage( @@ -162,11 +166,47 @@ public class ApplyFormController { "m_stock = m_stock + " + detail.getQuantity()) )); } else if (applyType == ApplyTypeEnum.SCRAP_OUT) { - // + // 将扫码的数据缓存起来方便下次使用 + List list = applyInfo.getDetailList().stream().map(MaterialStockDetail::getBarcode).toList(); + scrapOutCacheMap.put(applyInfo.getApplyForm().getId().toString(), list); } } + @GetMapping("scrap-out/{applyId}") + @Operation(summary = "获取报废出库申请单") + public List getScrapOutById(@Parameter(description = "申请单ID") @PathVariable(name = "applyId") Integer applyId) { + List result = applyDetailService.getScrapOutById(applyId); + result.forEach(item -> item + .setTypeName(typeService.getTypeName(item.getType())) + ); + return result; + } + + @PostMapping("scrap-out-review") + @Operation(summary = "提交报废出库审核") + @Transactional(rollbackFor = Exception.class) + public void submitScrapOutReview(@Parameter(description = "异常数据列表") @RequestBody ReviewDTO reviewDTO) { + //修改申请状态 + applyFormService.update(Wrappers.lambdaUpdate() + .set(ApplyForm::getReviewResult, reviewDTO.getReviewResult()) + .set(ApplyForm::getReviewRemark, reviewDTO.getRemark()) + .set(ApplyForm::getConfirm, Boolean.TRUE) + .eq(ApplyForm::getId, reviewDTO.getApplyId())); + if (reviewDTO.getReviewResult() == ReviewResultEnum.PASS) { + // 修改物料状态 + List barcodeList = scrapOutCacheMap.get(reviewDTO.getApplyId()); + if(barcodeList == null || barcodeList.isEmpty()){ + return; + } + barcodeList.forEach(barcode -> materialStockDetailService.update(Wrappers.lambdaUpdate() + .set(MaterialStockDetail::getStatus, StockStatusEnum.SCRAP_OUT) + .eq(MaterialStockDetail::getBarcode, barcode))); + } + // 删除缓存 + scrapOutCacheMap.remove(reviewDTO.getApplyId()); + } + @PostMapping("audit-apply") @Operation(summary = "提交盘点申请单") @Transactional(rollbackFor = Exception.class) diff --git a/src/main/java/tech/riemann/ims/dto/response/ApplyDTO.java b/src/main/java/tech/riemann/ims/dto/response/ApplyDTO.java index d8600bd..888eb16 100644 --- a/src/main/java/tech/riemann/ims/dto/response/ApplyDTO.java +++ b/src/main/java/tech/riemann/ims/dto/response/ApplyDTO.java @@ -9,6 +9,7 @@ import lombok.Data; import lombok.NoArgsConstructor; import org.nutz.json.JsonField; import tech.riemann.ims.enums.ApplyTypeEnum; +import tech.riemann.ims.enums.ReviewResultEnum; /** * @author mayong @@ -20,6 +21,9 @@ import tech.riemann.ims.enums.ApplyTypeEnum; @NoArgsConstructor public class ApplyDTO { + @Schema(description = "申请id") + private Long applyId; + @Schema(description = "申请类型") private ApplyTypeEnum applyType; @@ -41,6 +45,9 @@ public class ApplyDTO { @Schema(description = "申请人") private String applicant; + @Schema(description = "审核人") + private String reviewer; + @Schema(description = "申请日期") private String applyDate; @@ -53,6 +60,11 @@ public class ApplyDTO { @Schema(description = "备注") private String remark; + @Schema(description = "是否确认") + private Boolean confirm; + + @Schema(description = "审核状态") + private ReviewResultEnum reviewResult; @JsonGetter @JsonField diff --git a/src/main/java/tech/riemann/ims/dto/response/ScrapOutApplyDTO.java b/src/main/java/tech/riemann/ims/dto/response/ScrapOutApplyDTO.java new file mode 100644 index 0000000..0a5c788 --- /dev/null +++ b/src/main/java/tech/riemann/ims/dto/response/ScrapOutApplyDTO.java @@ -0,0 +1,49 @@ +package tech.riemann.ims.dto.response; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +/** + * @author mayong + * @since 2025/3/15 10:39 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Accessors(chain = true) +public class ScrapOutApplyDTO { + + @Schema(description = "物料名称") + private String name; + + @Schema(description = "类型") + private String type; + + @Schema(description = "类型名称") + private String typeName; + + @Schema(description = "物料规格") + private String spec; + + @Schema(description = "单价") + private String price; + + @Schema(description = "申请人") + private String applicant; + + @Schema(description = "确认数量") + private Integer confirmQuantity; + + @Schema(description = "条码集合") + private String barcodeList; + + @Schema(description = "报废原因") + private String remark; + + +} diff --git a/src/main/java/tech/riemann/ims/enums/StockStatusEnum.java b/src/main/java/tech/riemann/ims/enums/StockStatusEnum.java index f9e52ac..8c6284b 100644 --- a/src/main/java/tech/riemann/ims/enums/StockStatusEnum.java +++ b/src/main/java/tech/riemann/ims/enums/StockStatusEnum.java @@ -17,6 +17,7 @@ public enum StockStatusEnum implements ICodeBook { OUT("1", "外借"), OFF("2", "下架"), LOST("3", "丢失"), + SCRAP_OUT("4", "报废"), ; diff --git a/src/main/java/tech/riemann/ims/mapper/material/ApplyDetailMapper.java b/src/main/java/tech/riemann/ims/mapper/material/ApplyDetailMapper.java index 23bf01f..e585d93 100644 --- a/src/main/java/tech/riemann/ims/mapper/material/ApplyDetailMapper.java +++ b/src/main/java/tech/riemann/ims/mapper/material/ApplyDetailMapper.java @@ -2,6 +2,7 @@ package tech.riemann.ims.mapper.material; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import tech.riemann.ims.dto.response.ScrapOutApplyDTO; import tech.riemann.ims.dto.response.WaitScanInfo; import tech.riemann.ims.entity.material.ApplyDetail; @@ -13,4 +14,6 @@ import java.util.List; */ public interface ApplyDetailMapper extends BaseMapper { List getWaitScanData(@Param("applyId") Long applyId); + + List getScrapOutById(Integer applyId); } diff --git a/src/main/java/tech/riemann/ims/service/material/IApplyDetailService.java b/src/main/java/tech/riemann/ims/service/material/IApplyDetailService.java index 93ed2e9..26df582 100644 --- a/src/main/java/tech/riemann/ims/service/material/IApplyDetailService.java +++ b/src/main/java/tech/riemann/ims/service/material/IApplyDetailService.java @@ -2,6 +2,7 @@ package tech.riemann.ims.service.material; import com.baomidou.mybatisplus.extension.service.IService; import org.nutz.spring.boot.service.interfaces.IdNameEntityService; +import tech.riemann.ims.dto.response.ScrapOutApplyDTO; import tech.riemann.ims.dto.response.WaitScanInfo; import tech.riemann.ims.entity.material.ApplyDetail; @@ -14,4 +15,6 @@ import java.util.List; public interface IApplyDetailService extends IService, IdNameEntityService { List getWaitScanData(Long applyId); + + List getScrapOutById(Integer applyId); } diff --git a/src/main/java/tech/riemann/ims/service/material/impl/ApplyDetailServiceImpl.java b/src/main/java/tech/riemann/ims/service/material/impl/ApplyDetailServiceImpl.java index c7edb39..5980d36 100644 --- a/src/main/java/tech/riemann/ims/service/material/impl/ApplyDetailServiceImpl.java +++ b/src/main/java/tech/riemann/ims/service/material/impl/ApplyDetailServiceImpl.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import org.nutz.dao.Dao; import org.springframework.stereotype.Service; +import tech.riemann.ims.dto.response.ScrapOutApplyDTO; import tech.riemann.ims.dto.response.WaitScanInfo; import tech.riemann.ims.entity.material.ApplyDetail; import tech.riemann.ims.mapper.material.ApplyDetailMapper; @@ -30,4 +31,9 @@ public class ApplyDetailServiceImpl extends ServiceImpl getWaitScanData(Long applyId) { return baseMapper.getWaitScanData(applyId); } + + @Override + public List getScrapOutById(Integer applyId) { + return baseMapper.getScrapOutById(applyId); + } } diff --git a/src/main/resources/mapper/ApplyDetailMapper.xml b/src/main/resources/mapper/ApplyDetailMapper.xml index cb7f21a..54aacd2 100644 --- a/src/main/resources/mapper/ApplyDetailMapper.xml +++ b/src/main/resources/mapper/ApplyDetailMapper.xml @@ -17,4 +17,31 @@ WHERE d.ad_apply_id = #{applyId} + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mapper/ApplyFormMapper.xml b/src/main/resources/mapper/ApplyFormMapper.xml index ebc8b9d..3f4a905 100644 --- a/src/main/resources/mapper/ApplyFormMapper.xml +++ b/src/main/resources/mapper/ApplyFormMapper.xml @@ -3,9 +3,11 @@ + + @@ -13,20 +15,26 @@ + +