Преглед на файлове

1.数据明细列表显示功能
2.预算收入可以修改功能
3.项目年度预算修改,上传新的凭证,修改明细列表
4.在项目预算的图表显示修改信息
5.添加当前最新预算收入列
6.经费收入添加责任人列

yanliming преди 1 година
родител
ревизия
ccd0502f43
променени са 24 файла, в които са добавени 1222 реда и са изтрити 37 реда
  1. 19 0
      common/src/main/java/com/jpsoft/employment/modules/base/dao/BudgetModifyRecordDAO.java
  2. 2 1
      common/src/main/java/com/jpsoft/employment/modules/base/dao/FundIncomeInfoDAO.java
  3. 18 0
      common/src/main/java/com/jpsoft/employment/modules/base/dao/IncomeModifyRecordDAO.java
  4. 59 0
      common/src/main/java/com/jpsoft/employment/modules/base/entity/BudgetModifyRecord.java
  5. 11 1
      common/src/main/java/com/jpsoft/employment/modules/base/entity/FundIncomeInfo.java
  6. 56 0
      common/src/main/java/com/jpsoft/employment/modules/base/entity/IncomeModifyRecord.java
  7. 3 0
      common/src/main/java/com/jpsoft/employment/modules/base/entity/TemplateInfo.java
  8. 6 0
      common/src/main/java/com/jpsoft/employment/modules/base/entity/TemplateOption.java
  9. 19 0
      common/src/main/java/com/jpsoft/employment/modules/base/service/BudgetModifyRecordService.java
  10. 2 2
      common/src/main/java/com/jpsoft/employment/modules/base/service/FundIncomeInfoService.java
  11. 17 0
      common/src/main/java/com/jpsoft/employment/modules/base/service/IncomeModifyRecordService.java
  12. 133 0
      common/src/main/java/com/jpsoft/employment/modules/base/service/impl/BudgetModifyRecordServiceImpl.java
  13. 44 14
      common/src/main/java/com/jpsoft/employment/modules/base/service/impl/FundIncomeInfoServiceImpl.java
  14. 70 0
      common/src/main/java/com/jpsoft/employment/modules/base/service/impl/IncomeModifyRecordServiceImpl.java
  15. 2 1
      common/src/main/java/com/jpsoft/employment/modules/base/service/impl/TemplateOptionServiceImpl.java
  16. 105 0
      common/src/main/resources/mapper/base/BudgetModifyRecord.xml
  17. 28 3
      common/src/main/resources/mapper/base/FundIncomeInfo.xml
  18. 96 0
      common/src/main/resources/mapper/base/IncomeModifyRecord.xml
  19. 11 4
      common/src/main/resources/mapper/base/TemplateInfo.xml
  20. 11 1
      common/src/main/resources/mapper/base/TemplateOption.xml
  21. 248 0
      web/src/main/java/com/jpsoft/employment/modules/base/controller/BudgetModifyRecordController.java
  22. 16 7
      web/src/main/java/com/jpsoft/employment/modules/base/controller/FundIncomeInfoController.java
  23. 239 0
      web/src/main/java/com/jpsoft/employment/modules/base/controller/IncomeModifyRecordController.java
  24. 7 3
      web/src/main/java/com/jpsoft/employment/modules/base/controller/TemplateInfoController.java

+ 19 - 0
common/src/main/java/com/jpsoft/employment/modules/base/dao/BudgetModifyRecordDAO.java

@@ -0,0 +1,19 @@
+package com.jpsoft.employment.modules.base.dao;
+
+import java.util.List;
+import org.springframework.stereotype.Repository;
+import com.jpsoft.employment.modules.base.entity.BudgetModifyRecord;
+import java.util.Map;
+import com.jpsoft.employment.modules.common.dto.Sort;
+
+@Repository
+public interface BudgetModifyRecordDAO {
+	int insert(BudgetModifyRecord entity);
+	int update(BudgetModifyRecord entity);
+	int exist(String id);
+	BudgetModifyRecord get(String id);
+	int delete(String id);
+	List<BudgetModifyRecord> list();
+	List<BudgetModifyRecord> findByBudgetId(String budgetId);
+	List<BudgetModifyRecord> search(Map<String, Object> searchParams, List<Sort> sortList);
+}

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

@@ -17,8 +17,9 @@ public interface FundIncomeInfoDAO {
 	FundIncomeInfo get(String id);
 	int delete(String id);
 	List<FundIncomeInfo> list();
+	List<FundIncomeInfo> findByTemplateOptionId(String templateOptionId);
 	List<FundIncomeInfo> findByYear(@Param("startDate")String startDate,@Param("endDate")String endDate,@Param("templateId")String templateId);
 	BigDecimal sumBySerialNumber(@Param("serialNumber") String serialNumber,@Param("curMonth") String curMonth,@Param("templateId")String templateId);
-	BigDecimal sumBudgetRevenue(@Param("serialNumber")String serialNumber,@Param("startDate")String startDate,@Param("endDate")String endDate,@Param("templateId")String templateId);
+	Map<String,BigDecimal> sumBudgetRevenue(@Param("serialNumber")String serialNumber,@Param("startDate")String startDate,@Param("endDate")String endDate,@Param("templateId")String templateId);
 	List<FundIncomeInfo> search(Map<String, Object> searchParams, List<Sort> sortList);
 }

+ 18 - 0
common/src/main/java/com/jpsoft/employment/modules/base/dao/IncomeModifyRecordDAO.java

@@ -0,0 +1,18 @@
+package com.jpsoft.employment.modules.base.dao;
+
+import java.util.List;
+import org.springframework.stereotype.Repository;
+import com.jpsoft.employment.modules.base.entity.IncomeModifyRecord;
+import java.util.Map;
+import com.jpsoft.employment.modules.common.dto.Sort;
+
+@Repository
+public interface IncomeModifyRecordDAO {
+	int insert(IncomeModifyRecord entity);
+	int update(IncomeModifyRecord entity);
+	int exist(String id);
+	IncomeModifyRecord get(String id);
+	int delete(String id);
+	List<IncomeModifyRecord> list();
+	List<IncomeModifyRecord> search(Map<String, Object> searchParams, List<Sort> sortList);
+}

+ 59 - 0
common/src/main/java/com/jpsoft/employment/modules/base/entity/BudgetModifyRecord.java

@@ -0,0 +1,59 @@
+package com.jpsoft.employment.modules.base.entity;
+
+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;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+/**
+  描述:base_budget_modify_record的实体类
+ */
+@Data
+@ApiModel(value = "base_budget_modify_record的实体类")
+public class BudgetModifyRecord {
+		@ApiModelProperty(value = "ID")
+	private String id;
+	
+				@ApiModelProperty(value = "模板项目ID")
+	private String templateOptionId;
+	
+				@ApiModelProperty(value = "原金额")
+	private BigDecimal originalAmount;
+	
+				@ApiModelProperty(value = "修改后当前金额")
+	private BigDecimal currentAmount;
+	
+				@ApiModelProperty(value = "图片凭证")
+	private String image;
+	
+					@ApiModelProperty(value = "创建时间")
+	@DateTimeFormat(pattern="yyyy-MM-dd HH:mm")
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm",timezone ="GMT+8")
+	private Date createTime;
+	
+				@ApiModelProperty(value = "更新时间")
+	@DateTimeFormat(pattern="yyyy-MM-dd HH:mm")
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm",timezone ="GMT+8")
+	private Date updateTime;
+	
+			@ApiModelProperty(value = "创建人")
+	private String createBy;
+	
+				@ApiModelProperty(value = "更新人")
+	private String updateBy;
+	
+				@ApiModelProperty(value = "删除标示")
+	private Boolean delFlag;
+
+	@Transient
+	@ApiModelProperty(value = "创建人")
+	private String createName;
+	
+		}

+ 11 - 1
common/src/main/java/com/jpsoft/employment/modules/base/entity/FundIncomeInfo.java

@@ -27,7 +27,7 @@ public class FundIncomeInfo {
 				@ApiModelProperty(value = "项目名称")
 	private String name;
 	
-				@ApiModelProperty(value = "预算收入")
+				@ApiModelProperty(value = "预算收入")
 	private BigDecimal budgetRevenue;
 	
 				@ApiModelProperty(value = "账户名称")
@@ -98,6 +98,16 @@ public class FundIncomeInfo {
 	@ApiModelProperty(value = "是否合计")
 	private Boolean isSum;
 
+	@ApiModelProperty(value = "责任人")
+	private String chargePerson;
+
+	@ApiModelProperty(value = "当前预算收入")
+	private BigDecimal curBudgetRevenue;
+
+	@ApiModelProperty(value = "预算项目对应ID")
+	private String templateOptionId;
+
+
 	@Transient
 	@ApiModelProperty(value = "终止日页面显示字符串日期")
 	private String endDateStr;

+ 56 - 0
common/src/main/java/com/jpsoft/employment/modules/base/entity/IncomeModifyRecord.java

@@ -0,0 +1,56 @@
+package com.jpsoft.employment.modules.base.entity;
+
+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;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+/**
+  描述:base_income_modify_record的实体类
+ */
+@Data
+@ApiModel(value = "base_income_modify_record的实体类")
+public class IncomeModifyRecord {
+		@ApiModelProperty(value = "ID")
+	private String id;
+	
+				@ApiModelProperty(value = "收入项目ID")
+	private String incomeId;
+	
+				@ApiModelProperty(value = "原金额")
+	private BigDecimal originalAmount;
+	
+				@ApiModelProperty(value = "修改后当前金额")
+	private BigDecimal currentAmount;
+	
+					@ApiModelProperty(value = "创建时间")
+	@DateTimeFormat(pattern="yyyy-MM-dd HH:mm")
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm",timezone ="GMT+8")
+	private Date createTime;
+	
+				@ApiModelProperty(value = "更新时间")
+	@DateTimeFormat(pattern="yyyy-MM-dd HH:mm")
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm",timezone ="GMT+8")
+	private Date updateTime;
+	
+			@ApiModelProperty(value = "创建人")
+	private String createBy;
+	
+				@ApiModelProperty(value = "更新人")
+	private String updateBy;
+	
+				@ApiModelProperty(value = "删除标示")
+	private Boolean delFlag;
+
+	@Transient
+	@ApiModelProperty(value = "创建人")
+	private String createName;
+	
+		}

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

@@ -57,5 +57,8 @@ public class TemplateInfo {
 	@ApiModelProperty(value = "附件")
 	private String attachment;
 
+	@ApiModelProperty(value = "所属年份")
+	private String year;
+
 	
 		}

+ 6 - 0
common/src/main/java/com/jpsoft/employment/modules/base/entity/TemplateOption.java

@@ -61,6 +61,9 @@ public class TemplateOption {
 	@ApiModelProperty(value = "是否合计")
 	private Boolean isSum;
 
+	@ApiModelProperty(value = "责任人")
+	private String chargePerson;
+
 	@ApiModelProperty(value = "收入时间区间")
 	private String incomeTimeRange;
 
@@ -72,6 +75,9 @@ public class TemplateOption {
 	@JsonFormat(pattern = "yyyy-MM-dd",timezone ="GMT+8")
 	private Date endDate;
 
+	@ApiModelProperty(value = "当前预算收入")
+	private BigDecimal curBudgetRevenue;
+
 	@Transient
 	@ApiModelProperty(value = "收入时间区间")
 	private String[] incomeTimeRangeArr;

+ 19 - 0
common/src/main/java/com/jpsoft/employment/modules/base/service/BudgetModifyRecordService.java

@@ -0,0 +1,19 @@
+package com.jpsoft.employment.modules.base.service;
+
+import java.util.List;
+import java.util.Map;
+import com.jpsoft.employment.modules.base.entity.BudgetModifyRecord;
+import com.github.pagehelper.Page;
+import com.jpsoft.employment.modules.common.dto.Sort;
+
+public interface BudgetModifyRecordService {
+	BudgetModifyRecord get(String id);
+	boolean exist(String id);
+	int insert(BudgetModifyRecord model);
+	int update(BudgetModifyRecord model);
+	int updateAndBudgetItem(BudgetModifyRecord model,String subject);
+	int delete(String id);
+	List<BudgetModifyRecord> list();
+	List<BudgetModifyRecord> findByBudgetId(String budgetId);
+	Page<BudgetModifyRecord> pageSearch(Map<String, Object> searchParams, int pageNum, int pageSize, boolean count, List<Sort> sortList);
+}

+ 2 - 2
common/src/main/java/com/jpsoft/employment/modules/base/service/FundIncomeInfoService.java

@@ -13,10 +13,10 @@ public interface FundIncomeInfoService {
 	boolean exist(String id);
 	int insert(FundIncomeInfo model);
 	int update(FundIncomeInfo model);
-	int generateData(String templateId,String year,String subject) throws ParseException;
+	int generateData(String templateId,String subject) throws ParseException;
 	int delete(String id);
 	List<FundIncomeInfo> list();
 	BigDecimal sumBySerialNumber(String serialNumber,String curMonth,String templateId);
-	BigDecimal sumBudgetRevenue(String serialNumber,String startDate,String endDate,String templateId);
+	Map<String,BigDecimal> sumBudgetRevenue(String serialNumber,String startDate,String endDate,String templateId);
 	Page<FundIncomeInfo> pageSearch(Map<String, Object> searchParams, int pageNum, int pageSize, boolean count, List<Sort> sortList);
 }

+ 17 - 0
common/src/main/java/com/jpsoft/employment/modules/base/service/IncomeModifyRecordService.java

@@ -0,0 +1,17 @@
+package com.jpsoft.employment.modules.base.service;
+
+import java.util.List;
+import java.util.Map;
+import com.jpsoft.employment.modules.base.entity.IncomeModifyRecord;
+import com.github.pagehelper.Page;
+import com.jpsoft.employment.modules.common.dto.Sort;
+
+public interface IncomeModifyRecordService {
+	IncomeModifyRecord get(String id);
+	boolean exist(String id);
+	int insert(IncomeModifyRecord model);
+	int update(IncomeModifyRecord model);
+	int delete(String id);
+	List<IncomeModifyRecord> list();
+	Page<IncomeModifyRecord> pageSearch(Map<String, Object> searchParams, int pageNum, int pageSize, boolean count, List<Sort> sortList);
+}

+ 133 - 0
common/src/main/java/com/jpsoft/employment/modules/base/service/impl/BudgetModifyRecordServiceImpl.java

@@ -0,0 +1,133 @@
+package com.jpsoft.employment.modules.base.service.impl;
+
+import java.math.BigDecimal;
+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 org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
+import com.jpsoft.employment.modules.base.dao.BudgetModifyRecordDAO;
+import com.jpsoft.employment.modules.base.entity.BudgetModifyRecord;
+import com.jpsoft.employment.modules.base.service.BudgetModifyRecordService;
+import com.github.pagehelper.Page;
+import com.jpsoft.employment.modules.common.dto.Sort;
+import com.github.pagehelper.PageHelper;
+
+@Transactional
+@Component(value = "budgetModifyRecordService")
+public class BudgetModifyRecordServiceImpl implements BudgetModifyRecordService {
+    @Resource(name = "budgetModifyRecordDAO")
+    private BudgetModifyRecordDAO budgetModifyRecordDAO;
+
+    @Resource(name = "templateOptionDAO")
+    private TemplateOptionDAO templateOptionDAO;
+
+    @Resource(name = "fundIncomeInfoDAO")
+    private FundIncomeInfoDAO fundIncomeInfoDAO;
+
+    @Override
+    public BudgetModifyRecord get(String id) {
+        // TODO Auto-generated method stub
+        return budgetModifyRecordDAO.get(id);
+    }
+
+    @Override
+    public int insert(BudgetModifyRecord model) {
+        // TODO Auto-generated method stub
+        //model.setId(UUID.randomUUID().toString());
+
+        return budgetModifyRecordDAO.insert(model);
+    }
+
+    @Override
+    public int update(BudgetModifyRecord model) {
+        // TODO Auto-generated method stub
+        return budgetModifyRecordDAO.update(model);
+    }
+
+    @Override
+    public int updateAndBudgetItem(BudgetModifyRecord model, String subject) {
+        Date now = new Date();
+
+        TemplateOption templateOption = templateOptionDAO.get(model.getTemplateOptionId());
+
+        BigDecimal originalAmount = null;
+
+        if (templateOption != null) {
+            originalAmount = templateOption.getBudgetRevenue();
+        }
+
+        model.setId(UUID.randomUUID().toString());
+        model.setCreateBy(subject);
+        model.setCreateTime(now);
+        model.setDelFlag(false);
+        model.setOriginalAmount(originalAmount);
+
+        //增加修改记录
+        int count = budgetModifyRecordDAO.insert(model);
+
+        if (count > 0) {
+            if (templateOption != null) {
+                //修改模板的预算收入金额
+                templateOption.setBudgetRevenue(model.getCurrentAmount());
+                templateOption.setUpdateBy(subject);
+                templateOption.setUpdateTime(now);
+                templateOptionDAO.update(templateOption);
+
+                //修改所有由模板生成的项目预算金额
+                List<FundIncomeInfo> list = fundIncomeInfoDAO.findByTemplateOptionId(templateOption.getId());
+                for (FundIncomeInfo fundIncomeInfo : list) {
+                    fundIncomeInfo.setCurBudgetRevenue(model.getCurrentAmount());
+                    fundIncomeInfo.setUpdateBy(subject);
+                    fundIncomeInfo.setUpdateTime(now);
+
+                    fundIncomeInfoDAO.update(fundIncomeInfo);
+                }
+            }
+        }
+
+        return count;
+    }
+
+    @Override
+    public int delete(String id) {
+        // TODO Auto-generated method stub
+        return budgetModifyRecordDAO.delete(id);
+    }
+
+    @Override
+    public boolean exist(String id) {
+        // TODO Auto-generated method stub
+        int count = budgetModifyRecordDAO.exist(id);
+
+        return count > 0 ? true : false;
+    }
+
+    @Override
+    public List<BudgetModifyRecord> list() {
+        // TODO Auto-generated method stub
+        return budgetModifyRecordDAO.list();
+    }
+
+
+    @Override
+    public List<BudgetModifyRecord> findByBudgetId(String budgetId) {
+        return budgetModifyRecordDAO.findByBudgetId(budgetId);
+    }
+
+    @Override
+    public Page<BudgetModifyRecord> pageSearch(Map<String, Object> searchParams, int pageNumber, int pageSize, boolean count, List<Sort> sortList) {
+        Page<BudgetModifyRecord> page = PageHelper.startPage(pageNumber, pageSize, count).doSelectPage(() -> {
+            budgetModifyRecordDAO.search(searchParams, sortList);
+        });
+
+        return page;
+    }
+}

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

@@ -9,15 +9,11 @@ import java.util.Map;
 import java.util.UUID;
 import javax.annotation.Resource;
 
-import com.jpsoft.employment.modules.base.dao.TemplateInfoDAO;
-import com.jpsoft.employment.modules.base.dao.TemplateOptionDAO;
-import com.jpsoft.employment.modules.base.entity.TemplateInfo;
-import com.jpsoft.employment.modules.base.entity.TemplateOption;
+import com.jpsoft.employment.modules.base.dao.*;
+import com.jpsoft.employment.modules.base.entity.*;
 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.FundIncomeInfoDAO;
-import com.jpsoft.employment.modules.base.entity.FundIncomeInfo;
 import com.jpsoft.employment.modules.base.service.FundIncomeInfoService;
 import com.github.pagehelper.Page;
 import com.jpsoft.employment.modules.common.dto.Sort;
@@ -35,6 +31,12 @@ public class FundIncomeInfoServiceImpl implements FundIncomeInfoService {
     @Resource(name = "templateInfoDAO")
     private TemplateInfoDAO templateInfoDAO;
 
+    @Resource(name = "incomeModifyRecordDAO")
+    private IncomeModifyRecordDAO incomeModifyRecordDAO;
+
+    @Resource(name = "budgetModifyRecordDAO")
+    private BudgetModifyRecordDAO budgetModifyRecordDAO;
+
     @Override
     public FundIncomeInfo get(String id) {
         // TODO Auto-generated method stub
@@ -52,29 +54,54 @@ public class FundIncomeInfoServiceImpl implements FundIncomeInfoService {
     @Override
     public int update(FundIncomeInfo model) {
         // TODO Auto-generated method stub
+
+        String id = model.getId();
+
+        FundIncomeInfo oldItem = fundIncomeInfoDAO.get(id);
+
+        if (oldItem != null) {
+            IncomeModifyRecord incomeModifyRecord = new IncomeModifyRecord();
+            incomeModifyRecord.setId(UUID.randomUUID().toString());
+            incomeModifyRecord.setDelFlag(false);
+            incomeModifyRecord.setCreateBy(model.getUpdateBy());
+            incomeModifyRecord.setCreateTime(model.getUpdateTime());
+            incomeModifyRecord.setIncomeId(model.getId());
+            incomeModifyRecord.setOriginalAmount(oldItem.getCurMonthReceived());
+            incomeModifyRecord.setCurrentAmount(model.getCurMonthReceived());
+            incomeModifyRecordDAO.insert(incomeModifyRecord);
+        }
+
         return fundIncomeInfoDAO.update(model);
     }
 
 
     @Override
-    public int generateData(String templateId, String year, String subject) throws ParseException {
+    public int generateData(String templateId, String subject) throws ParseException {
         int count = 0;
-        SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
         SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd");
 
+        TemplateInfo templateInfo = templateInfoDAO.get(templateId);
+        String year = templateInfo.getYear();
+
         String startDate = year + "-01" + "-01";
         String endDate = year + "-12" + "-31";
 
-        List<FundIncomeInfo> fundIncomeInfoList = fundIncomeInfoDAO.findByYear(startDate,endDate,templateId);
+        List<FundIncomeInfo> fundIncomeInfoList = fundIncomeInfoDAO.findByYear(startDate, endDate, templateId);
 
         for (FundIncomeInfo item : fundIncomeInfoList) {
             item.setDelFlag(true);
             item.setUpdateBy(subject);
             item.setUpdateTime(new Date());
             fundIncomeInfoDAO.update(item);
-        }
 
-        TemplateInfo templateInfo = templateInfoDAO.get(templateId);
+            List<BudgetModifyRecord> budgetModifyRecordList = budgetModifyRecordDAO.findByBudgetId(item.getTemplateOptionId());
+            for (BudgetModifyRecord budgetModifyRecord:budgetModifyRecordList) {
+                budgetModifyRecord.setDelFlag(true);
+                budgetModifyRecord.setUpdateBy(subject);
+                budgetModifyRecord.setUpdateTime(new Date());
+                budgetModifyRecordDAO.update(budgetModifyRecord);
+            }
+        }
 
         List<TemplateOption> templateOptionList = templateOptionDAO.findByTemplateId(templateId);
 
@@ -98,10 +125,13 @@ public class FundIncomeInfoServiceImpl implements FundIncomeInfoService {
                 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());
@@ -144,14 +174,14 @@ public class FundIncomeInfoServiceImpl implements FundIncomeInfoService {
 
 
     @Override
-    public BigDecimal sumBySerialNumber(String serialNumber, String curMonth,String templateId) {
+    public BigDecimal sumBySerialNumber(String serialNumber, String curMonth, String templateId) {
         return fundIncomeInfoDAO.sumBySerialNumber(serialNumber, curMonth, templateId);
     }
 
 
     @Override
-    public BigDecimal sumBudgetRevenue(String serialNumber, String startDate, String endDate,String templateId) {
-        return fundIncomeInfoDAO.sumBudgetRevenue(serialNumber, startDate, endDate,templateId);
+    public Map<String,BigDecimal> sumBudgetRevenue(String serialNumber, String startDate, String endDate, String templateId) {
+        return fundIncomeInfoDAO.sumBudgetRevenue(serialNumber, startDate, endDate, templateId);
     }
 
     @Override

+ 70 - 0
common/src/main/java/com/jpsoft/employment/modules/base/service/impl/IncomeModifyRecordServiceImpl.java

@@ -0,0 +1,70 @@
+package com.jpsoft.employment.modules.base.service.impl;
+
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+import javax.annotation.Resource;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
+import com.jpsoft.employment.modules.base.dao.IncomeModifyRecordDAO;
+import com.jpsoft.employment.modules.base.entity.IncomeModifyRecord;
+import com.jpsoft.employment.modules.base.service.IncomeModifyRecordService;
+import com.github.pagehelper.Page;
+import com.jpsoft.employment.modules.common.dto.Sort;
+import com.github.pagehelper.PageHelper;
+
+@Transactional
+@Component(value="incomeModifyRecordService")
+public class IncomeModifyRecordServiceImpl implements IncomeModifyRecordService {
+	@Resource(name="incomeModifyRecordDAO")
+	private IncomeModifyRecordDAO incomeModifyRecordDAO;
+
+	@Override
+	public IncomeModifyRecord get(String id) {
+		// TODO Auto-generated method stub
+		return incomeModifyRecordDAO.get(id);
+	}
+
+	@Override
+	public int insert(IncomeModifyRecord model) {
+		// TODO Auto-generated method stub
+		//model.setId(UUID.randomUUID().toString());
+		
+		return incomeModifyRecordDAO.insert(model);
+	}
+
+	@Override
+	public int update(IncomeModifyRecord model) {
+		// TODO Auto-generated method stub
+		return incomeModifyRecordDAO.update(model);		
+	}
+
+	@Override
+	public int delete(String id) {
+		// TODO Auto-generated method stub
+		return incomeModifyRecordDAO.delete(id);
+	}
+
+	@Override
+	public boolean exist(String id) {
+		// TODO Auto-generated method stub
+		int count = incomeModifyRecordDAO.exist(id);
+		
+		return count > 0 ? true : false;
+	}
+	
+	@Override
+	public List<IncomeModifyRecord> list() {
+		// TODO Auto-generated method stub
+		return incomeModifyRecordDAO.list();
+	}
+		
+	@Override
+	public Page<IncomeModifyRecord> pageSearch(Map<String, Object> searchParams, int pageNumber, int pageSize,boolean count,List<Sort> sortList) {
+        Page<IncomeModifyRecord> page = PageHelper.startPage(pageNumber,pageSize,count).doSelectPage(()->{
+            incomeModifyRecordDAO.search(searchParams,sortList);
+        });
+        
+        return page;
+	}
+}

+ 2 - 1
common/src/main/java/com/jpsoft/employment/modules/base/service/impl/TemplateOptionServiceImpl.java

@@ -58,7 +58,8 @@ public class TemplateOptionServiceImpl implements TemplateOptionService {
             templateOptionDAO.update(templateOption);
         }
 
-        List<TemplateOption> templateOptionList = dto.getTemplateOptionList();
+        List<TemplateOption>
+                templateOptionList = dto.getTemplateOptionList();
 
         for (TemplateOption templateOption : templateOptionList) {
             templateOption.setId(UUID.randomUUID().toString());

+ 105 - 0
common/src/main/resources/mapper/base/BudgetModifyRecord.xml

@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<!-- namespace必须指向DAO接口 -->
+<mapper namespace="com.jpsoft.employment.modules.base.dao.BudgetModifyRecordDAO">
+	<resultMap id="BudgetModifyRecordMap" type="com.jpsoft.employment.modules.base.entity.BudgetModifyRecord">
+		<id property="id" column="id_" />
+			<result property="templateOptionId" column="template_option_id" />
+			<result property="originalAmount" column="original_amount" />
+			<result property="currentAmount" column="current_amount" />
+			<result property="image" column="image_" />
+			<result property="createTime" column="create_time" />
+			<result property="updateTime" column="update_time" />
+			<result property="createBy" column="create_by" />
+			<result property="updateBy" column="update_by" />
+			<result property="delFlag" column="del_flag" />
+			</resultMap>
+	<insert id="insert" parameterType="com.jpsoft.employment.modules.base.entity.BudgetModifyRecord">
+	<!--
+	<selectKey resultType="java.lang.String" order="BEFORE" keyProperty="id">
+		select sys_guid() from dual
+	</selectKey>
+	-->
+	<![CDATA[
+		insert into base_budget_modify_record
+	    (id_,template_option_id,original_amount,current_amount,image_,create_time,update_time,create_by,update_by,del_flag)
+		values
+		(
+#{id,jdbcType=VARCHAR}
+,#{templateOptionId,jdbcType=VARCHAR}
+,#{originalAmount,jdbcType= NUMERIC }
+,#{currentAmount,jdbcType= NUMERIC }
+,#{image,jdbcType=VARCHAR}
+,#{createTime,jdbcType= TIMESTAMP }
+,#{updateTime,jdbcType= TIMESTAMP }
+,#{createBy,jdbcType=VARCHAR}
+,#{updateBy,jdbcType=VARCHAR}
+,#{delFlag,jdbcType= NUMERIC }
+		)
+	]]>
+	</insert>
+	<delete id="delete" parameterType="string">
+		delete from base_budget_modify_record where id_=#{id,jdbcType=VARCHAR}
+	</delete>
+	<update id="update" parameterType="com.jpsoft.employment.modules.base.entity.BudgetModifyRecord">
+		update base_budget_modify_record
+		<set>
+				<if test="templateOptionId!=null">
+		template_option_id=#{templateOptionId,jdbcType=VARCHAR},
+		</if>
+				<if test="originalAmount!=null">
+		original_amount=#{originalAmount,jdbcType= NUMERIC },
+		</if>
+				<if test="currentAmount!=null">
+		current_amount=#{currentAmount,jdbcType= NUMERIC },
+		</if>
+				<if test="image!=null">
+		image_=#{image,jdbcType=VARCHAR},
+		</if>
+				<if test="createTime!=null">
+		create_time=#{createTime,jdbcType= TIMESTAMP },
+		</if>
+				<if test="updateTime!=null">
+		update_time=#{updateTime,jdbcType= TIMESTAMP },
+		</if>
+				<if test="createBy!=null">
+		create_by=#{createBy,jdbcType=VARCHAR},
+		</if>
+				<if test="updateBy!=null">
+		update_by=#{updateBy,jdbcType=VARCHAR},
+		</if>
+				<if test="delFlag!=null">
+		del_flag=#{delFlag,jdbcType= NUMERIC },
+		</if>
+		</set>
+	where id_=#{id}
+	</update>
+	<select id="get" parameterType="string" resultMap="BudgetModifyRecordMap">
+		select * from base_budget_modify_record where id_=#{0}
+	</select>
+	<select id="exist" parameterType="string" resultType="int">
+		select count(*) from base_budget_modify_record where id_=#{0}
+	</select>
+	<select id="list" resultMap="BudgetModifyRecordMap">
+		select * from base_budget_modify_record
+	</select>
+	<select id="findByBudgetId" resultMap="BudgetModifyRecordMap">
+		select * from base_budget_modify_record
+		where del_flag=false and template_option_id = #{budgetId} order by create_time desc
+	</select>
+	<select id="search" parameterType="hashmap" resultMap="BudgetModifyRecordMap">
+		<![CDATA[
+			select * from base_budget_modify_record
+		]]>
+		<where>
+			del_flag=false
+			<if test="searchParams.templateOptionId != null">
+				and template_option_id = #{searchParams.templateOptionId}
+			</if>
+		</where>
+		<foreach item="sort" collection="sortList"  open="order by" separator=",">
+	        ${sort.name} ${sort.order}
+	 	</foreach>
+	</select>
+</mapper>

+ 28 - 3
common/src/main/resources/mapper/base/FundIncomeInfo.xml

@@ -28,6 +28,10 @@
 			<result property="index" column="index_" />
 			<result property="templateId" column="template_id" />
 			<result property="isSum" column="is_sum" />
+			<result property="chargePerson" column="charge_person" />
+			<result property="curBudgetRevenue" column="cur_budget_revenue" />
+			<result property="templateOptionId" column="template_option_id" />
+
 			</resultMap>
 	<insert id="insert" parameterType="com.jpsoft.employment.modules.base.entity.FundIncomeInfo">
 	<!--
@@ -40,7 +44,8 @@
 	    (id_,serial_number,name_,budget_revenue,account_name,cur_month_received,
 	    actual_total_revenue,accumulated_arrears,income_time_range,income_type,
 	    end_date,income_department,attachment_,accounting_Name,bak_,
-	    create_time,update_time,create_by,update_by,del_flag,year_,index_,template_id,is_sum)
+	    create_time,update_time,create_by,update_by,del_flag,year_,index_,template_id,is_sum,
+	    charge_person,cur_budget_revenue,template_option_id)
 		values
 		(
 #{id,jdbcType=VARCHAR}
@@ -67,6 +72,9 @@
 ,#{index,jdbcType= NUMERIC }
 ,#{templateId,jdbcType=VARCHAR}
 ,#{isSum,jdbcType= NUMERIC }
+,#{chargePerson,jdbcType=VARCHAR}
+,#{curBudgetRevenue,jdbcType= NUMERIC }
+,#{templateOptionId,jdbcType=VARCHAR}
 		)
 	]]>
 	</insert>
@@ -142,6 +150,15 @@
 			<if test="isSum!=null">
 				is_sum=#{isSum,jdbcType=NUMERIC},
 			</if>
+			<if test="chargePerson!=null">
+				charge_person=#{chargePerson,jdbcType=VARCHAR},
+			</if>
+			<if test="curBudgetRevenue!=null">
+				cur_budget_revenue=#{curBudgetRevenue,jdbcType= NUMERIC },
+			</if>
+			<if test="templateOptionId!=null">
+				template_option_id=#{templateOptionId,jdbcType= VARCHAR },
+			</if>
 		</set>
 	where id_=#{id}
 	</update>
@@ -154,6 +171,11 @@
 	<select id="list" resultMap="FundIncomeInfoMap">
 		select * from base_fund_income_info where del_flag=false order by create_time
 	</select>
+	<select id="findByTemplateOptionId" resultMap="FundIncomeInfoMap">
+		select * from base_fund_income_info
+		where del_flag=false and template_option_id = #{templateOptionId}
+		order by create_time
+	</select>
 	<select id="findByYear" resultMap="FundIncomeInfoMap">
 		<![CDATA[
 			select * from base_fund_income_info
@@ -174,9 +196,12 @@
 			order by create_time
 		]]>
 	</select>
-	<select id="sumBudgetRevenue" resultType="java.math.BigDecimal">
+	<select id="sumBudgetRevenue" resultType="java.util.HashMap">
 		<![CDATA[
-			select IFNULL(sum(budget_revenue),0) from base_fund_income_info
+			select
+			IFNULL(sum(budget_revenue),0) as 'sumBudget',
+			IFNULL(sum(cur_budget_revenue),0) as 'sumCurBudgetRevenue'
+			from base_fund_income_info
 			where del_flag=false
 			and serial_number like #{serialNumber}
 			and year_>=#{startDate}

+ 96 - 0
common/src/main/resources/mapper/base/IncomeModifyRecord.xml

@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<!-- namespace必须指向DAO接口 -->
+<mapper namespace="com.jpsoft.employment.modules.base.dao.IncomeModifyRecordDAO">
+	<resultMap id="IncomeModifyRecordMap" type="com.jpsoft.employment.modules.base.entity.IncomeModifyRecord">
+		<id property="id" column="id_" />
+			<result property="incomeId" column="income_id" />
+			<result property="originalAmount" column="original_amount" />
+			<result property="currentAmount" column="current_amount" />
+			<result property="createTime" column="create_time" />
+			<result property="updateTime" column="update_time" />
+			<result property="createBy" column="create_by" />
+			<result property="updateBy" column="update_by" />
+			<result property="delFlag" column="del_flag" />
+			</resultMap>
+	<insert id="insert" parameterType="com.jpsoft.employment.modules.base.entity.IncomeModifyRecord">
+	<!--
+	<selectKey resultType="java.lang.String" order="BEFORE" keyProperty="id">
+		select sys_guid() from dual
+	</selectKey>
+	-->
+	<![CDATA[
+		insert into base_income_modify_record
+	    (id_,income_id,original_amount,current_amount,create_time,update_time,create_by,update_by,del_flag)
+		values
+		(
+#{id,jdbcType=VARCHAR}
+,#{incomeId,jdbcType=VARCHAR}
+,#{originalAmount,jdbcType= NUMERIC }
+,#{currentAmount,jdbcType= NUMERIC }
+,#{createTime,jdbcType= TIMESTAMP }
+,#{updateTime,jdbcType= TIMESTAMP }
+,#{createBy,jdbcType=VARCHAR}
+,#{updateBy,jdbcType=VARCHAR}
+,#{delFlag,jdbcType= NUMERIC }
+		)
+	]]>
+	</insert>
+	<delete id="delete" parameterType="string">
+		delete from base_income_modify_record where id_=#{id,jdbcType=VARCHAR}
+	</delete>
+	<update id="update" parameterType="com.jpsoft.employment.modules.base.entity.IncomeModifyRecord">
+		update base_income_modify_record
+		<set>
+				<if test="incomeId!=null">
+		income_id=#{incomeId,jdbcType=VARCHAR},
+		</if>
+				<if test="originalAmount!=null">
+		original_amount=#{originalAmount,jdbcType= NUMERIC },
+		</if>
+				<if test="currentAmount!=null">
+		current_amount=#{currentAmount,jdbcType= NUMERIC },
+		</if>
+				<if test="createTime!=null">
+		create_time=#{createTime,jdbcType= TIMESTAMP },
+		</if>
+				<if test="updateTime!=null">
+		update_time=#{updateTime,jdbcType= TIMESTAMP },
+		</if>
+				<if test="createBy!=null">
+		create_by=#{createBy,jdbcType=VARCHAR},
+		</if>
+				<if test="updateBy!=null">
+		update_by=#{updateBy,jdbcType=VARCHAR},
+		</if>
+				<if test="delFlag!=null">
+		del_flag=#{delFlag,jdbcType= NUMERIC },
+		</if>
+		</set>
+	where id_=#{id}
+	</update>
+	<select id="get" parameterType="string" resultMap="IncomeModifyRecordMap">
+		select * from base_income_modify_record where id_=#{0}
+	</select>
+	<select id="exist" parameterType="string" resultType="int">
+		select count(*) from base_income_modify_record where id_=#{0}
+	</select>
+	<select id="list" resultMap="IncomeModifyRecordMap">
+		select * from base_income_modify_record
+	</select>
+	<select id="search" parameterType="hashmap" resultMap="IncomeModifyRecordMap">
+		<![CDATA[
+			select * from base_income_modify_record
+		]]>
+		<where>
+			del_flag=false
+			<if test="searchParams.incomeId != null">
+				and income_id = #{searchParams.incomeId}
+			</if>
+		</where>
+		<foreach item="sort" collection="sortList"  open="order by" separator=",">
+	        ${sort.name} ${sort.order}
+	 	</foreach>
+	</select>
+</mapper>

+ 11 - 4
common/src/main/resources/mapper/base/TemplateInfo.xml

@@ -16,7 +16,7 @@
 			<result property="delFlag" column="del_flag" />
 			<result property="status" column="status_" />
 			<result property="attachment" column="attachment_" />
-
+			<result property="year" column="year_" />
 
 			</resultMap>
 	<insert id="insert" parameterType="com.jpsoft.employment.modules.base.entity.TemplateInfo">
@@ -27,7 +27,7 @@
 	-->
 	<![CDATA[
 		insert into base_template_info
-	    (id_,title_,subtitle_,type_,serial_num,create_time,update_time,create_by,update_by,del_flag,status_,attachment_)
+	    (id_,title_,subtitle_,type_,serial_num,create_time,update_time,create_by,update_by,del_flag,status_,attachment_,year_)
 		values
 		(
 #{id,jdbcType=VARCHAR}
@@ -42,6 +42,7 @@
 ,#{delFlag,jdbcType= NUMERIC }
 ,#{status,jdbcType=VARCHAR}
 ,#{attachment,jdbcType=VARCHAR}
+,#{year,jdbcType=VARCHAR}
 		)
 	]]>
 	</insert>
@@ -84,6 +85,9 @@
 			<if test="attachment!=null">
 				attachment_=#{attachment,jdbcType=VARCHAR},
 			</if>
+			<if test="year!=null">
+				year_=#{year,jdbcType=VARCHAR},
+			</if>
 		</set>
 	where id_=#{id}
 	</update>
@@ -104,8 +108,11 @@
 		]]>
 		<where>
 			del_flag = false
-			<if test="searchParams.id != null">
-				and ID_ like #{searchParams.id}
+			<if test="searchParams.title != null">
+				and title_ like #{searchParams.title}
+			</if>
+			<if test="searchParams.year != null">
+				and year_ = #{searchParams.year}
 			</if>
 		</where>
 		<foreach item="sort" collection="sortList"  open="order by" separator=",">

+ 11 - 1
common/src/main/resources/mapper/base/TemplateOption.xml

@@ -20,6 +20,8 @@
         <result property="incomeTimeRange" column="income_time_range" />
         <result property="incomeType" column="income_type" />
         <result property="endDate" column="end_date" />
+        <result property="chargePerson" column="charge_person" />
+        <result property="curBudgetRevenue" column="cur_budget_revenue" />
     </resultMap>
     <insert id="insert" parameterType="com.jpsoft.employment.modules.base.entity.TemplateOption">
         <!--
@@ -31,7 +33,7 @@
 		insert into base_template_option
 	    (id_,template_id,serial_num,name_,budget_revenue,index_,create_time,update_time,
 	    create_by,update_by,del_flag,department_ids,is_sum,income_time_range,income_type,
-	    end_date)
+	    end_date,charge_person,cur_budget_revenue)
 		values
 		(
 #{id,jdbcType=VARCHAR}
@@ -50,6 +52,8 @@
 ,#{incomeTimeRange,jdbcType=VARCHAR}
 ,#{incomeType,jdbcType=VARCHAR}
 ,#{endDate,jdbcType= TIMESTAMP }
+,#{chargePerson,jdbcType=VARCHAR}
+,#{curBudgetRevenue,jdbcType= NUMERIC }
 		)
 	]]>
     </insert>
@@ -104,6 +108,12 @@
             <if test="endDate!=null">
                 end_date=#{endDate,jdbcType= TIMESTAMP },
             </if>
+            <if test="chargePerson!=null">
+                charge_person=#{chargePerson,jdbcType=VARCHAR},
+            </if>
+            <if test="curBudgetRevenue!=null">
+                cur_budget_revenue=#{curBudgetRevenue,jdbcType= NUMERIC },
+            </if>
         </set>
         where id_=#{id}
     </update>

+ 248 - 0
web/src/main/java/com/jpsoft/employment/modules/base/controller/BudgetModifyRecordController.java

@@ -0,0 +1,248 @@
+package com.jpsoft.employment.modules.base.controller;
+
+import com.github.pagehelper.Page;
+import com.jpsoft.employment.modules.base.entity.FundIncomeInfo;
+import com.jpsoft.employment.modules.base.entity.TemplateOption;
+import com.jpsoft.employment.modules.base.service.FundIncomeInfoService;
+import com.jpsoft.employment.modules.base.service.TemplateOptionService;
+import com.jpsoft.employment.modules.common.dto.Sort;
+import com.jpsoft.employment.modules.common.dto.MessageResult;
+import com.jpsoft.employment.modules.base.entity.BudgetModifyRecord;
+import com.jpsoft.employment.modules.base.service.BudgetModifyRecordService;
+import com.jpsoft.employment.modules.common.utils.PojoUtils;
+import com.jpsoft.employment.modules.sys.entity.User;
+import com.jpsoft.employment.modules.sys.service.UserService;
+import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+@RestController
+@RequestMapping("/base/budgetModifyRecord")
+public class BudgetModifyRecordController {
+    private Logger logger = LoggerFactory.getLogger(getClass());
+
+    @Autowired
+    private BudgetModifyRecordService budgetModifyRecordService;
+
+    @Autowired
+    private TemplateOptionService templateOptionService;
+
+    @Autowired
+    private FundIncomeInfoService fundIncomeInfoService;
+
+    @Autowired
+    private UserService userService;
+
+	@ApiOperation(value="创建空记录")
+    @GetMapping("create")
+    public MessageResult<BudgetModifyRecord> create(){
+        MessageResult<BudgetModifyRecord> msgResult = new MessageResult<>();
+
+        BudgetModifyRecord budgetModifyRecord = new BudgetModifyRecord();
+
+        msgResult.setData(budgetModifyRecord);
+        msgResult.setResult(true);
+
+        return msgResult;
+    }
+
+    @ApiOperation(value="添加信息")
+    @PostMapping("add")
+    public MessageResult<BudgetModifyRecord> add(@RequestBody BudgetModifyRecord budgetModifyRecord,@RequestAttribute String subject){
+        MessageResult<BudgetModifyRecord> msgResult = new MessageResult<>();
+
+        try {
+            budgetModifyRecord.setId(UUID.randomUUID().toString());
+			budgetModifyRecord.setDelFlag(false);
+            budgetModifyRecord.setCreateBy(subject);
+            budgetModifyRecord.setCreateTime(new Date());
+
+            int affectCount = budgetModifyRecordService.insert(budgetModifyRecord);
+
+            if (affectCount > 0) {
+                msgResult.setResult(true);
+                msgResult.setData(budgetModifyRecord);
+            } else {
+                msgResult.setResult(false);
+                msgResult.setMessage("数据库添加失败");
+            }
+        }
+        catch(Exception ex){
+            logger.error(ex.getMessage(),ex);
+
+            msgResult.setResult(false);
+            msgResult.setMessage(ex.getMessage());
+        }
+
+        return msgResult;
+    }
+
+    @ApiOperation(value="获取信息")
+    @GetMapping("edit/{id}")
+    public MessageResult<BudgetModifyRecord> edit(@PathVariable("id") String id){
+        MessageResult<BudgetModifyRecord> msgResult = new MessageResult<>();
+
+        try {
+            BudgetModifyRecord budgetModifyRecord = budgetModifyRecordService.get(id);
+
+            if (budgetModifyRecord != null) {
+                msgResult.setResult(true);
+                msgResult.setData(budgetModifyRecord);
+            } else {
+                msgResult.setResult(false);
+                msgResult.setMessage("数据库不存在该记录!");
+            }
+        }
+        catch(Exception ex){
+            logger.error(ex.getMessage(),ex);
+
+            msgResult.setResult(false);
+            msgResult.setMessage(ex.getMessage());
+        }
+
+        return msgResult;
+    }
+
+    @ApiOperation(value="更新用户")
+    @PostMapping("update")
+    public MessageResult<BudgetModifyRecord> update(@RequestBody BudgetModifyRecord budgetModifyRecord,@RequestAttribute String subject){
+        MessageResult<BudgetModifyRecord> msgResult = new MessageResult<>();
+
+        try {
+		
+            int affectCount = budgetModifyRecordService.updateAndBudgetItem(budgetModifyRecord,subject);
+
+            if (affectCount > 0) {
+                msgResult.setResult(true);
+                msgResult.setData(budgetModifyRecord);
+            } else {
+                msgResult.setResult(false);
+                msgResult.setMessage("数据库更新失败");
+            }
+        }
+        catch(Exception ex){
+            logger.error(ex.getMessage(),ex);
+
+            msgResult.setResult(false);
+            msgResult.setMessage(ex.getMessage());
+        }
+
+        return msgResult;
+    }
+
+    @ApiOperation(value="删除用户")
+    @PostMapping("delete/{id}")
+    public MessageResult<BudgetModifyRecord> delete(@PathVariable("id") String id,@RequestAttribute String subject){
+        MessageResult<BudgetModifyRecord> msgResult = new MessageResult<>();
+
+        try {
+			
+			BudgetModifyRecord budgetModifyRecord = budgetModifyRecordService.get(id);
+            budgetModifyRecord.setDelFlag(true);
+            budgetModifyRecord.setUpdateBy(subject);
+            budgetModifyRecord.setUpdateTime(new Date());
+			
+			int affectCount = budgetModifyRecordService.update(budgetModifyRecord);
+
+            if (affectCount > 0) {
+                msgResult.setResult(true);
+            } else {
+                msgResult.setResult(false);
+                msgResult.setMessage("数据库删除失败");
+            }
+        }
+        catch(Exception ex){
+            logger.error(ex.getMessage(),ex);
+
+            msgResult.setResult(false);
+            msgResult.setMessage(ex.getMessage());
+        }
+
+        return msgResult;
+    }
+
+
+    @ApiOperation(value="批量删除")
+    @PostMapping("batchDelete")
+    public MessageResult<Integer> batchDelete(@RequestBody List<String> idList,@RequestAttribute String subject){
+        MessageResult<Integer> msgResult = new MessageResult<>();
+
+        try {
+            int affectCount = 0;
+
+            for (String id : idList) {
+                BudgetModifyRecord budgetModifyRecord = budgetModifyRecordService.get(id);
+                budgetModifyRecord.setDelFlag(true);
+                budgetModifyRecord.setUpdateBy(subject);
+                budgetModifyRecord.setUpdateTime(new Date());
+
+                affectCount += budgetModifyRecordService.update(budgetModifyRecord);
+            }
+
+            if (affectCount > 0) {
+                msgResult.setResult(true);
+                msgResult.setData(affectCount);
+            } else {
+                msgResult.setResult(false);
+                msgResult.setMessage("删除失败");
+            }
+        }
+        catch(Exception ex){
+            logger.error(ex.getMessage(),ex);
+
+            msgResult.setResult(false);
+            msgResult.setMessage(ex.getMessage());
+        }
+
+        return msgResult;
+    }
+
+    @ApiOperation(value="列表")
+    @RequestMapping(value = "pageList",method = RequestMethod.POST)
+    public MessageResult<Map> pageList(
+            String incomeId,
+            @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);
+
+        MessageResult<Map> msgResult = new MessageResult<>();
+
+        Map<String,Object> searchParams = new HashMap<>();
+
+        List<Sort> sortList = new ArrayList<>();
+        sortList.add(new Sort("create_time","desc"));
+
+        if (StringUtils.isNotEmpty(incomeId)) {
+            FundIncomeInfo fundIncomeInfo = fundIncomeInfoService.get(incomeId);
+            if(fundIncomeInfo!=null){
+                searchParams.put("templateOptionId",fundIncomeInfo.getTemplateOptionId());
+
+            }
+        }
+
+        Page<BudgetModifyRecord> page = budgetModifyRecordService.pageSearch(searchParams,pageIndex,pageSize,true,sortList);
+
+        for (BudgetModifyRecord budgetModifyRecord:page) {
+            User user = userService.get(budgetModifyRecord.getCreateBy());
+            if(user!=null){
+                budgetModifyRecord.setCreateName(user.getRealName());
+            }
+        }
+
+        msgResult.setResult(true);
+        msgResult.setData(PojoUtils.pageWrapper(page));
+
+        return msgResult;
+    }
+}

+ 16 - 7
web/src/main/java/com/jpsoft/employment/modules/base/controller/FundIncomeInfoController.java

@@ -183,7 +183,6 @@ public class FundIncomeInfoController {
     }
 
 
-
     @ApiOperation(value = "批量保存")
     @PostMapping("batchSave")
     public MessageResult<FundIncomeInfo> batchSave(@RequestBody List<FundIncomeInfo> list, @RequestAttribute String subject) {
@@ -192,7 +191,7 @@ public class FundIncomeInfoController {
         try {
             int affectCount = 0;
 
-            for (FundIncomeInfo fundIncomeInfo:list) {
+            for (FundIncomeInfo fundIncomeInfo : list) {
                 fundIncomeInfo.setUpdateBy(subject);
                 fundIncomeInfo.setUpdateTime(new Date());
 
@@ -289,13 +288,13 @@ public class FundIncomeInfoController {
     @ApiOperation(value = "生成数据")
     @PostMapping("generateData")
     public MessageResult<FundIncomeInfo> generateData(
-            String templateId, String year,
+            String templateId,
             @RequestAttribute String subject) {
         MessageResult<FundIncomeInfo> msgResult = new MessageResult<>();
 
         try {
 
-            int affectCount = fundIncomeInfoService.generateData(templateId, year, subject);
+            int affectCount = fundIncomeInfoService.generateData(templateId, subject);
 
             if (affectCount > 0) {
                 msgResult.setResult(true);
@@ -317,7 +316,7 @@ public class FundIncomeInfoController {
     @ApiOperation(value = "列表")
     @RequestMapping(value = "pageList", method = RequestMethod.POST)
     public MessageResult<Object> pageList(
-            String yearMonth, String name,String templateId,
+            String yearMonth, String name, String templateId,
             @RequestParam(value = "pageIndex", defaultValue = "1") int pageIndex,
             @RequestParam(value = "pageSize", defaultValue = "20000") int pageSize,
             @RequestParam(value = "exportFlag", defaultValue = "false") Boolean exportFlag,
@@ -371,17 +370,27 @@ public class FundIncomeInfoController {
                 map.put("id", fundIncomeInfo.getId());
                 map.put("name", fundIncomeInfo.getName());
                 map.put("serialNumber", fundIncomeInfo.getSerialNumber());
+                map.put("chargePerson", fundIncomeInfo.getChargePerson());
                 map.put("isSum", fundIncomeInfo.getIsSum());
                 BigDecimal budgetRevenue = fundIncomeInfo.getBudgetRevenue();
+                BigDecimal curBudgetRevenue = fundIncomeInfo.getCurBudgetRevenue();
                 if (fundIncomeInfo.getIsSum() != null) {
                     if (fundIncomeInfo.getIsSum()) {
                         String serialNumber = fundIncomeInfo.getSerialNumber();
-                        BigDecimal sumBudget = fundIncomeInfoService.sumBudgetRevenue(serialNumber + ".%", startDate, endDate, templateId);
-                        budgetRevenue = sumBudget;
+                        Map<String, BigDecimal> sumMap = fundIncomeInfoService.sumBudgetRevenue(serialNumber + ".%", startDate, endDate, templateId);
+
+                        if (sumMap != null) {
+                            budgetRevenue = sumMap.get("sumBudget");
+                            curBudgetRevenue = sumMap.get("sumCurBudgetRevenue");
+                        }
                     }
                 }
 
                 map.put("budgetRevenue", budgetRevenue);
+                if (curBudgetRevenue == null || curBudgetRevenue.compareTo(BigDecimal.ZERO) == 0) {
+                    curBudgetRevenue = budgetRevenue;
+                }
+                map.put("curBudgetRevenue", curBudgetRevenue);
                 map.put("accountName", fundIncomeInfo.getAccountName());
                 map.put("curMonthReceived", fundIncomeInfo.getCurMonthReceived());
                 //map.put("actualTotalRevenue", fundIncomeInfo.getActualTotalRevenue());

+ 239 - 0
web/src/main/java/com/jpsoft/employment/modules/base/controller/IncomeModifyRecordController.java

@@ -0,0 +1,239 @@
+package com.jpsoft.employment.modules.base.controller;
+
+import com.github.pagehelper.Page;
+import com.jpsoft.employment.modules.common.dto.Sort;
+import com.jpsoft.employment.modules.common.dto.MessageResult;
+import com.jpsoft.employment.modules.base.entity.IncomeModifyRecord;
+import com.jpsoft.employment.modules.base.service.IncomeModifyRecordService;
+import com.jpsoft.employment.modules.common.utils.PojoUtils;
+import com.jpsoft.employment.modules.sys.entity.User;
+import com.jpsoft.employment.modules.sys.service.UserService;
+import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+@RestController
+@RequestMapping("/base/incomeModifyRecord")
+public class IncomeModifyRecordController {
+    private Logger logger = LoggerFactory.getLogger(getClass());
+
+    @Autowired
+    private IncomeModifyRecordService incomeModifyRecordService;
+
+    @Autowired
+    private UserService userService;
+	
+	
+	@ApiOperation(value="创建空记录")
+    @GetMapping("create")
+    public MessageResult<IncomeModifyRecord> create(){
+        MessageResult<IncomeModifyRecord> msgResult = new MessageResult<>();
+
+        IncomeModifyRecord incomeModifyRecord = new IncomeModifyRecord();
+
+        msgResult.setData(incomeModifyRecord);
+        msgResult.setResult(true);
+
+        return msgResult;
+    }
+
+    @ApiOperation(value="添加信息")
+    @PostMapping("add")
+    public MessageResult<IncomeModifyRecord> add(@RequestBody IncomeModifyRecord incomeModifyRecord,@RequestAttribute String subject){
+        MessageResult<IncomeModifyRecord> msgResult = new MessageResult<>();
+
+        try {
+            incomeModifyRecord.setId(UUID.randomUUID().toString());
+			incomeModifyRecord.setDelFlag(false);
+            incomeModifyRecord.setCreateBy(subject);
+            incomeModifyRecord.setCreateTime(new Date());
+
+            int affectCount = incomeModifyRecordService.insert(incomeModifyRecord);
+
+            if (affectCount > 0) {
+                msgResult.setResult(true);
+                msgResult.setData(incomeModifyRecord);
+            } else {
+                msgResult.setResult(false);
+                msgResult.setMessage("数据库添加失败");
+            }
+        }
+        catch(Exception ex){
+            logger.error(ex.getMessage(),ex);
+
+            msgResult.setResult(false);
+            msgResult.setMessage(ex.getMessage());
+        }
+
+        return msgResult;
+    }
+
+    @ApiOperation(value="获取信息")
+    @GetMapping("edit/{id}")
+    public MessageResult<IncomeModifyRecord> edit(@PathVariable("id") String id){
+        MessageResult<IncomeModifyRecord> msgResult = new MessageResult<>();
+
+        try {
+            IncomeModifyRecord incomeModifyRecord = incomeModifyRecordService.get(id);
+
+            if (incomeModifyRecord != null) {
+                msgResult.setResult(true);
+                msgResult.setData(incomeModifyRecord);
+            } else {
+                msgResult.setResult(false);
+                msgResult.setMessage("数据库不存在该记录!");
+            }
+        }
+        catch(Exception ex){
+            logger.error(ex.getMessage(),ex);
+
+            msgResult.setResult(false);
+            msgResult.setMessage(ex.getMessage());
+        }
+
+        return msgResult;
+    }
+
+    @ApiOperation(value="更新用户")
+    @PostMapping("update")
+    public MessageResult<IncomeModifyRecord> update(@RequestBody IncomeModifyRecord incomeModifyRecord,@RequestAttribute String subject){
+        MessageResult<IncomeModifyRecord> msgResult = new MessageResult<>();
+
+        try {
+		    incomeModifyRecord.setUpdateBy(subject);
+            incomeModifyRecord.setUpdateTime(new Date());
+		
+            int affectCount = incomeModifyRecordService.update(incomeModifyRecord);
+
+            if (affectCount > 0) {
+                msgResult.setResult(true);
+                msgResult.setData(incomeModifyRecord);
+            } else {
+                msgResult.setResult(false);
+                msgResult.setMessage("数据库更新失败");
+            }
+        }
+        catch(Exception ex){
+            logger.error(ex.getMessage(),ex);
+
+            msgResult.setResult(false);
+            msgResult.setMessage(ex.getMessage());
+        }
+
+        return msgResult;
+    }
+
+    @ApiOperation(value="删除用户")
+    @PostMapping("delete/{id}")
+    public MessageResult<IncomeModifyRecord> delete(@PathVariable("id") String id,@RequestAttribute String subject){
+        MessageResult<IncomeModifyRecord> msgResult = new MessageResult<>();
+
+        try {
+			
+			IncomeModifyRecord incomeModifyRecord = incomeModifyRecordService.get(id);
+            incomeModifyRecord.setDelFlag(true);
+            incomeModifyRecord.setUpdateBy(subject);
+            incomeModifyRecord.setUpdateTime(new Date());
+			
+			int affectCount = incomeModifyRecordService.update(incomeModifyRecord);
+
+            if (affectCount > 0) {
+                msgResult.setResult(true);
+            } else {
+                msgResult.setResult(false);
+                msgResult.setMessage("数据库删除失败");
+            }
+        }
+        catch(Exception ex){
+            logger.error(ex.getMessage(),ex);
+
+            msgResult.setResult(false);
+            msgResult.setMessage(ex.getMessage());
+        }
+
+        return msgResult;
+    }
+
+
+    @ApiOperation(value="批量删除")
+    @PostMapping("batchDelete")
+    public MessageResult<Integer> batchDelete(@RequestBody List<String> idList,@RequestAttribute String subject){
+        MessageResult<Integer> msgResult = new MessageResult<>();
+
+        try {
+            int affectCount = 0;
+
+            for (String id : idList) {
+                IncomeModifyRecord incomeModifyRecord = incomeModifyRecordService.get(id);
+                incomeModifyRecord.setDelFlag(true);
+                incomeModifyRecord.setUpdateBy(subject);
+                incomeModifyRecord.setUpdateTime(new Date());
+
+                affectCount += incomeModifyRecordService.update(incomeModifyRecord);
+            }
+
+            if (affectCount > 0) {
+                msgResult.setResult(true);
+                msgResult.setData(affectCount);
+            } else {
+                msgResult.setResult(false);
+                msgResult.setMessage("删除失败");
+            }
+        }
+        catch(Exception ex){
+            logger.error(ex.getMessage(),ex);
+
+            msgResult.setResult(false);
+            msgResult.setMessage(ex.getMessage());
+        }
+
+        return msgResult;
+    }
+
+    @ApiOperation(value="列表")
+    @RequestMapping(value = "pageList",method = RequestMethod.POST)
+    public MessageResult<Map> pageList(
+            String incomeId,
+            @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);
+
+        MessageResult<Map> msgResult = new MessageResult<>();
+
+        Map<String,Object> searchParams = new HashMap<>();
+
+        List<Sort> sortList = new ArrayList<>();
+        sortList.add(new Sort("create_time","desc"));
+
+        if (StringUtils.isNotEmpty(incomeId)) {
+            searchParams.put("incomeId",incomeId);
+        }
+
+
+        Page<IncomeModifyRecord> page = incomeModifyRecordService.pageSearch(searchParams,pageIndex,pageSize,true,sortList);
+
+        for (IncomeModifyRecord incomeModifyRecord:page) {
+            User user = userService.get(incomeModifyRecord.getCreateBy());
+            if(user!=null){
+                incomeModifyRecord.setCreateName(user.getRealName());
+            }
+        }
+
+
+        msgResult.setResult(true);
+        msgResult.setData(PojoUtils.pageWrapper(page));
+
+        return msgResult;
+    }
+}

+ 7 - 3
web/src/main/java/com/jpsoft/employment/modules/base/controller/TemplateInfoController.java

@@ -198,7 +198,7 @@ public class TemplateInfoController {
     @ApiOperation(value="列表")
     @RequestMapping(value = "pageList",method = RequestMethod.POST)
     public MessageResult<Map> pageList(
-            String id,
+            String year,String title,
             @RequestParam(value="pageIndex",defaultValue="1") int pageIndex,
             @RequestParam(value="pageSize",defaultValue="20") int pageSize,
             HttpServletRequest request){
@@ -214,8 +214,12 @@ public class TemplateInfoController {
         List<Sort> sortList = new ArrayList<>();
         sortList.add(new Sort("create_time","desc"));
 
-        if (StringUtils.isNotEmpty(id)) {
-            searchParams.put("id","%" + id + "%");
+        if (StringUtils.isNotEmpty(title)) {
+            searchParams.put("title","%" + title + "%");
+        }
+
+        if (StringUtils.isNotEmpty(year)) {
+            searchParams.put("year",year);
         }