生成合同

This commit is contained in:
1073413548 2024-08-20 18:08:05 +08:00
parent 60610275f7
commit 78c917f69e
16 changed files with 92 additions and 27 deletions

View File

@ -78,7 +78,12 @@
<#list item.detailBos as detail>
<p class="content" style="text-indent:32pt">${detail.businessProjectLabel}
<#if detail.extentInfo?? && detail.extentInfo != "">
${detail.extentInfo}
<#assign extenInfo = detail.extentInfo?split("$")>
<#list extenInfo as exten>
${exten?split("#")[1]}
<#if exten_has_next>,</#if>
</#list>
</#if>
<#if detail.amount??>
-金额:${detail.amount}

View File

@ -1,5 +1,7 @@
package com.pusong.common.doc.util;
import com.pusong.common.core.utils.StringUtils;
public class NumBerTool {
private static final String[] NUMBERS = {"", "", "", "", "", "", "",
"", "", ""};
@ -102,7 +104,7 @@ public class NumBerTool {
chineseDecimal.append(decimals[i] == 0 ? ""
: (NUMBERS[decimals[i]] + DUNIT[i]));
}
if(decimals.length == 0){
if(StringUtils.isBlank(chineseDecimal)){
chineseDecimal.append("");
}
return chineseDecimal.toString();

View File

@ -71,9 +71,9 @@ public class PsContractOperateController extends BaseController {
*/
@SaCheckPermission("business:contractOperate:addReturnRecord")
@PostMapping(value = "/addReturnRecord", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public R<Void> addReturnRecord(@RequestPart("files") List<MultipartFile> files,
public R<Void> addReturnRecord(@RequestPart(value = "files" ,required = false) List<MultipartFile> files,
@Validated(AddGroup.class) PsContractPayBo psContractPayBo)throws Exception {
payService.addPay( files, psContractPayBo);
payService.returnPay( files, psContractPayBo);
return R.ok();
}

View File

@ -67,7 +67,7 @@ public class PsContractPayBo {
private String payMode;
/**
* 收款主体
* 收款主体退款时对公账号
*/
private String gathMain;
@ -78,12 +78,12 @@ public class PsContractPayBo {
// private String payCertification;
/**
* 回款备注
* 回款/退款备注
*/
private String payDesc;
/**
* 回款备注
* 修改回款时的备注 回款备注
*/
private String updateDesc;

View File

@ -194,4 +194,18 @@ public class PsContractInfoVo implements Serializable {
* 是否作废 02审批中03是04否
*/
private String isCancel;
/**
* 首次签约日期
*/
@JsonFormat(pattern = "yyyy-MM-dd")
private Date firstApplyDate;
/**
* 合作年限
*/
private String conTime;
/**
* 发票ossid
*/
private String invoiceOssid;
}

View File

@ -53,7 +53,7 @@ public abstract class ApproverAbstractServiceImpl implements ApproverService {
public void apply(String bussinessId,String contractCode, String desc, Object updateData){
List<PsApproverRecord> list = approverRecordMapper.selectList(Wrappers.<PsApproverRecord>lambdaQuery().eq(PsApproverRecord::getDelFlag, "0")
.eq(PsApproverRecord::getBusinessId, bussinessId).eq(PsApproverRecord::getBusinessType,approverType())
.ne(PsApproverRecord::getApproverStatus, ApproverStatusEnum.INIT.getCode()));
.eq(PsApproverRecord::getApproverStatus, ApproverStatusEnum.INIT.getCode()));
if(CollectionUtils.isNotEmpty(list)){
throw new ServiceException("已存在同类型审批,请勿重复提交");
}
@ -81,15 +81,20 @@ public abstract class ApproverAbstractServiceImpl implements ApproverService {
*/
@Override
public Page<PsApproverRecordVo> queryList(PsApproverRecordBo bo, PageQuery pageQuery){
QueryWrapper<PsApproverRecord> lqw = Wrappers.<PsApproverRecord>query().eq("app.business_type",approverType());
QueryWrapper<PsApproverRecord> lqw = Wrappers.<PsApproverRecord>query().eq("app.business_type",approverType())
.eq(bo.getId()!=null,"app.id",bo.getId())
.orderByAsc("app.approver_status").orderByAsc("app.approver_date");
Page<PsApproverRecordVo> res = recordMapper.selectPageApproverList(pageQuery.build(), lqw);
if(CollectionUtils.isNotEmpty(res.getRecords())){
res.getRecords().forEach(item->{
item.setResidualMoney(item.getContractAmount().subtract(item.getPayMoney()));
//装填回款记录
//装填回款周期
List<PsContractPayVo> payList = queryListByContractCode(bo.getBusinessId(),null, PayStatusEnum.SUCCESS);
item.setPeriod(DateUtils.calWorkDate(payList.get(0).getPayDate(),payList.get(payList.size()-1).getPayDate()) + 1);
item.setUpdateDataObject(JSON.parseObject(item.getUpdateData()));
if(CollectionUtils.isNotEmpty(payList)){
item.setPeriod(DateUtils.calWorkDate(payList.get(0).getPayDate(),payList.get(payList.size()-1).getPayDate()) + 1);
item.setUpdateDataObject(JSON.parseObject(item.getUpdateData()));
}
});
}
return res;

View File

@ -20,6 +20,7 @@ import com.pusong.business.mapper.PsApproverRecordMapper;
import com.pusong.business.mapper.PsCompanyInfoMapper;
import com.pusong.business.mapper.PsContractPayMapper;
import com.pusong.business.mapper.PsCustomInfoMapper;
import com.pusong.common.core.service.UserService;
import com.pusong.common.core.utils.DateUtils;
import com.pusong.common.mybatis.core.page.PageQuery;
import jakarta.annotation.Resource;
@ -49,6 +50,7 @@ public class PublicApproverServiceImpl extends ApproverAbstractServiceImpl {
private PsApproverRecordMapper recordMapper;
@Resource
private final PsCompanyInfoMapper companyInfoMapper;
private final UserService userService;
/**
* 1 审批成功 退款审批成功
* @param psApproverRecord 神瀑类
@ -67,6 +69,10 @@ public class PublicApproverServiceImpl extends ApproverAbstractServiceImpl {
*/
@Override
public void fail(PsApproverRecord psApproverRecord) {
PsCustomInfo info = customInfoMapper.selectById(Long.valueOf(psApproverRecord.getBusinessId()));
info.setCustomStatus(CustomerStatusEnum.PUBLIC.getCode());
info.setCustomManager(Long.valueOf(psApproverRecord.getUpdateData()));
customInfoMapper.updateById(info);
}
/**
@ -77,7 +83,9 @@ public class PublicApproverServiceImpl extends ApproverAbstractServiceImpl {
*/
@Override
public Page<PsApproverRecordVo> queryList(PsApproverRecordBo bo, PageQuery pageQuery){
QueryWrapper<PsApproverRecord> lqw = Wrappers.<PsApproverRecord>query().eq("app.business_type",approverType());
QueryWrapper<PsApproverRecord> lqw = Wrappers.<PsApproverRecord>query().eq("app.business_type",approverType())
.eq(bo.getId()!=null,"app.id",bo.getId())
.orderByAsc("app.approver_status").orderByAsc("app.approver_date");;
Page<PsApproverRecordVo> res = recordMapper.selectPagePublicList(pageQuery.build(), lqw);
if(CollectionUtils.isEmpty(res.getRecords())){
return res;
@ -97,7 +105,7 @@ public class PublicApproverServiceImpl extends ApproverAbstractServiceImpl {
});
}
for (PsApproverRecordVo info : res.getRecords()) {
info.setCompanyInfoList(id_companyMap.get(info.getCompanyInfoList()));
info.setCompanyInfoList(id_companyMap.get(info.getCustomId()));
//最早的公司名称
if(CollectionUtils.isNotEmpty(info.getCompanyInfoList())){
//找到最近修改的公司名称
@ -107,6 +115,8 @@ public class PublicApproverServiceImpl extends ApproverAbstractServiceImpl {
}else{
info.setCompanyNum(0);
}
//认领人id转姓名
info.setUpdateData(userService.selectNicknameById(Long.valueOf(info.getUpdateData())));
}
return res;
}

View File

@ -7,10 +7,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.pusong.business.domain.PsApproverRecord;
import com.pusong.business.domain.PsContractInfo;
import com.pusong.business.domain.bo.PsApproverRecordBo;
import com.pusong.business.domain.bo.PsContractBusinessBo;
import com.pusong.business.domain.bo.PsContractBusinessDetailBo;
import com.pusong.business.domain.bo.PsContractInfoBo;
import com.pusong.business.domain.bo.*;
import com.pusong.business.domain.vo.PsApproverRecordVo;
import com.pusong.business.domain.vo.PsContractInfoVo;
import com.pusong.business.enums.ApproverTypeEnum;
@ -57,7 +54,9 @@ public class SignApproverServiceImpl extends ApproverAbstractServiceImpl {
//合同信息
PsContractInfo info = new PsContractInfo();
BeanUtils.copyProperties(vo,info);
PsCompanyInfoBo companyInfo = new PsCompanyInfoBo();
BeanUtils.copyProperties(vo.getPsCompanyInfoVo(), companyInfo);
bo.setCompanyInfoBo(companyInfo);
List<PsContractBusinessBo> businessBos = new ArrayList<>();
vo.getBusinessVoList().forEach(item->{
List<PsContractBusinessDetailBo> detailBos = new ArrayList<>();

View File

@ -366,6 +366,7 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
SysDictData main = dictDataService.selectDict("contract_main", add.getContractMain());
bo.getBusinessList().forEach(item->{
item.setBusinessTypeName(dictDataService.selectDictLabel("contract_type",item.getBusinessType()));
// item.getDetailBos().forEach(it->{it.getExtentInfo().});
});
try{
//生成合同pdf
@ -520,6 +521,12 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
//包含最后一天
vo.setPeriod(DateUtils.calWorkDate(payList.get(0).getPayDate(),payList.get(payList.size()-1).getPayDate()) + 1);
}
Date date = new Date();
Date startDate = vo.getFirstApplyDate();
int year = (date.getYear() - startDate.getYear());
int month = (date.getMonth() - startDate.getMonth());
int day = (date.getDate() - startDate.getDate());
vo.setConTime((year>0?year+"":"")+(month>0?month+"":"")+(day>0?day+"":"") );
//todo 签章未通过时查询未通过的原因
return vo;
}

View File

@ -112,7 +112,7 @@ public class PsContractPayServiceImpl implements IPsContractPayService {
baseMapper.insert(pay);
//发起审批
ApproverService service = container.getService(ApproverTypeEnum.RETURN.getCode());
service.apply(pay.getId()+"",pay.getContractCode(),null, null);
service.apply(pay.getId()+"",pay.getContractCode(),payBo.getPayDesc(), pay.getMoney().stripTrailingZeros());
}
/**
* 根据主键id查询回款记录

View File

@ -93,11 +93,13 @@ public class PsCustomInfoServiceImpl implements IPsCustomInfoService {
@Override
public TableDataInfo<PsCustomInfoVo> queryPageList(PsCustomInfoBo bo, PageQuery pageQuery) {
//查询客户基本信息
bo.setNotCustomStatus(List.of(CustomerStatusEnum.PUBLIC.getCode()));
bo.setBlack(CommonStatusEnum.N.getCode());
if(bo.getType() == null || bo.getType() == 1){//任务列表
bo.setNotCustomStatus(CustomerStatusEnum.getPublic());
}else if(bo.getType() == 2){//黑名单
bo.setBlack(CommonStatusEnum.Y.getCode());
bo.setNotCustomStatus(CustomerStatusEnum.getPublic());
}else if(bo.getType() == 3){//公海
bo.setInCustomStatus(CustomerStatusEnum.getPublic());
}
@ -410,6 +412,7 @@ public class PsCustomInfoServiceImpl implements IPsCustomInfoService {
* 主动认领
* @param customerId 客户id
*/
@Transactional
public void claim(Long customerId){
PsCustomInfo psCustomInfo = baseMapper.selectById(customerId);
psCustomInfo.setCustomStatus(CustomerStatusEnum.CLAIMAPPROVER.getCode());

View File

@ -16,8 +16,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
, info.contract_amount
, (select IFNULL(sum(pa.money),0) from ps_contract_pay pa where pa.pay_status = 1 and pa.business_type = 1 and pa.contract_code = info.contract_code
)-(select IFNULL(sum(pay.money),0) from ps_contract_pay pay where pay.pay_status = 1 and pay.business_type = 2 and pay.contract_code = info.contract_code)
as pay_money,
as pay_money
from ps_approver_record app
left join ps_contract_info info on app.contract_code = info.contract_code and app.del_flag = 0
left join ps_company_info com on info.company_id = com.id
@ -31,9 +30,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
, cus.custom_introducer
, cus.custom_name
, cus.custom_mobile
, cus.custom_id
, cus.id custom_id
from ps_approver_record app
left join ps_custom_info cus on app.business_id = info.custom_id
left join ps_custom_info cus on app.business_id = cus.id
${ew.getCustomSqlSegment}
</select>
</mapper>

View File

@ -13,6 +13,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<sql id="queryContractList" >
select info.*,
(select apply_date from ps_contract_info pci where pci.custom_id = info.custom_id order by pci.apply_date limit 0,1)
as first_apply_date,
com.id com_id,
com.company_name com_company_name,
com.company_adress com_company_adress,
@ -23,7 +25,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
cus.id cus_id,
cus.custom_name cus_custom_name ,
cus.custom_mobile cus_custom_mobile,
us.nick_name custom_manager_name
us.nick_name custom_manager_name,
(select ptm.invoice from ps_task_main ptm where ptm.task_type = '3'
and ptm.contract_code = info.contract_code and ptm.task_status = 30 limit 0,1) as invoiceOssid
from ps_contract_info info
left join ps_company_info com on info.company_id = com.id
left join ps_custom_info cus on info.custom_id = cus.id

View File

@ -65,6 +65,13 @@ public class SysUserController extends BaseController {
public TableDataInfo<SysUserVo> list(SysUserBo user, PageQuery pageQuery) {
return userService.selectPageUserList(user, pageQuery);
}
/**
* 获取登陆人下的用户列表
*/
@GetMapping("/userlist")
public R<List<SysUserVo>> userlist() {
return R.ok(userService.selectUserList());
}
/**
* 导出用户列表

View File

@ -17,7 +17,7 @@ public interface ISysUserService {
TableDataInfo<SysUserVo> selectPageUserList(SysUserBo user, PageQuery pageQuery);
List<SysUserVo> selectUserList();
/**
* 根据条件分页查询用户列表
*

View File

@ -70,6 +70,15 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
return TableDataInfo.build(page);
}
/**
* 获取当前登录人下的用户列表
* @return
*/
@Override
public List<SysUserVo> selectUserList() {
return baseMapper.selectUserList( this.buildQueryWrapper(new SysUserBo()));
}
/**
* 根据条件分页查询用户列表
*