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

1、修改选择出库单的问题

zhoux 1 год назад
Родитель
Сommit
1d6e405be9

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

@@ -158,6 +158,7 @@
 
     <resultMap id="itemListMap" type="java.util.Map">
         <id column="item_id" property="itemId"/>
+        <result column="sup_id" property="supId" typeHandler="UuidTypeHandler"/>
         <result column="out_id" property="outId" typeHandler="UuidTypeHandler"/>
         <result column="out_no" property="outNo" />
         <result column="out_type" property="outType"/>
@@ -340,6 +341,9 @@
             <if test="flgValid != null">
                 AND t.flg_valid = #{flgValid}
             </if>
+            <if test="flgFilterReturn != null">
+                AND tpoi.out_qty - tpoi.return_qty > 0
+            </if>
         </where>
     </sql>
 
@@ -1089,6 +1093,7 @@
     <sql id="Base_Column_List_Item_Response_Detail_Join">
         tpoi.item_id  AS "list_item_id",
         tpoi.out_id  AS "list_out_id",
+        tpoi.sup_id AS "list_sup_id",
         t.out_no  AS "list_out_no",
                     tpoi.out_type  AS "list_out_type",
                     tpoi.from_id  AS "list_from_id",
@@ -1141,6 +1146,23 @@
         SELECT
         count(1)
         FROM dkic_b.t_psi_outbound as t
+        left join dkic_b.t_mst_customer tmc on tmc.cus_id = t.cus_id
+        left join dkic_b.t_mst_sale_channel tmsc on tmsc.channel_id = tmc.channel_id
+        left join dkic_b.t_mst_org tmo on tmo.org_id = t.org_id
+        left join dkic_b.t_mst_staff tms on tms.staff_id = t.staff_id
+        left join dkic_b.t_mst_staff as makestaff on makestaff.staff_id = t.make_staff
+        left join dkic_b.t_mst_dictionary_data tmdd on tmdd.data_id = tmc.cus_from
+        left join sys.t_data_kind as tdk1 on tdk1.kind_code = t.out_status
+        left join dkic_b.t_mst_dictionary_data tmd on tmd.data_id = t.out_reason
+        Left join dkic_b.t_mst_supplier tmp on tmp.sup_id = t.sup_id
+        left join  dkic_b.t_psi_outbound_item  tpoi  on tpoi.out_id = t.out_id
+        left join dkic_b.t_psi_inventory tpi on tpi.inv_id = tpoi.inv_id
+        left join dkic_b.t_mst_unit as tmgu on tpoi.unit_id = tmgu.unit_id
+        left join dkic_b.t_mst_unit as tmgus on tpoi.sub_unit_id = tmgus.unit_id
+        left join dkic_b.t_mst_goods_sku tmgs on tmgs.sku_id  = tpoi.sku_id
+        left join dkic_b.t_mst_goods_brand tmgb on tmgb.brand_id  = tmgs.brand_id
+        left join dkic_b.t_psi_inventory tpity on tpity.inv_id  = tpoi.inv_id
+        left join dkic_b.t_mst_warehouse as tmw on tpity.wh_id = tmw.wh_id
         <include refid="Condition"/>
     </select>
 

+ 3 - 0
src/main/java/com/dk/mdm/model/query/ivt/OutboundQuery.java

@@ -282,6 +282,9 @@ public class OutboundQuery extends PageInfo<OutboundQuery> {
     @TableField(typeHandler = StringListTypeHandler.class)
     private List<String> outTypes;
 
+    @ApiModelProperty(value = "是否过滤退货")
+    private Boolean flgFilterReturn;
+
 
 
     /*

+ 3 - 0
src/main/java/com/dk/mdm/model/vo/ivt/InOutRecordVO.java

@@ -222,6 +222,9 @@ public class InOutRecordVO  {
     @ApiModelProperty(value = "存货批次明细ID")
     private String batchId;
 
+    @ApiModelProperty(value = "外协供应商Id")
+    private String supId;
+
 
 
 

+ 42 - 35
src/main/java/com/dk/mdm/service/ivt/inventory/InventoryService.java

@@ -213,18 +213,21 @@ public class InventoryService extends BaseService<Inventory> {
             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 (Constant.InventoryType.OUTBOUND .equals(inventoryBatchVO.getInventoryType())
-                    && ( inventoryBatchVO.getInvId() == null || "".equals(inventoryBatchVO.getInvId()))) {
-                throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.SKU_IS_NOT_IN_INVENTORY.getMessage());
-            }
-            //仓库ID
-            if (!inventoryBatchVO.getCanNegativeFlag() && (inventoryBatchVO.getWhId() == null || "".equals(inventoryBatchVO.getWhId()))) {
-                throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.WAREHOUSE_IS_NULL.getMessage());
+            // 外协供应商ID 不进行判断商品Id和库存ID
+            if(inventoryBatchVO.getSupId() == null) {
+                //商品ID
+                if (inventoryBatchVO.getSkuId() == null || "".equals(inventoryBatchVO.getSkuId())) {
+                    throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.SKU_IS_NULL.getMessage());
+                }
+                //存货ID
+                if (Constant.InventoryType.OUTBOUND.equals(inventoryBatchVO.getInventoryType())
+                        && (inventoryBatchVO.getInvId() == null || "".equals(inventoryBatchVO.getInvId()))) {
+                    throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.SKU_IS_NOT_IN_INVENTORY.getMessage());
+                }
+                //仓库ID
+                if (!inventoryBatchVO.getCanNegativeFlag() && (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 ){
@@ -513,10 +516,13 @@ public class InventoryService extends BaseService<Inventory> {
     public InventoryResponse checkInventoryNumber(InOutRecordVO inOutRecordVO) {
         //存在标识
         //根据sku,仓库,非标号查询
-        InventoryResponse inventoryResponse = inventoryMapper.selectByOther(new InventoryQuery()
-                .setSkuId(inOutRecordVO.getSkuId())
-                .setWhId(inOutRecordVO.getWhId())
-                .setNonStdCode(inOutRecordVO.getNonStdCode()));
+        InventoryResponse inventoryResponse = null ;
+        if(inOutRecordVO.getSkuId() != null){
+            inventoryResponse = inventoryMapper.selectByOther(new InventoryQuery()
+                    .setSkuId(inOutRecordVO.getSkuId())
+                    .setWhId(inOutRecordVO.getWhId())
+                    .setNonStdCode(inOutRecordVO.getNonStdCode()));
+        }
         return inventoryResponse;
     }
 
@@ -593,8 +599,8 @@ public class InventoryService extends BaseService<Inventory> {
             else if (Constant.InventoryType.OUTBOUND.getName().equals(inOutRecordVO.getInventoryType())) {
                 //region  库存不存在  再判断销售退货出库和其他类型出库
                 if (inventoryResponse == null) {
-                    //region  根据源出库单明细Id存在  去出库成本里去查价格
-                    if (inOutRecordVO.getSOutItemId() != null) {
+                    //region  根据源出库单明细Id存在  去出库成本里去查价格  todo 增加判断 为了解决销售退货的问题
+                    if (inOutRecordVO.getSOutItemId() != null && Constant.InventoryDocCode.SALE_ORDER.getValue().equals(inOutRecordVO.getInventoryDocCode())) {
                         List<OutboundItemCostResponse> outboundItemCostResponses = outboundItemCostMapper.selectByCond(new OutboundItemCostQuery().setOutItemId(inOutRecordVO.getSOutItemId()));
                         if (outboundItemCostResponses.size() > 0) {
                             //出库单价
@@ -609,25 +615,26 @@ public class InventoryService extends BaseService<Inventory> {
                     //endregion
 
                     //region 销售退货出库  (负向出库相当于入库)
-                    if (Constant.InventoryDocCode.SALE_RETURN.getValue().equals(inOutRecordVO.getInventoryDocCode())) {
-                        //region  新建库存
-                        inOutRecordVO = this.insertInventory(inOutRecordVO);
-                        //endregion
-
-                        //region 库存批次
-                        this.insertInventoryBatch(inOutRecordVO);
-                        //endregion
-
-                        //region 库存流水
-                        this.insertInboundRecord(inOutRecordVO);
+                    if(inOutRecordVO.getSkuId() != null) {
+                        if (Constant.InventoryDocCode.SALE_RETURN.getValue().equals(inOutRecordVO.getInventoryDocCode())) {
+                            //region  新建库存
+                            inOutRecordVO = this.insertInventory(inOutRecordVO);
+                            //endregion
+
+                            //region 库存批次
+                            this.insertInventoryBatch(inOutRecordVO);
+                            //endregion
+
+                            //region 库存流水
+                            this.insertInboundRecord(inOutRecordVO);
+                            //endregion
+                        }
                         //endregion
 
-                    }
-                    //endregion
-
-                    //region 其他类型出库  没有库存不允许进行出库
-                    else {
-                        throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.SKU_IS_NOT_IN_INVENTORY.getMessage());
+                        //region 其他类型出库  没有库存不允许进行出库
+                        else {
+                            throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.SKU_IS_NOT_IN_INVENTORY.getMessage());
+                        }
                     }
                     //endregion
                 }

+ 2 - 2
src/main/java/com/dk/mdm/service/ivt/outbound/OutboundSaleOrderService.java

@@ -184,8 +184,8 @@ public class OutboundSaleOrderService extends BaseService<Outbound> {
                 //供应商
                 inboundVO.setSupId(outboundItemVOListGroup.get(0).getSupId());
                 //入库状态等于已入库
-                inboundVO.setIntoQty(sumIntoAmt)
-                        .setIntoAmt(sumIntoQty)
+                inboundVO.setIntoQty(sumIntoQty)
+                        .setIntoAmt(sumIntoAmt)
                         .setIntoingQty(BigDecimal.ZERO)
                         .setIntoingAmt(BigDecimal.ZERO);
                 //来源id