打包管理

This commit is contained in:
梁琦涛
2021-09-13 09:31:12 +08:00
parent 33784ef5bf
commit 4933ad59cd
23 changed files with 714 additions and 135 deletions
@@ -83,4 +83,13 @@ public class PayIncomeContractCommon {
*/
public final static List<String> LIST_SPENDING_CONTRACT_INSTALLMENT = Arrays.asList("阶段","期应收","期应收时间","期实收","期实收时间");
/**
* 来源(1:收入合同,2:打包管理)
*/
public final static Integer COME1 = 1;
/**
* 来源(1:收入合同,2:打包管理)
*/
public final static Integer COME2 = 2;
}
@@ -99,7 +99,6 @@ public class PayIncomeContractController extends JeroController<PayIncomeContrac
if(Objects.equals(chargeStatus,PayIncomeContractCommon.CHARGE_STATUS0)){
chargeStatus = "";
}
// todo 缺少会议,会员项目,标协会员
Page<PayIncomeContract> page = new Page<>(pageNo, pageSize);
IPage<PayIncomeContract> pageList = payIncomeContractService.queryPageList(page, payIncomeContract,chargeStatus,projectName,startTime,endTime);
return Result.OK(pageList);
@@ -2,6 +2,7 @@ package com.jero.contract.entity;
import java.io.Serializable;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@@ -38,6 +38,5 @@ public interface PayIncomeContractMapper extends BaseMapper<PayIncomeContract> {
* @Return
* @Exception
*/
// todo 缺少会议,会员项目数据
List<ProjectOutput> getAssociated(@Param("contractId") String contractId);
}
@@ -47,11 +47,23 @@
LEFT JOIN pay_income_contract_associated pica ON pica.contract_id = pic.id
LEFT JOIN
(
select id,charge_project AS projectName from pay_common_project
union all
select pwgs.id,pwg.working_group_project AS projectName from pay_working_group_subitem pwgs
left join pay_working_group pwg ON pwg.id = pwgs.working_group_id
WHERE pwg.working_group_project is not null and pwg.working_group_project!=''
SELECT id,charge_project AS projectName FROM pay_common_project
UNION ALL
SELECT pwgs.id,pwg.working_group_project AS projectName FROM pay_working_group_subitem pwgs
LEFT JOIN pay_working_group pwg ON pwg.id = pwgs.working_group_id
WHERE pwg.working_group_project IS NOT NULL AND pwg.working_group_project != ''
UNION ALL
SELECT sit.id,meeting.meeting_name AS projectName FROM pay_meeting meeting
INNER JOIN pay_meeting_situation sit ON meeting.id = sit.meeting_id
WHERE meeting.meeting_name IS NOT NULL AND meeting.meeting_name != ''
UNION ALL
SELECT msub.id,pmp.project_name AS projectName FROM pay_member_project pmp
INNER JOIN pay_member_project_subitem msub ON pmp.id = msub.project_id
WHERE pmp.project_name IS NOT NULL AND pmp.project_name != ''
UNION ALL
SELECT tmsub.id,tmember.project_name AS projectName FROM tb_member_project tmember
INNER JOIN tb_member_project_subitem tmsub ON tmember.id=tmsub.project_id
where tmember.project_name IS NOT NULL AND tmember.project_name != ''
) project ON project.id = pica.project_id
GROUP BY pic.id
) aa
@@ -116,6 +128,57 @@
JOIN pay_working_group_subitem pwgs ON pica.project_id = pwgs.id
LEFT JOIN pay_working_group pwg ON pwgs.working_group_id = pwg.id
WHERE pica.contract_id = #{contractId}
UNION ALL
SELECT
pica.id AS id,
pica.contract_id AS contractId,
sit.id AS projectId,
'3' AS projectType,
meeting.meeting_name AS chargeProject,
sit.charge_use AS chargeUse,
sit.company_name AS chargeCompanyName,
sit.amount_receivable AS receivableAmount,
sit.paid_amount AS paidAmount,
meeting.director_name AS principalName,
pica.create_time AS createTime
FROM pay_income_contract_associated pica
JOIN pay_meeting_situation sit ON pica.project_id = sit.id
LEFT JOIN pay_meeting meeting ON meeting.id = sit.meeting_id
WHERE pica.contract_id = #{contractId}
UNION ALL
SELECT
pica.id AS id,
pica.contract_id AS contractId,
msub.id AS projectId,
'4' AS projectType,
pmp.project_name AS chargeProject,
msub.charge_use AS chargeUse,
msub.company_name AS chargeCompanyName,
msub.amount_receivable AS receivableAmount,
msub.paid_amount AS paidAmount,
pmp.director_name AS principalName,
pica.create_time AS createTime
FROM pay_income_contract_associated pica
JOIN pay_member_project_subitem msub ON pica.project_id = msub.id
LEFT JOIN pay_member_project pmp ON pmp.id=msub.project_id
WHERE pica.contract_id = #{contractId}
UNION ALL
SELECT
pica.id AS id,
pica.contract_id AS contractId,
tmsub.id AS projectId,
'5' AS projectType,
tmember.project_name AS chargeProject,
tmsub.charge_use AS chargeUse,
tmsub.company_name AS chargeCompanyName,
tmsub.amount_receivable AS receivableAmount,
tmsub.paid_amount AS paidAmount,
tmember.director_name AS principalName,
pica.create_time AS createTime
FROM pay_income_contract_associated pica
JOIN tb_member_project_subitem tmsub ON pica.project_id = tmsub.id
LEFT JOIN tb_member_project tmember ON tmember.id=tmsub.project_id
WHERE pica.contract_id = #{contractId}
) a
ORDER BY createTime,projectId DESC
</select>
@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.common.exception.JeroBootException;
import com.jero.common.service.ProjectPackService;
import com.jero.common.system.vo.LoginUser;
import com.jero.common.util.ValidUtil;
import com.jero.contract.common.PayIncomeContractCommon;
@@ -22,6 +23,10 @@ import com.jero.contract.vo.PayIncomeContractInput;
import com.jero.contract.vo.ProjectOutput;
import com.jero.modules.system.entity.SysUser;
import com.jero.modules.system.service.ISysUserService;
import com.jero.pack.entity.PayPackCompany;
import com.jero.pack.entity.PayPackCompanyProject;
import com.jero.pack.service.IPayPackCompanyProjectService;
import com.jero.pack.service.IPayPackCompanyService;
import com.jero.project.common.PayProjectCommon;
import com.jero.project.entity.PayCommonProject;
import com.jero.project.entity.PayWorkingGroup;
@@ -42,6 +47,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@@ -80,6 +86,12 @@ public class PayIncomeContractServiceImpl extends ServiceImpl<PayIncomeContractM
private IPayWorkingGroupService payWorkingGroupService;
@Autowired
private IPayWorkingGroupSubItemService payWorkingGroupSubItemService;
@Autowired
private ProjectPackService projectPackService;
@Autowired
private IPayPackCompanyService payPackCompanyService;
@Autowired
private IPayPackCompanyProjectService payPackCompanyProjectService;
@Override
public IPage<PayIncomeContract> queryPageList(Page<PayIncomeContract> page, PayIncomeContract payIncomeContract, String chargeStatus,String projectName, String startTime, String endTime) {
@@ -152,6 +164,23 @@ public class PayIncomeContractServiceImpl extends ServiceImpl<PayIncomeContractM
if(!StringUtils.isBlank(msgPayIncomeContractInstallment)){
throw new JeroBootException(msgPayIncomeContractInstallment.toString());
}
// 选择了打包,创建打包企业
if(Objects.equals(payIncomeContract.getPack(),PayIncomeContractCommon.PACK1)){
LambdaQueryWrapper<PayPackCompany> queryPayPackCompany = new LambdaQueryWrapper<>();
queryPayPackCompany.eq(PayPackCompany::getCompanyId,payIncomeContract.getSignedCompanyId());
queryPayPackCompany.eq(PayPackCompany::getPackYear,payIncomeContract.getPackYear());
List<PayPackCompany> listPayPackCompany = payPackCompanyService.list(queryPayPackCompany);
//不存在打包企业 添加打包企业
if(CollectionUtils.isEmpty(listPayPackCompany)){
PayPackCompany payPackCompanyData = new PayPackCompany();
payPackCompanyData.setCompanyId(payIncomeContract.getSignedCompanyId());
payPackCompanyData.setCompanyContactId(payIncomeContract.getSignedCompanyId());
payPackCompanyData.setPackYear(payIncomeContract.getPackYear());
payPackCompanyData.setPackContactId(payIncomeContract.getSignedContactsId());
payPackCompanyService.addPayPackCompany(payPackCompanyData);
}
}
return payIncomeContract;
}
@@ -265,7 +294,6 @@ public class PayIncomeContractServiceImpl extends ServiceImpl<PayIncomeContractM
if(Objects.isNull(payIncomeContract)){
throw new JeroBootException("合同不存在!");
}
// 查看项目类型
switch (String.valueOf(p.getProjectType())){
case PayIncomeContractCommon.PROJECT_TYPE1:
@@ -281,8 +309,8 @@ public class PayIncomeContractServiceImpl extends ServiceImpl<PayIncomeContractM
}
// 验证项目是否已被关联
getIncomeContractAssociated(p.getContractId(),p.getProjectId());
// 合同选择打包,运行年份不是打包企业,添加打包企业
if(Objects.equals(payIncomeContract.getPack(),PayIncomeContractCommon.PACK1)){
// 合同选择打包 && 企业没有打包,添加打包企业
if(Objects.equals(payIncomeContract.getPack(),PayIncomeContractCommon.PACK1) && !Objects.equals(payCommonProject.getPack(),PayIncomeContractCommon.PACK1)){
LambdaUpdateWrapper<PayCommonProject> updatePayCommonProject = new LambdaUpdateWrapper<>();
updatePayCommonProject.eq(PayCommonProject::getId,p.getProjectId());
if(!StringUtils.isBlank(payCommonProject.getContractNum())){
@@ -292,7 +320,11 @@ public class PayIncomeContractServiceImpl extends ServiceImpl<PayIncomeContractM
updatePayCommonProject.set(PayCommonProject::getUpdateBy,sysUser.getUsername());
updatePayCommonProject.set(PayCommonProject::getUpdateTime,new Date());
payCommonProjectService.update(updatePayCommonProject);
// todo 添加打包企业
// 添加打包企业
// 合同选择了打包,查看打包年份&&打包企业是否存在
if(Objects.equals(payIncomeContract.getPack(),PayIncomeContractCommon.PACK1)){
setPack(payCommonProject.getChargeCompanyId(),payCommonProject.getContactsId(),payIncomeContract.getPackYear(),payCommonProject.getId(),payIncomeContract.getPack(),payCommonProject.getReceivableAmount(),payCommonProject.getPaidAmount());
}
}
projectOutput.setProjectId(payCommonProject.getId());
projectOutput.setProjectType(PayIncomeContractCommon.PROJECT_TYPE1);
@@ -334,7 +366,11 @@ public class PayIncomeContractServiceImpl extends ServiceImpl<PayIncomeContractM
updatePayWorkingGroupSubItem.set(PayWorkingGroupSubItem::getPack,PayIncomeContractCommon.PACK1);
updatePayWorkingGroupSubItem.eq(PayWorkingGroupSubItem::getId,listPayWorkingGroupSubItem.get(0).getId());
payWorkingGroupSubItemService.update(updatePayWorkingGroupSubItem);
// todo 添加打包企业
// 添加打包企业
// 合同选择了打包,查看打包年份&&打包企业是否存在
if(Objects.equals(payIncomeContract.getPack(),PayIncomeContractCommon.PACK1)){
setPack(listPayWorkingGroupSubItem.get(0).getChargeCompanyId(),listPayWorkingGroupSubItem.get(0).getContactsIdOne(),payIncomeContract.getPackYear(),listPayWorkingGroupSubItem.get(0).getId(),payIncomeContract.getPack(),listPayWorkingGroupSubItem.get(0).getReceivableAmount(),listPayWorkingGroupSubItem.get(0).getPaidAmount());
}
}
// 更新项目id
p.setProjectId(listPayWorkingGroupSubItem.get(0).getId());
@@ -367,6 +403,54 @@ public class PayIncomeContractServiceImpl extends ServiceImpl<PayIncomeContractM
return listProjectOutput;
}
/**
* @Description 添加打包企业
* @Author lqt
* @Date 2021/9/12
* @Param
* @Return
* @Exception
*/
private void setPack(String companyId, String contactsId, String packYear, String projectId, Integer pack, BigDecimal receivableAmount,BigDecimal paidAmount){
// 合同选择了打包,查看打包年份&&打包企业是否存在
if(Objects.equals(pack,PayIncomeContractCommon.PACK1)){
LambdaQueryWrapper<PayPackCompany> queryPayPackCompany = new LambdaQueryWrapper<>();
queryPayPackCompany.eq(PayPackCompany::getCompanyId,companyId);
queryPayPackCompany.eq(PayPackCompany::getPackYear,packYear);
List<PayPackCompany> listPayPackCompany = payPackCompanyService.list(queryPayPackCompany);
PayPackCompany payPackCompany = new PayPackCompany();
//不存在打包企业 添加打包企业
if(CollectionUtils.isEmpty(listPayPackCompany)){
PayPackCompany payPackCompanyData = new PayPackCompany();
payPackCompanyData.setCompanyId(companyId);
payPackCompanyData.setCompanyContactId(contactsId);
payPackCompanyData.setPackYear(packYear);
payPackCompanyData.setPackContactId(contactsId);
payPackCompanyService.addPayPackCompany(payPackCompanyData);
LambdaQueryWrapper<PayPackCompany> queryPayPackCompanyNew = new LambdaQueryWrapper<>();
queryPayPackCompanyNew.eq(PayPackCompany::getCompanyId,companyId);
queryPayPackCompanyNew.eq(PayPackCompany::getPackYear,packYear);
List<PayPackCompany> listPayPackCompanyNew = payPackCompanyService.list(queryPayPackCompanyNew);
payPackCompany = listPayPackCompanyNew.get(0);
}else{
payPackCompany = listPayPackCompany.get(0);
}
// 更新打包实收金额
LambdaUpdateWrapper<PayPackCompany> updatePayPackCompany = new LambdaUpdateWrapper<>();
updatePayPackCompany.eq(PayPackCompany::getPackChargeTotal,payPackCompany.getPackChargeTotal().add(receivableAmount));
updatePayPackCompany.eq(PayPackCompany::getReceiptExpense,payPackCompany.getReceiptExpense().add(paidAmount));
updatePayPackCompany.set(PayPackCompany::getId,payPackCompany.getId());
// todo 更新开票金额与未开票金额
payPackCompanyService.update(updatePayPackCompany);
// 添加打包企业成员
PayPackCompanyProject payPackCompanyProject = new PayPackCompanyProject();
payPackCompanyProject.setPackId(payPackCompany.getId());
payPackCompanyProject.setProjectId(projectId);
payPackCompanyProject.setCome(PayIncomeContractCommon.COME1);
payPackCompanyProject.setProjectId(PayIncomeContractCommon.PROJECT_TYPE1);
payPackCompanyProjectService.save(payPackCompanyProject);
}
}
/**
* @Description 验证项目是否被合同关联
* @Author lqt
* @Date 2021/9/6
@@ -386,7 +470,6 @@ public class PayIncomeContractServiceImpl extends ServiceImpl<PayIncomeContractM
}
throw new JeroBootException("项目已被其他合同关联!");
}
}
@Override
@@ -418,12 +501,20 @@ public class PayIncomeContractServiceImpl extends ServiceImpl<PayIncomeContractM
}
// todo 缺少查询项目是否为打包企业,是:保持不变,不是:取消打包 将关联项目取消打包
if(Objects.equals(payIncomeContract.getPack(),PayIncomeContractCommon.PACK1) ){
LambdaUpdateWrapper<PayCommonProject> updatePayCommonProject = new LambdaUpdateWrapper<>();
updatePayCommonProject.set(PayCommonProject::getUpdateBy,sysUser.getUsername());
updatePayCommonProject.set(PayCommonProject::getUpdateTime,new Date());
updatePayCommonProject.set(PayCommonProject::getPack,PayIncomeContractCommon.PACK0);
updatePayCommonProject.eq(PayCommonProject::getId,payIncomeContractAssociated.getProjectId());
payCommonProjectService.update(updatePayCommonProject);
LambdaQueryWrapper<PayPackCompanyProject> queryPayPackCompanyProject = new LambdaQueryWrapper<>();
queryPayPackCompanyProject.eq(PayPackCompanyProject::getProjectId,payCommonProject.getId());
List<PayPackCompanyProject> listPayPackCompanyProject = payPackCompanyProjectService.list(queryPayPackCompanyProject);
// todo 如果在打包企业中&& 来源为支出合同,取消打包,变更打包企业金额 否则不进行操作
if(!CollectionUtils.isEmpty(listPayPackCompanyProject) && Objects.equals(listPayPackCompanyProject.get(0).getCome(),PayIncomeContractCommon.COME1)){
payPackCompanyService.update();
payPackCompanyProjectService.removeById(listPayPackCompanyProject.get(0).getId());
LambdaUpdateWrapper<PayCommonProject> updatePayCommonProject = new LambdaUpdateWrapper<>();
updatePayCommonProject.set(PayCommonProject::getUpdateBy,sysUser.getUsername());
updatePayCommonProject.set(PayCommonProject::getUpdateTime,new Date());
updatePayCommonProject.set(PayCommonProject::getPack,PayIncomeContractCommon.PACK0);
updatePayCommonProject.eq(PayCommonProject::getId,payIncomeContractAssociated.getProjectId());
payCommonProjectService.update(updatePayCommonProject);
}
}
break;
case PayIncomeContractCommon.PROJECT_TYPE2: