Merge branch 'wlsupdate' into main
# Conflicts: # .gitignore # doc/report.ftl
This commit is contained in:
commit
52e23f5bfb
1
.gitignore
vendored
1
.gitignore
vendored
@ -2,3 +2,4 @@
|
||||
*.iml
|
||||
*/target/*
|
||||
*/*/target/*
|
||||
*.log
|
||||
|
@ -55,53 +55,84 @@
|
||||
<table style="width:526.55pt; margin-right:auto; margin-left:auto;">
|
||||
<tbody>
|
||||
<tr >
|
||||
<td style="width:88.2pt;height: 30pt">
|
||||
服务公司
|
||||
</td>
|
||||
<td style="width:88.2pt;height: 30pt">
|
||||
金额
|
||||
</td>
|
||||
<td style="width:88.2pt;height: 30pt">
|
||||
服务类别
|
||||
</td>
|
||||
<td style="width:416pt;" colspan="2">
|
||||
具体内容
|
||||
</td>
|
||||
<td style="width:88.2pt;height: 30pt">
|
||||
是否代账
|
||||
</td>
|
||||
</tr>
|
||||
<#list business as item>
|
||||
<#list serviceCompany as company>
|
||||
<tr >
|
||||
<td>
|
||||
${item.businessTypeName}
|
||||
${company.companyName}
|
||||
</td>
|
||||
<td colspan="2" style="text-align: left">
|
||||
<div style="height: 5pt;width: 1pt"></div>
|
||||
<span class="content" style="text-indent:5pt">
|
||||
${item.businessTypeName}-金额:${item.businessAmount}元
|
||||
<#if item.businessDesc?? && item.businessDesc != "">
|
||||
-备注:${item.businessDesc}
|
||||
<td>
|
||||
${company.businessAmount}元
|
||||
</td>
|
||||
<td>
|
||||
<#list company.businessList as item>
|
||||
<#if item_has_next>
|
||||
${item.businessTypeName}、
|
||||
<#else>
|
||||
${item.businessTypeName}
|
||||
</#if>
|
||||
</span>
|
||||
<#list item.detailBos as detail>
|
||||
<span class="content" style="text-indent:32pt">${detail.businessProjectLabel}
|
||||
<#if 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}元
|
||||
</#if>
|
||||
<#if detail.amountDesc?? && detail.amountDesc != "">
|
||||
-备注:${detail.amountDesc}
|
||||
</#if>
|
||||
;
|
||||
</span>
|
||||
</#list>
|
||||
</td>
|
||||
<td colspan="2">
|
||||
<#list company.businessList as item>
|
||||
<div style="height: 5pt;width: 1pt"></div>
|
||||
<p class="content" style="text-indent:5pt">
|
||||
${item.businessTypeName}-金额:${item.businessAmount}元
|
||||
<#if item.businessDesc?? && item.businessDesc != "">
|
||||
-备注:${item.businessDesc}
|
||||
</#if>
|
||||
</p>
|
||||
<#list item.detailBos as detail>
|
||||
<p class="content" style="text-indent:32pt">${detail.businessProjectLabel}
|
||||
<#if 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}
|
||||
</#if>
|
||||
<#if detail.amountDesc?? && detail.amountDesc != "">
|
||||
-备注:${detail.amountDesc}
|
||||
</#if>
|
||||
</p>
|
||||
</#list>
|
||||
<#nt>
|
||||
</#list>
|
||||
</td>
|
||||
<td>
|
||||
<#if company.isProxy?? && company.isProxy == "1">
|
||||
是
|
||||
<#else>
|
||||
否
|
||||
</#if>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</#list>
|
||||
<tr >
|
||||
<td >
|
||||
付款账号
|
||||
</td>
|
||||
<td colspan="2" >
|
||||
<td colspan="5" >
|
||||
<div style="height: 5pt;width: 1pt"></div>
|
||||
<div style="float: left;">
|
||||
<p class="content" style="text-indent:5pt">公司名称:${main.name?if_exists}</p>
|
||||
@ -114,7 +145,7 @@
|
||||
</td>
|
||||
</tr>
|
||||
<tr >
|
||||
<td colspan="3" style="width:515pt; ">
|
||||
<td colspan="6" style="width:515pt; ">
|
||||
<div style="height: 5pt;width: 1pt"></div>
|
||||
<p style="margin:5pt; text-indent:18pt; text-align:justify; ">
|
||||
<span style="">合同金额:共计¥</span>
|
||||
@ -128,7 +159,7 @@
|
||||
<td >
|
||||
付款方式
|
||||
</td>
|
||||
<td colspan="2">
|
||||
<td colspan="5">
|
||||
<div style="height: 5pt;width: 1pt"></div>
|
||||
<p class="content" style="text-indent:5pt">${contract.payModeDesc}</p>
|
||||
</td>
|
||||
@ -137,7 +168,7 @@
|
||||
<td >
|
||||
合同备注
|
||||
</td>
|
||||
<td colspan="2">
|
||||
<td colspan="5">
|
||||
<div style="height: 5pt;width: 1pt"></div>
|
||||
<p class="content" style="text-indent:5pt">
|
||||
<#if contract.signDesc?? && contract.signDesc != "">
|
||||
|
@ -72,7 +72,7 @@ public class PdfGenerator {
|
||||
}
|
||||
|
||||
|
||||
public static void makePdf(Map<String, Object> data ,String pdfpath,String templateName) throws Exception{
|
||||
public static void makePdf(Map<String, Object> data, String pdfpath, String templateName) throws Exception{
|
||||
// 加载模板
|
||||
Template template = configuration.getTemplate(templateName);
|
||||
data.put("imagePath",System.getProperty("user.dir"));
|
||||
|
@ -62,7 +62,7 @@ public class PsApproverRecordController extends BaseController {
|
||||
@GetMapping("/approver")
|
||||
public R<Void> approver(@NotBlank(message = "操作类型不能为空") String operate,
|
||||
@NotNull(message = "数据id不能为空") Long id, String desc) {
|
||||
contractInfoService.finish(psApproverRecordService.approver(operate, id,desc));
|
||||
contractInfoService.finish(psApproverRecordService.approver(operate, id, desc));
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
|
@ -4,6 +4,7 @@ import java.util.List;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaIgnore;
|
||||
import com.pusong.business.domain.bo.PsContractInfoQueryBo;
|
||||
import com.pusong.business.domain.bo.PsInvoiceBo;
|
||||
import com.pusong.business.domain.vo.PsContractBusinessVo;
|
||||
import com.pusong.business.domain.vo.PsSalaryContractVo;
|
||||
import com.pusong.business.domain.vo.ServiceScheduleVo;
|
||||
@ -56,6 +57,13 @@ public class PsContractInfoController extends BaseController {
|
||||
@RepeatSubmit()
|
||||
@PostMapping("/create")
|
||||
public R<Long> add(@Validated(AddGroup.class) @RequestBody PsContractInfoBo bo) {
|
||||
if (bo.getFirstPartyType() == PsContractInfoBo.FIRSTPARTYTYPE.INDIVIDUALS.getType()){
|
||||
bo.setContactPersonName(bo.getCompanyInfoBo().getLegalPersonName());
|
||||
bo.setContactPersonPhone(bo.getCompanyInfoBo().getLegalPersonPhone());
|
||||
bo.setContactPersonIdcard(bo.getCompanyInfoBo().getLegalPersonIdcard());
|
||||
bo.setCompanyInfoBo(null);
|
||||
}
|
||||
|
||||
return R.ok(psContractInfoService.createContract(bo,2));
|
||||
}
|
||||
/**
|
||||
@ -97,6 +105,15 @@ public class PsContractInfoController extends BaseController {
|
||||
return psContractInfoService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 使用客户id 查询分页查询合同列表
|
||||
*/
|
||||
@SaCheckPermission("business:contractInfo:LIST")
|
||||
@GetMapping("/queryPageListByCustomId")
|
||||
public TableDataInfo<PsContractInfoVo> queryPageListByCustomId(@RequestParam Long customId, PageQuery pageQuery) {
|
||||
return psContractInfoService.queryPageListByCustomId(customId, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据合同编码查询合同信息
|
||||
*/
|
||||
@ -164,6 +181,18 @@ public class PsContractInfoController extends BaseController {
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
/**
|
||||
* 开发票(开发票操作)
|
||||
*/
|
||||
@SaCheckPermission("business:contractInfo:list")
|
||||
@Log(title = "合同开发票", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@GetMapping("/invoice_new")
|
||||
public R<Void> invoiceNew(@Validated(AddGroup.class) PsInvoiceBo psInvoiceBo) {
|
||||
psContractInfoService.invoice(psInvoiceBo);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 免费派单
|
||||
|
@ -88,8 +88,11 @@ public class PsContractOperateController extends BaseController {
|
||||
@RepeatSubmit()
|
||||
@SaCheckPermission("business:contractOperate:rollBack")
|
||||
@PostMapping(value = "/rollBack", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
|
||||
public R<Void> rollBack(@RequestPart("file") MultipartFile file,@NotBlank String contractCode )throws Exception {
|
||||
operateService.rollbackContract( file, contractCode);
|
||||
public R<Void> rollBack(@RequestPart("file") MultipartFile file, @NotBlank String contractCode)throws Exception {
|
||||
String s = operateService.rollbackContract(file, contractCode);
|
||||
if (s != null){
|
||||
return R.fail(s);
|
||||
}
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
|
@ -119,7 +119,10 @@ public class PsTaskController extends BaseController {
|
||||
@SaCheckPermission("business:task:list")
|
||||
@GetMapping("/mainFinish")
|
||||
public R<Void> mainFinish(@NotNull Long id) {
|
||||
contractInfoService.finish(psTaskMainService.finishMain(id));
|
||||
String finish = contractInfoService.finish(psTaskMainService.finishMain(id));
|
||||
if (finish != null){
|
||||
return R.fail(finish);
|
||||
}
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
|
@ -138,8 +138,10 @@ public class PsCompanyInfo extends TenantEntity {
|
||||
* 2逻辑删除 0 默认有效
|
||||
*/
|
||||
private Long delFlag;
|
||||
|
||||
|
||||
/**
|
||||
* 公司类型1签约公司 2服务公司
|
||||
*/
|
||||
private String companyType;
|
||||
|
||||
|
||||
}
|
||||
|
@ -59,6 +59,17 @@ public class PsContractBusiness extends TenantEntity {
|
||||
* 2逻辑删除 0 默认有效
|
||||
*/
|
||||
private Long delFlag;
|
||||
/**
|
||||
* 服务公司id
|
||||
*/
|
||||
private Long companyId;
|
||||
|
||||
|
||||
/**
|
||||
* 是否代账
|
||||
*/
|
||||
private String isProxy;
|
||||
/**
|
||||
* 是否老账新接
|
||||
*/
|
||||
private String isOld;
|
||||
}
|
||||
|
@ -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;
|
||||
|
||||
|
||||
|
||||
}
|
@ -46,6 +46,21 @@ public class PsContractInfo extends TenantEntity {
|
||||
*/
|
||||
private Long customId;
|
||||
|
||||
/**
|
||||
* 签约个人时联系人姓名
|
||||
*/
|
||||
private String contactPersonName;
|
||||
|
||||
/**
|
||||
* 签约个人时联系人手机号
|
||||
*/
|
||||
private String contactPersonPhone;
|
||||
|
||||
/**
|
||||
* 签约个人时联系人身份证号
|
||||
*/
|
||||
private String contactPersonIdcard;
|
||||
|
||||
/**
|
||||
* 公司id
|
||||
*/
|
||||
@ -87,11 +102,11 @@ public class PsContractInfo extends TenantEntity {
|
||||
private String customScene;
|
||||
|
||||
/**
|
||||
* 是否代账
|
||||
* 是否代账,废弃,转移到服务公司的服务项目里
|
||||
*/
|
||||
private String isProxy;
|
||||
/**
|
||||
* 是否老账新接
|
||||
* 是否老账新接,废弃,转移到服务公司的服务项目里
|
||||
*/
|
||||
private String isOld;
|
||||
|
||||
|
@ -83,4 +83,14 @@ public class PsTaskMain extends TenantEntity {
|
||||
* 任务完成时间
|
||||
*/
|
||||
private Date finishDate;
|
||||
|
||||
/**
|
||||
* 扩展: 类型为开发票时 发票内容
|
||||
*/
|
||||
private String extend;
|
||||
|
||||
/**
|
||||
* 服务公司id
|
||||
*/
|
||||
private Long serviceCompanyId;
|
||||
}
|
||||
|
@ -9,6 +9,8 @@ import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode
|
||||
public class AppointBo {
|
||||
@ -21,7 +23,7 @@ public class AppointBo {
|
||||
* 执行者用户id
|
||||
*/
|
||||
@NotNull
|
||||
private Long userId;
|
||||
private List<Long> userIds;
|
||||
|
||||
/**
|
||||
* 任务委派类型(1内勤,2外勤,3特勤)
|
||||
|
@ -13,6 +13,8 @@ import lombok.EqualsAndHashCode;
|
||||
import jakarta.validation.constraints.*;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* 公司信息业务对象 ps_company_info
|
||||
@ -139,4 +141,41 @@ public class PsCompanyInfoBo {
|
||||
* 发票类型
|
||||
*/
|
||||
private String billType;
|
||||
/**
|
||||
* 公司类型1签约公司 2服务公司
|
||||
*/
|
||||
private String companyType;
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 合同服务类别
|
||||
*/
|
||||
@NotEmpty(message = "合同服务类别不能为空")
|
||||
private List<PsContractBusinessBo> businessList;
|
||||
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private Date startServiceDate;
|
||||
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private Date endServiceDate;
|
||||
|
||||
/**
|
||||
* 是否代账
|
||||
*/
|
||||
private String isProxy;
|
||||
/**
|
||||
* 是否老账新接
|
||||
*/
|
||||
private String isOld;
|
||||
|
||||
/**
|
||||
* 服务总金额
|
||||
*/
|
||||
BigDecimal businessAmount;
|
||||
public BigDecimal getContractAmount(){
|
||||
this.businessAmount = businessList == null ? new BigDecimal(0) : businessList.stream().map(PsContractBusinessBo::getBusinessAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
return this.businessAmount;
|
||||
}
|
||||
}
|
||||
|
@ -65,8 +65,22 @@ public class PsContractBusinessBo {
|
||||
*/
|
||||
@JsonFormat(pattern ="yyyy-MM-dd")
|
||||
private Date startDate;
|
||||
/**
|
||||
* 服务公司id
|
||||
*/
|
||||
private Long companyId;
|
||||
/**
|
||||
* 合同服务项目
|
||||
*/
|
||||
private List<PsContractBusinessDetailBo> detailBos;
|
||||
|
||||
/**
|
||||
* 是否代账
|
||||
*/
|
||||
private String isProxy;
|
||||
/**
|
||||
* 是否老账新接
|
||||
*/
|
||||
private String isOld;
|
||||
|
||||
}
|
||||
|
@ -6,6 +6,7 @@ import com.pusong.common.core.validate.EditGroup;
|
||||
import com.pusong.common.core.validate.QueryGroup;
|
||||
import com.pusong.common.mybatis.core.domain.BaseEntity;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import io.github.linpeilie.annotations.AutoMapping;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import jakarta.validation.constraints.*;
|
||||
@ -102,18 +103,37 @@ public class PsContractInfoBo {
|
||||
* 是否续费
|
||||
*/
|
||||
private String isDue;
|
||||
/**
|
||||
* 合同服务类别
|
||||
*/
|
||||
@NotEmpty(message = "合同服务类别不能为空")
|
||||
private List<PsContractBusinessBo> businessList;
|
||||
|
||||
|
||||
/**
|
||||
* 公司信息
|
||||
* 签约个人时联系人姓名
|
||||
*/
|
||||
@NotEmpty(message = "公司信息不能为空")
|
||||
@AutoMapping(target = "contactPersonName")
|
||||
private String contactPersonName;
|
||||
|
||||
/**
|
||||
* 签约个人时联系人手机号
|
||||
*/
|
||||
@AutoMapping(target = "contactPersonPhone")
|
||||
private String contactPersonPhone;
|
||||
|
||||
/**
|
||||
* 签约个人时联系人身份证号
|
||||
*/
|
||||
@AutoMapping(target = "contactPersonIdcard")
|
||||
private String contactPersonIdcard;
|
||||
|
||||
/**
|
||||
* 签约公司信息
|
||||
*/
|
||||
// @NotEmpty(message = "公司信息不能为空")
|
||||
private PsCompanyInfoBo companyInfoBo;
|
||||
|
||||
/**
|
||||
* 服务公司信息集合
|
||||
*/
|
||||
private List<PsCompanyInfoBo> serviceCompanyInfoList;
|
||||
|
||||
/**
|
||||
* 修改合同说明
|
||||
*/
|
||||
@ -131,4 +151,23 @@ public class PsContractInfoBo {
|
||||
* 合同状态
|
||||
*/
|
||||
private String contractStatusCode;
|
||||
|
||||
/**
|
||||
* 签约主体 1 企业 2个人
|
||||
*/
|
||||
private int firstPartyType;
|
||||
|
||||
public enum FIRSTPARTYTYPE{
|
||||
COMPANY(1),
|
||||
INDIVIDUALS(2);
|
||||
|
||||
int type;
|
||||
FIRSTPARTYTYPE(int type){
|
||||
this.type = type;
|
||||
}
|
||||
public int getType(){
|
||||
return this.type;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -42,6 +42,10 @@ public class PsContractInfoQueryBo {
|
||||
*/
|
||||
private String customName;
|
||||
|
||||
/**
|
||||
* 合同id
|
||||
*/
|
||||
private Long customId;
|
||||
/**
|
||||
* 客户电话
|
||||
*/
|
||||
|
@ -0,0 +1,54 @@
|
||||
package com.pusong.business.domain.bo;
|
||||
|
||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import com.pusong.common.core.validate.AddGroup;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
|
||||
/**
|
||||
* task表的extend存储的发票字段
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode
|
||||
public class PsInvoiceBo {
|
||||
|
||||
/**
|
||||
* 购方名称
|
||||
*/
|
||||
@NotBlank(message = "购方名称不能为空",groups = {AddGroup.class})
|
||||
private String name;
|
||||
/**
|
||||
* 税号
|
||||
*/
|
||||
private String taxNum;
|
||||
/**
|
||||
* 金额
|
||||
*/
|
||||
@NotBlank(message = "金额不能为空",groups = {AddGroup.class})
|
||||
private String amount;
|
||||
/**
|
||||
* 发票电话
|
||||
*/
|
||||
private String invoicePhone;
|
||||
|
||||
/**
|
||||
* 其他
|
||||
*/
|
||||
private String other;
|
||||
/**
|
||||
* 抬头
|
||||
*/
|
||||
@NotBlank(message = "抬头不能为空",groups = {AddGroup.class})
|
||||
private String invoiceTitle;
|
||||
/**
|
||||
* 合同编码
|
||||
*/
|
||||
@NotBlank(message = "合同编码不能为空",groups = {AddGroup.class})
|
||||
private String contractCode;
|
||||
}
|
||||
|
@ -16,7 +16,7 @@ import lombok.Data;
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
@ -148,4 +148,23 @@ public class PsCompanyInfoVo implements Serializable {
|
||||
* 发票类型
|
||||
*/
|
||||
private String billType;
|
||||
/**
|
||||
* 服务类别信息
|
||||
*/
|
||||
private List<PsContractBusinessVo> businessVoList;
|
||||
|
||||
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private Date startServiceDate;
|
||||
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private Date endServiceDate;
|
||||
/**
|
||||
* 是否代账
|
||||
*/
|
||||
private String isProxy;
|
||||
/**
|
||||
* 是否老账新接
|
||||
*/
|
||||
private String isOld;
|
||||
}
|
||||
|
@ -75,4 +75,13 @@ public class PsContractBusinessVo implements Serializable {
|
||||
*/
|
||||
private List<PsContractBusinessDetailVo> detailVoList;
|
||||
|
||||
/**
|
||||
* 是否代账
|
||||
*/
|
||||
private String isProxy;
|
||||
/**
|
||||
* 是否老账新接
|
||||
*/
|
||||
private String isOld;
|
||||
|
||||
}
|
||||
|
@ -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;
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
@ -51,7 +51,7 @@ public class PsContractInfoVo implements Serializable {
|
||||
private Long customId;
|
||||
|
||||
/**
|
||||
* 公司id
|
||||
* 签约公司id
|
||||
*/
|
||||
private Long companyId;
|
||||
|
||||
@ -189,8 +189,24 @@ public class PsContractInfoVo implements Serializable {
|
||||
* 是否续费
|
||||
*/
|
||||
private String isDue;
|
||||
|
||||
/**
|
||||
* 公司信息
|
||||
* 签约个人时联系人姓名
|
||||
*/
|
||||
private String contactPersonName;
|
||||
|
||||
/**
|
||||
* 签约个人时联系人手机号
|
||||
*/
|
||||
private String contactPersonPhone;
|
||||
|
||||
/**
|
||||
* 签约个人时联系人身份证号
|
||||
*/
|
||||
private String contactPersonIdcard;
|
||||
|
||||
/**
|
||||
* 签约公司信息(不会有服务类别)
|
||||
*/
|
||||
private PsCompanyInfoVo psCompanyInfoVo;
|
||||
/**
|
||||
@ -198,9 +214,9 @@ public class PsContractInfoVo implements Serializable {
|
||||
*/
|
||||
private PsCustomInfoVo psCustomInfoVo;
|
||||
/**
|
||||
* 服务类别信息
|
||||
* 服务公司信息
|
||||
*/
|
||||
private List<PsContractBusinessVo> businessVoList;
|
||||
private List<PsCompanyInfoVo> psCompanySerivceVo;
|
||||
|
||||
/**
|
||||
* 汇款记录信息信息
|
||||
@ -243,4 +259,23 @@ public class PsContractInfoVo implements Serializable {
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
|
||||
private Date finishDate;
|
||||
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
|
||||
private Long createBy;
|
||||
|
||||
|
||||
/**
|
||||
* 服务项目里是否为 托管服务
|
||||
* @return
|
||||
*/
|
||||
public boolean isTuoguanService(){
|
||||
for (PsCompanyInfoVo psCompanyInfoVo : this.getPsCompanySerivceVo()) {
|
||||
for (PsContractBusinessVo psContractBusinessVo : psCompanyInfoVo.getBusinessVoList()) {
|
||||
if (psContractBusinessVo.getBusinessType().equals("2")){//2托管服务,没找到枚举,暂时写死2
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,57 @@
|
||||
package com.pusong.business.domain.vo;
|
||||
|
||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.pusong.business.domain.PsTaskMain;
|
||||
import com.pusong.common.translation.annotation.Translation;
|
||||
import com.pusong.common.translation.constant.TransConstant;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* task表的extend存储的发票字段
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
public class PsInvoiceVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 购方名称
|
||||
*/
|
||||
private String name;
|
||||
/**
|
||||
* 税号
|
||||
*/
|
||||
private String taxNum;
|
||||
/**
|
||||
* 金额
|
||||
*/
|
||||
private String amount;
|
||||
/**
|
||||
* 发票电话
|
||||
*/
|
||||
private String invoicePhone;
|
||||
|
||||
/**
|
||||
* 其他
|
||||
*/
|
||||
private String other;
|
||||
/**
|
||||
* 抬头
|
||||
*/
|
||||
private String invoiceTitle;
|
||||
/**
|
||||
* 合同编码
|
||||
*/
|
||||
private String contractCode;
|
||||
}
|
||||
|
@ -138,5 +138,15 @@ public class PsTaskMainVo implements Serializable {
|
||||
* 任务备注
|
||||
*/
|
||||
private String taskContentDesc;
|
||||
|
||||
/**
|
||||
* 扩展: 类型未开发票时 发票内容
|
||||
*/
|
||||
private String extend;
|
||||
|
||||
/**
|
||||
* 发票信息
|
||||
*/
|
||||
private PsInvoiceVo psInvoiceVo;
|
||||
}
|
||||
|
||||
|
@ -169,4 +169,9 @@ public class TaskContractVo implements Serializable {
|
||||
* 是否续费
|
||||
*/
|
||||
private String isDue;
|
||||
|
||||
/**
|
||||
* 签约个人时联系人姓名
|
||||
*/
|
||||
private String contactPersonName;
|
||||
}
|
||||
|
@ -11,6 +11,8 @@ import com.pusong.business.domain.vo.PsCompanyQueryVo;
|
||||
import com.pusong.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 公司信息Mapper接口
|
||||
*
|
||||
@ -20,4 +22,6 @@ import org.apache.ibatis.annotations.Param;
|
||||
public interface PsCompanyInfoMapper extends BaseMapperPlus<PsCompanyInfo, PsCompanyInfoVo> {
|
||||
|
||||
Page<PsCompanyQueryVo> selectPageList(@Param("page") Page<PsApproverRecord> page, @Param(Constants.WRAPPER) Wrapper<PsCompanyInfo> queryWrapper);
|
||||
|
||||
List<PsCompanyInfoVo> selectServiceCompanyList(@Param(Constants.WRAPPER) Wrapper<PsCompanyInfoVo> queryWrapper);
|
||||
}
|
||||
|
@ -3,6 +3,9 @@ package com.pusong.business.mapper;
|
||||
import com.pusong.business.domain.PsContractBusinessDetail;
|
||||
import com.pusong.business.domain.vo.PsContractBusinessDetailVo;
|
||||
import com.pusong.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 合同服务明细Mapper接口
|
||||
@ -11,5 +14,5 @@ import com.pusong.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
* @date 2024-07-29
|
||||
*/
|
||||
public interface PsContractBusinessDetailMapper extends BaseMapperPlus<PsContractBusinessDetail, PsContractBusinessDetailVo> {
|
||||
|
||||
List<PsContractBusinessDetailVo> selectByBusId(@Param("busId") Long busId);
|
||||
}
|
||||
|
@ -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> {
|
||||
|
||||
}
|
@ -35,6 +35,12 @@ public interface PsContractInfoMapper extends BaseMapperPlus<PsContractInfo, PsC
|
||||
})
|
||||
Page<PsContractInfoVo> selectPageContractList(@Param("page") Page<PsContractInfo> page, @Param(Constants.WRAPPER) Wrapper<PsContractInfo> queryWrapper);
|
||||
|
||||
@DataPermission({
|
||||
@DataColumn(key = "deptName", value = "info.create_dept"),
|
||||
@DataColumn(key = "userName", value = "info.create_by")
|
||||
})
|
||||
Page<PsContractInfoVo> selectPageContractListByCustomId(@Param("page") Page<PsContractInfo> page, @Param("customId") Long customId);
|
||||
|
||||
@DataPermission({
|
||||
@DataColumn(key = "deptName", value = "info.create_dept"),
|
||||
@DataColumn(key = "userName", value = "info.create_by")
|
||||
|
@ -48,6 +48,13 @@ public interface IPsCompanyInfoService {
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
Boolean saveBo(PsCompanyInfoBo bo);
|
||||
|
||||
/**
|
||||
* 保存合同公司关联表
|
||||
* @param list
|
||||
* @param contractCode
|
||||
*/
|
||||
void saveContractCompany(List<PsCompanyInfoBo> list,String contractCode );
|
||||
/**
|
||||
* 批量新增公司信息
|
||||
*
|
||||
@ -65,4 +72,9 @@ public interface IPsCompanyInfoService {
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
|
||||
/**
|
||||
* 根据合同编码查询服务公司信息
|
||||
*/
|
||||
List<PsCompanyInfoVo> getServiceCompany(String controctCode);
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package com.pusong.business.service;
|
||||
|
||||
import com.pusong.business.domain.PsContractInfo;
|
||||
import com.pusong.business.domain.bo.PsContractInfoQueryBo;
|
||||
import com.pusong.business.domain.bo.PsInvoiceBo;
|
||||
import com.pusong.business.domain.vo.PsContractInfoVo;
|
||||
import com.pusong.business.domain.bo.PsContractInfoBo;
|
||||
import com.pusong.business.domain.vo.PsSalaryContractVo;
|
||||
@ -55,6 +56,13 @@ public interface IPsContractInfoService {
|
||||
*/
|
||||
TableDataInfo<PsContractInfoVo> queryPageList(PsContractInfoQueryBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 根据客户id 查询相关合同
|
||||
* @param pageQuery
|
||||
* @return
|
||||
*/
|
||||
TableDataInfo<PsContractInfoVo> queryPageListByCustomId(Long customId, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 根据合同编码查询合同详情信息
|
||||
*
|
||||
@ -104,7 +112,7 @@ public interface IPsContractInfoService {
|
||||
* @return
|
||||
*/
|
||||
void invoice(String contractCode);
|
||||
|
||||
void invoice(PsInvoiceBo invoiceBo);
|
||||
/**
|
||||
* 免费工单
|
||||
* @param contractCode 合同编码
|
||||
@ -117,7 +125,7 @@ public interface IPsContractInfoService {
|
||||
* 合同完成
|
||||
* @param contractCode 合同编码
|
||||
*/
|
||||
void finish(String contractCode);
|
||||
String finish(String contractCode);
|
||||
|
||||
|
||||
/**
|
||||
|
@ -32,7 +32,7 @@ public interface IPsContractOperateService {
|
||||
* @param file 回传合同文件
|
||||
* @param contractCode 合同编码
|
||||
*/
|
||||
void rollbackContract( MultipartFile file, String contractCode);
|
||||
String rollbackContract( MultipartFile file, String contractCode);
|
||||
|
||||
/**
|
||||
* 确认单
|
||||
|
@ -13,6 +13,7 @@ import com.pusong.common.mybatis.core.page.PageQuery;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@ -34,6 +35,8 @@ public interface IPsTaskService {
|
||||
*/
|
||||
Boolean insert(PsTaskMain bo);
|
||||
|
||||
Boolean insertBatch(Collection<PsTaskMain> bos);
|
||||
|
||||
/**
|
||||
* 分页查询主任务列表
|
||||
*
|
||||
|
@ -51,7 +51,7 @@ public abstract class ApproverAbstractServiceImpl implements ApproverService {
|
||||
* @param desc
|
||||
* @param updateData
|
||||
*/
|
||||
public void apply(String bussinessId,String contractCode, String desc, String updateData){
|
||||
public void apply(String bussinessId, String contractCode, String desc, String updateData){
|
||||
//退款,回款审批时用 合同编号进行查询校验
|
||||
LambdaQueryWrapper<PsApproverRecord> wq = Wrappers.<PsApproverRecord>lambdaQuery().eq(PsApproverRecord::getDelFlag, "0")
|
||||
.eq(PsApproverRecord::getBusinessType, approverType())
|
||||
|
@ -7,6 +7,7 @@ import com.pusong.business.domain.PsContractInfo;
|
||||
import com.pusong.business.domain.PsContractPay;
|
||||
import com.pusong.business.domain.PsTaskMain;
|
||||
import com.pusong.business.domain.bo.PsContractPayBo;
|
||||
import com.pusong.business.domain.vo.PsCompanyInfoVo;
|
||||
import com.pusong.business.domain.vo.PsContractInfoVo;
|
||||
import com.pusong.business.domain.vo.PsContractPayVo;
|
||||
import com.pusong.business.enums.*;
|
||||
@ -19,6 +20,7 @@ import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@ -79,16 +81,22 @@ public class PayContractApproverServiceImpl extends ApproverAbstractServiceImpl
|
||||
List<PsContractPayVo> list = payService.queryListByContractCode(info.getContractCode(), PayBuinessStatusEnum.PAY.getCode(), PayStatusEnum.SUCCESS);
|
||||
//如果没有过回款记录初始化任务主表,并修改合同状态
|
||||
log.info("查询回款记录数量{}任务状态{}", list.size(),info.getContractStatus());
|
||||
|
||||
PsTaskMain task = taskMainService.queryByContractCode(psApproverRecord.getContractCode());
|
||||
if(task == null || task.getId() == null){
|
||||
log.info("任务未初始化,初始化任务主表");
|
||||
PsTaskMain psTaskMain = new PsTaskMain();
|
||||
psTaskMain.setContractCode(psApproverRecord.getContractCode());
|
||||
psTaskMain.setTaskType(TaskTypeEnum.CONTRACT.getCode());
|
||||
psTaskMain.setTaskStatus(TaskStatusEnum.INIT.getCode());
|
||||
psTaskMain.setCompanyId(info.getCompanyId());
|
||||
psTaskMain.setCustomId(info.getCustomId());
|
||||
taskMainService.insert(psTaskMain);
|
||||
List<PsTaskMain> psTaskMainList = new ArrayList<>();
|
||||
for (PsCompanyInfoVo psCompanyInfoVo : info.getPsCompanySerivceVo()) {
|
||||
PsTaskMain psTaskMain = new PsTaskMain();
|
||||
psTaskMain.setContractCode(psApproverRecord.getContractCode());
|
||||
psTaskMain.setTaskType(TaskTypeEnum.CONTRACT.getCode());
|
||||
psTaskMain.setTaskStatus(TaskStatusEnum.INIT.getCode());
|
||||
psTaskMain.setCompanyId(info.getCompanyId());
|
||||
psTaskMain.setCustomId(info.getCustomId());
|
||||
psTaskMain.setServiceCompanyId(psCompanyInfoVo.getId());
|
||||
psTaskMainList.add(psTaskMain);
|
||||
}
|
||||
taskMainService.insertBatch(psTaskMainList);
|
||||
}
|
||||
|
||||
|
||||
|
@ -9,6 +9,8 @@ import com.pusong.business.domain.PsApproverRecord;
|
||||
import com.pusong.business.domain.PsContractInfo;
|
||||
import com.pusong.business.domain.bo.*;
|
||||
import com.pusong.business.domain.vo.PsApproverRecordVo;
|
||||
import com.pusong.business.domain.vo.PsCompanyInfoVo;
|
||||
import com.pusong.business.domain.vo.PsContractBusinessVo;
|
||||
import com.pusong.business.domain.vo.PsContractInfoVo;
|
||||
import com.pusong.business.enums.ApproverTypeEnum;
|
||||
import com.pusong.business.enums.CommonStatusEnum;
|
||||
@ -50,31 +52,44 @@ public class SignApproverServiceImpl extends ApproverAbstractServiceImpl {
|
||||
//1查询源数据
|
||||
PsContractInfoVo vo = contractInfoService.queryContractByCode(psApproverRecord.getContractCode());
|
||||
//合同信息bo
|
||||
PsContractInfoBo bo =new PsContractInfoBo();
|
||||
PsContractInfoBo bo = new PsContractInfoBo();
|
||||
//合同信息
|
||||
PsContractInfo info = new PsContractInfo();
|
||||
BeanUtils.copyProperties(vo,info);
|
||||
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<>();
|
||||
item.getDetailVoList().forEach(it->{
|
||||
PsContractBusinessDetailBo detailBo = new PsContractBusinessDetailBo();
|
||||
BeanUtils.copyProperties(it,detailBo);
|
||||
detailBos.add(detailBo);
|
||||
});
|
||||
PsContractBusinessBo businessBo = new PsContractBusinessBo();
|
||||
BeanUtils.copyProperties(item,businessBo);
|
||||
businessBo.setDetailBos(detailBos);
|
||||
businessBos.add(businessBo);
|
||||
});
|
||||
bo.setBusinessList(businessBos);
|
||||
List<PsCompanyInfoBo> serviceCompanyInfoList = new ArrayList<>();
|
||||
bo.setServiceCompanyInfoList(serviceCompanyInfoList);
|
||||
|
||||
for (PsCompanyInfoVo psCompanyInfoVo : vo.getPsCompanySerivceVo()) {
|
||||
List<PsContractBusinessBo> businessBos = new ArrayList<>();
|
||||
for (PsContractBusinessVo item : psCompanyInfoVo.getBusinessVoList()) {
|
||||
List<PsContractBusinessDetailBo> detailBos = new ArrayList<>();
|
||||
item.getDetailVoList().forEach(it->{
|
||||
PsContractBusinessDetailBo detailBo = new PsContractBusinessDetailBo();
|
||||
BeanUtils.copyProperties(it, detailBo);
|
||||
detailBos.add(detailBo);
|
||||
});
|
||||
PsContractBusinessBo businessBo = new PsContractBusinessBo();
|
||||
BeanUtils.copyProperties(item, businessBo);
|
||||
businessBo.setDetailBos(detailBos);
|
||||
businessBos.add(businessBo);
|
||||
if ("1".equals(item.getIsProxy())){
|
||||
companyInfo.setIsProxy("1");
|
||||
}
|
||||
}
|
||||
|
||||
PsCompanyInfoBo psCompanyInfoBo = new PsCompanyInfoBo();
|
||||
BeanUtils.copyProperties(psCompanyInfoVo, psCompanyInfoBo);
|
||||
psCompanyInfoBo.setBusinessList(businessBos);
|
||||
serviceCompanyInfoList.add(psCompanyInfoBo);
|
||||
}
|
||||
|
||||
info.setSignStatus(CommonStatusEnum.SUCCESS.getCode());
|
||||
contractInfoService.updateByCode(info);
|
||||
//生成合同
|
||||
contractInfoService.makePdf(info,bo,true);
|
||||
contractInfoService.makePdf(info, bo,true);
|
||||
}
|
||||
|
||||
//修改签章状态
|
||||
|
@ -7,11 +7,13 @@ 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.domain.bo.PsContractBusinessBo;
|
||||
import com.pusong.business.domain.bo.PsContractInfoBo;
|
||||
import com.pusong.business.domain.vo.PsContractInfoVo;
|
||||
import com.pusong.business.enums.*;
|
||||
import com.pusong.business.mapper.PsTaskAppointMapper;
|
||||
import com.pusong.business.mapper.PsTaskMainMapper;
|
||||
import com.pusong.business.service.IPsCompanyInfoService;
|
||||
import com.pusong.business.service.IPsContractBusinessService;
|
||||
import com.pusong.business.service.IPsContractInfoService;
|
||||
import com.pusong.business.service.IPsTaskService;
|
||||
@ -40,6 +42,7 @@ public class UpdateContractApproverServiceImpl extends ApproverAbstractServiceIm
|
||||
private final IPsTaskService taskService;
|
||||
private final PsTaskMainMapper taskMainMapper;
|
||||
private final PsTaskAppointMapper appointMapper;
|
||||
private final IPsCompanyInfoService companyInfoService;
|
||||
|
||||
/**
|
||||
* 1 审批成功 合同状态变为待派单 合同已派单:任务重置
|
||||
@ -52,9 +55,11 @@ public class UpdateContractApproverServiceImpl extends ApproverAbstractServiceIm
|
||||
PsContractInfoVo src = contractInfoService.queryContractByCode(psApproverRecord.getContractCode());
|
||||
//json化修改的数据
|
||||
PsContractInfoBo bo = JSON.parseObject(psApproverRecord.getUpdateData(),PsContractInfoBo.class);
|
||||
List<PsContractBusinessBo> businessBoslist = bo.getServiceCompanyInfoList().stream().flatMap(com -> com.getBusinessList().stream()).toList();
|
||||
//2.删除所有服务类型和服务项目,.插入服务类型
|
||||
businessService.saveList(bo.getBusinessList(),bo.getContractCode());
|
||||
|
||||
businessService.saveList(businessBoslist,bo.getContractCode());
|
||||
//保存公司合同关联表
|
||||
companyInfoService.saveContractCompany(bo.getServiceCompanyInfoList(),src.getContractCode());
|
||||
//3.修改后操作
|
||||
afterUpdateOperate(bo, src);
|
||||
//插入合同
|
||||
|
@ -3,6 +3,8 @@ package com.pusong.business.service.impl;
|
||||
import com.pusong.business.domain.PsContractInfo;
|
||||
import com.pusong.business.domain.PsContractPay;
|
||||
import com.pusong.business.domain.bo.PsContractPayBo;
|
||||
import com.pusong.business.domain.vo.PsCompanyInfoVo;
|
||||
import com.pusong.business.domain.vo.PsContractBusinessVo;
|
||||
import com.pusong.business.domain.vo.PsContractInfoVo;
|
||||
import com.pusong.business.enums.ApproverTypeEnum;
|
||||
import com.pusong.business.enums.CommonStatusEnum;
|
||||
@ -50,11 +52,11 @@ public class IPsContractOperateServiceImpl implements IPsContractOperateService
|
||||
* @return 合同基本信息
|
||||
*/
|
||||
public void sign(String contractCode){
|
||||
PsContractInfoVo info = contractInfoService.queryContractByCode(contractCode);
|
||||
// PsContractInfoVo info = contractInfoService.queryContractByCode(contractCode);
|
||||
//后续添加校验可再次添加
|
||||
//合同签章:
|
||||
ApproverService service = container.getService(ApproverTypeEnum.SIGN.getCode());
|
||||
service.apply(contractCode,contractCode,null, null);
|
||||
service.apply(contractCode, contractCode,null, null);
|
||||
|
||||
PsContractInfo psContractInfo = new PsContractInfo();
|
||||
psContractInfo.setContractCode(contractCode);
|
||||
@ -69,8 +71,13 @@ public class IPsContractOperateServiceImpl implements IPsContractOperateService
|
||||
* @param contractCode 合同编码
|
||||
*/
|
||||
@Transactional
|
||||
public void rollbackContract( MultipartFile file, String contractCode){
|
||||
public String rollbackContract( MultipartFile file, String contractCode){
|
||||
PsContractInfoVo info = contractInfoService.queryContractByCode(contractCode);
|
||||
|
||||
String checkStr = checkRollbackContract(info);
|
||||
if (checkStr != null)
|
||||
return checkStr;
|
||||
|
||||
//后续添加校验可再次添加
|
||||
SysOssVo vo = ossService.upload(file);
|
||||
//发起回传合同审批
|
||||
@ -90,10 +97,16 @@ public class IPsContractOperateServiceImpl implements IPsContractOperateService
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return null;
|
||||
|
||||
}
|
||||
|
||||
private static String checkRollbackContract(PsContractInfoVo info) {
|
||||
if (!info.getSignStatus().equals(CommonStatusEnum.SUCCESS.getCode())){//没盖电子章
|
||||
return "未盖电子章,无法回传合同";
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
|
@ -2,10 +2,12 @@ package com.pusong.business.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
||||
import com.pusong.business.domain.PsContractCompany;
|
||||
import com.pusong.business.domain.PsContractInfo;
|
||||
import com.pusong.business.domain.bo.PsCompanyQueryBo;
|
||||
import com.pusong.business.domain.vo.PsCompanyQueryVo;
|
||||
import com.pusong.business.domain.vo.PsSalaryVo;
|
||||
import com.pusong.business.mapper.PsContractCompanyMapper;
|
||||
import com.pusong.business.mapper.PsContractInfoMapper;
|
||||
import com.pusong.business.service.IPsContractInfoService;
|
||||
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.service.IPsCompanyInfoService;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Collection;
|
||||
@ -39,6 +42,7 @@ import java.util.Collection;
|
||||
public class PsCompanyInfoServiceImpl implements IPsCompanyInfoService {
|
||||
|
||||
private final PsCompanyInfoMapper baseMapper;
|
||||
private final PsContractCompanyMapper contractCompanyMapper;
|
||||
private final PsContractInfoMapper contractInfoMapper;
|
||||
|
||||
|
||||
@ -110,14 +114,35 @@ public class PsCompanyInfoServiceImpl implements IPsCompanyInfoService {
|
||||
// //如果存在重复名称则修改
|
||||
// if(CollectionUtils.isNotEmpty(list)){bo.setId(list.get(0).getId());}
|
||||
// }
|
||||
//公司类型默认签约公司
|
||||
PsCompanyInfo add = MapstructUtils.convert(bo, PsCompanyInfo.class);
|
||||
//新增时公司类型默认为签约公司
|
||||
add.setCompanyType(add.getId() == null && StringUtils.isBlank(add.getCompanyType()) ? "1" : add.getCompanyType());
|
||||
validEntityBeforeSave(add);
|
||||
boolean flag = baseMapper.insertOrUpdate(add);
|
||||
if (flag) {
|
||||
bo.setId(add.getId());
|
||||
if(bo.getBusinessList() != null){//装填服务类型的公司id
|
||||
bo.getBusinessList().forEach(b -> b.setCompanyId(add.getId()));
|
||||
}
|
||||
}
|
||||
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){
|
||||
if(entity.getId() != null){
|
||||
//修改
|
||||
private void validEntityBeforeSave(PsCompanyInfo info){
|
||||
//新增公司时
|
||||
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 修改公司时需要校验公司下是否有合同状态
|
||||
}
|
||||
@ -155,4 +183,22 @@ public class PsCompanyInfoServiceImpl implements IPsCompanyInfoService {
|
||||
}
|
||||
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.contract_code", controctCode);
|
||||
List<PsCompanyInfoVo> list = baseMapper.selectServiceCompanyList(wq);
|
||||
for (PsCompanyInfoVo psCompanyInfoVo : list) {
|
||||
psCompanyInfoVo.setStartServiceDate(psCompanyInfoVo.getBusinessVoList().get(0).getStartDate());
|
||||
psCompanyInfoVo.setEndServiceDate(psCompanyInfoVo.getBusinessVoList().get(0).getEndDate());
|
||||
psCompanyInfoVo.setIsOld(psCompanyInfoVo.getBusinessVoList().get(0).getIsOld());
|
||||
psCompanyInfoVo.setIsProxy(psCompanyInfoVo.getBusinessVoList().get(0).getIsProxy());
|
||||
}
|
||||
return list;
|
||||
}
|
||||
}
|
||||
|
@ -43,7 +43,7 @@ public class PsContractBusinessServiceImpl implements IPsContractBusinessService
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
@Override
|
||||
public void saveList(List<PsContractBusinessBo> boList,String contractCode) {
|
||||
public void saveList(List<PsContractBusinessBo> boList, String contractCode) {
|
||||
//1.删除所有服务类型和服务项目
|
||||
baseMapper.delete(Wrappers.<PsContractBusiness>lambdaQuery()
|
||||
.eq(PsContractBusiness::getContractCode,contractCode));
|
||||
|
@ -1,6 +1,7 @@
|
||||
package com.pusong.business.service.impl;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
||||
@ -93,27 +94,52 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
|
||||
*/
|
||||
@Override
|
||||
@Transactional//开启事务
|
||||
public Long createContract(PsContractInfoBo bo,Integer type) {
|
||||
public Long createContract(PsContractInfoBo bo, Integer type) {
|
||||
//1校验
|
||||
PsContractInfo add = validEntity(bo,UserConstants.YES);
|
||||
if(bo.getCompanyInfoBo().getCustomId() == null){
|
||||
bo.getCompanyInfoBo().setCustomId(bo.getCustomId());
|
||||
PsContractInfo add = validEntity(bo, UserConstants.YES);
|
||||
|
||||
//2.插入签约公司信息
|
||||
if (bo.getFirstPartyType() == PsContractInfoBo.FIRSTPARTYTYPE.COMPANY.getType()){
|
||||
if(bo.getCompanyInfoBo().getCustomId() == null){
|
||||
bo.getCompanyInfoBo().setCustomId(bo.getCustomId());
|
||||
}
|
||||
companyInfoService.saveBo(bo.getCompanyInfoBo());
|
||||
}
|
||||
//2.插入公司信息
|
||||
companyInfoService.saveBo(bo.getCompanyInfoBo());
|
||||
|
||||
//插入服务公司
|
||||
for (PsCompanyInfoBo companyInfoBo : bo.getServiceCompanyInfoList()){
|
||||
companyInfoBo.setCompanyType("2");
|
||||
companyInfoService.saveBo(companyInfoBo);
|
||||
|
||||
for (PsContractBusinessBo psContractBusinessBo : companyInfoBo.getBusinessList()) {
|
||||
psContractBusinessBo.setStartDate(companyInfoBo.getStartServiceDate());
|
||||
psContractBusinessBo.setEndDate(companyInfoBo.getEndServiceDate());
|
||||
psContractBusinessBo.setIsOld(companyInfoBo.getIsOld());
|
||||
psContractBusinessBo.setIsProxy(companyInfoBo.getIsProxy());
|
||||
}
|
||||
}
|
||||
|
||||
//3.如果已存在合同,则进行修改,否则新增
|
||||
if(add == null){
|
||||
add = new PsContractInfo();
|
||||
MapstructUtils.convert(bo, add);
|
||||
add.setContractCode(getContractCode());//合同编码
|
||||
// 合同名称:公司名+合同编码
|
||||
add.setContractName(bo.getCompanyInfoBo().getCompanyName()+add.getContractCode());
|
||||
if (bo.getFirstPartyType() == PsContractInfoBo.FIRSTPARTYTYPE.COMPANY.getType()){
|
||||
add.setContractName(bo.getCompanyInfoBo().getCompanyName() + add.getContractCode());
|
||||
}else{
|
||||
add.setContractName(bo.getContactPersonName() + add.getContractCode());
|
||||
}
|
||||
|
||||
add.setCustomManager(LoginHelper.getUserId());//所属销售经理id
|
||||
}else{
|
||||
MapstructUtils.convert(bo, add);
|
||||
}
|
||||
add.setCompanyId(bo.getCompanyInfoBo().getId());//公司id
|
||||
bo.getBusinessList().forEach(item->{
|
||||
if (bo.getFirstPartyType() == PsContractInfoBo.FIRSTPARTYTYPE.COMPANY.getType()) {
|
||||
add.setCompanyId(bo.getCompanyInfoBo().getId());//公司id
|
||||
}
|
||||
List<PsContractBusinessBo> list = bo.getServiceCompanyInfoList().stream().flatMap(com -> com.getBusinessList().stream()).toList();
|
||||
list.forEach(item->{
|
||||
BigDecimal mony = BigDecimal.ZERO;
|
||||
if(CollectionUtils.isNotEmpty(item.getDetailBos())){
|
||||
mony = item.getDetailBos().stream().map(PsContractBusinessDetailBo::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
@ -123,16 +149,17 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
|
||||
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.setContractStatus(type == 1?ContractStatusEnum.INIT.getCode():ContractStatusEnum.CREATE.getCode());//合同状态
|
||||
add.setContractStatus(type == 1 ? ContractStatusEnum.INIT.getCode():ContractStatusEnum.CREATE.getCode());//合同状态
|
||||
add.setIsCancel(CommonStatusEnum.INIT.getCode());
|
||||
baseMapper.insertOrUpdate(add);
|
||||
//4.删除所有服务类型和服务项目,.插入服务类型
|
||||
businessService.saveList(bo.getBusinessList(),add.getContractCode());
|
||||
businessService.saveList(list, add.getContractCode());
|
||||
//7.生成合同
|
||||
return makePdf(add,bo,true);
|
||||
return makePdf(add, bo,true);
|
||||
}
|
||||
/**
|
||||
* 预览合同
|
||||
@ -149,7 +176,8 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
|
||||
add.setCustomManager(LoginHelper.getUserId());//所属销售经理id
|
||||
add.setCompanyId(bo.getCompanyInfoBo().getId());//公司id
|
||||
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;
|
||||
if(CollectionUtils.isNotEmpty(item.getDetailBos())){
|
||||
mony = item.getDetailBos().stream().map(PsContractBusinessDetailBo::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
@ -159,7 +187,7 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
|
||||
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);//合同总金额
|
||||
return makePdf(add,bo,false);
|
||||
}
|
||||
@ -180,12 +208,13 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
|
||||
return null;
|
||||
}
|
||||
PsContractInfoVo vo = MapstructUtils.convert(info, PsContractInfoVo.class);
|
||||
//装填公司信息
|
||||
//装填签约公司信息
|
||||
if(vo.getCompanyId() != null){
|
||||
vo.setPsCompanyInfoVo(companyInfoService.queryById(vo.getCompanyId()));
|
||||
}
|
||||
fillContractInfo(vo);
|
||||
|
||||
//装填服务公司信息
|
||||
List<PsCompanyInfoVo> list = companyInfoService.getServiceCompany(vo.getContractCode());
|
||||
vo.setPsCompanySerivceVo(list);
|
||||
return vo;
|
||||
}
|
||||
|
||||
@ -235,6 +264,16 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
public TableDataInfo<PsContractInfoVo> queryPageListByCustomId(Long customId, PageQuery pageQuery){
|
||||
Page<PsContractInfoVo> result = baseMapper.selectPageContractListByCustomId(pageQuery.build(), customId);
|
||||
if(CollectionUtils.isEmpty(result.getRecords())){
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
//装填信息
|
||||
result.getRecords().forEach(this::fillContractInfo);
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据合同编码查询合同详情信息
|
||||
*
|
||||
@ -270,8 +309,14 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
|
||||
}
|
||||
//3.插入公司信息
|
||||
companyInfoService.saveBo(bo.getCompanyInfoBo());
|
||||
//插入服务公司
|
||||
for (PsCompanyInfoBo companyInfoBo : bo.getServiceCompanyInfoList()){
|
||||
companyInfoBo.setCompanyType("2");
|
||||
companyInfoService.saveBo(companyInfoBo);
|
||||
}
|
||||
//4.装填合同信息
|
||||
bo.getBusinessList().forEach(item->{
|
||||
List<PsContractBusinessBo> list = bo.getServiceCompanyInfoList().stream().flatMap(com -> com.getBusinessList().stream()).toList();
|
||||
list.forEach(item->{
|
||||
BigDecimal mony = BigDecimal.ZERO;
|
||||
if(CollectionUtils.isNotEmpty(item.getDetailBos())){
|
||||
mony = item.getDetailBos().stream().map(PsContractBusinessDetailBo::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
@ -281,7 +326,7 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
|
||||
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);//合同总金额
|
||||
|
||||
//5.已回款之后的合同修改后走审批
|
||||
@ -297,12 +342,12 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
|
||||
}else{
|
||||
//修改合同
|
||||
PsContractInfo add = new PsContractInfo();
|
||||
MapstructUtils.convert(bo,add);
|
||||
MapstructUtils.convert(bo, add);
|
||||
add.setCompanyId(bo.getCompanyInfoBo().getId());//公司id
|
||||
this.updateByCode(add);
|
||||
//4.删除所有服务类型和服务项目,.插入服务类型
|
||||
businessService.saveList(bo.getBusinessList(),add.getContractCode());
|
||||
makePdf(add,bo,true);
|
||||
businessService.saveList(list,add.getContractCode());
|
||||
makePdf(add, bo,true);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@ -385,36 +430,48 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
|
||||
* @param add
|
||||
* @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;
|
||||
SysDictData main = dictDataService.selectDict("contract_main", add.getContractMain());
|
||||
bo.getBusinessList().forEach(item->{
|
||||
item.setBusinessTypeName(dictDataService.selectDictLabel("contract_type",item.getBusinessType()));
|
||||
List<PsContractBusinessBo> detailBos = new ArrayList<>();
|
||||
for (PsCompanyInfoBo psCompanyInfoBo : bo.getServiceCompanyInfoList()) {
|
||||
for (PsContractBusinessBo item : psCompanyInfoBo.getBusinessList()) {
|
||||
item.setBusinessTypeName(dictDataService.selectDictLabel("contract_type",item.getBusinessType()));
|
||||
detailBos.add(item);
|
||||
}
|
||||
}
|
||||
|
||||
// bo.getBusinessList().forEach(item->{
|
||||
// item.setBusinessTypeName(dictDataService.selectDictLabel("contract_type",item.getBusinessType()));
|
||||
// item.getDetailBos().forEach(it->{it.getExtentInfo().});
|
||||
});
|
||||
// });
|
||||
try{
|
||||
//生成合同pdf
|
||||
PsCustomInfo customer = customInfoService.listById(add.getCustomId());
|
||||
Map<String,Object> map = new HashMap<>();
|
||||
LoginUser user = LoginHelper.getLoginUser();
|
||||
map.put("user",user);
|
||||
map.put("contract",add);
|
||||
map.put("business",bo.getBusinessList());
|
||||
map.put("main",JSON.parseObject(main.getRemark()));// 合同主体信息
|
||||
map.put("company",bo.getCompanyInfoBo());
|
||||
map.put("user", user);
|
||||
map.put("contract", add);
|
||||
map.put("business", detailBos);
|
||||
|
||||
map.put("serviceCompany", bo.getServiceCompanyInfoList());
|
||||
|
||||
map.put("main", JSON.parseObject(main.getRemark()));// 合同主体信息
|
||||
map.put("company", bo.getCompanyInfoBo());
|
||||
map.put("customer",customer);
|
||||
// 合同总金额大写
|
||||
map.put("contractAmount", NumBerTool.digitUppercase(add.getContractAmount().setScale(2, RoundingMode.HALF_EVEN).toString()));
|
||||
String head = "合同编号:PS-"+add.getContractCode()+" 客户编号:"+customer.getId();
|
||||
String head = "合同编号:PS-" + add.getContractCode()+" 客户编号:" + customer.getId();
|
||||
//合同标题
|
||||
map.put(PdfGenerator.HEAD,head);
|
||||
map.put(PdfGenerator.HEAD, head);
|
||||
//是否签章
|
||||
map.put(PdfGenerator.SIGN,StringUtils.equals(CommonStatusEnum.SUCCESS.getCode(),add.getSignStatus()));
|
||||
map.put(PdfGenerator.SIGN, StringUtils.equals(CommonStatusEnum.SUCCESS.getCode(),add.getSignStatus()));
|
||||
|
||||
String path = System.getProperty("user.dir")+"/"+(StringUtils.isBlank(bo.getCompanyInfoBo().getCompanyName())?"":bo.getCompanyInfoBo().getCompanyName()+"-")+add.getContractCode()+".pdf";
|
||||
String path = System.getProperty("user.dir") + "/" + (StringUtils.isBlank(bo.getCompanyInfoBo().getCompanyName()) ? "" : bo.getCompanyInfoBo().getCompanyName() + "-")+add.getContractCode()+".pdf";
|
||||
log.info(JSON.toJSONString(map));
|
||||
// path = "D:/王立帅/临时/output.pdf";
|
||||
PdfGenerator.makePdf(map, path,TenplateEnum.CONTRACT.getName());
|
||||
PdfGenerator.makePdf(map, path, TenplateEnum.CONTRACT.getName());
|
||||
File file = new File(path);
|
||||
//上传到oss服务
|
||||
SysOssVo sysOssVo = ossService.upload(new File(path));
|
||||
@ -429,7 +486,8 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
|
||||
psContractInfo.setPdfId(sysOssVo.getOssId());
|
||||
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){
|
||||
@ -454,6 +512,18 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
|
||||
psTaskMain.setTaskStatus(TaskStatusEnum.INIT.getCode());
|
||||
taskMainService.insert(psTaskMain);
|
||||
}
|
||||
public void invoice(PsInvoiceBo invoiceBo){
|
||||
log.info("合同未回款过,初始化任务主表");
|
||||
PsContractInfoVo info = this.queryContractByCode(invoiceBo.getContractCode());
|
||||
PsTaskMain psTaskMain = new PsTaskMain();
|
||||
psTaskMain.setCompanyId(info.getCompanyId());
|
||||
psTaskMain.setCustomId(info.getCustomId());
|
||||
psTaskMain.setContractCode(invoiceBo.getContractCode());
|
||||
psTaskMain.setTaskType(TaskTypeEnum.INVOICE.getCode());
|
||||
psTaskMain.setTaskStatus(TaskStatusEnum.INIT.getCode());
|
||||
psTaskMain.setExtend(JSONObject.toJSONString(invoiceBo));
|
||||
taskMainService.insert(psTaskMain);
|
||||
}
|
||||
/**
|
||||
* 免费工单
|
||||
* @param contractCode 合同编码
|
||||
@ -469,12 +539,25 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
|
||||
|
||||
/**
|
||||
* 合同完成
|
||||
* 一、回传合同的条件
|
||||
* 1. 生成合同,所选【服务类别】不包含【托管服务】(即【非托管业务】):包括【新签】和【续费】
|
||||
* 1. 合同金额 > = 8000元,必须回传合同,【电子签章】申请成功后才能回传合同
|
||||
* 2. 合同金额< 8000元,无需回传合同,【电子签章】申请成功后,必须回传合同
|
||||
* 2. 生成合同,所选【服务类别】包含【托管服务】:
|
||||
* 1. 新签:不论合同金额大小,必须回传合同
|
||||
* 2. 续费:
|
||||
* 1. 合同金额 > = 8000元,必须回传合同,【电子签章】申请成功后才能回传合同
|
||||
* 2. 合同金额< 8000元,无需回传合同,【电子签章】申请成功后,必须回传合同
|
||||
* 二、合同完成的条件
|
||||
* 1. 回款全部完成
|
||||
* 2. 任务全部完成
|
||||
* 3. 回传合同:根据【回传合同的条件】进行判断,必须回传合同的,需回传合同后审批通过,才能算完成。
|
||||
* @param contractCode 合同编码
|
||||
*/
|
||||
@Transactional
|
||||
public void finish(String contractCode){
|
||||
if(StringUtils.isBlank(contractCode)){
|
||||
return;
|
||||
public String finish(String contractCode) {
|
||||
if (StringUtils.isBlank(contractCode)) {
|
||||
return "contractCode 参数错误";
|
||||
}
|
||||
Long num = taskMainMapper.selectCount(Wrappers.<PsTaskMain>lambdaQuery()
|
||||
.eq(PsTaskMain::getContractCode, contractCode)
|
||||
@ -482,14 +565,55 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
|
||||
.notIn(PsTaskMain::getTaskStatus, TaskStatusEnum.returnFinish()));
|
||||
PsContractInfoVo info = this.queryContractByCode(contractCode);
|
||||
//任务已完成 合同已回传 回款已结束
|
||||
if(StringUtils.equals(info.getRollBackStatus(),CommonStatusEnum.SUCCESS.getCode())
|
||||
&& num<=0 && info.getResidualMoney().compareTo(BigDecimal.ZERO)<=0){
|
||||
PsContractInfo psContractInfo = new PsContractInfo();
|
||||
psContractInfo.setContractCode(contractCode);
|
||||
psContractInfo.setContractStatus(ContractStatusEnum.SUCCESS.getCode());
|
||||
psContractInfo.setFinishDate(new Date());
|
||||
this.updateByCode(psContractInfo);
|
||||
boolean rollbackFlag = true;
|
||||
|
||||
if (!StringUtils.equals(info.getRollBackStatus(), CommonStatusEnum.SUCCESS.getCode())) {
|
||||
if (!info.isTuoguanService()) {//非托管服务
|
||||
if (info.getContractAmount().doubleValue() >= 8000) {
|
||||
//1. 合同金额 > = 8000元,必须回传合同,【电子签章】申请成功后才能回传合同
|
||||
rollbackFlag = false;
|
||||
} else {
|
||||
//合同金额< 8000元,无需回传合同,【电子签章】申请成功后,必须回传合同
|
||||
if (CommonStatusEnum.ING.getCode().equals(info.getSignStatus())
|
||||
|| info.getSignStatus().equals(CommonStatusEnum.SUCCESS.getCode())) {//申请了电子章
|
||||
rollbackFlag = false;
|
||||
}
|
||||
}
|
||||
}else{//托管服务
|
||||
if (info.getIsDue().equals("0")){//新签
|
||||
//不论合同金额大小,必须回传合同
|
||||
rollbackFlag = false;
|
||||
} else{//续费
|
||||
if (info.getContractAmount().doubleValue() >= 8000) {
|
||||
//1. 合合同金额 > = 8000元,必须回传合同,【电子签章】申请成功后才能回传合同
|
||||
rollbackFlag = false;
|
||||
} else {
|
||||
//合同金额< 8000元,无需回传合同,【电子签章】申请成功后,必须回传合同
|
||||
if (CommonStatusEnum.ING.getCode().equals(info.getSignStatus())
|
||||
|| info.getSignStatus().equals(CommonStatusEnum.SUCCESS.getCode())) {//申请了电子章
|
||||
rollbackFlag = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
if (!rollbackFlag){
|
||||
return "未回传合同";
|
||||
}
|
||||
|
||||
if(num > 0){
|
||||
return "还有未完任务";
|
||||
}
|
||||
if (info.getResidualMoney().compareTo(BigDecimal.ZERO) <= 0){
|
||||
return "还有未回款";
|
||||
}
|
||||
PsContractInfo psContractInfo = new PsContractInfo();
|
||||
psContractInfo.setContractCode(contractCode);
|
||||
psContractInfo.setContractStatus(ContractStatusEnum.SUCCESS.getCode());
|
||||
psContractInfo.setFinishDate(new Date());
|
||||
this.updateByCode(psContractInfo);
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@ -518,7 +642,7 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
|
||||
|
||||
PsTaskMain task = taskMainService.queryByContractCode(contractCode);
|
||||
List<PsTaskAppoint> appointList = new ArrayList<>();
|
||||
if(task!=null){
|
||||
if(task != null){
|
||||
appointList = taskAppointMapper.selectList(Wrappers.<PsTaskAppoint>lambdaQuery()
|
||||
.eq(PsTaskAppoint::getContractCode, contractCode)
|
||||
.ne(PsTaskAppoint::getAppointStatus,AppointStatusEnum.CANCEL.getCode())
|
||||
@ -526,7 +650,7 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
|
||||
}
|
||||
|
||||
//派单者
|
||||
serviceScheduleVo.setAppoint(task == null?null:task.getOperateUser());
|
||||
serviceScheduleVo.setAppoint(task == null ? null : task.getOperateUser());
|
||||
if(CollectionUtils.isNotEmpty(appointList)){
|
||||
appointList.forEach(item->{
|
||||
if(StringUtils.equals("1",item.getAppointType())){
|
||||
@ -611,10 +735,11 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
|
||||
return qw;
|
||||
}
|
||||
private PsContractInfoVo fillContractInfo(PsContractInfoVo vo){
|
||||
|
||||
//装填服务类型和服务项目信息
|
||||
List<PsContractBusinessVo> list = businessService.selectBusinessList(List.of(vo.getContractCode()));
|
||||
vo.setBusinessTypeName(StringUtils.join(list.stream().map(PsContractBusinessVo::getBusinessType).collect(Collectors.toList()), ","));
|
||||
vo.setBusinessVoList(list);
|
||||
// List<PsContractBusinessVo> list = businessService.selectBusinessList(List.of(vo.getContractCode()));
|
||||
// vo.setBusinessTypeName(StringUtils.join(list.stream().map(PsContractBusinessVo::getBusinessType).collect(Collectors.toList()), ","));
|
||||
|
||||
fillMoney(vo);
|
||||
if(vo.getFirstApplyDate() != null){
|
||||
Date date = new Date();
|
||||
@ -644,15 +769,20 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
|
||||
if(StringUtils.equals(CommonStatusEnum.FAIL.getCode(),vo.getIsCancel())){
|
||||
vo.setContractStatusDesc(approverRecordService.getLastFail(vo.getContractCode(),vo.getContractCode(),List.of(ApproverTypeEnum.CANCELLA.getCode())));
|
||||
}
|
||||
//合同作废审批
|
||||
if(StringUtils.equals(CommonStatusEnum.FAIL.getCode(),vo.getIsCancel())){
|
||||
vo.setContractStatusDesc(approverRecordService.getLastFail(vo.getContractCode(),vo.getContractCode(),List.of(ApproverTypeEnum.CANCELLA.getCode())));
|
||||
}
|
||||
// //合同作废审批
|
||||
// if(StringUtils.equals(CommonStatusEnum.FAIL.getCode(),vo.getIsCancel())){
|
||||
// vo.setContractStatusDesc(approverRecordService.getLastFail(vo.getContractCode(),vo.getContractCode(),List.of(ApproverTypeEnum.CANCELLA.getCode())));
|
||||
// }
|
||||
//天数
|
||||
if(vo.getEndServiceDate() != null){
|
||||
int num = DateUtils.differentDaysByMillisecond(new Date(), vo.getEndServiceDate());
|
||||
vo.setEndNum(Math.max(num, 0));
|
||||
}
|
||||
|
||||
//装填服务公司信息
|
||||
List<PsCompanyInfoVo> list = companyInfoService.getServiceCompany(vo.getContractCode());
|
||||
vo.setPsCompanySerivceVo(list);
|
||||
|
||||
return vo;
|
||||
}
|
||||
public void fillMoney(PsContractInfoVo vo){
|
||||
@ -705,23 +835,23 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
|
||||
* isAdd:是否为增加/修改校验
|
||||
* 校验:暂存的合同不止一个,暂存的合同并且不是传入的合同-》报错(暂存的合同只能有一个)
|
||||
*/
|
||||
private PsContractInfo validEntity( PsContractInfoBo bo,String... isAdd){
|
||||
private PsContractInfo validEntity(PsContractInfoBo bo, String... isAdd){
|
||||
PsContractInfo add =null;
|
||||
//插入或修改合同
|
||||
log.info("校验合同查询入参:{}",bo.getCustomId());
|
||||
List<PsContractInfo> infos = this.queryByCode(bo.getCustomId(),null,ContractStatusEnum.INIT.getCode());
|
||||
log.info("校验合同查询结果:{}",infos == null?null: infos.size() );
|
||||
log.info("校验合同查询入参:{}", bo.getCustomId());
|
||||
List<PsContractInfo> infos = this.queryByCode(bo.getCustomId(),null, ContractStatusEnum.INIT.getCode());
|
||||
log.info("校验合同查询结果:{}", infos == null?null: infos.size());
|
||||
//校验:暂存的合同不止一个,暂存的合同并且不是传入的合同-》报错(暂存的合同只能有一个)
|
||||
if (CollectionUtils.isNotEmpty(infos) ) {
|
||||
if(infos.size()>1){
|
||||
log.error("暂存的合同过多,customerid:"+bo.getCustomId());
|
||||
if (CollectionUtils.isNotEmpty(infos)) {
|
||||
if(infos.size() > 1){
|
||||
log.error("暂存的合同过多,customerid:" + bo.getCustomId());
|
||||
throw new ServiceException("系统异常,请联系管理员");
|
||||
}
|
||||
add = infos.get(0);
|
||||
//新增时校验是否有暂存的合同
|
||||
if(StringUtils.equals(isAdd.length<1?"":isAdd[0], UserConstants.YES) &&
|
||||
!StringUtils.equals(add.getContractCode(), bo.getContractCode())){
|
||||
log.error("此合已有暂存的合同,customerid:"+bo.getCustomId());
|
||||
if(StringUtils.equals(isAdd.length < 1 ? "" : isAdd[0], UserConstants.YES)
|
||||
&& !StringUtils.equals(add.getContractCode(), bo.getContractCode())){
|
||||
log.error("此合已有暂存的合同,customerid:" + bo.getCustomId());
|
||||
throw new ServiceException("此合同状态已变更,请刷新页面重新操作");
|
||||
}
|
||||
}
|
||||
|
@ -283,7 +283,7 @@ public class PsCustomInfoServiceImpl implements IPsCustomInfoService {
|
||||
baseMapper.updateById(update);
|
||||
//修改公司信息
|
||||
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());
|
||||
}
|
||||
if(CollectionUtils.isNotEmpty(bo.getCompanyIds())){
|
||||
|
@ -1,6 +1,7 @@
|
||||
package com.pusong.business.service.impl;
|
||||
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
||||
@ -37,6 +38,7 @@ import com.pusong.system.domain.vo.SysOssVo;
|
||||
import com.pusong.system.service.ISysOssService;
|
||||
import jakarta.annotation.Resource;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.apache.ibatis.executor.BatchResult;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
@ -86,6 +88,11 @@ public class PsTaskServiceImpl implements IPsTaskService {
|
||||
return flag;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean insertBatch(Collection<PsTaskMain> bos){
|
||||
List<BatchResult> insert = baseMapper.insert(bos);
|
||||
return !insert.isEmpty();
|
||||
}
|
||||
/**
|
||||
* 分页查询主任务列表
|
||||
*
|
||||
@ -96,8 +103,13 @@ public class PsTaskServiceImpl implements IPsTaskService {
|
||||
public TableDataInfo<PsTaskMainVo> queryPageList(PsTaskQueryBo bo, PageQuery pageQuery){
|
||||
QueryWrapper<PsTaskMain> lqw = buildQueryWrapper(bo);
|
||||
Page<PsTaskMainVo> page;
|
||||
if(StringUtils.equals(TaskTypeEnum.INVOICE.getCode(),bo.getType())){//发票任务无需数据权限
|
||||
if(StringUtils.equals(TaskTypeEnum.INVOICE.getCode(), bo.getType())){//发票任务无需数据权限
|
||||
page = baseMapper.queryInvoiceTaskPageList(pageQuery.build(), lqw);
|
||||
for (PsTaskMainVo vo : page.getRecords()) {
|
||||
PsInvoiceVo psInvoiceVo = JSONObject.parseObject(vo.getExtend(), PsInvoiceVo.class);
|
||||
vo.setPsInvoiceVo(psInvoiceVo);
|
||||
vo.setExtend(null);
|
||||
}
|
||||
}else{
|
||||
page = baseMapper.queryTaskPageList(pageQuery.build(), lqw);
|
||||
}
|
||||
@ -306,14 +318,18 @@ public class PsTaskServiceImpl implements IPsTaskService {
|
||||
.eq(PsContractInfo::getContractCode,mainTask.getContractCode()).eq(PsContractInfo::getDelFlag,0));
|
||||
|
||||
}
|
||||
PsTaskAppoint psTaskAppoint = new PsTaskAppoint();
|
||||
psTaskAppoint.setAppointStatus(AppointStatusEnum.ING.getCode());
|
||||
psTaskAppoint.setAppointType(bo.getAppointType());
|
||||
psTaskAppoint.setContractCode(mainTask.getContractCode());
|
||||
psTaskAppoint.setTaskId(mainTask.getId());
|
||||
psTaskAppoint.setExecutor(bo.getUserId());
|
||||
psTaskAppoint.setTaskContentDesc(bo.getTaskContentDesc());
|
||||
appointMapper.insert(psTaskAppoint);
|
||||
|
||||
for (Long userId : bo.getUserIds()) {
|
||||
PsTaskAppoint psTaskAppoint = new PsTaskAppoint();
|
||||
psTaskAppoint.setAppointStatus(AppointStatusEnum.ING.getCode());
|
||||
psTaskAppoint.setAppointType(bo.getAppointType());
|
||||
psTaskAppoint.setContractCode(mainTask.getContractCode());
|
||||
psTaskAppoint.setTaskId(mainTask.getId());
|
||||
psTaskAppoint.setExecutor(userId);
|
||||
psTaskAppoint.setTaskContentDesc(bo.getTaskContentDesc());
|
||||
appointMapper.insert(psTaskAppoint);
|
||||
}
|
||||
|
||||
}
|
||||
/**
|
||||
* 主任务完成
|
||||
|
@ -3,6 +3,16 @@
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<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" >
|
||||
<id column="id" property="id"></id>
|
||||
<collection columnPrefix="det_" column="det" property="detailVoList" ofType="com.pusong.business.domain.vo.PsContractBusinessDetailVo" >
|
||||
</collection>
|
||||
</collection>
|
||||
|
||||
</resultMap>
|
||||
|
||||
<select id="selectPageList" resultType="com.pusong.business.domain.vo.PsCompanyQueryVo">
|
||||
select cus.custom_manager,
|
||||
com.company_name,
|
||||
@ -19,4 +29,33 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
|
||||
${ew.getCustomSqlSegment}
|
||||
</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,
|
||||
bus.is_proxy bus_is_proxy,
|
||||
bus.is_old bus_is_old,
|
||||
det.id det_id,
|
||||
det.business_id bus_det_business_id,
|
||||
det.contract_code bus_det_contract_code,
|
||||
det.business_project bus_det_business_project,
|
||||
det.business_project_label bus_det_business_project_label,
|
||||
det.amount bus_det_amount,
|
||||
det.amount_desc bus_det_amount_desc,
|
||||
det.extent_info bus_det_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>
|
||||
|
@ -3,5 +3,14 @@
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.pusong.business.mapper.PsContractBusinessDetailMapper">
|
||||
<resultMap id="detailResult" type="com.pusong.business.domain.vo.PsContractBusinessDetailVo">
|
||||
|
||||
</resultMap>
|
||||
|
||||
|
||||
<select id="selectByBusId" resultMap="detailResult">
|
||||
select *
|
||||
from ps_contract_business_detail where business_id = ${busId}
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
|
@ -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>
|
@ -19,10 +19,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
com.company_name com_company_name,
|
||||
com.company_adress com_company_adress,
|
||||
com.company_account_bank com_company_account_bank,
|
||||
|
||||
com.legal_person_name com_legal_person_name,
|
||||
com.legal_person_idcard com_legal_person_idcard,
|
||||
com.legal_person_phone com_legal_person_phone,
|
||||
cus.id cus_id,
|
||||
com.customer_num com_customer_num,
|
||||
cus.id cus_id,
|
||||
cus.custom_name cus_custom_name ,
|
||||
cus.custom_mobile cus_custom_mobile,
|
||||
cus.custom_status cus_custom_status,
|
||||
@ -42,6 +44,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
${ew.getCustomSqlSegment}
|
||||
</select>
|
||||
|
||||
<select id="selectPageContractListByCustomId" resultMap="contractResult">
|
||||
<include refid="queryContractList"/>
|
||||
<where>
|
||||
info.custom_id = #{customId}
|
||||
</where>
|
||||
</select>
|
||||
|
||||
<select id="selectContractList" resultMap="contractResult">
|
||||
<include refid="queryContractList"/>
|
||||
${ew.getCustomSqlSegment}
|
||||
|
@ -21,7 +21,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
main.task_status,
|
||||
main.contract_code,
|
||||
main.invoice,
|
||||
main.extend,
|
||||
con.is_proxy con_is_proxy,
|
||||
con.apply_date con_apply_date,
|
||||
con.is_due con_is_due,
|
||||
con.contact_person_name con_contact_person_name,
|
||||
con.roll_back_pdf con_roll_back_pdf,
|
||||
con.is_due con_is_due,
|
||||
con.contract_amount con_contract_amount,
|
||||
con.custom_scene con_custom_scene,
|
||||
con.custom_manager con_custom_manager,
|
||||
@ -48,7 +54,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
(select GROUP_CONCAT(appoint.executor SEPARATOR ',')
|
||||
from ps_task_appoint appoint where appoint.task_id = main.id and appoint.appoint_status != '50' and appoint.del_flag = '0') as executors,
|
||||
(select GROUP_CONCAT(business.business_type SEPARATOR ',')
|
||||
from ps_contract_business business where business.contract_code = con.contract_code and business.del_flag = '0') as business_type_name
|
||||
from ps_contract_business business where business.contract_code = con.contract_code and business.company_id = main.service_company_id and business.del_flag = '0') as business_type_name
|
||||
from ps_task_main main
|
||||
left join ps_contract_info con on main.contract_code = con.contract_code
|
||||
left join ps_company_info com on con.company_id = com.id
|
||||
@ -70,6 +76,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
main.task_status,
|
||||
main.contract_code,
|
||||
main.id main_id,
|
||||
main.extend,
|
||||
con.is_proxy con_is_proxy,
|
||||
con.custom_scene con_custom_scene,
|
||||
con.custom_manager con_custom_manager,
|
||||
|
2
茅厕酒业有限公司-2024092414386846.pdf
Normal file
2
茅厕酒业有限公司-2024092414386846.pdf
Normal file
@ -0,0 +1,2 @@
|
||||
%PDF-1.4
|
||||
%粤マモ
|
Loading…
Reference in New Issue
Block a user