Browse Source

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

姜永辉 1 year ago
parent
commit
cabd3a9480

+ 28 - 2
src/main/java/com/dk/mdm/mapper/ivt/InboundItemMapper.xml

@@ -743,6 +743,9 @@
         tpii.cost_price  AS "costPrice",
         tpii.cost_amt  AS "costAmt",
         tmgs.brand_id AS "brandId",
+        tmgs.sku_images AS "skuImages",
+        tmgb.brand_name  as "brandName",
+        tmgb.short_name  as "shortName",
         json_agg(json_build_object(
         'itemId', tpii.item_id,
         'intoId', tpii.into_id,
@@ -759,7 +762,9 @@
         )) AS "itemList"
         FROM
         dkic_b.t_psi_inbound_item tpii
+        LEFT JOIN dkic_b.t_psi_inbound tpi ON tpi.into_id = tpii.into_id
         LEFT JOIN dkic_b.t_mst_goods_sku tmgs ON tmgs.sku_id = tpii.sku_id
+        left join dkic_b.t_mst_goods_brand tmgb on tmgb.brand_id = tmgs.brand_id
         <where>
             tpii.cost_price = 0
             AND tpii.into_qty != 0
@@ -773,6 +778,12 @@
             <if test="brandId != null">
                 AND tmgs.brand_id = #{brandId}::uuid
             </if>
+            <if test="intoDateStart != null">
+                AND tpi.into_date &gt;= #{intoDateStart}::timestamp with time zone
+            </if>
+            <if test="intoDateEnd != null">
+                AND tpi.into_date &lt; #{intoDateEnd}::timestamp with time zone + interval '1 day'
+            </if>
             <if test="viewNoCostDocuments !=null and viewNoCostDocuments == true">
                 AND tpii.flg_cost_check = false
             </if>
@@ -790,7 +801,10 @@
         tpii.sku_id,
         tpii.cost_price,
         tpii.cost_amt,
-        tmgs.brand_id
+        tmgs.brand_id,
+        tmgs.sku_images,
+        tmgb.brand_name,
+        tmgb.short_name
         <if test="pageSize != null and currentPage != null and pageSize != 0 and currentPage != 0">
             limit #{end} offset #{start}
         </if>
@@ -805,7 +819,9 @@
         ( 1 )
         FROM
         dkic_b.t_psi_inbound_item tpii
+        LEFT JOIN dkic_b.t_psi_inbound tpi ON tpi.into_id = tpii.into_id
         LEFT JOIN dkic_b.t_mst_goods_sku tmgs ON tmgs.sku_id = tpii.sku_id
+        left join dkic_b.t_mst_goods_brand tmgb on tmgb.brand_id = tmgs.brand_id
         <where>
             tpii.cost_price = 0
             AND tpii.into_qty != 0
@@ -819,6 +835,12 @@
             <if test="brandId != null">
                 AND tmgs.brand_id = #{brandId}::uuid
             </if>
+            <if test="intoDateStart != null">
+                AND tpi.into_date &gt;= #{intoDateStart}::timestamp with time zone
+            </if>
+            <if test="intoDateEnd != null">
+                AND tpi.into_date &lt; #{intoDateEnd}::timestamp with time zone + interval '1 day'
+            </if>
             <if test="viewNoCostDocuments !=null and viewNoCostDocuments == true">
                 AND tpii.flg_cost_check = false
             </if>
@@ -837,7 +859,11 @@
         tpii.sku_name,
         tpii.sku_id,
         tpii.cost_price,
-        tpii.cost_amt ) AS "a"
+        tpii.cost_amt,
+        tmgs.brand_id,
+        tmgs.sku_images,
+        tmgb.brand_name,
+        tmgb.short_name ) AS "a"
 
 
     </select>

+ 2 - 2
src/main/java/com/dk/mdm/mapper/ivt/OutboundItemMapper.xml

@@ -152,10 +152,10 @@ sys.f_remove_zero(out_qty) as out_qty, out_amt, sys.f_remove_zero(return_qty) as
                 AND tpoi.out_type = #{outType}
             </if>
             <if test="fromId != null and fromId != ''">
-                AND tpoi.from_id = #{fromId}
+                AND tpoi.from_id = #{fromId}::uuid
             </if>
             <if test="fromItemId != null and fromItemId != ''">
-                AND tpoi.from_item_id = #{fromItemId}
+                AND tpoi.from_item_id = #{fromItemId}::uuid
             </if>
             <if test="itemIndex != null">
                 AND tpoi.item_index = #{itemIndex}

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

@@ -260,7 +260,7 @@
                 AND tms.staff_name LIKE concat('%',my_ex.likequery(#{staffName}),'%')
             </if>
             <if test="fromId != null and fromId != ''">
-                AND t.from_id = #{fromId}
+                AND t.from_id = #{fromId}::uuid
             </if>
             <if test="fromNo != null and fromNo != ''">
                 AND t.from_no = #{fromNo}

+ 1 - 0
src/main/java/com/dk/mdm/mapper/mac/RecPayItemMapper.xml

@@ -46,6 +46,7 @@
     <!-- 通用条件列 -->
     <sql id="Condition">
         <where>
+            t.flg_valid
             <if test="rpId != null and rpId != ''">
                 AND t.rp_id = #{rpId}::uuid
             </if>

+ 1 - 1
src/main/java/com/dk/mdm/mapper/report/ReportMapper.xml

@@ -2636,7 +2636,7 @@
     <!-- 资金日记账-->
     <select id="getFundReport" resultType="java.util.Map">
         SELECT *
-        FROM dkic_b.f_get_fund_report(#{accDateStart}::date,#{accDateEnd}::date,#{cpId},#{currentPage},#{pageSize})
+        FROM dkic_b.f_get_fund_report(#{accDateStart}::date,#{accDateEnd}::date,#{cpId},#{currentPage},#{pageSize},#{macId}::uuid)
     </select>
 
     <!-- 销售简报-->

+ 6 - 1
src/main/java/com/dk/mdm/model/vo/sale/OrderItemVO.java

@@ -58,7 +58,12 @@ public class OrderItemVO extends PageInfo<OrderItemVO> implements Serializable {
     @Excel(name = "商品型号")
     @ApiModelProperty(value = "商品型号")
     private String skuModel;
-
+    /**
+     * 出库ID
+     */
+    @ApiModelProperty(value = "出库ID")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String outId;
     /**
      * 订单ID
      */

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

@@ -711,16 +711,18 @@ public class OutboundSaleOrderService extends BaseService<Outbound> {
                 //region 修改明细
                 List<OutboundItemVO> itemList = outboundVO.getItemList();
                 for (OutboundItemVO outboundItemVO : itemList) {
-                    //根据id查询
-                    OutboundItemResponse outboundItemResponse = outboundItemMapper.selectById(outboundItemVO.getItemId());
-
-                    //region 反写订单总单 数据需要  把查出来的已出库数量用别的变量存起来
-                    outboundItemVO.setUpdateOrderOutQty(outboundItemResponse.getOutQty());
-                    outboundItemVO.setUpdateOrderOutAmt(outboundItemResponse.getOutAmt());
-                    //endregion
+                    //根据id查询先赋值
+                    OutboundItemResponse outboundItemResponse = null;
 
                     //region  编辑明细
                     if (outboundItemVO.getItemId() != null) {
+                        //根据id查询 获取到还未进行修改的数据
+                        outboundItemResponse = outboundItemMapper.selectById(outboundItemVO.getItemId());
+
+                        //region 反写订单总单 数据需要  把查出来的已出库数量用别的变量存起来
+                        outboundItemVO.setUpdateOrderOutQty(outboundItemResponse.getOutQty());
+                        outboundItemVO.setUpdateOrderOutAmt(outboundItemResponse.getOutAmt());
+                        //endregion
 
                         //region 将库存需要的参数赋值
                         outboundItemVO.setInventoryType(Constant.InventoryType.OUTBOUND.getName());
@@ -750,6 +752,11 @@ public class OutboundSaleOrderService extends BaseService<Outbound> {
 
                     //region 新建明细
                     else {
+                        //region 反写订单总单 数据需要  把查出来的已出库数量用别的变量存起来
+                        outboundItemVO.setUpdateOrderOutQty(outboundItemVO.getOutingQty());
+                        outboundItemVO.setUpdateOrderOutAmt(outboundItemVO.getOutingAmt());
+                        //endregion
+
                         outboundItemVO
                                 .setOutId(outboundItemVO.getOutId())
                                 .setOutQty(outboundItemVO.getOutingQty())
@@ -903,11 +910,12 @@ public class OutboundSaleOrderService extends BaseService<Outbound> {
                 List<OutboundItemVO> itemList = outboundVO.getItemList();
                 for (OutboundItemVO outboundItemVO : itemList) {
 
-                    //根据id查询 获取到还未进行修改的数据
+                    //根据id查询先赋值 获取到还未进行修改的数据
                     OutboundItemResponse outboundItemResponse = null;
 
                     //region 编辑明细
                     if (outboundItemVO.getItemId() != null) {
+                        //根据id查询 获取到还未进行修改的数据
                         outboundItemResponse = outboundItemMapper.selectById(outboundItemVO.getItemId());
 
                         //region 反写订单总单 数据需要  把查出来的出库中数量用别的变量存起来

+ 87 - 70
src/main/java/com/dk/mdm/service/sale/OrderService.java

@@ -16,6 +16,7 @@ import com.dk.mdm.infrastructure.convert.sale.OrderItemConvert;
 import com.dk.mdm.infrastructure.convert.sale.OutBoundDtoConvert;
 import com.dk.mdm.mapper.common.CommonMapper;
 import com.dk.mdm.mapper.ivt.OutboundItemMapper;
+import com.dk.mdm.mapper.ivt.OutboundMapper;
 import com.dk.mdm.mapper.mac.AccountItemMapper;
 import com.dk.mdm.mapper.mac.RecPayHandleItemMapper;
 import com.dk.mdm.mapper.mac.RecPayItemMapper;
@@ -39,11 +40,14 @@ import com.dk.common.service.BaseService;
 import com.dk.common.mapper.BaseMapper;
 import com.dk.mdm.model.pojo.sale.OrderItem;
 import com.dk.mdm.model.query.ivt.OutboundItemQuery;
+import com.dk.mdm.model.query.ivt.OutboundQuery;
 import com.dk.mdm.model.query.mac.RecPayItemQuery;
 import com.dk.mdm.model.query.mac.RecPayQuery;
 import com.dk.mdm.model.query.sale.MultiOwnerQuery;
 import com.dk.mdm.model.query.sale.OrderItemQuery;
 import com.dk.mdm.model.query.sale.OrderQuery;
+import com.dk.mdm.model.response.ivt.OutboundItemResponse;
+import com.dk.mdm.model.response.ivt.OutboundResponse;
 import com.dk.mdm.model.response.mac.RecPayItemResponse;
 import com.dk.mdm.model.response.mac.RecPayResponse;
 import com.dk.mdm.model.response.sale.MultiOwnerResponse;
@@ -67,6 +71,7 @@ import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.util.*;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 @Service
 @Transactional
@@ -151,6 +156,10 @@ public class OrderService extends BaseService<Order> {
     @Autowired
     private OutboundItemMapper outboundItemMapper;
 
+    @Autowired
+    private OutboundMapper outboundMapper;
+
+
     /**
      * @desc : 条件查询
      * @author : 付斌
@@ -263,7 +272,7 @@ public class OrderService extends BaseService<Order> {
         orderVO.setOrderId(codeMap.get("outId").toString()).setOrderNo(codeMap.get("outNote").toString())
                 .setOrderType(Constant.DocumentType.ORDER.getName());
         // 转化实体
-         Order order = orderConvert.convertToPo(orderVO);
+        Order order = orderConvert.convertToPo(orderVO);
         // 订单总单保存
         super.insert(order);
 
@@ -302,10 +311,10 @@ public class OrderService extends BaseService<Order> {
             for (OrderItemVO orderItemVO : orderVO.getItemList()) {
                 OrderItem orderItem = orderItemConvert.convertToPo(orderItemVO);
                 orderItem.setOrderId(order.getOrderId()).setCpId(order.getCpId()).setOutStatus(Constant.OutStatus.DAICHUKU.getName());
-               if( orderItem.getPriceStd()==null){
-                 orderItem.setPriceStd(BigDecimal.ZERO);
-               }
-                if( orderItem.getAmtStd()==null){
+                if (orderItem.getPriceStd() == null) {
+                    orderItem.setPriceStd(BigDecimal.ZERO);
+                }
+                if (orderItem.getAmtStd() == null) {
                     orderItem.setAmtStd(BigDecimal.ZERO);
                 }
                 orderItem.setItemId(UUID.randomUUID().toString());
@@ -520,18 +529,6 @@ public class OrderService extends BaseService<Order> {
                 }
             }
         }
-
-        // 新增的
-        List<OrderItemVO> insertOrderItemVOList = orderVO.getItemList().stream().filter(it -> it.getItemId() == null).collect(Collectors.toList());
-        for (OrderItemVO orderItemVO : insertOrderItemVOList) {
-            OrderItem orderItem = orderItemConvert.convertToPo(orderItemVO);
-            orderItem.setOrderId(order.getOrderId()).setCpId(order.getCpId()).setOutStatus(Constant.OutStatus.DAICHUKU.getName());
-            orderItem.setItemId(UUID.randomUUID().toString());
-            orderItemMapper.insert(orderItem);
-            orderItemVO.setItemId(orderItem.getItemId());
-            orderItemVO.setOrderId(orderVO.getOrderId());
-        }
-
         // 商户产品版本
         String gradeCode = "PRO";
         Map<String, Object> paramCompany = new HashMap<>();
@@ -553,11 +550,11 @@ public class OrderService extends BaseService<Order> {
             }
             // 如果出库数量不是0,则不能改仓库
             if (outintOrOutQty.compareTo(BigDecimal.ZERO) != 0) {
-               if(orderItemForUpdate.getSkuId()!=null){ //过滤外协品
-                   if (!orderItemForUpdate.getWhId().equals(orderItemVO.getWhId())) {
-                       throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.ORDER_ISOUT.getMessage());
-                   }
-               }
+                if (orderItemForUpdate.getSkuId() != null) { //过滤外协品
+                    if (!orderItemForUpdate.getWhId().equals(orderItemVO.getWhId())) {
+                        throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.ORDER_ISOUT.getMessage());
+                    }
+                }
             }
             OrderItem orderItem = orderItemConvert.convertToPo(orderItemVO);
             orderItemService.updateByUuid(orderItem);
@@ -567,31 +564,25 @@ public class OrderService extends BaseService<Order> {
             // 专业版:编辑保持原逻辑
             if ("STD".equals(gradeCode)) {  //免費版特加逻辑
                 //更改后数量不能小于退货数量;
-                if(orderItemVO.getItemQty().compareTo(orderItemForUpdate.getReturnQty()) == -1){
+                if (orderItemVO.getItemQty().compareTo(orderItemForUpdate.getReturnQty()) == -1) {
                     throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.GOODSQTY_NO_LESS_RETURNQTY.getMessage());
                 }
-                //
-                if (outintOrOutQty.compareTo(BigDecimal.ZERO) > 0) { //有出库数据
-//                    OutboundVO outboundVO = outBoundDtoConvert.convertToPo(orderVO);
-//                    outboundVO.setOutDate(LocalDate.now());
-//                    outboundVO.setOutingQty(orderVO.getSumQuantity());
-//                    outboundVO.setOutingAmt(orderVO.getFactAmt());
-//                    outboundVO.setFlgAutoHandle(orderVO.getFlgAutoHandle());
-//                    outboundVO.setFlgHandleSetting(orderVO.getFlgHandleSetting());
-//                    outboundVO.setFromId(order.getOrderId());
-//                    outboundVO.setFromNo(order.getOrderNo());
-//                    outboundVO.setOutDate(orderVO.getDeliveryDate());
-//                    outboundVO.setFactAmt(orderVO.getFactAmt());
-//                    outboundVO.setDiscount(orderVO.getDiscount());
-//                    outboundVO.setDiscAmt(orderVO.getDiscAmt());
-//                    outboundVO.setSumAmount(orderVO.getSumAmount());
-//                    outboundSaleOrderService.saleOutboundUpdate( outboundVO);
-                }
-//                outboundItemMapper.selectByCond(new OutboundItemQuery().setFromItemId(orderItem.getItemId()));
 
             }
         }
 
+        // 新增的
+        List<OrderItemVO> insertOrderItemVOList = orderVO.getItemList().stream().filter(it -> it.getItemId() == null).collect(Collectors.toList());
+        for (OrderItemVO orderItemVO : insertOrderItemVOList) {
+            OrderItem orderItem = orderItemConvert.convertToPo(orderItemVO);
+            orderItem.setOrderId(order.getOrderId()).setCpId(order.getCpId()).setOutStatus(Constant.OutStatus.DAICHUKU.getName());
+            orderItem.setItemId(UUID.randomUUID().toString());
+            orderItemMapper.insert(orderItem);
+            orderItemVO.setItemId(orderItem.getItemId());
+            orderItemVO.setOrderId(orderVO.getOrderId());
+        }
+
+
         // 删除业绩信息
         multiOwnerMapper.deleteByOrderId(order.getOrderId());
 
@@ -799,35 +790,61 @@ public class OrderService extends BaseService<Order> {
             accountService.updateMac(macId);
         }
         /**************************************** 客户收款end ********************************/
-        if(insertOrderItemVOList.size()>0){ //编辑时新选的数据生成出库单
-
-            //开单并出库办理
-            if (orderVO.getOutboundProcessingFlag() != null && orderVO.getOutboundProcessingFlag()) {
-                for (OrderItemVO orderItemVO : insertOrderItemVOList) {
-                    orderItemVO.setOutingQty(orderItemVO.getItemQty());
-                    orderItemVO.setOutingAmt(orderItemVO.getItemAmt());
-                    orderItemVO.setPriceOut(orderItemVO.getFactPrice());
-                    orderItemVO.setFromId(orderVO.getOrderId());
-                    orderItemVO.setFromItemId(orderItemVO.getItemId());
+        if ("STD".equals(gradeCode)) { //订单 转 出库数据
+            // 合并两个列表
+            List<OrderItemVO> combinedList = Stream.concat(insertOrderItemVOList.stream(), editOrderItemVOList.stream())
+                    .collect(Collectors.toList());
+            if (combinedList.size() > 0) { //编辑时新选的数据生成出库单
+                //开单并出库办理
+                if (orderVO.getOutboundProcessingFlag() != null && orderVO.getOutboundProcessingFlag()) {
+                    //标准版 只有一个出库单  所以get0 就可以 且 编辑销售订单得时候 一定是有出库单的
+                    List<OutboundResponse> outboundList = outboundMapper.selectByCond(new OutboundQuery().setFromId(orderVO.getOrderId()));
+                    if (outboundList.size() > 0) {
+                        OutboundResponse outboundResponsejson = outboundList.get(0);
+                        for (OrderItemVO orderItemVO : combinedList) {
+                            //拿到 订单明细对应的出库明细   订单明细id 和 出库单来源明细 是一 一 对应的 所以 get0 也是不会有问题的
+                            List<OutboundItemResponse> outboundItemList = outboundItemMapper.selectByCond(new OutboundItemQuery().setFromItemId(orderItemVO.getItemId()));
+                            OutboundItemResponse outboundItemjson = null;
+                            if (outboundItemList.size() != 0) { //没查到库存数据说明是新增的品 还没出库呢
+                                outboundItemjson = outboundItemList.get(0);
+                            }
+                            orderItemVO.setOutingQty(orderItemVO.getItemQty());
+                            orderItemVO.setOutingAmt(orderItemVO.getItemAmt());
+                            orderItemVO.setPriceOut(orderItemVO.getFactPrice());
+                            orderItemVO.setFromId(orderVO.getOrderId());
+                            orderItemVO.setFromItemId(orderItemVO.getItemId());
+                            orderItemVO.setOutId(outboundResponsejson.getOutId());
+                            orderItemVO.setItemId(outboundItemjson == null ? null : outboundItemjson.getItemId());
+                        }
+                        if (orderVO.getDeleteItemList() != null) { //删除list
+                            List<OrderItemVO> deleteOrderItemVOList = orderVO.getDeleteItemList().stream().filter(it -> it.getItemId() != null).collect(Collectors.toList());
+                            if (deleteOrderItemVOList.size() > 0) {
+                                orderVO.setDeleteItemList(deleteOrderItemVOList);
+                            }
+                        }
+                        orderVO.setItemList(combinedList);
+                        OutboundVO outboundVO = outBoundDtoConvert.convertToPo(orderVO);
+                        outboundVO.setOutDate(LocalDate.now());
+                        outboundVO.setOutingQty(orderVO.getSumQuantity());
+                        outboundVO.setOutingAmt(orderVO.getFactAmt());
+                        outboundVO.setFlgAutoHandle(orderVO.getFlgAutoHandle());
+                        outboundVO.setFlgHandleSetting(orderVO.getFlgHandleSetting());
+                        outboundVO.setFromId(order.getOrderId());
+                        outboundVO.setFromNo(order.getOrderNo());
+                        outboundVO.setOutDate(orderVO.getDeliveryDate());
+                        outboundVO.setFactAmt(orderVO.getFactAmt());
+                        outboundVO.setDiscount(orderVO.getDiscount());
+                        outboundVO.setDiscAmt(orderVO.getDiscAmt());
+                        outboundVO.setSumAmount(orderVO.getSumAmount());
+                        outboundVO.setOutId(outboundResponsejson.getOutId());
+                        outboundVO.setLimitEdit(true);
+
+                        outboundSaleOrderService.saleOutboundUpdate(outboundVO);
+                    }
+
+
                 }
-                orderVO.setItemList(insertOrderItemVOList);
-                OutboundVO outboundVO = outBoundDtoConvert.convertToPo(orderVO);
-                outboundVO.setOutDate(LocalDate.now());
-                outboundVO.setOutingQty(orderVO.getSumQuantity());
-                outboundVO.setOutingAmt(orderVO.getFactAmt());
-                outboundVO.setFlgAutoHandle(orderVO.getFlgAutoHandle());
-                outboundVO.setFlgHandleSetting(orderVO.getFlgHandleSetting());
-                outboundVO.setFromId(order.getOrderId());
-                outboundVO.setFromNo(order.getOrderNo());
-                outboundVO.setOutDate(orderVO.getDeliveryDate());
-                outboundVO.setFactAmt(orderVO.getFactAmt());
-                outboundVO.setDiscount(orderVO.getDiscount());
-                outboundVO.setDiscAmt(orderVO.getDiscAmt());
-                outboundVO.setSumAmount(orderVO.getSumAmount());
-
-                outboundSaleOrderService.inventoryOUtBond(outboundVO);
             }
-
         }
         return ResponseResultUtil.success();
     }
@@ -1010,8 +1027,8 @@ public class OrderService extends BaseService<Order> {
 
 
     /**
-     * @desc   : 一键作废
-     * @date   : 2024/7/1 13:26
+     * @desc : 一键作废
+     * @date : 2024/7/1 13:26
      * @author : 寇珊珊
      */
     public ResponseResultVO<?> oneKeyInvalid(String id) {