zm_dev
liuliang 2 years ago
parent cbf7df6cd2
commit 2f11bc7cbb

1
.idea/.gitignore vendored

@ -6,3 +6,4 @@
/dataSources.local.xml
# Editor-based HTTP Client requests
/httpRequests/
/target

@ -0,0 +1,13 @@
package com.api.attendance.attendancePlan.web;
import com.engine.attendance.attendancePlan.web.AttendancePlanAction;
import lombok.extern.slf4j.Slf4j;
import javax.ws.rs.Path;
@Path("/attendance/attendancePlan")
@Slf4j
public class AttendancePlanActionApi extends AttendancePlanAction {
}

@ -0,0 +1,121 @@
package com.engine.attendance.attendancePlan.cmd;
import com.engine.attendance.persongroup.commonutil.CommonUtil;
import com.engine.common.biz.AbstractCommonCommand;
import com.engine.common.entity.BizLogContext;
import com.engine.common.util.DbTools;
import com.engine.core.interceptor.CommandContext;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
import lombok.extern.slf4j.Slf4j;
import weaver.general.Util;
import weaver.hrm.company.DepartmentComInfo;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
@Slf4j
public class GetAttendanceItemsByPersonDataCmd extends AbstractCommonCommand<Map<String,Object>> {
public GetAttendanceItemsByPersonDataCmd(Map<String,Object> params){
this.params=params;
}
@Override
public BizLogContext getLogContext() {
return null;
}
@Override
public Map<String, Object> execute(CommandContext commandContext) {
String resourceId = Util.null2String(params.get("resourceId"));
String startDate = Util.null2String(params.get("startDate"));
String endDate = Util.null2String(params.get("endDate"));
String modeId = Util.null2String(params.get("modeId"));
Map<String,Object> resultMap = Maps.newHashMap();
String sql = "select dxlx,dataid,dx from uf_syzz where modeid=?";
List<Map<String,Object>> organizationList = DbTools.getSqlToList(sql,modeId);
sql = "select id,departmentid,subcompanyid1 from hrmresource where id =?";
Map<String,Object> departMentMap = DbTools.getSqlToMap(sql,resourceId);
Set<String> dataIds = Sets.newHashSet();
Map<String, List<Map<String,Object>>> organizationListGroupBydxlx = organizationList.stream().collect(Collectors.groupingBy(e ->e.get("dxlx").toString()));
//对象类型为人员
List<Map<String,Object>> personOrganizationList = organizationListGroupBydxlx.get("0");
//对象类型为人员组织
List<Map<String,Object>> personGroupOrganizationList = organizationListGroupBydxlx.get("1");
//对象类型为部门
List<Map<String,Object>> departmentOrganizationList = organizationListGroupBydxlx.get("2");
//对象类型为分部
List<Map<String,Object>> subCompanyOrganizationList = organizationListGroupBydxlx.get("3");
if (personOrganizationList != null){
for (Map<String,Object> personOrganization :personOrganizationList){
String dx = Util.null2String(personOrganization.get("dx"));
String ids = dx.split("-")[0];
if (ids.equals(resourceId)){
dataIds.add(Util.null2String(personOrganization.get("dataid")));
}
}
}
try {
if (departmentOrganizationList != null){
String deptid = Util.null2String(departMentMap.get("departmentid"));
String pdeptids = "";
pdeptids = new DepartmentComInfo().getAllParentDepartId(Util.null2String(departMentMap.get("departmentid")), pdeptids);
pdeptids = deptid + pdeptids;
log.info("pdeptids : [{}]",pdeptids);
for (Map<String,Object> departmentOrganization :departmentOrganizationList){
String dx = Util.null2String(departmentOrganization.get("dx"));
String ids = dx.split("-")[0];
for (String pdeptid : pdeptids.split(",")){
if (pdeptid.equals(ids)){
dataIds.add(Util.null2String(departmentOrganization.get("dataid")));
}
}
}
}
}catch (Exception e){
log.error("catch error :{}",e);
}
if (subCompanyOrganizationList != null){
String subCompanyId = Util.null2String(departMentMap.get("subcompanyid1"));
for (Map<String,Object> subCompanyOrganization :subCompanyOrganizationList){
String dx = Util.null2String(subCompanyOrganization.get("dx"));
String ids = dx.split("-")[0];
if (ids.equals(subCompanyId)){
dataIds.add(Util.null2String(subCompanyOrganization.get("dataid")));
}
}
}
if (personGroupOrganizationList != null){
Set<String> personGroupIds = personGroupOrganizationList.stream().map(e -> Util.null2String(e.get("dx")).split("-")[0]).collect(Collectors.toSet());
sql = "select mainid,empid,filters,bdate,edate from uf_ryqz_dt1 where mainid in ("+String.join(",",personGroupIds)+")";
log.info("query personGroupData : {}",sql);
List<Map<String,Object>> personGroupData = DbTools.getSqlToList(sql);
Set<String> personnelGroupIds = CommonUtil.getPersonnelGroupingByPerson(personGroupData,resourceId,startDate,endDate);
log.info("personnelGroupIds : {}",personnelGroupIds);
for (Map<String,Object> personGroupOrganization :personGroupOrganizationList){
String personnelGroupId = Util.null2String(personGroupOrganization.get("dx")).split("-")[0];
if (personnelGroupIds.contains(personnelGroupId)){
dataIds.add(Util.null2String(personGroupOrganization.get("dataid")));
}
}
}
sql = "select id `key`,mc kqxm from uf_jcl_kq_kqxm where tyxm=1";
List<Map<String,Object>> attendanceItems = DbTools.getSqlToList(sql);
log.info("dataIds : {}",dataIds);
sql = "select b.id `key`,b.mc kqxm,c.mc famc from uf_jcl_kq_kqfa_dt1 a left join uf_jcl_kq_kqxm b on a.kqxm=b.id left join uf_jcl_kq_kqfa c on a.mainid=c.id where mainid in ("+String.join(",",dataIds)+")";
if (dataIds.size() > 0){
log.info("query attendanceItems sql : {}",sql);
attendanceItems.addAll(DbTools.getSqlToList(sql));
}
resultMap.put("data",attendanceItems);
resultMap.put("total",attendanceItems.size());
return resultMap;
}
}

@ -0,0 +1,7 @@
package com.engine.attendance.attendancePlan.service;
import java.util.Map;
public interface AttendancePlanService {
Map<String,Object> getAttendanceItemsByPerson(Map<String,Object> params);
}

@ -0,0 +1,15 @@
package com.engine.attendance.attendancePlan.service.impl;
import com.engine.attendance.attendancePlan.cmd.GetAttendanceItemsByPersonDataCmd;
import com.engine.attendance.attendancePlan.service.AttendancePlanService;
import com.engine.core.impl.Service;
import java.util.Map;
public class AttendancePlanServiceImpl extends Service implements AttendancePlanService {
@Override
public Map<String, Object> getAttendanceItemsByPerson(Map<String, Object> params) {
Map<String,Object> result = commandExecutor.execute(new GetAttendanceItemsByPersonDataCmd(params));
return result;
}
}

@ -0,0 +1,33 @@
package com.engine.attendance.attendancePlan.web;
import com.engine.attendance.attendancePlan.service.AttendancePlanService;
import com.engine.attendance.attendancePlan.service.impl.AttendancePlanServiceImpl;
import com.engine.attendance.persongroup.service.SchedulingResultsService;
import com.engine.attendance.persongroup.service.impl.SchedulingResultsServiceImpl;
import com.engine.common.util.ApiReturnTools;
import com.engine.common.util.ParamUtil;
import com.engine.common.util.ServiceUtil;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import java.util.Map;
public class AttendancePlanAction {
private AttendancePlanService basicsetService = ServiceUtil.getService(AttendancePlanServiceImpl.class);
/**
*
* @return
*/
@POST
@Path("/getAttendanceItemsByPerson")
@Produces({"text/plain"})
public String getAttendanceItemsByPerson(@Context HttpServletRequest request, @Context HttpServletResponse response) {
Map<String,Object> paramMap = ParamUtil.request2Map(request);
Map<String,Object> dataMap = basicsetService.getAttendanceItemsByPerson(paramMap);
return ApiReturnTools.success(dataMap);
}
}

@ -69,7 +69,7 @@ public class GetDatatableRecurrenceCmd extends AbstractCommonCommand<Map<String,
String currentTime = DateUtil.getCurrentDate();
String queryryfz = "select a.mainid,a.empid,a.filters,a.bdate,a.edate from uf_ryqz_dt1 a,(select pbdxryfz from uf_pbjg where dxlx=1 group by pbdxryfz) b where a.mainid =b.pbdxryfz and a.bdate <= '"+currentTime+"'";
List<Map<String,Object>> personGroupData = DbTools.getSqlToList(queryryfz);
Set<String> personnelGroupIds = CommonUtil.getPersonnelGroupingByPerson(personGroupData,pbdx);
Set<String> personnelGroupIds = CommonUtil.getPersonnelGroupingByPerson(personGroupData,pbdx,null,null);
querySqlbyPbdx = sql +conditions + " and pbdxryfz in (?)";
log.info("递归查询人员-人员分组节点sql:{},personnelGroupIds:{}",querySqlbyPbdx,personnelGroupIds);
if(personnelGroupIds.size() > 0){

@ -210,31 +210,41 @@ public class CommonUtil {
* @param userId id
* @return ID
*/
public static Set<String> getPersonnelGroupingByPerson(List<Map<String,Object>> personnelGrouping,String userId){
public static Set<String> getPersonnelGroupingByPerson(List<Map<String,Object>> personnelGrouping,String userId,String startDate,String endDate){
Map<String,List<Map<String,Object>>> collect = personnelGrouping.stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("mainid"))));
Set<String> personnelGroupIds = Sets.newHashSet();
log.info("getPersonnelGroupingByPerson collect : {}",collect);
if (userId == null || "".equals(userId)){
return personnelGroupIds;
}
for (Map.Entry<String,List<Map<String,Object>>> e : collect.entrySet()){
List<Map<String,Object>> value = e.getValue();
for (Map<String,Object> data :value ){
String edate = Util.null2String(data.get("edate"));
if ("".equals(edate) || DateUtil.getBetWeenDays(edate) <=0){
String empid = Util.null2String(data.get("empid"));
String filters = Util.null2String(data.get("filters"));
log.info(" empid : {},userId : {}",empid,userId);
if (empid.equals(userId)){
personnelGroupIds.add(e.getKey());
}else if (!"".equals(filters)){
filters = filters.replace("","and");
filters = filters.replace("","or");
String sql = "select id from hrmresource where 1=1 and " +filters;
log.info("getPersonnelGroupingByPerson filter sql : {}",sql);
List<Map<String,Object>> dataList = DbTools.getSqlToList(sql);
for (Map<String,Object> dataMap :dataList){
String hrmId = Util.null2String(dataMap.get("id"));
if (hrmId.equals(userId)){
personnelGroupIds.add(e.getKey());
}
String bdate = Util.null2String(data.get("bdate"));
if (!"".equals(startDate) && startDate != null){
if ((!"".equals(edate) && DateUtil.getBetWeenDays(edate,startDate) >0) || DateUtil.getBetWeenDays(bdate,endDate) < 0){
continue;
}
}
if (!"".equals(edate) && DateUtil.getBetWeenDays(edate) >0){
continue;
}
String empid = Util.null2String(data.get("empid"));
String filters = Util.null2String(data.get("filters"));
log.info(" empid : {},userId : {}",empid,userId);
if (empid.equals(userId)){
personnelGroupIds.add(e.getKey());
}else if (!"".equals(filters)){
filters = filters.replace("","and");
filters = filters.replace("","or");
String sql = "select id from hrmresource where 1=1 and " +filters;
log.info("getPersonnelGroupingByPerson filter sql : {}",sql);
List<Map<String,Object>> dataList = DbTools.getSqlToList(sql);
for (Map<String,Object> dataMap :dataList){
String hrmId = Util.null2String(dataMap.get("id"));
if (hrmId.equals(userId)){
personnelGroupIds.add(e.getKey());
}
}
}

@ -92,6 +92,10 @@ public class YearRegularScheduling implements RegularScheduling{
dataMap.put("bcrq",DateUtil.getCurrentDatePlusDay(count));
LocalDateTime beginDate = DateUtil.getTime(leaveDay.getYear()+"-"+ksrq);
LocalDateTime endDate = DateUtil.getTime(leaveDay.getYear()+"-"+jsrq);
if (DateUtil.getBetWeenDays(leaveDay.getYear()+"-"+ksrq,leaveDay.getYear()+"-"+jsrq) <0){
beginDate = DateUtil.getTime(leaveDay.getYear()+"-"+ksrq);
endDate = DateUtil.getTime((leaveDay.getYear()+1)+"-"+jsrq);
}
if (endDate.compareTo(leaveDay) >=0 && beginDate.compareTo(leaveDay) <=0){
String dateTime =DateUtil.getCurrentDatePlusDay(count);
log.info("dateTime :{},count: {},map : {}",dateTime,count,map);

@ -0,0 +1,4 @@
package com.engine.attendance.workflow.service;
public interface ProcessSubmitCheckService {
}

@ -0,0 +1,4 @@
package com.engine.attendance.workflow.service.impl;
public interface ProcessSubmitCheckServiceImpl {
}

@ -0,0 +1,4 @@
package com.engine.attendance.workflow.web;
public class ProcessSubmitCheck {
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -1,27 +1,20 @@
import com.engine.common.util.DateUtil;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import weaver.general.Util;
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
import java.util.*;
import java.util.stream.Collectors;
public class Test {
public static void main(String[] args) {
// String str = "where 1=1 and t1.formmodeid = 200 and t1.dgcx = '1'";
// String[] strs = str.split("and");
// for (String beanSqlWhere :strs){
// if (beanSqlWhere.indexOf("t1.dgcx") >=0){
// String[] conditions = beanSqlWhere.split("=");
// System.out.println(conditions[1].trim());
// if (conditions[1].trim().equals("'1'")){
// System.out.println(111);
// }
// }
// }
Set<String> personnelGroupIds = new HashSet<>();
System.out.println(DateUtil.getBetWeenDays("2023-09-22"));
List<Map<String,Object>> personGroupOrganizationList = Lists.newArrayList();
personGroupOrganizationList.add(new HashMap(){{put("dx","4-夜班人员");}});
personGroupOrganizationList.add(new HashMap(){{put("dx","8-测试条件录入");}});
Set<String> personGroupIds = personGroupOrganizationList.stream().map(e -> Util.null2String(e.get("dx")).split("-")[0]).collect(Collectors.toSet());
System.out.println(String.join(",",personGroupIds));
}
public static int getDaysBetween(String date1, String date2) {

Loading…
Cancel
Save