Browse Source

微信小程序后端更新

孙伟 3 years ago
parent
commit
d550c8e4c8
37 changed files with 1495 additions and 565 deletions
  1. 48 0
      application-facade/src/main/java/com/factory/controller/web/WebStatisticsController.java
  2. 66 0
      application-facade/src/main/java/com/factory/controller/wx/PlanApprovalController.java
  3. 0 106
      application-facade/src/main/java/com/factory/controller/wx/PlanController.java
  4. 57 0
      application-facade/src/main/java/com/factory/controller/wx/PlanPassController.java
  5. 70 0
      application-facade/src/main/java/com/factory/controller/wx/PlanReminderController.java
  6. 28 2
      application-facade/src/main/java/com/factory/controller/wx/StatisticsController.java
  7. 2 2
      application-facade/src/main/java/com/factory/controller/wx/WxController.java
  8. 35 0
      application-facade/src/main/java/com/factory/web/entity/statistics/ExceptionCountRes.java
  9. 24 0
      application-facade/src/main/java/com/factory/web/entity/statistics/StatisticsDateReq.java
  10. 2 0
      application-facade/src/main/java/com/factory/web/mapper/pm/ApprovalRuleMapper.java
  11. 2 0
      application-facade/src/main/java/com/factory/web/mapper/pm/RemindApprovalTaskMapper.java
  12. 117 0
      application-facade/src/main/java/com/factory/web/service/impl/statistics/StatisticsServiceImpl.java
  13. 23 0
      application-facade/src/main/java/com/factory/web/service/statistics/StatisticsService.java
  14. 27 0
      application-facade/src/main/java/com/factory/wx/entity/req/AbnormalPlanReq.java
  15. 2 2
      application-facade/src/main/java/com/factory/wx/entity/req/PlanPageReq.java
  16. 0 31
      application-facade/src/main/java/com/factory/wx/entity/req/ReminderReq.java
  17. 32 0
      application-facade/src/main/java/com/factory/wx/entity/res/AbnormalPlanRes.java
  18. 1 1
      application-facade/src/main/java/com/factory/wx/entity/res/PlanApprovalRes.java
  19. 40 0
      application-facade/src/main/java/com/factory/wx/entity/res/PlanReminderDetailRes.java
  20. 10 9
      application-facade/src/main/java/com/factory/wx/entity/res/ReminderRes.java
  21. 30 0
      application-facade/src/main/java/com/factory/wx/mapper/AbnormalStatisticsMapper.java
  22. 1 0
      application-facade/src/main/java/com/factory/wx/mapper/PlanMapper.java
  23. 32 0
      application-facade/src/main/java/com/factory/wx/mapper/ReminderMapper.java
  24. 23 0
      application-facade/src/main/java/com/factory/wx/service/AbnormalStatisticsService.java
  25. 6 36
      application-facade/src/main/java/com/factory/wx/service/PlanApprovalService.java
  26. 42 0
      application-facade/src/main/java/com/factory/wx/service/PlanPassService.java
  27. 49 0
      application-facade/src/main/java/com/factory/wx/service/PlanReminderService.java
  28. 41 0
      application-facade/src/main/java/com/factory/wx/service/impl/AbnormalStatisticsServiceImpl.java
  29. 200 0
      application-facade/src/main/java/com/factory/wx/service/impl/PlanApprovalServiceImpl.java
  30. 202 0
      application-facade/src/main/java/com/factory/wx/service/impl/PlanPassServiceImpl.java
  31. 148 0
      application-facade/src/main/java/com/factory/wx/service/impl/PlanReminderServiceImpl.java
  32. 0 369
      application-facade/src/main/java/com/factory/wx/service/impl/PlanServiceImpl.java
  33. 82 0
      application-facade/src/main/resources/mapper/AbnormalStatisticsMapper.xml
  34. 2 2
      application-facade/src/main/resources/mapper/PlanMapper.xml
  35. 42 0
      application-facade/src/main/resources/mapper/ReminderMapper.xml
  36. 2 0
      common-user/src/main/java/com/factory/user/mapper/UserInfoMapper.java
  37. 7 5
      common-user/src/main/java/com/factory/user/service/impl/AuthServiceImpl.java

+ 48 - 0
application-facade/src/main/java/com/factory/controller/web/WebStatisticsController.java

@@ -0,0 +1,48 @@
+package com.factory.controller.web;
+
+import com.factory.base.entity.aggregates.ResponseBean;
+import com.factory.base.util.res.ResponseBeanBuilder;
+import com.factory.web.entity.pm.req.AddPmPlanReq;
+import com.factory.web.entity.statistics.ExceptionCountRes;
+import com.factory.web.entity.statistics.StatisticsDateReq;
+import com.factory.web.service.statistics.StatisticsService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiOperationSupport;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 异常统计
+ *
+ * @author sMArT
+ * @version 1.0
+ * @date 2021-07-22 3:24 下午
+ */
+@Api(tags = "异常统计")
+@RestController
+@RequestMapping("/statistics/")
+@Slf4j
+public class WebStatisticsController {
+
+    @Autowired
+    private StatisticsService statisticsService;
+
+    @ApiOperation(value = "当月异常统计")
+    @ApiOperationSupport(order = 1)
+    @PostMapping("/exceptions/month")
+    public ResponseBean<ExceptionCountRes> countExceptionsByYear(@RequestBody StatisticsDateReq statisticsDateReq) {
+        return statisticsService.getExceptionsByMonth(statisticsDateReq);
+    }
+//
+//    @ApiOperation(value = "当日异常信息")
+//    @ApiOperationSupport(order = 1)
+    @PostMapping("/exceptions/date/detail")
+    public ResponseBean exceptionsByMonth(@RequestBody AddPmPlanReq req) {
+        return ResponseBeanBuilder.ok();
+    }
+}

+ 66 - 0
application-facade/src/main/java/com/factory/controller/wx/PlanApprovalController.java

@@ -0,0 +1,66 @@
+package com.factory.controller.wx;
+
+import com.factory.base.entity.aggregates.PageBean;
+import com.factory.base.entity.aggregates.ResponseBean;
+import com.factory.base.entity.po.benteler.BentelerPlan;
+import com.factory.base.util.res.ResponseBeanBuilder;
+import com.factory.wx.entity.req.PlanApprovalReq;
+import com.factory.wx.entity.req.PlanInfoReq;
+import com.factory.wx.entity.req.PlanPageReq;
+import com.factory.wx.entity.res.PlanApprovalDetailRes;
+import com.factory.wx.service.PlanApprovalService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 微信小程序端计划
+ *
+ * @author sMArT
+ * @version 1.0
+ * @date 2021-07-05 3:06 下午
+ */
+@Api(tags = "微信小程序端")
+@RestController
+@RequestMapping("/plans/approval")
+@Slf4j
+public class PlanApprovalController {
+
+    @Autowired
+    private PlanApprovalService planApprovalService;
+
+    @ApiOperation(value = "计划审批列表")
+    @PostMapping("/list")
+    public ResponseBean<PageBean<BentelerPlan>> approvalList(@RequestBody PlanPageReq planPageReq) {
+//        Long userId = (Long) request.getAttribute("LOGIN_USER_ID");//获取用户id
+        PageBean<BentelerPlan> approvalList = planApprovalService.getApprovalListByPage(planPageReq);
+        return ResponseBeanBuilder.ok(approvalList);
+    }
+
+    @ApiOperation(value = "计划审批详情-首件")
+    @PostMapping("/detail/initial")
+    public ResponseBean<PlanApprovalDetailRes> approvalDetail(@RequestBody PlanInfoReq planInfoReq) {
+        // TODO
+        return ResponseBeanBuilder.ok();
+    }
+
+    @ApiOperation(value = "计划审批详情-防错")
+    @PostMapping("/detail/pm")
+    public ResponseBean<PlanApprovalDetailRes> approvalDetailPM(@RequestBody PlanInfoReq planInfoReq) {
+        PlanApprovalDetailRes planApprovalDetailRes = planApprovalService.getApprovalDetail(planInfoReq);
+        return ResponseBeanBuilder.ok(planApprovalDetailRes);
+    }
+
+
+    @ApiOperation(value = "计划审批")
+    @PostMapping("/operate")
+    public ResponseBean approvalOperate(@RequestBody PlanApprovalReq planApprovalReq) {
+        return planApprovalService.approvalOperate(planApprovalReq);
+    }
+
+}

+ 0 - 106
application-facade/src/main/java/com/factory/controller/wx/PlanController.java

@@ -1,106 +0,0 @@
-package com.factory.controller.wx;
-
-import com.factory.base.entity.aggregates.PageBean;
-import com.factory.base.entity.aggregates.ResponseBean;
-import com.factory.base.entity.po.benteler.BentelerPlan;
-import com.factory.base.util.res.ResponseBeanBuilder;
-import com.factory.wx.entity.req.*;
-import com.factory.wx.entity.res.PlanApprovalDetailRes;
-import com.factory.wx.entity.res.PlanPassDetailRes;
-import com.factory.wx.service.PlanService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * 微信小程序端计划
- *
- * @author sMArT
- * @version 1.0
- * @date 2021-07-05 3:06 下午
- */
-@Api(tags = "微信小程序端")
-@RestController
-@RequestMapping("/wx/plans")
-@Slf4j
-public class PlanController {
-
-    @Autowired
-    private PlanService planService;
-
-
-    @ApiOperation(value = "计划审批列表")
-    @PostMapping("/approval/list")
-    public ResponseBean<PageBean<BentelerPlan>> approvalList(@RequestBody PlanListReq planListReq) {
-        PageBean<BentelerPlan> approvalList = planService.getApprovalListByPage(planListReq);
-        return ResponseBeanBuilder.ok(approvalList);
-    }
-
-//    public ResponseBean<Map> approval(HttpServletRequest request) {
-//        Long userId = (Long) request.getAttribute("LOGIN_USER_ID");//获取用户id
-//        List<PlanApprovalRes> approvalList = planService.getApprovalList(userId);
-//        Map map = new HashMap<>();
-//        map.put("row", approvalList);
-//        return ResponseBeanBuilder.ok(map);
-//    }
-
-    @ApiOperation(value = "计划审批详情-首件")
-    @PostMapping("/approval/detail/initial")
-    public ResponseBean<PlanApprovalDetailRes> approvalDetail(@RequestBody PlanInfoReq planInfoReq) {
-        // TODO
-        return ResponseBeanBuilder.ok();
-    }
-
-    @ApiOperation(value = "计划审批详情-防错")
-    @PostMapping("/approval/detail/pm")
-    public ResponseBean<PlanApprovalDetailRes> approvalDetailPM(@RequestBody PlanInfoReq planInfoReq) {
-        PlanApprovalDetailRes planApprovalDetailRes = planService.getApprovalDetail(planInfoReq);
-        return ResponseBeanBuilder.ok(planApprovalDetailRes);
-    }
-
-
-    @ApiOperation(value = "计划审批")
-    @PostMapping("/approval/operate")
-    public ResponseBean approvalOperate(@RequestBody PlanApprovalReq planApprovalReq) {
-        return planService.approvalOperate(planApprovalReq);
-    }
-
-    @ApiOperation(value = "计划放行列表")
-    @PostMapping("/pass/list")
-    public ResponseBean<PageBean<BentelerPlan>> pass(@RequestBody PassListReq passListReq) {
-        PageBean<BentelerPlan> passList = planService.getPassListByPage(passListReq);
-        return ResponseBeanBuilder.ok(passList);
-    }
-
-    @ApiOperation(value = "计划放行详情")
-    @PostMapping("/pass/detail")
-    public ResponseBean<PlanPassDetailRes> passDetail(@RequestBody PlanInfoReq planInfoReq) {
-        PlanPassDetailRes planPassDetailRes = planService.getPassDetail(planInfoReq);
-        return ResponseBeanBuilder.ok(planPassDetailRes);
-    }
-
-    @ApiOperation(value = "计划放行")
-    @PostMapping("/pass/operate")
-    public ResponseBean passOperate(@RequestBody PlanApprovalTaskReq planApprovalTaskReq) {
-        return planService.approvalTaskOperate(planApprovalTaskReq);
-    }
-
-    @ApiOperation(value = "计划提醒列表")
-    @PostMapping("/reminder/list")
-    public ResponseBean<PageBean<BentelerPlan>> reminder(@RequestBody ReminderReq reminderReq) {
-        PageBean<BentelerPlan> reminderList = planService.getReminderListByPage(reminderReq);
-        return ResponseBeanBuilder.ok(reminderList);
-    }
-
-    @ApiOperation(value = "计划提醒详情")
-    @PostMapping("/reminder/detail")
-    public ResponseBean reminderDetail(@RequestBody ReminderReq reminderReq) {
-        return ResponseBeanBuilder.ok();
-    }
-
-}

+ 57 - 0
application-facade/src/main/java/com/factory/controller/wx/PlanPassController.java

@@ -0,0 +1,57 @@
+package com.factory.controller.wx;
+
+import com.factory.base.entity.aggregates.PageBean;
+import com.factory.base.entity.aggregates.ResponseBean;
+import com.factory.base.entity.po.benteler.BentelerPlan;
+import com.factory.base.util.res.ResponseBeanBuilder;
+import com.factory.wx.entity.req.PlanApprovalTaskReq;
+import com.factory.wx.entity.req.PlanInfoReq;
+import com.factory.wx.entity.req.PlanPageReq;
+import com.factory.wx.entity.res.PlanPassDetailRes;
+import com.factory.wx.service.PlanPassService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 微信小程序端计划
+ *
+ * @author sMArT
+ * @version 1.0
+ * @date 2021-07-05 3:06 下午
+ */
+@Api(tags = "微信小程序端")
+@RestController
+@RequestMapping("/plans/pass")
+@Slf4j
+public class PlanPassController {
+
+    @Autowired
+    private PlanPassService planPassService;
+
+    @ApiOperation(value = "计划放行列表")
+    @PostMapping("/list")
+    public ResponseBean<PageBean<BentelerPlan>> pass(@RequestBody PlanPageReq planPageReq) {
+        PageBean<BentelerPlan> passList = planPassService.getPassListByPage(planPageReq);
+        return ResponseBeanBuilder.ok(passList);
+    }
+
+    @ApiOperation(value = "计划放行详情")
+    @PostMapping("/detail")
+    public ResponseBean<PlanPassDetailRes> passDetail(@RequestBody PlanInfoReq planInfoReq) {
+        PlanPassDetailRes planPassDetailRes = planPassService.getPassDetail(planInfoReq);
+        return ResponseBeanBuilder.ok(planPassDetailRes);
+    }
+
+    @ApiOperation(value = "计划放行")
+    @PostMapping("/operate")
+    public ResponseBean passOperate(@RequestBody PlanApprovalTaskReq planApprovalTaskReq) {
+        return planPassService.approvalTaskOperate(planApprovalTaskReq);
+    }
+
+}

+ 70 - 0
application-facade/src/main/java/com/factory/controller/wx/PlanReminderController.java

@@ -0,0 +1,70 @@
+package com.factory.controller.wx;
+
+import com.factory.base.entity.aggregates.PageBean;
+import com.factory.base.entity.aggregates.ResponseBean;
+import com.factory.base.entity.po.benteler.BentelerPlan;
+import com.factory.base.util.res.ResponseBeanBuilder;
+import com.factory.wx.entity.req.PlanInfoReq;
+import com.factory.wx.entity.req.PlanPageReq;
+import com.factory.wx.entity.res.PlanReminderDetailRes;
+import com.factory.wx.entity.res.ReminderRes;
+import com.factory.wx.service.PlanReminderService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 微信小程序端计划
+ *
+ * @author sMArT
+ * @version 1.0
+ * @date 2021-07-05 3:06 下午
+ */
+@Api(tags = "微信小程序端")
+@RestController
+@RequestMapping("/plans/reminder")
+@Slf4j
+public class PlanReminderController {
+
+    @Autowired
+    private PlanReminderService planReminderService;
+
+    @ApiOperation(value = "计划提醒列表")
+    @PostMapping("/list")
+    public ResponseBean<Map<String, Object>> reminderList(@RequestBody PlanPageReq planPageReq) {
+        List<ReminderRes> reminderList = planReminderService.getReminderList(planPageReq);
+        Map<String, Object> map = new HashMap<>();
+        map.put("row", reminderList);
+        return ResponseBeanBuilder.ok(map);
+    }
+
+    @ApiOperation(value = "计划提醒详情")
+    @PostMapping("/detail")
+    public ResponseBean<PlanReminderDetailRes> reminderDetail(@RequestBody PlanInfoReq planInfoReq) {
+        PlanReminderDetailRes planReminderDetailRes = planReminderService.getReminderDetail(planInfoReq);
+        return ResponseBeanBuilder.ok(planReminderDetailRes);
+    }
+
+    @ApiOperation(value = "计划提醒确认")
+    @PostMapping("/operate")
+    public ResponseBean passOperate(@RequestBody PlanInfoReq planInfoReq) {
+        planReminderService.confirmReminder(planInfoReq);
+        return ResponseBeanBuilder.ok();
+    }
+
+
+    @PostMapping("/test")
+    public ResponseBean<PageBean<BentelerPlan>> reminder(@RequestBody PlanPageReq planPageReq) {
+        PageBean<BentelerPlan> reminderList = planReminderService.getReminderListByPage(planPageReq);
+        return ResponseBeanBuilder.ok(reminderList);
+    }
+}

+ 28 - 2
application-facade/src/main/java/com/factory/controller/wx/StatisticsController.java

@@ -2,14 +2,24 @@ package com.factory.controller.wx;
 
 import com.factory.base.entity.aggregates.ResponseBean;
 import com.factory.base.util.res.ResponseBeanBuilder;
+import com.factory.web.entity.statistics.ExceptionCountRes;
+import com.factory.web.entity.statistics.StatisticsDateReq;
 import com.factory.web.entity.vo.res.pad.ini.planlistRes;
+import com.factory.web.service.statistics.StatisticsService;
+import com.factory.wx.entity.req.AbnormalPlanReq;
+import com.factory.wx.entity.res.AbnormalPlanRes;
+import com.factory.wx.service.AbnormalStatisticsService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.List;
+
 /**
  * 微信小程序端异常统计
  *
@@ -19,14 +29,30 @@ import org.springframework.web.bind.annotation.RestController;
  */
 @Api(tags = "微信小程序端")
 @RestController
-@RequestMapping("/wx/statistics")
+@RequestMapping("/statistics")
 @Slf4j
 public class StatisticsController {
+    @Autowired
+    private StatisticsService statisticsService;
+    @Autowired
+    private AbnormalStatisticsService abnormalStatisticsService;
 
     @ApiOperation(value = "异常统计")
     @PostMapping("/abnormal")
-    public ResponseBean<planlistRes> approval() {
+    public ResponseBean<ExceptionCountRes> abnormal(@RequestBody StatisticsDateReq statisticsDateReq) {
+        return statisticsService.getExceptionsByMonth(statisticsDateReq);
+    }
+
+    @ApiOperation(value = "异常计划列表")
+    @PostMapping("/list")
+    public ResponseBean<List<AbnormalPlanRes>> statisticsList(@RequestBody AbnormalPlanReq abnormalPlanReq) {
+        List<AbnormalPlanRes> abnormalPlanResList = abnormalStatisticsService.getExceptionPlansByMonth(abnormalPlanReq);
+        return ResponseBeanBuilder.ok(abnormalPlanResList);
+    }
 
+    @ApiOperation(value = "异常计划详情")
+    @PostMapping("/detail")
+    public ResponseBean<planlistRes> statisticsDetail() {
         return ResponseBeanBuilder.ok();
     }
 }

+ 2 - 2
application-facade/src/main/java/com/factory/controller/wx/WxController.java

@@ -23,14 +23,14 @@ import java.util.List;
  */
 @Api(tags = "微信小程序端")
 @RestController
-@RequestMapping("/wx")
+@RequestMapping("/functions")
 @Slf4j
 public class WxController {
     @Autowired
     private WxService wxService;
 
     @ApiOperation(value = "用户功能列表")
-    @GetMapping("/functions/list")
+    @GetMapping("/list")
     public ResponseBean<List<FunctionsRes>> getUserFunctions(HttpServletRequest request) {
         Long userId = (Long) request.getAttribute("LOGIN_USER_ID");//获取用户id
         return wxService.getUserFunction(userId);

+ 35 - 0
application-facade/src/main/java/com/factory/web/entity/statistics/ExceptionCountRes.java

@@ -0,0 +1,35 @@
+package com.factory.web.entity.statistics;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * 异常类别的数量
+ *
+ * @author sMArT
+ * @version 1.0
+ * @date 2021-07-22 3:50 下午
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class ExceptionCountRes {
+
+    @ApiModelProperty(value = "异常总量")
+    private int exceptionCount;
+
+    @ApiModelProperty(value = "已重检数量")
+    private int recheckedCount;
+
+    @ApiModelProperty(value = "已放行数量")
+    private int releasedCount;
+
+    @ApiModelProperty(value = "出现异常的日期")
+    private List<String> exceptionDates;
+}

+ 24 - 0
application-facade/src/main/java/com/factory/web/entity/statistics/StatisticsDateReq.java

@@ -0,0 +1,24 @@
+package com.factory.web.entity.statistics;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 查询年份、月份
+ *
+ * @author sMArT
+ * @version 1.0
+ * @date 2021-07-22 3:39 下午
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class StatisticsDateReq {
+
+    @ApiModelProperty(value = "年月", example = "yyyy-MM")
+    private String month;
+}

+ 2 - 0
application-facade/src/main/java/com/factory/web/mapper/pm/ApprovalRuleMapper.java

@@ -2,6 +2,7 @@ package com.factory.web.mapper.pm;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.factory.web.entity.pm.ApprovalRule;
+import org.apache.ibatis.annotations.Mapper;
 
 /**
  * 审批规则
@@ -10,5 +11,6 @@ import com.factory.web.entity.pm.ApprovalRule;
  * @version 1.0
  * @date 2021-07-15 4:56 下午
  */
+@Mapper
 public interface ApprovalRuleMapper extends BaseMapper<ApprovalRule> {
 }

+ 2 - 0
application-facade/src/main/java/com/factory/web/mapper/pm/RemindApprovalTaskMapper.java

@@ -2,11 +2,13 @@ package com.factory.web.mapper.pm;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.factory.web.entity.pm.RemindApprovalTask;
+import org.apache.ibatis.annotations.Mapper;
 
 /**
  * @author sMArT
  * @version 1.0
  * @date 2021-07-15 2:59 上午
  */
+@Mapper
 public interface RemindApprovalTaskMapper extends BaseMapper<RemindApprovalTask> {
 }

+ 117 - 0
application-facade/src/main/java/com/factory/web/service/impl/statistics/StatisticsServiceImpl.java

@@ -0,0 +1,117 @@
+package com.factory.web.service.impl.statistics;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.factory.base.entity.aggregates.ResponseBean;
+import com.factory.base.util.res.ResponseBeanBuilder;
+import com.factory.web.entity.fa.FirstArticleTask;
+import com.factory.web.entity.fa.FirstArticleTaskHisBlob;
+import com.factory.web.entity.pm.OnsiteTask;
+import com.factory.web.entity.pm.OnsiteTaskHisBlob;
+import com.factory.web.entity.statistics.ExceptionCountRes;
+import com.factory.web.entity.statistics.StatisticsDateReq;
+import com.factory.web.mapper.fa.FirstArticleTaskHisBlobMapper;
+import com.factory.web.mapper.fa.FirstArticleTaskMapper;
+import com.factory.web.mapper.pm.OnsiteTaskHisBlobMapper;
+import com.factory.web.mapper.pm.OnsiteTaskMapper;
+import com.factory.web.service.statistics.StatisticsService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+/**
+ * 异常统计
+ *
+ * @author sMArT
+ * @version 1.0
+ * @date 2021-07-22 4:03 下午
+ */
+@Service("statisticsService")
+public class StatisticsServiceImpl implements StatisticsService {
+    @Autowired
+    private OnsiteTaskMapper onsiteTaskMapper;
+    @Autowired
+    private OnsiteTaskHisBlobMapper onsiteTaskHisBlobMapper;
+    @Autowired
+    private FirstArticleTaskMapper firstArticleTaskMapper;
+    @Autowired
+    private FirstArticleTaskHisBlobMapper firstArticleTaskHisBlobMapper;
+
+    @Override
+    public ResponseBean<ExceptionCountRes> getExceptionsByMonth(StatisticsDateReq statisticsDateReq) {
+
+        String month = getMonth(statisticsDateReq);
+
+        List<String> releasedDates = new ArrayList<>();
+        List<String> recheckedDates = new ArrayList<>();
+
+        //取首件放行状态数量
+        List<FirstArticleTask> firstArticleTaskList = firstArticleTaskMapper.selectList(Wrappers.<FirstArticleTask>lambdaQuery()
+                .eq(FirstArticleTask::getStatus, 2)
+                .likeRight(FirstArticleTask::getTaskTime, month));
+        firstArticleTaskList.forEach(firstArticleTask -> {
+            DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+            releasedDates.add(firstArticleTask.getTaskTime().format(fmt));
+        });
+        //去首件重检数量
+        List<FirstArticleTaskHisBlob> firstArticleTaskHisBlobList = firstArticleTaskHisBlobMapper.selectList(Wrappers.<FirstArticleTaskHisBlob>lambdaQuery()
+                .likeRight(FirstArticleTaskHisBlob::getCreatedTime, month));
+        firstArticleTaskHisBlobList.forEach(firstArticleTaskHisBlob -> {
+            DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+            recheckedDates.add(firstArticleTaskHisBlob.getCreatedTime().format(fmt));
+        });
+
+        //取防错放行状态
+        List<OnsiteTask> onsiteTaskList = onsiteTaskMapper.selectList(Wrappers.<OnsiteTask>lambdaQuery()
+                .eq(OnsiteTask::getStatus, 2)
+                .likeRight(OnsiteTask::getTaskTime, month));
+        onsiteTaskList.forEach(onsiteTask -> {
+            DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+            releasedDates.add(onsiteTask.getTaskTime().format(fmt));
+        });
+        //取防错重检数量
+        List<OnsiteTaskHisBlob> onsiteTaskHisBlobList = onsiteTaskHisBlobMapper.selectList(Wrappers.<OnsiteTaskHisBlob>lambdaQuery()
+                .likeRight(OnsiteTaskHisBlob::getCreatedTime, month));
+        onsiteTaskHisBlobList.forEach(onsiteTaskHisBlob -> {
+            DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+            recheckedDates.add(onsiteTaskHisBlob.getCreatedTime().format(fmt));
+        });
+        //合并去重
+        List<String> exceptionDays = Stream.of(recheckedDates, releasedDates)
+                .flatMap(Collection::stream).distinct().collect(Collectors.toList());
+
+        return ResponseBeanBuilder.ok(ExceptionCountRes.builder()
+                .exceptionCount(releasedDates.size() + recheckedDates.size())
+                .recheckedCount(recheckedDates.size())
+                .releasedCount(releasedDates.size())
+                .exceptionDates(exceptionDays)
+                .build());
+    }
+
+    /**
+     * 验证日期格式
+     *
+     * @param statisticsDateReq 默认2021-06
+     * @return
+     */
+    private String getMonth(StatisticsDateReq statisticsDateReq) {
+        String month = "2021-06";
+        try {
+            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM");
+            Date date = simpleDateFormat.parse(statisticsDateReq.getMonth());
+            month = simpleDateFormat.format(date);
+        } catch (ParseException e) {
+            e.printStackTrace();
+            ResponseBeanBuilder.fail("年月格式错误");
+        }
+        return month;
+    }
+}

+ 23 - 0
application-facade/src/main/java/com/factory/web/service/statistics/StatisticsService.java

@@ -0,0 +1,23 @@
+package com.factory.web.service.statistics;
+
+import com.factory.base.entity.aggregates.ResponseBean;
+import com.factory.web.entity.statistics.ExceptionCountRes;
+import com.factory.web.entity.statistics.StatisticsDateReq;
+
+/**
+ * 统计
+ *
+ * @author sMArT
+ * @version 1.0
+ * @date 2021-07-22 3:24 下午
+ */
+public interface StatisticsService {
+    /**
+     * 获取当年异常数量
+     *
+     * @param statisticsDateReq
+     * @return
+     */
+    ResponseBean<ExceptionCountRes> getExceptionsByMonth(StatisticsDateReq statisticsDateReq);
+
+}

+ 27 - 0
application-facade/src/main/java/com/factory/wx/entity/req/AbnormalPlanReq.java

@@ -0,0 +1,27 @@
+package com.factory.wx.entity.req;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author sMArT
+ * @version 1.0
+ * @date 2021-07-23 2:46 上午
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class AbnormalPlanReq {
+    @ApiModelProperty(value = "年月", example = "yyyy-MM")
+    private String month;
+
+    @ApiModelProperty(value = "计划名")
+    private String name;
+
+    @ApiModelProperty(value = "异常类型 1已重检 2已放行")
+    private int abnormalType;
+}

+ 2 - 2
application-facade/src/main/java/com/factory/wx/entity/req/PassListReq.java → application-facade/src/main/java/com/factory/wx/entity/req/PlanPageReq.java

@@ -9,13 +9,13 @@ import lombok.NoArgsConstructor;
 /**
  * @author sMArT
  * @version 1.0
- * @date 2021-07-15 12:33 上
+ * @date 2021-07-15 4:45 下
  */
 @Data
 @NoArgsConstructor
 @AllArgsConstructor
 @Builder
-public class PassListReq {
+public class PlanPageReq {
     @ApiModelProperty(value = "用户id")
     private Long userId;
 

+ 0 - 31
application-facade/src/main/java/com/factory/wx/entity/req/ReminderReq.java

@@ -1,31 +0,0 @@
-package com.factory.wx.entity.req;
-
-import io.swagger.annotations.ApiModelProperty;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-/**
- * @author sMArT
- * @version 1.0
- * @date 2021-07-15 2:32 上午
- */
-@Data
-@NoArgsConstructor
-@AllArgsConstructor
-@Builder
-public class ReminderReq {
-
-    @ApiModelProperty(value = "用户id")
-    private Long userId;
-
-    @ApiModelProperty(value = "计划名称")
-    private String name;
-
-    @ApiModelProperty(value = "计划提醒页号")
-    private int page;
-
-    @ApiModelProperty(value = "计划提醒每页数量")
-    private int size;
-}

+ 32 - 0
application-facade/src/main/java/com/factory/wx/entity/res/AbnormalPlanRes.java

@@ -0,0 +1,32 @@
+package com.factory.wx.entity.res;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author sMArT
+ * @version 1.0
+ * @date 2021-07-23 2:12 上午
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class AbnormalPlanRes {
+
+    @ApiModelProperty(value = "计划id")
+    private Long planId;
+
+    @ApiModelProperty(value = "计划名称")
+    private String planName;
+
+    @ApiModelProperty(value = "计划类型 1首件 2防错")
+    private int planType;
+
+    @ApiModelProperty(value = "异常类型 1已重检 2已放行")
+    private int abnormalType;
+
+}

+ 1 - 1
application-facade/src/main/java/com/factory/wx/entity/res/PlanApprovalRes.java

@@ -22,6 +22,6 @@ public class PlanApprovalRes {
     @ApiModelProperty(value = "计划名称")
     private String name;
 
-    @ApiModelProperty(value = "计划类型")
+    @ApiModelProperty(value = "计划类型 1首件 2防错")
     private int planType;
 }

+ 40 - 0
application-facade/src/main/java/com/factory/wx/entity/res/PlanReminderDetailRes.java

@@ -0,0 +1,40 @@
+package com.factory.wx.entity.res;
+
+import com.factory.web.entity.pm.OnsiteCalendar;
+import com.factory.web.entity.pm.OnsiteTitle;
+import com.factory.web.entity.pm.OnsiteWorkshop;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDate;
+import java.util.List;
+
+/**
+ * @author sMArT
+ * @version 1.0
+ * @date 2021-07-15 11:02 上午
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class PlanReminderDetailRes {
+    @ApiModelProperty(value = "计划Id")
+    private Long planId;
+    @ApiModelProperty(value = "计划名称")
+    private String planName;
+    @ApiModelProperty(value = "检验负责人")
+    private List<String> usersName;
+    @ApiModelProperty(value = "计划生效日期")
+    private LocalDate effectiveDate;
+    @ApiModelProperty(value = "表头信息")
+    private OnsiteTitle titleInfo;
+
+    @ApiModelProperty(value = "防错计划基本信息")
+    private List<OnsiteCalendar> onsiteCalendars;
+    @ApiModelProperty(value = "防错计划工作站点检")
+    private List<OnsiteWorkshop> onsiteWorkshops;
+}

+ 10 - 9
application-facade/src/main/java/com/factory/wx/entity/req/PlanListReq.java → application-facade/src/main/java/com/factory/wx/entity/res/ReminderRes.java

@@ -1,4 +1,4 @@
-package com.factory.wx.entity.req;
+package com.factory.wx.entity.res;
 
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
@@ -9,23 +9,24 @@ import lombok.NoArgsConstructor;
 /**
  * @author sMArT
  * @version 1.0
- * @date 2021-07-15 1:23 下午
+ * @date 2021-07-15 7:03 下午
  */
 @Data
 @NoArgsConstructor
 @AllArgsConstructor
 @Builder
-public class PlanListReq {
+public class ReminderRes {
 
-    @ApiModelProperty(value = "用户id")
-    private Long userId;
+    @ApiModelProperty(value = "计划Id")
+    private Long planId;
 
     @ApiModelProperty(value = "计划名称")
     private String name;
 
-    @ApiModelProperty(value = "计划列表页号")
-    private int page;
+    @ApiModelProperty(value = "计划类型")
+    private String planType;
+
+    @ApiModelProperty(value = "提醒状态")
+    private int status;
 
-    @ApiModelProperty(value = "计划列表每页数量")
-    private int size;
 }

+ 30 - 0
application-facade/src/main/java/com/factory/wx/mapper/AbnormalStatisticsMapper.java

@@ -0,0 +1,30 @@
+package com.factory.wx.mapper;
+
+import com.factory.wx.entity.req.AbnormalPlanReq;
+import com.factory.wx.entity.res.AbnormalPlanRes;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * @author sMArT
+ * @version 1.0
+ * @date 2021-07-23 2:09 上午
+ */
+@Mapper
+public interface AbnormalStatisticsMapper {
+    /**
+     * 获取放行异常计划
+     *
+     * @return
+     */
+    List<AbnormalPlanRes> getReleasedAbnormalPlans(AbnormalPlanReq abnormalPlanReq);
+
+    /**
+     * 获取重检异常计划
+     *
+     * @param abnormalPlanReq
+     * @return
+     */
+    List<AbnormalPlanRes> getRecheckedAbnormalPlans(AbnormalPlanReq abnormalPlanReq);
+}

+ 1 - 0
application-facade/src/main/java/com/factory/wx/mapper/PlanMapper.java

@@ -28,4 +28,5 @@ public interface PlanMapper {
      * @return
      */
     List<PlanApprovalTaskRes> getApprovalTaskList(Long userId);
+
 }

+ 32 - 0
application-facade/src/main/java/com/factory/wx/mapper/ReminderMapper.java

@@ -0,0 +1,32 @@
+package com.factory.wx.mapper;
+
+import com.factory.wx.entity.req.PlanInfoReq;
+import com.factory.wx.entity.req.PlanPageReq;
+import com.factory.wx.entity.res.ReminderRes;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * @author sMArT
+ * @version 1.0
+ * @date 2021-07-15 9:12 下午
+ */
+@Mapper
+public interface ReminderMapper {
+
+    /**
+     * 获提醒任务列表
+     *
+     * @param planPageReq
+     * @return
+     */
+    List<ReminderRes> getReminderList(PlanPageReq planPageReq);
+
+    /**
+     * 确认计划已提醒
+     *
+     * @param planInfoReq
+     */
+    void confirmReminder(PlanInfoReq planInfoReq);
+}

+ 23 - 0
application-facade/src/main/java/com/factory/wx/service/AbnormalStatisticsService.java

@@ -0,0 +1,23 @@
+package com.factory.wx.service;
+
+import com.factory.web.entity.statistics.StatisticsDateReq;
+import com.factory.wx.entity.req.AbnormalPlanReq;
+import com.factory.wx.entity.res.AbnormalPlanRes;
+
+import java.util.List;
+
+/**
+ * @author sMArT
+ * @version 1.0
+ * @date 2021-07-23 1:24 上午
+ */
+public interface AbnormalStatisticsService {
+
+    /**
+     * 获取每月的异常计划
+     *
+     * @param abnormalPlanReq
+     * @return
+     */
+    List<AbnormalPlanRes> getExceptionPlansByMonth(AbnormalPlanReq abnormalPlanReq);
+}

+ 6 - 36
application-facade/src/main/java/com/factory/wx/service/PlanService.java → application-facade/src/main/java/com/factory/wx/service/PlanApprovalService.java

@@ -3,10 +3,11 @@ package com.factory.wx.service;
 import com.factory.base.entity.aggregates.PageBean;
 import com.factory.base.entity.aggregates.ResponseBean;
 import com.factory.base.entity.po.benteler.BentelerPlan;
-import com.factory.wx.entity.req.*;
+import com.factory.wx.entity.req.PlanApprovalReq;
+import com.factory.wx.entity.req.PlanInfoReq;
+import com.factory.wx.entity.req.PlanPageReq;
 import com.factory.wx.entity.res.PlanApprovalDetailRes;
 import com.factory.wx.entity.res.PlanApprovalRes;
-import com.factory.wx.entity.res.PlanPassDetailRes;
 
 import java.util.List;
 
@@ -15,7 +16,7 @@ import java.util.List;
  * @version 1.0
  * @date 2021-07-13 12:13 下午
  */
-public interface PlanService {
+public interface PlanApprovalService {
     /**
      * 获取审批计划列表
      *
@@ -27,10 +28,10 @@ public interface PlanService {
     /**
      * 分页显示计划列表
      *
-     * @param planListReq
+     * @param planPageReq
      * @return
      */
-    PageBean<BentelerPlan> getApprovalListByPage(PlanListReq planListReq);
+    PageBean<BentelerPlan> getApprovalListByPage(PlanPageReq planPageReq);
 
     /**
      * 获取审批计划详情
@@ -48,35 +49,4 @@ public interface PlanService {
      */
     ResponseBean approvalOperate(PlanApprovalReq planApprovalReq);
 
-    /**
-     * 计划放行列表
-     *
-     * @param passListReq
-     * @return
-     */
-    PageBean<BentelerPlan> getPassListByPage(PassListReq passListReq);
-
-    /**
-     * 计划放行详情
-     *
-     * @param planInfoReq
-     * @return
-     */
-    PlanPassDetailRes getPassDetail(PlanInfoReq planInfoReq);
-
-    /**
-     * 计划放行
-     *
-     * @param planApprovalTaskReq
-     * @return
-     */
-    ResponseBean approvalTaskOperate(PlanApprovalTaskReq planApprovalTaskReq);
-
-    /**
-     * 获得计划提醒列表
-     *
-     * @param reminderReq
-     * @return
-     */
-    PageBean<BentelerPlan> getReminderListByPage(ReminderReq reminderReq);
 }

+ 42 - 0
application-facade/src/main/java/com/factory/wx/service/PlanPassService.java

@@ -0,0 +1,42 @@
+package com.factory.wx.service;
+
+import com.factory.base.entity.aggregates.PageBean;
+import com.factory.base.entity.aggregates.ResponseBean;
+import com.factory.base.entity.po.benteler.BentelerPlan;
+import com.factory.wx.entity.req.PlanApprovalTaskReq;
+import com.factory.wx.entity.req.PlanInfoReq;
+import com.factory.wx.entity.req.PlanPageReq;
+import com.factory.wx.entity.res.PlanPassDetailRes;
+
+/**
+ * @author sMArT
+ * @version 1.0
+ * @date 2021-07-13 12:13 下午
+ */
+public interface PlanPassService {
+
+    /**
+     * 计划放行列表
+     *
+     * @param planPageReq
+     * @return
+     */
+    PageBean<BentelerPlan> getPassListByPage(PlanPageReq planPageReq);
+
+    /**
+     * 计划放行详情
+     *
+     * @param planInfoReq
+     * @return
+     */
+    PlanPassDetailRes getPassDetail(PlanInfoReq planInfoReq);
+
+    /**
+     * 计划放行
+     *
+     * @param planApprovalTaskReq
+     * @return
+     */
+    ResponseBean approvalTaskOperate(PlanApprovalTaskReq planApprovalTaskReq);
+
+}

+ 49 - 0
application-facade/src/main/java/com/factory/wx/service/PlanReminderService.java

@@ -0,0 +1,49 @@
+package com.factory.wx.service;
+
+import com.factory.base.entity.aggregates.PageBean;
+import com.factory.base.entity.po.benteler.BentelerPlan;
+import com.factory.wx.entity.req.PlanInfoReq;
+import com.factory.wx.entity.req.PlanPageReq;
+import com.factory.wx.entity.res.PlanReminderDetailRes;
+import com.factory.wx.entity.res.ReminderRes;
+
+import java.util.List;
+
+/**
+ * @author sMArT
+ * @version 1.0
+ * @date 2021-07-13 12:13 下午
+ */
+public interface PlanReminderService {
+
+    /**
+     * 获得计划提醒列表
+     *
+     * @param planPageReq
+     * @return
+     */
+    List<ReminderRes> getReminderList(PlanPageReq planPageReq);
+
+    /**
+     * 分页获得计划提醒列表
+     *
+     * @param planPageReq
+     * @return
+     */
+    PageBean<BentelerPlan> getReminderListByPage(PlanPageReq planPageReq);
+
+    /**
+     * 计划提醒详情
+     *
+     * @param planInfoReq
+     * @return
+     */
+    PlanReminderDetailRes getReminderDetail(PlanInfoReq planInfoReq);
+
+    /**
+     * 确认已提醒
+     *
+     * @param planInfoReq
+     */
+    void confirmReminder(PlanInfoReq planInfoReq);
+}

+ 41 - 0
application-facade/src/main/java/com/factory/wx/service/impl/AbnormalStatisticsServiceImpl.java

@@ -0,0 +1,41 @@
+package com.factory.wx.service.impl;
+
+import com.factory.wx.entity.req.AbnormalPlanReq;
+import com.factory.wx.entity.res.AbnormalPlanRes;
+import com.factory.wx.mapper.AbnormalStatisticsMapper;
+import com.factory.wx.service.AbnormalStatisticsService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author sMArT
+ * @version 1.0
+ * @date 2021-07-23 1:33 上午
+ */
+@Service("abnormalStatisticsService")
+public class AbnormalStatisticsServiceImpl implements AbnormalStatisticsService {
+    @Autowired
+    private AbnormalStatisticsMapper abnormalStatisticsMapper;
+
+    /**
+     * 根据年月获取异常计划
+     *
+     * @param abnormalPlanReq
+     * @return
+     */
+    @Override
+    public List<AbnormalPlanRes> getExceptionPlansByMonth(AbnormalPlanReq abnormalPlanReq) {
+        List<AbnormalPlanRes> releasedAbnormalPlans = new ArrayList<>();
+        if (abnormalPlanReq.getAbnormalType() == 1) {
+            abnormalStatisticsMapper.getReleasedAbnormalPlans(abnormalPlanReq);
+        }
+        if (abnormalPlanReq.getAbnormalType() == 2) {
+            abnormalStatisticsMapper.getRecheckedAbnormalPlans(abnormalPlanReq);
+        }
+        return releasedAbnormalPlans;
+    }
+
+}

+ 200 - 0
application-facade/src/main/java/com/factory/wx/service/impl/PlanApprovalServiceImpl.java

@@ -0,0 +1,200 @@
+package com.factory.wx.service.impl;
+
+import cn.hutool.core.collection.CollUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.factory.base.entity.aggregates.PageBean;
+import com.factory.base.entity.aggregates.ResponseBean;
+import com.factory.base.entity.po.benteler.BentelerPlan;
+import com.factory.base.entity.po.remote.UserInfo;
+import com.factory.base.util.res.ResponseBeanBuilder;
+import com.factory.user.mapper.UserInfoMapper;
+import com.factory.web.entity.pm.*;
+import com.factory.web.entity.pm.res.ApprovalUserRes;
+import com.factory.web.mapper.BentelerPlanMapper;
+import com.factory.web.mapper.pm.*;
+import com.factory.web.service.pm.PreventMistakeService;
+import com.factory.wx.entity.req.PlanApprovalReq;
+import com.factory.wx.entity.req.PlanInfoReq;
+import com.factory.wx.entity.req.PlanPageReq;
+import com.factory.wx.entity.res.PlanApprovalDetailRes;
+import com.factory.wx.entity.res.PlanApprovalRes;
+import com.factory.wx.mapper.PlanMapper;
+import com.factory.wx.service.PlanApprovalService;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * @author sMArT
+ * @version 1.0
+ * @date 2021-07-13 12:42 下午
+ */
+@Service("planApprovalService")
+public class PlanApprovalServiceImpl implements PlanApprovalService {
+
+    private final static Logger LOGGER = LoggerFactory.getLogger(PlanApprovalServiceImpl.class);
+    /**
+     * 审批规则类型为:1新建计划审批
+     */
+    private static int APPROVAL_TYPE_NEW = 1;
+    /**
+     * 审批规则类型为:3防错
+     */
+    private static int APPROVAL_TYPE_PM = 3;
+    @Autowired
+    private PlanMapper planMapper;
+    @Autowired
+    private BentelerPlanMapper bentelerPlanMapper;
+    @Autowired
+    private OnsiteCalendarMapper onsiteCalendarMapper;
+    @Autowired
+    private OnsiteWorkshopMapper onsiteWorkshopMapper;
+    @Autowired
+    private OnsiteItemMapper onsiteItemMapper;
+    @Autowired
+    private OnsiteApprovalPlanMapper onsiteApprovalPlanMapper;
+    @Autowired
+    private ApprovalRuleMapper approvalRuleMapper;
+    @Autowired
+    private UserInfoMapper userInfoMapper;
+    @Autowired
+    private PreventMistakeService preventMistakeService;
+
+
+    /**
+     * 获取计划审批列表
+     *
+     * @param userId
+     * @return
+     */
+    @Override
+    public List<PlanApprovalRes> getApprovalList(Long userId) {
+        return planMapper.getApprovalList(userId);
+    }
+
+    /**
+     * 分页显示计划列表
+     *
+     * @param planPageReq
+     * @return
+     */
+    @Override
+    public PageBean<BentelerPlan> getApprovalListByPage(PlanPageReq planPageReq) {
+
+        LambdaQueryWrapper<OnsiteApprovalPlan> approvalPlanWrapper = new LambdaQueryWrapper<>();
+        approvalPlanWrapper.eq(OnsiteApprovalPlan::getApprovalUserId, planPageReq.getUserId());
+        approvalPlanWrapper.eq(OnsiteApprovalPlan::getStatus, 0);//获取未处理过的计划
+        List<OnsiteApprovalPlan> onsiteApprovalPlanList = onsiteApprovalPlanMapper.selectList(approvalPlanWrapper);
+
+        IPage<BentelerPlan> bentelerPlanIPage = new Page<>();
+        if (CollUtil.isNotEmpty(onsiteApprovalPlanList)) {
+            LambdaQueryWrapper<BentelerPlan> wrapper = new LambdaQueryWrapper<>();
+            List<Long> planIds = onsiteApprovalPlanList.stream().map(OnsiteApprovalPlan::getBentelerPlanId).collect(Collectors.toList());
+            wrapper.in(BentelerPlan::getId, planIds);
+
+            if (StringUtils.isNotEmpty(planPageReq.getName())) {
+                wrapper.like(BentelerPlan::getName, planPageReq.getName());
+            }
+            IPage<BentelerPlan> page = new Page<>(planPageReq.getPage(), planPageReq.getSize());
+            bentelerPlanIPage = bentelerPlanMapper.selectPage(page, wrapper);
+        }
+
+        return PageBean.<BentelerPlan>builder().row(bentelerPlanIPage.getRecords()).total(bentelerPlanIPage.getTotal()).page(bentelerPlanIPage.getPages()).build();
+    }
+
+    /**
+     * 获取审批计划详情-防错
+     *
+     * @param planInfoReq
+     * @return
+     */
+    @Override
+    public PlanApprovalDetailRes getApprovalDetail(PlanInfoReq planInfoReq) {
+        BentelerPlan bentelerPlan = bentelerPlanMapper.selectById(planInfoReq.getPlanId());
+        List<OnsiteCalendar> onsiteCalendarList = onsiteCalendarMapper.selectList(Wrappers.<OnsiteCalendar>lambdaQuery()
+                .eq(OnsiteCalendar::getBentelerPlanId, planInfoReq.getPlanId()));
+
+        List<String> usersName = new ArrayList<>();
+        onsiteCalendarList.forEach(onsiteCalendar -> {
+            UserInfo userInfo = userInfoMapper.selectById(onsiteCalendar.getUserId());
+            usersName.add(userInfo.getName());
+        });
+
+        //获取title
+        OnsiteTitle title = preventMistakeService.getTitle(planInfoReq.getPlanId());
+
+        List<OnsiteWorkshop> onsiteWorkshopList = onsiteWorkshopMapper.selectList(Wrappers.<OnsiteWorkshop>lambdaQuery()
+                .eq(OnsiteWorkshop::getBentelerPlanId, planInfoReq.getPlanId()));
+        onsiteWorkshopList.forEach(onsiteWorkshop -> {
+            onsiteWorkshop.setOnsiteItemList(onsiteItemMapper.selectList(Wrappers.<OnsiteItem>lambdaQuery()
+                    .eq(OnsiteItem::getWorkshopId, onsiteWorkshop.getId())));
+        });
+
+        PlanApprovalDetailRes planApprovalDetailRes = PlanApprovalDetailRes.builder()
+                .planId(bentelerPlan.getId())
+                .planName(bentelerPlan.getName())
+                .effectiveDate(bentelerPlan.getEffectiveDate())
+                .usersName(usersName)
+                .titleInfo(title)
+                .onsiteCalendars(onsiteCalendarList)
+                .onsiteWorkshops(onsiteWorkshopList)
+                .build();
+        return planApprovalDetailRes;
+    }
+
+    /**
+     * 计划审批
+     *
+     * @param planApprovalReq
+     * @return
+     */
+    @Override
+    public ResponseBean approvalOperate(PlanApprovalReq planApprovalReq) {
+
+        OnsiteApprovalPlan onsiteApprovalPlan = new OnsiteApprovalPlan();
+        onsiteApprovalPlan.setStatus(planApprovalReq.getStatus());
+        int updateStatus = onsiteApprovalPlanMapper.update(onsiteApprovalPlan, Wrappers.<OnsiteApprovalPlan>lambdaQuery()
+                .eq(OnsiteApprovalPlan::getBentelerPlanId, planApprovalReq.getPlanId())
+                .eq(OnsiteApprovalPlan::getApprovalUserId, planApprovalReq.getUserId()));
+        if (updateStatus > 0) {
+            //审批通过触发下一级别
+            if (planApprovalReq.getStatus() == 1) {
+                ApprovalRule approvalRuleMaxLevel = approvalRuleMapper.selectOne(Wrappers.<ApprovalRule>lambdaQuery()
+                        .eq(ApprovalRule::getType, APPROVAL_TYPE_NEW)
+                        .orderByDesc(ApprovalRule::getApprovalLevel)
+                        .last("limit 1"));
+                //获取当前审批级别
+                OnsiteApprovalPlan userApprovalInfo = onsiteApprovalPlanMapper.selectOne(Wrappers.<OnsiteApprovalPlan>lambdaQuery()
+                        .eq(OnsiteApprovalPlan::getBentelerPlanId, planApprovalReq.getPlanId())
+                        .eq(OnsiteApprovalPlan::getApprovalUserId, planApprovalReq.getUserId()).last("limit 1"));
+                int userLevel = userApprovalInfo.getApprovalLevel();
+                if (userLevel < approvalRuleMaxLevel.getApprovalLevel()) {
+                    ApprovalUserRes approvalUserRes = preventMistakeService.getApprovalUserInfo(userLevel + 1, APPROVAL_TYPE_NEW);
+                    onsiteApprovalPlanMapper.insert(OnsiteApprovalPlan.builder()
+                            .bentelerPlanId(planApprovalReq.getPlanId())
+                            .approvalLevel(approvalUserRes.getApprovalLevel())
+                            .approvalUserId(approvalUserRes.getUserId())
+                            .status(0)
+                            .build());
+                }
+            }
+            //审批不通过
+            if (planApprovalReq.getStatus() == 2) {
+                //审批不通过,保存审批历史
+//                preventMistakeService.setOnsitePlanHis(planApprovalReq.getPlanId());
+                preventMistakeService.getApprovalUserInfo(1, APPROVAL_TYPE_NEW);
+            }
+        }
+        return ResponseBeanBuilder.ok();
+    }
+
+}

+ 202 - 0
application-facade/src/main/java/com/factory/wx/service/impl/PlanPassServiceImpl.java

@@ -0,0 +1,202 @@
+package com.factory.wx.service.impl;
+
+import cn.hutool.core.collection.CollUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.factory.base.entity.aggregates.PageBean;
+import com.factory.base.entity.aggregates.ResponseBean;
+import com.factory.base.entity.po.benteler.BentelerPlan;
+import com.factory.base.entity.po.remote.UserInfo;
+import com.factory.base.util.res.ResponseBeanBuilder;
+import com.factory.user.mapper.UserInfoMapper;
+import com.factory.web.entity.pm.*;
+import com.factory.web.entity.pm.res.ApprovalUserRes;
+import com.factory.web.mapper.BentelerPlanMapper;
+import com.factory.web.mapper.pm.ApprovalRuleMapper;
+import com.factory.web.mapper.pm.OnsiteApprovalTaskMapper;
+import com.factory.web.mapper.pm.OnsiteCalendarMapper;
+import com.factory.web.mapper.pm.OnsiteTaskMapper;
+import com.factory.web.service.pm.PreventMistakeService;
+import com.factory.wx.entity.req.PlanApprovalTaskReq;
+import com.factory.wx.entity.req.PlanInfoReq;
+import com.factory.wx.entity.req.PlanPageReq;
+import com.factory.wx.entity.res.PlanApprovalTaskRes;
+import com.factory.wx.entity.res.PlanPassDetailRes;
+import com.factory.wx.mapper.PlanMapper;
+import com.factory.wx.service.PlanPassService;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * @author sMArT
+ * @version 1.0
+ * @date 2021-07-13 12:42 下午
+ */
+@Service("planPassService")
+public class PlanPassServiceImpl implements PlanPassService {
+
+    private final static Logger LOGGER = LoggerFactory.getLogger(PlanPassServiceImpl.class);
+    /**
+     * 审批规则类型为:1新建计划审批
+     */
+    private static int APPROVAL_TYPE_NEW = 1;
+    /**
+     * 审批规则类型为:3防错
+     */
+    private static int APPROVAL_TYPE_PM = 3;
+    @Autowired
+    private PlanMapper planMapper;
+    @Autowired
+    private BentelerPlanMapper bentelerPlanMapper;
+    @Autowired
+    private OnsiteCalendarMapper onsiteCalendarMapper;
+    @Autowired
+    private ApprovalRuleMapper approvalRuleMapper;
+    @Autowired
+    private UserInfoMapper userInfoMapper;
+    @Autowired
+    private PreventMistakeService preventMistakeService;
+
+    @Autowired
+    private OnsiteApprovalTaskMapper onsiteApprovalTaskMapper;
+    @Autowired
+    private OnsiteTaskMapper onsiteTaskMapper;
+
+    private static IPage<BentelerPlan> getBentelerPlanIPage(PlanPageReq planPageReq, List<OnsiteCalendar> onsiteCalendarList, BentelerPlanMapper bentelerPlanMapper) {
+        IPage<BentelerPlan> bentelerPlanIPage;
+        List<Long> planIds = onsiteCalendarList.stream().map(OnsiteCalendar::getBentelerPlanId).collect(Collectors.toList());
+
+        LambdaQueryWrapper<BentelerPlan> wrapper = new LambdaQueryWrapper<>();
+        wrapper.in(BentelerPlan::getId, planIds);
+        wrapper.eq(BentelerPlan::getPlanType, planPageReq.getCheckType());
+
+        if (StringUtils.isNotEmpty(planPageReq.getName())) {
+            wrapper.like(BentelerPlan::getName, planPageReq.getName());
+        }
+        IPage<BentelerPlan> page = new Page<>(planPageReq.getPage(), planPageReq.getSize());
+        bentelerPlanIPage = bentelerPlanMapper.selectPage(page, wrapper);
+        return bentelerPlanIPage;
+    }
+
+
+    /**
+     * 计划放行列表
+     *
+     * @param planPageReq
+     * @return
+     */
+    @Override
+    public PageBean<BentelerPlan> getPassListByPage(PlanPageReq planPageReq) {
+
+        LambdaQueryWrapper<OnsiteApprovalTask> approvalTaskWrapper = new LambdaQueryWrapper<>();
+        approvalTaskWrapper.eq(OnsiteApprovalTask::getApprovalUserId, planPageReq.getUserId());
+        approvalTaskWrapper.eq(OnsiteApprovalTask::getStatus, 0);//获取未处理过的计划
+
+        List<OnsiteApprovalTask> onsiteApprovalTaskList = onsiteApprovalTaskMapper.selectList(approvalTaskWrapper);
+        IPage<BentelerPlan> bentelerPlanIPage = new Page<>();
+        if (CollUtil.isNotEmpty(onsiteApprovalTaskList)) {
+            List<Long> taskIds = onsiteApprovalTaskList.stream().map(OnsiteApprovalTask::getOnsiteTaskId).collect(Collectors.toList());
+            List<OnsiteTask> onsiteTaskList = onsiteTaskMapper.selectBatchIds(taskIds);
+            if (CollUtil.isNotEmpty(onsiteTaskList)) {
+                List<Long> calendarIds = onsiteTaskList.stream().map(OnsiteTask::getOnsiteCalendarId).collect(Collectors.toList());
+                List<OnsiteCalendar> onsiteCalendarList = onsiteCalendarMapper.selectBatchIds(calendarIds);
+                if (CollUtil.isNotEmpty(onsiteCalendarList)) {
+                    bentelerPlanIPage = getBentelerPlanIPage(planPageReq, onsiteCalendarList, bentelerPlanMapper);
+                }
+            }
+        }
+        return PageBean.<BentelerPlan>builder().row(bentelerPlanIPage.getRecords()).total(bentelerPlanIPage.getTotal()).page(bentelerPlanIPage.getPages()).build();
+    }
+
+    /**
+     * 计划放行详情
+     *
+     * @param planInfoReq
+     * @return
+     */
+    @Override
+    public PlanPassDetailRes getPassDetail(PlanInfoReq planInfoReq) {
+        BentelerPlan bentelerPlan = bentelerPlanMapper.selectById(planInfoReq.getPlanId());
+        List<OnsiteCalendar> onsiteCalendarList = onsiteCalendarMapper.selectList(Wrappers.<OnsiteCalendar>lambdaQuery()
+                .eq(OnsiteCalendar::getBentelerPlanId, planInfoReq.getPlanId()));
+
+        List<String> usersName = new ArrayList<>();
+        onsiteCalendarList.forEach(onsiteCalendar -> {
+            UserInfo userInfo = userInfoMapper.selectById(onsiteCalendar.getUserId());
+            usersName.add(userInfo.getName());
+        });
+
+        //获取title
+        OnsiteTitle title = preventMistakeService.getTitle(planInfoReq.getPlanId());
+        List<PlanApprovalTaskRes> planApprovalTaskResList = planMapper.getApprovalTaskList(planInfoReq.getUserId());
+
+        PlanPassDetailRes planPassDetailRes = PlanPassDetailRes.builder()
+                .planId(bentelerPlan.getId())
+                .planName(bentelerPlan.getName())
+                .effectiveDate(bentelerPlan.getEffectiveDate())
+                .usersName(usersName)
+                .titleInfo(title)
+                .onsiteCalendars(onsiteCalendarList)
+                .planApprovalTasks(planApprovalTaskResList)
+                .build();
+        return planPassDetailRes;
+    }
+
+    /**
+     * 计划放行
+     *
+     * @param planApprovalTaskReq
+     * @return
+     */
+    @Override
+    public ResponseBean approvalTaskOperate(PlanApprovalTaskReq planApprovalTaskReq) {
+
+        OnsiteApprovalTask ot = new OnsiteApprovalTask();
+        ot.setOnsiteTaskId(planApprovalTaskReq.getTaskId());
+        ot.setReason(planApprovalTaskReq.getReason());
+        ot.setStatus(planApprovalTaskReq.getStatus());
+        int updateStatus = onsiteApprovalTaskMapper.update(ot, Wrappers.<OnsiteApprovalTask>lambdaQuery()
+                .eq(OnsiteApprovalTask::getOnsiteTaskId, planApprovalTaskReq.getTaskId())
+                .eq(OnsiteApprovalTask::getApprovalUserId, planApprovalTaskReq.getUserId()));
+        if (updateStatus > 0) {
+            //审批不通过触发下一级别
+            if (planApprovalTaskReq.getStatus() == 2) {
+                ApprovalRule approvalRuleMaxLevel = approvalRuleMapper.selectOne(Wrappers.<ApprovalRule>lambdaQuery()
+                        .eq(ApprovalRule::getType, APPROVAL_TYPE_PM)
+                        .orderByDesc(ApprovalRule::getApprovalLevel)
+                        .last("limit 1"));
+                //获取当前审批级别
+                OnsiteApprovalTask onsiteApprovalTask = onsiteApprovalTaskMapper.selectOne(Wrappers.<OnsiteApprovalTask>lambdaQuery()
+                        .eq(OnsiteApprovalTask::getOnsiteTaskId, planApprovalTaskReq.getTaskId())
+                        .eq(OnsiteApprovalTask::getApprovalUserId, planApprovalTaskReq.getUserId()).last("limit 1"));
+                int userLevel = onsiteApprovalTask.getApprovalLevel();
+                if (userLevel < approvalRuleMaxLevel.getApprovalLevel()) {
+                    ApprovalUserRes approvalUserRes = preventMistakeService.getApprovalUserInfo(userLevel + 1, APPROVAL_TYPE_PM);
+                    onsiteApprovalTaskMapper.insert(OnsiteApprovalTask.builder()
+                            .onsiteTaskId(onsiteApprovalTask.getOnsiteTaskId())
+                            .approvalLevel(approvalUserRes.getApprovalLevel())
+                            .approvalUserId(approvalUserRes.getUserId())
+                            .status(0)
+                            .build());
+                }
+            }
+            //审批通过
+            if (planApprovalTaskReq.getStatus() == 1) {
+                //审批通过,保存审批历史
+                preventMistakeService.getApprovalUserInfo(1, APPROVAL_TYPE_PM);
+            }
+        }
+
+        return ResponseBeanBuilder.ok();
+    }
+
+}

+ 148 - 0
application-facade/src/main/java/com/factory/wx/service/impl/PlanReminderServiceImpl.java

@@ -0,0 +1,148 @@
+package com.factory.wx.service.impl;
+
+import cn.hutool.core.collection.CollUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.factory.base.entity.aggregates.PageBean;
+import com.factory.base.entity.po.benteler.BentelerPlan;
+import com.factory.base.entity.po.remote.UserInfo;
+import com.factory.user.mapper.UserInfoMapper;
+import com.factory.web.entity.pm.*;
+import com.factory.web.mapper.BentelerPlanMapper;
+import com.factory.web.mapper.pm.*;
+import com.factory.web.service.pm.PreventMistakeService;
+import com.factory.wx.entity.req.PlanInfoReq;
+import com.factory.wx.entity.req.PlanPageReq;
+import com.factory.wx.entity.res.PlanReminderDetailRes;
+import com.factory.wx.entity.res.ReminderRes;
+import com.factory.wx.mapper.ReminderMapper;
+import com.factory.wx.service.PlanReminderService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * @author sMArT
+ * @version 1.0
+ * @date 2021-07-13 12:42 下午
+ */
+@Service("planReminderService")
+public class PlanReminderServiceImpl implements PlanReminderService {
+
+    private final static Logger LOGGER = LoggerFactory.getLogger(PlanReminderServiceImpl.class);
+    @Autowired
+    private BentelerPlanMapper bentelerPlanMapper;
+    @Autowired
+    private OnsiteCalendarMapper onsiteCalendarMapper;
+    @Autowired
+    private OnsiteWorkshopMapper onsiteWorkshopMapper;
+    @Autowired
+    private OnsiteItemMapper onsiteItemMapper;
+    @Autowired
+    private OnsiteTaskMapper onsiteTaskMapper;
+    @Autowired
+    private RemindApprovalTaskMapper remindApprovalTaskMapper;
+    @Autowired
+    private ReminderMapper reminderMapper;
+    @Autowired
+    private UserInfoMapper userInfoMapper;
+    @Autowired
+    private PreventMistakeService preventMistakeService;
+
+    /**
+     * 获取计划提醒列表
+     *
+     * @param planPageReq
+     * @return
+     */
+    @Override
+    public List<ReminderRes> getReminderList(PlanPageReq planPageReq) {
+        return reminderMapper.getReminderList(planPageReq);
+    }
+
+    /**
+     * 分页获取计划提醒列表
+     *
+     * @param planPageReq
+     * @return
+     */
+    @Override
+    public PageBean<BentelerPlan> getReminderListByPage(PlanPageReq planPageReq) {
+        LambdaQueryWrapper<RemindApprovalTask> remindApprovalTaskWrapper = new LambdaQueryWrapper<>();
+        remindApprovalTaskWrapper.eq(RemindApprovalTask::getApprovalUserId, planPageReq.getUserId());
+
+        List<RemindApprovalTask> remindApprovalTaskList = remindApprovalTaskMapper.selectList(remindApprovalTaskWrapper);
+
+        IPage<BentelerPlan> bentelerPlanIPage = new Page<>();
+        if (CollUtil.isNotEmpty(remindApprovalTaskList)) {
+            List<Long> taskIds = remindApprovalTaskList.stream().map(RemindApprovalTask::getTaskId).collect(Collectors.toList());
+            List<OnsiteTask> onsiteTaskList = onsiteTaskMapper.selectBatchIds(taskIds);
+            List<Long> calendarIds = onsiteTaskList.stream().map(OnsiteTask::getOnsiteCalendarId).collect(Collectors.toList());
+            List<OnsiteCalendar> onsiteCalendarList = onsiteCalendarMapper.selectBatchIds(calendarIds);
+            List<Long> planIds = onsiteCalendarList.stream().map(OnsiteCalendar::getBentelerPlanId).collect(Collectors.toList());
+
+            IPage<BentelerPlan> page = new Page<>(planPageReq.getPage(), planPageReq.getSize());
+            LambdaQueryWrapper<BentelerPlan> wrapper = new LambdaQueryWrapper<>();
+            wrapper.in(BentelerPlan::getId, planIds);
+
+            bentelerPlanIPage = bentelerPlanMapper.selectPage(page, wrapper);
+        }
+
+        return PageBean.<BentelerPlan>builder()
+                .row(bentelerPlanIPage.getRecords())
+                .total(bentelerPlanIPage.getTotal())
+                .page(bentelerPlanIPage.getPages())
+                .build();
+
+    }
+
+    /**
+     * 提醒详情
+     *
+     * @param planInfoReq
+     * @return
+     */
+    @Override
+    public PlanReminderDetailRes getReminderDetail(PlanInfoReq planInfoReq) {
+        BentelerPlan bentelerPlan = bentelerPlanMapper.selectById(planInfoReq.getPlanId());
+        List<OnsiteCalendar> onsiteCalendarList = onsiteCalendarMapper.selectList(Wrappers.<OnsiteCalendar>lambdaQuery()
+                .eq(OnsiteCalendar::getBentelerPlanId, planInfoReq.getPlanId()));
+
+        List<String> usersName = new ArrayList<>();
+        onsiteCalendarList.forEach(onsiteCalendar -> {
+            UserInfo userInfo = userInfoMapper.selectById(onsiteCalendar.getUserId());
+            usersName.add(userInfo.getName());
+        });
+
+        //获取title
+        OnsiteTitle title = preventMistakeService.getTitle(planInfoReq.getPlanId());
+
+        List<OnsiteWorkshop> onsiteWorkshopList = onsiteWorkshopMapper.selectList(Wrappers.<OnsiteWorkshop>lambdaQuery()
+                .eq(OnsiteWorkshop::getBentelerPlanId, planInfoReq.getPlanId()));
+        onsiteWorkshopList.forEach(onsiteWorkshop -> {
+            onsiteWorkshop.setOnsiteItemList(onsiteItemMapper.selectList(Wrappers.<OnsiteItem>lambdaQuery()
+                    .eq(OnsiteItem::getWorkshopId, onsiteWorkshop.getId())));
+        });
+        return PlanReminderDetailRes.builder()
+                .planId(bentelerPlan.getId())
+                .usersName(usersName)
+                .effectiveDate(bentelerPlan.getEffectiveDate())
+                .titleInfo(title)
+                .onsiteCalendars(onsiteCalendarList)
+                .onsiteWorkshops(onsiteWorkshopList)
+                .build();
+    }
+
+    @Override
+    public void confirmReminder(PlanInfoReq planInfoReq) {
+        reminderMapper.confirmReminder(planInfoReq);
+    }
+
+}

+ 0 - 369
application-facade/src/main/java/com/factory/wx/service/impl/PlanServiceImpl.java

@@ -1,369 +0,0 @@
-package com.factory.wx.service.impl;
-
-import cn.hutool.core.collection.CollUtil;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.factory.base.entity.aggregates.PageBean;
-import com.factory.base.entity.aggregates.ResponseBean;
-import com.factory.base.entity.po.benteler.BentelerPlan;
-import com.factory.base.entity.po.remote.UserInfo;
-import com.factory.base.util.res.ResponseBeanBuilder;
-import com.factory.user.mapper.UserInfoMapper;
-import com.factory.web.entity.pm.*;
-import com.factory.web.entity.pm.res.ApprovalUserRes;
-import com.factory.web.mapper.BentelerPlanMapper;
-import com.factory.web.mapper.pm.*;
-import com.factory.web.service.pm.PreventMistakeService;
-import com.factory.wx.entity.req.*;
-import com.factory.wx.entity.res.PlanApprovalDetailRes;
-import com.factory.wx.entity.res.PlanApprovalRes;
-import com.factory.wx.entity.res.PlanApprovalTaskRes;
-import com.factory.wx.entity.res.PlanPassDetailRes;
-import com.factory.wx.mapper.PlanMapper;
-import com.factory.wx.service.PlanService;
-import org.apache.commons.lang3.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.stream.Collectors;
-
-/**
- * @author sMArT
- * @version 1.0
- * @date 2021-07-13 12:42 下午
- */
-@Service("planService")
-public class PlanServiceImpl implements PlanService {
-
-    private final static Logger LOGGER = LoggerFactory.getLogger(PlanServiceImpl.class);
-    /**
-     * 审批规则类型为:1新建计划审批
-     */
-    private static int APPROVAL_TYPE_NEW = 1;
-    /**
-     * 审批规则类型为:3防错
-     */
-    private static int APPROVAL_TYPE_PM = 3;
-    @Autowired
-    private PlanMapper planMapper;
-    @Autowired
-    private BentelerPlanMapper bentelerPlanMapper;
-    @Autowired
-    private OnsiteCalendarMapper onsiteCalendarMapper;
-    @Autowired
-    private OnsiteWorkshopMapper onsiteWorkshopMapper;
-    @Autowired
-    private OnsiteItemMapper onsiteItemMapper;
-    @Autowired
-    private OnsiteApprovalPlanMapper onsiteApprovalPlanMapper;
-    @Autowired
-    private ApprovalRuleMapper approvalRuleMapper;
-    @Autowired
-    private UserInfoMapper userInfoMapper;
-    @Autowired
-    private PreventMistakeService preventMistakeService;
-
-    @Autowired
-    private OnsiteApprovalTaskMapper onsiteApprovalTaskMapper;
-    @Autowired
-    private OnsiteTaskMapper onsiteTaskMapper;
-    @Autowired
-    private RemindApprovalTaskMapper remindApprovalTaskMapper;
-
-    private static IPage<BentelerPlan> getBentelerPlanIPage(PassListReq passListReq, List<OnsiteCalendar> onsiteCalendarList, BentelerPlanMapper bentelerPlanMapper) {
-        IPage<BentelerPlan> bentelerPlanIPage;
-        List<Long> planIds = onsiteCalendarList.stream().map(OnsiteCalendar::getBentelerPlanId).collect(Collectors.toList());
-
-        LambdaQueryWrapper<BentelerPlan> wrapper = new LambdaQueryWrapper<>();
-        wrapper.in(BentelerPlan::getId, planIds);
-        wrapper.eq(BentelerPlan::getPlanType, passListReq.getCheckType());
-
-        if (StringUtils.isNotEmpty(passListReq.getName())) {
-            wrapper.like(BentelerPlan::getName, passListReq.getName());
-        }
-        IPage<BentelerPlan> page = new Page<>(passListReq.getPage(), passListReq.getSize());
-        bentelerPlanIPage = bentelerPlanMapper.selectPage(page, wrapper);
-        return bentelerPlanIPage;
-    }
-
-    /**
-     * 获取计划审批列表
-     *
-     * @param userId
-     * @return
-     */
-    @Override
-    public List<PlanApprovalRes> getApprovalList(Long userId) {
-        return planMapper.getApprovalList(userId);
-    }
-
-    /**
-     * 分页显示计划列表
-     *
-     * @param planListReq
-     * @return
-     */
-    @Override
-    public PageBean<BentelerPlan> getApprovalListByPage(PlanListReq planListReq) {
-
-        LambdaQueryWrapper<OnsiteApprovalPlan> approvalPlanWrapper = new LambdaQueryWrapper<>();
-        approvalPlanWrapper.eq(OnsiteApprovalPlan::getApprovalUserId, planListReq.getUserId());
-        approvalPlanWrapper.eq(OnsiteApprovalPlan::getStatus, 0);//获取未处理过的计划
-        List<OnsiteApprovalPlan> onsiteApprovalPlanList = onsiteApprovalPlanMapper.selectList(approvalPlanWrapper);
-
-        IPage<BentelerPlan> bentelerPlanIPage = new Page<>();
-        if (CollUtil.isNotEmpty(onsiteApprovalPlanList)) {
-            LambdaQueryWrapper<BentelerPlan> wrapper = new LambdaQueryWrapper<>();
-            List<Long> planIds = onsiteApprovalPlanList.stream().map(OnsiteApprovalPlan::getBentelerPlanId).collect(Collectors.toList());
-            wrapper.in(BentelerPlan::getId, planIds);
-
-            if (StringUtils.isNotEmpty(planListReq.getName())) {
-                wrapper.like(BentelerPlan::getName, planListReq.getName());
-            }
-            IPage<BentelerPlan> page = new Page<>(planListReq.getPage(), planListReq.getSize());
-            bentelerPlanIPage = bentelerPlanMapper.selectPage(page, wrapper);
-        }
-
-        return PageBean.<BentelerPlan>builder().row(bentelerPlanIPage.getRecords()).total(bentelerPlanIPage.getTotal()).page(bentelerPlanIPage.getPages()).build();
-    }
-
-    /**
-     * 获取审批计划详情-防错
-     *
-     * @param planInfoReq
-     * @return
-     */
-    @Override
-    public PlanApprovalDetailRes getApprovalDetail(PlanInfoReq planInfoReq) {
-        BentelerPlan bentelerPlan = bentelerPlanMapper.selectById(planInfoReq.getPlanId());
-        List<OnsiteCalendar> onsiteCalendarList = onsiteCalendarMapper.selectList(Wrappers.<OnsiteCalendar>lambdaQuery()
-                .eq(OnsiteCalendar::getBentelerPlanId, planInfoReq.getPlanId()));
-
-        List<String> usersName = new ArrayList<>();
-        onsiteCalendarList.forEach(onsiteCalendar -> {
-            UserInfo userInfo = userInfoMapper.selectById(onsiteCalendar.getUserId());
-            usersName.add(userInfo.getName());
-        });
-
-        //获取title
-        OnsiteTitle title = preventMistakeService.getTitle(planInfoReq.getPlanId());
-
-        List<OnsiteWorkshop> onsiteWorkshopList = onsiteWorkshopMapper.selectList(Wrappers.<OnsiteWorkshop>lambdaQuery()
-                .eq(OnsiteWorkshop::getBentelerPlanId, planInfoReq.getPlanId()));
-        onsiteWorkshopList.forEach(onsiteWorkshop -> {
-            onsiteWorkshop.setOnsiteItemList(onsiteItemMapper.selectList(Wrappers.<OnsiteItem>lambdaQuery()
-                    .eq(OnsiteItem::getWorkshopId, onsiteWorkshop.getId())));
-        });
-
-        PlanApprovalDetailRes planApprovalDetailRes = PlanApprovalDetailRes.builder()
-                .planId(bentelerPlan.getId())
-                .planName(bentelerPlan.getName())
-                .effectiveDate(bentelerPlan.getEffectiveDate())
-                .usersName(usersName)
-                .titleInfo(title)
-                .onsiteCalendars(onsiteCalendarList)
-                .onsiteWorkshops(onsiteWorkshopList)
-                .build();
-        return planApprovalDetailRes;
-    }
-
-    /**
-     * 计划审批
-     *
-     * @param planApprovalReq
-     * @return
-     */
-    @Override
-    public ResponseBean approvalOperate(PlanApprovalReq planApprovalReq) {
-
-        OnsiteApprovalPlan onsiteApprovalPlan = new OnsiteApprovalPlan();
-        onsiteApprovalPlan.setStatus(planApprovalReq.getStatus());
-        int updateStatus = onsiteApprovalPlanMapper.update(onsiteApprovalPlan, Wrappers.<OnsiteApprovalPlan>lambdaQuery()
-                .eq(OnsiteApprovalPlan::getBentelerPlanId, planApprovalReq.getPlanId())
-                .eq(OnsiteApprovalPlan::getApprovalUserId, planApprovalReq.getUserId()));
-        if (updateStatus > 0) {
-            //审批通过触发下一级别
-            if (planApprovalReq.getStatus() == 1) {
-                ApprovalRule approvalRuleMaxLevel = approvalRuleMapper.selectOne(Wrappers.<ApprovalRule>lambdaQuery()
-                        .eq(ApprovalRule::getType, APPROVAL_TYPE_NEW)
-                        .orderByDesc(ApprovalRule::getApprovalLevel)
-                        .last("limit 1"));
-                //获取当前审批级别
-                OnsiteApprovalPlan userApprovalInfo = onsiteApprovalPlanMapper.selectOne(Wrappers.<OnsiteApprovalPlan>lambdaQuery()
-                        .eq(OnsiteApprovalPlan::getBentelerPlanId, planApprovalReq.getPlanId())
-                        .eq(OnsiteApprovalPlan::getApprovalUserId, planApprovalReq.getUserId()).last("limit 1"));
-                int userLevel = userApprovalInfo.getApprovalLevel();
-                if (userLevel < approvalRuleMaxLevel.getApprovalLevel()) {
-                    ApprovalUserRes approvalUserRes = preventMistakeService.getApprovalUserInfo(userLevel + 1, APPROVAL_TYPE_NEW);
-                    onsiteApprovalPlanMapper.insert(OnsiteApprovalPlan.builder()
-                            .bentelerPlanId(planApprovalReq.getPlanId())
-                            .approvalLevel(approvalUserRes.getApprovalLevel())
-                            .approvalUserId(approvalUserRes.getUserId())
-                            .status(0)
-                            .build());
-                }
-            }
-            //审批不通过
-            if (planApprovalReq.getStatus() == 2) {
-                //审批不通过,保存审批历史
-//                preventMistakeService.setOnsitePlanHis(planApprovalReq.getPlanId());
-                preventMistakeService.getApprovalUserInfo(1, APPROVAL_TYPE_NEW);
-            }
-        }
-        return ResponseBeanBuilder.ok();
-    }
-
-    /**
-     * 计划放行列表
-     *
-     * @param passListReq
-     * @return
-     */
-    @Override
-    public PageBean<BentelerPlan> getPassListByPage(PassListReq passListReq) {
-
-        LambdaQueryWrapper<OnsiteApprovalTask> approvalTaskWrapper = new LambdaQueryWrapper<>();
-        approvalTaskWrapper.eq(OnsiteApprovalTask::getApprovalUserId, passListReq.getUserId());
-        approvalTaskWrapper.eq(OnsiteApprovalTask::getStatus, 0);//获取未处理过的计划
-
-        List<OnsiteApprovalTask> onsiteApprovalTaskList = onsiteApprovalTaskMapper.selectList(approvalTaskWrapper);
-        IPage<BentelerPlan> bentelerPlanIPage = new Page<>();
-        if (CollUtil.isNotEmpty(onsiteApprovalTaskList)) {
-            List<Long> taskIds = onsiteApprovalTaskList.stream().map(OnsiteApprovalTask::getOnsiteTaskId).collect(Collectors.toList());
-            List<OnsiteTask> onsiteTaskList = onsiteTaskMapper.selectBatchIds(taskIds);
-            if (CollUtil.isNotEmpty(onsiteTaskList)) {
-                List<Long> calendarIds = onsiteTaskList.stream().map(OnsiteTask::getOnsiteCalendarId).collect(Collectors.toList());
-                List<OnsiteCalendar> onsiteCalendarList = onsiteCalendarMapper.selectBatchIds(calendarIds);
-                if (CollUtil.isNotEmpty(onsiteCalendarList)) {
-                    bentelerPlanIPage = getBentelerPlanIPage(passListReq, onsiteCalendarList, bentelerPlanMapper);
-                }
-            }
-        }
-        return PageBean.<BentelerPlan>builder().row(bentelerPlanIPage.getRecords()).total(bentelerPlanIPage.getTotal()).page(bentelerPlanIPage.getPages()).build();
-    }
-
-    /**
-     * 计划放行详情
-     *
-     * @param planInfoReq
-     * @return
-     */
-    @Override
-    public PlanPassDetailRes getPassDetail(PlanInfoReq planInfoReq) {
-        BentelerPlan bentelerPlan = bentelerPlanMapper.selectById(planInfoReq.getPlanId());
-        List<OnsiteCalendar> onsiteCalendarList = onsiteCalendarMapper.selectList(Wrappers.<OnsiteCalendar>lambdaQuery()
-                .eq(OnsiteCalendar::getBentelerPlanId, planInfoReq.getPlanId()));
-
-        List<String> usersName = new ArrayList<>();
-        onsiteCalendarList.forEach(onsiteCalendar -> {
-            UserInfo userInfo = userInfoMapper.selectById(onsiteCalendar.getUserId());
-            usersName.add(userInfo.getName());
-        });
-
-        //获取title
-        OnsiteTitle title = preventMistakeService.getTitle(planInfoReq.getPlanId());
-        List<PlanApprovalTaskRes> planApprovalTaskResList = planMapper.getApprovalTaskList(planInfoReq.getUserId());
-
-        PlanPassDetailRes planPassDetailRes = PlanPassDetailRes.builder()
-                .planId(bentelerPlan.getId())
-                .planName(bentelerPlan.getName())
-                .effectiveDate(bentelerPlan.getEffectiveDate())
-                .usersName(usersName)
-                .titleInfo(title)
-                .onsiteCalendars(onsiteCalendarList)
-                .planApprovalTasks(planApprovalTaskResList)
-                .build();
-        return planPassDetailRes;
-    }
-
-    /**
-     * 计划放行
-     *
-     * @param planApprovalTaskReq
-     * @return
-     */
-    @Override
-    public ResponseBean approvalTaskOperate(PlanApprovalTaskReq planApprovalTaskReq) {
-
-        OnsiteApprovalTask ot = new OnsiteApprovalTask();
-        ot.setOnsiteTaskId(planApprovalTaskReq.getTaskId());
-        ot.setReason(planApprovalTaskReq.getReason());
-        ot.setStatus(planApprovalTaskReq.getStatus());
-        int updateStatus = onsiteApprovalTaskMapper.update(ot, Wrappers.<OnsiteApprovalTask>lambdaQuery()
-                .eq(OnsiteApprovalTask::getOnsiteTaskId, planApprovalTaskReq.getTaskId())
-                .eq(OnsiteApprovalTask::getApprovalUserId, planApprovalTaskReq.getUserId()));
-        if (updateStatus > 0) {
-            //审批不通过触发下一级别
-            if (planApprovalTaskReq.getStatus() == 2) {
-                ApprovalRule approvalRuleMaxLevel = approvalRuleMapper.selectOne(Wrappers.<ApprovalRule>lambdaQuery()
-                        .eq(ApprovalRule::getType, APPROVAL_TYPE_PM)
-                        .orderByDesc(ApprovalRule::getApprovalLevel)
-                        .last("limit 1"));
-                //获取当前审批级别
-                OnsiteApprovalTask onsiteApprovalTask = onsiteApprovalTaskMapper.selectOne(Wrappers.<OnsiteApprovalTask>lambdaQuery()
-                        .eq(OnsiteApprovalTask::getOnsiteTaskId, planApprovalTaskReq.getTaskId())
-                        .eq(OnsiteApprovalTask::getApprovalUserId, planApprovalTaskReq.getUserId()).last("limit 1"));
-                int userLevel = onsiteApprovalTask.getApprovalLevel();
-                if (userLevel < approvalRuleMaxLevel.getApprovalLevel()) {
-                    ApprovalUserRes approvalUserRes = preventMistakeService.getApprovalUserInfo(userLevel + 1, APPROVAL_TYPE_PM);
-                    onsiteApprovalTaskMapper.insert(OnsiteApprovalTask.builder()
-                            .onsiteTaskId(onsiteApprovalTask.getOnsiteTaskId())
-                            .approvalLevel(approvalUserRes.getApprovalLevel())
-                            .approvalUserId(approvalUserRes.getUserId())
-                            .status(0)
-                            .build());
-                }
-            }
-            //审批通过
-            if (planApprovalTaskReq.getStatus() == 1) {
-                //审批通过,保存审批历史
-                preventMistakeService.getApprovalUserInfo(1, APPROVAL_TYPE_PM);
-            }
-        }
-
-        return ResponseBeanBuilder.ok();
-    }
-
-    /**
-     * 获取计划提醒列表
-     *
-     * @param reminderReq
-     * @return
-     */
-    @Override
-    public PageBean<BentelerPlan> getReminderListByPage(ReminderReq reminderReq) {
-        LambdaQueryWrapper<RemindApprovalTask> remindApprovalTaskWrapper = new LambdaQueryWrapper<>();
-        remindApprovalTaskWrapper.eq(RemindApprovalTask::getApprovalUserId, reminderReq.getUserId());
-
-        List<RemindApprovalTask> remindApprovalTaskList = remindApprovalTaskMapper.selectList(remindApprovalTaskWrapper);
-
-        IPage<BentelerPlan> bentelerPlanIPage = new Page<>();
-        if (CollUtil.isNotEmpty(remindApprovalTaskList)) {
-            List<Long> taskIds = remindApprovalTaskList.stream().map(RemindApprovalTask::getTaskId).collect(Collectors.toList());
-            List<OnsiteTask> onsiteTaskList = onsiteTaskMapper.selectBatchIds(taskIds);
-            List<Long> calendarIds = onsiteTaskList.stream().map(OnsiteTask::getOnsiteCalendarId).collect(Collectors.toList());
-            List<OnsiteCalendar> onsiteCalendarList = onsiteCalendarMapper.selectBatchIds(calendarIds);
-            List<Long> planIds = onsiteCalendarList.stream().map(OnsiteCalendar::getBentelerPlanId).collect(Collectors.toList());
-
-            IPage<BentelerPlan> page = new Page<>(reminderReq.getPage(), reminderReq.getSize());
-            LambdaQueryWrapper<BentelerPlan> wrapper = new LambdaQueryWrapper<>();
-            wrapper.in(BentelerPlan::getId, planIds);
-
-            bentelerPlanIPage = bentelerPlanMapper.selectPage(page, wrapper);
-        }
-
-        return PageBean.<BentelerPlan>builder()
-                .row(bentelerPlanIPage.getRecords())
-                .total(bentelerPlanIPage.getTotal())
-                .page(bentelerPlanIPage.getPages())
-                .build();
-
-    }
-
-}

+ 82 - 0
application-facade/src/main/resources/mapper/AbnormalStatisticsMapper.xml

@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.factory.wx.mapper.AbnormalStatisticsMapper">
+    <!-- 获取放行异常计划列表 -->
+    <select id="getReleasedAbnormalPlans" parameterType="com.factory.wx.entity.req.AbnormalPlanReq"
+            resultType="com.factory.wx.entity.res.AbnormalPlanRes">
+        SELECT DISTINCT
+            bp.id AS plan_id,
+            bp.`name` AS plan_name,
+            bp.plan_type
+        FROM
+            onsite_task ot,
+            onsite_calendar oc,
+            benteler_plan bp
+        WHERE
+            ot.onsite_calendar_id = oc.id
+            AND oc.benteler_plan_id = bp.id
+            AND ot.`status` = 2
+            <if test="name != ''">
+                AND bp.`name` LIKE CONCAT('%',#{name},'%')
+            </if>
+            AND ot.task_time LIKE CONCAT(#{month},'%')
+        UNION
+        SELECT DISTINCT
+            bp.id AS plan_id,
+            bp.`name` AS plan_name,
+            bp.plan_type
+        FROM
+            first_article_task ot,
+            first_article_calendar oc,
+            benteler_plan bp
+        WHERE
+            ot.first_article_calendar_id = oc.id
+            AND oc.benteler_plan_id = bp.id
+            AND ot.`status` = 2
+            <if test="name != ''">
+                AND bp.`name` LIKE CONCAT('%',#{name},'%')
+            </if>
+            AND ot.task_time LIKE CONCAT(#{month},'%');
+    </select>
+    <!-- 获取重检异常计划列表 -->
+    <select id="getRecheckedAbnormalPlans" parameterType="com.factory.wx.entity.req.AbnormalPlanReq"
+            resultType="com.factory.wx.entity.res.AbnormalPlanRes">
+        SELECT DISTINCT
+            bp.id,
+            bp.`name`,
+            bp.plan_type
+        FROM
+            onsite_task_his_blob othb,
+            onsite_task ot,
+            onsite_calendar oc,
+            benteler_plan bp
+        WHERE
+            othb.onsite_task_id = ot.id
+          AND ot.onsite_calendar_id = oc.id
+          AND oc.benteler_plan_id = bp.id
+        <if test="name != ''">
+            AND bp.`name` LIKE CONCAT('%',#{name},'%')
+        </if>
+        AND ot.task_time LIKE CONCAT(#{month},'%');
+        UNION
+        SELECT DISTINCT
+            bp.id,
+            bp.`name`,
+            bp.plan_type
+        FROM
+            first_article_task_his_blob othb,
+            first_article_task ot,
+            first_article_calendar oc,
+            benteler_plan bp
+        WHERE
+            othb.first_article_task_id = ot.id
+          AND ot.first_article_calendar_id = oc.id
+          AND oc.benteler_plan_id = bp.id
+        <if test="name != ''">
+            AND bp.`name` LIKE CONCAT('%',#{name},'%')
+        </if>
+        AND ot.task_time LIKE CONCAT(#{month},'%');
+    </select>
+
+</mapper>

+ 2 - 2
application-facade/src/main/resources/mapper/PlanMapper.xml

@@ -14,7 +14,7 @@
           AND p.pause_flag = 0
           AND p.deleted = 0
           AND ap.status = 0
-          AND ap.approval_user_id = ${userId}
+          AND ap.approval_user_id = #{userId}
     </select>
     <!--    <select id="getApprovalList" resultType="com.factory.wx.entity.res.PlanApprovalRes">-->
     <!--		SELECT-->
@@ -58,7 +58,7 @@
           AND oir.onsite_task_id = ot.id
           AND ot.onsite_calendar_id = oc.id
           AND ot.id = oat.onsite_task_id
-          AND oat.approval_user_id = ${userId}
+          AND oat.approval_user_id = #{userId}
           AND oir.result = 1
 --         SELECT
 --             oat.onsite_task_id,

+ 42 - 0
application-facade/src/main/resources/mapper/ReminderMapper.xml

@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.factory.wx.mapper.ReminderMapper">
+    <!-- 获取用户待审批计划列表 -->
+    <select id="getReminderList" parameterType="com.factory.wx.entity.req.PlanPageReq"
+            resultType="com.factory.wx.entity.res.ReminderRes">
+        SELECT DISTINCT
+            bp.id        AS plan_id,
+            bp.`name`    AS name,
+            bp.plan_type AS plan_type,
+            rat.`status` AS status
+        FROM remind_approval_task rat,
+             onsite_task ot,
+             onsite_calendar oc,
+             benteler_plan bp
+        WHERE rat.task_id = ot.id
+          AND ot.onsite_calendar_id = oc.id
+          AND oc.benteler_plan_id = bp.id
+          AND rat.approval_user_id = #{userId}
+        <if test="name != ''">
+            AND bp.`name` LIKE  CONCAT('%',#{name},'%')
+        </if>
+    </select>
+    <update id="confirmReminder" parameterType="com.factory.wx.entity.req.PlanInfoReq">
+        UPDATE remind_approval_task rat
+        SET rat.`status` = 1
+        WHERE
+                rat.task_id IN (
+                SELECT
+                    ot.id
+                FROM
+                    onsite_calendar oc,
+                    onsite_task ot
+                WHERE
+                    ot.onsite_calendar_id = oc.id
+                  AND oc.benteler_plan_id = #{planId}
+            )
+          AND rat.approval_user_id = #{userId}
+    </update>
+
+</mapper>

+ 2 - 0
common-user/src/main/java/com/factory/user/mapper/UserInfoMapper.java

@@ -3,7 +3,9 @@ package com.factory.user.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.factory.base.entity.po.remote.UserInfo;
+import org.apache.ibatis.annotations.Mapper;
 
+@Mapper
 public interface UserInfoMapper extends BaseMapper<UserInfo> {
 
 

+ 7 - 5
common-user/src/main/java/com/factory/user/service/impl/AuthServiceImpl.java

@@ -2,19 +2,21 @@ package com.factory.user.service.impl;
 
 import cn.hutool.core.collection.CollUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.factory.user.service.AuthService;
-import com.factory.user.mapper.PermissionsMapper;
-import com.factory.user.mapper.RolePermissionsMapper;
-import com.factory.user.mapper.UserRolesMapper;
-import com.factory.user.entity.po.token.TokenVal;
 import com.factory.base.entity.aggregates.ResponseBean;
 import com.factory.base.entity.aggregates.ResponseEnum;
 import com.factory.base.entity.constant.RemoteCommonConstants;
 import com.factory.base.entity.constant.RemoteRedisConstants;
+import com.factory.base.entity.po.remote.Module;
 import com.factory.base.entity.po.remote.Permission;
 import com.factory.base.entity.po.remote.RolePermission;
 import com.factory.base.entity.po.remote.UserRole;
 import com.factory.base.util.res.ResponseBeanBuilder;
+import com.factory.user.entity.po.token.TokenVal;
+import com.factory.user.mapper.ModuleMapper;
+import com.factory.user.mapper.PermissionsMapper;
+import com.factory.user.mapper.RolePermissionsMapper;
+import com.factory.user.mapper.UserRolesMapper;
+import com.factory.user.service.AuthService;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.RedisTemplate;