Browse Source

采购订单生成采购入库单

koushanshan 1 year ago
parent
commit
97bc26ccc4

+ 10 - 0
src/main/java/com/dk/mdm/infrastructure/convert/ivt/InboundConvert.java

@@ -2,8 +2,11 @@ package com.dk.mdm.infrastructure.convert.ivt;
 
 import com.dk.mdm.model.pojo.ivt.Inbound;
 import com.dk.mdm.model.pojo.ivt.IntoReturn;
+import com.dk.mdm.model.vo.ivt.InboundItemVO;
 import com.dk.mdm.model.vo.ivt.InboundVO;
 import com.dk.mdm.model.vo.ivt.IntoReturnVO;
+import com.dk.mdm.model.vo.pur.PurchaseItemVO;
+import com.dk.mdm.model.vo.pur.PurchaseVO;
 import org.mapstruct.Mapper;
 
 /**
@@ -20,4 +23,11 @@ public interface InboundConvert {
      * @author : 寇珊珊
      */
     Inbound convertToPo(InboundVO inboundVO);
+
+    /**
+     * @desc   : 采购订单转入库单
+     * @date   : 2024/7/4 14:52
+     * @author : 寇珊珊
+     */
+    InboundVO convertPurchaseVOToInboundVO(PurchaseVO purchaseVO);
 }

+ 10 - 0
src/main/java/com/dk/mdm/infrastructure/convert/ivt/InboundItemConvert.java

@@ -5,6 +5,7 @@ import com.dk.mdm.model.pojo.ivt.InboundItem;
 import com.dk.mdm.model.response.ivt.InboundItemResponse;
 import com.dk.mdm.model.vo.ivt.InboundItemVO;
 import com.dk.mdm.model.vo.ivt.InboundVO;
+import com.dk.mdm.model.vo.pur.PurchaseItemVO;
 import org.mapstruct.Mapper;
 
 /**
@@ -35,4 +36,13 @@ public interface InboundItemConvert {
      * @author : 寇珊珊
      */
     InboundItemResponse  convertVOToRes(InboundItemVO inboundItemVO);
+
+    /**
+     * @desc   : 采购订单明细转入库单明细
+     * @date   : 2024/7/4 14:53
+     * @author : 寇珊珊
+     */
+    InboundItemVO  convertPurchaseItemVOToInboundItemVO(PurchaseItemVO purchaseItemVO);
+
+
 }

+ 4 - 8
src/main/java/com/dk/mdm/mapper/ivt/InboundMapper.xml

@@ -11,7 +11,7 @@
         return_amt, into_date, remarks, annex_paths, make_staff, make_time,
         receivable_id, flg_valid, cp_id, op_create_time, op_create_user_id,
         op_update_time, op_update_user_id, op_app_code, op_timestamp, op_db_user,wh_id,
-        into_reason,flg_auto_handle,flg_handle_setting,flg_neg_into
+        into_reason,flg_auto_handle,inbound_processing_flag
     </sql>
 
 
@@ -22,7 +22,7 @@
         sys.f_remove_zero(tpi.into_qty) as into_qty,
         tpi.into_amt, sys.f_remove_zero(tpi.return_qty) as return_qty, tpi.return_amt, tpi.into_date, tpi.remarks, tpi.annex_paths,
         tpi.make_staff, tpi.make_time, tpi.receivable_id, tpi.flg_valid, tpi.cp_id,
-        tpi.wh_id,tpi.into_reason,tpi.flg_auto_handle,tpi.flg_handle_setting,tpi.flg_neg_into
+        tpi.wh_id,tpi.into_reason,tpi.flg_auto_handle,tpi.inbound_processing_flag
     </sql>
 
 
@@ -62,8 +62,7 @@
         <result column="into_reason" property="intoReason" typeHandler="UuidTypeHandler"/>
         <result column="wh_id" property="whId"/>
         <result column="flg_auto_handle" property="flgAutoHandle"/>
-        <result column="flg_handle_setting" property="flgHandleSetting"/>
-        <result column="flg_neg_into" property="flgNegInto"/>
+        <result column="inbound_processing_flag" property="inboundProcessingFlag"/>
     </resultMap>
 
     <!-- response查询映射结果 -->
@@ -111,8 +110,7 @@
         <result column="cus_from_name" property="cusFromName" />
         <result column="return_address" property="returnAddress" />
         <result column="flg_auto_handle" property="flgAutoHandle"/>
-        <result column="flg_handle_setting" property="flgHandleSetting"/>
-        <result column="flg_neg_into" property="flgNegInto"/>
+        <result column="inbound_processing_flag" property="inboundProcessingFlag"/>
         <result column="pickup_date" property="pickupDate" typeHandler="TimestampTypeHandler"/>
         <result column="op_update_time" property="opUpdateTime" typeHandler="TimestampTypeHandler"/>
     </resultMap>
@@ -761,7 +759,6 @@
         tpi.into_reason,
         tpi.flg_valid,
         tpi.flg_auto_handle,
-        tpi.flg_handle_setting,
         tpi.op_update_time
     </sql>
     <sql id="Base_Column_List_Response_Out">
@@ -790,7 +787,6 @@
         tpo.out_reason as into_reason,
         tpo.flg_valid,
         tpo.flg_auto_handle,
-        tpo.flg_handle_setting,
         tpo.op_update_time
     </sql>
     <!-- 条件查询 web端入库办理用,-->

+ 15 - 6
src/main/java/com/dk/mdm/mapper/pur/PurchaseMapper.xml

@@ -10,7 +10,8 @@
         into_status, sys.f_remove_zero(intoing_qty) as intoing_qty, intoing_amt, sys.f_remove_zero(into_qty) as into_qty, into_amt,
         sys.f_remove_zero(return_qty) as return_qty, return_amt,
         amt_payable, amt_handle, amt_residue, remarks, annex_paths, make_staff, make_time, flg_valid, cp_id,
-        op_create_time, op_create_user_id, op_update_time, op_update_user_id, op_app_code, op_timestamp, op_db_user
+        op_create_time, op_create_user_id, op_update_time, op_update_user_id, op_app_code, op_timestamp, op_db_user,
+        flg_auto_handle,inbound_processing_flag
     </sql>
 
     <!-- 通用查询列 -->
@@ -54,7 +55,9 @@
         tpp.op_db_user,
         tpp.wh_id,
         tpp.from_ids,
-        tpp.from_nos
+        tpp.from_nos,
+        tpp.flg_auto_handle,
+        tpp.inbound_processing_flag
     </sql>
 
     <!-- 通用查询映射结果 -->
@@ -97,6 +100,8 @@
             <result column="op_timestamp" property="opTimestamp" typeHandler="TimestampTypeHandler"/>
                 <result column="op_db_user" property="opDbUser"/>
                 <result column="wh_id" property="whId"/>
+                <result column="flg_auto_handle" property="flgAutoHandle"/>
+                <result column="inbound_processing_flag" property="inboundProcessingFlag"/>
     </resultMap>
 
     <!-- 通用查询映射结果 -->
@@ -151,6 +156,8 @@
         <result column="from_ids" property="fromIds" typeHandler="StringListTypeHandler"/>
         <result column="from_nos" property="fromNos" typeHandler="StringListTypeHandler"/>
         <result column="inboundReturnQty" property="inboundReturnQty"/>
+        <result column="flg_auto_handle" property="flgAutoHandle"/>
+        <result column="inbound_processing_flag" property="inboundProcessingFlag"/>
         <collection property="purchaseItemResponseList" resultMap="purchaseItemListMap" columnPrefix="list_"/>
     </resultMap>
     <!--    关联映射-->
@@ -661,7 +668,6 @@
         <include refid="Condition_1"/>
     </select>
 
-
     <update id="updateAmount" parameterType="com.dk.mdm.model.pojo.pur.Purchase">
         update dkic_b.t_psi_purchase
         <set>
@@ -675,8 +681,6 @@
         where  pur_id = #{purId}::uuid
     </update>
 
-
-
     <!-- 查询原始数据 冲正用-->
     <select id="selectPurchaseByRighting" resultMap="BaseResultMap">
         SELECT
@@ -784,12 +788,17 @@
             <if test=" et!=null and et.whId != null">
                 wh_id = #{et.whId,typeHandler=UuidTypeHandler},
             </if>
+            <if test=" et!=null and et.flgAutoHandle != null">
+                flg_auto_handle = #{et.flgAutoHandle,jdbcType=BOOLEAN},
+            </if>
+            <if test=" et!=null and et.inboundProcessingFlag != null">
+                inbound_processing_flag = #{et.inboundProcessingFlag,jdbcType=BOOLEAN},
+            </if>
         </set>
         where pur_id = #{et.purId,typeHandler=UuidTypeHandler}
         and  sum_quantity >= (into_qty + intoing_qty)
     </update>
 
-
     <!-- 采购跟踪-->
     <select id="selectTrackReport" resultType="java.util.Map">
         SELECT *

+ 3 - 8
src/main/java/com/dk/mdm/model/pojo/ivt/Inbound.java

@@ -324,14 +324,9 @@ public class Inbound extends PageInfo<Inbound> implements Serializable {
     @ApiModelProperty(value = "自动办理标识")
     private Boolean flgAutoHandle;
 
-    @Excel(name = "自动办理参数")
-    @ApiModelProperty(value = "自动办理参数")
-    private Boolean flgHandleSetting;
-
-    @Excel(name = "无货出库自动入库标识")
-    @ApiModelProperty(value = "无货出库自动入库标识")
-    private Boolean flgNegInto;
-
+    @Excel(name = "开单并入库办理标识")
+    @ApiModelProperty(value = "开单并入库办理标识")
+    private Boolean inboundProcessingFlag;
 
     /*
      * 相关属性

+ 9 - 0
src/main/java/com/dk/mdm/model/pojo/pur/Purchase.java

@@ -373,6 +373,15 @@ public class Purchase extends PageInfo<Purchase> implements Serializable {
     @TableField(typeHandler = UuidTypeHandler.class)
     private String whId;
 
+    @Excel(name = "自动办理标识")
+    @ApiModelProperty(value = "自动办理标识")
+    private Boolean flgAutoHandle;
+
+    @Excel(name = "开单并入库办理标识")
+    @ApiModelProperty(value = "开单并入库办理标识")
+    private Boolean inboundProcessingFlag;
+
+
     //@ApiModelProperty(value = "采购订单明细")
     //private List<PurchaseItem> purchaseItemList;
 

+ 2 - 8
src/main/java/com/dk/mdm/model/response/ivt/InboundResponse.java

@@ -280,14 +280,8 @@ public class InboundResponse  {
     @ApiModelProperty(value = "自动办理标识")
     private Boolean flgAutoHandle;
 
-    @ApiModelProperty(value = "自动办理参数")
-    private Boolean flgHandleSetting;
-
-    @Excel(name = "无货出库自动入库标识")
-    @ApiModelProperty(value = "无货出库自动入库标识")
-    private Boolean flgNegInto;
-
-
+    @ApiModelProperty(value = "开单并入库办理标识")
+    private Boolean inboundProcessingFlag;
 
     @Excel(name = "入库原因")
     @ApiModelProperty(value = "入库原因")

+ 8 - 0
src/main/java/com/dk/mdm/model/response/pur/PurchaseResponse.java

@@ -441,6 +441,14 @@ public class PurchaseResponse extends PageInfo<PurchaseResponse> implements Seri
     @ApiModelProperty(value = "来源单号")
     private List<String> fromNos;
 
+    @Excel(name = "自动办理标识")
+    @ApiModelProperty(value = "自动办理标识")
+    private Boolean flgAutoHandle;
+
+    @Excel(name = "开单并入库办理标识")
+    @ApiModelProperty(value = "开单并入库办理标识")
+    private Boolean inboundProcessingFlag;
+
 
     /*
      * 相关属性

+ 4 - 7
src/main/java/com/dk/mdm/model/vo/ivt/InboundVO.java

@@ -220,16 +220,11 @@ public class InboundVO {
     @TableField(typeHandler = UuidTypeHandler.class)
     private String intoReason;
 
-
     @ApiModelProperty(value = "自动办理标识")
     private Boolean flgAutoHandle;
 
-    @ApiModelProperty(value = "自动办理参数")
-    private Boolean flgHandleSetting;
-
-
-    @ApiModelProperty(value = "无货出库自动入库标识")
-    private Boolean flgNegInto;
+    @ApiModelProperty(value = "开单并入库办理标识")
+    private Boolean inboundProcessingFlag;
 
     /*
      * 相关属性
@@ -259,6 +254,8 @@ public class InboundVO {
     @ApiModelProperty(value = "编辑标识")
     private Boolean limitEdit;
 
+
+
     private static final long serialVersionUID = 1L;
 
 }

+ 6 - 0
src/main/java/com/dk/mdm/model/vo/pur/PurchaseVO.java

@@ -385,6 +385,12 @@ public class PurchaseVO extends PageInfo<PurchaseVO> implements Serializable {
     @ApiModelProperty(value = "修改采购订单明细")
     private List<PurchaseItemVO> editPurchaseItemList;
 
+    @ApiModelProperty(value = "自动办理标识")
+    private Boolean flgAutoHandle;
+
+    @ApiModelProperty(value = "开单并入库办理标识")
+    private Boolean inboundProcessingFlag;
+
 
     /*
      * 相关属性

+ 2 - 1
src/main/java/com/dk/mdm/service/ivt/inbound/InboundPurchaseService.java

@@ -141,6 +141,7 @@ public class InboundPurchaseService extends BaseService<Inbound> {
      */
     @Transactional(rollbackFor = {Exception.class})
     public ResponseResultVO<?> purchaseInboundInsert(InboundVO inboundVO) {
+
         //region 校验明细
         if (inboundVO.getItemList().size() == 0) {
             throw new BaseBusinessException(ErrorCodeEnum.INBOUND_ITEM_NOT_EXIST.getCode(),
@@ -151,7 +152,7 @@ public class InboundPurchaseService extends BaseService<Inbound> {
         //region  查询当前入库明细中是否存在未空或者0的入库价,如果存在去库存流水差最近一条有价格的数据赋值到当前明细
         Boolean priceIntoFlag = false;
         for (InboundItemVO inboundItemVO : inboundVO.getItemList()) {
-            if(inboundItemVO.getPriceInto()==null || inboundItemVO.getPriceInto().compareTo(BigDecimal.ZERO)==0){
+            if(inboundItemVO.getPriceInto() == null || inboundItemVO.getPriceInto().compareTo(BigDecimal.ZERO)==0){
                 priceIntoFlag = true;
                 //查询库存批次最近一条入库价
                 InboundItemResponse inboundItemResponse = this.selectPriceInto(inboundItemVO);

+ 83 - 0
src/main/java/com/dk/mdm/service/pur/PurchaseService.java

@@ -10,10 +10,14 @@ 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.ivt.InboundConvert;
+import com.dk.mdm.infrastructure.convert.ivt.InboundItemConvert;
 import com.dk.mdm.infrastructure.convert.pur.PurChaseConvert;
 import com.dk.mdm.infrastructure.convert.pur.PurChaseItemConvert;
 import com.dk.mdm.mapper.common.CommonMapper;
+import com.dk.mdm.mapper.mst.GoodsSkuMapper;
 import com.dk.mdm.mapper.pur.PurchaseItemMapper;
+import com.dk.mdm.model.pojo.mst.GoodsSku;
 import com.dk.mdm.model.pojo.pur.Purchase;
 import com.dk.mdm.mapper.pur.PurchaseMapper;
 import com.dk.common.service.BaseService;
@@ -30,12 +34,14 @@ import com.dk.mdm.model.vo.pur.PurchaseItemVO;
 import com.dk.mdm.model.vo.pur.PurchaseVO;
 import com.dk.mdm.service.common.CommonService;
 import com.dk.mdm.service.ivt.inbound.InboundItemService;
+import com.dk.mdm.service.ivt.inbound.InboundPurchaseService;
 import com.dk.mdm.service.ivt.inbound.InboundService;
 import org.springframework.stereotype.Service;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.util.ArrayList;
@@ -80,6 +86,18 @@ public class PurchaseService extends BaseService<Purchase> {
     @Autowired
     private InboundItemService inboundItemService;
 
+    @Autowired
+    private InboundItemConvert inboundItemConvert;
+
+    @Autowired
+    private InboundConvert inboundConvert;
+
+    @Autowired
+    private GoodsSkuMapper goodsSkuMapper;
+
+    @Autowired
+    private InboundPurchaseService inboundPurchaseService;
+
     /**
      * @desc : 条件查询
      * @author : 常皓宁
@@ -165,6 +183,71 @@ public class PurchaseService extends BaseService<Purchase> {
         }
         //endregion
 
+        /****************************************判断是否生成采购入库单****************************************/
+        //region   判断是否生成采购入库单
+        if(purchasevo.getInboundProcessingFlag()!=null && purchasevo.getInboundProcessingFlag()){
+            List<InboundItemVO> inboundItemVOList = new ArrayList<>();
+            //region  明细
+            for (PurchaseItemVO purchaseItemVO : purchasevo.getPurchaseItemVOList()) {
+                //region 采购订单明细转换采购入库明细
+                InboundItemVO inboundItemVO = inboundItemConvert.convertPurchaseItemVOToInboundItemVO(purchaseItemVO);
+                //endregion
+
+                //region 赋值 采购订单明细和入库单明细不一致的字段要单独set
+                //来源id
+                inboundItemVO.setFromId(purchasevo.getPurId());
+                //来源明细id
+                inboundItemVO.setFromItemId(purchaseItemVO.getItemId());
+                //入库价
+                inboundItemVO.setPriceInto(purchaseItemVO.getPricePur());
+                //endregion
+
+                //region 根据sku查询商品信息
+                if (inboundItemVO.getSkuId() != null) {
+                    GoodsSku goodsSku = goodsSkuMapper.selectById(inboundItemVO.getSkuId());
+                    //商品名称
+                    inboundItemVO.setSkuName(goodsSku.getSkuName());
+                    //商品型号
+                    inboundItemVO.setSkuModel(goodsSku.getSkuModel());
+                }
+                //endregion
+
+                //region 箱片计算
+                //入库中 或者待入库
+                if (Constant.IntoStatus.RUKUZHONG.getName().equals(inboundItemVO.getIntoStatus()) ||
+                        Constant.IntoStatus.DAIRUKU.getName().equals(inboundItemVO.getIntoStatus())) {
+                    //箱
+                    inboundItemVO.setIntoingBox(Integer.valueOf(inboundItemVO.getIntoingQty().divide(inboundItemVO.getPackBox(), 0, RoundingMode.DOWN).toString()));
+                    //片
+                    inboundItemVO.setIntoingPiece(inboundItemVO.getIntoingQty().remainder(inboundItemVO.getPackBox()));
+                }
+                //已入库
+                else {
+                    //箱
+                    inboundItemVO.setIntoBox(Integer.valueOf(inboundItemVO.getIntoingQty().divide(inboundItemVO.getPackBox(), 0, RoundingMode.DOWN).toString()));
+                    //片
+                    inboundItemVO.setIntoPiece(inboundItemVO.getIntoingQty().remainder(inboundItemVO.getPackBox()));
+                }
+                //endregion
+
+                //region 入库明细list添加
+                inboundItemVOList.add(inboundItemVO);
+                //endregion
+            }
+            //endregion
+
+            //region 总单
+            InboundVO inboundVO = inboundConvert.convertPurchaseVOToInboundVO(purchasevo);
+            inboundVO.setItemList(inboundItemVOList);
+            //endregion
+            //新建采购入库单
+            inboundPurchaseService.purchaseInboundInsert(inboundVO);
+        }
+        //endregion
+        /****************************************判断是否生成采购入库单****************************************/
+
+
+
         return ResponseResultUtil.success();
     }