提交 52da88a6 编写于 作者: O o2null

Merge branch 'fix/attendance1016' into 'wrdp'

【考勤】修复多人同时打卡时后台更新数据锁死

See merge request o2oa/o2oa!1831
package com.x.attendance.assemble.control; package com.x.attendance.assemble.control;
import com.x.base.core.entity.JpaObject; import com.x.base.core.entity.JpaObject;
import com.x.base.core.project.cache.ApplicationCache;
import com.x.base.core.project.cache.CacheManager; import com.x.base.core.project.cache.CacheManager;
/** /**
......
...@@ -5,11 +5,9 @@ import com.x.attendance.assemble.control.service.*; ...@@ -5,11 +5,9 @@ import com.x.attendance.assemble.control.service.*;
import com.x.attendance.entity.AttendanceStatisticRequireLog; import com.x.attendance.entity.AttendanceStatisticRequireLog;
import com.x.attendance.entity.AttendanceStatisticalCycle; import com.x.attendance.entity.AttendanceStatisticalCycle;
import com.x.attendance.entity.AttendanceWorkDayConfig; import com.x.attendance.entity.AttendanceWorkDayConfig;
import com.x.base.core.project.cache.ApplicationCache;
import com.x.base.core.project.logger.Logger; import com.x.base.core.project.logger.Logger;
import com.x.base.core.project.logger.LoggerFactory; import com.x.base.core.project.logger.LoggerFactory;
import com.x.base.core.project.queue.AbstractQueue; import com.x.base.core.project.queue.AbstractQueue;
import net.sf.ehcache.Ehcache;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -28,7 +26,6 @@ public class QueueAttendanceDetailStatistic extends AbstractQueue<String> { ...@@ -28,7 +26,6 @@ public class QueueAttendanceDetailStatistic extends AbstractQueue<String> {
AttendanceStatisticalCycleServiceAdv statisticalCycleServiceAdv = new AttendanceStatisticalCycleServiceAdv(); AttendanceStatisticalCycleServiceAdv statisticalCycleServiceAdv = new AttendanceStatisticalCycleServiceAdv();
AttendanceStatisticRequireLog log = statisticRequireLogServiceAdv.get(logId); AttendanceStatisticRequireLog log = statisticRequireLogServiceAdv.get(logId);
Ehcache cache = ApplicationCache.instance().getCache( AttendanceStatisticalCycle.class);
if( log != null ){ if( log != null ){
logger.debug("system try to statistic attendance detail, logId:" + logId ); logger.debug("system try to statistic attendance detail, logId:" + logId );
AttendanceStatisticalCycle attendanceStatisticalCycle = null; AttendanceStatisticalCycle attendanceStatisticalCycle = null;
......
...@@ -7,13 +7,9 @@ import com.x.attendance.assemble.control.service.AttendanceWorkDayConfigServiceA ...@@ -7,13 +7,9 @@ import com.x.attendance.assemble.control.service.AttendanceWorkDayConfigServiceA
import com.x.attendance.entity.AttendanceDetail; import com.x.attendance.entity.AttendanceDetail;
import com.x.attendance.entity.AttendanceStatisticalCycle; import com.x.attendance.entity.AttendanceStatisticalCycle;
import com.x.attendance.entity.AttendanceWorkDayConfig; import com.x.attendance.entity.AttendanceWorkDayConfig;
import com.x.base.core.project.cache.ApplicationCache;
import com.x.base.core.project.logger.Logger; import com.x.base.core.project.logger.Logger;
import com.x.base.core.project.logger.LoggerFactory; import com.x.base.core.project.logger.LoggerFactory;
import com.x.base.core.project.queue.AbstractQueue; import com.x.base.core.project.queue.AbstractQueue;
import net.sf.ehcache.Ehcache;
import net.sf.ehcache.Element;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
......
...@@ -5,7 +5,6 @@ import com.x.attendance.entity.AttendanceStatisticalCycle; ...@@ -5,7 +5,6 @@ import com.x.attendance.entity.AttendanceStatisticalCycle;
import com.x.base.core.container.EntityManagerContainer; import com.x.base.core.container.EntityManagerContainer;
import com.x.base.core.container.factory.EntityManagerContainerFactory; import com.x.base.core.container.factory.EntityManagerContainerFactory;
import com.x.base.core.entity.annotation.CheckRemoveType; import com.x.base.core.entity.annotation.CheckRemoveType;
import com.x.base.core.project.cache.ApplicationCache;
import com.x.base.core.project.cache.CacheManager; import com.x.base.core.project.cache.CacheManager;
import com.x.base.core.project.http.ActionResult; import com.x.base.core.project.http.ActionResult;
import com.x.base.core.project.http.EffectivePerson; import com.x.base.core.project.http.EffectivePerson;
......
...@@ -14,7 +14,6 @@ import com.x.base.core.entity.JpaObject; ...@@ -14,7 +14,6 @@ import com.x.base.core.entity.JpaObject;
import com.x.base.core.entity.annotation.CheckPersistType; import com.x.base.core.entity.annotation.CheckPersistType;
import com.x.base.core.project.bean.WrapCopier; import com.x.base.core.project.bean.WrapCopier;
import com.x.base.core.project.bean.WrapCopierFactory; import com.x.base.core.project.bean.WrapCopierFactory;
import com.x.base.core.project.cache.ApplicationCache;
import com.x.base.core.project.cache.CacheManager; import com.x.base.core.project.cache.CacheManager;
import com.x.base.core.project.http.ActionResult; import com.x.base.core.project.http.ActionResult;
import com.x.base.core.project.http.EffectivePerson; import com.x.base.core.project.http.EffectivePerson;
......
...@@ -3,13 +3,11 @@ package com.x.attendance.assemble.control.jaxrs.attendancestatisticalcycle; ...@@ -3,13 +3,11 @@ package com.x.attendance.assemble.control.jaxrs.attendancestatisticalcycle;
import com.x.attendance.assemble.common.date.DateOperation; import com.x.attendance.assemble.common.date.DateOperation;
import com.x.attendance.assemble.control.service.UserManagerService; import com.x.attendance.assemble.control.service.UserManagerService;
import com.x.attendance.entity.AttendanceStatisticalCycle; import com.x.attendance.entity.AttendanceStatisticalCycle;
import com.x.base.core.project.cache.ApplicationCache; import com.x.base.core.project.cache.Cache;
import com.x.base.core.project.jaxrs.StandardJaxrsAction; import com.x.base.core.project.jaxrs.StandardJaxrsAction;
import net.sf.ehcache.Ehcache;
public class BaseAction extends StandardJaxrsAction{ public class BaseAction extends StandardJaxrsAction{
protected Cache.CacheCategory cache = new Cache.CacheCategory( AttendanceStatisticalCycle.class);
protected Ehcache cache = ApplicationCache.instance().getCache( AttendanceStatisticalCycle.class);
protected UserManagerService userManagerService = new UserManagerService(); protected UserManagerService userManagerService = new UserManagerService();
protected DateOperation dateOperation = new DateOperation(); protected DateOperation dateOperation = new DateOperation();
......
...@@ -2,12 +2,10 @@ package com.x.attendance.assemble.control.jaxrs.attendanceworkdayconfig; ...@@ -2,12 +2,10 @@ package com.x.attendance.assemble.control.jaxrs.attendanceworkdayconfig;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import com.x.attendance.entity.AttendanceStatisticalCycle;
import com.x.attendance.entity.AttendanceWorkDayConfig; import com.x.attendance.entity.AttendanceWorkDayConfig;
import com.x.base.core.container.EntityManagerContainer; import com.x.base.core.container.EntityManagerContainer;
import com.x.base.core.container.factory.EntityManagerContainerFactory; import com.x.base.core.container.factory.EntityManagerContainerFactory;
import com.x.base.core.entity.annotation.CheckRemoveType; import com.x.base.core.entity.annotation.CheckRemoveType;
import com.x.base.core.project.cache.ApplicationCache;
import com.x.base.core.project.cache.CacheManager; import com.x.base.core.project.cache.CacheManager;
import com.x.base.core.project.http.ActionResult; import com.x.base.core.project.http.ActionResult;
import com.x.base.core.project.http.EffectivePerson; import com.x.base.core.project.http.EffectivePerson;
......
...@@ -14,7 +14,6 @@ import com.x.base.core.entity.JpaObject; ...@@ -14,7 +14,6 @@ import com.x.base.core.entity.JpaObject;
import com.x.base.core.entity.annotation.CheckPersistType; import com.x.base.core.entity.annotation.CheckPersistType;
import com.x.base.core.project.bean.WrapCopier; import com.x.base.core.project.bean.WrapCopier;
import com.x.base.core.project.bean.WrapCopierFactory; import com.x.base.core.project.bean.WrapCopierFactory;
import com.x.base.core.project.cache.ApplicationCache;
import com.x.base.core.project.cache.CacheManager; import com.x.base.core.project.cache.CacheManager;
import com.x.base.core.project.http.ActionResult; import com.x.base.core.project.http.ActionResult;
import com.x.base.core.project.http.EffectivePerson; import com.x.base.core.project.http.EffectivePerson;
......
...@@ -7,11 +7,9 @@ import javax.servlet.http.HttpServletRequest; ...@@ -7,11 +7,9 @@ import javax.servlet.http.HttpServletRequest;
import com.x.attendance.assemble.control.ThisApplication; import com.x.attendance.assemble.control.ThisApplication;
import com.x.attendance.entity.AttendanceSelfHoliday; import com.x.attendance.entity.AttendanceSelfHoliday;
import com.x.attendance.entity.AttendanceStatisticalCycle;
import com.x.base.core.container.EntityManagerContainer; import com.x.base.core.container.EntityManagerContainer;
import com.x.base.core.container.factory.EntityManagerContainerFactory; import com.x.base.core.container.factory.EntityManagerContainerFactory;
import com.x.base.core.entity.annotation.CheckRemoveType; import com.x.base.core.entity.annotation.CheckRemoveType;
import com.x.base.core.project.cache.ApplicationCache;
import com.x.base.core.project.cache.CacheManager; import com.x.base.core.project.cache.CacheManager;
import com.x.base.core.project.http.ActionResult; import com.x.base.core.project.http.ActionResult;
import com.x.base.core.project.http.EffectivePerson; import com.x.base.core.project.http.EffectivePerson;
......
...@@ -10,7 +10,6 @@ import com.x.attendance.entity.AttendanceSelfHoliday; ...@@ -10,7 +10,6 @@ import com.x.attendance.entity.AttendanceSelfHoliday;
import com.x.base.core.container.EntityManagerContainer; import com.x.base.core.container.EntityManagerContainer;
import com.x.base.core.container.factory.EntityManagerContainerFactory; import com.x.base.core.container.factory.EntityManagerContainerFactory;
import com.x.base.core.entity.annotation.CheckRemoveType; import com.x.base.core.entity.annotation.CheckRemoveType;
import com.x.base.core.project.cache.ApplicationCache;
import com.x.base.core.project.cache.CacheManager; import com.x.base.core.project.cache.CacheManager;
import com.x.base.core.project.http.ActionResult; import com.x.base.core.project.http.ActionResult;
import com.x.base.core.project.http.EffectivePerson; import com.x.base.core.project.http.EffectivePerson;
......
...@@ -4,16 +4,11 @@ import com.google.gson.JsonElement; ...@@ -4,16 +4,11 @@ import com.google.gson.JsonElement;
import com.x.attendance.assemble.control.ExceptionWrapInConvert; import com.x.attendance.assemble.control.ExceptionWrapInConvert;
import com.x.attendance.assemble.control.ThisApplication; import com.x.attendance.assemble.control.ThisApplication;
import com.x.attendance.entity.AttendanceSelfHoliday; import com.x.attendance.entity.AttendanceSelfHoliday;
import com.x.attendance.entity.AttendanceStatisticalCycle;
import com.x.base.core.container.EntityManagerContainer; import com.x.base.core.container.EntityManagerContainer;
import com.x.base.core.container.factory.EntityManagerContainerFactory; import com.x.base.core.container.factory.EntityManagerContainerFactory;
import com.x.base.core.entity.AbstractPersistenceProperties;
import com.x.base.core.entity.JpaObject;
import com.x.base.core.entity.annotation.CheckPersist;
import com.x.base.core.entity.annotation.CheckPersistType; import com.x.base.core.entity.annotation.CheckPersistType;
import com.x.base.core.entity.annotation.CheckRemoveType; import com.x.base.core.entity.annotation.CheckRemoveType;
import com.x.base.core.project.annotation.FieldDescribe; import com.x.base.core.project.annotation.FieldDescribe;
import com.x.base.core.project.cache.ApplicationCache;
import com.x.base.core.project.cache.CacheManager; import com.x.base.core.project.cache.CacheManager;
import com.x.base.core.project.http.ActionResult; import com.x.base.core.project.http.ActionResult;
import com.x.base.core.project.http.EffectivePerson; import com.x.base.core.project.http.EffectivePerson;
...@@ -25,13 +20,9 @@ import com.x.base.core.project.organization.Unit; ...@@ -25,13 +20,9 @@ import com.x.base.core.project.organization.Unit;
import com.x.base.core.project.tools.ListTools; import com.x.base.core.project.tools.ListTools;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import javax.persistence.Column;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map;
public class ActionSave extends BaseAction { public class ActionSave extends BaseAction {
......
...@@ -5,14 +5,12 @@ import com.x.attendance.assemble.control.service.AttendanceSelfHolidayServiceAdv ...@@ -5,14 +5,12 @@ import com.x.attendance.assemble.control.service.AttendanceSelfHolidayServiceAdv
import com.x.attendance.assemble.control.service.AttendanceStatisticalCycleServiceAdv; import com.x.attendance.assemble.control.service.AttendanceStatisticalCycleServiceAdv;
import com.x.attendance.assemble.control.service.UserManagerService; import com.x.attendance.assemble.control.service.UserManagerService;
import com.x.attendance.entity.AttendanceSelfHoliday; import com.x.attendance.entity.AttendanceSelfHoliday;
import com.x.attendance.entity.AttendanceStatisticalCycle; import com.x.base.core.project.cache.Cache;
import com.x.base.core.project.cache.ApplicationCache;
import com.x.base.core.project.jaxrs.StandardJaxrsAction; import com.x.base.core.project.jaxrs.StandardJaxrsAction;
import net.sf.ehcache.Ehcache; import net.sf.ehcache.Ehcache;
public class BaseAction extends StandardJaxrsAction{ public class BaseAction extends StandardJaxrsAction{
protected Cache.CacheCategory cache = new Cache.CacheCategory( AttendanceSelfHoliday.class);
protected Ehcache cache = ApplicationCache.instance().getCache( AttendanceSelfHoliday.class);
protected UserManagerService userManagerService = new UserManagerService(); protected UserManagerService userManagerService = new UserManagerService();
protected AttendanceStatisticalCycleServiceAdv attendanceStatisticCycleServiceAdv = new AttendanceStatisticalCycleServiceAdv(); protected AttendanceStatisticalCycleServiceAdv attendanceStatisticCycleServiceAdv = new AttendanceStatisticalCycleServiceAdv();
protected AttendanceDetailAnalyseServiceAdv attendanceDetailAnalyseServiceAdv = new AttendanceDetailAnalyseServiceAdv(); protected AttendanceDetailAnalyseServiceAdv attendanceDetailAnalyseServiceAdv = new AttendanceDetailAnalyseServiceAdv();
......
...@@ -7,16 +7,12 @@ import java.util.List; ...@@ -7,16 +7,12 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import com.x.attendance.assemble.control.ThisApplication; import com.x.attendance.assemble.control.ThisApplication;
import com.x.base.core.project.cache.ApplicationCache;
import com.x.base.core.project.tools.ListTools; import com.x.base.core.project.tools.ListTools;
import net.sf.ehcache.Ehcache;
import net.sf.ehcache.Element;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import com.x.attendance.assemble.common.date.DateOperation; import com.x.attendance.assemble.common.date.DateOperation;
import com.x.attendance.assemble.control.Business; import com.x.attendance.assemble.control.Business;
import com.x.attendance.assemble.control.factory.AttendanceStatisticRequireLogFactory; import com.x.attendance.assemble.control.factory.AttendanceStatisticRequireLogFactory;
import com.x.attendance.assemble.control.jaxrs.attendancedetail.AttendanceCycles;
import com.x.attendance.entity.AttendanceDetail; import com.x.attendance.entity.AttendanceDetail;
import com.x.attendance.entity.AttendanceScheduleSetting; import com.x.attendance.entity.AttendanceScheduleSetting;
import com.x.attendance.entity.AttendanceSelfHoliday; import com.x.attendance.entity.AttendanceSelfHoliday;
......
...@@ -307,6 +307,7 @@ public class AttendanceDetailServiceAdv { ...@@ -307,6 +307,7 @@ public class AttendanceDetailServiceAdv {
} }
if( detail_old == null ) { if( detail_old == null ) {
detail.setBatchName( "FromMobile_" + dateOperation.getNowTimeChar() ); detail.setBatchName( "FromMobile_" + dateOperation.getNowTimeChar() );
detail.setRecordStatus(1);
emc.beginTransaction( AttendanceDetail.class ); emc.beginTransaction( AttendanceDetail.class );
emc.persist( detail , CheckPersistType.all ); emc.persist( detail , CheckPersistType.all );
emc.commit(); emc.commit();
...@@ -314,15 +315,17 @@ public class AttendanceDetailServiceAdv { ...@@ -314,15 +315,17 @@ public class AttendanceDetailServiceAdv {
}else { }else {
emc.beginTransaction( AttendanceDetail.class ); emc.beginTransaction( AttendanceDetail.class );
detail.copyTo( detail_old, JpaObject.FieldsUnmodify); detail.copyTo( detail_old, JpaObject.FieldsUnmodify);
detail_old.setRecordStatus(1);
emc.check( detail_old , CheckPersistType.all ); emc.check( detail_old , CheckPersistType.all );
emc.commit(); emc.commit();
} }
/*可能引起多人同时打卡时commit error
emc.beginTransaction( AttendanceDetailMobile.class ); emc.beginTransaction( AttendanceDetailMobile.class );
for( AttendanceDetailMobile detailMobile : mobileDetails ) { for( AttendanceDetailMobile detailMobile : mobileDetails ) {
detailMobile.setRecordStatus(1); detailMobile.setRecordStatus(1);
emc.check( detailMobile , CheckPersistType.all ); emc.check( detailMobile , CheckPersistType.all );
} }
emc.commit(); emc.commit();*/
//分析保存好的考勤数据 //分析保存好的考勤数据
try { try {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册