From cb3d91202a087ac42d7f86365c8903b1fbb1c6fe Mon Sep 17 00:00:00 2001 From: DB <2502523450@qq.com> Date: Wed, 6 Dec 2023 18:24:13 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E4=BB=BB=E5=8A=A1=E6=B5=81?= =?UTF-8?q?=E7=A8=8B-=E4=BF=AE=E5=A4=8Dbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../json/StringToArraySerializer.java | 1 + .../mall/web/CpopMallWebApplicationTests.java | 2 +- .../com/cpop/mall/web/CpopWxPayTests.java | 22 +- .../oam/business/bo/TaskAuditCommentsBo.java | 11 +- .../com/cpop/oam/business/bo/TaskItemBo.java | 2 + .../backstage/TaskTechnologyController.java | 2 - .../com/cpop/oam/business/entity/Task.java | 7 +- .../cpop/oam/business/entity/TaskDemand.java | 5 - .../oam/business/entity/TaskWorkOrder.java | 5 - .../service/impl/TaskDemandServiceImpl.java | 24 +- .../service/impl/TaskServiceImpl.java | 103 ++-- .../impl/TaskStaffGroupServiceImpl.java | 58 ++- .../impl/TaskWorkOrderServiceImpl.java | 449 +++++++++--------- .../oam/business/vo/PersonTaskPageVo.java | 2 +- .../oam/business/vo/TaskArchivingPagVo.java | 16 +- .../oam/business/vo/TaskDemandPageVo.java | 2 +- .../vo/TaskIndividualGpaDetailVo.java | 46 ++ .../oam/business/vo/TaskIndividualGpaVo.java | 45 +- .../business/vo/TaskToBeClaimedPageVo.java | 16 +- .../service/impl/DictDataServiceImpl.java | 3 + .../system/framework/utils/DictUtils.java | 4 +- 21 files changed, 431 insertions(+), 394 deletions(-) create mode 100644 Cpop-Oam/src/main/java/com/cpop/oam/business/vo/TaskIndividualGpaDetailVo.java diff --git a/Cpop-Core/src/main/java/com/cpop/core/strategy/json/StringToArraySerializer.java b/Cpop-Core/src/main/java/com/cpop/core/strategy/json/StringToArraySerializer.java index d3d146b..5656a1c 100644 --- a/Cpop-Core/src/main/java/com/cpop/core/strategy/json/StringToArraySerializer.java +++ b/Cpop-Core/src/main/java/com/cpop/core/strategy/json/StringToArraySerializer.java @@ -7,6 +7,7 @@ import com.fasterxml.jackson.databind.SerializerProvider; import lombok.NoArgsConstructor; import java.io.IOException; +import java.util.ArrayList; /** * 序列化时 逗号拼接转数组 "0","1","2" -> ["0","1","2"] diff --git a/Cpop-Mall/Cpop-Mall-Web/src/test/java/com/cpop/mall/web/CpopMallWebApplicationTests.java b/Cpop-Mall/Cpop-Mall-Web/src/test/java/com/cpop/mall/web/CpopMallWebApplicationTests.java index c96a3de..4bd6c30 100644 --- a/Cpop-Mall/Cpop-Mall-Web/src/test/java/com/cpop/mall/web/CpopMallWebApplicationTests.java +++ b/Cpop-Mall/Cpop-Mall-Web/src/test/java/com/cpop/mall/web/CpopMallWebApplicationTests.java @@ -8,7 +8,7 @@ import org.springframework.boot.test.context.SpringBootTest; import java.util.Map; -@SpringBootTest +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) class CpopMallWebApplicationTests { @Autowired diff --git a/Cpop-Mall/Cpop-Mall-Web/src/test/java/com/cpop/mall/web/CpopWxPayTests.java b/Cpop-Mall/Cpop-Mall-Web/src/test/java/com/cpop/mall/web/CpopWxPayTests.java index a23655c..1e725d2 100644 --- a/Cpop-Mall/Cpop-Mall-Web/src/test/java/com/cpop/mall/web/CpopWxPayTests.java +++ b/Cpop-Mall/Cpop-Mall-Web/src/test/java/com/cpop/mall/web/CpopWxPayTests.java @@ -35,7 +35,7 @@ import java.util.Map; * @createTime 2023/11/01 18:15 * @description 微信支付 */ -@SpringBootTest +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) public class CpopWxPayTests { @Autowired @@ -63,13 +63,13 @@ public class CpopWxPayTests { .setTotal(refund) .setCurrency("CNY"); request.setSubMchid(wxPayService.getConfig().getSubMchId()) - .setTransactionId("4200002010202311202693854147") - .setOutTradeNo("84052505520087040") + .setTransactionId("4200002028202312069539269015") + .setOutTradeNo("89825115260416000") //.setTransactionId(order.getOutOrderNo()) //.setOutTradeNo(order.getId()) .setNotifyUrl(wxPayProperties.getNotifyRefund()) .setOutRefundNo(IdUtils.fastSimpleUUID()) - .setSubMchid("1659765332") + .setSubMchid("1661807764") .setReason("接口测试退款") .setAmount(amount); WxPayRefundV3Result result = wxPayService.refundV3(request); @@ -129,8 +129,8 @@ public class CpopWxPayTests { @Test public void getOrderInfo() throws WxPayException { WxPayConfig config = wxPayService.getConfig(); - config.setSubMchId("1659795861"); - WxPayOrderQueryResult wxPayOrderQueryResult = wxPayService.queryOrder("4200002050202311175292231256", null); + config.setSubMchId("1661807764"); + WxPayOrderQueryResult wxPayOrderQueryResult = wxPayService.queryOrder("4200002028202312069539269015", null); System.out.println(wxPayOrderQueryResult); } @@ -143,8 +143,8 @@ public class CpopWxPayTests { @Test public void getSharingInfo() throws WxPayException { ProfitSharingQueryRequest profitSharingQueryRequest = new ProfitSharingQueryRequest(); - profitSharingQueryRequest.setOutOrderNo("84064193241784320").setTransactionId("4200002009202311209353972307"); - profitSharingQueryRequest.setSubMchId("1659765332"); + profitSharingQueryRequest.setOutOrderNo("89825238983995392").setTransactionId("4200002028202312069539269015"); + profitSharingQueryRequest.setSubMchId("1661807764"); ProfitSharingQueryResult result = wxPayService.getProfitSharingService().profitSharingQuery(profitSharingQueryRequest); System.out.println(result.getResultCode()); } @@ -168,10 +168,10 @@ public class CpopWxPayTests { @Test public void profitSharingFinish() throws WxPayException { ProfitSharingFinishRequest profitSharingFinishRequest = new ProfitSharingFinishRequest(); - profitSharingFinishRequest.setTransactionId("4200002010202311202693854147"); - profitSharingFinishRequest.setOutOrderNo("84052505520087040"); + profitSharingFinishRequest.setTransactionId("4200002028202312069539269015"); + profitSharingFinishRequest.setOutOrderNo("89825115260416000"); profitSharingFinishRequest.setDescription("结束分账"); - profitSharingFinishRequest.setSubMchId("1659765332"); + profitSharingFinishRequest.setSubMchId("1661807764"); wxPayService.getProfitSharingService().profitSharingFinish(profitSharingFinishRequest); } diff --git a/Cpop-Oam/src/main/java/com/cpop/oam/business/bo/TaskAuditCommentsBo.java b/Cpop-Oam/src/main/java/com/cpop/oam/business/bo/TaskAuditCommentsBo.java index 1a18d6b..c16fd36 100644 --- a/Cpop-Oam/src/main/java/com/cpop/oam/business/bo/TaskAuditCommentsBo.java +++ b/Cpop-Oam/src/main/java/com/cpop/oam/business/bo/TaskAuditCommentsBo.java @@ -38,12 +38,19 @@ public class TaskAuditCommentsBo { /** * 任务评级(0:A;1:B;2:C;3:D;4:E) */ - @ApiModelProperty("任务评级(0:A;1:B;2:C;3:D;4:E)") - private Integer taskRating; + @ApiModelProperty("任务评级") + private String taskRating; + + /** + * 任务权重 + */ + @ApiModelProperty("任务权重(任务绩点)") + private Integer taskWeight; /** * 备注(不通过时可以写入备注) */ @ApiModelProperty("备注(不通过时可以写入备注)") private String remark; + } diff --git a/Cpop-Oam/src/main/java/com/cpop/oam/business/bo/TaskItemBo.java b/Cpop-Oam/src/main/java/com/cpop/oam/business/bo/TaskItemBo.java index 269a948..4765c17 100644 --- a/Cpop-Oam/src/main/java/com/cpop/oam/business/bo/TaskItemBo.java +++ b/Cpop-Oam/src/main/java/com/cpop/oam/business/bo/TaskItemBo.java @@ -1,5 +1,6 @@ package com.cpop.oam.business.bo; +import com.cpop.core.annontation.StringArrayConvert; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -37,6 +38,7 @@ public class TaskItemBo { /** * 测试转部署文件路径 */ + @StringArrayConvert @ApiModelProperty(value = "测试转部署文件路径") private String testToFinishUrl; } diff --git a/Cpop-Oam/src/main/java/com/cpop/oam/business/controller/backstage/TaskTechnologyController.java b/Cpop-Oam/src/main/java/com/cpop/oam/business/controller/backstage/TaskTechnologyController.java index d3f995d..f714a7a 100644 --- a/Cpop-Oam/src/main/java/com/cpop/oam/business/controller/backstage/TaskTechnologyController.java +++ b/Cpop-Oam/src/main/java/com/cpop/oam/business/controller/backstage/TaskTechnologyController.java @@ -93,8 +93,6 @@ public class TaskTechnologyController { /** * 技术模块-任务归档-获取任务归档分页 * - * @param subject 主体 - * @param taskContent 任务内容 * @author DB * @since 2023-11-30 21:11:47 */ diff --git a/Cpop-Oam/src/main/java/com/cpop/oam/business/entity/Task.java b/Cpop-Oam/src/main/java/com/cpop/oam/business/entity/Task.java index e14c18b..5fe3304 100644 --- a/Cpop-Oam/src/main/java/com/cpop/oam/business/entity/Task.java +++ b/Cpop-Oam/src/main/java/com/cpop/oam/business/entity/Task.java @@ -72,7 +72,12 @@ public class Task extends BaseEntity implements Serializable { /** * 任务评级(0:A;1:B;2:C;3:D;4:E) */ - private Integer taskRating; + private String taskRating; + + /** + * 记录员工id + */ + private String recordStaffId; /** * 附件地址 diff --git a/Cpop-Oam/src/main/java/com/cpop/oam/business/entity/TaskDemand.java b/Cpop-Oam/src/main/java/com/cpop/oam/business/entity/TaskDemand.java index 8eb19d0..34adf68 100644 --- a/Cpop-Oam/src/main/java/com/cpop/oam/business/entity/TaskDemand.java +++ b/Cpop-Oam/src/main/java/com/cpop/oam/business/entity/TaskDemand.java @@ -48,11 +48,6 @@ public class TaskDemand extends BaseEntity implements Serializable { */ private String storeId; - /** - * 记录员工id - */ - private String recordStaffId; - /** * 签约图片 */ diff --git a/Cpop-Oam/src/main/java/com/cpop/oam/business/entity/TaskWorkOrder.java b/Cpop-Oam/src/main/java/com/cpop/oam/business/entity/TaskWorkOrder.java index c09e404..da9f2c3 100644 --- a/Cpop-Oam/src/main/java/com/cpop/oam/business/entity/TaskWorkOrder.java +++ b/Cpop-Oam/src/main/java/com/cpop/oam/business/entity/TaskWorkOrder.java @@ -58,11 +58,6 @@ public class TaskWorkOrder extends BaseEntity implements Serializable { */ private String phoneNumber; - /** - * 记录员工id - */ - private String recordStaffId; - /** * 办结时间 */ diff --git a/Cpop-Oam/src/main/java/com/cpop/oam/business/service/impl/TaskDemandServiceImpl.java b/Cpop-Oam/src/main/java/com/cpop/oam/business/service/impl/TaskDemandServiceImpl.java index 890ce86..5631223 100644 --- a/Cpop-Oam/src/main/java/com/cpop/oam/business/service/impl/TaskDemandServiceImpl.java +++ b/Cpop-Oam/src/main/java/com/cpop/oam/business/service/impl/TaskDemandServiceImpl.java @@ -69,14 +69,15 @@ public class TaskDemandServiceImpl extends ServiceImpl item.field(TaskDemandPageVo::getResponsibleStaffName).queryWrapper(responsibleStaffName -> { - if (StringUtils.isNoneBlank(responsibleStaffName.getResponsibleStaffName())) { + if (StringUtils.isNotBlank(responsibleStaffName.getResponsibleStaffId())) { return queryWrapper.create() - .select(STAFF.NAME.as(TaskDemandPageVo::getResponsibleStaffName)) + .select(STAFF.NAME.as(TaskDemandPageVo::getResponsibleStaffId)) .from(STAFF) - .where(STAFF.ID.eq(responsibleStaffName.getResponsibleStaffName())); + .where(STAFF.ID.eq(responsibleStaffName.getResponsibleStaffId())); } else { return null; } @@ -160,17 +161,16 @@ public class TaskDemandServiceImpl extends ServiceImpl implements Ta @Override public Page getTaskArchivingPage(TaskArchivingPagBo bo) { // 获取当前员工 - JSONObject loginUserInfo = SecurityUtils.getInstance().getLoginUserInfo(); PageDomain pageDomain = SqlUtils.getInstance().getPageDomain(); return this.mapper.paginateAs(Page.of(pageDomain.getPageNum(), pageDomain.getPageSize()), QueryWrapper.create() .select(TASK.ID, TASK.RESPONSIBLE_STAFF_ID, TASK.TASK_CONTENT, + TASK.TASK_TYPE, TASK.TASK_RATING, + TASK.TASK_WEIGHT, TASK.TASK_RECEIPT_TIME, TASK.TEST_TO_FINISH_URL, TASK.TO_TEST_TIME, + TASK.TO_DEPLOY_TIME, + TASK.COMPLETION_DATE, TASK.SUBJECT) - .select(TASK_STAFF_GROUP.GRADE_POINT) .from(TASK) - .leftJoin(TASK_STAFF_GROUP) - .on(TASK_STAFF_GROUP.TASK_ID.eq(TASK.ID)) - .where(TASK_STAFF_GROUP.STAFF_ID.eq(loginUserInfo.getString("id"))) - .and(TASK.TASK_STATUS.eq(bo.getIsFinish() ? 8 : 9).and(TASK.TASK_CONTENT.like(bo.getTaskContent()))) + .and(TASK.TASK_STATUS.eq(bo.getIsFinish() ? 9 : 8).and(TASK.TASK_CONTENT.like(bo.getTaskContent()))) .and(TASK.SUBJECT.like(bo.getSubject())), TaskArchivingPagVo.class, // 负责人 @@ -98,8 +97,10 @@ public class TaskServiceImpl extends ServiceImpl implements Ta .select(groupConcat(STAFF.NAME).as(TaskArchivingPagVo::getTaskGroupStaffs)) .from(STAFF) .leftJoin(TASK_STAFF_GROUP) - .on(TASK_STAFF_GROUP.TASK_ID.eq(TASK.ID)) - .where(TASK_STAFF_GROUP.STAFF_ID.eq(taskGroupStaffs.getId())) + .on(TASK_STAFF_GROUP.STAFF_ID.eq(STAFF.ID)) + .leftJoin(TASK) + .on(TASK.ID.eq(TASK_STAFF_GROUP.TASK_ID)) + .where(TASK.ID.eq(taskGroupStaffs.getId())) .groupBy(TASK.ID))); } @@ -141,7 +142,9 @@ public class TaskServiceImpl extends ServiceImpl implements Ta TASK.TASK_CONTENT, TASK.ATTACHMENT_URL, TASK.TASK_RATING, - TASK.CREATE_TIME) + TASK.CREATE_TIME, + TASK.RECORD_STAFF_ID, + TASK.TASK_WEIGHT) .select(TASK_STAFF_GROUP.GRADE_POINT) .from(TASK) .leftJoin(TASK_STAFF_GROUP) @@ -152,18 +155,11 @@ public class TaskServiceImpl extends ServiceImpl implements Ta .orderBy(TASK.IS_URGENT.desc(), TASK.CREATE_TIME.desc()), TaskToBeClaimedPageVo.class, // 对接人 - item -> item.field(TaskToBeClaimedPageVo::getDockingStaff).queryWrapper(dockingStaff -> { - if (dockingStaff.getTaskType() == 1) { - return queryChain().select(STAFF.NAME.as(TaskToBeClaimedPageVo::getDockingStaff)) - .select(STAFF.NAME) + item -> item.field(TaskToBeClaimedPageVo::getDockingStaff).queryWrapper(dockingStaff -> + queryChain().select(STAFF.NAME.as(TaskToBeClaimedPageVo::getDockingStaff)) .from(STAFF) - .leftJoin(TASK_DEMAND) - .on(TASK_DEMAND.RECORD_STAFF_ID.eq(STAFF.ID)) - .where(TASK_DEMAND.TASK_ID.eq(dockingStaff.getId())); - } else { - return null; - } - })); + .where(STAFF.ID.eq(dockingStaff.getRecordStaffId())) + )); } /** @@ -175,9 +171,10 @@ public class TaskServiceImpl extends ServiceImpl implements Ta */ @Override public void insertIterationTask(TaskIterationBo bo) { + JSONObject loginUserInfo = SecurityUtils.getInstance().getLoginUserInfo(); Task entity = BeanUtils.mapToClass(bo, Task.class); // 默认待审核 默认开发中 - entity.setTaskStatus(0).setTaskItem(0).setTaskType(0); + entity.setTaskStatus(0).setTaskItem(0).setTaskType(0).setRecordStaffId(loginUserInfo.getString("id")); this.save(entity); // 获取审核管理员手机号 RedisService redisService = SpringUtils.getBean(RedisService.class); @@ -221,26 +218,26 @@ public class TaskServiceImpl extends ServiceImpl implements Ta // 如果任务没有设置预期完成时间,则按照任务评级进行设置默认 if (task.getExpectedCompletionDate() == null) { // 获取任务评级 - Integer taskRating = task.getTaskRating(); + String taskRating = task.getTaskRating(); LocalDate now = LocalDate.now(); switch (taskRating) { - case 0: + case "A": // 30天 task.setExpectedCompletionDate(now.plusDays(30)); break; - case 1: + case "B": // 21天 task.setExpectedCompletionDate(now.plusDays(21)); break; - case 2: + case "C": // 15天 task.setExpectedCompletionDate(now.plusDays(15)); break; - case 3: + case "D": // 7天 task.setExpectedCompletionDate(now.plusDays(7)); break; - case 4: + case "E": // 3天 task.setExpectedCompletionDate(now.plusDays(3)); break; @@ -261,28 +258,7 @@ public class TaskServiceImpl extends ServiceImpl implements Ta this.updateById(task); // 添加主要负责人组 TaskStaffGroup taskStaffGroup = new TaskStaffGroup(); - int taskRatingPoint; - // 评级换绩点 - switch (task.getTaskRating()) { - case 0: - taskRatingPoint = 200; - break; - case 1: - taskRatingPoint = 100; - break; - case 2: - taskRatingPoint = 80; - break; - case 3: - taskRatingPoint = 40; - break; - case 4: - taskRatingPoint = 20; - break; - default: - taskRatingPoint = 10; - } - taskStaffGroup.setStaffId(task.getResponsibleStaffId()).setTaskId(id).setGradePoint(taskRatingPoint); + taskStaffGroup.setStaffId(task.getResponsibleStaffId()).setTaskId(id).setGradePoint(task.getTaskWeight()); SpringUtils.getBean(TaskStaffGroupService.class).save(taskStaffGroup); // 通知所有人 try { @@ -314,7 +290,7 @@ public class TaskServiceImpl extends ServiceImpl implements Ta SpringUtils.getBean(WebHookSendHandler.class) .webHookSendText(WebHookKeyConstant.PRODUCT_BOT, new ArrayList<>(), - "==========任务审核通过==========" + "\n" + entity.getTaskContent(), + "==========任务审核通过==========" + "\n" + this.getById(bo.getId()).getTaskContent(), true); } catch (IOException e) { throw new ServiceException("发送任务审核通过通知失败!"); @@ -343,16 +319,16 @@ public class TaskServiceImpl extends ServiceImpl implements Ta //个人绩点 .select(TASK_STAFF_GROUP.GRADE_POINT) .from(TASK) - // 员工表 - .leftJoin(STAFF) - .on(STAFF.ID.eq(TASK.RESPONSIBLE_STAFF_ID)) // 任务员工组 .leftJoin(TASK_STAFF_GROUP) .on(TASK_STAFF_GROUP.TASK_ID.eq(TASK.ID)) + // 员工表 + .leftJoin(STAFF) + .on(STAFF.ID.eq(TASK_STAFF_GROUP.STAFF_ID)) .where(TASK.TASK_TYPE.in(0, 1)) //进行中与已完成的任务 .and(TASK.TASK_STATUS.in(2, 3, 4, 6)) - .and(STAFF.ID.eq(SecurityUtils.getInstance().getLoginUserInfo().getString("id"))) + .and(TASK_STAFF_GROUP.STAFF_ID.eq(SecurityUtils.getInstance().getLoginUserInfo().getString("id"))) .orderBy(TASK.EXPECTED_COMPLETION_DATE.asc()), PersonTaskPageVo.class); } @@ -385,14 +361,13 @@ public class TaskServiceImpl extends ServiceImpl implements Ta } else { task.setTaskStatus(3); } - task.setToTestTime(LocalDateTime.now()); + task.setToTestTime(LocalDateTime.now()).setTaskItem(1); } if (bo.getTaskItem() == 1) { if (StringUtils.isBlank(bo.getTestToFinishUrl())) { throw new ServiceException("当前任务未提交测试部署相关文件,不允许转交"); } - task.setToDeployTime(LocalDateTime.now()) - .setTaskStatus(8); + task.setToDeployTime(LocalDateTime.now()).setTestToFinishUrl(bo.getTestToFinishUrl()).setTaskStatus(8).setTaskItem(2); } this.updateById(task); } @@ -621,7 +596,7 @@ public class TaskServiceImpl extends ServiceImpl implements Ta @Override public String getTaskDailyPaper(TaskDailyPaperBo bo) { //获取当前日期的任务 - List taskList = this.list(QueryWrapper.create().select(distinct(TASK.TASK_STATUS, TASK.ID, TASK.TASK_RECEIPT_TIME, TASK.TASK_CONTENT, TASK.EXPECTED_COMPLETION_DATE)) + List taskList = this.list(QueryWrapper.create().select(distinct(TASK.TASK_STATUS,TASK.RESPONSIBLE_STAFF_ID,TASK.TASK_PROGRESS, TASK.ID, TASK.TASK_RECEIPT_TIME, TASK.TASK_CONTENT, TASK.EXPECTED_COMPLETION_DATE)) .leftJoin(TASK_STAFF_GROUP).on(TASK_STAFF_GROUP.TASK_ID.eq(TASK.ID)) .and(dateFormat(TASK.TASK_RECEIPT_TIME, "%Y-%m-%d").le(bo.getDate())) .and(TASK.EXPECTED_COMPLETION_DATE.ge(bo.getDate())) @@ -690,15 +665,15 @@ public class TaskServiceImpl extends ServiceImpl implements Ta LocalDate firstDay = now.with(TemporalAdjusters.firstDayOfMonth()); // 获取目标月的最后一天 LocalDate lastDay = now.with(TemporalAdjusters.lastDayOfMonth()); - List individualGpas = this.listAs(QueryWrapper.create() - .select(TASK.ID, TASK.TASK_CONTENT,TASK.TASK_STATUS) + List individualGpas = this.listAs(QueryWrapper.create() + .select(TASK.ID, TASK.TASK_CONTENT, TASK.TASK_STATUS) .select(TASK_STAFF_GROUP.GRADE_POINT, TASK_STAFF_GROUP.REMARK) .leftJoin(TASK_STAFF_GROUP).on(TASK_STAFF_GROUP.TASK_ID.eq(TASK.ID)) .where(TASK.TASK_STATUS.in(2, 3, 4, 5, 6, 7, 8, 9)) .and(TASK_STAFF_GROUP.STAFF_ID.eq(loginUserInfo.getString("id"))) //获取当月绩点 - .and(TASK.COMPLETION_DATE.between(firstDay, lastDay)) - , TaskIndividualGpaVo.IndividualGpa.class); + //.and(dateFormat(TASK.TASK_RECEIPT_TIME, "%Y-%m-%d").between(firstDay, lastDay)) + , TaskIndividualGpaDetailVo.class); TaskIndividualGpaVo vo = new TaskIndividualGpaVo(); if (individualGpas.isEmpty()) { return vo; @@ -710,10 +685,10 @@ public class TaskServiceImpl extends ServiceImpl implements Ta vo.setDutyVo(workOrderDuty); //已完成 vo.setHaveFinished(individualGpas.stream().filter(item -> item.getTaskStatus() == 8 || item.getTaskStatus() == 9) - .mapToInt(TaskIndividualGpaVo.IndividualGpa::getGradePoint).sum()); + .mapToInt(TaskIndividualGpaDetailVo::getGradePoint).sum()); //待完成 vo.setToBeCompleted(individualGpas.stream().filter(item -> item.getTaskStatus() != 8 && item.getTaskStatus() != 9) - .mapToInt(TaskIndividualGpaVo.IndividualGpa::getGradePoint).sum()); + .mapToInt(TaskIndividualGpaDetailVo::getGradePoint).sum()); return vo; } } diff --git a/Cpop-Oam/src/main/java/com/cpop/oam/business/service/impl/TaskStaffGroupServiceImpl.java b/Cpop-Oam/src/main/java/com/cpop/oam/business/service/impl/TaskStaffGroupServiceImpl.java index bdd9083..1e94214 100644 --- a/Cpop-Oam/src/main/java/com/cpop/oam/business/service/impl/TaskStaffGroupServiceImpl.java +++ b/Cpop-Oam/src/main/java/com/cpop/oam/business/service/impl/TaskStaffGroupServiceImpl.java @@ -41,31 +41,33 @@ import static com.cpop.oam.business.entity.table.TaskStaffGroupTableDef.TASK_STA */ @Service("taskStaffGroupService") public class TaskStaffGroupServiceImpl extends ServiceImpl - implements TaskStaffGroupService { + implements TaskStaffGroupService { /** * 技术模块-今日事务-任务成员组列 - * @author DB - * @since 2023/12/04 + * * @param taskId 任务id * @return List + * @author DB + * @since 2023/12/04 */ @Override public List getTaskStaffGroupList(String taskId) { return this.listAs(QueryWrapper.create() - .select(TASK_STAFF_GROUP.ALL_COLUMNS) - .select(STAFF.NAME.as(TaskStaffGroupVo::getStaffName)) - .from(TASK_STAFF_GROUP) - .leftJoin(STAFF) - .on(STAFF.ID.eq(TASK_STAFF_GROUP.STAFF_ID)) - .where(TASK_STAFF_GROUP.TASK_ID.eq(taskId)), TaskStaffGroupVo.class); + .select(TASK_STAFF_GROUP.ALL_COLUMNS) + .select(STAFF.NAME.as(TaskStaffGroupVo::getStaffName)) + .from(TASK_STAFF_GROUP) + .leftJoin(STAFF) + .on(STAFF.ID.eq(TASK_STAFF_GROUP.STAFF_ID)) + .where(TASK_STAFF_GROUP.TASK_ID.eq(taskId)), TaskStaffGroupVo.class); } /** * 技术模块-今日事务-新增任务小组成员 + * + * @param bo 请求参数 * @author DB * @since 2023/12/04 - * @param bo 请求参数 */ @Override @Transactional(rollbackFor = Exception.class) @@ -80,15 +82,15 @@ public class TaskStaffGroupServiceImpl extends ServiceImpl 0) { throw new ServiceException("当前员工已存在任务中,请添加其他员工或调整此员工绩点"); } // 获取此任务下关联的主要负责人信息 TaskStaffGroup responsibleStaff = this.getOne(QueryWrapper.create() - .where(TASK_STAFF_GROUP.TASK_ID.eq(bo.getTaskId())) - .and(TASK_STAFF_GROUP.STAFF_ID.eq(task.getResponsibleStaffId()))); + .where(TASK_STAFF_GROUP.TASK_ID.eq(bo.getTaskId())) + .and(TASK_STAFF_GROUP.STAFF_ID.eq(task.getResponsibleStaffId()))); int balance = responsibleStaff.getGradePoint() - bo.getGradePoint(); if (balance < 0) { throw new ServiceException("主要负责人绩点不足,请重新调整!"); @@ -107,7 +109,8 @@ public class TaskStaffGroupServiceImpl extends ServiceImpl phoneList = new ArrayList(); phoneList.add(loginUserInfo.getString("phoneNumber")); @@ -174,7 +178,8 @@ public class TaskStaffGroupServiceImpl extends ServiceImpl - implements TaskWorkOrderService { + implements TaskWorkOrderService { @Autowired private Scheduler scheduler; /** * 工单模块-工单提交-接收/处理/暂停中 + * + * @return com.cpop.core.base.R> * @author DB * @since 2023/09/18 17:18 - * @return com.cpop.core.base.R> */ @Override public TaskWorkOrderReceiveDealPauseVo receiveDealPause() { // 获取工单 List dtoList = this.mapper.selectListByQueryAs(QueryWrapper.create() - // 工单 - .select(TASK_WORK_ORDER.ID, - TASK_WORK_ORDER.PHONE_NUMBER, - TASK_WORK_ORDER.RECORD_STAFF_ID, - TASK_WORK_ORDER.CREATE_TIME.as("createTime"), - TASK_WORK_ORDER.RECEIVING_TIME, - TASK_WORK_ORDER.PAUSE_STAFF_ID, - TASK_WORK_ORDER.PAUSE_RECORD_TIME, - TASK_WORK_ORDER.PAUSE_EXPIRE_TIME) - // 任务 - .select(TASK.TASK_CONTENT, TASK.TASK_STATUS, TASK.RESPONSIBLE_STAFF_ID, TASK.TASK_RECEIPT_TIME) - // 品牌 - .select(BRAND.BRAND_NAME) - // 校区 - .select(STORE.STORE_NAME) - .from(TASK_WORK_ORDER) - .leftJoin(TASK) - .on(TASK.ID.eq(TASK_WORK_ORDER.TASK_ID)) - .leftJoin(BRAND) - .on(BRAND.ID.eq(TASK_WORK_ORDER.BRAND_ID)) - .leftJoin(STORE) - .on(STORE.ID.eq(TASK_WORK_ORDER.STORE_ID)) - // 工单 - .where(TASK.TASK_TYPE.eq(2)) - .and(TASK.TASK_STATUS.in(1, 2, 4, 5, 7)), - TaskWorkOrderReceiveDealPauseDto.class, - // 提交人 - item -> item.field(TaskWorkOrderReceiveDealPauseDto::getRecordStaffName) - .queryWrapper(recordStaff -> queryChain().select(STAFF.NAME.as("recordStaffName")) - .from(STAFF) - .where(STAFF.ID.eq(recordStaff.getRecordStaffId()))), - // 负责人 - item -> item.field(TaskWorkOrderReceiveDealPauseDto::getResponsibleStaffName) - .queryWrapper(responsibleStaff -> queryChain().select(STAFF.NAME.as("responsibleStaffName")) - .from(STAFF) - .where(STAFF.ID.eq(StringUtils.isNotBlank(responsibleStaff.getResponsibleStaffId()) - ? responsibleStaff.getResponsibleStaffId() - : "-1"))), - // 暂停人 - item -> item.field(TaskWorkOrderReceiveDealPauseDto::getPauseStaffName) - .queryWrapper(pauseStaff -> queryChain().select(STAFF.NAME.as("pauseStaffName")) - .from(STAFF) - .where(STAFF.ID.eq( - StringUtils.isNotBlank(pauseStaff.getPauseStaffId()) ? pauseStaff.getPauseStaffId() : "-1")))); + // 工单 + .select(TASK_WORK_ORDER.ID, + TASK_WORK_ORDER.PHONE_NUMBER, + TASK_WORK_ORDER.CREATE_TIME.as("createTime"), + TASK_WORK_ORDER.RECEIVING_TIME, + TASK_WORK_ORDER.PAUSE_STAFF_ID, + TASK_WORK_ORDER.PAUSE_RECORD_TIME, + TASK_WORK_ORDER.PAUSE_EXPIRE_TIME) + // 任务 + .select(TASK.TASK_CONTENT, TASK.TASK_STATUS, TASK.RESPONSIBLE_STAFF_ID, TASK.TASK_RECEIPT_TIME, TASK.RECORD_STAFF_ID) + // 品牌 + .select(BRAND.BRAND_NAME) + // 校区 + .select(STORE.STORE_NAME) + .from(TASK_WORK_ORDER) + .leftJoin(TASK) + .on(TASK.ID.eq(TASK_WORK_ORDER.TASK_ID)) + .leftJoin(BRAND) + .on(BRAND.ID.eq(TASK_WORK_ORDER.BRAND_ID)) + .leftJoin(STORE) + .on(STORE.ID.eq(TASK_WORK_ORDER.STORE_ID)) + // 工单 + .where(TASK.TASK_TYPE.eq(2)) + .and(TASK.TASK_STATUS.in(1, 2, 4, 5, 7)), + TaskWorkOrderReceiveDealPauseDto.class, + // 提交人 + item -> item.field(TaskWorkOrderReceiveDealPauseDto::getRecordStaffName) + .queryWrapper(recordStaff -> queryChain().select(STAFF.NAME.as("recordStaffName")) + .from(STAFF) + .where(STAFF.ID.eq(recordStaff.getRecordStaffId()))), + // 负责人 + item -> item.field(TaskWorkOrderReceiveDealPauseDto::getResponsibleStaffName) + .queryWrapper(responsibleStaff -> queryChain().select(STAFF.NAME.as("responsibleStaffName")) + .from(STAFF) + .where(STAFF.ID.eq(StringUtils.isNotBlank(responsibleStaff.getResponsibleStaffId()) + ? responsibleStaff.getResponsibleStaffId() + : "-1"))), + // 暂停人 + item -> item.field(TaskWorkOrderReceiveDealPauseDto::getPauseStaffName) + .queryWrapper(pauseStaff -> queryChain().select(STAFF.NAME.as("pauseStaffName")) + .from(STAFF) + .where(STAFF.ID.eq( + StringUtils.isNotBlank(pauseStaff.getPauseStaffId()) ? pauseStaff.getPauseStaffId() : "-1")))); // 分组过滤 Map> taskStatusMap = - dtoList.stream().collect(Collectors.groupingBy(TaskWorkOrderReceiveDealPauseDto::getTaskStatus)); + dtoList.stream().collect(Collectors.groupingBy(TaskWorkOrderReceiveDealPauseDto::getTaskStatus)); TaskWorkOrderReceiveDealPauseVo taskWorkOrderReceiveDealPauseVo = new TaskWorkOrderReceiveDealPauseVo(); taskStatusMap.forEach((key, value) -> { switch (key) { @@ -138,7 +139,7 @@ public class TaskWorkOrderServiceImpl extends ServiceImpl receiveList = - BeanUtils.mapToList(taskStatusMap.get(key), TaskWorkOrderReceiveDealPauseVo.Receive.class); + BeanUtils.mapToList(taskStatusMap.get(key), TaskWorkOrderReceiveDealPauseVo.Receive.class); if (taskWorkOrderReceiveDealPauseVo.getReceiveList() == null) { taskWorkOrderReceiveDealPauseVo.setReceiveList(receiveList); } else { @@ -150,7 +151,7 @@ public class TaskWorkOrderServiceImpl extends ServiceImpl dealList = - BeanUtils.mapToList(taskStatusMap.get(key), TaskWorkOrderReceiveDealPauseVo.Deal.class); + BeanUtils.mapToList(taskStatusMap.get(key), TaskWorkOrderReceiveDealPauseVo.Deal.class); if (taskWorkOrderReceiveDealPauseVo.getDealList() == null) { taskWorkOrderReceiveDealPauseVo.setDealList(dealList); } else { @@ -160,7 +161,7 @@ public class TaskWorkOrderServiceImpl extends ServiceImpl pauseList = - BeanUtils.mapToList(taskStatusMap.get(key), TaskWorkOrderReceiveDealPauseVo.Pause.class); + BeanUtils.mapToList(taskStatusMap.get(key), TaskWorkOrderReceiveDealPauseVo.Pause.class); taskWorkOrderReceiveDealPauseVo.setPauseList(pauseList); } }); @@ -169,23 +170,25 @@ public class TaskWorkOrderServiceImpl extends ServiceImpl finishWorkOrderPage() { PageDomain pageDomain = SqlUtils.getInstance().getPageDomain(); return this.mapper.paginateAs(Page.of(pageDomain.getPageNum(), pageDomain.getPageSize()), - QueryWrapper.create() - .select(TASK_WORK_ORDER.FINISH_STAFF_ID, TASK_WORK_ORDER.FINISH_TIME) - .select(TASK.TASK_CONTENT) - .from(TASK_WORK_ORDER) - .leftJoin(TASK) - .on(TASK.ID.eq(TASK_WORK_ORDER.TASK_ID)) - // 工单 - .where(TASK.TASK_TYPE.eq(2)) - .and(TASK.TASK_STATUS.in(3, 6)), - TaskWorkOrderPageVo.class, - item -> item.field(TaskWorkOrderPageVo::getFinishStaffName) - .queryWrapper(finishStaff -> queryChain().select(STAFF.NAME.as("finishStaffName")) - .from(STAFF) - .where(STAFF.ID.eq(finishStaff.getFinishStaffId())))); + QueryWrapper.create() + .select(TASK_WORK_ORDER.FINISH_STAFF_ID, TASK_WORK_ORDER.FINISH_TIME) + .select(TASK.TASK_CONTENT) + .from(TASK_WORK_ORDER) + .leftJoin(TASK) + .on(TASK.ID.eq(TASK_WORK_ORDER.TASK_ID)) + // 工单 + .where(TASK.TASK_TYPE.eq(2)) + .and(TASK.TASK_STATUS.in(3, 6)), + TaskWorkOrderPageVo.class, + item -> item.field(TaskWorkOrderPageVo::getFinishStaffName) + .queryWrapper(finishStaff -> queryChain().select(STAFF.NAME.as("finishStaffName")) + .from(STAFF) + .where(STAFF.ID.eq(finishStaff.getFinishStaffId())))); } /** * 工单模块-工单提交-新增工单 - * @param bo 请求参数 + * + * @param bo 请求参数 * @author DB * @since 2023/5/30 16:53 **/ @@ -227,13 +231,16 @@ public class TaskWorkOrderServiceImpl extends ServiceImpl getWorkOrderRecordList(String workOrderId) { // 根据任务id获取列表 return SpringUtils.getBean(TaskWorkOrderRecordService.class) - .listAs( - QueryWrapper.create() - .select(TASK_WORK_ORDER_RECORD.ALL_COLUMNS) - .select(STAFF.NAME.as(TaskWorkOrderRecordListVo::getRecordStaffName), - STAFF.STAFF_TYPE.as(TaskWorkOrderRecordListVo::getRecordStaffType)) - .select(SYS_USER.AVATAR.as(TaskWorkOrderRecordListVo::getAvatar)) - .from(TASK_WORK_ORDER_RECORD) - // 员工表 - .leftJoin(STAFF) - .on(STAFF.ID.eq(TASK_WORK_ORDER_RECORD.RECORD_STAFF_ID)) - // 系统用户表 - .leftJoin(SYS_USER) - .on(SYS_USER.ID.eq(STAFF.USER_ID)) - .where(TASK_WORK_ORDER_RECORD.TASK_WORK_ORDER_ID.eq(workOrderId)) - .orderBy(TASK_WORK_ORDER_RECORD.CREATE_TIME.asc()), - TaskWorkOrderRecordListVo.class); + .listAs( + QueryWrapper.create() + .select(TASK_WORK_ORDER_RECORD.ALL_COLUMNS) + .select(STAFF.NAME.as(TaskWorkOrderRecordListVo::getRecordStaffName), + STAFF.STAFF_TYPE.as(TaskWorkOrderRecordListVo::getRecordStaffType)) + .select(SYS_USER.AVATAR.as(TaskWorkOrderRecordListVo::getAvatar)) + .from(TASK_WORK_ORDER_RECORD) + // 员工表 + .leftJoin(STAFF) + .on(STAFF.ID.eq(TASK_WORK_ORDER_RECORD.RECORD_STAFF_ID)) + // 系统用户表 + .leftJoin(SYS_USER) + .on(SYS_USER.ID.eq(STAFF.USER_ID)) + .where(TASK_WORK_ORDER_RECORD.TASK_WORK_ORDER_ID.eq(workOrderId)) + .orderBy(TASK_WORK_ORDER_RECORD.CREATE_TIME.asc()), + TaskWorkOrderRecordListVo.class); } /** * 工单模块-工单提交-新增工单记录 - * @author DB + * * @param bo 请求参数 + * @author DB * @since 2023-11-29 11:33:35 */ @Override @@ -410,18 +418,23 @@ public class TaskWorkOrderServiceImpl extends ServiceImpl phoneList = new ArrayList<>(); phoneList.add(responsibleStaff.getPhoneNumber()); - phoneList.add(loginUserInfo.getString("phoneNumber")); + if (StringUtils.equals(loginUserInfo.getString("phoneNumber"), responsibleStaff.getPhoneNumber())) { + //读取记录人信息 + StaffInfoVo recordStaff = SpringUtils.getBean(StaffService.class).getStaffInfo(task.getRecordStaffId()); + phoneList.add(recordStaff.getPhoneNumber()); + } else { + phoneList.add(loginUserInfo.getString("phoneNumber")); + } // 通知记录 try { SpringUtils.getBean(WebHookSendHandler.class) - .webHookSendText(WebHookKeyConstant.ORDER_INFO_BOT, - phoneList, - task.getTaskContent() + "\n工单有新回复:\n" + bo.getRecordText(), - false); + .webHookSendText(WebHookKeyConstant.ORDER_INFO_BOT, + phoneList, + task.getTaskContent() + "\n工单有新回复:\n" + bo.getRecordText(), + false); } catch (IOException e) { throw new ServiceException("发送消息通知失败!"); } @@ -430,42 +443,43 @@ public class TaskWorkOrderServiceImpl extends ServiceImpl phoneList = new ArrayList<>(); try { // 负责人手机号 StaffInfoVo responsibleStaff = - SpringUtils.getBean(StaffService.class).getStaffInfo(task.getResponsibleStaffId()); + SpringUtils.getBean(StaffService.class).getStaffInfo(task.getResponsibleStaffId()); phoneList.add(responsibleStaff.getPhoneNumber()); switch (task.getTaskStatus()) { // 待接收与接收超时 case 1: case 7: SpringUtils.getBean(WebHookSendHandler.class) - .webHookSendText(WebHookKeyConstant.ORDER_INFO_BOT, - phoneList, - task.getTaskContent() + "\n您有一条工单需要接收\n", - false); + .webHookSendText(WebHookKeyConstant.ORDER_INFO_BOT, + phoneList, + task.getTaskContent() + "\n您有一条工单需要接收\n", + false); break; default: SpringUtils.getBean(WebHookSendHandler.class) - .webHookSendText(WebHookKeyConstant.ORDER_INFO_BOT, - phoneList, - task.getTaskContent() + "\n您有一条工单需要尽快处理\n", - false); + .webHookSendText(WebHookKeyConstant.ORDER_INFO_BOT, + phoneList, + task.getTaskContent() + "\n您有一条工单需要尽快处理\n", + false); } } catch (IOException e) { throw new ServiceException(e.getMessage()); @@ -474,35 +488,37 @@ public class TaskWorkOrderServiceImpl extends ServiceImpl phoneList = new ArrayList<>(); phoneList.add(responsibleStaff.getPhoneNumber()); phoneList.add(loginUserInfo.getString("phoneNumber")); // 通知记录 try { SpringUtils.getBean(WebHookSendHandler.class) - .webHookSendText(WebHookKeyConstant.ORDER_INFO_BOT, - phoneList, - task.getTaskContent() + "\n工单已暂停到:" - + bo.getPauseExpireTime().format(DateTimeFormatter.ofPattern(DateUtils.YYYY_MM_DD_HH_MM_SS)), - false); + .webHookSendText(WebHookKeyConstant.ORDER_INFO_BOT, + phoneList, + task.getTaskContent() + "\n工单已暂停到:" + + bo.getPauseExpireTime().format(DateTimeFormatter.ofPattern(DateUtils.YYYY_MM_DD_HH_MM_SS)), + false); } catch (IOException e) { throw new ServiceException("发送消息通知失败!"); } @@ -541,17 +557,18 @@ public class TaskWorkOrderServiceImpl extends ServiceImpl staffIds = new HashSet<>(); staffIds.add(task.getResponsibleStaffId()); - staffIds.add(taskWorkOrder.getRecordStaffId()); + staffIds.add(task.getRecordStaffId()); Map staffMap = - staffService - .listAs( - QueryWrapper.create() - .select(STAFF.ID, STAFF.NAME) - .select(SYS_USER.PHONE_NUMBER.as(StaffInfoVo::getPhoneNumber)) - .from(STAFF) - .leftJoin(SYS_USER) - .on(SYS_USER.ID.eq(STAFF.ID)) - .where(STAFF.ID.in(staffIds)), - StaffInfoVo.class) - .stream() - .collect(Collectors.toMap(StaffInfoVo::getId, item -> item)); + staffService + .listAs( + QueryWrapper.create() + .select(STAFF.ID, STAFF.NAME) + .select(SYS_USER.PHONE_NUMBER.as(StaffInfoVo::getPhoneNumber)) + .from(STAFF) + .leftJoin(SYS_USER) + .on(SYS_USER.ID.eq(STAFF.ID)) + .where(STAFF.ID.in(staffIds)), + StaffInfoVo.class) + .stream() + .collect(Collectors.toMap(StaffInfoVo::getId, item -> item)); List phoneList = new ArrayList<>(); phoneList.add(staffMap.get(task.getResponsibleStaffId()).getPhoneNumber()); // 记录人手机号 - phoneList.add(staffMap.get(taskWorkOrder.getRecordStaffId()).getPhoneNumber()); + phoneList.add(staffMap.get(task.getRecordStaffId()).getPhoneNumber()); // 通知记录 try { SpringUtils.getBean(WebHookSendHandler.class) - .webHookSendText(WebHookKeyConstant.ORDER_INFO_BOT, phoneList, task.getTaskContent() + "\n工单办结", false); + .webHookSendText(WebHookKeyConstant.ORDER_INFO_BOT, phoneList, task.getTaskContent() + "\n工单办结", false); } catch (IOException e) { throw new ServiceException("发送消息通知失败!"); } // 删除工单完结超时任务 try { SpringUtils.getBean(QuartzUtils.class) - .deleteJob(QuartzEnums.WORK_ORDER_OVERTIME_TASK.getName() + workOrderId, - QuartzEnums.WORK_ORDER_OVERTIME_TASK.getGroup()); + .deleteJob(QuartzEnums.WORK_ORDER_OVERTIME_TASK.getName() + workOrderId, + QuartzEnums.WORK_ORDER_OVERTIME_TASK.getGroup()); } catch (SchedulerException e) { throw new ServiceException("删除工单完结超时任务失败"); } @@ -613,6 +630,7 @@ public class TaskWorkOrderServiceImpl extends ServiceImpl item.field(TaskWorkOrderPersonVo::getRecordStaffName) - .queryWrapper(recordStaff -> queryChain().select(STAFF.NAME.as("recordStaffName")) - .from(STAFF) - .where(STAFF.ID.eq(recordStaff.getRecordStaffId())))); + return this.mapper.selectListByQueryAs(queryWrapper + .select(TASK_WORK_ORDER.ID, + TASK_WORK_ORDER.PHONE_NUMBER, + TASK_WORK_ORDER.CREATE_TIME.as("createTime"), + TASK_WORK_ORDER.RECEIVING_TIME) + // 任务 + .select(TASK.TASK_CONTENT, TASK.TASK_STATUS, TASK.TASK_RECEIPT_TIME, TASK.RECORD_STAFF_ID) + // 品牌 + .select(BRAND.BRAND_NAME) + // 校区 + .select(STORE.STORE_NAME) + .where(TASK.RESPONSIBLE_STAFF_ID.eq(loginUserInfo.getString("id"))) + .leftJoin(TASK) + .on(TASK.ID.eq(TASK_WORK_ORDER.TASK_ID)) + .leftJoin(BRAND) + .on(BRAND.ID.eq(TASK_WORK_ORDER.BRAND_ID)) + .leftJoin(STORE) + .on(STORE.ID.eq(TASK_WORK_ORDER.STORE_ID)), + TaskWorkOrderPersonVo.class, + // 提交人 + item -> item.field(TaskWorkOrderPersonVo::getRecordStaffName) + .queryWrapper(recordStaff -> queryChain().select(STAFF.NAME.as("recordStaffName")) + .from(STAFF) + .where(STAFF.ID.eq(recordStaff.getRecordStaffId())))); } /** * 是否是第一个接收的技术员工 + * * @param taskWorkOrderId 工单记录id * @author DB * @since 2023/12/04 */ @Override + @Transactional(rollbackFor = Exception.class) public void whetherReceive(String taskWorkOrderId) { Task task = SpringUtils.getBean(TaskService.class).queryChain() .leftJoin(TASK_WORK_ORDER).on(TASK_WORK_ORDER.TASK_ID.eq(TASK.ID)) .where(TASK_WORK_ORDER.ID.eq(taskWorkOrderId)).one(); JSONObject loginUserInfo = SecurityUtils.getInstance().getLoginUserInfo(); //判断当前登陆用户是否是当前工单的负责员工 - if (StringUtils.equals(loginUserInfo.getString("id"),task.getResponsibleStaffId())){ + if (StringUtils.equals(loginUserInfo.getString("id"), task.getResponsibleStaffId())) { //查询负责员工的记录数 long count = SpringUtils.getBean(TaskWorkOrderRecordService.class).queryChain() .where(TASK_WORK_ORDER_RECORD.TASK_WORK_ORDER_ID.eq(taskWorkOrderId)) .and(TASK_WORK_ORDER_RECORD.RECORD_STAFF_ID.eq(task.getResponsibleStaffId())) .count(); //首次记录修改状态 - if (count == 0){ - LocalDateTime now = LocalDateTime.now(); - task.setTaskStatus(2).setTaskReceiptTime(now); + if (count == 0) { //获取工单 TaskWorkOrder workOrder = this.getById(taskWorkOrderId); + LocalDateTime now = LocalDateTime.now(); + SpringUtils.getBean(TaskService.class).updateChain() + .set(TASK.TASK_STATUS, 2) + .set(TASK.TASK_RECEIPT_TIME, now).where(TASK.ID.eq(task.getId())) + .update(); int receivingTime = now.compareTo(workOrder.getCreateTime()); workOrder.setReceivingTime(receivingTime); this.updateById(workOrder); diff --git a/Cpop-Oam/src/main/java/com/cpop/oam/business/vo/PersonTaskPageVo.java b/Cpop-Oam/src/main/java/com/cpop/oam/business/vo/PersonTaskPageVo.java index f25d348..f90b3d8 100644 --- a/Cpop-Oam/src/main/java/com/cpop/oam/business/vo/PersonTaskPageVo.java +++ b/Cpop-Oam/src/main/java/com/cpop/oam/business/vo/PersonTaskPageVo.java @@ -72,7 +72,7 @@ public class PersonTaskPageVo implements Serializable { * 任务评级(0:A;1:B;2:C;3:D;4:E) */ @ApiModelProperty("任务评级(0:A;1:B;2:C;3:D;4:E)") - private Integer taskRating; + private String taskRating; /** * 个人任务绩点 diff --git a/Cpop-Oam/src/main/java/com/cpop/oam/business/vo/TaskArchivingPagVo.java b/Cpop-Oam/src/main/java/com/cpop/oam/business/vo/TaskArchivingPagVo.java index 6ab9684..a4317b7 100644 --- a/Cpop-Oam/src/main/java/com/cpop/oam/business/vo/TaskArchivingPagVo.java +++ b/Cpop-Oam/src/main/java/com/cpop/oam/business/vo/TaskArchivingPagVo.java @@ -1,11 +1,13 @@ package com.cpop.oam.business.vo; +import com.cpop.core.annontation.StringArrayConvert; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.experimental.Accessors; +import java.time.LocalDate; import java.time.LocalDateTime; /** @@ -54,13 +56,13 @@ public class TaskArchivingPagVo { * 任务评级(0:A;1:B;2:C;3:D;4:E) */ @ApiModelProperty("任务评级(0:A;1:B;2:C;3:D;4:E)") - private Integer taskRating; + private String taskRating; /** * 任务绩点 */ @ApiModelProperty("任务绩点") - private Integer gradePoint; + private Integer taskWeight; /** * 开始时间 @@ -81,7 +83,14 @@ public class TaskArchivingPagVo { */ @ApiModelProperty("转部署时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private LocalDateTime toFinishTime; + private LocalDateTime toDeployTime; + + /** + * 完成日期 + */ + @ApiModelProperty("完成日期") + @JsonFormat(pattern = "yyyy-MM-dd") + private LocalDate completionDate; /** * 主体 @@ -98,6 +107,7 @@ public class TaskArchivingPagVo { /** * 操作流程 */ + @StringArrayConvert @ApiModelProperty("操作流程") private String testToFinishUrl; } diff --git a/Cpop-Oam/src/main/java/com/cpop/oam/business/vo/TaskDemandPageVo.java b/Cpop-Oam/src/main/java/com/cpop/oam/business/vo/TaskDemandPageVo.java index c451ae1..0f67d35 100644 --- a/Cpop-Oam/src/main/java/com/cpop/oam/business/vo/TaskDemandPageVo.java +++ b/Cpop-Oam/src/main/java/com/cpop/oam/business/vo/TaskDemandPageVo.java @@ -116,7 +116,7 @@ public class TaskDemandPageVo { /**任务评级(0:A;1:B;2:C;3:D;4:E) */ @ApiModelProperty("任务评级(0:A;1:B;2:C;3:D;4:E)") - private Integer taskRating; + private String taskRating; /**任务接收员工Id */ @ApiModelProperty("领取人Id") diff --git a/Cpop-Oam/src/main/java/com/cpop/oam/business/vo/TaskIndividualGpaDetailVo.java b/Cpop-Oam/src/main/java/com/cpop/oam/business/vo/TaskIndividualGpaDetailVo.java new file mode 100644 index 0000000..365031e --- /dev/null +++ b/Cpop-Oam/src/main/java/com/cpop/oam/business/vo/TaskIndividualGpaDetailVo.java @@ -0,0 +1,46 @@ +package com.cpop.oam.business.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * @author DB + * @version 1.0.0 + * @since 2023-12-06 15:31 + */ +@Data +@Accessors(chain = true) +public class TaskIndividualGpaDetailVo { + + /** + * 任务状态 + */ + @ApiModelProperty(value = "任务状态") + private Integer taskStatus; + + /** + * 任务id + */ + @ApiModelProperty(value = "任务") + private String id; + + /** + * 任务内容 + */ + @ApiModelProperty(value = "任务内容") + private String taskContent; + + /** + * 备注 + */ + @ApiModelProperty(value = "备注") + private String remark; + + /** + * 绩点 + */ + @ApiModelProperty(value = "绩点") + private Integer gradePoint; + +} diff --git a/Cpop-Oam/src/main/java/com/cpop/oam/business/vo/TaskIndividualGpaVo.java b/Cpop-Oam/src/main/java/com/cpop/oam/business/vo/TaskIndividualGpaVo.java index 26ab64a..7866554 100644 --- a/Cpop-Oam/src/main/java/com/cpop/oam/business/vo/TaskIndividualGpaVo.java +++ b/Cpop-Oam/src/main/java/com/cpop/oam/business/vo/TaskIndividualGpaVo.java @@ -40,49 +40,6 @@ public class TaskIndividualGpaVo { * 个人绩点 */ @ApiModelProperty(value = "个人绩点") - private List gpa; - - /** - * 个人绩点 - * - * @author DB - * @since 2023/12/05 - */ - @Data - @Accessors(chain = true) - public class IndividualGpa { - - /** - * 任务状态 - */ - @ApiModelProperty(value = "任务状态") - private Integer taskStatus; - - /** - * 任务id - */ - @ApiModelProperty(value = "任务") - private String id; - - /** - * 任务内容 - */ - @ApiModelProperty(value = "任务内容") - private String taskContent; - - /** - * 备注 - */ - @ApiModelProperty(value = "备注") - private String remark; - - /** - * 绩点 - */ - @ApiModelProperty(value = "绩点") - private Integer gradePoint; - - } - + private List gpa; } diff --git a/Cpop-Oam/src/main/java/com/cpop/oam/business/vo/TaskToBeClaimedPageVo.java b/Cpop-Oam/src/main/java/com/cpop/oam/business/vo/TaskToBeClaimedPageVo.java index 7009055..f9ac31e 100644 --- a/Cpop-Oam/src/main/java/com/cpop/oam/business/vo/TaskToBeClaimedPageVo.java +++ b/Cpop-Oam/src/main/java/com/cpop/oam/business/vo/TaskToBeClaimedPageVo.java @@ -1,5 +1,6 @@ package com.cpop.oam.business.vo; +import com.cpop.core.annontation.StringArrayConvert; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -32,16 +33,29 @@ public class TaskToBeClaimedPageVo { /**附件地址 */ @ApiModelProperty(value = "附件地址") + @StringArrayConvert private String attachmentUrl; /**任务评级(0:A;1:B;2:C;3:D;4:E) */ @ApiModelProperty(value = "任务评级(0:A;1:B;2:C;3:D;4:E)") - private Integer taskRating; + private String taskRating; + + /** + * 任务权重 + */ + @ApiModelProperty(value = "任务权重(任务绩点)") + private Integer taskWeight; /**任务类型(0:迭代;1:需求;2:投诉/工单) */ @ApiModelProperty(value = "任务类型(0:迭代;1:需求;2:投诉/工单)") private Integer taskType; + /** + * 记录员工id + */ + @ApiModelProperty(value = "记录员工id") + private String recordStaffId; + /** * 创建时间 */ diff --git a/Cpop-System/src/main/java/com/cpop/system/business/service/impl/DictDataServiceImpl.java b/Cpop-System/src/main/java/com/cpop/system/business/service/impl/DictDataServiceImpl.java index c8eff70..1641643 100644 --- a/Cpop-System/src/main/java/com/cpop/system/business/service/impl/DictDataServiceImpl.java +++ b/Cpop-System/src/main/java/com/cpop/system/business/service/impl/DictDataServiceImpl.java @@ -23,6 +23,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; +import java.util.Comparator; import java.util.List; import java.util.stream.Collectors; @@ -119,6 +120,7 @@ public class DictDataServiceImpl extends ServiceImpl i if (!dictDatas.stream().map(DictData::getId).collect(Collectors.toSet()).contains(dictData.getId())) { dictDatas.add(dictData); } + //排序 DictUtils.setDictCache(dictData.getDictType(), dictDatas); } } @@ -138,6 +140,7 @@ public class DictDataServiceImpl extends ServiceImpl i //判断新增的数据是否在缓存中 List filterList = dictDatas.stream().filter(item -> !StringUtils.equals(item.getId(), dictData.getId())).collect(Collectors.toList()); filterList.add(getById(dictData.getId())); + //排序 DictUtils.setDictCache(dictData.getDictType(), filterList); } } diff --git a/Cpop-System/src/main/java/com/cpop/system/framework/utils/DictUtils.java b/Cpop-System/src/main/java/com/cpop/system/framework/utils/DictUtils.java index 47b2255..6e8c13f 100644 --- a/Cpop-System/src/main/java/com/cpop/system/framework/utils/DictUtils.java +++ b/Cpop-System/src/main/java/com/cpop/system/framework/utils/DictUtils.java @@ -13,7 +13,9 @@ import com.cpop.system.business.entity.DictData; import org.springframework.data.redis.cache.RedisCache; import java.util.Collection; +import java.util.Comparator; import java.util.List; +import java.util.stream.Collectors; /** * 字典工具类 @@ -31,7 +33,7 @@ public class DictUtils { * @param dictDatas 字典数据列表 */ public static void setDictCache(String key, List dictDatas) { - SpringUtils.getBean(RedisService.class).setCacheObject(getCacheKey(key), dictDatas); + SpringUtils.getBean(RedisService.class).setCacheObject(getCacheKey(key), dictDatas.stream().sorted(Comparator.comparing(DictData::getDictSort)).collect(Collectors.toList())); } /**