This commit is contained in:
1073413548 2024-08-21 18:05:17 +08:00
parent ca43bad3d5
commit a7459e85c1
19 changed files with 124 additions and 71 deletions

View File

@ -21,7 +21,8 @@ public class DictTypeTranslationImpl implements TranslationInterface<String> {
@Override @Override
public String translation(Object key, String other) { public String translation(Object key, String other) {
if (key instanceof String dictValue && StringUtils.isNotBlank(other)) { if (key instanceof String dictValue && StringUtils.isNotBlank(other)) {
return dictService.getDictLabel(other, dictValue); String ret = dictService.getDictLabel(other, dictValue);
return StringUtils.isBlank(ret)? dictValue:ret;
} }
return null; return null;
} }

View File

@ -2,6 +2,7 @@ package com.pusong.business.controller;
import java.util.List; import java.util.List;
import com.pusong.business.service.IPsContractInfoService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*; import jakarta.validation.constraints.*;
@ -35,6 +36,7 @@ import com.pusong.common.mybatis.core.page.TableDataInfo;
public class PsApproverRecordController extends BaseController { public class PsApproverRecordController extends BaseController {
private final IPsApproverRecordService psApproverRecordService; private final IPsApproverRecordService psApproverRecordService;
private final IPsContractInfoService contractInfoService;
/** /**
* 查询审批记录列表 * 查询审批记录列表
@ -57,7 +59,7 @@ public class PsApproverRecordController extends BaseController {
@GetMapping("/approver") @GetMapping("/approver")
public R<Void> approver(@NotBlank(message = "操作类型不能为空") String operate, public R<Void> approver(@NotBlank(message = "操作类型不能为空") String operate,
@NotNull(message = "数据id不能为空") Long id, String desc) { @NotNull(message = "数据id不能为空") Long id, String desc) {
psApproverRecordService.approver(operate, id,desc); contractInfoService.finish(psApproverRecordService.approver(operate, id,desc));
return R.ok(); return R.ok();
} }

View File

@ -45,7 +45,7 @@ public class PsContractPayController extends BaseController {
@SaCheckPermission("business:contractPay:list") @SaCheckPermission("business:contractPay:list")
@GetMapping("/list") @GetMapping("/list")
public R<List<PsContractPayVo>> list(@NotBlank(message = "合同编码不能为空") String contractCode) { public R<List<PsContractPayVo>> list(@NotBlank(message = "合同编码不能为空") String contractCode) {
return R.ok(psContractPayService.queryListByContractCode(contractCode,null,null)); return R.ok(psContractPayService.queryAllListByContractCode(contractCode));
} }
/** /**
* 获取合同回款记录详细信息 * 获取合同回款记录详细信息
@ -59,17 +59,7 @@ public class PsContractPayController extends BaseController {
return R.ok(psContractPayService.queryById(id)); return R.ok(psContractPayService.queryById(id));
} }
/**
* 修改合同回款记录
*/
@SaCheckPermission("business:contractPay:edit")
@Log(title = "合同回款记录", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody PsContractPayBo bo) {
psContractPayService.updateByBo(bo);
return R.ok();
}
/** /**
* 退款列表查询 * 退款列表查询

View File

@ -103,4 +103,13 @@ public class PsCustomInfoBo {
* 回访信息 * 回访信息
*/ */
private List<PsCustomCallbackBo> callbackBos; private List<PsCustomCallbackBo> callbackBos;
/**
* 公司信息集合修改客户信息时使用
*/
private List<PsCompanyInfoBo> companyInfoBos;
/**
* 删除的公司id集合修改客户信息时使用
*/
private List<Long> companyIds;
} }

View File

@ -45,13 +45,22 @@ public class PsApproverRecordVo implements Serializable {
/** /**
* 主键id * 主键id
*/ */
@ExcelProperty(value = "主键id")
private Long id; private Long id;
/**
* 合同编码
*/
private String contractCode;
/**
* 用户id
*/
private String cusId;
/**
* 公司id
*/
private String comId;
/** /**
* 审批业务类型 * 审批业务类型
*/ */
@ExcelProperty(value = "审批业务类型")
private String businessType; private String businessType;
/** /**
@ -69,20 +78,16 @@ public class PsApproverRecordVo implements Serializable {
/** /**
* 审批状态1待审批2成功3失败 * 审批状态1待审批2成功3失败
*/ */
@ExcelProperty(value = "审批状态", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "1=待审批2成功3失败")
private String approverStatus; private String approverStatus;
/** /**
* 申请说明 * 申请说明
*/ */
@ExcelProperty(value = "申请说明")
private String applyDesc; private String applyDesc;
/** /**
* 审批说明 * 审批说明
*/ */
@ExcelProperty(value = "审批说明")
private String approverDesc; private String approverDesc;
/** /**
@ -177,4 +182,9 @@ public class PsApproverRecordVo implements Serializable {
*/ */
private Integer companyNum; private Integer companyNum;
/**
* 支付凭证
*/
private String payCertification;
} }

View File

@ -11,6 +11,12 @@ import java.util.List;
@Getter @Getter
@AllArgsConstructor @AllArgsConstructor
public enum PayStatusEnum { public enum PayStatusEnum {
/**
* 回款状态审批中0支付中-审批成功1成功
* -审批拒绝2失败
* 退款状态退款审批中3-审批拒绝2
* -审批成功0-财务操作退款1成功
*/
PAYAPPO("3","退款支付审批中"), PAYAPPO("3","退款支付审批中"),
PAYING("0","支付中"), PAYING("0","支付中"),
SUCCESS("1","成功"), SUCCESS("1","成功"),

View File

@ -48,7 +48,7 @@ public interface IPsApproverRecordService {
* @param id 审批表id * @param id 审批表id
* @return * @return
*/ */
void approver(String operate, Long id,String desc); String approver(String operate, Long id,String desc);
// //
// /** // /**
// * 新增审批记录 // * 新增审批记录

View File

@ -39,6 +39,13 @@ public interface IPsCompanyInfoService {
* @return 是否新增成功 * @return 是否新增成功
*/ */
Boolean saveBo(PsCompanyInfoBo bo); Boolean saveBo(PsCompanyInfoBo bo);
/**
* 批量新增公司信息
*
* @param bos 公司信息
* @return 是否新增成功
*/
Boolean saveBatchBo(List<PsCompanyInfoBo> bos);
/** /**

View File

@ -31,7 +31,13 @@ public interface IPsContractPayService {
List<PsContractPayVo> queryListByContractCode(String contractCode, String business, PayStatusEnum enu); List<PsContractPayVo> queryListByContractCode(String contractCode, String business, PayStatusEnum enu);
/**
* 查询合同所有支付记录列表
*
* @param contractCode 合同编码
* @return
*/
List<PsContractPayVo> queryAllListByContractCode(String contractCode);
/** /**
* 添加支付记录 * 添加支付记录
@ -62,13 +68,7 @@ public interface IPsContractPayService {
Boolean updateById(PsContractPay pay); Boolean updateById(PsContractPay pay);
/**
* 修改合同回款记录
*
* @param bo 合同回款记录
* @return 是否修改成功
*/
void updateByBo(PsContractPayBo bo);
/** /**
* 退款列表查询 * 退款列表查询

View File

@ -56,7 +56,7 @@ public class PayContractApproverServiceImpl extends ApproverAbstractServiceImpl
update.setPayStatus(PayStatusEnum.SUCCESS.getCode()); update.setPayStatus(PayStatusEnum.SUCCESS.getCode());
payService.updateById(update); payService.updateById(update);
List<PsContractPayVo> list = payService.queryListByContractCode(info.getContractCode(), PayBuinessStatusEnum.PAY.getCode(), PayStatusEnum.PAYING); List<PsContractPayVo> list = payService.queryListByContractCode(info.getContractCode(), PayBuinessStatusEnum.PAY.getCode(), PayStatusEnum.SUCCESS);
//如果没有过回款记录初始化任务主表,并修改合同状态 //如果没有过回款记录初始化任务主表,并修改合同状态
if(CollectionUtils.isEmpty(list) && StringUtils.equals(ContractStatusEnum.CREATE.getCode(),info.getContractStatus())){ if(CollectionUtils.isEmpty(list) && StringUtils.equals(ContractStatusEnum.CREATE.getCode(),info.getContractStatus())){
log.info("合同未回款过,初始化任务主表"); log.info("合同未回款过,初始化任务主表");
@ -73,7 +73,6 @@ public class PayContractApproverServiceImpl extends ApproverAbstractServiceImpl
updateInfo.setContractStatus(ContractStatusEnum.RETURN.getCode()); updateInfo.setContractStatus(ContractStatusEnum.RETURN.getCode());
psContractInfoService.updateByCode(updateInfo); psContractInfoService.updateByCode(updateInfo);
} }
psContractInfoService.finish(psApproverRecord.getContractCode());
} }
@Override @Override

View File

@ -13,7 +13,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
/** /**
* 退款审批 * 退款审批()
*/ */
@RequiredArgsConstructor @RequiredArgsConstructor
@Service @Service

View File

@ -45,7 +45,6 @@ public class RolbackApproverServiceImpl extends ApproverAbstractServiceImpl {
psContractInfo.setRollBackStatus(CommonStatusEnum.SUCCESS.getCode()); psContractInfo.setRollBackStatus(CommonStatusEnum.SUCCESS.getCode());
psContractInfo.setRollBackPdf(Long.valueOf(psApproverRecord.getUpdateData())); psContractInfo.setRollBackPdf(Long.valueOf(psApproverRecord.getUpdateData()));
contractInfoService.updateByCode(psContractInfo); contractInfoService.updateByCode(psContractInfo);
contractInfoService.finish(psContractInfo.getContractCode());
} }
@Override @Override

View File

@ -36,7 +36,6 @@ public class TaskFinishApproverServiceImpl extends ApproverAbstractServiceImpl {
PsTaskMain info = taskMainMapper.selectById(psApproverRecord.getBusinessId()); PsTaskMain info = taskMainMapper.selectById(psApproverRecord.getBusinessId());
info.setTaskStatus(TaskStatusEnum.FINISH.getCode()); info.setTaskStatus(TaskStatusEnum.FINISH.getCode());
taskMainMapper.updateById(info); taskMainMapper.updateById(info);
contractInfoService.finish(info.getContractCode());
} }
/** /**

View File

@ -96,7 +96,7 @@ public class PsApproverRecordServiceImpl implements IPsApproverRecordService {
* @return * @return
*/ */
@Transactional @Transactional
public void approver(String operate, Long id,String desc){ public String approver(String operate, Long id,String desc){
PsApproverRecord info = baseMapper.selectById(id); PsApproverRecord info = baseMapper.selectById(id);
if(!StringUtils.equals(ApproverStatusEnum.INIT.getCode(),info.getApproverStatus())){ if(!StringUtils.equals(ApproverStatusEnum.INIT.getCode(),info.getApproverStatus())){
throw new ServiceException("操作失败:该审批状态已变更"); throw new ServiceException("操作失败:该审批状态已变更");
@ -114,6 +114,12 @@ public class PsApproverRecordServiceImpl implements IPsApproverRecordService {
info.setApproverDate(new Date()); info.setApproverDate(new Date());
info.setApproverDesc(desc); info.setApproverDesc(desc);
baseMapper.updateById(info); baseMapper.updateById(info);
if(StringUtils.equals(info.getBusinessType(),ApproverTypeEnum.PAY.getCode())||
StringUtils.equals(info.getBusinessType(),ApproverTypeEnum.ROLBACK.getCode())||
StringUtils.equals(info.getBusinessType(),ApproverTypeEnum.TASKFINISH.getCode())){
return info.getContractCode();
}
return null;
} }
// /** // /**
// * 新增审批记录 // * 新增审批记录

View File

@ -1,6 +1,10 @@
package com.pusong.business.service.impl; package com.pusong.business.service.impl;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.pusong.business.domain.PsContractInfo;
import com.pusong.business.mapper.PsContractInfoMapper;
import com.pusong.business.service.IPsContractInfoService;
import com.pusong.common.core.exception.ServiceException;
import com.pusong.common.core.utils.MapstructUtils; import com.pusong.common.core.utils.MapstructUtils;
import com.pusong.common.core.utils.StringUtils; import com.pusong.common.core.utils.StringUtils;
import com.pusong.common.mybatis.core.page.TableDataInfo; import com.pusong.common.mybatis.core.page.TableDataInfo;
@ -31,6 +35,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 PsContractInfoMapper contractInfoMapper;
/** /**
@ -72,15 +77,15 @@ public class PsCompanyInfoServiceImpl implements IPsCompanyInfoService {
*/ */
@Override @Override
public Boolean saveBo(PsCompanyInfoBo bo) { public Boolean saveBo(PsCompanyInfoBo bo) {
if(bo.getId() == null){ // if(bo.getId() == null){
//公司名称唯一 // //公司名称唯一
PsCompanyInfoBo query = new PsCompanyInfoBo(); // PsCompanyInfoBo query = new PsCompanyInfoBo();
query.setCompanyName(bo.getCompanyName()); // query.setCompanyName(bo.getCompanyName());
query.setCustomId(bo.getCustomId()); // query.setCustomId(bo.getCustomId());
List<PsCompanyInfoVo> list = this.queryList(bo); // List<PsCompanyInfoVo> list = this.queryList(bo);
//如果存在重复名称则修改 // //如果存在重复名称则修改
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);
validEntityBeforeSave(add); validEntityBeforeSave(add);
boolean flag = baseMapper.insertOrUpdate(add); boolean flag = baseMapper.insertOrUpdate(add);
@ -89,7 +94,17 @@ public class PsCompanyInfoServiceImpl implements IPsCompanyInfoService {
} }
return flag; return flag;
} }
/**
* 批量新增公司信息
*
* @param bos 公司信息
* @return 是否新增成功
*/
public Boolean saveBatchBo(List<PsCompanyInfoBo> bos){
List<PsCompanyInfo> adds = MapstructUtils.convert(bos, PsCompanyInfo.class);
boolean flag = baseMapper.insertOrUpdateBatch(adds);
return flag;
}
/** /**
* 保存前的数据校验 * 保存前的数据校验
@ -111,7 +126,8 @@ public class PsCompanyInfoServiceImpl implements IPsCompanyInfoService {
@Override @Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) { public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){ if(isValid){
//TODO 删除公司时需要校验公司下是否有合同状态 List<PsContractInfo> list = contractInfoMapper.selectList(Wrappers.<PsContractInfo>lambdaQuery().in(PsContractInfo::getCompanyId, ids).eq(PsContractInfo::getDelFlag, "0"));
if(CollectionUtils.isNotEmpty(list)){throw new ServiceException("删除公司失败,已有合同使用");}
} }
return baseMapper.deleteBatchIds(ids) > 0; return baseMapper.deleteBatchIds(ids) > 0;
} }

View File

@ -290,6 +290,7 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
this.updateByCode(add); this.updateByCode(add);
//4.删除所有服务类型和服务项目,.插入服务类型 //4.删除所有服务类型和服务项目,.插入服务类型
businessService.saveList(bo.getBusinessList(),add.getContractCode()); businessService.saveList(bo.getBusinessList(),add.getContractCode());
makePdf(add,bo,true);
} }
return true; return true;
} }
@ -406,6 +407,7 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
this.updateByCode(psContractInfo); this.updateByCode(psContractInfo);
//删除原合同 //删除原合同
if(add.getPdfId() != null)ossService.deleteWithValidByIds(List.of(add.getPdfId()),false); if(add.getPdfId() != null)ossService.deleteWithValidByIds(List.of(add.getPdfId()),false);
Optional<Long> a = Optional.ofNullable(add.getPdfId());
} }
}catch (Exception e){ }catch (Exception e){
log.error("生成pdf失败",e); log.error("生成pdf失败",e);
@ -446,7 +448,11 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
* 合同完成 * 合同完成
* @param contractCode 合同编码 * @param contractCode 合同编码
*/ */
@Transactional
public void finish(String contractCode){ public void finish(String contractCode){
if(StringUtils.isBlank(contractCode)){
return;
}
Long num = taskMainMapper.selectCount(Wrappers.<PsTaskMain>lambdaQuery() Long num = taskMainMapper.selectCount(Wrappers.<PsTaskMain>lambdaQuery()
.eq(PsTaskMain::getContractCode, contractCode) .eq(PsTaskMain::getContractCode, contractCode)
.ne(PsTaskMain::getTaskType, TaskTypeEnum.INVOICE.getCode()) .ne(PsTaskMain::getTaskType, TaskTypeEnum.INVOICE.getCode())
@ -457,7 +463,7 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
&& num<=0 && info.getResidualMoney().compareTo(BigDecimal.ZERO)<=0){ && num<=0 && info.getResidualMoney().compareTo(BigDecimal.ZERO)<=0){
PsContractInfo psContractInfo = new PsContractInfo(); PsContractInfo psContractInfo = new PsContractInfo();
psContractInfo.setContractCode(contractCode); psContractInfo.setContractCode(contractCode);
info.setContractStatus(ContractStatusEnum.SUCCESS.getCode()); psContractInfo.setContractStatus(ContractStatusEnum.SUCCESS.getCode());
this.updateByCode(psContractInfo); this.updateByCode(psContractInfo);
} }
} }

View File

@ -64,6 +64,20 @@ public class PsContractPayServiceImpl implements IPsContractPayService {
return list == null?new ArrayList<>():list; return list == null?new ArrayList<>():list;
} }
/**
* 查询合同所有支付记录列表
*
* @param contractCode 合同编码
* @return
*/
public List<PsContractPayVo> queryAllListByContractCode(String contractCode){
if(StringUtils.isBlank(contractCode)){return new ArrayList<>();}
List<PsContractPayVo> list = baseMapper.selectVoList(Wrappers.<PsContractPay>lambdaQuery().
eq(PsContractPay::getContractCode, contractCode).eq(PsContractPay::getDelFlag,0)
.orderByAsc(PsContractPay::getPayDate));
return list == null?new ArrayList<>():list;
}
/** /**
* 添加支付记录 * 添加支付记录
* *
@ -136,20 +150,7 @@ public class PsContractPayServiceImpl implements IPsContractPayService {
return baseMapper.updateById(pay) > 0; return baseMapper.updateById(pay) > 0;
} }
/**
* 修改合同回款记录
*
* @param bo 合同回款记录
* @return 是否修改成功
*/
@Override
public void updateByBo(PsContractPayBo bo) {
PsContractPay info = baseMapper.selectById(bo.getId());
//发起审批
ApproverService service = container.getService(ApproverTypeEnum.PAY.getCode());
service.apply(bo.getId()+"",info.getContractCode(),bo.getUpdateDesc(), bo);
}
/** /**
* 退款列表查询 * 退款列表查询
@ -188,6 +189,7 @@ public class PsContractPayServiceImpl implements IPsContractPayService {
SysOssVo vo = ossService.upload(file); SysOssVo vo = ossService.upload(file);
payCertifications.add(vo.getOssId()+""); payCertifications.add(vo.getOssId()+"");
} }
info.setPayDate(new Date());
info.setPayCertification(StringUtils.join(payCertifications,",")); info.setPayCertification(StringUtils.join(payCertifications,","));
info.setPayStatus(PayStatusEnum.SUCCESS.getCode()); info.setPayStatus(PayStatusEnum.SUCCESS.getCode());
baseMapper.insert(info); baseMapper.insert(info);

View File

@ -78,9 +78,8 @@ public class PsCustomInfoServiceImpl implements IPsCustomInfoService {
@Override @Override
public List<PsCustomInfoVo> listByLoginUser() { public List<PsCustomInfoVo> listByLoginUser() {
//查询客户基本信息 //查询客户基本信息
List<PsCustomInfoVo> list = baseMapper.selectVoList(new QueryWrapper<PsCustomInfo>().select("id","custom_name") return baseMapper.selectVoList(new QueryWrapper<PsCustomInfo>().select("id","custom_name")
.lambda().eq(PsCustomInfo::getDelFlag, 0)); .lambda().eq(PsCustomInfo::getDelFlag, 0));
return list;
} }
/** /**
@ -174,9 +173,7 @@ public class PsCustomInfoServiceImpl implements IPsCustomInfoService {
} }
//最早的公司名称 //最早的公司名称
if(CollectionUtils.isNotEmpty(info.getPsCompanyInfoVos())){ if(CollectionUtils.isNotEmpty(info.getPsCompanyInfoVos())){
//找到最近修改的公司名称 info.setCompanyName(info.getPsCompanyInfoVos().get(0).getCompanyName());
info.setCompanyName(info.getPsCompanyInfoVos().stream().max(Comparator.comparingLong(item -> item.getUpdateTime().getTime()))
.orElse(new PsCompanyInfoVo()).getCompanyName());
info.setCompanyNum(info.getPsCompanyInfoVos().size()); info.setCompanyNum(info.getPsCompanyInfoVos().size());
}else{ }else{
info.setCompanyNum(0); info.setCompanyNum(0);
@ -265,11 +262,11 @@ public class PsCustomInfoServiceImpl implements IPsCustomInfoService {
validEntityBeforeSave(update); validEntityBeforeSave(update);
baseMapper.updateById(update); baseMapper.updateById(update);
//修改公司信息 //修改公司信息
if(StringUtils.isNotBlank(bo.getCompanyName())){ if(CollectionUtils.isNotEmpty(bo.getCompanyInfoBos())){
PsCompanyInfoBo com = new PsCompanyInfoBo(); companyInfoService.saveBatchBo(bo.getCompanyInfoBos());
com.setCustomId(bo.getId()); }
com.setCompanyName(bo.getCompanyName()); if(CollectionUtils.isNotEmpty(bo.getCompanyIds())){
companyInfoService.saveBo(com); companyInfoService.deleteWithValidByIds(bo.getCompanyIds(),true);
} }
return true; return true;
} }

View File

@ -5,9 +5,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<mapper namespace="com.pusong.business.mapper.PsApproverRecordMapper"> <mapper namespace="com.pusong.business.mapper.PsApproverRecordMapper">
<select id="selectPageApproverList" resultType="com.pusong.business.domain.vo.PsApproverRecordVo"> <select id="selectPageApproverList" resultType="com.pusong.business.domain.vo.PsApproverRecordVo">
select app.* select app.*
, (select pay_certification from ps_contract_pay pca where pca.id = app.business_id and app.business_type = 'pay' ) as pay_certification
, info.pdf_id , info.pdf_id
, info.custom_manager , info.custom_manager
, com.id com_id
, com.company_name , com.company_name
, com.company_name
, cus.id cus_id
, cus.custom_name , cus.custom_name
, cus.custom_mobile , cus.custom_mobile
, info.roll_back_pdf , info.roll_back_pdf