feat: 新增聚才林打卡接口

zm_dev
pzy2 11 months ago
parent 23459242c7
commit 277cf33c93

@ -0,0 +1,265 @@
package com.engine.attendance.attendanceanalysis.web;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.cloudstore.dev.api.util.EMManager;
import com.engine.common.util.ApiReturnTools;
import com.engine.common.util.ParamUtil;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
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 javax.ws.rs.core.MediaType;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.compress.utils.Lists;
import weaver.common.DateUtil;
import weaver.conn.RecordSet;
import weaver.dateformat.DateTransformer;
import weaver.dateformat.TimeZoneVar;
import weaver.general.BaseBean;
import weaver.general.Util;
import weaver.hrm.HrmUserVarify;
import weaver.hrm.User;
import weaver.hrm.resource.ResourceComInfo;
import weaver.systeminfo.SystemEnv;
@Slf4j
@Path("/hrm/kq/jucailin/button")
public class AttendanceJucailinButtonAction {
private DateTimeFormatter fullFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
/**
*
*/
@POST
@Path("/getButtonBaseInfo")
@Produces(MediaType.TEXT_PLAIN)
public String getButtonBaseInfo(@Context HttpServletRequest request, @Context HttpServletResponse response){
Map<String, Object> retmap = new HashMap<String, Object>();
User user = HrmUserVarify.getUser (request , response) ;
try {
ResourceComInfo resourceComInfo = new ResourceComInfo();
String lastname = user.getLastname();
String messagerurl = resourceComInfo.getMessagerUrls("" + user.getUID());
String shortname = "";
boolean USERICONLASTNAME = Util.null2String(new BaseBean().getPropValue("Others", "USERICONLASTNAME")).equals("1");
if (USERICONLASTNAME && (messagerurl.indexOf("icon_w_wev8.jpg") > -1 || messagerurl.indexOf("icon_m_wev8.jpg") > -1 || messagerurl.indexOf("dummyContact.png") > -1)) {
shortname = User.getLastname(Util.null2String(Util.formatMultiLang(lastname, "" + user.getLanguage())));
}
String curDate = DateUtil.getCurrentDate();
retmap.put("userid", user.getUID());
retmap.put("lastname", lastname);
retmap.put("shortname", shortname);
retmap.put("messagerurl", messagerurl);
retmap.put("date", curDate);
retmap.put("timemillis", System.currentTimeMillis());
retmap.put("status", "1");
} catch (Exception e) {
log.error("execute fail,catch error: [{}]",e);
retmap.put("status", "-1");
return ApiReturnTools.error("500",SystemEnv.getHtmlLabelName(382661, user.getLanguage()));
}
return JSONObject.toJSONString(retmap);
}
/**
* 退
*
*
* @param request
* @param response
* @return
*/
@POST
@Path("/getButtons")
@Produces(MediaType.TEXT_PLAIN)
public String getButtons(@Context HttpServletRequest request, @Context HttpServletResponse response) {
Map<String, Object> retmap = new HashMap<String, Object>();
User user = HrmUserVarify.getUser (request , response) ;
try{
LocalDateTime now = LocalDateTime.now();
String curDate = DateUtil.getCurrentDate();
//真正的考勤时间线
ResourceComInfo resourceComInfo = new ResourceComInfo();
String lastname = user.getLastname();
String messagerurl = resourceComInfo.getMessagerUrls(""+user.getUID());
String shortname = "";
boolean USERICONLASTNAME = Util.null2String(new BaseBean().getPropValue("Others" , "USERICONLASTNAME")).equals("1");
if(USERICONLASTNAME&&(messagerurl.indexOf("icon_w_wev8.jpg")>-1||messagerurl.indexOf("icon_m_wev8.jpg")>-1||messagerurl.indexOf("dummyContact.png")>-1)){
shortname = User.getLastname(Util.null2String(Util.formatMultiLang(lastname, ""+user.getLanguage())));
}
String resourceId = String.valueOf(user.getUID());
List<Object> signListLine = getSignListLine(resourceId,curDate);
retmap.put("lastname", lastname);
retmap.put("shortname", shortname);
retmap.put("messagerurl", messagerurl);
retmap.put("date", curDate);
retmap.put("timeline", signListLine);
retmap.put("status", "1");
retmap.put("now", now.format(fullFormatter));
}catch (Exception e) {
retmap.put("status", "-1");
retmap.put("message", SystemEnv.getHtmlLabelName(382661,user.getLanguage()));
}
return JSONObject.toJSONString(retmap);
}
/**
* 退
*/
private List<Object> getSignListLine(String resourceId, String curDate) {
List<Object> signListLine = Lists.newArrayList();
RecordSet recordSet = new RecordSet();
String sql = "select * from hrmschedulesign where userid = "+resourceId+" and signDate='"+curDate+"' order by signTime desc ";
recordSet.executeQuery(sql);
while (recordSet.next()){
String signDate = recordSet.getString("signDate");
String signTime = recordSet.getString("signTime");
String signDateTime = signDate+" "+signTime;
String addr = Util.null2String(recordSet.getString("addr"));
Map<String,Object> cardTimelineMap = new HashMap<>();
cardTimelineMap.put("date", curDate);
cardTimelineMap.put("signTime", signDateTime);
cardTimelineMap.put("position", addr);
signListLine.add(cardTimelineMap);
}
return signListLine;
}
/**
* 退
* @param request
* @param response
* @return
*/
@POST
@Path("/punchButton")
@Produces(MediaType.TEXT_PLAIN)
public String punchButton(@Context HttpServletRequest request, @Context HttpServletResponse response) {
Map<String, Object> retmap = new HashMap<String, Object>();
User user = HrmUserVarify.getUser (request , response) ;
try{
Map<String, Object> params = ParamUtil.request2Map(request);
RecordSet rs = new RecordSet();
String deviceInfo = Util.null2String(params.get("deviceInfo"));
JSONObject jsonObject = null;
if(deviceInfo.length() > 0){
jsonObject = JSON.parseObject(deviceInfo);
JSONObject jsonObject1 = new JSONObject();
Set<Entry<String, Object>> jsonSet = jsonObject.entrySet();
for(Entry<String, Object> js : jsonSet){
String key = js.getKey();
String value = Util.null2String(js.getValue());
jsonObject1.put(key, value);
}
if(!jsonObject1.isEmpty()){
deviceInfo = jsonObject1.toJSONString();
}
}
//手机打卡部分
String longitude = Util.null2String(params.get("longitude"));
String latitude = Util.null2String(params.get("latitude"));
String signData = Util.null2String(params.get("signData"));
//wifi用的
String mac = Util.null2String(params.get("mac"));
String sid = Util.null2String(params.get("sid"));
String addr = Util.null2String(params.get("position"));
String showaddress =addr;
String ismobile = Util.null2String(params.get("ismobile"));
//区分是来自于钉钉还是EM7
String browser = Util.null2String(params.get("browser"));
DateTimeFormatter fullFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("HH:mm:ss");
LocalTime localTime = LocalTime.now();
String signTime =localTime.format(dateTimeFormatter);
String signDate = LocalDate.now().format(dateFormatter);
String timeZone = Util.null2String(TimeZoneVar.getTimeZone(),"");
//处理多时区
String timeZoneConversion = Util.null2String(new weaver.general.BaseBean().getPropValue("weaver_timezone_conversion","timeZoneConversion")).trim();
if("1".equals(timeZoneConversion)) {
DateTransformer dateTransformer=new DateTransformer();
String[] zone_localTime = dateTransformer.getLocaleDateAndTime(signDate,signTime);
if(zone_localTime != null && zone_localTime.length == 2){
signDate = zone_localTime[0];
signTime = zone_localTime[1];
}
}
int userId = user.getUID();
String userType = user.getLogintype();
String clientAddress = Util.getIpAddr(request);
String isInCom = "1";
String datetime_timezone = signDate+" "+signTime;
LocalDateTime nowDateTime = LocalDateTime.parse(datetime_timezone,fullFormatter);
//记录下是来自于E9的pc端签到
String signfrom = "e9pc";
if("1".equalsIgnoreCase(ismobile)){
signfrom = "e9mobile";
if("DingTalk".equalsIgnoreCase(browser)){
signfrom = "DingTalk";
}else if("Wechat".equalsIgnoreCase(browser)){
signfrom = "Wechat";
String weChat_deviceid = Util.null2String(request.getSession().getAttribute(
EMManager.DeviceId));
if(weChat_deviceid.length() > 0){
//微信打卡的设备号需要单独处理
if(jsonObject != null){
jsonObject.put("deviceId", weChat_deviceid);
}else{
jsonObject = new JSONObject();
jsonObject.put("deviceId", weChat_deviceid);
}
if(!jsonObject.isEmpty()){
deviceInfo = jsonObject.toJSONString();
}
}
}
}
deviceInfo = deviceInfo.replaceAll("\\?", "");
String signType = "1";
String belongdate = signDate;
String punchSql = "insert into HrmScheduleSign(userId,userType,signType,signDate,signTime,clientAddress,isInCom,timeZone,belongdate,signfrom,longitude,latitude,addr,deviceInfo,showaddress) "+
" values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
boolean isOk = rs.executeUpdate(punchSql,userId,userType,signType,signDate,signTime,clientAddress,isInCom,
timeZone,belongdate,signfrom,longitude,latitude,addr,deviceInfo,showaddress);
log.info(user.getLastname()+":PunchButtonCmd:punchSql:"+punchSql+":isOk:"+isOk);
retmap.put("status", "1");
retmap.put("signdate", signDate);
retmap.put("signtime", signTime);
}catch (Exception e){
retmap.put("status", "-1");
retmap.put("message", SystemEnv.getHtmlLabelName(382661,user.getLanguage()));
}
return JSONObject.toJSONString(retmap);
}
}
Loading…
Cancel
Save