Explorar o código

[task-1075]周期任务配置表功能增强-同步罗湖功能

szjbdgzl %!s(int64=2) %!d(string=hai) anos
pai
achega
fda31ac7b5

+ 12 - 0
ibps-provider-root/modules/provider-business/src/main/java/com/lc/ibps/task/entity/Tzqxdsrwb.java

@@ -49,4 +49,16 @@ public class Tzqxdsrwb  implements Serializable {
     //  是否执行
     private String  zhiXing;
 
+    // 业务表名
+    private String yeWuBiaoMing;
+
+    // 业务标识(启动流程,添加数据)
+    private String yeWuBiaoZhi;
+
+    // 是否有子表
+    private String shiFouYouZiBiao;
+
+    // 子表表名
+    private String ziBiaoBiaoMing;
+
 }

+ 2 - 2
ibps-provider-root/modules/provider-business/src/main/java/com/lc/ibps/task/server/CycleTaskServer.java

@@ -25,9 +25,9 @@ public class CycleTaskServer {
     // 秒   分    时   日   月    周   年(可选)
     // 0    1    1    1    *    ?    *
 
-    @Scheduled(cron="0 0 1 1/1 * ? ")
+    @Scheduled(cron="0 0 4 * * ?")
     public void dayTask(){
-        // 每天凌晨1点执行一次
+        // 每天凌晨4点执行一次
         cycleTaskService.startProcess("每日");
     }
 

+ 101 - 0
ibps-provider-root/modules/provider-business/src/main/java/com/lc/ibps/task/service/BatchDataService.java

@@ -0,0 +1,101 @@
+package com.lc.ibps.task.service;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.lc.ibps.base.core.util.BeanUtils;
+import com.lc.ibps.base.framework.table.ICommonDao;
+import com.lc.ibps.base.web.context.ContextUtil;
+import com.lc.ibps.org.party.persistence.entity.DefaultPartyUserPo;
+import com.lc.ibps.task.entity.Tzqxdsrwb;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+/**
+ * @author gaozl
+ */
+@Service
+@Slf4j
+public class BatchDataService {
+
+    @Resource
+    private ICommonDao<?> commonDao;
+
+    /**
+     * 写在这里是因为 service 包下有配置事务
+     * @param zqrw
+     */
+    public void additionData(Tzqxdsrwb zqrw){
+        try{
+            DefaultPartyUserPo user = new DefaultPartyUserPo();
+            user.setUserId(zqrw.getBianZhiRen());
+            ContextUtil.setCurrentUser(user);
+            List<LinkedHashMap> paramWhere = JSONObject.parseArray(zqrw.getChuShiShuJu(), LinkedHashMap.class);
+
+            // 主表
+            for (LinkedHashMap map : paramWhere) {
+                List<LinkedHashMap> subList = new ArrayList<>();
+                String associatedField = null;
+                String subTableName = null;
+                if ("是".equals(zqrw.getShiFouYouZiBiao())){
+                    // 子表code
+                    String subTableCode = zqrw.getZiBiaoBiaoMing().substring(2,zqrw.getZiBiaoBiaoMing().indexOf("#"));
+                    // 主表与子表关联关系字段
+                    associatedField = zqrw.getZiBiaoBiaoMing().substring(zqrw.getZiBiaoBiaoMing().indexOf("#")+1);
+                    subTableName = zqrw.getZiBiaoBiaoMing().substring(0,zqrw.getZiBiaoBiaoMing().indexOf("#"));
+                    if (map.containsKey(subTableCode)) {
+                        //   有子表  1、去除子表集合
+                        JSONArray jsonArray = (JSONArray) map.get(subTableCode);
+                        subList = JSONObject.parseArray(jsonArray.toJSONString(), LinkedHashMap.class);
+                        map.remove(subTableCode);
+                    }
+                }
+
+                String addId = UUID.randomUUID().toString().replace("-", "");
+                commonDao.execute(this.buildInsertSql(map, addId, zqrw.getYeWuBiaoMing()));
+
+                // 子表
+                if (BeanUtils.isNotEmpty(subList)){
+                    for (LinkedHashMap sub : subList) {
+                        String uid = UUID.randomUUID().toString().replace("-", "");
+                        if (BeanUtils.isNotEmpty(associatedField)){
+                            sub.put(associatedField, addId);
+                        }else {
+                            sub.put("parent_id_", addId);
+                        }
+                        commonDao.execute(this.buildInsertSql(sub, uid, subTableName));
+                    }
+                }
+            }
+        }catch (Exception e){
+            log.error("周期任务添加数据发生错误,原始数据ID:"+ zqrw.getId());
+            throw e;
+        }
+    }
+
+
+    private String buildInsertSql(LinkedHashMap map,String uuid,String tableName){
+        map.put("id_", uuid);
+        map.put("create_by_", ContextUtil.getCurrentUserId());
+        map.put("create_time_", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
+        StringBuilder sql = new StringBuilder("insert into " + tableName + "(");
+        for (Object key : map.keySet()) {
+            sql.append(key).append(",");
+        }
+        sql.delete(sql.length()-1,sql.length());
+        sql.append(") values(");
+        for (Object val : map.values()) {
+            if ("now()".equals(val)){
+                val = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
+            }
+            sql.append("'").append(val).append("'").append(",");
+        }
+        sql.delete(sql.length()-1,sql.length());
+        sql.append(")");
+        return sql.toString();
+    }
+
+}

+ 11 - 3
ibps-provider-root/modules/provider-business/src/main/java/com/lc/ibps/task/services/impl/CycleTaskServiceImpl.java

@@ -2,7 +2,6 @@ package com.lc.ibps.task.services.impl;
 
 import com.lc.ibps.base.core.constants.StringPool;
 import com.lc.ibps.base.web.context.ContextUtil;
-import com.lc.ibps.bpmn.api.IBpmInstService;
 import com.lc.ibps.bpmn.api.model.inst.IBpmProcInst;
 import com.lc.ibps.bpmn.api.service.BpmProcInstService;
 import com.lc.ibps.bpmn.cmd.IbpsProcInstCmd;
@@ -11,6 +10,7 @@ import com.lc.ibps.cloud.entity.APIRequest;
 import com.lc.ibps.org.party.persistence.entity.DefaultPartyUserPo;
 import com.lc.ibps.task.dao.TzqxdsrwbMapper;
 import com.lc.ibps.task.entity.Tzqxdsrwb;
+import com.lc.ibps.task.service.BatchDataService;
 import com.lc.ibps.task.services.CycleTaskService;
 import com.lc.ibps.untils.DateUntil;
 import lombok.extern.slf4j.Slf4j;
@@ -32,6 +32,10 @@ public class CycleTaskServiceImpl implements CycleTaskService {
     @Autowired
     private BpmInstProvider pmInstProvider;
 
+    @Resource
+    private BatchDataService batchDataService;
+
+
     //  起动周期性任务流程
     @Override
     public void testTask(String id){
@@ -44,8 +48,12 @@ public class CycleTaskServiceImpl implements CycleTaskService {
     public void startProcess(String startSign) {
         List<Tzqxdsrwb> dataList= tzqxdsrwbMapper.getTzqxdsrwb(startSign);
         if(dataList!=null&&dataList.size()>0){
-            for(Tzqxdsrwb tzqxdsrwbTemp:dataList){
-                startProcessTask(tzqxdsrwbTemp);
+            for(Tzqxdsrwb zqrw : dataList){
+                if ("添加数据".equals(zqrw.getYeWuBiaoZhi())){
+                    batchDataService.additionData(zqrw);
+                }else {
+                    startProcessTask(zqrw);
+                }
             }
         }
     }

+ 5 - 1
ibps-provider-root/modules/provider-business/src/main/resources/com/lc/ibps/klimsibps/mapping/TzqxdsrwbMapper.xml

@@ -22,12 +22,16 @@
         <result column="chu_shi_shu_ju_" property="chuShiShuJu" jdbcType="VARCHAR" />
         <result column="ren_wu_ri_qi_" property="renWuRiQi" jdbcType="VARCHAR" />
         <result column="zhi_xing_" property="zhiXing" jdbcType="VARCHAR" />
+        <result column="ye_wu_biao_ming_" property="yeWuBiaoMing" jdbcType="VARCHAR" />
+        <result column="ye_wu_biao_zhi_" property="yeWuBiaoZhi" jdbcType="VARCHAR" />
+        <result column="shi_fou_zi_biao_" property="shiFouYouZiBiao" jdbcType="VARCHAR" />
+        <result column="zi_biao_biao_ming" property="ziBiaoBiaoMing" jdbcType="VARCHAR" />
     </resultMap>
     <sql id="Base_Column_List" >
         id_, tenant_id_, ip_, create_by_, create_time_, update_by_, update_time_, shi_fou_guo_shen_,
     bian_zhi_ren_, bian_zhi_bu_men_, bian_zhi_shi_jian, ren_wu_ming_cheng, ren_wu_lei_bie_,
     ren_wu_zhuang_tai, liu_cheng_id_, liu_cheng_ming_ch, liu_cheng_ding_yi,chu_shi_shu_ju_,
-    ren_wu_ri_qi_,zhi_xing_
+    ren_wu_ri_qi_,zhi_xing_,ye_wu_biao_ming_,ye_wu_biao_zhi_,shi_fou_zi_biao_,zi_biao_biao_ming
     </sql>
     <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.String" >
         select