首页统计和通知
This commit is contained in:
parent
a8880c12cf
commit
a5d565ca97
@ -4,7 +4,15 @@ import cn.dev33.satoken.annotation.SaIgnore;
|
|||||||
import cn.hutool.core.codec.Base64;
|
import cn.hutool.core.codec.Base64;
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
|
import com.pusong.business.domain.PsContractInfo;
|
||||||
import com.pusong.common.core.utils.*;
|
import com.pusong.common.core.utils.*;
|
||||||
|
import com.pusong.system.RoleEnum;
|
||||||
|
import com.pusong.system.domain.SysNotice;
|
||||||
|
import com.pusong.system.domain.vo.SysNoticeVo;
|
||||||
|
import com.pusong.system.mapper.SysNoticeMapper;
|
||||||
import com.pusong.web.service.IAuthStrategy;
|
import com.pusong.web.service.IAuthStrategy;
|
||||||
import com.pusong.web.service.SysRegisterService;
|
import com.pusong.web.service.SysRegisterService;
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
@ -44,6 +52,7 @@ import org.springframework.web.bind.annotation.*;
|
|||||||
|
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@ -70,7 +79,7 @@ public class AuthController {
|
|||||||
private final ISysSocialService socialUserService;
|
private final ISysSocialService socialUserService;
|
||||||
private final ISysClientService clientService;
|
private final ISysClientService clientService;
|
||||||
private final ScheduledExecutorService scheduledExecutorService;
|
private final ScheduledExecutorService scheduledExecutorService;
|
||||||
|
private final SysNoticeMapper sysNoticeMapper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 登录方法
|
* 登录方法
|
||||||
@ -104,10 +113,23 @@ public class AuthController {
|
|||||||
|
|
||||||
Long userId = LoginHelper.getUserId();
|
Long userId = LoginHelper.getUserId();
|
||||||
scheduledExecutorService.schedule(() -> {
|
scheduledExecutorService.schedule(() -> {
|
||||||
WebSocketMessageDto dto = new WebSocketMessageDto();
|
// WebSocketMessageDto dto = new WebSocketMessageDto();
|
||||||
dto.setMessage("欢迎登录pusong-vue-plus后台管理系统");
|
// dto.setMessage("欢迎登录pusong-vue-plus后台管理系统");
|
||||||
|
// dto.setSessionKeys(List.of(userId));
|
||||||
|
// WebSocketUtils.publishMessage(dto);
|
||||||
|
WebSocketMessageDto dto;
|
||||||
|
QueryWrapper<SysNotice> queryWrapper = new QueryWrapper<SysNotice>()
|
||||||
|
.in( "rec_uid", userId);
|
||||||
|
List<SysNotice> sysNotices = sysNoticeMapper.selectList(queryWrapper);
|
||||||
|
for (SysNotice sysNotice : sysNotices) {
|
||||||
|
dto = new WebSocketMessageDto();
|
||||||
|
// dto.setMessage(sysNotice.getNoticeContent());
|
||||||
|
SysNoticeVo vo = MapstructUtils.convert(sysNotice, SysNoticeVo.class);
|
||||||
|
dto.setMessage(JsonUtils.toJsonString(vo));
|
||||||
dto.setSessionKeys(List.of(userId));
|
dto.setSessionKeys(List.of(userId));
|
||||||
WebSocketUtils.publishMessage(dto);
|
WebSocketUtils.publishMessage(dto);
|
||||||
|
}
|
||||||
|
|
||||||
}, 3, TimeUnit.SECONDS);
|
}, 3, TimeUnit.SECONDS);
|
||||||
return R.ok(loginVo);
|
return R.ok(loginVo);
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
package com.pusong.common.mybatis.annotation;
|
package com.pusong.common.mybatis.annotation;
|
||||||
|
|
||||||
|
import com.pusong.common.mybatis.enums.DataScopeType;
|
||||||
|
|
||||||
import java.lang.annotation.*;
|
import java.lang.annotation.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -25,4 +27,10 @@ public @interface DataColumn {
|
|||||||
*/
|
*/
|
||||||
String[] value() default "dept_id";
|
String[] value() default "dept_id";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 仅这个有效
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
DataScopeType dataScopeType() default DataScopeType.NULL;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -21,7 +21,7 @@ import com.pusong.common.mybatis.helper.DataPermissionHelper;
|
|||||||
@Getter
|
@Getter
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public enum DataScopeType {
|
public enum DataScopeType {
|
||||||
|
NULL("-1", "", ""),
|
||||||
/**
|
/**
|
||||||
* 全部数据权限
|
* 全部数据权限
|
||||||
*/
|
*/
|
||||||
@ -45,7 +45,13 @@ public enum DataScopeType {
|
|||||||
/**
|
/**
|
||||||
* 仅本人数据权限
|
* 仅本人数据权限
|
||||||
*/
|
*/
|
||||||
SELF("5", " #{#userName} = #{#user.userId} ", " 1 = 0 ");
|
SELF("5", " #{#userName} = #{#user.userId} ", " 1 = 0 "),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 财务合同部门及以下数据
|
||||||
|
*/
|
||||||
|
CAIWU_HETONG("6", " #{#deptName} = #{#user.deptId} ", " 1 = 0 ")
|
||||||
|
;
|
||||||
|
|
||||||
private final String code;
|
private final String code;
|
||||||
|
|
||||||
|
@ -122,17 +122,21 @@ public class PlusDataPermissionHandler {
|
|||||||
}
|
}
|
||||||
// 全部数据权限直接返回
|
// 全部数据权限直接返回
|
||||||
if (type == DataScopeType.ALL) {
|
if (type == DataScopeType.ALL) {
|
||||||
return "";
|
// return "";
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
boolean isSuccess = false;
|
boolean isSuccess = false;
|
||||||
for (DataColumn dataColumn : dataColumns) {
|
for (DataColumn dataColumn : dataColumns) {
|
||||||
|
if (type == DataScopeType.CAIWU_HETONG && DataScopeType.CAIWU_HETONG != dataColumn.dataScopeType()){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (dataColumn.key().length != dataColumn.value().length) {
|
if (dataColumn.key().length != dataColumn.value().length) {
|
||||||
throw new ServiceException("角色数据范围异常 => key与value长度不匹配");
|
throw new ServiceException("角色数据范围异常 => key与value长度不匹配");
|
||||||
}
|
}
|
||||||
// 不包含 key 变量 则不处理
|
// 不包含 key 变量 则不处理
|
||||||
if (!StringUtils.containsAny(type.getSqlTemplate(),
|
if (!StringUtils.containsAny(type.getSqlTemplate(),
|
||||||
Arrays.stream(dataColumn.key()).map(key -> "#" + key).toArray(String[]::new)
|
Arrays.stream(dataColumn.key()).map(key -> "#" + key).toArray(String[]::new))) {
|
||||||
)) {
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
// 设置注解变量 key 为表达式变量 value 为变量值
|
// 设置注解变量 key 为表达式变量 value 为变量值
|
||||||
|
@ -36,6 +36,7 @@ import java.util.Map;
|
|||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/business/home")
|
@RequestMapping("/business/home")
|
||||||
|
@SaIgnore
|
||||||
public class HomeController extends BaseController {
|
public class HomeController extends BaseController {
|
||||||
|
|
||||||
private final HomeService homeService;
|
private final HomeService homeService;
|
||||||
@ -96,19 +97,19 @@ public class HomeController extends BaseController {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@GetMapping("/getUserContractAndPayInfo")
|
@GetMapping("/getUserContractAndPayInfo")
|
||||||
public R<Collection<UserAmountInfoVo>> getUserContractAndPayInfo(@RequestParam() Integer type){
|
public R<UserAmountVo> getUserContractAndPayInfo(@RequestParam() Integer type, @RequestParam() Boolean isCaiwu){
|
||||||
return R.ok(homeService.getUserContractAndPayInfo(type));
|
return R.ok(homeService.getUserContractAndPayInfo(type, isCaiwu));
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 首页大盘数据:人员成交数据列表
|
||||||
|
* @param type 1本月 2上月 3本季度 4本年 5所有
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("business:salary:list")
|
||||||
|
@GetMapping("/getUserContractAmounts")
|
||||||
|
public R<List<UserContractAmountVo>> getUserContractAmounts(@RequestParam() Integer type, @RequestParam() Long deptId) {
|
||||||
|
return R.ok(homeService.getUserContractAmountsByDeptId(type,deptId));//缺少已回款未回款金额
|
||||||
}
|
}
|
||||||
// /**
|
|
||||||
// * 首页大盘数据:人员成交数据列表
|
|
||||||
// * @param type 1本月 2上月 3本季度 4本年 5所有
|
|
||||||
// * @return
|
|
||||||
// */
|
|
||||||
// @SaCheckPermission("business:salary:list")
|
|
||||||
// @GetMapping("/getUserContractAmounts")
|
|
||||||
// public R<List<UserContractAmountVo>> getUserContractAmounts(@RequestParam() Integer type, @RequestParam() Long deptId) {
|
|
||||||
// return R.ok(homeService.getUserContractAmountsByDeptId(type,deptId));?//缺少已回款未回款金额
|
|
||||||
// }
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 首页大盘数据:人员转介绍成交数据列表
|
* 首页大盘数据:人员转介绍成交数据列表
|
||||||
@ -117,21 +118,21 @@ public class HomeController extends BaseController {
|
|||||||
*/
|
*/
|
||||||
@SaCheckPermission("business:salary:list")
|
@SaCheckPermission("business:salary:list")
|
||||||
@GetMapping("/getUserContractSourceAmounts")
|
@GetMapping("/getUserContractSourceAmounts")
|
||||||
public R<List<UserContractAmountVo>> getUserContractSourceAmounts(@RequestParam() Integer type, @RequestParam() Long deptId){
|
public R<UserAmountVo> getUserContractSourceAmounts(@RequestParam() Integer type, @RequestParam() Boolean isCaiwu){
|
||||||
return R.ok(homeService.getUserContractSourceAmountsByDeptId(type,deptId));//缺少已回款未回款金额
|
return R.ok(homeService.getUserContractSourceAmountsByDeptId(type, isCaiwu));//缺少已回款未回款金额
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// /**
|
/**
|
||||||
// * 首页大盘数据:销售个人数据
|
* 首页大盘数据:销售个人数据
|
||||||
// * @param type 1本月 2上月 3本季度 4本年 5所有
|
* @param type 1本月 2上月 3本季度 4本年 5所有
|
||||||
// * @return
|
* @return
|
||||||
// */
|
*/
|
||||||
// @SaCheckPermission("business:salary:list")
|
@SaCheckPermission("business:salary:list")
|
||||||
// @GetMapping("/channelByUser")
|
@GetMapping("/channelByUser")
|
||||||
// public R<ChannelAmountVo> channelByUser(@RequestParam() Integer type) {
|
public R<ChannelAmountVo> channelByUser(@RequestParam() Integer type) {
|
||||||
// return R.ok(homeService.byChannel(type,2));
|
return R.ok(homeService.byChannel(type,2));
|
||||||
// }
|
}
|
||||||
/**
|
/**
|
||||||
* 首页大盘数据:任务完成情况
|
* 首页大盘数据:任务完成情况
|
||||||
* @param type 1本月 2上月 3本季度 4本年 5所有
|
* @param type 1本月 2上月 3本季度 4本年 5所有
|
||||||
@ -158,7 +159,7 @@ public class HomeController extends BaseController {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@GetMapping("/salasData")
|
@GetMapping("/salasData")
|
||||||
public R<Map<String,Object>> salasData(@RequestParam() Integer type) {
|
public R<SalasVo> salasData(@RequestParam() Integer type) {
|
||||||
return R.ok(homeService.salasData(type));
|
return R.ok(homeService.salasData(type));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -28,6 +28,11 @@ public class ChannelAmountVo {
|
|||||||
*/
|
*/
|
||||||
private BigDecimal all;
|
private BigDecimal all;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 总roi
|
||||||
|
*/
|
||||||
|
private BigDecimal roi;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 各渠道成交金额
|
* 各渠道成交金额
|
||||||
*/
|
*/
|
||||||
|
@ -33,4 +33,8 @@ public class ChannelPayInfo {
|
|||||||
*/
|
*/
|
||||||
private BigDecimal money;
|
private BigDecimal money;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 成本
|
||||||
|
*/
|
||||||
|
private BigDecimal cost;
|
||||||
}
|
}
|
||||||
|
@ -30,4 +30,20 @@ public class DataAmountVo {
|
|||||||
* 未回款金额
|
* 未回款金额
|
||||||
*/
|
*/
|
||||||
private BigDecimal unPayMoney;
|
private BigDecimal unPayMoney;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目成本
|
||||||
|
*/
|
||||||
|
private BigDecimal cost;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 投入
|
||||||
|
*/
|
||||||
|
private BigDecimal investCapital;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* roi
|
||||||
|
*/
|
||||||
|
private BigDecimal roi;
|
||||||
}
|
}
|
||||||
|
@ -22,6 +22,11 @@ public class RenewalInfoVo {
|
|||||||
*/
|
*/
|
||||||
private Integer contractNum;
|
private Integer contractNum;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 到期合同总额
|
||||||
|
*/
|
||||||
|
private BigDecimal contractAmount;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 已续费合同总数
|
* 已续费合同总数
|
||||||
*/
|
*/
|
||||||
@ -41,6 +46,14 @@ public class RenewalInfoVo {
|
|||||||
*/
|
*/
|
||||||
private BigDecimal unPayMoney;
|
private BigDecimal unPayMoney;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 已回款客户占比
|
||||||
|
*/
|
||||||
|
private String customPer;
|
||||||
|
/**
|
||||||
|
* 未回款客户占比
|
||||||
|
*/
|
||||||
|
private String unPaycustomPer;
|
||||||
/**
|
/**
|
||||||
* 已回款金额占比
|
* 已回款金额占比
|
||||||
*/
|
*/
|
||||||
|
@ -21,6 +21,16 @@ public class ReturnMoneyInfoVo {
|
|||||||
* 当月合同总数
|
* 当月合同总数
|
||||||
*/
|
*/
|
||||||
private Integer contractNum;
|
private Integer contractNum;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 当月合同总数
|
||||||
|
*/
|
||||||
|
private Integer returnContractNum;
|
||||||
|
/**
|
||||||
|
* 当月合同总数
|
||||||
|
*/
|
||||||
|
private Integer noContractNum;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 当月合同回款金额
|
* 当月合同回款金额
|
||||||
*/
|
*/
|
||||||
|
@ -0,0 +1,61 @@
|
|||||||
|
package com.pusong.business.domain.vo.home;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.math.RoundingMode;
|
||||||
|
import java.util.Comparator;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class SalasVo {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 当前时间
|
||||||
|
*/
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
|
||||||
|
private Date currentDate = new Date();
|
||||||
|
/**
|
||||||
|
* 统计范围
|
||||||
|
*/
|
||||||
|
private String dateStr;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 公海数量
|
||||||
|
*/
|
||||||
|
private int gonghaiNum;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 没有回访记录的客户(待跟进客户)
|
||||||
|
*/
|
||||||
|
private int noCallbackRecordNum;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 有回访记录的客户(回访客户数)
|
||||||
|
*/
|
||||||
|
private int callbackRecordNum;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生成合同数
|
||||||
|
*/
|
||||||
|
private int contractNum;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 已成交总额
|
||||||
|
*/
|
||||||
|
private BigDecimal sumContractAmount;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 已回款金额
|
||||||
|
*/
|
||||||
|
private BigDecimal payContractAmount;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 未回款金额
|
||||||
|
*/
|
||||||
|
private BigDecimal unPayContractAmount;
|
||||||
|
|
||||||
|
}
|
@ -33,6 +33,46 @@ public class UserAmountInfoVo {
|
|||||||
*/
|
*/
|
||||||
private BigDecimal unPaySumAmount=new BigDecimal(0);
|
private BigDecimal unPaySumAmount=new BigDecimal(0);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 托管类型合同总金额 类型号:4
|
||||||
|
*/
|
||||||
|
private BigDecimal tuoGuanAmount = new BigDecimal(0);
|
||||||
|
/**
|
||||||
|
* 续费类型合同总金额
|
||||||
|
*/
|
||||||
|
private BigDecimal xuFeiAmount = new BigDecimal(0);
|
||||||
|
/**
|
||||||
|
* 软件定制类型合同总金额 类型号:9
|
||||||
|
*/
|
||||||
|
private BigDecimal softwareDevAmount = new BigDecimal(0);
|
||||||
|
/**
|
||||||
|
* 其他类型合同总金额
|
||||||
|
*/
|
||||||
|
private BigDecimal otherAmount = new BigDecimal(0);
|
||||||
|
/**
|
||||||
|
* 转介绍的合同金额
|
||||||
|
*/
|
||||||
|
private BigDecimal jieShaoAmount = new BigDecimal(0);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 与其他人合同金额的占比
|
||||||
|
*/
|
||||||
|
private String amountPer;
|
||||||
|
|
||||||
|
|
||||||
|
public void addTuoGuanAmount(BigDecimal amount){
|
||||||
|
tuoGuanAmount=tuoGuanAmount.add(amount);
|
||||||
|
}
|
||||||
|
public void addXuFeiAmount(BigDecimal amount){
|
||||||
|
xuFeiAmount=xuFeiAmount.add(amount);
|
||||||
|
}
|
||||||
|
public void addSoftwareDevAmount(BigDecimal amount){
|
||||||
|
softwareDevAmount=softwareDevAmount.add(amount);
|
||||||
|
}
|
||||||
|
public void addOtherAmount(BigDecimal amount) {
|
||||||
|
otherAmount=otherAmount.add(amount);
|
||||||
|
}
|
||||||
|
|
||||||
public void addContractNum(){
|
public void addContractNum(){
|
||||||
contractNum++;
|
contractNum++;
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,46 @@
|
|||||||
|
package com.pusong.business.domain.vo.home;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class UserAmountVo {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 当前时间
|
||||||
|
*/
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
|
||||||
|
private Date currentDate = new Date();
|
||||||
|
/**
|
||||||
|
* 统计范围
|
||||||
|
*/
|
||||||
|
private String dateStr;
|
||||||
|
/**
|
||||||
|
* 成交总金额
|
||||||
|
*/
|
||||||
|
private BigDecimal all;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 各人员成交金额
|
||||||
|
*/
|
||||||
|
private Collection<UserAmountInfoVo> userAmountList;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 转介绍总计数据
|
||||||
|
*/
|
||||||
|
private UserContractAmountVo daPan;
|
||||||
|
/**
|
||||||
|
* 转介绍
|
||||||
|
*/
|
||||||
|
private Collection<UserContractAmountVo> zjsList;
|
||||||
|
|
||||||
|
}
|
@ -38,4 +38,10 @@ public class UserContractAmountInfo {
|
|||||||
* 已付款金额
|
* 已付款金额
|
||||||
*/
|
*/
|
||||||
private BigDecimal payedMoney;
|
private BigDecimal payedMoney;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 与其他人合同金额的占比
|
||||||
|
*/
|
||||||
|
private String amountPer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,22 +16,56 @@ public class UserContractAmountVo {
|
|||||||
* 用户名字
|
* 用户名字
|
||||||
*/
|
*/
|
||||||
private String nickName;
|
private String nickName;
|
||||||
/**
|
|
||||||
* 与其他人合同金额的占比
|
|
||||||
*/
|
|
||||||
private String amountPer;
|
|
||||||
/**
|
|
||||||
* 转介绍合同数量
|
|
||||||
*/
|
|
||||||
private Integer jieShaoContractNum = 0;
|
|
||||||
/**
|
/**
|
||||||
* 转介绍合同金额占比
|
* 转介绍合同金额占比
|
||||||
*/
|
*/
|
||||||
private String jieShaoPer;
|
private String jieShaoPer;
|
||||||
|
/**
|
||||||
|
* 其他合同金额占比
|
||||||
|
*/
|
||||||
|
private String otherPer;
|
||||||
/**
|
/**
|
||||||
* 用户所有合同总金额
|
* 用户所有合同总金额
|
||||||
*/
|
*/
|
||||||
private BigDecimal sumAmount = new BigDecimal(0);
|
private BigDecimal sumAmount = new BigDecimal(0);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 转介绍的合同金额
|
||||||
|
*/
|
||||||
|
private BigDecimal jieShaoAmount = new BigDecimal(0);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 其他类型合同总金额
|
||||||
|
*/
|
||||||
|
private BigDecimal otherAmount = new BigDecimal(0);
|
||||||
|
/**
|
||||||
|
* 转介绍合同数量
|
||||||
|
*/
|
||||||
|
private Integer jieShaoContractNum = 0;
|
||||||
|
/**
|
||||||
|
* 其他合同数量
|
||||||
|
*/
|
||||||
|
private Integer otherContractNum = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 已支付总金额
|
||||||
|
*/
|
||||||
|
private BigDecimal jsPayedSumAmount=new BigDecimal(0);
|
||||||
|
private BigDecimal otherPayedSumAmount=new BigDecimal(0);
|
||||||
|
/**
|
||||||
|
* 未支付金额
|
||||||
|
*/
|
||||||
|
private BigDecimal jsUnPaySumAmount=new BigDecimal(0);
|
||||||
|
private BigDecimal otherUnPaySumAmount=new BigDecimal(0);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 与其他人合同金额的占比
|
||||||
|
*/
|
||||||
|
private String amountPer;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 托管类型合同总金额 类型号:4
|
* 托管类型合同总金额 类型号:4
|
||||||
*/
|
*/
|
||||||
@ -44,14 +78,8 @@ public class UserContractAmountVo {
|
|||||||
* 软件定制类型合同总金额 类型号:9
|
* 软件定制类型合同总金额 类型号:9
|
||||||
*/
|
*/
|
||||||
private BigDecimal softwareDevAmount = new BigDecimal(0);
|
private BigDecimal softwareDevAmount = new BigDecimal(0);
|
||||||
/**
|
|
||||||
* 其他类型合同总金额
|
|
||||||
*/
|
|
||||||
private BigDecimal otherAmount = new BigDecimal(0);
|
|
||||||
/**
|
|
||||||
* 转介绍的合同金额
|
|
||||||
*/
|
|
||||||
private BigDecimal jieShaoAmount = new BigDecimal(0);
|
|
||||||
|
|
||||||
public void addSumAmount(BigDecimal amount){
|
public void addSumAmount(BigDecimal amount){
|
||||||
sumAmount=sumAmount.add(amount);
|
sumAmount=sumAmount.add(amount);
|
||||||
@ -74,4 +102,24 @@ public class UserContractAmountVo {
|
|||||||
public void addJieShaoContractNum() {
|
public void addJieShaoContractNum() {
|
||||||
jieShaoContractNum++;
|
jieShaoContractNum++;
|
||||||
}
|
}
|
||||||
|
public void addOtherContractNum() {
|
||||||
|
otherContractNum++;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addJsPayedSumAmount(BigDecimal amount){
|
||||||
|
if(amount==null){return;}
|
||||||
|
jsPayedSumAmount = jsPayedSumAmount.add(amount);
|
||||||
|
}
|
||||||
|
public void addJsUnPayedSumAmount(BigDecimal amount){
|
||||||
|
if(amount==null){return;}
|
||||||
|
jsUnPaySumAmount = jsUnPaySumAmount.add(amount);
|
||||||
|
}
|
||||||
|
public void addOtherPayedSumAmount(BigDecimal amount){
|
||||||
|
if(amount==null){return;}
|
||||||
|
otherPayedSumAmount = otherPayedSumAmount.add(amount);
|
||||||
|
}
|
||||||
|
public void addOtherUnPayedSumAmount(BigDecimal amount){
|
||||||
|
if(amount==null){return;}
|
||||||
|
otherUnPaySumAmount = otherUnPaySumAmount.add(amount);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -11,10 +11,12 @@ import com.pusong.business.domain.vo.PsContractInfoVo;
|
|||||||
import com.pusong.business.domain.vo.PsCustomInfoVo;
|
import com.pusong.business.domain.vo.PsCustomInfoVo;
|
||||||
import com.pusong.business.domain.vo.PsSalaryContractVo;
|
import com.pusong.business.domain.vo.PsSalaryContractVo;
|
||||||
import com.pusong.business.domain.vo.home.ChannelPayInfo;
|
import com.pusong.business.domain.vo.home.ChannelPayInfo;
|
||||||
|
import com.pusong.business.domain.vo.home.SalasVo;
|
||||||
import com.pusong.business.domain.vo.home.UserContractAmountInfo;
|
import com.pusong.business.domain.vo.home.UserContractAmountInfo;
|
||||||
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.common.mybatis.enums.DataScopeType;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
@ -31,7 +33,8 @@ public interface PsContractInfoMapper extends BaseMapperPlus<PsContractInfo, PsC
|
|||||||
|
|
||||||
|
|
||||||
@DataPermission({
|
@DataPermission({
|
||||||
@DataColumn(key = "userName", value = "info.custom_manager")
|
@DataColumn(key = "userName", value = "info.custom_manager"),
|
||||||
|
@DataColumn(key = "deptName", value = "us.dept_id", dataScopeType = DataScopeType.CAIWU_HETONG)
|
||||||
})
|
})
|
||||||
Page<PsContractInfoVo> selectPageContractList(@Param("page") Page<PsContractInfo> page, @Param(Constants.WRAPPER) Wrapper<PsContractInfo> queryWrapper);
|
Page<PsContractInfoVo> selectPageContractList(@Param("page") Page<PsContractInfo> page, @Param(Constants.WRAPPER) Wrapper<PsContractInfo> queryWrapper);
|
||||||
|
|
||||||
@ -49,9 +52,9 @@ public interface PsContractInfoMapper extends BaseMapperPlus<PsContractInfo, PsC
|
|||||||
List<PsSalaryContract> querySalaryListByCodes(@Param(Constants.WRAPPER) Wrapper<PsContractInfo> queryWrapper);
|
List<PsSalaryContract> querySalaryListByCodes(@Param(Constants.WRAPPER) Wrapper<PsContractInfo> queryWrapper);
|
||||||
|
|
||||||
List<Map<String,Object>> homePageReturnMoneyInfo(@Param("queryParam") Map<String, Object> queryParam);
|
List<Map<String,Object>> homePageReturnMoneyInfo(@Param("queryParam") Map<String, Object> queryParam);
|
||||||
List<UserContractAmountInfo> getUserContractSourceAmountsByDeptId(@Param("queryParam") Map<String, Object> queryParam);
|
List<UserContractAmountInfo> getUserContractSourceAmountsByDeptId(@Param("queryParam") Map<String, Object> queryParam, @Param(Constants.WRAPPER) Wrapper<PsContractInfo> queryWrapper);
|
||||||
List<UserContractAmountInfo> getUserContractTypeAmountsByDeptId(@Param("queryParam") Map<String, Object> queryParam);
|
List<UserContractAmountInfo> getUserContractTypeAmountsByDeptId(@Param("queryParam") Map<String, Object> queryParam);
|
||||||
List<UserContractAmountInfo> getUserContractAndPayInfo(@Param("queryParam") Map<String, Object> queryParam);
|
List<UserContractAmountInfo> getUserContractAndPayInfo(@Param("queryParam") Map<String, Object> queryParam, @Param(Constants.WRAPPER) Wrapper<PsContractInfo> queryWrapper);
|
||||||
|
|
||||||
|
|
||||||
//首页查询各个渠道成交的合同
|
//首页查询各个渠道成交的合同
|
||||||
@ -62,7 +65,5 @@ public interface PsContractInfoMapper extends BaseMapperPlus<PsContractInfo, PsC
|
|||||||
})
|
})
|
||||||
List<ChannelPayInfo> byChannelUser(@Param(Constants.WRAPPER) Wrapper<PsContractInfo> queryWrapper);
|
List<ChannelPayInfo> byChannelUser(@Param(Constants.WRAPPER) Wrapper<PsContractInfo> queryWrapper);
|
||||||
|
|
||||||
List<PsContractBusinessVo> selectRenewalContract(@Param(Constants.WRAPPER) Wrapper<PsContractInfo> queryWrapper);
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -10,6 +10,7 @@ import com.pusong.business.domain.vo.PsCustomerRecordVo;
|
|||||||
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.common.mybatis.enums.DataScopeType;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -29,7 +30,7 @@ public interface PsCustomInfoMapper extends BaseMapperPlus<PsCustomInfo, PsCusto
|
|||||||
List<PsCustomInfo> selectList(@Param(Constants.WRAPPER) Wrapper<PsCustomInfo> queryWrapper);
|
List<PsCustomInfo> selectList(@Param(Constants.WRAPPER) Wrapper<PsCustomInfo> queryWrapper);
|
||||||
|
|
||||||
@DataPermission({
|
@DataPermission({
|
||||||
@DataColumn(key = "deptName", value = "info.create_dept"),
|
@DataColumn(key = "deptName", value = "info.create_dept", dataScopeType = DataScopeType.CAIWU_HETONG),
|
||||||
@DataColumn(key = "userName", value = "info.custom_manager")
|
@DataColumn(key = "userName", value = "info.custom_manager")
|
||||||
})
|
})
|
||||||
Page<PsCustomInfoVo> selectPageCustomerList(@Param("page") Page<PsCustomInfo> page, @Param(Constants.WRAPPER) Wrapper<PsCustomInfo> queryWrapper);
|
Page<PsCustomInfoVo> selectPageCustomerList(@Param("page") Page<PsCustomInfo> page, @Param(Constants.WRAPPER) Wrapper<PsCustomInfo> queryWrapper);
|
||||||
|
@ -0,0 +1,52 @@
|
|||||||
|
package com.pusong.business.mapper;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.toolkit.Constants;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
import com.pusong.business.domain.PsContractInfo;
|
||||||
|
import com.pusong.business.domain.PsSalary;
|
||||||
|
import com.pusong.business.domain.PsSalaryContract;
|
||||||
|
import com.pusong.business.domain.vo.PsContractBusinessVo;
|
||||||
|
import com.pusong.business.domain.vo.PsContractInfoVo;
|
||||||
|
import com.pusong.business.domain.vo.home.ChannelPayInfo;
|
||||||
|
import com.pusong.business.domain.vo.home.SalasVo;
|
||||||
|
import com.pusong.business.domain.vo.home.UserContractAmountInfo;
|
||||||
|
import com.pusong.common.mybatis.annotation.DataColumn;
|
||||||
|
import com.pusong.common.mybatis.annotation.DataPermission;
|
||||||
|
import com.pusong.common.mybatis.core.mapper.BaseMapperPlus;
|
||||||
|
import com.pusong.common.mybatis.enums.DataScopeType;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
|
||||||
|
public interface PsHomeMapper extends BaseMapperPlus<PsSalary, SalasVo> {
|
||||||
|
List<PsContractBusinessVo> selectRenewalContract(@Param(Constants.WRAPPER) Wrapper<PsContractInfo> queryWrapper);
|
||||||
|
|
||||||
|
int selectGonghaiNum(@Param("queryParam") Map<String, Object> queryParam);
|
||||||
|
|
||||||
|
@DataPermission({
|
||||||
|
@DataColumn(key = "userName", value = "cus.custom_manager")
|
||||||
|
})
|
||||||
|
int selectCallbackRecordNum(@Param("queryParam") Map<String, Object> queryParam);
|
||||||
|
|
||||||
|
|
||||||
|
@DataPermission({
|
||||||
|
@DataColumn(key = "userName", value = "cus.custom_manager")
|
||||||
|
})
|
||||||
|
int selectNoCallbackRecordNum(@Param("queryParam") Map<String, Object> queryParam);
|
||||||
|
|
||||||
|
|
||||||
|
@DataPermission({
|
||||||
|
@DataColumn(key = "userName", value = "info.custom_manager")
|
||||||
|
})
|
||||||
|
SalasVo selectContractNumAndAmount(@Param("queryParam") Map<String, Object> queryParam);
|
||||||
|
|
||||||
|
|
||||||
|
@DataPermission({
|
||||||
|
@DataColumn(key = "userName", value = "info.custom_manager")
|
||||||
|
})
|
||||||
|
BigDecimal selectSumPayContractAmount(@Param("queryParam") Map<String, Object> queryParam);
|
||||||
|
}
|
@ -16,9 +16,9 @@ public interface HomeService {
|
|||||||
|
|
||||||
ReturnMoneyInfoVo returnMoney(Integer type);
|
ReturnMoneyInfoVo returnMoney(Integer type);
|
||||||
RenewalInfoVo renewal(Integer type);
|
RenewalInfoVo renewal(Integer type);
|
||||||
List<UserContractAmountVo> getUserContractSourceAmountsByDeptId(Integer type,Long deptId);
|
UserAmountVo getUserContractSourceAmountsByDeptId(Integer type, boolean isCaiwu);
|
||||||
List<UserContractAmountVo> getUserContractAmountsByDeptId(Integer type, Long deptId);
|
List<UserContractAmountVo> getUserContractAmountsByDeptId(Integer type, Long deptId);
|
||||||
Collection<UserAmountInfoVo> getUserContractAndPayInfo(Integer type);
|
UserAmountVo getUserContractAndPayInfo(Integer type, boolean isCaiwu);
|
||||||
/**
|
/**
|
||||||
* 首页大盘数据:各渠道成交
|
* 首页大盘数据:各渠道成交
|
||||||
* @param type
|
* @param type
|
||||||
@ -43,5 +43,5 @@ public interface HomeService {
|
|||||||
* @param type
|
* @param type
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
Map<String,Object> salasData(Integer type);
|
SalasVo salasData(Integer type);
|
||||||
}
|
}
|
||||||
|
@ -25,6 +25,7 @@ import com.pusong.common.core.utils.DateUtils;
|
|||||||
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.satoken.utils.LoginHelper;
|
import com.pusong.common.satoken.utils.LoginHelper;
|
||||||
|
import com.pusong.system.RoleEnum;
|
||||||
import com.pusong.system.domain.bo.SysNoticeBo;
|
import com.pusong.system.domain.bo.SysNoticeBo;
|
||||||
import com.pusong.system.service.ISysNoticeService;
|
import com.pusong.system.service.ISysNoticeService;
|
||||||
import jakarta.annotation.PostConstruct;
|
import jakarta.annotation.PostConstruct;
|
||||||
@ -86,8 +87,12 @@ public abstract class ApproverAbstractServiceImpl implements ApproverService {
|
|||||||
|
|
||||||
LoginUser loginUser = LoginHelper.getLoginUser();
|
LoginUser loginUser = LoginHelper.getLoginUser();
|
||||||
|
|
||||||
|
if (approverType() == ApproverTypeEnum.STOPACCOUNT){
|
||||||
|
noticeService.sendNotice(SysNoticeBo.getWaitApplyInstance(loginUser.getNickname(), RoleEnum.stopacc2.getCode()));
|
||||||
|
}else{
|
||||||
noticeService.sendNotice(SysNoticeBo.getWaitApplyInstance(loginUser.getNickname(), approverType().getMenuEnum()));
|
noticeService.sendNotice(SysNoticeBo.getWaitApplyInstance(loginUser.getNickname(), approverType().getMenuEnum()));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
protected abstract ApproverTypeEnum approverType();
|
protected abstract ApproverTypeEnum approverType();
|
||||||
@PostConstruct
|
@PostConstruct
|
||||||
|
@ -22,8 +22,11 @@ import com.pusong.business.service.IPsContractInfoService;
|
|||||||
import com.pusong.common.core.utils.DateUtils;
|
import com.pusong.common.core.utils.DateUtils;
|
||||||
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.system.RoleEnum;
|
||||||
import com.pusong.system.domain.bo.SysNoticeBo;
|
import com.pusong.system.domain.bo.SysNoticeBo;
|
||||||
|
import com.pusong.system.domain.vo.SysUserVo;
|
||||||
import com.pusong.system.service.ISysNoticeService;
|
import com.pusong.system.service.ISysNoticeService;
|
||||||
|
import com.pusong.system.service.ISysUserService;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@ -53,6 +56,8 @@ public class StopAccountServiceImpl extends ApproverAbstractServiceImpl {
|
|||||||
private final IPsCompanyInfoService psCompanyInfoService;
|
private final IPsCompanyInfoService psCompanyInfoService;
|
||||||
|
|
||||||
private final ISysNoticeService noticeService;
|
private final ISysNoticeService noticeService;
|
||||||
|
|
||||||
|
private final ISysUserService userService;
|
||||||
@Override
|
@Override
|
||||||
public void success(PsApproverRecord psApproverRecord) {
|
public void success(PsApproverRecord psApproverRecord) {
|
||||||
if (ApproverStepEnum.INIT.getCode().equals(psApproverRecord.getUpdateData())){
|
if (ApproverStepEnum.INIT.getCode().equals(psApproverRecord.getUpdateData())){
|
||||||
@ -62,6 +67,9 @@ public class StopAccountServiceImpl extends ApproverAbstractServiceImpl {
|
|||||||
|
|
||||||
PsCompanyInfoVo psCompanyInfoVo = psCompanyInfoService.queryById(Long.valueOf(psApproverRecord.getBusinessId()));
|
PsCompanyInfoVo psCompanyInfoVo = psCompanyInfoService.queryById(Long.valueOf(psApproverRecord.getBusinessId()));
|
||||||
noticeService.sendNotice(SysNoticeBo.getStopAccount1Instance(psApproverRecord.getCreateBy(), psCompanyInfoVo.getCompanyName()));
|
noticeService.sendNotice(SysNoticeBo.getStopAccount1Instance(psApproverRecord.getCreateBy(), psCompanyInfoVo.getCompanyName()));
|
||||||
|
|
||||||
|
SysUserVo sysUserVo = userService.selectUserById(psApproverRecord.getCreateBy());
|
||||||
|
noticeService.sendNotice(SysNoticeBo.getWaitApplyInstance(sysUserVo.getNickName(), RoleEnum.stopacc1.getCode()));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (ApproverStepEnum.CW_APPLY.getCode().equals(psApproverRecord.getUpdateData())){
|
if (ApproverStepEnum.CW_APPLY.getCode().equals(psApproverRecord.getUpdateData())){
|
||||||
|
@ -16,6 +16,7 @@ import com.pusong.business.mapper.*;
|
|||||||
import com.pusong.business.service.HomeService;
|
import com.pusong.business.service.HomeService;
|
||||||
import com.pusong.common.core.constant.CacheNames;
|
import com.pusong.common.core.constant.CacheNames;
|
||||||
import com.pusong.common.core.utils.DateUtils;
|
import com.pusong.common.core.utils.DateUtils;
|
||||||
|
import com.pusong.system.RoleEnum;
|
||||||
import com.pusong.system.domain.bo.SysDictDataBo;
|
import com.pusong.system.domain.bo.SysDictDataBo;
|
||||||
import com.pusong.system.domain.vo.SysDictDataVo;
|
import com.pusong.system.domain.vo.SysDictDataVo;
|
||||||
import com.pusong.system.service.ISysDictDataService;
|
import com.pusong.system.service.ISysDictDataService;
|
||||||
@ -38,7 +39,7 @@ import java.util.stream.Collectors;
|
|||||||
public class HomeServiceImpl implements HomeService {
|
public class HomeServiceImpl implements HomeService {
|
||||||
|
|
||||||
private static final Logger log = LoggerFactory.getLogger(HomeServiceImpl.class);
|
private static final Logger log = LoggerFactory.getLogger(HomeServiceImpl.class);
|
||||||
|
private final PsHomeMapper psHomeMapper;
|
||||||
private final PsContractInfoMapper psContractInfoMapper;
|
private final PsContractInfoMapper psContractInfoMapper;
|
||||||
private final PsContractPayMapper payMapper;
|
private final PsContractPayMapper payMapper;
|
||||||
private final PsTaskMainMapper taskMainMapper;
|
private final PsTaskMainMapper taskMainMapper;
|
||||||
@ -47,7 +48,7 @@ public class HomeServiceImpl implements HomeService {
|
|||||||
private final ISysDictDataService dictDataService;
|
private final ISysDictDataService dictDataService;
|
||||||
|
|
||||||
private final PsContractBusinessMapper psContractBusinessMapper;
|
private final PsContractBusinessMapper psContractBusinessMapper;
|
||||||
|
private final PsCustomInfoMapper psCustomInfoMapper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询成交总金额
|
* 查询成交总金额
|
||||||
@ -61,7 +62,7 @@ public class HomeServiceImpl implements HomeService {
|
|||||||
LocalDate endDate = (LocalDate)mapParam.get("endDate");
|
LocalDate endDate = (LocalDate)mapParam.get("endDate");
|
||||||
String date = (String)mapParam.get("date");
|
String date = (String)mapParam.get("date");
|
||||||
|
|
||||||
log.info("查询日期:{}到{}",startDate,endDate);
|
log.info("查询日期:{}到{}", startDate, endDate);
|
||||||
List<PsContractInfo> list = psContractInfoMapper.selectList(Wrappers.<PsContractInfo>lambdaQuery()
|
List<PsContractInfo> list = psContractInfoMapper.selectList(Wrappers.<PsContractInfo>lambdaQuery()
|
||||||
.select(PsContractInfo::getContractCode, PsContractInfo::getIsDue, PsContractInfo::getContractAmount)
|
.select(PsContractInfo::getContractCode, PsContractInfo::getIsDue, PsContractInfo::getContractAmount)
|
||||||
.ne(PsContractInfo::getIsCancel, CommonStatusEnum.SUCCESS.getCode())
|
.ne(PsContractInfo::getIsCancel, CommonStatusEnum.SUCCESS.getCode())
|
||||||
@ -122,12 +123,12 @@ public class HomeServiceImpl implements HomeService {
|
|||||||
switch (type){
|
switch (type){
|
||||||
case 1://本月
|
case 1://本月
|
||||||
startDate = now.withDayOfMonth(1);
|
startDate = now.withDayOfMonth(1);
|
||||||
date =startDate.format(df);
|
date = startDate.format(df);
|
||||||
break;
|
break;
|
||||||
case 2: //上月
|
case 2: //上月
|
||||||
startDate = now.minusMonths(1).withDayOfMonth(1);
|
startDate = now.minusMonths(1).withDayOfMonth(1);
|
||||||
endDate = now.withDayOfMonth(1);
|
endDate = now.withDayOfMonth(1);
|
||||||
date =startDate.format(df);
|
date = startDate.format(df);
|
||||||
break;
|
break;
|
||||||
case 3: //本季度
|
case 3: //本季度
|
||||||
int month = (now.getMonthValue()-1) / 3 * 3 + 1;
|
int month = (now.getMonthValue()-1) / 3 * 3 + 1;
|
||||||
@ -163,6 +164,8 @@ public class HomeServiceImpl implements HomeService {
|
|||||||
|
|
||||||
//当月合同款总数
|
//当月合同款总数
|
||||||
BigDecimal sumMoney= new BigDecimal(0);
|
BigDecimal sumMoney= new BigDecimal(0);
|
||||||
|
//回款合同数
|
||||||
|
Integer payNum = 0;
|
||||||
//当月已支付合同金额
|
//当月已支付合同金额
|
||||||
BigDecimal payMoney=new BigDecimal(0);
|
BigDecimal payMoney=new BigDecimal(0);
|
||||||
//当月合同总数
|
//当月合同总数
|
||||||
@ -193,14 +196,21 @@ public class HomeServiceImpl implements HomeService {
|
|||||||
String contractCode=m.get("contract_code").toString();
|
String contractCode=m.get("contract_code").toString();
|
||||||
if(repeatNum.get(contractCode)==null){
|
if(repeatNum.get(contractCode)==null){
|
||||||
repeatNum.put(contractCode,1);
|
repeatNum.put(contractCode,1);
|
||||||
sumMoney=sumMoney.add((BigDecimal) m.get("contract_amount"));
|
sumMoney = sumMoney.add((BigDecimal) m.get("contract_amount"));
|
||||||
contractNum++;
|
contractNum++;
|
||||||
|
|
||||||
|
if(businessType.equals("1")){
|
||||||
|
payMoney = payMoney.add(money);
|
||||||
|
payNum++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ReturnMoneyInfoVo res = new ReturnMoneyInfoVo();
|
ReturnMoneyInfoVo res = new ReturnMoneyInfoVo();
|
||||||
res.setDateStr(date);
|
res.setDateStr(date);
|
||||||
res.setContractNum(contractNum);
|
res.setContractNum(contractNum);
|
||||||
|
res.setReturnContractNum(payNum);
|
||||||
|
res.setNoContractNum(contractNum - payNum);
|
||||||
res.setSumMoney(sumMoney);
|
res.setSumMoney(sumMoney);
|
||||||
res.setPayMoney(payMoney);
|
res.setPayMoney(payMoney);
|
||||||
res.setUnPayMoney(sumMoney.subtract(payMoney));
|
res.setUnPayMoney(sumMoney.subtract(payMoney));
|
||||||
@ -217,47 +227,69 @@ public class HomeServiceImpl implements HomeService {
|
|||||||
String date = (String)mapParam.get("date");
|
String date = (String)mapParam.get("date");
|
||||||
|
|
||||||
QueryWrapper<PsContractBusiness> wrapper = new QueryWrapper<PsContractBusiness>()
|
QueryWrapper<PsContractBusiness> wrapper = new QueryWrapper<PsContractBusiness>()
|
||||||
|
.select("company_id", "contract_code", "sum(business_amount) as business_amount")
|
||||||
.eq("business_type", "2")
|
.eq("business_type", "2")
|
||||||
.between("end_date", startDate, endDate)
|
.between("end_date", startDate, endDate)
|
||||||
|
.ge(startDate != null,"end_date", startDate)
|
||||||
|
.le(endDate != null,"end_date", endDate)
|
||||||
.groupBy("company_id")
|
.groupBy("company_id")
|
||||||
.groupBy("contract_code");
|
.groupBy("contract_code");
|
||||||
//到期的合同
|
//到期的合同
|
||||||
List<PsContractBusiness> expireContact = psContractBusinessMapper.selectList(wrapper);
|
List<PsContractBusiness> expireContact = psContractBusinessMapper.selectList(wrapper);
|
||||||
|
if (expireContact.isEmpty()){
|
||||||
|
RenewalInfoVo renewalInfoVo = new RenewalInfoVo();
|
||||||
|
renewalInfoVo.setContractNum(expireContact.size());
|
||||||
|
renewalInfoVo.setContractAmount(new BigDecimal("0"));
|
||||||
|
renewalInfoVo.setRenewalContractNum(0);
|
||||||
|
renewalInfoVo.setUnRenewalContractNum(0);
|
||||||
|
renewalInfoVo.setPayMoney(new BigDecimal("0"));
|
||||||
|
renewalInfoVo.setUnPayMoney(new BigDecimal("0"));
|
||||||
|
renewalInfoVo.setDateStr(date);
|
||||||
|
renewalInfoVo.setPayMoneyPer("100");
|
||||||
|
renewalInfoVo.setUnPayMoneyPer("0");
|
||||||
|
return renewalInfoVo;
|
||||||
|
}
|
||||||
List<Long> companyIds = expireContact.stream().map(PsContractBusiness::getCompanyId).toList();
|
List<Long> companyIds = expireContact.stream().map(PsContractBusiness::getCompanyId).toList();
|
||||||
List<String> contractCodeList = expireContact.stream().map(PsContractBusiness::getContractCode).toList();
|
List<String> contractCodeList = expireContact.stream().map(PsContractBusiness::getContractCode).toList();
|
||||||
//总到期金额
|
//总到期金额
|
||||||
BigDecimal sumExpireAmount = expireContact.stream().map(PsContractBusiness::getBusinessAmount).reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
|
BigDecimal sumExpireAmount = expireContact.stream().map(PsContractBusiness::getBusinessAmount).reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
|
||||||
|
|
||||||
QueryWrapper<PsContractInfo> contractWrapper = new QueryWrapper<PsContractInfo>()
|
QueryWrapper<PsContractInfo> contractWrapper = new QueryWrapper<PsContractInfo>()
|
||||||
.between("apply_date", startDate, endDate)
|
.ge(startDate != null,"apply_date", startDate)
|
||||||
|
.le(endDate != null,"apply_date", endDate)
|
||||||
.eq("con.is_due", 1)
|
.eq("con.is_due", 1)
|
||||||
.in("cc.company_id", companyIds)
|
.in("cc.company_id", companyIds)
|
||||||
.notIn("cc.contract_code", contractCodeList);
|
.notIn("cc.contract_code", contractCodeList);
|
||||||
//已续费的合同
|
//已续费的合同
|
||||||
List<PsContractBusinessVo> renewalContact = psContractInfoMapper.selectRenewalContract(contractWrapper);
|
List<PsContractBusinessVo> renewalContact = psHomeMapper.selectRenewalContract(contractWrapper);
|
||||||
//总已续费金额
|
//总已续费金额
|
||||||
BigDecimal sumRenewalAmount = renewalContact.stream().map(PsContractBusinessVo::getBusinessAmount).reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
|
BigDecimal sumRenewalAmount = renewalContact.stream().map(PsContractBusinessVo::getBusinessAmount).reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
|
||||||
|
|
||||||
RenewalInfoVo renewalInfoVo = new RenewalInfoVo();
|
RenewalInfoVo renewalInfoVo = new RenewalInfoVo();
|
||||||
renewalInfoVo.setContractNum(expireContact.size());
|
renewalInfoVo.setContractNum(expireContact.size());
|
||||||
|
renewalInfoVo.setContractAmount(sumExpireAmount);
|
||||||
renewalInfoVo.setRenewalContractNum(renewalContact.size());
|
renewalInfoVo.setRenewalContractNum(renewalContact.size());
|
||||||
renewalInfoVo.setUnRenewalContractNum(contractCodeList.size() - renewalContact.size());
|
renewalInfoVo.setUnRenewalContractNum(contractCodeList.size() - renewalContact.size());
|
||||||
renewalInfoVo.setPayMoney(sumRenewalAmount);
|
renewalInfoVo.setPayMoney(sumRenewalAmount);
|
||||||
renewalInfoVo.setUnPayMoney(sumExpireAmount.subtract(sumRenewalAmount));
|
renewalInfoVo.setUnPayMoney(sumExpireAmount.subtract(sumRenewalAmount));
|
||||||
renewalInfoVo.setDateStr(date);
|
renewalInfoVo.setDateStr(date);
|
||||||
|
|
||||||
|
renewalInfoVo.setCustomPer(new BigDecimal(renewalContact.size()).divide(new BigDecimal(expireContact.size()), 2, BigDecimal.ROUND_UP).toString());
|
||||||
|
renewalInfoVo.setUnPaycustomPer(new BigDecimal(100).subtract(new BigDecimal(renewalInfoVo.getCustomPer())).toString());
|
||||||
|
|
||||||
renewalInfoVo.setPayMoneyPer(renewalInfoVo.getPayMoney().divide(sumExpireAmount, 2, BigDecimal.ROUND_UP).toString());
|
renewalInfoVo.setPayMoneyPer(renewalInfoVo.getPayMoney().divide(sumExpireAmount, 2, BigDecimal.ROUND_UP).toString());
|
||||||
renewalInfoVo.setUnPayMoneyPer(renewalInfoVo.getUnPayMoney().divide(sumExpireAmount, 2, BigDecimal.ROUND_UP).toString());
|
renewalInfoVo.setUnPayMoneyPer(renewalInfoVo.getUnPayMoney().divide(sumExpireAmount, 2, BigDecimal.ROUND_UP).toString());
|
||||||
return renewalInfoVo;
|
return renewalInfoVo;
|
||||||
}
|
}
|
||||||
|
|
||||||
private String contractSource="转介绍";
|
private String contractSource = "转介绍";
|
||||||
/**
|
/**
|
||||||
* 按人员成交【转介绍】列表,根据部门获取
|
* 按人员成交【转介绍】列表,根据部门获取
|
||||||
* @param type
|
* @param type
|
||||||
* @param deptId
|
* @param isCaiwu
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public List<UserContractAmountVo> getUserContractSourceAmountsByDeptId(Integer type, Long deptId){
|
public UserAmountVo getUserContractSourceAmountsByDeptId(Integer type, boolean isCaiwu){
|
||||||
Map<String, Object> mapParam = this.getDate(type);
|
Map<String, Object> mapParam = this.getDate(type);
|
||||||
LocalDate startDate = (LocalDate)mapParam.get("startDate");
|
LocalDate startDate = (LocalDate)mapParam.get("startDate");
|
||||||
LocalDate endDate = (LocalDate)mapParam.get("endDate");
|
LocalDate endDate = (LocalDate)mapParam.get("endDate");
|
||||||
@ -268,13 +300,21 @@ public class HomeServiceImpl implements HomeService {
|
|||||||
queryParam.put("endDate",endDate);
|
queryParam.put("endDate",endDate);
|
||||||
queryParam.put("contractStatus",ContractStatusEnum.INIT.getCode());
|
queryParam.put("contractStatus",ContractStatusEnum.INIT.getCode());
|
||||||
queryParam.put("isCancel",CommonStatusEnum.SUCCESS.getCode());
|
queryParam.put("isCancel",CommonStatusEnum.SUCCESS.getCode());
|
||||||
queryParam.put("deptId",deptId);
|
queryParam.put("payStatus", PayStatusEnum.SUCCESS.getCode());
|
||||||
|
|
||||||
List<UserContractAmountInfo> list = psContractInfoMapper.getUserContractSourceAmountsByDeptId(queryParam);
|
QueryWrapper<PsContractInfo> queryWrapper = new QueryWrapper<PsContractInfo>()
|
||||||
|
.in(isCaiwu, "role.role_key", Arrays.asList(RoleEnum.caiwu))
|
||||||
|
.in(!isCaiwu, "role.role_key", Arrays.asList(RoleEnum.xiaoshou));
|
||||||
|
|
||||||
|
List<UserContractAmountInfo> list = psContractInfoMapper.getUserContractSourceAmountsByDeptId(queryParam, queryWrapper);
|
||||||
Map<Long,UserContractAmountVo> res = new HashMap<>();
|
Map<Long,UserContractAmountVo> res = new HashMap<>();
|
||||||
|
// BigDecimal sumPayAmount = new BigDecimal(0);
|
||||||
//记录合同编码,防止重复
|
//记录合同编码,防止重复
|
||||||
Map<String,String> repeatContractCode = new HashMap<>();
|
Map<String,String> repeatContractCode = new HashMap<>();
|
||||||
for(UserContractAmountInfo obj:list){
|
|
||||||
|
UserContractAmountVo daPan = new UserContractAmountVo();
|
||||||
|
|
||||||
|
for(UserContractAmountInfo obj : list){
|
||||||
UserContractAmountVo vo=res.get(obj.getUserId());
|
UserContractAmountVo vo=res.get(obj.getUserId());
|
||||||
if(vo==null){
|
if(vo==null){
|
||||||
vo=new UserContractAmountVo();
|
vo=new UserContractAmountVo();
|
||||||
@ -286,42 +326,64 @@ public class HomeServiceImpl implements HomeService {
|
|||||||
if(repeatContractCode.get(obj.getContractCode())==null){
|
if(repeatContractCode.get(obj.getContractCode())==null){
|
||||||
repeatContractCode.put(obj.getContractCode(),obj.getContractCode());
|
repeatContractCode.put(obj.getContractCode(),obj.getContractCode());
|
||||||
vo.addSumAmount(obj.getContractAmount());
|
vo.addSumAmount(obj.getContractAmount());
|
||||||
}
|
daPan.addSumAmount(obj.getContractAmount());
|
||||||
//判断是否为转介绍合同
|
|
||||||
if(contractSource.equals(obj.getCustomSource())){
|
if(contractSource.equals(obj.getCustomSource())){
|
||||||
vo.addJieShaoAmount(obj.getContractAmount());
|
vo.addJieShaoAmount(obj.getContractAmount());
|
||||||
vo.addJieShaoContractNum();
|
vo.addJieShaoContractNum();
|
||||||
|
daPan.addJieShaoAmount(obj.getContractAmount());
|
||||||
|
daPan.addJieShaoContractNum();
|
||||||
}else {
|
}else {
|
||||||
vo.addOtherAmount(obj.getContractAmount());
|
vo.addOtherAmount(obj.getContractAmount());
|
||||||
|
vo.addOtherContractNum();
|
||||||
|
daPan.addOtherAmount(obj.getContractAmount());
|
||||||
|
daPan.addOtherContractNum();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//判断是否为转介绍合同
|
||||||
|
if(contractSource.equals(obj.getCustomSource())){
|
||||||
|
daPan.addJsPayedSumAmount(obj.getPayedMoney());
|
||||||
|
vo.addJsPayedSumAmount(obj.getPayedMoney());
|
||||||
|
}else {
|
||||||
|
daPan.addOtherPayedSumAmount(obj.getPayedMoney());
|
||||||
|
vo.addOtherPayedSumAmount(obj.getPayedMoney());
|
||||||
|
}
|
||||||
|
|
||||||
//构建表格第一行数据
|
}
|
||||||
UserContractAmountVo title= new UserContractAmountVo();
|
//计算未付款金额
|
||||||
title.setNickName("总计");
|
res.values().forEach(v->{
|
||||||
title.setDateStr(date);
|
v.setJsUnPaySumAmount(v.getSumAmount().subtract(v.getJsPayedSumAmount()));
|
||||||
title.setOtherAmount(null);
|
});
|
||||||
title.setSoftwareDevAmount(null);
|
|
||||||
title.setTuoGuanAmount(null);
|
|
||||||
title.setXuFeiAmount(null);
|
|
||||||
|
|
||||||
//按总金额降序处理
|
//按总金额降序处理
|
||||||
List<UserContractAmountVo> listData=res.values().stream().sorted(
|
List<UserContractAmountVo> listData = res.values().stream().sorted(
|
||||||
Comparator.comparing(UserContractAmountVo::getSumAmount,Comparator.reverseOrder())).collect(Collectors.toList());
|
Comparator.comparing(UserContractAmountVo::getSumAmount,Comparator.reverseOrder())).collect(Collectors.toList());
|
||||||
|
|
||||||
for (UserContractAmountVo v:listData) {
|
|
||||||
title.addSumAmount(v.getSumAmount());
|
|
||||||
}
|
|
||||||
//计算转介绍金额占比
|
//计算转介绍金额占比
|
||||||
for (UserContractAmountVo v:listData) {
|
for (UserContractAmountVo v : listData) {
|
||||||
if(!BigDecimal.ZERO.equals(v.getJieShaoAmount())) {
|
if(!BigDecimal.ZERO.equals(v.getJieShaoAmount())) {
|
||||||
v.setJieShaoPer(v.getJieShaoAmount().multiply(new BigDecimal("100.0")).divide(v.getSumAmount(), 2, RoundingMode.HALF_UP).toPlainString() + "%");
|
v.setJieShaoPer(v.getJieShaoAmount().multiply(new BigDecimal("100.0")).divide(v.getSumAmount(), 2, RoundingMode.HALF_UP).toPlainString() + "%");
|
||||||
}else {
|
}else {
|
||||||
v.setJieShaoPer("0.00%");
|
v.setJieShaoPer("0.00%");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
listData.add(0,title);
|
if (BigDecimal.ZERO.equals(daPan.getSumAmount())){
|
||||||
return listData;
|
daPan.setJieShaoPer("0%");
|
||||||
|
daPan.setOtherPer("0%");
|
||||||
|
}else{
|
||||||
|
daPan.setJieShaoPer(daPan.getJieShaoAmount().multiply(new BigDecimal("100.0")).divide(daPan.getSumAmount(), 2, RoundingMode.HALF_UP).toPlainString() + "%");
|
||||||
|
daPan.setOtherPer(daPan.getOtherAmount().multiply(new BigDecimal("100.0")).divide(daPan.getSumAmount(), 2, RoundingMode.HALF_UP).toPlainString() + "%");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
BigDecimal sumAmount = list.stream().map(UserContractAmountInfo::getContractAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||||
|
|
||||||
|
|
||||||
|
UserAmountVo userAmountVo = new UserAmountVo();
|
||||||
|
userAmountVo.setZjsList(listData);
|
||||||
|
userAmountVo.setDateStr(date);
|
||||||
|
userAmountVo.setAll(sumAmount);
|
||||||
|
userAmountVo.setDaPan(daPan);
|
||||||
|
return userAmountVo;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* 按人员成交数据列表,根据部门获取
|
* 按人员成交数据列表,根据部门获取
|
||||||
@ -378,7 +440,6 @@ public class HomeServiceImpl implements HomeService {
|
|||||||
if(obj.getIsDue()!=null&&obj.getIsDue().equals("1")){
|
if(obj.getIsDue()!=null&&obj.getIsDue().equals("1")){
|
||||||
vo.addXuFeiAmount(obj.getContractAmount());
|
vo.addXuFeiAmount(obj.getContractAmount());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//构建表格第一行数据
|
//构建表格第一行数据
|
||||||
@ -415,43 +476,92 @@ public class HomeServiceImpl implements HomeService {
|
|||||||
* @param type
|
* @param type
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public Collection<UserAmountInfoVo> getUserContractAndPayInfo(Integer type){
|
public UserAmountVo getUserContractAndPayInfo(Integer type, boolean isCaiwu){
|
||||||
Map<String, Object> mapParam = this.getDate(type);
|
Map<String, Object> mapParam = this.getDate(type);
|
||||||
LocalDate startDate = (LocalDate)mapParam.get("startDate");
|
LocalDate startDate = (LocalDate)mapParam.get("startDate");
|
||||||
LocalDate endDate = (LocalDate)mapParam.get("endDate");
|
LocalDate endDate = (LocalDate)mapParam.get("endDate");
|
||||||
String date = (String)mapParam.get("date");
|
String date = (String)mapParam.get("date");
|
||||||
|
|
||||||
Map<String,Object> queryParam=new HashMap<>();
|
Map<String,Object> queryParam=new HashMap<>();
|
||||||
queryParam.put("startDate",startDate);
|
queryParam.put("startDate", startDate);
|
||||||
queryParam.put("endDate",endDate);
|
queryParam.put("endDate", endDate);
|
||||||
queryParam.put("contractStatus",ContractStatusEnum.INIT.getCode());
|
queryParam.put("contractStatus", ContractStatusEnum.INIT.getCode());
|
||||||
queryParam.put("isCancel",CommonStatusEnum.SUCCESS.getCode());
|
queryParam.put("isCancel", CommonStatusEnum.SUCCESS.getCode());
|
||||||
queryParam.put("payStatus",PayStatusEnum.SUCCESS.getCode());
|
queryParam.put("payStatus", PayStatusEnum.SUCCESS.getCode());
|
||||||
|
|
||||||
List<UserContractAmountInfo> list=psContractInfoMapper.getUserContractAndPayInfo(queryParam);
|
QueryWrapper<PsContractInfo> queryWrapper = new QueryWrapper<PsContractInfo>()
|
||||||
Map<Long,UserAmountInfoVo> resMap=new HashMap<>();
|
.in(isCaiwu, "role.role_key", Arrays.asList(RoleEnum.caiwu))
|
||||||
for (UserContractAmountInfo obj:list) {
|
.in(!isCaiwu, "role.role_key", Arrays.asList(RoleEnum.xiaoshou));
|
||||||
Long userId=obj.getUserId();
|
List<UserContractAmountInfo> list = psContractInfoMapper.getUserContractAndPayInfo(queryParam, queryWrapper);
|
||||||
UserAmountInfoVo vo= resMap.get(userId);
|
Map<Long,UserAmountInfoVo> resMap = new HashMap<>();
|
||||||
if(vo==null){
|
//记录合同编码,防止重复
|
||||||
vo=new UserAmountInfoVo();
|
Map<String, String> repeatContractCode = new HashMap<>();
|
||||||
|
for (UserContractAmountInfo obj : list) {
|
||||||
|
Long userId = obj.getUserId();
|
||||||
|
UserAmountInfoVo vo = resMap.get(userId);
|
||||||
|
if(vo == null){
|
||||||
|
vo = new UserAmountInfoVo();
|
||||||
vo.setUserId(userId);
|
vo.setUserId(userId);
|
||||||
vo.setNickName(obj.getNickName());
|
vo.setNickName(obj.getNickName());
|
||||||
vo.setDateStr(date);
|
vo.setDateStr(date);
|
||||||
resMap.put(userId, vo);
|
resMap.put(userId, vo);
|
||||||
}
|
}
|
||||||
//累计合同数量
|
//累计合同数量
|
||||||
if(obj.getContractCode()!=null&&obj.getContractCode().length()>0){
|
if(obj.getContractCode() != null && obj.getContractCode().length() > 0){
|
||||||
vo.addContractNum();
|
vo.addContractNum();
|
||||||
}
|
}
|
||||||
vo.addSumAmount(obj.getContractAmount());
|
|
||||||
vo.addPayedSumAmount(obj.getPayedMoney());
|
vo.addPayedSumAmount(obj.getPayedMoney());
|
||||||
|
|
||||||
|
|
||||||
|
if(repeatContractCode.get(obj.getContractCode())==null){
|
||||||
|
repeatContractCode.put(obj.getContractCode(),obj.getContractCode());
|
||||||
|
vo.addSumAmount(obj.getContractAmount());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//托管合同金额累计
|
||||||
|
if(obj.getBusinessType() != null && obj.getBusinessType().equals("4")){
|
||||||
|
// vo.addTuoGuanAmount(obj.getContractAmount());
|
||||||
|
} else {
|
||||||
|
//软件开发合同金额累计
|
||||||
|
if (obj.getBusinessType() != null && obj.getBusinessType().equals("9")) {
|
||||||
|
vo.addSoftwareDevAmount(obj.getContractAmount());
|
||||||
|
} else {
|
||||||
|
//其他合同金额累计
|
||||||
|
if (obj.getIsDue() == null || obj.getIsDue().equals("0")) {
|
||||||
|
vo.addOtherAmount(obj.getContractAmount());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//续签合同金额累计
|
||||||
|
if(obj.getIsDue()!=null&&obj.getIsDue().equals("1")){
|
||||||
|
vo.addXuFeiAmount(obj.getContractAmount());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//计算未付款金额
|
//计算未付款金额
|
||||||
resMap.values().forEach(v->{
|
resMap.values().forEach(v->{
|
||||||
v.setUnPaySumAmount(v.getSumAmount().subtract(v.getPayedSumAmount()));
|
v.setUnPaySumAmount(v.getSumAmount().subtract(v.getPayedSumAmount()));
|
||||||
});
|
});
|
||||||
return resMap.values();
|
|
||||||
|
//按总金额降序处理
|
||||||
|
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);
|
||||||
|
//计算金额占比
|
||||||
|
for (UserAmountInfoVo v : listData) {
|
||||||
|
if(!v.getSumAmount().equals(BigDecimal.ZERO)) {
|
||||||
|
v.setAmountPer(v.getSumAmount().multiply(new BigDecimal("100.0")).divide(sumAmount, 2, RoundingMode.HALF_UP).toPlainString() + "%");
|
||||||
|
}else {
|
||||||
|
v.setAmountPer("0.00%");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
UserAmountVo userAmountVo = new UserAmountVo();
|
||||||
|
userAmountVo.setUserAmountList(resMap.values());
|
||||||
|
userAmountVo.setDateStr(date);
|
||||||
|
userAmountVo.setAll(sumAmount);
|
||||||
|
return userAmountVo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -463,7 +573,7 @@ public class HomeServiceImpl implements HomeService {
|
|||||||
*/
|
*/
|
||||||
@Cacheable(cacheNames = CacheNames.HOME_C, key = "#type+'_'+#dateType")
|
@Cacheable(cacheNames = CacheNames.HOME_C, key = "#type+'_'+#dateType")
|
||||||
public ChannelAmountVo byChannel(Integer type,Integer dateType){
|
public ChannelAmountVo byChannel(Integer type,Integer dateType){
|
||||||
Map<String, Object> mapParam = dateType == 1?this.getDate(type):this.getDateByUser(type);
|
Map<String, Object> mapParam = dateType == 1 ? this.getDate(type) : this.getDateByUser(type);
|
||||||
LocalDate startDate = (LocalDate)mapParam.get("startDate");
|
LocalDate startDate = (LocalDate)mapParam.get("startDate");
|
||||||
LocalDate endDate = (LocalDate)mapParam.get("endDate");
|
LocalDate endDate = (LocalDate)mapParam.get("endDate");
|
||||||
String date = (String)mapParam.get("date");
|
String date = (String)mapParam.get("date");
|
||||||
@ -510,6 +620,7 @@ public class HomeServiceImpl implements HomeService {
|
|||||||
data.setPayMoney(paymoney);
|
data.setPayMoney(paymoney);
|
||||||
data.setUnPayMoney(unpaymoney);
|
data.setUnPayMoney(unpaymoney);
|
||||||
data.setType(item);
|
data.setType(item);
|
||||||
|
data.setCost(payList.isEmpty() ? BigDecimal.ZERO : payList.get(0).getCost());
|
||||||
channelList.add(data);
|
channelList.add(data);
|
||||||
}
|
}
|
||||||
res.setChannelList(channelList);
|
res.setChannelList(channelList);
|
||||||
@ -598,20 +709,27 @@ public class HomeServiceImpl implements HomeService {
|
|||||||
* @param type
|
* @param type
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public Map<String,Object> salasData(Integer type){
|
public SalasVo salasData(Integer type){
|
||||||
Map<String, Object> mapParam = this.getDateByUser(type);
|
Map<String, Object> mapParam = this.getDateByUser(type);
|
||||||
LocalDate startDate = (LocalDate)mapParam.get("startDate");
|
LocalDate startDate = (LocalDate)mapParam.get("startDate");
|
||||||
LocalDate endDate = (LocalDate)mapParam.get("endDate");
|
LocalDate endDate = (LocalDate)mapParam.get("endDate");
|
||||||
String date = (String)mapParam.get("date");
|
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);
|
||||||
//返回map
|
salasVo.setGonghaiNum(psHomeMapper.selectGonghaiNum(queryParam));
|
||||||
Map<String,Object> map = new HashMap<>();
|
salasVo.setCallbackRecordNum(psHomeMapper.selectCallbackRecordNum(queryParam));
|
||||||
map.put("dateStr",date);//
|
salasVo.setNoCallbackRecordNum(psHomeMapper.selectNoCallbackRecordNum(queryParam));
|
||||||
map.put("currentDate", DateUtils.parseDateToStr("yyyy-MM-dd HH:mm",new Date()));//当前时间
|
salasVo.setPayContractAmount(psHomeMapper.selectSumPayContractAmount(queryParam));
|
||||||
return null;
|
if (salasVo.getSumContractAmount() == null){
|
||||||
|
salasVo.setUnPayContractAmount(new BigDecimal(0));
|
||||||
|
}else {
|
||||||
|
salasVo.setUnPayContractAmount(salasVo.getSumContractAmount().subtract(salasVo.getPayContractAmount() == null ? new BigDecimal(0) : salasVo.getPayContractAmount()));
|
||||||
|
}
|
||||||
|
salasVo.setDateStr(date);
|
||||||
|
salasVo.setCurrentDate(new Date());
|
||||||
|
return salasVo;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Map<String, Object> getDateByUser(Integer type){
|
public static Map<String, Object> getDateByUser(Integer type){
|
||||||
|
@ -161,12 +161,11 @@ public class PsCompanyInfoServiceImpl implements IPsCompanyInfoService {
|
|||||||
LoginUser user = LoginHelper.getLoginUser();
|
LoginUser user = LoginHelper.getLoginUser();
|
||||||
for (RoleDTO role : user.getRoles()) {
|
for (RoleDTO role : user.getRoles()) {
|
||||||
DataScopeType type = DataScopeType.findCode(role.getDataScope());
|
DataScopeType type = DataScopeType.findCode(role.getDataScope());
|
||||||
if (type == DataScopeType.ALL) {
|
if (type == DataScopeType.SELF){
|
||||||
continue;
|
|
||||||
}
|
|
||||||
followUserSql += " and fsu.user_id = " + user.getUserId();
|
followUserSql += " and fsu.user_id = " + user.getUserId();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
lqw.exists(StringUtils.isNotBlank(followUserSql), "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 " + followUserSql);
|
lqw.exists(StringUtils.isNotBlank(followUserSql), "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 " + followUserSql);
|
||||||
|
|
||||||
//合同未作废,有回款的续费合同 或 合同未作废有完成主任务的
|
//合同未作废,有回款的续费合同 或 合同未作废有完成主任务的
|
||||||
|
@ -132,7 +132,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
pay.money as payedMoney
|
pay.money as payedMoney
|
||||||
FROM sys_user u
|
FROM sys_user u
|
||||||
LEFT JOIN ps_contract_info info on
|
LEFT JOIN ps_contract_info info on
|
||||||
u.user_id=info.custom_manager
|
u.user_id = info.custom_manager
|
||||||
|
inner join sys_user_role ur on ur.user_id = u.user_id
|
||||||
|
inner join sys_role role on role.role_id = ur.role_id
|
||||||
<if test="queryParam.startDate != null">
|
<if test="queryParam.startDate != null">
|
||||||
and info.apply_date >= #{queryParam.startDate}
|
and info.apply_date >= #{queryParam.startDate}
|
||||||
</if>
|
</if>
|
||||||
@ -146,6 +148,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
info.contract_code=pay.contract_code
|
info.contract_code=pay.contract_code
|
||||||
and pay.pay_status=#{queryParam.payStatus}
|
and pay.pay_status=#{queryParam.payStatus}
|
||||||
and pay.del_flag=0
|
and pay.del_flag=0
|
||||||
|
|
||||||
|
${ew.getCustomSqlSegment}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<!-- 按人员成交数据【转介绍】 -->
|
<!-- 按人员成交数据【转介绍】 -->
|
||||||
@ -156,8 +160,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
IFNULL(info.contract_amount,0) as contractAmount,
|
IFNULL(info.contract_amount,0) as contractAmount,
|
||||||
info.is_due as isDue,
|
info.is_due as isDue,
|
||||||
info.contract_code as contractCode,
|
info.contract_code as contractCode,
|
||||||
cus.custom_source as customSource
|
cus.custom_source as customSource,
|
||||||
|
pay.money as payedMoney
|
||||||
FROM sys_user u
|
FROM sys_user u
|
||||||
|
inner join sys_user_role ur on ur.user_id = u.user_id
|
||||||
|
inner join sys_role role on role.role_id = ur.role_id
|
||||||
LEFT JOIN ps_contract_info info on
|
LEFT JOIN ps_contract_info info on
|
||||||
u.user_id=info.custom_manager
|
u.user_id=info.custom_manager
|
||||||
and info.contract_status != #{queryParam.contractStatus}
|
and info.contract_status != #{queryParam.contractStatus}
|
||||||
@ -171,7 +178,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
</if>
|
</if>
|
||||||
|
|
||||||
LEFT JOIN ps_custom_info cus on info.custom_id=cus.id
|
LEFT JOIN ps_custom_info cus on info.custom_id=cus.id
|
||||||
WHERE u.dept_id=#{queryParam.deptId}
|
LEFT JOIN ps_contract_pay pay on info.contract_code = pay.contract_code
|
||||||
|
and pay.pay_status = #{queryParam.payStatus} and pay.del_flag = 0
|
||||||
|
${ew.getCustomSqlSegment}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<!-- 按人员成交【转介绍】数据统计饼图 -->
|
<!-- 按人员成交【转介绍】数据统计饼图 -->
|
||||||
@ -207,10 +216,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
info.contract_code,
|
info.contract_code,
|
||||||
info.contract_amount,
|
info.contract_amount,
|
||||||
pay.business_type,
|
pay.business_type,
|
||||||
pay.money
|
pay.money,
|
||||||
|
(
|
||||||
|
select sum(sc.cost) from ps_contract_business_detail bd
|
||||||
|
left join ps_salary_config sc on sc.service_project = bd.business_project and sc.del_flag = 0
|
||||||
|
where bd.contract_code = info.contract_code and sc.post_id = up.post_id
|
||||||
|
) cost
|
||||||
from ps_contract_info info
|
from ps_contract_info info
|
||||||
left join ps_custom_info cus on info.custom_id = cus.id
|
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
|
||||||
|
left join sys_user_post up on up.user_id = info.custom_manager
|
||||||
|
|
||||||
</sql>
|
</sql>
|
||||||
<select id="byChannel" resultType="com.pusong.business.domain.vo.home.ChannelPayInfo">
|
<select id="byChannel" resultType="com.pusong.business.domain.vo.home.ChannelPayInfo">
|
||||||
<include refid="channel"/>
|
<include refid="channel"/>
|
||||||
@ -222,12 +238,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
|
||||||
<select id="selectRenewalContract" resultType="com.pusong.business.domain.vo.PsContractBusinessVo">
|
|
||||||
select
|
|
||||||
bus.*
|
|
||||||
from ps_contract_company cc
|
|
||||||
left join ps_contract_info con on con.contract_code = cc.contract_code
|
|
||||||
left join ps_contract_business bus on bus.contract_code = con.contract_code and bus.business_type = '2'
|
|
||||||
</select>
|
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
|
@ -0,0 +1,68 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<!DOCTYPE mapper
|
||||||
|
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
<mapper namespace="com.pusong.business.mapper.PsHomeMapper">
|
||||||
|
<select id="selectRenewalContract" resultType="com.pusong.business.domain.vo.PsContractBusinessVo">
|
||||||
|
select
|
||||||
|
bus.*
|
||||||
|
from ps_contract_company cc
|
||||||
|
inner join ps_contract_info con on con.contract_code = cc.contract_code
|
||||||
|
inner join ps_contract_business bus on bus.contract_code = con.contract_code and bus.business_type = '2'
|
||||||
|
${ew.getCustomSqlSegment}
|
||||||
|
</select>
|
||||||
|
|
||||||
|
|
||||||
|
<select id="selectGonghaiNum" >
|
||||||
|
select count(1) from ps_custom_info
|
||||||
|
where custom_status = 2 or custom_status = 20 and black = 0 and del_flag = 0
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="selectCallbackRecordNum">
|
||||||
|
select count(DISTINCT back.custom_id) from ps_custom_callback back
|
||||||
|
inner join ps_custom_info cus on back.custom_id = cus.id and cus.black = 0 and cus.del_flag = 0
|
||||||
|
where
|
||||||
|
<if test="queryParam.startDate != null">
|
||||||
|
back.create_time >= #{queryParam.startDate}
|
||||||
|
</if>
|
||||||
|
<if test="queryParam.endDate != null">
|
||||||
|
and back.create_time < #{queryParam.endDate}
|
||||||
|
</if>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="selectNoCallbackRecordNum">
|
||||||
|
select count(1) from ps_custom_info cus
|
||||||
|
where
|
||||||
|
not exists (select 1 from ps_custom_callback where custom_id = cus.id)
|
||||||
|
and cus.black = 0 and cus.del_flag = 0
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="selectContractNumAndAmount" resultType="com.pusong.business.domain.vo.home.SalasVo">
|
||||||
|
select count(1) contractNum, sum(contract_amount) sumContractAmount
|
||||||
|
from ps_contract_info info
|
||||||
|
where
|
||||||
|
contract_status != 10 and del_flag = 0
|
||||||
|
<if test="queryParam.startDate != null">
|
||||||
|
and create_time >= #{queryParam.startDate}
|
||||||
|
</if>
|
||||||
|
<if test="queryParam.endDate != null">
|
||||||
|
and create_time < #{queryParam.endDate}
|
||||||
|
</if>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
|
||||||
|
<select id="selectSumPayContractAmount">
|
||||||
|
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
|
||||||
|
<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>
|
||||||
|
|
||||||
|
|
||||||
|
</mapper>
|
@ -19,8 +19,9 @@ public enum RoleEnum {
|
|||||||
nqzxry("nqzxry","内勤执行人员"),
|
nqzxry("nqzxry","内勤执行人员"),
|
||||||
caiwu("caiwu","财务"),
|
caiwu("caiwu","财务"),
|
||||||
zongcai("zongcai","总裁"),
|
zongcai("zongcai","总裁"),
|
||||||
topmanage("topmanage","总经理")
|
topmanage("topmanage","总经理"),
|
||||||
|
stopacc1("stopaccount","停止代账1"),
|
||||||
|
stopacc2("cwstopaccount","停止代账2")
|
||||||
|
|
||||||
;
|
;
|
||||||
private String code;
|
private String code;
|
||||||
|
@ -73,9 +73,17 @@ public class SysNoticeController extends BaseController {
|
|||||||
@Log(title = "通知公告", businessType = BusinessType.UPDATE)
|
@Log(title = "通知公告", businessType = BusinessType.UPDATE)
|
||||||
@PutMapping
|
@PutMapping
|
||||||
public R<Void> edit(@Validated @RequestBody SysNoticeBo notice) {
|
public R<Void> edit(@Validated @RequestBody SysNoticeBo notice) {
|
||||||
return toAjax(noticeService.updateNotice(notice));
|
if (notice.getNoticeId() != null){
|
||||||
|
return toAjax( noticeService.updateNotice(notice));
|
||||||
|
}else{
|
||||||
|
return toAjax(noticeService.readed(notice.getNoticeIds()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@Log(title = "公告已读", businessType = BusinessType.UPDATE)
|
||||||
|
@GetMapping("/readed")
|
||||||
|
public R<Void> readed(String noticeIds) {
|
||||||
|
return toAjax(noticeService.readed(noticeIds));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除通知公告
|
* 删除通知公告
|
||||||
*
|
*
|
||||||
|
@ -64,5 +64,8 @@ public class SysNotice extends TenantEntity {
|
|||||||
*/
|
*/
|
||||||
private int jumpType;
|
private int jumpType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 0未读 1已读
|
||||||
|
*/
|
||||||
|
private int readed;
|
||||||
}
|
}
|
||||||
|
@ -26,6 +26,10 @@ import java.util.List;
|
|||||||
@AutoMapper(target = SysNotice.class, reverseConvertGenerate = false)
|
@AutoMapper(target = SysNotice.class, reverseConvertGenerate = false)
|
||||||
public class SysNoticeBo extends BaseEntity {
|
public class SysNoticeBo extends BaseEntity {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 公告ID
|
||||||
|
*/
|
||||||
|
private String noticeIds;
|
||||||
/**
|
/**
|
||||||
* 公告ID
|
* 公告ID
|
||||||
*/
|
*/
|
||||||
@ -82,7 +86,10 @@ public class SysNoticeBo extends BaseEntity {
|
|||||||
* 跳转类型
|
* 跳转类型
|
||||||
*/
|
*/
|
||||||
private int jumpType;
|
private int jumpType;
|
||||||
|
/**
|
||||||
|
* 0未读 1已读
|
||||||
|
*/
|
||||||
|
private int readed;
|
||||||
|
|
||||||
public static SysNoticeBo getGonghaiInstance(){
|
public static SysNoticeBo getGonghaiInstance(){
|
||||||
SysNoticeBo noticeBo = new SysNoticeBo();
|
SysNoticeBo noticeBo = new SysNoticeBo();
|
||||||
@ -488,5 +495,14 @@ public class SysNoticeBo extends BaseEntity {
|
|||||||
noticeBo.setJumpType(0);
|
noticeBo.setJumpType(0);
|
||||||
return noticeBo;
|
return noticeBo;
|
||||||
}
|
}
|
||||||
|
public static SysNoticeBo getWaitApplyInstance(String applyUserName, String roleKey){
|
||||||
|
SysNoticeBo noticeBo = new SysNoticeBo();
|
||||||
|
noticeBo.setNoticeType("1");
|
||||||
|
noticeBo.setNoticeTitle("通知");
|
||||||
|
noticeBo.setStatus("0");
|
||||||
|
noticeBo.setNoticeContent("【"+ applyUserName +"】提交的【停止代账审批】待你审批!");
|
||||||
|
noticeBo.setRecRole(Arrays.asList(roleKey));
|
||||||
|
noticeBo.setJumpType(0);
|
||||||
|
return noticeBo;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package com.pusong.system.domain.vo;
|
package com.pusong.system.domain.vo;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
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.SysNotice;
|
import com.pusong.system.domain.SysNotice;
|
||||||
@ -52,22 +53,31 @@ public class SysNoticeVo implements Serializable {
|
|||||||
/**
|
/**
|
||||||
* 备注
|
* 备注
|
||||||
*/
|
*/
|
||||||
private String remark;
|
// private String remark;
|
||||||
|
|
||||||
/**
|
// /**
|
||||||
* 创建者
|
// * 创建者
|
||||||
*/
|
// */
|
||||||
private Long createBy;
|
// private Long createBy;
|
||||||
|
|
||||||
/**
|
// /**
|
||||||
* 创建人名称
|
// * 创建人名称
|
||||||
*/
|
// */
|
||||||
@Translation(type = TransConstant.USER_ID_TO_NAME, mapper = "createBy")
|
// @Translation(type = TransConstant.USER_ID_TO_NAME, mapper = "createBy")
|
||||||
private String createByName;
|
// private String createByName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建时间
|
* 创建时间
|
||||||
*/
|
*/
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
private Date createTime;
|
private Date createTime;
|
||||||
|
/**
|
||||||
|
* 跳转类型
|
||||||
|
*/
|
||||||
|
private int jumpType;
|
||||||
|
/**
|
||||||
|
* 0未读 1已读
|
||||||
|
*/
|
||||||
|
private int readed;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,11 @@
|
|||||||
package com.pusong.system.mapper;
|
package com.pusong.system.mapper;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.toolkit.Constants;
|
||||||
import com.pusong.common.mybatis.core.mapper.BaseMapperPlus;
|
import com.pusong.common.mybatis.core.mapper.BaseMapperPlus;
|
||||||
import com.pusong.system.domain.SysNotice;
|
import com.pusong.system.domain.SysNotice;
|
||||||
import com.pusong.system.domain.vo.SysNoticeVo;
|
import com.pusong.system.domain.vo.SysNoticeVo;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 通知公告表 数据层
|
* 通知公告表 数据层
|
||||||
@ -10,5 +13,6 @@ import com.pusong.system.domain.vo.SysNoticeVo;
|
|||||||
* @author Lion Li
|
* @author Lion Li
|
||||||
*/
|
*/
|
||||||
public interface SysNoticeMapper extends BaseMapperPlus<SysNotice, SysNoticeVo> {
|
public interface SysNoticeMapper extends BaseMapperPlus<SysNotice, SysNoticeVo> {
|
||||||
|
Integer updateBatchReaded(@Param(Constants.WRAPPER) Wrapper<SysNotice> queryWrapper);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -49,7 +49,7 @@ public interface ISysNoticeService {
|
|||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
int updateNotice(SysNoticeBo bo);
|
int updateNotice(SysNoticeBo bo);
|
||||||
|
int readed(String ids);
|
||||||
/**
|
/**
|
||||||
* 删除公告信息
|
* 删除公告信息
|
||||||
*
|
*
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package com.pusong.system.service.impl;
|
package com.pusong.system.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
@ -10,6 +11,7 @@ import com.pusong.common.core.domain.R;
|
|||||||
import com.pusong.common.core.service.DictService;
|
import com.pusong.common.core.service.DictService;
|
||||||
import com.pusong.common.core.utils.MapstructUtils;
|
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.json.utils.JsonUtils;
|
||||||
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.common.websocket.dto.WebSocketMessageDto;
|
import com.pusong.common.websocket.dto.WebSocketMessageDto;
|
||||||
@ -149,9 +151,10 @@ public class SysNoticeServiceImpl implements ISysNoticeService {
|
|||||||
insertData.add(sysNoticeBo);
|
insertData.add(sysNoticeBo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
SysNoticeVo vo = MapstructUtils.convert(bo, SysNoticeVo.class);
|
||||||
WebSocketMessageDto webSocketMessage = new WebSocketMessageDto();
|
WebSocketMessageDto webSocketMessage = new WebSocketMessageDto();
|
||||||
webSocketMessage.setMessage(bo.getNoticeContent());
|
// webSocketMessage.setMessage(bo.getNoticeContent());
|
||||||
|
webSocketMessage.setMessage(JsonUtils.toJsonString(vo));
|
||||||
webSocketMessage.setSessionKeys(uids);
|
webSocketMessage.setSessionKeys(uids);
|
||||||
WebSocketUtils.publishMessage(webSocketMessage);
|
WebSocketUtils.publishMessage(webSocketMessage);
|
||||||
|
|
||||||
@ -169,7 +172,14 @@ public class SysNoticeServiceImpl implements ISysNoticeService {
|
|||||||
SysNotice notice = MapstructUtils.convert(bo, SysNotice.class);
|
SysNotice notice = MapstructUtils.convert(bo, SysNotice.class);
|
||||||
return baseMapper.updateById(notice);
|
return baseMapper.updateById(notice);
|
||||||
}
|
}
|
||||||
|
@Override
|
||||||
|
public int readed(String ids) {
|
||||||
|
String[] idArr = ids.split(",");
|
||||||
|
QueryWrapper queryWrapper = new QueryWrapper();
|
||||||
|
queryWrapper.in("notice_id", idArr);
|
||||||
|
baseMapper.updateBatchReaded(queryWrapper);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* 删除公告对象
|
* 删除公告对象
|
||||||
*
|
*
|
||||||
|
@ -3,5 +3,9 @@
|
|||||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
<mapper namespace="com.pusong.system.mapper.SysNoticeMapper">
|
<mapper namespace="com.pusong.system.mapper.SysNoticeMapper">
|
||||||
|
<select id="updateBatchReaded" >
|
||||||
|
update sys_notice set readed = 1
|
||||||
|
${ew.getCustomSqlSegment}
|
||||||
|
</select>
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
|
Loading…
Reference in New Issue
Block a user