Explorar el Código

Merge remote-tracking branch 'origin/matser' into Verification_of_Analytical_Performance

Li Yuan hace 2 años
padre
commit
d5aea5c50f

+ 34 - 0
ibps-bpmnbase-root/modules/bpmn-model/src/main/java/com/lc/ibps/bpmn/persistence/entity/BpmTaskPo.java

@@ -31,6 +31,10 @@ public class BpmTaskPo extends BpmTaskTbl implements IBpmTask, Cloneable {
 	
 	public static final Integer LOCK = 1;
 	public static final Integer UNLOCK = 0;
+
+	public static final String TIME_OUT = "已超时";
+	public static final String ABOUT_TO_TIME_OUT = "即将超时";
+	public static final String NOT_TIME_OUT = "未超时";
 	
 	@ApiModelProperty(value = "是否允许转办")
 	protected String allowShfit = StringPool.Y; 
@@ -39,6 +43,13 @@ public class BpmTaskPo extends BpmTaskTbl implements IBpmTask, Cloneable {
 	@ApiModelProperty(value = "候选人范围")
 	protected String partyTypeName; /* 候选人范围 */
 
+	@ApiModelProperty(value = "是否过期")
+	protected String expired; /* 是否过期 */
+	@ApiModelProperty(value = "流程创建人")
+	protected String creatorId;
+	@ApiModelProperty(value = "流程创建人头像")
+	protected String photo;
+
 	public AuthorizeRightVo getAuthorizeRight() {
 		return authorizeRight;
 	}
@@ -167,4 +178,27 @@ public class BpmTaskPo extends BpmTaskTbl implements IBpmTask, Cloneable {
 		this.partyTypeName = partyTypeName;
 	}
 
+	public String getExpired() {
+		return expired;
+	}
+
+	public void setExpired(String expired) {
+		this.expired = expired;
+	}
+
+	public String getCreatorId() {
+		return creatorId;
+	}
+
+	public void setCreatorId(String creatorId) {
+		this.creatorId = creatorId;
+	}
+
+	public String getPhoto() {
+		return photo;
+	}
+
+	public void setPhoto(String photo) {
+		this.photo = photo;
+	}
 }

+ 4 - 2
ibps-bpmnbase-root/modules/bpmn-model/src/main/resources/com/lc/ibps/bpmn/persistence/mapping/BpmTask.map.xml

@@ -29,6 +29,8 @@
 		<result property="startDept" column="START_DEPT_" jdbcType="VARCHAR"/>
 		<result property="hotRead" column="HOT_READ_" jdbcType="VARCHAR"/>
 		<result property="waiJian" column="WAI_JIAN_" jdbcType="VARCHAR"/>
+		<result property="creatorId" column="creatorId" jdbcType="VARCHAR"/>
+		<result property="photo" column="photo_" jdbcType="VARCHAR"/>
 	</resultMap>
 	
 	<sql id="columns">
@@ -895,7 +897,7 @@
 	</sql>
 	
 	<select  id="queryByUser" parameterType="java.util.Map" resultMap="BpmTaskPo">
-		SELECT DISTINCT <include refid="queryTaskColumns_new"/>
+		SELECT DISTINCT <include refid="queryTaskColumns_new"/>,e.photo_
 		FROM (
 			{{pageSqlStart}}	
 	    	SELECT * FROM
@@ -949,7 +951,7 @@
 			</if>
 			{{pageSqlEnd}}
         ) tmp
-
+		LEFT JOIN ibps_party_employee e on e.ID_=tmp.creatorId
 		<if test="orderBySql ==null">
 			order by tmp.CREATE_TIME_ desc
 		</if>

+ 76 - 18
ibps-provider-root/modules/provider-bpmn/src/main/java/com/lc/ibps/office/provider/BpmReceivedProvider.java

@@ -33,15 +33,12 @@ import com.lc.ibps.cloud.entity.APIRequest;
 import com.lc.ibps.cloud.entity.APIResult;
 import com.lc.ibps.cloud.provider.GenericProvider;
 import com.lc.ibps.cloud.utils.RequestUtil;
-import com.lc.ibps.form.data.persistence.entity.DataTemplatePo;
-import com.lc.ibps.form.data.persistence.entity.DatasetPo;
 import com.lc.ibps.form.data.repository.DataTemplateRepository;
 import com.lc.ibps.form.data.repository.DatasetRepository;
 import com.lc.ibps.office.api.IBpmReceivedService;
 import com.lc.ibps.org.api.IPartyEmployeeService;
 import com.lc.ibps.org.api.IPartyEntityService;
 import com.lc.ibps.org.party.persistence.entity.PartyEntityPo;
-import com.lc.ibps.org.party.persistence.entity.PartyPositionPo;
 import com.lc.ibps.org.party.persistence.vo.ExceptRelationVo;
 import com.lc.ibps.org.vo.IdKeyVo;
 import io.swagger.annotations.Api;
@@ -53,6 +50,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.web.bind.annotation.RequestBody;
 
 import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
 import java.util.*;
 
 import static java.util.Comparator.comparing;
@@ -143,21 +141,8 @@ public class BpmReceivedProvider extends GenericProvider implements IBpmReceived
 				bpmTaskRepository.buildInternal(list);
 				bpmTaskRepository.removeBuildInternal();
 			}
-			// 返回数据集合添加部门ID字段值
-			List<Map<String,Object>> deptList = (List<Map<String, Object>>) commonDao.query(" select id_,name_ from ibps_party_org where status_ = 'actived' ");
-			if (BeanUtils.isNotEmpty(list)){
-				for (BpmTaskPo bpmTaskPo : list) {
-					for (Map<String, Object> deptMap : deptList) {
-						if (StringUtil.isNotEmpty(bpmTaskPo.getStartDept())){
-							if (bpmTaskPo.getStartDept().equals(deptMap.get("name_"))) {
-								bpmTaskPo.setStartDeptId(deptMap.get("id_").toString());
-							}
-						}
-					}
-				}
-			}
-			// 按照创建时间降序排序
-			list.sort(comparing(BpmTaskPo::getCreateTime).reversed());
+			this.getExpired(list);
+
 			APIPageList<BpmTaskPo> apiPageList = this.getAPIPageList(list);
 			result.setData(apiPageList);
 		} catch(Exception e) {
@@ -165,6 +150,77 @@ public class BpmReceivedProvider extends GenericProvider implements IBpmReceived
 		}
 		return result;
 	}
+
+	private void getExpired(List<BpmTaskPo> list){
+		if (BeanUtils.isNotEmpty(list)){
+			for (BpmTaskPo bpmTaskPo : list) {
+				String subject = bpmTaskPo.getSubject();
+				String[] parts = subject.split("#");
+				System.out.println("bpmTaskPo.getCreateTime() = " + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(bpmTaskPo.getCreateTime()));
+				for (String part : parts) {
+					if (part.contains("\"timeLimit\"")) {
+						ifExpired(part , "timeLimit" , bpmTaskPo);
+					} else if (part.contains("\"loseDate\"")) {
+						ifExpired(part , "loseDate" , bpmTaskPo);
+					}
+				}
+			}
+		}
+		// 按照创建时间降序排序
+		list.sort(comparing(BpmTaskPo::getCreateTime).reversed());
+	}
+
+	private void ifExpired(String part,String flag,BpmTaskPo bpmTaskPo){
+		if ("timeLimit".equals(flag)){
+			try{
+				String timeObj = part.split(",")[0];
+				String timeLimit = timeObj.substring(timeObj.indexOf(":")+1).replace("\"", "");
+				int day = Integer.parseInt(timeLimit);
+				Calendar calendar = Calendar.getInstance();
+				calendar.setTime(bpmTaskPo.getCreateTime());
+				calendar.add(Calendar.DATE, day);
+				Date currentDate = new Date();
+				if (calendar.getTime().compareTo(currentDate) > 0) {
+					// 判断是否即将超时(创建时间和当前时间的间隔小于等于一天)
+					long timeDifference = currentDate.getTime() - bpmTaskPo.getCreateTime().getTime();
+					long oneDayInMillis = 24 * 60 * 60 * 1000; // 一天的毫秒数
+					if (timeDifference >= (day - 1) * oneDayInMillis) {
+						bpmTaskPo.setExpired(BpmTaskPo.ABOUT_TO_TIME_OUT);
+					} else {
+						bpmTaskPo.setExpired(BpmTaskPo.NOT_TIME_OUT);
+					}
+				} else {
+					bpmTaskPo.setExpired(BpmTaskPo.TIME_OUT);
+				}
+			}catch (Exception e){
+				bpmTaskPo.setExpired(BpmTaskPo.NOT_TIME_OUT);
+				logger.warn("timeLimit天数转换异常,bpmTaskPo.getId()={}",bpmTaskPo.getId());
+			}
+		}else {
+			try{
+				String timeObj = part.split(",")[0];
+				String loseDate = timeObj.substring(timeObj.indexOf(":")+1).replace("\"", "");
+				SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+				Date deadline = sdf.parse(loseDate);
+				Date currentTime = new Date();
+				// 如果当前时间在截止日期之后,则已超时
+				if (currentTime.after(deadline)) {
+					bpmTaskPo.setExpired(BpmTaskPo.TIME_OUT);
+				}else if ((deadline.getTime() - currentTime.getTime()) <= (24 * 60 * 60 * 1000)) {
+					// 如果当前时间和截止日期相差小于等于一天,则设置为即将超时
+					bpmTaskPo.setExpired(BpmTaskPo.ABOUT_TO_TIME_OUT);
+				}else {
+					bpmTaskPo.setExpired(BpmTaskPo.NOT_TIME_OUT);
+				}
+			}catch (Exception e){
+				bpmTaskPo.setExpired(BpmTaskPo.NOT_TIME_OUT);
+				logger.warn("loseDate日期时间转换异常,bpmTaskPo.getId()={}",bpmTaskPo.getId());
+			}
+		}
+
+
+	}
+
 	
 	@ApiOperation(value = "我的待办列表-栏目", notes = "我的待办列表")
 	@Override
@@ -545,6 +601,8 @@ public class BpmReceivedProvider extends GenericProvider implements IBpmReceived
 				bpmTaskRepository.buildInternal(list);
 				bpmTaskRepository.removeBuildInternal();
 			}
+
+			this.getExpired(list);
 			
 			StopWatchUtil.stopAndStartNewLocal(localId, step, "pending build page list");
 			APIPageList<BpmTaskPo> apiPageList = this.getAPIPageList(list);

+ 1 - 1
ibps-provider-root/modules/provider-platform/src/main/java/com/lc/ibps/platform/plan/job/CommonInsertJob.java

@@ -21,7 +21,7 @@ import java.util.Map;
 
 public class CommonInsertJob extends BaseJob2 {
 
-    private static final Logger logger = LoggerFactory.getLogger(EquipmentMaintenancePlanJob.class);
+    private static final Logger logger = LoggerFactory.getLogger(CommonInsertJob.class);
     public static final String PLAN_DATE = "plan-date";
     public static final String SQL_CODE = "sql_code_";
     private ICommonDao<?> commonDao = AppUtil.getBean(ICommonDao.class);

+ 2 - 1
ibps-provider-root/modules/provider-platform/src/main/java/com/lc/ibps/platform/plan/job/EquipmentMaintenancePlanJob.java

@@ -81,7 +81,8 @@ public class EquipmentMaintenancePlanJob  extends BaseJob2 {
                 "       (wei_hu_zhou_qi_c_ ='每周1,3,5' AND FIND_IN_SET(WEEKDAY(#{p0}),'0,2,4')=0) OR " +
                 "       (wei_hu_zhou_qi_c_ ='每周2,4' AND FIND_IN_SET(WEEKDAY(#{p0}),'1,3')=0) OR " +
                 "       (wei_hu_zhou_qi_c_ ='每周1-5' AND FIND_IN_SET(WEEKDAY(#{p0}),'5,6')>0) OR " +
-                "       (wei_hu_zhou_qi_c_ ='每周1-6' AND FIND_IN_SET(WEEKDAY(#{p0}),'6')>0)) ) plan " +
+                "       (wei_hu_zhou_qi_c_ ='每周1-6' AND FIND_IN_SET(WEEKDAY(#{p0}),'6')>0) OR" +
+                "       (wei_hu_zhou_qi_c_ ='每周1,4' AND FIND_IN_SET(WEEKDAY(#{p0}),'0,3')=0) )) plan " +
                 "        WHERE NOT EXISTS (SELECT 1 FROM `t_mjsbwhbyjlby` jlb WHERE jlb.she_bei_bian_hao_ = plan.she_bei_bian_hao_ AND jlb.zhu_zhou_qi_ = plan.zhu_zhou_qi_ " +
                 "        AND jlb.period_num = plan.period_num AND jlb.ji_hua_nian_du_=plan.ji_hua_nian_du_)";
 

+ 105 - 0
ibps-provider-root/modules/provider-platform/src/main/java/com/lc/ibps/platform/plan/job/ReplenishSnapshotJob.java

@@ -0,0 +1,105 @@
+package com.lc.ibps.platform.plan.job;
+
+import com.lc.ibps.base.core.constants.StringPool;
+import com.lc.ibps.base.core.util.AppUtil;
+import com.lc.ibps.base.core.util.BeanUtils;
+import com.lc.ibps.base.core.util.EnvUtil;
+import com.lc.ibps.base.framework.table.ICommonDao;
+import com.lc.ibps.base.web.context.ContextUtil;
+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.components.quartz.BaseJob2;
+import com.lc.ibps.org.party.persistence.entity.DefaultPartyUserPo;
+import com.lc.ibps.org.party.persistence.entity.PartyEmployeePo;
+import com.lc.ibps.org.party.persistence.entity.PartyEntityPo;
+import org.quartz.JobDataMap;
+import org.quartz.JobExecutionContext;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.net.URLEncoder;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author gaozl
+ */
+public class ReplenishSnapshotJob extends BaseJob2 {
+
+    private static final Logger logger = LoggerFactory.getLogger(ReplenishSnapshotJob.class);
+
+    @Override
+    public void executeJob(JobExecutionContext context) throws Exception {
+        JobDataMap dataMap = context.getMergedJobDataMap();
+        logger.warn("group={} job={} trigger={} is running.",
+                context.getJobDetail().getKey().getGroup(),
+                context.getJobDetail().getKey().getName(),
+                context.getTrigger().getKey().getName());
+
+        ICommonDao<?> commonDao = AppUtil.getBean(ICommonDao.class);
+        UploadProvider uploadFile = AppUtil.getBean(UploadProvider.class);
+        String runqianServer = EnvUtil.getProperty("runqian.server", "");
+        String runqianBasePath = EnvUtil.getProperty("runqian.base-path", "");
+        String sql = " select id_,biz_key_,proc_def_name_,bao_biao_lu_jing_,user_id_,user_name_,account_,end_time_,bo_code_,org_id_ from t_bckzsjb " +
+                     " where date_format(create_time_,'%Y-%m-%d')=current_date and  status_='0' and retry_<3 ";
+        @SuppressWarnings("unchecked")
+        List<Map<String, Object>> list = (List<Map<String, Object>>) commonDao.query(sql);
+        if (BeanUtils.isNotEmpty(list)) {
+            logger.warn("补充快照查询数据总数:{}", list.size());
+            int success = 0;int error = 0;
+            for (Map<String, Object> map : list){
+                APIResult<AttachmentPo> result = new APIResult<>();
+                String id = map.get("id_").toString();
+                String userId = map.get("user_id_").toString();
+                String bizKey = map.get("biz_key_").toString();
+                String boCode = map.get("bo_code_").toString();
+                String org = map.get("org_id_").toString();
+                String userName = map.get("user_name_").toString();
+                String account = map.get("account_").toString();
+                try{
+                    String reportPath = "金通医学实验室管理系统/" + map.get("bao_biao_lu_jing_");
+                    String baseUrl = runqianServer + runqianBasePath + "/reportServlet?action=6&file=";
+                    reportPath = URLEncoder.encode(reportPath, "UTF-8");
+                    String url = baseUrl + reportPath + "&print=1&srcType=file&paramString=id_%3D" + bizKey + "&org_=" + org;
+                    LocalDateTime dateTime = LocalDateTime.parse(map.get("end_time_").toString(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+                    String name = map.get("proc_def_name_") + dateTime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"));
+
+                    DefaultPartyUserPo user = new DefaultPartyUserPo();
+                    user.setUserId(userId);
+                    user.setFullname(userName);
+                    user.setAccount(account);
+                    ContextUtil.setCurrentUser(user);
+
+                    result = uploadFile.runQianUpload(url , name , StringPool.FileType.Office.PDF );
+
+                    if (result.getState() == 200 && BeanUtils.isNotEmpty(result.getData())) {
+                        String kuaiZhaoId = result.getData().getId();
+                        commonDao.execute("update "+boCode+" set kuai_zhao_='"+kuaiZhaoId+"' where id_='"+bizKey+"' ");
+
+                        commonDao.execute("update t_bckzsjb set status_='1',kuai_zhao_='"+kuaiZhaoId+"' where id_='"+id+"'");
+
+                        logger.warn("Generated Snapshot Success kuaiZhaoId={},id={}" + kuaiZhaoId,id );
+                        success = success + 1;
+                    }
+                }catch (Exception e){
+                    commonDao.execute("update t_bckzsjb set retry_=retry_+1,msg_='"+e.getMessage() +"' where id_='"+id+"'");
+                    error = error + 1;
+                    logger.error("补充快照异常,异常数据id:{} with error message {}",id,e.getMessage());
+                }
+
+            }
+            String msg = "补充快照成功数:"+success+",补充快照异常数:"+error;
+            logger.warn(msg);
+            if (error>0){
+                throw new Exception(msg);
+            }
+        }else {
+            logger.warn("未查询到需要补充快照的数据");
+        }
+
+    }
+
+}