添加webSocket;添加ecpp配置
This commit is contained in:
parent
9ad0bc0ed5
commit
32dbd17038
2
.gitignore
vendored
2
.gitignore
vendored
@ -20,6 +20,8 @@ target/
|
|||||||
*.iml
|
*.iml
|
||||||
*.ipr
|
*.ipr
|
||||||
*.log
|
*.log
|
||||||
|
.jlsp
|
||||||
|
.arts
|
||||||
### NetBeans ###
|
### NetBeans ###
|
||||||
/nbproject/private/
|
/nbproject/private/
|
||||||
/nbbuild/
|
/nbbuild/
|
||||||
|
|||||||
@ -0,0 +1,20 @@
|
|||||||
|
package com.cpop.api.tencent.wxWork.core.config;
|
||||||
|
|
||||||
|
import com.cpop.api.tencent.wxWork.core.config.ecpp.EcppProperties;
|
||||||
|
import lombok.Getter;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Description 数字人民币API配置类
|
||||||
|
* @authors DB
|
||||||
|
* @date 2023-11-24 17:27:07
|
||||||
|
* @version 1.0.0
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
@Configuration
|
||||||
|
@EnableConfigurationProperties(EcppProperties.class)
|
||||||
|
public class EcppApiConfig {
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,33 @@
|
|||||||
|
package com.cpop.api.tencent.wxWork.core.config.ecpp;
|
||||||
|
import lombok.Data;
|
||||||
|
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Description 数字人民币配置
|
||||||
|
* @authors DB
|
||||||
|
* @date 2023-11-24 17:34:59
|
||||||
|
* @version 1.0.0
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@ConfigurationProperties(prefix = "ecpp.pay")
|
||||||
|
public class EcppProperties {
|
||||||
|
|
||||||
|
/**基础路径 */
|
||||||
|
private String baseUrl;
|
||||||
|
|
||||||
|
/**应用/平台标识 */
|
||||||
|
private String appId;
|
||||||
|
|
||||||
|
/**公钥 */
|
||||||
|
private String appType;
|
||||||
|
|
||||||
|
/**签名身份类型(1、平台;2、商户; 3、用户) */
|
||||||
|
private String signatureIdType;
|
||||||
|
|
||||||
|
/**签名身份标识 */
|
||||||
|
private String signatureId;
|
||||||
|
|
||||||
|
/**公钥 */
|
||||||
|
private String publicKey;
|
||||||
|
|
||||||
|
}
|
||||||
@ -11,7 +11,7 @@ import org.springframework.context.annotation.Configuration;
|
|||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
@Configuration
|
@Configuration
|
||||||
@ConfigurationProperties(prefix = "pupu.api.tencent.wx-work")
|
@ConfigurationProperties(prefix = "cpop.api.tencent.wx-work")
|
||||||
public class WxWorkApiConfig {
|
public class WxWorkApiConfig {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -1 +1,13 @@
|
|||||||
|
#数币
|
||||||
|
ecpp:
|
||||||
|
pay:
|
||||||
|
appId: 1000
|
||||||
|
signatureIdType: 1
|
||||||
|
signatureId: 90035603022098432
|
||||||
|
publicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA32A6vFBgXZgVgzaboSHjMMfJxrxXITDkdgzMR/WpTdxJvqZyyZtPOtdL4wg6St4lki4W/SMH6zTWJX07HYeWl8KiSOAXr2kcqHWPhO+rmtq8rMaR831f9ot7GK/6hkKUFRQZ8Uev8pGnOO4w5n+AaLOkohd+K0WXoaNokD+vxvZO7+yTYY/WAT30ItaMY0Ld5o3rRRo63lHuNlBjQ6mP8U6pPXek0J+oONraxJwZPsCEGTw3tfsXi0uMViRRXfp33H2xBZ11wrRrY/l5Pp8YPpJCxrCyzGcwlNqsT4VuEW4NglMyyU0g0J9mR+eIZS2kmuhpwjshyGC2Soc7DYdNUwIDAQAB
|
||||||
|
paycallback: /callback/ecnypaypass/pay
|
||||||
|
|
||||||
|
#腾讯
|
||||||
|
tencent:
|
||||||
|
#企业微信
|
||||||
|
wx-work:
|
||||||
@ -1,16 +1,16 @@
|
|||||||
# 项目相关配置
|
# 项目相关配置
|
||||||
cpop:
|
cpop:
|
||||||
# 文件路径 示例( Windows配置W:/WorkSpace/java/uploadPath,Linux配置 /home/baseFramework/uploadPath)
|
# 文件路径 示例( Windows配置W:/WorkSpace/java/uploadPath,Linux配置 /home/baseFramework/uploadPath)
|
||||||
profile: E:/Cpop/uploadPath
|
profile: D:/Cpop/uploadPath
|
||||||
jwt:
|
jwt:
|
||||||
#白名单
|
#白名单
|
||||||
whiteList: /login,/getCaptcha,/profile/**,/doc.html,/webjars/**,/favicon.ico,/v2/api-docs/**,/swagger-resources,/wxCp/*,/wxCp/portal/*/registerCode
|
whiteList: /websocket/*,/login,/getCaptcha,/profile/**,/doc.html,/webjars/**,/favicon.ico,/v2/api-docs/**,/swagger-resources,/wxCp/*,/wxCp/portal/*/registerCode
|
||||||
gateway:
|
gateway:
|
||||||
rsa-keypair:
|
rsa-keypair:
|
||||||
# 公钥文件
|
# 公钥文件
|
||||||
publicKeyFile: E:\Cpop\Cpop-Union\Cpop-Core\src\main\resources\static\keyPair\publicKey
|
publicKeyFile: D:\Cpop\Cpop-Union\Cpop-Core\src\main\resources\static\keyPair\publicKey
|
||||||
# 公钥文件
|
# 公钥文件
|
||||||
privateKeyFile: E:\Cpop\Cpop-Union\Cpop-Core\src\main\resources\static\keyPair\privateKey
|
privateKeyFile: D:\Cpop\Cpop-Union\Cpop-Core\src\main\resources\static\keyPair\privateKey
|
||||||
|
|
||||||
# DataSource Config
|
# DataSource Config
|
||||||
spring:
|
spring:
|
||||||
@ -88,8 +88,8 @@ knife4j:
|
|||||||
wx:
|
wx:
|
||||||
pay:
|
pay:
|
||||||
# p12证书的位置,可以指定绝对路径,也可以指定类路径(以classpath:开头)
|
# p12证书的位置,可以指定绝对路径,也可以指定类路径(以classpath:开头)
|
||||||
keyPath: E:/Cpop/Cpop-Union/Cpop-Core/src/main/resources/static/keyPair/wxPay_cert.p12
|
keyPath: D:/Cpop/Cpop-Union/Cpop-Core/src/main/resources/static/keyPair/wxPay_cert.p12
|
||||||
# 私钥证书
|
# 私钥证书
|
||||||
privateKeyPath: E:/Cpop/Cpop-Union/Cpop-Core/src/main/resources/static/keyPair/wxPay_key.pem
|
privateKeyPath: D:/Cpop/Cpop-Union/Cpop-Core/src/main/resources/static/keyPair/wxPay_key.pem
|
||||||
# 私钥文件
|
# 私钥文件
|
||||||
privateCertPath: E:/Cpop/Cpop-Union/Cpop-Core/src/main/resources/static/keyPair/wxPay_cert.pem
|
privateCertPath: D:/Cpop/Cpop-Union/Cpop-Core/src/main/resources/static/keyPair/wxPay_cert.pem
|
||||||
@ -4,7 +4,7 @@ cpop:
|
|||||||
profile: /root/cpop-union/cpop-oam/upload
|
profile: /root/cpop-union/cpop-oam/upload
|
||||||
jwt:
|
jwt:
|
||||||
#白名单
|
#白名单
|
||||||
whiteList: /login,/getCaptcha,/profile/**,/wxOpen/receiveTicket,/wxOpen/*/callback,/wxOpen/bindOpenAccount/*,/wxCp/portal/*,/wxCp/*,/wxCp/portal/*/registerCode
|
whiteList: /websocket/*,/login,/getCaptcha,/profile/**,/wxOpen/receiveTicket,/wxOpen/*/callback,/wxOpen/bindOpenAccount/*,/wxCp/portal/*,/wxCp/*,/wxCp/portal/*/registerCode
|
||||||
#拦截
|
#拦截
|
||||||
gateway:
|
gateway:
|
||||||
rsa-keypair:
|
rsa-keypair:
|
||||||
|
|||||||
@ -4,7 +4,7 @@ cpop:
|
|||||||
profile: /root/cpop-union/cpop-mall/upload
|
profile: /root/cpop-union/cpop-mall/upload
|
||||||
jwt:
|
jwt:
|
||||||
#白名单
|
#白名单
|
||||||
whiteList: /login,/getCaptcha,/profile/**,/doc.html,/webjars/**,/favicon.ico,/v2/api-docs/**,/swagger-resources,/wxOpen/receiveTicket,/wxOpen/*/callback,/wxOpen/bindOpenAccount/*,/wxCp/portal/*,/wxCp/portal/*/registerCode,/wxCp/*
|
whiteList: /websocket/*,/login,/getCaptcha,/profile/**,/doc.html,/webjars/**,/favicon.ico,/v2/api-docs/**,/swagger-resources,/wxOpen/receiveTicket,/wxOpen/*/callback,/wxOpen/bindOpenAccount/*,/wxCp/portal/*,/wxCp/portal/*/registerCode,/wxCp/*
|
||||||
#拦截
|
#拦截
|
||||||
gateway:
|
gateway:
|
||||||
rsa-keypair:
|
rsa-keypair:
|
||||||
|
|||||||
@ -92,7 +92,6 @@ public class CommonServiceImpl implements CommonService {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public ConfigInfoVo getSysConfigInfo() {
|
public ConfigInfoVo getSysConfigInfo() {
|
||||||
ConfigInfoVo sysConfigInfoVo = new ConfigInfoVo();
|
|
||||||
RedisService redisService = SpringUtils.getBean(RedisService.class);
|
RedisService redisService = SpringUtils.getBean(RedisService.class);
|
||||||
CoreService coreService = SpringUtils.getBean(CoreService.class);
|
CoreService coreService = SpringUtils.getBean(CoreService.class);
|
||||||
//获取企业微信信息
|
//获取企业微信信息
|
||||||
@ -105,14 +104,15 @@ public class CommonServiceImpl implements CommonService {
|
|||||||
configMap.put(sysConfigEnum.getField(), cacheInfo);
|
configMap.put(sysConfigEnum.getField(), cacheInfo);
|
||||||
} else {
|
} else {
|
||||||
//查询系统
|
//查询系统
|
||||||
String value = coreService.selectConfigByKey(item).getConfigValue();
|
SysConfig sysConfig = coreService.selectConfigByKey(item);
|
||||||
if (StringUtils.isNotBlank(value)) {
|
if (null !=sysConfig) {
|
||||||
//获取枚举
|
//获取枚举
|
||||||
OamConfigEnum sysConfigEnum = OamConfigEnum.matchKey(item);
|
OamConfigEnum sysConfigEnum = OamConfigEnum.matchKey(item);
|
||||||
configMap.put(sysConfigEnum.getField(), value);
|
configMap.put(sysConfigEnum.getField(), sysConfig.getConfigValue());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
ConfigInfoVo sysConfigInfoVo = new ConfigInfoVo();
|
||||||
BeanUtils.mapToObj(configMap, sysConfigInfoVo);
|
BeanUtils.mapToObj(configMap, sysConfigInfoVo);
|
||||||
return sysConfigInfoVo;
|
return sysConfigInfoVo;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
package com.cpop.oam.business.service.impl;
|
package com.cpop.oam.business.service.impl;
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.cpop.system.framework.ws.server.WebSocketServer;
|
||||||
import com.mybatisflex.core.paginate.Page;
|
import com.mybatisflex.core.paginate.Page;
|
||||||
import com.mybatisflex.core.query.QueryWrapper;
|
import com.mybatisflex.core.query.QueryWrapper;
|
||||||
import com.mybatisflex.spring.service.impl.ServiceImpl;
|
import com.mybatisflex.spring.service.impl.ServiceImpl;
|
||||||
@ -72,8 +73,10 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
|
|||||||
@Override
|
@Override
|
||||||
public Page<TaskPageVo> getTaskPage(TaskPageBo bo) {
|
public Page<TaskPageVo> getTaskPage(TaskPageBo bo) {
|
||||||
PageDomain pageDomain = SqlUtils.getInstance().getPageDomain();
|
PageDomain pageDomain = SqlUtils.getInstance().getPageDomain();
|
||||||
return this.mapper.paginateAs(pageDomain.getPageNum(),pageDomain.getPageSize(),
|
return this.mapper.paginateAs(pageDomain.getPageNum(),
|
||||||
QueryWrapper.create().where(TASK.TASK_STATUS.eq(1))
|
pageDomain.getPageSize(),
|
||||||
|
QueryWrapper.create()
|
||||||
|
.where(TASK.TASK_STATUS.eq(1))
|
||||||
.and(TASK.TASK_TYPE.eq(bo.getTaskType()))
|
.and(TASK.TASK_TYPE.eq(bo.getTaskType()))
|
||||||
.and(TASK.TASK_RATING.eq(bo.getTaskRating()))
|
.and(TASK.TASK_RATING.eq(bo.getTaskRating()))
|
||||||
.orderBy(TASK.EXPECTED_COMPLETION_DATE.asc()),
|
.orderBy(TASK.EXPECTED_COMPLETION_DATE.asc()),
|
||||||
@ -90,27 +93,31 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
|
|||||||
@Override
|
@Override
|
||||||
public void insertTask(TaskBo bo) {
|
public void insertTask(TaskBo bo) {
|
||||||
Task entity = BeanUtils.mapToClass(bo, Task.class);
|
Task entity = BeanUtils.mapToClass(bo, Task.class);
|
||||||
//默认待审核
|
// 默认待审核
|
||||||
entity.setTaskStatus(0);
|
entity.setTaskStatus(0);
|
||||||
//默认开发中
|
// 默认开发中
|
||||||
entity.setTaskItem(0);
|
entity.setTaskItem(0);
|
||||||
this.save(entity);
|
this.save(entity);
|
||||||
//获取审核管理员手机号
|
// 获取审核管理员手机号
|
||||||
CoreService coreService = SpringUtils.getBean(CoreService.class);
|
CoreService coreService = SpringUtils.getBean(CoreService.class);
|
||||||
RedisService redisService = SpringUtils.getBean(RedisService.class);
|
RedisService redisService = SpringUtils.getBean(RedisService.class);
|
||||||
String auditStaffPhone = redisService.getCacheObject(OamConfigEnum.AUDIT_STAFF_PHONE.getKey());
|
String auditStaffPhone = redisService.getCacheObject(OamConfigEnum.AUDIT_STAFF_PHONE.getKey());
|
||||||
if (StringUtils.isBlank(auditStaffPhone)) {
|
if (StringUtils.isBlank(auditStaffPhone)) {
|
||||||
SysConfig sysConfig = coreService.selectConfigByKey(OamConfigEnum.AUDIT_STAFF_PHONE.getKey());
|
SysConfig sysConfig = coreService.selectConfigByKey(OamConfigEnum.AUDIT_STAFF_PHONE.getKey());
|
||||||
auditStaffPhone = sysConfig.getConfigValue();
|
auditStaffPhone = sysConfig.getConfigValue();
|
||||||
if (StringUtils.isBlank(auditStaffPhone)){
|
if (StringUtils.isBlank(auditStaffPhone)) {
|
||||||
throw new ServiceException("尚未配置审核管理员信息!");
|
throw new ServiceException("尚未配置审核管理员信息!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//企微通知审核管理员
|
// 企微通知审核管理员
|
||||||
List<String> phoneList = new ArrayList<String>();
|
List<String> phoneList = new ArrayList<String>();
|
||||||
phoneList.add(auditStaffPhone);
|
phoneList.add(auditStaffPhone);
|
||||||
try {
|
try {
|
||||||
SpringUtils.getBean(WebHookSendHandler.class).webHookSendText(WebHookKeyConstant.PRODUCT_BOT, phoneList, "==========您有一条新的迭代任务需要审核==========", false);
|
SpringUtils.getBean(WebHookSendHandler.class)
|
||||||
|
.webHookSendText(WebHookKeyConstant.PRODUCT_BOT,
|
||||||
|
phoneList,
|
||||||
|
"==========您有一条新的迭代任务需要审核==========",
|
||||||
|
false);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
throw new ServiceException("发送通知失败!");
|
throw new ServiceException("发送通知失败!");
|
||||||
}
|
}
|
||||||
@ -125,10 +132,9 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
|
|||||||
@Override
|
@Override
|
||||||
public Page<TaskAuditPageVo> getTaskAuditPage() {
|
public Page<TaskAuditPageVo> getTaskAuditPage() {
|
||||||
PageDomain pageDomain = SqlUtils.getInstance().getPageDomain();
|
PageDomain pageDomain = SqlUtils.getInstance().getPageDomain();
|
||||||
return this.mapper.paginateAs(pageDomain.getPageNum(),pageDomain.getPageSize(),
|
return this.mapper.paginateAs(pageDomain.getPageNum(),
|
||||||
QueryWrapper.create()
|
pageDomain.getPageSize(),
|
||||||
.where(TASK.TASK_STATUS.eq(0))
|
QueryWrapper.create().where(TASK.TASK_STATUS.eq(0)).orderBy(TASK.CREATE_TIME.desc()),
|
||||||
.orderBy(TASK.CREATE_TIME.desc()),
|
|
||||||
TaskAuditPageVo.class);
|
TaskAuditPageVo.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -143,6 +149,12 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
|
|||||||
public void setTaskAuditComments(TaskAuditCommentsBo bo) {
|
public void setTaskAuditComments(TaskAuditCommentsBo bo) {
|
||||||
Task entity = BeanUtils.mapToClass(bo, Task.class);
|
Task entity = BeanUtils.mapToClass(bo, Task.class);
|
||||||
this.updateById(entity);
|
this.updateById(entity);
|
||||||
|
// 如果通过,可以通过websocket进行通信
|
||||||
|
if (bo.getTaskStatus() == 1) {
|
||||||
|
// 获取任务信息
|
||||||
|
Task task = this.getById(bo.getId());
|
||||||
|
SpringUtils.getBean(WebSocketServer.class).sendInfo("您的任务" + task.getTaskName() + "已通过,请注意接收:", task.getResponsibleStaffId());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -153,12 +165,11 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
|
|||||||
**/
|
**/
|
||||||
@Override
|
@Override
|
||||||
public Page<TaskAuditPageVo> getTaskRejectPage() {
|
public Page<TaskAuditPageVo> getTaskRejectPage() {
|
||||||
//获取当前用户信息
|
// 获取当前用户信息
|
||||||
PageDomain pageDomain = SqlUtils.getInstance().getPageDomain();
|
PageDomain pageDomain = SqlUtils.getInstance().getPageDomain();
|
||||||
return this.mapper.paginateAs(pageDomain.getPageNum(),pageDomain.getPageSize(),
|
return this.mapper.paginateAs(pageDomain.getPageNum(),
|
||||||
QueryWrapper.create()
|
pageDomain.getPageSize(),
|
||||||
.where(TASK.TASK_STATUS.eq(-1))
|
QueryWrapper.create().where(TASK.TASK_STATUS.eq(-1)).orderBy(TASK.CREATE_TIME.desc()),
|
||||||
.orderBy(TASK.CREATE_TIME.desc()),
|
|
||||||
TaskAuditPageVo.class);
|
TaskAuditPageVo.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -171,64 +182,64 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
|
|||||||
**/
|
**/
|
||||||
@Override
|
@Override
|
||||||
public void claimTask(String id) {
|
public void claimTask(String id) {
|
||||||
//查询任务
|
// 查询任务
|
||||||
Task task = this.getById(id);
|
Task task = this.getById(id);
|
||||||
//进行中
|
// 进行中
|
||||||
task.setTaskStatus(2);
|
task.setTaskStatus(2);
|
||||||
//接受时间
|
// 接受时间
|
||||||
task.setTaskReceiptTime(LocalDateTime.now());
|
task.setTaskReceiptTime(LocalDateTime.now());
|
||||||
//如果任务没有设置预期完成时间,则按照任务评级进行设置默认
|
// 如果任务没有设置预期完成时间,则按照任务评级进行设置默认
|
||||||
if (null == task.getExpectedCompletionDate()) {
|
if (null == task.getExpectedCompletionDate()) {
|
||||||
//获取任务评级
|
// 获取任务评级
|
||||||
Integer taskRating = task.getTaskRating();
|
Integer taskRating = task.getTaskRating();
|
||||||
Date expectedCompletionDate;
|
Date expectedCompletionDate;
|
||||||
switch (taskRating) {
|
switch (taskRating) {
|
||||||
case 0:
|
case 0:
|
||||||
//30天
|
// 30天
|
||||||
expectedCompletionDate = DateUtils.addDateDays(new Date(), 30);
|
expectedCompletionDate = DateUtils.addDateDays(new Date(), 30);
|
||||||
task.setExpectedCompletionDate(new java.sql.Date(expectedCompletionDate.getTime()));
|
task.setExpectedCompletionDate(new java.sql.Date(expectedCompletionDate.getTime()));
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
//21天
|
// 21天
|
||||||
expectedCompletionDate = DateUtils.addDateDays(new Date(), 21);
|
expectedCompletionDate = DateUtils.addDateDays(new Date(), 21);
|
||||||
task.setExpectedCompletionDate(new java.sql.Date(expectedCompletionDate.getTime()));
|
task.setExpectedCompletionDate(new java.sql.Date(expectedCompletionDate.getTime()));
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
//15天
|
// 15天
|
||||||
expectedCompletionDate = DateUtils.addDateDays(new Date(), 15);
|
expectedCompletionDate = DateUtils.addDateDays(new Date(), 15);
|
||||||
task.setExpectedCompletionDate(new java.sql.Date(expectedCompletionDate.getTime()));
|
task.setExpectedCompletionDate(new java.sql.Date(expectedCompletionDate.getTime()));
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
//7天
|
// 7天
|
||||||
expectedCompletionDate = DateUtils.addDateDays(new Date(), 7);
|
expectedCompletionDate = DateUtils.addDateDays(new Date(), 7);
|
||||||
task.setExpectedCompletionDate(new java.sql.Date(expectedCompletionDate.getTime()));
|
task.setExpectedCompletionDate(new java.sql.Date(expectedCompletionDate.getTime()));
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
//3天
|
// 3天
|
||||||
expectedCompletionDate = DateUtils.addDateDays(new Date(), 3);
|
expectedCompletionDate = DateUtils.addDateDays(new Date(), 3);
|
||||||
task.setExpectedCompletionDate(new java.sql.Date(expectedCompletionDate.getTime()));
|
task.setExpectedCompletionDate(new java.sql.Date(expectedCompletionDate.getTime()));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
//1天
|
// 1天
|
||||||
expectedCompletionDate = DateUtils.addDateDays(new Date(), 1);
|
expectedCompletionDate = DateUtils.addDateDays(new Date(), 1);
|
||||||
task.setExpectedCompletionDate(new java.sql.Date(expectedCompletionDate.getTime()));
|
task.setExpectedCompletionDate(new java.sql.Date(expectedCompletionDate.getTime()));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//获取当前用户
|
// 获取当前用户
|
||||||
LoginUser loginUser = SecurityUtils.getInstance().getLoginUser();
|
LoginUser loginUser = SecurityUtils.getInstance().getLoginUser();
|
||||||
if (!Constants.SUPER_ADMIN.equals(loginUser.getUsername())) {
|
if (!Constants.SUPER_ADMIN.equals(loginUser.getUsername())) {
|
||||||
//获取当前员工
|
// 获取当前员工
|
||||||
Staff staff = SpringUtils.getBean(StaffService.class)
|
Staff staff = SpringUtils.getBean(StaffService.class)
|
||||||
.getOne(QueryWrapper.create().where(STAFF.USER_ID.eq(loginUser.getUserId())));
|
.getOne(QueryWrapper.create().where(STAFF.USER_ID.eq(loginUser.getUserId())));
|
||||||
task.setResponsibleStaffId(staff.getId());
|
task.setResponsibleStaffId(staff.getId());
|
||||||
}
|
}
|
||||||
this.updateById(task);
|
this.updateById(task);
|
||||||
//添加主要负责人组
|
// 添加主要负责人组
|
||||||
TaskStaffGroup taskStaffGroup = new TaskStaffGroup();
|
TaskStaffGroup taskStaffGroup = new TaskStaffGroup();
|
||||||
int taskRatingPoint;
|
int taskRatingPoint;
|
||||||
//评级换绩点
|
// 评级换绩点
|
||||||
switch (task.getTaskRating()){
|
switch (task.getTaskRating()) {
|
||||||
case 0:
|
case 0:
|
||||||
taskRatingPoint = 200;
|
taskRatingPoint = 200;
|
||||||
break;
|
break;
|
||||||
@ -247,9 +258,7 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
|
|||||||
default:
|
default:
|
||||||
taskRatingPoint = 10;
|
taskRatingPoint = 10;
|
||||||
}
|
}
|
||||||
taskStaffGroup.setStaffId(task.getResponsibleStaffId())
|
taskStaffGroup.setStaffId(task.getResponsibleStaffId()).setTaskId(id).setGradePoint(taskRatingPoint);
|
||||||
.setTaskId(id)
|
|
||||||
.setGradePoint(taskRatingPoint);
|
|
||||||
SpringUtils.getBean(TaskStaffGroupService.class).save(taskStaffGroup);
|
SpringUtils.getBean(TaskStaffGroupService.class).save(taskStaffGroup);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -261,34 +270,37 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
|
|||||||
**/
|
**/
|
||||||
@Override
|
@Override
|
||||||
public Page<PersonTaskPageVo> getPersonTaskPage(PersonTaskPageBo bo) {
|
public Page<PersonTaskPageVo> getPersonTaskPage(PersonTaskPageBo bo) {
|
||||||
//获取当前登录用户
|
// 获取当前登录用户
|
||||||
LoginUser loginUser = SecurityUtils.getInstance().getLoginUser();
|
LoginUser loginUser = SecurityUtils.getInstance().getLoginUser();
|
||||||
String staffId = null;
|
String staffId = null;
|
||||||
if (Constants.SUPER_ADMIN.equals(loginUser.getUsername())) {
|
if (Constants.SUPER_ADMIN.equals(loginUser.getUsername())) {
|
||||||
//TODO:超级管理员暂时获取所有任务
|
// TODO:超级管理员暂时获取所有任务
|
||||||
} else {
|
} else {
|
||||||
Staff staff = SpringUtils.getBean(StaffService.class).getOne(QueryWrapper.create()
|
Staff staff = SpringUtils.getBean(StaffService.class)
|
||||||
.where(STAFF.USER_ID.eq(loginUser.getUserId())));
|
.getOne(QueryWrapper.create().where(STAFF.USER_ID.eq(loginUser.getUserId())));
|
||||||
staffId = staff.getId();
|
staffId = staff.getId();
|
||||||
}
|
}
|
||||||
//任务状态
|
// 任务状态
|
||||||
QueryWrapper queryWrapper = QueryWrapper.create();
|
QueryWrapper queryWrapper = QueryWrapper.create();
|
||||||
if (null != bo.getTaskStatus()) {
|
if (null != bo.getTaskStatus()) {
|
||||||
queryWrapper.and(TASK.TASK_STATUS.in(3, 6));
|
queryWrapper.and(TASK.TASK_STATUS.in(3, 6));
|
||||||
} else {
|
} else {
|
||||||
//只查询接受与已逾期的任务
|
// 只查询接受与已逾期的任务
|
||||||
queryWrapper.and(TASK.TASK_STATUS.in(2, 4));
|
queryWrapper.and(TASK.TASK_STATUS.in(2, 4));
|
||||||
}
|
}
|
||||||
PageDomain pageDomain = SqlUtils.getInstance().getPageDomain();
|
PageDomain pageDomain = SqlUtils.getInstance().getPageDomain();
|
||||||
return this.mapper.paginateAs(pageDomain.getPageNum(),pageDomain.getPageSize(),
|
return this.mapper.paginateAs(pageDomain.getPageNum(),
|
||||||
|
pageDomain.getPageSize(),
|
||||||
queryWrapper.select(TASK.ALL_COLUMNS)
|
queryWrapper.select(TASK.ALL_COLUMNS)
|
||||||
.select(STAFF.NAME.as(PersonTaskPageVo::getResponsibleStaffName))
|
.select(STAFF.NAME.as(PersonTaskPageVo::getResponsibleStaffName))
|
||||||
.from(TASK)
|
.from(TASK)
|
||||||
//员工表
|
// 员工表
|
||||||
.leftJoin(STAFF).on(STAFF.ID.eq(TASK.RESPONSIBLE_STAFF_ID))
|
.leftJoin(STAFF)
|
||||||
//任务员工组
|
.on(STAFF.ID.eq(TASK.RESPONSIBLE_STAFF_ID))
|
||||||
.leftJoin(TASK_STAFF_GROUP).on(TASK_STAFF_GROUP.TASK_ID.eq(TASK.ID))
|
// 任务员工组
|
||||||
.where(TASK.TASK_TYPE.in(0,1))
|
.leftJoin(TASK_STAFF_GROUP)
|
||||||
|
.on(TASK_STAFF_GROUP.TASK_ID.eq(TASK.ID))
|
||||||
|
.where(TASK.TASK_TYPE.in(0, 1))
|
||||||
.and(TASK_STAFF_GROUP.STAFF_ID.eq(staffId))
|
.and(TASK_STAFF_GROUP.STAFF_ID.eq(staffId))
|
||||||
.orderBy(TASK.EXPECTED_COMPLETION_DATE.asc()),
|
.orderBy(TASK.EXPECTED_COMPLETION_DATE.asc()),
|
||||||
PersonTaskPageVo.class);
|
PersonTaskPageVo.class);
|
||||||
@ -304,9 +316,7 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
|
|||||||
@Override
|
@Override
|
||||||
public void updateTaskItem(TaskItemBo bo) {
|
public void updateTaskItem(TaskItemBo bo) {
|
||||||
isTaskResponsibleStaff(bo.getId());
|
isTaskResponsibleStaff(bo.getId());
|
||||||
this.updateChain().set(TASK.TASK_ITEM, bo.getTaskItem())
|
this.updateChain().set(TASK.TASK_ITEM, bo.getTaskItem()).where(TASK.ID.eq(bo.getId())).update();
|
||||||
.where(TASK.ID.eq(bo.getId()))
|
|
||||||
.update();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -319,24 +329,24 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
|
|||||||
@Override
|
@Override
|
||||||
public void updateTaskResponsibleStaff(TransferTaskBo bo) {
|
public void updateTaskResponsibleStaff(TransferTaskBo bo) {
|
||||||
isTaskResponsibleStaff(bo.getId());
|
isTaskResponsibleStaff(bo.getId());
|
||||||
//新负责人在不在任务组内
|
// 新负责人在不在任务组内
|
||||||
TaskStaffGroupService taskStaffGroupService = SpringUtils.getBean(TaskStaffGroupService.class);
|
TaskStaffGroupService taskStaffGroupService = SpringUtils.getBean(TaskStaffGroupService.class);
|
||||||
long count = taskStaffGroupService.count(QueryWrapper.create()
|
long count = taskStaffGroupService.count(QueryWrapper.create()
|
||||||
.where(TASK_STAFF_GROUP.TASK_ID.eq(bo.getId()))
|
.where(TASK_STAFF_GROUP.TASK_ID.eq(bo.getId()))
|
||||||
.and(TASK_STAFF_GROUP.STAFF_ID.eq(bo.getNewResponsibleStaffId())));
|
.and(TASK_STAFF_GROUP.STAFF_ID.eq(bo.getNewResponsibleStaffId())));
|
||||||
//获取旧员工绩点
|
// 获取旧员工绩点
|
||||||
TaskStaffGroup oldStaffGroup = taskStaffGroupService.getOne(QueryWrapper.create()
|
TaskStaffGroup oldStaffGroup = taskStaffGroupService.getOne(QueryWrapper.create()
|
||||||
.where(TASK_STAFF_GROUP.TASK_ID.eq(bo.getId()))
|
.where(TASK_STAFF_GROUP.TASK_ID.eq(bo.getId()))
|
||||||
.and(TASK_STAFF_GROUP.STAFF_ID.eq(bo.getResponsibleStaffId())));
|
.and(TASK_STAFF_GROUP.STAFF_ID.eq(bo.getResponsibleStaffId())));
|
||||||
if (count == 0) {
|
if (count == 0) {
|
||||||
//不在
|
// 不在
|
||||||
TaskStaffGroup taskStaffGroup = new TaskStaffGroup();
|
TaskStaffGroup taskStaffGroup = new TaskStaffGroup();
|
||||||
taskStaffGroup.setStaffId(bo.getNewResponsibleStaffId())
|
taskStaffGroup.setStaffId(bo.getNewResponsibleStaffId())
|
||||||
.setTaskId(bo.getId())
|
.setTaskId(bo.getId())
|
||||||
.setGradePoint(oldStaffGroup.getGradePoint());
|
.setGradePoint(oldStaffGroup.getGradePoint());
|
||||||
taskStaffGroupService.save(taskStaffGroup);
|
taskStaffGroupService.save(taskStaffGroup);
|
||||||
} else {
|
} else {
|
||||||
//在,直接添加绩点
|
// 在,直接添加绩点
|
||||||
TaskStaffGroup newStaffGroup = taskStaffGroupService.getOne(QueryWrapper.create()
|
TaskStaffGroup newStaffGroup = taskStaffGroupService.getOne(QueryWrapper.create()
|
||||||
.where(TASK_STAFF_GROUP.TASK_ID.eq(bo.getId()))
|
.where(TASK_STAFF_GROUP.TASK_ID.eq(bo.getId()))
|
||||||
.and(TASK_STAFF_GROUP.STAFF_ID.eq(bo.getNewResponsibleStaffId())));
|
.and(TASK_STAFF_GROUP.STAFF_ID.eq(bo.getNewResponsibleStaffId())));
|
||||||
@ -344,9 +354,9 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
|
|||||||
taskStaffGroupService.updateById(newStaffGroup);
|
taskStaffGroupService.updateById(newStaffGroup);
|
||||||
}
|
}
|
||||||
taskStaffGroupService.removeById(oldStaffGroup.getId());
|
taskStaffGroupService.removeById(oldStaffGroup.getId());
|
||||||
//替换任务负责人
|
// 替换任务负责人
|
||||||
this.updateChain()
|
this.updateChain()
|
||||||
.set(TASK.RESPONSIBLE_STAFF_ID,bo.getNewResponsibleStaffId())
|
.set(TASK.RESPONSIBLE_STAFF_ID, bo.getNewResponsibleStaffId())
|
||||||
.where(TASK.ID.eq(bo.getId()))
|
.where(TASK.ID.eq(bo.getId()))
|
||||||
.update();
|
.update();
|
||||||
}
|
}
|
||||||
@ -359,11 +369,11 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
|
|||||||
* @Date: 2023/5/30 9:48
|
* @Date: 2023/5/30 9:48
|
||||||
**/
|
**/
|
||||||
private void isTaskResponsibleStaff(String taskId) {
|
private void isTaskResponsibleStaff(String taskId) {
|
||||||
//获取任务
|
// 获取任务
|
||||||
Task task = this.getById(taskId);
|
Task task = this.getById(taskId);
|
||||||
//当前操作员工是否是主要负责人,不是抛出异常
|
// 当前操作员工是否是主要负责人,不是抛出异常
|
||||||
LoginUser loginUser = SecurityUtils.getInstance().getLoginUser();
|
LoginUser loginUser = SecurityUtils.getInstance().getLoginUser();
|
||||||
//读取员工信息
|
// 读取员工信息
|
||||||
RedisService redisService = SpringUtils.getBean(RedisService.class);
|
RedisService redisService = SpringUtils.getBean(RedisService.class);
|
||||||
JSONObject cacheObject = redisService.getCacheObject(UserType.OAM_USER.getKey() + loginUser.getUsername());
|
JSONObject cacheObject = redisService.getCacheObject(UserType.OAM_USER.getKey() + loginUser.getUsername());
|
||||||
OamStaffLoginInfo loginInfo = cacheObject.getJSONObject("user").toJavaObject(OamStaffLoginInfo.class);
|
OamStaffLoginInfo loginInfo = cacheObject.getJSONObject("user").toJavaObject(OamStaffLoginInfo.class);
|
||||||
@ -381,19 +391,19 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
|
|||||||
**/
|
**/
|
||||||
@Override
|
@Override
|
||||||
public void finishTask(String id) {
|
public void finishTask(String id) {
|
||||||
//查询任务相关信息
|
// 查询任务相关信息
|
||||||
Task task = this.getById(id);
|
Task task = this.getById(id);
|
||||||
if (null == task) {
|
if (null == task) {
|
||||||
throw new ServiceException("获取任务失败,请联系相关人员!");
|
throw new ServiceException("获取任务失败,请联系相关人员!");
|
||||||
}
|
}
|
||||||
if (task.getTaskItem() != 3){
|
if (task.getTaskItem() != 3) {
|
||||||
throw new ServiceException("当前任务没有归档,请归档后再进行完成操作!");
|
throw new ServiceException("当前任务没有归档,请归档后再进行完成操作!");
|
||||||
}
|
}
|
||||||
//判断完成任务日期
|
// 判断完成任务日期
|
||||||
LocalDate now = LocalDate.now();
|
LocalDate now = LocalDate.now();
|
||||||
LocalDate expectedCompletionDate = task.getExpectedCompletionDate().toLocalDate();
|
LocalDate expectedCompletionDate = task.getExpectedCompletionDate().toLocalDate();
|
||||||
long day = now.until(expectedCompletionDate, ChronoUnit.DAYS);
|
long day = now.until(expectedCompletionDate, ChronoUnit.DAYS);
|
||||||
//逾期完成
|
// 逾期完成
|
||||||
if (day < 0) {
|
if (day < 0) {
|
||||||
task.setTaskStatus(6);
|
task.setTaskStatus(6);
|
||||||
} else {
|
} else {
|
||||||
@ -412,19 +422,21 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
|
|||||||
**/
|
**/
|
||||||
@Override
|
@Override
|
||||||
public TaskMonthStatisticsVo getTaskMonthStatistics(TaskMonthStatisticsBo bo) {
|
public TaskMonthStatisticsVo getTaskMonthStatistics(TaskMonthStatisticsBo bo) {
|
||||||
//员工组绩点信息
|
// 员工组绩点信息
|
||||||
List<TaskStaffGroup> taskStaffGroups = null;
|
List<TaskStaffGroup> taskStaffGroups = null;
|
||||||
//读取员工信息
|
// 读取员工信息
|
||||||
JSONObject loginUserInfo = SecurityUtils.getInstance().getLoginUserInfo();
|
JSONObject loginUserInfo = SecurityUtils.getInstance().getLoginUserInfo();
|
||||||
QueryWrapper queryWrapper = QueryWrapper.create();
|
QueryWrapper queryWrapper = QueryWrapper.create();
|
||||||
if (Constants.SUPER_ADMIN.equals(loginUserInfo.getString("userName"))) {
|
if (Constants.SUPER_ADMIN.equals(loginUserInfo.getString("userName"))) {
|
||||||
//TODO:超级管理员暂时获取所有任务
|
// TODO:超级管理员暂时获取所有任务
|
||||||
} else {
|
} else {
|
||||||
//查询个人涉及到的任务
|
// 查询个人涉及到的任务
|
||||||
TaskStaffGroupService taskStaffGroupService = SpringUtils.getBean(TaskStaffGroupService.class);
|
TaskStaffGroupService taskStaffGroupService = SpringUtils.getBean(TaskStaffGroupService.class);
|
||||||
taskStaffGroups = taskStaffGroupService.list(QueryWrapper.create().where(TASK_STAFF_GROUP.STAFF_ID.eq(loginUserInfo.getString("id"))));
|
taskStaffGroups = taskStaffGroupService
|
||||||
|
.list(QueryWrapper.create().where(TASK_STAFF_GROUP.STAFF_ID.eq(loginUserInfo.getString("id"))));
|
||||||
if (!taskStaffGroups.isEmpty()) {
|
if (!taskStaffGroups.isEmpty()) {
|
||||||
queryWrapper.and(TASK.ID.in(taskStaffGroups.stream().map(TaskStaffGroup::getTaskId).collect(Collectors.toSet())));
|
queryWrapper.and(
|
||||||
|
TASK.ID.in(taskStaffGroups.stream().map(TaskStaffGroup::getTaskId).collect(Collectors.toSet())));
|
||||||
}
|
}
|
||||||
if (taskStaffGroups.isEmpty()) {
|
if (taskStaffGroups.isEmpty()) {
|
||||||
return new TaskMonthStatisticsVo();
|
return new TaskMonthStatisticsVo();
|
||||||
@ -437,13 +449,12 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
|
|||||||
// 获取目标月的第一天
|
// 获取目标月的第一天
|
||||||
firstDay = date.with(TemporalAdjusters.firstDayOfMonth());
|
firstDay = date.with(TemporalAdjusters.firstDayOfMonth());
|
||||||
} else {
|
} else {
|
||||||
//查询当月
|
// 查询当月
|
||||||
DateUtils.getDate();
|
DateUtils.getDate();
|
||||||
LocalDate now = LocalDate.now();
|
LocalDate now = LocalDate.now();
|
||||||
firstDay = now.with(TemporalAdjusters.firstDayOfMonth());
|
firstDay = now.with(TemporalAdjusters.firstDayOfMonth());
|
||||||
}
|
}
|
||||||
List<Task> taskList = this.list(queryWrapper
|
List<Task> taskList = this.list(queryWrapper.select(TASK.ALL_COLUMNS)
|
||||||
.select(TASK.ALL_COLUMNS)
|
|
||||||
.and(TASK.EXPECTED_COMPLETION_DATE.ge(firstDay))
|
.and(TASK.EXPECTED_COMPLETION_DATE.ge(firstDay))
|
||||||
.orderBy(TASK.EXPECTED_COMPLETION_DATE.asc()));
|
.orderBy(TASK.EXPECTED_COMPLETION_DATE.asc()));
|
||||||
if (taskList.isEmpty()) {
|
if (taskList.isEmpty()) {
|
||||||
@ -459,47 +470,55 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
|
|||||||
* @Author: DB
|
* @Author: DB
|
||||||
* @Date: 2023/5/15 17:54
|
* @Date: 2023/5/15 17:54
|
||||||
**/
|
**/
|
||||||
private TaskMonthStatisticsVo buildMonthTaskStatistics(List<Task> taskList, TaskMonthStatisticsBo bo ,List<TaskStaffGroup> taskStaffGroups) {
|
private TaskMonthStatisticsVo buildMonthTaskStatistics(List<Task> taskList, TaskMonthStatisticsBo bo,
|
||||||
|
List<TaskStaffGroup> taskStaffGroups) {
|
||||||
TaskMonthStatisticsVo statisticsVo = new TaskMonthStatisticsVo();
|
TaskMonthStatisticsVo statisticsVo = new TaskMonthStatisticsVo();
|
||||||
List<TaskMonthStatisticsVo.DataStatisticsVo> vos = new ArrayList<>();
|
List<TaskMonthStatisticsVo.DataStatisticsVo> vos = new ArrayList<>();
|
||||||
statisticsVo.setVos(vos);
|
statisticsVo.setVos(vos);
|
||||||
//统计数据
|
// 统计数据
|
||||||
//进行中运营人员
|
// 进行中运营人员
|
||||||
statisticsVo.setInProgress(taskList.stream().filter(s -> 2 == s.getTaskStatus()).count());
|
statisticsVo.setInProgress(taskList.stream().filter(s -> 2 == s.getTaskStatus()).count());
|
||||||
//已完成
|
// 已完成
|
||||||
Set<String> finishTaskSet = taskList.stream().filter(s -> 3 == s.getTaskStatus()).map(Task::getId).collect(Collectors.toSet());
|
Set<String> finishTaskSet =
|
||||||
|
taskList.stream().filter(s -> 3 == s.getTaskStatus()).map(Task::getId).collect(Collectors.toSet());
|
||||||
statisticsVo.setHaveCompleted(Long.parseLong(String.valueOf(finishTaskSet.size())));
|
statisticsVo.setHaveCompleted(Long.parseLong(String.valueOf(finishTaskSet.size())));
|
||||||
//已逾期
|
// 已逾期
|
||||||
statisticsVo.setOverdue(taskList.stream().filter(s -> 4 == s.getTaskStatus()).count());
|
statisticsVo.setOverdue(taskList.stream().filter(s -> 4 == s.getTaskStatus()).count());
|
||||||
//暂停
|
// 暂停
|
||||||
statisticsVo.setPause(taskList.stream().filter(s -> 5 == s.getTaskStatus()).count());
|
statisticsVo.setPause(taskList.stream().filter(s -> 5 == s.getTaskStatus()).count());
|
||||||
//逾期完成
|
// 逾期完成
|
||||||
statisticsVo.setOverdueCompletion(taskList.stream().filter(s -> 6 == s.getTaskStatus()).count());
|
statisticsVo.setOverdueCompletion(taskList.stream().filter(s -> 6 == s.getTaskStatus()).count());
|
||||||
//逾期完成
|
// 逾期完成
|
||||||
Set<String> overdueCompletionSet = taskList.stream().filter(s -> 6 == s.getTaskStatus()).map(Task::getId).collect(Collectors.toSet());
|
Set<String> overdueCompletionSet =
|
||||||
if (null != taskStaffGroups){
|
taskList.stream().filter(s -> 6 == s.getTaskStatus()).map(Task::getId).collect(Collectors.toSet());
|
||||||
//统计绩点(计算已完成的和逾期完成)
|
if (null != taskStaffGroups) {
|
||||||
Long finishGpa = statisticalGPA(taskStaffGroups.stream().filter(s -> finishTaskSet.contains(s.getTaskId())).collect(Collectors.toList()));
|
// 统计绩点(计算已完成的和逾期完成)
|
||||||
Long overdueCompletionGpa = statisticalGPA(taskStaffGroups.stream().filter(s -> overdueCompletionSet.contains(s.getTaskId())).collect(Collectors.toList()));
|
Long finishGpa = statisticalGPA(taskStaffGroups.stream()
|
||||||
|
.filter(s -> finishTaskSet.contains(s.getTaskId()))
|
||||||
|
.collect(Collectors.toList()));
|
||||||
|
Long overdueCompletionGpa = statisticalGPA(taskStaffGroups.stream()
|
||||||
|
.filter(s -> overdueCompletionSet.contains(s.getTaskId()))
|
||||||
|
.collect(Collectors.toList()));
|
||||||
statisticsVo.setGpaOfTheMonth(finishGpa + overdueCompletionGpa);
|
statisticsVo.setGpaOfTheMonth(finishGpa + overdueCompletionGpa);
|
||||||
}
|
}
|
||||||
List<Date> allTheDateOfMonth;
|
List<Date> allTheDateOfMonth;
|
||||||
//有传入月份
|
// 有传入月份
|
||||||
if (StringUtils.isNotBlank(bo.getTaskMoth())) {
|
if (StringUtils.isNotBlank(bo.getTaskMoth())) {
|
||||||
allTheDateOfMonth = DateUtils.getAllTheDateOfTheMonth(DateUtils.parseDate(bo.getTaskMoth() + "-15"));
|
allTheDateOfMonth = DateUtils.getAllTheDateOfTheMonth(DateUtils.parseDate(bo.getTaskMoth() + "-15"));
|
||||||
} else {
|
} else {
|
||||||
//获取当月日期数组并遍历
|
// 获取当月日期数组并遍历
|
||||||
allTheDateOfMonth = DateUtils.getAllTheDateOfTheMonth(new Date());
|
allTheDateOfMonth = DateUtils.getAllTheDateOfTheMonth(new Date());
|
||||||
}
|
}
|
||||||
allTheDateOfMonth.forEach(item -> {
|
allTheDateOfMonth.forEach(item -> {
|
||||||
LocalDate localDate = item.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
|
LocalDate localDate = item.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
|
||||||
List<String> taskNames = new ArrayList<>();
|
List<String> taskNames = new ArrayList<>();
|
||||||
TaskMonthStatisticsVo.DataStatisticsVo dataStatisticsVo = statisticsVo.new DataStatisticsVo();
|
TaskMonthStatisticsVo.DataStatisticsVo dataStatisticsVo = statisticsVo.new DataStatisticsVo();
|
||||||
//如果日期大于等于接受任务日期,并且小于等于预期完成日期,则插入
|
// 如果日期大于等于接受任务日期,并且小于等于预期完成日期,则插入
|
||||||
taskList.forEach(task -> {
|
taskList.forEach(task -> {
|
||||||
//接受时间
|
// 接受时间
|
||||||
LocalDate date = task.getTaskReceiptTime().toLocalDate();
|
LocalDate date = task.getTaskReceiptTime().toLocalDate();
|
||||||
if (localDate.compareTo(date) >= 0 && localDate.compareTo(task.getExpectedCompletionDate().toLocalDate()) <= 0){
|
if (localDate.compareTo(date) >= 0
|
||||||
|
&& localDate.compareTo(task.getExpectedCompletionDate().toLocalDate()) <= 0) {
|
||||||
taskNames.add(task.getTaskName());
|
taskNames.add(task.getTaskName());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -518,7 +537,7 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
|
|||||||
* @Date: 2023/5/29 18:24
|
* @Date: 2023/5/29 18:24
|
||||||
**/
|
**/
|
||||||
private Long statisticalGPA(List<TaskStaffGroup> taskStaffGroups) {
|
private Long statisticalGPA(List<TaskStaffGroup> taskStaffGroups) {
|
||||||
//获取任务
|
// 获取任务
|
||||||
if (null != taskStaffGroups) {
|
if (null != taskStaffGroups) {
|
||||||
return taskStaffGroups.stream().mapToLong(TaskStaffGroup::getGradePoint).sum();
|
return taskStaffGroups.stream().mapToLong(TaskStaffGroup::getGradePoint).sum();
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@ -13,6 +13,8 @@ import org.springframework.stereotype.Service;
|
|||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
import com.cpop.core.utils.SpringUtils;
|
||||||
|
import com.cpop.system.framework.ws.server.WebSocketServer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author DB
|
* @author DB
|
||||||
|
|||||||
@ -2,13 +2,14 @@ package com.cpop.system.framework.ws.server;
|
|||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
|
|
||||||
import javax.websocket.*;
|
import javax.websocket.*;
|
||||||
import javax.websocket.server.PathParam;
|
import javax.websocket.server.PathParam;
|
||||||
import javax.websocket.server.ServerEndpoint;
|
import javax.websocket.server.ServerEndpoint;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.concurrent.CopyOnWriteArraySet;
|
import java.util.concurrent.CopyOnWriteArraySet;
|
||||||
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
|
import com.cpop.core.base.exception.ServiceException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author DB
|
* @author DB
|
||||||
@ -24,7 +25,7 @@ public class WebSocketServer {
|
|||||||
/**
|
/**
|
||||||
* 静态变量,用来记录当前在线连接数。应该把它设计成线程安全的。
|
* 静态变量,用来记录当前在线连接数。应该把它设计成线程安全的。
|
||||||
*/
|
*/
|
||||||
private static int onlineCount = 0;
|
private static AtomicInteger onlineCount = new AtomicInteger(0);
|
||||||
/**
|
/**
|
||||||
* concurrent包的线程安全Set,用来存放每个客户端对应的MyWebSocket对象。
|
* concurrent包的线程安全Set,用来存放每个客户端对应的MyWebSocket对象。
|
||||||
*/
|
*/
|
||||||
@ -112,7 +113,7 @@ public class WebSocketServer {
|
|||||||
/**
|
/**
|
||||||
* 群发自定义消息
|
* 群发自定义消息
|
||||||
*/
|
*/
|
||||||
public static void sendInfo(String message, @PathParam("sid") String sid) throws IOException {
|
public static void sendInfo(String message, @PathParam("sid") String sid) {
|
||||||
log.info("推送消息到窗口" + sid + ",推送内容:" + message);
|
log.info("推送消息到窗口" + sid + ",推送内容:" + message);
|
||||||
for (WebSocketServer item : webSocketSet) {
|
for (WebSocketServer item : webSocketSet) {
|
||||||
try {
|
try {
|
||||||
@ -123,21 +124,21 @@ public class WebSocketServer {
|
|||||||
item.sendMessage(message);
|
item.sendMessage(message);
|
||||||
}
|
}
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
continue;
|
throw new ServiceException("发送webSocket消息失败!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static synchronized int getOnlineCount() {
|
public static synchronized AtomicInteger getOnlineCount() {
|
||||||
return onlineCount;
|
return onlineCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static synchronized void addOnlineCount() {
|
public static synchronized void addOnlineCount() {
|
||||||
WebSocketServer.onlineCount++;
|
WebSocketServer.onlineCount.incrementAndGet();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static synchronized void subOnlineCount() {
|
public static synchronized void subOnlineCount() {
|
||||||
WebSocketServer.onlineCount--;
|
WebSocketServer.onlineCount.decrementAndGet();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static CopyOnWriteArraySet<WebSocketServer> getWebSocketSet() {
|
public static CopyOnWriteArraySet<WebSocketServer> getWebSocketSet() {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user