Jelajahi Sumber

修改导出

bihuisong 6 bulan lalu
induk
melakukan
00b1be4d9a

+ 14 - 0
songhua-system/src/main/java/com/songhua/system/domain/vo/TicketRulesAndTicketIdsVO.java

@@ -0,0 +1,14 @@
+package com.songhua.system.domain.vo;
+
+
+import lombok.Data;
+
+@Data
+public class TicketRulesAndTicketIdsVO {
+
+    private String ticketRules;
+
+    private String ticketIds;
+
+
+}

+ 5 - 0
songhua-system/src/main/java/com/songhua/system/mapper/PzRawDataMapper.java

@@ -4,7 +4,9 @@ import java.util.List;
 
 import com.songhua.system.domain.PzRawData;
 import com.songhua.system.domain.PzRawDataVo;
+import com.songhua.system.domain.vo.TicketRulesAndTicketIdsVO;
 import com.songhua.system.domain.vo.TicketStatisticsImpVO;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * 原始数据导入Mapper接口
@@ -68,4 +70,7 @@ public interface PzRawDataMapper
 
     public int deleteByTicketName();
 
+
+    List<TicketRulesAndTicketIdsVO> selectTicketRulesAndTicketIds(@Param("ticketId") String ticketId);
+
 }

+ 24 - 10
songhua-system/src/main/java/com/songhua/system/service/impl/PzRawDataServiceImpl.java

@@ -6,6 +6,7 @@ import com.songhua.common.utils.file.FileUtils;
 import com.songhua.system.domain.PzRawData;
 import com.songhua.system.domain.PzRawDataVo;
 import com.songhua.system.domain.vo.ShhTicketRulesReqVO;
+import com.songhua.system.domain.vo.TicketRulesAndTicketIdsVO;
 import com.songhua.system.domain.vo.TicketStatisticsImpVO;
 import com.songhua.system.enums.TicketRulesEnum;
 import com.songhua.system.mapper.PzRawDataMapper;
@@ -362,20 +363,34 @@ public class PzRawDataServiceImpl implements IPzRawDataService {
         // 创建一个映射,用于存储票种名称到 ShhTicketRulesReqVO 对象的映射
         Map<String, ShhTicketRulesReqVO> map = new LinkedHashMap<>();
         // 获取所有票种名称
-        List<String> keyByValue = TicketRulesEnum.getAllKeys();
-        keyByValue.forEach(name -> {
+//        List<String> keyByValue = TicketRulesEnum.getAllKeys();
+//        keyByValue.forEach(name -> {
+//            ShhTicketRulesReqVO ticketRulesReqVO = new ShhTicketRulesReqVO();
+//            ticketRulesReqVO.setTicketName(name);
+//            map.put(name, ticketRulesReqVO);
+//        });
+        List<TicketRulesAndTicketIdsVO> newList = pzRawDataMapper.selectTicketRulesAndTicketIds(null);
+        newList.forEach(name -> {
             ShhTicketRulesReqVO ticketRulesReqVO = new ShhTicketRulesReqVO();
-            ticketRulesReqVO.setTicketName(name);
-            map.put(name, ticketRulesReqVO);
+            ticketRulesReqVO.setTicketName(name.getTicketRules());
+            map.put(name.getTicketRules(), ticketRulesReqVO);
         });
         // 遍历原始数据列表
         for (PzRawDataVo e : list) {
             // 获取当前票种对应的票种名称列表
-            List<String> ticketNames = TicketRulesEnum.getKeyByValues(e.getTicketId());
-            // 遍历票种名称列表
-            for (String name : ticketNames) {
-                if (map.containsKey(name)) {
-                    ShhTicketRulesReqVO ticketRulesReqVO = map.get(name);
+//            List<String> ticketNames = TicketRulesEnum.getKeyByValues(e.getTicketId());
+//            // 遍历票种名称列表
+//            for (String name : ticketNames) {
+//                if (map.containsKey(name)) {
+//                    ShhTicketRulesReqVO ticketRulesReqVO = map.get(name);
+//                    ticketRulesReqVO.setNumberSheets(ticketRulesReqVO.getNumberSheets() + e.getNumber());
+//                    ticketRulesReqVO.setAmount(ticketRulesReqVO.getAmount() == null ? BigDecimal.ZERO : ticketRulesReqVO.getAmount().add(e.getMoney()));
+//                }
+//            }
+            List<TicketRulesAndTicketIdsVO> ticketNames = pzRawDataMapper.selectTicketRulesAndTicketIds(String.valueOf(e.getTicketId()));
+            for (TicketRulesAndTicketIdsVO vo : ticketNames) {
+                if (map.containsKey(vo.getTicketRules())) {
+                    ShhTicketRulesReqVO ticketRulesReqVO = map.get(vo.getTicketRules());
                     ticketRulesReqVO.setNumberSheets(ticketRulesReqVO.getNumberSheets() + e.getNumber());
                     ticketRulesReqVO.setAmount(ticketRulesReqVO.getAmount() == null ? BigDecimal.ZERO : ticketRulesReqVO.getAmount().add(e.getMoney()));
                 }
@@ -386,7 +401,6 @@ public class PzRawDataServiceImpl implements IPzRawDataService {
     }
 
 
-
     /**
      * 统计导出计算总价公式(票种只存在一个规则中)
      *

+ 31 - 0
songhua-system/src/main/resources/mapper/system/PzRawDataMapper.xml

@@ -23,6 +23,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="ticketId"    column="ticket_id"    />
     </resultMap>
 
+
+    <resultMap type="TicketRulesAndTicketIdsVO" id="TicketRulesAndTicketIdsVOResult">
+        <result property="ticketRules"    column="ticket_rules"    />
+        <result property="ticketIds"    column="ticketIds"    />
+    </resultMap>
+
     <sql id="selectPzRawDataVo">
         select id, number, money, pay_type, create_time,ticket_id from pz_raw_data
     </sql>
@@ -131,4 +137,29 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         delete from pz_raw_data
     </delete>
 
+    <select id="selectTicketRulesAndTicketIds" parameterType="TicketRulesAndTicketIdsVO" resultMap="TicketRulesAndTicketIdsVOResult">
+        SELECT
+        *
+        FROM
+        (
+        SELECT
+        tr.ticket_rules,
+        GROUP_CONCAT( ttm.id ) AS ticketIds
+        FROM
+        `shh_ticket_rules` tr
+        LEFT JOIN shh_ticket_rules_data trd ON tr.id = trd.rules_id
+        LEFT JOIN pz_ticket_type_management ttm ON trd.ticket_id = ttm.id
+        GROUP BY
+        tr.ticket_rules
+        ORDER BY
+        tr.id ASC
+        ) tab
+        WHERE 1 = 1
+        <if test="ticketId != null  and ticketId != ''">
+            and
+            FIND_IN_SET(
+            #{ticketId},
+            tab.ticketIds)
+        </if>
+    </select>
 </mapper>