Browse Source

0.3版本代码提交

fuyuchuan 2 months ago
parent
commit
a0419fec6f

+ 1 - 0
service-oa/service-oa-biz/src/main/java/com/usky/oa/controller/web/OaApprovalController.java

@@ -61,5 +61,6 @@ public class OaApprovalController {
         return oaApprovalService.pageList(queryType, docNo, formSign, approvalStatus, startTime, endTime, pageNum, pageSize);
     }
 
+
 }
 

+ 13 - 4
service-oa/service-oa-biz/src/main/java/com/usky/oa/controller/web/OaDocumentController.java

@@ -1,6 +1,7 @@
 package com.usky.oa.controller.web;
 
 
+import com.alibaba.fastjson.JSONObject;
 import com.usky.common.core.bean.CommonPage;
 import com.usky.common.log.annotation.Log;
 import com.usky.common.log.enums.BusinessType;
@@ -44,9 +45,17 @@ public class OaDocumentController {
         return oaDocumentService.myApplication(docNo, type, status, startTime, endTime, pageNum, pageSize);
     }
 
+    /**
+     * @description: 新增单据
+     * @author: fyc
+     * @email yuchuan.fu@chinausky.com
+     * @date: 2025/1/17 14:19
+     * @param: [oaDocument]
+     * @return: void
+     **/
     @Log(title = "新增单据", businessType = BusinessType.INSERT)
     @PostMapping("/add")
-    public void addDocument(@RequestBody Object oaDocument) {
+    public void addDocument(@RequestBody JSONObject oaDocument) {
         oaDocumentService.addDoc(oaDocument);
     }
 
@@ -64,9 +73,9 @@ public class OaDocumentController {
     }
 
     @Log(title = "更新单据", businessType = BusinessType.UPDATE)
-    @GetMapping("/update")
-    public void approvalCount(@RequestBody Object oaDocument) {
-        oaDocumentService.updateDoc(oaDocument);
+    @PostMapping("/update")
+    public void approvalCount(@RequestBody JSONObject jsonDocument) {
+        oaDocumentService.updateDoc(jsonDocument);
     }
 
     // 提交单据

+ 2 - 1
service-oa/service-oa-biz/src/main/java/com/usky/oa/domain/OaQjdDocument.java

@@ -1,5 +1,6 @@
 package com.usky.oa.domain;
 
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import java.time.LocalDateTime;
@@ -19,7 +20,7 @@ import lombok.EqualsAndHashCode;
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
-public class OaQjdDocument implements Serializable {
+public class OaQjdDocument extends JSONObject implements Serializable {
 
     private static final long serialVersionUID = 1L;
 

+ 18 - 0
service-oa/service-oa-biz/src/main/java/com/usky/oa/mapper/OaDocumentMapper.java

@@ -3,6 +3,10 @@ package com.usky.oa.mapper;
 import com.usky.oa.domain.OaDocument;
 import com.usky.common.mybatis.core.CrudMapper;
 
+import java.util.List;
+import java.util.Map;
+
+
 /**
  * <p>
  * 单据总表 Mapper 接口
@@ -13,4 +17,18 @@ import com.usky.common.mybatis.core.CrudMapper;
  */
 public interface OaDocumentMapper extends CrudMapper<OaDocument> {
 
+    // 动态创建表
+    void createTable(Map<String, Object> params);
+
+    // 动态插入数据
+    void insertData(Map<String, Object> params);
+
+    // 动态查询数据
+    List<Map<String, Object>> selectData(Map<String, Object> params);
+
+    // 动态更新数据
+    void updateData(Map<String, Object> params);
+
+    // 动态删除数据
+    void deleteData(Map<String, Object> params);
 }

+ 3 - 2
service-oa/service-oa-biz/src/main/java/com/usky/oa/service/OaDocumentService.java

@@ -1,5 +1,6 @@
 package com.usky.oa.service;
 
+import com.alibaba.fastjson.JSONObject;
 import com.usky.common.core.bean.CommonPage;
 import com.usky.oa.domain.OaDocument;
 import com.usky.common.mybatis.core.CrudService;
@@ -55,7 +56,7 @@ public interface OaDocumentService extends CrudService<OaDocument> {
      * @param: [oaDocument]
      * @return: void
      **/
-    void addDoc(Object oaDocument);
+    void addDoc(JSONObject oaDocument);
 
     /**
      * @description: 修改单据
@@ -65,7 +66,7 @@ public interface OaDocumentService extends CrudService<OaDocument> {
      * @param: [oaDocument]
      * @return: com.usky.oa.domain.OaDocument
      **/
-    void updateDoc(Object oaDocument);
+    void updateDoc(JSONObject jsonDocument);
 
     /**
      * @description: 提交单据

+ 1 - 0
service-oa/service-oa-biz/src/main/java/com/usky/oa/service/impl/OaApprovalServiceImpl.java

@@ -85,6 +85,7 @@ public class OaApprovalServiceImpl extends AbstractCrudService<OaApprovalMapper,
             case 3:
                 queryWrapper.like(StringUtils.isNotBlank(docNo), OaApproval::getDocNo, docNo)
                         .like(StringUtils.isNotBlank(formSign), OaApproval::getDocNo, formSign)
+                        .eq(OaApproval::getType, 1)
                         .eq(approvalStatus != null && approvalStatus > 0 && approvalStatus < 4, OaApproval::getApprovalStatus, approvalStatus)
                         .between(StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime), OaApproval::getSubmitDate, startTime, endTime);
                 break;

+ 93 - 27
service-oa/service-oa-biz/src/main/java/com/usky/oa/service/impl/OaDocumentServiceImpl.java

@@ -3,27 +3,31 @@ package com.usky.oa.service.impl;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.usky.common.core.bean.CommonPage;
+import com.usky.common.core.exception.BusinessException;
 import com.usky.common.security.utils.SecurityUtils;
 import com.usky.oa.domain.OaDocument;
+import com.usky.oa.domain.OaFormDefinition;
 import com.usky.oa.domain.OaJbdDocument;
 import com.usky.oa.domain.OaQjdDocument;
 import com.usky.oa.mapper.OaDocumentMapper;
+import com.usky.oa.mapper.OaFormDefinitionMapper;
 import com.usky.oa.mapper.OaJbdDocumentMapper;
 import com.usky.oa.mapper.OaQjdDocumentMapper;
 import com.usky.oa.service.OaDocumentService;
 import com.usky.common.mybatis.core.AbstractCrudService;
-import com.usky.oa.service.vo.OaApprovalCountVO;
+import com.usky.oa.service.OaJbdDocumentService;
+import com.usky.oa.service.OaQjdDocumentService;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.stereotype.Service;
 
-import java.util.Collections;
-import java.util.List;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.HashMap;
+import java.util.Map;
 
 /**
  * <p>
@@ -42,11 +46,23 @@ public class OaDocumentServiceImpl extends AbstractCrudService<OaDocumentMapper,
     @Autowired
     private OaQjdDocumentMapper oaQjdDocumentMapper;
 
+    @Autowired
+    private OaQjdDocumentService oaQjdDocumentService;
+
+    @Autowired
+    private OaJbdDocumentService oaJbdDocumentService;
+
     @Autowired
     private OaJbdDocumentMapper oaJbdDocumentMapper;
 
     @Autowired
-    private JdbcTemplate jdbcTemplate;
+    private OaDocumentMapper documentMapper;
+
+    @Autowired
+    private OaFormDefinitionMapper oaFormDefinitionMapper;
+
+    private static final String TABLE_HEAD = "oa_";
+    private static final String TABLE_SUFFIX = "_document";
 
     // 我的申请
     @Override
@@ -65,6 +81,7 @@ public class OaDocumentServiceImpl extends AbstractCrudService<OaDocumentMapper,
         return ToCommonPage(page(new Page<>(pageNum, pageSize), wrapper));
     }
 
+    // 单据详情
     @Override
     public Object documentDetails(String docNo) {
         Object documentDetails = null;
@@ -82,6 +99,7 @@ public class OaDocumentServiceImpl extends AbstractCrudService<OaDocumentMapper,
         return documentDetails;
     }
 
+    // 删除单据
     @Override
     public void delDocument(String docNo) {
         String type = getFormSign(docNo);
@@ -96,47 +114,95 @@ public class OaDocumentServiceImpl extends AbstractCrudService<OaDocumentMapper,
         oaDocumentMapper.delete(Wrappers.lambdaQuery(OaDocument.class).eq(OaDocument::getDocNo, docNo));
     }
 
+    // 新增单据
     @Override
-    public void addDoc(Object oaDocument) {
+    public void addDoc(JSONObject oaDocument) {
+
+        LambdaQueryWrapper<OaFormDefinition> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.select(OaFormDefinition::getFieldInfo).eq(OaFormDefinition::getId, oaDocument.get("formId"));
+        OaFormDefinition oaFormDefinition = oaFormDefinitionMapper.selectOne(queryWrapper);
+        String sign = oaFormDefinition.getFieldInfo();
 
+        switch (sign) {
+            case "QJD":
+                oaQjdDocumentService.addQjDocument(JSON.parseObject(oaDocument.toJSONString(), OaQjdDocument.class));
+                break;
+            case "JBD":
+                oaJbdDocumentService.add(oaDocument.toJavaObject(OaJbdDocument.class));
+                break;
+        }
     }
 
+    // 更新单据
     @Override
-    public void updateDoc(Object oaDocument) {
-        JSONObject jsonObject = JSONObject.parseObject(JSON.toJSONString(oaDocument));
-        String docNo = jsonObject.get("docNo").toString();
-        String type = getFormSign(docNo);
-        String tableName = "oa_" + type + "_document";
-
-        StringBuilder setClause = new StringBuilder();
-        // 假设JSON对象中的键值对即为需要更新的字段和值
-        jsonObject.forEach((key, value) -> {
-            if (!"docNo".equals(key)) {
-                setClause.append(key).append(" = '").append(value.toString()).append("', ");
-            }
-        });
-        setClause.setLength(setClause.length() - 2); // 移除最后的逗号和空格
-
-        String sql = "UPDATE " + tableName + " SET " + setClause.toString() + " WHERE docNo = '" + docNo + "'";
-        jdbcTemplate.update(sql);
+    public void updateDoc(JSONObject jsonDocument) {
+
+        String username = SecurityUtils.getUsername();
+        LocalDateTime now = LocalDateTime.now();
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+        String formattedNow = now.format(formatter);
+
+        Map<String, Object> updateMap = jsonDocument.getInnerMap();
+        String docNo = jsonDocument.get("docNo").toString();
+        HashMap<String, Object> updateHashMap = new HashMap<>(updateMap);
+        String tableName = (TABLE_HEAD + getFormSign(docNo) + TABLE_SUFFIX).toLowerCase();
+        updateHashMap.put("tableName", tableName);
+        updateHashMap.put("updateBy", username);
+        updateHashMap.put("updateTime", formattedNow);
+
+        if (StringUtils.isBlank(updateMap.get("docStatus").toString())) {
+            throw new BusinessException("单据状态不能为空!");
+        }
+
+        // 更新具体单据表
+        if (!updateMap.containsKey("id")) {
+            throw new BusinessException("更新单据id不能为空!");
+        }
+        documentMapper.updateData(updateHashMap);
+
+        // 更新单据总表
+        oaDocumentMapper.update(null, Wrappers.lambdaUpdate(OaDocument.class)
+                .set(OaDocument::getDocStatus, updateMap.get("docStatus"))
+                .set(OaDocument::getUpdateBy, username)
+                .set(OaDocument::getUpdateTime, now)
+                .eq(OaDocument::getDocNo, docNo));
     }
 
+    // 提交单据
     @Override
     public void submit(String docNo, Integer status) {
         if (status != 1) {
             throw new RuntimeException("单据提交异常,请联系管理员!");
         }
         String formSign = getFormSign(docNo);
+
+        String username = SecurityUtils.getUsername();
+        LocalDateTime now = LocalDateTime.now();
+
         switch (formSign) {
             case "QJD":
-                oaQjdDocumentMapper.update(null, Wrappers.lambdaUpdate(OaQjdDocument.class).set(OaQjdDocument::getDocStatus, status).eq(OaQjdDocument::getDocNo, docNo));
+                oaQjdDocumentMapper.update(null, Wrappers.lambdaUpdate(OaQjdDocument.class)
+                        .set(OaQjdDocument::getDocStatus, status)
+                        .set(OaQjdDocument::getUpdateBy, username)
+                        .set(OaQjdDocument::getUpdateTime, now)
+                        .eq(OaQjdDocument::getDocNo, docNo));
                 break;
             case "JBD":
-                oaJbdDocumentMapper.update(null, Wrappers.lambdaUpdate(OaJbdDocument.class).set(OaJbdDocument::getDocStatus, status).eq(OaJbdDocument::getDocNo, docNo));
+                oaJbdDocumentMapper.update(null, Wrappers.lambdaUpdate(OaJbdDocument.class)
+                        .set(OaJbdDocument::getDocStatus, status)
+                        .set(OaJbdDocument::getUpdateBy, username)
+                        .set(OaJbdDocument::getUpdateTime, now)
+                        .eq(OaJbdDocument::getDocNo, docNo));
+                break;
         }
-        oaDocumentMapper.update(null, Wrappers.lambdaUpdate(OaDocument.class).set(OaDocument::getDocStatus, status).eq(OaDocument::getDocNo, docNo));
+        oaDocumentMapper.update(null, Wrappers.lambdaUpdate(OaDocument.class)
+                .set(OaDocument::getDocStatus, status)
+                .set(OaDocument::getUpdateBy, username)
+                .set(OaDocument::getUpdateTime, now)
+                .eq(OaDocument::getDocNo, docNo));
     }
 
+    // 获取单据类型
     private String getFormSign(String docNo) {
         if (StringUtils.isBlank(docNo)) {
             throw new RuntimeException("单据号不能为空!");

+ 50 - 37
service-oa/service-oa-biz/src/main/java/com/usky/oa/service/impl/OaQjdDocumentServiceImpl.java

@@ -3,14 +3,18 @@ package com.usky.oa.service.impl;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.usky.common.core.exception.BusinessException;
+import com.usky.common.log.annotation.Log;
 import com.usky.common.security.utils.SecurityUtils;
 import com.usky.oa.domain.OaDocument;
+import com.usky.oa.domain.OaFormDefinition;
 import com.usky.oa.domain.OaQjdDocument;
 import com.usky.oa.mapper.OaDocumentMapper;
+import com.usky.oa.mapper.OaFormDefinitionMapper;
 import com.usky.oa.mapper.OaQjdDocumentMapper;
 import com.usky.oa.service.OaQjdDocumentService;
 import com.usky.common.mybatis.core.AbstractCrudService;
 import com.usky.oa.service.enums.OaBuiltInDocument;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -26,12 +30,16 @@ import java.time.format.DateTimeFormatter;
  * @author fu
  * @since 2024-12-10
  */
+@Slf4j
 @Service
 public class OaQjdDocumentServiceImpl extends AbstractCrudService<OaQjdDocumentMapper, OaQjdDocument> implements OaQjdDocumentService {
 
     @Autowired
     private OaQjdDocumentMapper oaQjdDocumentMapper;
 
+    @Autowired
+    private OaFormDefinitionMapper oaFormDefinitionMapper;
+
     @Autowired
     private OaDocumentMapper oaDocumentMapper;
 
@@ -49,7 +57,11 @@ public class OaQjdDocumentServiceImpl extends AbstractCrudService<OaQjdDocumentM
         DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyMMddHHmmss");
         LocalDateTime now = LocalDateTime.now();
         String formattedDate = now.format(formatter);
-        String sign = OaBuiltInDocument.QJD.getSign();
+
+        LambdaQueryWrapper<OaFormDefinition> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.select(OaFormDefinition::getFormSign).eq(OaFormDefinition::getId, oaQjdDocument.getFormId());
+        OaFormDefinition oaFormDefinition = oaFormDefinitionMapper.selectOne(queryWrapper);
+        String sign = oaFormDefinition.getFormSign();
         String docNo = sign + "-" + formattedDate;
 
         // 插入请假表数据
@@ -78,7 +90,7 @@ public class OaQjdDocumentServiceImpl extends AbstractCrudService<OaQjdDocumentM
     @Override
     public void updateQjDocument(OaQjdDocument oaQjdDocument) {
 
-        if (StringUtils.isBlank(oaQjdDocument.getDocNo())){
+        if (StringUtils.isBlank(oaQjdDocument.getDocNo())) {
             throw new BusinessException("请假单据ID为空或异常");
         }
 
@@ -105,47 +117,48 @@ public class OaQjdDocumentServiceImpl extends AbstractCrudService<OaQjdDocumentM
      * @return: void
      **/
     public static void validateOaQjDocument(OaQjdDocument oaQjdDocument) throws BusinessException {
-        if (oaQjdDocument.getFormId() == null || oaQjdDocument.getFormId() <= 0) {
-            throw new BusinessException("表单ID不能为空或小于等于0");
-        }
-
-        if (StringUtils.isBlank(oaQjdDocument.getType())) {
-            throw new BusinessException("请假类型不能为空");
-        }
-
-        if (oaQjdDocument.getType().length() > 4) {
-            throw new BusinessException("请假类型长度不能超过4个字符");
-        }
-
-        if (oaQjdDocument.getStartTime() == null || oaQjdDocument.getEndTime() == null) {
-            throw new BusinessException("请假开始时间或结束时间不能为空");
-        }
 
-        if (oaQjdDocument.getStartTime().isAfter(oaQjdDocument.getEndTime())) {
-            throw new BusinessException("请假开始时间不能大于结束时间");
-        }
-
-        if (oaQjdDocument.getDuration() == null || oaQjdDocument.getDuration() <= 0) {
-            throw new BusinessException("请假时长不能为空或小于等于0");
-        }
-
-        if (StringUtils.isBlank(oaQjdDocument.getReason())) {
-            throw new BusinessException("请假原因不能为空");
-        }
-
-        if (oaQjdDocument.getReason().length() > 255) {
-            throw new BusinessException("请假原因超出字数限制,请重试");
-        }
-
-        if (oaQjdDocument.getImage() != null && oaQjdDocument.getImage().length() > 500) {
-            throw new BusinessException("上传图片数量超出限制,请重试");
-        }
+        // if (oaQjdDocument.getFormId() == null || oaQjdDocument.getFormId() <= 0) {
+        //     throw new BusinessException("表单ID不能为空或小于等于0");
+        // }
+
+        // if (StringUtils.isBlank(oaQjdDocument.getType())) {
+        //     throw new BusinessException("请假类型不能为空");
+        // }
+        //
+        // if (oaQjdDocument.getType().length() > 4) {
+        //     throw new BusinessException("请假类型长度不能超过4个字符");
+        // }
+        //
+        // if (oaQjdDocument.getStartTime() == null || oaQjdDocument.getEndTime() == null) {
+        //     throw new BusinessException("请假开始时间或结束时间不能为空");
+        // }
+        //
+        // if (oaQjdDocument.getStartTime().isAfter(oaQjdDocument.getEndTime())) {
+        //     throw new BusinessException("请假开始时间不能大于结束时间");
+        // }
+        //
+        // if (oaQjdDocument.getDuration() == null || oaQjdDocument.getDuration() <= 0) {
+        //     throw new BusinessException("请假时长不能为空或小于等于0");
+        // }
+        //
+        // if (StringUtils.isBlank(oaQjdDocument.getReason())) {
+        //     throw new BusinessException("请假原因不能为空");
+        // }
+        //
+        // if (oaQjdDocument.getReason().length() > 255) {
+        //     throw new BusinessException("请假原因超出字数限制,请重试");
+        // }
+        //
+        // if (oaQjdDocument.getImage() != null && oaQjdDocument.getImage().length() > 500) {
+        //     throw new BusinessException("上传图片数量超出限制,请重试");
+        // }
     }
 
     @Override
     public void delQjDocument(String docNo) {
 
-        if (StringUtils.isBlank(docNo)){
+        if (StringUtils.isBlank(docNo)) {
             throw new BusinessException("请假单据编号不能为空!");
         }
 

+ 72 - 0
service-oa/service-oa-biz/src/main/java/com/usky/oa/service/utils/OaSendMessageCenter.java

@@ -0,0 +1,72 @@
+package com.usky.oa.service.utils;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.usky.common.core.bean.ApiResult;
+import com.usky.common.core.exception.BusinessException;
+import com.usky.system.domain.SysUser;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.context.annotation.Configuration;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ *
+ * @author fyc
+ * @email yuchuan.fu@chinausky.com
+ * @date 2025/1/9
+ */
+@Slf4j
+@Configuration
+public class OaSendMessageCenter {
+
+    private static final String INFO_TITLE = "审批提醒";
+    private static final String INFO_CONTENT = "的申请";
+    private static final int INFO_TYPE = 6;
+
+    /*public void sendAsyncMessage(PmWorkReport newReport) {
+        String username = newReport.getCreateBy();
+        Long submitterId = newReport.getSubmitterId();
+        log.info(username + "的申请开始发送消息中心-----------------------------------");
+        List<Long> userId = new ArrayList<>();
+        if (!newReport.getCcTo().isEmpty()) {
+            userId = Optional.of(newReport.getCcTo())
+                    .map(ccTo -> Arrays.stream(ccTo.split(","))
+                            .map(Long::parseLong)
+                            .collect(Collectors.toList()))
+                    .orElse(Collections.emptyList());
+        } else {
+            throw new BusinessException( newReport.getCreateBy() + "的报告:" + newReport.getId() + ",抄送人为空,无需发送消息中心");
+        }
+        LambdaQueryWrapper<SysUser> nickNameQuery = Wrappers.lambdaQuery();
+        nickNameQuery.select(SysUser::getNickName)
+                .eq(SysUser::getUserId, submitterId);
+        SysUser nickName = sysUserMapper.selectOne(nickNameQuery);
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("infoTitle", INFO_TITLE);
+        jsonObject.put("infoContent", nickName.getNickName() + INFO_CONTENT);
+        jsonObject.put("infoType", INFO_TYPE);
+        jsonObject.put("id", newReport.getId());
+        jsonObject.put("infoTypeName", INFO_TITLE);
+        jsonObject.put("userName", newReport.getCreateBy());
+        if (!userId.isEmpty()) {
+            jsonObject.put("userIds", userId);
+        }
+        try {
+            // 推送消息中心
+            ApiResult<Void> voidApiResult = remoteMceService.addMce(jsonObject.toString());
+
+            if (voidApiResult.isSuccess()) {
+                log.info("报告消息发送成功!");
+            } else {
+                log.error("报告消息发送失败!");
+            }
+        } catch (Exception e) {
+            log.error("报告发送消息时发生异常", e);
+        }
+        log.info(username + "的工作报告发送消息中心完成-----------------------------------");
+    }*/
+
+}

+ 72 - 12
service-oa/service-oa-biz/src/main/resources/mapper/oa/OaDocumentMapper.xml

@@ -4,18 +4,78 @@
 
     <!-- 通用查询映射结果 -->
     <resultMap id="BaseResultMap" type="com.usky.oa.domain.OaDocument">
-        <id column="id" property="id" />
-        <result column="form_id" property="formId" />
-        <result column="type" property="type" />
-        <result column="doc_no" property="docNo" />
-        <result column="proposer" property="proposer" />
-        <result column="doc_status" property="docStatus" />
-        <result column="create_by" property="createBy" />
-        <result column="create_time" property="createTime" />
-        <result column="update_by" property="updateBy" />
-        <result column="update_time" property="updateTime" />
-        <result column="dept_id" property="deptId" />
-        <result column="tenant_id" property="tenantId" />
+        <id column="id" property="id"/>
+        <result column="form_id" property="formId"/>
+        <result column="type" property="type"/>
+        <result column="doc_no" property="docNo"/>
+        <result column="proposer" property="proposer"/>
+        <result column="doc_status" property="docStatus"/>
+        <result column="create_by" property="createBy"/>
+        <result column="create_time" property="createTime"/>
+        <result column="update_by" property="updateBy"/>
+        <result column="update_time" property="updateTime"/>
+        <result column="dept_id" property="deptId"/>
+        <result column="tenant_id" property="tenantId"/>
     </resultMap>
 
+    <!-- 动态创建表-->
+    <update id="createTable">
+        create table if not exists ${tableName} (
+        <foreach collection="columns" item="column" separator=",">
+            ${column.name} ${column.type}
+        </foreach>
+        , PRIMARY KEY (${primaryKey})
+        )
+    </update>
+
+    <!-- 动态更新数据 -->
+    <update id="updateData" parameterType="map">
+        update ${(tableName)}
+        <set>
+            <if test="map != null and !map.isEmpty()">
+                <foreach collection="map" item="entry" index="key" separator=",">
+                    #{key} = #{entry.value}
+                </foreach>
+            </if>
+        </set>
+        where id = #{id}
+    </update>
+
+    <!-- 动态查询数据 -->
+    <select id="selectData" parameterType="map" resultType="map">
+        select *
+        from ${tableName}
+        <where>
+            <foreach collection="conditions" item="condition" separator="and">
+                ${condition.column} ${condition.operator} #{condition.value}
+            </foreach>
+        </where>
+        <if test="limit != null and offset != null">
+            limit #{limit} offset #{offset}
+        </if>
+    </select>
+
+    <!-- 动态插入数据 -->
+    <insert id="insertData">
+        insert into ${tableName} (
+        <foreach collection="columns" item="column" separator=",">
+            ${column}
+        </foreach>
+        ) values (
+        <foreach collection="values" item="value" separator=",">
+            #{value}
+        </foreach>
+        )
+    </insert>
+
+    <!-- 动态删除数据 -->
+    <delete id="deleteData" parameterType="map">
+        delete from ${tableName}
+        <where>
+            <foreach collection="conditions" item="condition" separator="and">
+                ${condition.column} ${condition.operator} #{condition.value}
+            </foreach>
+        </where>
+    </delete>
+
 </mapper>