瀏覽代碼

小程序相关接口

孙伟 3 年之前
父節點
當前提交
993c73a5e9
共有 28 個文件被更改,包括 1056 次插入6 次删除
  1. 97 0
      application-facade/src/main/java/com/factory/controller/wx/PlanController.java
  2. 32 0
      application-facade/src/main/java/com/factory/controller/wx/StatisticsController.java
  3. 38 0
      application-facade/src/main/java/com/factory/controller/wx/WxController.java
  4. 34 0
      application-facade/src/main/java/com/factory/web/entity/pm/ApprovalRule.java
  5. 2 2
      application-facade/src/main/java/com/factory/web/entity/pm/OnsiteTask.java
  6. 14 0
      application-facade/src/main/java/com/factory/web/mapper/pm/ApprovalRuleMapper.java
  7. 33 0
      application-facade/src/main/java/com/factory/wx/entity/req/PassListReq.java
  8. 31 0
      application-facade/src/main/java/com/factory/wx/entity/req/PlanApprovalReq.java
  9. 24 0
      application-facade/src/main/java/com/factory/wx/entity/req/PlanInfoReq.java
  10. 31 0
      application-facade/src/main/java/com/factory/wx/entity/req/PlanListReq.java
  11. 31 0
      application-facade/src/main/java/com/factory/wx/entity/res/FunctionsRes.java
  12. 46 0
      application-facade/src/main/java/com/factory/wx/entity/res/PlanApprovalDetailRes.java
  13. 27 0
      application-facade/src/main/java/com/factory/wx/entity/res/PlanApprovalRes.java
  14. 38 0
      application-facade/src/main/java/com/factory/wx/entity/res/PlanPassDetailRes.java
  15. 27 0
      application-facade/src/main/java/com/factory/wx/entity/res/PlanPassRes.java
  16. 16 0
      application-facade/src/main/java/com/factory/wx/mapper/PlanMapper.java
  17. 16 0
      application-facade/src/main/java/com/factory/wx/mapper/WxMapper.java
  18. 69 0
      application-facade/src/main/java/com/factory/wx/service/PlanService.java
  19. 17 0
      application-facade/src/main/java/com/factory/wx/service/WxService.java
  20. 278 0
      application-facade/src/main/java/com/factory/wx/service/impl/PlanServiceImpl.java
  21. 41 0
      application-facade/src/main/java/com/factory/wx/service/impl/WxServiceImpl.java
  22. 1 1
      application-facade/src/main/resources/application-test.yml
  23. 1 1
      application-facade/src/main/resources/application.yml
  24. 39 0
      application-facade/src/main/resources/mapper/PlanMapper.xml
  25. 29 0
      application-facade/src/main/resources/mapper/WxMapper.xml
  26. 2 0
      common-base/src/main/java/com/factory/base/entity/po/remote/Module.java
  27. 36 0
      common-user/src/main/java/com/factory/user/controller/RoleController.java
  28. 6 2
      common-user/src/main/java/com/factory/user/mapper/ModuleMapper.java

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

@@ -0,0 +1,97 @@
+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.web.entity.vo.res.pad.ini.planlistRes;
+import com.factory.wx.entity.req.PassListReq;
+import com.factory.wx.entity.req.PlanApprovalReq;
+import com.factory.wx.entity.req.PlanInfoReq;
+import com.factory.wx.entity.req.PlanListReq;
+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("/reminder/list")
+    public ResponseBean<planlistRes> reminder() {
+
+        return ResponseBeanBuilder.ok();
+    }
+}

+ 32 - 0
application-facade/src/main/java/com/factory/controller/wx/StatisticsController.java

@@ -0,0 +1,32 @@
+package com.factory.controller.wx;
+
+import com.factory.base.entity.aggregates.ResponseBean;
+import com.factory.base.util.res.ResponseBeanBuilder;
+import com.factory.web.entity.vo.res.pad.ini.planlistRes;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 微信小程序端异常统计
+ *
+ * @author sMArT
+ * @version 1.0
+ * @date 2021-07-05 3:55 下午
+ */
+@Api(tags = "微信小程序端")
+@RestController
+@RequestMapping("/wx/statistics")
+@Slf4j
+public class StatisticsController {
+
+    @ApiOperation(value = "异常统计")
+    @PostMapping("/abnormal")
+    public ResponseBean<planlistRes> approval() {
+
+        return ResponseBeanBuilder.ok();
+    }
+}

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

@@ -0,0 +1,38 @@
+package com.factory.controller.wx;
+
+import com.factory.base.entity.aggregates.ResponseBean;
+import com.factory.wx.entity.res.FunctionsRes;
+import com.factory.wx.service.WxService;
+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.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+
+/**
+ * 小程序功能显示
+ *
+ * @author sMArT
+ * @version 1.0
+ * @date 2021-07-11 2:35 下午
+ */
+@Api(tags = "微信小程序端")
+@RestController
+@RequestMapping("/wx")
+@Slf4j
+public class WxController {
+    @Autowired
+    private WxService wxService;
+
+    @ApiOperation(value = "用户功能列表")
+    @GetMapping("/functions/list")
+    public ResponseBean<List<FunctionsRes>> getUserFunctions(HttpServletRequest request) {
+        Long userId = (Long) request.getAttribute("LOGIN_USER_ID");//获取用户id
+        return wxService.getUserFunction(userId);
+    }
+}

+ 34 - 0
application-facade/src/main/java/com/factory/web/entity/pm/ApprovalRule.java

@@ -0,0 +1,34 @@
+package com.factory.web.entity.pm;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+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 4:50 下午
+ */
+@Data
+@TableName("approval_rule")
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class ApprovalRule {
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "计划审批规则id")
+    private Long id;
+    @ApiModelProperty(value = "审批级别")
+    private int approvalLevel;
+    @ApiModelProperty(value = "角色id")
+    private Long roleId;
+    @ApiModelProperty(value = "审批类型 1新建计划审批  2首件审批  3防错审批")
+    private int type;
+}

+ 2 - 2
application-facade/src/main/java/com/factory/web/entity/pm/OnsiteTask.java

@@ -41,8 +41,8 @@ public class OnsiteTask implements Serializable {
 
 	@ApiModelProperty(value = "是否发送了任务提醒给操作者 0没提醒 1已提醒")
 	private Integer remindTaskFlag;
-	
+
 	@ApiModelProperty(value = "没工作提醒是不是已经完成 0没提醒 1已提醒")
-	private Integer remindNoworkFalg;
+	private Integer remindNoworkFlag;
 
 }

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

@@ -0,0 +1,14 @@
+package com.factory.web.mapper.pm;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.factory.web.entity.pm.ApprovalRule;
+
+/**
+ * 审批规则
+ *
+ * @author sMArT
+ * @version 1.0
+ * @date 2021-07-15 4:56 下午
+ */
+public interface ApprovalRuleMapper extends BaseMapper<ApprovalRule> {
+}

+ 33 - 0
application-facade/src/main/java/com/factory/wx/entity/req/PassListReq.java

@@ -0,0 +1,33 @@
+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 12:33 上午
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class PassListReq {
+    @ApiModelProperty(value = "用户id")
+    private Long userId;
+
+    @ApiModelProperty(value = "计划类型首件、防错")
+    private Long checkType;
+
+    @ApiModelProperty(value = "计划名称")
+    private String name;
+
+    @ApiModelProperty(value = "计划列表页号")
+    private int page;
+
+    @ApiModelProperty(value = "计划列表每页数量")
+    private int size;
+}

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

@@ -0,0 +1,31 @@
+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:00 上午
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class PlanApprovalReq {
+    @ApiModelProperty(value = "用户id")
+    private Long userId;
+
+    @ApiModelProperty(value = "计划Id")
+    private Long planId;
+    /**
+     * 默认0,通过1,不通过2
+     */
+    @ApiModelProperty(value = "审批状态")
+    private int status;
+}

+ 24 - 0
application-facade/src/main/java/com/factory/wx/entity/req/PlanInfoReq.java

@@ -0,0 +1,24 @@
+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-13 2:28 下午
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class PlanInfoReq {
+    @ApiModelProperty(value = "计划Id")
+    private Long planId;
+
+    @ApiModelProperty(value = "计划类型")
+    private int planType;
+}

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

@@ -0,0 +1,31 @@
+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 1:23 下午
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class PlanListReq {
+
+    @ApiModelProperty(value = "用户id")
+    private Long userId;
+
+    @ApiModelProperty(value = "计划名称")
+    private String name;
+
+    @ApiModelProperty(value = "计划列表页号")
+    private int page;
+
+    @ApiModelProperty(value = "计划列表每页数量")
+    private int size;
+}

+ 31 - 0
application-facade/src/main/java/com/factory/wx/entity/res/FunctionsRes.java

@@ -0,0 +1,31 @@
+package com.factory.wx.entity.res;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import io.swagger.annotations.ApiModel;
+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-12 6:43 下午
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class FunctionsRes {
+
+    @ApiModelProperty(value = "功能点")
+    private String description;
+
+    @ApiModelProperty(value = "功能点名称")
+    private String name;
+
+    @ApiModelProperty(value = "待处理数量")
+    private int count;
+
+}

+ 46 - 0
application-facade/src/main/java/com/factory/wx/entity/res/PlanApprovalDetailRes.java

@@ -0,0 +1,46 @@
+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.Date;
+import java.util.List;
+
+/**
+ * @author sMArT
+ * @version 1.0
+ * @date 2021-07-13 5:17 下午
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class PlanApprovalDetailRes {
+
+    @ApiModelProperty(value = "计划审批id")
+    private Long id;
+    @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;
+    @ApiModelProperty(value = "当前用户审批级别")
+    private String approvalLevel;
+
+}

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

@@ -0,0 +1,27 @@
+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-13 12:17 下午
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class PlanApprovalRes {
+    @ApiModelProperty(value = "计划Id")
+    private Long id;
+
+    @ApiModelProperty(value = "计划名称")
+    private String name;
+
+    @ApiModelProperty(value = "计划类型")
+    private int planType;
+}

+ 38 - 0
application-facade/src/main/java/com/factory/wx/entity/res/PlanPassDetailRes.java

@@ -0,0 +1,38 @@
+package com.factory.wx.entity.res;
+
+import com.factory.web.entity.pm.OnsiteCalendar;
+import com.factory.web.entity.pm.OnsiteTitle;
+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 PlanPassDetailRes {
+    @ApiModelProperty(value = "计划审批id")
+    private Long id;
+    @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;
+}

+ 27 - 0
application-facade/src/main/java/com/factory/wx/entity/res/PlanPassRes.java

@@ -0,0 +1,27 @@
+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-1512:41 上午
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class PlanPassRes {
+    @ApiModelProperty(value = "计划Id")
+    private Long id;
+
+    @ApiModelProperty(value = "计划名称")
+    private String name;
+
+    @ApiModelProperty(value = "计划类型")
+    private int planType;
+}

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

@@ -0,0 +1,16 @@
+package com.factory.wx.mapper;
+
+import com.factory.wx.entity.res.PlanApprovalRes;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * @author sMArT
+ * @version 1.0
+ * @date 2021-07-13 12:43 下午
+ */
+@Mapper
+public interface PlanMapper {
+    List<PlanApprovalRes> getApprovalList(Long userId);
+}

+ 16 - 0
application-facade/src/main/java/com/factory/wx/mapper/WxMapper.java

@@ -0,0 +1,16 @@
+package com.factory.wx.mapper;
+
+import com.factory.wx.entity.res.FunctionsRes;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * @author sMArT
+ * @version 1.0
+ * @date 2021-07-12 6:29 下午
+ */
+@Mapper
+public interface WxMapper {
+    List<FunctionsRes> getUserFunctions(Long userId);
+}

+ 69 - 0
application-facade/src/main/java/com/factory/wx/service/PlanService.java

@@ -0,0 +1,69 @@
+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.PassListReq;
+import com.factory.wx.entity.req.PlanApprovalReq;
+import com.factory.wx.entity.req.PlanInfoReq;
+import com.factory.wx.entity.req.PlanListReq;
+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;
+
+/**
+ * @author sMArT
+ * @version 1.0
+ * @date 2021-07-13 12:13 下午
+ */
+public interface PlanService {
+    /**
+     * 获取审批计划列表
+     *
+     * @param userId
+     * @return
+     */
+    List<PlanApprovalRes> getApprovalList(Long userId);
+
+    /**
+     * 分页显示计划列表
+     *
+     * @param planListReq
+     * @return
+     */
+    PageBean<BentelerPlan> getApprovalListByPage(PlanListReq planListReq);
+
+    /**
+     * 获取审批计划详情
+     *
+     * @param planInfoReq
+     * @return
+     */
+    PlanApprovalDetailRes getApprovalDetail(PlanInfoReq planInfoReq);
+
+    /**
+     * 计划审批
+     *
+     * @param planApprovalReq
+     * @return
+     */
+    ResponseBean approvalOperate(PlanApprovalReq planApprovalReq);
+
+    /**
+     * 计划放行列表
+     *
+     * @param passListReq
+     * @return
+     */
+    PageBean<BentelerPlan> getPassListByPage(PassListReq passListReq);
+
+    /**
+     * 计划放行详情
+     *
+     * @param planInfoReq
+     * @return
+     */
+    PlanPassDetailRes getPassDetail(PlanInfoReq planInfoReq);
+}

+ 17 - 0
application-facade/src/main/java/com/factory/wx/service/WxService.java

@@ -0,0 +1,17 @@
+package com.factory.wx.service;
+
+import com.factory.base.entity.aggregates.ResponseBean;
+import com.factory.wx.entity.res.FunctionsRes;
+
+import java.util.List;
+
+/**
+ * 微信基础功能service
+ *
+ * @author sMArT
+ * @version 1.0
+ * @date 2021-07-12 3:27 下午
+ */
+public interface WxService {
+    ResponseBean<List<FunctionsRes>> getUserFunction(Long userId);
+}

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

@@ -0,0 +1,278 @@
+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.PassListReq;
+import com.factory.wx.entity.req.PlanApprovalReq;
+import com.factory.wx.entity.req.PlanInfoReq;
+import com.factory.wx.entity.req.PlanListReq;
+import com.factory.wx.entity.res.PlanApprovalDetailRes;
+import com.factory.wx.entity.res.PlanApprovalRes;
+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;
+    @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;
+
+    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);
+
+        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());
+
+        PlanPassDetailRes planPassDetailRes = PlanPassDetailRes.builder()
+                .planId(bentelerPlan.getId())
+                .planName(bentelerPlan.getName())
+                .effectiveDate(bentelerPlan.getEffectiveDate())
+                .usersName(usersName)
+                .titleInfo(title)
+                .onsiteCalendars(onsiteCalendarList)
+                .build();
+        return planPassDetailRes;
+    }
+
+}

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

@@ -0,0 +1,41 @@
+package com.factory.wx.service.impl;
+
+import com.factory.base.entity.aggregates.ResponseBean;
+import com.factory.base.util.res.ResponseBeanBuilder;
+import com.factory.wx.entity.res.FunctionsRes;
+import com.factory.wx.mapper.WxMapper;
+import com.factory.wx.service.WxService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author sMArT
+ * @version 1.0
+ * @date 2021-07-12 4:08 下午
+ */
+@Service("wxService")
+@Transactional(rollbackFor = Exception.class)
+public class WxServiceImpl implements WxService {
+
+    @Autowired
+    private WxMapper wxMapper;
+
+    @Override
+    public ResponseBean<List<FunctionsRes>> getUserFunction(Long userId) {
+        List<FunctionsRes> functionList = wxMapper.getUserFunctions(userId);
+
+//        List<FunctionsRes> functionsResList = new ArrayList<>();
+//        functionList.forEach((i) -> {
+//            FunctionsRes functionsRes = new FunctionsRes();
+//            functionsRes.setFunction(i.getFunction());
+//            functionsRes.setName(i.getName());
+//            functionsResList.add(functionsRes);
+//        });
+
+        return ResponseBeanBuilder.ok(functionList);
+    }
+}

+ 1 - 1
application-facade/src/main/resources/application-test.yml

@@ -17,7 +17,7 @@ spring:
       strict: false #设置严格模式,默认false不启动. 启动后在未匹配到指定数据源时候会抛出异常,不启动则使用默认数据源.
       datasource:
         self:
-          url: jdbc:mysql://39.100.230.190:8092/zhoudu_ceshi?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+          url: jdbc:mysql://39.100.230.190:8092/crocodile?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
           username: root
           password: Jh@Jh2019!
           driver-class-name: com.mysql.cj.jdbc.Driver # 3.2.0开始支持SPI可省略此配置

+ 1 - 1
application-facade/src/main/resources/application.yml

@@ -1,6 +1,6 @@
 server:
   servlet:
-    context-path: /web/
+    context-path: /
 spring:
   application:
     name: app-web

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

@@ -0,0 +1,39 @@
+<?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.PlanMapper">
+
+    <!-- 获取用户待审批计划列表 -->
+    <select id="getApprovalList" resultType="com.factory.wx.entity.res.PlanApprovalRes">
+        SELECT p.id,
+               p.`name`,
+               p.plan_type
+        FROM benteler_plan p,
+             onsite_approval_plan ap
+        WHERE ap.benteler_plan_id = p.id
+          AND p.pause_flag = 0
+          AND p.deleted = 0
+          AND ap.status = 0
+          AND ap.approval_user_id = ${userId}
+    </select>
+    <!--    <select id="getApprovalList" resultType="com.factory.wx.entity.res.PlanApprovalRes">-->
+    <!--		SELECT-->
+    <!--			p.id,-->
+    <!--			p.`name`,-->
+    <!--			p.plan_type-->
+    <!--		FROM-->
+    <!--			benteler_plan p,-->
+    <!--			onsite_approval_task oat,-->
+    <!--			onsite_task t,-->
+    <!--			onsite_calendar c-->
+    <!--		WHERE-->
+    <!--			oat.onsite_task_id = t.id-->
+    <!--		  AND t.onsite_calendar_id = c.id-->
+    <!--		  AND c.benteler_plan_id = p.id-->
+    <!--    		  AND p.pause_flag IS NOT NULL-->
+    <!--    		  AND p.deleted = 0-->
+    <!--		  AND oat.approval_user_id = ${userId}-->
+    <!--	</select>-->
+
+
+</mapper>

+ 29 - 0
application-facade/src/main/resources/mapper/WxMapper.xml

@@ -0,0 +1,29 @@
+<?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.WxMapper">
+
+
+    <!--获取用户功能列表-->
+    <select id="getUserFunctions" resultType="com.factory.wx.entity.res.FunctionsRes">
+        SELECT DISTINCT m.`name`,
+                        m.description
+        FROM us_user_role ur,
+             us_role r,
+             us_role_permission rp,
+             us_permission p,
+             us_module m
+        WHERE ur.user_id = ${userId}
+          AND ur.role_id = rp.role_id
+          AND rp.permission_id = p.id
+          AND p.module_id = m.id
+          AND ur.role_id = r.id
+          AND r.del_flag = 0
+          AND p.hidden = 0
+          AND p.del_flag = 0
+          AND m.del_flag = 0
+          AND description IS NOT NULL
+    </select>
+
+
+</mapper>

+ 2 - 0
common-base/src/main/java/com/factory/base/entity/po/remote/Module.java

@@ -18,6 +18,8 @@ public class Module extends BaseIdPo implements Serializable {
 
     private String type;
 
+    private String description;
+
     @TableField(value = "hidden")
     private Boolean hidden;
 

+ 36 - 0
common-user/src/main/java/com/factory/user/controller/RoleController.java

@@ -0,0 +1,36 @@
+package com.factory.user.controller;
+
+import com.factory.base.entity.aggregates.ResponseBean;
+import com.factory.base.entity.po.remote.Role;
+import com.factory.base.util.res.ResponseBeanBuilder;
+import com.factory.user.service.RoleService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+
+/**
+ * 角色
+ *
+ * @author sMArT
+ * @version 1.0
+ * @date 2021-07-05 11:26 下午
+ */
+@Api(tags = "用户管理")
+@RestController
+@RequestMapping("/role")
+public class RoleController {
+    @Resource
+    RoleService roleService;
+
+    @GetMapping("/list")
+    @ApiOperation(value = "角色列表")
+    public ResponseBean<List<Role>> list(HttpServletRequest request) {
+        return ResponseBeanBuilder.ok(roleService.list());
+    }
+}

+ 6 - 2
common-user/src/main/java/com/factory/user/mapper/ModuleMapper.java

@@ -1,7 +1,11 @@
 package com.factory.user.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.factory.base.entity.po.remote.Menu;
+import com.factory.base.entity.po.remote.Module;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Component;
 
-public interface ModuleMapper extends BaseMapper<Menu> {
+@Component
+@Mapper
+public interface ModuleMapper extends BaseMapper<Module> {
 }