Browse Source

Merge remote-tracking branch 'origin/dev_v1.0.0' into dev_v1.0.0

wangliang 1 year ago
parent
commit
d13c5040e3
35 changed files with 1375 additions and 287 deletions
  1. 19 4
      sop-business/src/main/java/com/qmth/sop/business/bean/result/SysDingGroupResult.java
  2. 16 1
      sop-business/src/main/java/com/qmth/sop/business/bean/result/SysLevelResult.java
  3. 84 0
      sop-business/src/main/java/com/qmth/sop/business/bean/result/TBDelayWarnResult.java
  4. 91 0
      sop-business/src/main/java/com/qmth/sop/business/bean/result/TBViolationResult.java
  5. 12 0
      sop-business/src/main/java/com/qmth/sop/business/entity/SysLevel.java
  6. 12 0
      sop-business/src/main/java/com/qmth/sop/business/entity/SysLevelRole.java
  7. 1 1
      sop-business/src/main/java/com/qmth/sop/business/mapper/SysDingGroupMapper.java
  8. 15 8
      sop-business/src/main/java/com/qmth/sop/business/mapper/SysLevelRoleMapper.java
  9. 23 8
      sop-business/src/main/java/com/qmth/sop/business/mapper/TBDelayWarnMapper.java
  10. 20 8
      sop-business/src/main/java/com/qmth/sop/business/mapper/TBViolationMapper.java
  11. 3 3
      sop-business/src/main/java/com/qmth/sop/business/service/SysDingGroupService.java
  12. 13 7
      sop-business/src/main/java/com/qmth/sop/business/service/SysLevelRoleService.java
  13. 2 2
      sop-business/src/main/java/com/qmth/sop/business/service/SysLevelService.java
  14. 21 7
      sop-business/src/main/java/com/qmth/sop/business/service/TBDelayWarnDetailService.java
  15. 39 7
      sop-business/src/main/java/com/qmth/sop/business/service/TBDelayWarnService.java
  16. 27 7
      sop-business/src/main/java/com/qmth/sop/business/service/TBViolationDetailService.java
  17. 40 7
      sop-business/src/main/java/com/qmth/sop/business/service/TBViolationService.java
  18. 68 52
      sop-business/src/main/java/com/qmth/sop/business/service/impl/SysDingGroupServiceImpl.java
  19. 25 8
      sop-business/src/main/java/com/qmth/sop/business/service/impl/SysLevelRoleServiceImpl.java
  20. 65 49
      sop-business/src/main/java/com/qmth/sop/business/service/impl/SysLevelServiceImpl.java
  21. 59 8
      sop-business/src/main/java/com/qmth/sop/business/service/impl/TBDelayWarnDetailServiceImpl.java
  22. 78 7
      sop-business/src/main/java/com/qmth/sop/business/service/impl/TBDelayWarnServiceImpl.java
  23. 67 8
      sop-business/src/main/java/com/qmth/sop/business/service/impl/TBViolationDetailServiceImpl.java
  24. 79 7
      sop-business/src/main/java/com/qmth/sop/business/service/impl/TBViolationServiceImpl.java
  25. 37 1
      sop-business/src/main/resources/db/log/shudonghui_update_log.sql
  26. 2 1
      sop-business/src/main/resources/mapper/SysMessageMapper.xml
  27. 51 1
      sop-business/src/main/resources/mapper/TBDelayWarnMapper.xml
  28. 56 1
      sop-business/src/main/resources/mapper/TBViolationMapper.xml
  29. 6 0
      sop-common/src/main/java/com/qmth/sop/common/contant/SystemConstant.java
  30. 21 13
      sop-server/src/main/java/com/qmth/sop/server/api/SysDingGroupController.java
  31. 27 16
      sop-server/src/main/java/com/qmth/sop/server/api/SysLevelController.java
  32. 93 12
      sop-server/src/main/java/com/qmth/sop/server/api/TBDelayWarnController.java
  33. 46 10
      sop-server/src/main/java/com/qmth/sop/server/api/TBDelayWarnDetailController.java
  34. 100 11
      sop-server/src/main/java/com/qmth/sop/server/api/TBViolationController.java
  35. 57 12
      sop-server/src/main/java/com/qmth/sop/server/api/TBViolationDetailController.java

+ 19 - 4
sop-business/src/main/java/com/qmth/sop/business/bean/result/SysDingGroupResult.java

@@ -1,13 +1,11 @@
 package com.qmth.sop.business.bean.result;
 
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import com.qmth.sop.business.entity.SysDingGroup;
-import com.qmth.sop.common.base.BaseEntity;
-import io.swagger.annotations.ApiModel;
+import com.qmth.sop.business.entity.SysDingObj;
 import io.swagger.annotations.ApiModelProperty;
 
 import java.io.Serializable;
+import java.util.List;
 
 /**
  * <p>
@@ -30,6 +28,19 @@ public class SysDingGroupResult extends SysDingGroup implements Serializable {
     @ApiModelProperty(value = "供应商")
     private Long supplier;
 
+    @ApiModelProperty(value = "适用考勤对象")
+    private List<SysDingObj> dingObjs;
+
+    public List<SysDingObj> getDingObjs() {
+        return dingObjs;
+    }
+
+    public void setDingObjs(List<SysDingObj> dingObjs) {
+        this.dingObjs = dingObjs;
+    }
+
+
+
     public String getService() {
         return service;
     }
@@ -45,4 +56,8 @@ public class SysDingGroupResult extends SysDingGroup implements Serializable {
     public void setSupplier(Long supplier) {
         this.supplier = supplier;
     }
+
+
+
+
 }

+ 16 - 1
sop-business/src/main/java/com/qmth/sop/business/bean/result/SysLevelResult.java

@@ -3,11 +3,14 @@ package com.qmth.sop.business.bean.result;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import com.qmth.sop.business.entity.SysLevel;
+import com.qmth.sop.business.entity.SysLevelRole;
+import com.qmth.sop.business.entity.SysRole;
 import com.qmth.sop.common.enums.ProductTypeEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
 import java.io.Serializable;
+import java.util.List;
 
 /**
  * <p>
@@ -23,9 +26,13 @@ public class SysLevelResult extends SysLevel implements Serializable {
 
 
 
-    @ApiModelProperty(value = "档位")
+    @ApiModelProperty(value = "创建人")
     private String createName;
 
+
+    @ApiModelProperty(value = "项目角色配置")
+    private List<SysLevelRole> roleList;
+
     public String getCreateName() {
         return createName;
     }
@@ -33,4 +40,12 @@ public class SysLevelResult extends SysLevel implements Serializable {
     public void setCreateName(String createName) {
         this.createName = createName;
     }
+
+    public List<SysLevelRole> getRoleList() {
+        return roleList;
+    }
+
+    public void setRoleList(List<SysLevelRole> roleList) {
+        this.roleList = roleList;
+    }
 }

+ 84 - 0
sop-business/src/main/java/com/qmth/sop/business/bean/result/TBDelayWarnResult.java

@@ -0,0 +1,84 @@
+package com.qmth.sop.business.bean.result;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.sop.business.entity.TBDelayWarn;
+import com.qmth.sop.common.base.BaseEntity;
+import com.qmth.sop.common.enums.DelayWarnStatusEnum;
+import com.qmth.sop.common.enums.DelayWarnTypeEnum;
+import com.qmth.sop.common.enums.ProductTypeEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 延期预警跟进表
+ * </p>
+ *
+ * @author dhshu
+ * @since 2023-08-01
+ */
+@ApiModel(value = "TBDelayWarnResult对象", description = "延期预警查询")
+public class TBDelayWarnResult extends TBDelayWarn implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+
+
+    @ApiModelProperty(value = "服务单元")
+    private String service;
+
+    @ApiModelProperty(value = "负责人")
+    private String userName;
+
+    @ApiModelProperty(value = "客户名称")
+    private String custom;
+
+    @ApiModelProperty(value = "客户类型")
+    private ProductTypeEnum customType;
+
+    @ApiModelProperty(value = "项目名称")
+    private String crmName;
+
+    public String getService() {
+        return service;
+    }
+
+    public void setService(String service) {
+        this.service = service;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public String getCustom() {
+        return custom;
+    }
+
+    public void setCustom(String custom) {
+        this.custom = custom;
+    }
+
+    public ProductTypeEnum getCustomType() {
+        return customType;
+    }
+
+    public void setCustomType(ProductTypeEnum customType) {
+        this.customType = customType;
+    }
+
+    public String getCrmName() {
+        return crmName;
+    }
+
+    public void setCrmName(String crmName) {
+        this.crmName = crmName;
+    }
+}

+ 91 - 0
sop-business/src/main/java/com/qmth/sop/business/bean/result/TBViolationResult.java

@@ -0,0 +1,91 @@
+package com.qmth.sop.business.bean.result;
+
+import com.qmth.sop.business.entity.TBDelayWarn;
+import com.qmth.sop.business.entity.TBViolation;
+import com.qmth.sop.common.enums.ProductTypeEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 延期预警跟进表
+ * </p>
+ *
+ * @author dhshu
+ * @since 2023-08-01
+ */
+@ApiModel(value = "TBViolationResult对象", description = "延期预警查询")
+public class TBViolationResult extends TBViolation implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+
+
+    @ApiModelProperty(value = "服务单元")
+    private String service;
+
+    @ApiModelProperty(value = "负责人")
+    private String userName;
+
+    @ApiModelProperty(value = "客户名称")
+    private String custom;
+
+    @ApiModelProperty(value = "客户类型")
+    private ProductTypeEnum customType;
+
+    @ApiModelProperty(value = "项目名称")
+    private String crmName;
+
+    @ApiModelProperty(value = "登记人")
+    private String createName;
+
+    public String getService() {
+        return service;
+    }
+
+    public void setService(String service) {
+        this.service = service;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public String getCustom() {
+        return custom;
+    }
+
+    public void setCustom(String custom) {
+        this.custom = custom;
+    }
+
+    public ProductTypeEnum getCustomType() {
+        return customType;
+    }
+
+    public void setCustomType(ProductTypeEnum customType) {
+        this.customType = customType;
+    }
+
+    public String getCrmName() {
+        return crmName;
+    }
+
+    public void setCrmName(String crmName) {
+        this.crmName = crmName;
+    }
+
+    public String getCreateName() {
+        return createName;
+    }
+
+    public void setCreateName(String createName) {
+        this.createName = createName;
+    }
+}

+ 12 - 0
sop-business/src/main/java/com/qmth/sop/business/entity/SysLevel.java

@@ -41,6 +41,10 @@ public class SysLevel implements Serializable {
     @ApiModelProperty(value = "创建时间")
     private Long createTime;
 
+    @ApiModelProperty(value = "设备配置")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long devices;
+
     public Long getId() {
         return id;
     }
@@ -88,4 +92,12 @@ public class SysLevel implements Serializable {
     public void setCreateTime(Long createTime) {
         this.createTime = createTime;
     }
+
+    public Long getDevices() {
+        return devices;
+    }
+
+    public void setDevices(Long devices) {
+        this.devices = devices;
+    }
 }

+ 12 - 0
sop-business/src/main/java/com/qmth/sop/business/entity/SysLevelRole.java

@@ -32,6 +32,10 @@ public class SysLevelRole implements Serializable {
     @JsonSerialize(using = ToStringSerializer.class)
     private Long roleId;
 
+    @ApiModelProperty(value = "配额")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long quota;
+
     public Long getId() {
         return id;
     }
@@ -55,4 +59,12 @@ public class SysLevelRole implements Serializable {
     public void setRoleId(Long roleId) {
         this.roleId = roleId;
     }
+
+    public Long getQuota() {
+        return quota;
+    }
+
+    public void setQuota(Long quota) {
+        this.quota = quota;
+    }
 }

+ 1 - 1
sop-business/src/main/java/com/qmth/sop/business/mapper/SysDingGroupMapper.java

@@ -23,6 +23,6 @@ public interface SysDingGroupMapper extends BaseMapper<SysDingGroup> {
 	 * @param iPage
 	 * @return
 	 */
-	public IPage<SysDingGroupResult> query(IPage<Map> iPage, @Param("query") String query, @Param("serviceId") long serviceId);
+	public IPage<SysDingGroupResult> query(IPage<Map> iPage, @Param("query") String query, @Param("serviceId") Long serviceId);
 
 }

+ 15 - 8
sop-business/src/main/java/com/qmth/sop/business/mapper/SysLevelRoleMapper.java

@@ -1,16 +1,23 @@
 package com.qmth.sop.business.mapper;
 
-import com.qmth.sop.business.entity.SysLevelRole;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.qmth.sop.business.entity.SysLevelRole;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Param;
+import java.util.Map;
 
 /**
- * <p>
- * 服务档位角色配置表 Mapper 接口
- * </p>
- *
- * @author wangliang
- * @since 2023-08-01
+ * 服务档位角色配置表 Mapper 接口.
+ * 
+ * @author: shudonghui
+ * @date: 2023-08-09 15:52:52
+ * @version: 1.0
+ * @email: shudonghui@qmth.com.cn
+ * @Company: www.qmth.com.cn
  */
 public interface SysLevelRoleMapper extends BaseMapper<SysLevelRole> {
 
-}
+	
+
+}

+ 23 - 8
sop-business/src/main/java/com/qmth/sop/business/mapper/TBDelayWarnMapper.java

@@ -1,16 +1,31 @@
 package com.qmth.sop.business.mapper;
 
-import com.qmth.sop.business.entity.TBDelayWarn;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.qmth.sop.business.bean.result.TBDelayWarnResult;
+import com.qmth.sop.business.entity.TBDelayWarn;
+import com.qmth.sop.common.enums.DelayWarnStatusEnum;
+import com.qmth.sop.common.enums.DelayWarnTypeEnum;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Param;
+import java.util.Map;
 
 /**
- * <p>
- * 延期预警跟进表 Mapper 接口
- * </p>
- *
- * @author wangliang
- * @since 2023-08-01
+ * 延期预警跟进表 Mapper 接口.
+ * 
+ * @author: shudonghui
+ * @date: 2023-08-08 16:02:21
+ * @version: 1.0
+ * @email: shudonghui@qmth.com.cn
+ * @Company: www.qmth.com.cn
  */
 public interface TBDelayWarnMapper extends BaseMapper<TBDelayWarn> {
 
-}
+	/**
+	 * 查询列表
+	 * @param iPage
+	 * @return
+	 */
+    IPage<TBDelayWarnResult> query(IPage<Map> iPage, @Param("type") String type, @Param("status") String status, @Param("serviceId")  Long serviceId, @Param("custom")  String custom, @Param("fieldObj")  String fieldObj, @Param("sopNo")  String sopNo, @Param("startTime")  Long startTime, @Param("endTime")  Long endTime,@Param("id") Long id);
+
+}

+ 20 - 8
sop-business/src/main/java/com/qmth/sop/business/mapper/TBViolationMapper.java

@@ -1,16 +1,28 @@
 package com.qmth.sop.business.mapper;
 
-import com.qmth.sop.business.entity.TBViolation;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.qmth.sop.business.bean.result.TBViolationResult;
+import com.qmth.sop.business.entity.TBViolation;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Param;
+import java.util.Map;
 
 /**
- * <p>
- * sop违规登记表 Mapper 接口
- * </p>
- *
- * @author wangliang
- * @since 2023-08-01
+ * sop违规登记表 Mapper 接口.
+ * 
+ * @author: shudonghui
+ * @date: 2023-08-09 10:33:08
+ * @version: 1.0
+ * @email: shudonghui@qmth.com.cn
+ * @Company: www.qmth.com.cn
  */
 public interface TBViolationMapper extends BaseMapper<TBViolation> {
 
-}
+	/**
+	 * 查询列表
+	 * @param iPage
+	 * @return
+	 */
+    IPage<TBViolationResult> query(IPage<Map> iPage, @Param("serviceId")  Long serviceId, @Param("type")  String type, @Param("status")  String status, @Param("userId")  Long userId, @Param("custom")  String custom, @Param("sopNo")  String sopNo, @Param("createId")  Long createId, @Param("startTime")  Long startTime, @Param("endTime")  Long endTime, @Param("id")  Long id);
+}

+ 3 - 3
sop-business/src/main/java/com/qmth/sop/business/service/SysDingGroupService.java

@@ -23,21 +23,21 @@ public interface SysDingGroupService extends IService<SysDingGroup>{
     * @param iPage
     * @return
     */
-    IPage<SysDingGroupResult> query(IPage<Map> iPage, String query, long serviceId);
+    IPage<SysDingGroupResult> query(IPage<Map> iPage, String query, Long serviceId);
 
     /**
     * 新增考勤组表
     *
     * @param sysDingGroup
     */
-    void add(SysDingGroup sysDingGroup);
+    void add(SysDingGroupResult sysDingGroup);
 
     /**
     * 修改考勤组表
     *
     * @param sysDingGroup
     */
-    void update(SysDingGroup sysDingGroup);
+    void update(SysDingGroupResult sysDingGroup);
 
     /**
     * 删除考勤组表

+ 13 - 7
sop-business/src/main/java/com/qmth/sop/business/service/SysLevelRoleService.java

@@ -1,16 +1,22 @@
 package com.qmth.sop.business.service;
 
-import com.qmth.sop.business.entity.SysLevelRole;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.sop.business.entity.SysLevelRole;
+import java.util.Map;
 
 /**
- * <p>
  * 服务档位角色配置表 服务类
- * </p>
  *
- * @author wangliang
- * @since 2023-08-01
+ * @author: shudonghui
+ * @date: 2023-08-09 15:52:52
+ * @version: 1.0
+ * @email: shudonghui@qmth.com.cn
+ * @Company: www.qmth.com.cn
  */
-public interface SysLevelRoleService extends IService<SysLevelRole> {
+public interface SysLevelRoleService extends IService<SysLevelRole>{
+
+
+
 
-}
+}

+ 2 - 2
sop-business/src/main/java/com/qmth/sop/business/service/SysLevelService.java

@@ -30,14 +30,14 @@ public interface SysLevelService extends IService<SysLevel>{
     *
     * @param sysLevel
     */
-    void add(SysLevel sysLevel);
+    void add(SysLevelResult sysLevel);
 
     /**
     * 修改档位表
     *
     * @param sysLevel
     */
-    void update(SysLevel sysLevel);
+    void update(SysLevelResult sysLevel);
 
     /**
     * 删除档位表

+ 21 - 7
sop-business/src/main/java/com/qmth/sop/business/service/TBDelayWarnDetailService.java

@@ -1,16 +1,30 @@
 package com.qmth.sop.business.service;
 
-import com.qmth.sop.business.entity.TBDelayWarnDetail;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.sop.business.entity.TBDelayWarnDetail;
+
+import java.util.List;
 
 /**
- * <p>
  * 延期预警明细表 服务类
- * </p>
  *
- * @author wangliang
- * @since 2023-08-01
+ * @author: shudonghui
+ * @date: 2023-08-08 16:02:21
+ * @version: 1.0
+ * @email: shudonghui@qmth.com.cn
+ * @Company: www.qmth.com.cn
  */
-public interface TBDelayWarnDetailService extends IService<TBDelayWarnDetail> {
+public interface TBDelayWarnDetailService extends IService<TBDelayWarnDetail>{
+
+
+    /**
+    * 新增修改延期预警明细表
+    *
+    * @param tBDelayWarnDetail
+    */
+    Boolean saveTBDelayWarnDetail(TBDelayWarnDetail tBDelayWarnDetail);
+
+
+
 
-}
+}

+ 39 - 7
sop-business/src/main/java/com/qmth/sop/business/service/TBDelayWarnService.java

@@ -1,16 +1,48 @@
 package com.qmth.sop.business.service;
 
-import com.qmth.sop.business.entity.TBDelayWarn;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.sop.business.bean.result.TBDelayWarnResult;
+import com.qmth.sop.business.entity.TBDelayWarn;
+import com.qmth.sop.common.enums.DelayWarnStatusEnum;
+import com.qmth.sop.common.enums.DelayWarnTypeEnum;
+
+import java.util.Map;
 
 /**
- * <p>
  * 延期预警跟进表 服务类
- * </p>
  *
- * @author wangliang
- * @since 2023-08-01
+ * @author: shudonghui
+ * @date: 2023-08-08 16:02:21
+ * @version: 1.0
+ * @email: shudonghui@qmth.com.cn
+ * @Company: www.qmth.com.cn
  */
-public interface TBDelayWarnService extends IService<TBDelayWarn> {
+public interface TBDelayWarnService extends IService<TBDelayWarn>{
+
+    /**
+    * 查询列表
+    *
+    * @param iPage
+    * @return
+    */
+    IPage<TBDelayWarnResult> query(IPage<Map> iPage, DelayWarnTypeEnum type, DelayWarnStatusEnum status, Long serviceId, String custom, String fieldObj, String sopNo, Long startTime, Long endTime, Long id);
+
+    /**
+    * 新增修改延期预警跟进表
+    *
+    * @param tBDelayWarn
+    */
+    Boolean saveTBDelayWarn(TBDelayWarn tBDelayWarn);
+
+
+    /**
+    * 删除延期预警跟进表
+    *
+    * @param id
+    */
+    Boolean delete(Long id);
+
 
-}
+}

+ 27 - 7
sop-business/src/main/java/com/qmth/sop/business/service/TBViolationDetailService.java

@@ -1,16 +1,36 @@
 package com.qmth.sop.business.service;
 
-import com.qmth.sop.business.entity.TBViolationDetail;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.sop.business.entity.TBViolationDetail;
+import java.util.Map;
 
 /**
- * <p>
  * 违规明细表 服务类
- * </p>
  *
- * @author wangliang
- * @since 2023-08-01
+ * @author: shudonghui
+ * @date: 2023-08-09 10:33:08
+ * @version: 1.0
+ * @email: shudonghui@qmth.com.cn
+ * @Company: www.qmth.com.cn
  */
-public interface TBViolationDetailService extends IService<TBViolationDetail> {
+public interface TBViolationDetailService extends IService<TBViolationDetail>{
+
+
+    /**
+    * 新增修改违规明细表
+    *
+    * @param tBViolationDetail
+    */
+    Boolean saveTBViolationDetail(TBViolationDetail tBViolationDetail);
+
+
+    /**
+    * 删除违规明细表
+    *
+    * @param id
+    */
+    Boolean delete(Long id);
+
 
-}
+}

+ 40 - 7
sop-business/src/main/java/com/qmth/sop/business/service/TBViolationService.java

@@ -1,16 +1,49 @@
 package com.qmth.sop.business.service;
 
-import com.qmth.sop.business.entity.TBViolation;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.sop.business.bean.result.TBViolationResult;
+import com.qmth.sop.business.entity.TBViolation;
+import com.qmth.sop.common.enums.ViolationStatusEnum;
+import com.qmth.sop.common.enums.ViolationTypeEnum;
+
+import java.util.Map;
 
 /**
- * <p>
  * sop违规登记表 服务类
- * </p>
  *
- * @author wangliang
- * @since 2023-08-01
+ * @author: shudonghui
+ * @date: 2023-08-09 10:33:08
+ * @version: 1.0
+ * @email: shudonghui@qmth.com.cn
+ * @Company: www.qmth.com.cn
  */
-public interface TBViolationService extends IService<TBViolation> {
+public interface TBViolationService extends IService<TBViolation>{
+
+    /**
+    * 查询列表
+    *
+    * @param iPage
+    * @return
+    */
+    IPage<TBViolationResult> query(IPage<Map> iPage, Long serviceId, ViolationTypeEnum type, ViolationStatusEnum status, Long userId, String custom, String sopNo, Long createId, Long startTime, Long endTime, Long id);
+
+    /**
+    * 新增修改sop违规登记表
+    *
+    * @param tBViolation
+    */
+    Boolean saveTBViolation(TBViolation tBViolation);
+
+
+    /**
+    * 删除sop违规登记表
+    *
+    * @param id
+    */
+    Boolean delete(Long id);
+
+
 
-}
+}

+ 68 - 52
sop-business/src/main/java/com/qmth/sop/business/service/impl/SysDingGroupServiceImpl.java

@@ -1,22 +1,22 @@
 package com.qmth.sop.business.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.qmth.boot.api.exception.ApiException;
 import com.qmth.sop.business.bean.result.SysDingGroupResult;
 import com.qmth.sop.business.entity.SysDingGroup;
+import com.qmth.sop.business.entity.SysDingObj;
+import com.qmth.sop.business.entity.SysLevelRole;
 import com.qmth.sop.business.entity.SysUser;
 import com.qmth.sop.business.mapper.SysDingGroupMapper;
 import com.qmth.sop.business.service.SysDingGroupService;
-import com.qmth.sop.common.contant.SystemConstant;
-import com.qmth.sop.common.util.ResultUtil;
+import com.qmth.sop.business.service.SysDingObjService;
 import com.qmth.sop.common.util.ServletUtil;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+
 import javax.annotation.Resource;
-import java.util.HashMap;
 import java.util.Map;
-import java.util.Objects;
 
 /**
  * 考勤组表 服务实现.
@@ -28,56 +28,72 @@ import java.util.Objects;
  * @Company: www.qmth.com.cn
  */
 @Service
-public class SysDingGroupServiceImpl extends ServiceImpl<SysDingGroupMapper, SysDingGroup> implements SysDingGroupService{
+public class SysDingGroupServiceImpl extends ServiceImpl<SysDingGroupMapper, SysDingGroup> implements SysDingGroupService {
+
+    @Resource
+    SysDingObjService sysDingObjService;
 
+    /**
+     * 查询列表
+     *
+     * @param iPage
+     * @return
+     */
+    @Override
+    public IPage<SysDingGroupResult> query(IPage<Map> iPage, String query, Long serviceId) {
+        IPage<SysDingGroupResult> dingGroupResultIPage = this.baseMapper.query(iPage, query, serviceId);
+        dingGroupResultIPage.getRecords().forEach(e -> {
+            e.setDingObjs(sysDingObjService.list(new QueryWrapper<SysDingObj>().lambda().eq(SysDingObj::getDingGroupId, e.getId())));
+        });
+        return dingGroupResultIPage;
+    }
 
-		/**
-		* 查询列表
-		*
-		* @param iPage
-		* @return
-		*/
-		@Override
-		public IPage<SysDingGroupResult> query(IPage<Map> iPage, String query, long serviceId) {
-				return this.baseMapper.query(iPage, query,serviceId);
-		}
-		/**
-		* 新增考勤组表
-		*
-		* @param sysDingGroup
-		*/
-		@Override
-		@Transactional
-		public void add(SysDingGroup sysDingGroup) {
-			SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-			sysDingGroup.setCreateId(sysUser.getId());
-			sysDingGroup.setCreateTime(System.currentTimeMillis());
-			this.saveOrUpdate(sysDingGroup);
-		}
+    /**
+     * 新增考勤组表
+     *
+     * @param sysDingGroup
+     */
+    @Override
+    @Transactional
+    public void add(SysDingGroupResult sysDingGroup) {
+        sysDingGroup.getDingObjs().forEach(e -> {
+            e.setDingGroupId(sysDingGroup.getId());
+        });
+        sysDingObjService.saveBatch(sysDingGroup.getDingObjs());
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        sysDingGroup.setCreateId(sysUser.getId());
+        sysDingGroup.setCreateTime(System.currentTimeMillis());
+        this.saveOrUpdate(sysDingGroup);
+    }
 
-		/**
-		* 修改考勤组表
-		*
-		* @param sysDingGroup
-		*/
-		@Override
-		@Transactional
-		public void update(SysDingGroup sysDingGroup) {
-			SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-			sysDingGroup.setCreateId(sysUser.getId());
-			sysDingGroup.setUpdateTime(System.currentTimeMillis());
-			this.saveOrUpdate(sysDingGroup);
-		}
+    /**
+     * 修改考勤组表
+     *
+     * @param sysDingGroup
+     */
+    @Override
+    @Transactional
+    public void update(SysDingGroupResult sysDingGroup) {
+        sysDingObjService.remove(new QueryWrapper<SysDingObj>().lambda().eq(SysDingObj::getDingGroupId, sysDingGroup.getId()));
+        sysDingGroup.getDingObjs().forEach(e -> {
+            e.setDingGroupId(sysDingGroup.getId());
+        });
+        sysDingObjService.saveBatch(sysDingGroup.getDingObjs());
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        sysDingGroup.setUpdateId(sysUser.getId());
+        sysDingGroup.setUpdateTime(System.currentTimeMillis());
+        this.saveOrUpdate(sysDingGroup);
+    }
 
-		/**
-		* 删除考勤组表
-		*
-		* @param id
-		*/
-		@Override
-		@Transactional
-		public void delete(Long id) {
-			this.removeById(id);
-		}
+    /**
+     * 删除考勤组表
+     *
+     * @param id
+     */
+    @Override
+    @Transactional
+    public void delete(Long id) {
+        this.removeById(id);
+    }
 
 }

+ 25 - 8
sop-business/src/main/java/com/qmth/sop/business/service/impl/SysLevelRoleServiceImpl.java

@@ -1,20 +1,37 @@
 package com.qmth.sop.business.service.impl;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.boot.api.exception.ApiException;
 import com.qmth.sop.business.entity.SysLevelRole;
+import com.qmth.sop.business.entity.SysUser;
 import com.qmth.sop.business.mapper.SysLevelRoleMapper;
 import com.qmth.sop.business.service.SysLevelRoleService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.sop.common.contant.SystemConstant;
+import com.qmth.sop.common.enums.ExceptionResultEnum;
+import com.qmth.sop.common.enums.FieldUniqueEnum;
+import com.qmth.sop.common.util.ResultUtil;
+import com.qmth.sop.common.util.ServletUtil;
+import org.springframework.dao.DuplicateKeyException;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import javax.annotation.Resource;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
 
 /**
- * <p>
- * 服务档位角色配置表 服务实现类
- * </p>
+ * 服务档位角色配置表 服务实现.
  *
- * @author wangliang
- * @since 2023-08-01
+ * @author: shudonghui
+ * @date: 2023-08-09 15:52:52
+ * @version: 1.0
+ * @email: shudonghui@qmth.com.cn
+ * @Company: www.qmth.com.cn
  */
 @Service
-public class SysLevelRoleServiceImpl extends ServiceImpl<SysLevelRoleMapper, SysLevelRole> implements SysLevelRoleService {
+public class SysLevelRoleServiceImpl extends ServiceImpl<SysLevelRoleMapper, SysLevelRole> implements SysLevelRoleService{
+
+
 
-}
+}

+ 65 - 49
sop-business/src/main/java/com/qmth/sop/business/service/impl/SysLevelServiceImpl.java

@@ -1,22 +1,21 @@
 package com.qmth.sop.business.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.qmth.boot.api.exception.ApiException;
 import com.qmth.sop.business.bean.result.SysLevelResult;
 import com.qmth.sop.business.entity.SysLevel;
+import com.qmth.sop.business.entity.SysLevelRole;
 import com.qmth.sop.business.entity.SysUser;
 import com.qmth.sop.business.mapper.SysLevelMapper;
+import com.qmth.sop.business.service.SysLevelRoleService;
 import com.qmth.sop.business.service.SysLevelService;
-import com.qmth.sop.common.contant.SystemConstant;
-import com.qmth.sop.common.util.ResultUtil;
 import com.qmth.sop.common.util.ServletUtil;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+
 import javax.annotation.Resource;
-import java.util.HashMap;
 import java.util.Map;
-import java.util.Objects;
 
 /**
  * 档位表 服务实现.
@@ -28,53 +27,70 @@ import java.util.Objects;
  * @Company: www.qmth.com.cn
  */
 @Service
-public class SysLevelServiceImpl extends ServiceImpl<SysLevelMapper, SysLevel> implements SysLevelService{
+public class SysLevelServiceImpl extends ServiceImpl<SysLevelMapper, SysLevel> implements SysLevelService {
+
+    @Resource
+    SysLevelRoleService sysLevelRoleService;
 
+    /**
+     * 查询列表
+     *
+     * @param iPage
+     * @return
+     */
+    @Override
+    public IPage<SysLevelResult> query(IPage<Map> iPage) {
+        IPage<SysLevelResult> resultIPage = this.baseMapper.query(iPage);
+        resultIPage.getRecords().forEach(e -> {
+            e.setRoleList(sysLevelRoleService.list(new QueryWrapper<SysLevelRole>().lambda().eq(SysLevelRole::getLevelId, e.getId())));
+        });
+        return resultIPage;
+    }
 
-		/**
-		* 查询列表
-		*
-		* @param iPage
-		* @return
-		*/
-		@Override
-		public IPage<SysLevelResult> query(IPage<Map> iPage) {
-				return this.baseMapper.query(iPage);
-		}
-		/**
-		* 新增档位表
-		*
-		* @param sysLevel
-		*/
-		@Override
-		@Transactional
-		public void add(SysLevel sysLevel) {
-			SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-			sysLevel.setCreateId(sysUser.getId());
-			sysLevel.setCreateTime(System.currentTimeMillis());
-			this.saveOrUpdate(sysLevel);
-		}
+    /**
+     * 新增档位表
+     *
+     * @param sysLevel
+     */
+    @Override
+    @Transactional
+    public void add(SysLevelResult sysLevel) {
+        sysLevel.getRoleList().forEach(e->{
+            e.setLevelId(sysLevel.getId());
+        });
+        sysLevelRoleService.saveBatch(sysLevel.getRoleList());
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        sysLevel.setCreateId(sysUser.getId());
+        sysLevel.setCreateTime(System.currentTimeMillis());
+        this.saveOrUpdate(sysLevel);
+    }
 
-		/**
-		* 修改档位表
-		*
-		* @param sysLevel
-		*/
-		@Override
-		@Transactional
-		public void update(SysLevel sysLevel) {
-			this.saveOrUpdate(sysLevel);
-		}
+    /**
+     * 修改档位表
+     *
+     * @param sysLevel
+     */
+    @Override
+    @Transactional
+    public void update(SysLevelResult sysLevel) {
+        sysLevelRoleService.remove(new QueryWrapper<SysLevelRole>().lambda().eq(SysLevelRole::getLevelId, sysLevel.getId()));
+        sysLevel.getRoleList().forEach(e->{
+            e.setLevelId(sysLevel.getId());
+        });
+        sysLevelRoleService.saveBatch(sysLevel.getRoleList());
+        this.saveOrUpdate(sysLevel);
+    }
 
-		/**
-		* 删除档位表
-		*
-		* @param id
-		*/
-		@Override
-		@Transactional
-		public void delete(Long id) {
-			this.removeById(id);
-		}
+    /**
+     * 删除档位表
+     *
+     * @param id
+     */
+    @Override
+    @Transactional
+    public void delete(Long id) {
+        sysLevelRoleService.remove(new QueryWrapper<SysLevelRole>().lambda().eq(SysLevelRole::getLevelId, id));
+        this.removeById(id);
+    }
 
 }

+ 59 - 8
sop-business/src/main/java/com/qmth/sop/business/service/impl/TBDelayWarnDetailServiceImpl.java

@@ -1,20 +1,71 @@
 package com.qmth.sop.business.service.impl;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.boot.api.exception.ApiException;
 import com.qmth.sop.business.entity.TBDelayWarnDetail;
+import com.qmth.sop.business.entity.SysUser;
 import com.qmth.sop.business.mapper.TBDelayWarnDetailMapper;
 import com.qmth.sop.business.service.TBDelayWarnDetailService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.sop.common.contant.SystemConstant;
+import com.qmth.sop.common.enums.ExceptionResultEnum;
+import com.qmth.sop.common.enums.FieldUniqueEnum;
+import com.qmth.sop.common.util.ResultUtil;
+import com.qmth.sop.common.util.ServletUtil;
+import org.springframework.dao.DuplicateKeyException;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import javax.annotation.Resource;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
 
 /**
- * <p>
- * 延期预警明细表 服务实现类
- * </p>
+ * 延期预警明细表 服务实现.
  *
- * @author wangliang
- * @since 2023-08-01
+ * @author: shudonghui
+ * @date: 2023-08-08 16:02:22
+ * @version: 1.0
+ * @email: shudonghui@qmth.com.cn
+ * @Company: www.qmth.com.cn
  */
 @Service
-public class TBDelayWarnDetailServiceImpl extends ServiceImpl<TBDelayWarnDetailMapper, TBDelayWarnDetail> implements TBDelayWarnDetailService {
+public class TBDelayWarnDetailServiceImpl extends ServiceImpl<TBDelayWarnDetailMapper, TBDelayWarnDetail> implements TBDelayWarnDetailService{
+
+
+		/**
+		* 新增修改延期预警明细表
+		*
+		* @param tBDelayWarnDetail
+		*/
+		@Override
+		@Transactional
+		public Boolean saveTBDelayWarnDetail(TBDelayWarnDetail tBDelayWarnDetail) {
+			try {
+				SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+				if (Objects.isNull(tBDelayWarnDetail.getId())) {// 新增
+					tBDelayWarnDetail.setCreateId(sysUser.getId());
+					tBDelayWarnDetail.setCreateTime(System.currentTimeMillis());
+				} else { // 修改
+					//tBDelayWarnDetail.updateInfo(sysUser.getId());
+				}
+				return saveOrUpdate(tBDelayWarnDetail);
+			} catch (Exception e) {
+				if (e instanceof DuplicateKeyException) {
+				String errorColumn = e.getCause().toString();
+				String columnStr = errorColumn.substring(errorColumn.lastIndexOf("key") + 3, errorColumn.length()).replaceAll("'", "");
+				throw ExceptionResultEnum.SQL_ERROR.exception("[" + FieldUniqueEnum.convertToTitle(columnStr) + "]数据不允许重复插入");
+				} else if (e instanceof ApiException) {
+				ResultUtil.error((ApiException) e, e.getMessage());
+				} else {
+				ResultUtil.error(e.getMessage());
+				}
+			}
+			return null;
+
+		}
+
+
 
-}
+}

+ 78 - 7
sop-business/src/main/java/com/qmth/sop/business/service/impl/TBDelayWarnServiceImpl.java

@@ -1,20 +1,91 @@
 package com.qmth.sop.business.service.impl;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.boot.api.exception.ApiException;
+import com.qmth.sop.business.bean.result.TBDelayWarnResult;
+import com.qmth.sop.business.entity.SysUser;
 import com.qmth.sop.business.entity.TBDelayWarn;
 import com.qmth.sop.business.mapper.TBDelayWarnMapper;
 import com.qmth.sop.business.service.TBDelayWarnService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.sop.common.enums.DelayWarnStatusEnum;
+import com.qmth.sop.common.enums.DelayWarnTypeEnum;
+import com.qmth.sop.common.enums.ExceptionResultEnum;
+import com.qmth.sop.common.enums.FieldUniqueEnum;
+import com.qmth.sop.common.util.ResultUtil;
+import com.qmth.sop.common.util.ServletUtil;
+import org.springframework.dao.DuplicateKeyException;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Map;
+import java.util.Objects;
 
 /**
- * <p>
- * 延期预警跟进表 服务实现类
- * </p>
+ * 延期预警跟进表 服务实现.
  *
- * @author wangliang
- * @since 2023-08-01
+ * @author: shudonghui
+ * @date: 2023-08-08 16:02:21
+ * @version: 1.0
+ * @email: shudonghui@qmth.com.cn
+ * @Company: www.qmth.com.cn
  */
 @Service
 public class TBDelayWarnServiceImpl extends ServiceImpl<TBDelayWarnMapper, TBDelayWarn> implements TBDelayWarnService {
 
-}
+
+    /**
+     * 查询列表
+     *
+     * @param iPage
+     * @return
+     */
+    @Override
+    public IPage<TBDelayWarnResult> query(IPage<Map> iPage, DelayWarnTypeEnum type, DelayWarnStatusEnum status, Long serviceId, String custom, String fieldObj, String sopNo, Long startTime, Long endTime,Long id) {
+        return this.baseMapper.query(iPage, Objects.nonNull(type) ? type.name() : null, Objects.nonNull(status) ? status.name() : null, serviceId, custom, fieldObj, sopNo, startTime, endTime,id);
+    }
+
+    /**
+     * 新增修改延期预警跟进表
+     *
+     * @param tBDelayWarn
+     */
+    @Override
+    @Transactional
+    public Boolean saveTBDelayWarn(TBDelayWarn tBDelayWarn) {
+        try {
+            SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+            if (Objects.isNull(tBDelayWarn.getId())) {// 新增
+                tBDelayWarn.insertInfo(sysUser.getId());
+            } else { // 修改
+                tBDelayWarn.updateInfo(sysUser.getId());
+            }
+            return saveOrUpdate(tBDelayWarn);
+        } catch (Exception e) {
+            if (e instanceof DuplicateKeyException) {
+                String errorColumn = e.getCause().toString();
+                String columnStr = errorColumn.substring(errorColumn.lastIndexOf("key") + 3, errorColumn.length()).replaceAll("'", "");
+                throw ExceptionResultEnum.SQL_ERROR.exception("[" + FieldUniqueEnum.convertToTitle(columnStr) + "]数据不允许重复插入");
+            } else if (e instanceof ApiException) {
+                ResultUtil.error((ApiException) e, e.getMessage());
+            } else {
+                ResultUtil.error(e.getMessage());
+            }
+        }
+        return null;
+
+    }
+
+    /**
+     * 删除延期预警跟进表
+     *
+     * @param id
+     */
+    @Override
+    @Transactional
+    public Boolean delete(Long id) {
+        return this.removeById(id);
+    }
+
+
+}

+ 67 - 8
sop-business/src/main/java/com/qmth/sop/business/service/impl/TBViolationDetailServiceImpl.java

@@ -1,20 +1,79 @@
 package com.qmth.sop.business.service.impl;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.boot.api.exception.ApiException;
 import com.qmth.sop.business.entity.TBViolationDetail;
+import com.qmth.sop.business.entity.SysUser;
 import com.qmth.sop.business.mapper.TBViolationDetailMapper;
 import com.qmth.sop.business.service.TBViolationDetailService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.sop.common.contant.SystemConstant;
+import com.qmth.sop.common.enums.ExceptionResultEnum;
+import com.qmth.sop.common.enums.FieldUniqueEnum;
+import com.qmth.sop.common.util.ResultUtil;
+import com.qmth.sop.common.util.ServletUtil;
+import org.springframework.dao.DuplicateKeyException;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import javax.annotation.Resource;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
 
 /**
- * <p>
- * 违规明细表 服务实现类
- * </p>
+ * 违规明细表 服务实现.
  *
- * @author wangliang
- * @since 2023-08-01
+ * @author: shudonghui
+ * @date: 2023-08-09 10:33:08
+ * @version: 1.0
+ * @email: shudonghui@qmth.com.cn
+ * @Company: www.qmth.com.cn
  */
 @Service
-public class TBViolationDetailServiceImpl extends ServiceImpl<TBViolationDetailMapper, TBViolationDetail> implements TBViolationDetailService {
+public class TBViolationDetailServiceImpl extends ServiceImpl<TBViolationDetailMapper, TBViolationDetail> implements TBViolationDetailService{
+
+
+		/**
+		* 新增修改违规明细表
+		*
+		* @param tBViolationDetail
+		*/
+		@Override
+		@Transactional
+		public Boolean saveTBViolationDetail(TBViolationDetail tBViolationDetail) {
+			try {
+				SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+				if (Objects.isNull(tBViolationDetail.getId())) {// 新增
+					tBViolationDetail.setCreateId(sysUser.getId());
+					tBViolationDetail.setCreateTime(System.currentTimeMillis());
+				} else { // 修改
+//					tBViolationDetail.updateInfo(sysUser.getId());
+				}
+				return saveOrUpdate(tBViolationDetail);
+			} catch (Exception e) {
+				if (e instanceof DuplicateKeyException) {
+				String errorColumn = e.getCause().toString();
+				String columnStr = errorColumn.substring(errorColumn.lastIndexOf("key") + 3, errorColumn.length()).replaceAll("'", "");
+				throw ExceptionResultEnum.SQL_ERROR.exception("[" + FieldUniqueEnum.convertToTitle(columnStr) + "]数据不允许重复插入");
+				} else if (e instanceof ApiException) {
+				ResultUtil.error((ApiException) e, e.getMessage());
+				} else {
+				ResultUtil.error(e.getMessage());
+				}
+			}
+			return null;
+
+		}
+
+		/**
+		* 删除违规明细表
+		*
+		* @param id
+		*/
+		@Override
+		@Transactional
+		public Boolean delete(Long id) {
+			return this.removeById(id);
+		}
 
-}
+}

+ 79 - 7
sop-business/src/main/java/com/qmth/sop/business/service/impl/TBViolationServiceImpl.java

@@ -1,20 +1,92 @@
 package com.qmth.sop.business.service.impl;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.boot.api.exception.ApiException;
+import com.qmth.sop.business.bean.result.TBViolationResult;
+import com.qmth.sop.business.entity.SysUser;
 import com.qmth.sop.business.entity.TBViolation;
 import com.qmth.sop.business.mapper.TBViolationMapper;
 import com.qmth.sop.business.service.TBViolationService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.sop.common.enums.ExceptionResultEnum;
+import com.qmth.sop.common.enums.FieldUniqueEnum;
+import com.qmth.sop.common.enums.ViolationStatusEnum;
+import com.qmth.sop.common.enums.ViolationTypeEnum;
+import com.qmth.sop.common.util.ResultUtil;
+import com.qmth.sop.common.util.ServletUtil;
+import org.springframework.dao.DuplicateKeyException;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Map;
+import java.util.Objects;
 
 /**
- * <p>
- * sop违规登记表 服务实现类
- * </p>
+ * sop违规登记表 服务实现.
  *
- * @author wangliang
- * @since 2023-08-01
+ * @author: shudonghui
+ * @date: 2023-08-09 10:33:08
+ * @version: 1.0
+ * @email: shudonghui@qmth.com.cn
+ * @Company: www.qmth.com.cn
  */
 @Service
 public class TBViolationServiceImpl extends ServiceImpl<TBViolationMapper, TBViolation> implements TBViolationService {
 
-}
+
+    /**
+     * 查询列表
+     *
+     * @param iPage
+     * @return
+     */
+
+
+    @Override
+    public IPage<TBViolationResult> query(IPage<Map> iPage, Long serviceId, ViolationTypeEnum type, ViolationStatusEnum status, Long userId, String custom, String sopNo, Long createId, Long startTime, Long endTime, Long id) {
+        return this.baseMapper.query(iPage,serviceId,Objects.nonNull(type)?type.name():null,Objects.nonNull(status)?status.name():null,userId,custom,sopNo,createId,startTime,endTime,id);
+    }
+
+    /**
+     * 新增修改sop违规登记表
+     *
+     * @param tBViolation
+     */
+    @Override
+    @Transactional
+    public Boolean saveTBViolation(TBViolation tBViolation) {
+        try {
+            SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+            if (Objects.isNull(tBViolation.getId())) {// 新增
+                tBViolation.insertInfo(sysUser.getId());
+            } else { // 修改
+                tBViolation.updateInfo(sysUser.getId());
+            }
+            return saveOrUpdate(tBViolation);
+        } catch (Exception e) {
+            if (e instanceof DuplicateKeyException) {
+                String errorColumn = e.getCause().toString();
+                String columnStr = errorColumn.substring(errorColumn.lastIndexOf("key") + 3, errorColumn.length()).replaceAll("'", "");
+                throw ExceptionResultEnum.SQL_ERROR.exception("[" + FieldUniqueEnum.convertToTitle(columnStr) + "]数据不允许重复插入");
+            } else if (e instanceof ApiException) {
+                ResultUtil.error((ApiException) e, e.getMessage());
+            } else {
+                ResultUtil.error(e.getMessage());
+            }
+        }
+        return null;
+
+    }
+
+    /**
+     * 删除sop违规登记表
+     *
+     * @param id
+     */
+    @Override
+    @Transactional
+    public Boolean delete(Long id) {
+        return this.removeById(id);
+    }
+
+}

+ 37 - 1
sop-business/src/main/resources/db/log/shudonghui_update_log.sql

@@ -98,4 +98,40 @@ INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence
 UPDATE `sys_privilege` SET `name` = '消息提醒', `url` = 'message', `type` = 'MENU', `parent_id` = 59, `sequence` = 1, `property` = NULL, `related` = '1009,1011,1012', `enable` = 1, `default_auth` = 0, `front_display` = 1 WHERE `id` = 60;
 UPDATE `sys_privilege` SET `name` = '待办任务', `url` = 'work', `type` = 'MENU', `parent_id` = 59, `sequence` = 2, `property` = NULL, `related` = '1009,1011,1012', `enable` = 1, `default_auth` = 0, `front_display` = 1 WHERE `id` = 61;
 UPDATE `sys_privilege` SET `name` = '通知公告', `url` = 'notice', `type` = 'MENU', `parent_id` = 59, `sequence` = 3, `property` = NULL, `related` = '1009,1010,1011,1012', `enable` = 1, `default_auth` = 0, `front_display` = 1 WHERE `id` = 62;
----------------------------
+---------------------------
+
+
+------------------------------
+-----2023.8.9延期预警
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (1013, '延期预警关闭', '/api/admin/tb/delay/warn/close', 'URL', 47, 1, 'AUTH', NULL, 1, 1, 0);
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (1014, '延期预警跟进', '/api/admin/tb/delay/warn/get', 'URL', 47, 2, 'AUTH', NULL, 1, 1, 0);
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (1015, '延期预警查询', '/api/admin/tb/delay/warn/query', 'URL', 47, 3, 'AUTH', NULL, 1, 1, 0);
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (1016, '延期预警重启', '/api/admin/tb/delay/warn/restart', 'URL', 47, 4, 'AUTH', NULL, 1, 1, 0);
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (1017, '延期预警跟进', '/api/admin/tb/delay/warn/detail/list', 'URL', 47, 5, 'AUTH', NULL, 1, 1, 0);
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (1018, '延期预警跟进', '/api/admin/tb/delay/warn/detail/save', 'URL', 47, 6, 'AUTH', NULL, 1, 1, 0);
+UPDATE `sys_privilege` SET `name` = '列表', `url` = 'List', `type` = 'LIST', `parent_id` = 47, `sequence` = 1, `property` = 'AUTH', `related` = '1015', `enable` = 1, `default_auth` = 0, `front_display` = 1 WHERE `id` = 197;
+UPDATE `sys_privilege` SET `name` = '查询条件', `url` = 'Condition', `type` = 'CONDITION', `parent_id` = 47, `sequence` = 1, `property` = 'AUTH', `related` = NULL, `enable` = 1, `default_auth` = 0, `front_display` = 1 WHERE `id` = 198;
+UPDATE `sys_privilege` SET `name` = '查询', `url` = 'Select', `type` = 'BUTTON', `parent_id` = 47, `sequence` = 1, `property` = 'AUTH', `related` = '1015', `enable` = 1, `default_auth` = 0, `front_display` = 1 WHERE `id` = 199;
+UPDATE `sys_privilege` SET `name` = '跟进', `url` = 'Follow', `type` = 'LINK', `parent_id` = 47, `sequence` = 1, `property` = 'AUTH', `related` = '1014,1017,1018', `enable` = 1, `default_auth` = 0, `front_display` = 1 WHERE `id` = 200;
+UPDATE `sys_privilege` SET `name` = '关闭', `url` = 'Close', `type` = 'LINK', `parent_id` = 47, `sequence` = 2, `property` = 'AUTH', `related` = '1013', `enable` = 1, `default_auth` = 0, `front_display` = 1 WHERE `id` = 201;
+-------------------------------
+---2023.8.9 违规登记
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (1019, '违规登记跟进', '/api/admin/tb/violation/detail/query', 'URL', 48, 1, 'AUTH', NULL, 1, 1, 0);
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (1020, '违规登记跟进', '/api/admin/tb/violation/detail/save', 'URL', 48, 1, 'AUTH', NULL, 1, 1, 0);
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (1021, '违规登记关闭', '/api/admin/tb/violation/close', 'URL', 48, 1, 'AUTH', NULL, 1, 1, 0);
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (1022, '违规登记跟进', '/api/admin/tb/violation/get', 'URL', 48, 1, 'AUTH', NULL, 1, 1, 0);
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (1023, '违规登记查询', '/api/admin/tb/violation/query', 'URL', 48, 1, 'AUTH', NULL, 1, 1, 0);
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (1024, '违规登记重启', '/api/admin/tb/violation/restart', 'URL', 48, 1, 'AUTH', NULL, 1, 1, 0);
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (1025, '违规登记保存', '/api/admin/tb/violation/save', 'URL', 48, 1, 'AUTH', NULL, 1, 1, 0);
+UPDATE `sys_privilege` SET `name` = '查询', `url` = 'Select', `type` = 'BUTTON', `parent_id` = 48, `sequence` = 1, `property` = 'AUTH', `related` = '1023', `enable` = 1, `default_auth` = 0, `front_display` = 1 WHERE `id` = 205;
+UPDATE `sys_privilege` SET `name` = '跟进', `url` = 'Follow', `type` = 'LINK', `parent_id` = 48, `sequence` = 1, `property` = 'AUTH', `related` = '1019,1020,1022', `enable` = 1, `default_auth` = 0, `front_display` = 1 WHERE `id` = 206;
+UPDATE `sys_privilege` SET `name` = '关闭', `url` = 'Close', `type` = 'LINK', `parent_id` = 48, `sequence` = 2, `property` = 'AUTH', `related` = '1021', `enable` = 1, `default_auth` = 0, `front_display` = 1 WHERE `id` = 207;
+UPDATE `sys_privilege` SET `name` = '重启', `url` = 'Restart', `type` = 'LINK', `parent_id` = 48, `sequence` = 3, `property` = 'AUTH', `related` = '1024', `enable` = 1, `default_auth` = 0, `front_display` = 1 WHERE `id` = 208;
+
+-------------------------------
+
+
+ALTER TABLE `sys_level_role`
+    CHANGE COLUMN `numbers` `quota` bigint NOT NULL COMMENT '配额' AFTER `role_id`;
+ALTER TABLE `sys_level`
+    ADD COLUMN `devices` bigint NULL COMMENT '设备数量' AFTER `level`;

+ 2 - 1
sop-business/src/main/resources/mapper/SysMessageMapper.xml

@@ -71,7 +71,8 @@
         LEFT JOIN sys_user u ON u.id = m.form_user_id
         LEFT JOIN sys_custom c ON c.manager_id = m.receive_user_id
         LEFT JOIN t_b_service bs ON bs.id = m.service_id
-        left join t_b_delay_warn w on w.crm_no=m.crm_no
+<!--        left join t_b_delay_warn w on w.crm_no=m.crm_no-->
+        left join t_b_delay_warn w on w.message_id=m.id
         <where>
             <if test="userId != null and userId != ''">
                 and m.receive_user_id = #{userId}

+ 51 - 1
sop-business/src/main/resources/mapper/TBDelayWarnMapper.xml

@@ -2,4 +2,54 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.qmth.sop.business.mapper.TBDelayWarnMapper">
 
-</mapper>
+    <select id="query" resultType="com.qmth.sop.business.bean.result.TBDelayWarnResult">
+        SELECT
+        a.*,
+        s.NAME service,
+        u.real_name user_name,
+        sc.NAME custom,
+        sc.type custom_type,
+        c.NAME crm_name
+        FROM
+        t_b_delay_warn a
+        LEFT JOIN sys_user u ON u.id = a.user_id
+        LEFT JOIN t_b_crm c ON c.crm_no = a.crm_no
+        LEFT JOIN sys_custom sc ON sc.id = c.custom_id
+        LEFT JOIN t_b_service s ON s.id = a.service_id
+        <where>
+            <if test="id != null and id != ''">
+                and a.id = #{id}
+            </if>
+            <if test="type != null and type != ''">
+                and a.type = #{type}
+            </if>
+            <if test="status != null and status != ''">
+                and a.status = #{status}
+            </if>
+            <if test="serviceId != null and serviceId != ''">
+                and a.service_id = #{serviceId}
+            </if>
+            <if test="custom != null and custom != ''">
+                and sc.name like concat('%', #{custom} , '%')
+            </if>
+            <if test="fieldObj != null and fieldObj != ''">
+                and a.field_obj like concat('%', #{fieldObj} , '%')
+            </if>
+            <if test="sopNo != null and sopNo != ''">
+                and a.sop_no like concat('%', #{sopNo} , '%')
+            </if>
+            <if test="startTime != null and startTime != '' ">
+                <![CDATA[
+               and a.warn_time >= #{startTime}
+               ]]>
+            </if>
+            <if test="endTime != null and endTime != ''">
+                <![CDATA[
+                and a.warn_time <= #{endTime}
+                ]]>
+            </if>
+        </where>
+
+        ORDER BY a.create_time DESC
+    </select>
+</mapper>

+ 56 - 1
sop-business/src/main/resources/mapper/TBViolationMapper.xml

@@ -2,4 +2,59 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.qmth.sop.business.mapper.TBViolationMapper">
 
-</mapper>
+    <select id="query" resultType="com.qmth.sop.business.bean.result.TBViolationResult">
+        SELECT
+        a.*,
+        s.NAME service,
+        u.real_name user_name,
+        sc.NAME custom,
+        sc.type custom_type,
+        c.NAME crm_name,
+        cu.real_name create_name
+        FROM
+        t_b_violation a
+        LEFT JOIN sys_user u ON u.id = a.user_id
+        LEFT JOIN sys_user cu ON cu.id = a.create_id
+        LEFT JOIN t_b_crm c ON c.crm_no = a.crm_no
+        LEFT JOIN sys_custom sc ON sc.id = c.custom_id
+        LEFT JOIN t_b_service s ON s.id = a.service_id
+        <where>
+            <if test="id != null and id != ''">
+                and a.id = #{id}
+            </if>
+            <if test="userId != null and userId != ''">
+                and a.user_id = #{userId}
+            </if>
+            <if test="createId != null and createId != ''">
+                and a.create_id = #{createId}
+            </if>
+            <if test="type != null and type != ''">
+                and a.type = #{type}
+            </if>
+            <if test="status != null and status != ''">
+                and a.status = #{status}
+            </if>
+            <if test="serviceId != null and serviceId != ''">
+                and a.service_id = #{serviceId}
+            </if>
+            <if test="custom != null and custom != ''">
+                and sc.name like concat('%', #{custom} , '%')
+            </if>
+            <if test="sopNo != null and sopNo != ''">
+                and a.sop_no like concat('%', #{sopNo} , '%')
+            </if>
+            <if test="startTime != null and startTime != '' ">
+                <![CDATA[
+               and a.warn_time >= #{startTime}
+               ]]>
+            </if>
+            <if test="endTime != null and endTime != ''">
+                <![CDATA[
+                and a.warn_time <= #{endTime}
+                ]]>
+            </if>
+        </where>
+
+        ORDER BY a.create_time DESC
+    </select>
+</mapper>

+ 6 - 0
sop-common/src/main/java/com/qmth/sop/common/contant/SystemConstant.java

@@ -1,12 +1,14 @@
 package com.qmth.sop.common.contant;
 
 import com.aventrix.jnanoid.jnanoid.NanoIdUtils;
+import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.boot.core.uid.service.UidService;
 import com.qmth.sop.common.enums.ExceptionResultEnum;
 import com.qmth.sop.common.enums.UploadFileEnum;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.web.bind.annotation.RequestMapping;
 
 import java.io.File;
 import java.io.IOException;
@@ -134,6 +136,10 @@ public class SystemConstant {
     public static final String PREFIX_URL_MESSAGE = "/sys/message";
     public static final String PREFIX_URL_SERVICE_UNIT = "/service/unit";
     public static final String PREFIX_URL_ROLE = "/admin/role";
+    public static final String PREFIX_URL_DELAY_WARN = "/admin/tb/delay/warn";
+    public static final String PREFIX_URL_DELAY_WARN_DETAIL = "/admin/tb/delay/warn/detail";
+    public static final String PREFIX_URL_VIOLATION = "/admin/tb/violation";
+    public static final String PREFIX_URL_VIOLATION_DETAIL = "/admin/tb/violation/detail";
 
     /**
      * 缓存配置

+ 21 - 13
sop-server/src/main/java/com/qmth/sop/server/api/SysDingGroupController.java

@@ -1,5 +1,6 @@
 package com.qmth.sop.server.api;
 
+import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -8,9 +9,10 @@ import com.qmth.boot.api.annotation.BOOL;
 import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.sop.business.bean.result.EditResult;
 import com.qmth.sop.business.bean.result.SysDingGroupResult;
-import com.qmth.sop.business.entity.SysDevice;
-import com.qmth.sop.business.entity.SysDingGroup;
+import com.qmth.sop.business.bean.result.SysLevelResult;
+import com.qmth.sop.business.entity.*;
 import com.qmth.sop.business.service.SysDingGroupService;
+import com.qmth.sop.business.service.SysDingObjService;
 import com.qmth.sop.common.contant.SystemConstant;
 import com.qmth.sop.common.util.Result;
 import com.qmth.sop.common.util.ResultUtil;
@@ -44,13 +46,16 @@ public class SysDingGroupController {
     @Resource
     SysDingGroupService sysDingGroupService;
 
-   
+    @Resource
+    SysDingObjService sysDingObjService;
+
+    
     @ApiOperation(value = "考勤组表查询接口")
     @RequestMapping(value = "/query", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "考勤组表列表信息", response = SysDingGroupResult.class)})
     public Result query(
                 @ApiParam(value = "查询条件", required = false) @RequestParam(required = false) String query,
-                @ApiParam(value = "服务单元id", required = false) @RequestParam(required = false) long serviceId,
+                @ApiParam(value = "服务单元id", required = false) @RequestParam(required = false) Long serviceId,
                 @ApiParam(value = "分页页码", required = true) @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
                 @ApiParam(value = "分页数", required = true) @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
         IPage<SysDingGroupResult> resultIPage = sysDingGroupService.query(new Page<>(pageNumber, pageSize),query,serviceId);
@@ -58,27 +63,27 @@ public class SysDingGroupController {
         return ResultUtil.ok(resultIPage);
     }
 
-   
+    
     @ApiOperation(value = "新增考勤组表接口")
     @RequestMapping(value = "/add", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "新增考勤组表信息", response = Object.class)})
-    public Result add(@ApiParam(value = "考勤组表信息", required = true) @RequestBody(required = true) SysDingGroup sysDingGroup) {
+    public Result add(@ApiParam(value = "考勤组表信息", required = true) @RequestBody(required = true) SysDingGroupResult sysDingGroup) {
         sysDingGroupService.add(sysDingGroup);
         return ResultUtil.ok();
     }
 
 
-   
+    
     @ApiOperation(value = "修改考勤组表接口")
     @RequestMapping(value = "/update", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "修改考勤组表信息", response = Object.class)})
-    public Result update(@ApiParam(value = "考勤组表信息", required = true) @RequestBody(required = true) SysDingGroup sysDingGroup) {
+    public Result update(@ApiParam(value = "考勤组表信息", required = true) @RequestBody(required = true) SysDingGroupResult sysDingGroup) {
         sysDingGroupService.update(sysDingGroup);
         return ResultUtil.ok();
     }
 
 
-   
+    
     @ApiOperation(value = "删除考勤组表接口")
     @RequestMapping(value = "/delete", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "删除考勤组表信息", response = Object.class)})
@@ -90,7 +95,7 @@ public class SysDingGroupController {
     /*列表
 
      */
-   
+    
     @ApiOperation(value = "考勤组表列表接口")
     @RequestMapping(value = "/list", method = RequestMethod.GET)
     @ApiResponses({@ApiResponse(code = 200, message = "考勤组表列表", response = SysDingGroup.class, responseContainer = "List")})
@@ -102,12 +107,15 @@ public class SysDingGroupController {
      * @param id
      * @return
      */
-
+    
     @ApiOperation(value = "获取单个考勤组表信息")
     @RequestMapping(value = "/get", method = RequestMethod.GET)
-    @ApiResponses({@ApiResponse(code = 200, message = "考勤组表信息", response = SysDingGroup.class)})
+    @ApiResponses({@ApiResponse(code = 200, message = "考勤组表信息", response = SysDingGroupResult.class)})
     public Result get(@ApiParam(value = "id", required = true) @RequestParam(value = "id") long id) {
-        return ResultUtil.ok(sysDingGroupService.getById(id));
+        SysDingGroup sysDingGroup = sysDingGroupService.getById(id);
+        SysDingGroupResult sysDingGroupResult= JSON.toJavaObject((JSON) JSON.toJSON(sysDingGroup),SysDingGroupResult.class);
+        sysDingGroupResult.setDingObjs(sysDingObjService.list(new QueryWrapper<SysDingObj>().lambda().eq(SysDingObj::getDingGroupId, id)));
+        return ResultUtil.ok(sysDingGroupResult);
     }
 
 

+ 27 - 16
sop-server/src/main/java/com/qmth/sop/server/api/SysLevelController.java

@@ -1,11 +1,16 @@
 package com.qmth.sop.server.api;
 
+import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.qmth.boot.api.annotation.Aac;
+import com.qmth.boot.api.annotation.BOOL;
 import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.sop.business.bean.result.SysLevelResult;
 import com.qmth.sop.business.entity.SysLevel;
+import com.qmth.sop.business.entity.SysLevelRole;
+import com.qmth.sop.business.service.SysLevelRoleService;
 import com.qmth.sop.business.service.SysLevelService;
 import com.qmth.sop.common.contant.SystemConstant;
 import com.qmth.sop.common.util.Result;
@@ -21,7 +26,7 @@ import java.util.Objects;
 
 /**
  * 档位表 控制器.
- * 
+ *
  * @author: shudonghui
  * @date: 2023-08-02 14:37:24
  * @version: 1.0
@@ -30,7 +35,7 @@ import java.util.Objects;
  */
 @Api(tags = "档位表 Controller")
 @RestController
-@RequestMapping(ApiConstant.DEFAULT_URI_PREFIX+SystemConstant.PREFIX_URL_LEVEL)
+@RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + SystemConstant.PREFIX_URL_LEVEL)
 @Validated
 public class SysLevelController {
 
@@ -38,13 +43,17 @@ public class SysLevelController {
     @Resource
     SysLevelService sysLevelService;
 
+
+    @Resource
+    SysLevelRoleService sysLevelRoleService;
+
    
     @ApiOperation(value = "档位表查询接口")
     @RequestMapping(value = "/query", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "档位表列表信息", response = SysLevelResult.class)})
     public Result query(
-                @ApiParam(value = "分页页码", required = true) @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
-                @ApiParam(value = "分页数", required = true) @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
+            @ApiParam(value = "分页页码", required = true) @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
+            @ApiParam(value = "分页数", required = true) @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
         IPage<SysLevelResult> resultIPage = sysLevelService.query(new Page<>(pageNumber, pageSize));
 
         return ResultUtil.ok(resultIPage);
@@ -54,8 +63,8 @@ public class SysLevelController {
     @ApiOperation(value = "新增档位表接口")
     @RequestMapping(value = "/add", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "新增档位表信息", response = Object.class)})
-    public Result add(@ApiParam(value = "档位表信息", required = true) @RequestBody(required = true) SysLevel sysLevel) {
-        sysLevelService.add(sysLevel);
+    public Result add(@ApiParam(value = "档位表信息", required = true) @RequestBody(required = true) SysLevelResult sysLevelResult) {
+        sysLevelService.add(sysLevelResult);
         return ResultUtil.ok();
     }
 
@@ -63,8 +72,8 @@ public class SysLevelController {
     @ApiOperation(value = "修改档位表接口")
     @RequestMapping(value = "/update", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "修改档位表信息", response = Object.class)})
-    public Result update(@ApiParam(value = "档位表信息", required = true) @RequestBody(required = true) SysLevel sysLevel) {
-        sysLevelService.update(sysLevel);
+    public Result update(@ApiParam(value = "档位表信息", required = true) @RequestBody(required = true) SysLevelResult sysLevelResult) {
+        sysLevelService.update(sysLevelResult);
         return ResultUtil.ok();
     }
 
@@ -79,31 +88,33 @@ public class SysLevelController {
 
     /**
      * 获取档位表列表
+     *
      * @return
      */
+   
     @ApiOperation(value = "获取档位表列表接口")
     @RequestMapping(value = "/list", method = RequestMethod.GET)
     @ApiResponses({@ApiResponse(code = 200, message = "档位表列表", response = SysLevel.class)})
     public Result list(@ApiParam(value = "查询条件", required = false) @RequestParam(required = false) Boolean enable) {
-        return ResultUtil.ok(sysLevelService.list(Objects.nonNull(enable)?new QueryWrapper<SysLevel>().lambda().eq(SysLevel::getEnable, enable):new QueryWrapper<>()));
+        return ResultUtil.ok(sysLevelService.list(Objects.nonNull(enable) ? new QueryWrapper<SysLevel>().lambda().eq(SysLevel::getEnable, enable) : new QueryWrapper<>()));
     }
 
     /**
      * 获取单个
+     *
      * @param id
      * @return
      */
-
+   
     @ApiOperation(value = "获取单个档位表接口")
     @RequestMapping(value = "/get", method = RequestMethod.GET)
-    @ApiResponses({@ApiResponse(code = 200, message = "档位表", response = SysLevel.class)})
+    @ApiResponses({@ApiResponse(code = 200, message = "档位表", response = SysLevelResult.class)})
     public Result get(@ApiParam(value = "档位表id", required = true) @RequestParam long id) {
-        return ResultUtil.ok(sysLevelService.getById(id));
+        SysLevel sysLevel =sysLevelService.getById(id);
+        SysLevelResult sysLevelResult= JSON.toJavaObject((JSON) JSON.toJSON(sysLevel),SysLevelResult.class);
+        sysLevelResult.setRoleList(sysLevelRoleService.list(new QueryWrapper<SysLevelRole>().lambda().eq(SysLevelRole::getLevelId, sysLevelResult.getId())));
+        return ResultUtil.ok(sysLevelResult);
     }
 
 
-
-
-
-
 }

+ 93 - 12
sop-server/src/main/java/com/qmth/sop/server/api/TBDelayWarnController.java

@@ -1,20 +1,101 @@
 package com.qmth.sop.server.api;
 
-
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.qmth.boot.api.constant.ApiConstant;
+import com.qmth.boot.api.annotation.Aac;
+import com.qmth.boot.api.annotation.BOOL;
+import com.qmth.sop.business.bean.result.EditResult;
+import com.qmth.sop.business.bean.result.TBDelayWarnResult;
+import com.qmth.sop.business.entity.TBDelayWarn;
+import com.qmth.sop.business.service.TBDelayWarnService;
+import com.qmth.sop.common.contant.SystemConstant;
+import com.qmth.sop.common.enums.DelayWarnStatusEnum;
+import com.qmth.sop.common.enums.DelayWarnTypeEnum;
+import com.qmth.sop.common.enums.MessageTypeEnum;
+import com.qmth.sop.common.util.Result;
+import com.qmth.sop.common.util.ResultUtil;
+import io.swagger.annotations.*;
+import org.springframework.util.CollectionUtils; 
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+import javax.annotation.Resource;
+import javax.validation.constraints.Max;
+import javax.validation.constraints.Min;
+import java.util.List;
+import java.util.Objects;
 
 /**
- * <p>
- * 延期预警跟进表 前端控制器
- * </p>
- *
- * @author wangliang
- * @since 2023-08-01
+ * 延期预警跟进表 控制器
+ * 
+ * @author: shudonghui
+ * @date: 2023-08-08 16:02:21
+ * @version: 1.0
+ * @email: shudonghui@qmth.com.cn
+ * @Company: www.qmth.com.cn
  */
+@Api(tags = "延期预警跟进表 Controller")
 @RestController
-@RequestMapping("/t-bdelay-warn")
+@RequestMapping(ApiConstant.DEFAULT_URI_PREFIX+SystemConstant.PREFIX_URL_DELAY_WARN)
+@Validated
 public class TBDelayWarnController {
 
-}
+
+    @Resource
+    TBDelayWarnService tBDelayWarnService;
+
+    
+    @ApiOperation(value = "延期预警跟进表查询接口")
+    @RequestMapping(value = "/query", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "延期预警跟进表查询结果", response = TBDelayWarnResult.class)})
+    public Result query(
+                @ApiParam(value = "预警类型", required = false) @RequestParam(required = false) DelayWarnTypeEnum type,
+                @ApiParam(value = "跟进状态", required = false) @RequestParam(required = false) DelayWarnStatusEnum status,
+                @ApiParam(value = "服务单元", required = false) @RequestParam(required = false) Long serviceId,
+                @ApiParam(value = "客户名称(模糊查询)", required = false) @RequestParam(required = false) String custom,
+                @ApiParam(value = "预警字段(模糊查询)", required = false) @RequestParam(required = false) String fieldObj,
+                @ApiParam(value = "SOP流水号(模糊查询)", required = false) @RequestParam(required = false) String sopNo,
+                @ApiParam(value = "预警时间开始", required = false) @RequestParam(required = false) Long startTime,
+                @ApiParam(value = "预警时间结束", required = false) @RequestParam(required = false) Long endTime,
+                @ApiParam(value = "分页页码", required = true) @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
+                @ApiParam(value = "分页数", required = true) @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
+        IPage<TBDelayWarnResult> resultIPage = tBDelayWarnService.query(new Page<>(pageNumber, pageSize),type,status,serviceId,custom,fieldObj,sopNo,startTime,endTime,null);
+
+        return ResultUtil.ok(resultIPage);
+    }
+
+
+    
+    @ApiOperation(value = "延期预警跟进表获取单个接口")
+    @RequestMapping(value = "/get", method = RequestMethod.GET)
+    @ApiResponses({@ApiResponse(code = 200, message = "延期预警跟进表信息", response = TBDelayWarnResult.class)})
+    public Result get(@ApiParam(value = "延期预警跟进表id", required = true) @RequestParam long id) {
+        IPage<TBDelayWarnResult> resultIPage = tBDelayWarnService.query(new Page<>(1, 1),null,null,null,null,null,null,null,null,id);
+        return ResultUtil.ok(resultIPage.getRecords().get(0));
+    }
+
+    //关闭延期预警跟进
+    
+    @ApiOperation(value = "关闭延期预警跟进")
+    @RequestMapping(value = "/close", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "关闭成功")})
+    public Result close(@ApiParam(value = "延期预警跟进表id", required = true) @RequestParam long id) {
+        TBDelayWarn tBDelayWarn = tBDelayWarnService.getById(id);
+        tBDelayWarn.setStatus(DelayWarnStatusEnum.CLOSE);
+        tBDelayWarnService.saveTBDelayWarn(tBDelayWarn);
+        return ResultUtil.ok();
+    }
+    //重启延期预警跟进
+    
+    @ApiOperation(value = "重启延期预警跟进")
+    @RequestMapping(value = "/restart", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "重启成功")})
+    public Result restart(@ApiParam(value = "延期预警跟进表id", required = true) @RequestParam long id) {
+        TBDelayWarn tBDelayWarn = tBDelayWarnService.getById(id);
+        tBDelayWarn.setStatus(DelayWarnStatusEnum.RESTART);
+        tBDelayWarnService.saveTBDelayWarn(tBDelayWarn);
+        return ResultUtil.ok();
+    }
+
+
+}

+ 46 - 10
sop-server/src/main/java/com/qmth/sop/server/api/TBDelayWarnDetailController.java

@@ -1,20 +1,56 @@
 package com.qmth.sop.server.api;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.qmth.boot.api.annotation.Aac;
+import com.qmth.boot.api.annotation.BOOL;
+import com.qmth.boot.api.constant.ApiConstant;
+import com.qmth.sop.business.entity.TBDelayWarnDetail;
+import com.qmth.sop.business.service.TBDelayWarnDetailService;
+import com.qmth.sop.common.contant.SystemConstant;
+import com.qmth.sop.common.util.Result;
+import com.qmth.sop.common.util.ResultUtil;
+import io.swagger.annotations.*;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
 
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
+import javax.annotation.Resource;
+import java.util.List;
 
 /**
- * <p>
- * 延期预警明细表 前端控制器
- * </p>
+ * 延期预警明细表 控制器
  *
- * @author wangliang
- * @since 2023-08-01
+ * @author: shudonghui
+ * @date: 2023-08-08 16:02:22
+ * @version: 1.0
+ * @email: shudonghui@qmth.com.cn
+ * @Company: www.qmth.com.cn
  */
+@Api(tags = "延期预警明细表 Controller")
 @RestController
-@RequestMapping("/t-bdelay-warn-detail")
+@RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + SystemConstant.PREFIX_URL_DELAY_WARN_DETAIL)
+@Validated
 public class TBDelayWarnDetailController {
 
-}
+
+    @Resource
+    TBDelayWarnDetailService tBDelayWarnDetailService;
+
+   
+    @ApiOperation(value = "延期预警明细表查询接口")
+    @RequestMapping(value = "/list", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "延期预警明细表查询结果", response = TBDelayWarnDetail.class)})
+    public Result list(@ApiParam(value = "延期预警表id", required = true) @RequestParam(required = true) long id) {
+        List<TBDelayWarnDetail> resultIPage = tBDelayWarnDetailService.list(new QueryWrapper<TBDelayWarnDetail>().lambda().eq(TBDelayWarnDetail::getDelayWarnId, id).orderByDesc(TBDelayWarnDetail::getCreateTime));
+        return ResultUtil.ok(resultIPage);
+    }
+
+   
+    @ApiOperation(value = "延期预警明细表新增修改接口")
+    @RequestMapping(value = "/save", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = Object.class)})
+    public Result save(@ApiParam(value = "延期预警明细表信息", required = true) @RequestBody(required = true) TBDelayWarnDetail tBDelayWarnDetail) {
+        return ResultUtil.ok(tBDelayWarnDetailService.saveTBDelayWarnDetail(tBDelayWarnDetail));
+    }
+
+
+}

+ 100 - 11
sop-server/src/main/java/com/qmth/sop/server/api/TBViolationController.java

@@ -1,20 +1,109 @@
 package com.qmth.sop.server.api;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.qmth.boot.api.annotation.Aac;
+import com.qmth.boot.api.annotation.BOOL;
+import com.qmth.boot.api.constant.ApiConstant;
+import com.qmth.sop.business.bean.result.TBViolationResult;
+import com.qmth.sop.business.entity.TBViolation;
+import com.qmth.sop.business.service.TBViolationService;
+import com.qmth.sop.common.contant.SystemConstant;
+import com.qmth.sop.common.enums.ViolationStatusEnum;
+import com.qmth.sop.common.enums.ViolationTypeEnum;
+import com.qmth.sop.common.util.Result;
+import com.qmth.sop.common.util.ResultUtil;
+import io.swagger.annotations.*;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
 
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
+import javax.annotation.Resource;
+import javax.validation.constraints.Max;
+import javax.validation.constraints.Min;
 
 /**
- * <p>
- * sop违规登记表 前端控制器
- * </p>
- *
- * @author wangliang
- * @since 2023-08-01
+ * sop违规登记表 控制器
+ * 
+ * @author: shudonghui
+ * @date: 2023-08-09 10:33:08
+ * @version: 1.0
+ * @email: shudonghui@qmth.com.cn
+ * @Company: www.qmth.com.cn
  */
+@Api(tags = "sop违规登记表 Controller")
 @RestController
-@RequestMapping("/t-bviolation")
+@RequestMapping(ApiConstant.DEFAULT_URI_PREFIX+SystemConstant.PREFIX_URL_VIOLATION)
+@Validated
 public class TBViolationController {
 
-}
+
+    @Resource
+    TBViolationService tBViolationService;
+
+   
+    @ApiOperation(value = "sop违规登记表查询接口")
+    @RequestMapping(value = "/query", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "sop违规登记表查询结果", response = TBViolationResult.class)})
+    public Result query(
+                @ApiParam(value = "服务单元", required = false) @RequestParam(required = false) Long serviceId,
+                @ApiParam(value = "违规类型", required = false) @RequestParam(required = false) ViolationTypeEnum type,
+                @ApiParam(value = "跟进状态", required = false) @RequestParam(required = false) ViolationStatusEnum status,
+                @ApiParam(value = "节点负责人", required = false) @RequestParam(required = false) Long userId,
+                @ApiParam(value = "客户名称(模糊查询)", required = false) @RequestParam(required = false) String custom,
+                @ApiParam(value = "SOP流水号(模糊查询)", required = false) @RequestParam(required = false) String sopNo,
+                @ApiParam(value = "登记人", required = false) @RequestParam(required = false) Long createId,
+                @ApiParam(value = "登记时间开始", required = false) @RequestParam(required = false) Long startTime,
+                @ApiParam(value = "登记时间结束", required = false) @RequestParam(required = false) Long endTime,
+                @ApiParam(value = "分页页码", required = true) @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
+                @ApiParam(value = "分页数", required = true) @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
+        IPage<TBViolationResult> resultIPage = tBViolationService.query(new Page<>(pageNumber, pageSize),serviceId,type,status,userId,custom,sopNo,createId,startTime,endTime,null);
+
+        return ResultUtil.ok(resultIPage);
+    }
+
+
+
+   
+    @ApiOperation(value = "sop违规登记表新增修改接口")
+    @RequestMapping(value = "/save", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = Object.class)})
+    public Result save(@ApiParam(value = "sop违规登记表信息", required = true) @RequestBody(required = true) TBViolation tBViolation) {
+        return ResultUtil.ok(tBViolationService.saveTBViolation(tBViolation));
+    }
+
+
+    //关闭违规登记
+   
+    @ApiOperation(value = "关闭违规登记")
+    @RequestMapping(value = "/close", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "关闭成功")})
+    public Result close(@ApiParam(value = "违规登记id", required = true) @RequestParam(required = true) long id) {
+        TBViolation  tBViolation = tBViolationService.getById(id);
+        tBViolation.setStatus(ViolationStatusEnum.CLOSE);
+        return ResultUtil.ok(tBViolationService.saveTBViolation(tBViolation));
+    }
+
+    //重启违规登记
+   
+    @ApiOperation(value = "重启违规登记")
+    @RequestMapping(value = "/restart", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "重启成功")})
+    public Result restart(@ApiParam(value = "违规登记id", required = true) @RequestParam(required = true) long id) {
+        TBViolation  tBViolation = tBViolationService.getById(id);
+        tBViolation.setStatus(ViolationStatusEnum.RESTART);
+        return ResultUtil.ok(tBViolationService.saveTBViolation(tBViolation));
+    }
+
+
+
+   
+    @ApiOperation(value = "sop违规登记表获取单个接口")
+    @RequestMapping(value = "/get", method = RequestMethod.GET)
+    @ApiResponses({@ApiResponse(code = 200, message = "sop违规登记表信息", response = TBViolationResult.class)})
+    public Result get(@ApiParam(value = "sop违规登记表id", required = true) @RequestParam long id) {
+        IPage<TBViolationResult> resultIPage = tBViolationService.query(new Page<>(1, 1),null,null,null,null,null,null,null,null,null,null);
+        return ResultUtil.ok(resultIPage.getRecords().get(0));
+    }
+
+
+}

+ 57 - 12
sop-server/src/main/java/com/qmth/sop/server/api/TBViolationDetailController.java

@@ -1,20 +1,65 @@
 package com.qmth.sop.server.api;
 
-
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.qmth.boot.api.constant.ApiConstant;
+import com.qmth.boot.api.annotation.Aac;
+import com.qmth.boot.api.annotation.BOOL;
+import com.qmth.sop.business.bean.result.EditResult;
+import com.qmth.sop.business.entity.TBDelayWarnDetail;
+import com.qmth.sop.business.entity.TBViolationDetail;
+import com.qmth.sop.business.service.TBViolationDetailService;
+import com.qmth.sop.common.contant.SystemConstant;
+import com.qmth.sop.common.util.Result;
+import com.qmth.sop.common.util.ResultUtil;
+import io.swagger.annotations.*;
+import org.springframework.util.CollectionUtils; 
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+import javax.annotation.Resource;
+import javax.validation.constraints.Max;
+import javax.validation.constraints.Min;
+import java.util.List;
+import java.util.Objects;
 
 /**
- * <p>
- * 违规明细表 前端控制器
- * </p>
- *
- * @author wangliang
- * @since 2023-08-01
+ * 违规明细表 控制器
+ * 
+ * @author: shudonghui
+ * @date: 2023-08-09 10:33:08
+ * @version: 1.0
+ * @email: shudonghui@qmth.com.cn
+ * @Company: www.qmth.com.cn
  */
+@Api(tags = "违规明细表 Controller")
 @RestController
-@RequestMapping("/t-bviolation-detail")
+@RequestMapping(ApiConstant.DEFAULT_URI_PREFIX+SystemConstant.PREFIX_URL_VIOLATION_DETAIL)
+@Validated
 public class TBViolationDetailController {
 
-}
+
+    @Resource
+    TBViolationDetailService tBViolationDetailService;
+
+   
+    @ApiOperation(value = "违规明细表查询接口")
+    @RequestMapping(value = "/query", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "违规明细表查询结果", response = TBViolationDetail.class)})
+    public Result query(@ApiParam(value = "sop违规登记表id", required = true) @RequestParam long id) {
+
+        List<TBViolationDetail> resultIPage = tBViolationDetailService.list(new QueryWrapper<TBViolationDetail>().lambda().eq(TBViolationDetail::getViolationId, id).orderByDesc(TBViolationDetail::getCreateTime));
+        return ResultUtil.ok(resultIPage);
+    }
+
+   
+    @ApiOperation(value = "违规明细表新增修改接口")
+    @RequestMapping(value = "/save", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = Object.class)})
+    public Result save(@ApiParam(value = "违规明细表信息", required = true) @RequestBody(required = true) TBViolationDetail tBViolationDetail) {
+        return ResultUtil.ok(tBViolationDetailService.saveTBViolationDetail(tBViolationDetail));
+    }
+
+
+
+}