From 2fd6b57e09a78bb79844f247353b771f40c12328 Mon Sep 17 00:00:00 2001 From: zxy Date: Tue, 26 May 2026 15:07:11 +0800 Subject: [PATCH] =?UTF-8?q?refactor(biz):=20=E9=87=8D=E6=9E=84=E9=87=87?= =?UTF-8?q?=E8=B4=AD=E9=80=80=E6=96=99=E5=92=8C=E9=94=80=E5=94=AE=E5=8F=91?= =?UTF-8?q?=E8=B4=A7=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../vo/PurReceiptDetailRespVO.java | 13 ++ .../purreturn/vo/PurReturnPageReqVO.java | 2 +- .../admin/purreturn/vo/PurReturnRespVO.java | 4 +- .../purreturn/vo/PurReturnSaveReqVO.java | 7 +- .../vo/PurReturnDetailRespVO.java | 19 +- .../vo/SaleDeliveryDetailSaveReqVO.java | 8 +- .../dal/dataobject/purreturn/PurReturnDO.java | 6 +- .../SaleDeliveryDetailDO.java | 4 + .../PurReceiptDetailMapper.java | 5 + .../dal/mysql/purreturn/PurReturnMapper.java | 17 +- .../PurReturnDetailMapper.java | 15 +- .../purreturn/PurReturnServiceImpl.java | 169 +++++++++++++++--- .../saledelivery/SaleDeliveryServiceImpl.java | 15 +- .../src/api/biz/purreturn/index.ts | 94 +++++----- .../src/types/auto-imports.d.ts | 2 - .../biz/purreturn/PurReceiptSelectDialog.vue | 11 +- .../src/views/biz/purreturn/PurReturnForm.vue | 41 ++--- .../src/views/biz/purreturn/index.vue | 18 +- .../biz/saledelivery/SaleDeliveryDetail.vue | 8 +- .../biz/saledelivery/SaleDeliveryForm.vue | 19 +- 20 files changed, 321 insertions(+), 156 deletions(-) diff --git a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/purreceiptdetail/vo/PurReceiptDetailRespVO.java b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/purreceiptdetail/vo/PurReceiptDetailRespVO.java index 066a8be..fd08aa2 100644 --- a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/purreceiptdetail/vo/PurReceiptDetailRespVO.java +++ b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/purreceiptdetail/vo/PurReceiptDetailRespVO.java @@ -155,4 +155,17 @@ public class PurReceiptDetailRespVO { @ExcelProperty("单据类型(1 标准采购 2设备采购 3 标准采购退料 4设备采购退料)") private String billType; + @Schema(description = "仓库名称", example = "王五") + @ExcelProperty("仓库名称") + private String storeHouseName; + + @Schema(description = "仓库id", example = "2172") + @ExcelProperty("仓库id") + private Long storeHouseId; + + @Schema(description = "仓库编码", example = "王五") + @ExcelProperty("仓库编码") + private String storeHouseCd; + + } diff --git a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/purreturn/vo/PurReturnPageReqVO.java b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/purreturn/vo/PurReturnPageReqVO.java index 6d50052..58fe30f 100644 --- a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/purreturn/vo/PurReturnPageReqVO.java +++ b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/purreturn/vo/PurReturnPageReqVO.java @@ -31,7 +31,7 @@ public class PurReturnPageReqVO extends PageParam { private String supplierName; @Schema(description = "单据状态(1 已创建 2 已确认 )", example = "2") - private String purStatus; + private String returnStatus; @Schema(description = "采购入库单主表id", example = "3872") private Integer purReceiptId; diff --git a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/purreturn/vo/PurReturnRespVO.java b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/purreturn/vo/PurReturnRespVO.java index 5b49cc4..02f2778 100644 --- a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/purreturn/vo/PurReturnRespVO.java +++ b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/purreturn/vo/PurReturnRespVO.java @@ -43,7 +43,7 @@ public class PurReturnRespVO { @Schema(description = "单据状态(1 已创建 2 已确认 )", example = "2") @ExcelProperty("单据状态(1 已创建 2 已确认 )") - private String purStatus; + private String returnStatus; @Schema(description = "备注", example = "你猜") @ExcelProperty("备注") @@ -74,6 +74,6 @@ public class PurReturnRespVO { private String billType; @Schema(description = "采购退料单子表列表") - private List returnDetailList; + private List items; } diff --git a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/purreturn/vo/PurReturnSaveReqVO.java b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/purreturn/vo/PurReturnSaveReqVO.java index b08d310..60a7b63 100644 --- a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/purreturn/vo/PurReturnSaveReqVO.java +++ b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/purreturn/vo/PurReturnSaveReqVO.java @@ -2,8 +2,10 @@ package com.ningxia.yunxi.chemmes.module.biz.controller.admin.purreturn.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import com.ningxia.yunxi.chemmes.module.biz.controller.admin.purreturndetail.vo.PurReturnDetailSaveReqVO; import java.time.LocalDate; +import java.util.List; @Schema(description = "管理后台 - 采购退料单主新增/修改 Request VO") @Data @@ -25,7 +27,7 @@ public class PurReturnSaveReqVO { private String supplierName; @Schema(description = "单据状态(1 已创建 2 已确认 )", example = "2") - private String purStatus; + private String returnStatus; @Schema(description = "备注", example = "你猜") private String remark; @@ -48,4 +50,7 @@ public class PurReturnSaveReqVO { @Schema(description = "单据类型(1 标准采购 2设备采购 3 标准采购退料 4设备采购退料)", example = "2") private String billType; + @Schema(description = "采购退料单子表列表") + private List items; + } diff --git a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/purreturndetail/vo/PurReturnDetailRespVO.java b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/purreturndetail/vo/PurReturnDetailRespVO.java index 2c6eb91..c1daa6d 100644 --- a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/purreturndetail/vo/PurReturnDetailRespVO.java +++ b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/purreturndetail/vo/PurReturnDetailRespVO.java @@ -1,15 +1,14 @@ package com.ningxia.yunxi.chemmes.module.biz.controller.admin.purreturndetail.vo; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import java.util.*; +import lombok.Data; + import java.math.BigDecimal; -import org.springframework.format.annotation.DateTimeFormat; import java.time.LocalDate; import java.time.LocalDateTime; -import com.alibaba.excel.annotation.*; -import com.fasterxml.jackson.annotation.JsonFormat; @Schema(description = "管理后台 - 采购退料单子 Response VO") @Data @@ -125,7 +124,7 @@ public class PurReturnDetailRespVO { @Schema(description = "单据状态(1 已创建 2 已确认 )", example = "2") @ExcelProperty("单据状态(1 已创建 2 已确认 )") - private String purStatus; + private String returnStatus; @Schema(description = "采购入库单主表id", example = "3872") @ExcelProperty("采购入库单主表id") @@ -147,4 +146,10 @@ public class PurReturnDetailRespVO { @ExcelProperty("单据类型(1 标准采购 2设备采购 3 标准采购退料 4设备采购退料)") private String billType; + // 入库时间 + @Schema(description = "入库时间") + @ExcelProperty("入库时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime inStorageTime; + } diff --git a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/saledeliverydetail/vo/SaleDeliveryDetailSaveReqVO.java b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/saledeliverydetail/vo/SaleDeliveryDetailSaveReqVO.java index 53044d8..33781a3 100644 --- a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/saledeliverydetail/vo/SaleDeliveryDetailSaveReqVO.java +++ b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/saledeliverydetail/vo/SaleDeliveryDetailSaveReqVO.java @@ -53,10 +53,10 @@ public class SaleDeliveryDetailSaveReqVO { private String unit; - private BigDecimal stockQty; - - private Integer stockBag; - private String inventBillNo; + private BigDecimal yardQty; + + private Integer packQty; + } diff --git a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/dal/dataobject/purreturn/PurReturnDO.java b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/dal/dataobject/purreturn/PurReturnDO.java index b5a72dd..a090db3 100644 --- a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/dal/dataobject/purreturn/PurReturnDO.java +++ b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/dal/dataobject/purreturn/PurReturnDO.java @@ -47,7 +47,7 @@ public class PurReturnDO extends BaseDO { /** * 单据状态(1 已创建 2 已确认 ) */ - private String purStatus; + private String returnStatus; /** * 备注 */ @@ -55,7 +55,7 @@ public class PurReturnDO extends BaseDO { /** * 采购入库单主表id */ - private Integer purReceiptId; + private Long purReceiptId; /** * 采购入库单号 */ @@ -63,7 +63,7 @@ public class PurReturnDO extends BaseDO { /** * 退料人id */ - private Integer returnEmpId; + private Long returnEmpId; /** * 退料人名称 */ diff --git a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/dal/dataobject/saledeliverydetail/SaleDeliveryDetailDO.java b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/dal/dataobject/saledeliverydetail/SaleDeliveryDetailDO.java index 12036d9..6f2feab 100644 --- a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/dal/dataobject/saledeliverydetail/SaleDeliveryDetailDO.java +++ b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/dal/dataobject/saledeliverydetail/SaleDeliveryDetailDO.java @@ -83,4 +83,8 @@ public class SaleDeliveryDetailDO extends BaseDO { private String inventBillNo; + private BigDecimal yardQty; + + private Integer packQty; + } diff --git a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/dal/mysql/purreceiptdetail/PurReceiptDetailMapper.java b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/dal/mysql/purreceiptdetail/PurReceiptDetailMapper.java index e8fee17..41a6bd6 100644 --- a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/dal/mysql/purreceiptdetail/PurReceiptDetailMapper.java +++ b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/dal/mysql/purreceiptdetail/PurReceiptDetailMapper.java @@ -87,6 +87,9 @@ public interface PurReceiptDetailMapper extends BaseMapperX .selectAs(PurReceiptDO::getReceiptEmpId, PurReceiptDetailRespVO::getReceiptEmpId) .selectAs(PurReceiptDO::getReceiptEmpName, PurReceiptDetailRespVO::getReceiptEmpName) .selectAs(PurReceiptDO::getBillType, PurReceiptDetailRespVO::getBillType) + .selectAs(PurReceiptDO::getStoreHouseName, PurReceiptDetailRespVO::getStoreHouseName) + .selectAs(PurReceiptDO::getStoreHouseId, PurReceiptDetailRespVO::getStoreHouseId) + .selectAs(PurReceiptDO::getStoreHouseCd, PurReceiptDetailRespVO::getStoreHouseCd) // LEFT JOIN 主表 .leftJoin(PurReceiptDO.class, PurReceiptDO::getId, PurReceiptDetailDO::getPurReceiptId) // 查询条件 - 子表 @@ -96,6 +99,8 @@ public interface PurReceiptDetailMapper extends BaseMapperX .eq(pageReqVO.getMaterialId() != null, PurReceiptDetailDO::getMaterialId, pageReqVO.getMaterialId()) .like(pageReqVO.getMaterialCode() != null, PurReceiptDetailDO::getMaterialCode, pageReqVO.getMaterialCode()) .like(StringUtils.isNotBlank(pageReqVO.getMaterialName()), PurReceiptDetailDO::getMaterialName, pageReqVO.getMaterialName()) + // (t.receipt_qty - t.return_qty) > 0 + .apply("t.receipt_qty - t.return_qty > 0") // 查询条件 - 主表 .like(StringUtils.isNotBlank(pageReqVO.getPurReceiptNo()), PurReceiptDO::getPurReceiptNo, pageReqVO.getPurReceiptNo()) .like(StringUtils.isNotBlank(pageReqVO.getSupplierName()), PurReceiptDO::getSupplierName, pageReqVO.getSupplierName()) diff --git a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/dal/mysql/purreturn/PurReturnMapper.java b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/dal/mysql/purreturn/PurReturnMapper.java index cd43ab4..423f4d1 100644 --- a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/dal/mysql/purreturn/PurReturnMapper.java +++ b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/dal/mysql/purreturn/PurReturnMapper.java @@ -1,13 +1,11 @@ package com.ningxia.yunxi.chemmes.module.biz.dal.mysql.purreturn; -import java.util.*; - import com.ningxia.yunxi.chemmes.framework.common.pojo.PageResult; -import com.ningxia.yunxi.chemmes.framework.mybatis.core.query.LambdaQueryWrapperX; import com.ningxia.yunxi.chemmes.framework.mybatis.core.mapper.BaseMapperX; +import com.ningxia.yunxi.chemmes.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.ningxia.yunxi.chemmes.module.biz.controller.admin.purreturn.vo.PurReturnPageReqVO; import com.ningxia.yunxi.chemmes.module.biz.dal.dataobject.purreturn.PurReturnDO; import org.apache.ibatis.annotations.Mapper; -import com.ningxia.yunxi.chemmes.module.biz.controller.admin.purreturn.vo.*; /** * 采购退料单主 Mapper @@ -23,7 +21,7 @@ public interface PurReturnMapper extends BaseMapperX { .betweenIfPresent(PurReturnDO::getReceiptDate, reqVO.getReceiptDate()) .eqIfPresent(PurReturnDO::getSupplierId, reqVO.getSupplierId()) .likeIfPresent(PurReturnDO::getSupplierName, reqVO.getSupplierName()) - .eqIfPresent(PurReturnDO::getPurStatus, reqVO.getPurStatus()) + .eqIfPresent(PurReturnDO::getReturnStatus, reqVO.getReturnStatus()) .eqIfPresent(PurReturnDO::getPurReceiptId, reqVO.getPurReceiptId()) .eqIfPresent(PurReturnDO::getPurReceiptNo, reqVO.getPurReceiptNo()) .eqIfPresent(PurReturnDO::getTwmStorageId, reqVO.getTwmStorageId()) @@ -31,4 +29,11 @@ public interface PurReturnMapper extends BaseMapperX { .orderByDesc(PurReturnDO::getId)); } -} \ No newline at end of file + default String selectMaxPurReturnNo() { + PurReturnDO purReturnDO = selectOne(new LambdaQueryWrapperX() + .select(PurReturnDO::getPurReturnNo) + .orderByDesc(PurReturnDO::getId) + .last("LIMIT 1")); + return purReturnDO == null ? null : purReturnDO.getPurReturnNo(); + } +} diff --git a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/dal/mysql/purreturndetail/PurReturnDetailMapper.java b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/dal/mysql/purreturndetail/PurReturnDetailMapper.java index b2f45d4..befe7f7 100644 --- a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/dal/mysql/purreturndetail/PurReturnDetailMapper.java +++ b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/dal/mysql/purreturndetail/PurReturnDetailMapper.java @@ -11,6 +11,8 @@ import com.ningxia.yunxi.chemmes.module.biz.dal.dataobject.purreturndetail.PurRe import org.apache.commons.lang3.StringUtils; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + /** * 采购退料单子 Mapper * @@ -60,7 +62,7 @@ public interface PurReturnDetailMapper extends BaseMapperX { .selectAs(PurReturnDO::getReceiptDate, PurReturnDetailRespVO::getReceiptDate) .selectAs(PurReturnDO::getSupplierId, PurReturnDetailRespVO::getSupplierId) .selectAs(PurReturnDO::getSupplierName, PurReturnDetailRespVO::getSupplierName) - .selectAs(PurReturnDO::getPurStatus, PurReturnDetailRespVO::getPurStatus) + .selectAs(PurReturnDO::getReturnStatus, PurReturnDetailRespVO::getReturnStatus) .selectAs(PurReturnDO::getPurReceiptId, PurReturnDetailRespVO::getPurReceiptId) .selectAs(PurReturnDO::getPurReceiptNo, PurReturnDetailRespVO::getPurReceiptNo) .selectAs(PurReturnDO::getReturnEmpId, PurReturnDetailRespVO::getReturnEmpId) @@ -80,7 +82,7 @@ public interface PurReturnDetailMapper extends BaseMapperX { .like(StringUtils.isNotBlank(pageReqVO.getStoreHouseName()), PurReturnDetailDO::getStoreHouseName, pageReqVO.getStoreHouseName()) // 查询条件 - 主表 .like(StringUtils.isNotBlank(pageReqVO.getSupplierName()), PurReturnDO::getSupplierName, pageReqVO.getSupplierName()) - .eq(pageReqVO.getPurStatus() != null, PurReturnDO::getPurStatus, pageReqVO.getPurStatus()) + .eq(pageReqVO.getPurStatus() != null, PurReturnDO::getReturnStatus, pageReqVO.getPurStatus()) .like(StringUtils.isNotBlank(pageReqVO.getPurReceiptNo()), PurReturnDO::getPurReceiptNo, pageReqVO.getPurReceiptNo()) .like(StringUtils.isNotBlank(pageReqVO.getReturnEmpName()), PurReturnDO::getReturnEmpName, pageReqVO.getReturnEmpName()) .eq(pageReqVO.getBillType() != null, PurReturnDO::getBillType, pageReqVO.getBillType()) @@ -88,5 +90,14 @@ public interface PurReturnDetailMapper extends BaseMapperX { return selectJoinPage(pageReqVO, PurReturnDetailRespVO.class, wrapper); } + // 根据主表的ID删除子表的数据 + default void deletePurReturnDetailByPurReturnId(Integer purReturnId) { + delete(new LambdaQueryWrapperX().eq(PurReturnDetailDO::getPurReturnId, purReturnId)); + } + + default List selectListByPurReturnId(Integer purReturnId) { + return selectList(new LambdaQueryWrapperX().eq(PurReturnDetailDO::getPurReturnId, purReturnId)); + } + } diff --git a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/service/purreturn/PurReturnServiceImpl.java b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/service/purreturn/PurReturnServiceImpl.java index dd53a03..325cdc4 100644 --- a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/service/purreturn/PurReturnServiceImpl.java +++ b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/service/purreturn/PurReturnServiceImpl.java @@ -1,23 +1,39 @@ package com.ningxia.yunxi.chemmes.module.biz.service.purreturn; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ningxia.yunxi.chemmes.framework.common.pojo.PageResult; +import com.ningxia.yunxi.chemmes.framework.common.util.CodeGenerateUtils; import com.ningxia.yunxi.chemmes.framework.common.util.object.BeanUtils; import com.ningxia.yunxi.chemmes.module.biz.controller.admin.purreturn.vo.PurReturnPageReqVO; import com.ningxia.yunxi.chemmes.module.biz.controller.admin.purreturn.vo.PurReturnRespVO; import com.ningxia.yunxi.chemmes.module.biz.controller.admin.purreturn.vo.PurReturnSaveReqVO; import com.ningxia.yunxi.chemmes.module.biz.controller.admin.purreturndetail.vo.PurReturnDetailRespVO; +import com.ningxia.yunxi.chemmes.module.biz.controller.admin.purreturndetail.vo.PurReturnDetailSaveReqVO; +import com.ningxia.yunxi.chemmes.module.biz.dal.dataobject.purreceiptdetail.PurReceiptDetailDO; import com.ningxia.yunxi.chemmes.module.biz.dal.dataobject.purreturn.PurReturnDO; import com.ningxia.yunxi.chemmes.module.biz.dal.dataobject.purreturndetail.PurReturnDetailDO; +import com.ningxia.yunxi.chemmes.module.biz.dal.dataobject.rawstorageinventory.RawStorageInventoryDO; +import com.ningxia.yunxi.chemmes.module.biz.dal.dataobject.rawstoragelog.RawStorageLogDO; +import com.ningxia.yunxi.chemmes.module.biz.dal.dataobject.supplier.SupplierDO; +import com.ningxia.yunxi.chemmes.module.biz.dal.mysql.purreceiptdetail.PurReceiptDetailMapper; import com.ningxia.yunxi.chemmes.module.biz.dal.mysql.purreturn.PurReturnMapper; import com.ningxia.yunxi.chemmes.module.biz.dal.mysql.purreturndetail.PurReturnDetailMapper; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.ningxia.yunxi.chemmes.module.biz.dal.mysql.rawstorageinventory.RawStorageInventoryMapper; +import com.ningxia.yunxi.chemmes.module.biz.service.rawstorageinventory.RawStorageInventoryService; +import com.ningxia.yunxi.chemmes.module.biz.service.rawstoragelog.RawStorageLogService; +import com.ningxia.yunxi.chemmes.module.biz.service.supplier.SupplierService; +import com.ningxia.yunxi.chemmes.module.system.dal.dataobject.user.AdminUserDO; +import com.ningxia.yunxi.chemmes.module.system.service.user.AdminUserService; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; -import javax.annotation.Resource; +import java.time.LocalDate; import java.util.List; import static com.ningxia.yunxi.chemmes.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.ningxia.yunxi.chemmes.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; /** * 采购退料单主 Service 实现类 @@ -26,38 +42,138 @@ import static com.ningxia.yunxi.chemmes.framework.common.exception.util.ServiceE */ @Service @Validated +@RequiredArgsConstructor public class PurReturnServiceImpl implements PurReturnService { - @Resource - private PurReturnMapper purReturnMapper; + private final PurReturnMapper purReturnMapper; + + private final PurReturnDetailMapper purReturnDetailMapper; + + private final AdminUserService adminUserService; + + private final PurReceiptDetailMapper purreceiptDetailMapper; + + private final RawStorageInventoryService rawStorageInventoryService; + + private final RawStorageInventoryMapper rawStorageInventoryMapper; + + private final SupplierService supplierService; + + private final RawStorageLogService rawStorageLogService; - @Resource - private PurReturnDetailMapper purReturnDetailMapper; @Override + @Transactional(rollbackFor = Exception.class) public Integer createPurReturn(PurReturnSaveReqVO createReqVO) { - // 插入 + // 插入主表 PurReturnDO purReturn = BeanUtils.toBean(createReqVO, PurReturnDO.class); + Long userId = getLoginUserId(); + AdminUserDO adminUserDO = adminUserService.getUser(userId); + purReturn.setReturnEmpId(adminUserDO.getId()); + purReturn.setReturnEmpName(adminUserDO.getUsername()); + purReturn.setPurReturnNo(generateBillNo()); purReturnMapper.insert(purReturn); + saveDetails(createReqVO, purReturn.getId()); + if ("2".equals(createReqVO.getReturnStatus())) { + processReturn(purReturn); + } + // 返回 return purReturn.getId(); } - @Override - public void updatePurReturn(PurReturnSaveReqVO updateReqVO) { - // 校验存在 - validatePurReturnExists(updateReqVO.getId()); - // 更新 - PurReturnDO updateObj = BeanUtils.toBean(updateReqVO, PurReturnDO.class); - purReturnMapper.updateById(updateObj); + private void saveDetails(PurReturnSaveReqVO createReqVO, Integer purReturn) { + // 插入子表 + for (PurReturnDetailSaveReqVO detailReqVO : createReqVO.getItems()) { + PurReturnDetailDO detail = BeanUtils.toBean(detailReqVO, PurReturnDetailDO.class); + detail.setPurReturnId(purReturn); + detail.setId(null); + purReturnDetailMapper.insert(detail); + } } @Override + @Transactional(rollbackFor = Exception.class) + public void updatePurReturn(PurReturnSaveReqVO updateReqVO) { + // 校验存在 + validatePurReturnExists(updateReqVO.getId()); + // 更新主表 + PurReturnDO updateObj = BeanUtils.toBean(updateReqVO, PurReturnDO.class); + Long userId = getLoginUserId(); + AdminUserDO adminUserDO = adminUserService.getUser(userId); + updateObj.setReturnEmpId(userId); + updateObj.setReturnEmpName(adminUserDO.getUsername()); + purReturnMapper.updateById(updateObj); + + // 删除原有子表数据 + purReturnDetailMapper.deletePurReturnDetailByPurReturnId(updateReqVO.getId()); + + // 插入新子表数据 + saveDetails(updateReqVO, updateReqVO.getId()); + if ("2".equals(updateReqVO.getReturnStatus())) { + processReturn(updateObj); + } + + } + + private void processReturn(PurReturnDO purReturnDO) { + List purReturnDetailDOS = purReturnDetailMapper.selectListByPurReturnId(purReturnDO.getId()); + SupplierDO supplier = supplierService.getSupplier(purReturnDO.getSupplierId()); + for (PurReturnDetailDO purReturnDetailDO : purReturnDetailDOS) { + PurReceiptDetailDO purReceiptDetailDO = purreceiptDetailMapper.selectById(purReturnDetailDO.getPurReceiptDetailId()); + RawStorageInventoryDO rawStorageInventory = rawStorageInventoryMapper.selectOne(new LambdaQueryWrapper().eq(RawStorageInventoryDO::getInventBillNo, purReturnDetailDO.getInventBillNo())); + rawStorageInventory.setYardQty(rawStorageInventory.getYardQty().subtract(purReturnDetailDO.getReturnQty())); + purReceiptDetailDO.setReturnQty(purReceiptDetailDO.getReturnQty().add(purReturnDetailDO.getReturnQty())); + purreceiptDetailMapper.updateById(purReceiptDetailDO); + //twm_raw_storage_log 插入 + RawStorageLogDO rawStorageLog = new RawStorageLogDO(); +// rawStorageLog.setStockId(); + rawStorageLog.setStatus("2"); + rawStorageLog.setStoreHouseId(purReturnDetailDO.getStoreHouseId()); + rawStorageLog.setStoreAreaId(purReturnDetailDO.getStoreAreaId()); + rawStorageLog.setStoreHouseCd(purReturnDetailDO.getStoreHouseCd()); + rawStorageLog.setStoreHouseName(purReturnDetailDO.getStoreHouseName()); + rawStorageLog.setStoreAreCd(purReturnDetailDO.getStoreAreCd()); + rawStorageLog.setStoreAreaName(purReturnDetailDO.getStoreAreaName()); + rawStorageLog.setMaterialId(purReturnDetailDO.getMaterialId()); + rawStorageLog.setMatName(purReturnDetailDO.getMaterialName()); + rawStorageLog.setMatCode(purReturnDetailDO.getMaterialCode()); + rawStorageLog.setSpec(purReturnDetailDO.getSpec()); + rawStorageLog.setUnit(purReturnDetailDO.getUnit()); + rawStorageLog.setLotNo(purReturnDetailDO.getLotNo()); + rawStorageLog.setOperatorQty(purReturnDetailDO.getReturnQty()); + rawStorageLog.setOperatorType("2"); + rawStorageLog.setBusinessType("23"); +// rawStorageLog.setStorageAft(); +// rawStorageLog.setStorageBef(); +// rawStorageLog.setStockItemId(); +// rawStorageLog.setDpstNo(); + rawStorageLog.setSupplierNo(supplier.getSupplierNo()); + rawStorageLog.setSupplierName(purReturnDO.getSupplierName()); + rawStorageLog.setSupplierId(purReturnDO.getSupplierId()); +// rawStorageLog.setPurQty(); + rawStorageLog.setBillDate(LocalDate.now()); + rawStorageLog.setOperatorId(purReturnDO.getReturnEmpId()); + rawStorageLog.setOperatorName(purReturnDO.getReturnEmpName()); + rawStorageLog.setRelarionNo(purReturnDO.getPurReturnNo()); + rawStorageLog.setRelarionId(purReturnDO.getId()); + rawStorageLog.setRelarionDetailId(purReturnDetailDO.getId()); + rawStorageLog.setInventBillNo(purReturnDetailDO.getInventBillNo()); + rawStorageLogService.saveRawStorageLog(rawStorageLog); + rawStorageInventoryMapper.updateById(rawStorageInventory); + } + } + + + @Override + @Transactional(rollbackFor = Exception.class) public void deletePurReturn(Integer id) { // 校验存在 validatePurReturnExists(id); // 删除 purReturnMapper.deleteById(id); + purReturnDetailMapper.deletePurReturnDetailByPurReturnId(id); + } private void validatePurReturnExists(Integer id) { @@ -78,20 +194,24 @@ public class PurReturnServiceImpl implements PurReturnService { if (purReturn == null) { throw exception("采购退料单主不存在"); } - + // 转换为VO PurReturnRespVO respVO = BeanUtils.toBean(purReturn, PurReturnRespVO.class); - + // 查询子表数据 List detailList = purReturnDetailMapper.selectList( - new LambdaQueryWrapper() - .eq(PurReturnDetailDO::getPurReturnId, id) + new LambdaQueryWrapper() + .eq(PurReturnDetailDO::getPurReturnId, id) ); - + // 转换子表数据 List detailRespVOList = BeanUtils.toBean(detailList, PurReturnDetailRespVO.class); - respVO.setReturnDetailList(detailRespVOList); - + for (PurReturnDetailRespVO purReturnDetailRespVO : detailRespVOList) { + PurReceiptDetailDO purReceiptDetailDO = purreceiptDetailMapper.selectById(purReturnDetailRespVO.getPurReceiptDetailId()); + purReturnDetailRespVO.setInStorageTime(purReceiptDetailDO.getCreateTime()); + } + respVO.setItems(detailRespVOList); + return respVO; } @@ -100,4 +220,11 @@ public class PurReturnServiceImpl implements PurReturnService { return purReturnMapper.selectPage(pageReqVO); } + // 生成单号 + private String generateBillNo() { + String maxPurReturnNo = purReturnMapper.selectMaxPurReturnNo(); + return CodeGenerateUtils.generateBillNo("SCT", maxPurReturnNo); + + } + } diff --git a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/service/saledelivery/SaleDeliveryServiceImpl.java b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/service/saledelivery/SaleDeliveryServiceImpl.java index 51cc79d..458497d 100644 --- a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/service/saledelivery/SaleDeliveryServiceImpl.java +++ b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/service/saledelivery/SaleDeliveryServiceImpl.java @@ -165,13 +165,6 @@ public class SaleDeliveryServiceImpl implements SaleDeliveryService { List detailList = saleDeliveryDetailMapper.selectBySaleDeliveryId(id); // 转换为子表VO列表 saleDeliveryVO.setDetailList(BeanUtils.toBean(detailList, SaleDeliveryDetailSaveReqVO.class)); - for (SaleDeliveryDetailSaveReqVO saleDeliveryDetailSaveReqVO : saleDeliveryVO.getDetailList()) { - ProStorageInventoryDO storageInventoryDO = proStorageInventoryMapper.selectById(saleDeliveryDetailSaveReqVO.getTwmStorageDetailId()); - if (storageInventoryDO != null) { - saleDeliveryDetailSaveReqVO.setStockQty(storageInventoryDO.getYardQty()); - saleDeliveryDetailSaveReqVO.setStockBag(storageInventoryDO.getPackQty()); - } - } return saleDeliveryVO; } @@ -217,7 +210,8 @@ public class SaleDeliveryServiceImpl implements SaleDeliveryService { // 存入 proStorageLogService for (SaleDeliveryDetailDO saleDeliveryDetailDO : detailList) { ProStorageLogDO proStorageLogDO = ProStorageLogDO.builder() - .stockId(saleDeliveryDetailDO.getId()) +// .stockId(saleDeliveryDetailDO.getId()) +// .stockItemId(saleDeliveryDetailDO.getId()) .description("销售出库") .status("2") .storeHouseId(saleDeliveryDetailDO.getStoreHouseId()) @@ -235,7 +229,6 @@ public class SaleDeliveryServiceImpl implements SaleDeliveryService { .operatorQty(saleDeliveryDetailDO.getDeliveriedQty()) .operatorType("2") .businessType("21") - .stockItemId(saleDeliveryDetailDO.getId()) .billDate(LocalDate.now()) .operatorId(saleDelivery.getDeliveryEmpId()) .operatorName(saleDelivery.getDeliveryEmpName()) @@ -272,8 +265,8 @@ public class SaleDeliveryServiceImpl implements SaleDeliveryService { } BigDecimal deliveriedQty = detail.getDeliveriedQty() != null ? detail.getDeliveriedQty() : BigDecimal.ZERO; - if (inventory.getUseQty().compareTo(deliveriedQty) < 0) { - throw exception("库存不足:当前可用数量[" + inventory.getUseQty() + "] < 发货数量[" + deliveriedQty + "]"); + if (inventory.getYardQty().compareTo(deliveriedQty) < 0) { + throw exception("库存不足:当前可用数量[" + inventory.getYardQty() + "] < 发货数量[" + deliveriedQty + "]"); } inventory.setUseQty(inventory.getUseQty().subtract(deliveriedQty)); diff --git a/mes-ui/mes-ui-admin-vue3/src/api/biz/purreturn/index.ts b/mes-ui/mes-ui-admin-vue3/src/api/biz/purreturn/index.ts index 376317f..3e2bacc 100644 --- a/mes-ui/mes-ui-admin-vue3/src/api/biz/purreturn/index.ts +++ b/mes-ui/mes-ui-admin-vue3/src/api/biz/purreturn/index.ts @@ -1,47 +1,47 @@ -import request from '@/config/axios' - -export interface PurReturnVO { - id: number - purReturnNo: string - receiptDate: localdate - supplierId: number - supplierName: string - purStatus: string - remark: string - purReceiptId: number - purReceiptNo: string - returnEmpId: number - returnEmpName: string - twmStorageId: number - billType: string -} - -// 查询采购退料单主分页 -export const getPurReturnPage = async (params) => { - return await request.get({ url: `/biz/pur-return/page`, params }) -} - -// 查询采购退料单主详情 -export const getPurReturn = async (id: number) => { - return await request.get({ url: `/biz/pur-return/get?id=` + id }) -} - -// 新增采购退料单主 -export const createPurReturn = async (data: PurReturnVO) => { - return await request.post({ url: `/biz/pur-return/create`, data }) -} - -// 修改采购退料单主 -export const updatePurReturn = async (data: PurReturnVO) => { - return await request.put({ url: `/biz/pur-return/update`, data }) -} - -// 删除采购退料单主 -export const deletePurReturn = async (id: number) => { - return await request.delete({ url: `/biz/pur-return/delete?id=` + id }) -} - -// 导出采购退料单主 Excel -export const exportPurReturn = async (params) => { - return await request.download({ url: `/biz/pur-return/export-excel`, params }) -} \ No newline at end of file +import request from '@/config/axios' + +export interface PurReturnVO { + id: number + purReturnNo: string + receiptDate: localdate + supplierId: number + supplierName: string + returnStatus: string + remark: string + purReceiptId: number + purReceiptNo: string + returnEmpId: number + returnEmpName: string + twmStorageId: number + billType: string +} + +// 查询采购退料单主分页 +export const getPurReturnPage = async (params) => { + return await request.get({ url: `/biz/pur-return/page`, params }) +} + +// 查询采购退料单主详情 +export const getPurReturn = async (id: number) => { + return await request.get({ url: `/biz/pur-return/get?id=` + id }) +} + +// 新增采购退料单主 +export const createPurReturn = async (data: PurReturnVO) => { + return await request.post({ url: `/biz/pur-return/create`, data }) +} + +// 修改采购退料单主 +export const updatePurReturn = async (data: PurReturnVO) => { + return await request.put({ url: `/biz/pur-return/update`, data }) +} + +// 删除采购退料单主 +export const deletePurReturn = async (id: number) => { + return await request.delete({ url: `/biz/pur-return/delete?id=` + id }) +} + +// 导出采购退料单主 Excel +export const exportPurReturn = async (params) => { + return await request.download({ url: `/biz/pur-return/export-excel`, params }) +} diff --git a/mes-ui/mes-ui-admin-vue3/src/types/auto-imports.d.ts b/mes-ui/mes-ui-admin-vue3/src/types/auto-imports.d.ts index 66aeaec..f525c74 100644 --- a/mes-ui/mes-ui-admin-vue3/src/types/auto-imports.d.ts +++ b/mes-ui/mes-ui-admin-vue3/src/types/auto-imports.d.ts @@ -7,8 +7,6 @@ export {} declare global { const DICT_TYPE: typeof import('@/utils/dict')['DICT_TYPE'] const EffectScope: typeof import('vue')['EffectScope'] - const ElMessage: typeof import('element-plus/es')['ElMessage'] - const ElMessageBox: typeof import('element-plus/es')['ElMessageBox'] const computed: typeof import('vue')['computed'] const createApp: typeof import('vue')['createApp'] const customRef: typeof import('vue')['customRef'] diff --git a/mes-ui/mes-ui-admin-vue3/src/views/biz/purreturn/PurReceiptSelectDialog.vue b/mes-ui/mes-ui-admin-vue3/src/views/biz/purreturn/PurReceiptSelectDialog.vue index 17b28d2..40d76cc 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/biz/purreturn/PurReceiptSelectDialog.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/biz/purreturn/PurReceiptSelectDialog.vue @@ -92,7 +92,7 @@