Przeglądaj źródła

feat: agent compliance document support

shc 1 rok temu
rodzic
commit
d6a3541cc2

+ 41 - 0
doc/db/21wm_agent_comp_doc.sql

@@ -0,0 +1,41 @@
+USE `cnbg_20240511_001`;
+
+SET NAMES utf8mb4;
+SET FOREIGN_KEY_CHECKS = 0;
+
+-- ----------------------------
+-- Table structure for wm_agent_comp_doc
+-- ----------------------------
+DROP TABLE IF EXISTS `wm_agent_comp_doc`;
+CREATE TABLE `wm_agent_comp_doc`
+(
+    `doc_id`            BIGINT UNSIGNED AUTO_INCREMENT NOT NULL COMMENT '主键ID',
+    `dept_id`           INT                            NOT NULL COMMENT '代理商ID',
+    `emp_book`          JSON COMMENT '员工规范手册',
+    `ctrl_sys_manu`     JSON COMMENT '内部控制制度手册',
+    `inter_audit_doc`   JSON COMMENT '内部审计文件',
+    `comp_mant_sys`     JSON COMMENT '合规制度管理',
+    `anti_corr_bri_sys` JSON COMMENT '反腐败和反贿赂制度',
+    `emp_man_sys`       JSON COMMENT '员工招待管理制度',
+    `comp_commit_let`   JSON COMMENT '合规承诺函',
+    `inner_train_doc`   JSON COMMENT '内部合规培训材料',
+    `create_by`         VARCHAR(64)                    NOT NULL COMMENT '创建人',
+    `update_by`         VARCHAR(64)                    NOT NULL COMMENT '修改人',
+    `create_time`       DATETIME                       NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+    `update_time`       DATETIME                       NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
+    PRIMARY KEY `pk_id` (`doc_id`),
+    UNIQUE KEY `uk_did` (`dept_id`)
+) ENGINE = InnoDB
+  DEFAULT CHARSET = utf8mb4
+  COLLATE = utf8mb4_general_ci
+  ROW_FORMAT = DYNAMIC COMMENT ='服务商合规文件';
+
+
+-- ----------------------------
+-- Records of wm_agent_comp_doc
+-- ----------------------------
+BEGIN;
+COMMIT;
+
+
+SET FOREIGN_KEY_CHECKS = 1;

+ 51 - 0
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/dto/WmDaAgentDTO.java

@@ -1,6 +1,7 @@
 package com.qunzhixinxi.hnqz.admin.api.dto;
 
 import com.fasterxml.jackson.annotation.JsonAlias;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmAgentComplianceDocument;
 import com.qunzhixinxi.hnqz.admin.api.model.WmEvaluationResultItemModel;
 import lombok.AccessLevel;
 import lombok.Data;
@@ -149,4 +150,54 @@ public final class WmDaAgentDTO {
         @NotNull(message = "签约日期必填")
         private LocalDate signDate;
     }
+
+    @Data
+    public static class OnCompDocCreate {
+
+        private Integer documentId;
+
+        @NotNull(message = "企业ID必填")
+        public Integer deptId;
+
+        /**
+         * 员工规范手册
+         */
+        private List<WmAgentComplianceDocument.DocumentItem> employeeCodeHandbook;
+
+        /**
+         * 内部控制制度手册
+         */
+        private List<WmAgentComplianceDocument.DocumentItem> controlSystemManual;
+
+        /**
+         * 内部审计文件
+         */
+        private List<WmAgentComplianceDocument.DocumentItem> internalAuditDocuments;
+
+        /**
+         * 合规制度管理
+         */
+        private List<WmAgentComplianceDocument.DocumentItem> complianceMantSystem;
+
+        /**
+         * 反腐败和反贿赂制度
+         */
+        private List<WmAgentComplianceDocument.DocumentItem> antiCorrAndAntiBriManSys;
+
+        /**
+         * 员工招待管理制度
+         */
+        private List<WmAgentComplianceDocument.DocumentItem> employeeEntertainManSys;
+
+        /**
+         * 合规承诺函
+         */
+        private List<WmAgentComplianceDocument.DocumentItem> complianceCommitLet;
+
+        /**
+         * 内部合规培训材料
+         */
+        private List<WmAgentComplianceDocument.DocumentItem> internalComTrainMate;
+
+    }
 }

+ 117 - 0
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/entity/WmAgentComplianceDocument.java

@@ -0,0 +1,117 @@
+package com.qunzhixinxi.hnqz.admin.api.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * 服务商合规文件
+ *
+ * @author jimmy
+ * @date 2024-07-07 11:48
+ */
+@Data
+@TableName(value = "wm_agent_comp_doc")
+public class WmAgentComplianceDocument implements Serializable {
+
+    private static final long serialVersionUID = 8155202747309692397L;
+
+    /**
+     * 主键ID
+     */
+    @TableId(value = "doc_id", type = IdType.AUTO)
+    private Integer documentId;
+
+    /**
+     * 企业ID
+     */
+    private Integer deptId;
+
+    /**
+     * 员工规范手册
+     */
+    @TableField(value = "emp_book", typeHandler = JacksonTypeHandler.class)
+    private DocumentItem[] employeeCodeHandbook;
+
+    /**
+     * 内部控制制度手册
+     */
+    @TableField(value = "ctrl_sys_manu", typeHandler = JacksonTypeHandler.class)
+    private DocumentItem[] controlSystemManual;
+
+    /**
+     * 内部审计文件
+     */
+    @TableField(value = "inter_audit_doc", typeHandler = JacksonTypeHandler.class)
+    private DocumentItem[] internalAuditDocuments;
+
+    /**
+     * 合规制度管理
+     */
+    @TableField(value = "comp_mant_sys", typeHandler = JacksonTypeHandler.class)
+    private DocumentItem[] complianceMantSystem;
+
+    /**
+     * 反腐败和反贿赂制度
+     */
+    @TableField(value = "anti_corr_bri_sys", typeHandler = JacksonTypeHandler.class)
+    private DocumentItem[] antiCorrAndAntiBriManSys;
+
+    /**
+     * 员工招待管理制度
+     */
+    @TableField(value = "emp_man_sys", typeHandler = JacksonTypeHandler.class)
+    private DocumentItem[] employeeEntertainManSys;
+
+    /**
+     * 合规承诺函
+     */
+    @TableField(value = "comp_commit_let", typeHandler = JacksonTypeHandler.class)
+    private DocumentItem[] complianceCommitLet;
+
+    /**
+     * 内部合规培训材料
+     */
+    @TableField(value = "inner_train_doc", typeHandler = JacksonTypeHandler.class)
+    private DocumentItem[] internalComTrainMate;
+
+    /**
+     * 创建人
+     */
+    private String createBy;
+
+    /**
+     * 更新人
+     */
+    private String updateBy;
+
+    /**
+     * 创建时间
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 更新时间
+     */
+    private LocalDateTime updateTime;
+
+
+    @Data
+    public static class DocumentItem implements Serializable {
+
+        private static final long serialVersionUID = 8155202747309692397L;
+
+        private Integer fileId;
+
+        private String filePath;
+
+        private String orgName;
+
+    }
+}

+ 6 - 0
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/entity/WmAgentEvaluation.java

@@ -12,6 +12,12 @@ import java.io.Serializable;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 
+/**
+ * 服务商评价实体
+ *
+ * @author jimmy
+ * @date 2024-07-07 11:45
+ */
 @Data
 @TableName(value = "wm_agent_eval", autoResultMap = true)
 public class WmAgentEvaluation implements Serializable {

+ 0 - 3
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/ApiController.java

@@ -93,7 +93,6 @@ import com.qunzhixinxi.hnqz.admin.service.SysUserAgreementHistoryService;
 import com.qunzhixinxi.hnqz.admin.service.SysUserExtRecordService;
 import com.qunzhixinxi.hnqz.admin.service.SysUserService;
 import com.qunzhixinxi.hnqz.admin.service.SysUserSubService;
-import com.qunzhixinxi.hnqz.admin.service.WmAdRecordService;
 import com.qunzhixinxi.hnqz.admin.service.WmDaAgentService;
 import com.qunzhixinxi.hnqz.admin.service.WmDaDistributionService;
 import com.qunzhixinxi.hnqz.admin.service.WmDaDrugEntDrugtableService;
@@ -142,7 +141,6 @@ import org.apache.commons.lang3.ArrayUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.context.ApplicationEventPublisher;
 import org.springframework.data.redis.core.RedisTemplate;
-import org.springframework.http.ResponseEntity;
 import org.springframework.mock.web.MockMultipartFile;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.annotation.Validated;
@@ -153,7 +151,6 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
-import org.springframework.web.client.RestTemplate;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.imageio.ImageIO;

+ 25 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmDaAgentController.java

@@ -15,6 +15,7 @@ import com.qunzhixinxi.hnqz.admin.api.entity.SysDeptRelation;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysUser;
 import com.qunzhixinxi.hnqz.admin.api.constant.enums.DelEnum;
 import com.qunzhixinxi.hnqz.admin.api.constant.enums.EnableEnum;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmAgentComplianceDocument;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmAgentEvaluation;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmDaAgent;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmDaDrugEnt;
@@ -36,6 +37,7 @@ import com.qunzhixinxi.hnqz.admin.service.SysDeptRelationService;
 import com.qunzhixinxi.hnqz.admin.service.SysDeptService;
 import com.qunzhixinxi.hnqz.admin.service.SysEnterpriseAreaService;
 import com.qunzhixinxi.hnqz.admin.service.SysUserAreaService;
+import com.qunzhixinxi.hnqz.admin.service.WmAgentComplianceDocumentService;
 import com.qunzhixinxi.hnqz.admin.service.WmAgentEvaluationService;
 import com.qunzhixinxi.hnqz.admin.service.WmDaAgentService;
 import com.qunzhixinxi.hnqz.admin.service.WmDaDrugEntService;
@@ -102,6 +104,7 @@ public class WmDaAgentController {
     private final SysEnterpriseAreaService enterpriseAreaService;
     private final SysAreaEntityService areaEntityService;
     private final WmAgentEvaluationService agentEvaluationService;
+    private final WmAgentComplianceDocumentService agentComplianceDocumentService;
 
     /**
      * 分页查询
@@ -1109,4 +1112,26 @@ public class WmDaAgentController {
 
     }
 
+    @SysLog(value = "添加企业合规文件")
+    @PostMapping(value = "/comp/doc/create")
+    public R<Boolean> createAgentComplianceDocument(@Validated @RequestBody WmDaAgentDTO.OnCompDocCreate resource){
+
+
+        boolean res = agentComplianceDocumentService.create(resource, SecurityUtils.getUser());
+
+        return R.ok(res);
+
+    }
+
+    @GetMapping(value = "/comp/doc/{dept_id}")
+    public R<WmAgentComplianceDocument> getAgentComplianceDocument(@PathVariable(value = "dept_id") Integer deptId) {
+
+        return R.ok(agentComplianceDocumentService.getDoc(deptId));
+
+    }
+
+
+
+
+
 }

+ 15 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/mapper/WmAgentComplianceDocumentMapper.java

@@ -0,0 +1,15 @@
+package com.qunzhixinxi.hnqz.admin.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmAgentComplianceDocument;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 企业合规文件mapper
+ *
+ * @author jimmy
+ * @date 07/07/2024 12:10
+ */
+@Mapper
+public interface WmAgentComplianceDocumentMapper extends BaseMapper<WmAgentComplianceDocument> {
+}

+ 32 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmAgentComplianceDocumentService.java

@@ -0,0 +1,32 @@
+package com.qunzhixinxi.hnqz.admin.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.qunzhixinxi.hnqz.admin.api.dto.WmDaAgentDTO;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmAgentComplianceDocument;
+import com.qunzhixinxi.hnqz.common.security.service.HnqzUser;
+
+/**
+ * 企业合规材料服务
+ *
+ * @author jimmy
+ * @date 07/07/2024 12:12
+ */
+public interface WmAgentComplianceDocumentService extends IService<WmAgentComplianceDocument> {
+
+    /**
+     * 添加企业合规材料
+     *
+     * @param resource 合规材料
+     * @param user     操作人
+     * @return 添加结果
+     */
+    boolean create(WmDaAgentDTO.OnCompDocCreate resource, HnqzUser user);
+
+    /**
+     * 获取企业合规文件记录
+     *
+     * @param deptId 企业ID
+     * @return 文件记录
+     */
+    WmAgentComplianceDocument getDoc(Integer deptId);
+}

+ 4 - 2
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/SysFileServiceImpl.java

@@ -3,6 +3,7 @@ package com.qunzhixinxi.hnqz.admin.service.impl;
 import cn.hutool.core.date.DatePattern;
 import cn.hutool.core.io.FileUtil;
 import cn.hutool.core.io.IoUtil;
+import cn.hutool.core.text.StrPool;
 import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -61,9 +62,10 @@ public class SysFileServiceImpl extends ServiceImpl<SysFileMapper, SysFile> impl
         // 判断是否有重名的操作
 
 
-        String fileName = IdUtil.simpleUUID() + StrUtil.DOT + FileUtil.extName(file.getOriginalFilename());
-        Map<String, String> resultMap = new HashMap<>(4);
+        String fileName = IdUtil.simpleUUID() + StrPool.DOT + FileUtil.extName(file.getOriginalFilename());
+        Map<String, String> resultMap = new HashMap<>(5);
         resultMap.put("bucketName", ossProperties.getBucketName());
+        resultMap.put("orgFileName", file.getOriginalFilename());
         resultMap.put("fileName", DateTimeFormatter.ofPattern(DatePattern.PURE_DATE_PATTERN).format(LocalDateTime.now()) + File.separator + fileName);
         resultMap.put("url", String.format("/admin/sys-file/%s/%s", ossProperties.getBucketName(), fileName));
 

+ 73 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmAgentComplianceDocumentServiceImpl.java

@@ -0,0 +1,73 @@
+package com.qunzhixinxi.hnqz.admin.service.impl;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qunzhixinxi.hnqz.admin.api.dto.WmDaAgentDTO;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmAgentComplianceDocument;
+import com.qunzhixinxi.hnqz.admin.mapper.WmAgentComplianceDocumentMapper;
+import com.qunzhixinxi.hnqz.admin.service.WmAgentComplianceDocumentService;
+import com.qunzhixinxi.hnqz.common.security.service.HnqzUser;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.time.LocalDateTime;
+
+/**
+ * 企业合规服务实现
+ *
+ * @author jimmy
+ * @date 2024/07/07 12:13
+ */
+@Slf4j
+@Service
+@AllArgsConstructor
+public class WmAgentComplianceDocumentServiceImpl extends ServiceImpl<WmAgentComplianceDocumentMapper, WmAgentComplianceDocument> implements WmAgentComplianceDocumentService {
+    /**
+     * 添加企业合规材料
+     *
+     * @param resource 合规材料
+     * @param user     操作人
+     * @return 添加结果
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean create(WmDaAgentDTO.OnCompDocCreate resource, HnqzUser user) {
+
+        WmAgentComplianceDocument document = new WmAgentComplianceDocument();
+        document.setDeptId(resource.deptId);
+        document.setEmployeeCodeHandbook(resource.getEmployeeCodeHandbook().toArray(new WmAgentComplianceDocument.DocumentItem[0]));
+        document.setControlSystemManual(resource.getControlSystemManual().toArray(new WmAgentComplianceDocument.DocumentItem[0]));
+        document.setInternalAuditDocuments(resource.getInternalAuditDocuments().toArray(new WmAgentComplianceDocument.DocumentItem[0]));
+        document.setComplianceMantSystem(resource.getComplianceMantSystem().toArray(new WmAgentComplianceDocument.DocumentItem[0]));
+        document.setAntiCorrAndAntiBriManSys(resource.getAntiCorrAndAntiBriManSys().toArray(new WmAgentComplianceDocument.DocumentItem[0]));
+        document.setEmployeeEntertainManSys(resource.getEmployeeEntertainManSys().toArray(new WmAgentComplianceDocument.DocumentItem[0]));
+        document.setComplianceCommitLet(resource.getComplianceCommitLet().toArray(new WmAgentComplianceDocument.DocumentItem[0]));
+        document.setInternalComTrainMate(resource.getInternalAuditDocuments().toArray(new WmAgentComplianceDocument.DocumentItem[0]));
+        document.setDocumentId(resource.getDocumentId());
+
+        boolean updateFlag = resource.getDocumentId() != null;
+        String username = user.getUsername();
+        LocalDateTime now = LocalDateTime.now();
+
+        if (!updateFlag) {
+            document.setCreateBy(username);
+            document.setCreateTime(now);
+        }
+        document.setUpdateBy(username);
+        document.setUpdateTime(now);
+        return this.saveOrUpdate(document);
+    }
+
+    /**
+     * 获取企业合规文件记录
+     *
+     * @param deptId 企业ID
+     * @return 文件记录
+     */
+    @Override
+    public WmAgentComplianceDocument getDoc(Integer deptId) {
+        return this.getOne(Wrappers.<WmAgentComplianceDocument>lambdaQuery().eq(WmAgentComplianceDocument::getDeptId, deptId));
+    }
+}