From f2c4df3e328bc7752a8a8caa93bf7c28cde60fdc Mon Sep 17 00:00:00 2001 From: dxfeng Date: Tue, 23 May 2023 15:09:53 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BA=8C=E5=BC=80--=E5=BA=B7=E7=91=9E=E8=80=83?= =?UTF-8?q?=E5=8B=A4=E9=9C=80=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/kr/entity/kq/KqActionBO.java | 105 ++++++++++++++ src/com/engine/kr/entity/kq/KqGlobal.java | 21 +++ .../impl/KqInteractiveServiceImpl.java | 28 ++-- .../action/KrBatchOvertimeCreateAction.java | 137 ++++++++++++++++++ .../workflow/action/KrLeaveCreateAction.java | 107 ++++++++++++++ .../action/KrSingleOvertimeCreateAction.java | 107 ++++++++++++++ 6 files changed, 486 insertions(+), 19 deletions(-) create mode 100644 src/com/engine/kr/entity/kq/KqActionBO.java create mode 100644 src/com/engine/kr/entity/kq/KqGlobal.java create mode 100644 src/com/weaver/interfaces/kr/workflow/action/KrBatchOvertimeCreateAction.java create mode 100644 src/com/weaver/interfaces/kr/workflow/action/KrLeaveCreateAction.java create mode 100644 src/com/weaver/interfaces/kr/workflow/action/KrSingleOvertimeCreateAction.java diff --git a/src/com/engine/kr/entity/kq/KqActionBO.java b/src/com/engine/kr/entity/kq/KqActionBO.java new file mode 100644 index 0000000..59641b8 --- /dev/null +++ b/src/com/engine/kr/entity/kq/KqActionBO.java @@ -0,0 +1,105 @@ +package com.engine.kr.entity.kq; + +import org.apache.commons.lang3.StringUtils; +import weaver.conn.RecordSet; + +/** + * 加班流程转换类 + * + * @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; + } +} diff --git a/src/com/engine/kr/entity/kq/KqGlobal.java b/src/com/engine/kr/entity/kq/KqGlobal.java new file mode 100644 index 0000000..8783bbf --- /dev/null +++ b/src/com/engine/kr/entity/kq/KqGlobal.java @@ -0,0 +1,21 @@ +package com.engine.kr.entity.kq; + +/** + * @author:dxfeng + * @createTime: 2023/05/22 + * @version: 1.0 + */ +public class KqGlobal { + /** + * 考勤系统请求地址 + */ + public static final String POST_URL = "http://192.168.11.160:8080"; + public static final String USER = "OAData"; + public static final String PASS = "a22f81793d2dfec1ccaca7d03a330324"; + + /** + * 响应成功code + */ + public static final String SUC_CODE = "1"; + +} diff --git a/src/com/engine/kr/service/impl/KqInteractiveServiceImpl.java b/src/com/engine/kr/service/impl/KqInteractiveServiceImpl.java index dc7aac7..d9813e9 100644 --- a/src/com/engine/kr/service/impl/KqInteractiveServiceImpl.java +++ b/src/com/engine/kr/service/impl/KqInteractiveServiceImpl.java @@ -3,6 +3,7 @@ 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; @@ -19,17 +20,6 @@ import java.util.Map; * @version: 1.0 */ public class KqInteractiveServiceImpl extends Service implements KqInteractiveService { - /** - * 考勤系统请求地址 - */ - private static final String POST_URL = "http://192.168.11.160:8080"; - private static final String USER = "OAData"; - private static final String PASS = "a22f81793d2dfec1ccaca7d03a330324"; - - /** - * 响应成功code - */ - private static final String SUC_CODE = "1"; @Override public Map getLeaveBal(Map params) { @@ -65,12 +55,12 @@ public class KqInteractiveServiceImpl extends Service implements KqInteractiveSe // 可不填 postParam.put("leaveDate", params.get("ksrq")); - String returnStr = HttpUtil.post(POST_URL + KqInteractiveEnum.LEAVE_BAL.getPostPath(), postParam); + Map 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"); - Map returnMap = new HashMap<>(); - if (SUC_CODE.equals(code)) { + if (KqGlobal.SUC_CODE.equals(code)) { returnMap.put("dayoffBalHours", jsonObject.getString("dayoffBalHours")); } else { throw new CustomizeRunTimeException("假期余额获取失败," + jsonObject.getString("msg")); @@ -83,14 +73,14 @@ public class KqInteractiveServiceImpl extends Service implements KqInteractiveSe * * @return */ - private String getToken() { + public String getToken() { Map params = new HashMap<>(2); - params.put("user", USER); - params.put("pass", PASS); - String returnStr = HttpUtil.post(POST_URL + KqInteractiveEnum.TOKEN.getPostPath(), params); + 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 (SUC_CODE.equals(code)) { + if (KqGlobal.SUC_CODE.equals(code)) { return jsonObject.getString("token"); } else { throw new CustomizeRunTimeException("token获取失败," + jsonObject.getString("msg")); diff --git a/src/com/weaver/interfaces/kr/workflow/action/KrBatchOvertimeCreateAction.java b/src/com/weaver/interfaces/kr/workflow/action/KrBatchOvertimeCreateAction.java new file mode 100644 index 0000000..59cb2ef --- /dev/null +++ b/src/com/weaver/interfaces/kr/workflow/action/KrBatchOvertimeCreateAction.java @@ -0,0 +1,137 @@ +package com.weaver.interfaces.kr.workflow.action; + +import cn.hutool.http.HttpUtil; +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.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 = ""; + String resourceId = ""; + + 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 = KqActionBO.getUserName(value); + break; + case "lcbh": + billNo = value; + break; + default: + break; + } + } + String token = new KqInteractiveServiceImpl().getToken(); + String addDay = requestInfo.getRequestManager().getCreatedate() + " " + requestInfo.getRequestManager().getCreatetime(); + String cfmBy = KqActionBO.getUserName(requestInfo.getLastoperator()); + String cfmDay = requestInfo.getRequestManager().getLastoperatedate() + " " + requestInfo.getRequestManager().getLastoperatetime(); + + + DetailTableInfo detailTableInfo = requestInfo.getDetailTableInfo(); + DetailTable detailTable = detailTableInfo.getDetailTable()[0]; + Row[] rows = detailTable.getRow(); + boolean isRun = true; + 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 params = new HashMap<>(); + params.put("token", token); + params.put("personId", personId); + params.put("billNo", billNo + "-" + row.getId()); + 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", resourceId); + params.put("addDay", addDay); + params.put("cfmBy", cfmBy); + params.put("cfmDay", cfmDay); + // 1新增、2变动、3取消 + params.put("billStat", 1); + + String returnStr = HttpUtil.post(KqGlobal.POST_URL + KqInteractiveEnum.OVERTIME_CREATE.getPostPath(), params); + JSONObject jsonObject = JSONObject.parseObject(returnStr); + String code = jsonObject.getString("code"); + if (!KqGlobal.SUC_CODE.equals(code)) { + requestInfo.getRequestManager().setMessagecontent(jsonObject.getString("msg")); + isRun = false; + } + } + + if (isRun) { + return SUCCESS; + } + return FAILURE_AND_CONTINUE; + } +} diff --git a/src/com/weaver/interfaces/kr/workflow/action/KrLeaveCreateAction.java b/src/com/weaver/interfaces/kr/workflow/action/KrLeaveCreateAction.java new file mode 100644 index 0000000..2fed831 --- /dev/null +++ b/src/com/weaver/interfaces/kr/workflow/action/KrLeaveCreateAction.java @@ -0,0 +1,107 @@ +package com.weaver.interfaces.kr.workflow.action; + +import cn.hutool.http.HttpUtil; +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.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) { + 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 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", KqActionBO.getUserName(requestInfo.getCreatorid())); + params.put("addDay", requestInfo.getRequestManager().getCreatedate() + " " + requestInfo.getRequestManager().getCreatetime()); + params.put("cfmBy", KqActionBO.getUserName(requestInfo.getLastoperator())); + params.put("cfmDay", requestInfo.getRequestManager().getLastoperatedate() + " " + requestInfo.getRequestManager().getLastoperatetime()); + // 1新增、2变动、3取消 + params.put("billStat", 1); + + String returnStr = HttpUtil.post(KqGlobal.POST_URL + KqInteractiveEnum.LEAVE_CREATE.getPostPath(), params); + JSONObject jsonObject = JSONObject.parseObject(returnStr); + String code = jsonObject.getString("code"); + if (KqGlobal.SUC_CODE.equals(code)) { + return SUCCESS; + } else { + requestInfo.getRequestManager().setMessagecontent(jsonObject.getString("msg")); + } + return FAILURE_AND_CONTINUE; + } + + +} diff --git a/src/com/weaver/interfaces/kr/workflow/action/KrSingleOvertimeCreateAction.java b/src/com/weaver/interfaces/kr/workflow/action/KrSingleOvertimeCreateAction.java new file mode 100644 index 0000000..1c2c533 --- /dev/null +++ b/src/com/weaver/interfaces/kr/workflow/action/KrSingleOvertimeCreateAction.java @@ -0,0 +1,107 @@ +package com.weaver.interfaces.kr.workflow.action; + +import cn.hutool.http.HttpUtil; +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.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 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", KqActionBO.getUserName(requestInfo.getCreatorid())); + params.put("addDay", requestInfo.getRequestManager().getCreatedate() + " " + requestInfo.getRequestManager().getCreatetime()); + params.put("cfmBy", KqActionBO.getUserName(requestInfo.getLastoperator())); + params.put("cfmDay", requestInfo.getRequestManager().getLastoperatedate() + " " + requestInfo.getRequestManager().getLastoperatetime()); + // 1新增、2变动、3取消 + params.put("billStat", 1); + + String returnStr = HttpUtil.post(KqGlobal.POST_URL + KqInteractiveEnum.OVERTIME_CREATE.getPostPath(), params); + JSONObject jsonObject = JSONObject.parseObject(returnStr); + String code = jsonObject.getString("code"); + if (KqGlobal.SUC_CODE.equals(code)) { + return SUCCESS; + } else { + requestInfo.getRequestManager().setMessagecontent(jsonObject.getString("msg")); + } + return FAILURE_AND_CONTINUE; + } +}