增加合同与公司对应关系表

目前完成生成合同接口,新增合同接口,修改合同接口,根据合同编码查询服务公司和服务类型接口
This commit is contained in:
1073413548 2024-09-13 15:27:48 +08:00
parent fd3f2d6654
commit 2c3e832a0c
18 changed files with 295 additions and 40 deletions

View File

@ -138,8 +138,10 @@ public class PsCompanyInfo extends TenantEntity {
* 2逻辑删除 0 默认有效 * 2逻辑删除 0 默认有效
*/ */
private Long delFlag; private Long delFlag;
/**
* 公司类型1签约公司 2服务公司
*/
private String companyType;
} }

View File

@ -59,6 +59,9 @@ public class PsContractBusiness extends TenantEntity {
* 2逻辑删除 0 默认有效 * 2逻辑删除 0 默认有效
*/ */
private Long delFlag; private Long delFlag;
/**
* 服务公司id
*/
private Long companyId;
} }

View File

@ -0,0 +1,47 @@
package com.pusong.business.domain;
import com.baomidou.mybatisplus.annotation.*;
import com.pusong.common.tenant.core.TenantEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serial;
import java.math.BigDecimal;
import java.util.Date;
/**
* 公司信息对象 ps_company_info
*
* @author wls
* @date 2024-07-29
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("ps_contract_company")
public class PsContractCompany extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 公司ID
*/
@TableId(value = "id",type = IdType.AUTO)
private Long id;
/**
* 合同编码
*/
private String contractCode;
/**
* 公司id
*/
private Long companyId;
/**
* 2逻辑删除 0 默认有效
*/
private Long delFlag;
}

View File

@ -13,6 +13,7 @@ import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*; import jakarta.validation.constraints.*;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import java.util.List;
/** /**
* 公司信息业务对象 ps_company_info * 公司信息业务对象 ps_company_info
@ -139,4 +140,14 @@ public class PsCompanyInfoBo {
* 发票类型 * 发票类型
*/ */
private String billType; private String billType;
/**
* 公司类型1签约公司 2服务公司
*/
private String companyType;
/**
* 合同服务类别
*/
@NotEmpty(message = "合同服务类别不能为空")
private List<PsContractBusinessBo> businessList;
} }

View File

@ -65,6 +65,10 @@ public class PsContractBusinessBo {
*/ */
@JsonFormat(pattern ="yyyy-MM-dd") @JsonFormat(pattern ="yyyy-MM-dd")
private Date startDate; private Date startDate;
/**
* 服务公司id
*/
private Long companyId;
/** /**
* 合同服务项目 * 合同服务项目
*/ */

View File

@ -102,18 +102,18 @@ public class PsContractInfoBo {
* 是否续费 * 是否续费
*/ */
private String isDue; private String isDue;
/**
* 合同服务类别
*/
@NotEmpty(message = "合同服务类别不能为空")
private List<PsContractBusinessBo> businessList;
/** /**
* 公司信息 * 签约公司信息
*/ */
@NotEmpty(message = "公司信息不能为空") @NotEmpty(message = "公司信息不能为空")
private PsCompanyInfoBo companyInfoBo; private PsCompanyInfoBo companyInfoBo;
/**
* 服务公司信息集合
*/
private List<PsCompanyInfoBo> serviceCompanyInfoList;
/** /**
* 修改合同说明 * 修改合同说明
*/ */

View File

@ -16,7 +16,7 @@ import lombok.Data;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date; import java.util.Date;
import java.util.List;
/** /**
@ -148,4 +148,8 @@ public class PsCompanyInfoVo implements Serializable {
* 发票类型 * 发票类型
*/ */
private String billType; private String billType;
/**
* 服务类别信息
*/
private List<PsContractBusinessVo> businessVoList;
} }

View File

@ -0,0 +1,39 @@
package com.pusong.business.domain.vo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.pusong.common.tenant.core.TenantEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serial;
/**
* 公司信息对象 ps_company_info
*
* @author wls
* @date 2024-07-29
*/
@Data
public class PsContractCompanyVo {
/**
* 公司ID
*/
@TableId(value = "id",type = IdType.AUTO)
private Long id;
/**
* 合同编码
*/
private String contractCode;
/**
* 公司id
*/
private Long companyId;
}

View File

@ -51,7 +51,7 @@ public class PsContractInfoVo implements Serializable {
private Long customId; private Long customId;
/** /**
* 公司id * 签约公司id
*/ */
private Long companyId; private Long companyId;
@ -190,7 +190,7 @@ public class PsContractInfoVo implements Serializable {
*/ */
private String isDue; private String isDue;
/** /**
* 公司信息 * 签约公司信息不会有服务类别
*/ */
private PsCompanyInfoVo psCompanyInfoVo; private PsCompanyInfoVo psCompanyInfoVo;
/** /**
@ -198,9 +198,9 @@ public class PsContractInfoVo implements Serializable {
*/ */
private PsCustomInfoVo psCustomInfoVo; private PsCustomInfoVo psCustomInfoVo;
/** /**
* 服务类别信息 * 服务公司信息
*/ */
private List<PsContractBusinessVo> businessVoList; private List<PsCompanyInfoVo> psCompanySerivceVo;
/** /**
* 汇款记录信息信息 * 汇款记录信息信息

View File

@ -11,6 +11,8 @@ import com.pusong.business.domain.vo.PsCompanyQueryVo;
import com.pusong.common.mybatis.core.mapper.BaseMapperPlus; import com.pusong.common.mybatis.core.mapper.BaseMapperPlus;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List;
/** /**
* 公司信息Mapper接口 * 公司信息Mapper接口
* *
@ -20,4 +22,6 @@ import org.apache.ibatis.annotations.Param;
public interface PsCompanyInfoMapper extends BaseMapperPlus<PsCompanyInfo, PsCompanyInfoVo> { public interface PsCompanyInfoMapper extends BaseMapperPlus<PsCompanyInfo, PsCompanyInfoVo> {
Page<PsCompanyQueryVo> selectPageList(@Param("page") Page<PsApproverRecord> page, @Param(Constants.WRAPPER) Wrapper<PsCompanyInfo> queryWrapper); Page<PsCompanyQueryVo> selectPageList(@Param("page") Page<PsApproverRecord> page, @Param(Constants.WRAPPER) Wrapper<PsCompanyInfo> queryWrapper);
List<PsCompanyInfoVo> selectServiceCompanyList(@Param(Constants.WRAPPER) Wrapper<PsCompanyInfoVo> queryWrapper);
} }

View File

@ -0,0 +1,23 @@
package com.pusong.business.mapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.pusong.business.domain.PsApproverRecord;
import com.pusong.business.domain.PsCompanyInfo;
import com.pusong.business.domain.PsContractCompany;
import com.pusong.business.domain.vo.PsCompanyInfoVo;
import com.pusong.business.domain.vo.PsCompanyQueryVo;
import com.pusong.business.domain.vo.PsContractCompanyVo;
import com.pusong.common.mybatis.core.mapper.BaseMapperPlus;
import org.apache.ibatis.annotations.Param;
/**
* 公司信息Mapper接口
*
* @author wls
* @date 2024-07-29
*/
public interface PsContractCompanyMapper extends BaseMapperPlus<PsContractCompany, PsContractCompanyVo> {
}

View File

@ -48,6 +48,13 @@ public interface IPsCompanyInfoService {
* @return 是否新增成功 * @return 是否新增成功
*/ */
Boolean saveBo(PsCompanyInfoBo bo); Boolean saveBo(PsCompanyInfoBo bo);
/**
* 保存合同公司关联表
* @param list
* @param contractCode
*/
void saveContractCompany(List<PsCompanyInfoBo> list,String contractCode );
/** /**
* 批量新增公司信息 * 批量新增公司信息
* *
@ -65,4 +72,9 @@ public interface IPsCompanyInfoService {
* @return 是否删除成功 * @return 是否删除成功
*/ */
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid); Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
/**
* 根据合同编码查询服务公司信息
*/
List<PsCompanyInfoVo> getServiceCompany(String controctCode);
} }

View File

@ -7,11 +7,13 @@ import com.pusong.business.domain.PsApproverRecord;
import com.pusong.business.domain.PsContractInfo; import com.pusong.business.domain.PsContractInfo;
import com.pusong.business.domain.PsTaskAppoint; import com.pusong.business.domain.PsTaskAppoint;
import com.pusong.business.domain.PsTaskMain; import com.pusong.business.domain.PsTaskMain;
import com.pusong.business.domain.bo.PsContractBusinessBo;
import com.pusong.business.domain.bo.PsContractInfoBo; import com.pusong.business.domain.bo.PsContractInfoBo;
import com.pusong.business.domain.vo.PsContractInfoVo; import com.pusong.business.domain.vo.PsContractInfoVo;
import com.pusong.business.enums.*; import com.pusong.business.enums.*;
import com.pusong.business.mapper.PsTaskAppointMapper; import com.pusong.business.mapper.PsTaskAppointMapper;
import com.pusong.business.mapper.PsTaskMainMapper; import com.pusong.business.mapper.PsTaskMainMapper;
import com.pusong.business.service.IPsCompanyInfoService;
import com.pusong.business.service.IPsContractBusinessService; import com.pusong.business.service.IPsContractBusinessService;
import com.pusong.business.service.IPsContractInfoService; import com.pusong.business.service.IPsContractInfoService;
import com.pusong.business.service.IPsTaskService; import com.pusong.business.service.IPsTaskService;
@ -40,6 +42,7 @@ public class UpdateContractApproverServiceImpl extends ApproverAbstractServiceIm
private final IPsTaskService taskService; private final IPsTaskService taskService;
private final PsTaskMainMapper taskMainMapper; private final PsTaskMainMapper taskMainMapper;
private final PsTaskAppointMapper appointMapper; private final PsTaskAppointMapper appointMapper;
private final IPsCompanyInfoService companyInfoService;
/** /**
* 1 审批成功 合同状态变为待派单 合同已派单任务重置 * 1 审批成功 合同状态变为待派单 合同已派单任务重置
@ -52,9 +55,11 @@ public class UpdateContractApproverServiceImpl extends ApproverAbstractServiceIm
PsContractInfoVo src = contractInfoService.queryContractByCode(psApproverRecord.getContractCode()); PsContractInfoVo src = contractInfoService.queryContractByCode(psApproverRecord.getContractCode());
//json化修改的数据 //json化修改的数据
PsContractInfoBo bo = JSON.parseObject(psApproverRecord.getUpdateData(),PsContractInfoBo.class); PsContractInfoBo bo = JSON.parseObject(psApproverRecord.getUpdateData(),PsContractInfoBo.class);
List<PsContractBusinessBo> businessBoslist = bo.getServiceCompanyInfoList().stream().flatMap(com -> com.getBusinessList().stream()).toList();
//2.删除所有服务类型和服务项目,.插入服务类型 //2.删除所有服务类型和服务项目,.插入服务类型
businessService.saveList(bo.getBusinessList(),bo.getContractCode()); businessService.saveList(businessBoslist,bo.getContractCode());
//保存公司合同关联表
companyInfoService.saveContractCompany(bo.getServiceCompanyInfoList(),src.getContractCode());
//3.修改后操作 //3.修改后操作
afterUpdateOperate(bo, src); afterUpdateOperate(bo, src);
//插入合同 //插入合同

View File

@ -2,10 +2,12 @@ package com.pusong.business.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.pusong.business.domain.PsContractCompany;
import com.pusong.business.domain.PsContractInfo; import com.pusong.business.domain.PsContractInfo;
import com.pusong.business.domain.bo.PsCompanyQueryBo; import com.pusong.business.domain.bo.PsCompanyQueryBo;
import com.pusong.business.domain.vo.PsCompanyQueryVo; import com.pusong.business.domain.vo.PsCompanyQueryVo;
import com.pusong.business.domain.vo.PsSalaryVo; import com.pusong.business.domain.vo.PsSalaryVo;
import com.pusong.business.mapper.PsContractCompanyMapper;
import com.pusong.business.mapper.PsContractInfoMapper; import com.pusong.business.mapper.PsContractInfoMapper;
import com.pusong.business.service.IPsContractInfoService; import com.pusong.business.service.IPsContractInfoService;
import com.pusong.common.core.exception.ServiceException; import com.pusong.common.core.exception.ServiceException;
@ -24,6 +26,7 @@ import com.pusong.business.domain.PsCompanyInfo;
import com.pusong.business.mapper.PsCompanyInfoMapper; import com.pusong.business.mapper.PsCompanyInfoMapper;
import com.pusong.business.service.IPsCompanyInfoService; import com.pusong.business.service.IPsCompanyInfoService;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Collection; import java.util.Collection;
@ -39,6 +42,7 @@ import java.util.Collection;
public class PsCompanyInfoServiceImpl implements IPsCompanyInfoService { public class PsCompanyInfoServiceImpl implements IPsCompanyInfoService {
private final PsCompanyInfoMapper baseMapper; private final PsCompanyInfoMapper baseMapper;
private final PsContractCompanyMapper contractCompanyMapper;
private final PsContractInfoMapper contractInfoMapper; private final PsContractInfoMapper contractInfoMapper;
@ -110,14 +114,35 @@ public class PsCompanyInfoServiceImpl implements IPsCompanyInfoService {
// //如果存在重复名称则修改 // //如果存在重复名称则修改
// if(CollectionUtils.isNotEmpty(list)){bo.setId(list.get(0).getId());} // if(CollectionUtils.isNotEmpty(list)){bo.setId(list.get(0).getId());}
// } // }
//公司类型默认签约公司
PsCompanyInfo add = MapstructUtils.convert(bo, PsCompanyInfo.class); PsCompanyInfo add = MapstructUtils.convert(bo, PsCompanyInfo.class);
//新增时公司类型默认为签约公司
add.setCompanyType(add.getId() == null && StringUtils.isBlank(add.getCompanyType())?"1":add.getCompanyType());
validEntityBeforeSave(add); validEntityBeforeSave(add);
boolean flag = baseMapper.insertOrUpdate(add); boolean flag = baseMapper.insertOrUpdate(add);
if (flag) { if (flag) {
bo.setId(add.getId()); bo.setId(add.getId());
if(bo.getBusinessList() != null){//装填服务类型的公司id
bo.getBusinessList().forEach(b->b.setCompanyId(add.getId()));
}
} }
return flag; return flag;
} }
/**
* 保存公司合同关联表
*/
public void saveContractCompany(List<PsCompanyInfoBo> list,String contractCode ){
contractCompanyMapper.delete(Wrappers.<PsContractCompany>lambdaQuery().eq(PsContractCompany::getContractCode, contractCode));
List <PsContractCompany> saveList = new ArrayList<>();
for(PsCompanyInfoBo bo:list){
PsContractCompany contractCompany = new PsContractCompany();
contractCompany.setContractCode(contractCode);
contractCompany.setCompanyId(bo.getId());
saveList.add(contractCompany);
}
contractCompanyMapper.insertBatch(saveList);
}
/** /**
* 批量新增公司信息 * 批量新增公司信息
* *
@ -133,9 +158,12 @@ public class PsCompanyInfoServiceImpl implements IPsCompanyInfoService {
/** /**
* 保存前的数据校验 * 保存前的数据校验
*/ */
private void validEntityBeforeSave(PsCompanyInfo entity){ private void validEntityBeforeSave(PsCompanyInfo info){
if(entity.getId() != null){ //新增公司时
//修改 if(info.getId() == null && StringUtils.equals(info.getCompanyType(),"2")){
Long count = baseMapper.selectCount(Wrappers.<PsCompanyInfo>lambdaQuery().eq(PsCompanyInfo::getCompanyType, "2")
.eq(PsCompanyInfo::getCompanyName, info.getCompanyName()).eq(PsCompanyInfo::getCustomerNum, info.getCustomerNum()));
if(count>0){throw new ServiceException("公司:"+info.getCompanyName()+";纳税人识别号:"+info.getCustomerNum()+" 已存在,请进行选择后重新提交");}
} }
//TODO 修改公司时需要校验公司下是否有合同状态 //TODO 修改公司时需要校验公司下是否有合同状态
} }
@ -155,4 +183,16 @@ public class PsCompanyInfoServiceImpl implements IPsCompanyInfoService {
} }
return baseMapper.deleteBatchIds(ids) > 0; return baseMapper.deleteBatchIds(ids) > 0;
} }
/**
* 根据合同编码查询服务公司信息
* @param controctCode
* @return
*/
public List<PsCompanyInfoVo> getServiceCompany(String controctCode){
QueryWrapper<PsCompanyInfoVo> wq = Wrappers.<PsCompanyInfoVo>query().eq("pcc.del_flag", "0").eq("bus.del_flag","0")
.eq("det.del_flag","0").eq("pcc.controct_code", controctCode);
List<PsCompanyInfoVo> list = baseMapper.selectServiceCompanyList(wq);
return list;
}
} }

View File

@ -99,8 +99,14 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
if(bo.getCompanyInfoBo().getCustomId() == null){ if(bo.getCompanyInfoBo().getCustomId() == null){
bo.getCompanyInfoBo().setCustomId(bo.getCustomId()); bo.getCompanyInfoBo().setCustomId(bo.getCustomId());
} }
//2.插入公司信息 //2.插入签约公司信息
companyInfoService.saveBo(bo.getCompanyInfoBo()); companyInfoService.saveBo(bo.getCompanyInfoBo());
//插入服务公司
for (PsCompanyInfoBo companyInfoBo : bo.getServiceCompanyInfoList()){
companyInfoBo.setCompanyType("2");
companyInfoService.saveBo(companyInfoBo);
}
//3.如果已存在合同则进行修改否则新增 //3.如果已存在合同则进行修改否则新增
if(add == null){ if(add == null){
add = new PsContractInfo(); add = new PsContractInfo();
@ -113,7 +119,9 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
MapstructUtils.convert(bo, add); MapstructUtils.convert(bo, add);
} }
add.setCompanyId(bo.getCompanyInfoBo().getId());//公司id add.setCompanyId(bo.getCompanyInfoBo().getId());//公司id
bo.getBusinessList().forEach(item->{
List<PsContractBusinessBo> list = bo.getServiceCompanyInfoList().stream().flatMap(com -> com.getBusinessList().stream()).toList();
list.forEach(item->{
BigDecimal mony = BigDecimal.ZERO; BigDecimal mony = BigDecimal.ZERO;
if(CollectionUtils.isNotEmpty(item.getDetailBos())){ if(CollectionUtils.isNotEmpty(item.getDetailBos())){
mony = item.getDetailBos().stream().map(PsContractBusinessDetailBo::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add); mony = item.getDetailBos().stream().map(PsContractBusinessDetailBo::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
@ -123,14 +131,15 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
item.setBusinessAmount(mony); item.setBusinessAmount(mony);
} }
}); });
//保存公司合同关联表
BigDecimal sum = bo.getBusinessList().stream().map(PsContractBusinessBo::getBusinessAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add); companyInfoService.saveContractCompany(bo.getServiceCompanyInfoList(),add.getContractCode());
BigDecimal sum = list.stream().map(PsContractBusinessBo::getBusinessAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
add.setContractAmount(sum);//合同总金额 add.setContractAmount(sum);//合同总金额
add.setContractStatus(type == 1?ContractStatusEnum.INIT.getCode():ContractStatusEnum.CREATE.getCode());//合同状态 add.setContractStatus(type == 1?ContractStatusEnum.INIT.getCode():ContractStatusEnum.CREATE.getCode());//合同状态
add.setIsCancel(CommonStatusEnum.INIT.getCode()); add.setIsCancel(CommonStatusEnum.INIT.getCode());
baseMapper.insertOrUpdate(add); baseMapper.insertOrUpdate(add);
//4.删除所有服务类型和服务项目,.插入服务类型 //4.删除所有服务类型和服务项目,.插入服务类型
businessService.saveList(bo.getBusinessList(),add.getContractCode()); businessService.saveList(list,add.getContractCode());
//7.生成合同 //7.生成合同
return makePdf(add,bo,true); return makePdf(add,bo,true);
} }
@ -149,7 +158,8 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
add.setCustomManager(LoginHelper.getUserId());//所属销售经理id add.setCustomManager(LoginHelper.getUserId());//所属销售经理id
add.setCompanyId(bo.getCompanyInfoBo().getId());//公司id add.setCompanyId(bo.getCompanyInfoBo().getId());//公司id
MapstructUtils.convert(bo, add); MapstructUtils.convert(bo, add);
bo.getBusinessList().forEach(item->{ List<PsContractBusinessBo> list = bo.getServiceCompanyInfoList().stream().flatMap(com -> com.getBusinessList().stream()).toList();
list.forEach(item->{
BigDecimal mony = BigDecimal.ZERO; BigDecimal mony = BigDecimal.ZERO;
if(CollectionUtils.isNotEmpty(item.getDetailBos())){ if(CollectionUtils.isNotEmpty(item.getDetailBos())){
mony = item.getDetailBos().stream().map(PsContractBusinessDetailBo::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add); mony = item.getDetailBos().stream().map(PsContractBusinessDetailBo::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
@ -159,7 +169,7 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
item.setBusinessAmount(mony); item.setBusinessAmount(mony);
} }
}); });
BigDecimal sum = bo.getBusinessList().stream().map(PsContractBusinessBo::getBusinessAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add); BigDecimal sum = list.stream().map(PsContractBusinessBo::getBusinessAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
add.setContractAmount(sum);//合同总金额 add.setContractAmount(sum);//合同总金额
return makePdf(add,bo,false); return makePdf(add,bo,false);
} }
@ -180,12 +190,13 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
return null; return null;
} }
PsContractInfoVo vo = MapstructUtils.convert(info, PsContractInfoVo.class); PsContractInfoVo vo = MapstructUtils.convert(info, PsContractInfoVo.class);
//装填公司信息 //装填签约公司信息
if(vo.getCompanyId() != null){ if(vo.getCompanyId() != null){
vo.setPsCompanyInfoVo(companyInfoService.queryById(vo.getCompanyId())); vo.setPsCompanyInfoVo(companyInfoService.queryById(vo.getCompanyId()));
} }
fillContractInfo(vo); //装填服务公司信息
List<PsCompanyInfoVo> list = companyInfoService.getServiceCompany(vo.getContractCode());
vo.setPsCompanySerivceVo(list);
return vo; return vo;
} }
@ -270,8 +281,14 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
} }
//3.插入公司信息 //3.插入公司信息
companyInfoService.saveBo(bo.getCompanyInfoBo()); companyInfoService.saveBo(bo.getCompanyInfoBo());
//插入服务公司
for (PsCompanyInfoBo companyInfoBo : bo.getServiceCompanyInfoList()){
companyInfoBo.setCompanyType("2");
companyInfoService.saveBo(companyInfoBo);
}
//4.装填合同信息 //4.装填合同信息
bo.getBusinessList().forEach(item->{ List<PsContractBusinessBo> list = bo.getServiceCompanyInfoList().stream().flatMap(com -> com.getBusinessList().stream()).toList();
list.forEach(item->{
BigDecimal mony = BigDecimal.ZERO; BigDecimal mony = BigDecimal.ZERO;
if(CollectionUtils.isNotEmpty(item.getDetailBos())){ if(CollectionUtils.isNotEmpty(item.getDetailBos())){
mony = item.getDetailBos().stream().map(PsContractBusinessDetailBo::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add); mony = item.getDetailBos().stream().map(PsContractBusinessDetailBo::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
@ -281,7 +298,7 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
item.setBusinessAmount(mony); item.setBusinessAmount(mony);
} }
}); });
BigDecimal sum = bo.getBusinessList().stream().map(PsContractBusinessBo::getBusinessAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add); BigDecimal sum = list.stream().map(PsContractBusinessBo::getBusinessAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
bo.setContractAmount(sum);//合同总金额 bo.setContractAmount(sum);//合同总金额
//5.已回款之后的合同修改后走审批 //5.已回款之后的合同修改后走审批
@ -301,7 +318,7 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
add.setCompanyId(bo.getCompanyInfoBo().getId());//公司id add.setCompanyId(bo.getCompanyInfoBo().getId());//公司id
this.updateByCode(add); this.updateByCode(add);
//4.删除所有服务类型和服务项目,.插入服务类型 //4.删除所有服务类型和服务项目,.插入服务类型
businessService.saveList(bo.getBusinessList(),add.getContractCode()); businessService.saveList(list,add.getContractCode());
makePdf(add,bo,true); makePdf(add,bo,true);
} }
return true; return true;
@ -386,6 +403,7 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
* @param bo * @param bo
*/ */
public Long makePdf(PsContractInfo add ,PsContractInfoBo bo,boolean isSave){ public Long makePdf(PsContractInfo add ,PsContractInfoBo bo,boolean isSave){
//todo 合同pdf
Long ossId = null; Long ossId = null;
SysDictData main = dictDataService.selectDict("contract_main", add.getContractMain()); SysDictData main = dictDataService.selectDict("contract_main", add.getContractMain());
bo.getBusinessList().forEach(item->{ bo.getBusinessList().forEach(item->{
@ -436,6 +454,7 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
log.error("生成pdf失败",e); log.error("生成pdf失败",e);
} }
return ossId; return ossId;
return null;
} }
/** /**
@ -611,10 +630,11 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
return qw; return qw;
} }
private PsContractInfoVo fillContractInfo(PsContractInfoVo vo){ private PsContractInfoVo fillContractInfo(PsContractInfoVo vo){
//装填服务类型和服务项目信息 //装填服务类型和服务项目信息
List<PsContractBusinessVo> list = businessService.selectBusinessList(List.of(vo.getContractCode())); // List<PsContractBusinessVo> list = businessService.selectBusinessList(List.of(vo.getContractCode()));
vo.setBusinessTypeName(StringUtils.join(list.stream().map(PsContractBusinessVo::getBusinessType).collect(Collectors.toList()), ",")); // vo.setBusinessTypeName(StringUtils.join(list.stream().map(PsContractBusinessVo::getBusinessType).collect(Collectors.toList()), ","));
vo.setBusinessVoList(list);
fillMoney(vo); fillMoney(vo);
if(vo.getFirstApplyDate() != null){ if(vo.getFirstApplyDate() != null){
Date date = new Date(); Date date = new Date();
@ -644,10 +664,10 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
if(StringUtils.equals(CommonStatusEnum.FAIL.getCode(),vo.getIsCancel())){ if(StringUtils.equals(CommonStatusEnum.FAIL.getCode(),vo.getIsCancel())){
vo.setContractStatusDesc(approverRecordService.getLastFail(vo.getContractCode(),vo.getContractCode(),List.of(ApproverTypeEnum.CANCELLA.getCode()))); vo.setContractStatusDesc(approverRecordService.getLastFail(vo.getContractCode(),vo.getContractCode(),List.of(ApproverTypeEnum.CANCELLA.getCode())));
} }
//合同作废审批 // //合同作废审批
if(StringUtils.equals(CommonStatusEnum.FAIL.getCode(),vo.getIsCancel())){ // if(StringUtils.equals(CommonStatusEnum.FAIL.getCode(),vo.getIsCancel())){
vo.setContractStatusDesc(approverRecordService.getLastFail(vo.getContractCode(),vo.getContractCode(),List.of(ApproverTypeEnum.CANCELLA.getCode()))); // vo.setContractStatusDesc(approverRecordService.getLastFail(vo.getContractCode(),vo.getContractCode(),List.of(ApproverTypeEnum.CANCELLA.getCode())));
} // }
//天数 //天数
if(vo.getEndServiceDate() != null){ if(vo.getEndServiceDate() != null){
int num = DateUtils.differentDaysByMillisecond(new Date(), vo.getEndServiceDate()); int num = DateUtils.differentDaysByMillisecond(new Date(), vo.getEndServiceDate());

View File

@ -283,7 +283,7 @@ public class PsCustomInfoServiceImpl implements IPsCustomInfoService {
baseMapper.updateById(update); baseMapper.updateById(update);
//修改公司信息 //修改公司信息
if(CollectionUtils.isNotEmpty(bo.getCompanyInfoBos())){ if(CollectionUtils.isNotEmpty(bo.getCompanyInfoBos())){
bo.getCompanyInfoBos().forEach(item->item.setCustomId(bo.getId())); bo.getCompanyInfoBos().forEach(item->{item.setCustomId(bo.getId());item.setCompanyType("1");});
companyInfoService.saveBatchBo(bo.getCompanyInfoBos()); companyInfoService.saveBatchBo(bo.getCompanyInfoBos());
} }
if(CollectionUtils.isNotEmpty(bo.getCompanyIds())){ if(CollectionUtils.isNotEmpty(bo.getCompanyIds())){

View File

@ -3,6 +3,17 @@
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.pusong.business.mapper.PsCompanyInfoMapper"> <mapper namespace="com.pusong.business.mapper.PsCompanyInfoMapper">
<resultMap id="serviceCompanyServiceResult" type="com.pusong.business.domain.vo.PsCompanyInfoVo">
<id column="ID" property="id"></id>
<collection columnPrefix="bus_" property="businessVoList" ofType="com.pusong.business.domain.vo.PsContractBusinessVo" >
<collection columnPrefix="detail_" property="detailVoList" ofType="com.pusong.business.domain.vo.PsContractBusinessDetailVo" >
<!-- <id column="ID" property="id"></id>-->
<!-- <result column="CUSTOMER_NAME" property="customerName" />-->
<!-- <result column="CUSTOMER_ID_NO" property="customerIdNo" />-->
</collection>
</collection>
</resultMap>
<select id="selectPageList" resultType="com.pusong.business.domain.vo.PsCompanyQueryVo"> <select id="selectPageList" resultType="com.pusong.business.domain.vo.PsCompanyQueryVo">
select cus.custom_manager, select cus.custom_manager,
com.company_name, com.company_name,
@ -19,4 +30,28 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
${ew.getCustomSqlSegment} ${ew.getCustomSqlSegment}
</select> </select>
<select id="selectServiceCompanyList" resultMap="serviceCompanyServiceResult">
select com.*,
bus.business_amount bus_business_amount,
bus.business_desc bus_business_desc,
bus.business_type bus_business_type,
bus.company_id bus_company_id,
bus.contract_code bus_contract_code,
bus.end_date bus_end_date,
bus.id bus_id,
bus.start_date bus_start_date,
det.contract_code detail_contract_code,
det.business_project detail_business_project,
det.business_project_label detail_business_project_label,
det.amount detail_amount,
det.amount_desc detail_amount_desc,
det.extent_info detail_extent_info
from ps_contract_company pcc
left join ps_company_info com on pcc.company_id = com.id
left join ps_contract_business bus on bus.company_id = com.id and bus.contract_code = pcc.contract_code
left join ps_contract_business_detail det on det.business_id = bus.id
${ew.getCustomSqlSegment}
</select>
</mapper> </mapper>

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.pusong.business.mapper.PsContractCompanyMapper">
</mapper>