diff --git a/src/com/engine/jucailinkq/attendance/workflow/action/AllowanceConfirmAction.java b/src/com/engine/jucailinkq/attendance/workflow/action/AllowanceConfirmAction.java new file mode 100644 index 0000000..0e1188c --- /dev/null +++ b/src/com/engine/jucailinkq/attendance/workflow/action/AllowanceConfirmAction.java @@ -0,0 +1,93 @@ +package com.engine.jucailinkq.attendance.workflow.action; + +import com.engine.jucailinkq.common.util.DbTools; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import weaver.general.Util; +import weaver.interfaces.workflow.action.Action; +import weaver.soa.workflow.request.Cell; +import weaver.soa.workflow.request.DetailTable; +import weaver.soa.workflow.request.RequestInfo; +import weaver.soa.workflow.request.Row; + +import java.io.PrintWriter; +import java.io.StringWriter; +import java.util.*; + +/** + * @Author: sy + * @Description: 津贴确认流程,归档节点更新津贴状态 + * @Date: 2024/7/25 + **/ +@Slf4j +public class AllowanceConfirmAction implements Action { + + @Override + public String execute(RequestInfo requestInfo) { + log.debug("AllowanceConfirmAction,do action on request:" + requestInfo.getRequestid()); + String requestid = requestInfo.getRequestid(); + try { + +// Property[] property = requestInfo.getMainTableInfo().getProperty(); +// User user = requestInfo.getRequestManager().getUser(); +// for (Property pro : property) { +// String name = Util.null2String(pro.getName()); +// if(name.equals("cxsm")){ +// +// } +// } + + DetailTable[] detailTable = requestInfo.getDetailTableInfo().getDetailTable(); + log.debug("AllowanceConfirmAction detailTable : [{}], length : {}", Arrays.toString(detailTable), detailTable.length); + List> updateList = new ArrayList<>(); + if (detailTable.length > 0) { + for (DetailTable dt : detailTable) { + //明细表 + Row[] s = dt.getRow(); + for (Row r : s) { + //行 + Cell[] h = r.getCell(); + Map itemMap = new HashMap<>(); + for (Cell c : h) { + //列 + String name = Util.null2String(c.getName()); + log.debug("AllowanceConfirmAction key : {}, value : {}",c.getName(), c.getValue()); + if ("zt".equals(name)) { + itemMap.put("zt", Util.null2String(c.getValue())); + } + if ("jtid".equals(name)) { + itemMap.put("jtid", Util.null2String(c.getValue())); + } + if ("sm".equals(name)) { + itemMap.put("sm", Util.null2String(c.getValue())); + } + } + log.debug("AllowanceConfirmAction itemMap : [{}]",itemMap); + updateList.add(itemMap); + } + } + } + log.debug("AllowanceConfirmAction updateList : [{}]",updateList); + if (updateList.size() > 0) { + updateList.forEach(f -> { + if (StringUtils.isNotBlank(f.get("jtid"))) { + String sql = "update uf_jcl_kq_cqjt" +" set "+"zt=?,bz=? where id = ?"; + log.debug("AllowanceConfirmAction sql : [{}]",sql); + DbTools.update(sql, Util.null2String(f.get("zt")), Util.null2String(f.get("sm")), f.get("jtid")); + log.debug("AllowanceConfirmAction zt : {}, bz : {}, jtid : {}",Util.null2String(f.get("zt")), Util.null2String(f.get("sm")), f.get("jtid")); + } + }); + } + + } catch (Exception e) { + log.debug("流程数据报错:AllowanceConfirmAction:"); + StringWriter errorsWriter = new StringWriter(); + e.printStackTrace(new PrintWriter(errorsWriter)); + log.debug(errorsWriter.toString()); + requestInfo.getRequestManager().setMessageid("11111" + requestInfo.getRequestid() + "22222"); + requestInfo.getRequestManager().setMessagecontent("【津贴确认action】报错,请联系管理员!"); + return Action.FAILURE_AND_CONTINUE; + } + return SUCCESS; + } +} diff --git a/src/com/engine/jucailinkq/attendance/workflow/service/impl/AllowanceServiceImpl.java b/src/com/engine/jucailinkq/attendance/workflow/service/impl/AllowanceServiceImpl.java index 3c385cf..c358dc7 100644 --- a/src/com/engine/jucailinkq/attendance/workflow/service/impl/AllowanceServiceImpl.java +++ b/src/com/engine/jucailinkq/attendance/workflow/service/impl/AllowanceServiceImpl.java @@ -742,34 +742,60 @@ public class AllowanceServiceImpl extends Service implements AllowanceService { @Override public Map getAllowanceRecordList(Map params) { Map resultMap = new HashMap(); - //获取主表id列表 - String targetUserId = Util.null2String(params.get("xjr")); - String queryDateRange = Util.null2String(params.get("cxqj")); + resultMap.put("status", true); + // 流程表单主表数据 + Map mainTableData = (Map)params.get("mainTableData"); + String targetUserId = Util.null2String(mainTableData.get("xjr")); + String queryDateRange = Util.null2String(mainTableData.get("cxqj")); String startDate = ""; String endDate = ""; String targetMonth = ""; - if (queryDateRange.equals("0")) { + if ("0".equals(queryDateRange)) { //上月 targetMonth = DateUtil.beforeMonth(DateUtil.getCurrentDate()); - } else if (queryDateRange.equals("1")) { + } else if ("1".equals(queryDateRange)) { targetMonth = DateUtil.getCurrentMonth(); } startDate = targetMonth + "-01"; //结束日期只作为范围筛选,不用考虑是目标月份是否存在31号 endDate = targetMonth + "-31"; - log.info("targetUserId : {}, queryDateRange : {}, startDate : {}, endDate : {}", targetUserId, queryDateRange, startDate, endDate); - - String detailSql = "select rq, bc, jtlx, sc, zt , bz as sm from uf_jcl_kq_cqjt where yg = ? and rq >= ? and rq <= ? "; + String detailSql = "select a.id as jtid, a.rq, a.bc, a.jtlx, a.sc, a.zt , a.bz as sm, c.mc as jtlxName, d.mc as bcName, b.bcbdxx, b.cqzt, b.id as cqjg, " + + "b.j1, b.c1, b.j2, b.c2, b.j3, b.c3, b.j4, b.c4, b.j5, b.c5, b.j6, b.c6, b.j7, b.c7, b.j8, b.c8 from uf_jcl_kq_cqjt a " + + "left join uf_jcl_kq_cqjg b on a.yg = b.ygid and a.rq = b.rq " + + "left join uf_jcl_kq_kqxm c on a.jtlx = c.id " + + "left join uf_jcl_kq_bcxx d on a.bc = d.id " + + "where a.yg = ? and a.rq >= ? and a.rq <= ? "; List> detailList = DbTools.getSqlToList(detailSql,targetUserId,startDate,endDate); if (detailList.size() > 0) { + String in = ""; + String out = ""; + String yxdkxx; + for (Map item : detailList) { + yxdkxx = ""; + for (int i = 1; i <= 8; i++) { + in = Util.null2String(item.get("j" + i)); + out = Util.null2String(item.get("c" + i)); + yxdkxx = "".equals(in) && "".equals(out) ? yxdkxx : (yxdkxx + getHourMinuteInfo(in) + "-" + getHourMinuteInfo(out) + "|"); + } + item.put("yxdkxx", yxdkxx); + item.put("cqjgSign", "0".equals(Util.null2String(item.get("cqzt"))) ? "正常" : "异常"); + } resultMap.put("data", detailList); } else { resultMap.put("data", null); } log.info("detailList : [{}]", detailList); - return resultMap; } + //将2024-06-11 07:54:00格式数据,保留时分数据07:54 + private String getHourMinuteInfo(String timeInfo) { + if (!"".equals(timeInfo) && timeInfo.length() >= 16) { + return timeInfo.substring(11, 16); + } else { + return ""; + } + } + } diff --git a/src/com/engine/jucailinkq/attendance/workflow/web/AllowanceApi.java b/src/com/engine/jucailinkq/attendance/workflow/web/AllowanceApi.java index 75fc736..67a1aba 100644 --- a/src/com/engine/jucailinkq/attendance/workflow/web/AllowanceApi.java +++ b/src/com/engine/jucailinkq/attendance/workflow/web/AllowanceApi.java @@ -7,7 +7,9 @@ import com.engine.common.util.ParamUtil; import com.engine.common.util.ServiceUtil; import com.engine.jucailinkq.common.util.ApiReturnTools; import com.engine.jucailinkq.common.util.ResponseResult; +import com.google.gson.Gson; import lombok.extern.slf4j.Slf4j; +import weaver.general.Util; import weaver.hrm.HrmUserVarify; import weaver.hrm.User; @@ -19,6 +21,7 @@ import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; +import java.lang.reflect.Type; import java.util.HashMap; import java.util.Map; @@ -63,6 +66,10 @@ public class AllowanceApi { try { User user = HrmUserVarify.getUser(request, response); Map param = ParamUtil.request2Map(request); + String mainTableDataStr = Util.null2String(param.get("mainTableData")); + Gson gson = new Gson(); + Map mainTableData = gson.fromJson(mainTableDataStr, (Type) Map.class); + param.put("mainTableData",mainTableData); return new ResponseResult, Map>(user).run(getAllowanceService(user) :: getAllowanceRecordList,param); }catch (Exception e){ log.error("execute fail,catch error: [{}]",e);