生成合同

This commit is contained in:
1073413548 2024-08-15 09:46:14 +08:00
parent 0ec418b257
commit d92d80ca55
23 changed files with 449 additions and 37 deletions

View File

@ -167,13 +167,15 @@ public class PsContractInfoController extends BaseController {
/** /**
* 免费派单 * 免费派单
* @param contractCode 合同编码 * @param contractCode 合同编码
* @param businessType 服务类别
* @param businessProject 服务项目
* @return * @return
*/ */
@Log(title = "免费派单") @Log(title = "免费派单")
@SaCheckPermission("business:task:list") @SaCheckPermission("business:task:list")
@GetMapping("/freeWork") @GetMapping("/freeWork")
public R<Void> freeWork(@org.jetbrains.annotations.NotNull String contractCode) { public R<Void> freeWork(@NotNull String contractCode,@NotNull String businessType,@NotNull String businessProject) {
psContractInfoService.freeWork(contractCode); psContractInfoService.freeWork(contractCode,businessType,businessProject);
return R.ok(); return R.ok();
} }
// //

View File

@ -66,6 +66,17 @@ public class PsContractOperateController extends BaseController {
return R.ok(); return R.ok();
} }
/**
* 合同添加退款记录
*/
@SaCheckPermission("business:contractOperate:addReturnRecord")
@PostMapping(value = "/addReturnRecord", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public R<Void> addReturnRecord(@RequestPart("files") List<MultipartFile> files,
@Validated(AddGroup.class) PsContractPayBo psContractPayBo)throws Exception {
payService.addPay( files, psContractPayBo);
return R.ok();
}
/** /**
* 回传合同 * 回传合同
*/ */

View File

@ -36,16 +36,39 @@ public class PsContractPayController extends BaseController {
private final IPsContractPayService psContractPayService; private final IPsContractPayService psContractPayService;
/* *//** /**
* 查询合同回款记录列表 * 查询合同回款记录列表
*//* */
@SaCheckPermission("business:contractPay:list") @SaCheckPermission("business:contractPay:list")
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo<PsContractPayVo> list(PsContractPayBo bo, PageQuery pageQuery) { public List<PsContractPayVo> list(@NotBlank(message = "合同编码不能为空") String contractCode) {
return psContractPayService.queryPageList(bo, pageQuery); return psContractPayService.queryListByContractCode(contractCode,null,null);
}
/**
* 获取合同回款记录详细信息
*
* @param id 主键
*/
@SaCheckPermission("business:contractPay:query")
@GetMapping("/{id}")
public R<PsContractPayVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long 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) {
// return toAjax(psContractPayService.updateById(bo));
// }
/**
* 导出合同回款记录列表 * 导出合同回款记录列表
*//* *//*
@SaCheckPermission("business:contractPay:export") @SaCheckPermission("business:contractPay:export")

View File

@ -143,6 +143,20 @@ public class PsTaskController extends BaseController {
return R.ok(); return R.ok();
} }
/**
* 免费工单任务作废
* @param id 任务主表id
* @param desc 作废原因
* @return
*/
@Log(title = "免费工单任务作废")
@SaCheckPermission("business:task:list")
@GetMapping("/cancel")
public R<Void> taskReset(@NotNull("任务id不能为空") Long id,@NotNull("作废原因不能为空") String desc) {
psTaskMainService.cancel(id,desc);
return R.ok();
}
// /** // /**
// * 导出主任务列表 // * 导出主任务列表

View File

@ -58,7 +58,7 @@ public class PsContractPay extends TenantEntity {
private String payType; private String payType;
/** /**
* 支付方式1扫码2对公3现金 * 支付方式1扫码2对公3现金4对私
*/ */
private String payMode; private String payMode;

View File

@ -48,26 +48,23 @@ public class PsContractPayBo {
/** /**
* 回款日期 * 回款日期
*/ */
@NotNull(message = "回款日期不能为空", groups = { AddGroup.class, EditGroup.class })
@JsonFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd")
private Date payDate; private Date payDate;
/** /**
* 回款类型1全款2分期 * 回款类型1全款2分期
*/ */
@NotBlank(message = "回款类型1全款2分期不能为空", groups = { AddGroup.class, EditGroup.class })
private String payType; private String payType;
/** /**
* 支付方式1扫码2对公3现金 * 支付方式1扫码2对公3现金4对私
*/ */
@NotBlank(message = "支付方式1扫码2对公3现金)不能为空", groups = { AddGroup.class, EditGroup.class }) @NotBlank(message = "支付方式1扫码2对公3现金4对私)不能为空", groups = { AddGroup.class, EditGroup.class })
private String payMode; private String payMode;
/** /**
* 收款主体 * 收款主体
*/ */
@NotBlank(message = "收款主体不能为空", groups = { AddGroup.class, EditGroup.class })
private String gathMain; private String gathMain;
// /** // /**

View File

@ -68,7 +68,7 @@ public class PsContractPayVo implements Serializable {
private String payType; private String payType;
/** /**
* 支付方式1扫码2对公3现金 * 支付方式1扫码2对公3现金4对私
*/ */
private String payMode; private String payMode;

View File

@ -15,7 +15,10 @@ public enum ApproverTypeEnum {
SIGN("sign","合同签章审批"), SIGN("sign","合同签章审批"),
ROLBACK("rolback","回传合同审批"), ROLBACK("rolback","回传合同审批"),
TASKFINISH("taskFinish","任务完成审批"), TASKFINISH("taskFinish","任务完成审批"),
PUBLIC("PUBLIC","公海认领审批"); PUBLIC("public","公海认领审批"),
TASKCANCE("taskcance","任务作废审批"),
RETURN("RETURN","退款审批"),
FREE("free","免费工单审批");
private String code; private String code;
private String text; private String text;
} }

View File

@ -3,15 +3,28 @@ package com.pusong.business.enums;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;
import java.util.List;
/** /**
* 支付状态美剧 * 支付状态美剧
*/ */
@Getter @Getter
@AllArgsConstructor @AllArgsConstructor
public enum PayStatusEnum { public enum PayStatusEnum {
PAYAPPO("3","退款支付审批中"),
PAYAPPOSUCC("4","退款支付审批成功"),
PAYAPPOFIL("5","退款支付审批失败"),
PAYING("0","支付中"), PAYING("0","支付中"),
SUCCESS("1","成功"), SUCCESS("1","成功"),
FILE("2","失败"); FILE("2","失败");
private String code; private String code;
private String text; private String text;
/**
* 查询收款记录时无用的状态
* @return
*/
public static List<String> getStatus() {
return List.of(PAYAPPO.getCode(),PAYAPPOSUCC.getCode(),PAYAPPOFIL.getCode());
}
} }

View File

@ -15,10 +15,10 @@ public enum TaskStatusEnum {
INIT("10","任务初始化(待派单)"), INIT("10","任务初始化(待派单)"),
ING("20","进行中"), ING("20","进行中"),
OA("25","完成审批中"), OA("25","完成审批中"),
OAFAIL("26","完成审批失败"),
FINISH("30","完成"), FINISH("30","完成"),
PAUSE("40","暂停"), PAUSE("40","暂停"),
CANCEL("50","作废"); CANCEL("50","作废"),
CANCELAPPO("55","作废审批中");
private String code; private String code;
private String text; private String text;

View File

@ -105,8 +105,10 @@ public interface IPsContractInfoService {
/** /**
* 免费工单 * 免费工单
* @param contractCode 合同编码 * @param contractCode 合同编码
* @param businessType 服务类别
* @param businessProject 服务项目
*/ */
void freeWork(String contractCode); void freeWork(String contractCode,String businessType,String businessProject);
/** /**
* 查询符合条件的合同基本信息列表 * 查询符合条件的合同基本信息列表
* *

View File

@ -36,14 +36,19 @@ public interface IPsContractPayService {
* @param payBo 支付信息 * @param payBo 支付信息
*/ */
void addPay(List<MultipartFile> files, PsContractPayBo payBo); void addPay(List<MultipartFile> files, PsContractPayBo payBo);
/**
* 添加退款记录
* @param files 支付凭证
* @param payBo 支付信息
*/
void returnPay(List<MultipartFile> files, PsContractPayBo payBo);
/** /**
* 根据主键id查询回款记录 * 根据主键id查询回款记录
* *
* @param id 查询条件 * @param id 查询条件
* @return 合同回款记录列表 * @return 合同回款记录列表
*/ */
PsContractPay queryById(Long id); PsContractPayVo queryById(Long id);
/** /**
* 根据id修改合同回款记录 * 根据id修改合同回款记录

View File

@ -99,6 +99,12 @@ public interface IPsTaskService {
* @param executorId 任务新的执行者id * @param executorId 任务新的执行者id
*/ */
void taskReset(Long id,Long executorId); void taskReset(Long id,Long executorId);
/**
* 免费工单任务作废
* @param id 任务主表id
* @param desc 作废原因
*/
void cancel(Long id,String desc);
/* *//** /* *//**
* 查询主任务 * 查询主任务

View File

@ -44,7 +44,7 @@ public class CancellaApproverServiceImpl extends ApproverAbstractServiceImpl {
public void fail(PsApproverRecord psApproverRecord) { public void fail(PsApproverRecord psApproverRecord) {
PsContractInfo info = new PsContractInfo(); PsContractInfo info = new PsContractInfo();
info.setContractCode(psApproverRecord.getContractCode()); info.setContractCode(psApproverRecord.getContractCode());
info.setRollBackStatus(CommonStatusEnum.FAIL.getCode()); info.setContractStatus(psApproverRecord.getUpdateData());
contractInfoService.updateByCode(info); contractInfoService.updateByCode(info);
} }
} }

View File

@ -0,0 +1,60 @@
package com.pusong.business.service.approver.impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.pusong.business.domain.PsApproverRecord;
import com.pusong.business.domain.PsTaskAppoint;
import com.pusong.business.domain.PsTaskMain;
import com.pusong.business.domain.vo.PsContractInfoVo;
import com.pusong.business.enums.ApproverTypeEnum;
import com.pusong.business.enums.TaskStatusEnum;
import com.pusong.business.enums.TaskTypeEnum;
import com.pusong.business.mapper.PsTaskAppointMapper;
import com.pusong.business.mapper.PsTaskMainMapper;
import com.pusong.business.service.IPsContractInfoService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
* 免费工单审批
*/
@RequiredArgsConstructor
@Service
@Slf4j
public class FreeApproverServiceImpl extends ApproverAbstractServiceImpl {
@Override
public String approverType() {
return ApproverTypeEnum.FREE.getCode();
}
private final PsTaskMainMapper taskMainMapper;
private final PsTaskAppointMapper taskAppointMapper;
private final IPsContractInfoService contractInfoService;
/**
* 1 审批成功 合同作废成功合同状态显示为已作废
* @param psApproverRecord 神瀑类
*/
@Override
public void success(PsApproverRecord psApproverRecord) {
PsContractInfoVo vo = contractInfoService.queryContractByCode(psApproverRecord.getBusinessId());
PsTaskMain psTaskMain = new PsTaskMain();
psTaskMain.setCompanyId(vo.getCompanyId());
psTaskMain.setCustomId(vo.getCustomId());
psTaskMain.setContractCode(vo.getContractCode());
psTaskMain.setTaskType(TaskTypeEnum.FREE.getCode());
psTaskMain.setTaskStatus(TaskStatusEnum.INIT.getCode());
psTaskMain.setBusinessType(psApproverRecord.getUpdateData().split("@@")[0]);
psTaskMain.setBusinessProject(psApproverRecord.getUpdateData().split("@@")[1]);
taskMainMapper.insert(psTaskMain);
}
/**
* 审批拒绝
* @param psApproverRecord
*/
@Override
public void fail(PsApproverRecord psApproverRecord) {
}
}

View File

@ -70,6 +70,10 @@ public class PayContractApproverServiceImpl extends ApproverAbstractServiceImpl
@Override @Override
public void fail(PsApproverRecord psApproverRecord) { public void fail(PsApproverRecord psApproverRecord) {
//修改回款记录状态
PsContractPay update = new PsContractPay();
update.setId(Long.valueOf(psApproverRecord.getBusinessId()));
update.setPayStatus(PayStatusEnum.FILE.getCode());
payService.updateById(update);
} }
} }

View File

@ -0,0 +1,47 @@
package com.pusong.business.service.approver.impl;
import com.pusong.business.domain.PsApproverRecord;
import com.pusong.business.domain.PsContractPay;
import com.pusong.business.domain.PsCustomInfo;
import com.pusong.business.enums.ApproverTypeEnum;
import com.pusong.business.enums.CustomerStatusEnum;
import com.pusong.business.enums.PayStatusEnum;
import com.pusong.business.mapper.PsContractPayMapper;
import com.pusong.business.mapper.PsCustomInfoMapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
* 公海认领审批
*/
@RequiredArgsConstructor
@Service
@Slf4j
public class PublicApproverServiceImpl extends ApproverAbstractServiceImpl {
@Override
public String approverType() {
return ApproverTypeEnum.PUBLIC.getCode();
}
private final PsCustomInfoMapper customInfoMapper;
/**
* 1 审批成功 退款审批成功
* @param psApproverRecord 神瀑类
*/
@Override
public void success(PsApproverRecord psApproverRecord) {
PsCustomInfo info = customInfoMapper.selectById(Long.valueOf(psApproverRecord.getBusinessId()));
info.setCustomStatus(CustomerStatusEnum.INIT.getCode());
info.setCustomManager(Long.valueOf(psApproverRecord.getUpdateData()));
customInfoMapper.updateById(info);
}
/**
* 审批拒绝 退款审批失败
* @param psApproverRecord
*/
@Override
public void fail(PsApproverRecord psApproverRecord) {
}
}

View File

@ -0,0 +1,50 @@
package com.pusong.business.service.approver.impl;
import com.pusong.business.domain.PsApproverRecord;
import com.pusong.business.domain.PsContractPay;
import com.pusong.business.domain.PsTaskMain;
import com.pusong.business.enums.ApproverTypeEnum;
import com.pusong.business.enums.PayStatusEnum;
import com.pusong.business.enums.TaskStatusEnum;
import com.pusong.business.mapper.PsContractPayMapper;
import com.pusong.business.mapper.PsTaskMainMapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
* 退款审批
*/
@RequiredArgsConstructor
@Service
@Slf4j
public class ReturnApproverServiceImpl extends ApproverAbstractServiceImpl {
@Override
public String approverType() {
return ApproverTypeEnum.RETURN.getCode();
}
private final PsContractPayMapper baseMapper;
/**
* 1 审批成功 退款审批成功
* @param psApproverRecord 神瀑类
*/
@Override
public void success(PsApproverRecord psApproverRecord) {
PsContractPay info = baseMapper.selectById(psApproverRecord.getBusinessId());
info.setPayStatus(PayStatusEnum.PAYAPPOSUCC.getCode());
baseMapper.updateById(info);
}
/**
* 审批拒绝 退款审批失败
* @param psApproverRecord
*/
@Override
public void fail(PsApproverRecord psApproverRecord) {
PsContractPay info = baseMapper.selectById(psApproverRecord.getBusinessId());
info.setPayStatus(PayStatusEnum.PAYAPPOFIL.getCode());
baseMapper.updateById(info);
}
}

View File

@ -0,0 +1,60 @@
package com.pusong.business.service.approver.impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.pusong.business.domain.PsApproverRecord;
import com.pusong.business.domain.PsContractInfo;
import com.pusong.business.domain.PsTaskAppoint;
import com.pusong.business.domain.PsTaskMain;
import com.pusong.business.enums.ApproverTypeEnum;
import com.pusong.business.enums.ContractStatusEnum;
import com.pusong.business.enums.TaskStatusEnum;
import com.pusong.business.mapper.PsTaskAppointMapper;
import com.pusong.business.mapper.PsTaskMainMapper;
import com.pusong.business.service.IPsContractInfoService;
import com.pusong.business.service.IPsTaskService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
* 任务作废审批
*/
@RequiredArgsConstructor
@Service
@Slf4j
public class TaskCancellaApproverServiceImpl extends ApproverAbstractServiceImpl {
@Override
public String approverType() {
return ApproverTypeEnum.TASKCANCE.getCode();
}
private final PsTaskMainMapper taskMainMapper;
private final PsTaskAppointMapper taskAppointMapper;
/**
* 1 审批成功 合同作废成功合同状态显示为已作废
* @param psApproverRecord 神瀑类
*/
@Override
public void success(PsApproverRecord psApproverRecord) {
//主任务作废
PsTaskMain info = taskMainMapper.selectById(psApproverRecord.getBusinessId());
info.setTaskStatus(TaskStatusEnum.CANCEL.getCode());
taskMainMapper.updateById(info);
//子任务作废
taskAppointMapper.update(Wrappers.<PsTaskAppoint>lambdaUpdate()
.set(PsTaskAppoint::getAppointStatus, TaskStatusEnum.AppointStatusEnum.CANCEL.getCode())
.eq(PsTaskAppoint::getTaskId, info.getId()));
}
/**
* 审批拒绝 合同的状态变回原状态并在原状态下方展示拒绝原因
* @param psApproverRecord
*/
@Override
public void fail(PsApproverRecord psApproverRecord) {
//还原状态
PsTaskMain info = taskMainMapper.selectById(psApproverRecord.getBusinessId());
info.setTaskStatus(psApproverRecord.getUpdateData());
taskMainMapper.updateById(info);
}
}

View File

@ -0,0 +1,50 @@
package com.pusong.business.service.approver.impl;
import com.pusong.business.domain.PsApproverRecord;
import com.pusong.business.domain.PsContractInfo;
import com.pusong.business.domain.PsTaskMain;
import com.pusong.business.enums.ApproverTypeEnum;
import com.pusong.business.enums.ContractStatusEnum;
import com.pusong.business.enums.TaskStatusEnum;
import com.pusong.business.mapper.PsTaskMainMapper;
import com.pusong.business.service.IPsContractInfoService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
* 任务完成审批
*/
@RequiredArgsConstructor
@Service
@Slf4j
public class TaskFinishApproverServiceImpl extends ApproverAbstractServiceImpl {
@Override
public String approverType() {
return ApproverTypeEnum.TASKFINISH.getCode();
}
private final PsTaskMainMapper taskMainMapper;
/**
* 1 审批成功 任务的状态变为成功
* @param psApproverRecord 神瀑类
*/
@Override
public void success(PsApproverRecord psApproverRecord) {
PsTaskMain info = taskMainMapper.selectById(psApproverRecord.getBusinessId());
info.setTaskStatus(TaskStatusEnum.FINISH.getCode());
taskMainMapper.updateById(info);
}
/**
* 审批拒绝 任务的状态变为进行中
* @param psApproverRecord
*/
@Override
public void fail(PsApproverRecord psApproverRecord) {
PsTaskMain info = taskMainMapper.selectById(psApproverRecord.getBusinessId());
info.setTaskStatus(TaskStatusEnum.ING.getCode());
taskMainMapper.updateById(info);
}
}

View File

@ -283,10 +283,11 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
//todo 1已派单撤回任务派单不在任务列表展示 //todo 1已派单撤回任务派单不在任务列表展示
// 2未派单更新任务列表不在任务列表展示 // 2未派单更新任务列表不在任务列表展示
}else{ }else{
if(StringUtils.isBlank(desc)){throw new ServiceException("请填写作废原因");} if(StringUtils.isBlank(desc)){throw new ServiceException("请填写作废原因");}
//有收款点击作废填写作废原因后发起作废审批 //有收款点击作废填写作废原因后发起作废审批
ApproverService service = container.getService(ApproverTypeEnum.CANCELLA.getCode()); ApproverService service = container.getService(ApproverTypeEnum.CANCELLA.getCode());
service.apply(contractCode,contractCode,desc, null); service.apply(contractCode,contractCode,desc, infoVo.getContractStatus());
info.setContractStatus(ContractStatusEnum.CANAPPROVER.getCode()); info.setContractStatus(ContractStatusEnum.CANAPPROVER.getCode());
} }
@ -395,16 +396,14 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
/** /**
* 免费工单 * 免费工单
* @param contractCode 合同编码 * @param contractCode 合同编码
* @param businessType 服务类别
* @param businessProject 服务项目
*/ */
public void freeWork(String contractCode) { public void freeWork(String contractCode,String businessType,String businessProject) {
PsContractInfoVo info = this.queryContractByCode(contractCode); PsContractInfoVo info = this.queryContractByCode(contractCode);
PsTaskMain psTaskMain = new PsTaskMain(); //发起审批
psTaskMain.setCompanyId(info.getCompanyId()); ApproverService service = container.getService(ApproverTypeEnum.FREE.getCode());
psTaskMain.setCustomId(info.getCustomId()); service.apply(info.getContractCode(),info.getContractCode(),null, businessType+"@@"+businessProject);
psTaskMain.setContractCode(contractCode);
psTaskMain.setTaskType(TaskTypeEnum.FREE.getCode());
psTaskMain.setTaskStatus(TaskStatusEnum.INIT.getCode());
taskMainService.insert(psTaskMain);
} }
private QueryWrapper<PsContractInfo> buildQueryWrapper(PsContractInfoQueryBo bo) { private QueryWrapper<PsContractInfo> buildQueryWrapper(PsContractInfoQueryBo bo) {
@ -412,9 +411,10 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
//删除标志 //删除标志
qw.eq( "info.del_flag", 0);//删除标志 qw.eq( "info.del_flag", 0);//删除标志
//合同表条件 //合同表条件
qw.eq( StringUtils.isNotBlank(bo.getContractStatus()),"contract_status", bo.getContractStatus()); qw.eq( StringUtils.isNotBlank(bo.getContractStatus()),"info.contract_status", bo.getContractStatus());
qw.in( CollectionUtils.isNotEmpty(bo.getInContractStatus()),"contract_status", bo.getInContractStatus()); qw.in( CollectionUtils.isNotEmpty(bo.getInContractStatus()),"info.contract_status", bo.getInContractStatus());
qw.notIn( CollectionUtils.isNotEmpty(bo.getNotInContractStatus()),"contract_status", bo.getNotInContractStatus()); qw.notIn( CollectionUtils.isNotEmpty(bo.getNotInContractStatus()),"info.contract_status", bo.getNotInContractStatus());
qw.eq( StringUtils.isNotBlank(bo.getContractCode()),"info.contract_code", bo.getContractCode());
//客户表条件 //客户表条件
qw.like( StringUtils.isNotBlank(bo.getCustomName()),"cus.custom_name", bo.getCustomName()); qw.like( StringUtils.isNotBlank(bo.getCustomName()),"cus.custom_name", bo.getCustomName());
qw.like( StringUtils.isNotBlank(bo.getCustomMobile()),"cus.custom_mobile", bo.getCustomMobile()); qw.like( StringUtils.isNotBlank(bo.getCustomMobile()),"cus.custom_mobile", bo.getCustomMobile());

View File

@ -1,9 +1,11 @@
package com.pusong.business.service.impl; package com.pusong.business.service.impl;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.pusong.business.enums.ApproverTypeEnum; import com.pusong.business.enums.ApproverTypeEnum;
import com.pusong.business.enums.PayStatusEnum; import com.pusong.business.enums.PayStatusEnum;
import com.pusong.business.service.approver.ApproverContainer; import com.pusong.business.service.approver.ApproverContainer;
import com.pusong.business.service.approver.ApproverService; import com.pusong.business.service.approver.ApproverService;
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;
@ -55,6 +57,7 @@ public class PsContractPayServiceImpl implements IPsContractPayService {
eq(PsContractPay::getContractCode, contractCode).eq(PsContractPay::getDelFlag,0) eq(PsContractPay::getContractCode, contractCode).eq(PsContractPay::getDelFlag,0)
.eq(StringUtils.isNotBlank(business),PsContractPay::getBusinessType,business) .eq(StringUtils.isNotBlank(business),PsContractPay::getBusinessType,business)
.eq(enu != null ,PsContractPay::getPayStatus, enu.getCode()) .eq(enu != null ,PsContractPay::getPayStatus, enu.getCode())
.notIn(PsContractPay::getPayStatus, PayStatusEnum.getStatus())//去掉无用的状态
.orderByAsc(PsContractPay::getPayDate)); .orderByAsc(PsContractPay::getPayDate));
return list == null?new ArrayList<>():list; return list == null?new ArrayList<>():list;
} }
@ -81,7 +84,34 @@ public class PsContractPayServiceImpl implements IPsContractPayService {
ApproverService service = container.getService(ApproverTypeEnum.PAY.getCode()); ApproverService service = container.getService(ApproverTypeEnum.PAY.getCode());
service.apply(pay.getId()+"",pay.getContractCode(),null, null); service.apply(pay.getId()+"",pay.getContractCode(),null, null);
} }
/**
* 添加退款记录
*
* @param payBo 支付信息
* @return 是否新增成功
*/
@Transactional(rollbackFor = Exception.class)
@Override
public void returnPay(List<MultipartFile> files, PsContractPayBo payBo){
PsContractPay pay = MapstructUtils.convert(payBo, PsContractPay.class);
if(StringUtils.equals("4",payBo.getPayType()) && CollectionUtils.isEmpty(files)){
throw new ServiceException("请上传对私二维码");
}
if(CollectionUtils.isNotEmpty(files)){
List<String> payCertifications = new ArrayList<>();
for(MultipartFile file : files){
SysOssVo vo = ossService.upload(file);
payCertifications.add(vo.getOssId()+"");
}
pay.setGathMain(StringUtils.join(payCertifications,","));
}
pay.setPayStatus(PayStatusEnum.PAYAPPO.getCode());
baseMapper.insert(pay);
//发起审批
ApproverService service = container.getService(ApproverTypeEnum.RETURN.getCode());
service.apply(pay.getId()+"",pay.getContractCode(),null, null);
}
/** /**
* 根据主键id查询回款记录 * 根据主键id查询回款记录
* *
@ -89,8 +119,8 @@ public class PsContractPayServiceImpl implements IPsContractPayService {
* @return 合同回款记录列表 * @return 合同回款记录列表
*/ */
@Override @Override
public PsContractPay queryById(Long id) { public PsContractPayVo queryById(Long id) {
return baseMapper.selectById(id); return baseMapper.selectVoById(id);
} }
/** /**
@ -103,6 +133,20 @@ public class PsContractPayServiceImpl implements IPsContractPayService {
public Boolean updateById(PsContractPay pay) { public Boolean updateById(PsContractPay pay) {
return baseMapper.updateById(pay) > 0; return baseMapper.updateById(pay) > 0;
} }
/**
* 修改合同回款记录
*
* @param bo 合同回款记录
* @return 是否修改成功
*/
// @Override
// public Boolean updateByBo(PsContractPayBo bo) {
// PsContractPay update = MapstructUtils.convert(bo, PsContractPay.class);
// validEntityBeforeSave(update);
// return baseMapper.updateById(update) > 0;
// }
/* *//** /* *//**
* 查询合同回款记录 * 查询合同回款记录
* *

View File

@ -36,6 +36,8 @@ import jakarta.annotation.Resource;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.actuate.info.InfoEndpoint;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.pusong.business.domain.PsTaskMain; import com.pusong.business.domain.PsTaskMain;
import com.pusong.business.mapper.PsTaskMainMapper; import com.pusong.business.mapper.PsTaskMainMapper;
@ -64,6 +66,9 @@ public class PsTaskServiceImpl implements IPsTaskService {
private final ISysOssService ossService; private final ISysOssService ossService;
@Resource @Resource
private ApproverContainer approverContainer; private ApproverContainer approverContainer;
@Autowired
private InfoEndpoint infoEndpoint;
/** /**
* 新增主任务 * 新增主任务
* *
@ -297,7 +302,23 @@ public class PsTaskServiceImpl implements IPsTaskService {
appoint.setExecutor(executorId); appoint.setExecutor(executorId);
appointMapper.updateById(appoint); appointMapper.updateById(appoint);
} }
/**
* 免费工单任务作废
* @param id 任务主表id
* @param desc 作废原因
*/
public void cancel(Long id,String desc){
PsTaskMain info = baseMapper.selectById(id);
if(!StringUtils.equals(TaskTypeEnum.FREE.getCode(),info.getTaskType())){
throw new ServiceException("只有免费工单的任务可以作废");
}
//发起审批
ApproverService service = approverContainer.getService(ApproverTypeEnum.TASKCANCE.getCode());
service.apply(id+"",info.getContractCode(),null,info.getTaskStatus());
//修改状态为审批中
info.setTaskStatus(TaskStatusEnum.CANCELAPPO.getCode());
baseMapper.updateById(info);
}
private QueryWrapper<PsTaskMain> buildQueryWrapper(PsTaskQueryBo bo) { private QueryWrapper<PsTaskMain> buildQueryWrapper(PsTaskQueryBo bo) {
QueryWrapper<PsTaskMain> lqw = new QueryWrapper<PsTaskMain>(); QueryWrapper<PsTaskMain> lqw = new QueryWrapper<PsTaskMain>();