This commit is contained in:
mx 2024-09-27 17:55:40 +08:00
parent 38cf44de52
commit 40631b8bb7
30 changed files with 660 additions and 190 deletions

View File

@ -59,7 +59,7 @@ public class PsCompanyInfoController extends BaseController {
*/
@SaCheckPermission("business:companyInfo:list")
@GetMapping("/pageList")
public TableDataInfo<PsCompanyQueryVo> pageList(PsCompanyQueryBo bo, PageQuery pageQuery) {
public TableDataInfo<PsCompanyInfoVo> 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<PsCompanyQueryVo> serviceList(PsCompanyQueryBo queryBo, PageQuery pageQuery) {
public TableDataInfo<PsCompanyInfoVo> serviceList(PsCompanyQueryBo queryBo, PageQuery pageQuery) {
return psCompanyInfoService.queryServiceCompany(queryBo, pageQuery);
}
@SaCheckPermission("business:customInfo:list")
@Log(title = "服务公司列表" )
@GetMapping("/searchServiceCompany")
public TableDataInfo<PsCompanyInfoVo> searchServiceCompany(@RequestParam("keyWorld") String keyWorld) {
return psCompanyInfoService.searchServiceCompany(keyWorld);
}
/**
* 停止代账
*/
@SaCheckPermission("business:customInfo:list")
@Log(title = "停止代账" )
@GetMapping("/applyTerminationService")
public R<Void> 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));
}
}

View File

@ -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<Void> freeWork(@NotNull String contractCode,@NotNull String businessType,@NotNull String businessProject) {
psContractInfoService.freeWork(contractCode,businessType,businessProject);
public R<Void> 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<ServiceScheduleVo> queryScheduleByCode(@NotBlank String contractCode) {
return R.ok(psContractInfoService.queryScheduleByCode(contractCode));
public R<ServiceScheduleVo> queryScheduleByCode(@NotBlank String contractCode, @NotBlank Long serviceCompanyId) {
return R.ok(psContractInfoService.queryScheduleByCode(contractCode, serviceCompanyId));
}
//

View File

@ -136,7 +136,7 @@ public class PsCustomController extends BaseController {
/**
* 已完成客户,, 废弃
* 已完成客户
* @param queryBo 查询
* @return
*/

View File

@ -58,4 +58,9 @@ public class PsCompanyQueryBo {
*/
private String followUser;
/**
* 1全部 2非托管服务 3 托管代账 4托管不代账
*/
private Integer type;
}

View File

@ -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<PsCompanyInfoVo> 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;
}

View File

@ -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;
}

View File

@ -186,7 +186,7 @@ public class PsContractInfoVo implements Serializable {
private String isOld;
/**
* 是否续费
* 是否续费0新签 1续费
*/
private String isDue;

View File

@ -160,7 +160,6 @@ public class PsTaskMainVo implements Serializable {
*/
private PsCompanyInfoVo psCompanySerivceVo;
/**
* 服务公司id
*/

View File

@ -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<UserAndStatus> in = new ArrayList<>();
/**
* 外勤
*/
@Translation(type = TransConstant.USER_ID_TO_NICKNAME)
private Long out;
/**
* 外勤是否已完成1是0否
*/
private Integer outStatus;
List<UserAndStatus> out = new ArrayList<>();
/**
* 特勤
*/
@Translation(type = TransConstant.USER_ID_TO_NICKNAME)
private Long secret;
/**
* 特勤是否已完成1是0否
*/
private Integer secretStatus;
List<UserAndStatus> 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);
}
}

View File

@ -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;
}

View File

@ -19,6 +19,7 @@ import org.apache.ibatis.annotations.Param;
public interface PsApproverRecordMapper extends BaseMapperPlus<PsApproverRecord, PsApproverRecordVo> {
Page<PsApproverRecordVo> selectPageApproverList(@Param("page") Page<PsApproverRecord> page, @Param(Constants.WRAPPER) Wrapper<PsApproverRecord> queryWrapper);
Page<PsApproverRecordVo> selectPageFreeApproverList(@Param("page") Page<PsApproverRecord> page, @Param(Constants.WRAPPER) Wrapper<PsApproverRecord> queryWrapper);
Page<PsApproverRecordVo> selectPagePublicList(@Param("page") Page<PsApproverRecord> page, @Param(Constants.WRAPPER) Wrapper<PsApproverRecord> queryWrapper);
}

View File

@ -21,9 +21,12 @@ import java.util.List;
*/
public interface PsCompanyInfoMapper extends BaseMapperPlus<PsCompanyInfo, PsCompanyInfoVo> {
Page<PsCompanyQueryVo> selectPageList(@Param("page") Page<PsApproverRecord> page, @Param(Constants.WRAPPER) Wrapper<PsCompanyInfo> queryWrapper);
Page<PsCompanyInfoVo> selectPageList(@Param("page") Page<PsApproverRecord> page, @Param(Constants.WRAPPER) Wrapper<PsCompanyInfo> queryWrapper);
Page<PsCompanyInfoVo> selectPageList2(@Param("page") Page<PsApproverRecord> page, @Param(Constants.WRAPPER) Wrapper<PsCompanyInfo> queryWrapper);
List<PsCompanyInfoVo> selectServiceCompanyList(@Param(Constants.WRAPPER) Wrapper<PsCompanyInfoVo> queryWrapper);
PsCompanyInfoVo selectVoCustomManagerById(@Param("id")Long id);
}

View File

@ -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<PsTaskMain> {
Page<PsTaskMainVo> queryTaskPageList(@Param("page") Page<PsTaskMain> page, @Param(Constants.WRAPPER) Wrapper<PsTaskMain> queryWrapper);
Page<PsTaskMainVo> queryInvoiceTaskPageList(@Param("page") Page<PsTaskMain> page, @Param(Constants.WRAPPER) Wrapper<PsTaskMain> queryWrapper);
@ -35,4 +39,8 @@ public interface PsTaskMainMapper extends BaseMapper<PsTaskMain> {
@DataColumn(key = "userName", value = "appo.executor")
})
Page<PsTaskMainVo> queryChildTaskPageList(@Param("page") Page<PsTaskMain> page, @Param(Constants.WRAPPER) Wrapper<PsTaskMain> queryWrapper);
List<PsTaskAppointVo> queryByMainId(@Param("mainId") Long mainId);
}

View File

@ -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<PsCompanyQueryVo> queryPageList(PsCompanyQueryBo bo, PageQuery pageQuery);
TableDataInfo<PsCompanyInfoVo> queryPageList(PsCompanyQueryBo bo, PageQuery pageQuery);
TableDataInfo<PsCompanyQueryVo> queryServiceCompany(PsCompanyQueryBo bo, PageQuery pageQuery);
TableDataInfo<PsCompanyInfoVo> queryServiceCompany(PsCompanyQueryBo bo, PageQuery pageQuery);
TableDataInfo<PsCompanyInfoVo> searchServiceCompany(String keyWorld);
/**
* 新增公司信息
@ -80,4 +80,6 @@ public interface IPsCompanyInfoService {
* 根据合同编码查询服务公司信息
*/
List<PsCompanyInfoVo> getServiceCompany(String controctCode);
void terminationService(Long serviceCompanyId);
}

View File

@ -132,7 +132,7 @@ public interface IPsContractInfoService {
* 根据合同编码查询服务进度
* @param contractCode 合同编码
*/
ServiceScheduleVo queryScheduleByCode(String contractCode);
ServiceScheduleVo queryScheduleByCode(String contractCode, Long serviceCompanyId);
/**
* 全部退款回退合同状态

View File

@ -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);
/**
* 上传资料和公司信息
*

View File

@ -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
@ -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<PsApproverRecordVo> res = recordMapper.selectPageApproverList(pageQuery.build(), lqw);
if(CollectionUtils.isNotEmpty(res.getRecords())){
res.getRecords().forEach(item->{
if (item.getContractAmount() != null)
item.setResidualMoney(item.getContractAmount().subtract(item.getPayMoney()));
//装填回款周期
List<PsContractPayVo> 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<PsCompanyInfoVo> list = companyInfoService.getServiceCompany(item.getContractCode());
item.setServicePsCompanyInfoVo(list);
});
}
return res;

View File

@ -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<PsApproverRecordVo> queryList(PsApproverRecordBo bo, PageQuery pageQuery){
QueryWrapper<PsApproverRecord> lqw = Wrappers.<PsApproverRecord>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<PsApproverRecordVo> 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<PsContractPayVo> 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;
}
}

View File

@ -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());
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());
updateInfo.setContractStatus(ContractStatusEnum.RETURN.getCode());
psContractInfoService.updateByCode(updateInfo);
}
}
List<PsContractPayVo> list = payService.queryListByContractCode(info.getContractCode(), PayBuinessStatusEnum.PAY.getCode(), PayStatusEnum.SUCCESS);
// List<PsContractPayVo> 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

View File

@ -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<PsApproverRecordVo> queryList(PsApproverRecordBo bo, PageQuery pageQuery){
Page<PsApproverRecordVo> res = super.queryList(bo, pageQuery);
for (PsApproverRecordVo record : res.getRecords()) {
PsContractPayVo psContractPayVo = payMapper.selectVoById(record.getBusinessId());
record.setPsContractPayVo(psContractPayVo);
}
return res;
}
}

View File

@ -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) {
}
}

View File

@ -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<PsCompanyQueryVo> queryPageList(PsCompanyQueryBo bo, PageQuery pageQuery){
public TableDataInfo<PsCompanyInfoVo> queryPageList(PsCompanyQueryBo bo, PageQuery pageQuery){
QueryWrapper<PsCompanyInfo> 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<PsCompanyQueryVo> result = baseMapper.selectPageList(pageQuery.build(), lqw);
Page<PsCompanyInfoVo> result = baseMapper.selectPageList(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
@ -92,17 +96,40 @@ public class PsCompanyInfoServiceImpl implements IPsCompanyInfoService {
* @param bo 查询条件
* @return 公司信息列表
*/
public TableDataInfo<PsCompanyQueryVo> queryServiceCompany(PsCompanyQueryBo bo, PageQuery pageQuery){
public TableDataInfo<PsCompanyInfoVo> queryServiceCompany(PsCompanyQueryBo bo, PageQuery pageQuery){
QueryWrapper<PsCompanyInfo> 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("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<PsCompanyQueryVo> 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<PsCompanyInfoVo> result = baseMapper.selectPageList2(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
public TableDataInfo<PsCompanyInfoVo> searchServiceCompany(String keyWorld){
if (keyWorld == null || keyWorld.equals("")){
return TableDataInfo.build();
}
PageQuery pageQuery = new PageQuery();
pageQuery.setPageSize(10);
QueryWrapper<PsCompanyInfo> lqw = Wrappers.query();
lqw.like("company_name", keyWorld);
lqw.eq("company_type", "2");
Page<PsCompanyInfoVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
private LambdaQueryWrapper<PsCompanyInfo> 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);
}
}

View File

@ -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");
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());
}
//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(bo.getCompanyInfoBo());
//插入服务公司
for (PsCompanyInfoBo companyInfoBo : bo.getServiceCompanyInfoList()){
companyInfoBo.setCompanyType("2");
companyInfoService.saveBo(companyInfoBo);
companyInfoService.saveBo(updateBo.getCompanyInfoBo());
}else{
//签约人信息变化 不做公司信息修改 只更新合同表
}
}else{
if (updateBo.getCompanyInfoBo().getId() != null){
//签约公司信息变更修改公司信息
//3.插入公司信息
companyInfoService.saveBo(updateBo.getCompanyInfoBo());
}else{
//签约主体公司转个人 不做公司信息修改 只更新合同表
}
}
Map<Long, PsCompanyInfoVo> oldCompanyMap = new HashMap<>();
for (PsCompanyInfoVo psCompanyInfoVo : old.getPsCompanySerivceVo()) {
oldCompanyMap.put(psCompanyInfoVo.getId(), psCompanyInfoVo);
}
List<PsCompanyInfoBo> addCompany = new ArrayList<>();
List<PsCompanyInfoBo> 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<PsTaskMain> qw = Wrappers.query();
//删除标志
qw.eq( "info.del_flag", 0);//删除标志
taskMainMapper.delete(qw);
// taskAppointMapper.delete();
}
for (PsCompanyInfoBo companyInfoBo : addCompany) {
//服务公司加增加任务重新计算合同是待分配还是已分配
companyInfoBo.setCompanyType("2");
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<PsContractBusinessBo> list = bo.getServiceCompanyInfoList().stream().flatMap(com -> com.getBusinessList().stream()).toList();
list.forEach(item->{
List<PsContractBusinessBo> 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);//合同总金额
updateBo.setContractAmount(sum);//合同总金额
//重新计算当前的合同状态待回款待处理处理中已完结已作废已完结和处理中可能会变成待处理
if(ContractStatusEnum.isReturn(old.getContractStatus())){
}
//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
MapstructUtils.convert(updateBo, add);
add.setCompanyId(updateBo.getCompanyInfoBo().getId());//公司id
this.updateByCode(add);
//4.删除所有服务类型和服务项目,.插入服务类型
businessService.saveList(list, add.getContractCode());
makePdf(add, bo,true);
}
return true;
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<PsTaskAppoint> appointList = new ArrayList<>();
if(task != null){
appointList = taskAppointMapper.selectList(Wrappers.<PsTaskAppoint>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));
}
});
}

View File

@ -155,7 +155,8 @@ public class PsCustomInfoServiceImpl implements IPsCustomInfoService {
//查询公司信息
List<PsCompanyInfoVo> companyInfoVos = companyInfoMapper.selectVoList(Wrappers.<PsCompanyInfo>lambdaQuery()
.in(PsCompanyInfo::getCustomId, ids)
.eq(PsCompanyInfo::getDelFlag, 0));
.eq(PsCompanyInfo::getDelFlag, 0)
.eq(PsCompanyInfo::getCompanyType, "1"));
Map<Long, List<PsCompanyInfoVo>> id_companyMap = new HashMap<>();
if(CollectionUtils.isNotEmpty(companyInfoVos)){
//分组

View File

@ -121,9 +121,15 @@ public class PsTaskServiceImpl implements IPsTaskService {
vo.setTaskStatusDesc(approverRecordService.getLastFail(vo.getId() + "",null,List.of(ApproverTypeEnum.TASKCANCE.getCode())));
//装填服务公司信息
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,15 +205,18 @@ 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.<PsContractInfo>lambdaQuery().eq(PsContractInfo::getContractCode, id).last("limit 1"));
customId = con.getCustomId();
companyId = con.getCompanyId();
// PsContractInfo con = contractInfoMapper.selectOne(Wrappers.<PsContractInfo>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();
}
//查询公司信息
@ -218,6 +238,13 @@ public class PsTaskServiceImpl implements IPsTaskService {
return baseMapper.selectOne(Wrappers.<PsTaskMain>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.<PsTaskMain>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())){

View File

@ -3,13 +3,27 @@
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.pusong.business.mapper.PsApproverRecordMapper">
<select id="selectPageApproverList" resultType="com.pusong.business.domain.vo.PsApproverRecordVo">
<resultMap id="resultMap" type="com.pusong.business.domain.vo.PsApproverRecordVo">
<collection columnPrefix="com_" property="psCompanyInfoVo" ofType="com.pusong.business.domain.vo.PsCompanyInfoVo" >
</collection>
</resultMap>
<select id="selectPageApproverList" resultMap="resultMap">
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>
<select id="selectPageFreeApproverList" resultMap="resultMap">
select app.*
, (select pay_certification from ps_contract_pay pca where pca.id = app.business_id and app.business_type = 'pay' ) as pay_certification
, com.id com_id
, com.company_name com_company_name
, com.company_adress com_company_adress
, cus.id cus_id
, cus.custom_name
, cus.custom_mobile
, cus.custom_manager
from ps_approver_record app
left join ps_company_info com on app.business_id = com.id
left join ps_custom_info cus on cus.id = com.custom_id
${ew.getCustomSqlSegment}
</select>
<select id="selectPagePublicList" resultType="com.pusong.business.domain.vo.PsApproverRecordVo">
select app.*
, cus.custom_source

View File

@ -19,6 +19,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap>
<select id="selectVoCustomManagerById" resultType="com.pusong.business.domain.vo.PsCompanyInfoVo">
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}
</select>
<select id="selectPageList" resultMap="serviceCompanyServiceResult">
select
com.*,
@ -36,7 +47,22 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
${ew.getCustomSqlSegment}
</select>
<select id="selectPageList2" resultMap="serviceCompanyServiceResult">
select
com.*,
cus.custom_manager,
cus.custom_name,
cus.custom_mobile,
cusi.custom_name custom_introducer,
usr.user_id fu_user_id,
usr.nick_name fu_nick_name
from ps_company_info com
left join ps_custom_info cus on com.custom_id = cus.id
left join ps_custom_info cusi on cus.custom_introducer = cusi.id
left join ps_company_follow cf on com.id = cf.company_id
left join sys_user usr on cf.user_id = usr.user_id
${ew.getCustomSqlSegment}
</select>
<select id="selectServiceCompanyList" resultMap="serviceCompanyServiceResult">
select com.*,

View File

@ -9,23 +9,24 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</collection>
<collection columnPrefix="com_" property="companyInfoVo" ofType="com.pusong.business.domain.vo.PsCompanyInfoVo" >
</collection>
<collection columnPrefix="scom_" property="psCompanySerivceVo" ofType="com.pusong.business.domain.vo.PsCompanyInfoVo" >
</collection>
<collection columnPrefix="cus_" property="customInfoVo" ofType="com.pusong.business.domain.vo.PsCustomInfoVo" >
</collection>
<collection columnPrefix="appoint_" property="psTaskAppointVoList" ofType="com.pusong.business.domain.vo.PsTaskAppointVo" >
</collection>
<collection property="psTaskAppointVoList" javaType="ArrayList"
column="main_id" ofType="com.pusong.business.domain.vo.PsTaskAppointVo"
select="queryByMainId" fetchType="eager">
</collection>
</resultMap>
<sql id="queryTask">
select main.id,
main.task_type,
main.start_date,
main.task_status,
main.contract_code,
main.invoice,
main.extend,
main.comment,
main.service_company_id,
select main.*,
main.id main_id,
con.is_proxy con_is_proxy,
con.apply_date con_apply_date,
con.is_due con_is_due,
@ -48,11 +49,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
cus.id cus_id,
cus.custom_name cus_custom_name ,
cus.custom_mobile cus_custom_mobile,
appoint.executor appoint_executor,
appoint.task_desc appoint_task_desc,
appoint.task_content_desc appoint_task_content_desc,
appoint.appoint_type appoint_appoint_type,
appoint.appoint_status appoint_appoint_status,
(select pta.id from ps_task_appoint pta where pta.task_id=main.id and pta.appoint_type=1 and pta.appoint_status != '50' and pta.del_flag = '0' order by id desc limit 0,1) as inAppo,
(select pta.id from ps_task_appoint pta where pta.task_id=main.id and pta.appoint_type=2 and pta.appoint_status != '50' and pta.del_flag = '0' order by id desc limit 0,1) as outAppo,
(select pta.id from ps_task_appoint pta where pta.task_id=main.id and pta.appoint_type=3 and pta.appoint_status != '50' and pta.del_flag = '0' order by id desc limit 0,1) as secAppo,
@ -68,7 +65,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
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_task_appoint appoint on appoint.task_id = main.id and appoint.appoint_status != '50' and appoint.del_flag = '0'
</sql>
<select id="queryTaskPageList" resultMap="taskMainResult">
<include refid="queryTask"/>
@ -78,28 +74,32 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<include refid="queryTask"/>
${ew.getCustomSqlSegment}
</select>
<select id="queryByMainId" resultType="com.pusong.business.domain.vo.PsTaskAppointVo">
select * from ps_task_appoint
where
task_id = ${mainId} and appoint_status != '50' and del_flag = '0'
</select>
<select id="queryChildTaskPageList" resultMap="taskMainResult">
select
main.task_type,
main.start_date,
main.task_status,
main.contract_code,
appo.executor as executors,
appo.*,
main.*,
main.id main_id,
main.extend,
con.is_proxy con_is_proxy,
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.finance_account_no com_finance_account_no,
com.id scom_id,
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.customer_num scom_customer_num,
com.customer_cert scom_customer_cert,
com.finance_account_no scom_finance_account_no,
cus.id cus_id,
cus.custom_name cus_custom_name ,
cus.custom_mobile cus_custom_mobile,
@ -107,18 +107,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
(select IFNULL(sum(money),0) from ps_contract_pay pay where pay.business_type =1 and pay.contract_code = main.contract_code and pay.pay_status = '1' ) +
(select IFNULL(sum(money),0) from ps_contract_pay cpay where cpay.business_type =2 and cpay.contract_code = main.contract_code )
) > 0 THEN '半款' ELSE '全款' END) as pay_stauts_desc,
appo.executor as executors,
appo.appoint_status,
appo.id,
appo.task_desc,
appo.task_content_desc,
(select GROUP_CONCAT(business.business_type SEPARATOR ',') from ps_contract_business business where business.contract_code = con.contract_code and business.del_flag = '0') as business_type_name
-- ,
-- appoint.executor appoint_executor,
-- appoint.task_desc appoint_task_desc,
-- appoint.task_content_desc appoint_task_content_desc,
-- appoint.appoint_type appoint_appoint_type,
-- appoint.appoint_status appoint_appoint_status
from ps_task_appoint appo
left join ps_task_main main on appo.task_id = main.id and appo.appoint_status != '50'
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_company_info com on main.service_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_task_appoint appoint on appoint.task_id = main.id and appoint.appoint_status != '50' and appoint.del_flag = '0'
${ew.getCustomSqlSegment}
</select>

View File

@ -1,2 +0,0 @@
%PDF-1.4
%粤マモ