Jelajahi Sumber

导出原始数据导入列表

bihuisong 7 bulan lalu
induk
melakukan
99de3d5328

+ 2 - 2
songhua-system/src/main/java/com/songhua/system/domain/vo/ShhTicketRulesReqVO.java

@@ -17,8 +17,8 @@ public class ShhTicketRulesReqVO {
     private String ticketName;
 
     @Excel(name = "张数")
-    private int numberSheets;
+    private int numberSheets = 0;
 
     @Excel(name = "金额")
-    private BigDecimal amount;
+    private BigDecimal amount = BigDecimal.ZERO;
 }

+ 107 - 8
songhua-system/src/main/java/com/songhua/system/enums/TicketRulesEnum.java

@@ -3,10 +3,7 @@ package com.songhua.system.enums;
 import lombok.AllArgsConstructor;
 import lombok.Getter;
 
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-import java.util.stream.Stream;
+import java.util.*;
 
 /**
  * 门票规则枚举类
@@ -15,12 +12,102 @@ import java.util.stream.Stream;
 @AllArgsConstructor
 public enum TicketRulesEnum {
 
+    //1.门票10元=门票+游湖观光套票+五虎岛观光套票+卧龙潭观光套票+卧龙潭五虎岛联票
     RULE_ONE("门票10元", Arrays.asList(1L, 18L, 19L, 56L, 46L)),
-    RULE_TWO("门票9元", Arrays.asList(20L,32L, 39L, 36L, 28L, 43L, 29L, 37L, 44L, 57L, 58L, 65L)),
+    //2.门票9元=门票(团票)+门票(美团)+门票(携程)+游湖观光套票(团票)+游湖观光套票(美团)+游湖观光套票(携程)+五虎岛观光套票(团票)+五虎岛观光套票(美团)+五虎岛观光套票(携程)+卧龙潭观光套票(团票)+卧龙潭观光套票(美团)+卧龙潭观光套票(携程)
+    RULE_TWO("门票9元", Arrays.asList(20L, 32L, 39L, 36L, 28L, 43L, 29L, 37L, 44L, 57L, 58L, 65L)),
+    //3.门票5元=门票(半价)
     RULE_THREE("门票5元", Collections.singletonList(2L)),
+    //4.门票4.5元=门票(半价团票)
     RULE_FOUR("门票4.5元", Collections.singletonList(21L)),
+    //5.观光车票10元=观光车票+游湖观光套票+五虎岛观光套票+卧龙潭观光套票+卧龙潭五虎岛联票
     RULE_FIVE("观光车票10元", Arrays.asList(4L, 18L, 19L, 56L, 46L)),
-    RULE_SIX("观光车票9元", Arrays.asList(4L, 18L, 19L, 56L, 46L)),
+    //6.观光车票9元=观光车票(团票)+观光车票(美团)+观光车票(携程)+游湖观光套票(团票)+游湖观光套票(美团)+游湖观光套票(携程)+五虎岛观光套票(团票)+五虎岛观光套票(美团)+五虎岛观光套票(携程)+卧龙潭观光套票(团票)+卧龙潭观光套票(美团)+卧龙潭观光套票(携程)
+    RULE_SIX("观光车票9元", Arrays.asList(22L, 33L, 40L, 28L, 36L, 43L, 29L, 37L, 44L, 57L, 58L, 65L)),
+    //7.游湖船票35元=游湖船票+游湖观光套票
+    RULE_SEVEN("游湖船票35元", Arrays.asList(6L, 18L)),
+    //8.游湖船票31.5元=游湖船票(团票)+游湖船票(美团)+游湖船票(携程)+游湖观光套票(团票)+游湖观光套票(美团)+游湖观光套票(携程)
+    RULE_EIGHT("游湖船票31.5元", Arrays.asList(23L, 48L, 45L, 28L, 36L, 43L)),
+    //9.五虎岛门票50元=五虎岛门票
+    RULE_NINE("五虎岛门票50元", Collections.singletonList(10L)),
+    //10.五虎岛门票25元=五虎岛门票(半价)
+    RULE_TEN("五虎岛门票25元", Collections.singletonList(11L)),
+    //11.五虎岛门票45元=五虎岛门票(团票)+五虎岛门票(美团)+五虎岛门票(携程)
+    RULE_ELEVEN("五虎岛门票45元", Arrays.asList(25L, 35L, 42L)),
+    //12.五虎岛门票35元=五虎岛观光套票+五虎岛观光套票(码头)
+    RULE_TWELVE("五虎岛门票35元", Arrays.asList(19L, 66L)),
+    //13.五虎岛门票31.5元=五虎岛观光套票(团票)+五虎岛观光套票(美团)+五虎岛观光套票(携程)
+    RULE_THIRTEEN("五虎岛门票31.5元", Arrays.asList(29L, 37L, 44L)),
+    //14.五虎岛门票30元=卧龙潭五虎岛联票+卧龙潭五虎岛联票(码头)
+    RULE_FOURTEEN("五虎岛门票30元", Arrays.asList(46L, 48L)),
+    //15.五虎岛门票22.5元=五虎岛门票(半价团票)
+    RULE_FIFTEEN("五虎岛门票22.5元", Collections.singletonList(11L)),
+    //16.五虎岛船票50元=五虎岛船票
+    RULE_SIXTEEN("五虎岛船票50元", Collections.singletonList(8L)),
+    //17.五虎岛船票45元=五虎岛船票(团票)+五虎岛船票(美团)+五虎岛船票(携程)+五虎岛观光套票
+    RULE_SEVENTEEN("五虎岛船票45元", Arrays.asList(24L, 34L, 41L, 19L)),
+    //18.五虎岛船票40.5元=五虎岛观光套票(团票)+五虎岛观光套票(美团)+五虎岛观光套票(携程)
+    RULE_EIGHTEEN("五虎岛船票40.5元", Arrays.asList(29L, 37L, 44L)),
+    //19.卧龙潭门票60元=卧龙潭门票
+    RULE_NINETEEN("卧龙潭门票60元", Collections.singletonList(14L)),
+    //20.卧龙潭门票30元=卧龙潭门票(半价)
+    RULE_TWENTY("卧龙潭门票30元", Collections.singletonList(15L)),
+    //21.卧龙潭门票50元=卧龙潭观光套票+卧龙潭观光套票(码头)
+    RULE_TWENTY_ONE("五虎岛门票20元", Arrays.asList(56L, 67L)),
+    //22.卧龙潭门票54元=卧龙潭门票(团票)+卧龙潭门票(美团)+卧龙潭门票(携程)
+    RULE_TWENTY_TWO("卧龙潭门票54元", Arrays.asList(53L, 55L, 50L)),
+    //23.卧龙潭门票45元=卧龙潭观光套票(团票)+卧龙潭观光套票(美团)+卧龙潭观光套票(携程)
+    RULE_TWENTY_THREE("卧龙潭门票45元", Arrays.asList(57L, 58L, 65L)),
+    //24.卧龙潭门票40元=卧龙潭五虎岛联票+卧龙潭五虎岛联票(码头)
+    RULE_TWENTY_FOUR("卧龙潭门票40元", Arrays.asList(65L, 46L, 68L)),
+    //25.卧龙潭门票27元=卧龙潭门票(半价团票)
+    RULE_TWENTY_FIVE("卧龙潭门票27元", Collections.singletonList(54L)),
+    //26.卧龙潭船票60元=卧龙潭船票
+    RULE_TWENTY_SIX("卧龙潭船票60元", Collections.singletonList(13L)),
+    //27.卧龙潭船票54元=卧龙潭船票(团票)+卧龙潭船票(美团)+卧龙潭船票(携程)
+    RULE_TWENTY_SEVEN("卧龙潭船票54元", Arrays.asList(51L, 52L, 49L)),
+    //28.卧龙潭船票50元=卧龙潭五虎岛联票+卧龙潭五虎岛联票(码头)
+    RULE_TWENTY_EIGHT("卧龙潭船票50元", Arrays.asList(46L, 68L)),
+    //29.卧龙潭船票45元=卧龙潭观光套票(团票)+卧龙潭观光套票(美团)+卧龙潭观光套票(携程)
+    RULE_TWENTY_NINE("卧龙潭船票45元", Arrays.asList(57L, 58L, 65L)),
+    //30.门票=门票+游湖观光套票+五虎岛观光套票+卧龙潭观光套票+卧龙潭五虎岛联票+门票(团票)+门票(美团)+门票(携程)
+    // +游湖观光套票(团票)+游湖观光套票(美团)+游湖观光套票(携程)+五虎岛观光套票(团票)+五虎岛观光套票(美团)
+    // +五虎岛观光套票(携程)+卧龙潭观光套票(团票)+卧龙潭观光套票(美团)+卧龙潭观光套票(携程)+门票(半价)+门票(半价团票)+门票(免票)
+    RULE_THIRTY("门票", Arrays.asList(1L, 18L, 19L, 56L, 46L, 20L, 32L, 39L, 28L, 36L, 43L, 29L, 37L, 44L, 57L, 58L, 65L, 2L, 21L, 3L)),
+    //31.观光车票=观光车票+游湖观光套票+五虎岛观光套票+卧龙潭观光套票+卧龙潭五虎岛联票+
+    //观光车票(团票)+观光车票(美团)+观光车票(携程)+
+    //游湖观光套票(团票)+游湖观光套票(美团)+游湖观光套票(携程)+
+    //五虎岛观光套票(团票)+五虎岛观光套票(美团)+五虎岛观光套票(携程)+
+    //卧龙潭观光套票(团票)+卧龙潭观光套票(美团)+卧龙潭观光套票(携程)
+    RULE_THIRTY_ONE("观光车票", Arrays.asList(4L, 18L, 19L, 56L, 46L, 22L, 33L, 40L, 28L, 36L, 43L, 29L, 37L, 44L, 57L, 58L, 65L)),
+    //32.游湖船票=游湖船票+游湖观光套票+游湖船票(团票)+游湖船票(美团)+游湖船票(携程)+
+    //游湖观光套票(团票)+游湖观光套票(美团)+游湖观光套票(携程)
+    RULE_THIRTY_TWO("游湖船票", Arrays.asList(6L, 18L, 48L, 45L, 28L, 36L, 43L, 23L)),
+    //33.五虎岛门票=五虎岛门票+五虎岛门票(半价)+五虎岛门票(团票)+五虎岛门票(美团)+五虎岛门票(携程)+
+    //五虎岛观光套票+五虎岛观光套票(码头)+五虎岛观光套票(团票)+五虎岛观光套票(美团)+五虎岛观光套票(携程)+
+    //卧龙潭五虎岛联票+卧龙潭五虎岛联票(码头)+五虎岛门票(半价团票)
+    RULE_THIRTY_THREE("五虎岛门票", Arrays.asList(10L, 11L, 25L, 35L, 42L, 19L, 66L, 29L, 37L, 44L, 46L, 68L, 26L)),
+    //34.五虎岛船票=五虎岛船票+五虎岛船票(团票)+五虎岛船票(美团)+五虎岛船票(携程)+五虎岛观光套票+
+    //五虎岛观光套票(团票)+五虎岛观光套票(美团)+五虎岛观光套票(携程)
+    RULE_THIRTY_FOUR("五虎岛船票", Arrays.asList(8L, 24L, 34L, 41L, 19L, 29L, 37L, 44L)),
+    //35.卧龙潭门票=卧龙潭门票+卧龙潭门票(半价)+卧龙潭观光套票+卧龙潭观光套票(码头)+
+    //卧龙潭门票(团票)+卧龙潭门票(美团)+卧龙潭门票(携程)+
+    //卧龙潭观光套票(团票)+卧龙潭观光套票(美团)+卧龙潭观光套票(携程)+
+    //卧龙潭五虎岛联票+卧龙潭五虎岛联票(码头)+卧龙潭门票(半价团票)
+    RULE_THIRTY_FIVE("卧龙潭门票", Arrays.asList(14L, 15L, 56L, 67L, 53L, 55L, 50L, 57L, 58L, 65L, 46L, 68L, 54L)),
+    //36.卧龙潭船票=卧龙潭船票+卧龙潭船票(团票)+卧龙潭船票(美团)+卧龙潭船票(携程)+卧龙潭五虎岛联票+卧龙潭五虎岛联票(码头)
+    // +卧龙潭观光套票(团票)+卧龙潭观光套票(美团)+卧龙潭观光套票(携程)
+    RULE_THIRTY_SIX("卧龙潭船票", Arrays.asList(13L, 51L, 52L, 49L, 46L, 68L, 57L, 58L, 65L)),
+    //37.西海浪门票=西海浪门票
+    RULE_THIRTY_SEVEN("西海浪门票", Collections.singletonList(69L)),
+    //38.西海浪船票=西海浪船票+西海浪船票(半价)
+    RULE_THIRTY_EIGHT("西海浪船票", Arrays.asList(47L, 63L)),
+    //39.爱林观光船票(人)=爱林观光船票(人)
+    RULE_THIRTY_NINE("爱林观光船票(人)", Collections.singletonList(59L)),
+    //40.爱林观光船票(车)=爱林观光船票(车)
+    RULE_FORTY("爱林观光船票(车)", Collections.singletonList(60L)),
+    //41.坝西自驾车票=坝西自驾车票
+    RULE_FORTY_ONE("坝西自驾车票", Collections.singletonList(17L)),
     ;
 
     private String key;
@@ -29,9 +116,21 @@ public enum TicketRulesEnum {
     public static String getKeyByValue(Long value) {
         for (TicketRulesEnum ticketRulesEnum : TicketRulesEnum.values()) {
             if (ticketRulesEnum.value.contains(value)) {
-               return ticketRulesEnum.getKey();
+                return ticketRulesEnum.getKey();
             }
         }
-        return null;
+        return "未知门票";
     }
+
+    public static List<String> getKeyByValues(Long value) {
+        List<String> returnList = new ArrayList<>();
+        for (TicketRulesEnum ticketRulesEnum : TicketRulesEnum.values()) {
+            if (ticketRulesEnum.value.contains(value)) {
+                returnList.add(ticketRulesEnum.getKey());
+            }
+        }
+        return returnList;
+    }
+
+
 }

+ 32 - 5
songhua-system/src/main/java/com/songhua/system/service/impl/PzRawDataServiceImpl.java

@@ -10,6 +10,7 @@ import com.songhua.system.enums.TicketRulesEnum;
 import com.songhua.system.mapper.PzRawDataMapper;
 import com.songhua.system.service.IPzRawDataService;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.CollectionUtils;
 import org.apache.poi.ss.usermodel.*;
 import org.apache.poi.ss.util.CellRangeAddress;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
@@ -18,6 +19,7 @@ import org.springframework.stereotype.Service;
 
 import java.io.FileOutputStream;
 import java.io.IOException;
+import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
 import java.util.*;
 
@@ -151,7 +153,7 @@ public class PzRawDataServiceImpl implements IPzRawDataService {
 
     @Override
     public void export(PzRawData pzRawData) {
-        List<ShhTicketRulesReqVO> list = calculateTotalPrice(pzRawDataMapper.selectPzRawDataList(pzRawData));
+        List<ShhTicketRulesReqVO> list = calculateTotalPrices(pzRawDataMapper.selectPzRawDataList(pzRawData));
         // 创建
         Workbook workbook = new XSSFWorkbook();
         Sheet sheet = workbook.createSheet("票务数据");
@@ -204,9 +206,36 @@ public class PzRawDataServiceImpl implements IPzRawDataService {
 
     /**
      * 统计导出计算总价公式
+     *
      * @param list
      * @return
-     * */
+     */
+    public List<ShhTicketRulesReqVO> calculateTotalPrices(List<PzRawDataVo> list) {
+        List<ShhTicketRulesReqVO> returnList = new ArrayList<>();
+        Map<String, PzRawDataVo> map = new HashMap<>();
+        list.forEach(e -> {
+            List<String> keyByValue = TicketRulesEnum.getKeyByValues(e.getTicketId());
+            if (!CollectionUtils.isEmpty(keyByValue)) {
+                keyByValue.forEach(name -> {
+                    if (map.containsKey(name)) {
+                        //如果有相同的票种,则累加数量和金额
+                        PzRawDataVo pzRawDataVo = map.get(name);
+                        pzRawDataVo.setNumber(pzRawDataVo.getNumber() + e.getNumber());
+                        pzRawDataVo.setMoney(pzRawDataVo.getMoney() == null ? BigDecimal.ZERO : pzRawDataVo.getMoney().add(e.getMoney()));
+                    } else {
+                        PzRawDataVo newPzRawDataVo = new PzRawDataVo();
+                        newPzRawDataVo.setNumber(e.getNumber());
+                        newPzRawDataVo.setMoney(e.getMoney());
+                        map.put(name, newPzRawDataVo);
+                    }
+                });
+            }
+        });
+        map.forEach((k, v) -> returnList.add(new ShhTicketRulesReqVO(k, v.getNumber(), v.getMoney())));
+        return returnList;
+    }
+
+
     public List<ShhTicketRulesReqVO> calculateTotalPrice(List<PzRawDataVo> list) {
         List<ShhTicketRulesReqVO> returnList = new ArrayList<>();
         Map<String, PzRawDataVo> map = new HashMap<>();
@@ -216,14 +245,12 @@ public class PzRawDataServiceImpl implements IPzRawDataService {
                 //如果有相同的票种,则累加数量和金额
                 PzRawDataVo pzRawDataVo = map.get(name);
                 pzRawDataVo.setNumber(pzRawDataVo.getNumber() + e.getNumber());
-                pzRawDataVo.setMoney(pzRawDataVo.getMoney().add(e.getMoney()));
+                pzRawDataVo.setMoney(pzRawDataVo.getMoney() == null ? BigDecimal.ZERO : pzRawDataVo.getMoney().add(e.getMoney()));
             } else {
                 map.put(TicketRulesEnum.getKeyByValue(e.getTicketId()), e);
             }
         });
-        map.forEach((k, v) -> returnList.add(new ShhTicketRulesReqVO(k, v.getNumber(), v.getMoney())));
         return returnList;
     }
 
-
 }

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

@@ -30,8 +30,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <select id="selectPzRawDataList" parameterType="PzRawDataVo" resultMap="PzRawDataVoResult">
         SELECT
         a.id,
-        a.number,
-        a.money,
+        ifnull(a.number,0) number,
+        ifnull(a.money,0) money,
         a.pay_type,
         a.create_time,
         a.ticket_id,
@@ -39,10 +39,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         FROM
         pz_raw_data a
         LEFT JOIN pz_ticket_type_management b ON a.ticket_id = b.id
-        <where>  
-            <if test="number != null "> and number = #{number}</if>
-            <if test="money != null  and money != ''"> and money = #{money}</if>
-            <if test="payType != null  and payType != ''"> and pay_type = #{payType}</if>
+        <where>
+            <if test="number != null ">and number = #{number}</if>
+            <if test="money != null  and money != ''">and money = #{money}</if>
+            <if test="payType != null  and payType != ''">and pay_type = #{payType}</if>
         </where>
     </select>
     

+ 0 - 1
songhua-system/src/main/resources/mapper/system/PzTicketTypeManagementMapper.xml

@@ -77,6 +77,5 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
     <select id="selectPzTicketTypeManagementList" parameterType="PzTicketTypeManagement" resultMap="PzTicketTypeManagementResult">
         <include refid="selectPzTicketTypeManagementVo"/>
-        where status = 0
     </select>
 </mapper>

+ 1 - 1
songhua-ui/src/views/system/ticketRules/index.vue

@@ -91,7 +91,7 @@
           <el-input v-model="form.ticketRules" placeholder="请输入票务规则名称"/>
         </el-form-item>
         <el-form-item label="票种名称" prop="ticketList">
-          <el-select v-model="form.ticketList" multiple placeholder="请选择票种名称" style="width:340px"
+          <el-select v-model="form.ticketList" filterable clearable multiple placeholder="请选择票种名称" style="width:340px"
                      @change="onChange"
           >
             <el-option