1、提示优化

2、导入模板
3、定薪流程
This commit is contained in:
钱涛 2022-10-27 15:17:22 +08:00
parent 78f1d02e6d
commit 104213fc04
13 changed files with 336 additions and 1513 deletions

View File

@ -82,7 +82,6 @@ public class SalaryArchiveExcelBO extends Service {
/**
* 初始化i18n
*
*/
public static void initI18n() {
userNameI18n = SalaryI18nUtil.getI18nLabel(85429, "姓名");
@ -139,10 +138,10 @@ public class SalaryArchiveExcelBO extends Service {
String listType = Optional.ofNullable(params.get("listType")).orElse("").toString();
String importType = Optional.ofNullable(params.get("importType")).orElse("").toString();
if (params == null) {
errorMsg = SalaryI18nUtil.getI18nLabel( 100582, "参数必传");
errorMsg = SalaryI18nUtil.getI18nLabel(100582, "参数必传");
} else if (StringUtils.isEmpty(listType)) {
errorMsg = // SalaryI18nUtil.getI18nLabel( 100592, "导入类型必传") + "," +
SalaryI18nUtil.getI18nLabel( 109712, "列表类型必传");
SalaryI18nUtil.getI18nLabel(109712, "列表类型必传");
} else {
Optional<SalaryArchiveListTypeEnum> optionalListType = Arrays.stream(SalaryArchiveListTypeEnum.values()).filter(e -> e.getValue().equals(listType)).findFirst();
if (optionalListType.isPresent()) {
@ -150,7 +149,7 @@ public class SalaryArchiveExcelBO extends Service {
if (optionalListType.get().getValue().equals(SalaryArchiveListTypeEnum.FIXED.getValue())) {
Optional<SalaryArchiveImportTypeEnum> optional = Arrays.stream(SalaryArchiveImportTypeEnum.values()).filter(e -> e.getValue().equals(params.get("importType").toString())).findFirst();
if (!optional.isPresent()) {
errorMsg = SalaryI18nUtil.getI18nLabel( 100593, "导入类型不正确");
errorMsg = SalaryI18nUtil.getI18nLabel(100593, "导入类型不正确");
} else {
// message.setDataType(message.getDataType()
// + "-" + SalaryI18nUtil.getI18nLabel( optionalListType.get().getLabelId(), optionalListType.get().getDefaultLabel())
@ -161,7 +160,7 @@ public class SalaryArchiveExcelBO extends Service {
// + "-" + SalaryI18nUtil.getI18nLabel( optionalListType.get().getLabelId(), optionalListType.get().getDefaultLabel()));
}
} else {
errorMsg = SalaryI18nUtil.getI18nLabel( 109716, "列表类型不正确");
errorMsg = SalaryI18nUtil.getI18nLabel(109716, "列表类型不正确");
}
}
return errorMsg;
@ -369,6 +368,11 @@ public class SalaryArchiveExcelBO extends Service {
}
Long employeeId = CollectionUtils.isNotEmpty(employeeSameIds) && employeeSameIds.size() == 1 && employeeSameIds.get(0) > 0 ? employeeSameIds.get(0) : null;
//员工id 流程定薪使用
String empId = Optional.ofNullable(map.get("员工id")).orElse("").toString();
if (StringUtils.isNotBlank(empId)) {
employeeId = Long.valueOf(empId);
}
// 用于初始化导入数据校验
@ -466,7 +470,7 @@ public class SalaryArchiveExcelBO extends Service {
// 判空
if (isEmpty) {
Map<String, String> errorMessageMap = Maps.newHashMap();
errorMessageMap.put("message", rowindex + notEmptyI18n);
errorMessageMap.put("message", rowindex + header + notEmptyI18n);
excelComments.add(errorMessageMap);
// SalaryArchiveExcelBO.createExcelComment(excelComments, notEmptyI18n, errorCount + 1, errorCount + 1, j, j);
isError = true;
@ -475,7 +479,7 @@ public class SalaryArchiveExcelBO extends Service {
if (isNotEmpty && userNameI18n.equals(key.toString())) {
if (CollectionUtils.isEmpty(employeeSameIds) || employeeSameIds.size() > 1) {
Map<String, String> errorMessageMap = Maps.newHashMap();
errorMessageMap.put("message", rowindex + empRepeatMsg);
errorMessageMap.put("message", rowindex + header + empRepeatMsg);
excelComments.add(errorMessageMap);
// SalaryArchiveExcelBO.createExcelComment(excelComments, empRepeatMsg, errorCount + 1, errorCount + 1, j, j);
isError = true;
@ -484,7 +488,7 @@ public class SalaryArchiveExcelBO extends Service {
} else if (isNotEmpty && taxAgentI18n.equals(key.toString())) {
if (taxAgentId == null) {
Map<String, String> errorMessageMap = Maps.newHashMap();
errorMessageMap.put("message", rowindex + taxAgentNoExist);
errorMessageMap.put("message", rowindex + header + taxAgentNoExist);
excelComments.add(errorMessageMap);
// SalaryArchiveExcelBO.createExcelComment(excelComments, taxAgentNoExist, errorCount + 1, errorCount + 1, j, j);
isError = true;
@ -498,7 +502,7 @@ public class SalaryArchiveExcelBO extends Service {
// } else {
// finalSalaryArchive.setIncomeCategory(incomeCategory);
// }
// 薪资账套
// 薪资账套
// }
// else if (isNotEmpty && salarySobI18n.equals(key.toString())) {
// List<String> salarySobNames = Arrays.stream(salarySobCellVal.split(",")).distinct().collect(Collectors.toList());
@ -517,18 +521,18 @@ public class SalaryArchiveExcelBO extends Service {
// finalSalaryArchive.setIncomeCategory(incomeCategory);
// importHandleParam.getSalaryArchiveSobSaves().addAll(SalaryArchiveBO.buildSalaryArchiveSob(finalSalaryArchive.getId(), salarySobIds, importHandleParam.getNowTime(), importHandleParam.getCurrentEmployeeId(), importHandleParam.getTenantKey()));
// }
// 3.生效时间处理(定薪的调薪\定薪的初始化)
// 3.生效时间处理(定薪的调薪\定薪的初始化)
// }
else if (isNotEmpty && effectiveTimeI18n.equals(key.toString()) && effectiveTime == null && importHandleParam.isFixedList()) {
Map<String, String> errorMessageMap = Maps.newHashMap();
errorMessageMap.put("message", rowindex + effectiveTimeErr);
errorMessageMap.put("message", rowindex + header + effectiveTimeErr);
excelComments.add(errorMessageMap);
// SalaryArchiveExcelBO.createExcelComment(excelComments, effectiveTimeErr, errorCount + 1, errorCount + 1, j, j);
isError = true;
// 4.调整原因列定薪的调薪
} else if (isNotEmpty && adjustReasonI18n.equals(key.toString()) && StringUtils.isEmpty(adjustReason) && importHandleParam.isSalaryItemAdjust()) {
Map<String, String> errorMessageMap = Maps.newHashMap();
errorMessageMap.put("message", rowindex + adjustReasonNoExist);
errorMessageMap.put("message", rowindex + header + adjustReasonNoExist);
excelComments.add(errorMessageMap);
// SalaryArchiveExcelBO.createExcelComment(excelComments, adjustReasonNoExist, errorCount + 1, errorCount + 1, j, j);
isError = true;
@ -536,7 +540,7 @@ public class SalaryArchiveExcelBO extends Service {
} else if (isNotEmpty && payStartDateI18n.equals(key.toString()) && (importHandleParam.isInit() || importHandleParam.isPendingList())) {
if (payStartDate == null) {
Map<String, String> errorMessageMap = Maps.newHashMap();
errorMessageMap.put("message", rowindex + dateErr);
errorMessageMap.put("message", rowindex + header + dateErr);
excelComments.add(errorMessageMap);
// SalaryArchiveExcelBO.createExcelComment(excelComments, dateErr, errorCount + 1, errorCount + 1, j, j);
isError = true;
@ -549,7 +553,7 @@ public class SalaryArchiveExcelBO extends Service {
if (payEndDateTemp != null && payStartDate.after(payEndDateTemp)) {
Map<String, String> errorMessageMap = Maps.newHashMap();
errorMessageMap.put("message", rowindex + payStartUnableAfterEnd);
errorMessageMap.put("message", rowindex + header + payStartUnableAfterEnd);
excelComments.add(errorMessageMap);
// SalaryArchiveExcelBO.createExcelComment(excelComments, payStartUnableAfterEnd, errorCount + 1, errorCount + 1, j, j);
isError = true;
@ -565,7 +569,7 @@ public class SalaryArchiveExcelBO extends Service {
if (isNotEmpty) {
if (payEndDate == null) {
Map<String, String> errorMessageMap = Maps.newHashMap();
errorMessageMap.put("message", rowindex + dateErr);
errorMessageMap.put("message", rowindex + header + dateErr);
excelComments.add(errorMessageMap);
// SalaryArchiveExcelBO.createExcelComment(excelComments, dateErr, errorCount + 1, errorCount + 1, j, j);
isError = true;
@ -581,7 +585,7 @@ public class SalaryArchiveExcelBO extends Service {
}
if (payStartDateTemp != null && payStartDateTemp.after(payEndDate)) {
Map<String, String> errorMessageMap = Maps.newHashMap();
errorMessageMap.put("message", rowindex + payStartUnableAfterEnd);
errorMessageMap.put("message", rowindex + header + payStartUnableAfterEnd);
excelComments.add(errorMessageMap);
// SalaryArchiveExcelBO.createExcelComment(excelComments, payStartUnableAfterEnd, errorCount + 1, errorCount + 1, j, j);
isError = true;
@ -737,7 +741,7 @@ public class SalaryArchiveExcelBO extends Service {
boolean isNotNumber = salaryItemPO.getDataType().equals(SalaryArchiveFieldTypeEnum.NUMBER.getValue()) && StringUtils.isNotEmpty(cellVal) && !Pattern.matches(SalaryArchiveConstant.NUMBER_REGEX, cellVal);
if (isNotNumber) {
Map<String, String> errorMessageMap = Maps.newHashMap();
errorMessageMap.put("message", rowindex + numberErr);
errorMessageMap.put("message", rowindex + key + numberErr);
excelComments.add(errorMessageMap);
// SalaryArchiveExcelBO.createExcelComment(excelComments, numberErr, errorCount + 1, errorCount + 1, j, j);
isError = true;
@ -765,19 +769,19 @@ public class SalaryArchiveExcelBO extends Service {
SalaryItemAdjustValidDTO salaryItemAdjustValid = SalaryArchiveItemBO.handleSalaryItemAdjustValid(effectiveSalaryItem, effectiveBeforeSalaryItem, ineffectiveSalaryItem, effectiveTime, importHandleParam.getToday(), cellVal, importHandleParam.getSalaryArchiveItemDelSalaryItemIds());
if (salaryItemAdjustValid.isBefore()) {
Map<String, String> errorMessageMap = Maps.newHashMap();
errorMessageMap.put("message", rowindex + salaryItemNoBeforeCurrentEffectiveTime);
errorMessageMap.put("message", rowindex + key + salaryItemNoBeforeCurrentEffectiveTime);
excelComments.add(errorMessageMap);
// SalaryArchiveExcelBO.createExcelComment(excelComments, salaryItemNoBeforeCurrentEffectiveTime, errorCount + 1, errorCount + 1, effectiveTimeIndex, effectiveTimeIndex);
isError = true;
} else if (salaryItemAdjustValid.isSame()) {
Map<String, String> errorMessageMap = Maps.newHashMap();
errorMessageMap.put("message", rowindex + salaryItemAdjustNoSame);
errorMessageMap.put("message", rowindex + key + salaryItemAdjustNoSame);
excelComments.add(errorMessageMap);
// SalaryArchiveExcelBO.createExcelComment(excelComments, salaryItemAdjustNoSame, errorCount + 1, errorCount + 1, j, j);
isError = true;
} else if (salaryItemAdjustValid.isSameIneffective()) {
Map<String, String> errorMessageMap = Maps.newHashMap();
errorMessageMap.put("message", rowindex + salaryItemAdjustNoSameIneffective);
errorMessageMap.put("message", rowindex + key + salaryItemAdjustNoSameIneffective);
excelComments.add(errorMessageMap);
// SalaryArchiveExcelBO.createExcelComment(excelComments, salaryItemAdjustNoSameIneffective, errorCount + 1, errorCount + 1, j, j);
isError = true;

View File

@ -29,6 +29,7 @@ public class SalaryArchiveImportActionParam {
* @see SalaryArchiveImportTypeEnum
*/
String importType;
String listType;
/**
* 导入数据

View File

@ -45,6 +45,10 @@ public class SalaryArchiveImportHandleParam {
String importType;
String listType;
/**
* 是否处理数据
*/
boolean onlyCheck;
//*****************************************************************/

View File

@ -2,7 +2,6 @@ package com.engine.salary.process.salaryArchive;
import com.engine.common.util.ServiceUtil;
import com.engine.salary.entity.salaryarchive.param.SalaryArchiveImportActionParam;
import com.engine.salary.entity.salaryarchive.param.SalaryArchiveImportHandleParam;
import com.engine.salary.util.ResponseResult;
import com.engine.salary.wrapper.SalaryArchiveWrapper;
import io.swagger.v3.oas.annotations.parameters.RequestBody;
@ -12,7 +11,9 @@ import weaver.hrm.User;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.ws.rs.*;
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;
@ -39,13 +40,13 @@ public class SalaryArchiveActionAPI {
* @return
* @param importType=salaryItemAdjust(调薪),taxAgentAdjust(调整个税扣缴义务人),init(档案初始化)
*/
@GET
@Path("/selectSalaryArchiveColumns")
@Produces(MediaType.APPLICATION_JSON)
public String selectSalarySobList(@Context HttpServletRequest request, @Context HttpServletResponse response,@QueryParam("importType") String importType) {
User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<String,Map<String,Object>>(user).run(getSalaryArchiveWrapper(user)::selectSalaryArchiveColumns,importType);
}
// @GET
// @Path("/selectSalaryArchiveColumns")
// @Produces(MediaType.APPLICATION_JSON)
// public String selectSalarySobList(@Context HttpServletRequest request, @Context HttpServletResponse response,@QueryParam("importType") String importType) {
// User user = HrmUserVarify.getUser(request, response);
// return new ResponseResult<String,Map<String,Object>>(user).run(getSalaryArchiveWrapper(user)::selectSalaryArchiveColumns,importType);
// }
/**
* 前置校验列表添加接口
@ -59,7 +60,7 @@ public class SalaryArchiveActionAPI {
User user = HrmUserVarify.getUser(request, response);
importData.setImportType("init");
importData.setAddData(false);
return new ResponseResult<SalaryArchiveImportActionParam, Map<String, Object>>(user).run(getSalaryArchiveWrapper(user)::importSalaryArchiveInit, importData);
return new ResponseResult<SalaryArchiveImportActionParam, Map<String, Object>>(user).run(getSalaryArchiveWrapper(user)::checkSalaryArchiveInit, importData);
}
/**
@ -77,17 +78,17 @@ public class SalaryArchiveActionAPI {
return new ResponseResult<SalaryArchiveImportActionParam, Map<String, Object>>(user).run(getSalaryArchiveWrapper(user)::importSalaryArchiveInit, importData);
}
/**
* 导入薪资档案附件上传前置校验
* @param importParam
* @return
*/
@POST
@Path("/checkImportSalaryArchiveUpload")
@Produces(MediaType.APPLICATION_JSON)
public String checkParam(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryArchiveImportHandleParam importParam) {
User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<SalaryArchiveImportHandleParam, Map<String, Object>>(user).run(getSalaryArchiveWrapper(user)::checkImportSalaryArchive, importParam);
}
// /**
// * 导入薪资档案附件上传前置校验
// * @param importParam
// * @return
// */
// @POST
// @Path("/checkImportSalaryArchiveUpload")
// @Produces(MediaType.APPLICATION_JSON)
// public String checkParam(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryArchiveImportHandleParam importParam) {
// User user = HrmUserVarify.getUser(request, response);
// return new ResponseResult<SalaryArchiveImportHandleParam, Map<String, Object>>(user).run(getSalaryArchiveWrapper(user)::checkImportSalaryArchive, importParam);
// }
}

View File

@ -1,56 +1,56 @@
package com.engine.salary.process.salaryArchive;
import com.engine.common.util.ServiceUtil;
import com.engine.salary.entity.salaryarchive.param.SalaryArchiveImportActionParam;
import com.engine.salary.entity.salaryarchive.param.SalaryArchiveImportHandleParam;
import com.engine.salary.service.SalaryArchiveService;
import com.engine.salary.service.impl.SalaryArchiveServiceImpl;
import weaver.general.BaseBean;
import weaver.hrm.User;
import weaver.interfaces.workflow.action.Action;
import weaver.soa.workflow.request.RequestInfo;
import java.util.List;
import java.util.Map;
/**
* 薪资档案流程使用,导入薪资档案初始化)
* <p>Copyright: Copyright (c) 2022</p>
* <p>Company: 泛微软件</p>
*
* @author liuliang
* @version 1.0
**/
public class SalaryArchiveInitAction extends BaseBean implements Action {
private SalaryArchiveService getSalaryArchiveService(User user) {
return (SalaryArchiveService) ServiceUtil.getService(SalaryArchiveServiceImpl.class, user);
}
@Override
public String execute(RequestInfo requestInfo) {
String requestId = requestInfo.getRequestid();
String tableName = requestInfo.getRequestManager().getBillTableName();
writeLog("requestId:"+requestId);
writeLog("tableName:"+tableName);
Map<String,Object> dataMap = SalaryArchiveCommon.getImportDatas(requestId,tableName);
List<Map<String, Object>> importDatas = (List<Map<String, Object>>)dataMap.get("importDatas");
String imageId = dataMap.get("imageId") == null?"":dataMap.get("imageId").toString();
User user = new User(Integer.valueOf(importDatas.get(0).get("userId").toString()));
//手动列表添加导入
if (importDatas.size() > 0){
SalaryArchiveImportActionParam importData = SalaryArchiveImportActionParam.builder().importDatas(importDatas)
.importType("init").build();
Map<String, Object> resultMap = getSalaryArchiveService(user).importSalaryArchiveAction(importData,true);
writeLog("result :"+resultMap.toString());
}
//附件上传导入
if (!"".equals(imageId)){
SalaryArchiveImportHandleParam param = SalaryArchiveImportHandleParam.builder().imageId(imageId).importType("init").build();
Map<String,Object> responseMap = getSalaryArchiveService(user).importSalaryArchive(param);
writeLog("result :"+responseMap.toString());
}
return SUCCESS;
}
}
//package com.engine.salary.process.salaryArchive;
//
//import com.engine.common.util.ServiceUtil;
//import com.engine.salary.entity.salaryarchive.param.SalaryArchiveImportActionParam;
//import com.engine.salary.entity.salaryarchive.param.SalaryArchiveImportHandleParam;
//import com.engine.salary.service.SalaryArchiveService;
//import com.engine.salary.service.impl.SalaryArchiveServiceImpl;
//import weaver.general.BaseBean;
//import weaver.hrm.User;
//import weaver.interfaces.workflow.action.Action;
//import weaver.soa.workflow.request.RequestInfo;
//
//import java.util.List;
//import java.util.Map;
//
///**
// * 薪资档案流程使用,导入薪资档案初始化)
// * <p>Copyright: Copyright (c) 2022</p>
// * <p>Company: 泛微软件</p>
// *
// * @author liuliang
// * @version 1.0
// **/
//public class SalaryArchiveInitAction extends BaseBean implements Action {
// private SalaryArchiveService getSalaryArchiveService(User user) {
// return (SalaryArchiveService) ServiceUtil.getService(SalaryArchiveServiceImpl.class, user);
// }
// @Override
// public String execute(RequestInfo requestInfo) {
// String requestId = requestInfo.getRequestid();
// String tableName = requestInfo.getRequestManager().getBillTableName();
// writeLog("requestId:"+requestId);
// writeLog("tableName:"+tableName);
// Map<String,Object> dataMap = SalaryArchiveCommon.getImportDatas(requestId,tableName);
// List<Map<String, Object>> importDatas = (List<Map<String, Object>>)dataMap.get("importDatas");
// String imageId = dataMap.get("imageId") == null?"":dataMap.get("imageId").toString();
// User user = new User(Integer.valueOf(importDatas.get(0).get("userId").toString()));
// //手动列表添加导入
// if (importDatas.size() > 0){
//
// SalaryArchiveImportActionParam importData = SalaryArchiveImportActionParam.builder().importDatas(importDatas)
// .importType("init").build();
//
// Map<String, Object> resultMap = getSalaryArchiveService(user).importSalaryArchiveAction(importData,true);
// writeLog("result :"+resultMap.toString());
// }
// //附件上传导入
// if (!"".equals(imageId)){
// SalaryArchiveImportHandleParam param = SalaryArchiveImportHandleParam.builder().imageId(imageId).importType("init").build();
// Map<String,Object> responseMap = getSalaryArchiveService(user).importSalaryArchive(param);
// writeLog("result :"+responseMap.toString());
// }
//
// return SUCCESS;
// }
//}

View File

@ -1,54 +1,54 @@
package com.engine.salary.process.salaryArchive;
import com.engine.common.util.ServiceUtil;
import com.engine.salary.entity.salaryarchive.param.SalaryArchiveImportActionParam;
import com.engine.salary.entity.salaryarchive.param.SalaryArchiveImportHandleParam;
import com.engine.salary.service.SalaryArchiveService;
import com.engine.salary.service.impl.SalaryArchiveServiceImpl;
import weaver.general.BaseBean;
import weaver.hrm.User;
import weaver.interfaces.workflow.action.Action;
import weaver.soa.workflow.request.RequestInfo;
import java.util.List;
import java.util.Map;
/**
* 薪资档案流程使用,导入薪资档案调薪
* <p>Copyright: Copyright (c) 2022</p>
* <p>Company: 泛微软件</p>
*
* @author liuliang
* @version 1.0
**/
public class SalaryArchiveSalaryItemAdjustAction extends BaseBean implements Action {
private SalaryArchiveService getSalaryArchiveService(User user) {
return (SalaryArchiveService) ServiceUtil.getService(SalaryArchiveServiceImpl.class, user);
}
@Override
public String execute(RequestInfo requestInfo) {
String requestId = requestInfo.getRequestid();
String tableName = requestInfo.getRequestManager().getBillTableName();
writeLog("requestId:"+requestId);
writeLog("tableName:"+tableName);
Map<String,Object> dataMap = SalaryArchiveCommon.getImportDatas(requestId,tableName);
List<Map<String, Object>> importDatas = (List<Map<String, Object>>)dataMap.get("importDatas");
String imageId = dataMap.get("imageId").toString();
User user = new User(Integer.valueOf(importDatas.get(0).get("userId").toString()));
if (importDatas.size() > 0){
SalaryArchiveImportActionParam importData = SalaryArchiveImportActionParam.builder().importDatas(importDatas)
.importType("salaryItemAdjust").build();
Map<String, Object> resultMap = getSalaryArchiveService(user).importSalaryArchiveAction(importData,true);
writeLog("result :"+resultMap.toString());
}
//附件上传导入
if (!"".equals(imageId)){
SalaryArchiveImportHandleParam param = SalaryArchiveImportHandleParam.builder().imageId(imageId).importType("salaryItemAdjust").build();
Map<String,Object> responseMap = getSalaryArchiveService(user).importSalaryArchive(param);
writeLog("result :"+responseMap.toString());
}
return SUCCESS;
}
}
//package com.engine.salary.process.salaryArchive;
//
//import com.engine.common.util.ServiceUtil;
//import com.engine.salary.entity.salaryarchive.param.SalaryArchiveImportActionParam;
//import com.engine.salary.entity.salaryarchive.param.SalaryArchiveImportHandleParam;
//import com.engine.salary.service.SalaryArchiveService;
//import com.engine.salary.service.impl.SalaryArchiveServiceImpl;
//import weaver.general.BaseBean;
//import weaver.hrm.User;
//import weaver.interfaces.workflow.action.Action;
//import weaver.soa.workflow.request.RequestInfo;
//
//import java.util.List;
//import java.util.Map;
//
///**
// * 薪资档案流程使用,导入薪资档案调薪
// * <p>Copyright: Copyright (c) 2022</p>
// * <p>Company: 泛微软件</p>
// *
// * @author liuliang
// * @version 1.0
// **/
//public class SalaryArchiveSalaryItemAdjustAction extends BaseBean implements Action {
// private SalaryArchiveService getSalaryArchiveService(User user) {
// return (SalaryArchiveService) ServiceUtil.getService(SalaryArchiveServiceImpl.class, user);
// }
// @Override
// public String execute(RequestInfo requestInfo) {
// String requestId = requestInfo.getRequestid();
// String tableName = requestInfo.getRequestManager().getBillTableName();
// writeLog("requestId:"+requestId);
// writeLog("tableName:"+tableName);
// Map<String,Object> dataMap = SalaryArchiveCommon.getImportDatas(requestId,tableName);
// List<Map<String, Object>> importDatas = (List<Map<String, Object>>)dataMap.get("importDatas");
// String imageId = dataMap.get("imageId").toString();
// User user = new User(Integer.valueOf(importDatas.get(0).get("userId").toString()));
// if (importDatas.size() > 0){
//
// SalaryArchiveImportActionParam importData = SalaryArchiveImportActionParam.builder().importDatas(importDatas)
// .importType("salaryItemAdjust").build();
//
// Map<String, Object> resultMap = getSalaryArchiveService(user).importSalaryArchiveAction(importData,true);
// writeLog("result :"+resultMap.toString());
// }
// //附件上传导入
// if (!"".equals(imageId)){
// SalaryArchiveImportHandleParam param = SalaryArchiveImportHandleParam.builder().imageId(imageId).importType("salaryItemAdjust").build();
// Map<String,Object> responseMap = getSalaryArchiveService(user).importSalaryArchive(param);
// writeLog("result :"+responseMap.toString());
// }
// return SUCCESS;
// }
//}

View File

@ -1,56 +0,0 @@
package com.engine.salary.process.salaryArchive;
import com.engine.common.util.ServiceUtil;
import com.engine.salary.entity.salaryarchive.param.SalaryArchiveImportActionParam;
import com.engine.salary.entity.salaryarchive.param.SalaryArchiveImportHandleParam;
import com.engine.salary.service.SalaryArchiveService;
import com.engine.salary.service.impl.SalaryArchiveServiceImpl;
import weaver.general.BaseBean;
import weaver.hrm.User;
import weaver.interfaces.workflow.action.Action;
import weaver.soa.workflow.request.RequestInfo;
import java.util.List;
import java.util.Map;
/**
* 薪资档案流程使用,导入薪资档案调整个税扣缴义务人
* <p>Copyright: Copyright (c) 2022</p>
* <p>Company: 泛微软件</p>
*
* @author liuliang
* @version 1.0
**/
public class SalaryArchiveTaxAgentAdjustAction extends BaseBean implements Action {
private SalaryArchiveService getSalaryArchiveService(User user) {
return (SalaryArchiveService) ServiceUtil.getService(SalaryArchiveServiceImpl.class, user);
}
@Override
public String execute(RequestInfo requestInfo) {
String requestId = requestInfo.getRequestid();
String tableName = requestInfo.getRequestManager().getBillTableName();
writeLog("requestId:"+requestId);
writeLog("tableName:"+tableName);
Map<String,Object> dataMap = SalaryArchiveCommon.getImportDatas(requestId,tableName);
List<Map<String, Object>> importDatas = (List<Map<String, Object>>)dataMap.get("importDatas");
String imageId = dataMap.get("imageId").toString();
User user = new User(Integer.valueOf(importDatas.get(0).get("userId").toString()));
if (importDatas.size() > 0){
SalaryArchiveImportActionParam importData = SalaryArchiveImportActionParam.builder().importDatas(importDatas)
.importType("taxAgentAdjust").build();
Map<String, Object> resultMap = getSalaryArchiveService(user).importSalaryArchiveAction(importData,true);
writeLog("result :"+resultMap.toString());
}
//附件上传导入
if (!"".equals(imageId)){
SalaryArchiveImportHandleParam param = SalaryArchiveImportHandleParam.builder().imageId(imageId).importType("taxAgentAdjust").build();
Map<String,Object> responseMap = getSalaryArchiveService(user).importSalaryArchive(param);
writeLog("result :"+responseMap.toString());
}
return SUCCESS;
}
}

View File

@ -1,5 +1,7 @@
package com.engine.salary.service;
import com.engine.salary.entity.salaryarchive.param.SalaryArchiveImportActionParam;
import com.engine.salary.entity.salaryarchive.param.SalaryArchiveImportHandleParam;
import com.engine.salary.entity.salaryarchive.param.SalaryArchiveQueryParam;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
@ -32,5 +34,17 @@ public interface SalaryArchiveExcelService {
*/
XSSFWorkbook downloadTemplate(SalaryArchiveQueryParam queryParam);
Map<String, Object> batchImportEbatch(Map<String, Object> param);
/**
* 导入
* @param param
* @return
*/
Map<String, Object> batchImportEbatch(SalaryArchiveImportHandleParam param);
/**
* 流程初始化档案
* @param param
* @return
*/
Map<String, Object> processInit(SalaryArchiveImportActionParam param);
}

View File

@ -83,14 +83,6 @@ public interface SalaryArchiveService {
*/
XSSFWorkbook exportList(SalaryArchiveQueryParam queryParam);
/**
* 下载导入模板
*
* @param salaryArchiveImportTypeEnum
* @param queryParam
* @return
*/
XSSFWorkbook downloadTemplate(SalaryArchiveImportTypeEnum salaryArchiveImportTypeEnum, SalaryArchiveQueryParam queryParam);
/**
* 保存发薪设置
@ -131,21 +123,6 @@ public interface SalaryArchiveService {
*/
List<SalaryArchiveDataDTO> getSalaryArchiveTaxAgentData(LocalDateRange localDateRange, Collection<Long> employeeIds, Long taxAgentId);
/**
* 导入,数据入库
* @param param
* @return
*/
Map<String,Object> importSalaryArchive(SalaryArchiveImportHandleParam param);
/**
* 导入
* @param param
* @param ifImportData 数据是否入库
* @return
*/
Map<String,Object> importSalaryArchive(SalaryArchiveImportHandleParam param,boolean ifImportData);
/**
* 预览
* @param param
@ -159,14 +136,6 @@ public interface SalaryArchiveService {
*/
Map<String, Object> selectSalaryArchiveColumns(SalaryArchiveImportTypeEnum salaryArchiveImportTypeEnum);
/**
* 导入薪资档案action使用
* @param importData
* @return
*/
Map<String, Object> importSalaryArchiveAction(SalaryArchiveImportActionParam importData, boolean ifImportData);
/**
* 停薪
* @param stopSalaryParam

View File

@ -8,6 +8,7 @@ import com.engine.salary.constant.SalaryItemConstant;
import com.engine.salary.entity.salaryarchive.bo.SalaryArchiveExcelBO;
import com.engine.salary.entity.salaryarchive.dto.SalaryArchiveInitImportDTO;
import com.engine.salary.entity.salaryarchive.dto.SalaryArchiveListDTO;
import com.engine.salary.entity.salaryarchive.param.SalaryArchiveImportActionParam;
import com.engine.salary.entity.salaryarchive.param.SalaryArchiveImportHandleParam;
import com.engine.salary.entity.salaryarchive.param.SalaryArchiveQueryParam;
import com.engine.salary.entity.salaryarchive.po.SalaryArchiveItemPO;
@ -38,7 +39,7 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import weaver.file.ImageFileManager;
import weaver.general.Util;
import weaver.hrm.User;
import java.io.InputStream;
import java.util.*;
@ -59,21 +60,21 @@ public class SalaryArchiveExcelServiceImpl extends Service implements SalaryArch
return MapperProxyFactory.getProxy(SalaryArchiveMapper.class);
}
private SalaryArchiveItemService salaryArchiveItemService() {
private SalaryArchiveItemService salaryArchiveItemService(User user) {
return ServiceUtil.getService(SalaryArchiveItemServiceImpl.class, user);
}
private SalaryArchiveService salaryArchiveService() {
private SalaryArchiveService salaryArchiveService(User user) {
return ServiceUtil.getService(SalaryArchiveServiceImpl.class, user);
}
private TaxAgentService getTaxAgentService() {
private TaxAgentService getTaxAgentService(User user) {
return ServiceUtil.getService(TaxAgentServiceImpl.class, user);
}
private SalaryEmployeeService getSalaryEmployeeService() {
private SalaryEmployeeService getSalaryEmployeeService(User user) {
return ServiceUtil.getService(SalaryEmployeeServiceImpl.class, user);
}
@ -258,7 +259,7 @@ public class SalaryArchiveExcelServiceImpl extends Service implements SalaryArch
String finalNameI18n = nameI18n;
// 获取所有可被引用的薪资项目
List<SalaryItemPO> salaryItems = salaryArchiveItemService().getCanAdjustSalaryItems();
List<SalaryItemPO> salaryItems = salaryArchiveItemService(user).getCanAdjustSalaryItems();
// boolean enableHr = baseEnvInfoService.checkDisplayModule(HrmModuleConstancts.hr, tenantKey);
List<Object> header = Lists.newArrayList();
header.add(SalaryI18nUtil.getI18nLabel(85429, "姓名"));
@ -300,7 +301,7 @@ public class SalaryArchiveExcelServiceImpl extends Service implements SalaryArch
List<List<Object>> rows = new ArrayList<>();
rows.add(header);
// 获取所有个税扣缴义务人
Collection<TaxAgentPO> taxAgentList = getTaxAgentService().listAll();
Collection<TaxAgentPO> taxAgentList = getTaxAgentService(user).listAll();
Collection<SalaryArchiveListDTO> salaryArchives = getSalaryArchiveMapper().list(queryParam);
// boolean isSearchIdNo = enableHr && StringUtils.isNotEmpty(queryParam.getIdNo());
// if (isSearchIdNo) {
@ -312,9 +313,9 @@ public class SalaryArchiveExcelServiceImpl extends Service implements SalaryArch
// 开启分权并且不是薪酬模块总管理员
long employeeId = user.getUID();
if (getTaxAgentService().isNeedAuth(employeeId)) {
List<TaxAgentEmployeeDTO> taxAgentEmployees = getTaxAgentService().listTaxAgentAndEmployee(employeeId);
List<Long> taxAgentIdsAsAdmin = getTaxAgentService().listAllTaxAgentsAsAdmin(employeeId).stream().map(TaxAgentPO::getId).collect(Collectors.toList());
if (getTaxAgentService(user).isNeedAuth(employeeId)) {
List<TaxAgentEmployeeDTO> taxAgentEmployees = getTaxAgentService(user).listTaxAgentAndEmployee(employeeId);
List<Long> taxAgentIdsAsAdmin = getTaxAgentService(user).listAllTaxAgentsAsAdmin(employeeId).stream().map(TaxAgentPO::getId).collect(Collectors.toList());
salaryArchives = salaryArchives.stream().filter(f ->
// 作为管理员
taxAgentIdsAsAdmin.contains(f.getTaxAgentId())
@ -328,7 +329,7 @@ public class SalaryArchiveExcelServiceImpl extends Service implements SalaryArch
// :
new HashMap<>();
if (queryParam.getHasData()) {
List<Map<String, Object>> listMaps = salaryArchiveService()
List<Map<String, Object>> listMaps = salaryArchiveService(user)
.buildSalaryArchiveData(salaryArchives, taxAgentList, salaryItems, Boolean.FALSE);
// 组装数据
listMaps.forEach(e -> {
@ -426,18 +427,16 @@ public class SalaryArchiveExcelServiceImpl extends Service implements SalaryArch
// }
// }
/**
* 导入的数据插入到数据库中
*/
public Map<String, Object> batchImportEbatch(Map<String, Object> params) {
public Map<String, Object> batchImportEbatch(SalaryArchiveImportHandleParam param) {
// 初始化国际化标签
SalaryArchiveExcelBO.initI18n();
String imageId = params.get("imageId").toString();
String imageId = param.getImageId();
// 列表类型
String listType = params.get("listType").toString();
String listType = param.getListType();
// 导入类型
String importType = Util.null2String(params.get("importType"));
String importType = param.getImportType();
// 2.构建导入需要的数据
SalaryArchiveImportHandleParam importHandleParam = buildImportHandleParam(listType, importType);
@ -524,7 +523,9 @@ public class SalaryArchiveExcelServiceImpl extends Service implements SalaryArch
}
// 4.数据入库处理
handleImportData(importHandleParam);
if (!param.isOnlyCheck()) {
handleImportData(importHandleParam);
}
Map<String, Object> apidatas = new HashMap<>();
@ -541,6 +542,115 @@ public class SalaryArchiveExcelServiceImpl extends Service implements SalaryArch
}
}
public Map<String, Object> processInit(SalaryArchiveImportActionParam param) {
// 初始化国际化标签
SalaryArchiveExcelBO.initI18n();
// 列表类型
String listType = param.getListType();
// 导入类型
String importType = param.getImportType();
// 2.构建导入需要的数据
SalaryArchiveImportHandleParam importHandleParam = buildImportHandleParam(listType, importType);
int total = 0;
//excel数据
// 需要导入的数据
List<Map<String, Object>> data = param.getImportDatas();
if (data != null) {
total += data.size();
}
int index = 0;
int successCount = 0;
int errorCount = 0;
// 错误excel内容
// List<ExcelSheet> errorExcelSheets = new ArrayList<>();
// 用于初始化导入的相同employeeId时的处理
List<SalaryArchiveInitImportDTO> initImportData = Lists.newArrayList();
// 用于调薪和调整个税扣缴义务人的相同employeeId时取第一条记录,如果是初始化导入则有重复
List<String> allTodoSalaryArchives = Lists.newArrayList();
// 错误提示
List<Map<String, String>> excelComments = new ArrayList<>();
HashMap message = new HashMap();
// 错误sheet数据
List<Map<String, Object>> errorData = new ArrayList<>();
for (int i = 0; i < data.size(); i++) {
Map<String, Object> map = data.get(i);
List<String> headers = Lists.newArrayList();
map.keySet().forEach(headers::add);
int effectiveTimeIndex = 0;
for (int j = 0; j < headers.size(); j++) {
String header = headers.get(j);
String key = header;
if (key.equals(SalaryI18nUtil.getI18nLabel(85904, "生效日期"))) {
effectiveTimeIndex = j;
}
}
boolean isValidHeader = checkHeaders(importHandleParam, message, headers);
if (!isValidHeader) {
excelComments.add(message);
Map<String, Object> apidatas = new HashMap<>();
apidatas.put("successCount", successCount);
apidatas.put("errorCount", errorCount);
apidatas.put("errorNotice", excelComments);
return apidatas;
}
index += 1;
map = data.get(i);
map.put("index", i + 2);
// 3.校验行内容
boolean isError = SalaryArchiveExcelBO.singleRowCheck(allTodoSalaryArchives, map, headers, effectiveTimeIndex, excelComments, errorCount, importHandleParam);
if (isError) {
errorCount += 1;
// 添加错误数据
errorData.add(map);
} else {
successCount += 1;
}
// 初始化导入对重复记录校验
if (importHandleParam.isInit()) {
Map<String, Object> validMap = SalaryArchiveExcelBO
.validInitImportData(isError, i, map, excelComments, errorCount, successCount, errorData, initImportData, importHandleParam);
errorCount = Integer.parseInt(validMap.getOrDefault("errorCount", errorCount).toString());
successCount = Integer.parseInt(validMap.getOrDefault("successCount", successCount).toString());
}
// 导入进度
// if (index % 100 == 0 || index >= total) {
// salaryBatchService.sendImportRate(message.getBizId(), total, index);
// }
}
// 如果sheet包含错误数据
if (CollectionUtils.isNotEmpty(errorData)) {
// salaryBatchService.createErrorExcelSheet(headers, errorData, excelSheet.getName(), excelComments, errorExcelSheets);
}
// 4.数据入库处理
if (param.isAddData()) {
handleImportData(importHandleParam);
}
Map<String, Object> apidatas = new HashMap<>();
apidatas.put("successCount", successCount);
apidatas.put("errorCount", errorCount);
apidatas.put("errorNotice", excelComments);
return apidatas;
// 发送导入回调信息
// salaryBatchService.sendImportCallBackInfo(message, successCount, errorCount, errorExcelSheets);
}
/**
* 构建导入处理参数
*
@ -550,10 +660,10 @@ public class SalaryArchiveExcelServiceImpl extends Service implements SalaryArch
*/
private SalaryArchiveImportHandleParam buildImportHandleParam(String listType, String importType) {
// 获取所有可被引用的薪资项目
List<SalaryItemPO> salaryItems = salaryArchiveItemService().getCanAdjustSalaryItems();
List<SalaryItemPO> salaryItems = salaryArchiveItemService(user).getCanAdjustSalaryItems();
Collection<Long> salaryItemIds = salaryItems.stream().map(SalaryItemPO::getId).collect(Collectors.toList());
// 获取所有个税扣缴义务人
Collection<TaxAgentManageRangeEmployeeDTO> taxAgentList = getTaxAgentService().listTaxAgentAndEmployeeTree((long) user.getUID());
Collection<TaxAgentManageRangeEmployeeDTO> taxAgentList = getTaxAgentService(user).listTaxAgentAndEmployeeTree((long) user.getUID());
// 待定薪列表
boolean isPendingList = listType.equals(SalaryArchiveListTypeEnum.PENDING.getValue());
@ -575,11 +685,11 @@ public class SalaryArchiveExcelServiceImpl extends Service implements SalaryArch
} else if (isSuspendList) {
runStatusList = Arrays.asList(SalaryArchiveStatusEnum.FIXED.getValue(), SalaryArchiveStatusEnum.SUSPEND.getValue());
}
List<SalaryArchivePO> salaryArchiveList = salaryArchiveService().listSome(SalaryArchivePO.builder().runStatusList(runStatusList).build());
List<SalaryArchivePO> salaryArchiveList = salaryArchiveService(user).listSome(SalaryArchivePO.builder().runStatusList(runStatusList).build());
List<Long> salaryArchiveIds = salaryArchiveList.stream().map(SalaryArchivePO::getId).collect(Collectors.toList());
Map<String, SalaryArchivePO> salaryArchivesMap = SalaryEntityUtil.convert2Map(salaryArchiveList, k -> k.getEmployeeId() + "-" + k.getTaxAgentId());
List<TaxAgentEmployeePO> employees = getTaxAgentService().listEmployees();
List<TaxAgentEmployeePO> employees = getTaxAgentService(user).listEmployees();
// 查询人员状态
// List<HrmStatus> hrmStatusList = hrmCommonHrmStatusService.list(tenantKey);
@ -600,7 +710,7 @@ public class SalaryArchiveExcelServiceImpl extends Service implements SalaryArch
// 调薪导入
.isSalaryItemAdjust(isSalaryItemAdjust)
// 获取租户下所有的人员
.employees(getSalaryEmployeeService().listAll())
.employees(getSalaryEmployeeService(user).listAll())
// .hrmStatusList(hrmStatusList)
// 获取所有个税扣缴义务人
.taxAgentList(taxAgentList)
@ -610,10 +720,10 @@ public class SalaryArchiveExcelServiceImpl extends Service implements SalaryArch
.salaryItemIds(salaryItemIds)
// 查询已生效的薪资项目数据
.effectiveItemListMap(
isSuspendList ? Collections.emptyMap() : salaryArchiveItemService().getEffectiveItemListMap(salaryArchiveIds, isNoNeedSalaryItem, salaryItemIds))
isSuspendList ? Collections.emptyMap() : salaryArchiveItemService(user).getEffectiveItemListMap(salaryArchiveIds, isNoNeedSalaryItem, salaryItemIds))
// 查询未生效的薪资项目数据
.ineffectiveItemListMap(
isSuspendList ? Collections.emptyMap() : salaryArchiveItemService().getIneffectiveItemListMap(salaryArchiveIds, isNoNeedSalaryItem, salaryItemIds))
isSuspendList ? Collections.emptyMap() : salaryArchiveItemService(user).getIneffectiveItemListMap(salaryArchiveIds, isNoNeedSalaryItem, salaryItemIds))
// 当前时间
.nowTime(new Date())
// 当天

View File

@ -510,9 +510,9 @@ public class SalaryArchiveController {
@POST
@Path("/importSalaryArchive")
@Produces(MediaType.APPLICATION_JSON)
public String importSalaryArchive(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody Map<String, Object> importParam) {
public String importSalaryArchive(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryArchiveImportHandleParam importParam) {
User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<Map<String, Object>, Map<String, Object>>(user).run(getSalaryArchiveWrapper(user)::importSalaryArchive, importParam);
return new ResponseResult<SalaryArchiveImportHandleParam, Map<String, Object>>(user).run(getSalaryArchiveWrapper(user)::importSalaryArchive, importParam);
}
//人员状态列表

View File

@ -486,7 +486,7 @@ public class SalaryArchiveWrapper extends Service {
* @param param
* @return
*/
public Map<String, Object> importSalaryArchive(Map<String, Object> param) {
public Map<String, Object> importSalaryArchive(SalaryArchiveImportHandleParam param) {
return getSalaryArchiveExcelService(user).batchImportEbatch(param);
}
@ -509,7 +509,7 @@ public class SalaryArchiveWrapper extends Service {
param.setImageId(rs.getString("imagefileid"));
}
}
return getSalaryArchiveService(user).importSalaryArchive(param, false);
return getSalaryArchiveExcelService(user).batchImportEbatch(param);
}
@ -520,7 +520,8 @@ public class SalaryArchiveWrapper extends Service {
* @return
*/
public Map<String, Object> checkImportSalaryArchiveParam(SalaryArchiveImportHandleParam param) {
return getSalaryArchiveService(user).importSalaryArchive(param, false);
param.setOnlyCheck(true);
return getSalaryArchiveExcelService(user).batchImportEbatch(param);
}
/**
@ -546,20 +547,28 @@ public class SalaryArchiveWrapper extends Service {
}
public Map<String, Object> checkSalaryArchiveInit(SalaryArchiveImportActionParam importData) {
importData.setImportType("init");
importData.setListType("FIXED");
importData.setAddData(false);
return getSalaryArchiveExcelService(user).processInit(importData);
}
public Map<String, Object> importSalaryArchiveInit(SalaryArchiveImportActionParam importData) {
return getSalaryArchiveService(user).importSalaryArchiveAction(importData, importData.isAddData());
importData.setImportType("init");
importData.setListType("FIXED");
importData.setAddData(true);
return getSalaryArchiveExcelService(user).processInit(importData);
}
public Map<String, Object> importSalaryArchiveSalaryItemAdjust(SalaryArchiveImportActionParam importData) {
importData.setImportType("salaryItemAdjust");
return getSalaryArchiveService(user).importSalaryArchiveAction(importData, false);
}
// public Map<String, Object> importSalaryArchiveSalaryItemAdjust(SalaryArchiveImportActionParam importData) {
// importData.setListType("FIXED");
// importData.setImportType("salaryItemAdjust");
// importData.setAddData(true);
// return getSalaryArchiveExcelService(user).processInit(importData);
// }
public Map<String, Object> importSalaryArchiveTaxAgentAdjust(SalaryArchiveImportActionParam importData) {
importData.setImportType("taxAgentAdjust");
return getSalaryArchiveService(user).importSalaryArchiveAction(importData, false);
}
/**
* 停薪