bug
This commit is contained in:
parent
cd2e67404a
commit
2fc23fe47a
@ -244,7 +244,7 @@ public class PsCustomController extends BaseController {
|
||||
@RepeatSubmit
|
||||
@Log(title = "指派")
|
||||
@GetMapping("/assign")
|
||||
public R<Void> assign(@NotNull Long customerId,@NotNull Long userId) {
|
||||
public R<Void> assign(@NotNull Long customerId, @NotNull Long userId) {
|
||||
psCustomInfoService.assign(customerId,userId);
|
||||
return R.ok();
|
||||
}
|
||||
|
@ -1,58 +0,0 @@
|
||||
package com.pusong.business.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import cn.dev33.satoken.annotation.SaIgnore;
|
||||
import com.pusong.business.domain.bo.PsCustomCallbackBo;
|
||||
import com.pusong.business.domain.bo.PsCustomInfoBo;
|
||||
import com.pusong.business.domain.bo.PsCustomPriceBo;
|
||||
import com.pusong.business.domain.vo.PsCustomInfoVo;
|
||||
import com.pusong.business.domain.vo.PsCustomerRecordVo;
|
||||
import com.pusong.business.service.IPsCustomInfoService;
|
||||
import com.pusong.common.core.domain.R;
|
||||
import com.pusong.common.core.validate.AddGroup;
|
||||
import com.pusong.common.core.validate.EditGroup;
|
||||
import com.pusong.common.idempotent.annotation.RepeatSubmit;
|
||||
import com.pusong.common.log.annotation.Log;
|
||||
import com.pusong.common.log.enums.BusinessType;
|
||||
import com.pusong.common.mybatis.core.page.PageQuery;
|
||||
import com.pusong.common.mybatis.core.page.TableDataInfo;
|
||||
import com.pusong.common.web.core.BaseController;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 客户基本信息
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2024-07-25
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/business/home")
|
||||
public class PsHomeController extends BaseController {
|
||||
|
||||
private final IPsCustomInfoService psCustomInfoService;
|
||||
// /**
|
||||
// * 查询登陆人下所有的客户名称和id
|
||||
// */
|
||||
// @RepeatSubmit()
|
||||
// @SaCheckPermission("business:customInfo:list")
|
||||
// @GetMapping("/listByLoginUser")
|
||||
// public R<List<PsCustomInfoVo>> listByLoginUser() {
|
||||
// return R.ok(psCustomInfoService.listByLoginUser());
|
||||
// }
|
||||
|
||||
|
||||
@RepeatSubmit()
|
||||
@SaCheckPermission("business:statistics")
|
||||
@GetMapping("/statistics")
|
||||
public R<List<PsCustomInfoVo>> statistics() {
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
}
|
@ -28,6 +28,11 @@ public class PsTaskQueryBo {
|
||||
*/
|
||||
private String companyName;
|
||||
|
||||
/**
|
||||
* 服务公司名称
|
||||
*/
|
||||
private String serviceCompanyName;
|
||||
|
||||
/**
|
||||
* 纳税人识别号
|
||||
*/
|
||||
|
@ -94,4 +94,9 @@ public class PsTaskWorkRecordVo implements Serializable {
|
||||
*/
|
||||
@Translation(type = TransConstant.USER_ID_TO_NICKNAME,mapper = "executor")
|
||||
private String executorName;
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
private String createBy;
|
||||
}
|
||||
|
@ -20,6 +20,7 @@ import com.pusong.common.mybatis.enums.DataScopeType;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.temporal.Temporal;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@ -58,12 +59,12 @@ public interface PsContractInfoMapper extends BaseMapperPlus<PsContractInfo, PsC
|
||||
|
||||
|
||||
//首页查询各个渠道成交的合同
|
||||
List<ChannelPayInfo> byChannel(@Param(Constants.WRAPPER) Wrapper<PsContractInfo> queryWrapper);
|
||||
List<ChannelPayInfo> byChannel(@Param(Constants.WRAPPER) Wrapper<PsContractInfo> queryWrapper, Temporal startTime, Temporal endTime);
|
||||
//首页查询各个渠道成交的合同
|
||||
@DataPermission({
|
||||
@DataColumn(key = "userName", value = "info.custom_manager")
|
||||
})
|
||||
List<ChannelPayInfo> byChannelUser(@Param(Constants.WRAPPER) Wrapper<PsContractInfo> queryWrapper);
|
||||
List<ChannelPayInfo> byChannelUser(@Param(Constants.WRAPPER) Wrapper<PsContractInfo> queryWrapper, Temporal startTime, Temporal endTime);
|
||||
|
||||
|
||||
}
|
||||
|
@ -1,8 +1,15 @@
|
||||
package com.pusong.business.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Constants;
|
||||
import com.pusong.business.domain.PsContractInfo;
|
||||
import com.pusong.business.domain.PsTaskWorkRecord;
|
||||
import com.pusong.business.domain.vo.PsContractBusinessVo;
|
||||
import com.pusong.business.domain.vo.PsTaskWorkRecordVo;
|
||||
import com.pusong.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 外勤任务记录Mapper接口
|
||||
@ -11,5 +18,6 @@ import com.pusong.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
* @date 2024-08-09
|
||||
*/
|
||||
public interface PsTaskWorkRecordMapper extends BaseMapperPlus<PsTaskWorkRecord, PsTaskWorkRecordVo> {
|
||||
List<PsTaskWorkRecordVo> selectListAndUser(@Param(Constants.WRAPPER) Wrapper<PsTaskWorkRecord> queryWrapper);
|
||||
|
||||
}
|
||||
|
@ -116,7 +116,7 @@ public class PayContractApproverServiceImpl extends ApproverAbstractServiceImpl
|
||||
if (ContractStatusEnum.CREATE.getCode().equals(info.getContractStatus())){
|
||||
noticeService.sendNotice(SysNoticeBo.getFirstPayErrorInstance(info.getCustomManager(), info.getPsCustomInfoVo().getCustomName(), psApproverRecord.getApproverDesc()));
|
||||
}else{
|
||||
if (info.getResidualMoney().doubleValue() > 0){
|
||||
if (info.getResidualMoney().subtract(update.getMoney()).doubleValue() > 0){
|
||||
noticeService.sendNotice(SysNoticeBo.getPayErrorInstance(info.getCustomManager(), info.getPsCustomInfoVo().getCustomName(), psApproverRecord.getApproverDesc()));
|
||||
}else{
|
||||
noticeService.sendNotice(SysNoticeBo.getLastPayErrorInstance(info.getCustomManager(), info.getPsCustomInfoVo().getCustomName(), psApproverRecord.getApproverDesc()));
|
||||
|
@ -63,7 +63,7 @@ public class PublicApproverServiceImpl extends ApproverAbstractServiceImpl {
|
||||
info.setCustomManager(Long.valueOf(psApproverRecord.getUpdateData()));
|
||||
info.setAcceptDate(new Date());
|
||||
customInfoMapper.updateById(info);
|
||||
noticeService.sendNotice(SysNoticeBo.getGonghaiShenpiInstance(info.getCustomManager()));
|
||||
noticeService.sendNotice(SysNoticeBo.getGonghaiShenpiInstance(info.getCustomManager(), info.getCustomName()));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -76,7 +76,7 @@ public class PublicApproverServiceImpl extends ApproverAbstractServiceImpl {
|
||||
info.setCustomStatus(CustomerStatusEnum.PUBLIC.getCode());
|
||||
info.setCustomManager(Long.valueOf(psApproverRecord.getUpdateData()));
|
||||
customInfoMapper.updateById(info);
|
||||
noticeService.sendNotice(SysNoticeBo.getGonghaiZhipaiErrorInstance(info.getCustomManager(), psApproverRecord.getApproverDesc()));
|
||||
noticeService.sendNotice(SysNoticeBo.getGonghaiZhipaiErrorInstance(info.getCustomManager(), info.getCustomName(), psApproverRecord.getApproverDesc()));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -57,7 +57,7 @@ public class UpdateContractApproverServiceImpl extends ApproverAbstractServiceIm
|
||||
|
||||
contractInfoService.update(src, bo);
|
||||
|
||||
noticeService.sendNotice(SysNoticeBo.getUpdateContractInstance(src.getCustomManager(), psApproverRecord.getApproverDesc()));
|
||||
noticeService.sendNotice(SysNoticeBo.getUpdateContractInstance(src.getCustomManager(), src.getPsCustomInfoVo().getCustomName()));
|
||||
|
||||
//3.修改后操作
|
||||
// afterUpdateOperate(bo, src);
|
||||
|
@ -29,7 +29,10 @@ import org.springframework.stereotype.Service;
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.chrono.ChronoLocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.time.temporal.Temporal;
|
||||
import java.time.temporal.TemporalAdjusters;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
@ -84,23 +87,25 @@ public class HomeServiceImpl implements HomeService {
|
||||
//续期合同
|
||||
makeAmountVo.getRenewInfo().setNum(renewList.size()+"单");
|
||||
makeAmountVo.getRenewInfo().setMoney(renewList.stream().map(PsContractInfo::getContractAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
||||
fillPay(renewList,makeAmountVo.getRenewInfo());
|
||||
fillPay(renewList, makeAmountVo.getRenewInfo(), startDate, endDate);
|
||||
//新签合同
|
||||
makeAmountVo.getNewInfo().setNum(newList.size()+"单");
|
||||
makeAmountVo.getNewInfo().setMoney(newList.stream().map(PsContractInfo::getContractAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
||||
fillPay(newList,makeAmountVo.getNewInfo());
|
||||
fillPay(newList, makeAmountVo.getNewInfo(), startDate, endDate);
|
||||
//计算比例
|
||||
makeAmountVo.cellPer();
|
||||
return makeAmountVo;
|
||||
}
|
||||
|
||||
private void fillPay(List<PsContractInfo> list, DataAmountVo typeAmountVo){
|
||||
private void fillPay(List<PsContractInfo> list, DataAmountVo typeAmountVo, Temporal startDate, Temporal endDate){
|
||||
//续费/新签的合同编码集合
|
||||
List<String> renewCodes = list.stream().map(PsContractInfo::getContractCode).toList();
|
||||
//续费/新签的合同已付金额
|
||||
if(CollectionUtils.isNotEmpty(renewCodes)){
|
||||
List<PsContractPay> payList = payMapper.selectList(Wrappers.<PsContractPay>query().select("business_type", "sum(money) money").lambda()
|
||||
.in(PsContractPay::getContractCode, renewCodes).eq(PsContractPay::getPayStatus, PayStatusEnum.SUCCESS.getCode())
|
||||
.ge(startDate != null, PsContractPay::getCreateTime, startDate)
|
||||
.le(endDate != null, PsContractPay::getCreateTime, endDate)
|
||||
.groupBy(PsContractPay::getBusinessType));
|
||||
BigDecimal payMoney = BigDecimal.ZERO;
|
||||
for (PsContractPay pay : payList) {
|
||||
@ -163,28 +168,28 @@ public class HomeServiceImpl implements HomeService {
|
||||
String date = (String)mapParam.get("date");
|
||||
|
||||
//当月合同款总数
|
||||
BigDecimal sumMoney= new BigDecimal(0);
|
||||
BigDecimal sumMoney = new BigDecimal(0);
|
||||
//回款合同数
|
||||
Integer payNum = 0;
|
||||
//当月已支付合同金额
|
||||
BigDecimal payMoney=new BigDecimal(0);
|
||||
BigDecimal payMoney = new BigDecimal(0);
|
||||
//当月合同总数
|
||||
Integer contractNum=0;
|
||||
Integer contractNum = 0;
|
||||
|
||||
Map<String,Object> queryParam=new HashMap<>();
|
||||
queryParam.put("startDate",startDate);
|
||||
queryParam.put("endDate",endDate);
|
||||
queryParam.put("payStatus",PayStatusEnum.SUCCESS.getCode());
|
||||
queryParam.put("contractStatus",ContractStatusEnum.INIT.getCode());
|
||||
queryParam.put("isCancel",CommonStatusEnum.SUCCESS.getCode());
|
||||
queryParam.put("startDate", startDate);
|
||||
queryParam.put("endDate", endDate);
|
||||
queryParam.put("payStatus", PayStatusEnum.SUCCESS.getCode());
|
||||
queryParam.put("contractStatus", ContractStatusEnum.INIT.getCode());
|
||||
queryParam.put("isCancel", CommonStatusEnum.SUCCESS.getCode());
|
||||
|
||||
List<Map<String,Object>> list = psContractInfoMapper.homePageReturnMoneyInfo(queryParam);
|
||||
//记录合同编码,防止重复
|
||||
Map<String,Integer> repeatNum=new HashMap<>();
|
||||
for(Map<String,Object> m : list){
|
||||
//计算已回款金额
|
||||
BigDecimal money =m.get("money")==null?new BigDecimal(0):(BigDecimal) m.get("money");
|
||||
String businessType=m.get("business_type")==null?"":m.get("business_type").toString();
|
||||
BigDecimal money = m.get("money") == null ? new BigDecimal(0) : (BigDecimal) m.get("money");
|
||||
String businessType = m.get("business_type") == null ? "" : m.get("business_type").toString();
|
||||
//判断是回款还是退款
|
||||
if(businessType.equals("1")){
|
||||
payMoney = payMoney.add(money);
|
||||
@ -193,14 +198,13 @@ public class HomeServiceImpl implements HomeService {
|
||||
}
|
||||
|
||||
|
||||
String contractCode=m.get("contract_code").toString();
|
||||
if(repeatNum.get(contractCode)==null){
|
||||
String contractCode = m.get("contract_code").toString();
|
||||
if(repeatNum.get(contractCode) == null){
|
||||
repeatNum.put(contractCode,1);
|
||||
sumMoney = sumMoney.add((BigDecimal) m.get("contract_amount"));
|
||||
contractNum++;
|
||||
|
||||
if(businessType.equals("1")){
|
||||
payMoney = payMoney.add(money);
|
||||
payNum++;
|
||||
}
|
||||
}
|
||||
@ -303,8 +307,8 @@ public class HomeServiceImpl implements HomeService {
|
||||
queryParam.put("payStatus", PayStatusEnum.SUCCESS.getCode());
|
||||
|
||||
QueryWrapper<PsContractInfo> queryWrapper = new QueryWrapper<PsContractInfo>()
|
||||
.in(isCaiwu, "role.role_key", Arrays.asList(RoleEnum.caiwu))
|
||||
.in(!isCaiwu, "role.role_key", Arrays.asList(RoleEnum.xiaoshou));
|
||||
.in(isCaiwu, "role.role_key", Arrays.asList(RoleEnum.caiwu, RoleEnum.cwzg))
|
||||
.in(!isCaiwu, "role.role_key", Arrays.asList(RoleEnum.xiaoshou, RoleEnum.xszg));
|
||||
|
||||
List<UserContractAmountInfo> list = psContractInfoMapper.getUserContractSourceAmountsByDeptId(queryParam, queryWrapper);
|
||||
Map<Long,UserContractAmountVo> res = new HashMap<>();
|
||||
@ -396,8 +400,8 @@ public class HomeServiceImpl implements HomeService {
|
||||
LocalDate startDate = (LocalDate)mapParam.get("startDate");
|
||||
LocalDate endDate = (LocalDate)mapParam.get("endDate");
|
||||
String date = (String)mapParam.get("date");
|
||||
|
||||
Map<String,Object> queryParam=new HashMap<>();
|
||||
LocalDateTime localDateTime2= LocalDateTime.parse("2024-11-07T14:04:00");
|
||||
Map<String,Object> queryParam = new HashMap<>();
|
||||
queryParam.put("startDate", startDate);
|
||||
queryParam.put("endDate", endDate);
|
||||
queryParam.put("contractStatus", ContractStatusEnum.INIT.getCode());
|
||||
@ -488,12 +492,13 @@ public class HomeServiceImpl implements HomeService {
|
||||
queryParam.put("contractStatus", ContractStatusEnum.INIT.getCode());
|
||||
queryParam.put("isCancel", CommonStatusEnum.SUCCESS.getCode());
|
||||
queryParam.put("payStatus", PayStatusEnum.SUCCESS.getCode());
|
||||
|
||||
LocalDateTime localDateTime2= LocalDateTime.parse("2024-11-07T14:04:00");
|
||||
QueryWrapper<PsContractInfo> queryWrapper = new QueryWrapper<PsContractInfo>()
|
||||
.in(isCaiwu, "role.role_key", Arrays.asList(RoleEnum.caiwu))
|
||||
.in(!isCaiwu, "role.role_key", Arrays.asList(RoleEnum.xiaoshou));
|
||||
// .in(isCaiwu, "role.role_key", Arrays.asList(RoleEnum.caiwu, RoleEnum.cwzg))
|
||||
// .in(!isCaiwu, "role.role_key", Arrays.asList(RoleEnum.xiaoshou, RoleEnum.xszg) );
|
||||
;
|
||||
List<UserContractAmountInfo> list = psContractInfoMapper.getUserContractAndPayInfo(queryParam, queryWrapper);
|
||||
Map<Long,UserAmountInfoVo> resMap = new HashMap<>();
|
||||
Map<Long, UserAmountInfoVo> resMap = new HashMap<>();
|
||||
//记录合同编码,防止重复
|
||||
Map<String, String> repeatContractCode = new HashMap<>();
|
||||
for (UserContractAmountInfo obj : list) {
|
||||
@ -514,7 +519,7 @@ public class HomeServiceImpl implements HomeService {
|
||||
|
||||
|
||||
if(repeatContractCode.get(obj.getContractCode())==null){
|
||||
repeatContractCode.put(obj.getContractCode(),obj.getContractCode());
|
||||
repeatContractCode.put(obj.getContractCode(), obj.getContractCode());
|
||||
vo.addSumAmount(obj.getContractAmount());
|
||||
}
|
||||
|
||||
@ -547,7 +552,7 @@ public class HomeServiceImpl implements HomeService {
|
||||
List<UserAmountInfoVo> listData = resMap.values().stream().sorted(
|
||||
Comparator.comparing(UserAmountInfoVo::getSumAmount,Comparator.reverseOrder())).collect(Collectors.toList());
|
||||
|
||||
BigDecimal sumAmount = list.stream().map(UserContractAmountInfo::getContractAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
BigDecimal sumAmount = resMap.values().stream().map(UserAmountInfoVo::getSumAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
//计算金额占比
|
||||
for (UserAmountInfoVo v : listData) {
|
||||
if(!v.getSumAmount().equals(BigDecimal.ZERO)) {
|
||||
@ -576,6 +581,11 @@ public class HomeServiceImpl implements HomeService {
|
||||
Map<String, Object> mapParam = dateType == 1 ? this.getDate(type) : this.getDateByUser(type);
|
||||
LocalDate startDate = (LocalDate)mapParam.get("startDate");
|
||||
LocalDate endDate = (LocalDate)mapParam.get("endDate");
|
||||
|
||||
// LocalDateTime localDateTime1= LocalDateTime.parse("2024-11-07T00:00:30");
|
||||
// LocalDateTime localDateTime2= LocalDateTime.parse("2024-11-07T14:04:00");
|
||||
|
||||
|
||||
String date = (String)mapParam.get("date");
|
||||
//返回dto
|
||||
ChannelAmountVo res = new ChannelAmountVo();
|
||||
@ -583,13 +593,13 @@ public class HomeServiceImpl implements HomeService {
|
||||
log.info("查询日期:{}到{}",startDate,endDate);
|
||||
QueryWrapper<PsContractInfo> wq = new QueryWrapper<PsContractInfo>()
|
||||
.ne("info.is_due", CommonStatusEnum.SUCCESS.getCode()).ne("info.contract_status", ContractStatusEnum.INIT.getCode())
|
||||
.eq("pay.pay_status", PayStatusEnum.SUCCESS.getCode())
|
||||
// .eq("pay.pay_status", PayStatusEnum.SUCCESS.getCode())
|
||||
.ge(startDate != null, "info.apply_date", startDate).le(endDate != null, "info.apply_date", endDate);
|
||||
List<ChannelPayInfo> list;
|
||||
if(dateType == 1){//所有的数据权限
|
||||
list = psContractInfoMapper.byChannel(wq);
|
||||
list = psContractInfoMapper.byChannel(wq, startDate, endDate);
|
||||
}else{//用户个人的数据权限
|
||||
list = psContractInfoMapper.byChannelUser(wq);
|
||||
list = psContractInfoMapper.byChannelUser(wq, startDate, endDate);
|
||||
}
|
||||
|
||||
//查询各个渠道的字典表
|
||||
@ -610,9 +620,13 @@ public class HomeServiceImpl implements HomeService {
|
||||
BigDecimal money = BigDecimal.ZERO;
|
||||
BigDecimal paymoney = BigDecimal.ZERO;
|
||||
for (ChannelPayInfo pay : payList){
|
||||
contractCodes.add(pay.getContractCode());
|
||||
money = money.add(pay.getContractAmount());
|
||||
paymoney = pay.getBusinessType().equals("1")? paymoney.add(pay.getMoney()) : paymoney.subtract(pay.getMoney());
|
||||
if (!contractCodes.contains(pay.getContractCode())){
|
||||
contractCodes.add(pay.getContractCode());
|
||||
money = money.add(pay.getContractAmount());
|
||||
}
|
||||
if (pay.getBusinessType() != null){
|
||||
paymoney = pay.getBusinessType().equals("1") ? paymoney.add(pay.getMoney()) : paymoney.subtract(pay.getMoney());
|
||||
}
|
||||
}
|
||||
BigDecimal unpaymoney = money.subtract(paymoney);
|
||||
data.setNum(contractCodes.size()+"单");
|
||||
@ -713,10 +727,12 @@ public class HomeServiceImpl implements HomeService {
|
||||
Map<String, Object> mapParam = this.getDateByUser(type);
|
||||
LocalDate startDate = (LocalDate)mapParam.get("startDate");
|
||||
LocalDate endDate = (LocalDate)mapParam.get("endDate");
|
||||
|
||||
String date = (String)mapParam.get("date");
|
||||
Map<String,Object> queryParam = new HashMap<>();
|
||||
queryParam.put("startDate",startDate);
|
||||
queryParam.put("endDate",endDate);
|
||||
|
||||
SalasVo salasVo = psHomeMapper.selectContractNumAndAmount(queryParam);
|
||||
salasVo.setGonghaiNum(psHomeMapper.selectGonghaiNum(queryParam));
|
||||
salasVo.setCallbackRecordNum(psHomeMapper.selectCallbackRecordNum(queryParam));
|
||||
|
@ -582,13 +582,13 @@ public class PsCustomInfoServiceImpl implements IPsCustomInfoService {
|
||||
* @param customerId 客户id
|
||||
* @param userId 被指派者
|
||||
*/
|
||||
public void assign(Long customerId,Long userId){
|
||||
public void assign(Long customerId, Long userId){
|
||||
PsCustomInfo psCustomInfo = baseMapper.selectById(customerId);
|
||||
psCustomInfo.setCustomStatus(CustomerStatusEnum.INIT.getCode());
|
||||
psCustomInfo.setCustomManager(userId);
|
||||
psCustomInfo.setAcceptDate(new Date());
|
||||
baseMapper.updateById(psCustomInfo);
|
||||
noticeService.sendNotice(SysNoticeBo.getGonghaiZhipaiInstance(customerId));
|
||||
noticeService.sendNotice(SysNoticeBo.getGonghaiZhipaiInstance(userId, psCustomInfo.getCustomName()));
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -76,7 +76,7 @@ public class PsTaskServiceImpl implements IPsTaskService {
|
||||
@Autowired
|
||||
@Lazy
|
||||
private final IPsContractInfoService contractInfoService;
|
||||
|
||||
@Autowired
|
||||
private SysUserMapper sysUserMapper;
|
||||
|
||||
/**
|
||||
@ -105,6 +105,8 @@ public class PsTaskServiceImpl implements IPsTaskService {
|
||||
* @return 主任务分页列表
|
||||
*/
|
||||
public TableDataInfo<PsTaskMainVo> queryPageList(PsTaskQueryBo bo, PageQuery pageQuery){
|
||||
bo.setServiceCompanyName(bo.getCompanyName());
|
||||
bo.setCompanyName(null);
|
||||
QueryWrapper<PsTaskMain> lqw = buildQueryWrapper(bo);
|
||||
Page<PsTaskMainVo> page;
|
||||
if(StringUtils.equals(TaskTypeEnum.INVOICE.getCode(), bo.getType())){//发票任务无需数据权限
|
||||
@ -611,6 +613,8 @@ public class PsTaskServiceImpl implements IPsTaskService {
|
||||
lqw.like(StringUtils.isNotBlank(bo.getContractCode()), "main.contract_code", bo.getContractCode());
|
||||
|
||||
lqw.like(StringUtils.isNotBlank(bo.getCompanyName()), "com.company_name", bo.getCompanyName());//公司名称
|
||||
lqw.like(StringUtils.isNotBlank(bo.getServiceCompanyName()), "scom.company_name", bo.getServiceCompanyName());//公司名称
|
||||
|
||||
lqw.like(StringUtils.isNotBlank(bo.getCustomerNum()), "com.customer_num", bo.getCustomerNum());//纳税人识别号
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getCustomerCert()), "com.customer_cert", bo.getCustomerCert());//纳税人资格
|
||||
lqw.like(StringUtils.isNotBlank(bo.getCustomManagerName()), "usr.nick_name", bo.getCustomManagerName());//销售经理姓名
|
||||
@ -618,8 +622,8 @@ public class PsTaskServiceImpl implements IPsTaskService {
|
||||
lqw.like(StringUtils.isNotBlank(bo.getMobile()), "com.legal_person_phone", bo.getMobile());//法人手机号
|
||||
lqw.like(StringUtils.isNotBlank(bo.getIdNo()), "com.legal_person_idcard", bo.getIdNo());//法人身份证
|
||||
lqw.like(StringUtils.isNotBlank(bo.getName()), "com.legal_person_name", bo.getName());//法人姓名
|
||||
lqw.like(StringUtils.isNotBlank(bo.getCustomName()), "com.contact_person_name", bo.getCustomName());//客户姓名
|
||||
lqw.like(StringUtils.isNotBlank(bo.getCustomMobile()), "com.contact_person_phone", bo.getCustomMobile());//客户电话
|
||||
lqw.like(StringUtils.isNotBlank(bo.getCustomName()), "scom.contact_person_name", bo.getCustomName());//客户姓名
|
||||
lqw.like(StringUtils.isNotBlank(bo.getCustomMobile()), "scom.contact_person_phone", bo.getCustomMobile());//客户电话
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getCustomScene()), "con.custom_scene", bo.getCustomScene());//是否到达现场
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getIsProxy()), "bus.is_proxy", bo.getIsProxy());//是否代账
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
package com.pusong.business.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
||||
import com.pusong.business.domain.PsTaskAppoint;
|
||||
import com.pusong.business.domain.PsTaskMain;
|
||||
@ -49,10 +50,11 @@ public class PsTaskWorkRecordServiceImpl implements IPsTaskWorkRecordService {
|
||||
*/
|
||||
@Override
|
||||
public List<PsTaskWorkRecordVo> queryListByAppointId(Long id) {
|
||||
LambdaQueryWrapper<PsTaskWorkRecord> lqw = Wrappers.lambdaQuery();
|
||||
lqw.eq(PsTaskWorkRecord::getDelFlag,"0");
|
||||
lqw.eq(PsTaskWorkRecord::getTaskAppointId,id);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
QueryWrapper<PsTaskWorkRecord> lqw = new QueryWrapper();
|
||||
lqw.eq("record.del_flag", "0");
|
||||
lqw.eq("record.task_appoint_id", id);
|
||||
|
||||
return baseMapper.selectListAndUser(lqw);
|
||||
}
|
||||
/**
|
||||
* 根据主任务id查询工作进度列表
|
||||
@ -68,8 +70,11 @@ public class PsTaskWorkRecordServiceImpl implements IPsTaskWorkRecordService {
|
||||
}
|
||||
//转map
|
||||
Map<Long, PsTaskAppoint> map = list.stream().collect(Collectors.toMap(PsTaskAppoint::getId, Function.identity()));
|
||||
List<PsTaskWorkRecordVo> lis = baseMapper.selectVoList(Wrappers.<PsTaskWorkRecord>lambdaQuery()
|
||||
.eq(PsTaskWorkRecord::getDelFlag, "0").in(PsTaskWorkRecord::getTaskAppointId, map.keySet()));
|
||||
|
||||
QueryWrapper<PsTaskWorkRecord> lqw = new QueryWrapper();
|
||||
lqw.eq("record.del_flag", "0");
|
||||
lqw.in("record.task_appoint_id", map.keySet());
|
||||
List<PsTaskWorkRecordVo> lis = baseMapper.selectListAndUser(lqw);
|
||||
lis.forEach(item->{
|
||||
item.setExecutor(map.get(item.getTaskAppointId()).getExecutor());
|
||||
});
|
||||
|
@ -224,7 +224,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
) cost
|
||||
from ps_contract_info info
|
||||
left join ps_custom_info cus on info.custom_id = cus.id
|
||||
left join ps_contract_pay pay on info.contract_code = pay.contract_code
|
||||
left join ps_contract_pay pay on info.contract_code = pay.contract_code AND pay.pay_status = '1'
|
||||
<if test="startTime != null">
|
||||
AND pay.create_time >= #{startTime}
|
||||
</if>
|
||||
<if test="endTime != null">
|
||||
AND pay.create_time >= #{endTime}
|
||||
</if>
|
||||
left join sys_user_post up on up.user_id = info.custom_manager
|
||||
|
||||
</sql>
|
||||
|
@ -52,7 +52,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
|
||||
|
||||
<select id="selectSumPayContractAmount">
|
||||
select sum(money) from ps_contract_info info
|
||||
select
|
||||
(select sum(money) from ps_contract_info info
|
||||
inner join ps_contract_pay pay on pay.contract_code = info.contract_code and pay.business_type = 1 and pay.del_flag = 0
|
||||
where
|
||||
info.contract_status != 10 and info.del_flag = 0
|
||||
@ -62,6 +63,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<if test="queryParam.endDate != null">
|
||||
and info.create_time < #{queryParam.endDate}
|
||||
</if>
|
||||
)
|
||||
-
|
||||
(select sum(money) from ps_contract_info info
|
||||
inner join ps_contract_pay pay on pay.contract_code = info.contract_code and pay.business_type = 2 and pay.del_flag = 0
|
||||
where
|
||||
info.contract_status != 10 and info.del_flag = 0
|
||||
<if test="queryParam.startDate != null">
|
||||
and info.create_time >= #{queryParam.startDate}
|
||||
</if>
|
||||
<if test="queryParam.endDate != null">
|
||||
and info.create_time < #{queryParam.endDate}
|
||||
</if>
|
||||
)
|
||||
</select>
|
||||
|
||||
|
||||
|
@ -75,9 +75,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
left join ps_company_info com on main.company_id = com.id
|
||||
left join ps_custom_info cus on main.custom_id = cus.id
|
||||
left join sys_user usr on cus.custom_manager = usr.user_id
|
||||
left join ps_contract_business bus on bus.contract_code = con.contract_code and bus.company_id = main.service_company_id and bus.del_flag = '0'
|
||||
</sql><!-- 这注释是上边sql 的,不知道为啥要加这个来着, 因为任务列表分页受影响,所以删除,left join ps_contract_business bus on bus.contract_code = con.contract_code and bus.company_id = main.service_company_id and bus.del_flag = '0'-->
|
||||
|
||||
|
||||
</sql>
|
||||
<select id="queryTaskPageList" resultMap="taskMainResult">
|
||||
<include refid="queryTask"/>
|
||||
${ew.getCustomSqlSegment}
|
||||
@ -121,8 +121,8 @@ 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,
|
||||
|
||||
(select GROUP_CONCAT(business.business_type SEPARATOR ',') from ps_contract_business business where business.contract_code = con.contract_code and business.company_id = main.service_company_id and business.del_flag = '0') as business_type_name
|
||||
(select 1 from ps_contract_business business2 where business2.contract_code = con.contract_code and business2.company_id = main.service_company_id and business2.del_flag = '0' and business2.is_proxy = '1' limit 1) as scom_is_proxy
|
||||
,(select GROUP_CONCAT(business.business_type SEPARATOR ',') from ps_contract_business business where business.contract_code = con.contract_code and business.company_id = main.service_company_id and business.del_flag = '0') as business_type_name
|
||||
-- ,
|
||||
-- appoint.executor appoint_executor,
|
||||
-- appoint.task_desc appoint_task_desc,
|
||||
|
@ -4,4 +4,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.pusong.business.mapper.PsTaskWorkRecordMapper">
|
||||
|
||||
<select id="selectListAndUser" resultType="com.pusong.business.domain.vo.PsTaskWorkRecordVo">
|
||||
select
|
||||
record.*,
|
||||
usr.nick_name createBy
|
||||
from ps_task_work_record record
|
||||
left join sys_user usr on usr.user_id = record.create_by
|
||||
${ew.getCustomSqlSegment}
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
|
@ -12,12 +12,14 @@ public enum RoleEnum {
|
||||
|
||||
superadmin("superadmin","超级管理员"),
|
||||
admin("admin","管理员"),
|
||||
xiaoshou("xiaoshou","销售"),
|
||||
xiaoshou("xsry","销售"),
|
||||
xszg("xszg","销售主管"),
|
||||
zxzg("zxzg","执行主管"),
|
||||
tqzxry("tqzxry","特勤执行人员"),
|
||||
wqzxry("wqzxry","外勤执行人员"),
|
||||
nqzxry("nqzxry","内勤执行人员"),
|
||||
caiwu("caiwu","财务"),
|
||||
cwzg("cwzg","财务主管"),
|
||||
zongcai("zongcai","总裁"),
|
||||
topmanage("topmanage","总经理"),
|
||||
stopacc1("stopaccount","停止代账1"),
|
||||
|
@ -1,6 +1,10 @@
|
||||
package com.pusong.system.controller.system;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import com.pusong.common.core.utils.MapstructUtils;
|
||||
import com.pusong.common.json.utils.JsonUtils;
|
||||
import com.pusong.common.websocket.dto.WebSocketMessageDto;
|
||||
import com.pusong.system.domain.SysNotice;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import com.pusong.common.core.domain.R;
|
||||
import com.pusong.common.core.service.DictService;
|
||||
@ -61,8 +65,11 @@ public class SysNoticeController extends BaseController {
|
||||
if (rows <= 0) {
|
||||
return R.fail();
|
||||
}
|
||||
String type = dictService.getDictLabel("sys_notice_type", notice.getNoticeType());
|
||||
WebSocketUtils.publishAll("[" + type + "] " + notice.getNoticeTitle());
|
||||
String type = dictService.getDictLabel("sys_notice_type", notice.getNoticeContent());
|
||||
notice.setNoticeContent("[" + type + "] " + notice.getNoticeTitle());
|
||||
SysNotice sysNotice = MapstructUtils.convert(notice, SysNotice.class);
|
||||
SysNoticeVo vo = MapstructUtils.convert(sysNotice, SysNoticeVo.class);
|
||||
WebSocketUtils.publishAll(JsonUtils.toJsonString(vo));
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
|
@ -97,7 +97,7 @@ public class SysNoticeBo extends BaseEntity {
|
||||
noticeBo.setNoticeTitle("通知");
|
||||
noticeBo.setStatus("0");
|
||||
noticeBo.setNoticeContent("\uD83C\uDF89【公海商机来袭!】\uD83C\uDF89,【公海】有新客户啦!速来认领,抢占先机!");
|
||||
noticeBo.setRecRole(Arrays.asList(RoleEnum.xiaoshou.getCode()));
|
||||
noticeBo.setRecRole(Arrays.asList(RoleEnum.xiaoshou.getCode(), RoleEnum.xszg.getCode()));
|
||||
noticeBo.setJumpType(0);
|
||||
return noticeBo;
|
||||
}
|
||||
@ -107,32 +107,32 @@ public class SysNoticeBo extends BaseEntity {
|
||||
* @param uid
|
||||
* @return
|
||||
*/
|
||||
public static SysNoticeBo getGonghaiShenpiInstance(long uid){
|
||||
public static SysNoticeBo getGonghaiShenpiInstance(long uid, String customName){
|
||||
SysNoticeBo noticeBo = new SysNoticeBo();
|
||||
noticeBo.setNoticeType("1");
|
||||
noticeBo.setNoticeTitle("通知");
|
||||
noticeBo.setStatus("0");
|
||||
noticeBo.setNoticeContent("认领客户【客户姓名】审批通过,客户已就绪,速速联系,把握良机!");
|
||||
noticeBo.setNoticeContent("认领客户【"+ customName +"】审批通过,客户已就绪,速速联系,把握良机!");
|
||||
noticeBo.setRecUid(uid);
|
||||
noticeBo.setJumpType(0);
|
||||
return noticeBo;
|
||||
}
|
||||
public static SysNoticeBo getGonghaiZhipaiInstance(long uid){
|
||||
public static SysNoticeBo getGonghaiZhipaiInstance(long uid, String customName){
|
||||
SysNoticeBo noticeBo = new SysNoticeBo();
|
||||
noticeBo.setNoticeType("1");
|
||||
noticeBo.setNoticeTitle("通知");
|
||||
noticeBo.setStatus("0");
|
||||
noticeBo.setNoticeContent("\uD83D\uDCAA客户【客户姓名】已派至名下,把握良机,全力出击,成交在望,动起来!");
|
||||
noticeBo.setNoticeContent("\uD83D\uDCAA客户【"+ customName +"】已派至名下,把握良机,全力出击,成交在望,动起来!");
|
||||
noticeBo.setRecUid(uid);
|
||||
noticeBo.setJumpType(0);
|
||||
return noticeBo;
|
||||
}
|
||||
public static SysNoticeBo getGonghaiZhipaiErrorInstance(long uid, String desc){
|
||||
public static SysNoticeBo getGonghaiZhipaiErrorInstance(long uid, String customName, String desc){
|
||||
SysNoticeBo noticeBo = new SysNoticeBo();
|
||||
noticeBo.setNoticeType("1");
|
||||
noticeBo.setNoticeTitle("通知");
|
||||
noticeBo.setStatus("0");
|
||||
noticeBo.setNoticeContent("认领客户【客户姓名】审批未过,另选良缘,销售英雄,再攀高峰!拒绝原因:" + desc);
|
||||
noticeBo.setNoticeContent("认领客户【"+ customName +"】审批未过,另选良缘,销售英雄,再攀高峰!拒绝原因:" + desc);
|
||||
noticeBo.setRecUid(uid);
|
||||
noticeBo.setJumpType(0);
|
||||
return noticeBo;
|
||||
@ -273,7 +273,7 @@ public class SysNoticeBo extends BaseEntity {
|
||||
noticeBo.setNoticeTitle("通知");
|
||||
noticeBo.setStatus("0");
|
||||
noticeBo.setNoticeContent("有一笔【"+ coustomName +"】的待处理的退款,请及时处理。");
|
||||
noticeBo.setRecRole(Arrays.asList(RoleEnum.caiwu.getCode()));
|
||||
noticeBo.setRecRole(Arrays.asList(RoleEnum.caiwu.getCode(), RoleEnum.cwzg.getCode()));
|
||||
noticeBo.setJumpType(0);
|
||||
return noticeBo;
|
||||
}
|
||||
|
@ -160,14 +160,11 @@ public class SysNoticeServiceImpl implements ISysNoticeService {
|
||||
for (SysNotice insertDatum : insertData) {
|
||||
SysNoticeVo vo = MapstructUtils.convert(insertDatum, SysNoticeVo.class);
|
||||
WebSocketMessageDto webSocketMessage = new WebSocketMessageDto();
|
||||
// webSocketMessage.setMessage(bo.getNoticeContent());
|
||||
webSocketMessage.setMessage(JsonUtils.toJsonString(vo));
|
||||
webSocketMessage.setSessionKeys(Arrays.asList(insertDatum.getRecUid()));
|
||||
WebSocketUtils.publishMessage(webSocketMessage);
|
||||
}
|
||||
|
||||
|
||||
|
||||
return 1;
|
||||
}catch (Exception e){
|
||||
logger.error("sendNotice error", e);
|
||||
|
Loading…
Reference in New Issue
Block a user