浏览代码

增加模板的时间范围功能,同时生成能填写的数据

yanliming 9 月之前
父节点
当前提交
1df7e52377

+ 2 - 0
common/src/main/java/com/jpsoft/employment/modules/base/dao/FundIncomeInfoDAO.java

@@ -29,6 +29,8 @@ public interface FundIncomeInfoDAO {
 
     List<FundIncomeInfo> findByYear(@Param("startDate") String startDate, @Param("endDate") String endDate, @Param("templateId") String templateId);
 
+    int countByYear(@Param("currentDate") String currentDate, @Param("templateId") String templateId);
+
     BigDecimal sumBySerialNumber(@Param("serialNumber") String serialNumber, @Param("curMonth") String curMonth, @Param("templateId") String templateId);
 
     BigDecimal sumByTemplateOptionId(@Param("templateOptionId") String templateOptionId, @Param("startDate") String startDate, @Param("endDate") String endDate);

+ 18 - 0
common/src/main/java/com/jpsoft/employment/modules/base/entity/TemplateInfo.java

@@ -4,6 +4,8 @@ import java.io.Serializable;
 import java.util.Date;
 import java.text.SimpleDateFormat;
 import java.math.BigDecimal;
+
+import org.springframework.data.annotation.Transient;
 import org.springframework.format.annotation.DateTimeFormat;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModelProperty;
@@ -63,5 +65,21 @@ public class TemplateInfo {
 	@ApiModelProperty(value = "创建人")
 	private String createByN;
 
+
+	@ApiModelProperty(value = "开始时间")
+	@DateTimeFormat(pattern="yyyy-MM-dd")
+	@JsonFormat(pattern = "yyyy-MM-dd",timezone ="GMT+8")
+	private Date startDate;
+
+
+	@ApiModelProperty(value = "截止时间")
+	@DateTimeFormat(pattern="yyyy-MM-dd")
+	@JsonFormat(pattern = "yyyy-MM-dd",timezone ="GMT+8")
+	private Date endDate;
+
+	@Transient
+	@ApiModelProperty(value = "时间区间数组")
+	private String[] dateRangeArr;
+
 	
 		}

+ 1 - 0
common/src/main/java/com/jpsoft/employment/modules/base/service/TemplateInfoService.java

@@ -11,6 +11,7 @@ public interface TemplateInfoService {
 	boolean exist(String id);
 	int insert(TemplateInfo model);
 	int update(TemplateInfo model);
+	int updateDate(TemplateInfo model);
 	int delete(String id);
 	List<TemplateInfo> list(Map<String, Object> searchParams,List<Sort> sortList);
 	Page<TemplateInfo> pageSearch(Map<String, Object> searchParams, int pageNum, int pageSize, boolean count, List<Sort> sortList);

+ 115 - 45
common/src/main/java/com/jpsoft/employment/modules/base/service/impl/FundIncomeInfoServiceImpl.java

@@ -3,6 +3,11 @@ package com.jpsoft.employment.modules.base.service.impl;
 import java.math.BigDecimal;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
+import java.time.LocalDate;
+import java.time.YearMonth;
+import java.time.ZoneId;
+import java.time.ZonedDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -11,6 +16,7 @@ import javax.annotation.Resource;
 
 import com.jpsoft.employment.modules.base.dao.*;
 import com.jpsoft.employment.modules.base.entity.*;
+import com.jpsoft.employment.modules.common.utils.DateDifferenceInMonths;
 import com.jpsoft.employment.modules.common.utils.StringUtils;
 import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
@@ -68,10 +74,9 @@ public class FundIncomeInfoServiceImpl implements FundIncomeInfoService {
             incomeModifyRecord.setIncomeId(model.getId());
             incomeModifyRecord.setOriginalAmount(oldItem.getCurMonthReceived());
 
-            if(oldItem.getCurMonthReceived()!=null){
+            if (oldItem.getCurMonthReceived() != null) {
                 incomeModifyRecord.setCurrentAmount(model.getCurMonthReceived().subtract(oldItem.getCurMonthReceived()));
-            }
-            else{
+            } else {
                 incomeModifyRecord.setCurrentAmount(model.getCurMonthReceived());
             }
             incomeModifyRecordDAO.insert(incomeModifyRecord);
@@ -93,6 +98,12 @@ public class FundIncomeInfoServiceImpl implements FundIncomeInfoService {
         String startDate = year + "-01" + "-01";
         String endDate = year + "-12" + "-31";
 
+        if (templateInfo.getStartDate() != null && templateInfo.getEndDate() != null) {
+            startDate = sdf2.format(templateInfo.getStartDate());
+            endDate = sdf2.format(templateInfo.getEndDate());
+        }
+
+
         List<FundIncomeInfo> fundIncomeInfoList = fundIncomeInfoDAO.findByYear(startDate, endDate, templateId);
 
         for (FundIncomeInfo item : fundIncomeInfoList) {
@@ -102,7 +113,7 @@ public class FundIncomeInfoServiceImpl implements FundIncomeInfoService {
             fundIncomeInfoDAO.update(item);
 
             List<BudgetModifyRecord> budgetModifyRecordList = budgetModifyRecordDAO.findByBudgetId(item.getTemplateOptionId());
-            for (BudgetModifyRecord budgetModifyRecord:budgetModifyRecordList) {
+            for (BudgetModifyRecord budgetModifyRecord : budgetModifyRecordList) {
                 budgetModifyRecord.setDelFlag(true);
                 budgetModifyRecord.setUpdateBy(subject);
                 budgetModifyRecord.setUpdateTime(new Date());
@@ -112,47 +123,106 @@ public class FundIncomeInfoServiceImpl implements FundIncomeInfoService {
 
         List<TemplateOption> templateOptionList = templateOptionDAO.findByTemplateId(templateId);
 
-        //生成一年的数据
-        for (int i = 1; i <= 12; i++) {
-            String yearMonth = year;
-            if (i < 10) {
-                yearMonth += "-0" + String.valueOf(i) + "-01";
-            } else {
-                yearMonth += "-" + String.valueOf(i) + "-01";
-            }
-
-            for (TemplateOption templateOption : templateOptionList) {
-                FundIncomeInfo fundIncomeInfo = new FundIncomeInfo();
-                fundIncomeInfo.setId(UUID.randomUUID().toString());
-                fundIncomeInfo.setName(templateOption.getName());
-                fundIncomeInfo.setDelFlag(false);
-                fundIncomeInfo.setCreateBy(subject);
-                fundIncomeInfo.setCreateTime(new Date());
-                fundIncomeInfo.setSerialNumber(templateOption.getSerialNum());
-                fundIncomeInfo.setYear(sdf2.parse(yearMonth));
-                fundIncomeInfo.setIndex(templateOption.getIndex());
-                fundIncomeInfo.setBudgetRevenue(templateOption.getBudgetRevenue());
-                fundIncomeInfo.setCurBudgetRevenue(templateOption.getBudgetRevenue());
-                fundIncomeInfo.setTemplateId(templateId);
-                fundIncomeInfo.setIncomeTimeRange(templateOption.getIncomeTimeRange());
-                fundIncomeInfo.setEndDate(templateOption.getEndDate());
-                fundIncomeInfo.setIncomeType(templateOption.getIncomeType());
-                fundIncomeInfo.setChargePerson(templateOption.getChargePerson());
-                fundIncomeInfo.setTemplateOptionId(templateOption.getId());
-
-                if (StringUtils.isNotEmpty(templateInfo.getAttachment())) {
-                    fundIncomeInfo.setAttachment(templateInfo.getAttachment());
+        if(templateInfo.getStartDate() != null && templateInfo.getEndDate() != null){
+            //已填写日期区间范围,生成日期区间范围的数据
+            // 定义日期格式
+            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+            // 将字符串转换为 LocalDate 对象
+            LocalDate startLocalDate = LocalDate.parse(startDate, formatter);
+            LocalDate endLocalDate = LocalDate.parse(endDate, formatter);
+
+            YearMonth startYearMonth = YearMonth.from(startLocalDate);
+            YearMonth endYearMonth = YearMonth.from(endLocalDate);
+
+            // 从开始的年月开始,逐个增加月份并输出,直到达到结束的年月
+            for (YearMonth current = startYearMonth;!current.isAfter(endYearMonth); current = current.plusMonths(1)) {
+                System.out.println(current);
+
+                for (TemplateOption templateOption : templateOptionList) {
+                    FundIncomeInfo fundIncomeInfo = new FundIncomeInfo();
+                    fundIncomeInfo.setId(UUID.randomUUID().toString());
+                    fundIncomeInfo.setName(templateOption.getName());
+                    fundIncomeInfo.setDelFlag(false);
+                    fundIncomeInfo.setCreateBy(subject);
+                    fundIncomeInfo.setCreateTime(new Date());
+                    fundIncomeInfo.setSerialNumber(templateOption.getSerialNum());
+
+                    //转换日期格式
+                    ZonedDateTime zonedDateTime = current.atDay(1).atStartOfDay(ZoneId.systemDefault());
+                    java.time.Instant instant = zonedDateTime.toInstant();
+                    // 使用 Date 的 from 方法将 Instant 转换为 Date
+                    Date date = Date.from(instant);
+
+                    fundIncomeInfo.setYear(date);
+                    fundIncomeInfo.setIndex(templateOption.getIndex());
+                    fundIncomeInfo.setBudgetRevenue(templateOption.getBudgetRevenue());
+                    fundIncomeInfo.setCurBudgetRevenue(templateOption.getBudgetRevenue());
+                    fundIncomeInfo.setTemplateId(templateId);
+                    fundIncomeInfo.setIncomeTimeRange(templateOption.getIncomeTimeRange());
+                    fundIncomeInfo.setEndDate(templateOption.getEndDate());
+                    fundIncomeInfo.setIncomeType(templateOption.getIncomeType());
+                    fundIncomeInfo.setChargePerson(templateOption.getChargePerson());
+                    fundIncomeInfo.setTemplateOptionId(templateOption.getId());
+
+                    if (StringUtils.isNotEmpty(templateInfo.getAttachment())) {
+                        fundIncomeInfo.setAttachment(templateInfo.getAttachment());
+                    }
+
+                    if (templateOption.getIsSum() != null) {
+                        fundIncomeInfo.setIsSum(templateOption.getIsSum());
+                    }
+
+                    if (StringUtils.isNotEmpty(templateOption.getDepartmentIds())) {
+                        fundIncomeInfo.setIncomeDepartment(templateOption.getDepartmentIds());
+                    }
+
+                    count += fundIncomeInfoDAO.insert(fundIncomeInfo);
                 }
-
-                if (templateOption.getIsSum() != null) {
-                    fundIncomeInfo.setIsSum(templateOption.getIsSum());
+            }
+        }
+        else{
+            //未填写日期区间范围,生成一年的数据
+            for (int i = 1; i <= 12; i++) {
+                String yearMonth = year;
+                if (i < 10) {
+                    yearMonth += "-0" + String.valueOf(i) + "-01";
+                } else {
+                    yearMonth += "-" + String.valueOf(i) + "-01";
                 }
 
-                if (StringUtils.isNotEmpty(templateOption.getDepartmentIds())) {
-                    fundIncomeInfo.setIncomeDepartment(templateOption.getDepartmentIds());
+                for (TemplateOption templateOption : templateOptionList) {
+                    FundIncomeInfo fundIncomeInfo = new FundIncomeInfo();
+                    fundIncomeInfo.setId(UUID.randomUUID().toString());
+                    fundIncomeInfo.setName(templateOption.getName());
+                    fundIncomeInfo.setDelFlag(false);
+                    fundIncomeInfo.setCreateBy(subject);
+                    fundIncomeInfo.setCreateTime(new Date());
+                    fundIncomeInfo.setSerialNumber(templateOption.getSerialNum());
+                    fundIncomeInfo.setYear(sdf2.parse(yearMonth));
+                    fundIncomeInfo.setIndex(templateOption.getIndex());
+                    fundIncomeInfo.setBudgetRevenue(templateOption.getBudgetRevenue());
+                    fundIncomeInfo.setCurBudgetRevenue(templateOption.getBudgetRevenue());
+                    fundIncomeInfo.setTemplateId(templateId);
+                    fundIncomeInfo.setIncomeTimeRange(templateOption.getIncomeTimeRange());
+                    fundIncomeInfo.setEndDate(templateOption.getEndDate());
+                    fundIncomeInfo.setIncomeType(templateOption.getIncomeType());
+                    fundIncomeInfo.setChargePerson(templateOption.getChargePerson());
+                    fundIncomeInfo.setTemplateOptionId(templateOption.getId());
+
+                    if (StringUtils.isNotEmpty(templateInfo.getAttachment())) {
+                        fundIncomeInfo.setAttachment(templateInfo.getAttachment());
+                    }
+
+                    if (templateOption.getIsSum() != null) {
+                        fundIncomeInfo.setIsSum(templateOption.getIsSum());
+                    }
+
+                    if (StringUtils.isNotEmpty(templateOption.getDepartmentIds())) {
+                        fundIncomeInfo.setIncomeDepartment(templateOption.getDepartmentIds());
+                    }
+
+                    count += fundIncomeInfoDAO.insert(fundIncomeInfo);
                 }
-
-                count += fundIncomeInfoDAO.insert(fundIncomeInfo);
             }
         }
 
@@ -187,23 +257,23 @@ public class FundIncomeInfoServiceImpl implements FundIncomeInfoService {
 
 
     @Override
-    public BigDecimal sumByTemplateOptionId(String templateOptionId,String startDate,String endDate){
+    public BigDecimal sumByTemplateOptionId(String templateOptionId, String startDate, String endDate) {
         return fundIncomeInfoDAO.sumByTemplateOptionId(templateOptionId, startDate, endDate);
     }
 
 
     @Override
-    public Map<String,BigDecimal> sumBudgetRevenue(String serialNumber, String startDate, String endDate, String templateId) {
+    public Map<String, BigDecimal> sumBudgetRevenue(String serialNumber, String startDate, String endDate, String templateId) {
         return fundIncomeInfoDAO.sumBudgetRevenue(serialNumber, startDate, endDate, templateId);
     }
 
     @Override
-    public List<Map<String, BigDecimal>> findBudgetRevenue(String serialNumber,String startDate,String endDate,String templateId){
+    public List<Map<String, BigDecimal>> findBudgetRevenue(String serialNumber, String startDate, String endDate, String templateId) {
         return fundIncomeInfoDAO.findBudgetRevenue(serialNumber, startDate, endDate, templateId);
     }
 
     @Override
-    public FundIncomeInfo findOneByTemplateOptionId(String templateOptionId,String startDate,String endDate){
+    public FundIncomeInfo findOneByTemplateOptionId(String templateOptionId, String startDate, String endDate) {
         return fundIncomeInfoDAO.findOneByTemplateOptionId(templateOptionId, startDate, endDate);
     }
 

+ 167 - 50
common/src/main/java/com/jpsoft/employment/modules/base/service/impl/TemplateInfoServiceImpl.java

@@ -1,9 +1,22 @@
 package com.jpsoft.employment.modules.base.service.impl;
 
+import java.text.SimpleDateFormat;
+import java.time.LocalDate;
+import java.time.YearMonth;
+import java.time.ZoneId;
+import java.time.ZonedDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 import java.util.UUID;
 import javax.annotation.Resource;
+
+import com.jpsoft.employment.modules.base.dao.FundIncomeInfoDAO;
+import com.jpsoft.employment.modules.base.dao.TemplateOptionDAO;
+import com.jpsoft.employment.modules.base.entity.FundIncomeInfo;
+import com.jpsoft.employment.modules.base.entity.TemplateOption;
+import com.jpsoft.employment.modules.common.utils.StringUtils;
 import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
 import com.jpsoft.employment.modules.base.dao.TemplateInfoDAO;
@@ -14,57 +27,161 @@ import com.jpsoft.employment.modules.common.dto.Sort;
 import com.github.pagehelper.PageHelper;
 
 @Transactional
-@Component(value="templateInfoService")
+@Component(value = "templateInfoService")
 public class TemplateInfoServiceImpl implements TemplateInfoService {
-	@Resource(name="templateInfoDAO")
-	private TemplateInfoDAO templateInfoDAO;
-
-	@Override
-	public TemplateInfo get(String id) {
-		// TODO Auto-generated method stub
-		return templateInfoDAO.get(id);
-	}
-
-	@Override
-	public int insert(TemplateInfo model) {
-		// TODO Auto-generated method stub
-		//model.setId(UUID.randomUUID().toString());
-		
-		return templateInfoDAO.insert(model);
-	}
-
-	@Override
-	public int update(TemplateInfo model) {
-		// TODO Auto-generated method stub
-		return templateInfoDAO.update(model);		
-	}
-
-	@Override
-	public int delete(String id) {
-		// TODO Auto-generated method stub
-		return templateInfoDAO.delete(id);
-	}
-
-	@Override
-	public boolean exist(String id) {
-		// TODO Auto-generated method stub
-		int count = templateInfoDAO.exist(id);
-		
-		return count > 0 ? true : false;
-	}
-	
-	@Override
-	public List<TemplateInfo> list(Map<String, Object> searchParams,List<Sort> sortList) {
-		// TODO Auto-generated method stub
-		return templateInfoDAO.list(searchParams,sortList);
-	}
-		
-	@Override
-	public Page<TemplateInfo> pageSearch(Map<String, Object> searchParams, int pageNumber, int pageSize,boolean count,List<Sort> sortList) {
-        Page<TemplateInfo> page = PageHelper.startPage(pageNumber,pageSize,count).doSelectPage(()->{
-            templateInfoDAO.search(searchParams,sortList);
+    @Resource(name = "templateInfoDAO")
+    private TemplateInfoDAO templateInfoDAO;
+
+    @Resource(name = "fundIncomeInfoDAO")
+    private FundIncomeInfoDAO fundIncomeInfoDAO;
+
+    @Resource(name = "templateOptionDAO")
+    private TemplateOptionDAO templateOptionDAO;
+
+    @Override
+    public TemplateInfo get(String id) {
+        // TODO Auto-generated method stub
+        return templateInfoDAO.get(id);
+    }
+
+    @Override
+    public int insert(TemplateInfo model) {
+        // TODO Auto-generated method stub
+        //model.setId(UUID.randomUUID().toString());
+
+        return templateInfoDAO.insert(model);
+    }
+
+    @Override
+    public int update(TemplateInfo model) {
+        // TODO Auto-generated method stub
+        return templateInfoDAO.update(model);
+    }
+
+
+    @Override
+    public int updateDate(TemplateInfo model) {
+
+        int count = templateInfoDAO.update(model);
+
+        if ("0".equals(model.getStatus())) {
+            //未审核的无需生成数据
+            return count;
+        }
+
+        String startDate = model.getYear() + "-01" + "-01";
+        String endDate = model.getYear() + "-12" + "-31";
+
+        List<FundIncomeInfo> fundIncomeInfoList = fundIncomeInfoDAO.findByYear(startDate, endDate, model.getId());
+
+        if (fundIncomeInfoList.size() == 0) {
+            //未生成过数据的模板也无需生成数据
+            return count;
+        }
+
+        if (model.getDateRangeArr().length != 2) {
+            //未填写日期范围也无需生成数据
+            return count;
+        }
+
+        startDate = endDate;
+        endDate = model.getDateRangeArr()[1] + "-01";
+
+        List<TemplateOption> templateOptionList = templateOptionDAO.findByTemplateId(model.getId());
+
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+        // 将字符串转换为 LocalDate 对象
+        LocalDate startLocalDate = LocalDate.parse(startDate, formatter);
+        LocalDate endLocalDate = LocalDate.parse(endDate, formatter);
+
+        YearMonth startYearMonth = YearMonth.from(startLocalDate);
+        YearMonth endYearMonth = YearMonth.from(endLocalDate);
+
+        // 定义日期时间格式
+        DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyy-MM");
+
+        for (YearMonth current = startYearMonth; !current.isAfter(endYearMonth); current = current.plusMonths(1)) {
+            System.out.println(current);
+
+            // 将 YearMonth 对象格式化为字符串
+            String yearMonthString = current.format(formatter1);
+
+            int num = fundIncomeInfoDAO.countByYear(yearMonthString + "-01", model.getId());
+
+            if (num == 0) {
+                for (TemplateOption templateOption : templateOptionList) {
+                    FundIncomeInfo fundIncomeInfo = new FundIncomeInfo();
+                    fundIncomeInfo.setId(UUID.randomUUID().toString());
+                    fundIncomeInfo.setName(templateOption.getName());
+                    fundIncomeInfo.setDelFlag(false);
+                    fundIncomeInfo.setCreateBy(model.getUpdateBy());
+                    fundIncomeInfo.setCreateTime(new Date());
+                    fundIncomeInfo.setSerialNumber(templateOption.getSerialNum());
+
+                    //转换日期格式
+                    ZonedDateTime zonedDateTime = current.atDay(1).atStartOfDay(ZoneId.systemDefault());
+                    java.time.Instant instant = zonedDateTime.toInstant();
+                    // 使用 Date 的 from 方法将 Instant 转换为 Date
+                    Date date = Date.from(instant);
+
+                    fundIncomeInfo.setYear(date);
+                    fundIncomeInfo.setIndex(templateOption.getIndex());
+                    fundIncomeInfo.setBudgetRevenue(templateOption.getBudgetRevenue());
+                    fundIncomeInfo.setCurBudgetRevenue(templateOption.getBudgetRevenue());
+                    fundIncomeInfo.setTemplateId(model.getId());
+                    fundIncomeInfo.setIncomeTimeRange(templateOption.getIncomeTimeRange());
+                    fundIncomeInfo.setEndDate(templateOption.getEndDate());
+                    fundIncomeInfo.setIncomeType(templateOption.getIncomeType());
+                    fundIncomeInfo.setChargePerson(templateOption.getChargePerson());
+                    fundIncomeInfo.setTemplateOptionId(templateOption.getId());
+
+                    if (StringUtils.isNotEmpty(model.getAttachment())) {
+                        fundIncomeInfo.setAttachment(model.getAttachment());
+                    }
+
+                    if (templateOption.getIsSum() != null) {
+                        fundIncomeInfo.setIsSum(templateOption.getIsSum());
+                    }
+
+                    if (StringUtils.isNotEmpty(templateOption.getDepartmentIds())) {
+                        fundIncomeInfo.setIncomeDepartment(templateOption.getDepartmentIds());
+                    }
+
+                    fundIncomeInfoDAO.insert(fundIncomeInfo);
+                }
+            }
+        }
+
+        return count;
+
+    }
+
+    @Override
+    public int delete(String id) {
+        // TODO Auto-generated method stub
+        return templateInfoDAO.delete(id);
+    }
+
+    @Override
+    public boolean exist(String id) {
+        // TODO Auto-generated method stub
+        int count = templateInfoDAO.exist(id);
+
+        return count > 0 ? true : false;
+    }
+
+    @Override
+    public List<TemplateInfo> list(Map<String, Object> searchParams, List<Sort> sortList) {
+        // TODO Auto-generated method stub
+        return templateInfoDAO.list(searchParams, sortList);
+    }
+
+    @Override
+    public Page<TemplateInfo> pageSearch(Map<String, Object> searchParams, int pageNumber, int pageSize, boolean count, List<Sort> sortList) {
+        Page<TemplateInfo> page = PageHelper.startPage(pageNumber, pageSize, count).doSelectPage(() -> {
+            templateInfoDAO.search(searchParams, sortList);
         });
-        
+
         return page;
-	}
+    }
 }

+ 22 - 0
common/src/main/java/com/jpsoft/employment/modules/common/utils/DateDifferenceInMonths.java

@@ -0,0 +1,22 @@
+package com.jpsoft.employment.modules.common.utils;
+
+import java.time.LocalDate;
+import java.time.YearMonth;
+import java.time.temporal.ChronoUnit;
+
+public class DateDifferenceInMonths {
+
+    /**
+     * 计算两个日期相差的月份数
+     * @param startDate 开始日期
+     * @param endDate 结束日期
+     * @return 相差的月份数
+     */
+    public static long getMonthDifference(LocalDate startDate, LocalDate endDate) {
+        // 分别获取开始日期和结束日期的年月
+        YearMonth startYearMonth = YearMonth.from(startDate);
+        YearMonth endYearMonth = YearMonth.from(endDate);
+        // 计算两个年月之间相差的月份数
+        return ChronoUnit.MONTHS.between(startYearMonth, endYearMonth);
+    }
+}

+ 9 - 0
common/src/main/resources/mapper/base/FundIncomeInfo.xml

@@ -186,6 +186,15 @@
 			order by create_time
 		]]>
 	</select>
+	<select id="countByYear" resultType="java.lang.Integer">
+		<![CDATA[
+			select count(*) from base_fund_income_info
+			where del_flag=false
+			and year_= #{currentDate}
+			and template_id=#{templateId}
+			order by create_time
+		]]>
+	</select>
 	<select id="sumBySerialNumber" resultType="java.math.BigDecimal">
 		<![CDATA[
 			select IFNULL(sum(cur_month_received),0) from base_fund_income_info

+ 12 - 2
common/src/main/resources/mapper/base/TemplateInfo.xml

@@ -17,7 +17,8 @@
 			<result property="status" column="status_" />
 			<result property="attachment" column="attachment_" />
 			<result property="year" column="year_" />
-
+			<result property="startDate" column="start_date" />
+			<result property="endDate" column="end_date" />
 			</resultMap>
 	<insert id="insert" parameterType="com.jpsoft.employment.modules.base.entity.TemplateInfo">
 	<!--
@@ -27,7 +28,8 @@
 	-->
 	<![CDATA[
 		insert into base_template_info
-	    (id_,title_,subtitle_,type_,serial_num,create_time,update_time,create_by,update_by,del_flag,status_,attachment_,year_)
+	    (id_,title_,subtitle_,type_,serial_num,create_time,update_time,create_by,update_by,del_flag,status_,attachment_,year_,
+	    start_date,end_date)
 		values
 		(
 #{id,jdbcType=VARCHAR}
@@ -43,6 +45,8 @@
 ,#{status,jdbcType=VARCHAR}
 ,#{attachment,jdbcType=VARCHAR}
 ,#{year,jdbcType=VARCHAR}
+,#{startDate,jdbcType= TIMESTAMP }
+,#{endDate,jdbcType= TIMESTAMP }
 		)
 	]]>
 	</insert>
@@ -88,6 +92,12 @@
 			<if test="year!=null">
 				year_=#{year,jdbcType=VARCHAR},
 			</if>
+			<if test="startDate!=null">
+				start_date=#{startDate,jdbcType= TIMESTAMP },
+			</if>
+			<if test="endDate!=null">
+				end_date=#{endDate,jdbcType= TIMESTAMP },
+			</if>
 		</set>
 	where id_=#{id}
 	</update>

+ 130 - 71
web/src/main/java/com/jpsoft/employment/modules/base/controller/TemplateInfoController.java

@@ -29,11 +29,11 @@ public class TemplateInfoController {
 
     @Autowired
     private UserService userService;
-	
-	
-	@ApiOperation(value="创建空记录")
+
+
+    @ApiOperation(value = "创建空记录")
     @GetMapping("create")
-    public MessageResult<TemplateInfo> create(){
+    public MessageResult<TemplateInfo> create() {
         MessageResult<TemplateInfo> msgResult = new MessageResult<>();
 
         TemplateInfo templateInfo = new TemplateInfo();
@@ -45,18 +45,28 @@ public class TemplateInfoController {
         return msgResult;
     }
 
-    @ApiOperation(value="添加信息")
+    @ApiOperation(value = "添加信息")
     @PostMapping("add")
-    public MessageResult<TemplateInfo> add(@RequestBody TemplateInfo templateInfo,@RequestAttribute String subject){
+    public MessageResult<TemplateInfo> add(@RequestBody TemplateInfo templateInfo, @RequestAttribute String subject) {
         MessageResult<TemplateInfo> msgResult = new MessageResult<>();
 
         try {
             templateInfo.setId(UUID.randomUUID().toString());
-			templateInfo.setDelFlag(false);
+            templateInfo.setDelFlag(false);
             templateInfo.setCreateBy(subject);
             templateInfo.setCreateTime(new Date());
             templateInfo.setStatus("0");
 
+            if (templateInfo.getDateRangeArr().length == 2) {
+                String start = templateInfo.getDateRangeArr()[0];
+                String end = templateInfo.getDateRangeArr()[1];
+
+                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
+
+                templateInfo.setStartDate(sdf.parse(start));
+                templateInfo.setEndDate(sdf.parse(end));
+            }
+
 
             int affectCount = templateInfoService.insert(templateInfo);
 
@@ -67,9 +77,8 @@ public class TemplateInfoController {
                 msgResult.setResult(false);
                 msgResult.setMessage("数据库添加失败");
             }
-        }
-        catch(Exception ex){
-            logger.error(ex.getMessage(),ex);
+        } catch (Exception ex) {
+            logger.error(ex.getMessage(), ex);
 
             msgResult.setResult(false);
             msgResult.setMessage(ex.getMessage());
@@ -78,24 +87,32 @@ public class TemplateInfoController {
         return msgResult;
     }
 
-    @ApiOperation(value="获取信息")
+    @ApiOperation(value = "获取信息")
     @GetMapping("edit/{id}")
-    public MessageResult<TemplateInfo> edit(@PathVariable("id") String id){
+    public MessageResult<TemplateInfo> edit(@PathVariable("id") String id) {
         MessageResult<TemplateInfo> msgResult = new MessageResult<>();
 
         try {
             TemplateInfo templateInfo = templateInfoService.get(id);
 
             if (templateInfo != null) {
+
+                if (templateInfo.getStartDate() != null && templateInfo.getEndDate() != null) {
+                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
+                    String[] dateRangeArr = new String[2];
+                    dateRangeArr[0] = sdf.format(templateInfo.getStartDate());
+                    dateRangeArr[1] = sdf.format(templateInfo.getEndDate());
+                    templateInfo.setDateRangeArr(dateRangeArr);
+                }
+
                 msgResult.setResult(true);
                 msgResult.setData(templateInfo);
             } else {
                 msgResult.setResult(false);
                 msgResult.setMessage("数据库不存在该记录!");
             }
-        }
-        catch(Exception ex){
-            logger.error(ex.getMessage(),ex);
+        } catch (Exception ex) {
+            logger.error(ex.getMessage(), ex);
 
             msgResult.setResult(false);
             msgResult.setMessage(ex.getMessage());
@@ -104,15 +121,25 @@ public class TemplateInfoController {
         return msgResult;
     }
 
-    @ApiOperation(value="更新用户")
+    @ApiOperation(value = "更新用户")
     @PostMapping("update")
-    public MessageResult<TemplateInfo> update(@RequestBody TemplateInfo templateInfo,@RequestAttribute String subject){
+    public MessageResult<TemplateInfo> update(@RequestBody TemplateInfo templateInfo, @RequestAttribute String subject) {
         MessageResult<TemplateInfo> msgResult = new MessageResult<>();
 
         try {
-		    templateInfo.setUpdateBy(subject);
+            templateInfo.setUpdateBy(subject);
             templateInfo.setUpdateTime(new Date());
-		
+
+            if (templateInfo.getDateRangeArr().length == 2) {
+                String start = templateInfo.getDateRangeArr()[0];
+                String end = templateInfo.getDateRangeArr()[1];
+
+                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+
+                templateInfo.setStartDate(sdf.parse(start));
+                templateInfo.setEndDate(sdf.parse(end));
+            }
+
             int affectCount = templateInfoService.update(templateInfo);
 
             if (affectCount > 0) {
@@ -122,9 +149,47 @@ public class TemplateInfoController {
                 msgResult.setResult(false);
                 msgResult.setMessage("数据库更新失败");
             }
+        } catch (Exception ex) {
+            logger.error(ex.getMessage(), ex);
+
+            msgResult.setResult(false);
+            msgResult.setMessage(ex.getMessage());
         }
-        catch(Exception ex){
-            logger.error(ex.getMessage(),ex);
+
+        return msgResult;
+    }
+
+
+    @ApiOperation(value = "更新日期范围")
+    @PostMapping("updateDate")
+    public MessageResult<TemplateInfo> updateDate(@RequestBody TemplateInfo templateInfo, @RequestAttribute String subject) {
+        MessageResult<TemplateInfo> msgResult = new MessageResult<>();
+
+        try {
+            templateInfo.setUpdateBy(subject);
+            templateInfo.setUpdateTime(new Date());
+
+            if (templateInfo.getDateRangeArr().length == 2) {
+                String start = templateInfo.getDateRangeArr()[0] + "-01";
+                String end = templateInfo.getDateRangeArr()[1] + "-01";
+
+                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+
+                templateInfo.setStartDate(sdf.parse(start));
+                templateInfo.setEndDate(sdf.parse(end));
+            }
+
+            int affectCount = templateInfoService.updateDate(templateInfo);
+
+            if (affectCount > 0) {
+                msgResult.setResult(true);
+                msgResult.setData(templateInfo);
+            } else {
+                msgResult.setResult(false);
+                msgResult.setMessage("数据库更新失败");
+            }
+        } catch (Exception ex) {
+            logger.error(ex.getMessage(), ex);
 
             msgResult.setResult(false);
             msgResult.setMessage(ex.getMessage());
@@ -133,19 +198,19 @@ public class TemplateInfoController {
         return msgResult;
     }
 
-    @ApiOperation(value="删除用户")
+    @ApiOperation(value = "删除用户")
     @PostMapping("delete/{id}")
-    public MessageResult<TemplateInfo> delete(@PathVariable("id") String id,@RequestAttribute String subject){
+    public MessageResult<TemplateInfo> delete(@PathVariable("id") String id, @RequestAttribute String subject) {
         MessageResult<TemplateInfo> msgResult = new MessageResult<>();
 
         try {
-			
-			TemplateInfo templateInfo = templateInfoService.get(id);
+
+            TemplateInfo templateInfo = templateInfoService.get(id);
             templateInfo.setDelFlag(true);
             templateInfo.setUpdateBy(subject);
             templateInfo.setUpdateTime(new Date());
-			
-			int affectCount = templateInfoService.update(templateInfo);
+
+            int affectCount = templateInfoService.update(templateInfo);
 
             if (affectCount > 0) {
                 msgResult.setResult(true);
@@ -153,9 +218,8 @@ public class TemplateInfoController {
                 msgResult.setResult(false);
                 msgResult.setMessage("数据库删除失败");
             }
-        }
-        catch(Exception ex){
-            logger.error(ex.getMessage(),ex);
+        } catch (Exception ex) {
+            logger.error(ex.getMessage(), ex);
 
             msgResult.setResult(false);
             msgResult.setMessage(ex.getMessage());
@@ -165,9 +229,9 @@ public class TemplateInfoController {
     }
 
 
-    @ApiOperation(value="批量删除")
+    @ApiOperation(value = "批量删除")
     @PostMapping("batchDelete")
-    public MessageResult<Integer> batchDelete(@RequestBody List<String> idList,@RequestAttribute String subject){
+    public MessageResult<Integer> batchDelete(@RequestBody List<String> idList, @RequestAttribute String subject) {
         MessageResult<Integer> msgResult = new MessageResult<>();
 
         try {
@@ -189,9 +253,8 @@ public class TemplateInfoController {
                 msgResult.setResult(false);
                 msgResult.setMessage("删除失败");
             }
-        }
-        catch(Exception ex){
-            logger.error(ex.getMessage(),ex);
+        } catch (Exception ex) {
+            logger.error(ex.getMessage(), ex);
 
             msgResult.setResult(false);
             msgResult.setMessage(ex.getMessage());
@@ -200,14 +263,14 @@ public class TemplateInfoController {
         return msgResult;
     }
 
-    @ApiOperation(value="列表")
-    @RequestMapping(value = "pageList",method = RequestMethod.POST)
+    @ApiOperation(value = "列表")
+    @RequestMapping(value = "pageList", method = RequestMethod.POST)
     public MessageResult<Map> pageList(
-            String year,String title,
-            @RequestParam(value="pageIndex",defaultValue="1") int pageIndex,
-            @RequestParam(value="pageSize",defaultValue="20") int pageSize,
-            HttpServletRequest request){
-        String subject = (String)request.getAttribute("subject");
+            String year, String title,
+            @RequestParam(value = "pageIndex", defaultValue = "1") int pageIndex,
+            @RequestParam(value = "pageSize", defaultValue = "20") int pageSize,
+            HttpServletRequest request) {
+        String subject = (String) request.getAttribute("subject");
 
         //当前用户ID
         System.out.println(subject);
@@ -215,32 +278,31 @@ public class TemplateInfoController {
         User user = userService.get(subject);
 
 
-
         MessageResult<Map> msgResult = new MessageResult<>();
 
-        Map<String,Object> searchParams = new HashMap<>();
+        Map<String, Object> searchParams = new HashMap<>();
 
-        if(!userService.hasRole(user.getId(),"SYSADMIN")&&!userService.hasRole(user.getId(),"ADMIN")) {
-            searchParams.put("createBy",user.getId());
+        if (!userService.hasRole(user.getId(), "SYSADMIN") && !userService.hasRole(user.getId(), "ADMIN")) {
+            searchParams.put("createBy", user.getId());
         }
 
         List<Sort> sortList = new ArrayList<>();
-        sortList.add(new Sort("create_time","desc"));
+        sortList.add(new Sort("create_time", "desc"));
 
         if (StringUtils.isNotEmpty(title)) {
-            searchParams.put("title","%" + title + "%");
+            searchParams.put("title", "%" + title + "%");
         }
 
         if (StringUtils.isNotEmpty(year)) {
-            searchParams.put("year",year);
+            searchParams.put("year", year);
         }
 
 
-        Page<TemplateInfo> page = templateInfoService.pageSearch(searchParams,pageIndex,pageSize,true,sortList);
+        Page<TemplateInfo> page = templateInfoService.pageSearch(searchParams, pageIndex, pageSize, true, sortList);
 
-        for (TemplateInfo templateInfo:page) {
+        for (TemplateInfo templateInfo : page) {
             User user1 = userService.get(templateInfo.getCreateBy());
-            if(user1!=null){
+            if (user1 != null) {
                 templateInfo.setCreateByN(user1.getRealName());
             }
         }
@@ -253,20 +315,19 @@ public class TemplateInfoController {
     }
 
 
+    @ApiOperation(value = "列表")
+    @RequestMapping(value = "list", method = RequestMethod.POST)
+    public MessageResult<List<TemplateInfo>> pageList(HttpServletRequest request) {
+        String subject = (String) request.getAttribute("subject");
 
-    @ApiOperation(value="列表")
-    @RequestMapping(value = "list",method = RequestMethod.POST)
-    public MessageResult<List<TemplateInfo>> pageList(HttpServletRequest request){
-        String subject = (String)request.getAttribute("subject");
-
-        Map<String,Object> searchParams = new HashMap<>();
+        Map<String, Object> searchParams = new HashMap<>();
 
         //当前用户ID
         System.out.println(subject);
 
         MessageResult<List<TemplateInfo>> msgResult = new MessageResult<>();
 
-        List<TemplateInfo> templateInfoList = templateInfoService.list(searchParams,null);
+        List<TemplateInfo> templateInfoList = templateInfoService.list(searchParams, null);
 
 
         msgResult.setResult(true);
@@ -276,9 +337,9 @@ public class TemplateInfoController {
     }
 
 
-    @ApiOperation(value="审核")
+    @ApiOperation(value = "审核")
     @PostMapping("checked/{id}")
-    public MessageResult<TemplateInfo> checked(@PathVariable("id") String id,@RequestAttribute String subject){
+    public MessageResult<TemplateInfo> checked(@PathVariable("id") String id, @RequestAttribute String subject) {
         MessageResult<TemplateInfo> msgResult = new MessageResult<>();
 
         try {
@@ -296,9 +357,8 @@ public class TemplateInfoController {
                 msgResult.setResult(false);
                 msgResult.setMessage("数据库审核失败");
             }
-        }
-        catch(Exception ex){
-            logger.error(ex.getMessage(),ex);
+        } catch (Exception ex) {
+            logger.error(ex.getMessage(), ex);
 
             msgResult.setResult(false);
             msgResult.setMessage(ex.getMessage());
@@ -308,11 +368,11 @@ public class TemplateInfoController {
     }
 
 
-    @ApiOperation(value="保存附件")
-    @RequestMapping(value = "saveAttachment",method = RequestMethod.POST)
+    @ApiOperation(value = "保存附件")
+    @RequestMapping(value = "saveAttachment", method = RequestMethod.POST)
     public MessageResult<TemplateInfo> saveAttachment(
-            String id,String attachment,
-            @RequestAttribute String subject){
+            String id, String attachment,
+            @RequestAttribute String subject) {
 
         MessageResult<TemplateInfo> msgResult = new MessageResult<>();
 
@@ -330,9 +390,8 @@ public class TemplateInfoController {
                 msgResult.setResult(false);
                 msgResult.setMessage("数据库审核失败");
             }
-        }
-        catch(Exception ex){
-            logger.error(ex.getMessage(),ex);
+        } catch (Exception ex) {
+            logger.error(ex.getMessage(), ex);
 
             msgResult.setResult(false);
             msgResult.setMessage(ex.getMessage());

+ 2 - 2
web/src/main/java/com/jpsoft/employment/modules/common/controller/JwtsUserController.java

@@ -200,8 +200,8 @@ public class JwtsUserController {
             String phone = user.getPhone();
             if (StringUtil.isNotEmpty(phone)) {
                 // 将验证码发送给用户
-                boolean success = smsService.sendVerificationCode(phone, captCha);
-                logger.info("发送验证码状态:" + String.valueOf(success));
+//                boolean success = smsService.sendVerificationCode(phone, captCha);
+//                logger.info("发送验证码状态:" + String.valueOf(success));
                 captchaStore.put(captCha, System.currentTimeMillis());
                 messageResult.setResult(true);
                 messageResult.setData(captCha);