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

Merge branch 'master' of http://git.dongkesoft.com:9001/iBOSS-2.0-Mini/iboss-server-mdm

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

+ 16 - 0
src/main/java/com/dk/mdm/controller/ivt/inbound/InboundItemController.java

@@ -19,6 +19,7 @@ import com.dk.mdm.service.ivt.inbound.InboundItemService;
 
 import javax.validation.Valid;
 import java.util.List;
+import java.util.Map;
 
 @Api(tags = "入库明细API接口")
 @RestController
@@ -87,4 +88,19 @@ public class InboundItemController{
     public ResponseResultVO<?> CostCheckOk(@Valid @RequestBody List<InboundItemQuery> inboundItemQuery) {
         return inboundItemService.CostCheckOk(inboundItemQuery);
     }
+
+
+    /**
+     * @desc   : 条件查询(成本补录列表)
+     * @author : 于继渤
+     * @date   : 2024/7/2 14:35
+     */
+    @ApiOperation(
+            value = "分页、关联、条件查询",
+            notes = "分页、关联、条件查询"
+    )
+    @PostMapping({"select_cost_check_list"})
+    public ResponseResultVO<PageList<Map>> selectCostCheckList(@RequestBody InboundItemQuery inboundItemQuery) {
+        return inboundItemService.selectCostCheckList(inboundItemQuery);
+    }
 }

+ 7 - 0
src/main/java/com/dk/mdm/mapper/ivt/InboundItemMapper.java

@@ -11,6 +11,7 @@ import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
 import java.util.List;
+import java.util.Map;
 
 /**
 *  入库明细 Mapper
@@ -100,5 +101,11 @@ public interface InboundItemMapper extends BaseMapper<InboundItem>{
     List<InboundItemResponse> selectPriceInto(InboundItemQuery inboundItemQuery);
 
 
+    List<Map> selectCostCheckList(InboundItemQuery inboundItemQuery);
+
+
+    Long countByCondList(InboundItemQuery inboundItemQuery);
+
+
 }
 

+ 114 - 3
src/main/java/com/dk/mdm/mapper/ivt/InboundItemMapper.xml

@@ -721,14 +721,125 @@
         SELECT
         ti.item_id,ti.price_into,ti.cost_price,ti.cost_amt
         FROM dkic_b.t_psi_inbound_item ti
-        left join dkic_b.t_psi_inbound t ON ti.order_id = t.order_id
+        left join dkic_b.t_psi_inbound t ON ti.into_id = t.into_id
         where  t.flg_valid
         and ti.flg_valid
         and ti.price_into > 0
         and t.into_type != '外协入库'
-        and ti.wh_id #{whId}
-        and ti.sku_id =#{skuId}
+        and ti.wh_id = #{whId}::uuid
+        and ti.sku_id =#{skuId}::uuid
         and ti.non_std_code = #{nonStdCode}
         order by make_time desc
     </select>
+
+
+
+
+    <select id="selectCostCheckList" resultType="map">
+        SELECT
+        tpii.sku_model AS "skuModel",
+        tpii.sku_name AS "skuName",
+        tpii.sku_id AS "skuId",
+        tpii.cost_price  AS "costPrice",
+        tpii.cost_amt  AS "costAmt",
+        tmgs.brand_id AS "brandId",
+        json_agg(json_build_object(
+        'itemId', tpii.item_id,
+        'intoId', tpii.into_id,
+        'invId', tpii.inv_id,
+        'fromId', tpii.from_id,
+        'fromItemId', tpii.from_item_id,
+        'skuModel', tpii.sku_model,
+        'skuName', tpii.sku_name,
+        'skuId', tpii.sku_id,
+        'intoQty', tpii.into_qty,
+        'costPrice', tpii.cost_price,
+        'costAmt', tpii.cost_amt,
+        'brandId', tmgs.brand_id
+        )) AS "itemList"
+        FROM
+        dkic_b.t_psi_inbound_item tpii
+        LEFT JOIN dkic_b.t_mst_goods_sku tmgs ON tmgs.sku_id = tpii.sku_id
+        <where>
+            tpii.cost_price = 0
+            AND tpii.into_qty != 0
+            AND tpii.sku_model is not null
+            <if test="intoId != null and intoId != ''">
+                AND tpii.into_id = #{intoId}::uuid
+            </if>
+            <if test="cpId != null">
+                AND tpii.cp_id = #{cpId}
+            </if>
+            <if test="brandId != null">
+                AND tmgs.brand_id = #{brandId}::uuid
+            </if>
+            <if test="viewNoCostDocuments !=null and viewNoCostDocuments == true">
+                AND tpii.flg_cost_check = false
+            </if>
+            <if test="staffName !=null">
+                AND tmss.staff_name  LIKE concat('%',my_ex.likequery(#{staffName}),'%')
+            </if>
+            <if test="intoStatusList != null and intoStatusList.size()>0">
+                AND tpii.into_status =
+                any(#{intoStatusList, typeHandler= StringListTypeHandler})
+            </if>
+        </where>
+        GROUP BY
+        tpii.sku_model,
+        tpii.sku_name,
+        tpii.sku_id,
+        tpii.cost_price,
+        tpii.cost_amt,
+        tmgs.brand_id
+        <if test="pageSize != null and currentPage != null and pageSize != 0 and currentPage != 0">
+            limit #{end} offset #{start}
+        </if>
+
+    </select>
+
+    <select id="countByCondList" resultType="Long">
+        SELECT COUNT
+        ( 1 )
+        FROM (
+        SELECT COUNT
+        ( 1 )
+        FROM
+        dkic_b.t_psi_inbound_item tpii
+        LEFT JOIN dkic_b.t_mst_goods_sku tmgs ON tmgs.sku_id = tpii.sku_id
+        <where>
+            tpii.cost_price = 0
+            AND tpii.into_qty != 0
+            AND tpii.sku_model is not null
+            <if test="intoId != null and intoId != ''">
+                AND tpii.into_id = #{intoId}::uuid
+            </if>
+            <if test="cpId != null">
+                AND tpii.cp_id = #{cpId}
+            </if>
+            <if test="brandId != null">
+                AND tmgs.brand_id = #{brandId}::uuid
+            </if>
+            <if test="viewNoCostDocuments !=null and viewNoCostDocuments == true">
+                AND tpii.flg_cost_check = false
+            </if>
+            <if test="staffName !=null">
+                AND tmss.staff_name  LIKE concat('%',my_ex.likequery(#{staffName}),'%')
+            </if>
+
+            <if test="intoStatusList != null and intoStatusList.size()>0">
+                AND tpii.into_status =
+                any(#{intoStatusList, typeHandler= StringListTypeHandler})
+            </if>
+
+        </where>
+        GROUP BY
+        tpii.sku_model,
+        tpii.sku_name,
+        tpii.sku_id,
+        tpii.cost_price,
+        tpii.cost_amt ) AS "a"
+
+
+    </select>
+
 </mapper>

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

@@ -456,6 +456,12 @@
             <if test="cpId != null">
                 AND tpp.cp_id = #{cpId}
             </if>
+            <if test="orgIds != null and orgIds.size()>0">
+                AND tpp.org_id = any(#{orgIds, typeHandler=UuidListTypeHandler})
+            </if>
+            <if test="staffIds != null and staffIds.size()>0">
+                AND tpp.staff_id = any(#{staffIds, typeHandler=uuidListTypeHandler})
+            </if>
         </where>
     </sql>
 

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

@@ -331,6 +331,10 @@ public class InboundItemQuery extends PageInfo<InboundItemQuery>  {
     @ApiModelProperty(value = "入库仓库")
     private String whId;
 
+    @TableField(typeHandler = UuidTypeHandler.class)
+    @ApiModelProperty(value = "品牌ID")
+    private String brandId;
+
     private static final long serialVersionUID = 1L;
 
 }

+ 5 - 0
src/main/java/com/dk/mdm/model/query/pur/PurchaseQuery.java

@@ -395,8 +395,13 @@ public class PurchaseQuery extends PageInfo<PurchaseQuery> implements Serializab
     @ApiModelProperty(value = "业务员")
     private String staffName;
 
+    @ApiModelProperty(value = "业务员编号筛选集合")
+    private List<String>  staffIds;
+
     @ApiModelProperty(value = "业务部门")
     private String orgName;
+    @ApiModelProperty(value = "业务部门编号筛选集合")
+    private List<String>  orgIds;
 
     @ApiModelProperty(value = "供应商")
     private String supName;

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

@@ -241,6 +241,10 @@ public class InOutRecordVO  {
     @TableField(typeHandler = UuidTypeHandler.class)
     private String whIdPri;
 
+    @ApiModelProperty(value = "原非标号")
+    private String nonStdCodePri;
+
+
 
 
 

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

@@ -282,6 +282,9 @@ public class InboundItemVO  {
     @TableField(typeHandler = UuidTypeHandler.class)
     private String whIdPri;
 
+    @ApiModelProperty(value = "原非标号")
+    private String nonStdCodePri;
+
     private static final long serialVersionUID = 1L;
 
 }

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

@@ -341,6 +341,8 @@ public class OutboundItemVO {
     @TableField(typeHandler = UuidTypeHandler.class)
     private String whIdPri;
 
+    @ApiModelProperty(value = "原非标号")
+    private String nonStdCodePri;
 
     private static final long serialVersionUID = 1L;
 

+ 10 - 0
src/main/java/com/dk/mdm/service/ivt/inbound/InboundItemService.java

@@ -99,6 +99,16 @@ public class InboundItemService extends BaseService<InboundItem> {
 	public ResponseResultVO<PageList<InboundItemResponse>> selectCostCheck(InboundItemQuery inboundItemQuery) {
 		return super.mergeListWithCount(inboundItemQuery, inboundItemMapper.selectCostCheck(inboundItemQuery), inboundItemMapper.countByCond(inboundItemQuery));
 	}
+	/**
+	 * @desc   : 条件查询(成本补录列表)
+	 * @author : 于继渤
+	 * @date   : 2024/7/2 14:35
+	 */
+	@Pagination
+	public ResponseResultVO<PageList<Map>> selectCostCheckList(InboundItemQuery inboundItemQuery) {
+		return super.mergeListWithCount(inboundItemQuery, inboundItemMapper.selectCostCheckList(inboundItemQuery), inboundItemMapper.countByCondList(inboundItemQuery));
+	}
+
 
 	/**
 	 * @desc   : 入库成本核对

+ 2 - 1
src/main/java/com/dk/mdm/service/ivt/inventory/InventoryService.java

@@ -1164,7 +1164,8 @@ public class InventoryService extends BaseService<Inventory> {
                     .setSkuId(inOutRecordVO.getSkuId())
                     //原库存id存在取原库存id
                     .setWhId(inOutRecordVO.getWhIdPri()==null ? inOutRecordVO.getWhId() : inOutRecordVO.getWhIdPri())
-                    .setNonStdCode(inOutRecordVO.getNonStdCode()));
+                    //原色号id存在取原色号id
+                    .setNonStdCode(inOutRecordVO.getNonStdCodePri()==null ? inOutRecordVO.getNonStdCode() : inOutRecordVO.getNonStdCodePri()) );
             //库存是否存在
             if (inventoryResponse == null) {
                 throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.SKU_IS_NOT_IN_INVENTORY.getMessage());

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

@@ -139,6 +139,12 @@ public class OutboundSaleOrderService extends BaseService<Outbound> {
                     .setWhId(outboundItemVO.getWhId())
                     .setNonStdCode(outboundItemVO.getNonStdCode()));
         }
+        //库存不存在
+        if(inventoryResponse == null){
+            //当前出库商品中在库存中不存在
+            throw new BaseBusinessException(ErrorCodeEnum.SKU_IS_NOT_IN_INVENTORY.getCode(),
+                    ErrorCodeEnum.SKU_IS_NOT_IN_INVENTORY.getMessage());
+        }
         return inventoryResponse;
     }
 
@@ -155,6 +161,7 @@ public class OutboundSaleOrderService extends BaseService<Outbound> {
                     ErrorCodeEnum.OUTBOUND_ITEM_NOT_EXIST.getMessage());
         }
         //endregion
+
         //可以负库存  不用交验库存直接走负库存逻辑
         if (outboundVO.getFlgHandleSetting()) {
             for (OutboundItemVO outboundItemVO : outboundVO.getItemList()) {
@@ -188,8 +195,12 @@ public class OutboundSaleOrderService extends BaseService<Outbound> {
                             outboundItemVO.setNotEnoughInventoryQty(invQty.abs());
                         }
                     } else {
-                        //不够库存数量----新建出库中数量
-                        outboundItemVO.setNotEnoughInventoryQty(outboundItemVO.getOutingQty());
+                        //todo 2024年7月2日09:23:38 修改成无库存不允许出库
+//                        //不够库存数量----新建出库中数量
+//                        outboundItemVO.setNotEnoughInventoryQty(outboundItemVO.getOutingQty());
+                        //当前出库商品中在库存中不存在
+                        throw new BaseBusinessException(ErrorCodeEnum.SKU_IS_NOT_IN_INVENTORY.getCode(),
+                                ErrorCodeEnum.SKU_IS_NOT_IN_INVENTORY.getMessage());
                     }
                 }
             }
@@ -217,7 +228,8 @@ public class OutboundSaleOrderService extends BaseService<Outbound> {
             //销售出库新建
             if (itemList != null && itemList.size() > 0) {
                 for (OutboundItemVO outboundItemVO : itemList) {
-                    if (outboundItemVO.getSkuId() != null) { //过滤外协品 外协品没有箱片
+                    //过滤外协品 外协品没有箱片
+                    if (outboundItemVO.getSkuId() != null) {
                         //箱
                         outboundItemVO.setOutBox(Integer.valueOf(outboundItemVO.getOutingQty().divide(outboundItemVO.getPackBox(), 0, RoundingMode.DOWN).toString()));
                         //片
@@ -554,6 +566,7 @@ public class OutboundSaleOrderService extends BaseService<Outbound> {
                 new UpdateWrapper<Outbound>().lambda()
                         .eq(Outbound::getOutId, UUID.fromString(outbound.getOutId()))
         );
+
         //region  已出库  应收记账
         if (Constant.OutStatus.YICHUKU.getName().equals(outboundVO.getOutStatus())) {
             accountService.accReceivable(outboundVO.getOutId(), Constant.InventoryDocCode.OUTBOUND.getTableName());
@@ -842,7 +855,6 @@ public class OutboundSaleOrderService extends BaseService<Outbound> {
                 //endregion
 
                 //region 修改销售总单
-
                 this.updateOrderMessageByEdit(outboundResponse, outboundVO.getItemList(), outboundVO.getDeleteItemList());
                 //endregion
 
@@ -886,15 +898,17 @@ public class OutboundSaleOrderService extends BaseService<Outbound> {
             //region 出库中编辑
             if (Constant.OutStatus.CHUKUZHONG.getName().equals(outboundVO.getOutStatus()) ||
                     Constant.OutStatus.DAICHUKU.getName().equals(outboundVO.getOutStatus())) {
+
                 //region 修改明细
                 List<OutboundItemVO> itemList = outboundVO.getItemList();
                 for (OutboundItemVO outboundItemVO : itemList) {
 
                     //根据id查询 获取到还未进行修改的数据
-                    OutboundItemResponse outboundItemResponse = outboundItemMapper.selectById(outboundItemVO.getItemId());
+                    OutboundItemResponse outboundItemResponse = null;
 
                     //region 编辑明细
                     if (outboundItemVO.getItemId() != null) {
+                        outboundItemResponse = outboundItemMapper.selectById(outboundItemVO.getItemId());
 
                         //region 反写订单总单 数据需要  把查出来的出库中数量用别的变量存起来
                         outboundItemVO.setUpdateOrderOutingQty(outboundItemResponse.getOutingQty());
@@ -946,8 +960,8 @@ public class OutboundSaleOrderService extends BaseService<Outbound> {
                         OrderItemResponse orderItemResponse = orderItemMapper.selectById(outboundItemVO.getFromItemId());
                         OrderItem orderItem = new OrderItem();
                         orderItem.setItemId(outboundItemVO.getFromItemId());
-                        orderItem.setOutingQty(outboundItemResponse.getOutingQty().negate().add(outboundItemVO.getOutingQty()));
-                        orderItem.setOutingAmt(outboundItemResponse.getOutingAmt().negate().add(outboundItemVO.getOutingAmt()));
+                        orderItem.setOutingQty(( outboundItemResponse != null ? outboundItemResponse.getOutingQty().negate() : BigDecimal.ZERO).add(outboundItemVO.getOutingQty()));
+                        orderItem.setOutingAmt(( outboundItemResponse != null ? outboundItemResponse.getOutingAmt().negate() : BigDecimal.ZERO).add(outboundItemVO.getOutingAmt()));
                         //出库状态
                         String outStatus = this.setOutStatus(orderItemResponse.getOutingQty().add(orderItem.getOutingQty()),
                                 orderItemResponse.getOutQty(), orderItemResponse.getItemQty());

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

@@ -164,6 +164,7 @@ public class PurchaseService extends BaseService<Purchase> {
             purchaseItemMapper.insert(purchaseItem);
         }
         //endregion
+
         return ResponseResultUtil.success();
     }