Просмотр исходного кода

[TASK-1362] 首页-待办接口增加流程办理进度

szjbdgzl 2 лет назад
Родитель
Сommit
5ea0df53c7

+ 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);