src/main/java/com/ruoyi/common/enums/StockInQualifiedRecordTypeEnum.java
@@ -11,7 +11,8 @@ PRODUCTION_REPORT_STOCK_IN("2", "生产报工-入库"), PURCHASE_STOCK_IN("7", "采购-入库"), QUALITYINSPECT_STOCK_IN("6", "质检-合格入库"), DEFECTIVE_PASS("11", "不合格-让步放行"); DEFECTIVE_PASS("11", "不合格-让步放行"), RETURN_HE_IN("14", "销售退货-合格入库"); private final String code; src/main/java/com/ruoyi/common/enums/StockInUnQualifiedRecordTypeEnum.java
@@ -10,7 +10,8 @@ DEFECTIVE_SCRAP("4", "不合格处理-报废"), PRODUCTION_SCRAP("5", "生产报工-报废"), CUSTOMIZATION_UNSTOCK_IN("9", "不合格自定义入库"), QUALITYINSPECT_UNSTOCK_IN("12", "质检-不合格入库"); QUALITYINSPECT_UNSTOCK_IN("12", "质检-不合格入库"), RETURN_UNSTOCK_IN("15", "销售退货-不合格入库"); private final String code; src/main/java/com/ruoyi/procurementrecord/pojo/ReturnManagement.java
@@ -7,6 +7,7 @@ import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.Date; @@ -44,6 +45,12 @@ @ApiModelProperty("制单人") private String maker; @ApiModelProperty("退货原因") private String returnReason; @ApiModelProperty("退款总额") private BigDecimal refundAmount; @ApiModelProperty("制单时间") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") src/main/java/com/ruoyi/procurementrecord/pojo/ReturnSaleProduct.java
@@ -1,6 +1,7 @@ package com.ruoyi.procurementrecord.pojo; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; @@ -26,6 +27,9 @@ private static final long serialVersionUID = 1L; @ApiModelProperty("产品规格id") private Long productModelId; @ApiModelProperty("主键id") @TableId(value = "id", type = IdType.AUTO) private Long id; @@ -39,6 +43,18 @@ @ApiModelProperty("退货产品数量") private BigDecimal num; @ApiModelProperty("退货产品单价") private BigDecimal price; @ApiModelProperty("退货产品金额") private BigDecimal amount; @ApiModelProperty("退货状态 0 未退回 1已退货") private Integer status; @ApiModelProperty("备注") private String remark; @ApiModelProperty("是否有质量问题(1-是 2-否)") private Integer isQuality; } src/main/java/com/ruoyi/procurementrecord/service/impl/ReturnManagementServiceImpl.java
@@ -5,8 +5,12 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.account.dto.SalesRefundAmountOrderDto; import com.ruoyi.account.mapper.AccountExpenseMapper; import com.ruoyi.account.pojo.AccountExpense; import com.ruoyi.account.pojo.SalesRefundAmountOrder; import com.ruoyi.account.service.SalesRefundAmountOrderService; import com.ruoyi.common.enums.StockInQualifiedRecordTypeEnum; import com.ruoyi.common.enums.StockInUnQualifiedRecordTypeEnum; import com.ruoyi.common.utils.OrderUtils; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.procurementrecord.dto.ReturnManagementDto; @@ -16,6 +20,7 @@ import com.ruoyi.procurementrecord.pojo.ReturnSaleProduct; import com.ruoyi.procurementrecord.service.ReturnManagementService; import com.ruoyi.procurementrecord.service.ReturnSaleProductService; import com.ruoyi.procurementrecord.utils.StockUtils; import com.ruoyi.sales.dto.SalesLedgerDto; import com.ruoyi.sales.dto.SalesLedgerProductDto; import com.ruoyi.sales.mapper.SalesLedgerMapper; @@ -30,6 +35,7 @@ import java.math.BigDecimal; import java.util.ArrayList; import java.util.Date; import java.util.List; /** @@ -51,6 +57,12 @@ private SalesLedgerMapper salesLedgerMapper; @Autowired private SalesRefundAmountOrderService salesRefundAmountOrderService; @Autowired private StockUtils stockUtils; @Autowired private AccountExpenseMapper accountExpenseMapper; @Override public IPage<ReturnManagementDto> listPage(Page page, ReturnManagementDto returnManagement) { @@ -112,10 +124,32 @@ for (ReturnSaleProductDto returnSaleProduct : list) { bigDecimal = bigDecimal.add(returnSaleProduct.getPrice()); salesRefundAmountOrder.setRefundedAmount(new BigDecimal(0)); // 是否有质量问题 if (returnSaleProduct.getIsQuality() == 1) { // 有质量问题,入不合格库 stockUtils.addUnStock(returnSaleProduct.getProductModelId(),returnSaleProduct.getNum(), StockInUnQualifiedRecordTypeEnum.RETURN_UNSTOCK_IN.getCode(),returnSaleProduct.getId()); }else{ // 无质量问题,入合格库 stockUtils.addStock(returnSaleProduct.getProductModelId(),returnSaleProduct.getNum(), StockInQualifiedRecordTypeEnum.RETURN_HE_IN.getCode(),returnSaleProduct.getId()); } } salesRefundAmountOrder.setRefundAmount(bigDecimal); salesRefundAmountOrder.setNotRefundedAmount(salesRefundAmountOrder.getRefundedAmount()); salesRefundAmountOrderService.addSalesRefundAmountOrderDto(salesRefundAmountOrder); // 分批退款 // salesRefundAmountOrderService.addSalesRefundAmountOrderDto(salesRefundAmountOrder); // 和财务联动,新增支出 AccountExpense accountExpense = new AccountExpense(); accountExpense.setBusinessType(3); accountExpense.setExpenseMoney(byId.getRefundAmount()); accountExpense.setBusinessId(byId.getId()); accountExpense.setExpenseDate(new Date()); accountExpense.setExpenseMethod("3"); accountExpense.setExpenseType("5"); accountExpense.setExpenseDescribed("销售退货退款"); accountExpense.setNote(byId.getReturnReason()); accountExpense.setInputUser(SecurityUtils.getLoginUser().getNickName()); accountExpense.setInputTime(new Date()); accountExpenseMapper.insert(accountExpense); return true; } src/main/resources/mapper/procurementrecord/ReturnSaleProductMapper.xml
@@ -13,6 +13,7 @@ <select id="listReturnSaleProductDto" resultType="com.ruoyi.procurementrecord.dto.ReturnSaleProductDto"> SELECT slp.product_category as product_name, slp.specification_model as model, slp.unit as unit, rsp.*, GREATEST(slp.quantity - COALESCE(rs.total_return_num, 0), 0) AS un_quantity, COALESCE(rs.total_return_num, 0) AS total_return_num src/main/resources/mapper/sales/ShippingInfoMapper.xml
@@ -84,6 +84,6 @@ <select id="getShippingInfoByCustomerName" resultType="com.ruoyi.sales.pojo.ShippingInfo"> select * from shipping_info si left join sales_ledger sl on si.sales_ledger_id = sl.id where sl.customer_name = #{customerName} where si.status = '已发货' and sl.customer_name = #{customerName} </select> </mapper>