提交 27b76172 编写于 作者: L luojing

考勤,部门考勤月报排除不参加考勤的组织和人员

上级 eedf6068
......@@ -21,6 +21,7 @@ import com.x.attendance.entity.StatisticPersonForMonth_;
import com.x.base.core.project.exception.ExceptionWhen;
import com.x.base.core.project.logger.Logger;
import com.x.base.core.project.logger.LoggerFactory;
import com.x.base.core.project.tools.ListTools;
public class StatisticPersonForMonthFactory extends AbstractFactory {
......@@ -109,6 +110,39 @@ public class StatisticPersonForMonthFactory extends AbstractFactory {
return em.createQuery( cq.where( p ) ).setMaxResults( 60 ).getResultList();
}
//排除不需要的组织和人员
public List<String> listPersonForMonthByUnitYearMonthAndUn( List<String> unitNameList,List<String> unUnitNameList,List<String> personNameList, String year, String month ) throws Exception{
if( unitNameList == null || unitNameList.size() == 0 ){
logger.error( new UnitNamesEmptyException() );
return null;
}
EntityManager em = this.entityManagerContainer().get( StatisticPersonForMonth.class );
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<String> cq = cb.createQuery(String.class );
Root<StatisticPersonForMonth> root = cq.from( StatisticPersonForMonth.class );
Predicate p = root.get( StatisticPersonForMonth_.unitName ).in(unitNameList);
if(ListTools.isNotEmpty(unUnitNameList)){
p = cb.and( p, cb.isNotMember(root.get( StatisticPersonForMonth_.unitName ), cb.literal(unUnitNameList)));
}
if(ListTools.isNotEmpty(personNameList)){
p = cb.and( p, cb.isNotMember(root.get( StatisticPersonForMonth_.employeeName ), cb.literal(personNameList)));
}
if( year == null || year.isEmpty() ){
logger.error( new StatisticYearEmptyException() );
}else{
p = cb.and( p, cb.equal( root.get( StatisticPersonForMonth_.statisticYear ), year ) );
}
if( month == null || month.isEmpty() ){
logger.error( new StatisticMonthEmptyException() );
}else{
p = cb.and( p, cb.equal( root.get( StatisticPersonForMonth_.statisticMonth ), month ));
}
cq.select(root.get( StatisticPersonForMonth_.id ));
return em.createQuery( cq.where( p ) ).setMaxResults( 60 ).getResultList();
}
/**
* 查询下一页的信息数据
* @param id
......
......@@ -22,6 +22,8 @@ public class ActionShowStForPersonInUnitSubNested extends BaseAction {
List<Wo> wraps = null;
List<String> ids = null;
List<String> unitNameList = new ArrayList<String>();
List<String> unUnitNameList = new ArrayList<String>();
List<String> personNameList = new ArrayList<String>();
List<StatisticPersonForMonth> statisticPersonForMonth_list = null;
Boolean check = true;
if ( "(0)".equals( year ) ) {
......@@ -52,10 +54,17 @@ public class ActionShowStForPersonInUnitSubNested extends BaseAction {
unitNameList = new ArrayList<>();
}
unitNameList.add( name );
unUnitNameList = getUnUnitNameList();
personNameList = getUnPersonNameList();
System.out.println("ActionShowStForPersonInUnitSubNested____unitNameList="+unitNameList);
System.out.println("ActionShowStForPersonInUnitSubNested____unUnitNameList="+unUnitNameList);
System.out.println("ActionShowStForPersonInUnitSubNested____personNameList="+personNameList);
}
if( check ){
try {
ids = attendanceStatisticServiceAdv.listPersonForMonthByUnitYearAndMonth( unitNameList, year, month);
//ids = attendanceStatisticServiceAdv.listPersonForMonthByUnitYearAndMonth( unitNameList, year, month);
ids = attendanceStatisticServiceAdv.listPersonForMonthByUnitYearMonthAndUn( unitNameList, unUnitNameList,personNameList,year, month);
System.out.println("ActionShowStForPersonInUnitSubNested____ids="+ids.size());
} catch (Exception e) {
check = false;
Exception exception = new ExceptionAttendanceStatisticProcess(e,
......
......@@ -5,19 +5,23 @@ import java.util.List;
import org.apache.commons.lang3.StringUtils;
import com.x.attendance.assemble.control.service.AttendanceEmployeeConfigServiceAdv;
import com.x.attendance.assemble.control.service.AttendanceStatisticServiceAdv;
import com.x.attendance.assemble.control.service.UserManagerService;
import com.x.attendance.entity.AttendanceEmployeeConfig;
import com.x.base.core.container.EntityManagerContainer;
import com.x.base.core.container.factory.EntityManagerContainerFactory;
import com.x.base.core.project.jaxrs.StandardJaxrsAction;
import com.x.base.core.project.logger.Logger;
import com.x.base.core.project.logger.LoggerFactory;
import com.x.base.core.project.tools.ListTools;
public class BaseAction extends StandardJaxrsAction {
protected Logger logger = LoggerFactory.getLogger( BaseAction.class );
protected UserManagerService userManagerService = new UserManagerService();
protected AttendanceStatisticServiceAdv attendanceStatisticServiceAdv = new AttendanceStatisticServiceAdv();
protected AttendanceEmployeeConfigServiceAdv attendanceEmployeeConfigServiceAdv = new AttendanceEmployeeConfigServiceAdv();
// 根据组织递归查询下级组织
protected List<String> getUnitNameList( String unitName, List<String> unitNameList ) throws Exception {
......@@ -107,5 +111,57 @@ public class BaseAction extends StandardJaxrsAction {
}
return unitNameList;
}
/**
* 获取不需要考勤的组织
* @return
* @throws Exception
*/
protected List<String> getUnUnitNameList() throws Exception {
List<String> unUnitNameList = new ArrayList<String>();
List<AttendanceEmployeeConfig> attendanceEmployeeConfigs = attendanceEmployeeConfigServiceAdv.listByConfigType("NOTREQUIRED");
if(ListTools.isNotEmpty(attendanceEmployeeConfigs)){
for (AttendanceEmployeeConfig attendanceEmployeeConfig : attendanceEmployeeConfigs) {
String unitName = attendanceEmployeeConfig.getUnitName();
String employeeName = attendanceEmployeeConfig.getEmployeeName();
if(StringUtils.isEmpty(employeeName) && StringUtils.isNotEmpty(unitName)){
unUnitNameList.add(unitName);
List<String> tempUnitNameList = userManagerService.listSubUnitNameWithParent(unitName);
if(ListTools.isNotEmpty(tempUnitNameList)){
for(String tempUnit:tempUnitNameList){
if(!ListTools.contains(unUnitNameList, tempUnit)){
unUnitNameList.add(tempUnit);
}
}
}
}
}
}
return unUnitNameList;
}
/**
* 获取不需要考勤的人员
* @return
* @throws Exception
*/
protected List<String> getUnPersonNameList() throws Exception {
List<String> personNameList = new ArrayList<String>();
List<AttendanceEmployeeConfig> attendanceEmployeeConfigs = attendanceEmployeeConfigServiceAdv.listByConfigType("NOTREQUIRED");
if(ListTools.isNotEmpty(attendanceEmployeeConfigs)){
for (AttendanceEmployeeConfig attendanceEmployeeConfig : attendanceEmployeeConfigs) {
String employeeName = attendanceEmployeeConfig.getEmployeeName();
if(StringUtils.isNotEmpty(employeeName) && !ListTools.contains(personNameList, employeeName)){
personNameList.add(employeeName);
}
}
}
return personNameList;
}
}
......@@ -310,11 +310,12 @@ public class AttendanceDetailAnalyseService {
if( check ){
if( scheduleSetting != null ){
detail.setTopUnitName( scheduleSetting.getTopUnitName() );
if( StringUtils.isNotEmpty( scheduleSetting.getUnitName() ) && !"*".equals( scheduleSetting.getUnitName() )) {
/*if( StringUtils.isNotEmpty( scheduleSetting.getUnitName() ) && !"*".equals( scheduleSetting.getUnitName() )) {
detail.setUnitName( scheduleSetting.getUnitName() );
}else {
detail.setUnitName( userManagerService.getUnitNameWithPersonName( detail.getEmpName() ) );
}
}*/
detail.setUnitName( userManagerService.getUnitNameWithPersonName( detail.getEmpName() ) );
detail.setOnWorkTime( scheduleSetting.getOnDutyTime() );
detail.setMiddayRestStartTime( scheduleSetting.getMiddayRestStartTime() );
detail.setMiddayRestEndTime( scheduleSetting.getMiddayRestEndTime() );
......
......@@ -692,6 +692,13 @@ public class AttendanceStatisticService {
Business business = new Business( emc );
return business.getStatisticPersonForMonthFactory().listByUnitYearAndMonth( unitNameList, year, month );
}
//排除不需要的组织和人员
public List<String> listPersonForMonthByUnitYearMonthAndUn(EntityManagerContainer emc, List<String> unitNameList,List<String> unUnitNameList,List<String> personNameList,
String year, String month) throws Exception {
Business business = new Business( emc );
return business.getStatisticPersonForMonthFactory().listPersonForMonthByUnitYearMonthAndUn( unitNameList,unUnitNameList,personNameList, year, month );
}
public List<String> listUnitForMonthByUnitYearAndMonth(EntityManagerContainer emc, List<String> unitNameList, String year, String month) throws Exception {
Business business = new Business( emc );
return business.getStatisticUnitForMonthFactory().listByUnitYearAndMonth( unitNameList, year, month );
......
......@@ -236,6 +236,15 @@ public class AttendanceStatisticServiceAdv {
throw e;
}
}
//排除不需要的组织和人员
public List<String> listPersonForMonthByUnitYearMonthAndUn(List<String> unitNameList,List<String> unUnitNameList,List<String> personNameList, String year, String month) throws Exception {
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
return attendanceStatisticService.listPersonForMonthByUnitYearMonthAndUn( emc, unitNameList,unUnitNameList,personNameList, year, month);
} catch ( Exception e ) {
throw e;
}
}
public List<String> listUnitForMonthByUnitYearAndMonth(List<String> unitNameList, String year, String month) throws Exception {
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
......
......@@ -81,7 +81,7 @@ public class AttendanceEmployeeConfig extends SliceJpaObject {
public static final String employeeName_FIELDNAME = "employeeName";
@FieldDescribe("员工姓名distinguishedName")
@Column( length = AbstractPersistenceProperties.organization_name_length, name = ColumnNamePrefix + employeeName_FIELDNAME )
@CheckPersist(allowEmpty = false)
@CheckPersist(allowEmpty = true)
private String employeeName = "";
public static final String employeeNumber_FIELDNAME = "employeeNumber";
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册