This commit is contained in:
mx 2024-10-31 14:42:15 +08:00
parent 822cf45ccd
commit 29b43bf087
11 changed files with 96 additions and 61 deletions

View File

@ -6,6 +6,7 @@ import com.pusong.business.domain.PsCompanyInfo;
import com.pusong.common.translation.annotation.Translation; import com.pusong.common.translation.annotation.Translation;
import com.pusong.common.translation.constant.TransConstant; import com.pusong.common.translation.constant.TransConstant;
import com.pusong.system.domain.SysUser; import com.pusong.system.domain.SysUser;
import com.pusong.system.domain.vo.SysUserVo;
import io.github.linpeilie.annotations.AutoMapper; import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data; import lombok.Data;
@ -183,7 +184,7 @@ public class PsCompanyInfoVo implements Serializable {
/** /**
* 跟进人员 * 跟进人员
*/ */
private List<SysUser> followUsers; private List<SysUserVo> followUsers;
/** /**
* 客户姓名 * 客户姓名

View File

@ -9,6 +9,8 @@ import com.pusong.business.domain.vo.PsCompanyInfoVo;
import com.pusong.common.mybatis.annotation.DataColumn; import com.pusong.common.mybatis.annotation.DataColumn;
import com.pusong.common.mybatis.annotation.DataPermission; import com.pusong.common.mybatis.annotation.DataPermission;
import com.pusong.common.mybatis.core.mapper.BaseMapperPlus; import com.pusong.common.mybatis.core.mapper.BaseMapperPlus;
import com.pusong.system.domain.SysUser;
import com.pusong.system.domain.vo.SysUserVo;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
@ -33,5 +35,5 @@ public interface PsCompanyInfoMapper extends BaseMapperPlus<PsCompanyInfo, PsCom
List<PsCompanyInfoVo> selectVoCustomManager(@Param(Constants.WRAPPER) Wrapper<PsCompanyInfo> queryWrapper, @Param("contractCode")String contractCode); List<PsCompanyInfoVo> selectVoCustomManager(@Param(Constants.WRAPPER) Wrapper<PsCompanyInfo> queryWrapper, @Param("contractCode")String contractCode);
List<SysUserVo> selectFollowUser(@Param(Constants.WRAPPER) Wrapper<PsCompanyInfo> queryWrapper);
} }

View File

@ -49,7 +49,7 @@ public interface IPsApproverRecordService {
* @param from 0通用审批 1财务审批代账 2总裁审批代账 * @param from 0通用审批 1财务审批代账 2总裁审批代账
* @return * @return
*/ */
String approver(String operate, String [] id,String desc, int from); String[] approver(String operate, String [] id,String desc, int from);
/** /**
* 根据条件查询最后一条审批失败的原因 * 根据条件查询最后一条审批失败的原因

View File

@ -127,7 +127,7 @@ public interface IPsContractInfoService {
* 合同完成 * 合同完成
* @param contractCode 合同编码 * @param contractCode 合同编码
*/ */
String finish(String contractCode); String finish(String... contractCodes);
/** /**

View File

@ -50,7 +50,6 @@ public class RolbackApproverServiceImpl extends ApproverAbstractServiceImpl {
PsContractInfoVo src = contractInfoService.queryContractByCode(psApproverRecord.getContractCode()); PsContractInfoVo src = contractInfoService.queryContractByCode(psApproverRecord.getContractCode());
noticeService.sendNotice(SysNoticeBo.getPdfRolbackInstance(src.getCustomManager(), src.getPsCustomInfoVo().getCustomName())); noticeService.sendNotice(SysNoticeBo.getPdfRolbackInstance(src.getCustomManager(), src.getPsCustomInfoVo().getCustomName()));
} }
@Override @Override

View File

@ -94,7 +94,8 @@ public class PsApproverRecordServiceImpl implements IPsApproverRecordService {
* @return * @return
*/ */
@Transactional @Transactional
public String approver(String operate, String[] ids, String desc, int from){ public String[] approver(String operate, String[] ids, String desc, int from){
List<String> contractCodeList = new ArrayList<>();
for (String idStr : ids) { for (String idStr : ids) {
Long id = Long.valueOf(idStr); Long id = Long.valueOf(idStr);
PsApproverRecord info = baseMapper.selectById(id); PsApproverRecord info = baseMapper.selectById(id);
@ -124,14 +125,15 @@ public class PsApproverRecordServiceImpl implements IPsApproverRecordService {
info.setApproverDate(new Date()); info.setApproverDate(new Date());
baseMapper.updateById(info); baseMapper.updateById(info);
contractCodeList.add(info.getContractCode());
} }
// if(StringUtils.equals(info.getBusinessType(), ApproverTypeEnum.PAY.getCode())|| // if(StringUtils.equals(info.getBusinessType(), ApproverTypeEnum.PAY.getCode())||
// StringUtils.equals(info.getBusinessType(),ApproverTypeEnum.ROLBACK.getCode())|| // StringUtils.equals(info.getBusinessType(),ApproverTypeEnum.ROLBACK.getCode())||
// StringUtils.equals(info.getBusinessType(),ApproverTypeEnum.TASKFINISH.getCode())){ // StringUtils.equals(info.getBusinessType(),ApproverTypeEnum.TASKFINISH.getCode())){
// //
// } // }
// return ids; return contractCodeList.toArray(new String[contractCodeList.size()]);
return null; // return null;
} }
/** /**

View File

@ -24,6 +24,9 @@ import com.pusong.common.core.utils.MapstructUtils;
import com.pusong.common.core.utils.StringUtils; import com.pusong.common.core.utils.StringUtils;
import com.pusong.common.mybatis.core.page.PageQuery; import com.pusong.common.mybatis.core.page.PageQuery;
import com.pusong.common.mybatis.core.page.TableDataInfo; import com.pusong.common.mybatis.core.page.TableDataInfo;
import com.pusong.system.domain.SysUser;
import com.pusong.system.domain.vo.SysUserVo;
import com.pusong.system.mapper.SysUserMapper;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -31,6 +34,7 @@ import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.*; import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -57,6 +61,8 @@ public class PsCompanyInfoServiceImpl implements IPsCompanyInfoService {
@Resource @Resource
private PsApproverRecordMapper recordMapper; private PsApproverRecordMapper recordMapper;
private SysUserMapper sysUserMapper;
/** /**
* 查询公司信息 * 查询公司信息
* *
@ -136,7 +142,9 @@ public class PsCompanyInfoServiceImpl implements IPsCompanyInfoService {
lqw.like(bo.getCustomMobile() != null,"cus.custom_mobile",bo.getCustomMobile()); lqw.like(bo.getCustomMobile() != null,"cus.custom_mobile",bo.getCustomMobile());
lqw.like(bo.getCompanyName() != null,"com.company_name",bo.getCompanyName()); lqw.like(bo.getCompanyName() != null,"com.company_name",bo.getCompanyName());
lqw.eq(bo.getServiceStatus() != null,"com.service_status",bo.getServiceStatus()); lqw.eq(bo.getServiceStatus() != null,"com.service_status",bo.getServiceStatus());
lqw.exists(StringUtils.isNotBlank(bo.getUserName()),"select 1 from sys_user fsu where fsu.user_id = cf.user_id and fsu.nick_name like '%"+bo.getUserName()+"%'"); lqw.exists(StringUtils.isNotBlank(bo.getUserName()),"select 1 from sys_user fsu LEFT JOIN ps_company_follow cf on com.id = cf.company_id where fsu.user_id = cf.user_id and fsu.nick_name like '%"+bo.getUserName()+"%'");
lqw.exists("select 1 FROM ps_contract_company cc inner join ps_contract_pay pay on pay.contract_code = cc.contract_code where cc.company_id = com.id");
StringBuilder sql = new StringBuilder("select 1 from ps_contract_business cb where cb.company_id = com.id "); StringBuilder sql = new StringBuilder("select 1 from ps_contract_business cb where cb.company_id = com.id ");
if (bo.getType() == 2){ //非托管 if (bo.getType() == 2){ //非托管
@ -157,7 +165,17 @@ public class PsCompanyInfoServiceImpl implements IPsCompanyInfoService {
queryParam.in("cc.company_id", companyIds); queryParam.in("cc.company_id", companyIds);
List<PsContractBusinessVo> psContractBusinessVos = contractBusinessMapper.selectTuoGuanBusinessList(queryParam); List<PsContractBusinessVo> psContractBusinessVos = contractBusinessMapper.selectTuoGuanBusinessList(queryParam);
Map<Long, List<PsContractBusinessVo>> contractBusinessVoMap = psContractBusinessVos.stream().collect(Collectors.groupingBy(PsContractBusinessVo::getCompanyId, Collectors.toList())); Map<Long, List<PsContractBusinessVo>> contractBusinessVoMap = psContractBusinessVos.stream().collect(Collectors.groupingBy(PsContractBusinessVo::getCompanyId, Collectors.toList()));
QueryWrapper<PsCompanyInfo> query = Wrappers.query();
query.in("cf.company_id", companyIds);
List<SysUserVo> sysUsers = baseMapper.selectFollowUser(query);
Map<Long, List<SysUserVo>> userMap = new HashMap<>();
for (SysUserVo sysUser : sysUsers) {
List<SysUserVo> list = userMap.computeIfAbsent(sysUser.getCompanyId(), aLong -> new ArrayList<>());
list.add(sysUser);
}
for (PsCompanyInfoVo record : result.getRecords()) { for (PsCompanyInfoVo record : result.getRecords()) {
record.setFollowUsers(userMap.get(record.getId()));
record.setBusinessVoList(contractBusinessVoMap.get(record.getId())); record.setBusinessVoList(contractBusinessVoMap.get(record.getId()));
if (record.getBusinessVoList() == null){ if (record.getBusinessVoList() == null){
continue; continue;

View File

@ -791,18 +791,23 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
* 1. 回款全部完成 * 1. 回款全部完成
* 2. 任务全部完成 * 2. 任务全部完成
* 3. 回传合同根据回传合同的条件进行判断必须回传合同的需回传合同后审批通过才能算完成 * 3. 回传合同根据回传合同的条件进行判断必须回传合同的需回传合同后审批通过才能算完成
* @param contractCode 合同编码 * @param contractCodes 合同编码
*/ */
@Transactional @Transactional
public String finish(String contractCode) { public String finish(String... contractCodes) {
for (String contractCode : contractCodes) {
if (StringUtils.isBlank(contractCode)) { if (StringUtils.isBlank(contractCode)) {
return "contractCode 参数错误"; // return "contractCode 参数错误";
continue;
} }
Long num = taskMainMapper.selectCount(Wrappers.<PsTaskMain>lambdaQuery() Long num = taskMainMapper.selectCount(Wrappers.<PsTaskMain>lambdaQuery()
.eq(PsTaskMain::getContractCode, contractCode) .eq(PsTaskMain::getContractCode, contractCode)
.ne(PsTaskMain::getTaskType, TaskTypeEnum.INVOICE.getCode()) .ne(PsTaskMain::getTaskType, TaskTypeEnum.INVOICE.getCode())
.notIn(PsTaskMain::getTaskStatus, TaskStatusEnum.returnFinish())); .notIn(PsTaskMain::getTaskStatus, TaskStatusEnum.returnFinish()));
PsContractInfoVo info = this.queryContractByCode(contractCode); PsContractInfoVo info = this.queryContractByCode(contractCode);
if (info == null){
continue;
}
//任务已完成 合同已回传 回款已结束 //任务已完成 合同已回传 回款已结束
boolean rollbackFlag = true; boolean rollbackFlag = true;
@ -838,20 +843,24 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
} }
} }
if (!rollbackFlag){ if (!rollbackFlag){
return "未回传合同"; // return "未回传合同";
continue;
} }
if(num > 0){ if(num > 0){
return "还有未完任务"; // return "还有未完任务";
continue;
} }
if (info.getResidualMoney().compareTo(BigDecimal.ZERO) > 0){ if (info.getResidualMoney().compareTo(BigDecimal.ZERO) > 0){
return "还有未回款"; // return "还有未回款";
continue;
} }
PsContractInfo psContractInfo = new PsContractInfo(); PsContractInfo psContractInfo = new PsContractInfo();
psContractInfo.setContractCode(contractCode); psContractInfo.setContractCode(contractCode);
psContractInfo.setContractStatus(ContractStatusEnum.SUCCESS.getCode()); psContractInfo.setContractStatus(ContractStatusEnum.SUCCESS.getCode());
psContractInfo.setFinishDate(new Date()); psContractInfo.setFinishDate(new Date());
this.updateByCode(psContractInfo); this.updateByCode(psContractInfo);
}
return null; return null;
} }
@ -916,7 +925,7 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
serviceScheduleVo.setApprove(CollectionUtils.isNotEmpty(appro)?appro.get(0).getUpdateBy():null); serviceScheduleVo.setApprove(CollectionUtils.isNotEmpty(appro)?appro.get(0).getUpdateBy():null);
} }
//是否已完成1是 0否 //是否已完成1是 0否
serviceScheduleVo.setIsFinish(StringUtils.equals(ContractStatusEnum.SUCCESS.getCode(),contractInfo.getContractStatus())?1:0); serviceScheduleVo.setIsFinish(StringUtils.equals(ContractStatusEnum.SUCCESS.getCode(), contractInfo.getContractStatus()) ? 1 : 0);
return serviceScheduleVo; return serviceScheduleVo;
} }

View File

@ -78,8 +78,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
cus.custom_name, cus.custom_name,
cus.custom_mobile, cus.custom_mobile,
cusi.custom_name custom_introducer, cusi.custom_name custom_introducer,
usr.user_id fu_user_id,
usr.nick_name fu_nick_name,
app1.id app_id, app1.id app_id,
app1.apply_desc app_apply_desc, app1.apply_desc app_apply_desc,
app1.approver_status app_approver_status, app1.approver_status app_approver_status,
@ -87,8 +86,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
from ps_company_info com from ps_company_info com
left join ps_custom_info cus on com.custom_id = cus.id 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_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
left join ( left join (
SELECT business_id, max(apply_date) max_apply_date SELECT business_id, max(apply_date) max_apply_date
FROM ps_approver_record FROM ps_approver_record
@ -131,6 +128,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
left join ps_contract_business_detail det on det.business_id = bus.id left join ps_contract_business_detail det on det.business_id = bus.id
${ew.getCustomSqlSegment} ${ew.getCustomSqlSegment}
</select> </select>
<select id="selectFollowUser" resultType="com.pusong.system.domain.vo.SysUserVo">
select u.*,cf.company_id from ps_company_follow cf
inner join sys_user u on u.user_id = cf.user_id
${ew.getCustomSqlSegment}
</select>
</mapper> </mapper>

View File

@ -108,7 +108,6 @@ public class SysUser extends TenantEntity {
*/ */
private String openid; private String openid;
public SysUser(Long userId) { public SysUser(Long userId) {
this.userId = userId; this.userId = userId;
} }

View File

@ -145,5 +145,9 @@ public class SysUserVo implements Serializable {
* 1时需要后台开通 2需要手机号授权登录 * 1时需要后台开通 2需要手机号授权登录
*/ */
private Integer code; private Integer code;
/**
* 公司id
*/
private Long companyId;
} }