Compare commits

..

22 Commits

Author SHA1 Message Date
dxfeng 51b5daad19 康瑞项目,职级名称字段问题处理 9 months ago
dxfeng ef966cdb7c 考勤数据库,人员同步岗位、职级信息 9 months ago
dxfeng e972f4c456 考勤数据库,人员同步岗位、职级信息 9 months ago
dxfeng 83cd3e4265 考勤数据库,组织架构、人员信息同步 9 months ago
dxfeng 615a324f47 考勤数据库,组织架构、人员信息同步 9 months ago
dxfeng 41436e3e81 考勤数据库,组织架构、人员信息同步 9 months ago
dxfeng 75a145fbb9 考勤数据库,组织架构、人员信息同步 10 months ago
wangjie 8075137807 #推送请假信息到考勤系统action 控制只允许提交操作时执行 2 years ago
wangjie b11dab66cf #请假申请校验 只允许同一个人 同一个请假类型只允许一条在途流程 2 years ago
wangjie 7e7df74b13 #批量更新加班时间脚本 2 years ago
wangjie c9cac990ef #校验加班数据、补卡数据不能重复提交 批量加班【制造中心】推送数据接口改造 接口code返回14 billstatus = 2 再传第一次 2 years ago
wangjie 60daad516f #校验加班数据、补卡数据不能重复提交 2 years ago
wangjie 245e800a29 #请假流程 获取请假余额接口 code=99不做异常处理 2 years ago
wangjie f71da2b364 #出差、补班、公出流程推送数据Action 2 years ago
dxfeng 5b0f51fc5e 康瑞-请假流程忽略code=99的异常信息 2 years ago
dxfeng c0375840b4 康瑞,单据编号BUG修复 2 years ago
dxfeng 43dd33d0a2 二开--康瑞考勤需求 2 years ago
dxfeng fbf3a9eb53 二开--康瑞考勤需求 2 years ago
dxfeng 2cba1b8467 二开--康瑞考勤需求 2 years ago
dxfeng e9b8e62287 二开--康瑞考勤需求 2 years ago
dxfeng f2c4df3e32 二开--康瑞考勤需求 2 years ago
dxfeng e7e695b05f 二开--康瑞考勤需求 2 years ago

12
.gitignore vendored

@ -1,15 +1,17 @@
/weaver-develop.iml
/weaver-hrm-organization.iml
/out/
.idea/
/.idea/
HELP.md
target/
### IntelliJ IDEA ###
.idea
/test
/src/test
/src/rebel.xml
/src/META-INF
/WEB-INF/config
/log
/log
/weaver-develop.iml

@ -1,8 +0,0 @@
<component name="ArtifactManager">
<artifact type="jar" name="weaver-develop:jar">
<output-path>$PROJECT_DIR$/out/artifacts/weaver_develop_jar</output-path>
<root id="archive" name="weaver-develop.jar">
<element id="module-output" name="weaver-develop" />
</root>
</artifact>
</component>

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<annotationProcessing>
<profile default="true" name="Default" enabled="true" />
</annotationProcessing>
</component>
</project>

@ -1,9 +0,0 @@
<component name="libraryTable">
<library name="classbean">
<CLASSES>
<root url="file://$PROJECT_DIR$/../../../../weaver/ecology/classbean" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</component>

@ -1,13 +0,0 @@
<component name="libraryTable">
<library name="lib">
<CLASSES>
<root url="file://$PROJECT_DIR$/../../../../weaver/ecology/WEB-INF/lib" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="file://$PROJECT_DIR$/../../../../weaver/ecology/WEB-INF/lib" />
</SOURCES>
<jarDirectory url="file://$PROJECT_DIR$/../../../../weaver/ecology/WEB-INF/lib" recursive="false" />
<jarDirectory url="file://$PROJECT_DIR$/../../../../weaver/ecology/WEB-INF/lib" recursive="false" type="SOURCES" />
</library>
</component>

@ -0,0 +1,48 @@
<%@ page import="com.alibaba.fastjson.JSONObject" %>
<%@ page import="java.util.*" %>
<%@ page import="weaver.general.Util" %>
<%@ page import="weaver.hrm.HrmUserVarify" %>
<%@ page import="weaver.hrm.User" %>
<%@ page import="java.text.SimpleDateFormat" %>
<%@ page import="com.engine.kq.biz.KQWorkTime" %>
<jsp:useBean id="bb" class="weaver.general.BaseBean"/>
<%@ page import="com.engine.kq.biz.KQShiftRestTimeSectionComInfo" %>
<%@ page import="weaver.general.BaseBean" %>
<%@ page import="com.time.util.DateUtil" %>
<%@ page import="java.text.ParseException" %>
<%@ page import="weaver.conn.RecordSet" %>
<%--
User: wangj
Design Ideas
康瑞-补卡申请流程
需要:校验明细表补卡日期是否重复
--%>
<%@ page contentType="text/html;charset=UTF-8" %>
<%
JSONObject data = new JSONObject();
RecordSet rs = new RecordSet();
boolean flag = false;
String sqr = Util.null2String(request.getParameter("sqr"));
String rqStr = Util.null2String(request.getParameter("rqStr"));
String[] rqArr = rqStr.split(",");
for (int i = 0; i < rqArr.length; i++) {
String rq = rqArr[i];
rs.execute("select count(1) as sl from formtable_main_27 a left join formtable_main_27_dt1 b on a.id = b.mainid where a.resourceId = '" + sqr + "' and b.detail_signdate = '" + rq + "'");
while (rs.next()) {
if (Util.getIntValue(rs.getString("sl")) > 0) {
flag = true;
}
}
if(flag) continue;
}
data.put("flag", flag);
out.print(data.toJSONString());
%>

@ -0,0 +1,74 @@
<%@ page import="com.alibaba.fastjson.JSONObject" %>
<%@ page import="weaver.general.Util" %>
<jsp:useBean id="bb" class="weaver.general.BaseBean"/>
<%@ page import="weaver.conn.RecordSet" %>
<%@ page import="com.alibaba.fastjson.JSONArray" %>
<%--
User: wangj
Design Ideas
康瑞-加班申请【制造中心】流程
需要:校验明细表加班日期是否重复
测试环境表名formtable_main_23、formtable_main_24
生产环境表名formtable_main_19、formtable_main_20
--%>
<%@ page contentType="text/html;charset=UTF-8" %>
<%
JSONObject res = new JSONObject();
RecordSet rs = new RecordSet();
boolean flag = false;
String msg = "";
String dataStr = Util.null2String(request.getParameter("dataJson"));
JSONArray dataArr = JSONArray.parseArray(dataStr);
String sql = "";
for (int i = 0; i < dataArr.size(); i++) {
JSONObject data = (JSONObject) dataArr.get(i);
String index = Util.null2String(data.get("index"));
String xm = Util.null2String(data.get("xm"));
String ksrq = Util.null2String(data.get("ksrq"));
sql = "SELECT " +
" ( " +
" SELECT " +
" count( 1 ) " +
" FROM " +
" formtable_main_19 f " +
" LEFT JOIN workflow_requestbase w ON f.requestid = w.requestid " +
" WHERE " +
" f.resourceId = '" + xm + "' " +
" AND f.fromDate = '" + ksrq + "' " +
" AND w.currentnodetype IN ( 1, 2, 3 ) " +
" ) + ( " +
" SELECT " +
" count( 1 ) " +
" FROM " +
" formtable_main_20_dt1 t1 " +
" LEFT JOIN formtable_main_20 t ON t1.mainid = t.id " +
" LEFT JOIN workflow_requestbase w1 ON t.requestid = w1.requestid " +
" WHERE " +
" t1.xm = '" + xm + "' " +
" AND t1.ksrq = '" + ksrq + "' " +
" AND w1.currentnodetype IN ( 1, 2, 3 ) " +
" ) AS totalCount";
rs.execute(sql);
while (rs.next()) {
if (Util.getIntValue(rs.getString("totalCount")) > 0) {
flag = true;
msg = msg + "," +index;
}
}
}
if(flag){
msg = msg.substring(1,msg.length());
}
res.put("flag", flag);
res.put("msg", msg);
out.print(res.toJSONString());
%>

@ -0,0 +1,70 @@
<%@ page import="com.alibaba.fastjson.JSONObject" %>
<%@ page import="weaver.general.Util" %>
<jsp:useBean id="bb" class="weaver.general.BaseBean"/>
<%@ page import="weaver.conn.RecordSet" %>
<%@ page import="com.alibaba.fastjson.JSONArray" %>
<%--
User: wangj
Design Ideas
康瑞-加班申请【制造中心】流程
需要:校验明细表加班日期是否重复
--%>
<%@ page contentType="text/html;charset=UTF-8" %>
<%
JSONObject res = new JSONObject();
RecordSet rs = new RecordSet();
String dataStr = Util.null2String(request.getParameter("dataJson"));
JSONArray dataArr = JSONArray.parseArray(dataStr);
String sql = "";
JSONArray resArr = new JSONArray();
for (int i = 0; i < dataArr.size(); i++) {
JSONObject data = (JSONObject) dataArr.get(i);
String xm = Util.null2String(data.get("xm"));
String ksrq = Util.null2String(data.get("ksrq"));
String index = Util.null2String(data.get("index"));
sql = "SELECT \n" +
" f.requestid as requestid\n" +
" FROM \n" +
" formtable_main_19 f \n" +
" LEFT JOIN workflow_requestbase w ON f.requestid = w.requestid \n" +
" WHERE \n" +
" f.resourceId = '"+xm+"' \n" +
" AND f.fromDate = '"+ksrq+"' \n" +
" AND w.currentnodetype IN ( 1, 2, 3 ) union all SELECT \n" +
" t.requestid as requestid \n" +
" FROM \n" +
" formtable_main_20_dt1 t1 \n" +
" LEFT JOIN formtable_main_20 t ON t1.mainid = t.id \n" +
" LEFT JOIN workflow_requestbase w1 ON t.requestid = w1.requestid \n" +
" WHERE \n" +
" t1.xm = '"+xm+"' \n" +
" AND t1.ksrq = '"+ksrq+"' \n" +
" AND w1.currentnodetype IN ( 1, 2, 3 )";
rs.execute(sql);
int count = 0;
String requestids = "";
while (rs.next()) {
count ++;
requestids = requestids + "," + Util.null2String(rs.getString("requestid"));
}
JSONObject obj = new JSONObject();
obj.put(index,count);
obj.put("requestids",requestids.substring(1,requestids.length()));
resArr.add(obj);
}
res.put("resArr", resArr);
out.print(res.toJSONString());
%>

@ -0,0 +1,72 @@
<%@ page import="com.alibaba.fastjson.JSONObject" %>
<%@ page import="weaver.general.Util" %>
<jsp:useBean id="bb" class="weaver.general.BaseBean"/>
<%@ page import="weaver.conn.RecordSet" %>
<%@ page import="com.alibaba.fastjson.JSONArray" %>
<%@ page import="java.util.Date" %>
<%@ page import="com.time.util.DateUtil" %>
<%--
User: wangj
Design Ideas
康瑞-加班申请【制造中心】流程
需要:批量修改计算 加班时长 记录
测试环境表名formtable_main_24
生产环境表名formtable_main_20
--%>
<%@ page contentType="text/html;charset=UTF-8" %>
<%
JSONObject res = new JSONObject();
RecordSet rs = new RecordSet();
int count = 0;
String sql = "select id,ksrq,kssj,jsrq,jssj from formtable_main_20_dt1 where jbsc is null";
rs.execute(sql);
while (rs.next()){
String id = Util.null2String(rs.getString("id"));
String ksrq = Util.null2String(rs.getString("ksrq"));
String kssj = Util.null2String(rs.getString("kssj"));
String jsrq = Util.null2String(rs.getString("jsrq"));
String jssj = Util.null2String(rs.getString("jssj"));
if("".equals(ksrq)||"".equals(kssj)||"".equals(jsrq)||"".equals(jssj)){
continue;
}
double jbsc = getHours(ksrq,kssj,jsrq,jssj);
updateJbsc(id,jbsc);
count ++;
}
res.put("count", count);
out.print(res.toJSONString());
%>
<%!
private double getHours(String ksrq,String kssj,String jsrq,String jssj){
double hour = 0.00;
Date sdate = DateUtil.parseDate(ksrq+" "+kssj, "yyyy-MM-dd HH:mm");
Date edate = DateUtil.parseDate(jsrq+" "+jssj, "yyyy-MM-dd HH:mm");
hour = (Math.abs(sdate.getTime() - edate.getTime())/1800000);
hour = hour/2;
return hour;
}
%>
<%!
private void updateJbsc(String id, double jbsc){
RecordSet rs = new RecordSet();
rs.executeUpdate("update formtable_main_20_dt1 set jbsc = ? where id = ?",jbsc,id);
}
%>

@ -1,3 +0,0 @@
Manifest-Version: 1.0
Main-Class: test.MainTest

@ -0,0 +1,12 @@
package com.api.kr.web;
import javax.ws.rs.Path;
/**
* @author:dxfeng
* @createTime: 2023/05/18
* @version: 1.0
*/
@Path("/kangrui/kq/interactive")
public class KqInteractiveController extends com.engine.kr.web.KqInteractiveController{
}

@ -0,0 +1,129 @@
package com.engine.kr.entity.kq;
import org.apache.commons.lang3.StringUtils;
import weaver.conn.RecordSet;
import java.util.HashMap;
import java.util.Map;
/**
*
*
* @author:dxfeng
* @createTime: 2023/05/23
* @version: 1.0
*/
public class KqActionBO {
/**
* ID
*
* @param userId
* @return
*/
public static String getUserName(String userId) {
String userName = "";
if (StringUtils.isBlank(userId)) {
return userName;
}
RecordSet rs = new RecordSet();
rs.executeQuery("select lastname from hrmresource where id = ? ", userId);
if (rs.next()) {
userName = rs.getString("lastname");
}
return userName;
}
/**
* ID
*
* @param userId
* @return
*/
public static String getWorkCode(String userId) {
String workCode = "";
if (StringUtils.isBlank(userId)) {
return workCode;
}
RecordSet rs = new RecordSet();
rs.executeQuery("select workcode from hrmresource where id = ? ", userId);
if (rs.next()) {
workCode = rs.getString("workcode");
}
return workCode;
}
/**
*
*
* @param leaveType
* @return
*/
public static String getLeaveTypeCode(String leaveType) {
String leaveTypeCode = "";
if (StringUtils.isBlank(leaveType)) {
return leaveTypeCode;
}
RecordSet rs = new RecordSet();
rs.executeQuery("select kqxtzdz from uf_jqzdpp where lczd =?", leaveType);
if (rs.next()) {
leaveTypeCode = rs.getString("kqxtzdz");
}
return leaveTypeCode;
}
/**
*
*
* @param workType
* @return
*/
public static String getWorkTypeCode(String workType) {
String workTypeCode = "";
if (StringUtils.isBlank(workType)) {
return workTypeCode;
}
switch (workType) {
case "0":
workTypeCode = "JB01";
break;
case "1":
workTypeCode = "JB02";
break;
case "2":
workTypeCode = "JB03";
break;
case "3":
workTypeCode = "JB20";
break;
case "4":
workTypeCode = "JB30";
break;
default:
break;
}
return workTypeCode;
}
/**
*
*
* @param requestId
* @return
*/
public static Map<String, String> getOperateDateTime(String requestId) {
Map<String, String> map = new HashMap<>(2);
RecordSet rs = new RecordSet();
rs.executeQuery("select createdate,createtime,lastoperatedate,lastoperatetime from workflow_requestbase where requestid = ? ", requestId);
if (rs.next()) {
String createdate = rs.getString("createdate");
String createtime = rs.getString("createtime");
String lastoperatedate = rs.getString("lastoperatedate");
String lastoperatetime = rs.getString("lastoperatetime");
map.put("addDay", createdate + " " + createtime);
map.put("cfmDay", lastoperatedate + " " + lastoperatetime);
}
return map;
}
}

@ -0,0 +1,32 @@
package com.engine.kr.entity.kq;
import weaver.general.BaseBean;
/**
* @author:dxfeng
* @createTime: 2023/05/22
* @version: 1.0
*/
public class KqGlobal {
/**
*
* http://192.168.11.160:8080/FaceAPI
* http://192.168.11.160:8080/Face
*/
public static final String POST_URL = new BaseBean().getPropValue("krKq", "POST_URL");
public static final String USER = new BaseBean().getPropValue("krKq", "USER");
public static final String PASS = new BaseBean().getPropValue("krKq", "PASS");
/**
* code
*/
public static final String SUC_CODE = "1";
/**
* code
*/
public static final String REPEAT_CODE = "14";
public static final String IGNORE_CODE = "99";
}

@ -0,0 +1,93 @@
package com.engine.kr.entity.sync;
import org.apache.commons.lang3.StringUtils;
/**
* @author:dxfeng
* @createTime: 2024/08/20
* @version: 1.0
*/
public class KqOrgData {
private String dptprcno;
private String dptno;
private String dptname;
private String isdelete;
private String dptsysid;
private String parentNo;
private String subCompanyId;
private String oaId;
public String getSubCompanyId() {
return subCompanyId;
}
public void setSubCompanyId(String subCompanyId) {
this.subCompanyId = subCompanyId;
}
public String getOaId() {
return oaId;
}
public void setOaId(String oaId) {
this.oaId = oaId;
}
public String getParentNo() {
if (StringUtils.isNotBlank(dptprcno) && dptprcno.length() > 3) {
return dptprcno.substring(0, dptprcno.length() - 3);
}
return parentNo;
}
public String getDptprcno() {
return dptprcno;
}
public void setDptprcno(String dptprcno) {
this.dptprcno = dptprcno;
}
public String getDptno() {
return dptno;
}
public void setDptno(String dptno) {
this.dptno = dptno;
}
public String getDptname() {
return dptname;
}
public void setDptname(String dptname) {
this.dptname = dptname;
}
/**
* N
*
* @return
*/
public String getIsdelete() {
if ("Y".equalsIgnoreCase(isdelete)) {
return "1";
}
return "0";
}
public void setIsdelete(String isdelete) {
this.isdelete = isdelete;
}
public String getDptsysid() {
return dptsysid;
}
public void setDptsysid(String dptsysid) {
this.dptsysid = dptsysid;
}
}

@ -0,0 +1,155 @@
package com.engine.kr.entity.sync;
import org.apache.commons.lang3.StringUtils;
/**
* @author:dxfeng
* @createTime: 2024/08/20
* @version: 1.0
*/
public class KqResourceData {
private String empno;
private String empname;
private String empsexid;
private String empstatusid;
private String dptsysid;
private String empbirthday;
private String empidno;
private String empgrpdate;
private String empnormaldate;
private String empleavedate;
private String empmobile;
private String emplocaladdr;
private String emphomeaddr;
public String getEmpno() {
return empno;
}
public void setEmpno(String empno) {
this.empno = empno;
}
public String getEmpname() {
return empname;
}
public void setEmpname(String empname) {
this.empname = empname;
}
public String getEmpsexid() {
if(StringUtils.isNotBlank(empsexid)){
if("1".equals(empsexid)){
return "0";
}else if("2".equals(empsexid)){
return "1";
}
}
return null;
}
public void setEmpsexid(String empsexid) {
this.empsexid = empsexid;
}
public String getEmpstatusid() {
if(StringUtils.isNotBlank(empstatusid)){
if("20".equals(empstatusid)){
return "1";
}else if("30".equals(empstatusid)){
return "5";
}
}
return empstatusid;
}
public void setEmpstatusid(String empstatusid) {
this.empstatusid = empstatusid;
}
public String getDptsysid() {
return dptsysid;
}
public void setDptsysid(String dptsysid) {
this.dptsysid = dptsysid;
}
public String getEmpbirthday() {
if(StringUtils.isNotBlank(empbirthday)){
return empbirthday.replace(" 00:00:00.0","");
}
return empbirthday;
}
public void setEmpbirthday(String empbirthday) {
this.empbirthday = empbirthday;
}
public String getEmpidno() {
return empidno;
}
public void setEmpidno(String empidno) {
this.empidno = empidno;
}
public String getEmpgrpdate() {
if(StringUtils.isNotBlank(empgrpdate)){
return empgrpdate.replace(" 00:00:00.0","");
}
return empgrpdate;
}
public void setEmpgrpdate(String empgrpdate) {
this.empgrpdate = empgrpdate;
}
public String getEmpnormaldate() {
if(StringUtils.isNotBlank(empnormaldate)){
return empnormaldate.replace(" 00:00:00.0","");
}
return empnormaldate;
}
public void setEmpnormaldate(String empnormaldate) {
this.empnormaldate = empnormaldate;
}
public String getEmpleavedate() {
if(StringUtils.isNotBlank(empleavedate)){
return empleavedate.replace(" 00:00:00.0","");
}
return empleavedate;
}
public void setEmpleavedate(String empleavedate) {
this.empleavedate = empleavedate;
}
public String getEmpmobile() {
return empmobile;
}
public void setEmpmobile(String empmobile) {
this.empmobile = empmobile;
}
public String getEmplocaladdr() {
return emplocaladdr;
}
public void setEmplocaladdr(String emplocaladdr) {
this.emplocaladdr = emplocaladdr;
}
public String getEmphomeaddr() {
return emphomeaddr;
}
public void setEmphomeaddr(String emphomeaddr) {
this.emphomeaddr = emphomeaddr;
}
}

@ -0,0 +1,40 @@
package com.engine.kr.enums;
/**
* @author:dxfeng
* @createTime: 2023/05/18
* @version: 1.0
*/
public enum KqInteractiveEnum {
/**
* token
*/
TOKEN("TOKEN", "/Person/getToken"),
LEAVE_BAL("LEAVE_BAL", "/Person/iLeaveBal"),
SIGN_CREATE("SIGN_CREATE", "/Person/iSignCreate"),
OVERTIME_CREATE("OVERTIME_CREATE", "/Person/iOvertimeCreate"),
LEAVE_CREATE("LEAVE_CREATE", "/Person/iLeaveCreate"),
;
/**
*
*/
private final String name;
/**
*
*/
private final String postPath;
KqInteractiveEnum(String name, String postPath) {
this.name = name;
this.postPath = postPath;
}
public String getName() {
return name;
}
public String getPostPath() {
return postPath;
}
}

@ -0,0 +1,22 @@
package com.engine.kr.exception;
/**
* @Author weaver_cl
* @Description:
* @Date 2023/2/21
* @Version V1.0
**/
public class CustomizeRunTimeException extends RuntimeException{
public CustomizeRunTimeException(String message) {
super(message);
}
public CustomizeRunTimeException(Throwable cause) {
super(cause);
}
public CustomizeRunTimeException(String message, Throwable cause) {
super(message, cause);
}
}

@ -0,0 +1,27 @@
package com.engine.kr.service;
import java.util.Map;
/**
* @author:dxfeng
* @createTime: 2023/05/17
* @version: 1.0
*/
public interface KqInteractiveService {
/**
*
*
* @param params
* @return
*/
Map<String, Object> getLeaveBal(Map<String, Object> params);
/**
*
*
* @param params
* @return
*/
Map<String, Object> getUserImage(Map<String, Object> params);
}

@ -0,0 +1,122 @@
package com.engine.kr.service.impl;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSONObject;
import com.engine.core.impl.Service;
import com.engine.kr.entity.kq.KqGlobal;
import com.engine.kr.enums.KqInteractiveEnum;
import com.engine.kr.exception.CustomizeRunTimeException;
import com.engine.kr.service.KqInteractiveService;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.util.IOUtils;
import weaver.conn.RecordSet;
import weaver.file.ImageFileManager;
import weaver.general.BaseBean;
import weaver.general.Util;
import java.io.IOException;
import java.io.InputStream;
import java.util.Base64;
import java.util.HashMap;
import java.util.Map;
/**
* @author:dxfeng
* @createTime: 2023/05/17
* @version: 1.0
*/
public class KqInteractiveServiceImpl extends Service implements KqInteractiveService {
@Override
public Map<String, Object> getLeaveBal(Map<String, Object> params) {
String token = getToken();
String jqlx = Util.null2String(params.get("jqlx"));
String resourceId = Util.null2String(params.get("resourceId"));
String dayoffType = "";
String workCode = "";
RecordSet rs = new RecordSet();
rs.executeQuery("select kqxtzdz from uf_jqzdpp where lczd =?", jqlx);
if (rs.next()) {
dayoffType = rs.getString("kqxtzdz");
}
if (StringUtils.isBlank(dayoffType)) {
throw new RuntimeException("假期余额获取失败,未找到假期类型对应编码[" + jqlx + "]");
}
rs.executeQuery("select workcode from hrmresource where id = ?", resourceId);
if (rs.next()) {
workCode = rs.getString("workcode");
}
Map<String, Object> postParam = new HashMap<>(4);
postParam.put("token", token);
postParam.put("personId", workCode);
// 假别转换为代码
postParam.put("dayoffType", dayoffType);
// 可不填
postParam.put("leaveDate", params.get("ksrq"));
Map<String, Object> returnMap = new HashMap<>();
String returnStr = HttpUtil.post(KqGlobal.POST_URL + KqInteractiveEnum.LEAVE_BAL.getPostPath(), postParam);
JSONObject jsonObject = JSONObject.parseObject(returnStr);
String code = jsonObject.getString("code");
returnMap.put("code", code);
if (KqGlobal.SUC_CODE.equals(code)) {
returnMap.put("dayoffBalHours", jsonObject.getString("dayoffBalHours"));
} else if(KqGlobal.IGNORE_CODE.equals(code)){
returnMap.put("errormsg", "假期余额获取失败," + jsonObject.getString("msg"));
}else{
throw new CustomizeRunTimeException("假期余额获取失败," + jsonObject.getString("msg"));
}
return returnMap;
}
@Override
public Map<String, Object> getUserImage(Map<String, Object> params) {
Map<String, Object> returnMap = new HashMap<>(3);
String personId = Util.null2String(params.get("personId"));
RecordSet rs = new RecordSet();
rs.executeQuery("select resourceimageid from hrmresource where workcode = ? ", personId);
String resourceImageId = "";
if (rs.next()) {
resourceImageId = rs.getString("resourceimageid");
}
if (StringUtils.isNotBlank(resourceImageId)) {
ImageFileManager manager = new ImageFileManager();
manager.getImageFileInfoById(Util.getIntValue(resourceImageId));
InputStream inputStream = manager.getInputStream();
try {
returnMap.put("base64", Base64.getEncoder().encodeToString(IOUtils.toByteArray(inputStream)));
returnMap.put("filetype", manager.getImageFileType());
returnMap.put("fileName", manager.getImageFileName());
} catch (IOException e) {
new BaseBean().writeLog(e);
throw new CustomizeRunTimeException(e.getMessage());
}
} else {
throw new CustomizeRunTimeException("文件获取失败");
}
return returnMap;
}
/**
* token
*
* @return
*/
public String getToken() {
Map<String, Object> params = new HashMap<>(2);
params.put("user", KqGlobal.USER);
params.put("pass", KqGlobal.PASS);
String returnStr = HttpUtil.post(KqGlobal.POST_URL + KqInteractiveEnum.TOKEN.getPostPath(), params);
JSONObject jsonObject = JSONObject.parseObject(returnStr);
String code = jsonObject.getString("code");
if (KqGlobal.SUC_CODE.equals(code)) {
return jsonObject.getString("token");
} else {
throw new CustomizeRunTimeException("token获取失败," + jsonObject.getString("msg"));
}
}
}

@ -0,0 +1,20 @@
package com.engine.kr.util;
/**
* @Author weaver_cl
* @Description:
* @Date 2023/2/21
* @Version V1.0
**/
public class ExceptionUtil {
public static String getRealMessage(Throwable e) {
while (e != null) {
Throwable cause = e.getCause();
if (cause == null) {
return e.getMessage();
}
e = cause;
}
return "";
}
}

@ -0,0 +1,170 @@
package com.engine.kr.util;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.engine.core.exception.ECException;
import com.engine.kr.exception.CustomizeRunTimeException;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
import weaver.general.BaseBean;
import weaver.hrm.User;
import java.util.HashMap;
import java.util.Map;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Supplier;
/**
*
* <p>Copyright: Copyright (c) 2022</p>
* <p>Company: </p>
*
* @author qiantao
* @version 1.0
**/
@Slf4j
public class ResponseResult<T, R> {
private static final long serialVersionUID = 1L;
private final User user;
private final BaseBean baseBean = new BaseBean();
private final Boolean isLog = "true".equals(baseBean.getPropValue("hrmSalary", "log"));
public ResponseResult(User user) {
this.user = user;
}
/**
*
*/
public String run(Function<T, R> f, T t) {
try {
if (isLog) {
log.info("run api , param {}", t);
}
return Ok(f.apply(t));
} catch (CustomizeRunTimeException e) {
log.error("api run fail", e);
return Error(e.getMessage());
} catch (ECException e) {
log.error("api run fail", e);
Throwable cause = e.getCause();
return Error(cause.getMessage());
} catch (Exception e) {
log.error("api run fail", e);
return Error("系统异常!");
}
}
/**
*
*/
public String run(Consumer<T> f, T t) {
try {
if (isLog) {
log.info("run api , param {}", t);
}
f.accept(t);
return Ok();
} catch (CustomizeRunTimeException e) {
log.error("api run fail", e);
return Error(e.getMessage());
} catch (ECException e) {
log.error("api run fail", e);
return Error(ExceptionUtil.getRealMessage(e));
} catch (Exception e) {
log.error("api run fail", e);
return Error("系统异常!", e);
}
}
/**
*
*/
public String run(Supplier<R> f) {
try {
if (isLog) {
log.info("run api");
}
return Ok(f.get());
} catch (CustomizeRunTimeException e) {
log.error("api run fail", e);
return Error(e.getMessage());
} catch (ECException e) {
log.error("api run fail", e);
Throwable cause = e.getCause();
return Error(cause.getMessage());
} catch (Exception e) {
log.error("api run fail", e);
return Error("系统异常!", e);
}
}
private static String getJsonString(Object apidatas) {
ObjectMapper mapper = new ObjectMapper();
try {
return mapper.writeValueAsString(apidatas);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
return "";
}
/**
*
*/
private String Ok() {
Map<String, Object> apidatas = new HashMap<>();
apidatas.put("status", true);
return JSONObject.toJSONString(apidatas, SerializerFeature.DisableCircularReferenceDetect);
}
/**
*
*/
private String Ok(R r) {
Map<String, Object> apidatas = new HashMap<>();
apidatas.put("status", true);
apidatas.put("data", r);
String success = getJsonString(apidatas);
if (isLog) {
log.info("run salary api success return {}", success);
}
return success;
}
/**
*
*/
private static String Error(String message) {
Map<String, Object> apidatas = new HashMap<>();
apidatas.put("status", false);
apidatas.put("errormsg", message);
return JSONObject.toJSONString(apidatas, SerializerFeature.DisableCircularReferenceDetect);
}
/**
*
*/
private static String Error(String message, Exception e) {
Map<String, Object> apidatas = new HashMap<>();
apidatas.put("status", false);
apidatas.put("errormsg", message);
apidatas.put("error", e.getMessage());
return JSONObject.toJSONString(apidatas, SerializerFeature.DisableCircularReferenceDetect);
}
}

@ -0,0 +1,47 @@
package com.engine.kr.web;
import com.engine.common.util.ParamUtil;
import com.engine.common.util.ServiceUtil;
import com.engine.kr.service.KqInteractiveService;
import com.engine.kr.service.impl.KqInteractiveServiceImpl;
import com.engine.kr.util.ResponseResult;
import weaver.hrm.HrmUserVarify;
import weaver.hrm.User;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.ws.rs.GET;
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 java.util.Map;
/**
* @author:dxfeng
* @createTime: 2023/05/18
* @version: 1.0
*/
public class KqInteractiveController {
public KqInteractiveService getService(User user) {
return ServiceUtil.getService(KqInteractiveServiceImpl.class, user);
}
@POST
@Path("/getLeaveBal")
@Produces(MediaType.APPLICATION_JSON)
public String getLeaveBal(@Context HttpServletRequest request, @Context HttpServletResponse response, Map<String, Object> params) {
User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<Map<String, Object>, Map<String, Object>>(user).run(getService(user)::getLeaveBal, params);
}
@GET
@Path("/getUserImage")
@Produces(MediaType.APPLICATION_JSON)
public String getUserImage(@Context HttpServletRequest request, @Context HttpServletResponse response) {
User user = HrmUserVarify.getUser(request, response);
Map<String, Object> params = ParamUtil.request2Map(request);
return new ResponseResult<Map<String, Object>, Map<String, Object>>(user).run(getService(user)::getUserImage, params);
}
}

@ -1,14 +0,0 @@
package test;
/**
* @Author weaver_cl
* @Description:
* @Date 2022/10/9
* @Version V1.0
**/
public class MainTest {
public static void main(String[] args) {
}
}

@ -0,0 +1,664 @@
package weaver.interfaces.kr.cornjob;
import com.api.doc.detail.util.DocDownloadCheckUtil;
import com.api.hrm.service.HrmResourceBaseService;
import com.api.hrm.util.ServiceUtil;
import com.engine.common.biz.SimpleBizLogger;
import com.engine.common.constant.BizLogOperateAuditType;
import com.engine.common.constant.BizLogOperateType;
import com.engine.common.constant.BizLogSmallType4Hrm;
import com.engine.common.constant.BizLogType;
import com.engine.common.entity.BizLogContext;
import com.engine.common.service.impl.HrmCommonServiceImpl;
import com.engine.common.util.LogUtil;
import com.engine.hrm.entity.RuleCodeType;
import com.engine.hrm.util.CodeRuleManager;
import com.engine.hrm.util.HrmWeakPasswordUtil;
import com.engine.hrm.util.face.HrmFaceCheckManager;
import com.engine.hrm.util.face.ValidateFieldManager;
import com.engine.hrm.util.face.bean.CheckItemBean;
import com.weaver.general.BaseBean;
import ln.LN;
import org.apache.commons.lang3.StringUtils;
import weaver.common.DateUtil;
import weaver.conn.RecordSet;
import weaver.conn.RecordSetTrans;
import weaver.file.Prop;
import weaver.general.GCONST;
import weaver.general.PasswordUtil;
import weaver.general.Util;
import weaver.hrm.HrmUserVarify;
import weaver.hrm.User;
import weaver.hrm.common.DbFunctionUtil;
import weaver.hrm.company.DepartmentComInfo;
import weaver.hrm.companyvirtual.DepartmentVirtualComInfo;
import weaver.hrm.finance.SalaryManager;
import weaver.hrm.passwordprotection.manager.HrmResourceManager;
import weaver.hrm.privacy.PrivacyComInfo;
import weaver.hrm.privacy.UserPrivacyComInfo;
import weaver.hrm.resource.ResourceComInfo;
import weaver.hrm.settings.ChgPasswdReminder;
import weaver.hrm.settings.RemindSettings;
import weaver.hrm.tools.HrmDateCheck;
import weaver.interfaces.hrm.HrmServiceManager;
import weaver.license.PluginUserCheck;
import weaver.rsa.security.RSA;
import weaver.rtx.OrganisationCom;
import weaver.rtx.OrganisationComRunnable;
import weaver.system.SysRemindWorkflow;
import weaver.systeminfo.SystemEnv;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author:dxfeng
* @createTime: 2022/10/11
* @version: 1.0
*/
public class ResourceSyncUtil {
private static final char SEPARATOR = Util.getSeparator();
private static final String TODAY = DateUtil.getCurrentDate();
public static Map<String, Object> addResource(User user, Map<String, Object> params) {
Map<String, Object> returnMap = new HashMap<>();
RecordSet rs = new RecordSet();
String sql;
try {
DepartmentComInfo departmentComInfo = new DepartmentComInfo();
boolean canEdit = HrmUserVarify.checkUserRight("HrmResourceEdit:Edit", user);
if (!canEdit) {
returnMap.put("status", "-1");
returnMap.put("message", SystemEnv.getHtmlLabelName(22620, user.getLanguage()));
return returnMap;
}
String loginId = Util.null2String(params.get("loginid"));
String accountType = Util.null2s(Util.fromScreen3(Util.null2String(params.get(("accounttype"))), user.getLanguage()), "0");
if ("1".equals(accountType)) {
//次账号没有loginId
loginId = "";
}
boolean canSave = false;
LN LN = new LN();
int ckHrmnum = LN.CkHrmnum();
if (loginId.length() > 0) {
if (ckHrmnum < 0) {
//只有License检查人数小于规定人数才能修改。防止客户直接修改数据库数据
canSave = true;
}
} else {
canSave = true;
}
if (!canSave) {
returnMap.put("status", "-1");
returnMap.put("message", SystemEnv.getHtmlLabelName(84760, user.getLanguage()));
return returnMap;
}
if (!"".equals(loginId) && "0".equals(accountType)) {
sql = "select count(1) from hrmresourceallview where loginid='" + loginId + "' ";
rs.execute(sql);
if (rs.next()) {
if (rs.getInt(1) > 0) {
returnMap.put("status", "-1");
returnMap.put("message", SystemEnv.getHtmlLabelName(15094, user.getLanguage()));
return returnMap;
}
}
}
String departmentid = Util.null2String(params.get("departmentid"));
String subcompanyid = departmentComInfo.getSubcompanyid1(departmentid);
if (!"".equals(loginId) && !"0".equals(subcompanyid) && new HrmResourceManager().noMore(subcompanyid)) {
returnMap.put("status", "-1");
returnMap.put("message", SystemEnv.getHtmlLabelName(81926, user.getLanguage()));
return returnMap;
}
ResourceComInfo ResourceComInfo = new ResourceComInfo();
Map<String, String> result = addResourceBase(user, params);
String addResourceBaseCode = result.get("status");
if ("-1".equals(addResourceBaseCode)) {
returnMap.put("status", "-1");
returnMap.put("message", result.get("message"));
return returnMap;
}
int id = Util.getIntValue(result.get("id"));
String password = Util.null2String(params.get("password"));
//是否开启了RSA加密
String openRSA = Util.null2String(Prop.getPropValue("openRSA", "isrsaopen"));
if ("1".equals(openRSA)) {
password = new RSA().decrypt(password);
}
ChgPasswdReminder reminder = new ChgPasswdReminder();
RemindSettings settings = reminder.getRemindSettings();
//判断是否开启了【启用初始密码】
String defaultPasswordEnable = Util.null2String(settings.getDefaultPasswordEnable());
//【初始密码】
String defaultPassword = Util.null2String(settings.getDefaultPassword());
//如果管理员设置的密码为空。并且开启了【启用初始密码】,且初始密码不为空,则默认取初始密码作为密码
if ("".equals(password) && "1".equals(defaultPasswordEnable) && !"".equals(defaultPassword)) {
password = defaultPassword;
}
//判断是否开启了【禁止弱密码保存】
String weakPasswordDisable = Util.null2s(settings.getWeakPasswordDisable(), "0");
if ("1".equals(weakPasswordDisable)) {
if (!"".equals(password)) {//密码为空的情况
//判断是否为弱密码
HrmWeakPasswordUtil hrmWeakPasswordUtil = new HrmWeakPasswordUtil();
if (hrmWeakPasswordUtil.isWeakPsd(password)) {
returnMap.put("status", "-1");
returnMap.put("message", SystemEnv.getHtmlLabelName(515420, user.getLanguage()));
return returnMap;
}
}
}
int secLevel = Util.getIntValue(Util.null2String(params.get("seclevel")), 0);
if (id > 0) {
//保存系统信息
SimpleBizLogger logger = new SimpleBizLogger();
BizLogContext bizLogContext = new BizLogContext();
bizLogContext.setLogType(BizLogType.HRM);//模块类型
bizLogContext.setBelongType(BizLogSmallType4Hrm.HRM_RSOURCE_CARD);//所属大类型
bizLogContext.setLogSmallType(BizLogSmallType4Hrm.HRM_RSOURCE_CARD_SYSTEM);//当前小类型
bizLogContext.setOperateType(BizLogOperateType.ADD);
bizLogContext.setOperateAuditType(BizLogOperateAuditType.WARNING);
bizLogContext.setParams(params);//当前request请求参数
logger.setUser(user);//当前操作人
String mainSql = "select * from hrmresource where id=" + id;
logger.setMainSql(mainSql, "id");//主表sql
logger.setMainPrimarykey("id");//主日志表唯一key
logger.setMainTargetNameColumn("lastname");//当前targetName对应的列对应日志中的对象名
logger.before(bizLogContext);//写入操作前日志
String workStartDate = Util.null2String(params.get("workstartdate"));//参加工作日期
String companyStartDate = Util.null2String(params.get("companystartdate"));//入职日期
String certificateNum = Util.null2String(params.get("certificatenum"));//身份证号
String probationEndDate = Util.null2String(params.get("probationenddate"));//试用期结束日期
String dspOrder = Util.fromScreen3(Util.null2String(params.get("dsporder")), user.getLanguage());
if (dspOrder.length() == 0) {
dspOrder = "" + id;
}
if ("0".equals(accountType)) {
String encrptPassword = "";
String salt = "";
if (StringUtils.isNotBlank(password)) {
String[] encrypts = PasswordUtil.encrypt(password);
encrptPassword = encrypts[0];
salt = encrypts[1];
}
sql = " update hrmresource set loginid='" + loginId + "', password='" + encrptPassword + "'," +
"seclevel=" + secLevel + ",dsporder=" + dspOrder +
",salt='" + salt + "',workstartdate='" + workStartDate + "',companystartdate='" + companyStartDate + "' where id = " + id;
} else {
sql = " update hrmresource set seclevel=" + secLevel + ",dsporder=" + dspOrder +
" ,workstartdate='" + workStartDate + "',companystartdate='" + companyStartDate + "' where id = " + id;
}
// 计算工龄、司龄
updateWorkInfo(String.valueOf(id), user, params);
rs.execute(sql);
// 更新身份证、试用期结束日期
sql = " update hrmresource set certificatenum='" + certificateNum + "',probationenddate ='" + probationEndDate + "' where id = " + id;
rs.executeUpdate(sql);
HrmFaceCheckManager.setUserPassowrd(id + "", password);
HrmFaceCheckManager.sync(id + "", HrmFaceCheckManager.getOptUpdate(), "HrmResourceAddService_saveSimple_update", HrmFaceCheckManager.getOaResource());
LogUtil.writeBizLog(logger.getBizLogContexts());
}
//同步RTX端的用户信息.
new OrganisationCom().checkUser(id);
new Thread(new OrganisationComRunnable("user", "add", "" + id)).start();
ResourceComInfo.updateResourceInfoCache("" + id);
new PluginUserCheck().clearPluginUserCache("messager");
//OA与第三方接口单条数据同步方法开始
new HrmServiceManager().SynInstantHrmResource("" + id, "1");
//OA与第三方接口单条数据同步方法结束
//BBS集成相关
String bbsLingUrl = new weaver.general.BaseBean().getPropValue(GCONST.getConfigFile(), "ecologybbs.linkUrl");
if (!"0".equals(password)) {
if (!"".equals(bbsLingUrl)) {
new Thread(new weaver.bbs.BBSRunnable(loginId, password)).start();
}
}
returnMap.put("id", id);
returnMap.put("status", "1");
} catch (Exception e) {
new BaseBean().writeLog("保存新建人员simple错误" + e);
returnMap.put("status", "-1");
returnMap.put("message", "" + SystemEnv.getHtmlLabelName(22620, weaver.general.ThreadVarLanguage.getLang()) + "");
}
return returnMap;
}
private static Map<String, String> addResourceBase(User user, Map<String, Object> params) {
Map<String, String> retmap = new HashMap<>();
try {
retmap.put("id", "0");
RecordSet rs = new RecordSet();
DepartmentComInfo DepartmentComInfo = new DepartmentComInfo();
ResourceComInfo ResourceComInfo = new ResourceComInfo();
SalaryManager SalaryManager = new SalaryManager();
ChgPasswdReminder reminder = new ChgPasswdReminder();
RemindSettings settings = reminder.getRemindSettings();
SysRemindWorkflow SysRemindWorkflow = new SysRemindWorkflow();
DepartmentVirtualComInfo DepartmentVirtualComInfo = new DepartmentVirtualComInfo();
StringBuilder para;
String cmd = Util.null2String(params.get("cmd"));
String id = Util.null2String(params.get("id"));
String workcode = Util.fromScreen3(Util.null2String(params.get("workcode")), user.getLanguage());
String lastname = Util.fromScreen3(Util.null2String(params.get("lastname")), user.getLanguage()).trim();
String sex = Util.fromScreen3(Util.null2String(params.get("sex")), user.getLanguage());
String resourceimageid = Util.null2String(params.get("resourceimageid"));
if (resourceimageid.length() > 0) {
resourceimageid = "" + DocDownloadCheckUtil.getDownloadfileidstr(resourceimageid);
}
String departmentid = Util.fromScreen3(Util.null2String(params.get("departmentid")), user.getLanguage());
String costcenterid = Util.fromScreen3(Util.null2String(params.get("costcenterid")), user.getLanguage());
String jobtitle = Util.fromScreen3(Util.null2String(params.get("jobtitle")), user.getLanguage());
String joblevel = Util.fromScreen3(Util.null2String(params.get("joblevel")), user.getLanguage());
String jobactivitydesc = Util.fromScreen3(Util.null2String(params.get("jobactivitydesc")), user.getLanguage());
String managerid = Util.fromScreen3(Util.null2String(params.get("managerid")), user.getLanguage());
String assistantid = Util.fromScreen3(Util.null2String(params.get("assistantid")), user.getLanguage());
String status = Util.fromScreen3(Util.null2String(params.get("status")), user.getLanguage());
if (StringUtils.isBlank(status)) {
status = "0";
}
String locationid = Util.fromScreen3(Util.null2String(params.get("locationid")), user.getLanguage());
String workroom = Util.fromScreen3(Util.null2String(params.get("workroom")), user.getLanguage());
String telephone = Util.fromScreen3(Util.null2String(params.get("telephone")), user.getLanguage());
String mobile = Util.fromScreen3(Util.null2String(params.get("mobile")), user.getLanguage());
String mobileshowtype = Util.fromScreen3(Util.null2String(params.get("mobileshowtype")), user.getLanguage());
String mobilecall = Util.fromScreen3(Util.null2String(params.get("mobilecall")), user.getLanguage());
String fax = Util.fromScreen3(Util.null2String(params.get("fax")), user.getLanguage());
String jobcall = Util.fromScreen3(Util.null2String(params.get("jobcall")), user.getLanguage());
String email = Util.fromScreen3(Util.null2String(params.get("email")), user.getLanguage());
String dsporder = Util.fromScreen3(Util.null2String(params.get("dsporder")), user.getLanguage());
String accounttype = Util.fromScreen3(Util.null2String(params.get("accounttype")), user.getLanguage());
String systemlanguage = Util.null2String(params.get("systemlanguage"));
if ("".equals(systemlanguage) || "0".equals(systemlanguage)) {
systemlanguage = "7";
}
String belongto = Util.fromScreen3(Util.null2String(params.get("belongto")), user.getLanguage());
//应聘人员id
String rcid = Util.null2String(params.get("rcId"));
CheckItemBean mobileBean = new CheckItemBean("mobile", mobile, id);
ValidateFieldManager.validate(mobileBean);
if (!mobileBean.isPass()) {
retmap.put("status", "-1");
retmap.put("message", mobileBean.getCheckMsg());
return retmap;
}
CheckItemBean telephoneBean = new CheckItemBean("telephone", telephone, id);
ValidateFieldManager.validate(telephoneBean);
if (!telephoneBean.isPass()) {
retmap.put("status", "-1");
retmap.put("message", telephoneBean.getCheckMsg());
return retmap;
}
if (dsporder.length() == 0) {
dsporder = id;
}
if ("0".equals(accounttype)) {
belongto = "-1";
}
String departmentvirtualids = Util.null2String(params.get("departmentvirtualids"));//虚拟部门id;
//Td9325,解决多账号次账号没有登陆Id在浏览框组织结构中无法显示的问题。
boolean falg = false;
String loginid = "";
if ("1".equals(accounttype)) {
rs.execute("select loginid from HrmResource where id =" + belongto);
if (rs.next()) {
loginid = rs.getString("loginid");
}
if (!"".equals(loginid)) {
String maxidsql = "select max(id) as id from HrmResource where loginid like '" + loginid + "%'";
rs.execute(maxidsql);
if (rs.next()) {
loginid = loginid + (rs.getInt("id") + 1);
falg = true;
}
}
}
rs.executeProc("HrmResourceMaxId_Get", "");
rs.next();
id = "" + rs.getInt(1);
if (!"".equals(rcid)) {
id = rcid;
}
SimpleBizLogger logger = new SimpleBizLogger();
BizLogContext bizLogContext = new BizLogContext();
bizLogContext.setLogType(BizLogType.HRM);//模块类型
bizLogContext.setBelongType(BizLogSmallType4Hrm.HRM_RSOURCE_CARD);//所属大类型
bizLogContext.setBelongTypeTargetName(SystemEnv.getHtmlLabelName(1361, user.getLanguage()));
bizLogContext.setLogSmallType(BizLogSmallType4Hrm.HRM_RSOURCE_CARD_BASE);//当前小类型
bizLogContext.setOperateType(BizLogOperateType.ADD);
bizLogContext.setParams(params);//当前request请求参数
logger.setUser(user);//当前操作人
String cusFieldNames = ServiceUtil.getCusFieldNames("HrmCustomFieldByInfoType", -1, "b");
String mainSql = "select a.*" + (cusFieldNames.length() > 0 ? "," + cusFieldNames : "") + " from hrmresource a left join cus_fielddata b on a.id=b.id and b.scope='HrmCustomFieldByInfoType' and b.scopeid=-1 where a.id=" + id;
logger.setMainSql(mainSql, "id");//主表sql
logger.setMainPrimarykey("id");//主日志表唯一key
logger.setMainTargetNameColumn("lastname");//当前targetName对应的列对应日志中的对象名
logger.before(bizLogContext);//写入操作前日志
String sql = "select managerstr, seclevel from HrmResource where id = " + Util.getIntValue(managerid);
rs.execute(sql);
String managerstr = "";
while (rs.next()) {
String tmp_managerstr = rs.getString("managerstr");
//处理managerstr 不以逗号开始或者结束的情况 形如 managerstr8 begin
if (!tmp_managerstr.startsWith(",")) {
tmp_managerstr = "," + tmp_managerstr;
}
if (!tmp_managerstr.endsWith(",")) {
tmp_managerstr = tmp_managerstr + ",";
}
//处理managerstr 不以逗号开始或者结束的情况 形如 managerstr8 end
managerstr += tmp_managerstr;
managerstr = "," + managerid + managerstr;
managerstr = managerstr.endsWith(",") ? managerstr : (managerstr + ",");
}
String subcmpanyid1 = DepartmentComInfo.getSubcompanyid1(departmentid);
RecordSetTrans rst = new RecordSetTrans();
rst.setAutoCommit(false);
try {
if (resourceimageid.length() == 0) {
resourceimageid = "null";
}
if (costcenterid.length() == 0) {
costcenterid = "null";
}
if (managerid.length() == 0) {
managerid = "null";
}
if (assistantid.length() == 0) {
assistantid = "null";
}
if (accounttype.length() == 0) {
accounttype = "null";
}
if (belongto.length() == 0) {
belongto = "null";
}
if (jobcall.length() == 0) {
jobcall = "null";
}
if (mobileshowtype.length() == 0) {
mobileshowtype = "null";
}
if ("postgresql".equalsIgnoreCase(rst.getDBType())) {
if (joblevel.length() == 0) {
joblevel = null;
}
if (dsporder.length() == 0) {
dsporder = null;
}
}
workcode = CodeRuleManager.getCodeRuleManager().generateRuleCode(RuleCodeType.USER, subcmpanyid1, departmentid, jobtitle, workcode);
para = new StringBuilder("" + id + SEPARATOR + workcode + SEPARATOR + lastname + SEPARATOR + sex + SEPARATOR + resourceimageid + SEPARATOR +
departmentid + SEPARATOR + costcenterid + SEPARATOR + jobtitle + SEPARATOR + joblevel + SEPARATOR + jobactivitydesc + SEPARATOR +
managerid + SEPARATOR + assistantid + SEPARATOR + status + SEPARATOR + locationid + SEPARATOR + workroom + SEPARATOR + telephone +
SEPARATOR + mobile + SEPARATOR + mobilecall + SEPARATOR + fax + SEPARATOR + jobcall + SEPARATOR + subcmpanyid1 + SEPARATOR + managerstr +
SEPARATOR + accounttype + SEPARATOR + belongto + SEPARATOR + systemlanguage + SEPARATOR + email + SEPARATOR + dsporder + SEPARATOR + mobileshowtype);
rst.executeProc("HrmResourceBasicInfo_Insert", para.toString());
if (Util.null2String(locationid).length() > 0) {
rst.executeSql("update hrmresource set countryid=(select countryid from HrmLocations where id=" + locationid + "),"
+ DbFunctionUtil.getInsertUpdateSetSql(rst.getDBType(), user.getUID()) + " where id=" + id);
}
String logidsql, quickSearchStr = new HrmCommonServiceImpl().generateQuickSearchStr(lastname);
if (falg) {
logidsql = "update HrmResource set loginid = ?, pinyinlastname = ?, ecology_pinyin_search = ? where id = ?";
rst.executeUpdate(logidsql, loginid, quickSearchStr, quickSearchStr, id);
} else {
logidsql = "update HrmResource set pinyinlastname = ?, ecology_pinyin_search = ? where id = ?";
rst.executeUpdate(logidsql, quickSearchStr, quickSearchStr, id);
}
rst.commit();
} catch (Exception e) {
rst.rollback();
e.printStackTrace();
}
boolean formdefined = false;
weaver.system.CusFormSettingComInfo CusFormSettingComInfo = new weaver.system.CusFormSettingComInfo();
weaver.system.CusFormSetting CusFormSetting = CusFormSettingComInfo.getCusFormSetting("hrm", "HrmResourceBase");
if (CusFormSetting != null) {
if (CusFormSetting.getStatus() == 2) {
//自定义布局页面
formdefined = true;
}
}
int userid = user.getUID();
String userpara = "" + userid + SEPARATOR + TODAY;
para = new StringBuilder("" + id);
for (int i = 0; i < 5; i++) {
int idx = i;
if (formdefined) {
idx++;
}
String datefield = Util.null2String(params.get("datefield" + idx));
String numberfield = "" + Util.getDoubleValue(Util.null2String(params.get("numberfield" + idx)), 0);
String textfield = Util.null2String(params.get("textfield" + idx));
String tinyintfield = "" + Util.getIntValue(Util.null2String(params.get("tinyintfield" + idx)), 0);
para.append(SEPARATOR).append(datefield).append(SEPARATOR).append(numberfield).append(SEPARATOR).append(textfield).append(SEPARATOR).append(tinyintfield);
}
rs.executeProc("HrmResourceDefine_Update", para.toString());
rs.executeProc("HrmResource_CreateInfo", "" + id + SEPARATOR + userpara + SEPARATOR + userpara);
//421944 用户自定义隐私设置
UserPrivacyComInfo upc = new UserPrivacyComInfo();
PrivacyComInfo pc = new PrivacyComInfo();
Map<String, String> mapShowSets = pc.getMapShowSets();
String insertSql;
rs = new RecordSet();
try {
String deletePriSql = " delete from userprivacysetting where userid= '" + id + "'";
rs.execute(deletePriSql);
for (Map.Entry<String, String> me : mapShowSets.entrySet()) {
String fieldName = me.getKey();
String fieldVal = Util.null2String(mapShowSets.get(fieldName));
if ("1".equals(fieldVal)) {
String tmpPK = id + "__" + fieldName;
String tmpPvalue = Util.null2String(params.get(fieldName + "showtype"));
insertSql = "insert into userprivacysetting (combinedid,userid,ptype,pvalue) values('" + tmpPK + "','" + id + "','" + fieldName + "','" + tmpPvalue + "')";
rs.execute(insertSql);
}
}
upc.removeUserPrivacyCache();
} catch (Exception e) {
e.printStackTrace();
}
// 改为只进行该人缓存信息的添加
ResourceComInfo.addResourceInfoCache(id);
SalaryManager.initResourceSalary(id);
para = new StringBuilder("" + id + SEPARATOR + managerid + SEPARATOR + departmentid + SEPARATOR + subcmpanyid1 + SEPARATOR + "0" + SEPARATOR + managerstr);
rs.executeProc("HrmResource_Trigger_Insert", para.toString());
String sql_1 = ("insert into HrmInfoStatus (itemid,hrmid) values(1," + id + ")");
rs.execute(sql_1);
String sql_2 = ("insert into HrmInfoStatus (itemid,hrmid) values(2," + id + ")");
rs.execute(sql_2);
String sql_3 = ("insert into HrmInfoStatus (itemid,hrmid) values(3," + id + ")");
rs.execute(sql_3);
String sql_10 = ("insert into HrmInfoStatus (itemid,hrmid) values(10," + id + ")");
rs.execute(sql_10);
String CurrentUser = "" + user.getUID();
String CurrentUserName = "" + user.getUsername();
String SWFAccepter;
String SWFTitle;
String SWFRemark;
String SWFSubmiter;
String Subject;
Subject = SystemEnv.getHtmlLabelName(15670, user.getLanguage());
Subject += ":" + lastname;
//modifier by lvyi 2013-12-31
if ("1".equals(settings.getEntervalid())) {//入职提醒
String thesql = "select hrmids from HrmInfoMaintenance where id<4 or id = 10";
rs.execute(thesql);
StringBuilder members = new StringBuilder();
while (rs.next()) {
String hrmid_tmp = Util.null2String(rs.getString("hrmids"));//TD9392
if (hrmid_tmp.length() != 0) {
members.append(",").append(rs.getString("hrmids"));
}
}
if (!"".equals(members.toString())) {
members = new StringBuilder(members.substring(1));
members = new StringBuilder(new HrmResourceBaseService().duplicateRemoval(members.toString(), user.getUID() + ""));
SWFAccepter = members.toString();
SWFTitle = SystemEnv.getHtmlLabelName(15670, user.getLanguage());
SWFTitle += ":" + lastname;
SWFTitle += "-" + CurrentUserName;
SWFTitle += "-" + TODAY;
SWFRemark = "<a class='wea-hrm-new-employee-set' onClick=\"openHrmNewEmployeeSetDialog(" + id + ")\" style=\"cursor:pointer;\" id = '" + id + "'>" + Util.fromScreen2(Subject, user.getLanguage()) + "</a>";
SWFSubmiter = CurrentUser;
SysRemindWorkflow.setPrjSysRemind(SWFTitle, 0, Util.getIntValue(SWFSubmiter), SWFAccepter, SWFRemark);
}
}
//CustomFieldTreeManager.editCustomDataE9Add("HrmCustomFieldByInfoType", -1, fu, Util.getIntValue(id, 0));
//应聘人员的个人信息18条
if (!"".equals(rcid)) {
sql = "select * from HrmCareerApply where id = ?";
rs.executeQuery(sql, id);
if (rs.next()) {
String birthday = Util.null2String(rs.getString("birthday"));
String folk = Util.null2String(rs.getString("folk"));
String nativeplace = Util.null2String(rs.getString("nativeplace"));
String regresidentplace = Util.null2String(rs.getString("regresidentplace"));
String certificatenum = Util.null2String(rs.getString("certificatenum"));
String maritalstatus = Util.null2String(rs.getString("maritalstatus"));
String policy = Util.null2String(rs.getString("policy"));
String bememberdate = Util.null2String(rs.getString("bememberdate"));
String bepartydate = Util.null2String(rs.getString("bepartydate"));
String islabouunion = Util.null2String(rs.getString("islabouunion"));
String educationlevel = Util.null2String(rs.getString("educationlevel"));
String degree = Util.null2String(rs.getString("degree"));
String healthinfo = Util.null2String(rs.getString("healthinfo"));
String height = Util.null2String(rs.getString("height"));
if (height.contains(".")) {
height = height.substring(0, height.indexOf("."));
}
String weight = Util.null2String(rs.getString("weight"));
if (weight.contains(".")) {
weight = weight.substring(0, weight.indexOf("."));
}
String residentplace = Util.null2String(rs.getString("residentplace"));
String homeaddress = Util.null2String(rs.getString("homeaddress"));
String tempresidentnumber = Util.null2String(rs.getString("tempresidentnumber"));
para = new StringBuilder("" + id + SEPARATOR + birthday + SEPARATOR + folk + SEPARATOR + nativeplace + SEPARATOR + regresidentplace + SEPARATOR + maritalstatus + SEPARATOR + policy + SEPARATOR + bememberdate + SEPARATOR + bepartydate + SEPARATOR + islabouunion + SEPARATOR + educationlevel + SEPARATOR + degree + SEPARATOR + healthinfo + SEPARATOR + height + SEPARATOR + weight + SEPARATOR + residentplace + SEPARATOR + homeaddress + SEPARATOR + tempresidentnumber + SEPARATOR + certificatenum);
RecordSet rs1 = new RecordSet();
rs1.executeProc("HrmResourcePersonalInfo_Insert", para.toString());
}
}
//更新虚拟组织部门id
if (departmentvirtualids.length() > 0) {
//保存前先删除需要删除的数据因为有managerid 所以不能全部删除再保存
sql = "delete from hrmresourcevirtual where resourceid=" + id + " and departmentid not in (" + departmentvirtualids + ")";
rs.execute(sql);
String[] departmentvirtualid = departmentvirtualids.split(",");
for (String s : departmentvirtualid) {
rs.execute(" select count(*) from HrmResourceVirtual where departmentid ='" + s + "' and resourceid = " + id);
if (rs.next()) {
//如果已存在 无需处理
if (rs.getInt(1) > 0) {
continue;
}
}
//写入
int tmpid = 0;
rs.execute("select max(id) from HrmResourceVirtual ");
if (rs.next()) {
tmpid = rs.getInt(1) + 1;
}
String subcompanyid = DepartmentVirtualComInfo.getSubcompanyid1(s);
sql = " insert into HrmResourceVirtual (id,resourceid,subcompanyid,departmentid ) " +
" values (" + tmpid + "," + id + "," + subcompanyid + "," + s + ")";
rs.execute(sql);
}
}
LogUtil.writeBizLog(logger.getBizLogContexts());
HrmFaceCheckManager.sync(id, HrmFaceCheckManager.getOptInsert(), "hrm_e9_HrmResourceBaseService_addResourceBase", HrmFaceCheckManager.getOaResource());
//同步RTX端的用户信息.
new OrganisationCom().checkUser(Util.getIntValue(id));
new Thread(new OrganisationComRunnable("user", "add", "" + id)).start();
ResourceComInfo.updateResourceInfoCache("" + id);
new PluginUserCheck().clearPluginUserCache("messager");
//OA与第三方接口单条数据同步方法开始
new HrmServiceManager().SynInstantHrmResource("" + id, "1");
//OA与第三方接口单条数据同步方法结束
//新增人员实时同步到CoreMail邮件系统
//CoreMailAPI.synUser(id);
retmap.put("status", "1");
retmap.put("id", id);
} catch (Exception e) {
new BaseBean().writeLog("新建人员基本信息错误:" + e);
retmap.put("status", "-1");
}
return retmap;
}
private static void updateWorkInfo(String id, User user, Map<String, Object> params) {
try {
RecordSet rs = new RecordSet();
String sql;
String companystartdate = Util.fromScreen3(Util.null2String(params.get("companystartdate")), user.getLanguage());
String workstartdate = Util.fromScreen3(Util.null2String(params.get("workstartdate")), user.getLanguage());
List<String> lsParams = new ArrayList<>();
lsParams.add(companystartdate.length() == 0 ? null : companystartdate);
lsParams.add(workstartdate.length() == 0 ? null : workstartdate);
lsParams.add(id);
sql = " update hrmresource set companystartdate=?,workstartdate=? where id=?";
rs.executeUpdate(sql, lsParams);
HrmDateCheck hrmDateCheck = new HrmDateCheck();
hrmDateCheck.calWorkInfo(id);
} catch (Exception e) {
new BaseBean().writeLog(e);
}
}
}

@ -0,0 +1,468 @@
package weaver.interfaces.kr.cornjob;
import com.alibaba.fastjson.JSON;
import com.engine.kr.entity.sync.KqOrgData;
import com.engine.kr.entity.sync.KqResourceData;
import com.engine.kr.exception.CustomizeRunTimeException;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import weaver.common.DateUtil;
import weaver.conn.RecordSet;
import weaver.formmode.IgnoreCaseHashMap;
import weaver.general.Util;
import weaver.hrm.User;
import weaver.hrm.company.DepartmentComInfo;
import weaver.hrm.company.SubCompanyComInfo;
import weaver.hrm.resource.ResourceComInfo;
import weaver.interfaces.hrm.HrmServiceManager;
import weaver.interfaces.schedule.BaseCronJob;
import weaver.matrix.MatrixUtil;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @author:dxfeng
* @createTime: 2024/08/19
* @version: 1.0
*/
public class SyncKqOrgDataJob extends BaseCronJob {
private static final String COMPANY_TABLE = "hrmcompany";
private static final String SUB_COMPANY_TABLE = "hrmsubcompany";
private static final String DEPARTMENT_TABLE = "hrmdepartment";
private static final String RESOURCE_TABLE = "hrmresource";
// 组织唯一代码
Map<String, KqOrgData> sysIdMap = new HashMap<>();
private String syncType;
@Override
public void execute() {
RecordSet rs = new RecordSet();
rs.writeLog("考勤组织信息同步任务开始");
try {
// 查询组织数据,排除外协
rs.executeSqlWithDataSource("select dptprcno,dptno,dptname,isdelete,dptsysid from rs_dpt where dptname != '外协' ", "KAOQIN");
List<KqOrgData> dataList = new ArrayList<>();
while (rs.next()) {
// 获取考勤组织表的所有数据
KqOrgData kqOrgData = new KqOrgData();
kqOrgData.setDptprcno(rs.getString("dptprcno"));
kqOrgData.setDptno(rs.getString("dptno"));
kqOrgData.setDptname(rs.getString("dptname"));
kqOrgData.setIsdelete(rs.getString("isdelete"));
kqOrgData.setDptsysid(rs.getString("dptsysid"));
dataList.add(kqOrgData);
}
// 完整编号、组织对象
Map<String, KqOrgData> keyMap = dataList.stream().collect(Collectors.toMap(KqOrgData::getDptprcno, item -> item));
// 上级编号 、 子元素集合
Map<String, List<KqOrgData>> parentMap = dataList.stream().filter(item -> item.getParentNo() != null).collect(Collectors.groupingBy(KqOrgData::getParentNo));
// 集团
KqOrgData companyData = keyMap.get("001");
String companyId = getCompanyId(rs);
if (StringUtils.isBlank(companyId)) {
throw new CustomizeRunTimeException("获取集团数据失败");
}
companyData.setOaId(companyId);
sysIdMap.put(companyData.getDptsysid(), companyData);
// 分部数据
List<KqOrgData> subCompanyList = parentMap.get(companyData.getDptprcno());
for (KqOrgData subCompany : subCompanyList) {
// 同步分部数据
syncSubCompany(rs, subCompany, companyId);
// 处理该分部下的部门数据
List<KqOrgData> departmentList = parentMap.get(subCompany.getDptprcno());
if (CollectionUtils.isNotEmpty(departmentList)) {
for (KqOrgData departmentData : departmentList) {
dealDepartmentData(rs, departmentData, parentMap, subCompany.getOaId(), departmentData.getOaId());
}
}
}
// 按照指定时间 查询人员数据
String sql = "select empno,empname,empsexid,empstatusid,dptsysid,empbirthday,empidno,empgrpdate,empnormaldate,empleavedate,empmobile,emplocaladdr,emphomeaddr from rs_emp ";
if (!"all".equals(syncType)) {
String currentDate = DateUtil.getCurrentDate();
sql += "where empgrpdate = '" + currentDate + "' or empleavedate = '" + currentDate + "'";
}
rs.executeSqlWithDataSource(sql, "KAOQIN");
List<KqResourceData> resourceList = new ArrayList<>();
while (rs.next()) {
KqResourceData resourceData = new KqResourceData();
resourceData.setEmpno(rs.getString("empno"));
resourceData.setEmpname(rs.getString("empname"));
resourceData.setEmpsexid(rs.getString("empsexid"));
resourceData.setEmpstatusid(rs.getString("empstatusid"));
resourceData.setDptsysid(rs.getString("dptsysid"));
resourceData.setEmpbirthday(rs.getString("empbirthday"));
resourceData.setEmpidno(rs.getString("empidno"));
resourceData.setEmpgrpdate(rs.getString("empgrpdate"));
resourceData.setEmpnormaldate(rs.getString("empnormaldate"));
resourceData.setEmpleavedate(rs.getString("empleavedate"));
resourceData.setEmpmobile(rs.getString("empmobile"));
resourceData.setEmplocaladdr(rs.getString("emplocaladdr"));
resourceData.setEmphomeaddr(rs.getString("emphomeaddr"));
resourceList.add(resourceData);
}
// 处理人员数据
for (KqResourceData resourceData : resourceList) {
KqOrgData kqOrgData = sysIdMap.get(resourceData.getDptsysid());
if (null == kqOrgData || StringUtils.isBlank(kqOrgData.getOaId()) || StringUtils.isBlank(kqOrgData.getSubCompanyId())) {
// 上级部门不存在的,或者非部门下的人员,该组织下的人员跳过处理
continue;
}
String departmentId = kqOrgData.getOaId();
String subCompanyId = kqOrgData.getSubCompanyId();
// 只做更新,不新增
syncResourceData(rs, resourceData, subCompanyId, departmentId);
}
rs.writeLog("考勤组织信息同步任务结束");
} catch (Exception e) {
rs.writeLog("组织同步计划任务异常", e);
}
}
private void dealDepartmentData(RecordSet rs, KqOrgData departmentData, Map<String, List<KqOrgData>> parentMap, String subCompanyId, String supDepId) {
// 同步部门数据
syncDepartmentData(rs, departmentData, subCompanyId, supDepId);
List<KqOrgData> departmentList = parentMap.get(departmentData.getDptprcno());
if (CollectionUtils.isNotEmpty(departmentList)) {
for (KqOrgData child : departmentList) {
dealDepartmentData(rs, child, parentMap, subCompanyId, departmentData.getOaId());
}
}
}
private void syncResourceData(RecordSet rs, KqResourceData resourceData, String subCompanyId, String departmentId) throws Exception {
rs.executeQuery("select id from " + RESOURCE_TABLE + " where workcode = ? ", resourceData.getEmpno());
String id = "";
if (rs.next()) {
id = rs.getString("id");
}
if (StringUtils.isBlank(id)) {
// 新增人员
IgnoreCaseHashMap<String, Object> dataMap = new IgnoreCaseHashMap<>();
dataMap.put("workcode", resourceData.getEmpno());
dataMap.put("loginid", resourceData.getEmpno());
dataMap.put("subcompanyid1", subCompanyId);
dataMap.put("departmentid", departmentId);
dataMap.put("lastname", resourceData.getEmpname());
dataMap.put("sex", resourceData.getEmpsexid());
dataMap.put("status", resourceData.getEmpstatusid());
dataMap.put("birthday", resourceData.getEmpbirthday());
dataMap.put("certificatenum", resourceData.getEmpidno());
dataMap.put("companystartdate", resourceData.getEmpgrpdate());
dataMap.put("probationenddate", resourceData.getEmpnormaldate());
dataMap.put("mobile", resourceData.getEmpmobile());
dataMap.put("residentplace", resourceData.getEmplocaladdr());
dataMap.put("regresidentplace", resourceData.getEmphomeaddr());
Map<String, Object> returnMap = ResourceSyncUtil.addResource(new User(1), dataMap);
if ("1".equals(returnMap.get("status"))) {
String resourceId = Util.null2String(returnMap.get("id"));
if (StringUtils.isNotBlank(resourceId)) {
id = resourceId;
}
} else {
String errorMsg = returnMap.get("message").toString();
rs.writeLog("当前人员新增失败," + errorMsg);
rs.writeLog("resourceData==" + JSON.toJSONString(resourceData));
return;
}
} else {
IgnoreCaseHashMap<String, Object> dataMap = new IgnoreCaseHashMap<>();
dataMap.put("id", id);
//dataMap.put("workcode",resourceData.getEmpno());
dataMap.put("subcompanyid1", subCompanyId);
dataMap.put("departmentid", departmentId);
dataMap.put("lastname", resourceData.getEmpname());
dataMap.put("sex", resourceData.getEmpsexid());
dataMap.put("status", resourceData.getEmpstatusid());
dataMap.put("birthday", resourceData.getEmpbirthday());
dataMap.put("certificatenum", resourceData.getEmpidno());
dataMap.put("companystartdate", resourceData.getEmpgrpdate());
dataMap.put("probationenddate", resourceData.getEmpnormaldate());
dataMap.put("mobile", resourceData.getEmpmobile());
dataMap.put("residentplace", resourceData.getEmplocaladdr());
dataMap.put("regresidentplace", resourceData.getEmphomeaddr());
updateDataById(dataMap, RESOURCE_TABLE);
}
String sql = "select gzdno,gzdname,jobno,jobname ,gzjno,gzjname from vrs_emp where empno = '" + resourceData.getEmpno() + "' ";
rs.executeSqlWithDataSource(sql, "KAOQIN");
if (rs.next()) {
// 岗位名称
String gzdname = rs.getString("gzdname");
// 职务名称
String jobname = rs.getString("jobname");
// 职级名称
String gzjname = rs.getString("gzjname");
String jobTitleIdByName = getJobTitleIdByName(rs, gzdname);
String levelValueByName = getLevelValueByName(rs, gzjname);
rs.writeLog("id==" + id + ",empno==" + resourceData.getEmpno() + ",gzdname==" + gzdname + ",jobTitleIdByName==" + jobTitleIdByName + ",jobname==" + jobname + ",gzjname==" + gzjname + ",levelValueByName==" + levelValueByName);
// 更新岗位、职位
rs.executeUpdate("update hrmresource set jobtitle = ? where id = ?", jobTitleIdByName, id);
// 更新职级名称
rs.executeUpdate("update cus_fielddata set field17 = ? where `SCOPE` ='HrmCustomFieldByInfoType' and SCOPEID = -1 and id = ?", levelValueByName, id);
}
// 更新离职日期
rs.executeUpdate("update cus_fielddata set field16 = ? where `SCOPE` ='HrmCustomFieldByInfoType' and SCOPEID =3 and id = ?", resourceData.getEmpleavedate(), id);
new ResourceComInfo().updateCache(id);
}
/**
*
*
* @param rs
* @param levelName
* @return
*/
private String getLevelValueByName(RecordSet rs, String levelName) {
rs.executeQuery("select selectvalue from cus_selectitem where fieldid =17 and selectname =?", levelName);
if (rs.next()) {
return rs.getString("selectvalue");
}
return null;
}
/**
* ID
*
* @param rs
* @param jobTitleName
* @return
*/
private String getJobTitleIdByName(RecordSet rs, String jobTitleName) {
rs.executeQuery("select id from hrmjobtitles where jobtitlename = ?", jobTitleName);
if (rs.next()) {
return rs.getString("id");
}
return null;
}
private String getJobActivitiesIdByName(RecordSet rs, String jobActivityName) {
rs.executeQuery("select id from hrmjobactivities where jobactivityname = ?", jobActivityName);
if (rs.next()) {
return rs.getString("id");
}
return null;
}
/**
*
*
* @param rs
* @param departmentData
* @param subCompanyId
* @param supDepId
*/
private void syncDepartmentData(RecordSet rs, KqOrgData departmentData, String subCompanyId, String supDepId) {
IgnoreCaseHashMap<String, Object> dataMap = new IgnoreCaseHashMap<>();
dataMap.put("departmentmark", departmentData.getDptname());
dataMap.put("departmentname", departmentData.getDptname());
dataMap.put("departmentcode", departmentData.getDptno());
dataMap.put("subcompanyid1", subCompanyId);
dataMap.put("supdepid", supDepId);
dataMap.put("canceled", departmentData.getIsdelete());
// 判断有无当前分部数据
rs.executeQuery("select id from " + DEPARTMENT_TABLE + " where departmentcode = ? ", departmentData.getDptno());
if (rs.next()) {
// 更新
dataMap.put("id", rs.getString("id"));
updateDataById(dataMap, DEPARTMENT_TABLE);
} else {
// 新增
insertData(dataMap, DEPARTMENT_TABLE);
}
rs.executeQuery("select id from " + DEPARTMENT_TABLE + " where departmentcode = ? ", departmentData.getDptno());
if (rs.next()) {
// 赋值OA中的ID
departmentData.setOaId(rs.getString("id"));
departmentData.setSubCompanyId(subCompanyId);
sysIdMap.put(departmentData.getDptsysid(), departmentData);
DepartmentComInfo dci = new DepartmentComInfo();
dci.removeCompanyCache();
dci.addCache(departmentData.getOaId());
HrmServiceManager hrmServiceManager = new HrmServiceManager();
hrmServiceManager.SynInstantDepartment(departmentData.getOaId(), "2");
MatrixUtil.updateDepartmentData(departmentData.getOaId());
} else {
throw new CustomizeRunTimeException("当前部门同步失败," + JSON.toJSONString(departmentData));
}
}
/**
*
*
* @param rs
* @param subCompany
* @param companyId
*/
private void syncSubCompany(RecordSet rs, KqOrgData subCompany, String companyId) {
IgnoreCaseHashMap<String, Object> dataMap = new IgnoreCaseHashMap<>();
dataMap.put("subcompanyname", subCompany.getDptname());
dataMap.put("subcompanydesc", subCompany.getDptname());
dataMap.put("subcompanycode", subCompany.getDptno());
dataMap.put("companyid", companyId);
dataMap.put("supsubcomid", "0");
dataMap.put("canceled", subCompany.getIsdelete());
// 判断有无当前分部数据
rs.executeQuery("select id from " + SUB_COMPANY_TABLE + " where subcompanycode = ? ", subCompany.getDptno());
if (rs.next()) {
// 更新
dataMap.put("id", rs.getString("id"));
updateDataById(dataMap, SUB_COMPANY_TABLE);
} else {
// 新增
insertData(dataMap, SUB_COMPANY_TABLE);
}
rs.executeQuery("select id from " + SUB_COMPANY_TABLE + " where subcompanycode = ? ", subCompany.getDptno());
if (rs.next()) {
// 赋值OA中的ID
subCompany.setOaId(rs.getString("id"));
sysIdMap.put(subCompany.getDptsysid(), subCompany);
// 刷新缓存
SubCompanyComInfo sci = new SubCompanyComInfo();
sci.removeCompanyCache();
sci.addCache(subCompany.getOaId());
MatrixUtil.updateSubcompayData(subCompany.getOaId());
new weaver.hrm.appdetach.AppDetachComInfo().initSubDepAppData();
} else {
throw new CustomizeRunTimeException("当前分部同步失败," + JSON.toJSONString(subCompany));
}
}
/**
* OAID
*
* @param rs
* @return
*/
private String getCompanyId(RecordSet rs) {
rs.executeQuery("select id from " + COMPANY_TABLE);
if (rs.next()) {
return rs.getString("id");
}
return "";
}
/**
*
*
* @param dataMap
* @param tableName
*/
public static void insertData(Map<String, Object> dataMap, String tableName) {
List<String> fieldList = new ArrayList<>();
List<String> dataList = new ArrayList<>();
List<String> paramList = new ArrayList<>();
dataMap.forEach((key, value) -> {
if (null != value) {
String valueStr = String.valueOf(value);
if (StringUtils.isNotBlank(valueStr)) {
fieldList.add(key);
dataList.add(valueStr);
paramList.add("?");
}
}
});
String insertSql = " insert into " + tableName + "(" + StringUtils.join(fieldList, ",") + ") values (" + StringUtils.join(paramList, ",") + ")";
RecordSet rs = new RecordSet();
rs.executeUpdate(insertSql, dataList);
if (StringUtils.isNotBlank(rs.getExceptionMsg())) {
throw new CustomizeRunTimeException(rs.getExceptionMsg());
}
}
/**
* ID
*
* @param dataMap
* @param tableName
*/
public static void updateDataById(Map<String, Object> dataMap, String tableName) {
List<String> fieldList = new ArrayList<>();
List<Object> dataList = new ArrayList<>();
String id = Util.null2String(dataMap.get("id"));
dataMap.remove("id");
dataMap.forEach((key, value) -> {
fieldList.add(key + " = ? ");
dataList.add(value);
});
dataList.add(id);
String updateSql = "update " + tableName + " set " + StringUtils.join(fieldList, ",") + " where id = ? ";
RecordSet rs = new RecordSet();
rs.executeUpdate(updateSql, dataList);
if (StringUtils.isNotBlank(rs.getExceptionMsg())) {
throw new CustomizeRunTimeException(rs.getExceptionMsg());
}
}
/**
* ID
*
* @param dataMap
*/
public static void updateDataByWorkCode(Map<String, Object> dataMap) {
List<String> fieldList = new ArrayList<>();
List<Object> dataList = new ArrayList<>();
String workCode = Util.null2String(dataMap.get("workcode"));
dataMap.remove("workcode");
dataMap.forEach((key, value) -> {
fieldList.add(key + " = ? ");
dataList.add(value);
});
dataList.add(workCode);
String updateSql = "update hrmresource set " + StringUtils.join(fieldList, ",") + " where workcode = ? ";
RecordSet rs = new RecordSet();
rs.executeUpdate(updateSql, dataList);
if (StringUtils.isNotBlank(rs.getExceptionMsg())) {
throw new CustomizeRunTimeException(rs.getExceptionMsg());
}
}
public String getSyncType() {
return syncType;
}
public void setSyncType(String syncType) {
this.syncType = syncType;
}
}

@ -0,0 +1,154 @@
package weaver.interfaces.kr.workflow.action;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.engine.kr.entity.kq.KqActionBO;
import com.engine.kr.entity.kq.KqGlobal;
import com.engine.kr.enums.KqInteractiveEnum;
import com.engine.kr.service.impl.KqInteractiveServiceImpl;
import weaver.general.BaseBean;
import weaver.interfaces.workflow.action.Action;
import weaver.soa.workflow.request.*;
import java.util.HashMap;
import java.util.Map;
/**
* @author:dxfeng
* @createTime: 2023/05/23
* @version: 1.0
*/
public class KrBatchOvertimeCreateAction implements Action {
@Override
public String execute(RequestInfo requestInfo) {
String billNo = "";
MainTableInfo mainTableInfo = requestInfo.getMainTableInfo();
Property[] properties = mainTableInfo.getProperty();
for (Property property : properties) {
String name = property.getName();
String value = property.getValue();
switch (name) {
case "lcbh":
billNo = value;
break;
default:
break;
}
}
String token = new KqInteractiveServiceImpl().getToken();
String cfmBy = KqActionBO.getUserName(requestInfo.getLastoperator());
Map<String, String> operateDateTime = KqActionBO.getOperateDateTime(requestInfo.getRequestid());
DetailTableInfo detailTableInfo = requestInfo.getDetailTableInfo();
DetailTable detailTable = detailTableInfo.getDetailTable()[0];
Row[] rows = detailTable.getRow();
boolean isRun = true;
int index = 1;
for (Row row : rows) {
if (!isRun) {
break;
}
String personId = "";
String otType = "";
String otAdjuest = "";
String beginDate = "";
String beginTime = "";
String endDate = "";
String endTime = "";
String billHours = "";
String otReason = "";
Cell[] cells = row.getCell();
for (Cell cell : cells) {
String name = cell.getName();
String value = cell.getValue();
switch (name) {
case "xm":
personId = KqActionBO.getWorkCode(value);
break;
case "jblx":
otType = KqActionBO.getWorkTypeCode(value);
break;
case "bcfs":
otAdjuest = value;
break;
case "ksrq":
beginDate = value;
break;
case "kssj":
beginTime = value;
break;
case "jsrq":
endDate = value;
break;
case "jssj":
endTime = value;
break;
case "jbsc":
billHours = value;
break;
case "jbsy":
otReason = value;
break;
default:
break;
}
}
// 每一行发起一次请求
Map<String, Object> params = new HashMap<>();
params.put("token", token);
params.put("personId", personId);
params.put("billNo", billNo + "-" + index);
params.put("otType", otType);
params.put("otAdjuest", otAdjuest);
params.put("beginDate", beginDate);
params.put("beginTime", beginTime);
params.put("endDate", endDate);
params.put("endTime", endTime);
params.put("billHours", billHours);
params.put("runsNo", null);
params.put("otReason", otReason);
params.put("addBy", requestInfo.getCreatorid());
params.put("addDay", operateDateTime.get("addDay"));
params.put("cfmBy", cfmBy);
params.put("cfmDay", operateDateTime.get("cfmDay"));
// 1新增、2变动、3取消
params.put("billStat", 1);
new BaseBean().writeLog("########批量加班流程,requestid={" + requestInfo.getRequestid() + "],传参:"+ JSON.toJSONString(params));
String returnStr = HttpUtil.post(KqGlobal.POST_URL + KqInteractiveEnum.OVERTIME_CREATE.getPostPath(), params);
new BaseBean().writeLog("########批量加班流程,requestid={" + requestInfo.getRequestid() + "],接口响应数据:"+ returnStr);
JSONObject jsonObject = JSONObject.parseObject(returnStr);
String code = jsonObject.getString("code");
if (!KqGlobal.SUC_CODE.equals(code)) {
//判断接口返回id 14 新增时单据重复 修改billStat=2 再推一次数据
if(KqGlobal.REPEAT_CODE.equals(code)){
params.put("billStat", 2);
new BaseBean().writeLog("########更新批量加班流程,requestid={" + requestInfo.getRequestid() + "],传参:"+ JSON.toJSONString(params));
String reResStr = HttpUtil.post(KqGlobal.POST_URL + KqInteractiveEnum.OVERTIME_CREATE.getPostPath(), params);
new BaseBean().writeLog("########更新批量加班流程,requestid={" + requestInfo.getRequestid() + "],接口响应数据:"+ returnStr);
JSONObject reObject = JSONObject.parseObject(reResStr);
String reCode = reObject.getString("code");
if (!KqGlobal.SUC_CODE.equals(reCode)) {
requestInfo.getRequestManager().setMessagecontent(reObject.getString("msg"));
isRun = false;
}
}else{
requestInfo.getRequestManager().setMessagecontent(jsonObject.getString("msg"));
isRun = false;
}
}
index++;
}
if (isRun) {
return SUCCESS;
}
return FAILURE_AND_CONTINUE;
}
}

@ -0,0 +1,110 @@
package weaver.interfaces.kr.workflow.action;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.engine.kr.entity.kq.KqActionBO;
import com.engine.kr.entity.kq.KqGlobal;
import com.engine.kr.enums.KqInteractiveEnum;
import com.engine.kr.service.impl.KqInteractiveServiceImpl;
import weaver.general.BaseBean;
import weaver.interfaces.workflow.action.Action;
import weaver.soa.workflow.request.MainTableInfo;
import weaver.soa.workflow.request.Property;
import weaver.soa.workflow.request.RequestInfo;
import java.util.HashMap;
import java.util.Map;
/**
* --Action
*
* @author wangj
* @version 1.00
* @Date 2023/6/5
*/
public class KrCCLeaveCreateAction implements Action {
@Override
public String execute(RequestInfo requestInfo) {
MainTableInfo mainTableInfo = requestInfo.getMainTableInfo();
String personId = "";
String startDate = "";
String startTime = "";
String endDate = "";
String endTime = "";
String leaveDuration = "";
String leaveReason = "";
String billNo = "";
Property[] properties = mainTableInfo.getProperty();
for (Property property : properties) {
String name = property.getName();
String value = property.getValue();
switch (name) {
case "resourceId":
personId = value;
break;
case "lcbh":
billNo = value;
break;
case "ksrq":
startDate = value;
break;
case "kssj":
startTime = value;
break;
case "jsrq":
endDate = value;
break;
case "jssj":
endTime = value;
break;
case "ccsc":
leaveDuration = value;
break;
case "ccsy":
leaveReason = value;
break;
default:
break;
}
}
Map<String, String> operateDateTime = KqActionBO.getOperateDateTime(requestInfo.getRequestid());
Map<String, Object> params = new HashMap<>();
params.put("token", new KqInteractiveServiceImpl().getToken());
params.put("personId", KqActionBO.getWorkCode(personId));
params.put("billNo", billNo);
params.put("dayoffType", KqActionBO.getLeaveTypeCode("13"));
params.put("beginDate", startDate);
params.put("beginTime", startTime);
params.put("endDate", endDate);
params.put("endTime", endTime);
params.put("billHours", leaveDuration);
params.put("runsNo", null);
params.put("inout", null);
params.put("incHoli", null);
params.put("dayoffReason", leaveReason);
params.put("addBy", requestInfo.getCreatorid());
params.put("addDay", operateDateTime.get("addDay"));
params.put("cfmBy", KqActionBO.getUserName(requestInfo.getLastoperator()));
params.put("cfmDay", operateDateTime.get("addDay"));
// 1新增、2变动、3取消
params.put("billStat", 1);
new BaseBean().writeLog("########出差流程,requestid={" + requestInfo.getRequestid() + "],传参:"+ JSON.toJSONString(params));
String returnStr = HttpUtil.post(KqGlobal.POST_URL + KqInteractiveEnum.LEAVE_CREATE.getPostPath(), params);
new BaseBean().writeLog("########出差流程,requestid={" + requestInfo.getRequestid() + "],接口响应数据:"+ returnStr);
JSONObject jsonObject = JSONObject.parseObject(returnStr);
String code = jsonObject.getString("code");
if (KqGlobal.SUC_CODE.equals(code)) {
return SUCCESS;
}
requestInfo.getRequestManager().setMessagecontent(jsonObject.getString("msg"));
return FAILURE_AND_CONTINUE;
}
}

@ -0,0 +1,109 @@
package weaver.interfaces.kr.workflow.action;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.engine.kr.entity.kq.KqActionBO;
import com.engine.kr.entity.kq.KqGlobal;
import com.engine.kr.enums.KqInteractiveEnum;
import com.engine.kr.service.impl.KqInteractiveServiceImpl;
import weaver.general.BaseBean;
import weaver.interfaces.workflow.action.Action;
import weaver.soa.workflow.request.MainTableInfo;
import weaver.soa.workflow.request.Property;
import weaver.soa.workflow.request.RequestInfo;
import java.util.HashMap;
import java.util.Map;
/**
* --Action
*
* @author wangj
* @version 1.00
* @Date 2023/6/5
*/
public class KrGCLeaveCreateAction implements Action {
@Override
public String execute(RequestInfo requestInfo) {
MainTableInfo mainTableInfo = requestInfo.getMainTableInfo();
String personId = "";
String startDate = "";
String startTime = "";
String endDate = "";
String endTime = "";
String leaveDuration = "";
String leaveReason = "";
String billNo = "";
Property[] properties = mainTableInfo.getProperty();
for (Property property : properties) {
String name = property.getName();
String value = property.getValue();
switch (name) {
case "resourceId":
personId = value;
break;
case "lcbh":
billNo = value;
break;
case "fromDate":
startDate = value;
break;
case "fromTime":
startTime = value;
break;
case "toDate":
endDate = value;
break;
case "toTime":
endTime = value;
break;
case "duration":
leaveDuration = value;
break;
case "gcsy":
leaveReason = value;
break;
default:
break;
}
}
Map<String, String> operateDateTime = KqActionBO.getOperateDateTime(requestInfo.getRequestid());
Map<String, Object> params = new HashMap<>();
params.put("token", new KqInteractiveServiceImpl().getToken());
params.put("personId", KqActionBO.getWorkCode(personId));
params.put("billNo", billNo);
params.put("dayoffType", KqActionBO.getLeaveTypeCode("14"));
params.put("beginDate", startDate);
params.put("beginTime", startTime);
params.put("endDate", endDate);
params.put("endTime", endTime);
params.put("billHours", leaveDuration);
params.put("runsNo", null);
params.put("inout", null);
params.put("incHoli", null);
params.put("dayoffReason", leaveReason);
params.put("addBy", requestInfo.getCreatorid());
params.put("addDay", operateDateTime.get("addDay"));
params.put("cfmBy", KqActionBO.getUserName(requestInfo.getLastoperator()));
params.put("cfmDay", operateDateTime.get("addDay"));
// 1新增、2变动、3取消
params.put("billStat", 1);
new BaseBean().writeLog("########公出流程,requestid={" + requestInfo.getRequestid() + "],传参:"+ JSON.toJSONString(params));
String returnStr = HttpUtil.post(KqGlobal.POST_URL + KqInteractiveEnum.LEAVE_CREATE.getPostPath(), params);
new BaseBean().writeLog("########公出流程,requestid={" + requestInfo.getRequestid() + "],接口响应数据:"+ returnStr);
JSONObject jsonObject = JSONObject.parseObject(returnStr);
String code = jsonObject.getString("code");
if (KqGlobal.SUC_CODE.equals(code)) {
return SUCCESS;
}
requestInfo.getRequestManager().setMessagecontent(jsonObject.getString("msg"));
return FAILURE_AND_CONTINUE;
}
}

@ -0,0 +1,124 @@
package weaver.interfaces.kr.workflow.action;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.engine.kr.entity.kq.KqActionBO;
import com.engine.kr.entity.kq.KqGlobal;
import com.engine.kr.enums.KqInteractiveEnum;
import com.engine.kr.service.impl.KqInteractiveServiceImpl;
import weaver.general.BaseBean;
import weaver.general.Util;
import weaver.interfaces.workflow.action.Action;
import weaver.soa.workflow.request.MainTableInfo;
import weaver.soa.workflow.request.Property;
import weaver.soa.workflow.request.RequestInfo;
import java.util.HashMap;
import java.util.Map;
/**
* @author:dxfeng
* @createTime: 2023/05/22
* @version: 1.0
*/
public class KrLeaveCreateAction implements Action {
@Override
public String execute(RequestInfo requestInfo) {
//判断操作类型 只有submit情况下执行下面推送考勤系统 请假信息
String src = Util.null2String(requestInfo.getRequestManager().getSrc());
String nodeid = Util.null2String(requestInfo.getRequestManager().getNodeid());
String requestid = Util.null2String(requestInfo.getRequestid());
//控制仅提交时触发
if(!"submit".equals(src)) {
return null;
}
new BaseBean().writeLog("--KrLeaveCreateAction-requestid-:"+requestid+", nodeid-:"+nodeid);
MainTableInfo mainTableInfo = requestInfo.getMainTableInfo();
String resourceId = "";
String leaveType = "";
String startDate = "";
String startTime = "";
String endDate = "";
String endTime = "";
String leaveDuration = "";
String leaveReason = "";
String billNo = "";
Property[] properties = mainTableInfo.getProperty();
for (Property property : properties) {
String name = property.getName();
String value = property.getValue();
switch (name) {
case "resourceId":
resourceId = value;
break;
case "jqlx":
leaveType = value;
break;
case "ksrq":
startDate = value;
break;
case "kssj":
startTime = value;
break;
case "jsrq":
endDate = value;
break;
case "jssj":
endTime = value;
break;
case "qjsc":
leaveDuration = value;
break;
case "qjsy":
leaveReason = value;
break;
case "lcbh":
billNo = value;
break;
default:
break;
}
}
Map<String, String> operateDateTime = KqActionBO.getOperateDateTime(requestInfo.getRequestid());
Map<String, Object> params = new HashMap<>();
params.put("token", new KqInteractiveServiceImpl().getToken());
params.put("personId", KqActionBO.getWorkCode(resourceId));
params.put("billNo", billNo);
params.put("dayoffType", KqActionBO.getLeaveTypeCode(leaveType));
params.put("beginDate", startDate);
params.put("beginTime", startTime);
params.put("endDate", endDate);
params.put("endTime", endTime);
params.put("billHours", leaveDuration);
params.put("runsNo", null);
params.put("inout", null);
params.put("incHoli", null);
params.put("dayoffReason", leaveReason);
params.put("addBy", requestInfo.getCreatorid());
params.put("addDay", operateDateTime.get("addDay"));
params.put("cfmBy", KqActionBO.getUserName(requestInfo.getLastoperator()));
params.put("cfmDay", operateDateTime.get("addDay"));
// 1新增、2变动、3取消
params.put("billStat", 1);
new BaseBean().writeLog("########请假流程,requestid={" + requestInfo.getRequestid() + "],传参:"+ JSON.toJSONString(params));
String returnStr = HttpUtil.post(KqGlobal.POST_URL + KqInteractiveEnum.LEAVE_CREATE.getPostPath(), params);
new BaseBean().writeLog("########请假流程,requestid={" + requestInfo.getRequestid() + "],接口响应数据:"+ returnStr);
JSONObject jsonObject = JSONObject.parseObject(returnStr);
String code = jsonObject.getString("code");
if (KqGlobal.SUC_CODE.equals(code) || KqGlobal.IGNORE_CODE.equals(code)) {
return SUCCESS;
}
requestInfo.getRequestManager().setMessagecontent(jsonObject.getString("msg"));
return FAILURE_AND_CONTINUE;
}
}

@ -0,0 +1,49 @@
package weaver.interfaces.kr.workflow.action;
import weaver.conn.RecordSet;
import weaver.interfaces.workflow.action.Action;
import weaver.soa.workflow.request.MainTableInfo;
import weaver.soa.workflow.request.Property;
import weaver.soa.workflow.request.RequestInfo;
/**
* @author:dxfeng
* @createTime: 2023/05/24
* @version: 1.0
*/
public class KrLeaveRepeatAction implements Action {
@Override
public String execute(RequestInfo requestInfo) {
MainTableInfo mainTableInfo = requestInfo.getMainTableInfo();
String resourceId = "";
String leaveType = "";
Property[] properties = mainTableInfo.getProperty();
for (Property property : properties) {
String name = property.getName();
String value = property.getValue();
switch (name) {
case "resourceId":
resourceId = value;
break;
case "jqlx":
leaveType = value;
break;
default:
break;
}
}
String billTableName = requestInfo.getRequestManager().getBillTableName();
RecordSet rs = new RecordSet();
rs.executeQuery("select count(1) as num from " + billTableName + " a LEFT JOIN workflow_requestbase w ON a.requestid = w.requestid where a.resourceId = ? and a.jqlx =? and a.requestid != ? and w.currentnodetype IN ( 1, 2 )", resourceId, leaveType, requestInfo.getRequestid());
if (rs.next()) {
int num = rs.getInt("num");
if (num > 0) {
requestInfo.getRequestManager().setMessagecontent("当前人员存在未审批完成的请假审核流程,请勿重复提交");
return FAILURE_AND_CONTINUE;
}
}
return SUCCESS;
}
}

@ -0,0 +1,124 @@
package weaver.interfaces.kr.workflow.action;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.engine.kr.entity.kq.KqActionBO;
import com.engine.kr.entity.kq.KqGlobal;
import com.engine.kr.enums.KqInteractiveEnum;
import com.engine.kr.service.impl.KqInteractiveServiceImpl;
import weaver.general.BaseBean;
import weaver.interfaces.workflow.action.Action;
import weaver.soa.workflow.request.*;
import java.util.HashMap;
import java.util.Map;
/**
* --Action
*
* @author wangj
* @version 1.00
* @Date 2023/6/5
*/
public class KrSignCreateAction implements Action {
@Override
public String execute(RequestInfo requestInfo) {
//单据编号
String billNo = "";
//申请人id
String personId = "";
//主表数据
MainTableInfo mainTableInfo = requestInfo.getMainTableInfo();
Property[] properties = mainTableInfo.getProperty();
for (Property property : properties) {
String name = property.getName();
String value = property.getValue();
switch (name) {
case "resourceId":
personId = KqActionBO.getWorkCode(value);
break;
case "lcbh":
billNo = value;
break;
default:
break;
}
}
String token = new KqInteractiveServiceImpl().getToken();
String cfmBy = KqActionBO.getUserName(requestInfo.getLastoperator());
Map<String, String> operateDateTime = KqActionBO.getOperateDateTime(requestInfo.getRequestid());
DetailTableInfo detailTableInfo = requestInfo.getDetailTableInfo();
DetailTable detailTable = detailTableInfo.getDetailTable()[0];
Row[] rows = detailTable.getRow();
boolean isRun = true;
int index = 1;
for (Row row : rows) {
if (!isRun) {
break;
}
String signDate = "";
String signTime1 = "";
String signReason = "";
Cell[] cells = row.getCell();
for (Cell cell : cells) {
String name = cell.getName();
String value = cell.getValue();
switch (name) {
case "detail_signdate":
signDate = value;
break;
case "detail_signtime":
signTime1 = value;
break;
case "bksm":
signReason = value;
break;
default:
break;
}
}
// 每一行发起一次请求
Map<String, Object> params = new HashMap<>();
params.put("token", token);
params.put("personId", personId);
params.put("billNo", billNo + "-" + index);
params.put("signDate", signDate);
params.put("signTime1", signTime1);
params.put("signTime2", null);
params.put("signTime3", null);
params.put("signTime4", null);
params.put("signTime5", null);
params.put("signTime6", null);
params.put("signReason", signReason);
params.put("addBy", requestInfo.getCreatorid());
params.put("addDay", operateDateTime.get("addDay"));
params.put("cfmBy", cfmBy);
params.put("cfmDay", operateDateTime.get("cfmDay"));
// 1新增、2变动、3取消
params.put("billStat", 1);
new BaseBean().writeLog("########批量补卡申请流程,requestid={" + requestInfo.getRequestid() + "],传参:" + JSON.toJSONString(params));
String returnStr = HttpUtil.post(KqGlobal.POST_URL + KqInteractiveEnum.SIGN_CREATE.getPostPath(), params);
new BaseBean().writeLog("########批量补卡申请流程,requestid={" + requestInfo.getRequestid() + "],接口响应数据:" + returnStr);
JSONObject jsonObject = JSONObject.parseObject(returnStr);
String code = jsonObject.getString("code");
if (!KqGlobal.SUC_CODE.equals(code)) {
requestInfo.getRequestManager().setMessagecontent(jsonObject.getString("msg"));
isRun = false;
}
index++;
}
if (isRun) {
return SUCCESS;
}
return FAILURE_AND_CONTINUE;
}
}

@ -0,0 +1,111 @@
package weaver.interfaces.kr.workflow.action;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.engine.kr.entity.kq.KqActionBO;
import com.engine.kr.entity.kq.KqGlobal;
import com.engine.kr.enums.KqInteractiveEnum;
import com.engine.kr.service.impl.KqInteractiveServiceImpl;
import weaver.general.BaseBean;
import weaver.interfaces.workflow.action.Action;
import weaver.soa.workflow.request.MainTableInfo;
import weaver.soa.workflow.request.Property;
import weaver.soa.workflow.request.RequestInfo;
import java.util.HashMap;
import java.util.Map;
/**
* @author:dxfeng
* @createTime: 2023/05/23
* @version: 1.0
*/
public class KrSingleOvertimeCreateAction implements Action {
@Override
public String execute(RequestInfo requestInfo) {
String resourceId = "";
String fromDate = "";
String fromTime = "";
String toDate = "";
String toTime = "";
// 补偿方式
String overtimeType = "";
String duration = "";
String billNo = "";
String workType = "";
String workReason = "";
MainTableInfo mainTableInfo = requestInfo.getMainTableInfo();
Property[] properties = mainTableInfo.getProperty();
for (Property property : properties) {
String name = property.getName();
String value = property.getValue();
switch (name) {
case "resourceId":
resourceId = value;
break;
case "fromDate":
fromDate = value;
break;
case "fromTime":
fromTime = value;
break;
case "toDate":
toDate = value;
break;
case "toTime":
toTime = value;
break;
case "overtime_type":
overtimeType = value;
break;
case "duration":
duration = value;
break;
case "lcbh":
billNo = value;
break;
case "jblx":
workType = value;
break;
case "jbsy":
workReason = value;
break;
default:
break;
}
}
Map<String, String> operateDateTime = KqActionBO.getOperateDateTime(requestInfo.getRequestid());
Map<String, Object> params = new HashMap<>();
params.put("token", new KqInteractiveServiceImpl().getToken());
params.put("personId", KqActionBO.getWorkCode(resourceId));
params.put("billNo", billNo);
params.put("otType", KqActionBO.getWorkTypeCode(workType));
params.put("otAdjuest", overtimeType);
params.put("beginDate", fromDate);
params.put("beginTime", fromTime);
params.put("endDate", toDate);
params.put("endTime", toTime);
params.put("billHours", duration);
params.put("runsNo", null);
params.put("otReason", workReason);
params.put("addBy", requestInfo.getCreatorid());
params.put("addDay", operateDateTime.get("addDay"));
params.put("cfmBy", KqActionBO.getUserName(requestInfo.getLastoperator()));
params.put("cfmDay", operateDateTime.get("addDay"));
params.put("billStat", 1);
new BaseBean().writeLog("########加班流程,requestid={" + requestInfo.getRequestid() + "],传参:"+ JSON.toJSONString(params));
String returnStr = HttpUtil.post(KqGlobal.POST_URL + KqInteractiveEnum.OVERTIME_CREATE.getPostPath(), params);
new BaseBean().writeLog("########加班流程,requestid={" + requestInfo.getRequestid() + "],接口响应数据:"+ returnStr);
JSONObject jsonObject = JSONObject.parseObject(returnStr);
String code = jsonObject.getString("code");
if (KqGlobal.SUC_CODE.equals(code)) {
return SUCCESS;
}
requestInfo.getRequestManager().setMessagecontent(jsonObject.getString("msg"));
return FAILURE_AND_CONTINUE;
}
}
Loading…
Cancel
Save