diff --git a/pusong-admin/src/main/java/com/pusong/web/controller/AuthController.java b/pusong-admin/src/main/java/com/pusong/web/controller/AuthController.java index c3a8f64..99951fe 100644 --- a/pusong-admin/src/main/java/com/pusong/web/controller/AuthController.java +++ b/pusong-admin/src/main/java/com/pusong/web/controller/AuthController.java @@ -52,10 +52,7 @@ import org.springframework.web.bind.annotation.*; import java.net.URL; import java.nio.charset.StandardCharsets; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; @@ -121,6 +118,16 @@ public class AuthController { QueryWrapper queryWrapper = new QueryWrapper() .in( "rec_uid", userId); List sysNotices = sysNoticeMapper.selectList(queryWrapper); + sysNotices.sort(new Comparator() { + @Override + public int compare(SysNotice o1, SysNotice o2) { + if (o1.getReaded() == 1){ + return 1; + }else{ + return -1; + } + } + }); // for (int i = 0; i < 100; i++) { for (SysNotice sysNotice : sysNotices) { dto = new WebSocketMessageDto(); diff --git a/pusong-common/pusong-common-core/src/main/java/com/pusong/common/core/utils/DateUtils.java b/pusong-common/pusong-common-core/src/main/java/com/pusong/common/core/utils/DateUtils.java index 3d1fb35..d43a81f 100644 --- a/pusong-common/pusong-common-core/src/main/java/com/pusong/common/core/utils/DateUtils.java +++ b/pusong-common/pusong-common-core/src/main/java/com/pusong/common/core/utils/DateUtils.java @@ -251,6 +251,10 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils { } + /** + * 本月首日0点 + * @return + */ public static Date getFirstDayZeroTimeByMonth() { // 获取当前日期的Calendar对象 Calendar calendar = Calendar.getInstance(); @@ -270,6 +274,11 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils { // System.out.println("本月第一天的0点日期: " + firstDayOfMonth); return firstDayOfMonth; } + + /** + * 上月首日 + * @return + */ public static Date getLastMonthFirstDayZeroTime() { // 获取当前日期的Calendar对象 Calendar calendar = Calendar.getInstance(); @@ -291,6 +300,12 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils { // System.out.println("本月第一天的0点日期: " + firstDayOfMonth); return firstDayOfMonth; } + + /** + * 本月最后时间 + * @param date + * @return + */ public static Date getEndTimeByMonth(Date date) { // 获取当前日期的Calendar对象 Calendar calendar = Calendar.getInstance(); diff --git a/pusong-common/pusong-common-json/src/main/java/com/pusong/common/json/config/JacksonConfig.java b/pusong-common/pusong-common-json/src/main/java/com/pusong/common/json/config/JacksonConfig.java index 7aa6b51..0da2189 100644 --- a/pusong-common/pusong-common-json/src/main/java/com/pusong/common/json/config/JacksonConfig.java +++ b/pusong-common/pusong-common-json/src/main/java/com/pusong/common/json/config/JacksonConfig.java @@ -1,7 +1,10 @@ package com.pusong.common.json.config; +import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.JsonSerializer; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; import com.fasterxml.jackson.databind.SerializerProvider; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; @@ -10,9 +13,12 @@ import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; import com.pusong.common.json.handler.BigNumberSerializer; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.autoconfigure.AutoConfiguration; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer; import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration; import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Primary; +import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder; import java.io.IOException; import java.math.BigDecimal; @@ -30,7 +36,14 @@ import java.util.TimeZone; @Slf4j @AutoConfiguration(before = JacksonAutoConfiguration.class) public class JacksonConfig { - + @Bean + @Primary + @ConditionalOnMissingBean(ObjectMapper.class) + public ObjectMapper jacksonObjectMapper(Jackson2ObjectMapperBuilder builder) { + ObjectMapper objectMapper = builder.createXmlMapper(false).build(); + objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); + return objectMapper; + } @Bean public Jackson2ObjectMapperBuilderCustomizer customizer() { return builder -> { @@ -58,6 +71,7 @@ public class JacksonConfig { javaTimeModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(formatter)); builder.modules(javaTimeModule); builder.timeZone(TimeZone.getDefault()); + builder.featuresToDisable(SerializationFeature.WRITE_NULL_MAP_VALUES); log.info("初始化 jackson 配置"); }; } diff --git a/pusong-common/pusong-common-mybatis/src/main/java/com/pusong/common/mybatis/enums/DataScopeType.java b/pusong-common/pusong-common-mybatis/src/main/java/com/pusong/common/mybatis/enums/DataScopeType.java index 5b38bd1..3b195c9 100644 --- a/pusong-common/pusong-common-mybatis/src/main/java/com/pusong/common/mybatis/enums/DataScopeType.java +++ b/pusong-common/pusong-common-mybatis/src/main/java/com/pusong/common/mybatis/enums/DataScopeType.java @@ -43,14 +43,14 @@ public enum DataScopeType { DEPT_AND_CHILD("4", " #{#deptName} IN ( #{@sdss.getDeptAndChild( #user.deptId )} )", " 1 = 1 "), /** - * 仅本人数据权限 + * 仅本人数据权限。 方法注解加该参数并且有《财务合同》角色,这个方法则强制查询仅自己,不管这个角色是否还有高级角色 */ SELF("5", " #{#userName} = #{#user.userId} ", " 1 = 0 "), /** - * 财务合同部门及以下数据 + * 财务合同部门及以下数据 方法注解加该参数并且有《财务合同》角色,这个方法则强制查询部门及以下,不管这个用户是否还有高级角色 */ - CAIWU_HETONG("6", " #{#deptName} = #{#user.deptId} ", " 1 = 0 ") + CAIWU_HETONG("6", " #{#deptName} = #{#user.deptId} or #{#userName} = #{#user.userId} ", " 1 = 1 ") ; private final String code; diff --git a/pusong-common/pusong-common-mybatis/src/main/java/com/pusong/common/mybatis/handler/PlusDataPermissionHandler.java b/pusong-common/pusong-common-mybatis/src/main/java/com/pusong/common/mybatis/handler/PlusDataPermissionHandler.java index 8f7e76f..d70e999 100644 --- a/pusong-common/pusong-common-mybatis/src/main/java/com/pusong/common/mybatis/handler/PlusDataPermissionHandler.java +++ b/pusong-common/pusong-common-mybatis/src/main/java/com/pusong/common/mybatis/handler/PlusDataPermissionHandler.java @@ -105,7 +105,7 @@ public class PlusDataPermissionHandler { /** * 构造数据过滤sql */ - private String buildDataFilter(DataColumn[] dataColumns, boolean isSelect) { + private String buildDataFilter(DataColumn[] funcDataColumns, boolean isSelect) { // 更新或删除需满足所有条件 String joinStr = isSelect ? " OR " : " AND "; LoginUser user = DataPermissionHelper.getVariable("user"); @@ -116,42 +116,67 @@ public class PlusDataPermissionHandler { for (RoleDTO role : user.getRoles()) { user.setRoleId(role.getRoleId()); // 获取角色权限泛型 - DataScopeType type = DataScopeType.findCode(role.getDataScope()); - if (ObjectUtil.isNull(type)) { + DataScopeType roleDataType = DataScopeType.findCode(role.getDataScope()); + if (ObjectUtil.isNull(roleDataType)) { throw new ServiceException("角色数据范围异常 => " + role.getDataScope()); } // 全部数据权限直接返回 - if (type == DataScopeType.ALL) { + if (roleDataType == DataScopeType.ALL) { // return ""; continue; } boolean isSuccess = false; - for (DataColumn dataColumn : dataColumns) { - if (type == DataScopeType.CAIWU_HETONG && DataScopeType.CAIWU_HETONG != dataColumn.dataScopeType()){ + for (DataColumn funcDataColumn : funcDataColumns) { +// if (type == DataScopeType.CAIWU_HETONG && DataScopeType.CAIWU_HETONG != dataColumn.dataScopeType()){ +// continue; +// } + String sqlTemplate = roleDataType.getSqlTemplate(); + + boolean check = false; + if (roleDataType == DataScopeType.CAIWU_HETONG){ + if (DataScopeType.SELF == funcDataColumn.dataScopeType() || DataScopeType.CAIWU_HETONG == funcDataColumn.dataScopeType()){ + check = true; + sqlTemplate = funcDataColumn.dataScopeType().getSqlTemplate(); + } + }else{ + check = true; + } + + if (!check){ continue; } - if (dataColumn.key().length != dataColumn.value().length) { + + if (DataScopeType.SELF != funcDataColumn.dataScopeType() + && DataScopeType.CAIWU_HETONG != funcDataColumn.dataScopeType() + && DataScopeType.CAIWU_HETONG != funcDataColumn.dataScopeType()){ + continue; + } + + if (funcDataColumn.key().length != funcDataColumn.value().length) { throw new ServiceException("角色数据范围异常 => key与value长度不匹配"); } + + + // 不包含 key 变量 则不处理 - if (!StringUtils.containsAny(type.getSqlTemplate(), - Arrays.stream(dataColumn.key()).map(key -> "#" + key).toArray(String[]::new))) { + if (!StringUtils.containsAny(sqlTemplate, + Arrays.stream(funcDataColumn.key()).map(key -> "#" + key).toArray(String[]::new))) { continue; } // 设置注解变量 key 为表达式变量 value 为变量值 - for (int i = 0; i < dataColumn.key().length; i++) { - context.setVariable(dataColumn.key()[i], dataColumn.value()[i]); + for (int i = 0; i < funcDataColumn.key().length; i++) { + context.setVariable(funcDataColumn.key()[i], funcDataColumn.value()[i]); } // 解析sql模板并填充 - String sql = parser.parseExpression(type.getSqlTemplate(), parserContext).getValue(context, String.class); + String sql = parser.parseExpression(sqlTemplate, parserContext).getValue(context, String.class); conditions.add(joinStr + sql); isSuccess = true; } // 未处理成功则填充兜底方案 - if (!isSuccess && StringUtils.isNotBlank(type.getElseSql())) { - conditions.add(joinStr + type.getElseSql()); + if (!isSuccess && StringUtils.isNotBlank(roleDataType.getElseSql())) { + conditions.add(joinStr + roleDataType.getElseSql()); } } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/HomeController.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/HomeController.java index 5c95fb4..a2ac69b 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/HomeController.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/HomeController.java @@ -62,6 +62,17 @@ public class HomeController extends BaseController { public R renewal(@RequestParam() Integer type) { return R.ok(homeService.renewal(type)); } + + /** + * 新签老客户新客户统计 + */ + @SaCheckPermission("business:salary:list") + @GetMapping("/contractNumByCusIsOld") + public R contractNumByCusIsOld(@RequestParam() Integer type) { + return R.ok(homeService.contractNumByCusIsOld(type)); + } + + /** * 首页大盘数据:回款情况 * @param type 1本月 2上月 3本季度 4本年 5所有 diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsTaskController.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsTaskController.java index b4179ce..38ee78b 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsTaskController.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsTaskController.java @@ -25,6 +25,7 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; +import java.util.Date; import java.util.Map; /** @@ -114,8 +115,8 @@ public class PsTaskController extends BaseController { @Log(title = "主任务完成") @SaCheckPermission("business:task:list") @GetMapping("/mainFinish") - public R mainFinish(@NotNull Long id) { - contractInfoService.finish(psTaskMainService.finishMain(id)); + public R mainFinish(@NotNull Long id, Date firstFilingTime) { + contractInfoService.finish(psTaskMainService.finishMain(id, firstFilingTime)); return R.ok(); } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsTaskWorkRecordController.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsTaskWorkRecordController.java index 9d1493b..201bd71 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsTaskWorkRecordController.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/PsTaskWorkRecordController.java @@ -41,7 +41,7 @@ public class PsTaskWorkRecordController extends BaseController { * 根据任务委派id查询工作进度列表 */ @Log(title = "根据任务委派id查询工作进度列表") - @SaCheckPermission("business:taskWorkRecord:list") +// @SaCheckPermission("business:taskWorkRecord:list") @GetMapping("/list") public R> list(@NotNull Long id) { return R.ok(psTaskWorkRecordService.queryListByAppointId(id)); @@ -51,7 +51,7 @@ public class PsTaskWorkRecordController extends BaseController { * 根据主任务id查询工作进度列表 */ @Log(title = "根据主任务id查询工作进度列表") - @SaCheckPermission("business:taskWorkRecord:listByTaskId") +// @SaCheckPermission("business:taskWorkRecord:listByTaskId") @GetMapping("/listByTaskId") public R> listByTaskId(@NotNull Long id) { return R.ok(psTaskWorkRecordService.queryListByTaskId(id)); diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/PsCompanyInfo.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/PsCompanyInfo.java index c8e7cdc..289e8e3 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/PsCompanyInfo.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/PsCompanyInfo.java @@ -205,5 +205,8 @@ public class PsCompanyInfo extends TenantEntity { */ private Integer serviceStatus; - + /** + * 首次申报时间 + */ + private Date firstFilingTime; } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/PsContractCompany.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/PsContractCompany.java index dc39dd9..c0746b4 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/PsContractCompany.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/PsContractCompany.java @@ -48,5 +48,4 @@ public class PsContractCompany extends TenantEntity { private String taskRemark; - } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/PsContractInfo.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/PsContractInfo.java index 85b9382..464b14e 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/PsContractInfo.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/PsContractInfo.java @@ -178,4 +178,9 @@ public class PsContractInfo extends TenantEntity { * 是否作废CommonStatusEnum */ private String isCancel; + + /** + * 0新客户 1老客户 + */ + private byte isOldCus; } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/AppointBo.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/AppointBo.java index 852d6b1..8d30695 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/AppointBo.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/AppointBo.java @@ -2,7 +2,6 @@ package com.pusong.business.domain.bo; import com.pusong.system.domain.bo.SysDictDataBo; import io.github.linpeilie.annotations.AutoMapper; -import io.swagger.v3.oas.annotations.media.PatternProperty; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import lombok.Data; diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/PsCompanyQueryBo.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/PsCompanyQueryBo.java index 5248cb1..a00ca95 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/PsCompanyQueryBo.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/PsCompanyQueryBo.java @@ -5,6 +5,7 @@ import com.pusong.business.domain.PsCompanyInfo; import com.pusong.common.core.validate.AddGroup; import com.pusong.common.core.validate.EditGroup; import com.pusong.common.core.validate.QueryGroup; +import com.pusong.common.mybatis.core.domain.BaseEntity; import io.github.linpeilie.annotations.AutoMapper; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; @@ -22,7 +23,7 @@ import java.util.Date; */ @Data @EqualsAndHashCode -public class PsCompanyQueryBo { +public class PsCompanyQueryBo extends BaseEntity { /** * 公司ID @@ -63,4 +64,6 @@ public class PsCompanyQueryBo { */ private Integer type; + + } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/PsContractInfoBo.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/PsContractInfoBo.java index 2d46f61..161eb16 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/PsContractInfoBo.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/PsContractInfoBo.java @@ -163,6 +163,10 @@ public class PsContractInfoBo { */ private int firstPartyType; + /** + * 0新客户 1老客户 + */ + private byte isOldCus; public enum FIRSTPARTYTYPE{ COMPANY(1), diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/PsTaskQueryBo.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/PsTaskQueryBo.java index 8de7716..e9400bb 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/PsTaskQueryBo.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/PsTaskQueryBo.java @@ -1,6 +1,7 @@ package com.pusong.business.domain.bo; import com.pusong.common.core.validate.QueryGroup; +import com.pusong.common.mybatis.core.domain.BaseEntity; import jakarta.validation.constraints.NotBlank; import lombok.Data; import lombok.EqualsAndHashCode; @@ -15,7 +16,7 @@ import java.util.List; */ @Data @EqualsAndHashCode -public class PsTaskQueryBo { +public class PsTaskQueryBo extends BaseEntity { /** * 主键id diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsCompanyInfoVo.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsCompanyInfoVo.java index c6bf9b3..14ded74 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsCompanyInfoVo.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsCompanyInfoVo.java @@ -276,4 +276,9 @@ public class PsCompanyInfoVo implements Serializable { * 公司类型 */ private String companyType; + + /** + * 首次申报时间 + */ + private Date firstFilingTime; } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsContractCompanyVo.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsContractCompanyVo.java index 342c963..334c57c 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsContractCompanyVo.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsContractCompanyVo.java @@ -8,6 +8,7 @@ import lombok.Data; import lombok.EqualsAndHashCode; import java.io.Serial; +import java.util.Date; /** * 公司信息对象 ps_company_info @@ -35,5 +36,4 @@ public class PsContractCompanyVo { - } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsContractInfoVo.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsContractInfoVo.java index f1399a5..4960b10 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsContractInfoVo.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsContractInfoVo.java @@ -272,6 +272,11 @@ public class PsContractInfoVo implements Serializable { */ private List lastApprover; + /** + * 0新客户 1老客户 + */ + private byte isOldCus; + /** * 服务项目里是否为 托管服务 * @return diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/home/OldOrNewCusContractCountVo.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/home/OldOrNewCusContractCountVo.java new file mode 100644 index 0000000..c6ce22d --- /dev/null +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/home/OldOrNewCusContractCountVo.java @@ -0,0 +1,38 @@ +package com.pusong.business.domain.vo.home; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +@Data +public class OldOrNewCusContractCountVo { + /** + * 当前时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm") + private Date currentDate = new Date(); + /** + * 统计范围 + */ + private String dateStr; + /** + * 新客户 新签 数量 + */ + private Long newContractNum; + /** + * 老客户 新签 数量 + */ + private Long oldContractNum; + + /** + * 新客户 新签 占比 + */ + private BigDecimal newContractPer; + /** + * 老客户 新签 占比 + */ + private BigDecimal oldContractPer; + +} diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/mapper/PsContractInfoMapper.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/mapper/PsContractInfoMapper.java index cef10e4..bc12aa3 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/mapper/PsContractInfoMapper.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/mapper/PsContractInfoMapper.java @@ -74,7 +74,7 @@ public interface PsContractInfoMapper extends BaseMapperPlus byChannel(@Param(Constants.WRAPPER) Wrapper queryWrapper, Temporal startTime, Temporal endTime); //首页查询各个渠道成交的合同 @DataPermission({ - @DataColumn(key = "userName", value = "info.custom_manager") + @DataColumn(key = "userName", value = "info.custom_manager", dataScopeType = DataScopeType.SELF) }) List byChannelUser(@Param(Constants.WRAPPER) Wrapper queryWrapper, Temporal startTime, Temporal endTime); diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/mapper/PsCustomInfoMapper.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/mapper/PsCustomInfoMapper.java index 76a4bce..9b7b48f 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/mapper/PsCustomInfoMapper.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/mapper/PsCustomInfoMapper.java @@ -30,7 +30,7 @@ public interface PsCustomInfoMapper extends BaseMapperPlus selectList(@Param(Constants.WRAPPER) Wrapper queryWrapper); @DataPermission({ - @DataColumn(key = "deptName", value = "info.create_dept", dataScopeType = DataScopeType.CAIWU_HETONG), + @DataColumn(key = {"deptName", "userName"}, value = {"info.create_dept", "info.custom_manager"}, dataScopeType = DataScopeType.CAIWU_HETONG), @DataColumn(key = "userName", value = "info.custom_manager") }) Page selectPageCustomerList(@Param("page") Page page, @Param(Constants.WRAPPER) Wrapper queryWrapper); diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/mapper/PsHomeMapper.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/mapper/PsHomeMapper.java index a4d37a3..ed3f537 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/mapper/PsHomeMapper.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/mapper/PsHomeMapper.java @@ -28,25 +28,25 @@ public interface PsHomeMapper extends BaseMapperPlus { int selectGonghaiNum(@Param("queryParam") Map queryParam); @DataPermission({ - @DataColumn(key = "userName", value = "cus.custom_manager") + @DataColumn(key = "userName", value = "cus.custom_manager", dataScopeType = DataScopeType.SELF) }) int selectCallbackRecordNum(@Param("queryParam") Map queryParam); @DataPermission({ - @DataColumn(key = "userName", value = "cus.custom_manager") + @DataColumn(key = "userName", value = "cus.custom_manager", dataScopeType = DataScopeType.SELF) }) int selectNoCallbackRecordNum(@Param("queryParam") Map queryParam); @DataPermission({ - @DataColumn(key = "userName", value = "info.custom_manager") + @DataColumn(key = "userName", value = "info.custom_manager", dataScopeType = DataScopeType.SELF) }) SalasVo selectContractNumAndAmount(@Param("queryParam") Map queryParam); @DataPermission({ - @DataColumn(key = "userName", value = "info.custom_manager") + @DataColumn(key = "userName", value = "info.custom_manager", dataScopeType = DataScopeType.SELF) }) BigDecimal selectSumPayContractAmount(@Param("queryParam") Map queryParam); } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/HomeService.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/HomeService.java index 3cbc117..da37818 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/HomeService.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/HomeService.java @@ -16,6 +16,9 @@ public interface HomeService { ReturnMoneyInfoVo returnMoney(Integer type); RenewalInfoVo renewal(Integer type); + + OldOrNewCusContractCountVo contractNumByCusIsOld(Integer type); + UserAmountVo getUserContractSourceAmountsByDeptId(Integer type, int tabType); List getUserContractAmountsByDeptId(Integer type, Long deptId); UserAmountVo getUserContractAndPayInfo(Integer type, int tabType); diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/IPsTaskService.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/IPsTaskService.java index 4ebaf66..5b63895 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/IPsTaskService.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/IPsTaskService.java @@ -16,6 +16,7 @@ import org.jetbrains.annotations.NotNull; import org.springframework.web.multipart.MultipartFile; import java.util.Collection; +import java.util.Date; import java.util.List; import java.util.Map; @@ -104,7 +105,7 @@ public interface IPsTaskService { * @param id 任务主键id * @return */ - String finishMain(Long id); + String finishMain(Long id, Date firstFilingTime); /** * 子任务完成 * diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/HomeServiceImpl.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/HomeServiceImpl.java index b6962b6..0a9ae39 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/HomeServiceImpl.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/HomeServiceImpl.java @@ -310,6 +310,46 @@ public class HomeServiceImpl implements HomeService { return renewalInfoVo; } + public OldOrNewCusContractCountVo contractNumByCusIsOld(Integer type){ + Map mapParam = this.getDate(type); + LocalDate startDate = (LocalDate)mapParam.get("startDate"); + LocalDate endDate = (LocalDate)mapParam.get("endDate"); + String date = (String)mapParam.get("date"); + + OldOrNewCusContractCountVo ret = new OldOrNewCusContractCountVo(); + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("is_old_cus", 1); + queryWrapper.eq("is_due", "0"); + queryWrapper.ge(startDate != null,"apply_date", startDate) + .lt(endDate != null,"apply_date", endDate); + Long oldCusNum = psContractInfoMapper.selectCount(queryWrapper); + + + queryWrapper.clear(); + queryWrapper.eq("is_old_cus", 0); + queryWrapper.eq("is_due", "0"); + queryWrapper.ge(startDate != null,"apply_date", startDate) + .lt(endDate != null,"apply_date", endDate); + Long newCusNum = psContractInfoMapper.selectCount(queryWrapper); + + long sum = oldCusNum + newCusNum; + + ret.setOldContractNum(oldCusNum); + ret.setNewContractNum(newCusNum); + if (oldCusNum != 0){ + ret.setOldContractPer(new BigDecimal(oldCusNum).divide(new BigDecimal(sum), 2, RoundingMode.HALF_UP).multiply(new BigDecimal(100))); + } else{ + ret.setOldContractPer(new BigDecimal(0)); + } + if (newCusNum != 0){ + ret.setNewContractPer((new BigDecimal(100).subtract(ret.getOldContractPer()))); + } else{ + ret.setNewContractPer(new BigDecimal(0)); + } + + ret.setDateStr(date); + return ret; + } private String contractSource = "转介绍"; /** * 按人员成交【转介绍】列表,根据部门获取 diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsCompanyInfoServiceImpl.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsCompanyInfoServiceImpl.java index ec64cdf..aaf5f68 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsCompanyInfoServiceImpl.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsCompanyInfoServiceImpl.java @@ -154,6 +154,8 @@ public class PsCompanyInfoServiceImpl implements IPsCompanyInfoService { lqw.like(bo.getCompanyName() != null,"com.company_name", bo.getCompanyName()); lqw.eq(bo.getServiceStatus() != null,"com.service_status", bo.getServiceStatus()); + lqw.between(bo.getParams().get("beginTime") != null && bo.getParams().get("endTime") != null, + "com.first_filing_time", bo.getParams().get("beginTime"), bo.getParams().get("endTime")); String followUserSql = ""; @@ -188,6 +190,8 @@ public class PsCompanyInfoServiceImpl implements IPsCompanyInfoService { lqw.exists(bo.getType() != 1, sql.toString()); lqw.orderByAsc("CASE WHEN bus.min_end_date IS NULL THEN 1 ELSE 0 END, bus.min_end_date"); lqw.orderByDesc("finish_date"); + + // lqw.groupBy("com.id"); Page result = baseMapper.selectPageList2(pageQuery.build(), lqw); if (!result.getRecords().isEmpty()){ diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsCustomInfoServiceImpl.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsCustomInfoServiceImpl.java index 6ab00d0..b55483d 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsCustomInfoServiceImpl.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsCustomInfoServiceImpl.java @@ -74,18 +74,18 @@ public class PsCustomInfoServiceImpl implements IPsCustomInfoService { @Override public TableDataInfo listByLoginUser(String customName, String customMobile, String companyName, PageQuery pageQuery) { //查询客户基本信息 - Page list = baseMapper.selectVoPage(pageQuery.build() + Page list = baseMapper.selectPageCustomerList(pageQuery.build() , new QueryWrapper() - .select("id", "custom_name", "custom_mobile", "create_time", "custom_source") - .lambda() - .eq(PsCustomInfo::getDelFlag, 0) - .isNotNull(PsCustomInfo::getCustomName) - .ne(PsCustomInfo::getCustomName,"") - .ne(PsCustomInfo::getCustomName,"无") +// .select("id", "custom_name", "custom_mobile", "create_time", "custom_source") +// .lambda() + .eq("info.del_flag", 0) + .isNotNull("info.custom_name") + .ne("info.custom_name","") + .ne("info.custom_name","无") .and(StringUtils.isNotBlank(customName) || StringUtils.isNotBlank(customMobile) || StringUtils.isNotBlank(companyName) - , wq -> wq.like(StringUtils.isNotBlank(customName), PsCustomInfo::getCustomName, customName) + , wq -> wq.like(StringUtils.isNotBlank(customName), "info.custom_name", customName) .or() - .like(StringUtils.isNotBlank(customMobile), PsCustomInfo::getCustomMobile, customMobile) + .like(StringUtils.isNotBlank(customMobile), "info.custom_mobile", customMobile) .or() .exists(StringUtils.isNotBlank(companyName), "select 1 from ps_company_info where ps_company_info.custom_id = ps_custom_info.id and ps_company_info.del_flag = 0 and company_type = 2 and company_name like '%" + companyName + "%'") @@ -102,7 +102,7 @@ public class PsCustomInfoServiceImpl implements IPsCustomInfoService { List companyInfoVos = companyInfoMapper.selectVoList(Wrappers.lambdaQuery() .in(PsCompanyInfo::getCustomId, ids) .eq(PsCompanyInfo::getDelFlag, 0) - .eq(PsCompanyInfo::getCompanyType, "2") +// .eq(PsCompanyInfo::getCompanyType, "2") ); Map> id_companyMap = new HashMap<>(); if(CollectionUtils.isNotEmpty(companyInfoVos)){ @@ -114,6 +114,8 @@ public class PsCustomInfoServiceImpl implements IPsCustomInfoService { }); } + + List> listmap = new ArrayList<>(); for (PsCustomInfoVo item : list.getRecords()) { Map map = new HashMap<>(); @@ -122,7 +124,24 @@ public class PsCustomInfoServiceImpl implements IPsCustomInfoService { map.put("custom_mobile", item.getCustomMobile()); map.put("createTime", DateUtils.toString(item.getCreateTime(),"yyyy-MM-dd")); map.put("customSource", item.getCustomSource()); - map.put("psCompanySerivceVo", id_companyMap.get(item.getId())); + + + + List allPsCompanyInfoVos = id_companyMap.get(item.getId()); + if (allPsCompanyInfoVos != null){ + List psCompanyInfoVos = new ArrayList<>(); + List psServiceCompanyInfoVos = new ArrayList<>(); + for (PsCompanyInfoVo psCompanyInfoVo : allPsCompanyInfoVos) { + if ("1".equals(psCompanyInfoVo.getCompanyType())){ + psCompanyInfoVos.add(psCompanyInfoVo); + }else if ("2".equals(psCompanyInfoVo.getCompanyType())){ + psServiceCompanyInfoVos.add(psCompanyInfoVo); + } + } + map.put("psCompanySerivceVo", psServiceCompanyInfoVos); + map.put("psCompanyVo", psCompanyInfoVos); + } + listmap.add(map); } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsTaskServiceImpl.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsTaskServiceImpl.java index bedf421..20069fd 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsTaskServiceImpl.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsTaskServiceImpl.java @@ -79,7 +79,7 @@ public class PsTaskServiceImpl implements IPsTaskService { private final IPsContractInfoService contractInfoService; @Autowired private SysUserMapper sysUserMapper; - + private final PsCompanyInfoMapper companyInfoMapper; /** * 新增主任务 * @@ -198,10 +198,12 @@ public class PsTaskServiceImpl implements IPsTaskService { lqw.eq("appo.del_flag","0"); lqw.ne(StringUtils.isBlank(bo.getTaskStatus()), "main.task_status", TaskStatusEnum.CANCEL.getCode()); lqw.exists(StringUtils.isNotBlank(ex), "select 1 from sys_user su where appo.executor = su.user_id and su.nick_name like '%" + ex + "%'"); - lqw.eq("appo.appoint_type",bo.getAppointType()); - lqw.eq(id != null,"appo.id",id); + lqw.eq("appo.appoint_type", bo.getAppointType()); + lqw.eq(id != null,"appo.id", id); lqw.eq(StringUtils.isNotBlank(bo.getAppointStatus()),"appo.appoint_status", bo.getAppointStatus()); + lqw.orderByDesc("appo.create_time"); + Page page = baseMapper.queryChildTaskPageList(pageQuery.build(), lqw); fillInfo(page); @@ -429,7 +431,7 @@ public class PsTaskServiceImpl implements IPsTaskService { * @param id 任务主键id * @return */ - public String finishMain(Long id){ + public String finishMain(Long id, Date firstFilingTime){ PsTaskMain main = baseMapper.selectById(id); if(!TaskStatusEnum.canFinish(main.getTaskStatus())){ throw new ServiceException("此任务无法执行此操作,请刷新页面后重新操作"); @@ -447,6 +449,14 @@ public class PsTaskServiceImpl implements IPsTaskService { PsContractInfoVo contract = contractInfoService.queryContractByCode(main.getContractCode()); noticeService.sendNotice(SysNoticeBo.getTaskFinishInstance(contract.getCustomManager(), contract.getPsCustomInfoVo().getCustomName())); + +// QueryWrapper queryWrapper = new QueryWrapper(); +// queryWrapper.eq("id", main.getServiceCompanyId()); + PsCompanyInfo psContractCompany = new PsCompanyInfo(); + psContractCompany.setId(main.getServiceCompanyId()); + psContractCompany.setFirstFilingTime(firstFilingTime); + companyInfoMapper.updateById(psContractCompany); + return main.getContractCode(); } /** @@ -666,9 +676,10 @@ public class PsTaskServiceImpl implements IPsTaskService { .or() .likeLeft("cus.custom_mobile", bo.getAppKeyWord()) .or() - .exists("scom.company_name", bo.getAppKeyWord()) + .like("scom.company_name", bo.getAppKeyWord()) ); - + lqw.between(bo.getParams().get("beginTime") != null && bo.getParams().get("endTime") != null, + "main.create_time", bo.getParams().get("beginTime"), bo.getParams().get("endTime")); return lqw; } diff --git a/pusong-modules/pusong-system/src/main/java/com/pusong/system/mapper/SysUserMapper.java b/pusong-modules/pusong-system/src/main/java/com/pusong/system/mapper/SysUserMapper.java index 0dcdb82..0b59700 100644 --- a/pusong-modules/pusong-system/src/main/java/com/pusong/system/mapper/SysUserMapper.java +++ b/pusong-modules/pusong-system/src/main/java/com/pusong/system/mapper/SysUserMapper.java @@ -79,7 +79,6 @@ public interface SysUserMapper extends BaseMapperPlus { @Override @DataPermission({ - @DataColumn(key = "deptName", value = "dept_id"), @DataColumn(key = "userName", value = "user_id") }) int update(@Param(Constants.ENTITY) SysUser user, @Param(Constants.WRAPPER) Wrapper updateWrapper);