diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsCompanyInfoController.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsCompanyInfoController.java index 73292fa..40a1958 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsCompanyInfoController.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsCompanyInfoController.java @@ -59,7 +59,7 @@ public class PsCompanyInfoController extends BaseController { */ @SaCheckPermission("business:companyInfo:list") @GetMapping("/pageList") - public TableDataInfo pageList(PsCompanyQueryBo bo, PageQuery pageQuery) { + public TableDataInfo pageList(PsCompanyQueryBo bo, PageQuery pageQuery) { return psCompanyInfoService.queryPageList(bo,pageQuery); } @@ -69,9 +69,26 @@ public class PsCompanyInfoController extends BaseController { @SaCheckPermission("business:customInfo:list") @Log(title = "服务公司列表" ) @GetMapping("/serviceList") - public TableDataInfo serviceList(PsCompanyQueryBo queryBo, PageQuery pageQuery) { + public TableDataInfo serviceList(PsCompanyQueryBo queryBo, PageQuery pageQuery) { return psCompanyInfoService.queryServiceCompany(queryBo, pageQuery); } + @SaCheckPermission("business:customInfo:list") + @Log(title = "服务公司列表" ) + @GetMapping("/searchServiceCompany") + public TableDataInfo searchServiceCompany(@RequestParam("keyWorld") String keyWorld) { + return psCompanyInfoService.searchServiceCompany(keyWorld); + } + + /** + * 停止代账 + */ + @SaCheckPermission("business:customInfo:list") + @Log(title = "停止代账" ) + @GetMapping("/applyTerminationService") + public R terminationService(PsCompanyQueryBo queryBo, PageQuery pageQuery) { + psCompanyInfoService.terminationService(queryBo.getId()); + return R.ok(); + } /** @@ -108,4 +125,6 @@ public class PsCompanyInfoController extends BaseController { @PathVariable Long[] ids) { return toAjax(psCompanyInfoService.deleteWithValidByIds(List.of(ids), true)); } + + } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsContractInfoController.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsContractInfoController.java index 368b0b5..dbc5e68 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsContractInfoController.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsContractInfoController.java @@ -189,7 +189,6 @@ public class PsContractInfoController extends BaseController { /** * 免费派单 - * @param contractCode 合同编码 * @param businessType 服务类别 * @param businessProject 服务项目 * @return @@ -198,8 +197,8 @@ public class PsContractInfoController extends BaseController { @Log(title = "免费派单") @SaCheckPermission("business:task:list") @GetMapping("/freeWork") - public R freeWork(@NotNull String contractCode,@NotNull String businessType,@NotNull String businessProject) { - psContractInfoService.freeWork(contractCode,businessType,businessProject); + public R freeWork(@NotNull String serviceCompanyId, @NotNull String businessType,@NotNull String businessProject) { + psContractInfoService.freeWork(serviceCompanyId, businessType, businessProject); return R.ok(); } /** @@ -211,8 +210,8 @@ public class PsContractInfoController extends BaseController { @Log(title = "根据合同编码查询服务进度") @SaCheckPermission("business:task:list") @GetMapping("/queryScheduleByCode") - public R queryScheduleByCode(@NotBlank String contractCode) { - return R.ok(psContractInfoService.queryScheduleByCode(contractCode)); + public R queryScheduleByCode(@NotBlank String contractCode, @NotBlank Long serviceCompanyId) { + return R.ok(psContractInfoService.queryScheduleByCode(contractCode, serviceCompanyId)); } // 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 da00925..1903a4e 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 @@ -136,7 +136,7 @@ public class PsCustomController extends BaseController { /** - * 已完成客户,, 废弃 + * 已完成客户 * @param queryBo 查询 * @return */ diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/PsCompanyQueryBo.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/PsCompanyQueryBo.java index d77f14f..e18df3e 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/PsCompanyQueryBo.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/PsCompanyQueryBo.java @@ -58,4 +58,9 @@ public class PsCompanyQueryBo { */ private String followUser; + /** + * 1全部 2非托管服务 3 托管代账 4托管不代账 + */ + private Integer type; + } 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 fc54783..b424ff4 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 @@ -123,10 +123,46 @@ public class PsApproverRecordVo implements Serializable { */ @Translation(type = TransConstant.USER_ID_TO_NICKNAME) private Long customManager; + + /** + * 签约公司id + */ + private Long companyId; /** * 公司名 */ private String companyName; + + /** + * 签约个人时联系人姓名 + */ + private String contactPersonName; + + /** + * 签约个人时联系人手机号 + */ + private String contactPersonPhone; + + /** + * 签约个人时联系人身份证号 + */ + private String contactPersonIdcard; + /** + * 签约公司信息(不会有服务类别) + */ + private PsCompanyInfoVo psCompanyInfoVo; +// +// /** +// * 公司所属区域 +// */ +// private String companyAdress; + + /** + * 服务公司信息 + */ + private List servicePsCompanyInfoVo; + + /** * 客户名 */ @@ -149,6 +185,12 @@ public class PsApproverRecordVo implements Serializable { * 合同总金额 */ private BigDecimal contractAmount; + + @Translation(type = TransConstant.DICT_TYPE_TO_LABEL,other = "contract_status", mapper="contractStatus") + private String contractStatusName; + + private String contractStatus; + /** * 已付金额 */ @@ -186,4 +228,9 @@ public class PsApproverRecordVo implements Serializable { */ private String payCertification; + /** + * 退款详细信息 + */ + private PsContractPayVo psContractPayVo; + } 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 455f13a..5c48644 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 @@ -191,12 +191,17 @@ public class PsCompanyInfoVo implements Serializable { private Long customManager; /** - * 服务状态 + * 服务状态0终止1正常 */ private Integer serviceStatus; /** - * 服务状态 + * 终止原因 */ private String terminationReason; + + /** + * 终止审核状态 0未申请,1审核中,2同意 3拒绝 + */ + private Integer terminationStatus; } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsContractInfoVo.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsContractInfoVo.java index f74e668..9b9fe97 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsContractInfoVo.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsContractInfoVo.java @@ -186,7 +186,7 @@ public class PsContractInfoVo implements Serializable { private String isOld; /** - * 是否续费 + * 是否续费0新签 1续费 */ private String isDue; diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsTaskMainVo.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsTaskMainVo.java index 78c93b6..3ef8d6e 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsTaskMainVo.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsTaskMainVo.java @@ -160,7 +160,6 @@ public class PsTaskMainVo implements Serializable { */ private PsCompanyInfoVo psCompanySerivceVo; - /** * 服务公司id */ diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/ServiceScheduleVo.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/ServiceScheduleVo.java index 1bfa5e1..cf2e3be 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/ServiceScheduleVo.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/ServiceScheduleVo.java @@ -4,6 +4,9 @@ import com.pusong.common.translation.annotation.Translation; import com.pusong.common.translation.constant.TransConstant; import lombok.Data; +import java.util.ArrayList; +import java.util.List; + @Data public class ServiceScheduleVo { /** @@ -30,30 +33,22 @@ public class ServiceScheduleVo { /** * 内勤 */ - @Translation(type = TransConstant.USER_ID_TO_NICKNAME) - private Long in; + /** - * 内勤是否已完成(1是0否) + * 内勤 */ - private Integer inStatus; + List in = new ArrayList<>(); + /** * 外勤 */ - @Translation(type = TransConstant.USER_ID_TO_NICKNAME) - private Long out; - /** - * 外勤是否已完成(1是0否) - */ - private Integer outStatus; + List out = new ArrayList<>(); + /** * 特勤 */ - @Translation(type = TransConstant.USER_ID_TO_NICKNAME) - private Long secret; - /** - * 特勤是否已完成(1是0否) - */ - private Integer secretStatus; + List secret = new ArrayList<>(); + /** * 回传 */ @@ -73,4 +68,32 @@ public class ServiceScheduleVo { * 是否已完成(1是 0否) */ private Integer isFinish; + + + public static class UserAndStatus{ + /** + * 内勤 + */ + @Translation(type = TransConstant.USER_ID_TO_NICKNAME) + private Long uid; + /** + * 内勤是否已完成(1是0否) + */ + private Integer status; + public UserAndStatus(Long uid, Integer status){ + this.uid = uid; + this.status = status; + } + + } + + public void addIn(UserAndStatus userAndStatus){ + this.in.add(userAndStatus); + } + public void addOut(UserAndStatus userAndStatus){ + this.out.add(userAndStatus); + } + public void addSecret(UserAndStatus userAndStatus){ + this.secret.add(userAndStatus); + } } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/enums/ApproverTypeEnum.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/enums/ApproverTypeEnum.java index 9088464..3f20ea0 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/enums/ApproverTypeEnum.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/enums/ApproverTypeEnum.java @@ -18,7 +18,8 @@ public enum ApproverTypeEnum { PUBLIC("public","公海认领审批"), TASKCANCE("taskcance","任务作废审批"), RETURN("RETURN","退款审批"), - FREE("free","免费工单审批"); + FREE("free","免费工单审批"), + TERMINATIONSERVICE("terminationService","终止合作"); private String code; private String text; } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/mapper/PsApproverRecordMapper.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/mapper/PsApproverRecordMapper.java index 14694c7..1780bdc 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/mapper/PsApproverRecordMapper.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/mapper/PsApproverRecordMapper.java @@ -19,6 +19,7 @@ import org.apache.ibatis.annotations.Param; public interface PsApproverRecordMapper extends BaseMapperPlus { Page selectPageApproverList(@Param("page") Page page, @Param(Constants.WRAPPER) Wrapper queryWrapper); + Page selectPageFreeApproverList(@Param("page") Page page, @Param(Constants.WRAPPER) Wrapper queryWrapper); Page selectPagePublicList(@Param("page") Page page, @Param(Constants.WRAPPER) Wrapper queryWrapper); } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/mapper/PsCompanyInfoMapper.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/mapper/PsCompanyInfoMapper.java index 57e9e61..aeca34e 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/mapper/PsCompanyInfoMapper.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/mapper/PsCompanyInfoMapper.java @@ -21,9 +21,12 @@ import java.util.List; */ public interface PsCompanyInfoMapper extends BaseMapperPlus { - Page selectPageList(@Param("page") Page page, @Param(Constants.WRAPPER) Wrapper queryWrapper); + Page selectPageList(@Param("page") Page page, @Param(Constants.WRAPPER) Wrapper queryWrapper); + Page selectPageList2(@Param("page") Page page, @Param(Constants.WRAPPER) Wrapper queryWrapper); List selectServiceCompanyList(@Param(Constants.WRAPPER) Wrapper queryWrapper); + PsCompanyInfoVo selectVoCustomManagerById(@Param("id")Long id); + } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/mapper/PsTaskMainMapper.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/mapper/PsTaskMainMapper.java index 64ed374..06984fb 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/mapper/PsTaskMainMapper.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/mapper/PsTaskMainMapper.java @@ -7,12 +7,15 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.pusong.business.domain.PsContractInfo; import com.pusong.business.domain.PsTaskMain; import com.pusong.business.domain.vo.PsContractInfoVo; +import com.pusong.business.domain.vo.PsTaskAppointVo; import com.pusong.business.domain.vo.PsTaskMainVo; import com.pusong.common.mybatis.annotation.DataColumn; import com.pusong.common.mybatis.annotation.DataPermission; import com.pusong.common.mybatis.core.mapper.BaseMapperPlus; import org.apache.ibatis.annotations.Param; +import java.util.List; + /** * 主任务Mapper接口 * @@ -27,6 +30,7 @@ public interface PsTaskMainMapper extends BaseMapper { Page queryTaskPageList(@Param("page") Page page, @Param(Constants.WRAPPER) Wrapper queryWrapper); + Page queryInvoiceTaskPageList(@Param("page") Page page, @Param(Constants.WRAPPER) Wrapper queryWrapper); @@ -35,4 +39,8 @@ public interface PsTaskMainMapper extends BaseMapper { @DataColumn(key = "userName", value = "appo.executor") }) Page queryChildTaskPageList(@Param("page") Page page, @Param(Constants.WRAPPER) Wrapper queryWrapper); + + + List queryByMainId(@Param("mainId") Long mainId); + } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/IPsCompanyInfoService.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/IPsCompanyInfoService.java index a49af01..ca72de0 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/IPsCompanyInfoService.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/IPsCompanyInfoService.java @@ -3,7 +3,6 @@ package com.pusong.business.service; import com.pusong.business.domain.bo.PsCompanyQueryBo; import com.pusong.business.domain.vo.PsCompanyInfoVo; import com.pusong.business.domain.bo.PsCompanyInfoBo; -import com.pusong.business.domain.vo.PsCompanyQueryVo; import com.pusong.common.mybatis.core.page.TableDataInfo; import com.pusong.common.mybatis.core.page.PageQuery; @@ -39,10 +38,11 @@ public interface IPsCompanyInfoService { * @param bo 查询条件 * @return 公司信息列表 */ - TableDataInfo queryPageList(PsCompanyQueryBo bo, PageQuery pageQuery); + TableDataInfo queryPageList(PsCompanyQueryBo bo, PageQuery pageQuery); - TableDataInfo queryServiceCompany(PsCompanyQueryBo bo, PageQuery pageQuery); + TableDataInfo queryServiceCompany(PsCompanyQueryBo bo, PageQuery pageQuery); + TableDataInfo searchServiceCompany(String keyWorld); /** * 新增公司信息 @@ -80,4 +80,6 @@ public interface IPsCompanyInfoService { * 根据合同编码查询服务公司信息 */ List getServiceCompany(String controctCode); + + void terminationService(Long serviceCompanyId); } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/IPsContractInfoService.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/IPsContractInfoService.java index f6b6186..ed5d758 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/IPsContractInfoService.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/IPsContractInfoService.java @@ -132,7 +132,7 @@ public interface IPsContractInfoService { * 根据合同编码查询服务进度 * @param contractCode 合同编码 */ - ServiceScheduleVo queryScheduleByCode(String contractCode); + ServiceScheduleVo queryScheduleByCode(String contractCode, Long serviceCompanyId); /** * 全部退款回退合同状态 diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/IPsTaskService.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/IPsTaskService.java index 09ab3fc..ba094e5 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/IPsTaskService.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/IPsTaskService.java @@ -67,6 +67,9 @@ public interface IPsTaskService { * @return */ PsTaskMain queryByContractCode(String contractCode); + + PsTaskMain queryByContractCodeAndServiceCompanyId(String contractCode, Long serviceCompanyId); + /** * 根据主任务id查询进度 * @@ -74,6 +77,7 @@ public interface IPsTaskService { */ TaskPlanVo plan(Long id); + /** * 上传资料和公司信息 * 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 a8a9cf8..a6f48b8 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 @@ -10,6 +10,7 @@ import com.pusong.business.domain.PsApproverRecord; import com.pusong.business.domain.PsContractPay; import com.pusong.business.domain.bo.PsApproverRecordBo; import com.pusong.business.domain.vo.PsApproverRecordVo; +import com.pusong.business.domain.vo.PsCompanyInfoVo; import com.pusong.business.domain.vo.PsContractPayVo; import com.pusong.business.enums.ApproverStatusEnum; import com.pusong.business.enums.ApproverTypeEnum; @@ -17,6 +18,7 @@ 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; import com.pusong.common.core.exception.ServiceException; @@ -45,6 +47,8 @@ public abstract class ApproverAbstractServiceImpl implements ApproverService { private PsApproverRecordMapper recordMapper; @Resource private PsContractPayMapper baseMapper; + @Resource + private IPsCompanyInfoService companyInfoService; /** * 通用申请方法 * @param bussinessId @@ -62,9 +66,9 @@ public abstract class ApproverAbstractServiceImpl implements ApproverService { wq.eq(PsApproverRecord::getBusinessId,bussinessId); } List list = approverRecordMapper.selectList(wq); - if(CollectionUtils.isNotEmpty(list)){ - throw new ServiceException("已存在同类型审批,请勿重复提交"); - } + if(CollectionUtils.isNotEmpty(list)){ + throw new ServiceException("已存在同类型审批,请勿重复提交"); + } PsApproverRecord record = new PsApproverRecord(); record.setBusinessId(bussinessId); @@ -99,14 +103,19 @@ public abstract class ApproverAbstractServiceImpl implements ApproverService { .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()+"%'") .orderByAsc("app.approver_status").orderByDesc("app.apply_date"); Page res = recordMapper.selectPageApproverList(pageQuery.build(), lqw); + if(CollectionUtils.isNotEmpty(res.getRecords())){ res.getRecords().forEach(item->{ - item.setResidualMoney(item.getContractAmount().subtract(item.getPayMoney())); + if (item.getContractAmount() != null) + item.setResidualMoney(item.getContractAmount().subtract(item.getPayMoney())); //装填回款周期 List payList = queryListByContractCode(item.getContractCode(),"1", PayStatusEnum.SUCCESS); if(CollectionUtils.isNotEmpty(payList)){ item.setPeriod(DateUtils.calWorkDate(payList.get(0).getPayDate(),payList.get(payList.size()-1).getPayDate())); } + //装填服务公司信息 + List list = companyInfoService.getServiceCompany(item.getContractCode()); + item.setServicePsCompanyInfoVo(list); }); } return res; @@ -120,7 +129,7 @@ public abstract class ApproverAbstractServiceImpl implements ApproverService { * @param contractCode 合同编码 * @return */ - public List queryListByContractCode(String contractCode,String business,PayStatusEnum enu){ + public List queryListByContractCode(String contractCode, String business, PayStatusEnum enu){ if(StringUtils.isBlank(contractCode)){return new ArrayList<>();} List list = baseMapper.selectVoList(Wrappers.lambdaQuery(). eq(PsContractPay::getContractCode, contractCode).eq(PsContractPay::getDelFlag,0) diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/FreeApproverServiceImpl.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/FreeApproverServiceImpl.java index cf06147..5fe7363 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/FreeApproverServiceImpl.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/FreeApproverServiceImpl.java @@ -1,23 +1,35 @@ package com.pusong.business.service.approver.impl; -import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.pusong.business.domain.PsApproverRecord; import com.pusong.business.domain.PsContractInfo; import com.pusong.business.domain.PsTaskAppoint; import com.pusong.business.domain.PsTaskMain; +import com.pusong.business.domain.bo.PsApproverRecordBo; +import com.pusong.business.domain.vo.PsApproverRecordVo; +import com.pusong.business.domain.vo.PsCompanyInfoVo; import com.pusong.business.domain.vo.PsContractInfoVo; -import com.pusong.business.enums.ApproverTypeEnum; -import com.pusong.business.enums.ContractStatusEnum; -import com.pusong.business.enums.TaskStatusEnum; -import com.pusong.business.enums.TaskTypeEnum; +import com.pusong.business.domain.vo.PsContractPayVo; +import com.pusong.business.enums.*; +import com.pusong.business.mapper.PsApproverRecordMapper; import com.pusong.business.mapper.PsTaskAppointMapper; import com.pusong.business.mapper.PsTaskMainMapper; +import com.pusong.business.service.IPsCompanyInfoService; import com.pusong.business.service.IPsContractInfoService; +import com.pusong.common.core.utils.DateUtils; +import com.pusong.common.core.utils.StringUtils; +import com.pusong.common.mybatis.core.page.PageQuery; +import jakarta.annotation.Resource; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import java.util.Arrays; +import java.util.List; + /** * 免费工单审批 */ @@ -32,20 +44,25 @@ public class FreeApproverServiceImpl extends ApproverAbstractServiceImpl { private final PsTaskMainMapper taskMainMapper; private final PsTaskAppointMapper taskAppointMapper; private final IPsContractInfoService contractInfoService; - + private final IPsCompanyInfoService companyInfoService; + @Resource + private PsApproverRecordMapper recordMapper; /** * 1 审批成功 * @param psApproverRecord 神瀑类 */ @Override public void success(PsApproverRecord psApproverRecord) { - PsContractInfoVo vo = contractInfoService.queryContractByCode(psApproverRecord.getBusinessId()); +// PsContractInfoVo vo = contractInfoService.queryContractByCode(psApproverRecord.getBusinessId()); + PsCompanyInfoVo psCompanyInfoVo = companyInfoService.queryById(Long.valueOf(psApproverRecord.getBusinessId())); + PsTaskMain psTaskMain = new PsTaskMain(); - psTaskMain.setCompanyId(vo.getCompanyId()); - psTaskMain.setCustomId(vo.getCustomId()); - psTaskMain.setContractCode(vo.getContractCode()); + psTaskMain.setCompanyId(psCompanyInfoVo.getId()); + psTaskMain.setCustomId(psCompanyInfoVo.getCustomId()); +// psTaskMain.setContractCode(vo.getContractCode()); psTaskMain.setTaskType(TaskTypeEnum.FREE.getCode()); psTaskMain.setTaskStatus(TaskStatusEnum.INIT.getCode()); + psTaskMain.setServiceCompanyId(psCompanyInfoVo.getId()); psTaskMain.setBusinessType(psApproverRecord.getUpdateData().split("@@")[0]); psTaskMain.setBusinessProject(psApproverRecord.getUpdateData().split("@@")[1]); taskMainMapper.insert(psTaskMain); @@ -66,4 +83,40 @@ public class FreeApproverServiceImpl extends ApproverAbstractServiceImpl { public void fail(PsApproverRecord psApproverRecord) { } + + /** + * 查询列表 + */ + @Override + public Page queryList(PsApproverRecordBo bo, PageQuery pageQuery){ + QueryWrapper lqw = Wrappers.query().eq("app.business_type", approverType()) + .eq(bo.getId()!=null,"app.id",bo.getId()) + .eq("app.del_flag","0") + .eq(com.pusong.common.core.utils.StringUtils.isNotBlank(bo.getApproverStatus()),"app.approver_status",bo.getApproverStatus()) + .like(com.pusong.common.core.utils.StringUtils.isNotBlank(bo.getCustomerName()),"cus.custom_name",bo.getCustomerName()) + .like(com.pusong.common.core.utils.StringUtils.isNotBlank(bo.getCompanyName()),"com.company_name",bo.getCompanyName()) + //销售经理姓名 + .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()+"%'") + .orderByAsc("app.approver_status").orderByDesc("app.apply_date"); + Page res = recordMapper.selectPageFreeApproverList(pageQuery.build(), lqw); + if(CollectionUtils.isNotEmpty(res.getRecords())){ + res.getRecords().forEach(item->{ + if (item.getContractAmount() != null) + item.setResidualMoney(item.getContractAmount().subtract(item.getPayMoney())); + //装填回款周期 + List payList = queryListByContractCode(item.getContractCode(),"1", PayStatusEnum.SUCCESS); + if(CollectionUtils.isNotEmpty(payList)){ + item.setPeriod(DateUtils.calWorkDate(payList.get(0).getPayDate(),payList.get(payList.size()-1).getPayDate())); + } + + //装填服务公司信息 + PsCompanyInfoVo psCompanyInfoVo = companyInfoService.queryById(Long.valueOf(item.getBusinessId())); + if (psCompanyInfoVo != null){ + item.setServicePsCompanyInfoVo(Arrays.asList(psCompanyInfoVo)); + } + }); + } + return res; + } + } 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 9ef0284..99a37a2 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 @@ -58,29 +58,24 @@ public class PayContractApproverServiceImpl extends ApproverAbstractServiceImpl update.setPayStatus(PayStatusEnum.SUCCESS.getCode()); payService.updateById(update); - if(StringUtils.isNotBlank(info.getSrcContractCode())){ - log.info("续费合同不需要生成任务"+info.getSrcContractCode()); - if(StringUtils.equals(ContractStatusEnum.CREATE.getCode(),info.getContractStatus())){ - log.info("修改合同状态"); - PsContractInfo updateInfo = new PsContractInfo(); - updateInfo.setContractCode(info.getContractCode()); + PsContractInfo updateInfo = new PsContractInfo(); + updateInfo.setContractCode(info.getContractCode()); + if("1".equals(info.getIsDue())){ + if(StringUtils.equals(ContractStatusEnum.CREATE.getCode(), info.getContractStatus())){ updateInfo.setContractStatus(ContractStatusEnum.EXECUTION.getCode()); psContractInfoService.updateByCode(updateInfo); } - return; + return;//续费合同不生成任务直接return }else{ - if(StringUtils.equals(ContractStatusEnum.CREATE.getCode(),info.getContractStatus())){ - log.info("修改合同状态"); - PsContractInfo updateInfo = new PsContractInfo(); - updateInfo.setContractCode(info.getContractCode()); + if(StringUtils.equals(ContractStatusEnum.CREATE.getCode(), info.getContractStatus())){ updateInfo.setContractStatus(ContractStatusEnum.RETURN.getCode()); psContractInfoService.updateByCode(updateInfo); } } - List list = payService.queryListByContractCode(info.getContractCode(), PayBuinessStatusEnum.PAY.getCode(), PayStatusEnum.SUCCESS); +// List list = payService.queryListByContractCode(info.getContractCode(), PayBuinessStatusEnum.PAY.getCode(), PayStatusEnum.SUCCESS); //如果没有过回款记录初始化任务主表,并修改合同状态 - log.info("查询回款记录数量{}任务状态{}", list.size(),info.getContractStatus()); +// log.info("查询回款记录数量{}任务状态{}", list.size(),info.getContractStatus()); PsTaskMain task = taskMainService.queryByContractCode(psApproverRecord.getContractCode()); if(task == null || task.getId() == null){ @@ -99,7 +94,6 @@ public class PayContractApproverServiceImpl extends ApproverAbstractServiceImpl taskMainService.insertBatch(psTaskMainList); } - } @Override diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/ReturnApproverServiceImpl.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/ReturnApproverServiceImpl.java index dc60077..5e7d9ec 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/ReturnApproverServiceImpl.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/ReturnApproverServiceImpl.java @@ -1,9 +1,15 @@ package com.pusong.business.service.approver.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.pusong.business.domain.*; +import com.pusong.business.domain.bo.PsApproverRecordBo; +import com.pusong.business.domain.vo.PsApproverRecordVo; +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.ApproverTypeEnum; import com.pusong.business.enums.ContractStatusEnum; import com.pusong.business.enums.PayStatusEnum; @@ -12,8 +18,13 @@ import com.pusong.business.mapper.PsApproverRecordMapper; import com.pusong.business.mapper.PsContractPayMapper; import com.pusong.business.mapper.PsTaskAppointMapper; import com.pusong.business.mapper.PsTaskMainMapper; +import com.pusong.business.service.IPsCompanyInfoService; import com.pusong.business.service.IPsContractInfoService; import com.pusong.business.service.IPsTaskService; +import com.pusong.common.core.utils.DateUtils; +import com.pusong.common.core.utils.StringUtils; +import com.pusong.common.mybatis.core.page.PageQuery; +import jakarta.annotation.Resource; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -28,13 +39,18 @@ import java.util.Objects; @Service @Slf4j public class ReturnApproverServiceImpl extends ApproverAbstractServiceImpl { + @Resource + private PsApproverRecordMapper recordMapper; @Override public String approverType() { return ApproverTypeEnum.RETURN.getCode(); } private final PsContractPayMapper baseMapper; + private final PsContractPayMapper payMapper; + @Resource + private IPsCompanyInfoService companyInfoService; /** * 1 审批成功 退款审批成功 * @param psApproverRecord 神瀑类 @@ -56,4 +72,15 @@ public class ReturnApproverServiceImpl extends ApproverAbstractServiceImpl { info.setPayStatus(PayStatusEnum.FILE.getCode()); baseMapper.updateById(info); } + + + @Override + public Page queryList(PsApproverRecordBo bo, PageQuery pageQuery){ + Page res = super.queryList(bo, pageQuery); + for (PsApproverRecordVo record : res.getRecords()) { + PsContractPayVo psContractPayVo = payMapper.selectVoById(record.getBusinessId()); + record.setPsContractPayVo(psContractPayVo); + } + return res; + } } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/TerminationServiceImpl.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/TerminationServiceImpl.java new file mode 100644 index 0000000..320e9c3 --- /dev/null +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/TerminationServiceImpl.java @@ -0,0 +1,67 @@ +package com.pusong.business.service.approver.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.pusong.business.domain.PsApproverRecord; +import com.pusong.business.domain.PsTaskMain; +import com.pusong.business.domain.bo.PsApproverRecordBo; +import com.pusong.business.domain.vo.PsApproverRecordVo; +import com.pusong.business.domain.vo.PsCompanyInfoVo; +import com.pusong.business.domain.vo.PsContractPayVo; +import com.pusong.business.enums.ApproverTypeEnum; +import com.pusong.business.enums.PayStatusEnum; +import com.pusong.business.enums.TaskStatusEnum; +import com.pusong.business.enums.TaskTypeEnum; +import com.pusong.business.mapper.PsApproverRecordMapper; +import com.pusong.business.mapper.PsTaskAppointMapper; +import com.pusong.business.mapper.PsTaskMainMapper; +import com.pusong.business.service.IPsCompanyInfoService; +import com.pusong.business.service.IPsContractInfoService; +import com.pusong.common.core.utils.DateUtils; +import com.pusong.common.core.utils.StringUtils; +import com.pusong.common.mybatis.core.page.PageQuery; +import jakarta.annotation.Resource; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 免费工单审批 + */ +@RequiredArgsConstructor +@Service +@Slf4j +public class TerminationServiceImpl extends ApproverAbstractServiceImpl { + @Override + public String approverType() { + return ApproverTypeEnum.TERMINATIONSERVICE.getCode(); + } + private final PsTaskMainMapper taskMainMapper; + private final PsTaskAppointMapper taskAppointMapper; + private final IPsContractInfoService contractInfoService; + private final IPsCompanyInfoService companyInfoService; + @Resource + private PsApproverRecordMapper recordMapper; + @Override + public void success(PsApproverRecord psApproverRecord) { + //修改服务公司状态为终止 + + + } + + /** + * 审批拒绝 + * @param psApproverRecord + */ + @Override + public void fail(PsApproverRecord psApproverRecord) { + + } + + + +} 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 a8b8b3f..b6f6dff 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 @@ -5,11 +5,12 @@ 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.domain.bo.PsContractBusinessBo; +import com.pusong.business.enums.ApproverTypeEnum; import com.pusong.business.mapper.PsContractCompanyMapper; import com.pusong.business.mapper.PsContractInfoMapper; -import com.pusong.business.service.IPsContractInfoService; +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; @@ -18,6 +19,7 @@ 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 jakarta.annotation.Resource; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import com.pusong.business.domain.bo.PsCompanyInfoBo; @@ -28,7 +30,6 @@ import com.pusong.business.service.IPsCompanyInfoService; import java.util.ArrayList; import java.util.List; -import java.util.Map; import java.util.Collection; /** @@ -44,7 +45,8 @@ public class PsCompanyInfoServiceImpl implements IPsCompanyInfoService { private final PsCompanyInfoMapper baseMapper; private final PsContractCompanyMapper contractCompanyMapper; private final PsContractInfoMapper contractInfoMapper; - + @Resource + private final ApproverContainer container; /** * 查询公司信息 @@ -54,8 +56,10 @@ public class PsCompanyInfoServiceImpl implements IPsCompanyInfoService { */ @Override public PsCompanyInfoVo queryById(Long id){ - return baseMapper.selectVoById(id); + return baseMapper.selectVoCustomManagerById(id); } + + /** * 查询符合条件的公司信息列表 * @@ -74,7 +78,7 @@ public class PsCompanyInfoServiceImpl implements IPsCompanyInfoService { * @param bo 查询条件 * @return 公司信息列表 */ - public TableDataInfo queryPageList(PsCompanyQueryBo bo, PageQuery pageQuery){ + public TableDataInfo queryPageList(PsCompanyQueryBo bo, PageQuery pageQuery){ QueryWrapper lqw = Wrappers.query(); lqw.exists(StringUtils.isNotBlank(bo.getCustomManagerName()),"select 1 from sys_user su where su.user_id = cus.custom_manager and su.nick_name like '%"+bo.getCustomManagerName()+"%'"); lqw.eq(bo.getId() != null,"com.id",bo.getId()); @@ -83,7 +87,7 @@ public class PsCompanyInfoServiceImpl implements IPsCompanyInfoService { lqw.like(bo.getCompanyName() != null,"com.company_name",bo.getCompanyName()); lqw.like(bo.getCompanyName() != null,"com.company_name",bo.getCompanyName()); lqw.like(bo.getCustomIntroducer() != null,"cusi.custom_name",bo.getCustomIntroducer()); - Page result = baseMapper.selectPageList(pageQuery.build(), lqw); + Page result = baseMapper.selectPageList(pageQuery.build(), lqw); return TableDataInfo.build(result); } /** @@ -92,17 +96,40 @@ public class PsCompanyInfoServiceImpl implements IPsCompanyInfoService { * @param bo 查询条件 * @return 公司信息列表 */ - public TableDataInfo queryServiceCompany(PsCompanyQueryBo bo, PageQuery pageQuery){ + public TableDataInfo queryServiceCompany(PsCompanyQueryBo bo, PageQuery pageQuery){ QueryWrapper lqw = Wrappers.query(); lqw.exists(StringUtils.isNotBlank(bo.getCustomManagerName()),"select 1 from sys_user su where su.user_id = cus.custom_manager and su.nick_name like '%"+bo.getCustomManagerName()+"%'"); - lqw.eq(bo.getId() != null,"com.id",bo.getId()); + lqw.eq(bo.getId() != null,"com.id", bo.getId()); + lqw.eq("com.company_type", "2"); lqw.like(bo.getCustomName() != null,"cus.custom_name",bo.getCustomName()); lqw.like(bo.getCustomMobile() != null,"cus.custom_mobile",bo.getCustomMobile()); lqw.like(bo.getCompanyName() != null,"com.company_name",bo.getCompanyName()); lqw.eq(bo.getServiceStatus() != null,"com.service_status",bo.getServiceStatus()); lqw.exists(StringUtils.isNotBlank(bo.getFollowUser()),"select 1 from sys_user fsu where fsu.user_id = cf.user_id and fsu.nick_name like '%"+bo.getFollowUser()+"%'"); - Page result = baseMapper.selectPageList(pageQuery.build(), lqw); + StringBuilder sql = new StringBuilder("select 1 from ps_contract_business cb where cb.company_id = com.id "); + if (bo.getType() == 2){ //非托管 + sql.append("and business_type != '2'"); + }else if (bo.getType() == 3){ //托管代账 + sql.append("and business_type = '2' and is_proxy = '1'"); + }else if (bo.getType() == 4){ //托管不代账 + sql.append("and business_type = '2' and is_proxy = '2'"); + } + lqw.exists(bo.getType() != 1, sql.toString()); + Page result = baseMapper.selectPageList2(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + public TableDataInfo searchServiceCompany(String keyWorld){ + if (keyWorld == null || keyWorld.equals("")){ + return TableDataInfo.build(); + } + PageQuery pageQuery = new PageQuery(); + pageQuery.setPageSize(10); + QueryWrapper lqw = Wrappers.query(); + lqw.like("company_name", keyWorld); + lqw.eq("company_type", "2"); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); return TableDataInfo.build(result); } private LambdaQueryWrapper buildQueryWrapper(PsCompanyInfoBo bo) { @@ -140,7 +167,9 @@ public class PsCompanyInfoServiceImpl implements IPsCompanyInfoService { if (flag) { bo.setId(add.getId()); if(bo.getBusinessList() != null){//装填服务类型的公司id - bo.getBusinessList().forEach(b -> b.setCompanyId(add.getId())); + for (PsContractBusinessBo psContractBusinessBo : bo.getBusinessList()) { + psContractBusinessBo.setCompanyId(add.getId()); + } } } return flag; @@ -219,5 +248,14 @@ public class PsCompanyInfoServiceImpl implements IPsCompanyInfoService { return list; } - + /** + * 终止代账合作 + * + * @param serviceCompanyId + */ + public void terminationService(Long serviceCompanyId) { + //发起审批 + ApproverService service = container.getService(ApproverTypeEnum.TERMINATIONSERVICE.getCode()); + service.apply(serviceCompanyId + "", "",null, null); + } } 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 56f24a2..97a3a3f 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 @@ -62,6 +62,7 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService { private final IPsContractBusinessDetailService businessDetailService; @Resource private final IPsCompanyInfoService companyInfoService; + private final PsCompanyInfoMapper companyInfoMapper; @Resource private final IPsCustomInfoService customInfoService; @Resource @@ -116,7 +117,16 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService { //插入服务公司 for (PsCompanyInfoBo companyInfoBo : bo.getServiceCompanyInfoList()){ companyInfoBo.setCompanyType("2"); - companyInfoService.saveBo(companyInfoBo); + companyInfoBo.setCustomId(bo.getCustomId()); + if (companyInfoBo.getId() == null){ + companyInfoService.saveBo(companyInfoBo); + }else{ + PsCompanyInfo update = MapstructUtils.convert(bo, PsCompanyInfo.class); + companyInfoMapper.updateById(update); + for (PsContractBusinessBo psContractBusinessBo : companyInfoBo.getBusinessList()) { + psContractBusinessBo.setCompanyId(companyInfoBo.getId()); + } + } for (PsContractBusinessBo psContractBusinessBo : companyInfoBo.getBusinessList()) { psContractBusinessBo.setStartDate(companyInfoBo.getStartServiceDate()); @@ -302,28 +312,112 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService { /** * 根据合同编码修改合同信息(开启事务) * - * @param bo 合同信息 + * @param updateBo 合同信息 * @return 合同基本信息 */ @Transactional - public boolean updateContractByCode(PsContractInfoBo bo){ + public boolean updateContractByCode(PsContractInfoBo updateBo){ //1获取合同详情 - PsContractInfoVo src = queryContractByCode(bo.getContractCode()); + PsContractInfoVo old = queryContractByCode(updateBo.getContractCode()); //2校验状态 - beforeUpdateValid(bo, src); - if(bo.getCompanyInfoBo().getCustomId() == null){ - bo.getCompanyInfoBo().setCustomId(bo.getCustomId()); + beforeUpdateValid(updateBo, old); + + //签约公司填充 客户id + if(updateBo.getCompanyInfoBo().getCustomId() == null){ + updateBo.getCompanyInfoBo().setCustomId(updateBo.getCustomId()); } - //3.插入公司信息 - companyInfoService.saveBo(bo.getCompanyInfoBo()); - //插入服务公司 - for (PsCompanyInfoBo companyInfoBo : bo.getServiceCompanyInfoList()){ + + + + //5.已回款之后的合同修改后走审批 + if(!ContractStatusEnum.isReturn(old.getContractStatus())){ + update(old, updateBo); + return true; + } + + //发起审批 + 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); + + return true; + } + + public void update(PsContractInfoVo old, PsContractInfoBo updateBo){ + if (old.getCompanyId() == null){ + if (updateBo.getCompanyInfoBo().getId() != null){ + //签约主体个人转公司,修改公司信息 + //3.插入公司信息 + companyInfoService.saveBo(updateBo.getCompanyInfoBo()); + }else{ + //签约人信息变化, 不做公司信息修改, 只更新合同表 + } + }else{ + if (updateBo.getCompanyInfoBo().getId() != null){ + //签约公司信息变更,修改公司信息 + //3.插入公司信息 + companyInfoService.saveBo(updateBo.getCompanyInfoBo()); + }else{ + //签约主体公司转个人, 不做公司信息修改, 只更新合同表 + } + } + + Map oldCompanyMap = new HashMap<>(); + for (PsCompanyInfoVo psCompanyInfoVo : old.getPsCompanySerivceVo()) { + oldCompanyMap.put(psCompanyInfoVo.getId(), psCompanyInfoVo); + } + List addCompany = new ArrayList<>(); + List updateCompany = new ArrayList<>(); + for (PsCompanyInfoBo companyInfoBo : updateBo.getServiceCompanyInfoList()){ + if (companyInfoBo.getId() == null){ + addCompany.add(companyInfoBo); + continue; + } + if (!oldCompanyMap.containsKey(companyInfoBo.getId())){ + addCompany.add(companyInfoBo); + continue; + } + updateCompany.add(companyInfoBo); + oldCompanyMap.remove(companyInfoBo.getId()); + } + + for (PsCompanyInfoBo psCompanyInfoBo : updateCompany) { + //服务公司信息修改、、服务项目修改 + + } + for (PsCompanyInfoVo psCompanyInfoBo : oldCompanyMap.values()) { + //服务公司删,则删任务,重新校验合同状态,可能已完成 + QueryWrapper qw = Wrappers.query(); + //删除标志 + qw.eq( "info.del_flag", 0);//删除标志 + + taskMainMapper.delete(qw); +// taskAppointMapper.delete(); + } + for (PsCompanyInfoBo companyInfoBo : addCompany) { + //服务公司加,增加任务,重新计算合同是待分配还是已分配 companyInfoBo.setCompanyType("2"); - companyInfoService.saveBo(companyInfoBo); + companyInfoBo.setCustomId(updateBo.getCustomId()); + if (companyInfoBo.getId() == null){ + companyInfoService.saveBo(companyInfoBo); + }else{ + PsCompanyInfo update = MapstructUtils.convert(updateBo, PsCompanyInfo.class); + companyInfoMapper.updateById(update); + for (PsContractBusinessBo psContractBusinessBo : companyInfoBo.getBusinessList()) { + psContractBusinessBo.setCompanyId(companyInfoBo.getId()); + } + } } + + + + //4.装填合同信息 - List list = bo.getServiceCompanyInfoList().stream().flatMap(com -> com.getBusinessList().stream()).toList(); - list.forEach(item->{ + List list = updateBo.getServiceCompanyInfoList().stream().flatMap(com -> com.getBusinessList().stream()).toList(); + for (PsContractBusinessBo item : list) { BigDecimal mony = BigDecimal.ZERO; if(CollectionUtils.isNotEmpty(item.getDetailBos())){ mony = item.getDetailBos().stream().map(PsContractBusinessDetailBo::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add); @@ -332,31 +426,25 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService { if(mony.compareTo(BigDecimal.ZERO) > 0){ item.setBusinessAmount(mony); } - }); - BigDecimal sum = list.stream().map(PsContractBusinessBo::getBusinessAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add); - bo.setContractAmount(sum);//合同总金额 - - //5.已回款之后的合同修改后走审批 - if(ContractStatusEnum.isReturn(src.getContractStatus())){ - bo.setContractStatusCode(src.getContractStatus()); - //发起审批 - ApproverService service = container.getService(ApproverTypeEnum.UPDATE.getCode()); - service.apply(bo.getContractCode(),bo.getContractCode(),bo.getUpdateDesc(), JSON.toJSONString(bo)); - PsContractInfo info = new PsContractInfo(); - info.setContractCode(bo.getContractCode()); - info.setContractStatus(ContractStatusEnum.UPDATEAPPROVER.getCode()); - updateByCode(info); - }else{ - //修改合同 - PsContractInfo add = new PsContractInfo(); - MapstructUtils.convert(bo, add); - add.setCompanyId(bo.getCompanyInfoBo().getId());//公司id - this.updateByCode(add); - //4.删除所有服务类型和服务项目,.插入服务类型 - businessService.saveList(list,add.getContractCode()); - makePdf(add, bo,true); } - return true; + BigDecimal sum = list.stream().map(PsContractBusinessBo::getBusinessAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add); + updateBo.setContractAmount(sum);//合同总金额 + + //重新计算当前的合同状态,待回款、待处理、处理中、已完结、已作废;;;已完结和处理中可能会变成待处理 + if(ContractStatusEnum.isReturn(old.getContractStatus())){ + + + } + + + PsContractInfo add = new PsContractInfo(); + MapstructUtils.convert(updateBo, add); + add.setCompanyId(updateBo.getCompanyInfoBo().getId());//公司id + this.updateByCode(add); + //4.删除所有服务类型和服务项目,.插入服务类型 + businessService.saveList(list, add.getContractCode()); + makePdf(add, updateBo,true); + } /** @@ -537,11 +625,10 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService { * @param businessType 服务类别 * @param businessProject 服务项目 */ - public void freeWork(String contractCode,String businessType,String businessProject) { - PsContractInfoVo info = this.queryContractByCode(contractCode); + public void freeWork(String serviceCompanyId,String businessType,String businessProject) { //发起审批 ApproverService service = container.getService(ApproverTypeEnum.FREE.getCode()); - service.apply(info.getContractCode(),info.getContractCode(),null, businessType+"@@"+businessProject); + service.apply(serviceCompanyId, "",null, businessType+"@@"+businessProject); } /** @@ -582,7 +669,7 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService { } else { //合同金额< 8000元,无需回传合同,【电子签章】申请成功后,必须回传合同 if (CommonStatusEnum.ING.getCode().equals(info.getSignStatus()) - || info.getSignStatus().equals(CommonStatusEnum.SUCCESS.getCode())) {//申请了电子章 + || CommonStatusEnum.SUCCESS.getCode().equals(info.getSignStatus())) {//申请了电子章 rollbackFlag = false; } } @@ -597,7 +684,7 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService { } else { //合同金额< 8000元,无需回传合同,【电子签章】申请成功后,必须回传合同 if (CommonStatusEnum.ING.getCode().equals(info.getSignStatus()) - || info.getSignStatus().equals(CommonStatusEnum.SUCCESS.getCode())) {//申请了电子章 + || CommonStatusEnum.SUCCESS.getCode().equals(info.getSignStatus())) {//申请了电子章 rollbackFlag = false; } } @@ -628,7 +715,7 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService { * 根据合同编码查询服务进度 * @param contractCode 合同编码 */ - public ServiceScheduleVo queryScheduleByCode(String contractCode){ + public ServiceScheduleVo queryScheduleByCode(String contractCode, Long serviceCompanyId){ PsContractInfo contractInfo = this.queryByCode(null, contractCode, null).get(0); PsCustomInfo customer = customInfoService.listById(contractInfo.getCustomId()); @@ -647,13 +734,14 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService { //第一笔回款 serviceScheduleVo.setFirstPay(CollectionUtils.isNotEmpty(payVoList)?payVoList.get(0).getCreateBy():null); - PsTaskMain task = taskMainService.queryByContractCode(contractCode); + PsTaskMain task = taskMainService.queryByContractCodeAndServiceCompanyId(contractCode, serviceCompanyId); List appointList = new ArrayList<>(); if(task != null){ appointList = taskAppointMapper.selectList(Wrappers.lambdaQuery() .eq(PsTaskAppoint::getContractCode, contractCode) .ne(PsTaskAppoint::getAppointStatus,AppointStatusEnum.CANCEL.getCode()) - .eq(PsTaskAppoint::getTaskId, task.getId())); + .eq(PsTaskAppoint::getTaskId, task.getId()) + ); } //派单者 @@ -661,20 +749,11 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService { if(CollectionUtils.isNotEmpty(appointList)){ appointList.forEach(item->{ if(StringUtils.equals("1",item.getAppointType())){ - //内勤 - serviceScheduleVo.setIn(item.getExecutor()); - //内勤 - serviceScheduleVo.setInStatus(StringUtils.equals(AppointStatusEnum.FINISH.getCode(),item.getAppointStatus())?1:0); + serviceScheduleVo.addIn(new ServiceScheduleVo.UserAndStatus(item.getExecutor(), StringUtils.equals(AppointStatusEnum.FINISH.getCode(),item.getAppointStatus())?1:0)); }else if(StringUtils.equals("2",item.getAppointType())){ - //外勤 - serviceScheduleVo.setOut(item.getExecutor()); - //外勤 - serviceScheduleVo.setOutStatus(StringUtils.equals(AppointStatusEnum.FINISH.getCode(),item.getAppointStatus())?1:0); + serviceScheduleVo.addOut(new ServiceScheduleVo.UserAndStatus(item.getExecutor(), StringUtils.equals(AppointStatusEnum.FINISH.getCode(),item.getAppointStatus())?1:0)); }else{ - //特勤 - serviceScheduleVo.setSecret(item.getExecutor()); - //特勤 - serviceScheduleVo.setSecretStatus(StringUtils.equals(AppointStatusEnum.FINISH.getCode(),item.getAppointStatus())?1:0); + serviceScheduleVo.addSecret(new ServiceScheduleVo.UserAndStatus(item.getExecutor(), StringUtils.equals(AppointStatusEnum.FINISH.getCode(),item.getAppointStatus())?1:0)); } }); } 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 343cc04..e6bcc49 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 @@ -136,7 +136,7 @@ public class PsContractPayServiceImpl implements IPsContractPayService { baseMapper.insert(pay); //发起审批 ApproverService service = container.getService(ApproverTypeEnum.RETURN.getCode()); - service.apply(pay.getId()+"",pay.getContractCode(),payBo.getPayDesc(), pay.getMoney().stripTrailingZeros().toPlainString()); + service.apply(pay.getId() + "", pay.getContractCode(), payBo.getPayDesc(), pay.getMoney().stripTrailingZeros().toPlainString()); } /** * 根据主键id查询回款记录 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 ceca7ce..54a5583 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 @@ -155,7 +155,8 @@ public class PsCustomInfoServiceImpl implements IPsCustomInfoService { //查询公司信息 List companyInfoVos = companyInfoMapper.selectVoList(Wrappers.lambdaQuery() .in(PsCompanyInfo::getCustomId, ids) - .eq(PsCompanyInfo::getDelFlag, 0)); + .eq(PsCompanyInfo::getDelFlag, 0) + .eq(PsCompanyInfo::getCompanyType, "1")); Map> id_companyMap = new HashMap<>(); if(CollectionUtils.isNotEmpty(companyInfoVos)){ //分组 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 b1803bd..fea96e4 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 @@ -121,8 +121,14 @@ public class PsTaskServiceImpl implements IPsTaskService { vo.setTaskStatusDesc(approverRecordService.getLastFail(vo.getId() + "",null,List.of(ApproverTypeEnum.TASKCANCE.getCode()))); //装填服务公司信息 - PsCompanyInfoVo serviceCompany = companyInfoService.queryById(vo.getServiceCompanyId()); - vo.setPsCompanySerivceVo(serviceCompany); + if (vo.getServiceCompanyId() != null){ + PsCompanyInfoVo serviceCompany = companyInfoService.queryById(vo.getServiceCompanyId()); + vo.setPsCompanySerivceVo(serviceCompany); + } + if (vo.getTaskType().equals("2")){ + vo.setBusinessTypeName(vo.getBusinessType()); + } + } return TableDataInfo.build(page); } @@ -151,9 +157,20 @@ public class PsTaskServiceImpl implements IPsTaskService { vo.setNumOfDat(DateUtils.calWorkDate(vo.getStartDate(),new Date())); } vo.setTaskStatusDesc(approverRecordService.getLastFail(vo.getId()+"",null,List.of(ApproverTypeEnum.TASKFINISH.getCode()))); + + //装填服务公司信息 + if (vo.getServiceCompanyId() != null){ + PsCompanyInfoVo serviceCompany = companyInfoService.queryById(vo.getServiceCompanyId()); + vo.setPsCompanySerivceVo(serviceCompany); + } + if ("2".equals(vo.getTaskType())){ + vo.setBusinessTypeName(vo.getBusinessType()); + } + } return TableDataInfo.build(page); } + /** * 查询主任务进度 * @@ -188,21 +205,24 @@ public class PsTaskServiceImpl implements IPsTaskService { public PsTaskMainVo queryInfo(String id){ //查询任务信息 PsTaskMain mainTask = baseMapper.selectById(id); - Long customId ; + Long customId = 0l; Long companyId ; if(mainTask == null){ - PsContractInfo con = contractInfoMapper.selectOne(Wrappers.lambdaQuery().eq(PsContractInfo::getContractCode, id).last("limit 1")); - customId = con.getCustomId(); - companyId = con.getCompanyId(); +// PsContractInfo con = contractInfoMapper.selectOne(Wrappers.lambdaQuery().eq(PsContractInfo::getContractCode, id).last("limit 1")); + companyId = Long.valueOf(id); + PsCompanyInfoVo psCompanyInfoVo = companyInfoService.queryById(companyId); + if (psCompanyInfoVo != null){ + customId = psCompanyInfoVo.getCustomId(); + } }else{ customId = mainTask.getCustomId(); - companyId = mainTask.getCompanyId(); + companyId = mainTask.getServiceCompanyId(); } //查询公司信息 PsCompanyInfoVo companyInfoVo = companyInfoService.queryById(companyId); //查询资料信息 - List list = mediaService.queryMediaList(customId,companyId); + List list = mediaService.queryMediaList(customId, companyId); PsTaskMainVo psTaskMainVo = new PsTaskMainVo(); psTaskMainVo.setCompanyInfoVo(companyInfoVo); psTaskMainVo.setTaskMediaVoList(list); @@ -218,6 +238,13 @@ public class PsTaskServiceImpl implements IPsTaskService { return baseMapper.selectOne(Wrappers.lambdaQuery().eq(PsTaskMain::getContractCode, contractCode) .eq(PsTaskMain::getTaskType,TaskTypeEnum.CONTRACT.getCode()).ne(PsTaskMain::getTaskStatus,TaskStatusEnum.CANCEL.getCode())); } + + public PsTaskMain queryByContractCodeAndServiceCompanyId(String contractCode, Long serviceCompanyId){ + return baseMapper.selectOne(Wrappers.lambdaQuery().eq(PsTaskMain::getContractCode, contractCode) + .eq(PsTaskMain::getTaskType, TaskTypeEnum.CONTRACT.getCode()) + .eq(PsTaskMain::getServiceCompanyId, serviceCompanyId) + .ne(PsTaskMain::getTaskStatus, TaskStatusEnum.CANCEL.getCode())); + } /** * 上传资料和公司信息 * @@ -232,10 +259,10 @@ public class PsTaskServiceImpl implements IPsTaskService { Long companyId ; if(save.getId() != null){ PsTaskMain taskMain = baseMapper.selectById(save.getId()); - if(!TaskStatusEnum.canUpload(taskMain.getTaskStatus())){ - log.error("任务已完成,无法修改"); - throw new ServiceException("任务已完成,无法修改"); - } +// if(!TaskStatusEnum.canUpload(taskMain.getTaskStatus())){ +// log.error("任务已完成,无法修改"); +// throw new ServiceException("任务已完成,无法修改"); +// } customerId=taskMain.getCustomId(); companyId=taskMain.getCompanyId(); }else if(StringUtils.isNotBlank(save.getContractCode())){ 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 538e49b..2fbd363 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 @@ -3,13 +3,27 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - select app.* , (select pay_certification from ps_contract_pay pca where pca.id = app.business_id and app.business_type = 'pay' ) as pay_certification , info.pdf_id , info.custom_manager - , com.id com_id - , com.company_name + , info.contact_person_name + , info.contact_person_phone + , info.contact_person_idcard + , com.id company_id + , 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 , cus.id cus_id , cus.custom_name , cus.custom_mobile @@ -17,7 +31,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" , info.contract_amount , (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_amount + , info.contract_status , (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 @@ -28,6 +42,24 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ${ew.getCustomSqlSegment} + + + + + select + com.* + ,cus.custom_manager + from ps_company_info com + left join ps_custom_info cus on cus.id = com.custom_id + where com.id = ${id} + + + + - + @@ -78,28 +74,32 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ${ew.getCustomSqlSegment} + + diff --git a/茅厕酒业有限公司-2024092414386846.pdf b/茅厕酒业有限公司-2024092414386846.pdf deleted file mode 100644 index be5830c..0000000 --- a/茅厕酒业有限公司-2024092414386846.pdf +++ /dev/null @@ -1,2 +0,0 @@ -%PDF-1.4 -%