Commit 14f57ba1 authored by 廖旭伟's avatar 廖旭伟

单事项申请初始状态改为3分钟内可撤销重新编辑,3分钟后提交审批

parent c97a1d8b
package com.mortals.xhx.common.utils;
import java.util.concurrent.DelayQueue;
public class MatterApplyDelayQueueUtil {
private MatterApplyDelayQueueUtil(){
}
private DelayQueue<MatterApplyDelayTask> delayQueue = new DelayQueue<>();
public volatile static MatterApplyDelayQueueUtil matterApplyDelayQueueUtil;
public static MatterApplyDelayQueueUtil getInstance(){
if(matterApplyDelayQueueUtil==null){
synchronized (MatterApplyDelayQueueUtil.class){
if(matterApplyDelayQueueUtil==null){
matterApplyDelayQueueUtil = new MatterApplyDelayQueueUtil();
}
}
}
return matterApplyDelayQueueUtil;
}
public void put(MatterApplyDelayTask t){
delayQueue.put(t);
}
public boolean isEmpty(){
return delayQueue.isEmpty();
}
public MatterApplyDelayTask poll(){
return delayQueue.poll();
}
}
package com.mortals.xhx.common.utils;
import com.mortals.xhx.module.apply.model.MatterApplyEntity;
import com.mortals.xhx.module.apply.service.MatterApplyService;
import java.util.Date;
import java.util.concurrent.Delayed;
import java.util.concurrent.TimeUnit;
public class MatterApplyDelayTask implements Runnable, Delayed {
private long expirationTime;
private MatterApplyService matterApplyService;
private Long matterApplyId;
public MatterApplyDelayTask(int delaySeconds,MatterApplyService matterApplyService,Long matterApplyId) {
this.matterApplyId = matterApplyId;
this.matterApplyService = matterApplyService;
this.expirationTime = System.nanoTime() + TimeUnit.NANOSECONDS.convert(delaySeconds, TimeUnit.SECONDS);
}
@Override
public int compareTo(Delayed o) {
MatterApplyDelayTask other = (MatterApplyDelayTask) o;
return Long.compare(this.expirationTime, other.expirationTime);
}
@Override
public long getDelay(TimeUnit unit) {
return unit.convert(this.expirationTime - System.nanoTime(), TimeUnit.NANOSECONDS);
}
@Override
public void run() {
MatterApplyEntity entity = matterApplyService.get(matterApplyId);
if(entity!=null) {
MatterApplyEntity update = new MatterApplyEntity();
update.setId(entity.getId());
update.setApplyState(0);
update.setUpdateTime(new Date());
matterApplyService.update(update);
}
}
}
package com.mortals.xhx.daemon.applicationservice;
import com.mortals.framework.springcloud.service.IApplicationService;
import com.mortals.xhx.common.utils.MatterApplyDelayQueueUtil;
import com.mortals.xhx.common.utils.MatterApplyDelayTask;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.stereotype.Component;
/***
* 事项申请延迟队列
*/
@Component
@Slf4j
public class MatterApplyDelayQueueService implements IApplicationService {
private static Log logger = LogFactory.getLog(DemoStartService.class);
protected Boolean stopped = false;
@Override
public void start() {
logger.info("启动事项申请延迟队列处理服务..");
Thread sendThread = new Thread(new Runnable() {
@Override
public void run() {
int waitTime = 30000;
while (!stopped) {
MatterApplyDelayTask task = MatterApplyDelayQueueUtil.getInstance().poll();
if (task != null) {
task.run();
}else {
try {
Thread.sleep(waitTime);
} catch (InterruptedException e2) {
}
}
}
}
});
sendThread.start();
}
@Override
public void stop() {
this.stopped = true;
logger.info("停止事项申请延迟队列处理服务..");
}
}
......@@ -11,6 +11,8 @@ import com.mortals.xhx.base.system.user.service.UserService;
import com.mortals.xhx.common.code.YesNoEnum;
import com.mortals.xhx.common.pdu.RespData;
import com.mortals.xhx.common.pdu.matter.MatterDatumFilePdu;
import com.mortals.xhx.common.utils.MatterApplyDelayQueueUtil;
import com.mortals.xhx.common.utils.MatterApplyDelayTask;
import com.mortals.xhx.feign.matter.IMatterDatumFileFeign;
import com.mortals.xhx.module.apply.dao.MatterApplyDao;
import com.mortals.xhx.module.apply.model.MatterApplyDatumEntity;
......@@ -78,7 +80,7 @@ public class MatterApplyServiceImpl extends AbstractCRUDServiceImpl<MatterApplyD
}
entity.setSiteId(1l);
entity.setApplyTime(entity.getCreateTime());
entity.setApplyState(0);
entity.setApplyState(-1);
}
@Override
......@@ -94,6 +96,7 @@ public class MatterApplyServiceImpl extends AbstractCRUDServiceImpl<MatterApplyD
}
matterApplyDatumService.save(entity.getApplyDatumList(),context);
}
MatterApplyDelayQueueUtil.getInstance().put(new MatterApplyDelayTask(180,this,entity.getId()));
}
@Override
......@@ -141,7 +144,7 @@ public class MatterApplyServiceImpl extends AbstractCRUDServiceImpl<MatterApplyD
}
if( context!=null && context.getUser()!=null){
String loginName = context.getUser().getLoginName();
if(loginName.equals("renlin")) {
if(loginName.equals("admin")) {
params.setDeptCode(null);
}
}
......@@ -293,4 +296,5 @@ public class MatterApplyServiceImpl extends AbstractCRUDServiceImpl<MatterApplyD
protected void removeAfter(Long[] ids, Context context, int result) throws AppException {
matterApplyDatumService.remobeByApplyIds(ids,context);
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment