Переглянути джерело

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

于继渤 1 рік тому
батько
коміт
fff5bef333

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

@@ -307,4 +307,11 @@ public interface ReportMapper extends BaseMapper<JSONObject> {
      * @date   : 2024-06-07 16:48
      */
     List<Map<String, Object>> getSaleProfitGroupBySku(Map params);
+
+    /**
+     * @desc   : 根据用户查询订单明细
+     * @author : 刘尧
+     * @date   : 2024-06-26 14:31
+     */
+    List<Map<String, Object>> getPsiOrderByUser(Map<String, Object> params);
 }

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

@@ -3006,13 +3006,13 @@
             </if>
         WHERE a.flg_valid
         AND a.cp_id = #{cpId}
-        <if test="objectId != null and objectId != ''">
+        <if test="objectId != null">
             AND a.object_id = #{objectId}::uuid
         </if>
-        <if test="staffId != null and staffId != ''">
+        <if test="staffId != null">
             AND a.staff_id = #{staffId}::uuid
         </if>
-        <if test="orgId != null and orgId != ''">
+        <if test="orgId != null">
             AND a.org_id = #{orgId}::uuid
         </if>
         <if test="makeTimeStart != null and makeTi8meStart != ''">
@@ -3040,9 +3040,6 @@
         </if>
         <if test="recTypeList != null and recTypeList.size() > 0">
             <foreach collection="recTypeList" item="item">
-                <if test="item != null and item != '' and item == '收支类型-出库'">
-                    AND tpo.out_amt &gt; 0
-                </if>
                 <if test="item != null and item != '' and item == '收支类型-退货'">
                     AND tpo.out_amt &lt; 0
                 </if>
@@ -3095,6 +3092,72 @@
         </if>
     </select>
 
+    <select id="getPsiOrderCount" resultType="java.util.Map">
+        SELECT
+        tpo.cus_id as "objectId"
+        , tpo.order_no as "biznisNo"
+        , tpo.make_time as "accDate"
+        , COALESCE(SUM(tpo.fact_amt), 0) as "facAmt"
+        FROM dkic_b.t_psi_order tpo
+        WHERE tpo.flg_valid
+        AND tpo.cp_id = #{cpId}
+        <if test="objectId != null">
+            AND tpo.cus_id = #{objectId}::uuid
+        </if>
+        <if test="staffIds != null and staffIds.size() > 0">
+            AND tpo.staff_id IN
+            <foreach collection="staffIds" index="index" item="item" separator="," open="(" close=")">
+                #{item}::uuid
+            </foreach>
+        </if>
+        <if test="orgIds != null and orgIds.size() > 0">
+            AND tpo.org_id IN
+            <foreach collection="orgIds" index="index" item="item" separator="," open="(" close=")">
+                #{item}::uuid
+            </foreach>
+        </if>
+        group by tpo.cus_id, tpo.make_time, tpo.fact_amt, tpo.order_no
+    </select>
+
+    <select id="getPsiOrderByUser" resultType="java.util.Map">
+        SELECT
+            tpo.cus_id as "objectId"
+             , tpo.order_no as "biznisNo"
+             , tpo.make_time as "accDate"
+             , COALESCE(SUM(tpo.fact_amt), 0) as "facAmt"
+        FROM dkic_b.t_psi_order tpo
+        WHERE tpo.flg_valid
+        AND tpo.cp_id = #{cpId}
+        <if test="objectId != null">
+            AND tpo.cus_id = #{objectId}::uuid
+        </if>
+        <if test="staffId != null">
+            AND tpo.staff_id = #{staffId}::uuid
+        </if>
+        <if test="orgId != null">
+            AND tpo.org_id = #{orgId}::uuid
+        </if>
+        <if test="staffIds != null and staffIds.size() > 0">
+            AND tpo.staff_id IN
+            <foreach collection="staffIds" index="index" item="item" separator="," open="(" close=")">
+                #{item}::uuid
+            </foreach>
+        </if>
+        <!--  改好再说  -->
+<!--        <if test="searchText != null and searchText != ''">-->
+<!--            AND (tmc.cus_name LIKE concat('%',#{searchText},'%')-->
+<!--            OR tmc.cus_phone LIKE concat('%',#{searchText},'%')-->
+<!--            OR tmc.address_full LIKE concat('%',#{searchText},'%'))-->
+<!--        </if>-->
+        <if test="orgIds != null and orgIds.size() > 0">
+            AND tpo.org_id IN
+            <foreach collection="orgIds" index="index" item="item" separator="," open="(" close=")">
+                #{item}::uuid
+            </foreach>
+        </if>
+        group by tpo.cus_id, tpo.make_time, tpo.fact_amt, tpo.order_no
+    </select>
+
     <!--region 销售利润-->
     <!--
     2024-06-24 11:25 成本和销售额都从出库明细中取

+ 22 - 16
src/main/java/com/dk/mdm/service/report/ReportService.java

@@ -728,33 +728,39 @@ public class ReportService {
      * @date : 2024/6/6 14:27
      */
     public ResponseResultVO<List<Map<String, Object>>> getCusRecPayReportItem(Map<String, Object> params) {
-        List<Map<String, Object>> items = reportMapper.getCusRecPayReportItemByUser(params);
         params.put("start", (Integer.parseInt(params.get("currentPage").toString()) - 1) * Integer.parseInt(params.get("pageSize").toString()));
         params.put("end", Integer.parseInt(params.get("pageSize").toString()));
         List<Map<String, Object>> arrears = reportMapper.getUserArrears(params);
-        // 判断类型
-        for (Map<String, Object> item : items) {
-            if (Double.valueOf(String.valueOf(item.get("outAmt")).equals("null") ? "0" : String.valueOf(item.get("outAmt"))) > 0) {
-                item.put("type", "销售出库");
-            } else if (Double.valueOf(String.valueOf(item.get("outAmt")).equals("null") ? "0" : String.valueOf(item.get("outAmt"))) < 0) {
-                item.put("type", "销售退货");
-            } else if (Double.valueOf(String.valueOf(item.get("sumAmtRec")).equals("null") ? "0" : String.valueOf(item.get("sumAmtRec"))) > 0) {
-                item.put("type", "客户收款");
-            } else if (Double.valueOf(String.valueOf(item.get("sumAmtRec")).equals("null") ? "0" : String.valueOf(item.get("sumAmtRec"))) < 0) {
-                item.put("type", "客户退款");
-            }
-        }
         for (Map<String, Object> map : arrears) {
+            params.put("objectId", map.get("objectId"));
+            List<Map<String, Object>> items = reportMapper.getCusRecPayReportItemByUser(params);
+            List<Map<String, Object>> psiOrderByUser = reportMapper.getPsiOrderByUser(params);
+            items.addAll(psiOrderByUser);
+            // 判断类型
+            for (Map<String, Object> item : items) {
+                if (Double.valueOf(String.valueOf(item.get("facAmt")).equals("null") ? "0" : String.valueOf(item.get("facAmt"))) > 0) {
+                    item.put("type", "销售订单");
+                } else if (Double.valueOf(String.valueOf(item.get("outAmt")).equals("null") ? "0" : String.valueOf(item.get("outAmt"))) < 0) {
+                    item.put("type", "销售退货");
+                } else if (Double.valueOf(String.valueOf(item.get("sumAmtRec")).equals("null") ? "0" : String.valueOf(item.get("sumAmtRec"))) > 0) {
+                    item.put("type", "客户收款");
+                } else if (Double.valueOf(String.valueOf(item.get("sumAmtRec")).equals("null") ? "0" : String.valueOf(item.get("sumAmtRec"))) < 0) {
+                    item.put("type", "客户退款");
+                }
+            }
             // 筛选出符合条件的明细
             List<Map<String, Object>> userArrearsItem = items.stream()
                     .filter(item -> item.get("objectId").equals(map.get("objectId")))
-                    .filter(item -> (Double.valueOf(String.valueOf(item.get("outAmt")).equals("null") ? "0" : String.valueOf(item.get("outAmt"))) != 0
-                            || Double.valueOf(String.valueOf(item.get("sumAmtRec")).equals("null") ? "0" : String.valueOf(item.get("sumAmtRec"))) != 0))
+                    .filter(item -> ((Double.valueOf(String.valueOf(item.get("outAmt")).equals("null") ? "0" : String.valueOf(item.get("outAmt"))) != 0
+                            && Double.valueOf(String.valueOf(item.get("outAmt")).equals("null") ? "0" : String.valueOf(item.get("outAmt"))) < 0)
+                            || Double.valueOf(String.valueOf(item.get("sumAmtRec")).equals("null") ? "0" : String.valueOf(item.get("sumAmtRec"))) != 0
+                            || Double.valueOf(String.valueOf(item.get("facAmt")).equals("null") ? "0" : String.valueOf(item.get("facAmt"))) != 0))
                     .collect(Collectors.toList());
             AtomicReference<Double> total = new AtomicReference<>(0.00);
             // 计算单用户的总计
             userArrearsItem.forEach(item -> {
-                total.updateAndGet(v -> v + Double.valueOf(String.valueOf(item.get("outAmt")).equals("null") ? "0" : String.valueOf(item.get("outAmt")))
+                total.updateAndGet(v -> v + Double.valueOf(String.valueOf(item.get("facAmt")).equals("null") ? "0" : String.valueOf(item.get("facAmt")))
+                        + Double.valueOf(String.valueOf(item.get("outAmt")).equals("null") ? "0" : String.valueOf(item.get("outAmt")))
                         - Double.valueOf(String.valueOf(item.get("sumAmtRec")).equals("null") ? "0" : String.valueOf(item.get("sumAmtRec"))));
             });
             map.put("item", userArrearsItem);