|
@@ -1,8 +1,10 @@
|
|
|
package com.jeeplus.modules.statement.service;
|
|
|
|
|
|
+import com.google.common.collect.Lists;
|
|
|
import com.jeeplus.common.service.CrudService;
|
|
|
import com.jeeplus.modules.statement.dao.StatementCompanyComprehensiveDao;
|
|
|
import com.jeeplus.modules.statement.entity.StatementCompanyComprehensiveInfo;
|
|
|
+import com.jeeplus.modules.statement.entity.StatementDataInfo;
|
|
|
import com.jeeplus.modules.sys.entity.Office;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
@@ -33,37 +35,134 @@ public class StatementCompanyComprehensiveService extends CrudService<StatementC
|
|
|
String beginDate = dateMap.get("beginDate");
|
|
|
//结束时间
|
|
|
String endDate = dateMap.get("endDate");
|
|
|
- disposeStatementCompanyProject(beginDate,endDate);
|
|
|
-
|
|
|
+ String statementDate = dateMap.get("statementDate");
|
|
|
+ //公司级项目处理
|
|
|
+ disposeStatementCompanyProject(beginDate,endDate,statementDate,bigDateType, smallDateType);
|
|
|
//查询部门信息
|
|
|
List<Office> officeList = dao.getAllOfficeListInfo();
|
|
|
-
|
|
|
+ //公司级开票处理
|
|
|
+ disposeStatementCompanyInvoice(beginDate,endDate,statementDate,bigDateType, smallDateType,officeList);
|
|
|
+ //公司级报销处理
|
|
|
+ disposeStatementCompanyReimbursement(beginDate,endDate,statementDate,bigDateType, smallDateType,officeList);
|
|
|
+ //公司级合同处理
|
|
|
+ disposeStatementCompanyContract(beginDate,endDate,statementDate,bigDateType, smallDateType,officeList);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 公司级项目月报/季报/年报汇总方法
|
|
|
* @param beginDate 开始时间
|
|
|
* @param endDate 结束时间
|
|
|
+ * @param statementDate 报表时间
|
|
|
+ * @param bigDateType 状态1(0:年;1:季度;2:月份)
|
|
|
+ * @param smallDateType 状态2(针对状态1进行精确所在指定季度或者月份)
|
|
|
*/
|
|
|
- private void disposeStatementCompanyProject(String beginDate,String endDate){
|
|
|
-
|
|
|
+ @Transactional(readOnly = false)
|
|
|
+ public void disposeStatementCompanyProject(String beginDate,String endDate,String statementDate,Integer bigDateType,Integer smallDateType){
|
|
|
+ Calendar cal = Calendar.getInstance();
|
|
|
+ //获取当前年份
|
|
|
+ int year = cal.get(Calendar.YEAR);
|
|
|
+ StatementCompanyComprehensiveInfo comprehensiveInfo = new StatementCompanyComprehensiveInfo();
|
|
|
+ comprehensiveInfo.setType("1");
|
|
|
+ comprehensiveInfo.setYear(String.valueOf(year));
|
|
|
+ comprehensiveInfo.setBigDateType(bigDateType.toString());
|
|
|
+ comprehensiveInfo.setSmallDateType(smallDateType.toString());
|
|
|
+ comprehensiveInfo.setStatementDate(statementDate);
|
|
|
//查询部门信息
|
|
|
List<Office> officeList = dao.getOfficeListInfo();
|
|
|
for (Office officeInfo : officeList) {
|
|
|
+ comprehensiveInfo.setOfficeId(officeInfo.getId());
|
|
|
//查询新增A类项目数量
|
|
|
Integer projectCountByA = dao.getInsertProjectCountByGrade(officeInfo.getId(), "2", beginDate, endDate);
|
|
|
+ comprehensiveInfo.setField1(projectCountByA.toString());
|
|
|
//查询新增B类项目数量
|
|
|
Integer projectCountByB = dao.getInsertProjectCountByGrade(officeInfo.getId(), "1", beginDate, endDate);
|
|
|
+ comprehensiveInfo.setField2(projectCountByB.toString());
|
|
|
//查询本月电子归档项目数量
|
|
|
Integer getProjectCountByRecord = dao.getProjectCountByRecord(officeInfo.getId(), beginDate, endDate);
|
|
|
+ comprehensiveInfo.setField3(getProjectCountByRecord.toString());
|
|
|
//查询本月上报项目数量
|
|
|
Integer getProjectCountByReported = dao.getProjectCountByReported(officeInfo.getId(), beginDate, endDate);
|
|
|
- //查询电子归档超期项目数量(保存到数据库)
|
|
|
- //查询上报超期项目数量(保存到数据库)
|
|
|
-
|
|
|
+ comprehensiveInfo.setField4(getProjectCountByReported.toString());
|
|
|
+ //查询电子归档超期未归档项目数量(保存到数据库)
|
|
|
+ List<String> overDueNotRecordProjectIdList = dao.getOverDueNotRecordProject(officeInfo.getId());
|
|
|
+ comprehensiveInfo.setField5(String.valueOf(overDueNotRecordProjectIdList.size()));
|
|
|
+ List<StatementDataInfo> overDueNotRecordProjectList = Lists.newArrayList();
|
|
|
+ for (String projectId : overDueNotRecordProjectIdList) {
|
|
|
+ StatementDataInfo info = new StatementDataInfo();
|
|
|
+ info.setStatementDate(statementDate);
|
|
|
+ info.setGradeType("1");
|
|
|
+ info.setType("1");
|
|
|
+ info.setYear(String.valueOf(year));
|
|
|
+ info.setBigDateType(bigDateType.toString());
|
|
|
+ info.setSmallDateType(smallDateType.toString());
|
|
|
+ info.setOfficeId(officeInfo.getId());
|
|
|
+ info.setField1(projectId);
|
|
|
+ overDueNotRecordProjectList.add(info);
|
|
|
+ }
|
|
|
+ if(overDueNotRecordProjectList.size()>0){
|
|
|
+ dao.insertStatementDataInfo(overDueNotRecordProjectList);
|
|
|
+ }
|
|
|
+ //查询电子归档超期归档项目数量(保存到数据库)
|
|
|
+ List<String> overDueRecordProjectIdList = dao.getOverDueRecordProject(officeInfo.getId(), beginDate, endDate);
|
|
|
+ comprehensiveInfo.setField6(String.valueOf(overDueRecordProjectIdList.size()));
|
|
|
+ List<StatementDataInfo> overDueRecordProjectList = Lists.newArrayList();
|
|
|
+ for (String projectId : overDueRecordProjectIdList) {
|
|
|
+ StatementDataInfo info = new StatementDataInfo();
|
|
|
+ info.setStatementDate(statementDate);
|
|
|
+ info.setGradeType("1");
|
|
|
+ info.setType("1");
|
|
|
+ info.setYear(String.valueOf(year));
|
|
|
+ info.setBigDateType(bigDateType.toString());
|
|
|
+ info.setSmallDateType(smallDateType.toString());
|
|
|
+ info.setOfficeId(officeInfo.getId());
|
|
|
+ info.setField2(projectId);
|
|
|
+ overDueRecordProjectList.add(info);
|
|
|
+ }
|
|
|
+ if(overDueRecordProjectList.size()>0){
|
|
|
+ dao.insertStatementDataInfo(overDueRecordProjectList);
|
|
|
+ }
|
|
|
+ //查询上报超期未上报项目数量(保存到数据库)
|
|
|
+ List<String> overDueNotReportedProjectIdList = dao.getOverDueNotReportedProject(officeInfo.getId());
|
|
|
+ comprehensiveInfo.setField7(String.valueOf(overDueNotReportedProjectIdList.size()));
|
|
|
+ List<StatementDataInfo> overDueNotReportedProjectList = Lists.newArrayList();
|
|
|
+ for (String projectId : overDueNotReportedProjectIdList) {
|
|
|
+ StatementDataInfo info = new StatementDataInfo();
|
|
|
+ info.setStatementDate(statementDate);
|
|
|
+ info.setGradeType("1");
|
|
|
+ info.setType("1");
|
|
|
+ info.setYear(String.valueOf(year));
|
|
|
+ info.setBigDateType(bigDateType.toString());
|
|
|
+ info.setSmallDateType(smallDateType.toString());
|
|
|
+ info.setOfficeId(officeInfo.getId());
|
|
|
+ info.setField3(projectId);
|
|
|
+ overDueNotReportedProjectList.add(info);
|
|
|
+ }
|
|
|
+ if(overDueNotReportedProjectList.size()>0){
|
|
|
+ dao.insertStatementDataInfo(overDueNotReportedProjectList);
|
|
|
+ }
|
|
|
+ //查询上报超期上报项目数量(保存到数据库)
|
|
|
+ List<String> overDueReportedProjectIdList = dao.getOverDueReportedProject(officeInfo.getId(), beginDate, endDate);
|
|
|
+ comprehensiveInfo.setField8(String.valueOf(overDueReportedProjectIdList.size()));
|
|
|
+ List<StatementDataInfo> overDueReportedProjectList = Lists.newArrayList();
|
|
|
+ for (String projectId : overDueReportedProjectIdList) {
|
|
|
+ StatementDataInfo info = new StatementDataInfo();
|
|
|
+ info.setStatementDate(statementDate);
|
|
|
+ info.setGradeType("1");
|
|
|
+ info.setType("1");
|
|
|
+ info.setYear(String.valueOf(year));
|
|
|
+ info.setBigDateType(bigDateType.toString());
|
|
|
+ info.setSmallDateType(smallDateType.toString());
|
|
|
+ info.setOfficeId(officeInfo.getId());
|
|
|
+ info.setField4(projectId);
|
|
|
+ overDueReportedProjectList.add(info);
|
|
|
+ }
|
|
|
+ if(overDueReportedProjectList.size()>0){
|
|
|
+ dao.insertStatementDataInfo(overDueReportedProjectList);
|
|
|
+ }
|
|
|
|
|
|
//数据处理并保存到数据库中
|
|
|
-
|
|
|
+ comprehensiveInfo.preInsert();
|
|
|
+ dao.insert(comprehensiveInfo);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -71,20 +170,41 @@ public class StatementCompanyComprehensiveService extends CrudService<StatementC
|
|
|
* 公司级开票记录月报/季报/年报汇总方法
|
|
|
* @param beginDate 开始时间
|
|
|
* @param endDate 结束时间
|
|
|
+ * @param statementDate 报表时间
|
|
|
+ * @param bigDateType 状态1(0:年;1:季度;2:月份)
|
|
|
+ * @param smallDateType 状态2(针对状态1进行精确所在指定季度或者月份)
|
|
|
+ * @param officeList 部门信息
|
|
|
*/
|
|
|
- private void disposeStatementCompanyInvoice(String beginDate,String endDate,List<Office> officeList){
|
|
|
+ @Transactional(readOnly = false)
|
|
|
+ public void disposeStatementCompanyInvoice(String beginDate,String endDate,String statementDate,Integer bigDateType,Integer smallDateType,List<Office> officeList){
|
|
|
+ Calendar cal = Calendar.getInstance();
|
|
|
+ //获取当前年份
|
|
|
+ int year = cal.get(Calendar.YEAR);
|
|
|
+ StatementCompanyComprehensiveInfo comprehensiveInfo = new StatementCompanyComprehensiveInfo();
|
|
|
+ comprehensiveInfo.setType("2");
|
|
|
+ comprehensiveInfo.setYear(String.valueOf(year));
|
|
|
+ comprehensiveInfo.setBigDateType(bigDateType.toString());
|
|
|
+ comprehensiveInfo.setSmallDateType(smallDateType.toString());
|
|
|
+ comprehensiveInfo.setStatementDate(statementDate);
|
|
|
|
|
|
for (Office officeInfo : officeList) {
|
|
|
+ comprehensiveInfo.setOfficeId(officeInfo.getId());
|
|
|
//查询新增发票信息
|
|
|
- dao.getInsertInvoiceCountByOffice(officeInfo.getId(), beginDate, endDate);
|
|
|
+ Integer field1 = dao.getInsertInvoiceCountByOffice(officeInfo.getId(), beginDate, endDate);
|
|
|
+ comprehensiveInfo.setField1(field1.toString());
|
|
|
//查询开票金额总额
|
|
|
- dao.getInsertInvoiceSumMoneyByOffice(officeInfo.getId(), beginDate, endDate);
|
|
|
+ String field2 = dao.getInsertInvoiceSumMoneyByOffice(officeInfo.getId(), beginDate, endDate);
|
|
|
+ comprehensiveInfo.setField2(field2);
|
|
|
//查询本月收款发票
|
|
|
- dao.getInsertInvoiceDetailsCountByOffice(officeInfo.getId(), beginDate, endDate);
|
|
|
+ Integer field3 = dao.getInsertInvoiceDetailsCountByOffice(officeInfo.getId(), beginDate, endDate);
|
|
|
+ comprehensiveInfo.setField3(field3.toString());
|
|
|
//查询本月收款
|
|
|
- dao.getInsertInvoiceDetailsSumMoneyByOffice(officeInfo.getId(), beginDate, endDate);
|
|
|
+ String field4 = dao.getInsertInvoiceDetailsSumMoneyByOffice(officeInfo.getId(), beginDate, endDate);
|
|
|
+ comprehensiveInfo.setField4(field4);
|
|
|
|
|
|
//数据处理并保存到数据库中
|
|
|
+ comprehensiveInfo.preInsert();
|
|
|
+ dao.insert(comprehensiveInfo);
|
|
|
|
|
|
}
|
|
|
}
|
|
@@ -94,16 +214,29 @@ public class StatementCompanyComprehensiveService extends CrudService<StatementC
|
|
|
* @param beginDate 开始时间
|
|
|
* @param endDate 结束时间
|
|
|
*/
|
|
|
- private void disposeStatementCompanyReimbursement(String beginDate,String endDate,List<Office> officeList){
|
|
|
+ @Transactional(readOnly = false)
|
|
|
+ public void disposeStatementCompanyReimbursement(String beginDate,String endDate,String statementDate,Integer bigDateType,Integer smallDateType,List<Office> officeList){
|
|
|
+ Calendar cal = Calendar.getInstance();
|
|
|
+ //获取当前年份
|
|
|
+ int year = cal.get(Calendar.YEAR);
|
|
|
+ StatementCompanyComprehensiveInfo comprehensiveInfo = new StatementCompanyComprehensiveInfo();
|
|
|
+ comprehensiveInfo.setType("3");
|
|
|
+ comprehensiveInfo.setYear(String.valueOf(year));
|
|
|
+ comprehensiveInfo.setBigDateType(bigDateType.toString());
|
|
|
+ comprehensiveInfo.setSmallDateType(smallDateType.toString());
|
|
|
+ comprehensiveInfo.setStatementDate(statementDate);
|
|
|
|
|
|
for (Office officeInfo : officeList) {
|
|
|
+ comprehensiveInfo.setOfficeId(officeInfo.getId());
|
|
|
//查询新增报销信息
|
|
|
- dao.getInsertReimbursementCountByOffice(officeInfo.getId(), beginDate, endDate);
|
|
|
+ Integer field1 = dao.getInsertReimbursementCountByOffice(officeInfo.getId(), beginDate, endDate);
|
|
|
+ comprehensiveInfo.setField1(field1.toString());
|
|
|
//查询报销金额总额
|
|
|
- dao.getInsertReimbursementSumMoneyByOffice(officeInfo.getId(), beginDate, endDate);
|
|
|
-
|
|
|
+ String field2 = dao.getInsertReimbursementSumMoneyByOffice(officeInfo.getId(), beginDate, endDate);
|
|
|
+ comprehensiveInfo.setField2(field2);
|
|
|
//数据处理并保存到数据库中
|
|
|
-
|
|
|
+ comprehensiveInfo.preInsert();
|
|
|
+ dao.insert(comprehensiveInfo);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -112,17 +245,69 @@ public class StatementCompanyComprehensiveService extends CrudService<StatementC
|
|
|
* @param beginDate 开始时间
|
|
|
* @param endDate 结束时间
|
|
|
*/
|
|
|
- private void disposeStatementCompanyContract(String beginDate,String endDate,List<Office> officeList){
|
|
|
+ @Transactional(readOnly = false)
|
|
|
+ public void disposeStatementCompanyContract(String beginDate,String endDate,String statementDate,Integer bigDateType,Integer smallDateType,List<Office> officeList){
|
|
|
+ Calendar cal = Calendar.getInstance();
|
|
|
+ //获取当前年份
|
|
|
+ int year = cal.get(Calendar.YEAR);
|
|
|
+ StatementCompanyComprehensiveInfo comprehensiveInfo = new StatementCompanyComprehensiveInfo();
|
|
|
+ comprehensiveInfo.setType("4");
|
|
|
+ comprehensiveInfo.setYear(String.valueOf(year));
|
|
|
+ comprehensiveInfo.setBigDateType(bigDateType.toString());
|
|
|
+ comprehensiveInfo.setSmallDateType(smallDateType.toString());
|
|
|
+ comprehensiveInfo.setStatementDate(statementDate);
|
|
|
|
|
|
for (Office officeInfo : officeList) {
|
|
|
+ comprehensiveInfo.setOfficeId(officeInfo.getId());
|
|
|
//查询新增合同信息
|
|
|
- dao.getInsertContractCountByOffice(officeInfo.getId(), beginDate, endDate);
|
|
|
- //查询未电子归档合同信息
|
|
|
- dao.getInsertReimbursementSumMoneyByOffice(officeInfo.getId(), beginDate, endDate);
|
|
|
- //查询未纸质归档合同信息
|
|
|
- dao.getInsertReimbursementSumMoneyByOffice(officeInfo.getId(), beginDate, endDate);
|
|
|
+ Integer field1 = dao.getInsertContractCountByOffice(officeInfo.getId(), beginDate, endDate);
|
|
|
+ comprehensiveInfo.setField1(field1.toString());
|
|
|
+ //查询本月纸质归档合同信息
|
|
|
+ Integer field2 = dao.getInsertContractRecordCountByOffice(officeInfo.getId(), beginDate, endDate);
|
|
|
+ comprehensiveInfo.setField2(field2.toString());
|
|
|
+ //查询超期未归档合同信息
|
|
|
+ List<String> overDueNotContractIdList = dao.getOverDueNotContractRecordCountByOffice(officeInfo.getId());
|
|
|
+ comprehensiveInfo.setField3(String.valueOf(overDueNotContractIdList.size()));
|
|
|
+ List<StatementDataInfo> overDueNotContractList = Lists.newArrayList();
|
|
|
+ for (String contract : overDueNotContractIdList) {
|
|
|
+ StatementDataInfo info = new StatementDataInfo();
|
|
|
+ info.setStatementDate(statementDate);
|
|
|
+ info.setGradeType("1");
|
|
|
+ info.setType("4");
|
|
|
+ info.setYear(String.valueOf(year));
|
|
|
+ info.setBigDateType(bigDateType.toString());
|
|
|
+ info.setSmallDateType(smallDateType.toString());
|
|
|
+ info.setOfficeId(officeInfo.getId());
|
|
|
+ info.setField1(contract);
|
|
|
+ overDueNotContractList.add(info);
|
|
|
+ }
|
|
|
+ if(overDueNotContractList.size()>0){
|
|
|
+ dao.insertStatementDataInfo(overDueNotContractList);
|
|
|
+ }
|
|
|
+
|
|
|
+ //查询超期归档合同信息
|
|
|
+ List<String> overDueContractIdList = dao.getOverDueContractRecordCountByOffice(officeInfo.getId(), beginDate, endDate);
|
|
|
+ comprehensiveInfo.setField4(String.valueOf(overDueContractIdList.size()));
|
|
|
+ List<StatementDataInfo> overDueContractList = Lists.newArrayList();
|
|
|
+ for (String contract : overDueContractIdList) {
|
|
|
+ StatementDataInfo info = new StatementDataInfo();
|
|
|
+ info.setStatementDate(statementDate);
|
|
|
+ info.setGradeType("1");
|
|
|
+ info.setType("4");
|
|
|
+ info.setYear(String.valueOf(year));
|
|
|
+ info.setBigDateType(bigDateType.toString());
|
|
|
+ info.setSmallDateType(smallDateType.toString());
|
|
|
+ info.setOfficeId(officeInfo.getId());
|
|
|
+ info.setField2(contract);
|
|
|
+ overDueContractList.add(info);
|
|
|
+ }
|
|
|
+ if(overDueContractList.size()>0){
|
|
|
+ dao.insertStatementDataInfo(overDueContractList);
|
|
|
+ }
|
|
|
|
|
|
//数据处理并保存到数据库中
|
|
|
+ comprehensiveInfo.preInsert();
|
|
|
+ dao.insert(comprehensiveInfo);
|
|
|
|
|
|
}
|
|
|
}
|
|
@@ -132,8 +317,8 @@ public class StatementCompanyComprehensiveService extends CrudService<StatementC
|
|
|
|
|
|
/**
|
|
|
* 根据状态获取查询得开始和结束时间
|
|
|
- * @param bigDateType
|
|
|
- * @param smallDateType
|
|
|
+ * @param bigDateType 状态1(0:年;1:季度;2:月份)
|
|
|
+ * @param smallDateType 状态2(针对状态1进行精确所在指定季度或者月份)
|
|
|
* @return
|
|
|
*/
|
|
|
private Map<String,String> getDate(Integer bigDateType,Integer smallDateType){
|
|
@@ -143,11 +328,13 @@ public class StatementCompanyComprehensiveService extends CrudService<StatementC
|
|
|
int year = cal.get(Calendar.YEAR);
|
|
|
String beginDate = "";
|
|
|
String endDate = "";
|
|
|
+ String statementDate = "";
|
|
|
switch (bigDateType){
|
|
|
//年度汇总
|
|
|
case 0:
|
|
|
beginDate = year + "-01-01 00:00:00";
|
|
|
endDate = year + "-12-31 23:59:59";
|
|
|
+ statementDate = year + "年";
|
|
|
break;
|
|
|
//季度汇总
|
|
|
case 1:
|
|
@@ -170,6 +357,7 @@ public class StatementCompanyComprehensiveService extends CrudService<StatementC
|
|
|
endDate = year + "-12-31 23:59:59";
|
|
|
break;
|
|
|
}
|
|
|
+ statementDate = year + "年" + smallDateType + "季度";
|
|
|
break;
|
|
|
//月度汇总
|
|
|
case 2:
|
|
@@ -194,11 +382,12 @@ public class StatementCompanyComprehensiveService extends CrudService<StatementC
|
|
|
endDate = year + "-" + smallDateType + "-31 23:59:59";
|
|
|
break;
|
|
|
}
|
|
|
-
|
|
|
+ statementDate = year + "年" + smallDateType + "月";
|
|
|
break;
|
|
|
}
|
|
|
map.put("beginDate",beginDate);
|
|
|
map.put("endDate",endDate);
|
|
|
+ map.put("statementDate",statementDate);
|
|
|
return map;
|
|
|
}
|
|
|
}
|