Explorar o código

贸易对账 数据权限过滤

xucaiqin %!s(int64=2) %!d(string=hai) anos
pai
achega
06262c79c5

+ 8 - 3
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/dao/KwpLedgerTradeMapper.java

@@ -23,7 +23,7 @@ import java.util.Map;
 @Mapper
 public interface KwpLedgerTradeMapper extends BaseMapper<KwpLedgerTrade> {
 
-    List<LedgerSellDto> sellList(@Param("tradeReq") TradeReq tradeReq);
+    List<LedgerSellDto> sellList(@Param("tradeReq") TradeReq tradeReq, @Param("authList") List<Long> authList);
 
     /**
      * 运营端 对账列表数据
@@ -40,7 +40,7 @@ public interface KwpLedgerTradeMapper extends BaseMapper<KwpLedgerTrade> {
      * @return
      */
 
-    List<LedgerPurchaseDto> purchaseList(@Param("tradeReq") TradeReq tradeReq);
+    List<LedgerPurchaseDto> purchaseList(@Param("tradeReq") TradeReq tradeReq, @Param("authList") List<Long> authList);
 
     /**
      * 统计对账单数量
@@ -50,6 +50,10 @@ public interface KwpLedgerTradeMapper extends BaseMapper<KwpLedgerTrade> {
      */
     Map<String, Long> countOrder(@Param("tradeReq") TradeReq tradeReq);
 
+    Map<String, Long> countSellOrder(@Param("tradeReq") TradeReq tradeReq, @Param("authList") List<Long> authList);
+
+    Map<String, Long> countPurchaseOrder(@Param("tradeReq") TradeReq tradeReq, @Param("authList") List<Long> authList);
+
     /**
      * 运营端统计对账单数量
      *
@@ -72,6 +76,7 @@ public interface KwpLedgerTradeMapper extends BaseMapper<KwpLedgerTrade> {
      * @return
      */
     Long countSum(@Param("tradeReq") TradeReq tradeReq, @Param("status") List<Integer> status);
+
     /**
      * app端对账统计
      *
@@ -100,5 +105,5 @@ public interface KwpLedgerTradeMapper extends BaseMapper<KwpLedgerTrade> {
      */
     List<LedgerSell> selectIds(@Param("ids") List<Long> ids);
 
-    List<LedgerTradeDto> exportList(@Param("tradeReq") TradeReq tradeReq, @Param("idList") List<Long> idList);
+    List<LedgerTradeDto> exportList(@Param("tradeReq") TradeReq tradeReq, @Param("idList") List<Long> idList, @Param("authList") List<Long> authList);
 }

+ 0 - 1
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerLogisticsService.java

@@ -656,7 +656,6 @@ public class KwpLedgerLogisticsService extends AbsLedger {
             map = logisticsMapper.countSendOrder(logisticsReq, authUserIdList);
         } else {
             map = logisticsMapper.countAuditOrder(logisticsReq, authUserIdList);
-
         }
         TableTop ledgerCountVo;
         /*统计数据转换*/

+ 11 - 8
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerTradeService.java

@@ -18,10 +18,7 @@ import com.sckw.order.api.dubbo.TradeOrderInfoService;
 import com.sckw.order.api.model.*;
 import com.sckw.payment.dao.KwpLedgerTradeMapper;
 import com.sckw.payment.model.*;
-import com.sckw.payment.model.constant.LedgerEnum;
-import com.sckw.payment.model.constant.SettlementEnum;
-import com.sckw.payment.model.constant.TradeUnitType;
-import com.sckw.payment.model.constant.TradingEnum;
+import com.sckw.payment.model.constant.*;
 import com.sckw.payment.model.dto.*;
 import com.sckw.payment.model.vo.req.*;
 import com.sckw.payment.model.vo.res.LedgerCountSumVo;
@@ -128,7 +125,7 @@ public class KwpLedgerTradeService extends AbsLedger {
         }
         tradeReq.setUnitType(TradeUnitType.PURCHASE);
         tradeReq.setUnitTypeTwo(TradeUnitType.SELL);
-        List<LedgerSellDto> ledgerTradeDto = tradeMapper.sellList(tradeReq);
+        List<LedgerSellDto> ledgerTradeDto = tradeMapper.sellList(tradeReq, LoginUserHolder.getAuthUserIdList());
         //字典转换
         if (!CollectionUtils.isEmpty(ledgerTradeDto)) {
             changeDict(ledgerTradeDto);
@@ -167,7 +164,7 @@ public class KwpLedgerTradeService extends AbsLedger {
         }
         tradeReq.setUnitType(TradeUnitType.SELL);
         tradeReq.setUnitTypeTwo(TradeUnitType.PURCHASE);
-        List<LedgerPurchaseDto> ledgerTradeDto = tradeMapper.purchaseList(tradeReq);
+        List<LedgerPurchaseDto> ledgerTradeDto = tradeMapper.purchaseList(tradeReq, LoginUserHolder.getAuthUserIdList());
         //字典转换
         if (!CollectionUtils.isEmpty(ledgerTradeDto)) {
             changeDict(ledgerTradeDto);
@@ -680,7 +677,13 @@ public class KwpLedgerTradeService extends AbsLedger {
      */
     public List<TableTop> orderCount(TradeReq tradeReq) {
         tradeReq.setEntId(LoginUserHolder.getEntId());
-        Map<String, Long> map = tradeMapper.countOrder(tradeReq);
+        Map<String, Long> map;
+        List<Long> authUserIdList = LoginUserHolder.getAuthUserIdList();
+        if (Objects.equals(tradeReq.getUnitTypeTwo(), TradeUnitType.SELL)) {
+            map = tradeMapper.countSellOrder(tradeReq, authUserIdList);
+        } else {
+            map = tradeMapper.countPurchaseOrder(tradeReq, authUserIdList);
+        }
         TableTop ledgerCountVo;
         List<TableTop> res = new ArrayList<>();
         for (LedgerEnum value : LedgerEnum.values()) {
@@ -914,7 +917,7 @@ public class KwpLedgerTradeService extends AbsLedger {
 
     public List<LedgerTradeDto> exportList(TradeReq tradeReq, List<Long> idList) {
         fillPara(tradeReq);
-        List<LedgerTradeDto> ledgerTradeDtos = tradeMapper.exportList(tradeReq, idList);
+        List<LedgerTradeDto> ledgerTradeDtos = tradeMapper.exportList(tradeReq, idList, LoginUserHolder.getAuthUserIdList());
         changeDict(ledgerTradeDtos);
         return ledgerTradeDtos;
     }

+ 226 - 0
sckw-modules/sckw-payment/src/main/resources/mapper/KwpLedgerTradeMapper.xml

@@ -149,6 +149,26 @@
                         , '%')
                     )
             </if>
+            and (
+            case when klt.status in (1, 6)
+            then
+            klt.create_by in
+            <foreach collection="authList" item="item" open="(" close=")" separator=",">
+                #{item,jdbcType=BIGINT}
+            </foreach>
+            when klt.status in (2, 3, 4, 5) then
+            (
+            klt.create_by in
+            <foreach collection="authList" item="item" open="(" close=")" separator=",">
+                #{item,jdbcType=BIGINT}
+            </foreach>
+            or kltu2.contacts_id in
+            <foreach collection="authList" item="item" open="(" close=")" separator=",">
+                #{item,jdbcType=BIGINT}
+            </foreach>
+            )
+            end
+            )
         </where>
         order by klt.generate_time desc
     </select>
@@ -299,6 +319,31 @@
                         , '%')
                     )
             </if>
+            and (
+            case
+                when klt.status = 2 then
+                    true
+            when klt.status in (3, 4, 5) then
+            (
+            (
+                kltu2.contacts_id in
+            <foreach collection="authList" item="item" open="(" close=")" separator=",">
+                #{item,jdbcType=BIGINT}
+            </foreach>)
+            or
+        (
+        select kllt.id
+        from kwp_ledger_logistics_track kllt where kllt.del_flag = 0
+                                               and kllt.l_ledger_id = klt.id
+                                               and kllt.status in (3, 5)
+                                               and kllt.create_by in
+            <foreach collection="authList" item="item" open="(" close=")" separator=",">
+                #{item,jdbcType=BIGINT}
+            </foreach>
+            )
+                )
+                end
+                )
         </where>
         order by klt.generate_time desc
     </select>
@@ -438,6 +483,138 @@
             </if>
         </where>
     </select>
+    <select id="countSellOrder" resultType="java.util.Map">
+        SELECT count(1)                           "0",
+               count(IF(klt.status = 1, 1, NULL)) "1",
+               count(IF(klt.status = 2, 1, NULL)) "2",
+               count(IF(klt.status = 3, 1, NULL)) "3",
+               count(IF(klt.status = 4, 1, NULL)) "4",
+               count(IF(klt.status = 5, 1, NULL)) "5",
+               count(IF(klt.status = 6, 1, NULL)) "6"
+        from kwp_ledger_trade klt
+                 inner join kwp_ledger_trade_unit kltu
+                            on klt.id = kltu.t_ledger_id and kltu.del_flag = 0 and
+                               kltu.unit_type = #{tradeReq.unitType,jdbcType=INTEGER}
+                 inner join kwp_ledger_trade_unit kltu2
+                            on klt.id = kltu2.t_ledger_id and kltu2.del_flag = 0 and kltu2.unit_type =
+                                                                                     #{tradeReq.unitTypeTwo,jdbcType=INTEGER}
+        <where>
+            klt.del_flag = 0
+              and kltu2.top_ent_id = #{tradeReq.entId,jdbcType=BIGINT}
+            <if test="tradeReq.unitType != null and tradeReq.unitType == 2">
+                and klt.status not in (1, 6)
+            </if>
+            <if test="tradeReq.trading != null">
+                and klt.trading = #{tradeReq.trading,jdbcType=INTEGER}
+            </if>
+            <if test="tradeReq.endCreateTime != null and tradeReq.endCreateTime != '' and tradeReq.startCreateTime != null and tradeReq.startCreateTime != ''">
+                and klt.generate_time between #{tradeReq.startCreateTime,jdbcType=TIMESTAMP}
+                    and #{tradeReq.endCreateTime,jdbcType=TIMESTAMP}
+            </if>
+            <if test="tradeReq.keywords != null and tradeReq.keywords != ''">
+                and (
+                            klt.t_ledger_no like concat('%'
+                            , #{tradeReq.keywords,jdbcType=VARCHAR}
+                            , '%')
+                        or kltu.firm_name like concat('%'
+                        , #{tradeReq.keywords,jdbcType=VARCHAR}
+                        , '%')
+                        or kltu.contacts like concat('%'
+                        , #{tradeReq.keywords,jdbcType=VARCHAR}
+                        , '%')
+                    )
+            </if>
+            and (
+            case when klt.status in (1, 6)
+            then
+            klt.create_by in
+            <foreach collection="authList" item="item" open="(" close=")" separator=",">
+                #{item,jdbcType=BIGINT}
+            </foreach>
+            when klt.status in (2, 3, 4, 5) then
+            (
+            klt.create_by in
+            <foreach collection="authList" item="item" open="(" close=")" separator=",">
+                #{item,jdbcType=BIGINT}
+            </foreach>
+            or kltu2.contacts_id in
+            <foreach collection="authList" item="item" open="(" close=")" separator=",">
+                #{item,jdbcType=BIGINT}
+            </foreach>
+            )
+            end
+            )
+        </where>
+    </select>
+    <select id="countPurchaseOrder" resultType="java.util.Map">
+        SELECT count(1)                           "0",
+               count(IF(klt.status = 1, 1, NULL)) "1",
+               count(IF(klt.status = 2, 1, NULL)) "2",
+               count(IF(klt.status = 3, 1, NULL)) "3",
+               count(IF(klt.status = 4, 1, NULL)) "4",
+               count(IF(klt.status = 5, 1, NULL)) "5",
+               count(IF(klt.status = 6, 1, NULL)) "6"
+        from kwp_ledger_trade klt
+                 inner join kwp_ledger_trade_unit kltu
+                            on klt.id = kltu.t_ledger_id and kltu.del_flag = 0 and
+                               kltu.unit_type = #{tradeReq.unitType,jdbcType=INTEGER}
+                 inner join kwp_ledger_trade_unit kltu2
+                            on klt.id = kltu2.t_ledger_id and kltu2.del_flag = 0 and kltu2.unit_type =
+                                                                                     #{tradeReq.unitTypeTwo,jdbcType=INTEGER}
+        <where>
+            klt.del_flag = 0
+              and kltu2.top_ent_id = #{tradeReq.entId,jdbcType=BIGINT}
+            <if test="tradeReq.unitType != null and tradeReq.unitType == 2">
+                and klt.status not in (1, 6)
+            </if>
+            <if test="tradeReq.trading != null">
+                and klt.trading = #{tradeReq.trading,jdbcType=INTEGER}
+            </if>
+            <if test="tradeReq.endCreateTime != null and tradeReq.endCreateTime != '' and tradeReq.startCreateTime != null and tradeReq.startCreateTime != ''">
+                and klt.generate_time between #{tradeReq.startCreateTime,jdbcType=TIMESTAMP}
+                    and #{tradeReq.endCreateTime,jdbcType=TIMESTAMP}
+            </if>
+            <if test="tradeReq.keywords != null and tradeReq.keywords != ''">
+                and (
+                            klt.t_ledger_no like concat('%'
+                            , #{tradeReq.keywords,jdbcType=VARCHAR}
+                            , '%')
+                        or kltu.firm_name like concat('%'
+                        , #{tradeReq.keywords,jdbcType=VARCHAR}
+                        , '%')
+                        or kltu.contacts like concat('%'
+                        , #{tradeReq.keywords,jdbcType=VARCHAR}
+                        , '%')
+                    )
+            </if>
+            and (
+            case
+                when klt.status = 2 then
+                    true
+            when klt.status in (3, 4, 5) then
+            (
+            (
+                kltu2.contacts_id in
+            <foreach collection="authList" item="item" open="(" close=")" separator=",">
+                #{item,jdbcType=BIGINT}
+            </foreach>)
+            or
+        (
+        select kllt.id
+        from kwp_ledger_logistics_track kllt where kllt.del_flag = 0
+                                               and kllt.l_ledger_id = klt.id
+                                               and kllt.status in (3, 5)
+                                               and kllt.create_by in
+            <foreach collection="authList" item="item" open="(" close=")" separator=",">
+                #{item,jdbcType=BIGINT}
+            </foreach>
+            )
+                )
+                end
+                )
+        </where>
+    </select>
+
     <select id="countOrder2" resultType="java.util.Map">
         SELECT count(1)                                    "0",
                count(IF(kll_distinct.status = 1, 1, NULL)) "1",
@@ -676,6 +853,55 @@
                         , '%')
                         )
                     </if>
+                    <if test="tradeReq.unitType == 1">
+                        and (
+                        case when klt.status in (1, 6)
+                        then
+                        klt.create_by in
+                        <foreach collection="authList" item="item" open="(" close=")" separator=",">
+                            #{item,jdbcType=BIGINT}
+                        </foreach>
+                        when klt.status in (2, 3, 4, 5) then
+                        (
+                        klt.create_by in
+                        <foreach collection="authList" item="item" open="(" close=")" separator=",">
+                            #{item,jdbcType=BIGINT}
+                        </foreach>
+                        or kltu2.contacts_id in
+                        <foreach collection="authList" item="item" open="(" close=")" separator=",">
+                            #{item,jdbcType=BIGINT}
+                        </foreach>
+                        )
+                        end
+                        )
+                    </if>
+                    <if test="tradeReq.unitType == 2">
+                        and (
+                        case
+                        when klt.status = 2 then
+                        true
+                        when klt.status in (3, 4, 5) then
+                        (
+                        (
+                        kltu2.contacts_id in
+                        <foreach collection="authList" item="item" open="(" close=")" separator=",">
+                            #{item,jdbcType=BIGINT}
+                        </foreach>)
+                        or
+                        (
+                        select kllt.id
+                        from kwp_ledger_logistics_track kllt where kllt.del_flag = 0
+                        and kllt.l_ledger_id = klt.id
+                        and kllt.status in (3, 5)
+                        and kllt.create_by in
+                        <foreach collection="authList" item="item" open="(" close=")" separator=",">
+                            #{item,jdbcType=BIGINT}
+                        </foreach>
+                        )
+                        )
+                        end
+                        )
+                    </if>
                 </otherwise>
             </choose>
         </where>