|
@@ -20,9 +20,11 @@ import com.jeeplus.modules.sg.financial.erpcredit.util.ErpInfo;
|
|
import com.jeeplus.modules.sg.financial.erpcredit.util.ImportUtil;
|
|
import com.jeeplus.modules.sg.financial.erpcredit.util.ImportUtil;
|
|
import com.jeeplus.modules.sg.financial.erpcredit.util.Result;
|
|
import com.jeeplus.modules.sg.financial.erpcredit.util.Result;
|
|
import com.jeeplus.modules.sg.financial.erpcredit.util.ValidationUtils;
|
|
import com.jeeplus.modules.sg.financial.erpcredit.util.ValidationUtils;
|
|
|
|
+import com.jeeplus.modules.sg.financial.settlement.entity.Corresponding;
|
|
import com.jeeplus.modules.sg.financial.settlement.entity.CostCheck;
|
|
import com.jeeplus.modules.sg.financial.settlement.entity.CostCheck;
|
|
import com.jeeplus.modules.sg.financial.settlement.entity.DonorMaterial;
|
|
import com.jeeplus.modules.sg.financial.settlement.entity.DonorMaterial;
|
|
import com.jeeplus.modules.sg.financial.settlement.entity.ProjectBudget;
|
|
import com.jeeplus.modules.sg.financial.settlement.entity.ProjectBudget;
|
|
|
|
+import com.jeeplus.modules.sg.financial.settlement.service.CorrespondingService;
|
|
import com.jeeplus.modules.sg.financial.settlement.service.CostCheckService;
|
|
import com.jeeplus.modules.sg.financial.settlement.service.CostCheckService;
|
|
import com.jeeplus.modules.sg.financial.settlement.service.DonorMaterialService;
|
|
import com.jeeplus.modules.sg.financial.settlement.service.DonorMaterialService;
|
|
import com.jeeplus.modules.sg.financial.settlement.service.ProjectBudgetService;
|
|
import com.jeeplus.modules.sg.financial.settlement.service.ProjectBudgetService;
|
|
@@ -84,6 +86,9 @@ public class ProjectBudgetController extends BaseController {
|
|
@Autowired
|
|
@Autowired
|
|
private DonorMaterialService donorMaterialService;
|
|
private DonorMaterialService donorMaterialService;
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
+ private CorrespondingService correspondingService;
|
|
|
|
+
|
|
@ModelAttribute
|
|
@ModelAttribute
|
|
public ProjectBudget get(@RequestParam(required = false) String id) {
|
|
public ProjectBudget get(@RequestParam(required = false) String id) {
|
|
ProjectBudget entity = null;
|
|
ProjectBudget entity = null;
|
|
@@ -203,26 +208,36 @@ public class ProjectBudgetController extends BaseController {
|
|
double supervisorCost = getStaticDouble(projectBudget.getSupervisorCost());
|
|
double supervisorCost = getStaticDouble(projectBudget.getSupervisorCost());
|
|
double designContractDiscount = getStaticDouble(projectBudget.getDesignContractDiscount());
|
|
double designContractDiscount = getStaticDouble(projectBudget.getDesignContractDiscount());
|
|
double designTypicalDiscount = getStaticDouble(projectBudget.getDesignTypicalDiscount());
|
|
double designTypicalDiscount = getStaticDouble(projectBudget.getDesignTypicalDiscount());
|
|
|
|
+ double designTaxRate = getStaticDouble(projectBudget.getDesignTaxRate());
|
|
double supervisorContractDiscount = getStaticDouble(projectBudget.getSupervisorContractDiscount());
|
|
double supervisorContractDiscount = getStaticDouble(projectBudget.getSupervisorContractDiscount());
|
|
|
|
+ double supervisorTaxRate = getStaticDouble(projectBudget.getSupervisorTaxRate());
|
|
//使用bigDecimal初始化数值,计算防止精度丢失问题
|
|
//使用bigDecimal初始化数值,计算防止精度丢失问题
|
|
//设计费
|
|
//设计费
|
|
- BigDecimal designCostDecimal = new BigDecimal(designCost);
|
|
|
|
|
|
+ BigDecimal designCostDecimal = BigDecimal.valueOf(designCost);
|
|
//监理费
|
|
//监理费
|
|
- BigDecimal supervisorCostDecimal = new BigDecimal(supervisorCost);
|
|
|
|
|
|
+ BigDecimal supervisorCostDecimal = BigDecimal.valueOf(supervisorCost);
|
|
//设计合同折扣
|
|
//设计合同折扣
|
|
- BigDecimal desConDecimal = new BigDecimal(designContractDiscount);
|
|
|
|
|
|
+ BigDecimal desConDecimal = BigDecimal.valueOf(designContractDiscount);
|
|
//设计典设折扣
|
|
//设计典设折扣
|
|
- BigDecimal desTypeDecimal = new BigDecimal(designTypicalDiscount);
|
|
|
|
|
|
+ BigDecimal desTypeDecimal = BigDecimal.valueOf(designTypicalDiscount);
|
|
|
|
+ //设计含税税率
|
|
|
|
+ BigDecimal desTaxRateDecimal = BigDecimal.valueOf(designTaxRate);
|
|
//监理费合同折扣
|
|
//监理费合同折扣
|
|
- BigDecimal supervisorDecimal = new BigDecimal(supervisorContractDiscount);
|
|
|
|
- //计算项目设计费应付金额(设计费*设计合同折扣*设计典设折扣)两位小数
|
|
|
|
|
|
+ BigDecimal supervisorDecimal = BigDecimal.valueOf(supervisorContractDiscount);
|
|
|
|
+ //监理费含税税率
|
|
|
|
+ BigDecimal supTaxRateDecimal = BigDecimal.valueOf(supervisorTaxRate);
|
|
|
|
+
|
|
|
|
+ //计算项目设计费应付金额(设计费*设计合同折扣*设计典设折扣/设计含税税率)两位小数
|
|
BigDecimal firResult = designCostDecimal.multiply(desConDecimal).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
BigDecimal firResult = designCostDecimal.multiply(desConDecimal).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
BigDecimal secResult = firResult.multiply(desTypeDecimal).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
BigDecimal secResult = firResult.multiply(desTypeDecimal).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
- projectBudget.setDesignFeePayable(secResult.toString());
|
|
|
|
- //计算项目监理费应付金额(监理费*监理费合同折扣)两位小数
|
|
|
|
- BigDecimal thirdResult = supervisorCostDecimal.multiply(supervisorDecimal).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
- projectBudget.setSupervisionFeePayable(thirdResult.toString());
|
|
|
|
|
|
+ BigDecimal thirdResult = secResult.divide(desTaxRateDecimal,4,BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ projectBudget.setDesignFeePayable(thirdResult.toString());
|
|
|
|
+ //计算项目监理费应付金额(监理费*监理费合同折扣/监理含税税率)两位小数
|
|
|
|
+ BigDecimal fourResult = supervisorCostDecimal.multiply(supervisorDecimal).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ BigDecimal fivResult = fourResult.divide(supTaxRateDecimal,4,BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ projectBudget.setSupervisionFeePayable(fivResult.toString());
|
|
//新增或编辑表单保存
|
|
//新增或编辑表单保存
|
|
|
|
+ projectBudget.preUpdate();
|
|
projectBudgetService.update(projectBudget);
|
|
projectBudgetService.update(projectBudget);
|
|
costCheckService.updateDesignSup(projectBudget);
|
|
costCheckService.updateDesignSup(projectBudget);
|
|
j.setSuccess(true);
|
|
j.setSuccess(true);
|
|
@@ -388,48 +403,52 @@ public class ProjectBudgetController extends BaseController {
|
|
private List<ProjectBudget> getData(ImportExcel importExcel) throws ParseException {
|
|
private List<ProjectBudget> getData(ImportExcel importExcel) throws ParseException {
|
|
int lastRow = importExcel.getLastDataRowNum();
|
|
int lastRow = importExcel.getLastDataRowNum();
|
|
List<ProjectBudget> list = new ArrayList<>();
|
|
List<ProjectBudget> list = new ArrayList<>();
|
|
- ProjectBudget ProjectBudget;
|
|
|
|
|
|
+ ProjectBudget projectBudget;
|
|
String projectType;
|
|
String projectType;
|
|
for (int i = 3; i < lastRow; i++) {
|
|
for (int i = 3; i < lastRow; i++) {
|
|
- ProjectBudget = new ProjectBudget();
|
|
|
|
|
|
+ projectBudget = new ProjectBudget();
|
|
Row row = importExcel.getRow(i);
|
|
Row row = importExcel.getRow(i);
|
|
String projectName = (String) importExcel.getCellValue(row, 0);
|
|
String projectName = (String) importExcel.getCellValue(row, 0);
|
|
String projectId = (String) importExcel.getCellValue(row, 1);
|
|
String projectId = (String) importExcel.getCellValue(row, 1);
|
|
if (StringUtils.isNotBlank(projectName) && StringUtils.isNotBlank(projectId)) {
|
|
if (StringUtils.isNotBlank(projectName) && StringUtils.isNotBlank(projectId)) {
|
|
- ProjectBudget.setProjectName(projectName);
|
|
|
|
- ProjectBudget.setProjectId(projectId);
|
|
|
|
- ProjectBudget.setDesignUnit(getString(importExcel, row, 2));
|
|
|
|
- ProjectBudget.setConstructionUnit(getString(importExcel, row, 3));
|
|
|
|
- ProjectBudget.setBuildingAddress(getString(importExcel, row, 4));
|
|
|
|
- ProjectBudget.setBuildingProperty(getString(importExcel, row, 5));
|
|
|
|
- ProjectBudget.setTotalInvestment(getString(importExcel, row, 6));
|
|
|
|
- ProjectBudget.setStartTime(getDate(importExcel, row, 7));
|
|
|
|
- ProjectBudget.setStopTime(getDate(importExcel, row, 8));
|
|
|
|
- ProjectBudget.setApprovalNumber(getString(importExcel, row, 9));
|
|
|
|
- ProjectBudget.setConstructionCost(getDouble(importExcel, row, 10));
|
|
|
|
- ProjectBudget.setInstallationCost(getDouble(importExcel, row, 11));
|
|
|
|
- ProjectBudget.setEquipmentCost(getDouble(importExcel, row, 12));
|
|
|
|
- ProjectBudget.setMaterialCost(getDouble(importExcel, row, 13));
|
|
|
|
|
|
+ projectBudget.setProjectName(projectName);
|
|
|
|
+ projectBudget.setProjectId(projectId);
|
|
|
|
+ projectBudget.setDesignUnit(getString(importExcel, row, 2));
|
|
|
|
+ projectBudget.setConstructionUnit(getString(importExcel, row, 3));
|
|
|
|
+ projectBudget.setBuildingAddress(getString(importExcel, row, 4));
|
|
|
|
+ projectBudget.setBuildingProperty(getString(importExcel, row, 5));
|
|
|
|
+ projectBudget.setTotalInvestment(getString(importExcel, row, 6));
|
|
|
|
+ projectBudget.setStartTime(getDate(importExcel, row, 7));
|
|
|
|
+ projectBudget.setStopTime(getDate(importExcel, row, 8));
|
|
|
|
+ projectBudget.setApprovalNumber(getString(importExcel, row, 9));
|
|
|
|
+ projectBudget.setConstructionCost(getDouble(importExcel, row, 10));
|
|
|
|
+ projectBudget.setInstallationCost(getDouble(importExcel, row, 11));
|
|
|
|
+ projectBudget.setEquipmentCost(getDouble(importExcel, row, 12));
|
|
|
|
+ projectBudget.setMaterialCost(getDouble(importExcel, row, 13));
|
|
double designCost = getDouble(importExcel, row, 14);
|
|
double designCost = getDouble(importExcel, row, 14);
|
|
- ProjectBudget.setDesignCost(designCost);
|
|
|
|
|
|
+ projectBudget.setDesignCost(designCost);
|
|
double supervisorCost = getDouble(importExcel, row, 15);
|
|
double supervisorCost = getDouble(importExcel, row, 15);
|
|
- ProjectBudget.setSupervisorCost(supervisorCost);
|
|
|
|
- ProjectBudget.setPreliminaryWorkCost(getDouble(importExcel, row, 16));
|
|
|
|
- ProjectBudget.setCompensationCost(getDouble(importExcel, row, 17));
|
|
|
|
- ProjectBudget.setAdministrationCost(getDouble(importExcel, row, 18));
|
|
|
|
|
|
+ projectBudget.setSupervisorCost(supervisorCost);
|
|
|
|
+ projectBudget.setPreliminaryWorkCost(getDouble(importExcel, row, 16));
|
|
|
|
+ projectBudget.setCompensationCost(getDouble(importExcel, row, 17));
|
|
|
|
+ projectBudget.setAdministrationCost(getDouble(importExcel, row, 18));
|
|
double designContractDiscount = getDisCount(importExcel, row, 19);
|
|
double designContractDiscount = getDisCount(importExcel, row, 19);
|
|
double designTypicalDiscount = getDisCount(importExcel, row, 20);
|
|
double designTypicalDiscount = getDisCount(importExcel, row, 20);
|
|
- double supervisorContractDiscount = getDisCount(importExcel, row, 21);
|
|
|
|
- ProjectBudget.setDesignContractDiscount(designContractDiscount);
|
|
|
|
- ProjectBudget.setDesignTypicalDiscount(designTypicalDiscount);
|
|
|
|
- ProjectBudget.setSupervisorContractDiscount(supervisorContractDiscount);
|
|
|
|
|
|
+ double designTaxRate = getDisCount(importExcel, row, 21);
|
|
|
|
+ double supervisorContractDiscount = getDisCount(importExcel, row, 22);
|
|
|
|
+ double supervisorTaxRate = getDisCount(importExcel, row, 23);
|
|
|
|
+ projectBudget.setDesignContractDiscount(designContractDiscount);
|
|
|
|
+ projectBudget.setDesignTaxRate(designTaxRate);
|
|
|
|
+ projectBudget.setDesignTypicalDiscount(designTypicalDiscount);
|
|
|
|
+ projectBudget.setSupervisorContractDiscount(supervisorContractDiscount);
|
|
|
|
+ projectBudget.setSupervisorTaxRate(supervisorTaxRate);
|
|
//判断项目是否以b开头,以字母“B”开头,则该项目为成本项目,project_type为0;否则为资本项目,project_type为1
|
|
//判断项目是否以b开头,以字母“B”开头,则该项目为成本项目,project_type为0;否则为资本项目,project_type为1
|
|
if (projectId.startsWith("B")) {
|
|
if (projectId.startsWith("B")) {
|
|
projectType = "0";
|
|
projectType = "0";
|
|
} else {
|
|
} else {
|
|
projectType = "1";
|
|
projectType = "1";
|
|
}
|
|
}
|
|
- ProjectBudget.setProjectType(projectType);
|
|
|
|
|
|
+ projectBudget.setProjectType(projectType);
|
|
//使用bigDecimal初始化数值,计算防止精度丢失问题
|
|
//使用bigDecimal初始化数值,计算防止精度丢失问题
|
|
//设计费
|
|
//设计费
|
|
BigDecimal bigDecimal = new BigDecimal(designCost);
|
|
BigDecimal bigDecimal = new BigDecimal(designCost);
|
|
@@ -443,18 +462,29 @@ public class ProjectBudgetController extends BaseController {
|
|
//设计典设折扣
|
|
//设计典设折扣
|
|
BigDecimal bigDecimal3 = new BigDecimal(designTypicalDiscount);
|
|
BigDecimal bigDecimal3 = new BigDecimal(designTypicalDiscount);
|
|
BigDecimal desTypeDecimal = bigDecimal3.setScale(4, BigDecimal.ROUND_HALF_UP);
|
|
BigDecimal desTypeDecimal = bigDecimal3.setScale(4, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ //设计含税税率
|
|
|
|
+ BigDecimal bigDecimal5 = new BigDecimal(designTaxRate);
|
|
|
|
+ BigDecimal desTaxRateDecimal = bigDecimal5.setScale(4, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+
|
|
//监理费合同折扣
|
|
//监理费合同折扣
|
|
BigDecimal bigDecimal4 = new BigDecimal(supervisorContractDiscount);
|
|
BigDecimal bigDecimal4 = new BigDecimal(supervisorContractDiscount);
|
|
BigDecimal supervisorDecimal = bigDecimal4.setScale(4, BigDecimal.ROUND_HALF_UP);
|
|
BigDecimal supervisorDecimal = bigDecimal4.setScale(4, BigDecimal.ROUND_HALF_UP);
|
|
- //计算项目设计费应付金额(设计费*设计合同折扣*设计典设折扣*1.06)两位小数
|
|
|
|
|
|
+ //监理含税税率
|
|
|
|
+ BigDecimal bigDecimal6 = new BigDecimal(supervisorTaxRate);
|
|
|
|
+ BigDecimal supTaxRateDecimal = bigDecimal6.setScale(4, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ //计算项目设计费应付金额(设计费*设计合同折扣*设计典设折扣/设计含税税率)两位小数
|
|
BigDecimal firResult = designCostDecimal.multiply(desConDecimal).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
BigDecimal firResult = designCostDecimal.multiply(desConDecimal).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
BigDecimal secResult = firResult.multiply(desTypeDecimal).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
BigDecimal secResult = firResult.multiply(desTypeDecimal).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
- ProjectBudget.setDesignFeePayable(secResult.toString());
|
|
|
|
- //计算项目监理费应付金额(监理费*监理费合同折扣*1.06)两位小数
|
|
|
|
- BigDecimal thirdResult = supervisorCostDecimal.multiply(supervisorDecimal).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
- ProjectBudget.setSupervisionFeePayable(thirdResult.toString());
|
|
|
|
-
|
|
|
|
- list.add(ProjectBudget);
|
|
|
|
|
|
+ BigDecimal thirdResult = secResult.divide(desTaxRateDecimal,4,BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ projectBudget.setDesignFeePayable(thirdResult.toString());
|
|
|
|
+ //计算项目监理费应付金额(监理费*监理费合同折扣/监理含税税率)两位小数
|
|
|
|
+ BigDecimal fourResult = supervisorCostDecimal.multiply(supervisorDecimal).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ BigDecimal fivResult = fourResult.divide(supTaxRateDecimal,4,BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ projectBudget.setSupervisionFeePayable(fivResult.toString());
|
|
|
|
+
|
|
|
|
+ list.add(projectBudget);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return list;
|
|
return list;
|
|
@@ -558,6 +588,7 @@ public class ProjectBudgetController extends BaseController {
|
|
j.setMsg("导入失败!失败信息:" + "表不符合规范");
|
|
j.setMsg("导入失败!失败信息:" + "表不符合规范");
|
|
return j;
|
|
return j;
|
|
}
|
|
}
|
|
|
|
+
|
|
//获取明细账数据 一个ErpAccount对象表示一行有效数据
|
|
//获取明细账数据 一个ErpAccount对象表示一行有效数据
|
|
List<ErpAccount> erpAccounts = ErpInfo.getErpAccount(importUtil);
|
|
List<ErpAccount> erpAccounts = ErpInfo.getErpAccount(importUtil);
|
|
//获取资本项目list循环
|
|
//获取资本项目list循环
|
|
@@ -746,6 +777,7 @@ public class ProjectBudgetController extends BaseController {
|
|
}
|
|
}
|
|
j.setMsg(returnMsg.toString());
|
|
j.setMsg(returnMsg.toString());
|
|
}
|
|
}
|
|
|
|
+
|
|
j.setSuccess(true);
|
|
j.setSuccess(true);
|
|
return j;
|
|
return j;
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|