diff --git a/doc/report.ftl b/doc/report.ftl index e107beb..1fa52b5 100644 --- a/doc/report.ftl +++ b/doc/report.ftl @@ -135,6 +135,11 @@

+ <#if item.startDate?? && item.businessType == "2"> +

+ 服务期限:${item.startDate?string('yyyy年MM月dd日')}至${item.endDate?string('yyyy年MM月dd日')} +

+ <#nt> @@ -199,11 +204,11 @@ <#--

--> <#--  

-->

一、服务期限

- <#if contract.startServiceDate??> -

本合同中的服务周期为 - ${contract.startServiceDate?string('yyyy年MM月dd日')}至${contract.endServiceDate?string('yyyy年MM月dd日')}。 -

- +<#-- <#if contract.startServiceDate??>--> +<#--

本合同中的服务周期为--> +<#-- ${contract.startServiceDate?string('yyyy年MM月dd日')}至${contract.endServiceDate?string('yyyy年MM月dd日')}。--> +<#--

--> +<#-- -->

本合同中的企业托管服务,在合同到期前 30 天,乙方有义务告知甲方。如果双方在合同期满前 30 天内未提出终止或变更要求,未办理交接手续,本合同将自行延期一年。如是其他业务,则以双方约定时间为准。

二、甲方权利与义务

diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsCustomController.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsCustomController.java index 861547d..d6607a0 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsCustomController.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsCustomController.java @@ -1,32 +1,29 @@ package com.pusong.business.controller; -import java.util.List; -import java.util.Map; - -import cn.dev33.satoken.annotation.SaIgnore; +import cn.dev33.satoken.annotation.SaCheckPermission; import com.pusong.business.domain.bo.PsCustomCallbackBo; +import com.pusong.business.domain.bo.PsCustomInfoBo; import com.pusong.business.domain.bo.PsCustomPriceBo; import com.pusong.business.domain.bo.PsCustomRecordQueryBo; +import com.pusong.business.domain.vo.PsCustomInfoVo; import com.pusong.business.domain.vo.PsCustomerRecordVo; -import lombok.RequiredArgsConstructor; -import jakarta.servlet.http.HttpServletResponse; -import jakarta.validation.constraints.*; -import cn.dev33.satoken.annotation.SaCheckPermission; -import org.springframework.web.bind.annotation.*; -import org.springframework.validation.annotation.Validated; -import com.pusong.common.idempotent.annotation.RepeatSubmit; -import com.pusong.common.log.annotation.Log; -import com.pusong.common.web.core.BaseController; -import com.pusong.common.mybatis.core.page.PageQuery; +import com.pusong.business.service.IPsCustomInfoService; import com.pusong.common.core.domain.R; import com.pusong.common.core.validate.AddGroup; import com.pusong.common.core.validate.EditGroup; +import com.pusong.common.idempotent.annotation.RepeatSubmit; +import com.pusong.common.log.annotation.Log; import com.pusong.common.log.enums.BusinessType; -import com.pusong.common.excel.utils.ExcelUtil; -import com.pusong.business.domain.vo.PsCustomInfoVo; -import com.pusong.business.domain.bo.PsCustomInfoBo; -import com.pusong.business.service.IPsCustomInfoService; +import com.pusong.common.mybatis.core.page.PageQuery; import com.pusong.common.mybatis.core.page.TableDataInfo; +import com.pusong.common.web.core.BaseController; +import jakarta.validation.constraints.NotNull; +import lombok.RequiredArgsConstructor; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.Map; /** * 客户基本信息 @@ -143,7 +140,7 @@ public class PsCustomController extends BaseController { @Log(title = "已完成客户" ) @GetMapping("/record") public TableDataInfo record(PsCustomRecordQueryBo queryBo, PageQuery pageQuery) { - return psCustomInfoService.getCustomerRecordList(queryBo,pageQuery); + return psCustomInfoService.getCustomerRecordList(queryBo, pageQuery); } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/PsContractPay.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/PsContractPay.java index e958ad2..f06f605 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/PsContractPay.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/PsContractPay.java @@ -1,14 +1,16 @@ package com.pusong.business.domain; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; import com.pusong.common.tenant.core.TenantEntity; -import com.baomidou.mybatisplus.annotation.*; import lombok.Data; import lombok.EqualsAndHashCode; -import java.math.BigDecimal; -import java.util.Date; -import com.fasterxml.jackson.annotation.JsonFormat; import java.io.Serial; +import java.math.BigDecimal; +import java.util.Date; /** * 合同回款记录对象 ps_contract_pay @@ -83,5 +85,4 @@ public class PsContractPay extends TenantEntity { @TableLogic private Long delFlag; - } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsApproverRecordVo.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsApproverRecordVo.java index 14a1ce4..3ed3d6a 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsApproverRecordVo.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsApproverRecordVo.java @@ -63,6 +63,8 @@ public class PsApproverRecordVo implements Serializable { @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date applyDate; + + /** * 审批日期 */ @@ -226,6 +228,17 @@ public class PsApproverRecordVo implements Serializable { private PsTaskMainVo psTaskMainVo; + /** + * 合同签约时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date contactApplyDate; + + /** + * 是否续费0新签 1续费 + */ + private String isDue; + public String getContractCodeAndBusinessType(){ return this.contractCode + "_" + this.businessType; } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsCompanyInfoVo.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsCompanyInfoVo.java index 2b40b3c..3c153f5 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsCompanyInfoVo.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsCompanyInfoVo.java @@ -200,6 +200,8 @@ public class PsCompanyInfoVo implements Serializable { @Translation(type = TransConstant.USER_ID_TO_NICKNAME) private Long customManager; + private String customManagerName; + /** * 服务状态0终止1正常 */ diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsCustomerRecordVo.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsCustomerRecordVo.java index e6ba811..3be7e18 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsCustomerRecordVo.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsCustomerRecordVo.java @@ -2,10 +2,8 @@ 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; @@ -156,8 +154,21 @@ public class PsCustomerRecordVo implements Serializable { */ private String freeFailDesc; + private String customLevel; /** * 回访记录vo(已完成客户列表使用) */ private List psCustomCallbackVo; + + /** + * 报价金额DTO + */ + private List psCustomPriceVo; + + private BigDecimal price; + + /** + * 是否已生成合同(1是0否) + */ + private Integer haveContract; } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/ApproverAbstractServiceImpl.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/ApproverAbstractServiceImpl.java index 18945de..d7bff91 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/ApproverAbstractServiceImpl.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/ApproverAbstractServiceImpl.java @@ -1,6 +1,5 @@ package com.pusong.business.service.approver.impl; -import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; @@ -17,7 +16,6 @@ import com.pusong.business.enums.ApproverTypeEnum; import com.pusong.business.enums.PayStatusEnum; import com.pusong.business.mapper.PsApproverRecordMapper; import com.pusong.business.mapper.PsContractPayMapper; -import com.pusong.business.service.IPsApproverRecordService; import com.pusong.business.service.IPsCompanyInfoService; import com.pusong.business.service.approver.ApproverContainer; import com.pusong.business.service.approver.ApproverService; @@ -98,7 +96,13 @@ public abstract class ApproverAbstractServiceImpl implements ApproverService { .eq("app.del_flag","0") .eq(StringUtils.isNotBlank(bo.getApproverStatus()),"app.approver_status",bo.getApproverStatus()) .like(StringUtils.isNotBlank(bo.getCustomerName()),"cus.custom_name",bo.getCustomerName()) - .like(StringUtils.isNotBlank(bo.getCompanyName()),"com.company_name",bo.getCompanyName()) +// .like(StringUtils.isNotBlank(bo.getCompanyName()),"com.company_name",bo.getCompanyName()) + + .and(StringUtils.isNotBlank(bo.getCompanyName()), wrapper -> wrapper + .like("info.contact_person_name",bo.getCompanyName()) + .or() + .like("com.company_name",bo.getCompanyName())) + .like(StringUtils.isNotBlank(bo.getContractCode()),"app.contract_code",bo.getContractCode()) //销售经理姓名 .exists(StringUtils.isNotBlank(bo.getCustomManagerName()),"select 1 from sys_user su where su.user_id = info.custom_manager and su.nick_name like '%"+bo.getCustomManagerName()+"%'") diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/PayContractApproverServiceImpl.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/PayContractApproverServiceImpl.java index 19e6255..fb726f1 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/PayContractApproverServiceImpl.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/PayContractApproverServiceImpl.java @@ -1,20 +1,15 @@ package com.pusong.business.service.approver.impl; -import com.alibaba.fastjson.JSON; -import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.pusong.business.domain.PsApproverRecord; 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.*; import com.pusong.business.service.IPsContractInfoService; import com.pusong.business.service.IPsContractPayService; import com.pusong.business.service.IPsTaskService; -import com.pusong.common.core.utils.MapstructUtils; import com.pusong.common.core.utils.StringUtils; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -98,15 +93,20 @@ public class PayContractApproverServiceImpl extends ApproverAbstractServiceImpl @Override public void fail(PsApproverRecord psApproverRecord) { - //如果是修改不做处理 - if(StringUtils.isNotBlank(psApproverRecord.getUpdateData())){ + PsContractPay update = new PsContractPay(); + update.setId(Long.valueOf(psApproverRecord.getBusinessId())); + update.setPayStatus(PayStatusEnum.FILE.getCode()); + payService.updateById(update); - }else {//如果是新增则修改状态 - //修改回款记录状态 - PsContractPay update = new PsContractPay(); - update.setId(Long.valueOf(psApproverRecord.getBusinessId())); - update.setPayStatus(PayStatusEnum.FILE.getCode()); - payService.updateById(update); - } +// //如果是修改不做处理 +// if(StringUtils.isNotBlank(psApproverRecord.getUpdateData())){ +// +// }else {//如果是新增则修改状态 +// //修改回款记录状态 +// PsContractPay update = new PsContractPay(); +// update.setId(Long.valueOf(psApproverRecord.getBusinessId())); +// update.setPayStatus(PayStatusEnum.FILE.getCode()); +// payService.updateById(update); +// } } } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/SignApproverServiceImpl.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/SignApproverServiceImpl.java index 5ff4eed..8ee6ae9 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/SignApproverServiceImpl.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/SignApproverServiceImpl.java @@ -49,6 +49,8 @@ public class SignApproverServiceImpl extends ApproverAbstractServiceImpl { bo.setSignStatus(CommonStatusEnum.SUCCESS.getCode()); bo.setContactPersonName(vo.getContactPersonName()); bo.setContractMain(vo.getContractMain()); + bo.setFirstPartyType(vo.getPsCompanyInfoVo() == null ? 2 : 1); + //合同信息 PsContractInfo info = new PsContractInfo(); BeanUtils.copyProperties(vo, info); diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/StopAccountServiceImpl.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/StopAccountServiceImpl.java index d2bb1cb..6d9fc24 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/StopAccountServiceImpl.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/StopAccountServiceImpl.java @@ -2,6 +2,7 @@ package com.pusong.business.service.approver.impl; import com.pusong.business.domain.PsApproverRecord; import com.pusong.business.domain.bo.PsCompanyInfoBo; +import com.pusong.business.enums.ApproverStatusEnum; import com.pusong.business.enums.ApproverStepEnum; import com.pusong.business.enums.ApproverTypeEnum; import com.pusong.business.mapper.PsApproverRecordMapper; @@ -38,6 +39,7 @@ public class StopAccountServiceImpl extends ApproverAbstractServiceImpl { if (ApproverStepEnum.INIT.getCode().equals(psApproverRecord.getUpdateData())){ //转给总裁 psApproverRecord.setUpdateData(ApproverStepEnum.CW_APPLY.getCode()); + psApproverRecord.setApproverStatus(ApproverStatusEnum.INIT.getCode()); return; } if (ApproverStepEnum.CW_APPLY.getCode().equals(psApproverRecord.getUpdateData())){ diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/UpdateContractApproverServiceImpl.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/UpdateContractApproverServiceImpl.java index 5f486b5..66a0c65 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/UpdateContractApproverServiceImpl.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/UpdateContractApproverServiceImpl.java @@ -1,31 +1,23 @@ package com.pusong.business.service.approver.impl; import com.alibaba.fastjson.JSON; -import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.pusong.business.domain.PsApproverRecord; import com.pusong.business.domain.PsContractInfo; -import com.pusong.business.domain.PsTaskAppoint; -import com.pusong.business.domain.PsTaskMain; -import com.pusong.business.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.enums.ApproverTypeEnum; +import com.pusong.business.enums.CommonStatusEnum; 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; -import com.pusong.common.core.utils.MapstructUtils; import com.pusong.common.core.utils.StringUtils; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; -import java.util.List; -import java.util.stream.Collectors; - /** * 修改合同审批处理类 */ @@ -113,7 +105,7 @@ public class UpdateContractApproverServiceImpl extends ApproverAbstractServiceIm PsContractInfoBo bo = JSON.parseObject(psApproverRecord.getUpdateData(),PsContractInfoBo.class); PsContractInfo add = new PsContractInfo(); add.setContractCode(psApproverRecord.getContractCode()); - add.setContractStatus(bo.getContractStatusCode()); + add.setContractStatus(bo.getBeforeContractStatus()); contractInfoService.updateByCode(add); } } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsApproverRecordServiceImpl.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsApproverRecordServiceImpl.java index d1f5997..dcda9c9 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsApproverRecordServiceImpl.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsApproverRecordServiceImpl.java @@ -114,11 +114,11 @@ public class PsApproverRecordServiceImpl implements IPsApproverRecordService { ApproverService service = container.getService(info.getBusinessType()); if(StringUtils.equals(ApproverStatusEnum.SUCCESS.getCode(),operate)){ - service.success(info); info.setApproverStatus(ApproverStatusEnum.SUCCESS.getCode()); + service.success(info); }else if (StringUtils.equals(ApproverStatusEnum.FAIL.getCode(),operate)){ - service.fail(info); info.setApproverStatus(ApproverStatusEnum.FAIL.getCode()); + service.fail(info); }else{ throw new ServiceException("操作失败:不支持的操作类型"); } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsCompanyInfoServiceImpl.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsCompanyInfoServiceImpl.java index 162ef2c..9618385 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsCompanyInfoServiceImpl.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsCompanyInfoServiceImpl.java @@ -12,6 +12,7 @@ import com.pusong.business.domain.bo.PsCompanyQueryBo; import com.pusong.business.domain.bo.PsContractBusinessBo; import com.pusong.business.domain.vo.PsCompanyInfoVo; import com.pusong.business.domain.vo.PsContractBusinessVo; +import com.pusong.business.enums.ApproverStepEnum; import com.pusong.business.enums.ApproverTypeEnum; import com.pusong.business.mapper.*; import com.pusong.business.service.IPsCompanyInfoService; @@ -333,10 +334,14 @@ public class PsCompanyInfoServiceImpl implements IPsCompanyInfoService { .eq("pcc.contract_code", controctCode); List 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()); + for (PsContractBusinessVo psContractBusinessVo : psCompanyInfoVo.getBusinessVoList()) { + if ("1".equals(psContractBusinessVo.getIsProxy())){ + psCompanyInfoVo.setStartServiceDate(psContractBusinessVo.getStartDate()); + psCompanyInfoVo.setEndServiceDate(psContractBusinessVo.getEndDate()); + psCompanyInfoVo.setIsOld(psContractBusinessVo.getIsOld()); + psCompanyInfoVo.setIsProxy(psContractBusinessVo.getIsProxy()); + } + } } return list; } @@ -353,10 +358,15 @@ public class PsCompanyInfoServiceImpl implements IPsCompanyInfoService { .in("pcc.contract_code", controctCodes); List 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()); + for (PsContractBusinessVo psContractBusinessVo : psCompanyInfoVo.getBusinessVoList()) { + if ("1".equals(psContractBusinessVo.getIsProxy())){ + psCompanyInfoVo.setStartServiceDate(psContractBusinessVo.getStartDate()); + psCompanyInfoVo.setEndServiceDate(psContractBusinessVo.getEndDate()); + psCompanyInfoVo.setIsOld(psContractBusinessVo.getIsOld()); + psCompanyInfoVo.setIsProxy(psContractBusinessVo.getIsProxy()); + } + } + } return list; } @@ -369,6 +379,6 @@ public class PsCompanyInfoServiceImpl implements IPsCompanyInfoService { public void terminationService(Long serviceCompanyId) { //发起审批 ApproverService service = container.getService(ApproverTypeEnum.STOPACCOUNT.getCode()); - service.apply(serviceCompanyId + "", "",null, "1"); + service.apply(serviceCompanyId + "", "",null, ApproverStepEnum.INIT.getCode()); } } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsContractInfoServiceImpl.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsContractInfoServiceImpl.java index 8088e2b..0027ba8 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsContractInfoServiceImpl.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsContractInfoServiceImpl.java @@ -132,10 +132,12 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService { } for (PsContractBusinessBo psContractBusinessBo : companyInfoBo.getBusinessList()) { - psContractBusinessBo.setStartDate(companyInfoBo.getStartServiceDate()); - psContractBusinessBo.setEndDate(companyInfoBo.getEndServiceDate()); - psContractBusinessBo.setIsOld(companyInfoBo.getIsOld()); - psContractBusinessBo.setIsProxy(companyInfoBo.getIsProxy()); + if (psContractBusinessBo.getBusinessType().equals("2")){ + psContractBusinessBo.setStartDate(companyInfoBo.getStartServiceDate()); + psContractBusinessBo.setEndDate(companyInfoBo.getEndServiceDate()); + psContractBusinessBo.setIsOld(companyInfoBo.getIsOld()); + psContractBusinessBo.setIsProxy(companyInfoBo.getIsProxy()); + } } } @@ -210,6 +212,22 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService { item.setBusinessAmount(mony); } }); + + + //插入服务公司 + for (PsCompanyInfoBo companyInfoBo : bo.getServiceCompanyInfoList()){ + companyInfoBo.setCompanyType("2"); + companyInfoBo.setCustomId(bo.getCustomId()); + for (PsContractBusinessBo psContractBusinessBo : companyInfoBo.getBusinessList()) { + if (psContractBusinessBo.getBusinessType().equals("2")){ + psContractBusinessBo.setStartDate(companyInfoBo.getStartServiceDate()); + psContractBusinessBo.setEndDate(companyInfoBo.getEndServiceDate()); + psContractBusinessBo.setIsOld(companyInfoBo.getIsOld()); + psContractBusinessBo.setIsProxy(companyInfoBo.getIsProxy()); + } + } + } + BigDecimal sum = list.stream().map(PsContractBusinessBo::getBusinessAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add); add.setContractAmount(sum);//合同总金额 return makePdf(add,bo,false); @@ -353,10 +371,11 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService { //发起审批 ApproverService service = container.getService(ApproverTypeEnum.UPDATE.getCode()); service.apply(updateBo.getContractCode(),updateBo.getContractCode(),updateBo.getUpdateDesc(), JSON.toJSONString(updateBo)); - PsContractInfo info = new PsContractInfo(); - info.setContractCode(updateBo.getContractCode()); - info.setContractStatus(ContractStatusEnum.UPDATEAPPROVER.getCode()); - updateByCode(info); +// 去掉了修改审批中状态 2024/10/17 +// PsContractInfo info = new PsContractInfo(); +// info.setContractCode(updateBo.getContractCode()); +// info.setContractStatus(ContractStatusEnum.UPDATEAPPROVER.getCode()); +// updateByCode(info); return true; } @@ -876,7 +895,7 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService { qw.ne( StringUtils.isNotBlank(bo.getContractStatus()),"info.is_cancel", CommonStatusEnum.SUCCESS.getCode()); qw.in( CollectionUtils.isNotEmpty(bo.getInContractStatus()),"info.contract_status", bo.getInContractStatus()); qw.notIn( CollectionUtils.isNotEmpty(bo.getNotInContractStatus()),"info.contract_status", bo.getNotInContractStatus()); - qw.eq( StringUtils.isNotBlank(bo.getContractCode()),"info.contract_code", bo.getContractCode()); + qw.like( StringUtils.isNotBlank(bo.getContractCode()),"info.contract_code", bo.getContractCode()); qw.eq( StringUtils.isNotBlank(bo.getIsDue()),"info.is_due", bo.getIsDue()); //客户表条件 qw.like( StringUtils.isNotBlank(bo.getCustomName()),"cus.custom_name", bo.getCustomName()); diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsContractPayServiceImpl.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsContractPayServiceImpl.java index 07db075..337f31c 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsContractPayServiceImpl.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsContractPayServiceImpl.java @@ -2,36 +2,39 @@ 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.*; -import com.pusong.business.domain.vo.PsContractInfoVo; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.pusong.business.domain.PsContractPay; +import com.pusong.business.domain.bo.PsContractPayBo; +import com.pusong.business.domain.vo.PsContractPayVo; import com.pusong.business.domain.vo.PsRefundVo; -import com.pusong.business.enums.*; +import com.pusong.business.enums.ApproverTypeEnum; +import com.pusong.business.enums.PayBuinessStatusEnum; +import com.pusong.business.enums.PayStatusEnum; +import com.pusong.business.mapper.PsContractPayMapper; import com.pusong.business.service.IPsApproverRecordService; +import com.pusong.business.service.IPsContractPayService; 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.StringUtils; -import com.pusong.common.mybatis.core.page.TableDataInfo; import com.pusong.common.mybatis.core.page.PageQuery; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.pusong.common.mybatis.core.page.TableDataInfo; import com.pusong.system.domain.vo.SysOssVo; import com.pusong.system.service.ISysOssService; import jakarta.annotation.Resource; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; -import com.pusong.business.domain.bo.PsContractPayBo; -import com.pusong.business.domain.vo.PsContractPayVo; -import com.pusong.business.mapper.PsContractPayMapper; -import com.pusong.business.service.IPsContractPayService; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; import java.math.BigDecimal; import java.math.RoundingMode; -import java.util.*; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Objects; /** * 合同回款记录Service业务层处理 @@ -186,8 +189,10 @@ public class PsContractPayServiceImpl implements IPsContractPayService { .like(StringUtils.isNotBlank(companyName),"com.company_name",companyName) .like(StringUtils.isNotBlank(mobile),"cus.custom_mobile",mobile) .like(StringUtils.isNotBlank(name),"cus.custom_name",name) - .in("pay.pay_status",List.of(PayStatusEnum.SUCCESS.getCode(),PayStatusEnum.PAYING.getCode())) - .eq("pay.business_type","2"); + .in("pay.pay_status",List.of(PayStatusEnum.SUCCESS.getCode(), PayStatusEnum.PAYING.getCode())) + .eq("pay.business_type","2") + .orderByDesc("pay.create_time") + ; Page list = baseMapper.queryRefundList(pageQuery.build(), qw); list.getRecords().forEach(info->{ List payList = queryListByContractCode(info.getContractCode(),null,PayStatusEnum.SUCCESS); @@ -199,7 +204,7 @@ public class PsContractPayServiceImpl implements IPsContractPayService { .map(PsContractPayVo::getMoney).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add); BigDecimal pay = netPay.subtract(returnMoney); //已付金额(收款-退款) - info.setPayMoney(pay.compareTo(BigDecimal.ZERO)>=0?pay:BigDecimal.ZERO); + info.setPayMoney(pay.compareTo(BigDecimal.ZERO) >= 0 ? pay : BigDecimal.ZERO); }); return TableDataInfo.build(list); } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsCustomInfoServiceImpl.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsCustomInfoServiceImpl.java index 3702f77..8dc572d 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsCustomInfoServiceImpl.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsCustomInfoServiceImpl.java @@ -225,7 +225,7 @@ public class PsCustomInfoServiceImpl implements IPsCustomInfoService { //关联客户信息表条件 qw.like(StringUtils.isNotBlank(bo.getCustomIntroducerName()), "psinfo.custom_name", bo.getCustomIntroducerName());//介绍人姓名 //公司名称 - qw.exists(StringUtils.isNotBlank(bo.getCompanyName()), "select 1 from ps_company_info com where info.id = com.custom_id and com.company_name like '%"+bo.getCompanyName()+"%'"); + qw.exists(StringUtils.isNotBlank(bo.getCompanyName()), "select 1 from ps_company_info com where info.id = com.custom_id and company_type = '1' and del_flag = '0' and com.company_name like '%"+bo.getCompanyName()+"%'"); qw.exists(bo.getHaveContract() != null && bo.getHaveContract() == 1,"SELECT 1 FROM ps_contract_info psci WHERE psci.custom_id = info.id and psci.contract_status != '10' and psci.is_cancel != '03'"); qw.notExists(bo.getHaveContract() != null && bo.getHaveContract() == 0,"SELECT 1 FROM ps_contract_info psci WHERE psci.custom_id = info.id and psci.contract_status != '10' and psci.is_cancel != '03'"); qw.orderByDesc("info.create_time");//创建时间排序 @@ -428,9 +428,9 @@ public class PsCustomInfoServiceImpl implements IPsCustomInfoService { } Map> id_callbackMap = new HashMap<>(); + List ids = list.getRecords().stream().map(PsCustomerRecordVo::getId).collect(Collectors.toList()); //已完成客户的回访记录 if (queryBo.getType() != null && queryBo.getType() == 2) { - List ids = list.getRecords().stream().map(PsCustomerRecordVo::getId).collect(Collectors.toList()); //查询回访记录详细 List callbacks = callbackMapper.selectVoList(Wrappers.lambdaQuery() .in(PsCustomCallback::getCustomId, ids) @@ -444,12 +444,34 @@ public class PsCustomInfoServiceImpl implements IPsCustomInfoService { }); } } + + //查询报价金额详细 + List pices = priceMapper.selectVoList(Wrappers.lambdaQuery() + .in(PsCustomPrice::getCustomId, ids).eq(PsCustomPrice::getDelFlag,0)); + Map> id_piceMap = new HashMap<>(); + if(CollectionUtils.isNotEmpty(pices)){ + //分组 + id_piceMap = pices.stream().collect((Collectors.groupingBy(PsCustomPriceVo::getCustomId))); + //排序 + id_piceMap.entrySet().forEach(entry->{ + entry.setValue(entry.getValue().stream().sorted(Comparator.comparingInt(PsCustomPriceVo::getPriceBatch)).collect(Collectors.toList())); + }); + } + + for (PsCustomerRecordVo item : list.getRecords()){ //免费工单审批 item.setFreeFailDesc(approverRecordService.getLastFail(item.getContractCode(), item.getContractCode(), List.of(ApproverTypeEnum.FREE.getCode()))); //装填回访记录vo item.setPsCustomCallbackVo(id_callbackMap.get(item.getId())); + //装填报价金额vo + item.setPsCustomPriceVo(id_piceMap.get(item.getId())); + //报价金额 + if(CollectionUtils.isNotEmpty(item.getPsCustomPriceVo())){ + item.setPrice(item.getPsCustomPriceVo().stream().map(PsCustomPriceVo::getServicePrice).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)); + } } + return TableDataInfo.build(list); } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsTaskServiceImpl.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsTaskServiceImpl.java index 15243a5..e90dfb2 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsTaskServiceImpl.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsTaskServiceImpl.java @@ -132,8 +132,8 @@ public class PsTaskServiceImpl implements IPsTaskService { if (vo.getServiceCompanyId() != null){ // serviceCompanyIdList.add(vo.getServiceCompanyId()); // contractCode = vo.getContractCode(); - PsCompanyInfoVo psCompanyInfoVo = companyInfoService.queryVoAndProxyById(vo.getServiceCompanyId(), vo.getContractCode()); - vo.setPsCompanySerivceVo(psCompanyInfoVo); +// PsCompanyInfoVo psCompanyInfoVo = companyInfoService.queryVoAndProxyById(vo.getServiceCompanyId(), vo.getContractCode()); +// vo.setPsCompanySerivceVo(psCompanyInfoVo); } if (vo.getTaskType().equals("2")){ vo.setBusinessTypeName(vo.getBusinessType()); @@ -141,13 +141,13 @@ public class PsTaskServiceImpl implements IPsTaskService { } //装填服务公司信息 - if (!serviceCompanyIdList.isEmpty()){ - List serviceCompany = companyInfoService.queryVoAndProxyByIds(serviceCompanyIdList, contractCode); - Map serviceCompanyMap = serviceCompany.stream().collect(Collectors.toMap(PsCompanyInfoVo::getId, v -> v)); - for (PsTaskMainVo vo : page.getRecords()) { - vo.setPsCompanySerivceVo(serviceCompanyMap.get(vo.getServiceCompanyId())); - } - } +// if (!serviceCompanyIdList.isEmpty()){ +// List serviceCompany = companyInfoService.queryVoAndProxyByIds(serviceCompanyIdList, contractCode); +// Map serviceCompanyMap = serviceCompany.stream().collect(Collectors.toMap(PsCompanyInfoVo::getId, v -> v)); +// for (PsTaskMainVo vo : page.getRecords()) { +// vo.setPsCompanySerivceVo(serviceCompanyMap.get(vo.getServiceCompanyId())); +// } +// } } /** @@ -539,8 +539,8 @@ public class PsTaskServiceImpl implements IPsTaskService { lqw.like(StringUtils.isNotBlank(bo.getMobile()), "com.legal_person_phone", bo.getMobile());//法人手机号 lqw.like(StringUtils.isNotBlank(bo.getIdNo()), "com.legal_person_idcard", bo.getIdNo());//法人身份证 lqw.like(StringUtils.isNotBlank(bo.getName()), "com.legal_person_name", bo.getName());//法人姓名 - lqw.like(StringUtils.isNotBlank(bo.getCustomName()), "cus.custom_name", bo.getCustomName());//客户姓名 - lqw.like(StringUtils.isNotBlank(bo.getCustomMobile()), "cus.custom_mobile", bo.getCustomMobile());//客户电话 + lqw.like(StringUtils.isNotBlank(bo.getCustomName()), "com.contact_person_name", bo.getCustomName());//客户姓名 + lqw.like(StringUtils.isNotBlank(bo.getCustomMobile()), "com.contact_person_phone", bo.getCustomMobile());//客户电话 lqw.eq(StringUtils.isNotBlank(bo.getCustomScene()), "con.custom_scene", bo.getCustomScene());//是否到达现场 lqw.eq(StringUtils.isNotBlank(bo.getIsProxy()), "con.is_proxy", bo.getIsProxy());//是否代账 diff --git a/pusong-modules/pusong-business/src/main/resources/mapper/business/PsApproverRecordMapper.xml b/pusong-modules/pusong-business/src/main/resources/mapper/business/PsApproverRecordMapper.xml index a80927e..60dcbdc 100644 --- a/pusong-modules/pusong-business/src/main/resources/mapper/business/PsApproverRecordMapper.xml +++ b/pusong-modules/pusong-business/src/main/resources/mapper/business/PsApproverRecordMapper.xml @@ -21,6 +21,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" , info.contact_person_name , info.contact_person_phone , info.contact_person_idcard + , info.apply_date contact_apply_date , com.id company_id , com.company_name com_company_name , com.legal_person_name com_legal_person_name @@ -35,6 +36,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" , (select GROUP_CONCAT(business.business_type SEPARATOR ',') from ps_contract_business business where business.contract_code = info.contract_code) as business_type_name , info.contract_status + , info.is_due , (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 @@ -49,9 +51,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ,pay.pay_desc pay_pay_desc 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 - left join ps_custom_info cus on cus.id = info.custom_id + 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 + left join ps_custom_info cus on cus.id = info.custom_id inner join ps_contract_pay pay on pay.id = app.business_id diff --git a/pusong-modules/pusong-business/src/main/resources/mapper/business/PsCustomInfoMapper.xml b/pusong-modules/pusong-business/src/main/resources/mapper/business/PsCustomInfoMapper.xml index b4b9a3b..697deab 100644 --- a/pusong-modules/pusong-business/src/main/resources/mapper/business/PsCustomInfoMapper.xml +++ b/pusong-modules/pusong-business/src/main/resources/mapper/business/PsCustomInfoMapper.xml @@ -44,6 +44,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" custom.create_time, custom.custom_status, custom.custom_source, + custom.custom_level, (select pci.custom_name from ps_custom_info pci where pci.id = custom.custom_introducer limit 0,1) custom_introducer, con.contract_code, custom.custom_name, @@ -67,6 +68,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" con.finish_date, con.confirm_ossid, (select par.approver_status from ps_approver_record par where par.contract_code = con.contract_code and business_type = 'free' order by id desc limit 0,1) approver_status + ,EXISTS(SELECT 1 FROM ps_contract_info coninfo WHERE coninfo.custom_id = custom.id and coninfo.contract_status != '10' and coninfo.is_cancel != '03') have_contract from ps_custom_info custom left join diff --git a/pusong-modules/pusong-business/src/main/resources/mapper/business/PsTaskMainMapper.xml b/pusong-modules/pusong-business/src/main/resources/mapper/business/PsTaskMainMapper.xml index 6531dc3..d02dcc6 100644 --- a/pusong-modules/pusong-business/src/main/resources/mapper/business/PsTaskMainMapper.xml +++ b/pusong-modules/pusong-business/src/main/resources/mapper/business/PsTaskMainMapper.xml @@ -36,17 +36,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" con.is_due con_is_due, con.contract_amount con_contract_amount, con.custom_scene con_custom_scene, - con.custom_manager con_custom_manager, - usr.nick_name con_custom_manager_name, con.sign_desc con_sign_desc, com.id com_id, - com.company_adress com_company_adress, - com.company_name com_company_name, - com.legal_person_name com_legal_person_name, - com.legal_person_idcard com_legal_person_idcard, - com.legal_person_phone com_legal_person_phone, - com.customer_num com_customer_num, - com.customer_cert com_customer_cert, + com.company_adress scom_company_adress, + com.company_name scom_company_name, + com.legal_person_name scom_legal_person_name, + com.legal_person_idcard scom_legal_person_idcard, + com.legal_person_phone scom_legal_person_phone, + com.contact_person_name scom_contact_person_name, + com.contact_person_phone scom_contact_person_phone, + com.customer_num scom_customer_num, + com.customer_cert scom_customer_cert, + usr.nick_name scom_custom_manager_name, cus.id cus_id, cus.custom_name cus_custom_name , cus.custom_mobile cus_custom_mobile, @@ -63,9 +64,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" (select GROUP_CONCAT(business.business_type SEPARATOR ',') 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 - left join ps_custom_info cus on con.custom_id = cus.id - left join sys_user usr on con.custom_manager = usr.user_id + left join ps_company_info com on main.service_company_id = com.id + left join ps_custom_info cus on com.custom_id = cus.id + left join sys_user usr on cus.custom_manager = usr.user_id