wzy 3 月之前
父节点
当前提交
530c35442d

+ 7 - 0
mjava-jiuan/src/main/java/com/malk/jiuan/controller/JiuanController.java

@@ -1,17 +1,24 @@
 package com.malk.jiuan.controller;
 
 import com.malk.jiuan.service.JiuanService;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+@Slf4j
 @RestController
 public class JiuanController {
 
     @Autowired
     private JiuanService jiuanService;
 
+    /*@Scheduled(cron = "0 0 * * * ?")
+    public void test(){
+        log.info("定时任务执行");
+    }*/
+
     //每日定时转换门店流水数据
     @Scheduled(cron = "0 50 23 * * ?")
     @GetMapping("/convertFile")

+ 89 - 90
mjava-jiuan/src/main/java/com/malk/jiuan/service/impl/JiuanServiceImpl.java

@@ -7,17 +7,11 @@ import com.malk.jiuan.entity.ConvertSales;
 import com.malk.jiuan.entity.Sales;
 import com.malk.jiuan.entity.SalesReturn;
 import com.malk.jiuan.service.JiuanService;
-import com.malk.server.dingtalk.DDR_New;
-import com.malk.service.dingtalk.DDClient;
-import com.malk.utils.UtilHttp;
-import com.malk.utils.UtilMap;
 import lombok.extern.slf4j.Slf4j;
 import okhttp3.*;
 import okio.BufferedSink;
 import okio.Okio;
-import okio.Sink;
 import org.apache.logging.log4j.util.Strings;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
@@ -26,12 +20,14 @@ import java.io.File;
 import java.io.FileWriter;
 import java.io.IOException;
 import java.lang.reflect.Field;
+import java.nio.file.Files;
 import java.text.DecimalFormat;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
+import java.util.List;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
 
@@ -41,39 +37,18 @@ public class JiuanServiceImpl implements JiuanService {
     private final static String SHOP_NUMBER = "TJMP1F140";//商铺号
     private final static String CASH_REGISTER_Number = "1400";//收银机号
     private final static String GOODS_NUMBER = "00101701";//货品编码
-
     private final static String DATE_PATTERN1 = "yyyy-MM-dd HH:mm:ss";
-    private final static String DATE_PATTERN2 = "yyyyMMddHHmmss";
-    private final static String DATE_PATTERN3 = "yyyyMMdd";
-
-    @Value(value = "${dingtalk.spaceId}")
-    private String SPACE_ID;
 
-    @Value(value = "${dingtalk.unionId}")
-    private String UNION_ID;
+    @Value(value = "${uploadFile.path}")
+    private String uploadFilePath;
 
     @Value(value = "${saveFile.path}")
     private String saveFilePath;
 
-    @Autowired
-    private DDClient ddClient;
-
-
     @Override
     public void convertFile() {
-        // 获取当前时间
-        LocalDateTime now = LocalDateTime.now();
-        // 定义格式:yyyyMMddhhmmss
-        DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern(DATE_PATTERN2);
-        // 定义格式:yyyyMMdd
-        DateTimeFormatter formatter3 = DateTimeFormatter.ofPattern(DATE_PATTERN3);
-        // 格式化时间
-        String formattedTime = now.format(formatter2);
-
-        String formattedTime3 = now.format(formatter3);
-
         //搜索钉盘文件
-        Map query = new HashMap();
+        /*Map query = new HashMap();
         query.put("parentId",0);
         query.put("unionId", UNION_ID);
         query.put("maxResults",10);
@@ -105,90 +80,114 @@ public class JiuanServiceImpl implements JiuanService {
 
         List<String> resourceUrls = UtilMap.getList(headerSignatureInfo, "resourceUrls");
 
-        downloadDdFile(resourceUrls.get(0) ,headers, saveFilePath + fileName);
+        downloadDdFile(resourceUrls.get(0) ,headers, saveFilePath + fileName);*/
+        log.info("------------------开始转换文件---------------------");
 
-        List<Sales> salesList = new ArrayList<>();
+        //读取文件夹下所有门店流水数据
+        File folder = new File(uploadFilePath);
 
-        //销售单
-        EasyExcel.read(saveFilePath + fileName, Sales.class, new PageReadListener<Sales>(dataList -> {
-            for (Sales Sales : dataList) {
-                log.info("读取到一条数据{}", JSON.toJSONString(Sales));
-                salesList.add(Sales);
-            }
-        })).sheet(0).doRead();
-
-        //退货单
-        EasyExcel.read(saveFilePath + fileName, SalesReturn.class, new PageReadListener<SalesReturn>(dataList -> {
-            for (SalesReturn salesReturn : dataList) {
-                log.info("读取到一条数据{}", JSON.toJSONString(salesReturn));
-                Sales sales = new Sales();
-                sales.setZfze(salesReturn.getYtze());//应退金额
-                sales.setZfsj(salesReturn.getTksj());//退款时间
-                sales.setZffs(salesReturn.getZffs());//支付方式
-                salesList.add(sales);
-            }
-        })).sheet(1).doRead();
+        if (folder.exists() && folder.isDirectory()) {
+            File[] files = folder.listFiles();
 
-        //支付时间升序
-        List<Sales> sortedSalesList = salesList.stream()
-                .sorted(Comparator.comparing(Sales::getZfsj))
-                .collect(Collectors.toList());
+            if (files != null) {
+                for (File file : files) {
+                    List<Sales> salesList = new ArrayList<>();
 
-        AtomicInteger counter = new AtomicInteger(1);
-        String currentDatePrefix = "";
+                    //销售单
+                    EasyExcel.read(file.getPath(), Sales.class, new PageReadListener<Sales>(dataList -> {
+                        for (Sales Sales : dataList) {
+                            log.info("读取到一条数据{}", JSON.toJSONString(Sales));
+                            salesList.add(Sales);
+                        }
+                    })).sheet(0).doRead();
 
-        List<ConvertSales> convertSalesList = new ArrayList<>();
+                    //退货单
+                    EasyExcel.read(file.getPath(), SalesReturn.class, new PageReadListener<SalesReturn>(dataList -> {
+                        for (SalesReturn salesReturn : dataList) {
+                            log.info("读取到一条数据{}", JSON.toJSONString(salesReturn));
+                            Sales sales = new Sales();
+                            sales.setZfze(salesReturn.getYtze());//应退金额
+                            sales.setZfsj(salesReturn.getTksj());//退款时间
+                            sales.setZffs(salesReturn.getZffs());//支付方式
+                            salesList.add(sales);
+                        }
+                    })).sheet(1).doRead();
 
-        for (Sales sales : sortedSalesList) {
-            // 获取日期的YYMMDD部分
-            LocalDate date = sales.getZfsj().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
-            LocalDateTime localDateTime = sales.getZfsj().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
+                    //支付时间升序
+                    List<Sales> sortedSalesList = salesList.stream()
+                            .sorted(Comparator.comparing(Sales::getZfsj))
+                            .collect(Collectors.toList());
 
-            String datePrefix = date.format(DateTimeFormatter.ofPattern("yyMMdd"));
+                    AtomicInteger counter = new AtomicInteger(1);
+                    String currentDatePrefix = "";
 
-            // 如果日期变化,重置计数器
-            if (!datePrefix.equals(currentDatePrefix)) {
-                currentDatePrefix = datePrefix;
-                counter.set(1);
-            }
+                    List<ConvertSales> convertSalesList = new ArrayList<>();
+
+                    for (Sales sales : sortedSalesList) {
+                        // 获取日期的YYMMDD部分
+                        LocalDate date = sales.getZfsj().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
+                        LocalDateTime localDateTime = sales.getZfsj().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
+
+                        String datePrefix = date.format(DateTimeFormatter.ofPattern("yyMMdd"));
+
+                        // 如果日期变化,重置计数器
+                        if (!datePrefix.equals(currentDatePrefix)) {
+                            currentDatePrefix = datePrefix;
+                            counter.set(1);
+                        }
 
-            // 生成流水号:YYMMDD + 4位流水(不足补零)
-            String serialNumber = String.format("%s%04d", datePrefix, counter.getAndIncrement());
+                        // 生成流水号:YYMMDD + 4位流水(不足补零)
+                        String serialNumber = String.format("%s%04d", datePrefix, counter.getAndIncrement());
 
-            ConvertSales convertSales = new ConvertSales();
+                        ConvertSales convertSales = new ConvertSales();
 
-            convertSales.setRow1(CASH_REGISTER_Number);//收银机号
+                        convertSales.setRow1(CASH_REGISTER_Number);//收银机号
 
-            convertSales.setRow2(serialNumber);//交易流水号
+                        convertSales.setRow2(serialNumber);//交易流水号
 
-            convertSales.setRow3(localDateTime.format(DateTimeFormatter.ofPattern(DATE_PATTERN1)));//支付时间
+                        convertSales.setRow3(localDateTime.format(DateTimeFormatter.ofPattern(DATE_PATTERN1)));//支付时间
 
-            convertSales.setRow4(new DecimalFormat("0.00").format(sales.getZfze()));//整单实收金额
+                        convertSales.setRow4(new DecimalFormat("0.00").format(sales.getZfze()));//整单实收金额
 
-            convertSales.setRow5(GOODS_NUMBER);//货品编号
+                        convertSales.setRow5(GOODS_NUMBER);//货品编号
 
-            //交易方式
-            if (Strings.isNotBlank(sales.getZffs())){
-                switch (sales.getZffs()){
-                    case "现金支付" : convertSales.setRow6("01");break;
-                    case "其他" : convertSales.setRow6("06");break;
+                        //交易方式
+                        if (Strings.isNotBlank(sales.getZffs())){
+                            switch (sales.getZffs()){
+                                case "现金支付" : convertSales.setRow6("01");break;
+                                case "其他" : convertSales.setRow6("06");break;
                     /*case "刷卡支付" : convertSales.setRow6("02");break;
                     case "外挂POS机" : convertSales.setRow6("03");break;
                     case "储值卡" : convertSales.setRow6("04");break;
                     case "代金卷" : convertSales.setRow6("05");break;*/
-                    default: convertSales.setRow6("03");break;//外挂pos机
+                                default: convertSales.setRow6("03");break;//外挂pos机
+                            }
+                        }
+
+                        convertSalesList.add(convertSales);
+                    }
+
+                    if (!convertSalesList.isEmpty()){
+                        // 将对象列表写入文件
+                        String newFileName = SHOP_NUMBER + "_" + file.getName().substring(0,12) + "00" + "_LIST.txt";
+                        writeObjectsToFile(convertSalesList, saveFilePath + newFileName);
+                    }
+
+                    //删除门店流水数据
+                    boolean isDelete = file.delete();
+
+                    if (isDelete) {
+                        log.info("文件已删除");
+                    }else {
+                        log.info("文件删除失败");
+                    }
                 }
             }
-
-            convertSalesList.add(convertSales);
+        } else {
+            System.out.println("指定的路径不存在或不是目录");
         }
 
-        // 将对象列表写入文件
-
-
-        String newFileName = SHOP_NUMBER + "_" + formattedTime + "_LIST.txt";
-//        String newFileName = SHOP_NUMBER + "_" + "20250819235959" + "_LIST.txt";
-        writeObjectsToFile(convertSalesList, "d:\\" + newFileName);
+        log.info("------------------转换文件结束---------------------");
     }
 
     /**

+ 6 - 13
mjava-jiuan/src/main/resources/application-dev.yml

@@ -7,22 +7,15 @@ enable:
   scheduling: false
 logging:
   config: classpath:logback-spring.xml
-  path: /home/server/jiuan/log/
+  path: D:\\DingTalkServer\\log\\
   level:
     com.malk.*: debug
 
-# dingtalk
-dingtalk:
-  agentId: 3749205961
-  appKey: dingdcxnvojhmwi1lau0
-  appSecret: K0dfunjkLVQKzEN6KXbjdUxcVAX5_hyc0rTNzrj4MugXKc-dkn0erpAxzhSeGPVC
-  corpId:
-  aesKey:
-  token:
-  operator: 344749020127590108 #wzy
-  unionId: 78gv4v47UXQyu5fYF78VGgiEiE #wzy
-  spaceId: 27116618877 #钉盘-团队文件-门店数据
+#门店流水数据上传路径
+uploadFile:
+  path: C:\\Users\\EDY\\Desktop\\项目\\九安医疗\\门店数据\\
 
+#转换后文件保存路径
 saveFile:
-  path: d:\\
+  path: C:\\Users\\EDY\\Desktop\\项目\\九安医疗\\HPG_FTP\\uploadFolder\\
 

+ 7 - 21
mjava-jiuan/src/main/resources/application-prod.yml

@@ -1,4 +1,3 @@
-#测试学习
 server:
   port: 9033
   servlet:
@@ -8,28 +7,15 @@ enable:
   scheduling: false
 logging:
   config: classpath:logback-spring.xml
-  path: d:\\jiuan\log\
+  path: D:\\DingTalkServer\\log\\
   level:
-    com.malk.*: info
+    com.malk.*: debug
 
-# dingtalk
-dingtalk:
-  agentId: 3749205961
-  appKey: dingdcxnvojhmwi1lau0
-  appSecret: K0dfunjkLVQKzEN6KXbjdUxcVAX5_hyc0rTNzrj4MugXKc-dkn0erpAxzhSeGPVC
-  corpId:
-  aesKey:
-  token:
-  operator: 1656315499790273 #孙海生
-  unionId: iPPoZ001WAYlZxyoU04g2bgiEiE #孙海生
-  spaceId: 26395140381 #钉盘-团队文件-宜搭文件库
-  partnersDentryId: 176651024213 #钉盘-团队文件-宜搭文件库-合作伙伴文件
-  unrestrictedDonationDentryId: 176648777099 #钉盘-团队文件-宜搭文件库-资助人费用登记文件
-
-aliwork:
-  appType: APP_TTZS5KICGVVQNZ3RS8T4
-  systemToken: DWF66OA1K1VTVWET83C0SD6RULBO31AQEYG8MQO
+#门店流水数据上传路径
+uploadFile:
+  path: d:\\门店数据\\
 
+#转换后文件保存路径
 saveFile:
-  path: /home/server/lianxiang/file/
+  path: d:\\HPG_FTP\\uploadFolder\\
 

+ 1 - 1
mjava-jiuan/src/main/resources/application.yml

@@ -1,6 +1,6 @@
 spring:
   profiles:
-    active: dev
+    active: prod
   servlet:
     multipart:
       max-file-size: 100MB

+ 2 - 0
mjava-jiuan/src/test/java/com/malk/jiuan/JiuanTest.java

@@ -7,6 +7,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.junit4.SpringRunner;
 
+import java.io.File;
+
 @SpringBootTest
 @RunWith(SpringRunner.class)
 public class JiuanTest {