Explorar o código

Merge remote-tracking branch 'origin/master'

dongke hai 1 ano
pai
achega
dd111aebfb

+ 28 - 0
src/main/java/com/dk/mdm/controller/sale/OrderItemController.java

@@ -7,8 +7,10 @@ import com.dk.common.controller.BaseController;
 import com.dk.common.service.BaseService;
 import com.dk.mdm.model.query.pur.PurchaseItemQuery;
 import com.dk.mdm.model.query.sale.OrderItemQuery;
+import com.dk.mdm.model.query.sale.OrderQuery;
 import com.dk.mdm.model.response.pur.PurchaseItemResponse;
 import com.dk.mdm.model.response.sale.OrderItemResponse;
+import com.dk.mdm.model.response.sale.OrderResponse;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -18,6 +20,8 @@ import org.springframework.web.bind.annotation.RestController;
 import io.swagger.annotations.Api;
 import com.dk.mdm.service.sale.OrderItemService;
 
+import java.util.List;
+
 @Api(tags = "销售明细API接口")
 @RestController
 @RequestMapping("/sale/orderItem")
@@ -58,4 +62,28 @@ public class OrderItemController{
         return orderItemService.purchaseBasedOnSaleSelectOrder(orderItemQuery);
     }
 
+
+    /**
+     * @desc   : 销售出库页面选择源单条件查询分页
+     * @date   : 2024/6/27 14:12
+     * @author : 寇珊珊
+     */
+    @ApiOperation(value = "销售出库页面选择源单条件查询分页", notes = "销售出库页面选择源单条件查询分页")
+    @PostMapping({"select_by_sale_out_by_page"})
+    public ResponseResultVO<PageList<OrderItemResponse>> selectBySaleOutByPage(@RequestBody OrderItemQuery orderItemQuery) {
+        return orderItemService.selectBySaleOutByPage(orderItemQuery);
+    }
+
+
+    /**
+     * @desc   : 销售出库页面选择源单
+     * @date   : 2024/6/27 14:12
+     * @author : 寇珊珊
+     */
+    @ApiOperation(value = "销售出库页面选择源单", notes = "销售出库页面选择源单")
+    @PostMapping({"select_by_sale_out"})
+    public ResponseResultVO<List<OrderItemResponse>> selectBySaleOut(@RequestBody OrderItemQuery orderItemQuery) {
+        return orderItemService.selectBySaleOut(orderItemQuery);
+    }
+
 }

+ 20 - 0
src/main/java/com/dk/mdm/mapper/report/ReportMapper.java

@@ -314,4 +314,24 @@ public interface ReportMapper extends BaseMapper<JSONObject> {
      * @date   : 2024-06-26 14:31
      */
     List<Map<String, Object>> getPsiOrderByUser(Map<String, Object> params);
+
+    /**
+     * @desc   : 获取销售额
+     * @author : 刘尧
+     * @date   : 2024-06-26 17:28
+     */
+    Map<String, Object> getSales(Map<String, Object> params);
+    /**
+     * @desc   : 获取收支额
+     * @author : 刘尧
+     * @date   : 2024-06-26 17:28
+     */
+    Map<String, Object> getIncomeExpenditure(Map<String, Object> params);
+    // 获取欠款额 !!!!
+    /**
+     * @desc   : 获取欠款额
+     * @author : 刘尧
+     * @date   : 2024-06-26 17:28
+     */
+    Map<String, Object> getDebt(Map<String, Object> params);
 }

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

@@ -3123,7 +3123,7 @@
         SELECT
             tpo.cus_id as "objectId"
              , tpo.order_no as "biznisNo"
-             , tpo.make_time as "accDate"
+             , tpo.make_time::date as "accDate"
              , COALESCE(SUM(tpo.fact_amt), 0) as "facAmt"
         FROM dkic_b.t_psi_order tpo
         WHERE tpo.flg_valid
@@ -3158,6 +3158,38 @@
         group by tpo.cus_id, tpo.make_time, tpo.fact_amt, tpo.order_no
     </select>
 
+    <!--获取销售额-->
+    <select id="getSales" resultType="java.util.Map">
+        SELECT
+            COALESCE(SUM(tpo.fact_amt), 0) as "facAmt"
+        FROM dkic_b.t_psi_order tpo
+        WHERE tpo.flg_valid
+        AND tpo.cp_id = #{cpId}
+        AND tpo.make_time::date &lt;= CURRENT_DATE
+    </select>
+    <!--获取收支额-->
+    <select id="getIncomeExpenditure" resultType="java.util.Map">
+        SELECT
+            COALESCE(SUM(a.amt_rec), 0) as "arrears"
+        FROM dkic_b.t_mac_account_item a
+        LEFT JOIN dkic_b.t_mst_customer tmc ON tmc.cus_id = a.object_id
+        WHERE a.flg_valid
+        AND a.cp_id = #{cpId}
+        AND tmc.cus_name IS NOT NULL AND tmc.cus_name != ''
+        AND a.make_time::date &lt;= CURRENT_DATE
+    </select>
+    <!--获取欠款额-->
+    <select id="getDebt" resultType="java.util.Map">
+        SELECT
+            COALESCE(SUM(tpo.out_amt), 0) as "outAmt"
+        FROM dkic_b.t_mac_account_item a
+        LEFT JOIN dkic_b.t_psi_outbound tpo ON tpo.out_id = a.biznis_id
+        WHERE a.flg_valid
+        AND a.cp_id = #{cpId}
+        AND tpo.out_amt &lt; 0
+        AND a.make_time::date &lt;= CURRENT_DATE
+    </select>
+
     <!--region 销售利润-->
     <!--
     2024-06-24 11:25 成本和销售额都从出库明细中取

+ 16 - 0
src/main/java/com/dk/mdm/mapper/sale/OrderItemMapper.java

@@ -4,8 +4,10 @@ import com.dk.mdm.model.pojo.ivt.OutboundItem;
 import com.dk.mdm.model.pojo.sale.OrderItem;
 import com.dk.common.mapper.BaseMapper;
 import com.dk.mdm.model.query.sale.OrderItemQuery;
+import com.dk.mdm.model.query.sale.OrderQuery;
 import com.dk.mdm.model.response.ivt.IntoReturnResponse;
 import com.dk.mdm.model.response.sale.OrderItemResponse;
+import com.dk.mdm.model.response.sale.OrderResponse;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
@@ -88,5 +90,19 @@ public interface OrderItemMapper extends BaseMapper<OrderItem> {
      * @date   : 2024/3/29 16:26
      */
     Long  purchaseBasedOnSaleContByCond (OrderItemQuery orderItemQuery);
+
+    /**
+     * @desc   : 销售出库页面选择源单
+     * @date   : 2024/6/27 14:10
+     * @author : 寇珊珊
+     */
+    List<OrderItemResponse> selectBySaleOut(OrderItemQuery orderItemQuery);
+
+    /**
+     * @desc   : 销售出库页面选择源单(数量)
+     * @date   : 2024/6/27 14:10
+     * @author : 寇珊珊
+     */
+    Long selectBySaleOutByCound(OrderItemQuery orderItemQuery);
 }
 

+ 53 - 0
src/main/java/com/dk/mdm/mapper/sale/OrderItemMapper.xml

@@ -98,6 +98,8 @@
         <result column="use_place" property="usePlace"/>
         <result column="discount" property="discount"/>
         <result column="sup_id" property="supId"/>
+        <result column="canOutingQty" property="canOutingQty"/>
+
     </resultMap>
 
     <!-- 通用条件列 -->
@@ -696,4 +698,55 @@
             limit #{end} offset #{start}
         </if>
     </select>
+
+    <!-- 销售出库页面选择源单 -->
+    <select id="selectBySaleOut" resultMap="BaseResultMapResponse">
+        SELECT
+        <include refid="Base_Column_List_Response"/>,
+        tmc.cus_code as "cusCode",
+        tmc.cus_name as "cusName",
+        tmc.cus_phone as "cusPhone",
+        tmc.address_full as "addressFull",
+        tmsc.channel_name as "channelName",
+        tmgs.sku_code AS "skuCode",
+        tmgs.sku_model AS "skuModel",
+        tmgs.sku_name AS "skuName",
+        tmgb.brand_name AS "brandName",
+        tmgb.short_name AS "shortName"
+        FROM dkic_b.t_psi_order_item t
+        LEFT JOIN dkic_b.t_psi_order as tpo ON t.order_id = tpo.order_id
+        LEFT JOIN dkic_b.t_mst_customer tmc ON tmc.cus_id = tpo.cus_id
+        LEFT JOIN dkic_b.t_mst_sale_channel tmsc ON tpo.sales_channel = tmsc.channel_id
+        LEFT JOIN dkic_b.t_mst_goods_sku tmgs ON tmgs.sku_id  = t.sku_id
+        LEFT JOIN dkic_b.t_mst_goods_brand tmgb ON tmgb.brand_id  = tmgs.brand_id
+        WHERE
+        t.cp_id = #{cpId}
+        and t.item_qty - t.outing_qty - t.out_qty  > 0
+        <if test="orderNo != null">
+            AND tpo.order_no like concat('%', my_ex.likequery(#{orderNo}) , '%')
+        </if>
+        order by t.op_create_time desc
+        <if test="pageSize != null and currentPage != null and pageSize != 0 and currentPage != 0">
+            limit #{end} offset #{start}
+        </if>
+    </select>
+
+    <!-- 销售出库页面选择源单个数 -->
+    <select id="selectBySaleOutByCound" resultMap="BaseResultMapResponse">
+        SELECT
+        count(1)
+        FROM dkic_b.t_psi_order_item t
+        LEFT JOIN dkic_b.t_psi_order as tpo ON t.order_id = tpo.order_id
+        LEFT JOIN dkic_b.t_mst_customer tmc ON tmc.cus_id = tpo.cus_id
+        LEFT JOIN dkic_b.t_mst_sale_channel tmsc ON tpo.sales_channel = tmsc.channel_id
+        LEFT JOIN dkic_b.t_mst_goods_sku tmgs ON tmgs.sku_id  = t.sku_id
+        LEFT JOIN dkic_b.t_mst_goods_brand tmgb ON tmgb.brand_id  = tmgs.brand_id
+        WHERE
+        t.cp_id = #{cpId}
+         and t.item_qty - t.outing_qty - t.out_qty  > 0
+        <if test="orderNo != null">
+            AND tpo.order_no like concat('%', my_ex.likequery(#{orderNo}) , '%')
+        </if>
+    </select>
+
 </mapper>

+ 2 - 2
src/main/java/com/dk/mdm/mapper/sale/OrderMapper.xml

@@ -331,7 +331,7 @@
         i.wh_id as list_wh_id,
         sys.f_remove_zero(i.inv_qty)    as list_inv_qty,
         sys.f_remove_zero(i.usable_qty)  as list_usable_qty,
-        sys.f_remove_zero(toi.item_qty - toi.outing_qty -toi.out_qty + toi.return_qty)  as list_max_out_qty,
+        sys.f_remove_zero(toi.item_qty - toi.outing_qty -toi.out_qty  )  as list_max_out_qty,
         i.wh_name     as list_wh_name
     </sql>
 
@@ -1082,7 +1082,7 @@
         on i.sku_id = toi.sku_id and i.non_std_code = toi.non_std_code and i.cp_id = toi.cp_id
         <include refid="Condition"/>
         <if test="flgSource !=null and flgSource == true">
-            AND toi.item_qty - toi.outing_qty -toi.out_qty + toi.return_qty > 0
+            AND toi.item_qty - toi.outing_qty -toi.out_qty   > 0
         </if>
         <if test="searchText !=null">
             AND (  t.order_no LIKE concat('%', my_ex.likequery(#{searchText}), '%')

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

@@ -250,7 +250,6 @@ public class OutboundSaleOrderService extends BaseService<Outbound> {
                     accountService.reversePayable(inboundResponse.getIntoId(), Constant.InventoryDocCode.INTOBOUND.getTableName());
                 }
             }
-
             //删除外协入库单
             //外协入库总单
             inboundMapper.deleteByFromId(outboundItemVOList.get(0).getOutId());
@@ -878,7 +877,7 @@ public class OutboundSaleOrderService extends BaseService<Outbound> {
             }
             //endregion
 
-            //region 库中编辑
+            //region 库中编辑
             if (Constant.OutStatus.CHUKUZHONG.getName().equals(outboundVO.getOutStatus()) ||
                     Constant.OutStatus.DAICHUKU.getName().equals(outboundVO.getOutStatus())) {
                 //region 修改明细

+ 23 - 7
src/main/java/com/dk/mdm/service/ivt/outbound/OutboundSaleReturnService.java

@@ -291,6 +291,7 @@ public class OutboundSaleReturnService extends BaseService<Outbound> {
             }
         }
     }
+
     /**
      * @desc : 销售退货出库新建>>>退款
      * @date : 2024/3/7 14:13
@@ -298,13 +299,23 @@ public class OutboundSaleReturnService extends BaseService<Outbound> {
      */
     @Transactional(rollbackFor = {Exception.class})
     public ResponseResultVO<?> saleReturnOutboundInsertRefund(OutboundVO outboundVO) {
+        //region 如果没有客户id,要新建
+        if (outboundVO.getCusId() == null) {
+            outboundVO = outCommon.insertCustomer(outboundVO);
+        }
+        //endregion
+
         //根据id查询
         AccountResponse accountResponse = accountMapper.selectById(outboundVO.getCusId());
-        //退款的时候 判断资金账户金额是否充足
-        BigDecimal result = accountResponse.getReceipt().add(outboundVO.getSumAmtRec());//getSumAmtRec 退款是负值 所以相加
-        if (result.compareTo(BigDecimal.ZERO) < 0) {
-            return ResponseResultUtil.error(ResponseCodeEnum.NOT_LESS_RECEIPT_ZERO);
+        //客户有资金账户的时候才往下校验
+        if (accountResponse != null) {
+            //退款的时候 判断资金账户金额是否充足
+            BigDecimal result = accountResponse.getReceipt().add(outboundVO.getSumAmtRec());//getSumAmtRec 退款是负值 所以相加
+            if (result.compareTo(BigDecimal.ZERO) < 0) {
+                return ResponseResultUtil.error(ResponseCodeEnum.NOT_LESS_RECEIPT_ZERO);
+            }
         }
+
         //新建退货出库
         saleReturnOutboundInsert(outboundVO);
       //新建退款
@@ -321,6 +332,7 @@ public class OutboundSaleReturnService extends BaseService<Outbound> {
         receiptService.insertRefund(recPayVO);
         return ResponseResultUtil.success();
     }
+
     /**
      * @desc : 销售退货出库新建
      * @date : 2024/3/7 14:13
@@ -458,9 +470,13 @@ public class OutboundSaleReturnService extends BaseService<Outbound> {
 
         //region 修改库存
         if (Constant.OutStatus.YICHUKU.getName().equals(outboundVO.getOutStatus())) {
-            Map<String, Object> invMap = new HashMap<>();
-            invMap.put("outDetail", outboundVO.getItemList());
-            inventoryService.operatingInventoryInformation(invMap);
+            //筛选出skuId不为空的 走库存
+            List<OutboundItemVO> invList = outboundVO.getItemList().stream().filter(it -> it.getSkuId() != null).collect(Collectors.toList());
+            if (invList != null && invList.size() > 0) {
+                Map<String, Object> invMap = new HashMap<>();
+                invMap.put("outDetail", invList);
+                inventoryService.operatingInventoryInformation(invMap);
+            }
         }
         //endregion
 

+ 24 - 2
src/main/java/com/dk/mdm/service/report/ReportService.java

@@ -33,6 +33,7 @@ import org.springframework.transaction.annotation.Transactional;
 import javax.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.rmi.MarshalledObject;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
@@ -766,8 +767,29 @@ public class ReportService {
             map.put("item", userArrearsItem);
             map.put("totalMoney", total);
         }
-
-        return ResponseResultUtil.success(arrears);
+        if (Integer.parseInt(params.get("currentPage").toString()) == 1) {
+            // 查询公司概况
+            // 获取销售额
+            Map<String, Object> sales = reportMapper.getSales(params);
+            // 获取收支额
+            Map<String, Object> incomeExpenditure = reportMapper.getIncomeExpenditure(params);
+            // 获取欠款额
+            Map<String, Object> debt = reportMapper.getDebt(params);
+            if (debt != null) {
+                debt.put("outAmt", Double.valueOf(String.valueOf(sales.get("facAmt")).equals("null") ? "0" : String.valueOf(sales.get("facAmt")))
+                        + Double.valueOf(String.valueOf(debt.get("outAmt")).equals("null") ? "0" : String.valueOf(debt.get("outAmt")))
+                        - Double.valueOf(String.valueOf(incomeExpenditure.get("arrears")).equals("null") ? "0" : String.valueOf(incomeExpenditure.get("arrears"))));
+            }
+            // todo
+            List<Map<String, Object>> overviewList = new ArrayList<>();
+            overviewList.add(sales);
+            overviewList.add(incomeExpenditure);
+            overviewList.add(debt);
+            overviewList.addAll(arrears);
+            return ResponseResultUtil.success(overviewList);
+        }else {
+            return ResponseResultUtil.success(arrears);
+        }
     }
 
     private static final Map<String, Class<?>> CLASS_MAP = ImmutableMap.<String, Class<?>>builder()

+ 22 - 0
src/main/java/com/dk/mdm/service/sale/OrderItemService.java

@@ -10,8 +10,10 @@ import com.dk.common.service.BaseService;
 import com.dk.common.mapper.BaseMapper;
 import com.dk.mdm.model.query.pur.PurchaseItemQuery;
 import com.dk.mdm.model.query.sale.OrderItemQuery;
+import com.dk.mdm.model.query.sale.OrderQuery;
 import com.dk.mdm.model.response.pur.PurchaseItemResponse;
 import com.dk.mdm.model.response.sale.OrderItemResponse;
+import com.dk.mdm.model.response.sale.OrderResponse;
 import org.springframework.stereotype.Service;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
@@ -58,4 +60,24 @@ public class OrderItemService extends BaseService<OrderItem> {
 		return ResponseResultUtil.success(new PageList<>(items, count));
 	}
 
+	/**
+	 * @desc   : 销售出库页面选择源单条件查询分页
+	 * @date   : 2024/6/27 14:13
+	 * @author : 寇珊珊
+	 */
+	@Pagination
+	public ResponseResultVO<PageList<OrderItemResponse>> selectBySaleOutByPage(OrderItemQuery orderItemQuery) {
+		return super.mergeListWithCount(orderItemQuery, orderItemMapper.selectBySaleOut(orderItemQuery),
+				orderItemMapper.selectBySaleOutByCound(orderItemQuery));
+	}
+
+	/**
+	 * @desc   : 销售出库页面选择源单条件查询
+	 * @date   : 2024/6/27 14:13
+	 * @author : 寇珊珊
+	 */
+	public ResponseResultVO<List<OrderItemResponse>> selectBySaleOut(OrderItemQuery orderItemQuery) {
+		return ResponseResultUtil.success(orderItemMapper.selectBySaleOut(orderItemQuery));
+	}
+
 }