dev-chenwnj
chenwei 1 year ago
parent 88991c41f1
commit 321a7878d2

@ -2076,7 +2076,7 @@ public class GetHrmSearchResultCmd extends AbstractCommonCommand<Map<String, Obj
else tempstr = appdetawhere; else tempstr = appdetawhere;
String backfields = "*"; String backfields = "*";
String sqlWhere = " " + tempstr; String sqlWhere = " " + tempstr + " and (t2_field0 = 0 or t2_field0 is null )";
String fromSql = ""; String fromSql = "";
String tableString = ""; String tableString = "";
String operateString = ""; String operateString = "";
@ -2198,8 +2198,7 @@ public class GetHrmSearchResultCmd extends AbstractCommonCommand<Map<String, Obj
fromSql = " from HrmResource " fromSql = " from HrmResource "
+ " left join (SELECT " + backfield[0] + " FROM cus_fielddata WHERE scope='HrmCustomFieldByInfoType' AND scopeId=-1 AND seqorder in (SELECT MAX(t.seqorder) FROM (SELECT seqorder,id FROM cus_fielddata WHERE scope = 'HrmCustomFieldByInfoType' AND scopeid=-1) t GROUP BY t.id)) t1 on hrmresource.id=t1_id " + " left join (SELECT " + backfield[0] + " FROM cus_fielddata WHERE scope='HrmCustomFieldByInfoType' AND scopeId=-1 AND seqorder in (SELECT MAX(t.seqorder) FROM (SELECT seqorder,id FROM cus_fielddata WHERE scope = 'HrmCustomFieldByInfoType' AND scopeid=-1) t GROUP BY t.id)) t1 on hrmresource.id=t1_id "
+ " left join (SELECT " + backfield[1] + " FROM cus_fielddata WHERE scope='HrmCustomFieldByInfoType' AND scopeId=1 AND seqorder in (SELECT MAX(t.seqorder) FROM (SELECT seqorder,id FROM cus_fielddata WHERE scope = 'HrmCustomFieldByInfoType' AND scopeid=1) t GROUP BY t.id)) t2 on hrmresource.id=t2_id " + " left join (SELECT " + backfield[1] + " FROM cus_fielddata WHERE scope='HrmCustomFieldByInfoType' AND scopeId=1 AND seqorder in (SELECT MAX(t.seqorder) FROM (SELECT seqorder,id FROM cus_fielddata WHERE scope = 'HrmCustomFieldByInfoType' AND scopeid=1) t GROUP BY t.id)) t2 on hrmresource.id=t2_id "
+ " left join (SELECT " + backfield[2] + " FROM cus_fielddata WHERE scope='HrmCustomFieldByInfoType' AND scopeId=3 AND seqorder in (SELECT MAX(t.seqorder) FROM (SELECT seqorder,id FROM cus_fielddata WHERE scope = 'HrmCustomFieldByInfoType' AND scopeid=3) t GROUP BY t.id)) t3 on hrmresource.id=t3_id and (field0 = 0 or field0 is null) "//二开 + " left join (SELECT " + backfield[2] + " FROM cus_fielddata WHERE scope='HrmCustomFieldByInfoType' AND scopeId=3 AND seqorder in (SELECT MAX(t.seqorder) FROM (SELECT seqorder,id FROM cus_fielddata WHERE scope = 'HrmCustomFieldByInfoType' AND scopeid=3) t GROUP BY t.id)) t3 on hrmresource.id=t3_id "
// + " left join (SELECT " + backfield[2] + " FROM cus_fielddata WHERE scope='HrmCustomFieldByInfoType' AND scopeId=3 AND seqorder in (SELECT MAX(t.seqorder) FROM (SELECT seqorder,id FROM cus_fielddata WHERE scope = 'HrmCustomFieldByInfoType' AND scopeid=3) t GROUP BY t.id)) t3 on hrmresource.id=t3_id "
+ " left join (SELECT id AS dept_id,departmentname AS deptName,showOrder AS deptShowOrder,showOrderOfTree AS showOrderOfDeptTree FROM HrmDepartment) dept on hrmresource.departmentid = dept_id " + " left join (SELECT id AS dept_id,departmentname AS deptName,showOrder AS deptShowOrder,showOrderOfTree AS showOrderOfDeptTree FROM HrmDepartment) dept on hrmresource.departmentid = dept_id "
+ " left join (SELECT id AS subcom_id,subcompanyname AS subcomName,showOrder AS subcomShowOrder,showOrderOfTree AS showOrderOfSubComTree FROM HrmSubCompany) subcom on hrmresource.subcompanyid1 = subcom_id "; + " left join (SELECT id AS subcom_id,subcompanyname AS subcomName,showOrder AS subcomShowOrder,showOrderOfTree AS showOrderOfSubComTree FROM HrmSubCompany) subcom on hrmresource.subcompanyid1 = subcom_id ";
tableString = ""; tableString = "";
@ -2320,6 +2319,7 @@ public class GetHrmSearchResultCmd extends AbstractCommonCommand<Map<String, Obj
String sql = "SELECT " + backfields + " " + fromSql + " " + sqlWhere + " ORDER BY " + orderby; String sql = "SELECT " + backfields + " " + fromSql + " " + sqlWhere + " ORDER BY " + orderby;
bb.writeLog("通讯录-sql: " + sql); bb.writeLog("通讯录-sql: " + sql);
bb.writeLog("通讯录-sqlWhere: " + sqlWhere);
tableString = " <table tabletype=\"" + tabletype + "\" pageId=\"" + pageId + "\" pageUid=\"" + pageUid + "\" exportRight=\"HrmResourceInfo:Import\" isEncryptShare=\""+encryptShareSettingEntity.getIsEnable()+"\" pagesize=\"" + PageIdConst.getPageSize(pageId, user.getUID(), PageIdConst.HRM) + "\" >" + tableString = " <table tabletype=\"" + tabletype + "\" pageId=\"" + pageId + "\" pageUid=\"" + pageUid + "\" exportRight=\"HrmResourceInfo:Import\" isEncryptShare=\""+encryptShareSettingEntity.getIsEnable()+"\" pagesize=\"" + PageIdConst.getPageSize(pageId, user.getUID(), PageIdConst.HRM) + "\" >" +
checkboxpopedompara + checkboxpopedompara +

@ -4,8 +4,6 @@ import com.engine.common.util.ParamUtil;
import com.engine.common.util.ServiceUtil; import com.engine.common.util.ServiceUtil;
import com.engine.hostar.service.KqDevService; import com.engine.hostar.service.KqDevService;
import com.engine.hostar.service.impl.KqDevServiceImpl; import com.engine.hostar.service.impl.KqDevServiceImpl;
import com.engine.sskj.service.EntryService;
import com.engine.sskj.service.impl.EntryServiceImpl;
import com.google.gson.Gson; import com.google.gson.Gson;
import weaver.hrm.HrmUserVarify; import weaver.hrm.HrmUserVarify;
import weaver.hrm.User; import weaver.hrm.User;
@ -36,12 +34,22 @@ public class KqDevController {
} }
@POST @POST
@Path("/checkApplyDate") @Path("/getEndWorkDate")
@Produces(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON)
public String checkApplyDate(@Context HttpServletRequest request, @Context HttpServletResponse response) { public String getEndWorkDate(@Context HttpServletRequest request, @Context HttpServletResponse response) {
User user = HrmUserVarify.getUser(request, response); User user = HrmUserVarify.getUser(request, response);
Map<String, Object> params = ParamUtil.request2Map(request); Map<String, Object> params = ParamUtil.request2Map(request);
Map<String, Object> resultDatas = getKqDevService(user).checkApplyDate(params); Map<String, Object> resultDatas = getKqDevService(user).getEndWorkDate(params);
return new Gson().toJson(resultDatas);
}
@POST
@Path("/signDelete")
@Produces(MediaType.APPLICATION_JSON)
public String signDelete(@Context HttpServletRequest request, @Context HttpServletResponse response) {
User user = HrmUserVarify.getUser(request, response);
Map<String, Object> params = ParamUtil.request2Map(request);
Map<String, Object> resultDatas = getKqDevService(user).signDelete(params);
return new Gson().toJson(resultDatas); return new Gson().toJson(resultDatas);
} }

@ -10,6 +10,8 @@ import java.util.Map;
public interface KqDevService { public interface KqDevService {
/*获取考勤日期的类型*/ /*获取考勤日期的类型*/
Map<String, Object> getKqType(Map<String, Object> params); Map<String, Object> getKqType(Map<String, Object> params);
/*检查流程发起日期是否满足指定工作日时长*/ /*根据开始日期和偏移量计算结束日期--工作日*/
Map<String, Object> checkApplyDate(Map<String, Object> params); Map<String, Object> getEndWorkDate(Map<String, Object> params);
/*删除原始打卡记录*/
Map<String, Object> signDelete(Map<String, Object> params);
} }

@ -4,12 +4,16 @@ import cn.hutool.core.date.DateUtil;
import com.engine.core.impl.Service; import com.engine.core.impl.Service;
import com.engine.hostar.service.KqDevService; import com.engine.hostar.service.KqDevService;
import com.engine.hostar.util.HostarUtil; import com.engine.hostar.util.HostarUtil;
import com.engine.kq.biz.KQHolidaySetBiz;
import com.engine.kq.biz.KQOvertimeRulesBiz; import com.engine.kq.biz.KQOvertimeRulesBiz;
import com.engine.kq.biz.KQWorkTime; import com.engine.kq.biz.KQWorkTime;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import weaver.conn.RecordSet;
import weaver.general.BaseBean; import weaver.general.BaseBean;
import weaver.general.Util; import weaver.general.Util;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
/** /**
@ -69,7 +73,7 @@ public class KqDevServiceImpl extends Service implements KqDevService {
} }
@Override @Override
public Map<String, Object> checkApplyDate(Map<String, Object> params) { public Map<String, Object> getEndWorkDate(Map<String, Object> params) {
bb.writeLog("---checkApplyDate start---"); bb.writeLog("---checkApplyDate start---");
Map<String, Object> result = new HashMap<>(); Map<String, Object> result = new HashMap<>();
@ -99,56 +103,169 @@ public class KqDevServiceImpl extends Service implements KqDevService {
Integer offset = Util.getIntValue(offsetStr); Integer offset = Util.getIntValue(offsetStr);
bb.writeLog("offset: " + offset); bb.writeLog("offset: " + offset);
KQWorkTime kqWorkTime = new KQWorkTime(); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
HostarUtil hostarUtil = new HostarUtil(); LocalDate start = LocalDate.parse(kqDate, formatter);
String today = DateUtil.format(new Date(), "yyyy-MM-dd");
bb.writeLog("today: " + today);
List<String> allDates = new ArrayList<>(); if (offset > 0 ) {
for (int i = 0 ; i < offset ; ) {
start = start.plusDays(1);
boolean holiday = KQHolidaySetBiz.isHoliday(resourceId, start.format(formatter), true);
if ( !holiday) {
i++;
}
}
} else if (offset < 0 ) {
for (int i = 0 ; i > offset ; ) {
start = start.minusDays(1);
boolean holiday = KQHolidaySetBiz.isHoliday(resourceId, start.format(formatter), true);
if ( !holiday) {
i--;
}
}
}
String endDate = start.format(formatter);
result.put("code",200);
result.put("msg","请求成功");
result.put("data",endDate);
return result;
}
@Override
public Map<String, Object> signDelete(Map<String, Object> params) {
bb.writeLog("---signDelete start---");
Map<String, Object> result = new HashMap<>();
if (today.compareTo(kqDate) < 0 ) { try {
if ( offset < 0) {
String dataid = Util.null2String(params.get("id"));//申请人
bb.writeLog("dataid: " + dataid);
if ( StringUtils.isBlank(dataid)) {
result.put("code",500); result.put("code",500);
result.put("msg","该流程只能提前"+Math.abs(offset)+"个工作日申请"); result.put("msg","先选择要删除的数据");
return result; return result;
} }
allDates = hostarUtil.getAllDates(today, kqDate);
} else if (today.compareTo(kqDate) > 0 ){ //将需要删除的打卡数据记录到日志表后再执行删除
if ( offset > 0) { RecordSet rs = new RecordSet();
List<String> deleteParams = new ArrayList<>();
List<List> logParams = new ArrayList<>();
String signDelLogModeId = bb.getPropValue("project_hostar", "signDelLogModeId");
bb.writeLog("signDelLogModeId: " + signDelLogModeId);
Integer modedatacreater = user.getUID();
Integer modedatacreatertype = user.getType();
String modedatacreatedate = DateUtil.format(new Date(), "yyyy-MM-dd");
String modedatacreatetime = DateUtil.format(new Date(), "HH:mm:ss");
String acqMaxIdSql = " select max(id) as id from uf_schsigndellog";
String logSignSql = "insert into uf_schsigndellog (userid, usertype, signtype, signdate, signtime, clientaddress, isincom, " +
" signfrom, longitude, latitude, addr, isimport, suuid, timezone, belongdate, memo, deviceinfo, showaddress, " +
" formmodeid, modedatacreater, modedatacreatertype, modedatacreatedate, modedatacreatetime ) " +
" values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
String acqSchSignSql = "select userid, usertype, signtype, signdate, signtime, clientaddress, isincom," +
" signfrom, longitude, latitude, addr, isimport, suuid, timezone, belongdate, memo, " +
" deviceinfo, showaddress from hrmschedulesign where id in (" + dataid + ")";
rs.executeQuery(acqSchSignSql);
while (rs.next()) {
String userid = Util.null2String(rs.getString("userid"));
String usertype = Util.null2String(rs.getString("usertype"));
String signtype = Util.null2String(rs.getString("signtype"));
String signdate = Util.null2String(rs.getString("signdate"));
String signtime = Util.null2String(rs.getString("signtime"));
String clientaddress = Util.null2String(rs.getString("clientaddress"));
String isincom = Util.null2String(rs.getString("isincom"));
String signfrom = Util.null2String(rs.getString("signfrom"));
String longitude = Util.null2String(rs.getString("longitude"));
String latitude = Util.null2String(rs.getString("latitude"));
String addr = Util.null2String(rs.getString("addr"));
String isimport = Util.null2String(rs.getString("isimport"));
String suuid = Util.null2String(rs.getString("suuid"));
String timezone = Util.null2String(rs.getString("timezone"));
String belongdate = Util.null2String(rs.getString("belongdate"));
String memo = Util.null2String(rs.getString("memo"));
String deviceinfo = Util.null2String(rs.getString("deviceinfo"));
String showaddress = Util.null2String(rs.getString("showaddress"));
List logPa = new ArrayList<>();
logPa.add(userid);
logPa.add(usertype);
logPa.add(signtype);
logPa.add(signdate);
logPa.add(signtime);
logPa.add(clientaddress);
logPa.add(isincom);
logPa.add(signfrom);
logPa.add(longitude);
logPa.add(latitude);
logPa.add(addr);
logPa.add(isimport);
logPa.add(suuid);
logPa.add(timezone);
logPa.add(belongdate);
logPa.add(memo);
logPa.add(deviceinfo);
logPa.add(showaddress);
logPa.add(signDelLogModeId);
logPa.add(modedatacreater);
logPa.add(modedatacreatertype);
logPa.add(modedatacreatedate);
logPa.add(modedatacreatetime);
logParams.add(logPa);
}
int maxLogId = -1;
rs.executeQuery(acqMaxIdSql);
while (rs.next()) {
maxLogId = Util.getIntValue(Util.null2String(rs.getString("id")));
}
bb.writeLog("maxLogId: " + maxLogId);
boolean addLogFlag = rs.executeBatchSql(logSignSql, logParams);
bb.writeLog("addLogFlag: " + addLogFlag);
if (addLogFlag) {
List<Integer> billids = new ArrayList<>();
Map<Integer,Integer> billidCreator = new HashMap<>();
String acqBillidsSql = "select id from uf_schsigndellog where id > ?";
rs.executeQuery(acqBillidsSql, maxLogId);
while (rs.next()) {
Integer id = Util.getIntValue(Util.null2String(rs.getString("id")));
billids.add(id);
billidCreator.put(id, 1);
}
bb.writeLog("billids: " + billids);
bb.writeLog("billidCreator: " + billidCreator);
if (billids != null && billids.size() > 0) {
HostarUtil hsutil = new HostarUtil();
hsutil.modePerReconBatch(billidCreator, signDelLogModeId, billids);
}
} else {
result.put("code",500); result.put("code",500);
result.put("msg","该流程只能延后"+Math.abs(offset)+"个工作日申请"); result.put("msg","删除失败");
return result; return result;
} }
allDates = hostarUtil.getAllDates(kqDate, today);
} else if (today.compareTo(kqDate) == 0) { boolean delFlag = rs.executeUpdate("delete from hrmschedulesign where id in (" + dataid + ")");
if ( offset != 0) {
if (delFlag) {
result.put("code",200);
result.put("msg","删除成功");
return result;
} else {
result.put("code",500); result.put("code",500);
result.put("msg","该流程只能当天申请"); result.put("msg","删除失败");
return result; return result;
} }
allDates = hostarUtil.getAllDates(kqDate, today); }catch (Exception e ) {
} bb.writeLog("signDelete Exception: " + e);
bb.writeLog("allDates: " + allDates);
int workdays = -1;
for ( String date: allDates) {
//判断是否是工作日
boolean isWorkDay = kqWorkTime.isWorkDay(resourceId, date);
if (isWorkDay){
workdays ++;
}
}
bb.writeLog("workdays: " + workdays);
if (workdays <= Math.abs(offset)) {
result.put("code",200);
result.put("msg","允许申请");
return result;
} else {
result.put("code",500);
result.put("msg","超出允许申请的时间限制,允许申请的时间为:申请日期" +
(offset>= 0?(offset>0 ?"延迟"+Math.abs(offset) + "天" : "当天" ):"提前" + Math.abs(offset) + "天") );
return result;
} }
result.put("code",500);
result.put("msg","删除失败");
return result;
} }
} }

@ -1,11 +1,13 @@
package com.engine.hostar.util; package com.engine.hostar.util;
import weaver.formmode.setup.ModeRightInfo;
import weaver.general.BaseBean; import weaver.general.BaseBean;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* @author chenwnj * @author chenwnj
@ -60,5 +62,30 @@ public class HostarUtil {
return EARTH_RADIUS * c; return EARTH_RADIUS * c;
} }
/**
*
* @param userId
* @param modeId
* @param billid
*/
public void modePerRecon(Integer userId, String modeId, String billid) {
ModeRightInfo ModeRightInfo = new ModeRightInfo();
ModeRightInfo.setNewRight(true);
ModeRightInfo.editModeDataShare( userId, Integer.parseInt(modeId), Integer.parseInt(billid));
}
/**
*
* @param billid_creator
* @param modeId
* @param billids
*/
public void modePerReconBatch(Map<Integer,Integer> billid_creator, String modeId, List<Integer> billids) {
ModeRightInfo ModeRightInfo = new ModeRightInfo();
ModeRightInfo.setNewRight(true);
ModeRightInfo.editModeDataShare( billid_creator, Integer.parseInt(modeId), billids);
}
} }

@ -3,6 +3,7 @@ package com.engine.kq.biz;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.engine.hostar.util.HostarUtil; import com.engine.hostar.util.HostarUtil;
import com.engine.kq.biz.chain.shiftinfo.ShiftInfoBean;
import com.engine.kq.cmd.attendanceButton.ButtonStatusEnum; import com.engine.kq.cmd.attendanceButton.ButtonStatusEnum;
import com.engine.kq.entity.TimeScopeEntity; import com.engine.kq.entity.TimeScopeEntity;
import com.engine.kq.entity.WorkTimeEntity; import com.engine.kq.entity.WorkTimeEntity;
@ -14,12 +15,15 @@ import java.text.DecimalFormatSymbols;
import java.util.Map.Entry; import java.util.Map.Entry;
import com.engine.kq.util.KQTransMethod; import com.engine.kq.util.KQTransMethod;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.weaver.integration.ldap.sync.formart.OaFormart; import com.weaver.integration.ldap.sync.formart.OaFormart;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import weaver.common.DateUtil; import weaver.common.DateUtil;
import weaver.conn.RecordSet; import weaver.conn.RecordSet;
import weaver.file.Prop; import weaver.file.Prop;
import weaver.general.BaseBean; import weaver.general.BaseBean;
import weaver.general.InitServer;
import weaver.general.TimeUtil; import weaver.general.TimeUtil;
import weaver.general.Util; import weaver.general.Util;
import weaver.hrm.User; import weaver.hrm.User;
@ -377,6 +381,11 @@ public class KQReportBiz extends BaseBean {
/*考勤二开--出差公出流程餐补统计start*/ /*考勤二开--出差公出流程餐补统计start*/
datas.putAll(getDailyMealAllowanceData(params,user)); datas.putAll(getDailyMealAllowanceData(params,user));
/*考勤二开--出差公出流程餐补统计end*/ /*考勤二开--出差公出流程餐补统计end*/
/*考勤二开--计算驻点餐补start*/
datas.putAll(getDailyStatAllowanceData(params,user));
/*考勤二开--计算驻点餐补end*/
}catch (Exception e){ }catch (Exception e){
writeLog(e); writeLog(e);
} }
@ -1442,6 +1451,202 @@ public class KQReportBiz extends BaseBean {
return datas; return datas;
} }
/**
*
* @param params
* @param user
* @return
*/
public Map<String,Object> getDailyStatAllowanceData(Map<String,Object> params, User user){
Map<String,Object> datas = new HashMap<>();;
RecordSet rs = new RecordSet();
String sql = "";
String sqlWhere = " ";
try{
KQLeaveRulesComInfo kqLeaveRulesComInfo = new KQLeaveRulesComInfo();
JSONObject jsonObj = JSON.parseObject(Util.null2String(params.get("data")));
String fromDate = Util.null2String(jsonObj.get("fromDate"));
String toDate = Util.null2String(jsonObj.get("toDate"));
String typeselect =Util.null2String(jsonObj.get("typeselect"));
if(typeselect.length()==0)typeselect = "3";
if(!typeselect.equals("") && !typeselect.equals("0")&& !typeselect.equals("6")){
if(typeselect.equals("1")){
fromDate = TimeUtil.getCurrentDateString();
toDate = TimeUtil.getCurrentDateString();
}else{
fromDate = TimeUtil.getDateByOption(typeselect,"0");
toDate = TimeUtil.getDateByOption(typeselect,"1");
}
}
String subCompanyId = Util.null2String(jsonObj.get("subCompanyId"));
String departmentId = Util.null2String(jsonObj.get("departmentId"));
String resourceId = Util.null2String(jsonObj.get("resourceId"));
String allLevel = Util.null2String(jsonObj.get("allLevel"));
String isNoAccount = Util.null2String(jsonObj.get("isNoAccount"));
String viewScope = Util.null2String(jsonObj.get("viewScope"));
if(subCompanyId.length()>0){
sqlWhere +=" and a.subcompanyid1 in("+subCompanyId+") ";
}
if(departmentId.length()>0){
sqlWhere +=" and a.departmentid in("+departmentId+") ";
}
if(resourceId.length()>0){
sqlWhere +=" and a.resourceid in("+resourceId+") ";
}
if(viewScope.equals("4")){//我的下属
if(allLevel.equals("1")){//所有下属
sqlWhere+=" and a.managerstr like '%,"+user.getUID()+",%'";
}else{
sqlWhere+=" and a.managerid="+user.getUID();//直接下属
}
}
if (!"1".equals(isNoAccount)) {
sqlWhere += " and a.loginid is not null "+(rs.getDBType().equals("oracle")?"":" and a.loginid<>'' ");
}
//首先去除指定不享有的分部
List<String> subComoanyList = new ArrayList<>();
String acqNoStatAllSql = "select subcompany from uf_NoStatAllSubCom where isdelete = 0 or isdelete is null";
rs.executeQuery(acqNoStatAllSql);
while (rs.next()) {
String subcompany = Util.null2String(rs.getString("subcompany"));
if (StringUtils.isNotBlank(subcompany)) {
subComoanyList.add(subcompany);
}
}
String subComoanys = "";
if ( subComoanyList != null && subComoanyList.size() > 0) {
subComoanys = String.join(",", subComoanyList);
}
if (StringUtils.isNotBlank(subComoanys)) {
sqlWhere += " and a.subcompanyid1 not in ("+subComoanys+") ";
}
List<String> resIds = new ArrayList<>();
String acqResSql = "select id from hrmresource a where a.status in (0,1,2,3) " + sqlWhere;
rs.executeQuery(acqResSql);
while (rs.next()) {
String id = Util.null2String(rs.getString("id"));
if (StringUtils.isNotBlank(id)) {
resIds.add(id);
}
}
if (resIds != null && resIds.size() > 0 && StringUtils.isNotBlank(fromDate) && StringUtils.isNotBlank(toDate)) {
HostarUtil houtil = new HostarUtil();
List<String> allDates = houtil.getAllDates(fromDate, toDate);
for (String date : allDates) {
for (String res: resIds) {
//获取考勤打卡
Map<String,Object> otherinfo = new HashMap<>();//存一些用得到的信息
String uuid = UUID.randomUUID().toString();
KQTimesArrayComInfo kqTimesArrayComInfo = new KQTimesArrayComInfo();
ArrayList<String> hostIps = InitServer.getRealIp();//获取IP
boolean oneSign = false;//一天一段出勤时间段
List<TimeScopeEntity> lsSignTime = new ArrayList<>();
List<TimeScopeEntity> lsWorkTime = new ArrayList<>();
List<TimeScopeEntity> lsRestTime = new ArrayList<>();
KQWorkTime kqWorkTime = new KQWorkTime();
kqWorkTime.setIsFormat(true);
WorkTimeEntity workTime = kqWorkTime.getWorkTime(res, date);
String preDate = DateUtil.addDate(date, -1);//上一天日期
String nextDate = DateUtil.addDate(date, 1);//下一天日期
if (workTime != null) {
lsSignTime = workTime.getSignTime();//允许打卡时间
lsWorkTime = workTime.getWorkTime();//工作时间
lsRestTime = workTime.getRestTime();//休息时段时间
oneSign = lsWorkTime!=null&&lsWorkTime.size()==1;
}
int shiftCount = lsWorkTime == null ? 0 : lsWorkTime.size();
int shiftI = 0;
for (int i = 0; lsWorkTime != null && i < lsWorkTime.size(); i++) {
shiftI = i;
TimeScopeEntity signTimeScope = lsSignTime.get(i);
TimeScopeEntity workTimeScope = lsWorkTime.get(i);
Map<String, String> shifRuleMap = Maps.newHashMap();
String workBeginTime = Util.null2String(workTimeScope.getBeginTime());
String ori_workBeginTime = workBeginTime;
int workBeginIdx = kqTimesArrayComInfo.getArrayindexByTimes(workBeginTime);
boolean workBenginTimeAcross = workTimeScope.getBeginTimeAcross();
String workEndTime = Util.null2String(workTimeScope.getEndTime());
String ori_workEndTime = workEndTime;
int workEndIdx = kqTimesArrayComInfo.getArrayindexByTimes(workEndTime);
boolean workEndTimeAcross = workTimeScope.getEndTimeAcross();
int workMins = workTimeScope.getWorkMins();
String workBeginDate = workBenginTimeAcross ? nextDate : date;
String workEndDate = workEndTimeAcross ? nextDate : date;
if(oneSign){
//个性化设置只支持一天一次上下班
ShiftInfoBean shiftInfoBean = new ShiftInfoBean();
shiftInfoBean.setSplitDate(date);
shiftInfoBean.setShiftRuleMap(workTime.getShiftRuleInfo());
shiftInfoBean.setSignTime(lsSignTime);
shiftInfoBean.setWorkTime(lsWorkTime);
List<String> logList = Lists.newArrayList();
KQShiftRuleInfoBiz.getShiftRuleInfo(shiftInfoBean, res, shifRuleMap,logList);
if(!shifRuleMap.isEmpty()){
if(!logList.isEmpty()){
otherinfo.put("logList", logList);
}
otherinfo.put("shiftRule", shifRuleMap);
if(shifRuleMap.containsKey("shift_beginworktime")){
String shift_beginworktime = Util.null2String(shifRuleMap.get("shift_beginworktime"));
if(shift_beginworktime.length() > 0){
workBeginTime = Util.null2String(shift_beginworktime);
workBeginIdx = kqTimesArrayComInfo.getArrayindexByTimes(workBeginTime);
workTimeScope.setBeginTime(workBeginTime);
workTimeScope.setBeginTimeAcross(workBeginIdx>=1440?true:false);
}
}
if(shifRuleMap.containsKey("shift_endworktime")){
String shift_endworktime = Util.null2String(shifRuleMap.get("shift_endworktime"));
if(shift_endworktime.length() > 0){
workEndTime = Util.null2String(shift_endworktime);
workEndIdx = kqTimesArrayComInfo.getArrayindexByTimes(workEndTime);
workTimeScope.setEndTime(workEndTime);
workTimeScope.setEndTimeAcross(workEndIdx>=1440?true:false);
}
}
}
}
//lsCheckInfo的内容格式
//[{
// signTime = 08: 49: 00,
// signStatus = 0,
// signType = 1,
// signDate = 2023 - 12 - 22,
// signId = 6
//}, {
// signTime = 18: 49: 00,
// signStatus = 0,
// signType = 2,
// signDate = 2023 - 12 - 22,
// signId = 7
//}]
List<Object> lsCheckInfo = new KQFormatSignData().getSignInfo(res,signTimeScope,workTimeScope,date,preDate,nextDate,kqTimesArrayComInfo,hostIps,uuid,shiftCount,shiftI);
}
}
}
}
}catch (Exception e){
writeLog(e);
}
return datas;
}
/** /**
* *

@ -0,0 +1,140 @@
package weaver.formmode.customjavacode.modeexpand;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang3.StringUtils;
import weaver.conn.RecordSet;
import weaver.formmode.customjavacode.AbstractModeExpandJavaCodeNew;
import weaver.general.BaseBean;
import weaver.general.Util;
import weaver.hrm.User;
import weaver.soa.workflow.request.RequestInfo;
/**
*
*/
public class AddScheduleSign extends AbstractModeExpandJavaCodeNew {
/**
*
* @param param
* param()
* user
* importtype () 1 2,3(int)param.get("importtype")
* ()a=1param.get("a")
* b=2,param.get("b")
* @return
*/
public Map<String, String> doModeExpand(Map<String, Object> param) {
Map<String, String> result = new HashMap<String, String>();
try {
User user = (User)param.get("user");
int billid = -1;//数据id
int modeid = -1;//模块id
RequestInfo requestInfo = (RequestInfo)param.get("RequestInfo");
if(requestInfo!=null){
billid = Util.getIntValue(requestInfo.getRequestid());
modeid = Util.getIntValue(requestInfo.getWorkflowid());
if(billid>0&&modeid>0){
//------请在下面编写业务逻辑代码------
BaseBean bb = new BaseBean();
bb.writeLog("AddScheduleSign Start");
RecordSet rs = new RecordSet();
List<List> addParams = new ArrayList<>();
Map<String, String> signFromMap = new HashMap<String, String>();
signFromMap.put( "0","e9pc");
signFromMap.put( "1","e9mobile");
signFromMap.put( "2","e9e");
signFromMap.put( "3","e9ewx");
signFromMap.put( "4","card");
signFromMap.put( "5","e9_mobile_out");
signFromMap.put( "6","importExcel");
signFromMap.put( "7","EMSyn");
signFromMap.put( "8","OutDataSourceSyn");
signFromMap.put( "9","DingTalk");
signFromMap.put( "10","DingTalk_out");
signFromMap.put( "11","Wechat_out");
signFromMap.put( "12","Wechat");
//获取新插入的数据
String acqSignDataSql = "select userid, usertype, signtype, signdate, signtime, clientaddress, isincom," +
" signfrom, longitude, latitude, addr, isimport, suuid, timezone, belongdate, memo, deviceinfo, showaddress " +
" from uf_schsignaddlog where id = ?";
bb.writeLog("acqSignDataSql: " + acqSignDataSql);
rs.executeQuery(acqSignDataSql, billid);
while (rs.next()) {
String userid = Util.null2String(rs.getString("userid"));
String usertype = Util.null2String(rs.getString("usertype"));
String signtype = Util.null2String(rs.getString("signtype"));
String signdate = Util.null2String(rs.getString("signdate"));
String signtime = Util.null2String(rs.getString("signtime"));
String clientaddress = Util.null2String(rs.getString("clientaddress"));
String isincom = Util.null2String(rs.getString("isincom"));
String signfrom = Util.null2String(rs.getString("signfrom"));
String longitude = Util.null2String(rs.getString("longitude"));
String latitude = Util.null2String(rs.getString("latitude"));
String addr = Util.null2String(rs.getString("addr"));
String isimport = Util.null2String(rs.getString("isimport"));
String suuid = Util.null2String(rs.getString("suuid"));
String timezone = Util.null2String(rs.getString("timezone"));
String belongdate = Util.null2String(rs.getString("belongdate"));
String memo = Util.null2String(rs.getString("memo"));
String deviceinfo = Util.null2String(rs.getString("deviceinfo"));
String showaddress = Util.null2String(rs.getString("showaddress"));
if (signtime.length() == 5) {
signtime = signtime + ":00";
}
bb.writeLog("signfrom: " + signfrom);
if (StringUtils.isNotBlank(signfrom)) {
signfrom = signFromMap.get(signfrom);
}
bb.writeLog("--signfrom: " + signfrom);
List addPa = new ArrayList<>();
addPa.add(userid);
addPa.add(usertype);
addPa.add(signtype);
addPa.add(signdate);
addPa.add(signtime);
addPa.add(clientaddress);
addPa.add(isincom);
addPa.add(signfrom);
addPa.add(longitude);
addPa.add(latitude);
addPa.add(addr);
addPa.add(isimport);
addPa.add(suuid);
addPa.add(timezone);
addPa.add(belongdate);
addPa.add(memo);
addPa.add(deviceinfo);
addPa.add(showaddress);
addParams.add(addPa);
}
bb.writeLog("addParams: " + addParams);
String addSchSignSql = "insert into hrmschedulesign (userid, usertype, signtype, signdate, signtime, clientaddress, isincom, " +
" signfrom, longitude, latitude, addr, isimport, suuid, timezone, belongdate, memo, deviceinfo, showaddress ) values " +
" (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
bb.writeLog("addSchSignSql: " + addSchSignSql);
rs.executeBatchSql(addSchSignSql, addParams);
}
}
} catch (Exception e) {
result.put("errmsg","手动添加原始打卡记录失败!");
result.put("flag", "false");
}
return result;
}
}
Loading…
Cancel
Save