fourcal/src/main/java/cn/palmte/work/service/ProjectService.java

204 lines
11 KiB
Java
Raw Normal View History

2021-10-29 10:15:36 +00:00
package cn.palmte.work.service;
import cn.palmte.work.bean.ApproveStatusEnum;
import cn.palmte.work.bean.EstimateBean;
import cn.palmte.work.bean.StatusEnum;
import cn.palmte.work.bean.TypeEnum;
2021-11-01 12:07:02 +00:00
import cn.palmte.work.model.*;
2021-10-29 10:15:36 +00:00
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import top.jfunc.common.db.QueryHelper;
import top.jfunc.common.db.bean.Page;
import top.jfunc.common.db.utils.Pagination;
import top.jfunc.common.utils.StrUtil;
import java.util.Date;
2021-10-29 10:15:36 +00:00
import java.util.Map;
/**
* @author xiongshiyan at 2021/10/29 , contact me with email yanshixiong@126.com or phone 15208384257
*/
@Service
public class ProjectService {
@Autowired
private Pagination pagination;
@Autowired
private ProjectRepository projectRepository;
2021-11-01 12:07:02 +00:00
@Autowired
private ProjectEstimateIncomeRepository projectEstimateIncomeRepository;
@Autowired
private ProjectEstimateCostRepository projectEstimateCostRepository;
@Autowired
private ProjectEstimateCostManageRepository projectEstimateCostManageRepository;
2021-10-29 10:15:36 +00:00
private QueryHelper getQueryHelper(Map<String, String> searchInfo, int pageNumber, int pageSize) {
/*"CASE p.type WHEN 1 THEN '工程集成类' WHEN 2 THEN '设备集成类' WHEN 3 THEN '战略合作类' ELSE '未知' AS typeDesc," +
"CASE p.status WHEN 0 THEN '草稿' WHEN 1 THEN '项目创建' WHEN 5 THEN '概算完成' WHEN 10 THEN '预算完成' WHEN 15 THEN '结算中' WHEN 20 THEN '决算完成' ELSE '未知' AS statusDesc," +
"CASE p.approve_status WHEN 0 THEN '待审核' WHEN 1 THEN '审核通过' WHEN 2 THEN '审核不通过' ELSE '未知' AS approveStatusDesc," +
*/
QueryHelper queryHelper = new QueryHelper("SELECT p.*","project","p");
2021-11-01 03:22:37 +00:00
if(StrUtil.isNotEmpty(searchInfo.get("status")) && !"-1".equals(searchInfo.get("status"))){
queryHelper.addCondition("p.status=?", Integer.parseInt(searchInfo.get("status")));
2021-10-29 10:15:36 +00:00
}
2021-11-01 03:22:37 +00:00
if(StrUtil.isNotEmpty(searchInfo.get("approveStatus")) && !"-1".equals(searchInfo.get("approveStatus"))){
queryHelper.addCondition("p.approve_status=?", Integer.parseInt(searchInfo.get("approveStatus")));
2021-10-29 10:15:36 +00:00
}
2021-11-01 03:22:37 +00:00
if(StrUtil.isNotEmpty(searchInfo.get("deptId")) && !"-1".equals(searchInfo.get("deptId"))){
queryHelper.addCondition("p.dept_id=?", Integer.parseInt(searchInfo.get("deptId")));
2021-10-29 10:15:36 +00:00
}
2021-11-01 03:22:37 +00:00
if(StrUtil.isNotEmpty(searchInfo.get("type")) && !"-1".equals(searchInfo.get("type"))){
queryHelper.addCondition("p.type=?", Integer.parseInt(searchInfo.get("type")));
2021-10-29 10:15:36 +00:00
}
queryHelper.addCondition(StrUtil.isNotEmpty(searchInfo.get("name")),"p.name LIKE ?", "%"+searchInfo.get("name")+"%");
queryHelper.addCondition(StrUtil.isNotEmpty(searchInfo.get("creatorName")),"p.creator_name LIKE ?", "%"+searchInfo.get("creatorName")+"%");
/**
*
*/
if(StrUtil.isNotEmpty(searchInfo.get("startDate")) && StrUtil.isEmpty(searchInfo.get("endDate"))){
String time = searchInfo.get("startDate") + " 00:00:00";
2021-11-01 03:22:37 +00:00
queryHelper.addCondition("p.start_date<=? AND p.end_date>=?", time, time);
2021-10-29 10:15:36 +00:00
}
if(StrUtil.isNotEmpty(searchInfo.get("endDate")) && StrUtil.isEmpty(searchInfo.get("startDate"))){
String time = searchInfo.get("endDate") + " 00:00:00";
2021-11-01 03:22:37 +00:00
queryHelper.addCondition("p.start_date<=? AND p.end_date>=?", time, time);
2021-10-29 10:15:36 +00:00
}
/**
*
*/
if(StrUtil.isNotEmpty(searchInfo.get("startDate")) && StrUtil.isNotEmpty(searchInfo.get("endDate"))){
String startTime = searchInfo.get("startDate") + " 00:00:00";
String endTime = searchInfo.get("endDate") + " 23:59:59";
2021-11-01 03:22:37 +00:00
queryHelper.addCondition("p.start_date>=? AND p.end_date<=?", startTime, endTime);
2021-10-29 10:15:36 +00:00
}
return queryHelper;
}
public Page<Project> list(Map<String, String> searchInfo, int pageNumber, int pageSize){
QueryHelper queryHelper = getQueryHelper(searchInfo, pageNumber, pageSize);
return pagination.paginate(queryHelper.getSql(), Project.class,pageNumber,pageSize);
}
/**
*
*/
public Project estimateSave(Project project, EstimateBean estimateBean, Admin admin) {
project.setTypeDesc(TypeEnum.parseType(project.getType()).getTypeDesc());
project.setStatusDesc(StatusEnum.parseStatus(project.getStatus()).getStatusDesc());
project.setApproveStatus(ApproveStatusEnum.APPROVAL_PENDING.getApproveStatus());
project.setApproveStatusDesc(ApproveStatusEnum.APPROVAL_PENDING.getApproveStatusDesc());
project.setCreatorId(admin.getId());
project.setCreatorName(admin.getUserName());
//TODO 审核人通过计算得到
project.setApproveId(0);
project.setApproveName("");
//TODO 获取登录人的部门信息
project.setDeptId(admin.getId());
project.setDeptName("");
project.setCreateTime(new Date());
project = projectRepository.saveAndFlush(project);
2021-11-01 12:07:02 +00:00
//收入记录
income(project, estimateBean);
//成本记录
cost(project, estimateBean);
//管理记录
costManage(project, estimateBean);
return project;
}
2021-11-01 12:07:02 +00:00
private void cost(Project project, EstimateBean estimateBean) {
ProjectEstimateCost projectEstimateCostDevice = new ProjectEstimateCost();
projectEstimateCostDevice.setProjectId(project.getId());
projectEstimateCostDevice.setFee(1);
projectEstimateCostDevice.setType(1);
projectEstimateCostDevice.setCostTaxInclude(estimateBean.getCostPurchaseDeviceTaxInclude());
projectEstimateCostDevice.setCostTaxExclude(estimateBean.getCostPurchaseDeviceTaxExclude());
projectEstimateCostRepository.saveAndFlush(projectEstimateCostDevice);
ProjectEstimateCost projectEstimateCostBuild = new ProjectEstimateCost();
projectEstimateCostBuild.setProjectId(project.getId());
projectEstimateCostBuild.setFee(1);
projectEstimateCostBuild.setType(2);
projectEstimateCostBuild.setCostTaxInclude(estimateBean.getCostPurchaseBuildTaxInclude());
projectEstimateCostBuild.setCostTaxExclude(estimateBean.getCostPurchaseBuildTaxExclude());
projectEstimateCostRepository.saveAndFlush(projectEstimateCostBuild);
ProjectEstimateCost projectEstimateCostService = new ProjectEstimateCost();
projectEstimateCostService.setProjectId(project.getId());
projectEstimateCostService.setFee(1);
projectEstimateCostService.setType(3);
projectEstimateCostService.setCostTaxInclude(estimateBean.getCostPurchaseServiceTaxInclude());
projectEstimateCostService.setCostTaxExclude(estimateBean.getCostPurchaseServiceTaxExclude());
projectEstimateCostRepository.saveAndFlush(projectEstimateCostService);
ProjectEstimateCost projectEstimateCostOther = new ProjectEstimateCost();
projectEstimateCostOther.setProjectId(project.getId());
projectEstimateCostOther.setFee(1);
projectEstimateCostOther.setType(4);
projectEstimateCostOther.setCostTaxInclude(estimateBean.getCostPurchaseOtherTaxInclude());
projectEstimateCostOther.setCostTaxExclude(estimateBean.getCostPurchaseOtherTaxExclude());
projectEstimateCostRepository.saveAndFlush(projectEstimateCostOther);
ProjectEstimateCost projectEstimateCostProject = new ProjectEstimateCost();
projectEstimateCostProject.setProjectId(project.getId());
projectEstimateCostProject.setFee(2);
projectEstimateCostProject.setType(5);
projectEstimateCostProject.setCostTaxInclude(estimateBean.getCostProjectManageTaxInclude());
projectEstimateCostProject.setCostTaxExclude(estimateBean.getCostProjectManageTaxExclude());
projectEstimateCostRepository.saveAndFlush(projectEstimateCostProject);
ProjectEstimateCost projectEstimateCostOtherOther = new ProjectEstimateCost();
projectEstimateCostOtherOther.setProjectId(project.getId());
projectEstimateCostOtherOther.setFee(3);
projectEstimateCostOtherOther.setType(6);
projectEstimateCostOtherOther.setCostTaxInclude(estimateBean.getCostOtherOtherTaxInclude());
projectEstimateCostOtherOther.setCostTaxExclude(estimateBean.getCostOtherOtherTaxExclude());
projectEstimateCostRepository.saveAndFlush(projectEstimateCostOtherOther);
}
private void costManage(Project project, EstimateBean estimateBean) {
ProjectEstimateCostManage projectEstimateCostZijin = new ProjectEstimateCostManage();
projectEstimateCostZijin.setProjectId(project.getId());
projectEstimateCostZijin.setType(1);
projectEstimateCostZijin.setIncomeTaxExclude(estimateBean.getCostCompanyManageTaxExclude());
projectEstimateCostManageRepository.saveAndFlush(projectEstimateCostZijin);
ProjectEstimateCostManage projectEstimateCostManage = new ProjectEstimateCostManage();
projectEstimateCostManage.setProjectId(project.getId());
projectEstimateCostManage.setType(2);
projectEstimateCostManage.setIncomeTaxExclude(estimateBean.getCostCompanyManageTaxExclude());
projectEstimateCostManageRepository.saveAndFlush(projectEstimateCostManage);
}
private void income(Project project, EstimateBean estimateBean) {
ProjectEstimateIncome projectEstimateIncomeDevice = new ProjectEstimateIncome();
projectEstimateIncomeDevice.setProjectId(project.getId());
projectEstimateIncomeDevice.setType(1);
projectEstimateIncomeDevice.setIncomeTaxInclude(estimateBean.getIncomeDeviceTaxInclude());
projectEstimateIncomeDevice.setIncomeTaxExclude(estimateBean.getIncomeDeviceTaxExclude());
projectEstimateIncomeRepository.saveAndFlush(projectEstimateIncomeDevice);
ProjectEstimateIncome projectEstimateIncomeEngineer = new ProjectEstimateIncome();
projectEstimateIncomeEngineer.setProjectId(project.getId());
projectEstimateIncomeEngineer.setType(2);
projectEstimateIncomeEngineer.setIncomeTaxInclude(estimateBean.getIncomeEngineerTaxInclude());
projectEstimateIncomeEngineer.setIncomeTaxExclude(estimateBean.getIncomeEngineerTaxExclude());
projectEstimateIncomeRepository.saveAndFlush(projectEstimateIncomeEngineer);
ProjectEstimateIncome projectEstimateIncomeService = new ProjectEstimateIncome();
projectEstimateIncomeService.setProjectId(project.getId());
projectEstimateIncomeService.setType(3);
projectEstimateIncomeService.setIncomeTaxInclude(estimateBean.getIncomeServiceTaxInclude());
projectEstimateIncomeService.setIncomeTaxExclude(estimateBean.getIncomeServiceTaxExclude());
projectEstimateIncomeRepository.saveAndFlush(projectEstimateIncomeService);
}
2021-10-29 10:15:36 +00:00
}