From 321a7878d2c3a808e90916bb1d8510418723b518 Mon Sep 17 00:00:00 2001 From: chenwei <3291673014@qq.com> Date: Tue, 2 Jan 2024 15:04:52 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A4=90=E8=A1=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hrm/cmd/search/GetHrmSearchResultCmd.java | 6 +- .../hostar/controller/KqDevController.java | 18 +- .../engine/hostar/service/KqDevService.java | 6 +- .../hostar/service/impl/KqDevServiceImpl.java | 197 +++++++++++++---- src/com/engine/hostar/util/HostarUtil.java | 27 +++ src/com/engine/kq/biz/KQReportBiz.java | 205 ++++++++++++++++++ .../modeexpand/AddScheduleSign.java | 140 ++++++++++++ 7 files changed, 549 insertions(+), 50 deletions(-) create mode 100644 src/weaver/formmode/customjavacode/modeexpand/AddScheduleSign.java diff --git a/src/com/api/hrm/cmd/search/GetHrmSearchResultCmd.java b/src/com/api/hrm/cmd/search/GetHrmSearchResultCmd.java index 669e97c..2819187 100644 --- a/src/com/api/hrm/cmd/search/GetHrmSearchResultCmd.java +++ b/src/com/api/hrm/cmd/search/GetHrmSearchResultCmd.java @@ -2076,7 +2076,7 @@ public class GetHrmSearchResultCmd extends AbstractCommonCommand" + checkboxpopedompara + diff --git a/src/com/engine/hostar/controller/KqDevController.java b/src/com/engine/hostar/controller/KqDevController.java index 7d6b388..5aaec01 100644 --- a/src/com/engine/hostar/controller/KqDevController.java +++ b/src/com/engine/hostar/controller/KqDevController.java @@ -4,8 +4,6 @@ import com.engine.common.util.ParamUtil; import com.engine.common.util.ServiceUtil; import com.engine.hostar.service.KqDevService; 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 weaver.hrm.HrmUserVarify; import weaver.hrm.User; @@ -36,12 +34,22 @@ public class KqDevController { } @POST - @Path("/checkApplyDate") + @Path("/getEndWorkDate") @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); Map params = ParamUtil.request2Map(request); - Map resultDatas = getKqDevService(user).checkApplyDate(params); + Map 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 params = ParamUtil.request2Map(request); + Map resultDatas = getKqDevService(user).signDelete(params); return new Gson().toJson(resultDatas); } diff --git a/src/com/engine/hostar/service/KqDevService.java b/src/com/engine/hostar/service/KqDevService.java index edb0dd5..6d9d953 100644 --- a/src/com/engine/hostar/service/KqDevService.java +++ b/src/com/engine/hostar/service/KqDevService.java @@ -10,6 +10,8 @@ import java.util.Map; public interface KqDevService { /*获取考勤日期的类型*/ Map getKqType(Map params); - /*检查流程发起日期是否满足指定工作日时长*/ - Map checkApplyDate(Map params); + /*根据开始日期和偏移量计算结束日期--工作日*/ + Map getEndWorkDate(Map params); + /*删除原始打卡记录*/ + Map signDelete(Map params); } diff --git a/src/com/engine/hostar/service/impl/KqDevServiceImpl.java b/src/com/engine/hostar/service/impl/KqDevServiceImpl.java index 66a5a49..76d214e 100644 --- a/src/com/engine/hostar/service/impl/KqDevServiceImpl.java +++ b/src/com/engine/hostar/service/impl/KqDevServiceImpl.java @@ -4,12 +4,16 @@ import cn.hutool.core.date.DateUtil; import com.engine.core.impl.Service; import com.engine.hostar.service.KqDevService; import com.engine.hostar.util.HostarUtil; +import com.engine.kq.biz.KQHolidaySetBiz; import com.engine.kq.biz.KQOvertimeRulesBiz; import com.engine.kq.biz.KQWorkTime; import org.apache.commons.lang.StringUtils; +import weaver.conn.RecordSet; import weaver.general.BaseBean; import weaver.general.Util; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; import java.util.*; /** @@ -69,7 +73,7 @@ public class KqDevServiceImpl extends Service implements KqDevService { } @Override - public Map checkApplyDate(Map params) { + public Map getEndWorkDate(Map params) { bb.writeLog("---checkApplyDate start---"); Map result = new HashMap<>(); @@ -99,56 +103,169 @@ public class KqDevServiceImpl extends Service implements KqDevService { Integer offset = Util.getIntValue(offsetStr); bb.writeLog("offset: " + offset); - KQWorkTime kqWorkTime = new KQWorkTime(); - HostarUtil hostarUtil = new HostarUtil(); - String today = DateUtil.format(new Date(), "yyyy-MM-dd"); - bb.writeLog("today: " + today); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + LocalDate start = LocalDate.parse(kqDate, formatter); - List 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 signDelete(Map params) { + bb.writeLog("---signDelete start---"); + Map result = new HashMap<>(); - if (today.compareTo(kqDate) < 0 ) { - if ( offset < 0) { + try { + + String dataid = Util.null2String(params.get("id"));//申请人 + bb.writeLog("dataid: " + dataid); + + if ( StringUtils.isBlank(dataid)) { result.put("code",500); - result.put("msg","该流程只能提前"+Math.abs(offset)+"个工作日申请"); + result.put("msg","请先选择要删除的数据"); return result; } - allDates = hostarUtil.getAllDates(today, kqDate); - } else if (today.compareTo(kqDate) > 0 ){ - if ( offset > 0) { + + //将需要删除的打卡数据记录到日志表后再执行删除 + RecordSet rs = new RecordSet(); + List deleteParams = new ArrayList<>(); + 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 billids = new ArrayList<>(); + Map 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("msg","该流程只能延后"+Math.abs(offset)+"个工作日申请"); + result.put("msg","删除失败"); return result; } - allDates = hostarUtil.getAllDates(kqDate, today); - } else if (today.compareTo(kqDate) == 0) { - if ( offset != 0) { + + boolean delFlag = rs.executeUpdate("delete from hrmschedulesign where id in (" + dataid + ")"); + + if (delFlag) { + result.put("code",200); + result.put("msg","删除成功"); + return result; + } else { result.put("code",500); - result.put("msg","该流程只能当天申请"); + result.put("msg","删除失败"); return result; } - allDates = hostarUtil.getAllDates(kqDate, today); - } - 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; + }catch (Exception e ) { + bb.writeLog("signDelete Exception: " + e); } + result.put("code",500); + result.put("msg","删除失败"); + return result; } + } diff --git a/src/com/engine/hostar/util/HostarUtil.java b/src/com/engine/hostar/util/HostarUtil.java index 8141236..165c49b 100644 --- a/src/com/engine/hostar/util/HostarUtil.java +++ b/src/com/engine/hostar/util/HostarUtil.java @@ -1,11 +1,13 @@ package com.engine.hostar.util; +import weaver.formmode.setup.ModeRightInfo; import weaver.general.BaseBean; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.List; +import java.util.Map; /** * @author chenwnj @@ -60,5 +62,30 @@ public class HostarUtil { 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 billid_creator, String modeId, List billids) { + ModeRightInfo ModeRightInfo = new ModeRightInfo(); + ModeRightInfo.setNewRight(true); + ModeRightInfo.editModeDataShare( billid_creator, Integer.parseInt(modeId), billids); + } + + } diff --git a/src/com/engine/kq/biz/KQReportBiz.java b/src/com/engine/kq/biz/KQReportBiz.java index da678e7..43f8253 100644 --- a/src/com/engine/kq/biz/KQReportBiz.java +++ b/src/com/engine/kq/biz/KQReportBiz.java @@ -3,6 +3,7 @@ package com.engine.kq.biz; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; 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.entity.TimeScopeEntity; import com.engine.kq.entity.WorkTimeEntity; @@ -14,12 +15,15 @@ import java.text.DecimalFormatSymbols; import java.util.Map.Entry; 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 org.apache.commons.lang3.StringUtils; import weaver.common.DateUtil; import weaver.conn.RecordSet; import weaver.file.Prop; import weaver.general.BaseBean; +import weaver.general.InitServer; import weaver.general.TimeUtil; import weaver.general.Util; import weaver.hrm.User; @@ -377,6 +381,11 @@ public class KQReportBiz extends BaseBean { /*考勤二开--出差公出流程餐补统计start*/ datas.putAll(getDailyMealAllowanceData(params,user)); /*考勤二开--出差公出流程餐补统计end*/ + + /*考勤二开--计算驻点餐补start*/ + datas.putAll(getDailyStatAllowanceData(params,user)); + /*考勤二开--计算驻点餐补end*/ + }catch (Exception e){ writeLog(e); } @@ -1442,6 +1451,202 @@ public class KQReportBiz extends BaseBean { return datas; } + /** + * 获取驻点餐补数据 + * @param params + * @param user + * @return + */ + public Map getDailyStatAllowanceData(Map params, User user){ + Map 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 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 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 allDates = houtil.getAllDates(fromDate, toDate); + for (String date : allDates) { + for (String res: resIds) { + //获取考勤打卡 + Map otherinfo = new HashMap<>();//存一些用得到的信息 + String uuid = UUID.randomUUID().toString(); + KQTimesArrayComInfo kqTimesArrayComInfo = new KQTimesArrayComInfo(); + ArrayList hostIps = InitServer.getRealIp();//获取IP + boolean oneSign = false;//一天一段出勤时间段 + List lsSignTime = new ArrayList<>(); + List lsWorkTime = new ArrayList<>(); + List 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 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 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 lsCheckInfo = new KQFormatSignData().getSignInfo(res,signTimeScope,workTimeScope,date,preDate,nextDate,kqTimesArrayComInfo,hostIps,uuid,shiftCount,shiftI); + } + } + + } + + } + + + + + }catch (Exception e){ + writeLog(e); + } + return datas; + } + /** * 获取实际加班数据,包括流程,打卡生成的 diff --git a/src/weaver/formmode/customjavacode/modeexpand/AddScheduleSign.java b/src/weaver/formmode/customjavacode/modeexpand/AddScheduleSign.java new file mode 100644 index 0000000..f4b1eb1 --- /dev/null +++ b/src/weaver/formmode/customjavacode/modeexpand/AddScheduleSign.java @@ -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=1,可通过param.get("a")获取参数值 + * 页面链接拼接的参数,比如b=2,可以通过param.get("b")来获取参数 + * @return + */ + public Map doModeExpand(Map param) { + Map result = new HashMap(); + 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 addParams = new ArrayList<>(); + + Map signFromMap = new HashMap(); + 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; + } + +} \ No newline at end of file