Просмотр исходного кода

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	src/main/java/com/dk/mdm/service/ivt/inventory/InventoryService.java
姜永辉 2 лет назад
Родитель
Сommit
822e50db9f

+ 2 - 2
src/main/java/com/dk/mdm/controller/mac/AccountController.java

@@ -11,8 +11,8 @@ import com.dk.mdm.service.mac.AccountService;
 
 @Api(tags = "账款对象API接口")
 @RestController
-@RequestMapping("/account")
-public class AccountController{
+@RequestMapping("/mac/account")
+public class AccountController extends BaseController<Account>{
 
     public BaseService<Account> getService() {
         return accountService;

+ 21 - 0
src/main/java/com/dk/mdm/infrastructure/convert/ivt/InOutRecordConvert.java

@@ -0,0 +1,21 @@
+package com.dk.mdm.infrastructure.convert.ivt;
+
+import com.dk.mdm.model.pojo.ivt.InOutRecord;
+import com.dk.mdm.model.vo.ivt.InOutRecordVO;
+import org.mapstruct.Mapper;
+
+/**
+ * @desc   : 库存流水实体类型转换
+ * @date   : 2024/3/21 14:48
+ * @author : 寇珊珊
+ */
+@Mapper(componentModel = "spring")
+public interface InOutRecordConvert {
+
+    /**
+     * @desc   : VO转pojo
+     * @date   : 2024/3/7 14:31
+     * @author : 寇珊珊
+     */
+    InOutRecord convertToPo(InOutRecordVO inOutRecordVO);
+}

+ 21 - 0
src/main/java/com/dk/mdm/infrastructure/convert/ivt/InventoryBatchConvert.java

@@ -0,0 +1,21 @@
+package com.dk.mdm.infrastructure.convert.ivt;
+
+import com.dk.mdm.model.pojo.ivt.InventoryBatch;
+import com.dk.mdm.model.vo.ivt.InventoryBatchVO;
+import org.mapstruct.Mapper;
+
+/**
+ * @desc   : 存货批次明细实体类型转换
+ * @date   : 2024/3/21 14:48
+ * @author : 寇珊珊
+ */
+@Mapper(componentModel = "spring")
+public interface InventoryBatchConvert {
+
+    /**
+     * @desc   : VO转pojo
+     * @date   : 2024/3/7 14:31
+     * @author : 寇珊珊
+     */
+    InventoryBatch convertToPo(InventoryBatchVO inventoryBatchVO);
+}

+ 3 - 2
src/main/java/com/dk/mdm/mapper/common/CommonMapper.xml

@@ -1310,7 +1310,7 @@
                                                 on tpo.order_id = tpmo.order_id
                             where tpmo.flg_valid
                               and tpmo.owner_type = any (array ['归属类型-主部门' , '归属类型-从部门'])
-                              and tpo.order_id = #{orderId}) mo
+                              and tpo.order_id = #{orderId} ::uuid) mo
                            on mo.owner_id = t.org_id
         where t.flg_valid
 
@@ -1342,7 +1342,8 @@
                                                 on tpo.order_id = tpmo.order_id
                             where tpmo.flg_valid
                               and tpmo.owner_type = any (array ['归属类型-主员工' , '归属类型-从员工'])
-                              and tpo.order_id = #{orderId}) mo
+                              and tpo.order_id = #{orderId} ::uuid
+                     ) mo
                            on mo.owner_id = t.staff_id
         where t.flg_valid
 

+ 8 - 1
src/main/java/com/dk/mdm/mapper/ivt/InventoryMapper.java

@@ -37,6 +37,13 @@ public interface InventoryMapper extends BaseMapper<Inventory>{
      * @author : 寇珊珊
      */
     Long countByCond(InventoryQuery inventoryQuery);
-	
+
+
+    /**
+     * @desc   : 条件查询--查单条
+     * @date   : 2024/3/20 17:00
+     * @author : 寇珊珊
+     */
+   InventoryResponse  selectByOther(InventoryQuery inventoryQuery);
 }
 

+ 22 - 0
src/main/java/com/dk/mdm/mapper/ivt/InventoryMapper.xml

@@ -212,4 +212,26 @@
             )
         </foreach>
     </insert>
+
+    <!-- 查询表dkic_b.t_psi_inventory,(条件查询+分页)列表 -->
+    <select id="selectByOther" resultMap="BaseResultMapResponse">
+        SELECT
+        <include refid="Base_Column_List_Response"/>
+        FROM dkic_b.t_psi_inventory tpi
+        <where>
+            <if test="whId != null and whId != ''">
+                AND tpi.wh_id = #{whId}::uuid
+            </if>
+            <if test="skuId != null and skuId != ''">
+                AND tpi.sku_id = #{skuId}::uuid
+            </if>
+            <if test="nonStdCode != null and nonStdCode != ''">
+                AND tpi.non_std_code = #{nonStdCode}
+            </if>
+            <if test="nonStdCode == null and nonStdCode == ''">
+                AND tpi.non_std_code = '-'
+            </if>
+        </where>
+    </select>
+
 </mapper>

+ 4 - 3
src/main/java/com/dk/mdm/model/pojo/ivt/InOutRecord.java

@@ -17,6 +17,7 @@ import lombok.experimental.Accessors;
 
 import java.io.Serializable;
 import java.math.BigDecimal;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 
 /**
@@ -126,9 +127,9 @@ public class InOutRecord extends PageInfo<InOutRecord> implements Serializable {
      */
     @Excel(name = "入库日期")
     @ApiModelProperty(value = "入库日期")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
-    @TableField(typeHandler = TimestampTypeHandler.class)
-    private LocalDateTime accDate;
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @TableField(typeHandler = TimestampTypeHandler.class, updateStrategy = FieldStrategy.IGNORED)
+    private LocalDate accDate;
 
 
     /**

+ 4 - 4
src/main/java/com/dk/mdm/model/query/ivt/InOutRecordQuery.java

@@ -17,6 +17,7 @@ import lombok.experimental.Accessors;
 
 import java.io.Serializable;
 import java.math.BigDecimal;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 
 /**
@@ -109,10 +110,9 @@ public class InOutRecordQuery extends PageInfo<InOutRecordQuery>  {
      * 入库日期
      */
     @ApiModelProperty(value = "入库日期")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
-    @TableField(typeHandler = TimestampTypeHandler.class)
-    private LocalDateTime accDate;
-
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @TableField(typeHandler = TimestampTypeHandler.class, updateStrategy = FieldStrategy.IGNORED)
+    private LocalDate accDate;
 
     /**
      * 有效标识 (1:正常 0:停用)

+ 4 - 3
src/main/java/com/dk/mdm/model/response/ivt/InOutRecordResponse.java

@@ -17,6 +17,7 @@ import lombok.experimental.Accessors;
 
 import java.io.Serializable;
 import java.math.BigDecimal;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 
 /**
@@ -117,9 +118,9 @@ public class InOutRecordResponse  {
      */
     @Excel(name = "入库日期")
     @ApiModelProperty(value = "入库日期")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
-    @TableField(typeHandler = TimestampTypeHandler.class)
-    private LocalDateTime accDate;
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @TableField(typeHandler = TimestampTypeHandler.class, updateStrategy = FieldStrategy.IGNORED)
+    private LocalDate accDate;
 
 
     /**

+ 50 - 12
src/main/java/com/dk/mdm/model/vo/ivt/InOutRecordVO.java

@@ -1,22 +1,16 @@
 package com.dk.mdm.model.vo.ivt;
 
-import cn.afterturn.easypoi.excel.annotation.Excel;
-import com.baomidou.mybatisplus.annotation.*;
-import com.dk.common.infrastructure.annotaiton.ExportTitle;
+import com.baomidou.mybatisplus.annotation.FieldStrategy;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.dk.common.infrastructure.handler.TimestampTypeHandler;
 import com.dk.common.infrastructure.handler.UuidTypeHandler;
-import com.dk.common.model.pojo.PageInfo;
 import com.fasterxml.jackson.annotation.JsonFormat;
-import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
-import lombok.AllArgsConstructor;
 import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.NoArgsConstructor;
 import lombok.experimental.Accessors;
 
-import java.io.Serializable;
 import java.math.BigDecimal;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 
 /**
@@ -109,9 +103,9 @@ public class InOutRecordVO  {
      * 入库日期
      */
     @ApiModelProperty(value = "入库日期")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
-    @TableField(typeHandler = TimestampTypeHandler.class)
-    private LocalDateTime accDate;
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @TableField(typeHandler = TimestampTypeHandler.class, updateStrategy = FieldStrategy.IGNORED)
+    private LocalDate accDate;
 
 
     /**
@@ -146,6 +140,50 @@ public class InOutRecordVO  {
      */
 
 
+    @ApiModelProperty(value = "库存类型(入库,出库,销退出,采退入,移动)")
+    private String inventoryType;
+
+    @TableField(typeHandler = UuidTypeHandler.class)
+    @ApiModelProperty(value = "入库单id")
+    private String intoId;
+
+    @ApiModelProperty(value = "入库日期")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @TableField(typeHandler = TimestampTypeHandler.class, updateStrategy = FieldStrategy.IGNORED)
+    private LocalDate intoDate;
+
+    @ApiModelProperty(value = "已出库数量")
+    private BigDecimal outQty;
+
+    @TableField(typeHandler = UuidTypeHandler.class)
+    @ApiModelProperty(value = "出库单id")
+    private String outId;
+
+    @ApiModelProperty(value = "出库价")
+    private BigDecimal  priceOut;
+
+    @ApiModelProperty(value = "出库金额")
+    private BigDecimal  outAmt;
+
+    @ApiModelProperty(value = "出库日期")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @TableField(typeHandler = TimestampTypeHandler.class, updateStrategy = FieldStrategy.IGNORED)
+    private LocalDate outDate;
+
+    @TableField(typeHandler = UuidTypeHandler.class)
+    @ApiModelProperty(value = "明细id(出库,入库,调整单)")
+    private String ItemId;
+
+    @ApiModelProperty(value = "仓库ID")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String whId;
+
+    @ApiModelProperty(value = "成本单价")
+    private BigDecimal costPrice;
+
+
+
+
     private static final long serialVersionUID = 1L;
 
 }

+ 21 - 0
src/main/java/com/dk/mdm/model/vo/ivt/InventoryBatchVO.java

@@ -147,6 +147,27 @@ public class InventoryBatchVO  {
      * @TableField(exist = false)
      */
 
+    @TableField(typeHandler = UuidTypeHandler.class)
+    @ApiModelProperty(value = "入库单id")
+    private String intoId;
+
+    @ApiModelProperty(value = "入库价")
+    private BigDecimal priceInto;
+
+    @ApiModelProperty(value = "已入库数量")
+    private BigDecimal intoQty;
+
+    @ApiModelProperty(value = "已出库数量")
+    private BigDecimal outQty;
+
+    @TableField(typeHandler = UuidTypeHandler.class)
+    @ApiModelProperty(value = "出库单id")
+    private String outId;
+
+    @TableField(typeHandler = UuidTypeHandler.class)
+    @ApiModelProperty(value = "明细id(出库,入库,调整单)")
+    private String ItemId;
+
 
     private static final long serialVersionUID = 1L;
 

+ 2 - 0
src/main/java/com/dk/mdm/model/vo/ivt/InventoryVO.java

@@ -137,6 +137,8 @@ public class InventoryVO {
      */
 
 
+
+
     private static final long serialVersionUID = 1L;
 
 }

+ 283 - 58
src/main/java/com/dk/mdm/service/ivt/inventory/InventoryService.java

@@ -2,8 +2,17 @@ package com.dk.mdm.service.ivt.inventory;
 
 import com.dk.common.infrastructure.annotaiton.Pagination;
 import com.dk.common.model.pojo.PageList;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.dk.common.exception.BaseBusinessException;
+import com.dk.common.infrastructure.enums.ErrorCodeEnum;
+import com.dk.common.response.ResponseCodeEnum;
 import com.dk.common.response.ResponseResultUtil;
 import com.dk.common.response.ResponseResultVO;
+import com.dk.mdm.infrastructure.convert.ivt.InOutRecordConvert;
+import com.dk.mdm.mapper.ivt.InOutRecordMapper;
+import com.dk.mdm.model.pojo.ivt.InOutRecord;
 import com.dk.mdm.model.pojo.ivt.Inventory;
 import com.dk.mdm.mapper.ivt.InventoryMapper;
 import com.dk.common.service.BaseService;
@@ -12,75 +21,291 @@ import com.dk.mdm.model.query.ivt.InventoryQuery;
 import com.dk.mdm.model.query.ivt.OutboundQuery;
 import com.dk.mdm.model.response.ivt.InboundResponse;
 import com.dk.mdm.model.response.ivt.InventoryResponse;
+import com.dk.mdm.model.query.ivt.InventoryQuery;
+import com.dk.mdm.model.response.ivt.InventoryResponse;
+import com.dk.mdm.model.vo.ivt.InOutRecordVO;
+import com.dk.mdm.model.vo.ivt.InOutRecordVO;
 import com.dk.mdm.model.vo.ivt.InventoryVO;
 import org.springframework.stereotype.Service;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
+import com.dk.common.infrastructure.constant.Constant;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
 
 /**
- * @desc   : 库存明细
- * @date   : 2024/3/20 13:41
  * @author : 寇珊珊
+ * @desc : 库存明细
+ * @date : 2024/3/20 13:41
  */
 @Service
 @Transactional
 public class InventoryService extends BaseService<Inventory> {
 
-	@Override
-	public BaseMapper<Inventory> getRepository() {
-		return inventoryMapper;
-	}
-
-	@Autowired
-	private InventoryMapper inventoryMapper;
-
-
-	/**
-	 * @desc : 条件查询
-	 * @date : 2024/3/18 11:20
-	 * @author : 寇珊珊
-	 */
-	@Pagination
-	public ResponseResultVO<PageList<InventoryResponse>> selectByCond(InventoryQuery query) {
-		return super.mergeListWithCount(query, inventoryMapper.selectByCond(query),
-				inventoryMapper.countByCond(query));
-	}
-	
-	
-	/**
-	 * @desc   : 新建
-	 * @date   : 2024/3/20 13:46
-	 * @author : 寇珊珊
-	 */
-	@Transactional(
-			rollbackFor = {Exception.class}
-	)
-	public ResponseResultVO<?> insertInbound(InventoryVO inventoryVO) {
-		//1.判断库存数据是否存在,存在更细,不存在新建
-		
-
-		//2,库存明细插入
-
-		//3.库存批次明细插入
-		
-		//4.存货流水插入
-		return ResponseResultUtil.success();
-	}
-
-	/**
-	 * @desc   : 校验库存是否存在数据
-	 * @date   : 2024/3/20 15:32
-	 * @author : 寇珊珊
-	 */
-	@Transactional(
-			rollbackFor = {Exception.class}
-	)
-	public Boolean checkInventory(InventoryVO inventoryVO) {
-		Boolean  flag = false;
-
-
-		return flag;
-		
-	}
+    @Override
+    public BaseMapper<Inventory> getRepository() {
+        return inventoryMapper;
+    }
+
+    @Autowired
+    private InventoryMapper inventoryMapper;
+
+    @Autowired
+    private InOutRecordMapper inOutRecordMapper;
+
+    @Autowired
+    private InOutRecordConvert inOutRecordConvert;
+
+
+    /**
+     * @desc : 新建
+     * @date : 2024/3/20 13:46
+     * @author : 寇珊珊
+     */
+    @Transactional(
+            rollbackFor = {Exception.class}
+    )
+    public ResponseResultVO<?> insertInbound(Map<String, Object> map) {
+        //region map转json
+        JSONObject total = (JSONObject) JSON.toJSON(map.get("total"));
+        JSONArray intoDetail = new JSONArray();
+        JSONArray outDetail = new JSONArray();
+        //入库
+        if (map.get("intoDetail") != null) {
+            intoDetail = (JSONArray) JSON.toJSON(map.get("intoDetail"));
+        }
+        //出库
+        if (map.get("outDetail") != null) {
+            outDetail = (JSONArray) JSON.toJSON(map.get("outDetail"));
+        }
+        //endregion
+
+        //region json转实体
+        //入库集合
+        List<InOutRecordVO> intoList = new ArrayList<>();
+        //出库集合
+        List<InOutRecordVO> outList = new ArrayList<>();
+        //region   明细 取值
+        //入库操作库存
+        if (intoDetail.size() > 0 && outDetail.size() == 0) {
+            //赋值并校验库存流水数据
+            intoList = intoDetail.toJavaList(InOutRecordVO.class);
+            intoList = this.setInOutRecordMessageByInto(intoList);
+            //新建库存流水
+            this.insertInboundRecord(intoList);
+        }
+        //出库操作库存
+        else if (outDetail.size() > 0 && intoDetail.size() == 0) {
+            //赋值并校验库存流水数据
+            outList = outDetail.toJavaList(InOutRecordVO.class);
+            outList = this.setInOutRecordMessageByOut(outList);
+            //新建库存流水
+            this.insertInboundRecord(outList);
+        }
+        //库位移动操作库存
+        else if (intoDetail.size() > 0 && outDetail.size() > 0) {
+            //赋值并校验库存流水数据
+            intoList = intoDetail.toJavaList(InOutRecordVO.class);
+            intoList = this.setInOutRecordMessageByInto(intoList);
+            //赋值并校验库存流水数据
+            outList = outDetail.toJavaList(InOutRecordVO.class);
+            outList = this.setInOutRecordMessageByOut(outList);
+            //新建库存流水
+            this.insertInboundRecord(intoList);
+            this.insertInboundRecord(outList);
+        } else {
+            throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.NO_MESSAGE_OPERATE_INVENTORY.getMessage());
+        }
+        //endregion
+        //endregion
+
+
+        //region 操作库存
+
+        //endregion
+
+
+
+        //2,库存明细插入
+
+        //3.库存批次明细插入
+
+        //4.存货流水插入
+        return ResponseResultUtil.success();
+    }
+
+    /**
+     * @desc : 入库----赋值并校验库存流水数据
+     * @date : 2024/3/21 16:04
+     * @author : 寇珊珊
+     */
+    @Transactional(
+            rollbackFor = {Exception.class}
+    )
+    public List<InOutRecordVO> setInOutRecordMessageByInto(List<InOutRecordVO> inOutRecordVOList) {
+        //赋值
+        for (InOutRecordVO inOutRecordVO : inOutRecordVOList) {
+            //业务单据
+            inOutRecordVO.setBiznisType(Constant.InventoryDocCode.INTOBOUND.getValue());
+            //业务单ID
+            inOutRecordVO.setBiznisId(inOutRecordVO.getIntoId());
+            //业务单明细ID
+            inOutRecordVO.setBiznisItemId(inOutRecordVO.getItemId());
+            //入库价
+            inOutRecordVO.setPriceInto(inOutRecordVO.getPriceInto());
+            //入库日期
+            inOutRecordVO.setAccDate(inOutRecordVO.getIntoDate());
+        }
+        //region 校验是否传库存需要的数据
+        this.checkInventory(inOutRecordVOList);
+        //endregion
+
+        return inOutRecordVOList;
+    }
+
+    /**
+     * @desc : 出库----赋值并校验库存流水数据
+     * @date : 2024/3/21 16:06
+     * @author : 寇珊珊
+     */
+    @Transactional(
+            rollbackFor = {Exception.class}
+    )
+    public List<InOutRecordVO> setInOutRecordMessageByOut(List<InOutRecordVO> inOutRecordVOList) {
+        //赋值
+        for (InOutRecordVO inOutRecordVO : inOutRecordVOList) {
+            //业务单据
+            inOutRecordVO.setBiznisType(Constant.InventoryDocCode.OUTBOUND.getValue());
+            //业务单ID
+            inOutRecordVO.setBiznisId(inOutRecordVO.getOutId());
+            //业务单明细ID
+            inOutRecordVO.setBiznisItemId(inOutRecordVO.getItemId());
+            //入库价
+            inOutRecordVO.setPriceInto(inOutRecordVO.getPriceOut());
+            //入库数量
+            inOutRecordVO.setIntoQty(inOutRecordVO.getOutQty());
+            //入库金额
+            inOutRecordVO.setIntoAmt(inOutRecordVO.getOutAmt());
+            //入库日期
+            inOutRecordVO.setAccDate(inOutRecordVO.getOutDate());
+        }
+        //region 校验是否传库存需要的数据
+        this.checkInventory(inOutRecordVOList);
+        //endregion
+
+        return inOutRecordVOList;
+    }
+
+    /**
+     * @desc : 校验是否传库存需要的数据
+     * @date : 2024/3/20 15:32
+     * @author : 寇珊珊
+     */
+    @Transactional(
+            rollbackFor = {Exception.class}
+    )
+    public void checkInventory(List<InOutRecordVO> inOutRecordVOList) {
+        //校验明细中是否存在为空数据
+        if (inOutRecordVOList.size() == 0) {
+            throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.DETAIL_LIST_IS_NUL.getMessage());
+        }
+        for (InOutRecordVO inventoryBatchVO : inOutRecordVOList) {
+            //商品ID
+            if (inventoryBatchVO.getSkuId() == null || "".equals(inventoryBatchVO.getSkuId())) {
+                throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.SKU_IS_NULL.getMessage());
+            }
+            //仓库ID
+            if (inventoryBatchVO.getWhId() == null || "".equals(inventoryBatchVO.getWhId())) {
+                throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.WAREHOUSE_IS_NULL.getMessage());
+            }
+//			//单价不可为空
+//			if(inventoryBatchVO.getCostPrice()==null || inventoryBatchVO.getCostPrice().compareTo(BigDecimal.ZERO)==0 ){
+//				throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.COST_PRICE_IS_NULL.getMessage());
+//			}
+            //总单id不可为空
+            if (inventoryBatchVO.getBiznisId() == null || "".equals(inventoryBatchVO.getBiznisId())) {
+                throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.FROM_ID_IS_NULL.getMessage());
+            }
+            //明细id不可为空
+            if (inventoryBatchVO.getBiznisItemId() == null || "".equals(inventoryBatchVO.getBiznisItemId())) {
+                throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.FROM_ITEM_ID_IS_NULL.getMessage());
+            }
+            //入库价不为空
+            if (inventoryBatchVO.getPriceInto() == null) {
+                throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.COST_PRICE_IS_NULL.getMessage());
+            }
+            //数量不为空
+            if (inventoryBatchVO.getIntoQty() == null) {
+                throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.QTY_IS_NULL.getMessage());
+            }
+            //金额不为空
+            if (inventoryBatchVO.getIntoAmt() == null) {
+                throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.AMT_IS_NULL.getMessage());
+            }
+        }
+        //endregion
+    }
+
+    /**
+     * @desc : 新建库存流水
+     * @date : 2024/3/21 14:47
+     * @author : 寇珊珊
+     */
+    @Transactional(
+            rollbackFor = {Exception.class}
+    )
+    public void insertInboundRecord(List<InOutRecordVO> inOutRecordVOList) {
+        //循环传入的明细
+        for (InOutRecordVO inventoryBatchVO : inOutRecordVOList) {
+            //实体转换
+            InOutRecord inOutRecord = inOutRecordConvert.convertToPo(inventoryBatchVO);
+            //新建
+            inOutRecordMapper.insert(inOutRecord);
+        }
+    }
+
+    /**
+     * @desc : 新建库存
+     * @date : 2024/3/21 14:47
+     * @author : 寇珊珊
+     */
+    @Transactional(
+            rollbackFor = {Exception.class}
+    )
+    public void insertInventory(List<InOutRecordVO> inOutRecordVOList) {
+        //判断库存数据是否存在,存在更细,不存在新建
+        for (InOutRecordVO inOutRecordVO : inOutRecordVOList) {
+            //根据sku,仓库,非标号查询
+            InventoryResponse inventoryResponse = inventoryMapper.selectByOther(new InventoryQuery()
+                    .setSkuId(inOutRecordVO.getSkuId())
+                    .setWhId(inOutRecordVO.getWhId())
+                    .setNonStdCode(inOutRecordVO.getNonStdCode()));
+            //不存在  新建
+            if (inventoryResponse == null) {
+
+            }
+            //存在 出库校验库存是否充足重写updateById,入库加入数据
+            else {
+
+            }
+        }
+
+
+    }
+
+    /**
+     * @desc : 新建库存批次明细
+     * @date : 2024/3/21 14:47
+     * @author : 寇珊珊
+     */
+    @Transactional(
+            rollbackFor = {Exception.class}
+    )
+    public void insertInventoryBatch(List<InOutRecordVO> inOutRecordVOList) {
+
+    }
 
 }

+ 7 - 12
src/main/java/com/dk/mdm/service/mac/RecPayService.java

@@ -1,9 +1,12 @@
 package com.dk.mdm.service.mac;
 
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.dk.common.exception.BaseBusinessException;
 import com.dk.common.infrastructure.annotaiton.Pagination;
 import com.dk.common.infrastructure.constant.Constant;
+import com.dk.common.infrastructure.enums.ErrorCodeEnum;
 import com.dk.common.model.pojo.PageList;
+import com.dk.common.response.ResponseCodeEnum;
 import com.dk.common.response.ResponseResultUtil;
 import com.dk.common.response.ResponseResultVO;
 import com.dk.mdm.infrastructure.convert.mac.RecPayConvert;
@@ -177,7 +180,10 @@ public class RecPayService extends BaseService<RecPay> {
     public ResponseResultVO<?> insertRefund(RecPayVO recPayVO) {
 
         // 查总账,看可退金额是否满足
-
+        Account accountForUpdate = accountMapper.selectByIdForUpdate(recPayVO.getObjectId());
+        if (accountForUpdate == null || accountForUpdate.getReceiptResidue().compareTo(recPayVO.getSumAmtRec().abs()) == -1) {
+            throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.RESIDUE_NO_LESS.getMessage());
+        }
 
         // 获取单号
         Map<String, Object> codeMap = commonService.getUniqueNoteCode(Constant.docNameConstant.RECPAY.getName(), false);
@@ -210,17 +216,6 @@ public class RecPayService extends BaseService<RecPay> {
             }
         }
 
-        // 插入账款总表
-        Account accountForUpdate = accountMapper.selectByIdForUpdate(recPayVO.getObjectId());
-
-        // 没有账款对象,需要新建
-        if (accountForUpdate == null) {
-            accountForUpdate = new Account();
-            accountForUpdate.setObjectId(recPayVO.getObjectId()).setObjectType(Constant.ObjectType.CUS.getName());
-            accountMapper.insert(accountForUpdate);
-            accountForUpdate = accountMapper.selectByIdForUpdate(recPayVO.getObjectId());
-        }
-
         // 更新账款总表上收款的相关字段
         Account accountUpdate = new Account();
         accountUpdate.setReceipt(accountForUpdate.getReceipt().add(recPayVO.getSumAmtRec()))// 总收款金额