2021-11-02 06:43:42 +00:00
package cn.palmte.work.service ;
2022-11-10 16:16:35 +00:00
import cn.palmte.work.bean.* ;
2022-12-23 09:44:31 +00:00
import cn.palmte.work.config.activiti.ActProcessKeyEnum ;
2021-11-02 06:43:42 +00:00
import cn.palmte.work.model.* ;
import org.springframework.beans.factory.annotation.Autowired ;
import org.springframework.stereotype.Service ;
2021-11-18 08:01:09 +00:00
import org.springframework.transaction.annotation.Transactional ;
2021-12-30 08:56:22 +00:00
import top.jfunc.common.db.utils.Pagination ;
2021-11-02 06:43:42 +00:00
import top.jfunc.common.utils.CollectionUtil ;
2022-05-12 06:55:58 +00:00
import java.math.BigDecimal ;
2021-12-30 08:56:22 +00:00
import java.util.ArrayList ;
2021-11-02 06:43:42 +00:00
import java.util.List ;
import java.util.stream.Collectors ;
/ * *
* 项 目 概 算 service
* @author xiongshiyan at 2021 / 10 / 29 , contact me with email yanshixiong @ 126. com or phone 15208384257
* /
@Service
public class ProjectEstimateService {
@Autowired
private ProjectEstimateIncomeRepository projectEstimateIncomeRepository ;
@Autowired
private ProjectEstimateCostRepository projectEstimateCostRepository ;
@Autowired
private ProjectEstimateCostManageRepository projectEstimateCostManageRepository ;
2021-11-18 08:01:09 +00:00
@Autowired
private ProjectInstanceService projectInstanceService ;
@Autowired
private ActTaskDefService actTaskDefService ;
@Autowired
private ProjectService projectService ;
@Autowired
private ProjectRepository projectRepository ;
@Autowired
private SysConfigService sysConfigService ;
2021-12-30 08:56:22 +00:00
@Autowired
private Pagination pagination ;
@Autowired
private ProjectVisibleRepository projectVisibleRepository ;
2022-11-10 16:16:35 +00:00
@Autowired
private ProjectExtendRepository projectExtendRepository ;
2022-12-12 08:33:51 +00:00
@Autowired
private ProjectBudgetRepository projectBudgetRepository ;
2021-11-02 06:43:42 +00:00
public void clearEstimate ( Project project ) {
List < ProjectEstimateIncome > incomes = projectEstimateIncomeRepository . findAllByProjectIdEquals ( project . getId ( ) ) ;
if ( CollectionUtil . isNotEmpty ( incomes ) ) {
projectEstimateIncomeRepository . deleteInBatch ( incomes ) ;
}
List < ProjectEstimateCost > costs = projectEstimateCostRepository . findAllByProjectIdEquals ( project . getId ( ) ) ;
if ( CollectionUtil . isNotEmpty ( costs ) ) {
projectEstimateCostRepository . deleteInBatch ( costs ) ;
}
List < ProjectEstimateCostManage > costManages = projectEstimateCostManageRepository . findAllByProjectIdEquals ( project . getId ( ) ) ;
if ( CollectionUtil . isNotEmpty ( costManages ) ) {
projectEstimateCostManageRepository . deleteInBatch ( costManages ) ;
}
}
public void saveEstimate ( Project project , EstimateBean estimateBean ) {
//收入记录
income ( project , estimateBean ) ;
//成本记录
cost ( project , estimateBean ) ;
//管理记录
costManage ( project , estimateBean ) ;
}
2021-11-25 03:34:38 +00:00
public void deleteEstimate ( int projectId ) {
//删除收入记录
projectEstimateIncomeRepository . deleteByProjectId ( projectId ) ;
//删除成本记录
projectEstimateCostRepository . deleteByProjectId ( projectId ) ;
//删除管理记录
projectEstimateCostManageRepository . deleteByProjectId ( projectId ) ;
}
2021-11-02 06:43:42 +00:00
private void cost ( Project project , EstimateBean estimateBean ) {
ProjectEstimateCost projectEstimateCostDevice = new ProjectEstimateCost ( ) ;
projectEstimateCostDevice . setProjectId ( project . getId ( ) ) ;
projectEstimateCostDevice . setFee ( ProjectEstimateCost . FEE_PURCHASE ) ;
projectEstimateCostDevice . setType ( ProjectEstimateCost . TYPE_DEVICE ) ;
projectEstimateCostDevice . setCostTaxInclude ( estimateBean . getCostPurchaseDeviceTaxInclude ( ) ) ;
projectEstimateCostDevice . setCostTaxExclude ( estimateBean . getCostPurchaseDeviceTaxExclude ( ) ) ;
2021-12-30 08:54:16 +00:00
projectEstimateCostDevice . setTaxRate ( estimateBean . getCostPurchaseDeviceSelect ( ) ) ;
2021-11-02 06:43:42 +00:00
projectEstimateCostRepository . saveAndFlush ( projectEstimateCostDevice ) ;
ProjectEstimateCost projectEstimateCostBuild = new ProjectEstimateCost ( ) ;
projectEstimateCostBuild . setProjectId ( project . getId ( ) ) ;
projectEstimateCostBuild . setFee ( ProjectEstimateCost . FEE_PURCHASE ) ;
projectEstimateCostBuild . setType ( ProjectEstimateCost . TYPE_BUILDING ) ;
projectEstimateCostBuild . setCostTaxInclude ( estimateBean . getCostPurchaseBuildTaxInclude ( ) ) ;
projectEstimateCostBuild . setCostTaxExclude ( estimateBean . getCostPurchaseBuildTaxExclude ( ) ) ;
2021-12-30 08:54:16 +00:00
projectEstimateCostBuild . setTaxRate ( estimateBean . getCostPurchaseBuildSelect ( ) ) ;
2021-11-02 06:43:42 +00:00
projectEstimateCostRepository . saveAndFlush ( projectEstimateCostBuild ) ;
ProjectEstimateCost projectEstimateCostService = new ProjectEstimateCost ( ) ;
projectEstimateCostService . setProjectId ( project . getId ( ) ) ;
projectEstimateCostService . setFee ( ProjectEstimateCost . FEE_PURCHASE ) ;
projectEstimateCostService . setType ( ProjectEstimateCost . TYPE_SERVICE ) ;
projectEstimateCostService . setCostTaxInclude ( estimateBean . getCostPurchaseServiceTaxInclude ( ) ) ;
projectEstimateCostService . setCostTaxExclude ( estimateBean . getCostPurchaseServiceTaxExclude ( ) ) ;
2021-12-30 08:54:16 +00:00
projectEstimateCostService . setTaxRate ( estimateBean . getCostPurchaseServiceSelect ( ) ) ;
2021-11-02 06:43:42 +00:00
projectEstimateCostRepository . saveAndFlush ( projectEstimateCostService ) ;
ProjectEstimateCost projectEstimateCostOther = new ProjectEstimateCost ( ) ;
projectEstimateCostOther . setProjectId ( project . getId ( ) ) ;
projectEstimateCostOther . setFee ( ProjectEstimateCost . FEE_PURCHASE ) ;
projectEstimateCostOther . setType ( ProjectEstimateCost . TYPE_OTHER ) ;
projectEstimateCostOther . setCostTaxInclude ( estimateBean . getCostPurchaseOtherTaxInclude ( ) ) ;
projectEstimateCostOther . setCostTaxExclude ( estimateBean . getCostPurchaseOtherTaxExclude ( ) ) ;
2021-12-30 08:54:16 +00:00
projectEstimateCostOther . setTaxRate ( estimateBean . getCostPurchaseOtherSelect ( ) ) ;
2021-11-02 06:43:42 +00:00
projectEstimateCostRepository . saveAndFlush ( projectEstimateCostOther ) ;
ProjectEstimateCost projectEstimateCostProject = new ProjectEstimateCost ( ) ;
projectEstimateCostProject . setProjectId ( project . getId ( ) ) ;
projectEstimateCostProject . setFee ( ProjectEstimateCost . FEE_PROJECT_MANAGE ) ;
projectEstimateCostProject . setType ( ProjectEstimateCost . TYPE_PROJECT_MANAGE ) ;
2021-11-03 09:26:06 +00:00
/*projectEstimateCostProject.setCostTaxInclude(estimateBean.getCostProjectManageTaxInclude());*/
2021-11-02 06:43:42 +00:00
projectEstimateCostProject . setCostTaxExclude ( estimateBean . getCostProjectManageTaxExclude ( ) ) ;
projectEstimateCostRepository . saveAndFlush ( projectEstimateCostProject ) ;
ProjectEstimateCost projectEstimateCostOtherOther = new ProjectEstimateCost ( ) ;
projectEstimateCostOtherOther . setProjectId ( project . getId ( ) ) ;
projectEstimateCostOtherOther . setFee ( ProjectEstimateCost . FEE_OTHER ) ;
projectEstimateCostOtherOther . setType ( ProjectEstimateCost . TYPE_OTHER_OTHER ) ;
projectEstimateCostOtherOther . setCostTaxInclude ( estimateBean . getCostOtherOtherTaxInclude ( ) ) ;
projectEstimateCostOtherOther . setCostTaxExclude ( estimateBean . getCostOtherOtherTaxExclude ( ) ) ;
2021-12-30 08:54:16 +00:00
projectEstimateCostOtherOther . setTaxRate ( estimateBean . getCostOtherOtherSelect ( ) ) ;
2021-11-02 06:43:42 +00:00
projectEstimateCostRepository . saveAndFlush ( projectEstimateCostOtherOther ) ;
}
private void costManage ( Project project , EstimateBean estimateBean ) {
ProjectEstimateCostManage projectEstimateCostZijin = new ProjectEstimateCostManage ( ) ;
projectEstimateCostZijin . setProjectId ( project . getId ( ) ) ;
projectEstimateCostZijin . setType ( ProjectEstimateCostManage . TYPE_EXPROPRIATION ) ;
projectEstimateCostZijin . setCostTaxExclude ( estimateBean . getCostExpropriationTaxExclude ( ) ) ;
projectEstimateCostManageRepository . saveAndFlush ( projectEstimateCostZijin ) ;
ProjectEstimateCostManage projectEstimateCostManage = new ProjectEstimateCostManage ( ) ;
projectEstimateCostManage . setProjectId ( project . getId ( ) ) ;
projectEstimateCostManage . setType ( ProjectEstimateCostManage . TYPE_COMPANY_MANAGE ) ;
projectEstimateCostManage . setCostTaxExclude ( estimateBean . getCostCompanyManageTaxExclude ( ) ) ;
projectEstimateCostManageRepository . saveAndFlush ( projectEstimateCostManage ) ;
}
private void income ( Project project , EstimateBean estimateBean ) {
ProjectEstimateIncome projectEstimateIncomeDevice = new ProjectEstimateIncome ( ) ;
projectEstimateIncomeDevice . setProjectId ( project . getId ( ) ) ;
projectEstimateIncomeDevice . setType ( ProjectEstimateIncome . TYPE_DEVICE ) ;
projectEstimateIncomeDevice . setIncomeTaxInclude ( estimateBean . getIncomeDeviceTaxInclude ( ) ) ;
projectEstimateIncomeDevice . setIncomeTaxExclude ( estimateBean . getIncomeDeviceTaxExclude ( ) ) ;
2021-12-30 08:54:16 +00:00
projectEstimateIncomeDevice . setTaxRate ( estimateBean . getIncomeDeviceSelect ( ) ) ;
2021-11-02 06:43:42 +00:00
projectEstimateIncomeRepository . saveAndFlush ( projectEstimateIncomeDevice ) ;
ProjectEstimateIncome projectEstimateIncomeEngineer = new ProjectEstimateIncome ( ) ;
projectEstimateIncomeEngineer . setProjectId ( project . getId ( ) ) ;
projectEstimateIncomeEngineer . setType ( ProjectEstimateIncome . TYPE_ENGINEER ) ;
projectEstimateIncomeEngineer . setIncomeTaxInclude ( estimateBean . getIncomeEngineerTaxInclude ( ) ) ;
projectEstimateIncomeEngineer . setIncomeTaxExclude ( estimateBean . getIncomeEngineerTaxExclude ( ) ) ;
2021-12-30 08:54:16 +00:00
projectEstimateIncomeEngineer . setTaxRate ( estimateBean . getIncomeEngineerSelect ( ) ) ;
2021-11-02 06:43:42 +00:00
projectEstimateIncomeRepository . saveAndFlush ( projectEstimateIncomeEngineer ) ;
ProjectEstimateIncome projectEstimateIncomeService = new ProjectEstimateIncome ( ) ;
projectEstimateIncomeService . setProjectId ( project . getId ( ) ) ;
projectEstimateIncomeService . setType ( ProjectEstimateIncome . TYPE_SERVICE ) ;
projectEstimateIncomeService . setIncomeTaxInclude ( estimateBean . getIncomeServiceTaxInclude ( ) ) ;
projectEstimateIncomeService . setIncomeTaxExclude ( estimateBean . getIncomeServiceTaxExclude ( ) ) ;
2021-12-30 08:54:16 +00:00
projectEstimateIncomeService . setTaxRate ( estimateBean . getIncomeServiceSelect ( ) ) ;
2021-11-02 06:43:42 +00:00
projectEstimateIncomeRepository . saveAndFlush ( projectEstimateIncomeService ) ;
}
public EstimateBean getEstimate ( Project project ) {
EstimateBean estimateBean = new EstimateBean ( ) ;
List < ProjectEstimateIncome > incomes = projectEstimateIncomeRepository . findAllByProjectIdEquals ( project . getId ( ) ) ;
2021-11-05 07:05:33 +00:00
if ( CollectionUtil . isNotEmpty ( incomes ) ) {
ProjectEstimateIncome projectEstimateIncomeDevice = incomes . stream ( ) . filter ( d - > d . getType ( ) = = ProjectEstimateIncome . TYPE_DEVICE ) . collect ( Collectors . toList ( ) ) . get ( 0 ) ;
estimateBean . setIncomeDeviceTaxInclude ( projectEstimateIncomeDevice . getIncomeTaxInclude ( ) ) ;
estimateBean . setIncomeDeviceTaxExclude ( projectEstimateIncomeDevice . getIncomeTaxExclude ( ) ) ;
2021-12-30 08:54:16 +00:00
estimateBean . setIncomeDeviceSelect ( projectEstimateIncomeDevice . getTaxRate ( ) ) ;
2021-11-05 07:05:33 +00:00
ProjectEstimateIncome projectEstimateIncomeEngineer = incomes . stream ( ) . filter ( d - > d . getType ( ) = = ProjectEstimateIncome . TYPE_ENGINEER ) . collect ( Collectors . toList ( ) ) . get ( 0 ) ;
estimateBean . setIncomeEngineerTaxInclude ( projectEstimateIncomeEngineer . getIncomeTaxInclude ( ) ) ;
estimateBean . setIncomeEngineerTaxExclude ( projectEstimateIncomeEngineer . getIncomeTaxExclude ( ) ) ;
2021-12-30 08:54:16 +00:00
estimateBean . setIncomeEngineerSelect ( projectEstimateIncomeEngineer . getTaxRate ( ) ) ;
2021-11-02 06:43:42 +00:00
2021-11-05 07:05:33 +00:00
ProjectEstimateIncome projectEstimateIncomeService = incomes . stream ( ) . filter ( d - > d . getType ( ) = = ProjectEstimateIncome . TYPE_SERVICE ) . collect ( Collectors . toList ( ) ) . get ( 0 ) ;
estimateBean . setIncomeServiceTaxInclude ( projectEstimateIncomeService . getIncomeTaxInclude ( ) ) ;
estimateBean . setIncomeServiceTaxExclude ( projectEstimateIncomeService . getIncomeTaxExclude ( ) ) ;
2021-12-30 08:54:16 +00:00
estimateBean . setIncomeServiceSelect ( projectEstimateIncomeService . getTaxRate ( ) ) ;
2021-11-05 07:05:33 +00:00
}
2021-11-02 06:43:42 +00:00
List < ProjectEstimateCost > costs = projectEstimateCostRepository . findAllByProjectIdEquals ( project . getId ( ) ) ;
2021-11-05 07:05:33 +00:00
if ( CollectionUtil . isNotEmpty ( costs ) ) {
ProjectEstimateCost projectEstimateCostDevice = costs . stream ( ) . filter ( d - > d . getType ( ) = = ProjectEstimateCost . TYPE_DEVICE ) . collect ( Collectors . toList ( ) ) . get ( 0 ) ;
estimateBean . setCostPurchaseDeviceTaxInclude ( projectEstimateCostDevice . getCostTaxInclude ( ) ) ;
estimateBean . setCostPurchaseDeviceTaxExclude ( projectEstimateCostDevice . getCostTaxExclude ( ) ) ;
2021-12-30 08:54:16 +00:00
estimateBean . setCostPurchaseDeviceSelect ( projectEstimateCostDevice . getTaxRate ( ) ) ;
2021-11-02 06:43:42 +00:00
2021-11-05 07:05:33 +00:00
ProjectEstimateCost projectEstimateCostBuild = costs . stream ( ) . filter ( d - > d . getType ( ) = = ProjectEstimateCost . TYPE_BUILDING ) . collect ( Collectors . toList ( ) ) . get ( 0 ) ;
estimateBean . setCostPurchaseBuildTaxInclude ( projectEstimateCostBuild . getCostTaxInclude ( ) ) ;
estimateBean . setCostPurchaseBuildTaxExclude ( projectEstimateCostBuild . getCostTaxExclude ( ) ) ;
2021-12-30 08:54:16 +00:00
estimateBean . setCostPurchaseBuildSelect ( projectEstimateCostBuild . getTaxRate ( ) ) ;
2021-11-02 06:43:42 +00:00
2021-11-05 07:05:33 +00:00
ProjectEstimateCost projectEstimateCostService = costs . stream ( ) . filter ( d - > d . getType ( ) = = ProjectEstimateCost . TYPE_SERVICE ) . collect ( Collectors . toList ( ) ) . get ( 0 ) ;
estimateBean . setCostPurchaseServiceTaxInclude ( projectEstimateCostService . getCostTaxInclude ( ) ) ;
estimateBean . setCostPurchaseServiceTaxExclude ( projectEstimateCostService . getCostTaxExclude ( ) ) ;
2021-12-30 08:54:16 +00:00
estimateBean . setCostPurchaseServiceSelect ( projectEstimateCostService . getTaxRate ( ) ) ;
2021-11-02 06:43:42 +00:00
2021-11-05 07:05:33 +00:00
ProjectEstimateCost projectEstimateCostOther = costs . stream ( ) . filter ( d - > d . getType ( ) = = ProjectEstimateCost . TYPE_OTHER ) . collect ( Collectors . toList ( ) ) . get ( 0 ) ;
estimateBean . setCostPurchaseOtherTaxInclude ( projectEstimateCostOther . getCostTaxInclude ( ) ) ;
estimateBean . setCostPurchaseOtherTaxExclude ( projectEstimateCostOther . getCostTaxExclude ( ) ) ;
2021-12-30 08:54:16 +00:00
estimateBean . setCostPurchaseOtherSelect ( projectEstimateCostOther . getTaxRate ( ) ) ;
2021-11-02 06:43:42 +00:00
2021-11-05 07:05:33 +00:00
ProjectEstimateCost projectEstimateCostProjectManage = costs . stream ( ) . filter ( d - > d . getType ( ) = = ProjectEstimateCost . TYPE_PROJECT_MANAGE ) . collect ( Collectors . toList ( ) ) . get ( 0 ) ;
2021-11-03 09:26:06 +00:00
/*estimateBean.setCostProjectManageTaxInclude(projectEstimateCostProjectManage.getCostTaxInclude());*/
2021-11-05 07:05:33 +00:00
estimateBean . setCostProjectManageTaxExclude ( projectEstimateCostProjectManage . getCostTaxExclude ( ) ) ;
ProjectEstimateCost projectEstimateCostOtherOther = costs . stream ( ) . filter ( d - > d . getType ( ) = = ProjectEstimateCost . TYPE_OTHER_OTHER ) . collect ( Collectors . toList ( ) ) . get ( 0 ) ;
estimateBean . setCostOtherOtherTaxInclude ( projectEstimateCostOtherOther . getCostTaxInclude ( ) ) ;
estimateBean . setCostOtherOtherTaxExclude ( projectEstimateCostOtherOther . getCostTaxExclude ( ) ) ;
2021-12-30 08:54:16 +00:00
estimateBean . setCostOtherOtherSelect ( projectEstimateCostOtherOther . getTaxRate ( ) ) ;
2021-11-05 07:05:33 +00:00
}
2021-11-02 06:43:42 +00:00
List < ProjectEstimateCostManage > manages = projectEstimateCostManageRepository . findAllByProjectIdEquals ( project . getId ( ) ) ;
2021-11-05 07:05:33 +00:00
if ( CollectionUtil . isNotEmpty ( manages ) ) {
ProjectEstimateCostManage costManageExpropriation = manages . stream ( ) . filter ( d - > d . getType ( ) = = ProjectEstimateCostManage . TYPE_EXPROPRIATION ) . collect ( Collectors . toList ( ) ) . get ( 0 ) ;
2022-05-12 06:55:58 +00:00
if ( costManageExpropriation . getCostTaxExclude ( ) = = null ) {
costManageExpropriation . setCostTaxExclude ( new BigDecimal ( 0 ) ) ;
}
2021-11-05 07:05:33 +00:00
estimateBean . setCostExpropriationTaxExclude ( costManageExpropriation . getCostTaxExclude ( ) ) ;
2022-05-12 06:55:58 +00:00
2021-11-05 07:05:33 +00:00
ProjectEstimateCostManage costManageCompany = manages . stream ( ) . filter ( d - > d . getType ( ) = = ProjectEstimateCostManage . TYPE_COMPANY_MANAGE ) . collect ( Collectors . toList ( ) ) . get ( 0 ) ;
2022-05-12 06:55:58 +00:00
if ( costManageCompany . getCostTaxExclude ( ) = = null ) {
costManageCompany . setCostTaxExclude ( new BigDecimal ( 0 ) ) ;
}
2021-11-05 07:05:33 +00:00
estimateBean . setCostCompanyManageTaxExclude ( costManageCompany . getCostTaxExclude ( ) ) ;
}
2021-11-02 06:43:42 +00:00
return estimateBean ;
}
2021-11-18 08:01:09 +00:00
/ * *
* 新 增 概 算 保 存 项 目 并 发 起 审 核
* /
@Transactional ( rollbackFor = RuntimeException . class )
public Project estimateAddSaveAndApprove ( Project project ,
EstimateBean estimateBean ,
Admin admin ) throws Exception {
Project p = estimateAddSave ( project , estimateBean , admin , ApproveStatusEnum . APPROVAL_PENDING ) ;
2022-04-19 09:34:25 +00:00
//projectInstanceService.startEstimateProcessInstance(p, admin);
2021-11-18 08:01:09 +00:00
2022-12-13 08:41:19 +00:00
projectBudgetSave ( p ) ;
2021-12-31 10:22:44 +00:00
estimateApprove ( 0 , p , admin ) ;
2021-11-18 08:01:09 +00:00
return project ;
}
/ * *
* 新 增 概 算 保 存 项 目
* /
@Transactional ( rollbackFor = RuntimeException . class )
public Project estimateAddSave ( Project project ,
EstimateBean estimateBean ,
Admin admin ,
ApproveStatusEnum approveStatusEnum ) {
Project p = projectService . addProject ( project , admin , approveStatusEnum ) ;
saveEstimate ( p , estimateBean ) ;
2022-11-10 16:16:35 +00:00
saveProjectExtend ( p ) ;
2022-04-19 09:34:25 +00:00
return p ;
2021-11-18 08:01:09 +00:00
}
/ * *
* 编 辑 概 算 保 存 项 目 并 发 起 审 核
* /
// @Transactional(rollbackFor = RuntimeException.class)
public void estimateEditSaveAndApprove ( Project project ,
Project projectInDb ,
EstimateBean estimateBean ,
Admin admin ) throws Exception {
Integer approveStatusEstimate = projectInDb . getApproveStatusEstimate ( ) ;
2022-12-12 08:33:51 +00:00
Project estimateProject = estimateEditSave ( project , projectInDb , estimateBean , admin , ApproveStatusEnum . APPROVAL_PENDING ) ;
projectBudgetSave ( estimateProject ) ;
2021-11-18 08:01:09 +00:00
2021-12-28 07:42:42 +00:00
estimateApprove ( approveStatusEstimate , projectInDb , admin ) ;
}
2022-12-12 08:33:51 +00:00
private void projectBudgetSave ( Project estimateProject ) {
ProjectBudget projectBudget = new ProjectBudget ( ) ;
2022-12-13 08:41:19 +00:00
if ( projectBudgetRepository . findFirstByProjectId ( estimateProject . getId ( ) ) ! = null ) {
projectBudget = projectBudgetRepository . findFirstByProjectId ( estimateProject . getId ( ) ) ;
}
2022-12-12 08:33:51 +00:00
projectBudget . setProjectId ( estimateProject . getId ( ) ) ;
projectBudget . setProjectNoBudget ( estimateProject . getProjectNo ( ) ) ;
projectBudget . setNameBudget ( estimateProject . getName ( ) ) ;
projectBudget . setTypeBudget ( estimateProject . getType ( ) ) ;
projectBudget . setTypeDescBudget ( estimateProject . getTypeDesc ( ) ) ;
projectBudget . setDeptIdBudget ( estimateProject . getDeptId ( ) ) ;
projectBudget . setDeptNameBudget ( estimateProject . getDeptName ( ) ) ;
projectBudget . setStartDateBudget ( estimateProject . getStartDate ( ) ) ;
projectBudget . setEndDateBudget ( estimateProject . getEndDate ( ) ) ;
projectBudget . setUnderwrittenModeBudget ( estimateProject . getUnderwrittenMode ( ) ) ;
projectBudget . setUnderwrittenModeStrBudget ( estimateProject . getUnderwrittenModeStr ( ) ) ;
projectBudget . setCooperateTypeBudget ( estimateProject . getCooperateType ( ) ) ;
projectBudget . setCooperateTypeStrBudget ( estimateProject . getCooperateTypeStr ( ) ) ;
projectBudget . setCollaboratorBudget ( estimateProject . getCollaborator ( ) ) ;
projectBudget . setCollaboratorUrlBudget ( estimateProject . getCollaboratorUrl ( ) ) ;
projectBudget . setCertaintyBudget ( estimateProject . getCertainty ( ) ) ;
projectBudget . setCertaintyStrBudget ( estimateProject . getCertaintyStr ( ) ) ;
projectBudget . setCustomerBudget ( estimateProject . getCustomer ( ) ) ;
projectBudget . setTerminalCustomerBudget ( estimateProject . getTerminalCustomer ( ) ) ;
projectBudget . setAdvanceInterestAmountBudget ( estimateProject . getAdvanceInterestAmount ( ) ) ;
projectBudget . setAdvancePeakAmountBudget ( estimateProject . getAdvancePeakAmount ( ) ) ;
projectBudget . setContractAmountBudget ( estimateProject . getContractAmount ( ) ) ;
projectBudget . setIndustryScenarioBudget ( estimateProject . getIndustryScenario ( ) ) ;
projectBudget . setIndustrySceneBudget ( estimateProject . getIndustryScene ( ) ) ;
projectBudget . setGrossProfitBudget ( estimateProject . getGrossProfit ( ) ) ;
projectBudget . setGrossProfitMarginBudget ( estimateProject . getGrossProfitMargin ( ) ) ;
projectBudget . setHuazhiProductAmountBudget ( estimateProject . getHuazhiProductAmount ( ) ) ;
projectBudget . setHuizhiProductAmountBudget ( estimateProject . getHuizhiProductAmount ( ) ) ;
projectBudget . setHuasanProductAmountBudget ( estimateProject . getHuasanProductAmount ( ) ) ;
projectBudget . setZiguangOtherAmountBudget ( estimateProject . getZiguangOtherAmount ( ) ) ;
projectBudget . setMainContractCollectionTermsBudget ( estimateProject . getMainContractCollectionTerms ( ) ) ;
projectBudget . setValueRiskBudget ( estimateProject . getValueRisk ( ) ) ;
projectBudget . setPrincipalBudget ( estimateProject . getPrincipal ( ) ) ;
projectBudget . setContractTimeBudget ( estimateProject . getContractTime ( ) ) ;
projectBudget . setBidsTimeBudget ( estimateProject . getBidsTime ( ) ) ;
projectBudget . setIsSecondBudget ( estimateProject . getIsSecond ( ) ) ;
projectBudget . setIsSecondStrBudget ( estimateProject . getIsSecondStr ( ) ) ;
projectBudget . setSignTypeBudget ( estimateProject . getSignType ( ) ) ;
projectBudget . setSignTypeStrBudget ( estimateProject . getSignTypeStr ( ) ) ;
projectBudget . setResolvePlanBudget ( estimateProject . getResolvePlan ( ) ) ;
projectBudget . setResolvePlanStrBudget ( estimateProject . getResolvePlanStr ( ) ) ;
projectBudget . setMainContractResolvePlanBudget ( estimateProject . getMainContractResolvePlan ( ) ) ;
projectBudget . setCalculationCollectionBudget ( estimateProject . getCalculationCollection ( ) ) ;
projectBudgetRepository . save ( projectBudget ) ;
}
2021-12-28 07:47:56 +00:00
public void estimateApprove ( Integer approveStatusEstimate , Project projectInDb , Admin admin ) throws Exception {
2022-12-23 09:44:31 +00:00
projectInstanceService . startFourcalProcess ( projectInDb , ActProcessKeyEnum . ESTIMATE ) ;
2022-05-18 09:43:35 +00:00
int type = projectInDb . getType ( ) ;
List < SysUserRole > userIds = new ArrayList < > ( ) ;
if ( type = = 1 ) {
String sql = "select sur.user_id from sys_role sr left join sys_user_role sur on sr.id = sur.role_id where sr.is_deleted = 0 and sur.is_deleted = 0 and sr.level in (1,2,3,4,5,6)" ;
userIds = pagination . find ( sql , SysUserRole . class ) ;
} else if ( type = = 2 ) {
String sql = "select sur.user_id from sys_role sr left join sys_user_role sur on sr.id = sur.role_id where sr.is_deleted = 0 and sur.is_deleted = 0 and sr.level in (1,2,3,5,6)" ;
userIds = pagination . find ( sql , SysUserRole . class ) ;
} else if ( type = = 3 ) {
String sql = "select sur.user_id from sys_role sr left join sys_user_role sur on sr.id = sur.role_id where sr.is_deleted = 0 and sur.is_deleted = 0 and sr.level in (1,2,3,6)" ;
userIds = pagination . find ( sql , SysUserRole . class ) ;
2021-11-18 08:01:09 +00:00
}
2022-05-18 09:43:35 +00:00
List < ProjectVisible > pvs = new ArrayList < > ( ) ;
for ( SysUserRole sysUserRole : userIds ) {
ProjectVisible pv = new ProjectVisible ( ) ;
pv . setProjectId ( projectInDb . getId ( ) ) ;
pv . setType ( 2 ) ;
pv . setTid ( sysUserRole . getUserId ( ) ) ;
pvs . add ( pv ) ;
}
projectVisibleRepository . save ( pvs ) ;
2021-11-18 08:01:09 +00:00
}
2021-12-28 07:42:42 +00:00
2021-11-18 08:01:09 +00:00
/ * *
* 编 辑 概 算 保 存 项 目
* /
@Transactional ( rollbackFor = RuntimeException . class )
public Project estimateEditSave ( Project project , Project projectInDb , EstimateBean estimateBean , Admin admin , ApproveStatusEnum approveStatusEnum ) {
2022-08-16 08:56:41 +00:00
Project p = projectService . estimateEditProject ( project , projectInDb ) ;
2021-11-18 08:01:09 +00:00
p . setStatus ( StatusEnum . ESTIMATE_ACCOUNTS . getStatus ( ) ) ;
p . setStatusDesc ( StatusEnum . ESTIMATE_ACCOUNTS . getStatusDesc ( ) ) ;
p . setApproveStatusEstimate ( approveStatusEnum . getApproveStatus ( ) ) ;
p = projectRepository . saveAndFlush ( p ) ;
ProjectConfigBean projectConfigBeanConfig = sysConfigService . getProjectConfigBeanConfig ( ) ;
project . setProjectContributionProfitRateThreshold ( projectConfigBeanConfig . getProjectContributionProfitRateThreshold ( ) ) ;
project . setUnderwrittenTaxRate ( projectConfigBeanConfig . getUnderwrittenTaxRate ( ) ) ;
//清空重新保存概算信息
clearEstimate ( p ) ;
saveEstimate ( p , estimateBean ) ;
2022-11-10 16:16:35 +00:00
saveProjectExtend ( p ) ;
2021-11-18 08:01:09 +00:00
return p ;
}
2022-11-10 16:16:35 +00:00
private void saveProjectExtend ( Project p ) {
ProjectExtend extend = projectExtendRepository . findByProjectId ( p . getId ( ) ) ;
if ( extend = = null ) {
extend = new ProjectExtend ( ) ;
extend . setProjectId ( p . getId ( ) ) ;
extend . setIsBudget ( 0 ) ;
extend . setAdvanceInterestAmount ( new BigDecimal ( 0 ) ) ;
extend . setAdvancePeakAmount ( new BigDecimal ( 0 ) ) ;
extend . setGrossProfit ( new BigDecimal ( 0 ) ) ;
extend . setGrossProfitMargin ( new BigDecimal ( 0 ) ) ;
extend . setContractAmount ( new BigDecimal ( 0 ) ) ;
extend . setHuizhiProductAmount ( new BigDecimal ( 0 ) ) ;
extend . setHuazhiProductAmount ( new BigDecimal ( 0 ) ) ;
extend . setHuasanProductAmount ( new BigDecimal ( 0 ) ) ;
extend . setZiguangOtherAmount ( new BigDecimal ( 0 ) ) ;
projectExtendRepository . save ( extend ) ;
}
}
2021-11-02 06:43:42 +00:00
}