|
|
@@ -1,5 +1,6 @@
|
|
|
package com.lc.ibps.platform.service;
|
|
|
|
|
|
+import com.lc.ibps.api.base.id.IdGenerator;
|
|
|
import com.lc.ibps.base.core.constants.StringPool;
|
|
|
import com.lc.ibps.base.core.util.AppUtil;
|
|
|
import com.lc.ibps.base.core.util.BeanUtils;
|
|
|
@@ -13,6 +14,7 @@ import com.lc.ibps.cloud.entity.APIResult;
|
|
|
import com.lc.ibps.cloud.file.provider.UploadProvider;
|
|
|
import com.lc.ibps.common.file.persistence.entity.AttachmentPo;
|
|
|
import com.lc.ibps.org.party.persistence.entity.DefaultPartyUserPo;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
@@ -24,8 +26,10 @@ import javax.annotation.Resource;
|
|
|
import java.net.URLEncoder;
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.time.format.DateTimeFormatter;
|
|
|
+import java.util.Date;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
+import java.util.UUID;
|
|
|
import java.util.concurrent.Future;
|
|
|
|
|
|
@Service
|
|
|
@@ -37,33 +41,92 @@ public class PatchService {
|
|
|
private ICommonDao<?> commonDao;
|
|
|
@Autowired
|
|
|
private UploadProvider uploadFile;
|
|
|
+ @Autowired
|
|
|
+ IdGenerator idGenerator;
|
|
|
|
|
|
- public void changCompleteTime(List<BpmApprovePo> approvals){
|
|
|
- if(Collections.isEmpty(approvals)) return;
|
|
|
- String bizKey;
|
|
|
- String boCode;
|
|
|
- String kuaiZhao;
|
|
|
- for (BpmApprovePo po :approvals) {
|
|
|
+ public void changCompleteTime(List<BpmApprovePo> approvals) {
|
|
|
+ if (Collections.isEmpty(approvals)) return;
|
|
|
+ updateBpmApprovePo(approvals);
|
|
|
+ for (BpmApprovePo po : approvals) {
|
|
|
String procInstId = po.getProcInstId();
|
|
|
- List<Map<String, Object>> query = (List<Map<String, Object>>) commonDao.query("SELECT h.biz_key_ bizKey,CONCAT('t_',f.BO_CODE_) AS boCode FROM ibps_bpm_inst_his h,ibps_bpm_def f \n" +
|
|
|
- " WHERE f.bpmn_def_id_ = h.bpmn_def_id_ AND h.id_ =#{p0}", new String[]{procInstId});
|
|
|
+ if(createSnapshotRecord(procInstId)){
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- if(Collections.isNotEmpty(query)){
|
|
|
- bizKey = (String)query.get(0).get("bizKey");
|
|
|
- boCode = (String)query.get(0).get("boCode");
|
|
|
- List<Map<String, Object>> query1 = (List<Map<String, Object>>)commonDao.query("SELECT kuai_zhao_ kuaiZhao FROM " + boCode + " WHERE id_=#{p0}", new String[]{bizKey});
|
|
|
+ }
|
|
|
|
|
|
- if(Collections.isNotEmpty(query1)){
|
|
|
- kuaiZhao = (String)query1.get(0).get("kuaiZhao");
|
|
|
- break;
|
|
|
- }
|
|
|
+ public boolean createSnapshotRecord(String procInstId) {
|
|
|
+ String bizKey = null;
|
|
|
+ String boCode = null;
|
|
|
+ String kuaiZhao = "";
|
|
|
+
|
|
|
+ String id = idGenerator.getId();
|
|
|
+
|
|
|
+ List<Map<String, Object>> query = (List<Map<String, Object>>) commonDao.query("SELECT h.biz_key_ bizKey,CONCAT('t_',f.BO_CODE_) AS boCode FROM ibps_bpm_inst_his h,ibps_bpm_def f \n" +
|
|
|
+ " WHERE f.bpmn_def_id_ = h.bpmn_def_id_ AND h.id_ =#{p0}", new String[]{procInstId});
|
|
|
+
|
|
|
+ if (Collections.isNotEmpty(query)) {
|
|
|
+ bizKey = (String) query.get(0).get("bizKey");
|
|
|
+ boCode = (String) query.get(0).get("boCode");
|
|
|
+ List<Map<String, Object>> query1 = (List<Map<String, Object>>) commonDao.query("SELECT kuai_zhao_ kuaiZhao FROM " + boCode + " WHERE id_=#{p0}", new String[]{bizKey});
|
|
|
+
|
|
|
+ if (Collections.isNotEmpty(query1)) {
|
|
|
+ kuaiZhao = (String) query1.get(0).get("kuaiZhao");
|
|
|
+ commonDao.execute("INSERT INTO t_bckzsjb (ID_, tenant_id_, CREATE_BY_, CREATE_TIME_,BIZ_KEY_, PROC_DEF_KEY_, PROC_DEF_NAME_, bao_biao_lu_jing_,user_id_,user_name_,account_,END_TIME_,BO_CODE_,position_id_,org_id_)\n" +
|
|
|
+ "SELECT\n" +
|
|
|
+ " #{p0},#{p1},h.CREATE_BY_,NOW(),h.BIZ_KEY_,h.PROC_DEF_KEY_,h.PROC_DEF_NAME_,d.bao_biao_lu_jing_,e.id_ user_id_,e.name_,u.ACCOUNT_,h.END_TIME_,\n" +
|
|
|
+ " CONCAT('t_',f.BO_CODE_) AS BO_CODE_,e1.position_id,SUBSTRING_INDEX(p.PATH_,'.', 1) AS org_id_\n" +
|
|
|
+ "FROM\n" +
|
|
|
+ " ibps_bpm_inst_his h\n" +
|
|
|
+ " INNER JOIN t_lcidglbdbb d ON h.PROC_DEF_KEY_ = d.liu_cheng_xuan_ze\n" +
|
|
|
+ " LEFT JOIN ibps_bpm_def f ON f.DEF_KEY_ = h.PROC_DEF_KEY_\n" +
|
|
|
+ " LEFT JOIN ibps_party_employee e ON e.id_ = h.CREATE_BY_\n" +
|
|
|
+ " LEFT JOIN ibps_party_user u ON e.id_ = u.id_\n" +
|
|
|
+ " LEFT JOIN (SELECT id_, SUBSTRING_INDEX(POSITIONS_, ',', 1) AS position_id FROM ibps_party_employee) e1 ON e.id_ = e1.id_\n" +
|
|
|
+ " LEFT JOIN ibps_party_entity p ON e1.position_id = p.id_\n" +
|
|
|
+ "WHERE\n" +
|
|
|
+ " d.bao_biao_lu_jing_ IS NOT NULL\n" +
|
|
|
+ " AND d.bao_biao_lu_jing_ <> ''\n" +
|
|
|
+ " and h.BIZ_KEY_ =#{p2}", new String[]{id, kuaiZhao, bizKey});
|
|
|
+ return true;
|
|
|
}
|
|
|
-// commonDao.execute("update ibps_bpm_approval_his set COMPLETE_TIME_='1',CREATE_TIME_='"+kuaiZhaoId+"' where id_='"+id+"'");
|
|
|
}
|
|
|
+ return false;
|
|
|
+ }
|
|
|
|
|
|
|
|
|
+ private void updateBpmApprovePo(List<BpmApprovePo> approvals){
|
|
|
+ Date t = null;
|
|
|
+ String id = null;
|
|
|
+ for (BpmApprovePo po :approvals) {
|
|
|
+ id = po.getProcInstId();
|
|
|
+ if(po.getCompleteTime()==null ||StringUtils.isAnyBlank(po.getId(),po.getTaskKey(),po.getProcInstId())){
|
|
|
+ throw new RuntimeException("必选栏位不能为空");
|
|
|
+ }
|
|
|
+ if(t == null) {
|
|
|
+ t = po.getCompleteTime();
|
|
|
+ }else if(t.after(po.getCompleteTime())){
|
|
|
+ throw new RuntimeException("完成时间不匹配,请重新检查");
|
|
|
+ }else{
|
|
|
+ t = po.getCompleteTime();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ for (BpmApprovePo po :approvals) {
|
|
|
+ commonDao.execute("update ibps_bpm_approval_his set COMPLETE_TIME_=#{p0},CREATE_TIME_=#{p1} where id_=#{p2}",
|
|
|
+ new Object[]{po.getCompleteTime(),po.getCompleteTime(),po.getId()});
|
|
|
+ if(StringUtils.isNotEmpty(po.getTaskKey())) {
|
|
|
+ commonDao.execute("update ibps_bpm_oper_log set CREATE_TIME_=#{p0} where proc_inst_id_=#{p1} and node_id_=#{p2}",
|
|
|
+ new Object[]{po.getCompleteTime(), po.getProcInstId(), po.getTaskKey()});
|
|
|
+ }
|
|
|
+ }
|
|
|
+ commonDao.execute("update ibps_bpm_inst_his set end_TIME_=#{p0} where id_=#{p1} ", new Object[]{t, id});
|
|
|
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
@Async(value = "addAllApiExecutor")
|
|
|
public Future<Void> replenishSnapshotAsync() throws Exception {
|
|
|
replenishSnapshot();
|