diff --git a/src/com/engine/salary/action/WdlSalaryArchiveTriggerAction.java b/src/com/engine/salary/action/WdlSalaryArchiveTriggerAction.java new file mode 100644 index 000000000..8a6ed7563 --- /dev/null +++ b/src/com/engine/salary/action/WdlSalaryArchiveTriggerAction.java @@ -0,0 +1,106 @@ +package com.engine.salary.action; + +import com.engine.common.util.ServiceUtil; +import com.engine.salary.entity.salaryarchive.param.SalaryArchiveItemBatchSaveParam; +import com.engine.salary.entity.salaryarchive.param.SalaryArchiveItemSaveParam; +import com.engine.salary.entity.salaryarchive.po.WdlArchiveWorkflowPO; +import com.engine.salary.enums.salaryarchive.WdlArchiveWorkflowEnum; +import com.engine.salary.mapper.archive.WdlArchiveWorkflowMapper; +import com.engine.salary.util.JsonUtil; +import com.engine.salary.util.SalaryDateUtil; +import com.engine.salary.util.db.MapperProxyFactory; +import com.engine.salary.wrapper.SalaryArchiveItemWrapper; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.math.NumberUtils; +import weaver.general.BaseBean; +import weaver.hrm.User; +import weaver.interfaces.workflow.action.Action; +import weaver.soa.workflow.request.RequestInfo; + +import java.util.Date; +import java.util.List; + +/** + * @ClassName WdlSalaryArchiveTriggerAction + * @author Harryxzy + * @date 2025/7/9 15:53 + * @description 万德隆触发调薪定薪action + */ +@Slf4j +public class WdlSalaryArchiveTriggerAction implements Action { + + private WdlArchiveWorkflowMapper getWdlArchiveWorkflowMapper() { + return MapperProxyFactory.getProxy(WdlArchiveWorkflowMapper.class); + } + + private SalaryArchiveItemWrapper getSalaryArchiveItemWrapper(User user) { + return ServiceUtil.getService(SalaryArchiveItemWrapper.class, user); + } + + @Override + public String execute(RequestInfo requestInfo) { + try { + User user = requestInfo.getRequestManager().getUser(); + String requestid = requestInfo.getRequestid(); + WdlArchiveWorkflowPO po = getWdlArchiveWorkflowMapper().getByRequstId(requestid); + BaseBean baseBean = new BaseBean(); + if (po == null) { + baseBean.writeLog("万德隆调薪定薪触发action,未找到需要执行的任务 requestId:" + requestid); + return SUCCESS; + } + if (po.getExeType() != null && po.getExeType().equals(NumberUtils.INTEGER_ONE)) { + baseBean.writeLog("万德隆调薪定薪触发action,未找到待执行的任务 requestId:" + requestid + po.getId()); + return SUCCESS; + } + if (po.getOperateType() == null) { + baseBean.writeLog("万德隆调薪定薪触发action,操作类型为null requestId:" + requestid ); + return SUCCESS; + } + if (po.getOperateType().equals(WdlArchiveWorkflowEnum.SINGLE_EDIT.getValue())) { + SalaryArchiveItemSaveParam param = JsonUtil.parseBean(po.getOperateJson(), SalaryArchiveItemSaveParam.class); + try { + getSalaryArchiveItemWrapper(user).saveSalaryItem4Workflow(param); + } catch (Exception e) { + requestInfo.getRequestManager().setMessage(e.getMessage()); + log.error("万德隆调薪定薪触发action 单个调薪异常 requestId:{} poId:{} msg:{}", requestInfo.getRequestid(),po.getId(), e.getMessage()); + return FAILURE_AND_CONTINUE; + } + } else if (po.getOperateType().equals(WdlArchiveWorkflowEnum.BATCH_EDIT.getValue())) { + List param = JsonUtil.parseList(po.getOperateJson(), SalaryArchiveItemBatchSaveParam.class); + try { + getSalaryArchiveItemWrapper(user).batchAdjustSalaryItem4Workflow(param); + } catch (Exception e) { + requestInfo.getRequestManager().setMessage(e.getMessage()); + log.error("万德隆调薪定薪触发action 批量调薪异常 requestId:{} poId:{} msg:{}", requestInfo.getRequestid(),po.getId(), e.getMessage()); + return FAILURE_AND_CONTINUE; + } + } else if (po.getOperateType().equals(WdlArchiveWorkflowEnum.SINGLE_INIT.getValue())) { + SalaryArchiveItemSaveParam param = JsonUtil.parseBean(po.getOperateJson(), SalaryArchiveItemSaveParam.class); + try { + getSalaryArchiveItemWrapper(user).initSalaryItem4Workflow(param); + } catch (Exception e) { + requestInfo.getRequestManager().setMessage(e.getMessage()); + log.error("万德隆调薪定薪触发action 单个定薪异常 requestId:{} poId:{} msg:{}", requestInfo.getRequestid(),po.getId(), e.getMessage()); + return FAILURE_AND_CONTINUE; + } + } else if (po.getOperateType().equals(WdlArchiveWorkflowEnum.BATCH_INIT.getValue())) { + List param = JsonUtil.parseList(po.getOperateJson(), SalaryArchiveItemBatchSaveParam.class); + try { + getSalaryArchiveItemWrapper(user).batchInitSalaryItem4Workflow(param); + } catch (Exception e) { + requestInfo.getRequestManager().setMessage(e.getMessage()); + log.error("万德隆调薪定薪触发action 批量定薪异常 requestId:{} poId:{} msg:{}", requestInfo.getRequestid(),po.getId(), e.getMessage()); + return FAILURE_AND_CONTINUE; + } + } + + // 更新执行状态 + getWdlArchiveWorkflowMapper().updateExeType(po.getId(), NumberUtils.INTEGER_ONE, SalaryDateUtil.getFormatLocalDateTime(new Date())); + } catch (Exception e) { + log.error("万德隆调薪定薪触发action 异常", e); + requestInfo.getRequestManager().setMessage(e.getMessage()); + return FAILURE_AND_CONTINUE; + } + return SUCCESS; + } +} diff --git a/src/com/engine/salary/entity/salaryacct/dto/WdlGzjgDTO.java b/src/com/engine/salary/entity/salaryacct/dto/WdlGzjgDTO.java index c6128c47e..3e2e21488 100644 --- a/src/com/engine/salary/entity/salaryacct/dto/WdlGzjgDTO.java +++ b/src/com/engine/salary/entity/salaryacct/dto/WdlGzjgDTO.java @@ -35,7 +35,7 @@ public class WdlGzjgDTO { private String gwzj; // 工资水平 - private Integer gzsp; + // private Integer gzsp; // 明细表默认 private String mxbmr; diff --git a/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveItemBatchSaveParam.java b/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveItemBatchSaveParam.java index 7c58e3b80..1a54f7c2b 100644 --- a/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveItemBatchSaveParam.java +++ b/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveItemBatchSaveParam.java @@ -6,8 +6,6 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import java.util.Date; - /** * @author Harryxzy * @ClassName SalaryArchiveItemBatchSaveParam @@ -19,6 +17,8 @@ import java.util.Date; @NoArgsConstructor @AllArgsConstructor public class SalaryArchiveItemBatchSaveParam { + private String requestId; + private String taxAgentName; private String employeeId; diff --git a/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveItemSaveParam.java b/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveItemSaveParam.java index e651d3351..aa3f51452 100644 --- a/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveItemSaveParam.java +++ b/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveItemSaveParam.java @@ -30,6 +30,8 @@ import java.util.Set; //薪资项目调整保存参数") public class SalaryArchiveItemSaveParam { + private String requestId; + // 主键id private Long salaryArchiveItemId; diff --git a/src/com/engine/salary/entity/salaryarchive/po/WdlArchiveWorkflowPO.java b/src/com/engine/salary/entity/salaryarchive/po/WdlArchiveWorkflowPO.java new file mode 100644 index 000000000..e791a4558 --- /dev/null +++ b/src/com/engine/salary/entity/salaryarchive/po/WdlArchiveWorkflowPO.java @@ -0,0 +1,33 @@ +package com.engine.salary.entity.salaryarchive.po; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Collection; + +/** + * @author Harryxzy + * @ClassName WdlArchiveWorkflowPO + * @date 2025/07/09 15:13 + * @description + */ + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class WdlArchiveWorkflowPO { + private String createTime; + private Integer deleteType; + private Integer exeType; + private Long id; + private String operateJson; + private Integer operateType; + private String requestid; + private String updateTime; + + //主键id集合 + private Collection ids; +} diff --git a/src/com/engine/salary/enums/salaryarchive/WdlArchiveWorkflowEnum.java b/src/com/engine/salary/enums/salaryarchive/WdlArchiveWorkflowEnum.java new file mode 100644 index 000000000..8f8522ac9 --- /dev/null +++ b/src/com/engine/salary/enums/salaryarchive/WdlArchiveWorkflowEnum.java @@ -0,0 +1,47 @@ +package com.engine.salary.enums.salaryarchive; + +import com.engine.salary.enums.BaseEnum; + +import java.util.Objects; + + +public enum WdlArchiveWorkflowEnum implements BaseEnum { + + SINGLE_INIT(Integer.valueOf("1"), "单个定薪", 0), + BATCH_INIT(Integer.valueOf("2"), "批量定薪", 0), + SINGLE_EDIT(Integer.valueOf("3"), "单个调薪", 0), + BATCH_EDIT(Integer.valueOf("4"), "批量调薪", 0); + + private Integer value; + + private String defaultLabel; + + private int labelId; + + WdlArchiveWorkflowEnum(Integer value, String defaultLabel, int labelId) { + this.value = value; + this.defaultLabel = defaultLabel; + this.labelId = labelId; + } + + public Integer getValue() { + return value; + } + + public String getDefaultLabel() { + return defaultLabel; + } + + public Integer getLabelId() { + return labelId; + } + + public static WdlArchiveWorkflowEnum parseByValue(Integer value) { + for (WdlArchiveWorkflowEnum wdlArchiveWorkflowEnum : WdlArchiveWorkflowEnum.values()) { + if (Objects.equals(wdlArchiveWorkflowEnum.getValue(), value)) { + return wdlArchiveWorkflowEnum; + } + } + return null; + } +} diff --git a/src/com/engine/salary/mapper/archive/WdlArchiveWorkflowMapper.java b/src/com/engine/salary/mapper/archive/WdlArchiveWorkflowMapper.java new file mode 100644 index 000000000..c6c29ba78 --- /dev/null +++ b/src/com/engine/salary/mapper/archive/WdlArchiveWorkflowMapper.java @@ -0,0 +1,75 @@ +package com.engine.salary.mapper.archive; + +import com.engine.salary.entity.salaryarchive.po.WdlArchiveWorkflowPO; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @author Harryxzy + * @ClassName WdlArchiveWorkflowMapper + * @date 2025/07/09 15:14 + * @description + */ +public interface WdlArchiveWorkflowMapper { + /** + * 查询所有记录 + * + * @return 返回集合,没有返回空List + */ + List listAll(); + + /** + * 条件查询 + * + * @return 返回集合,没有返回空List + */ + List listSome(WdlArchiveWorkflowPO wdlArchiveWorkflow); + + + /** + * 根据主键查询 + * + * @param id 主键 + * @return 返回记录,没有返回null + */ + WdlArchiveWorkflowPO getById(Long id); + + /** + * 新增,忽略null字段 + * + * @param wdlArchiveWorkflow 新增的记录 + * @return 返回影响行数 + */ + int insertIgnoreNull(WdlArchiveWorkflowPO wdlArchiveWorkflow); + + /** + * 修改,修改所有字段 + * + * @param wdlArchiveWorkflow 修改的记录 + * @return 返回影响行数 + */ + int update(WdlArchiveWorkflowPO wdlArchiveWorkflow); + + /** + * 修改,忽略null字段 + * + * @param wdlArchiveWorkflow 修改的记录 + * @return 返回影响行数 + */ + int updateIgnoreNull(WdlArchiveWorkflowPO wdlArchiveWorkflow); + + /** + * 删除记录 + * + * @param wdlArchiveWorkflow 待删除的记录 + * @return 返回影响行数 + */ + int delete(WdlArchiveWorkflowPO wdlArchiveWorkflow); + + void deleteByRequestId(@Param("requestId") String requestId, @Param("updateTime")String updateTime); + + WdlArchiveWorkflowPO getByRequstId(@Param("requestId") String requestid); + + void updateExeType(@Param("id") Long id, @Param("execType")Integer execType, @Param("now")String now); +} diff --git a/src/com/engine/salary/mapper/archive/WdlArchiveWorkflowMapper.xml b/src/com/engine/salary/mapper/archive/WdlArchiveWorkflowMapper.xml new file mode 100644 index 000000000..bc5635f86 --- /dev/null +++ b/src/com/engine/salary/mapper/archive/WdlArchiveWorkflowMapper.xml @@ -0,0 +1,214 @@ + + + + + + + + + + + + + + + + + t.create_time + , t.delete_type + , t.exe_type + , t.id + , t.operate_json + , t.operate_type + , t.requestid + , t.update_time + + + + + + + + + + + + + + + + INSERT INTO hrsa_wdl_archive_workflow + + + + create_time, + + + delete_type, + + + exe_type, + + + id, + + + operate_json, + + + operate_type, + + + requestid, + + + update_time, + + + + + #{createTime}, + + + #{deleteType}, + + + #{exeType}, + + + #{id}, + + + #{operateJson}, + + + #{operateType}, + + + #{requestid}, + + + #{updateTime}, + + + + + + + UPDATE hrsa_wdl_archive_workflow + + create_time=#{createTime}, + delete_type=#{deleteType}, + exe_type=#{exeType}, + operate_json=#{operateJson}, + operate_type=#{operateType}, + requestid=#{requestid}, + update_time=#{updateTime}, + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_wdl_archive_workflow + + + create_time=#{createTime}, + + + delete_type=#{deleteType}, + + + exe_type=#{exeType}, + + + operate_json=#{operateJson}, + + + operate_type=#{operateType}, + + + requestid=#{requestid}, + + + update_time=#{updateTime}, + + + WHERE id = #{id} AND delete_type = 0 + + + UPDATE hrsa_wdl_archive_workflow + SET exe_type=#{execType}, update_time=#{now} + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_wdl_archive_workflow + SET delete_type=1 + WHERE id = #{id} AND delete_type = 0 + + + UPDATE hrsa_wdl_archive_workflow + SET delete_type=1,update_time=#{updateTime} + WHERE requestid = #{requestId} AND delete_type = 0 + + + + \ No newline at end of file diff --git a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java index e345ddaab..77a8833bc 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java @@ -1329,7 +1329,7 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe columns.add(new WeaTableColumnGroup("150", "办公地点", "bgdd", "bgdd")); columns.add(new WeaTableColumnGroup("150", "岗位名称", "gwmc", "gwmc")); columns.add(new WeaTableColumnGroup("150", "岗位职级", "gwzj", "gwzj")); - columns.add(new WeaTableColumnGroup("150", "工资水平", "gzsp", "gzsp")); + // columns.add(new WeaTableColumnGroup("150", "工资水平", "gzsp", "gzsp")); for (Long itemId : salaryItemIds) { String itemName = itemNameMap.getOrDefault(itemId, ""); columns.add(new WeaTableColumnGroup("150", itemName, itemId.toString(), itemId.toString())); @@ -1377,7 +1377,7 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe singleValueMap.put("bgdd" ,locationValueMap.getOrDefault(dto.getBgdd(), "")); singleValueMap.put("gwmc" ,positionMap.getOrDefault(dto.getGwmc(), "")); singleValueMap.put("gwzj" ,gwzjMap.getOrDefault(dto.getGwzj(), "")); - singleValueMap.put("gzsp" ,dto.getGzsp()); + // singleValueMap.put("gzsp" ,dto.getGzsp()); List detailList = dto.getDetailList(); Map detailJeMap = SalaryEntityUtil.convert2Map(detailList, WdlGzjgDtPO::getXzxm, WdlGzjgDtPO::getJe); for (SalaryItemPO item : salaryItemList) { @@ -1407,7 +1407,7 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe wdlGzjgDTO.setBgdd(SalaryEntityUtil.string2Integer(rs.getString("bgdd"))); wdlGzjgDTO.setGwmc(SalaryEntityUtil.string2Integer(rs.getString("gwmc"))); wdlGzjgDTO.setGwzj(rs.getString("gwzj")); - wdlGzjgDTO.setGzsp(SalaryEntityUtil.string2Integer(rs.getString("gzsp"))); + // wdlGzjgDTO.setGzsp(SalaryEntityUtil.string2Integer(rs.getString("gzsp"))); wdlGzjgDTO.setMxbmr(rs.getString("mxbmr")); wdlGzjgDTO.setGwzj1(rs.getString("gwzj1")); resultList.add(wdlGzjgDTO); @@ -1485,8 +1485,8 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe for (WdlGzjgDTO mainData : needInsertList) { int newId = ModeDataIdUpdate.getInstance().getModeDataNewIdByUUID("uf_bzgzjgb", bzgzjgModeId, user.getUID(), 0, "", ""); mainData.setId(newId); - String sql = "update uf_bzgzjgb set lb=?,bgdd=?,gwmc=?,gwzj=?,gzsp=? where id =" + newId; - rs.executeUpdate(sql, Arrays.asList(mainData.getLb(), mainData.getBgdd(), mainData.getGwmc(), mainData.getGwzj(), mainData.getGzsp())); + String sql = "update uf_bzgzjgb set lb=?,bgdd=?,gwmc=?,gwzj=? where id =" + newId; + rs.executeUpdate(sql, Arrays.asList(mainData.getLb(), mainData.getBgdd(), mainData.getGwmc(), mainData.getGwzj())); List detailList = mainData.getDetailList(); StringBuilder sb = new StringBuilder(); @@ -1640,18 +1640,20 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe mainData.setGwmc(positionValue.intValue()); } } - } else if (StringUtils.equals("工资水平", dataKey) ) { - if (StringUtils.isNotBlank(dataValue)) { - if (NumberUtils.isCreatable(dataValue)) { - mainData.setGzsp(SalaryEntityUtil.string2Integer(dataValue)); - } else { - isError = true; - Map errorMessageMap = Maps.newHashMap(); - errorMessageMap.put("message", row + "工资水平非数值"); - excelComments.add(errorMessageMap); - } - } - } else if (StringUtils.equals("岗位职级", dataKey) ) { + } + // else if (StringUtils.equals("工资水平", dataKey) ) { + // if (StringUtils.isNotBlank(dataValue)) { + // if (NumberUtils.isCreatable(dataValue)) { + // mainData.setGzsp(SalaryEntityUtil.string2Integer(dataValue)); + // } else { + // isError = true; + // Map errorMessageMap = Maps.newHashMap(); + // errorMessageMap.put("message", row + "工资水平非数值"); + // excelComments.add(errorMessageMap); + // } + // } + // } + else if (StringUtils.equals("岗位职级", dataKey) ) { if (StringUtils.isNotBlank(dataValue)) { Integer gwzjValue = gwzjValueMap.get(dataValue); if (gwzjValue == null) { @@ -1714,7 +1716,7 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe lsh++; } } - rs.execute("select id,lb,bgdd,gwmc,gwzj,gzsp,mxbmr,gwzj1 from uf_bzgzjgb"); + rs.execute("select id,lb,bgdd,gwmc,gwzj,mxbmr,gwzj1 from uf_bzgzjgb"); List mainList = new ArrayList<>(); @@ -1726,7 +1728,7 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe wdlGzjgDTO.setBgdd(StringUtils.isBlank(rs.getString("bgdd")) ? null : rs.getInt("bgdd")); wdlGzjgDTO.setGwmc(StringUtils.isBlank(rs.getString("gwmc")) ? null : rs.getInt("gwmc")); wdlGzjgDTO.setGwzj(rs.getString("gwzj")); - wdlGzjgDTO.setGzsp(StringUtils.isBlank(rs.getString("gzsp")) ? null : rs.getInt("gzsp")); + // wdlGzjgDTO.setGzsp(StringUtils.isBlank(rs.getString("gzsp")) ? null : rs.getInt("gzsp")); wdlGzjgDTO.setMxbmr(rs.getString("mxbmr")); wdlGzjgDTO.setGwzj1(rs.getString("gwzj1")); wdlGzjgDTO.setLsbb(lsbb); @@ -1756,7 +1758,7 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe List> partition = Lists.partition(mainList, 500); partition.forEach(part -> { StringBuilder sb = new StringBuilder(); - sb.append("insert into uf_bzgzjgbls(formmodeid,modedatacreater,modedatacreatertype,modedatacreatedate,modedatacreatetime,id,lb,bgdd,gwmc,gwzj,gzsp,lsbb) values "); + sb.append("insert into uf_bzgzjgbls(formmodeid,modedatacreater,modedatacreatertype,modedatacreatedate,modedatacreatetime,id,lb,bgdd,gwmc,gwzj,lsbb) values "); for (WdlGzjgDTO data : part) { sb.append("(") .append(modeId).append(",1,0,").append(currDate).append(",").append(currTime).append(",") @@ -1764,8 +1766,8 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe .append(data.getLb()).append(",") .append(data.getBgdd()).append(",") .append(data.getGwmc()).append(",'") - .append(data.getGwzj()).append("',") - .append(data.getGzsp()).append(",'") + .append(data.getGwzj()).append("','") + // .append(data.getGzsp()).append(",'") // .append(data.getMxbmr()).append("','") // .append(data.getGwzj1()).append("','") .append(data.getLsbb()).append("'),"); diff --git a/src/com/engine/salary/service/impl/SalaryArchiveExcelServiceImpl.java b/src/com/engine/salary/service/impl/SalaryArchiveExcelServiceImpl.java index dd32ca6c1..c106c0ee0 100644 --- a/src/com/engine/salary/service/impl/SalaryArchiveExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryArchiveExcelServiceImpl.java @@ -548,7 +548,7 @@ public class SalaryArchiveExcelServiceImpl extends Service implements SalaryArch // 构建导入需要的数据 - SalaryArchiveImportHandleParam importHandleParam = buildImportHandleParam(SalaryArchiveImportHandleParam.builder().isProcess(true).isWdlWorkflow(param.getIsWdlWorkflow()).listType(param.getListType()).importType(param.getImportType()).description(param.getDescription()).build()); + SalaryArchiveImportHandleParam importHandleParam = buildImportHandleParam(SalaryArchiveImportHandleParam.builder().isProcess(true).isWdlWorkflow(param.getIsWdlWorkflow() == null ? false : param.getIsWdlWorkflow()).listType(param.getListType()).importType(param.getImportType()).description(param.getDescription()).build()); importHandleParam.setKeepStatus(param.getKeepStatus()); int total = 0; @@ -630,7 +630,7 @@ public class SalaryArchiveExcelServiceImpl extends Service implements SalaryArch } // 4.数据入库处理 - if (param.getIsWdlWorkflow()) { + if (param.getIsWdlWorkflow() != null && param.getIsWdlWorkflow()) { if (CollectionUtils.isEmpty(excelComments)) { handleImportData(importHandleParam); } @@ -699,7 +699,7 @@ public class SalaryArchiveExcelServiceImpl extends Service implements SalaryArch runStatusList = Arrays.asList(SalaryArchiveStatusEnum.FIXED.getValue(), SalaryArchiveStatusEnum.SUSPEND.getValue()); } - if (param.isWdlWorkflow()) { + if (CollectionUtils.isNotEmpty(runStatusList) && param.isWdlWorkflow()) { List tempRunStatusList = new ArrayList<>(); tempRunStatusList.addAll(runStatusList); tempRunStatusList.add(SalaryArchiveStatusEnum.STOP_FROM_PENDING.getValue()); diff --git a/src/com/engine/salary/web/SalaryArchiveController.java b/src/com/engine/salary/web/SalaryArchiveController.java index b58dbfb64..f26b3dee6 100644 --- a/src/com/engine/salary/web/SalaryArchiveController.java +++ b/src/com/engine/salary/web/SalaryArchiveController.java @@ -6,6 +6,8 @@ import com.engine.salary.entity.salaryarchive.param.*; import com.engine.salary.enums.salaryarchive.SalaryArchiveImportTypeEnum; import com.engine.salary.enums.salaryarchive.SalaryArchiveListTypeEnum; import com.engine.salary.enums.salaryarchive.SalaryArchiveStatusEnum; +import com.engine.salary.enums.salaryarchive.WdlArchiveWorkflowEnum; +import com.engine.salary.util.JsonUtil; import com.engine.salary.util.ResponseResult; import com.engine.salary.util.SalaryDateUtil; import com.engine.salary.util.SalaryI18nUtil; @@ -15,6 +17,7 @@ import com.engine.salary.wrapper.SalaryArchiveTaxAgentWrapper; import com.engine.salary.wrapper.SalaryArchiveWrapper; import io.swagger.v3.oas.annotations.parameters.RequestBody; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; import org.apache.poi.xssf.usermodel.XSSFWorkbook; @@ -709,6 +712,18 @@ public class SalaryArchiveController { // ----------------------------------------------万德隆调薪、定薪流程--------------------------------------------------- + + /** + * 调薪(单个人) + */ + @GET + @Path("/testWdlSalaryArchiveTriggerAction") + @Produces(MediaType.APPLICATION_JSON) + public String testWdlSalaryArchiveTriggerAction(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "requestid") String requestId) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalaryArchiveItemWrapper(user)::testWdlSalaryArchiveTriggerAction, requestId); + } + /** * 调薪(单个人) */ @@ -717,7 +732,14 @@ public class SalaryArchiveController { @Produces(MediaType.APPLICATION_JSON) public String saveSalaryItem4Workflow(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryArchiveItemSaveParam saveParam) { User user = HrmUserVarify.getUser(request, response); - return new ResponseResult(user).run(getSalaryArchiveItemWrapper(user)::saveSalaryItem4Workflow, saveParam); + // 参数存至数据库待action触发 + String jsonString = JsonUtil.toJsonString(saveParam); + Map paramMap = new HashMap<>(); + paramMap.put("requestId", saveParam.getRequestId()); + paramMap.put("jsonString", jsonString); + paramMap.put("operateType", WdlArchiveWorkflowEnum.SINGLE_EDIT); + return new ResponseResult, String>(user).run(getSalaryArchiveItemWrapper(user)::saveWdlWorkflowParam, paramMap); + // return new ResponseResult(user).run(getSalaryArchiveItemWrapper(user)::saveSalaryItem4Workflow, saveParam); } /** @@ -728,7 +750,16 @@ public class SalaryArchiveController { @Produces(MediaType.APPLICATION_JSON) public String batchAdjustSalaryItem4Workflow(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody List saveParam) { User user = HrmUserVarify.getUser(request, response); - return new ResponseResult, String>(user).run(getSalaryArchiveItemWrapper(user)::batchAdjustSalaryItem4Workflow, saveParam); + if (CollectionUtils.isEmpty(saveParam)) { + return ""; + } + String jsonString = JsonUtil.toJsonString(saveParam); + Map paramMap = new HashMap<>(); + paramMap.put("requestId", saveParam.get(0).getRequestId()); + paramMap.put("jsonString", jsonString); + paramMap.put("operateType", WdlArchiveWorkflowEnum.BATCH_EDIT); + return new ResponseResult, String>(user).run(getSalaryArchiveItemWrapper(user)::saveWdlWorkflowParam, paramMap); + // return new ResponseResult, String>(user).run(getSalaryArchiveItemWrapper(user)::batchAdjustSalaryItem4Workflow, saveParam); } /** @@ -739,7 +770,14 @@ public class SalaryArchiveController { @Produces(MediaType.APPLICATION_JSON) public String initSalaryItem4Workflow(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryArchiveItemSaveParam saveParam) { User user = HrmUserVarify.getUser(request, response); - return new ResponseResult(user).run(getSalaryArchiveItemWrapper(user)::initSalaryItem4Workflow, saveParam); + String jsonString = JsonUtil.toJsonString(saveParam); + + Map paramMap = new HashMap<>(); + paramMap.put("requestId", saveParam.getRequestId()); + paramMap.put("jsonString", jsonString); + paramMap.put("operateType", WdlArchiveWorkflowEnum.SINGLE_INIT); + return new ResponseResult, String>(user).run(getSalaryArchiveItemWrapper(user)::saveWdlWorkflowParam, paramMap); + // return new ResponseResult(user).run(getSalaryArchiveItemWrapper(user)::initSalaryItem4Workflow, saveParam); } /** @@ -750,7 +788,17 @@ public class SalaryArchiveController { @Produces(MediaType.APPLICATION_JSON) public String batchInitSalaryItem4Workflow(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody List saveParam) { User user = HrmUserVarify.getUser(request, response); - return new ResponseResult, String>(user).run(getSalaryArchiveItemWrapper(user)::batchInitSalaryItem4Workflow, saveParam); + if (CollectionUtils.isEmpty(saveParam)) { + return ""; + } + String jsonString = JsonUtil.toJsonString(saveParam); + + Map paramMap = new HashMap<>(); + paramMap.put("requestId", saveParam.get(0).getRequestId()); + paramMap.put("jsonString", jsonString); + paramMap.put("operateType", WdlArchiveWorkflowEnum.BATCH_INIT); + return new ResponseResult, String>(user).run(getSalaryArchiveItemWrapper(user)::saveWdlWorkflowParam, paramMap); + // return new ResponseResult, String>(user).run(getSalaryArchiveItemWrapper(user)::batchInitSalaryItem4Workflow, saveParam); } diff --git a/src/com/engine/salary/wrapper/SalaryArchiveItemWrapper.java b/src/com/engine/salary/wrapper/SalaryArchiveItemWrapper.java index a388fc801..a16ef684b 100644 --- a/src/com/engine/salary/wrapper/SalaryArchiveItemWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryArchiveItemWrapper.java @@ -3,7 +3,6 @@ package com.engine.salary.wrapper; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.hrmelog.entity.dto.LoggerContext; -import com.engine.salary.action.CheckInitSalaryAction; import com.engine.salary.config.SalaryElogConfig; import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.salaryarchive.dto.SalaryArchiveItemFormDTO; @@ -13,8 +12,8 @@ import com.engine.salary.entity.salaryarchive.dto.SingleSalaryItemAdjustRecordLi import com.engine.salary.entity.salaryarchive.param.*; import com.engine.salary.entity.salaryarchive.po.SalaryArchiveItemPO; import com.engine.salary.entity.salaryarchive.po.SalaryArchivePO; +import com.engine.salary.entity.salaryarchive.po.WdlArchiveWorkflowPO; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; -import com.engine.salary.entity.taxagent.param.TaxAgentQueryParam; import com.engine.salary.entity.taxagent.po.TaxAgentPO; import com.engine.salary.enums.OperateTypeEnum; import com.engine.salary.enums.UserStatusEnum; @@ -22,13 +21,17 @@ import com.engine.salary.enums.auth.AuthFilterTypeEnum; import com.engine.salary.enums.datacollection.UseEmployeeTypeEnum; import com.engine.salary.enums.salaryarchive.SalaryArchiveItemAdjustReasonEnum; import com.engine.salary.enums.salaryarchive.SalaryArchiveStatusEnum; +import com.engine.salary.enums.salaryarchive.WdlArchiveWorkflowEnum; import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.mapper.archive.SalaryArchiveMapper; +import com.engine.salary.mapper.archive.WdlArchiveWorkflowMapper; import com.engine.salary.service.*; import com.engine.salary.service.impl.*; +import com.engine.salary.util.JsonUtil; import com.engine.salary.util.SalaryDateUtil; import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryI18nUtil; +import com.engine.salary.util.db.IdGenerator; import com.engine.salary.util.db.MapperProxyFactory; import com.engine.salary.util.page.PageInfo; import com.engine.salary.util.page.SalaryPageUtil; @@ -41,9 +44,8 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.springframework.beans.BeanUtils; import weaver.conn.RecordSet; import weaver.general.BaseBean; -import weaver.general.Util; import weaver.hrm.User; -import weaver.soa.workflow.request.Property; +import weaver.wechat.util.Utils; import java.util.*; import java.util.stream.Collectors; @@ -87,6 +89,10 @@ public class SalaryArchiveItemWrapper extends Service implements SalaryArchiveIt return MapperProxyFactory.getProxy(SalaryArchiveMapper.class); } + private WdlArchiveWorkflowMapper getWdlArchiveWorkflowMapper() { + return MapperProxyFactory.getProxy(WdlArchiveWorkflowMapper.class); + } + /** * 构建薪资项目基础信息表单 @@ -709,4 +715,96 @@ public class SalaryArchiveItemWrapper extends Service implements SalaryArchiveIt } } -} + + public String saveWdlWorkflowParam(Map paramMap) { + String requestId = (String) paramMap.get("requestId"); + String jsonString = (String) paramMap.get("jsonString"); + WdlArchiveWorkflowEnum operateType = (WdlArchiveWorkflowEnum) paramMap.get("operateType"); + + if (operateType == null || StringUtils.isBlank(requestId) ) { + throw new SalaryRunTimeException("参数错误"); + } + // 删除同requestId下的数据 + getWdlArchiveWorkflowMapper().deleteByRequestId(requestId, SalaryDateUtil.getFormatLocalDateTime(new Date())); + // 插入新数据 + String now = SalaryDateUtil.getFormatLocalDateTime(new Date()); + WdlArchiveWorkflowPO build = WdlArchiveWorkflowPO.builder() + .id(IdGenerator.generate()) + .requestid(requestId) + .operateType(operateType.getValue()) + .operateJson(Utils.null2String(jsonString)) + .createTime(now) + .updateTime(now) + .exeType(0) + .deleteType(0) + .build(); + getWdlArchiveWorkflowMapper().insertIgnoreNull(build); + return ""; + } + + public String testWdlSalaryArchiveTriggerAction(String requestid) { + try { + + WdlArchiveWorkflowPO po = getWdlArchiveWorkflowMapper().getByRequstId(requestid); + BaseBean baseBean = new BaseBean(); + if (po == null) { + baseBean.writeLog("万德隆调薪定薪触发action,未找到需要执行的任务 requestId:" + requestid); + return "SUCCESS"; + } + if (po.getExeType() != null && po.getExeType().equals(NumberUtils.INTEGER_ONE)) { + baseBean.writeLog("万德隆调薪定薪触发action,未找到待执行的任务 requestId:" + requestid + po.getId()); + return "SUCCESS"; + } + if (po.getOperateType() == null) { + baseBean.writeLog("万德隆调薪定薪触发action,操作类型为null requestId:" + requestid ); + return "SUCCESS"; + } + if (po.getOperateType().equals(WdlArchiveWorkflowEnum.SINGLE_EDIT.getValue())) { + SalaryArchiveItemSaveParam param = JsonUtil.parseBean(po.getOperateJson(), SalaryArchiveItemSaveParam.class); + try { + saveSalaryItem4Workflow(param); + } catch (Exception e) { + // requestInfo.getRequestManager().setMessage(e.getMessage()); + // log.error("万德隆调薪定薪触发action 单个调薪异常 requestId:{} poId:{} msg:{}", requestInfo.getRequestid(),po.getId(), e.getMessage()); + return e.getMessage(); + } + } else if (po.getOperateType().equals(WdlArchiveWorkflowEnum.BATCH_EDIT.getValue())) { + List param = JsonUtil.parseList(po.getOperateJson(), SalaryArchiveItemBatchSaveParam.class); + try { + batchAdjustSalaryItem4Workflow(param); + } catch (Exception e) { + // requestInfo.getRequestManager().setMessage(e.getMessage()); + // log.error("万德隆调薪定薪触发action 批量调薪异常 requestId:{} poId:{} msg:{}", requestInfo.getRequestid(),po.getId(), e.getMessage()); + return e.getMessage(); + } + } else if (po.getOperateType().equals(WdlArchiveWorkflowEnum.SINGLE_INIT.getValue())) { + SalaryArchiveItemSaveParam param = JsonUtil.parseBean(po.getOperateJson(), SalaryArchiveItemSaveParam.class); + try { + initSalaryItem4Workflow(param); + } catch (Exception e) { + // requestInfo.getRequestManager().setMessage(e.getMessage()); + // log.error("万德隆调薪定薪触发action 单个定薪异常 requestId:{} poId:{} msg:{}", requestInfo.getRequestid(),po.getId(), e.getMessage()); + return e.getMessage(); + } + } else if (po.getOperateType().equals(WdlArchiveWorkflowEnum.BATCH_INIT.getValue())) { + List param = JsonUtil.parseList(po.getOperateJson(), SalaryArchiveItemBatchSaveParam.class); + try { + batchInitSalaryItem4Workflow(param); + } catch (Exception e) { + // requestInfo.getRequestManager().setMessage(e.getMessage()); + // log.error("万德隆调薪定薪触发action 批量定薪异常 requestId:{} poId:{} msg:{}", requestInfo.getRequestid(),po.getId(), e.getMessage()); + return e.getMessage(); + } + } + + // 更新执行状态 + getWdlArchiveWorkflowMapper().updateExeType(po.getId(), NumberUtils.INTEGER_ONE, SalaryDateUtil.getFormatLocalDateTime(new Date())); + } catch (Exception e) { + // log.error("万德隆调薪定薪触发action 异常", e); + // requestInfo.getRequestManager().setMessage(e.getMessage()); + return e.getMessage(); + } + return "SUCCESS"; + + } +} \ No newline at end of file