소스 검색

财务-结算单导出excel汇总页sheet日期修改

yangzian 3 년 전
부모
커밋
4ee918755a

+ 9 - 5
jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/policy/service/impl/CreateSheetServiceImpl.java

@@ -117,6 +117,8 @@ public class CreateSheetServiceImpl implements ICreateSheetService {
         cell.setCellStyle(style);
         cell.setCellStyle(style);
         sheet.autoSizeColumn(0, true);
         sheet.autoSizeColumn(0, true);
         List<SheetBytedanceVo> resultList = new ArrayList<>(accountIdList.size());
         List<SheetBytedanceVo> resultList = new ArrayList<>(accountIdList.size());
+        //获取当前年月的 第一天 和 最后一天
+        Map<String,String> timeMap = SettlementUtil.getFirstAndLastDayOfMonth(uploadYears);
         //查看账户数据
         //查看账户数据
         List<Map<String,Object>> list = reportSettlementMapper.getAccountTransactionDayBytedanceSheet(accountIdList,uploadYears);
         List<Map<String,Object>> list = reportSettlementMapper.getAccountTransactionDayBytedanceSheet(accountIdList,uploadYears);
         for (Map<String,Object> map : list) {
         for (Map<String,Object> map : list) {
@@ -130,7 +132,7 @@ public class CreateSheetServiceImpl implements ICreateSheetService {
             List<String> policyDaysList = new ArrayList<>();
             List<String> policyDaysList = new ArrayList<>();
             if (!Check.isNull(map.get("productName"))){
             if (!Check.isNull(map.get("productName"))){
                 //查询 头条利润表  返点类型和比列
                 //查询 头条利润表  返点类型和比列
-                List<Map<String,Object>> rateMap = reportSettlementMapper.getProfitBytedance(map.get("advertiserName")+"",map.get("productName")+"",null,"1",uploadYears+"-01",uploadYears+"-31");
+                List<Map<String,Object>> rateMap = reportSettlementMapper.getProfitBytedance(map.get("advertiserName")+"",map.get("productName")+"",null,"1",timeMap.get("startTime"),timeMap.get("endTime"));
                 List listPolicyTIme = new ArrayList();
                 List listPolicyTIme = new ArrayList();
                 for (Map<String, Object> rate : rateMap) {
                 for (Map<String, Object> rate : rateMap) {
                     listPolicyTIme.add(rate.get("policyStartDate"));
                     listPolicyTIme.add(rate.get("policyStartDate"));
@@ -187,7 +189,7 @@ public class CreateSheetServiceImpl implements ICreateSheetService {
 
 
             //不使用政策 的时间段
             //不使用政策 的时间段
             // 获取两个日期之间 所有的 时间 年-月-日
             // 获取两个日期之间 所有的 时间 年-月-日
-            List<String> betweenDaysList = SettlementUtil.getAllDatesOfTwoTimes(uploadYears+"-01",uploadYears+"-31");
+            List<String> betweenDaysList = SettlementUtil.getAllDatesOfTwoTimes(timeMap.get("startTime"),timeMap.get("endTime"));
             // 时间差集(所有时间段 - 使用政策的时间段)
             // 时间差集(所有时间段 - 使用政策的时间段)
             List<String>  reduceList = betweenDaysList.stream().filter(item -> !policyDaysList.contains(item)).collect(Collectors.toList());
             List<String>  reduceList = betweenDaysList.stream().filter(item -> !policyDaysList.contains(item)).collect(Collectors.toList());
             //差集拼接  开始 和 结束时间
             //差集拼接  开始 和 结束时间
@@ -332,7 +334,9 @@ public class CreateSheetServiceImpl implements ICreateSheetService {
 
 
         List<SheetKuaiShouVo> resultList = new ArrayList<>(accountIdList.size());
         List<SheetKuaiShouVo> resultList = new ArrayList<>(accountIdList.size());
         //查询该时段 快手 数据
         //查询该时段 快手 数据
-        List<Map<String,Object>> accountList = reportSettlementMapper.getProfitKuaiShouAccountCostSheet(accountIdList,uploadYears+"-01",uploadYears+"-31");
+        //获取当前年月的 第一天 和 最后一天
+        Map<String,String> timeMap = SettlementUtil.getFirstAndLastDayOfMonth(uploadYears);
+        List<Map<String,Object>> accountList = reportSettlementMapper.getProfitKuaiShouAccountCostSheet(accountIdList,timeMap.get("startTime"),timeMap.get("endTime"));
         for (Map<String,Object> map : accountList) {
         for (Map<String,Object> map : accountList) {
             SheetKuaiShouVo voSource = new SheetKuaiShouVo();
             SheetKuaiShouVo voSource = new SheetKuaiShouVo();
             voSource.setAccountId(map.get("accountId")+"");
             voSource.setAccountId(map.get("accountId")+"");
@@ -343,7 +347,7 @@ public class CreateSheetServiceImpl implements ICreateSheetService {
             List<String> policyDaysList = new ArrayList<>();
             List<String> policyDaysList = new ArrayList<>();
             if (!Check.isNull(map.get("productName"))) {
             if (!Check.isNull(map.get("productName"))) {
                 //查询 快手利润表  返点类型和比列
                 //查询 快手利润表  返点类型和比列
-                List<Map<String, Object>> rateMap = reportSettlementMapper.getProfitBytedance(map.get("advertiserName")+"",map.get("productName") + "", null,"2", uploadYears+"-01",uploadYears+"-31");
+                List<Map<String, Object>> rateMap = reportSettlementMapper.getProfitBytedance(map.get("advertiserName")+"",map.get("productName") + "", null,"2", timeMap.get("startTime"),timeMap.get("endTime"));
                 List listPolicyTIme = new ArrayList();
                 List listPolicyTIme = new ArrayList();
                 for (Map<String, Object> rate : rateMap) {
                 for (Map<String, Object> rate : rateMap) {
                     listPolicyTIme.add(rate.get("policyStartDate"));
                     listPolicyTIme.add(rate.get("policyStartDate"));
@@ -406,7 +410,7 @@ public class CreateSheetServiceImpl implements ICreateSheetService {
 
 
             //不使用政策 的时间段
             //不使用政策 的时间段
             // 获取两个日期之间 所有的 时间 年-月-日
             // 获取两个日期之间 所有的 时间 年-月-日
-            List<String> betweenDaysList = SettlementUtil.getAllDatesOfTwoTimes(uploadYears+"-01",uploadYears+"-31");
+            List<String> betweenDaysList = SettlementUtil.getAllDatesOfTwoTimes(timeMap.get("startTime"),timeMap.get("endTime"));
             // 时间差集(所有时间段 - 使用政策的时间段)
             // 时间差集(所有时间段 - 使用政策的时间段)
             List<String> reduceList = betweenDaysList.stream().filter(item -> !policyDaysList.contains(item)).collect(Collectors.toList());
             List<String> reduceList = betweenDaysList.stream().filter(item -> !policyDaysList.contains(item)).collect(Collectors.toList());
             //差集拼接  开始 和 结束时间
             //差集拼接  开始 和 结束时间

+ 70 - 0
jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/utils/SettlementUtil.java

@@ -294,4 +294,74 @@ public class SettlementUtil {
         return dayAfter;
         return dayAfter;
     }
     }
 
 
+
+    /**
+     * 获取当前日期 年-月 的 第一天和最后一天
+     */
+    public static Map<String,String> getFirstAndLastDayOfMonth(String yearMonth){
+        Map<String,String> map = new HashMap<>();
+        String[] year = yearMonth.split("-");
+        Integer y = Integer.valueOf(year[0]);
+        Integer m = Integer.valueOf(year[1]);
+        String firstDay = getFirstDayOfMonth(y,m);
+        String lastDay = getLastDayOfMonth(y,m);
+        map.put("startTime",firstDay);
+        map.put("endTime",lastDay);
+        return map;
+    }
+
+
+
+
+
+    /**
+     * 获取指定年月的第一天
+     * @param year
+     * @param month
+     * @return
+     */
+    public static String getFirstDayOfMonth(int year, int month) {
+        Calendar cal = Calendar.getInstance();
+        //设置年份
+        cal.set(Calendar.YEAR, year);
+        //设置月份
+        cal.set(Calendar.MONTH, month-1);
+        //获取某月最小天数
+        int firstDay = cal.getMinimum(Calendar.DATE);
+        //设置日历中月份的最小天数
+        cal.set(Calendar.DAY_OF_MONTH,firstDay);
+        //格式化日期
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        return sdf.format(cal.getTime());
+    }
+
+
+    /**
+     * 获取指定年月的最后一天
+     * @param year
+     * @param month
+     * @return
+     */
+    public static String getLastDayOfMonth(int year, int month) {
+        Calendar cal = Calendar.getInstance();
+        //设置年份
+        cal.set(Calendar.YEAR, year);
+        //设置月份
+        cal.set(Calendar.MONTH, month-1);
+        //获取某月最大天数
+        int lastDay = cal.getActualMaximum(Calendar.DATE);
+        //设置日历中月份的最大天数
+        cal.set(Calendar.DAY_OF_MONTH, lastDay);
+        //格式化日期
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        return sdf.format(cal.getTime());
+    }
+
+
+    public static void main(String[] args) {
+        System.out.println(getFirstAndLastDayOfMonth("2021-02").get("startTime"));;
+        System.out.println(getFirstAndLastDayOfMonth("2021-02").get("endTime"));;
+    }
+
+
 }
 }