生成合同

This commit is contained in:
1073413548 2024-08-13 09:44:26 +08:00
parent 9265cb946d
commit 83b4a31249
25 changed files with 329 additions and 169 deletions

View File

@ -46,60 +46,75 @@ public class PsApproverRecordController extends BaseController {
} }
/** /**
* 导出审批记录列表 * 审批
*
* @param operate 2 通过 3拒绝
* @param id 审批表id
* @param desc 备注通过/拒绝原因
* @return
*/ */
@SaCheckPermission("business:approverRecord:export") @SaCheckPermission("business:approverRecord:list")
@Log(title = "审批记录", businessType = BusinessType.EXPORT) @GetMapping("/approver")
@PostMapping("/export") public R<Void> approver(@NotBlank(message = "操作类型不能为空") String operate,
public void export(PsApproverRecordBo bo, HttpServletResponse response) { @NotNull(message = "数据id不能为空") Long id, String desc) {
List<PsApproverRecordVo> list = psApproverRecordService.queryList(bo); psApproverRecordService.approver(operate, id,desc);
ExcelUtil.exportExcel(list, "审批记录", PsApproverRecordVo.class, response); return R.ok();
} }
// /**
// * 导出审批记录列表
// */
// @SaCheckPermission("business:approverRecord:export")
// @Log(title = "审批记录", businessType = BusinessType.EXPORT)
// @PostMapping("/export")
// public void export(PsApproverRecordBo bo, HttpServletResponse response) {
// List<PsApproverRecordVo> list = psApproverRecordService.queryList(bo);
// ExcelUtil.exportExcel(list, "审批记录", PsApproverRecordVo.class, response);
// }
/** /**
* 获取审批记录详细信息 * 获取审批记录详细信息
* *
* @param id 主键 * @param id 主键
*/ */
@SaCheckPermission("business:approverRecord:query") @SaCheckPermission("business:approverRecord:query")
@GetMapping("/{id}") @GetMapping("/getById")
public R<PsApproverRecordVo> getInfo(@NotNull(message = "主键不能为空") public R<PsApproverRecordVo> getInfo(@NotNull(message = "主键不能为空") Long id) {
@PathVariable Long id) {
return R.ok(psApproverRecordService.queryById(id)); return R.ok(psApproverRecordService.queryById(id));
} }
/** /* *//**
* 新增审批记录 * 新增审批记录
*/ *//*
@SaCheckPermission("business:approverRecord:add") @SaCheckPermission("business:approverRecord:add")
@Log(title = "审批记录", businessType = BusinessType.INSERT) @Log(title = "审批记录", businessType = BusinessType.INSERT)
@RepeatSubmit() @RepeatSubmit()
@PostMapping() @PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody PsApproverRecordBo bo) { public R<Void> add(@Validated(AddGroup.class) @RequestBody PsApproverRecordBo bo) {
return toAjax(psApproverRecordService.insertByBo(bo)); return toAjax(psApproverRecordService.insertByBo(bo));
} }*/
/** // /**
* 修改审批记录 // * 修改审批记录
*/ // */
@SaCheckPermission("business:approverRecord:edit") // @SaCheckPermission("business:approverRecord:edit")
@Log(title = "审批记录", businessType = BusinessType.UPDATE) // @Log(title = "审批记录", businessType = BusinessType.UPDATE)
@RepeatSubmit() // @RepeatSubmit()
@PutMapping() // @PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody PsApproverRecordBo bo) { // public R<Void> edit(@Validated(EditGroup.class) @RequestBody PsApproverRecordBo bo) {
return toAjax(psApproverRecordService.updateByBo(bo)); // return toAjax(psApproverRecordService.updateByBo(bo));
} // }
/** // /**
* 删除审批记录 // * 删除审批记录
* // *
* @param ids 主键串 // * @param ids 主键串
*/ // */
@SaCheckPermission("business:approverRecord:remove") // @SaCheckPermission("business:approverRecord:remove")
@Log(title = "审批记录", businessType = BusinessType.DELETE) // @Log(title = "审批记录", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}") // @DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空") // public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) { // @PathVariable Long[] ids) {
return toAjax(psApproverRecordService.deleteWithValidByIds(List.of(ids), true)); // return toAjax(psApproverRecordService.deleteWithValidByIds(List.of(ids), true));
} // }
} }

View File

@ -148,6 +148,23 @@ public class PsContractInfoController extends BaseController {
public R<List<PsContractBusinessVo>> queryServiceByCode(@NotBlank String contractCode) { public R<List<PsContractBusinessVo>> queryServiceByCode(@NotBlank String contractCode) {
return R.ok(businessService.selectBusinessList(contractCode)); return R.ok(businessService.selectBusinessList(contractCode));
} }
/**
* 开发票开发票操作
*/
@SaCheckPermission("business:contractInfo:list")
@Log(title = "合同开发票", businessType = BusinessType.INSERT)
@RepeatSubmit()
@GetMapping("/invoice")
public R<Void> invoice(@NotBlank String contractCode) {
psContractInfoService.invoice(contractCode);
return R.ok();
}
// //
// /** // /**
// * 获取合同基本信息详细信息 // * 获取合同基本信息详细信息

View File

@ -68,9 +68,9 @@ public class PsApproverRecord extends TenantEntity {
*/ */
private String approverDesc; private String approverDesc;
/** /**
* 修改数据 * 修改数据
*/ */
private String beforeData; private String updateData;
/** /**
* 2逻辑删除 0 默认有效 * 2逻辑删除 0 默认有效
*/ */

View File

@ -79,6 +79,10 @@ public class PsCustomInfo extends TenantEntity {
* 颜色 * 颜色
*/ */
private String color; private String color;
/**
* 历史的所属客户经理
*/
private String historyCustomManager;
/** /**
* 2逻辑删除 0 默认有效 * 2逻辑删除 0 默认有效
*/ */

View File

@ -32,7 +32,10 @@ public class PsTaskMain extends TenantEntity {
* 公司id * 公司id
*/ */
private Long companyId; private Long companyId;
/**
* 客户编码
*/
private Long customId;
/** /**
* 合同编码 * 合同编码
*/ */

View File

@ -28,14 +28,14 @@ public class PsTaskMedia extends TenantEntity {
private Long id; private Long id;
/** /**
* 主任务表id * 客户id
*/ */
private Long taskId; private Long customId;
/** /**
* 合同编号 * 公司id
*/ */
private String contractCode; private Long companyId;
/** /**
* 资料类型 * 资料类型

View File

@ -74,9 +74,9 @@ public class PsApproverRecordBo {
private String approverDesc; private String approverDesc;
/** /**
* 修改数据 * 修改数据
*/ */
@NotBlank(message = "修改前数据") @NotBlank(message = "修改前数据")
private String beforeData; private String updateData;
} }

View File

@ -26,14 +26,14 @@ public class PsTaskMediaBo {
private Long id; private Long id;
/** /**
* 主任务表id * 客户id
*/ */
private Long taskId; private Long customId;
/** /**
* 合同编号 * 公司id
*/ */
private String contractCode; private Long companyId;
/** /**
* 资料类型 * 资料类型

View File

@ -84,7 +84,7 @@ public class PsApproverRecordVo implements Serializable {
private String approverDesc; private String approverDesc;
/** /**
* 修改数据 * 修改数据
*/ */
private String beforeData; private String updateData;
} }

View File

@ -138,7 +138,15 @@ public class PsCustomInfoVo implements Serializable {
* 公司数量 * 公司数量
*/ */
private Integer companyNum; private Integer companyNum;
/**
* 历史的所属客户经理
*/
private String historyCustomManager;
/**
* 历史的所属客户经理
*/
@Translation(type = TransConstant.USER_ID_TO_NICKNAME,mapper = "historyCustomManager")
private String historyCustomManagerName;
/** /**
* 是否已生成合同1是0否 * 是否已生成合同1是0否
*/ */

View File

@ -33,18 +33,17 @@ public class PsTaskMediaVo implements Serializable {
*/ */
@ExcelProperty(value = "主键id") @ExcelProperty(value = "主键id")
private Long id; private Long id;
/**
* 客户id
*/
@ExcelProperty(value = "客户id")
private Long customId;
/** /**
* 主任务表id * 公司id
*/ */
@ExcelProperty(value = "主任务表id") @ExcelProperty(value = "公司id")
private Long taskId; private Long companyId;
/**
* 合同编号
*/
@ExcelProperty(value = "合同编号")
private String contractCode;
/** /**
* 资料类型 * 资料类型

View File

@ -13,6 +13,7 @@ public enum ContractStatusEnum {
INIT("10","暂存"), INIT("10","暂存"),
CREATE("20","生成成功(待回款)"), CREATE("20","生成成功(待回款)"),
RETURN("30","已回款(待派单处理)"), RETURN("30","已回款(待派单处理)"),
UPDATEAPPROVER("33","修改审批中"),
EXECUTION("40","已派单(处理中)"), EXECUTION("40","已派单(处理中)"),
SUCCESS("50","已完成(任务已全部完成+回款全部完成+合同已回传)"), SUCCESS("50","已完成(任务已全部完成+回款全部完成+合同已回传)"),
CANCELLATION("60","已作废"), CANCELLATION("60","已作废"),

View File

@ -42,27 +42,36 @@ public interface IPsApproverRecordService {
List<PsApproverRecordVo> queryList(PsApproverRecordBo bo); List<PsApproverRecordVo> queryList(PsApproverRecordBo bo);
/** /**
* 新增审批记录 * 审批
* *
* @param bo 审批记录 * @param operate 2 通过 3拒绝
* @return 是否新增成功 * @param id 审批表id
* @return
*/ */
Boolean insertByBo(PsApproverRecordBo bo); void approver(String operate, Long id,String desc);
//
/** // /**
* 修改审批记录 // * 新增审批记录
* // *
* @param bo 审批记录 // * @param bo 审批记录
* @return 是否修改成功 // * @return 是否新增成功
*/ // */
Boolean updateByBo(PsApproverRecordBo bo); // Boolean insertByBo(PsApproverRecordBo bo);
//
/** // /**
* 校验并批量删除审批记录信息 // * 修改审批记录
* // *
* @param ids 待删除的主键集合 // * @param bo 审批记录
* @param isValid 是否进行有效性校验 // * @return 是否修改成功
* @return 是否删除成功 // */
*/ // Boolean updateByBo(PsApproverRecordBo bo);
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid); //
// /**
// * 校验并批量删除审批记录信息
// *
// * @param ids 待删除的主键集合
// * @param isValid 是否进行有效性校验
// * @return 是否删除成功
// */
// Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
} }

View File

@ -86,6 +86,20 @@ public interface IPsContractInfoService {
* @return * @return
*/ */
PsContractInfo updateByCode(PsContractInfo info); PsContractInfo updateByCode(PsContractInfo info);
/**
* 生成合同pdf
* @param add
* @param bo
*/
Long makePdf(PsContractInfo add ,PsContractInfoBo bo);
/**
* 开发票开发票操作
* @param contractCode
* @return
*/
void invoice(String contractCode);
/** /**
* 查询符合条件的合同基本信息列表 * 查询符合条件的合同基本信息列表
* *

View File

@ -19,10 +19,11 @@ public interface IPsTaskMediaService {
/** /**
* 查询任务资料 * 查询任务资料
* *
* @param id 主键 * @param customerId 客户id
* @param companyId 公司id
* @return 任务资料 * @return 任务资料
*/ */
List<PsTaskMediaVo> queryByTaskId(Long id); List<PsTaskMediaVo> queryByTaskId(Long customerId,Long companyId);
/** /**
* 保存影响资料信息 * 保存影响资料信息

View File

@ -9,9 +9,9 @@ public interface ApproverService {
* @param bussinessId 关联业务id * @param bussinessId 关联业务id
* @param contractCode 合同编码 * @param contractCode 合同编码
* @param desc 审批说明 * @param desc 审批说明
* @param src 数据 * @param updateData 修改后的数据
*/ */
public void apply( String bussinessId,String contractCode, String desc, Object src); public void apply( String bussinessId,String contractCode, String desc, Object updateData);
/** /**
* 成功 * 成功
*/ */

View File

@ -32,9 +32,9 @@ public abstract class ApproverAbstractServiceImpl implements ApproverService {
* 通用申请方法 * 通用申请方法
* @param bussinessId * @param bussinessId
* @param desc * @param desc
* @param src * @param updateData
*/ */
public void apply(String bussinessId,String contractCode, String desc, Object src){ public void apply(String bussinessId,String contractCode, String desc, Object updateData){
List<PsApproverRecord> list = approverRecordMapper.selectList(Wrappers.<PsApproverRecord>lambdaQuery().eq(PsApproverRecord::getDelFlag, "0") List<PsApproverRecord> list = approverRecordMapper.selectList(Wrappers.<PsApproverRecord>lambdaQuery().eq(PsApproverRecord::getDelFlag, "0")
.eq(PsApproverRecord::getBusinessId, bussinessId).eq(PsApproverRecord::getBusinessType,approverType()) .eq(PsApproverRecord::getBusinessId, bussinessId).eq(PsApproverRecord::getBusinessType,approverType())
.ne(PsApproverRecord::getApproverStatus, ApproverStatusEnum.INIT.getCode())); .ne(PsApproverRecord::getApproverStatus, ApproverStatusEnum.INIT.getCode()));
@ -47,7 +47,7 @@ public abstract class ApproverAbstractServiceImpl implements ApproverService {
record.setContractCode(contractCode); record.setContractCode(contractCode);
record.setBusinessType(approverType()); record.setBusinessType(approverType());
record.setApplyDesc(desc); record.setApplyDesc(desc);
record.setBeforeData(src == null?null:JSON.toJSONString(src)); record.setUpdateData(updateData == null?null:JSON.toJSONString(updateData));
record.setApplyDate(new Date()); record.setApplyDate(new Date());
record.setApproverStatus(ApproverStatusEnum.INIT.getCode()); record.setApproverStatus(ApproverStatusEnum.INIT.getCode());
approverRecordMapper.insert(record); approverRecordMapper.insert(record);

View File

@ -57,6 +57,8 @@ public class PayContractApproverServiceImpl extends ApproverAbstractServiceImpl
psTaskMain.setContractCode(psApproverRecord.getContractCode()); psTaskMain.setContractCode(psApproverRecord.getContractCode());
psTaskMain.setTaskType(TaskTypeEnum.CONTRACT.getCode()); psTaskMain.setTaskType(TaskTypeEnum.CONTRACT.getCode());
psTaskMain.setTaskStatus(TaskStatusEnum.INIT.getCode()); psTaskMain.setTaskStatus(TaskStatusEnum.INIT.getCode());
psTaskMain.setCompanyId(info.getCompanyId());
psTaskMain.setCustomId(info.getCustomId());
taskMainService.insert(psTaskMain); taskMainService.insert(psTaskMain);
log.info("修改合同状态"); log.info("修改合同状态");
PsContractInfo updateInfo = new PsContractInfo(); PsContractInfo updateInfo = new PsContractInfo();

View File

@ -1,8 +1,17 @@
package com.pusong.business.service.approver.impl; package com.pusong.business.service.approver.impl;
import com.alibaba.fastjson.JSON;
import com.pusong.business.domain.PsApproverRecord; import com.pusong.business.domain.PsApproverRecord;
import com.pusong.business.domain.PsContractInfo;
import com.pusong.business.domain.bo.PsContractInfoBo;
import com.pusong.business.domain.vo.PsContractInfoVo;
import com.pusong.business.enums.ApproverStatusEnum; import com.pusong.business.enums.ApproverStatusEnum;
import com.pusong.business.enums.ApproverTypeEnum; import com.pusong.business.enums.ApproverTypeEnum;
import com.pusong.business.enums.CommonStatusEnum;
import com.pusong.business.service.IPsContractBusinessService;
import com.pusong.business.service.IPsContractInfoService;
import com.pusong.common.core.utils.MapstructUtils;
import com.pusong.common.core.utils.StringUtils;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -15,6 +24,8 @@ public class UpdateContractApproverServiceImpl extends ApproverAbstractServiceIm
public String approverType() { public String approverType() {
return ApproverTypeEnum.UPDATE.getCode(); return ApproverTypeEnum.UPDATE.getCode();
} }
private final IPsContractBusinessService businessService;
private final IPsContractInfoService contractInfoService;
/** /**
* 1 审批成功合同已派单任务重置 * 1 审批成功合同已派单任务重置
@ -22,9 +33,37 @@ public class UpdateContractApproverServiceImpl extends ApproverAbstractServiceIm
*/ */
@Override @Override
public void success(PsApproverRecord psApproverRecord) { public void success(PsApproverRecord psApproverRecord) {
//1查询源数据
PsContractInfoVo src = contractInfoService.queryContractByCode(psApproverRecord.getContractCode());
//json化修改的数据
PsContractInfoBo bo = JSON.parseObject(psApproverRecord.getUpdateData(),PsContractInfoBo.class);
//2.删除所有服务类型和服务项目,.插入服务类型
businessService.saveList(bo.getBusinessList(),bo.getContractCode());
//3.修改后操作
afterUpdateOperate(bo, src);
//插入合同
PsContractInfo add = new PsContractInfo();
add.setCompanyId(bo.getCompanyInfoBo().getId());//公司id
MapstructUtils.convert(bo, add);
contractInfoService.updateByCode(add);
//4.生成合同
contractInfoService.makePdf(add,bo);
}
/**
* 修改合同后操作
* 1.已回款之后的合同修改后走审批
* 2.已回款合同新的合同金额<已付金额展示申请退款
* 3.合同签字盖章成功:修改合同成功合同签字盖章变回未签章状态需重新进行签章申请
*/
private void afterUpdateOperate(PsContractInfoBo updateBo, PsContractInfoVo srcVo){
//3.签章合同签字盖章成功:修改合同成功合同签字盖章变回未签章状态需重新进行签章申请
if(StringUtils.equals(srcVo.getSignStatus(), CommonStatusEnum.SUCCESS.getCode()) ){
updateBo.setSignStatus(CommonStatusEnum.INIT.getCode());
}
} }
@Override @Override
public void fail(PsApproverRecord psApproverRecord) { public void fail(PsApproverRecord psApproverRecord) {

View File

@ -1,5 +1,11 @@
package com.pusong.business.service.impl; package com.pusong.business.service.impl;
import com.pusong.business.enums.ApproverStatusEnum;
import com.pusong.business.enums.ApproverTypeEnum;
import com.pusong.business.enums.TaskStatusEnum;
import com.pusong.business.service.approver.ApproverContainer;
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;
@ -30,6 +36,7 @@ import java.util.Collection;
public class PsApproverRecordServiceImpl implements IPsApproverRecordService { public class PsApproverRecordServiceImpl implements IPsApproverRecordService {
private final PsApproverRecordMapper baseMapper; private final PsApproverRecordMapper baseMapper;
private final ApproverContainer container;
/** /**
* 查询审批记录 * 查询审批记录
@ -81,34 +88,55 @@ public class PsApproverRecordServiceImpl implements IPsApproverRecordService {
} }
/** /**
* 新增审批记录 * 审批
* *
* @param bo 审批记录 * @param operate 2 通过 3拒绝
* @return 是否新增成功 * @param id 审批表id
* @return
*/ */
@Override public void approver(String operate, Long id,String desc){
public Boolean insertByBo(PsApproverRecordBo bo) { PsApproverRecord info = baseMapper.selectById(id);
PsApproverRecord add = MapstructUtils.convert(bo, PsApproverRecord.class); if(!StringUtils.equals(ApproverStatusEnum.INIT.getCode(),info.getApproverStatus())){
validEntityBeforeSave(add); throw new ServiceException("操作失败:该审批状态已变更");
boolean flag = baseMapper.insert(add) > 0; }
if (flag) { ApproverService service = container.getService(info.getApproverType());
bo.setId(add.getId()); if(StringUtils.equals(ApproverStatusEnum.SUCCESS.getCode(),operate)){
service.success(info);
}else if (StringUtils.equals(ApproverStatusEnum.FAIL.getCode(),operate)){
service.fail(info);
}else{
throw new ServiceException("操作失败:不支持的操作类型");
} }
return flag;
} }
// /**
// * 新增审批记录
// *
// * @param bo 审批记录
// * @return 是否新增成功
// */
// @Override
// public Boolean insertByBo(PsApproverRecordBo bo) {
// PsApproverRecord add = MapstructUtils.convert(bo, PsApproverRecord.class);
// validEntityBeforeSave(add);
// boolean flag = baseMapper.insert(add) > 0;
// if (flag) {
// bo.setId(add.getId());
// }
// return flag;
// }
/** // /**
* 修改审批记录 // * 修改审批记录
* // *
* @param bo 审批记录 // * @param bo 审批记录
* @return 是否修改成功 // * @return 是否修改成功
*/ // */
@Override // @Override
public Boolean updateByBo(PsApproverRecordBo bo) { // public Boolean updateByBo(PsApproverRecordBo bo) {
PsApproverRecord update = MapstructUtils.convert(bo, PsApproverRecord.class); // PsApproverRecord update = MapstructUtils.convert(bo, PsApproverRecord.class);
validEntityBeforeSave(update); // validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0; // return baseMapper.updateById(update) > 0;
} // }
/** /**
* 保存前的数据校验 * 保存前的数据校验
@ -117,18 +145,18 @@ public class PsApproverRecordServiceImpl implements IPsApproverRecordService {
//TODO 做一些数据校验,如唯一约束 //TODO 做一些数据校验,如唯一约束
} }
/** // /**
* 校验并批量删除审批记录信息 // * 校验并批量删除审批记录信息
* // *
* @param ids 待删除的主键集合 // * @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验 // * @param isValid 是否进行有效性校验
* @return 是否删除成功 // * @return 是否删除成功
*/ // */
@Override // @Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) { // public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){ // if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验 // //TODO 做一些业务上的校验,判断是否需要校验
} // }
return baseMapper.deleteBatchIds(ids) > 0; // return baseMapper.deleteBatchIds(ids) > 0;
} // }
} }

View File

@ -95,6 +95,8 @@ public class PsContractBusinessServiceImpl implements IPsContractBusinessService
} }
/* *//** /* *//**
* 查询合同服务类别 * 查询合同服务类别
* *

View File

@ -64,6 +64,8 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
@Resource @Resource
private final ApproverContainer container; private final ApproverContainer container;
private final IPsTaskService taskMainService;
/** /**
* 生成合同 * 生成合同
* *
@ -94,7 +96,10 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
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);
} }
item.setBusinessAmount(mony); //服务类别填了才会修改服务项目的金额
if(mony.compareTo(BigDecimal.ZERO) > 0){
item.setBusinessAmount(mony);
}
}); });
BigDecimal sum = bo.getBusinessList().stream().map(PsContractBusinessBo::getBusinessAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add); BigDecimal sum = bo.getBusinessList().stream().map(PsContractBusinessBo::getBusinessAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
@ -221,17 +226,17 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
//4.装填合同信息 //4.装填合同信息
BigDecimal sum = bo.getBusinessList().stream().map(PsContractBusinessBo::getBusinessAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add); BigDecimal sum = bo.getBusinessList().stream().map(PsContractBusinessBo::getBusinessAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
bo.setContractAmount(sum);//合同总金额 bo.setContractAmount(sum);//合同总金额
//5.删除所有服务类型和服务项目,.插入服务类型
businessService.saveList(bo.getBusinessList(),bo.getContractCode()); //5.已回款之后的合同修改后走审批
//6.修改后操作 if(ContractStatusEnum.isReturn(src.getContractStatus())){
afterUpdateOperate(bo, src); //发起审批
//插入合同 ApproverService service = container.getService(ApproverTypeEnum.UPDATE.getCode());
PsContractInfo add = new PsContractInfo(); service.apply(bo.getContractCode(),bo.getContractCode(),bo.getUpdateDesc(), JSON.toJSONString(bo));
add.setCompanyId(bo.getCompanyInfoBo().getId());//公司id }
MapstructUtils.convert(bo, add); PsContractInfo info = new PsContractInfo();
this.updateByCode(add); info.setContractCode(bo.getContractCode());
//7.生成合同 info.setContractStatus(ContractStatusEnum.UPDATEAPPROVER.getCode());
makePdf(add,bo); updateByCode(info);
return true; return true;
} }
@ -302,7 +307,7 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
* @param add * @param add
* @param bo * @param bo
*/ */
private Long makePdf(PsContractInfo add ,PsContractInfoBo bo){ public Long makePdf(PsContractInfo add ,PsContractInfoBo bo){
Long ossId = null; Long ossId = null;
try{ try{
//生成合同pdf //生成合同pdf
@ -312,6 +317,11 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
map.put("business",bo.getBusinessList()); map.put("business",bo.getBusinessList());
map.put("company",bo.getCompanyInfoBo()); map.put("company",bo.getCompanyInfoBo());
map.put("customer",customer); map.put("customer",customer);
String head = "合同编号PS-"+add.getContractCode()+" 客户编号:"+customer.getId();
//合同标题
map.put(PdfGenerator.HEAD,head);
//是否签章
map.put(PdfGenerator.SIGN,StringUtils.equals(CommonStatusEnum.SUCCESS.getCode(),bo.getSignStatus()));
String path = System.getProperty("user.dir")+"test.pdf"; String path = System.getProperty("user.dir")+"test.pdf";
log.info(JSON.toJSONString(map)); log.info(JSON.toJSONString(map));
// path = "D:/王立帅/临时/output.pdf"; // path = "D:/王立帅/临时/output.pdf";
@ -335,6 +345,20 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
return ossId; return ossId;
} }
/**
* 开发票开发票操作
* @param contractCode
* @return
*/
public void invoice(String contractCode){
log.info("合同未回款过,初始化任务主表");
PsTaskMain psTaskMain = new PsTaskMain();
psTaskMain.setContractCode(contractCode);
psTaskMain.setTaskType(TaskTypeEnum.INVOICE.getCode());
psTaskMain.setTaskStatus(TaskStatusEnum.INIT.getCode());
taskMainService.insert(psTaskMain);
}
private QueryWrapper<PsContractInfo> buildQueryWrapper(PsContractInfoQueryBo bo) { private QueryWrapper<PsContractInfo> buildQueryWrapper(PsContractInfoQueryBo bo) {
QueryWrapper<PsContractInfo> qw = Wrappers.query(); QueryWrapper<PsContractInfo> qw = Wrappers.query();
@ -431,26 +455,7 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
throw new ServiceException("合同已完成,不可修改"); throw new ServiceException("合同已完成,不可修改");
} }
} }
/**
* 修改合同后操作
* 1.已回款之后的合同修改后走审批
* 2.已回款合同新的合同金额<已付金额展示申请退款
* 3.合同签字盖章成功:修改合同成功合同签字盖章变回未签章状态需重新进行签章申请
*/
private void afterUpdateOperate( PsContractInfoBo updateBo,PsContractInfoVo srcVo){
//1.已回款之后的合同修改后走审批
if(ContractStatusEnum.isReturn(srcVo.getContractStatus())){
//发起审批
ApproverService service = container.getService(ApproverTypeEnum.UPDATE.getCode());
service.apply(updateBo.getContractCode(),updateBo.getContractCode(),updateBo.getUpdateDesc(), JSON.toJSONString(srcVo));
}
//3.签章合同签字盖章成功:修改合同成功合同签字盖章变回未签章状态需重新进行签章申请
if(StringUtils.equals(srcVo.getSignStatus(),CommonStatusEnum.SUCCESS.getCode()) ){
updateBo.setSignStatus(CommonStatusEnum.INIT.getCode());
}
}
/** /**
* 查询合同基本信息 * 查询合同基本信息
* *

View File

@ -2,7 +2,9 @@ package com.pusong.business.service.impl;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.pusong.business.domain.PsCompanyInfo; import com.pusong.business.domain.PsCompanyInfo;
import com.pusong.business.domain.PsCustomCallback; import com.pusong.business.domain.PsCustomCallback;
@ -262,7 +264,7 @@ public class PsCustomInfoServiceImpl implements IPsCustomInfoService {
} }
/** /**
* 校验并批量删除客户基本信息信息 * 修改客户状态
* *
* @param id 主键id * @param id 主键id
* @param type 操作类型 * @param type 操作类型
@ -274,9 +276,18 @@ public class PsCustomInfoServiceImpl implements IPsCustomInfoService {
if(true){ if(true){
//todo 校验原数据状态是否可以更改 //todo 校验原数据状态是否可以更改
} }
LambdaUpdateWrapper<PsCustomInfo> wq = Wrappers.<PsCustomInfo>lambdaUpdate().eq(PsCustomInfo::getId, id);
switch (type){ switch (type){
case 1://移入公海 case 1://移入公海
psCustomInfo.setCustomStatus(CustomerStatusEnum.PUBLIC.getCode()); psCustomInfo.setCustomStatus(CustomerStatusEnum.PUBLIC.getCode());
//拼装历史的所属客户经理
if(StringUtils.isBlank(psCustomInfo.getHistoryCustomManager())){
psCustomInfo.setHistoryCustomManager(psCustomInfo.getCustomManager()+"");
}else {
psCustomInfo.setHistoryCustomManager(psCustomInfo.getHistoryCustomManager()+","+psCustomInfo.getCustomManager());
}
wq.set(PsCustomInfo::getCustomManager,null);
psCustomInfo.setCustomManager(null);
break; break;
case 2://拉黑 case 2://拉黑
psCustomInfo.setBlack("1"); psCustomInfo.setBlack("1");
@ -284,7 +295,7 @@ public class PsCustomInfoServiceImpl implements IPsCustomInfoService {
break; break;
} }
return baseMapper.updateById(psCustomInfo) > 0; return baseMapper.update(psCustomInfo,wq) > 0;
} }
/** /**

View File

@ -34,20 +34,22 @@ public class PsTaskMediaServiceImpl implements IPsTaskMediaService {
/** /**
* 查询任务资料 * 查询任务资料
* *
* @param id 主键 * @param customerId 客户id
* @param companyId 公司id
* @return 任务资料 * @return 任务资料
*/ */
@Override @Override
public List<PsTaskMediaVo> queryByTaskId(Long id){ public List<PsTaskMediaVo> queryByTaskId(Long customerId,Long companyId){
PsTaskMediaBo bo = new PsTaskMediaBo(); PsTaskMediaBo bo = new PsTaskMediaBo();
bo.setTaskId(id); bo.setCustomId(customerId);
bo.setCompanyId(companyId);
LambdaQueryWrapper<PsTaskMedia> lqw = buildQueryWrapper(bo); LambdaQueryWrapper<PsTaskMedia> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw); return baseMapper.selectVoList(lqw);
} }
private LambdaQueryWrapper<PsTaskMedia> buildQueryWrapper(PsTaskMediaBo bo) { private LambdaQueryWrapper<PsTaskMedia> buildQueryWrapper(PsTaskMediaBo bo) {
LambdaQueryWrapper<PsTaskMedia> lqw = Wrappers.lambdaQuery(); LambdaQueryWrapper<PsTaskMedia> lqw = Wrappers.lambdaQuery();
lqw.eq(bo.getTaskId() != null, PsTaskMedia::getTaskId, bo.getTaskId()); lqw.eq(bo.getCustomId() != null, PsTaskMedia::getCustomId, bo.getCustomId());
lqw.eq(StringUtils.isNotBlank(bo.getContractCode()), PsTaskMedia::getContractCode, bo.getContractCode()); lqw.eq(bo.getCompanyId() != null, PsTaskMedia::getCompanyId, bo.getCompanyId());
lqw.eq(StringUtils.isNotBlank(bo.getMediaType()), PsTaskMedia::getMediaType, bo.getMediaType()); lqw.eq(StringUtils.isNotBlank(bo.getMediaType()), PsTaskMedia::getMediaType, bo.getMediaType());
lqw.eq(StringUtils.isNotBlank(bo.getMediaOssId()), PsTaskMedia::getMediaOssId, bo.getMediaOssId()); lqw.eq(StringUtils.isNotBlank(bo.getMediaOssId()), PsTaskMedia::getMediaOssId, bo.getMediaOssId());
return lqw; return lqw;

View File

@ -124,7 +124,7 @@ public class PsTaskServiceImpl implements IPsTaskService {
//查询公司信息 //查询公司信息
PsCompanyInfoVo companyInfoVo = companyInfoService.queryById(mainTask.getCompanyId()); PsCompanyInfoVo companyInfoVo = companyInfoService.queryById(mainTask.getCompanyId());
//查询资料信息 //查询资料信息
List<PsTaskMediaVo> list = mediaService.queryByTaskId(mainTask.getId()); List<PsTaskMediaVo> list = mediaService.queryByTaskId(mainTask.getCustomId(),mainTask.getCompanyId());
PsTaskMainVo psTaskMainVo = new PsTaskMainVo(); PsTaskMainVo psTaskMainVo = new PsTaskMainVo();
psTaskMainVo.setCompanyInfoVo(companyInfoVo); psTaskMainVo.setCompanyInfoVo(companyInfoVo);
psTaskMainVo.setTaskMediaVoList(list); psTaskMainVo.setTaskMediaVoList(list);
@ -166,12 +166,12 @@ public class PsTaskServiceImpl implements IPsTaskService {
return; return;
} }
//2.1查询原始的合同资料信息 //2.1查询原始的合同资料信息
List<PsTaskMediaVo> mediaList = mediaService.queryByTaskId(save.getId()); List<PsTaskMediaVo> mediaList = mediaService.queryByTaskId(taskMain.getCustomId(),taskMain.getCompanyId());
//此次需要保存的资料id后续删除使用 //此次需要保存的资料id后续删除使用
List<String> ossIdList = new ArrayList<>(); List<String> ossIdList = new ArrayList<>();
save.getMediaBoList().forEach(item->{ save.getMediaBoList().forEach(item->{
item.setTaskId(taskMain.getId()); item.setCustomId(taskMain.getCustomId());
item.setContractCode(taskMain.getContractCode()); item.setCompanyId(taskMain.getCompanyId());
if(StringUtils.isNotBlank(item.getMediaOssId()) && !StringUtils.equals("-1",item.getMediaOssId())){ if(StringUtils.isNotBlank(item.getMediaOssId()) && !StringUtils.equals("-1",item.getMediaOssId())){
ossIdList.addAll(List.of(item.getMediaOssId().split(","))); ossIdList.addAll(List.of(item.getMediaOssId().split(",")));
} }