From 6b5935f8807e1c4fca31ea1cbc7360bf407a2db3 Mon Sep 17 00:00:00 2001 From: DB <2502523450@qq.com> Date: Sun, 4 Feb 2024 14:41:37 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=B7=A5=E5=8D=95=E6=8E=A5?= =?UTF-8?q?=E5=8F=97=E6=8F=90=E9=86=92=E4=B8=8E=E5=B7=A5=E5=8D=95=E6=9C=AA?= =?UTF-8?q?=E5=AE=8C=E7=BB=93=E6=8F=90=E9=86=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../business/bo/EasyLearnUnionPayBo.java | 8 +- .../backstage/EasyLearnController.java | 10 -- .../impl/EasyLearnOrderServiceImpl.java | 2 +- .../com/cpop/mall/web/CpopWxPayTests.java | 26 ++-- .../src/main/resources/application.yml | 2 - .../java/com/cpop/oam/web/CpopCoreTests.java | 2 +- .../com/cpop/oam/web/CpopEasyLearnTest.java | 59 ++++++++- .../cpop/oam/web/CpopOldDataSyncTests.java | 17 ++- .../business/bo/EnforceFinishWorkOrderBo.java | 33 +++++ .../BackstageTaskTechnologyController.java | 17 ++- .../BackstageTechnologyToolController.java | 1 + .../backstage/BackstageWxCpController.java | 4 +- .../cpop/oam/business/dto/DataImportDto.java | 4 +- .../oam/business/entity/TaskWorkOrder.java | 5 + .../service/TaskWorkOrderService.java | 9 ++ .../service/impl/DataImportServiceImpl.java | 116 ++++++++++------- .../impl/TaskWorkOrderServiceImpl.java | 118 ++++++++++++++++-- .../constant/WebHookKeyConstant.java | 5 + .../cpop/oam/framework/enums/QuartzEnums.java | 30 +++-- .../WorkOrderAcceptOverTimeRemindTask.java | 57 +++++++++ .../tasks/WorkOrderAcceptOverTimeTask.java | 2 - .../WorkOrderFinishOverTimeRemindTask.java | 57 +++++++++ 22 files changed, 477 insertions(+), 107 deletions(-) create mode 100644 Cpop-Oam/src/main/java/com/cpop/oam/business/bo/EnforceFinishWorkOrderBo.java create mode 100644 Cpop-Oam/src/main/java/com/cpop/oam/framework/tasks/WorkOrderAcceptOverTimeRemindTask.java create mode 100644 Cpop-Oam/src/main/java/com/cpop/oam/framework/tasks/WorkOrderFinishOverTimeRemindTask.java diff --git a/Cpop-Jambox/src/main/java/com/cpop/jambox/business/bo/EasyLearnUnionPayBo.java b/Cpop-Jambox/src/main/java/com/cpop/jambox/business/bo/EasyLearnUnionPayBo.java index 6d616d1..5be9b87 100644 --- a/Cpop-Jambox/src/main/java/com/cpop/jambox/business/bo/EasyLearnUnionPayBo.java +++ b/Cpop-Jambox/src/main/java/com/cpop/jambox/business/bo/EasyLearnUnionPayBo.java @@ -65,7 +65,7 @@ public class EasyLearnUnionPayBo { * 订单类型 */ @NotNull(message = "联合支付类型不能为空") - @ApiModelProperty(value = "联合支付类型(PREPAYMENT:预付;REPAYMENT:还款;MEMBER:会员)",required = true) + @ApiModelProperty(value = "联合支付类型(WX_PAY:微信支付;PREPAYMENT:预付;REPAYMENT:还款;MEMBER:会员)",required = true) private String easyLearnUnionPay; /** @@ -87,5 +87,11 @@ public class EasyLearnUnionPayBo { @ApiModelProperty("订单内容(课卡名/商品名)") private String orderContent; + /** + * 顾问 + */ + @ApiModelProperty("顾问") + private String counselor; + } diff --git a/Cpop-Jambox/src/main/java/com/cpop/jambox/business/controller/backstage/EasyLearnController.java b/Cpop-Jambox/src/main/java/com/cpop/jambox/business/controller/backstage/EasyLearnController.java index 84ebc48..cb007e2 100644 --- a/Cpop-Jambox/src/main/java/com/cpop/jambox/business/controller/backstage/EasyLearnController.java +++ b/Cpop-Jambox/src/main/java/com/cpop/jambox/business/controller/backstage/EasyLearnController.java @@ -1,15 +1,9 @@ package com.cpop.jambox.business.controller.backstage; -import com.alibaba.excel.EasyExcel; import com.cpop.core.base.R; -import com.cpop.jambox.business.bo.EasyLearnPageBo; -import com.cpop.jambox.business.bo.EasyLearnUnifiedPayBo; import com.cpop.jambox.business.bo.EasyLearnUnionPayBo; import com.cpop.jambox.business.bo.OncePlaceOrderBo; -import com.cpop.jambox.business.dto.EasyLearnPageDto; import com.cpop.jambox.business.service.EasyLearnOrderService; -import com.cpop.jambox.business.vo.EasyLearnPageVo; -import com.mybatisflex.core.paginate.Page; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; @@ -17,10 +11,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.net.URLEncoder; - /** * 果酱-放心学订单表 控制层。 * diff --git a/Cpop-Jambox/src/main/java/com/cpop/jambox/business/service/impl/EasyLearnOrderServiceImpl.java b/Cpop-Jambox/src/main/java/com/cpop/jambox/business/service/impl/EasyLearnOrderServiceImpl.java index 328dab8..021f7b8 100644 --- a/Cpop-Jambox/src/main/java/com/cpop/jambox/business/service/impl/EasyLearnOrderServiceImpl.java +++ b/Cpop-Jambox/src/main/java/com/cpop/jambox/business/service/impl/EasyLearnOrderServiceImpl.java @@ -583,7 +583,7 @@ public class EasyLearnOrderServiceImpl extends ServiceImpl postPayments = new ArrayList<>(); + postPayment.setAmount(8400); + postPayment.setName("成人hiphop(基础)-课程核销"); + postPayments.add(postPayment); + wxPayScoreRequest.setOutOrderNo("1736679801829396489").setPostPayments(postPayments).setTotalAmount(8400); + TimeRange timeRange = new TimeRange(); + timeRange.setStartTime("20240130235313"); + timeRange.setEndTime("20240130235422"); + wxPayScoreRequest.setTimeRange(timeRange); + wxPayScoreRequest.setSubMchid("1661323640"); + wxPayScoreRequest.setServiceId("00003053000000169450961228104460"); + wxPayService.getPartnerPayScoreService().completeServiceOrder(wxPayScoreRequest); + } + + @Test + public void getWxPayPlan() { + WxPayService wxPayService = wxPayHandler.getWxPayService(null,"1661323640"); + PartnerUserSignPlanEntity result = null; + try { + result = wxPayService.getPartnerPayScoreSignPlanService().queryUserSignPlans("1736679801829396540", "1661323640"); + System.out.println(JSONObject.toJSONString(result)); + } catch (WxPayException e) { + throw new RuntimeException(e); + } + } + + @Test + public void queryOrder() throws WxPayException { + WxPayService wxPayService = wxPayHandler.getWxPayService(null, "1661323640"); + WxPayOrderQueryResult wxPayOrderQueryResult = wxPayService.queryOrder("4200002115202401300171921108",null); + System.out.println(JSONObject.toJSONString(wxPayOrderQueryResult)); + + } + @Test public void orderProfitSharing() throws WxPayException { //固定商户信息 @@ -330,7 +377,7 @@ public class CpopEasyLearnTest { } @Test - public void testtest(){ + public void subSpecialCharacter(){ String serviceIntroduction = "排课000\uD83C\uDF3F\uD83C\uDF8B\uD83C\uDF15\uD83C\uDF44\uD83D\uDC1A"; String newServiceIntroduction = ""; //特殊字符过滤 @@ -368,4 +415,6 @@ public class CpopEasyLearnTest { || ((codePoint >= 0xE000) && (codePoint <= 0xFFFD)) || ((codePoint >= 0x10000) && (codePoint <= 0x10FFFF)); } + + } diff --git a/Cpop-Oam/Cpop-Oam-Web/src/test/java/com/cpop/oam/web/CpopOldDataSyncTests.java b/Cpop-Oam/Cpop-Oam-Web/src/test/java/com/cpop/oam/web/CpopOldDataSyncTests.java index 485add3..030a9ab 100644 --- a/Cpop-Oam/Cpop-Oam-Web/src/test/java/com/cpop/oam/web/CpopOldDataSyncTests.java +++ b/Cpop-Oam/Cpop-Oam-Web/src/test/java/com/cpop/oam/web/CpopOldDataSyncTests.java @@ -1,5 +1,7 @@ package com.cpop.oam.web; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.cpop.common.utils.StringUtils; import com.cpop.core.base.enums.OrderSource; import com.cpop.core.utils.SpringUtils; @@ -17,6 +19,7 @@ import com.github.binarywang.wxpay.bean.payscore.PayScorePlanDetailResult; import com.github.binarywang.wxpay.bean.payscore.WxPartnerPayScoreSignPlanResult; import com.github.binarywang.wxpay.bean.profitsharing.result.ProfitSharingV3Result; import com.github.binarywang.wxpay.bean.request.WxPayPartnerOrderQueryV3Request; +import com.github.binarywang.wxpay.bean.result.WxPayOrderQueryResult; import com.github.binarywang.wxpay.bean.result.WxPayPartnerOrderQueryV3Result; import com.github.binarywang.wxpay.exception.WxPayException; import com.github.binarywang.wxpay.service.WxPayService; @@ -53,7 +56,7 @@ import static com.cpop.system.business.entity.table.WxPayScoreTableDef.WX_PAY_SC */ @Slf4j @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) -@ActiveProfiles(profiles = {"prod","core"}) +@ActiveProfiles(profiles = {"dev","core","pay"}) public class CpopOldDataSyncTests { @Autowired @@ -429,4 +432,16 @@ public class CpopOldDataSyncTests { } + @Test + public void getWxPayPlanDetail() { + WxPayService wxPayService = wxPayHandler.getWxPayService(null,"1661323640"); + PartnerUserSignPlanEntity result = null; + try { + WxPayOrderQueryResult wxPayOrderQueryResult = wxPayService.queryOrder("4200002115202402010692134851", null); + System.out.println(JSONObject.toJSONString(wxPayOrderQueryResult)); + } catch (WxPayException e) { + throw new RuntimeException(e); + } + } + } diff --git a/Cpop-Oam/src/main/java/com/cpop/oam/business/bo/EnforceFinishWorkOrderBo.java b/Cpop-Oam/src/main/java/com/cpop/oam/business/bo/EnforceFinishWorkOrderBo.java new file mode 100644 index 0000000..11cf358 --- /dev/null +++ b/Cpop-Oam/src/main/java/com/cpop/oam/business/bo/EnforceFinishWorkOrderBo.java @@ -0,0 +1,33 @@ +package com.cpop.oam.business.bo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +import javax.validation.constraints.NotBlank; + +/** + * @author DB + * @version 1.0.0 + * @since 2024-02-04 9:30 + */ +@Data +@Accessors(chain = true) +@ApiModel(value = "EnforceFinishWorkOrderBo对象", description = "强制办结工单") +public class EnforceFinishWorkOrderBo { + + /** + * 工单id + */ + @NotBlank(message = "工单id不能为空") + @ApiModelProperty(value = "工单id", required = true) + private String id; + + /** + * 强制办结原因 + */ + @NotBlank(message = "强制办结原因不能为空") + @ApiModelProperty(value = "强制办结原因", required = true) + private String enforceFinishReason; +} diff --git a/Cpop-Oam/src/main/java/com/cpop/oam/business/controller/backstage/BackstageTaskTechnologyController.java b/Cpop-Oam/src/main/java/com/cpop/oam/business/controller/backstage/BackstageTaskTechnologyController.java index 8dc32e7..636e978 100644 --- a/Cpop-Oam/src/main/java/com/cpop/oam/business/controller/backstage/BackstageTaskTechnologyController.java +++ b/Cpop-Oam/src/main/java/com/cpop/oam/business/controller/backstage/BackstageTaskTechnologyController.java @@ -111,8 +111,7 @@ public class BackstageTaskTechnologyController { @PreAuthorize("@aps.hasPermission('oamTask:technology:deploy')") @ApiOperation("技术模块-任务归档-设置任务归档") @PutMapping("/setTaskArchiving/{taskId}") - public R setTaskArchiving(@PathVariable @ApiParam("任务id") - String taskId) { + public R setTaskArchiving(@PathVariable @ApiParam("任务id") String taskId) { taskService.setTaskArchiving(taskId); return R.ok(); } @@ -365,4 +364,18 @@ public class BackstageTaskTechnologyController { return R.ok(vo); } + /** + * 强制办结工单 + * @author DB + * @since 2024/2/4 + * @param bo 请求 + * @return R + */ + @PutMapping("/enforceFinishWorkOrder") + @ApiOperation("强制办结工单") + public R enforceFinishWorkOrder(@RequestBody @Validated EnforceFinishWorkOrderBo bo) { + taskWorkOrderService.enforceFinishWorkOrder(bo); + return R.ok(); + } + } diff --git a/Cpop-Oam/src/main/java/com/cpop/oam/business/controller/backstage/BackstageTechnologyToolController.java b/Cpop-Oam/src/main/java/com/cpop/oam/business/controller/backstage/BackstageTechnologyToolController.java index 3ac71c9..5f9311e 100644 --- a/Cpop-Oam/src/main/java/com/cpop/oam/business/controller/backstage/BackstageTechnologyToolController.java +++ b/Cpop-Oam/src/main/java/com/cpop/oam/business/controller/backstage/BackstageTechnologyToolController.java @@ -5,6 +5,7 @@ import com.cpop.core.base.R; import com.cpop.core.base.entity.PageDomain; import com.cpop.core.utils.SpringUtils; import com.cpop.core.utils.sql.SqlUtils; +import com.cpop.oam.business.bo.EnforceFinishWorkOrderBo; import com.cpop.oam.business.bo.TechnologyToolBo; import com.cpop.oam.business.vo.TechnologyToolPageVo; import com.mybatisflex.core.paginate.Page; diff --git a/Cpop-Oam/src/main/java/com/cpop/oam/business/controller/backstage/BackstageWxCpController.java b/Cpop-Oam/src/main/java/com/cpop/oam/business/controller/backstage/BackstageWxCpController.java index 8c836ba..b05173d 100644 --- a/Cpop-Oam/src/main/java/com/cpop/oam/business/controller/backstage/BackstageWxCpController.java +++ b/Cpop-Oam/src/main/java/com/cpop/oam/business/controller/backstage/BackstageWxCpController.java @@ -35,8 +35,8 @@ public class BackstageWxCpController { /** * @author LOST.yuan - * @Description 根据code换取用户信息 - * @date 14:52 2022/9/7 + * 根据code换取用户信息 + * @since 14:52 2022/9/7 * @return {@link R} **/ @GetMapping("/getOauth2Url") diff --git a/Cpop-Oam/src/main/java/com/cpop/oam/business/dto/DataImportDto.java b/Cpop-Oam/src/main/java/com/cpop/oam/business/dto/DataImportDto.java index 4c24ef6..c13cb0f 100644 --- a/Cpop-Oam/src/main/java/com/cpop/oam/business/dto/DataImportDto.java +++ b/Cpop-Oam/src/main/java/com/cpop/oam/business/dto/DataImportDto.java @@ -1,8 +1,10 @@ package com.cpop.oam.business.dto; import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.format.DateTimeFormat; import lombok.Data; -import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDate; /** * 数据导入Dto 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 36f6bc3..9e0f4fd 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 @@ -83,6 +83,11 @@ public class TaskWorkOrder extends BaseEntity implements Serializable { */ private LocalDateTime pauseExpireTime; + /** + * 强制办结原因 + */ + private String enforceFinishReason; + /** * 是否删除(0否1是) */ diff --git a/Cpop-Oam/src/main/java/com/cpop/oam/business/service/TaskWorkOrderService.java b/Cpop-Oam/src/main/java/com/cpop/oam/business/service/TaskWorkOrderService.java index 0507e9c..be5c2fb 100644 --- a/Cpop-Oam/src/main/java/com/cpop/oam/business/service/TaskWorkOrderService.java +++ b/Cpop-Oam/src/main/java/com/cpop/oam/business/service/TaskWorkOrderService.java @@ -1,5 +1,6 @@ package com.cpop.oam.business.service; +import com.cpop.oam.business.bo.EnforceFinishWorkOrderBo; import com.cpop.oam.business.vo.*; import com.mybatisflex.core.paginate.Page; import com.mybatisflex.core.service.IService; @@ -122,4 +123,12 @@ public interface TaskWorkOrderService extends IService { * @return R> */ Page getWorkOrderStatPage(String staffId,LocalDate startDate,LocalDate endDate); + + /** + * 强制办结工单 + * @author DB + * @since 2024/2/4 + * @param bo 请求参数 + */ + void enforceFinishWorkOrder(EnforceFinishWorkOrderBo bo); } diff --git a/Cpop-Oam/src/main/java/com/cpop/oam/business/service/impl/DataImportServiceImpl.java b/Cpop-Oam/src/main/java/com/cpop/oam/business/service/impl/DataImportServiceImpl.java index 05fe893..9e6d41d 100644 --- a/Cpop-Oam/src/main/java/com/cpop/oam/business/service/impl/DataImportServiceImpl.java +++ b/Cpop-Oam/src/main/java/com/cpop/oam/business/service/impl/DataImportServiceImpl.java @@ -46,6 +46,8 @@ import org.springframework.web.multipart.MultipartFile; import java.io.File; import java.io.IOException; import java.net.SocketTimeoutException; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.List; import java.util.concurrent.locks.Lock; @@ -87,7 +89,6 @@ public class DataImportServiceImpl extends ServiceImpl() { @Override public void invoke(DataImportDto dataImportDto, AnalysisContext analysisContext) { + //检查手机号 + if (StringUtils.isBlank(dataImportDto.getName())) { + throw new ServiceException(String.format("第%s行姓名为空,请核实", analysisContext.readRowHolder().getRowIndex() + 1)); + } //检查手机号 if (StringUtils.isBlank(dataImportDto.getPhone())) { dataImportDto.setPhone(IdUtil.getSnowflakeNextIdStr()); } //课卡类型 if (StringUtils.isBlank(dataImportDto.getCardType())) { - dataImportDto.setCardType("少儿"); - } - //计费类型 - if (StringUtils.isBlank(dataImportDto.getBillingType())) { - dataImportDto.setBillingType("限时卡"); - } - //首充课时 - if (dataImportDto.getFirstChargePeriod() == null) { - dataImportDto.setFirstChargePeriod(0); - } - //剩余课时 - if (dataImportDto.getRemainingClassHours() == null) { - dataImportDto.setFirstChargePeriod(0); - } - //消费金额 - if (dataImportDto.getAmountSpent() == null) { - dataImportDto.setAmountSpent(0); - } - //课程顾问 - if (StringUtils.isBlank(dataImportDto.getBillingType())) { - dataImportDto.setBillingType("校长"); - } - //性别 - if (StringUtils.isBlank(dataImportDto.getSex())) { - dataImportDto.setSex("女"); - } - //课卡名称 - if (StringUtils.isBlank(dataImportDto.getCardName())) { - throw new ServiceException(String.format("第%s行课卡名称为空,请核实", analysisContext.readRowHolder().getRowIndex() + 1)); - } - //停卡时剩余天数 - if (dataImportDto.getStopCardRemainingDays() == null) { - dataImportDto.setStopCardRemainingDays(0); - dataImportDto.setCardStatus("使用中"); + //计费类型 + if (!StringUtils.equals(dataImportDto.getBillingType(), "储值卡")) { + throw new ServiceException(String.format("第%s行计费类型不为储值卡时课卡类型不能为空,请核实", analysisContext.readRowHolder().getRowIndex() + 1)); + } } else { - dataImportDto.setCardStatus("停卡"); - } - //停卡缓冲天数 - if (dataImportDto.getStopCardBufferDays() == null) { - dataImportDto.setStopCardBufferDays(0); - } - if (dataImportDto.getStopCardBufferDays() != 0 && StringUtils.equals("使用中", dataImportDto.getCardStatus())) { - dataImportDto.setCardStatus("未激活"); - } else if (dataImportDto.getStopCardBufferDays() != 0 && StringUtils.equals("停卡", dataImportDto.getCardStatus())) { - dataImportDto.setCardStatus("停卡未激活"); + //计费类型 + if (!StringUtils.equals(dataImportDto.getBillingType(), "暂无")) { + //计费类型 + if (StringUtils.isBlank(dataImportDto.getBillingType())) { + throw new ServiceException(String.format("第%s行课卡类型不为暂无时计费类型不能为空,请核实", analysisContext.readRowHolder().getRowIndex() + 1)); + } else { + if (!StringUtils.equals(dataImportDto.getBillingType(), "时限卡")){ + //首充课时 + if (dataImportDto.getFirstChargePeriod() == null || dataImportDto.getFirstChargePeriod() <= 0) { + throw new ServiceException(String.format("第%s行计费类型不为时限卡时首充课时不能为空或0,请核实", analysisContext.readRowHolder().getRowIndex() + 1)); + } + } + } + //剩余课时 + if (dataImportDto.getRemainingClassHours() == null) { + dataImportDto.setFirstChargePeriod(0); + } + //消费金额 + if (dataImportDto.getAmountSpent() == null) { + dataImportDto.setAmountSpent(0); + } + //验证日期是否标准并且办卡日期小于有效期 + if (StringUtils.isBlank(dataImportDto.getExpiryDate()) || StringUtils.isBlank(dataImportDto.getCreateCardDate())) { + throw new ServiceException(String.format("第%s行办卡日期或到期日期不能为空,请核实", analysisContext.readRowHolder().getRowIndex() + 1)); + } else { + LocalDate expiryDate = LocalDate.parse(dataImportDto.getExpiryDate(), DateTimeFormatter.ofPattern("yyyy/M/d")); + LocalDate createCardDate = LocalDate.parse(dataImportDto.getExpiryDate(), DateTimeFormatter.ofPattern("yyyy/M/d")); + if (expiryDate.isBefore(createCardDate)) { + throw new ServiceException(String.format("第%s行办卡日期不能大于到期日期,请核实", analysisContext.readRowHolder().getRowIndex() + 1)); + } + } + //课程顾问 + if (StringUtils.isBlank(dataImportDto.getBillingType())) { + dataImportDto.setBillingType("校长"); + } + //性别 + if (StringUtils.isBlank(dataImportDto.getSex())) { + dataImportDto.setSex("女"); + } + //课卡名称 + if (StringUtils.isBlank(dataImportDto.getCardName())) { + throw new ServiceException(String.format("第%s行课卡名称为空,请核实", analysisContext.readRowHolder().getRowIndex() + 1)); + } + //停卡时剩余天数 + if (dataImportDto.getStopCardRemainingDays() == null) { + dataImportDto.setStopCardRemainingDays(0); + dataImportDto.setCardStatus("使用中"); + } else { + dataImportDto.setCardStatus("停卡"); + } + //停卡缓冲天数 + if (dataImportDto.getStopCardBufferDays() == null) { + dataImportDto.setStopCardBufferDays(0); + } + if (dataImportDto.getStopCardBufferDays() != 0 && StringUtils.equals("使用中", dataImportDto.getCardStatus())) { + dataImportDto.setCardStatus("未激活"); + } else if (dataImportDto.getStopCardBufferDays() != 0 && StringUtils.equals("停卡", dataImportDto.getCardStatus())) { + dataImportDto.setCardStatus("停卡未激活"); + } + } } cachedDataList.add(dataImportDto); } @@ -259,7 +284,6 @@ public class DataImportServiceImpl extends ServiceImpl { - // 分页查询数据 return cachedDataList; }); MultipartFile multipartFile = FileUtils.getInstance().getMultipartFile(tempFile); diff --git a/Cpop-Oam/src/main/java/com/cpop/oam/business/service/impl/TaskWorkOrderServiceImpl.java b/Cpop-Oam/src/main/java/com/cpop/oam/business/service/impl/TaskWorkOrderServiceImpl.java index abe341f..863a4a3 100644 --- a/Cpop-Oam/src/main/java/com/cpop/oam/business/service/impl/TaskWorkOrderServiceImpl.java +++ b/Cpop-Oam/src/main/java/com/cpop/oam/business/service/impl/TaskWorkOrderServiceImpl.java @@ -12,10 +12,7 @@ import com.cpop.core.utils.QuartzUtils; import com.cpop.core.utils.SecurityUtils; import com.cpop.core.utils.SpringUtils; import com.cpop.core.utils.sql.SqlUtils; -import com.cpop.oam.business.bo.PauseWorkOrderBo; -import com.cpop.oam.business.bo.TaskDemandBo; -import com.cpop.oam.business.bo.TaskWorkOrderBo; -import com.cpop.oam.business.bo.TaskWorkOrderRecordBo; +import com.cpop.oam.business.bo.*; import com.cpop.oam.business.dto.TaskWorkOrderReceiveDealPauseDto; import com.cpop.oam.business.entity.*; import com.cpop.oam.business.mapper.TaskWorkOrderMapper; @@ -24,9 +21,7 @@ import com.cpop.oam.business.vo.*; import com.cpop.oam.framework.constant.WebHookKeyConstant; import com.cpop.oam.framework.enums.OamConfigEnum; import com.cpop.oam.framework.enums.QuartzEnums; -import com.cpop.oam.framework.tasks.WorkOrderAcceptOverTimeTask; -import com.cpop.oam.framework.tasks.WorkOrderOvertimeTask; -import com.cpop.oam.framework.tasks.WorkOrderPauseRecoverTask; +import com.cpop.oam.framework.tasks.*; import com.mybatisflex.core.paginate.Page; import com.mybatisflex.core.query.QueryWrapper; import com.mybatisflex.spring.service.impl.ServiceImpl; @@ -279,7 +274,91 @@ public class TaskWorkOrderServiceImpl extends ServiceImpl phoneList = new ArrayList<>(); + if (duty != null){ + // 获取任务 + TaskService taskService = SpringUtils.getBean(TaskService.class); + Task task = taskService.getById(workOrder.getTaskId()); + StaffService staffService = SpringUtils.getBean(StaffService.class); + StaffInfoVo responsibleStaff = staffService.getStaffInfo(duty.getTechnologyStaffId()); + phoneList.add(responsibleStaff.getPhoneNumber()); + try { + SpringUtils.getBean(WebHookSendHandler.class).webHookSendText(WebHookKeyConstant.ORDER_INFO_BOT, phoneList, + task.getTaskContent() + "\n您有一个工单即将接受超时,请尽快接受", + false); + } catch (IOException e) { + throw new ServiceException("发送工单接受超时消息通知失败!"); + } + } + } +} diff --git a/Cpop-Oam/src/main/java/com/cpop/oam/framework/tasks/WorkOrderAcceptOverTimeTask.java b/Cpop-Oam/src/main/java/com/cpop/oam/framework/tasks/WorkOrderAcceptOverTimeTask.java index 371347d..0d6e7c8 100644 --- a/Cpop-Oam/src/main/java/com/cpop/oam/framework/tasks/WorkOrderAcceptOverTimeTask.java +++ b/Cpop-Oam/src/main/java/com/cpop/oam/framework/tasks/WorkOrderAcceptOverTimeTask.java @@ -24,8 +24,6 @@ import org.slf4j.LoggerFactory; */ public class WorkOrderAcceptOverTimeTask implements Job { - private static final Logger LOGGER = LoggerFactory.getLogger(HttpHelper.class); - @Override public void execute(JobExecutionContext jobExecutionContext) { // 获取工单id diff --git a/Cpop-Oam/src/main/java/com/cpop/oam/framework/tasks/WorkOrderFinishOverTimeRemindTask.java b/Cpop-Oam/src/main/java/com/cpop/oam/framework/tasks/WorkOrderFinishOverTimeRemindTask.java new file mode 100644 index 0000000..00d9925 --- /dev/null +++ b/Cpop-Oam/src/main/java/com/cpop/oam/framework/tasks/WorkOrderFinishOverTimeRemindTask.java @@ -0,0 +1,57 @@ +package com.cpop.oam.framework.tasks; + +import com.cpop.api.tencent.wxWork.handler.WebHookSendHandler; +import com.cpop.core.base.exception.ServiceException; +import com.cpop.core.utils.SpringUtils; +import com.cpop.oam.business.entity.Duty; +import com.cpop.oam.business.entity.Task; +import com.cpop.oam.business.entity.TaskWorkOrder; +import com.cpop.oam.business.service.DutyService; +import com.cpop.oam.business.service.StaffService; +import com.cpop.oam.business.service.TaskService; +import com.cpop.oam.business.service.TaskWorkOrderService; +import com.cpop.oam.business.vo.StaffInfoVo; +import com.cpop.oam.framework.constant.WebHookKeyConstant; +import org.quartz.Job; +import org.quartz.JobDataMap; +import org.quartz.JobExecutionContext; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +import static com.cpop.oam.business.entity.table.DutyTableDef.DUTY; + +/** + * 工单完结超时提醒任务 + * @author DB + */ +public class WorkOrderFinishOverTimeRemindTask implements Job { + + @Override + public void execute(JobExecutionContext jobExecutionContext) { + // 获取工单id + JobDataMap jobDataMap = jobExecutionContext.getJobDetail().getJobDataMap(); + String workOrderId = jobDataMap.getString("WorkOrderId"); + TaskWorkOrderService taskWorkOrderService = SpringUtils.getBean(TaskWorkOrderService.class); + TaskWorkOrder workOrder = taskWorkOrderService.getById(workOrderId); + // 获取任务 + TaskService taskService = SpringUtils.getBean(TaskService.class); + Task task = taskService.getById(workOrder.getTaskId()); + List phoneList = new ArrayList<>(); + if (task != null){ + StaffService staffService = SpringUtils.getBean(StaffService.class); + StaffInfoVo responsibleStaff = staffService.getStaffInfo(task.getResponsibleStaffId()); + StaffInfoVo recordStaff = staffService.getStaffInfo(task.getRecordStaffId()); + phoneList.add(responsibleStaff.getPhoneNumber()); + phoneList.add(recordStaff.getPhoneNumber()); + try { + SpringUtils.getBean(WebHookSendHandler.class).webHookSendText(WebHookKeyConstant.ORDER_INFO_BOT, phoneList, + task.getTaskContent() + "\n您有一个工单即将完结超时,请尽快练习相关人员办结", + false); + } catch (IOException e) { + throw new ServiceException("发送工单完结超时消息通知失败!"); + } + } + } +}