浏览代码

导出原始数据导入列表

bihuisong 8 月之前
父节点
当前提交
9eb8fe21c2

+ 2 - 2
songhua-admin/src/main/java/com/songhua/web/controller/system/PzTicketTypeManagementController.java

@@ -34,7 +34,7 @@ public class PzTicketTypeManagementController extends BaseController {
     @GetMapping("/list")
     public TableDataInfo list(PzTicketTypeManagement pzTicketTypeManagement) {
         startPage();
-        List<PzTicketTypeManagement> list = pzTicketTypeManagementService.selectPzTicketTypeManagementList(pzTicketTypeManagement);
+        List<PzTicketTypeManagement> list = pzTicketTypeManagementService.selectPzTicketTypeManagementPageList(pzTicketTypeManagement);
         return getDataTable(list);
     }
 
@@ -45,7 +45,7 @@ public class PzTicketTypeManagementController extends BaseController {
     @Log(title = "票种管理", businessType = BusinessType.EXPORT)
     @PostMapping("/export")
     public void export(HttpServletResponse response, PzTicketTypeManagement pzTicketTypeManagement) {
-        List<PzTicketTypeManagement> list = pzTicketTypeManagementService.selectPzTicketTypeManagementList(pzTicketTypeManagement);
+        List<PzTicketTypeManagement> list = pzTicketTypeManagementService.selectPzTicketTypeManagementPageList(pzTicketTypeManagement);
         ExcelUtil<PzTicketTypeManagement> util = new ExcelUtil<PzTicketTypeManagement>(PzTicketTypeManagement.class);
         util.exportExcel(response, list, "票种管理数据");
     }

+ 17 - 11
songhua-system/src/main/java/com/songhua/system/domain/PzRawDataVo.java

@@ -3,35 +3,41 @@ package com.songhua.system.domain;
 import com.songhua.common.annotation.Excel;
 import com.songhua.common.core.domain.BaseEntity;
 import lombok.Data;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
  * 原始数据导入对象 pz_raw_data
- * 
+ *
  * @author ruoyi
  * @date 2024-11-04
  */
 @Data
-public class PzRawDataVo extends BaseEntity
-{
+public class PzRawDataVo extends BaseEntity {
 
     private Long id;
-    /** 票种名 */
+    /**
+     * 票种名
+     */
     @Excel(name = "票种名")
     private String ticketName;
 
-    /** 张数 */
+    /**
+     * 张数
+     */
     @Excel(name = "张数")
-    private Long number;
+    private int number;
 
-    /** 金额 */
+    /**
+     * 金额
+     */
     @Excel(name = "金额")
-    private String money;
+    private BigDecimal money;
 
-    /** 支付类型 */
+    /**
+     * 支付类型
+     */
     @Excel(name = "支付类型", readConverterExp = "1=微信,2=支付宝,3=现金,4=云闪付,5=支付宝小程序余额支付,6=微信小程序余额支付,7=ota余额支付,8=灵活代收,9=旅行社余额支付")
     private String payType;
 

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

@@ -0,0 +1,24 @@
+package com.songhua.system.domain.vo;
+
+
+import com.songhua.common.annotation.Excel;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ShhTicketRulesReqVO {
+
+    @Excel(name = "票种名称")
+    private String ticketName;
+
+    @Excel(name = "张数")
+    private int numberSheets;
+
+    @Excel(name = "金额")
+    private BigDecimal amount;
+}

+ 37 - 0
songhua-system/src/main/java/com/songhua/system/enums/TicketRulesEnum.java

@@ -0,0 +1,37 @@
+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;
+
+/**
+ * 门票规则枚举类
+ */
+@Getter
+@AllArgsConstructor
+public enum TicketRulesEnum {
+
+    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)),
+    RULE_THREE("门票5元", Collections.singletonList(2L)),
+    RULE_FOUR("门票4.5元", Collections.singletonList(21L)),
+    RULE_FIVE("观光车票10元", Arrays.asList(4L, 18L, 19L, 56L, 46L)),
+    RULE_SIX("观光车票9元", Arrays.asList(4L, 18L, 19L, 56L, 46L)),
+    ;
+
+    private String key;
+    private List<Long> value;
+
+    public static String getKeyByValue(Long value) {
+        for (TicketRulesEnum ticketRulesEnum : TicketRulesEnum.values()) {
+            if (ticketRulesEnum.value.contains(value)) {
+               return ticketRulesEnum.getKey();
+            }
+        }
+        return null;
+    }
+}

+ 9 - 0
songhua-system/src/main/java/com/songhua/system/mapper/PzTicketTypeManagementMapper.java

@@ -14,6 +14,7 @@ import java.util.List;
  * @date 2024-11-04
  */
 public interface PzTicketTypeManagementMapper {
+
     /**
      * 查询票种管理
      *
@@ -31,6 +32,14 @@ public interface PzTicketTypeManagementMapper {
     public List<PzTicketTypeManagement> selectPzTicketTypeManagementList(PzTicketTypeManagement pzTicketTypeManagement);
 
     /**
+     * 查询票种管理分页列表
+     *
+     * @param pzTicketTypeManagement 票种管理
+     * @return 票种管理集合
+     */
+    public List<PzTicketTypeManagement> selectPzTicketTypeManagementPageList(PzTicketTypeManagement pzTicketTypeManagement);
+
+    /**
      * 新增票种管理
      *
      * @param pzTicketTypeManagement 票种管理

+ 8 - 0
songhua-system/src/main/java/com/songhua/system/service/IPzTicketTypeManagementService.java

@@ -23,6 +23,14 @@ public interface IPzTicketTypeManagementService {
     public PzTicketTypeManagement selectPzTicketTypeManagementById(Long id);
 
     /**
+     * 查询票种管理分页列表
+     *
+     * @param pzTicketTypeManagement 票种管理
+     * @return 票种管理集合
+     */
+    public List<PzTicketTypeManagement> selectPzTicketTypeManagementPageList(PzTicketTypeManagement pzTicketTypeManagement);
+
+    /**
      * 查询票种管理列表
      *
      * @param pzTicketTypeManagement 票种管理

+ 34 - 11
songhua-system/src/main/java/com/songhua/system/service/impl/PzRawDataServiceImpl.java

@@ -5,20 +5,21 @@ import com.songhua.common.utils.DateUtils;
 import com.songhua.common.utils.StringUtils;
 import com.songhua.system.domain.PzRawData;
 import com.songhua.system.domain.PzRawDataVo;
+import com.songhua.system.domain.vo.ShhTicketRulesReqVO;
+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.poi.ss.usermodel.*;
 import org.apache.poi.ss.util.CellRangeAddress;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
 
 /**
  * 原始数据导入Service业务层处理
@@ -26,6 +27,7 @@ import java.util.List;
  * @author ruoyi
  * @date 2024-11-04
  */
+@Slf4j
 @Service
 public class PzRawDataServiceImpl implements IPzRawDataService {
     @Autowired
@@ -149,11 +151,11 @@ public class PzRawDataServiceImpl implements IPzRawDataService {
 
     @Override
     public void export(PzRawData pzRawData) {
-        List<PzRawDataVo> list = pzRawDataMapper.selectPzRawDataList(pzRawData);
+        List<ShhTicketRulesReqVO> list = calculateTotalPrice(pzRawDataMapper.selectPzRawDataList(pzRawData));
         // 创建
         Workbook workbook = new XSSFWorkbook();
         Sheet sheet = workbook.createSheet("票务数据");
-
+        sheet.setColumnWidth(0, 20 * 260);//设置单元格宽度 ,X代表第几列
         Row headerRow = sheet.createRow(0);
         CellStyle style = workbook.createCellStyle(); // 创建单元格样式
         style.setAlignment(HorizontalAlignment.CENTER); // 设置水平居中对齐
@@ -170,7 +172,6 @@ public class PzRawDataServiceImpl implements IPzRawDataService {
 
         // 创建子标题行
         Row subHeaderRow = sheet.createRow(1);
-        style.setAlignment(HorizontalAlignment.CENTER); // 设置水平居中对齐
         Cell sonCell1 = subHeaderRow.createCell(1);
         sonCell1.setCellValue("张数");
         sonCell1.setCellStyle(style);
@@ -179,16 +180,16 @@ public class PzRawDataServiceImpl implements IPzRawDataService {
         sonCell2.setCellStyle(style);
         // 填充数据
         for (int i = 0; i < list.size(); i++) {
-            PzRawDataVo data = list.get(i);
+            ShhTicketRulesReqVO data = list.get(i);
             Row dataRow = sheet.createRow(i + 2); // 从第三行开始填充数据
-            dataRow.createCell(0).setCellValue(data.getTicketName()); // 假设有这个方法
-            dataRow.createCell(1).setCellValue(data.getNumber()); // 假设有这个方法
-            dataRow.createCell(2).setCellValue(data.getMoney()); // 假设有这个方法
+            dataRow.createCell(0).setCellValue(data.getTicketName());
+            dataRow.createCell(1).setCellValue(data.getNumberSheets());
+            dataRow.createCell(2).setCellValue(String.valueOf(data.getAmount()));
         }
         // 写入
         try (FileOutputStream fileOut = new FileOutputStream("C:\\Users\\Administrator\\Desktop\\出票数据" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + ".xlsx")) {
             workbook.write(fileOut);
-            System.out.println("Excel 文件已成功导出!");
+            log.info("Excel 文件已成功导出!");
         } catch (IOException e) {
             e.printStackTrace();
         } finally {
@@ -199,7 +200,29 @@ public class PzRawDataServiceImpl implements IPzRawDataService {
                 e.printStackTrace();
             }
         }
+    }
 
+    /**
+     * 统计导出计算总价公式
+     * @param list
+     * @return
+     * */
+    public List<ShhTicketRulesReqVO> calculateTotalPrice(List<PzRawDataVo> list) {
+        List<ShhTicketRulesReqVO> returnList = new ArrayList<>();
+        Map<String, PzRawDataVo> map = new HashMap<>();
+        list.forEach(e -> {
+            String name = TicketRulesEnum.getKeyByValue(e.getTicketId());
+            if (map.containsKey(name)) {
+                //如果有相同的票种,则累加数量和金额
+                PzRawDataVo pzRawDataVo = map.get(name);
+                pzRawDataVo.setNumber(pzRawDataVo.getNumber() + e.getNumber());
+                pzRawDataVo.setMoney(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;
     }
 
 

+ 11 - 0
songhua-system/src/main/java/com/songhua/system/service/impl/PzTicketTypeManagementServiceImpl.java

@@ -48,6 +48,17 @@ public class PzTicketTypeManagementServiceImpl implements IPzTicketTypeManagemen
     }
 
     /**
+     * 查询票种管理分页列表
+     *
+     * @param pzTicketTypeManagement 票种管理
+     * @return 票种管理
+     */
+    @Override
+    public List<PzTicketTypeManagement> selectPzTicketTypeManagementPageList(PzTicketTypeManagement pzTicketTypeManagement) {
+        return pzTicketTypeManagementMapper.selectPzTicketTypeManagementPageList(pzTicketTypeManagement);
+    }
+
+    /**
      * 新增票种管理
      *
      * @param pzTicketTypeManagement 票种管理

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

@@ -17,7 +17,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         select id, ticket_name, ticket_type, settlement_price, remarks,status from pz_ticket_type_management
     </sql>
 
-    <select id="selectPzTicketTypeManagementList" parameterType="PzTicketTypeManagement" resultMap="PzTicketTypeManagementResult">
+    <select id="selectPzTicketTypeManagementPageList" parameterType="PzTicketTypeManagement" resultMap="PzTicketTypeManagementResult">
         <include refid="selectPzTicketTypeManagementVo"/>
         <where>
             <if test="ticketName != null  and ticketName != ''">and ticket_name like concat('%', #{ticketName}, '%')
@@ -74,4 +74,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             #{id}
         </foreach>
     </delete>
+
+    <select id="selectPzTicketTypeManagementList" parameterType="PzTicketTypeManagement" resultMap="PzTicketTypeManagementResult">
+        <include refid="selectPzTicketTypeManagementVo"/>
+        where status = 0
+    </select>
 </mapper>

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

@@ -204,6 +204,7 @@ export default {
     handleQuery() {
       this.queryParams.pageNum = 1;
       this.getList();
+      this.getTicketList();
     },
     /** 重置按钮操作 */
     resetQuery() {
@@ -241,12 +242,14 @@ export default {
               this.$modal.msgSuccess("修改成功");
               this.open = false;
               this.getList();
+              this.getTicketList();
             });
           } else {
             addRules(this.form).then(response => {
               this.$modal.msgSuccess("新增成功");
               this.open = false;
               this.getList();
+              this.getTicketList();
             });
           }
         }
@@ -259,6 +262,7 @@ export default {
         return delRules(ids);
       }).then(() => {
         this.getList();
+        this.getTicketList();
         this.$modal.msgSuccess("删除成功");
       }).catch(() => {
       });