diff --git a/src/com/engine/salary/action/CheckEditSIArchiveAction.java b/src/com/engine/salary/action/CheckEditSIArchiveAction.java index 936a1b697..f4f8d9165 100644 --- a/src/com/engine/salary/action/CheckEditSIArchiveAction.java +++ b/src/com/engine/salary/action/CheckEditSIArchiveAction.java @@ -1,7 +1,7 @@ package com.engine.salary.action; import com.engine.common.util.ServiceUtil; -import com.engine.salary.entity.siarchives.param.SIArchiveImportActionParam; +import com.engine.salary.entity.siarchives.param.SIArchiveImportParam; import com.engine.salary.service.SISchemeService; import com.engine.salary.service.impl.SISchemeServiceImpl; import com.engine.salary.util.SalaryEntityUtil; @@ -66,7 +66,7 @@ public class CheckEditSIArchiveAction implements Action { //福利执行状态 String runStatus = list.stream().filter(f -> f.salaryName.equals("档案状态")).findFirst().map(CheckEditSIArchiveAction.SalaryField::getValue).orElse("1"); - SIArchiveImportActionParam build = SIArchiveImportActionParam.builder() + SIArchiveImportParam build = SIArchiveImportParam.builder() .importDatas(importData) .runStatus(runStatus) .build(); diff --git a/src/com/engine/salary/action/EditSIArchiveAction.java b/src/com/engine/salary/action/EditSIArchiveAction.java index 1fb188ed1..22dda2d3e 100644 --- a/src/com/engine/salary/action/EditSIArchiveAction.java +++ b/src/com/engine/salary/action/EditSIArchiveAction.java @@ -1,7 +1,7 @@ package com.engine.salary.action; import com.engine.common.util.ServiceUtil; -import com.engine.salary.entity.siarchives.param.SIArchiveImportActionParam; +import com.engine.salary.entity.siarchives.param.SIArchiveImportParam; import com.engine.salary.service.SISchemeService; import com.engine.salary.service.impl.SISchemeServiceImpl; import com.engine.salary.util.SalaryEntityUtil; @@ -65,7 +65,7 @@ public class EditSIArchiveAction implements Action { //福利执行状态 String runStatus = list.stream().filter(f -> f.salaryName.equals("档案状态")).findFirst().map(EditSIArchiveAction.SalaryField::getValue).orElse("1"); - SIArchiveImportActionParam build = SIArchiveImportActionParam.builder() + SIArchiveImportParam build = SIArchiveImportParam.builder() .importDatas(importData) .runStatus(runStatus) .build(); diff --git a/src/com/engine/salary/action/EditToPaySIArchiveAction.java b/src/com/engine/salary/action/EditToPaySIArchiveAction.java new file mode 100644 index 000000000..c736f9698 --- /dev/null +++ b/src/com/engine/salary/action/EditToPaySIArchiveAction.java @@ -0,0 +1,181 @@ +package com.engine.salary.action; + +import com.engine.common.util.ServiceUtil; +import com.engine.salary.entity.siarchives.param.SIArchiveImportParam; +import com.engine.salary.entity.siarchives.po.InsuranceArchivesBaseInfoPO; +import com.engine.salary.entity.taxagent.po.TaxAgentPO; +import com.engine.salary.enums.siaccount.EmployeeStatusEnum; +import com.engine.salary.mapper.siarchives.InsuranceBaseInfoMapper; +import com.engine.salary.mapper.taxagent.TaxAgentMapper; +import com.engine.salary.service.SIArchivesService; +import com.engine.salary.service.SISchemeService; +import com.engine.salary.service.impl.SIArchivesServiceImpl; +import com.engine.salary.service.impl.SISchemeServiceImpl; +import com.engine.salary.util.SalaryEntityUtil; +import com.engine.salary.util.db.MapperProxyFactory; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import weaver.conn.RecordSet; +import weaver.general.Util; +import weaver.hrm.User; +import weaver.interfaces.workflow.action.Action; +import weaver.soa.workflow.request.Property; +import weaver.soa.workflow.request.RequestInfo; + +import java.util.*; +import java.util.stream.Collectors; + +/** + * @Author: sy + * @Description: 编辑并增员福利档案 + * @Date: 2023/9/8 + **/ +@Slf4j +public class EditToPaySIArchiveAction implements Action { + private SISchemeService getSISchemeService(User user) { + return ServiceUtil.getService(SISchemeServiceImpl.class,user); + } + + private InsuranceBaseInfoMapper getInsuranceBaseInfoMapper() { + return MapperProxyFactory.getProxy(InsuranceBaseInfoMapper.class); + } + + private SIArchivesService getSIArchivesService(User user) { + return ServiceUtil.getService(SIArchivesServiceImpl.class,user); + } + + private TaxAgentMapper getTaxAgentMapper() { + return MapperProxyFactory.getProxy(TaxAgentMapper.class); + } + + private String tableName; + + + public String getTableName() { + return tableName; + } + + public void setTableName(String tableName) { + this.tableName = tableName; + } + + @Override + public String execute(RequestInfo requestInfo) { + try { + Property[] properties = requestInfo.getMainTableInfo().getProperty(); + Map fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName, + property -> Util.null2String(property.getValue()))); + + RecordSet rs = new RecordSet(); + + String queryImageId = "select salaryname,processfield from " + tableName + " where workflowid = ?"; + rs.executeQuery(queryImageId, requestInfo.getWorkflowid()); + + List list = new ArrayList<>(); + while (rs.next()) { + String processField = rs.getString("processfield"); + String salaryName = rs.getString("salaryname"); + String value = fieldMap.get(processField); + list.add(new EditToPaySIArchiveAction.SalaryField(processField, salaryName, value)); + } + List> importData = new ArrayList<>(); + importData.add(SalaryEntityUtil.convert2Map(list, EditToPaySIArchiveAction.SalaryField::getSalaryName, EditToPaySIArchiveAction.SalaryField::getValue)); + //福利执行状态 + String runStatus = EmployeeStatusEnum.STAY_ADD.getValue(); + + SIArchiveImportParam build = SIArchiveImportParam.builder() + .importDatas(importData) + .runStatus(runStatus) + .build(); + + //操作人 + String uid = list.stream().filter(f -> f.salaryName.equals("操作人")).findFirst().map(EditToPaySIArchiveAction.SalaryField::getValue).orElse("1"); + //更新/新建档案数据 + Map map = getSISchemeService(new User(Integer.parseInt(uid))).addSIArchive(build); + + List errorNotice = (List) map.get("errorData"); + if (CollectionUtils.isNotEmpty(errorNotice)) { + log.error("福利档案编辑并增员存在异常 requestId:{} ,参数:{}, map:{}", requestInfo.getRequestid(), build, map); + List> excelComments = (List>) map.get("errorData"); + StringBuilder message = new StringBuilder(""); + for (Map comments : excelComments) { + message.append(comments.get("message")).append("\n"); + } + requestInfo.getRequestManager().setMessage(message.toString()); + return FAILURE_AND_CONTINUE; + } + //增员 + String taxAgentName = importData.get(0).get("个税扣缴义务人").toString(); + List taxAgentPOS = getTaxAgentMapper().listByName(taxAgentName); + if(CollectionUtils.isEmpty(taxAgentPOS)){ + requestInfo.getRequestManager().setMessage("个税扣缴义务人不存在!"); + return FAILURE_AND_CONTINUE; + } + Long taxAgentId = Long.valueOf(taxAgentPOS.get(0).getId()); + Long employeeId = Long.valueOf(list.stream().filter(f -> f.salaryName.equals("员工id")).findFirst().map(EditToPaySIArchiveAction.SalaryField::getValue).orElse("-1")); + User user = new User(Integer.parseInt(uid)); + // 获取福利档案基础信息 + InsuranceArchivesBaseInfoPO insuranceArchivesBaseInfoPO = getInsuranceBaseInfoMapper().getOneByEmployeeIdAndPayOrg(taxAgentId, employeeId); + if(insuranceArchivesBaseInfoPO == null){ + requestInfo.getRequestManager().setMessage("该个税扣缴义务人下该员工不存在福利档案,请检查后重试!"); + return FAILURE_AND_CONTINUE; + } else if(!insuranceArchivesBaseInfoPO.getRunStatus().equals(EmployeeStatusEnum.STAY_ADD.getValue())){ + requestInfo.getRequestManager().setMessage("该个税扣缴义务人下该员工的福利档案状态不是待增员,无法进行增员操作,请检查后重试!"); + return FAILURE_AND_CONTINUE; + } + //增员 + Map resultMap = getSIArchivesService(user).stayAddToPay(Collections.singletonList(insuranceArchivesBaseInfoPO.getId())); + if (resultMap.get("type").toString().equals("fail")) { + requestInfo.getRequestManager().setMessage(resultMap.get("msg").toString()); + return FAILURE_AND_CONTINUE; + } + + + } catch (Exception e) { + log.error("福利档案编辑并增员异常", e); + requestInfo.getRequestManager().setMessage(e.getMessage()); + return FAILURE_AND_CONTINUE; + } + return SUCCESS; + } + + + class SalaryField { + + private String processField; + + private String salaryName; + + private String value; + + public String getProcessField() { + return processField; + } + + public void setProcessField(String processField) { + this.processField = processField; + } + + public String getSalaryName() { + return salaryName; + } + + public void setSalaryName(String salaryName) { + this.salaryName = salaryName; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public SalaryField(String processField, String salaryName, String value) { + this.processField = processField; + this.salaryName = salaryName; + this.value = value; + } + } +} diff --git a/src/com/engine/salary/action/EditToStopSIArchiveAction.java b/src/com/engine/salary/action/EditToStopSIArchiveAction.java new file mode 100644 index 000000000..80b16ab93 --- /dev/null +++ b/src/com/engine/salary/action/EditToStopSIArchiveAction.java @@ -0,0 +1,184 @@ +package com.engine.salary.action; + +import com.engine.common.util.ServiceUtil; +import com.engine.salary.entity.siarchives.param.SIArchiveImportParam; +import com.engine.salary.entity.siarchives.po.InsuranceArchivesBaseInfoPO; +import com.engine.salary.entity.taxagent.po.TaxAgentPO; +import com.engine.salary.enums.siaccount.EmployeeStatusEnum; +import com.engine.salary.mapper.siarchives.InsuranceBaseInfoMapper; +import com.engine.salary.mapper.taxagent.TaxAgentMapper; +import com.engine.salary.service.SIArchivesService; +import com.engine.salary.service.SISchemeService; +import com.engine.salary.service.impl.SIArchivesServiceImpl; +import com.engine.salary.service.impl.SISchemeServiceImpl; +import com.engine.salary.util.SalaryEntityUtil; +import com.engine.salary.util.db.MapperProxyFactory; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import weaver.conn.RecordSet; +import weaver.general.Util; +import weaver.hrm.User; +import weaver.interfaces.workflow.action.Action; +import weaver.soa.workflow.request.Property; +import weaver.soa.workflow.request.RequestInfo; + +import java.util.*; +import java.util.stream.Collectors; + +/** + * @Author: sy + * @Description: 编辑并减员福利档案 + * @Date: 2023/9/8 + **/ +@Slf4j +public class EditToStopSIArchiveAction implements Action { + private SISchemeService getSISchemeService(User user) { + return ServiceUtil.getService(SISchemeServiceImpl.class,user); + } + + private InsuranceBaseInfoMapper getInsuranceBaseInfoMapper() { + return MapperProxyFactory.getProxy(InsuranceBaseInfoMapper.class); + } + + private SIArchivesService getSIArchivesService(User user) { + return ServiceUtil.getService(SIArchivesServiceImpl.class,user); + } + + private TaxAgentMapper getTaxAgentMapper() { + return MapperProxyFactory.getProxy(TaxAgentMapper.class); + } + + private String tableName; + + + public String getTableName() { + return tableName; + } + + public void setTableName(String tableName) { + this.tableName = tableName; + } + + @Override + public String execute(RequestInfo requestInfo) { + try { + Property[] properties = requestInfo.getMainTableInfo().getProperty(); + Map fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName, + property -> Util.null2String(property.getValue()))); + + RecordSet rs = new RecordSet(); + + String queryImageId = "select salaryname,processfield from " + tableName + " where workflowid = ?"; + rs.executeQuery(queryImageId, requestInfo.getWorkflowid()); + + List list = new ArrayList<>(); + while (rs.next()) { + String processField = rs.getString("processfield"); + String salaryName = rs.getString("salaryname"); + String value = fieldMap.get(processField); + list.add(new EditToStopSIArchiveAction.SalaryField(processField, salaryName, value)); + } + List> importData = new ArrayList<>(); + importData.add(SalaryEntityUtil.convert2Map(list, EditToStopSIArchiveAction.SalaryField::getSalaryName, EditToStopSIArchiveAction.SalaryField::getValue)); + //福利执行状态 + String runStatus = EmployeeStatusEnum.PAYING.getValue(); + + SIArchiveImportParam build = SIArchiveImportParam.builder() + .importDatas(importData) + .runStatus(runStatus) + .build(); + + //操作人 + String uid = list.stream().filter(f -> f.salaryName.equals("操作人")).findFirst().map(EditToStopSIArchiveAction.SalaryField::getValue).orElse("1"); + User user = new User(Integer.parseInt(uid)); + //更新/新建档案数据 + Map map = getSISchemeService(new User(Integer.parseInt(uid))).addSIArchive(build); + + List errorNotice = (List) map.get("errorData"); + if (CollectionUtils.isNotEmpty(errorNotice)) { + log.error("福利档案编辑并减员存在异常 requestId:{} ,参数:{}, map:{}", requestInfo.getRequestid(), build, map); + List> excelComments = (List>) map.get("errorData"); + StringBuilder message = new StringBuilder(""); + for (Map comments : excelComments) { + message.append(comments.get("message")).append("\n"); + } + requestInfo.getRequestManager().setMessage(message.toString()); + return FAILURE_AND_CONTINUE; + } + //刷新福利档案状态 + getSIArchivesService(user).handleStayDelData(Integer.parseInt(uid)); + //减员 + String taxAgentName = importData.get(0).get("个税扣缴义务人").toString(); + List taxAgentPOS = getTaxAgentMapper().listByName(taxAgentName); + if(CollectionUtils.isEmpty(taxAgentPOS)){ + requestInfo.getRequestManager().setMessage("个税扣缴义务人不存在!"); + return FAILURE_AND_CONTINUE; + } + Long taxAgentId = Long.valueOf(taxAgentPOS.get(0).getId()); + Long employeeId = Long.valueOf(list.stream().filter(f -> f.salaryName.equals("员工id")).findFirst().map(EditToStopSIArchiveAction.SalaryField::getValue).orElse("-1")); + + // 获取福利档案 + InsuranceArchivesBaseInfoPO insuranceArchivesBaseInfoPO = getInsuranceBaseInfoMapper().getOneByEmployeeIdAndPayOrg(taxAgentId, employeeId); + if(insuranceArchivesBaseInfoPO == null){ + requestInfo.getRequestManager().setMessage("该个税扣缴义务人下该员工不存在福利档案,请检查后重试!"); + return FAILURE_AND_CONTINUE; + } else if(!insuranceArchivesBaseInfoPO.getRunStatus().equals(EmployeeStatusEnum.STAY_DEL.getValue())){ + requestInfo.getRequestManager().setMessage("该个税扣缴义务人下该员工的福利档案状态不是待减员,无法进行减员操作,请检查后重试!"); + return FAILURE_AND_CONTINUE; + } + //减员 + Map resultMap = getSIArchivesService(user).stayDelToStop(Collections.singletonList(insuranceArchivesBaseInfoPO.getId())); + if (resultMap.get("type").toString().equals("fail")) { + requestInfo.getRequestManager().setMessage(resultMap.get("msg").toString()); + return FAILURE_AND_CONTINUE; + } + + + } catch (Exception e) { + log.error("福利档案编辑并减员异常", e); + requestInfo.getRequestManager().setMessage(e.getMessage()); + return FAILURE_AND_CONTINUE; + } + return SUCCESS; + } + + + class SalaryField { + + private String processField; + + private String salaryName; + + private String value; + + public String getProcessField() { + return processField; + } + + public void setProcessField(String processField) { + this.processField = processField; + } + + public String getSalaryName() { + return salaryName; + } + + public void setSalaryName(String salaryName) { + this.salaryName = salaryName; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public SalaryField(String processField, String salaryName, String value) { + this.processField = processField; + this.salaryName = salaryName; + this.value = value; + } + } +} diff --git a/src/com/engine/salary/action/StayAddToPaySIArchiveAction.java b/src/com/engine/salary/action/StayAddToPaySIArchiveAction.java index 7f55d7d8a..c0bc0c0b0 100644 --- a/src/com/engine/salary/action/StayAddToPaySIArchiveAction.java +++ b/src/com/engine/salary/action/StayAddToPaySIArchiveAction.java @@ -82,7 +82,7 @@ public class StayAddToPaySIArchiveAction implements Action { requestInfo.getRequestManager().setMessage("个税扣缴义务人不存在!"); return FAILURE_AND_CONTINUE; } - Long taxAgentId = Long.valueOf( taxAgentPOS.get(0).getId() ); + Long taxAgentId = Long.valueOf(taxAgentPOS.get(0).getId()); Long employeeId = Long.valueOf(importDataMap.getOrDefault("员工id", "-1").toString()); //操作人 diff --git a/src/com/engine/salary/entity/siarchives/param/SIArchiveImportParam.java b/src/com/engine/salary/entity/siarchives/param/SIArchiveImportParam.java new file mode 100644 index 000000000..24e53e232 --- /dev/null +++ b/src/com/engine/salary/entity/siarchives/param/SIArchiveImportParam.java @@ -0,0 +1,56 @@ +package com.engine.salary.entity.siarchives.param; + +import com.engine.salary.entity.taxagent.param.TaxAgentRangeSaveParam; +import com.engine.salary.enums.siaccount.EmployeeStatusEnum; +import com.engine.salary.util.valid.DataCheck; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; +import java.util.Map; + +/** + * @Author: sy + * @Description: 社保福利档案导入处理参数 + * @Date: 2022/11/10 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SIArchiveImportParam { + + /** + * 上传文件id + */ + String imageId; + + /** + * 导入类型 + * + * @see EmployeeStatusEnum + */ + + String runStatus; + + /** + * 导入数据 + * + */ + List> importDatas; + + private boolean addData; + + /** + * 待生成的人员范围 + */ + List taxAgentRanges; + /** + * 是否是流程 + */ + boolean isProcess; + + +} diff --git a/src/com/engine/salary/process/siArchives/SIArchiveActionAPI.java b/src/com/engine/salary/process/siArchives/SIArchiveActionAPI.java index 529f47139..657cd3e60 100644 --- a/src/com/engine/salary/process/siArchives/SIArchiveActionAPI.java +++ b/src/com/engine/salary/process/siArchives/SIArchiveActionAPI.java @@ -1,7 +1,7 @@ package com.engine.salary.process.siArchives; import com.engine.common.util.ServiceUtil; -import com.engine.salary.entity.siarchives.param.SIArchiveImportActionParam; +import com.engine.salary.entity.siarchives.param.SIArchiveImportParam; import com.engine.salary.enums.siaccount.EmployeeStatusEnum; import com.engine.salary.service.SISchemeService; import com.engine.salary.service.impl.SISchemeServiceImpl; @@ -40,11 +40,11 @@ public class SIArchiveActionAPI { @POST @Path("/checkImportSIArchiveListAdd") @Produces(MediaType.APPLICATION_JSON) - public String checkImportSIArchiveListAdd(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SIArchiveImportActionParam importData) { + public String checkImportSIArchiveListAdd(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SIArchiveImportParam importData) { User user = HrmUserVarify.getUser(request, response); importData.setRunStatus(EmployeeStatusEnum.STAY_ADD.getValue()); importData.setAddData(false); - return new ResponseResult>(user).run(getService(user)::checkSIArchiveAdd, importData); + return new ResponseResult>(user).run(getService(user)::checkSIArchiveAdd, importData); } /** @@ -55,10 +55,10 @@ public class SIArchiveActionAPI { @POST @Path("/addSIArchive") @Produces(MediaType.APPLICATION_JSON) - public String addSIArchive(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SIArchiveImportActionParam importData) { + public String addSIArchive(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SIArchiveImportParam importData) { User user = HrmUserVarify.getUser(request, response); importData.setRunStatus(EmployeeStatusEnum.STAY_ADD.getValue()); importData.setAddData(true); - return new ResponseResult>(user).run(getService(user)::addSIArchive, importData); + return new ResponseResult>(user).run(getService(user)::addSIArchive, importData); } } diff --git a/src/com/engine/salary/service/SIArchivesService.java b/src/com/engine/salary/service/SIArchivesService.java index ee80e8731..fb4c63752 100644 --- a/src/com/engine/salary/service/SIArchivesService.java +++ b/src/com/engine/salary/service/SIArchivesService.java @@ -101,4 +101,6 @@ public interface SIArchivesService { * @param longs */ void deleteArchive(Collection longs); + + void handleStayDelData(long currentEmployeeId); } diff --git a/src/com/engine/salary/service/SISchemeService.java b/src/com/engine/salary/service/SISchemeService.java index d7a691b63..5e0b8d8de 100644 --- a/src/com/engine/salary/service/SISchemeService.java +++ b/src/com/engine/salary/service/SISchemeService.java @@ -2,12 +2,11 @@ package com.engine.salary.service; import com.cloudstore.eccom.pc.table.WeaTableColumn; import com.engine.salary.entity.siarchives.param.InsuranceArchivesListParam; -import com.engine.salary.entity.siarchives.param.SIArchiveImportActionParam; +import com.engine.salary.entity.siarchives.param.SIArchiveImportParam; import com.engine.salary.entity.siarchives.po.InsuranceArchivesEmployeePO; import com.engine.salary.entity.sischeme.dto.InsuranceSchemeListDTO; import com.engine.salary.entity.sischeme.param.InsuranceSchemeDetailUpdateParam; import com.engine.salary.entity.sischeme.param.InsuranceSchemeParam; -import com.engine.salary.entity.sischeme.param.SISchemaImportParam; import com.engine.salary.entity.sischeme.po.InsuranceSchemeDetailPO; import com.engine.salary.util.page.PageInfo; import org.apache.poi.xssf.usermodel.XSSFWorkbook; @@ -66,15 +65,15 @@ public interface SISchemeService { List buildWeaTableColumns(List insuranceArchivesEmployeePOS, Long employeeId); - Map preview(SISchemaImportParam siSchemaImportParam); + Map preview(SIArchiveImportParam param); - Map batchImportEbatch(SISchemaImportParam param); + Map batchImportEbatch(SIArchiveImportParam param); XSSFWorkbook exportTemplate(InsuranceArchivesListParam param); - Map checkSIArchiveAdd(SIArchiveImportActionParam siArchiveImportActionParam); + Map checkSIArchiveAdd(SIArchiveImportParam param); - Map addSIArchive(SIArchiveImportActionParam siArchiveImportActionParam); + Map addSIArchive(SIArchiveImportParam param); /** * 编辑方案明细表数据 diff --git a/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java b/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java index 43f2052a5..81bf03d9f 100644 --- a/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java @@ -209,8 +209,9 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService * 福利档案中待减员数据自动处理 * @param currentEmployeeId */ + @Override @Transactional(rollbackFor = Exception.class) - private void handleStayDelData(long currentEmployeeId) { + public void handleStayDelData(long currentEmployeeId) { log.info("福利档案中待减员数据自动处理逻辑开始:"); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM"); String today = simpleDateFormat.format(new Date()); diff --git a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java index ecd8b2422..c2fd03944 100644 --- a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java @@ -14,19 +14,21 @@ import com.engine.salary.encrypt.AESEncryptUtil; import com.engine.salary.encrypt.EncryptUtil; import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.siarchives.param.InsuranceArchivesListParam; -import com.engine.salary.entity.siarchives.param.SIArchiveImportActionParam; +import com.engine.salary.entity.siarchives.param.SIArchiveImportParam; import com.engine.salary.entity.siarchives.po.*; import com.engine.salary.entity.sicategory.po.ICategoryPO; import com.engine.salary.entity.sischeme.dto.InsuranceSchemeListDTO; import com.engine.salary.entity.sischeme.param.InsuranceSchemeDetailUpdateParam; import com.engine.salary.entity.sischeme.param.InsuranceSchemeParam; -import com.engine.salary.entity.sischeme.param.SISchemaImportParam; import com.engine.salary.entity.sischeme.po.InsuranceSchemeDetailPO; import com.engine.salary.entity.sischeme.po.InsuranceSchemePO; import com.engine.salary.entity.taxagent.dto.TaxAgentEmployeeDTO; import com.engine.salary.entity.taxagent.dto.TaxAgentManageRangeEmployeeDTO; +import com.engine.salary.entity.taxagent.param.TaxAgentManageRangeSaveParam; +import com.engine.salary.entity.taxagent.param.TaxAgentRangeSaveParam; import com.engine.salary.entity.taxagent.po.TaxAgentPO; import com.engine.salary.enums.UserStatusEnum; +import com.engine.salary.enums.salarysob.TargetTypeEnum; import com.engine.salary.enums.siaccount.EmployeeStatusEnum; import com.engine.salary.enums.sicategory.*; import com.engine.salary.exception.SalaryRunTimeException; @@ -39,10 +41,7 @@ import com.engine.salary.mapper.sischeme.InsuranceSchemeDetailMapper; import com.engine.salary.mapper.sischeme.InsuranceSchemeMapper; import com.engine.salary.mapper.sys.SalarySysConfMapper; import com.engine.salary.mapper.taxagent.TaxAgentMapper; -import com.engine.salary.service.SIImportService; -import com.engine.salary.service.SISchemeService; -import com.engine.salary.service.SalaryEmployeeService; -import com.engine.salary.service.TaxAgentService; +import com.engine.salary.service.*; import com.engine.salary.sys.entity.po.SalarySysConfPO; import com.engine.salary.sys.entity.vo.OrderRuleVO; import com.engine.salary.sys.service.SalarySysConfService; @@ -146,6 +145,10 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { return MapperProxyFactory.getProxy(InsuranceBaseInfoMapper.class); } + public TaxAgentManageRangeService getTaxAgentManageRangeService(User user) { + return ServiceUtil.getService(TaxAgentManageRangeServiceImpl.class, user); + } + @Override public Map getForm(Map params) { return commandExecutor.execute(new SISchemeGetFormCmd(params, user)); @@ -608,7 +611,7 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { * 导入的数据插入到数据库中 */ @Override - public Map preview(SISchemaImportParam param) { + public Map preview(SIArchiveImportParam param) { ValidUtil.doValidator(param); InputStream fileInputStream = null; try { @@ -626,15 +629,16 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { /** * 导入的数据插入到数据库中 */ - public Map batchImportEbatch(SISchemaImportParam param) { + public Map batchImportEbatch(SIArchiveImportParam param) { ValidUtil.doValidator(param); + param.setProcess(false); if (StringUtils.isBlank(param.getRunStatus())) { throw new SalaryRunTimeException("福利档案执行状态未在导入条件设置中添加!"); } // List excelSheets = message.getBatchFile().getExcelSheets(); // 租户key -// String tenantKey = message.getTenantKey().toLowerCase(); +// String tenantKey = message.getTenantKey().toLowerCase();EditSIArchiveAction //操作员id Long creator = (long) user.getUID(); //获取所有福利类型的id-name结合 @@ -699,7 +703,7 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { singleAccount.add(cellData); } - isError = singleAccountCheck(singleAccount, welfareMap, insuranceArchivesAccountPOS, employeeByIds, excelComments, errorCount + 1, schemeNameIdMap, paymentNameIdMap, creator, i + 2, openDevolution, taxAgentManageRangeEmployeeTree, param.getRunStatus()); + isError = singleAccountCheck(singleAccount, welfareMap, insuranceArchivesAccountPOS, employeeByIds, excelComments, errorCount + 1, schemeNameIdMap, paymentNameIdMap, creator, i + 2, openDevolution, taxAgentManageRangeEmployeeTree, param); if (isError) { errorCount += 1; // 添加错误数据 @@ -716,7 +720,7 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { // } // 数据入库处理 - handleImportData(insuranceArchivesAccountPOS); + handleImportData(insuranceArchivesAccountPOS, param); // 发送导入回调信息 // salaryBatchService.sendImportCallBackInfo(message, successCount, errorCount, errorExcelSheets); @@ -755,8 +759,14 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { return userState; } - public boolean singleAccountCheck(List> singleAccount, Map welfareMap, List insuranceArchivesAccountPOS, List employeeByIds, List> excelComments, int i, Map schemeNameIdMap, Map paymentNameIdMap, Long creator, int index, Boolean openDevolution, List taxAgentManageRangeEmployeeTree, String runStatus) { + public boolean singleAccountCheck(List> singleAccount, Map welfareMap, + List insuranceArchivesAccountPOS, List employeeByIds, + List> excelComments, int i, Map schemeNameIdMap, + Map paymentNameIdMap, Long creator, int index, Boolean openDevolution, + List taxAgentManageRangeEmployeeTree, SIArchiveImportParam param) { boolean isError = false; + String runStatus = param.getRunStatus(); + // String userName = (String) singleAccount.get(0).get(SalaryI18nUtil.getI18nLabel(85429, "姓名")); // String deparmentName = (String) singleAccount.get(1).get(SalaryI18nUtil.getI18nLabel(86185, "部门")); // String mobile = (String) singleAccount.get(2).get(SalaryI18nUtil.getI18nLabel(86186, "手机号")); @@ -883,10 +893,26 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { TaxAgentManageRangeEmployeeDTO taxAgentManageRangeEmployeeDTO = taxAgentManageRangeEmployeeTree.stream().filter(tax -> tax.getTaxAgentId().equals(paymentOrgId)).findFirst().get(); Optional o = taxAgentManageRangeEmployeeDTO.getEmployeeList().stream().map(TaxAgentManageRangeEmployeeDTO.TaxAgentEmployee::getEmployeeId).filter(e -> e.equals(employeeId)).findFirst(); if (!o.isPresent()) { - Map errorMessageMap = Maps.newHashMap(); - errorMessageMap.put("message", rowIndex + SalaryI18nUtil.getI18nLabel(100312, "该条数据不在个税扣缴义务人人员范围内,不可导入")); - excelComments.add(errorMessageMap); - isError = true; + if (param.isProcess()) { + //流程中自动将人员添加进个税扣缴义务人中 + TaxAgentManageRangeSaveParam.TaxAgentSubAdminRangeTargetParam taxAgentSubAdminRangeTargetParam = new TaxAgentManageRangeSaveParam.TaxAgentSubAdminRangeTargetParam(); + taxAgentSubAdminRangeTargetParam.setTargetId(employeeId); + taxAgentSubAdminRangeTargetParam.setTargetType(TargetTypeEnum.EMPLOYEE); + + TaxAgentRangeSaveParam taxAgentRangeSaveParam = new TaxAgentRangeSaveParam(); + taxAgentRangeSaveParam.setTaxAgentId(paymentOrgId); + taxAgentRangeSaveParam.setIncludeType(1); + taxAgentRangeSaveParam.setEmployeeStatus(Arrays.asList("0", "1", "2", "3", "4", "5", "6")); + taxAgentRangeSaveParam.setTargetParams(Collections.singletonList(taxAgentSubAdminRangeTargetParam)); + taxAgentRangeSaveParam.setSync(true); + param.setTaxAgentRanges(Collections.singletonList(taxAgentRangeSaveParam)); + } else { + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + SalaryI18nUtil.getI18nLabel(100312, "该条数据不在个税扣缴义务人人员范围内,不可导入")); + excelComments.add(errorMessageMap); + isError = true; + } + } } @@ -1340,7 +1366,7 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { return insuranceArchivesBaseInfoPO; } - public void handleImportData(List insuranceArchivesAccountPOS) { + public void handleImportData(List insuranceArchivesAccountPOS, SIArchiveImportParam param) { //导入社保档案 List socialSchemePOS = insuranceArchivesAccountPOS.stream().filter(Objects::nonNull).map(InsuranceArchivesAccountPO::getSocial).collect(Collectors.toList()); if (CollectionUtils.isNotEmpty(socialSchemePOS)) { @@ -1420,6 +1446,10 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { List> partition = Lists.partition(newInsuranceArchivesBaseInfoList, 100); partition.forEach(getInsuranceBaseInfoMapper()::batchSave); } + //新增人员范围(会自动生成人员档案) + if (CollectionUtils.isNotEmpty(param.getTaxAgentRanges())) { + param.getTaxAgentRanges().forEach(getTaxAgentManageRangeService(user)::save); + } } @@ -1446,31 +1476,26 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { /** * 校验待新增的社保福利档案数据 - * - * @param siArchiveImportActionParam - * @return */ @Override - public Map checkSIArchiveAdd(SIArchiveImportActionParam siArchiveImportActionParam) { - siArchiveImportActionParam.setAddData(false); - return processAddSIArchive(siArchiveImportActionParam); + public Map checkSIArchiveAdd(SIArchiveImportParam param) { + param.setAddData(false); + return processAddSIArchive(param); } /** * 新增社保福利档案 - * - * @param siArchiveImportActionParam - * @return */ @Override - public Map addSIArchive(SIArchiveImportActionParam siArchiveImportActionParam) { - siArchiveImportActionParam.setAddData(true); - return processAddSIArchive(siArchiveImportActionParam); + public Map addSIArchive(SIArchiveImportParam param) { + param.setAddData(true); + return processAddSIArchive(param); } - private Map processAddSIArchive(SIArchiveImportActionParam param) { + private Map processAddSIArchive(SIArchiveImportParam param) { ValidUtil.doValidator(param); + param.setProcess(true); if (StringUtils.isBlank(param.getRunStatus())) { throw new SalaryRunTimeException("福利档案执行状态未在导入条件设置中添加!"); @@ -1553,7 +1578,7 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { singleAccount.add(cellData); } - isError = singleAccountCheck(singleAccount, welfareMap, insuranceArchivesAccountPOS, employeeByIds, excelComments, errorCount + 1, schemeNameIdMap, paymentNameIdMap, creator, i + 2, openDevolution, taxAgentManageRangeEmployeeTree, param.getRunStatus()); + isError = singleAccountCheck(singleAccount, welfareMap, insuranceArchivesAccountPOS, employeeByIds, excelComments, errorCount + 1, schemeNameIdMap, paymentNameIdMap, creator, i + 2, openDevolution, taxAgentManageRangeEmployeeTree, param); if (isError) { errorCount += 1; // 添加错误数据 @@ -1571,7 +1596,7 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { // 数据入库处理 if (param.isAddData()) { - handleImportData(insuranceArchivesAccountPOS); + handleImportData(insuranceArchivesAccountPOS, param); } // 发送导入回调信息 // salaryBatchService.sendImportCallBackInfo(message, successCount, errorCount, errorExcelSheets); diff --git a/src/com/engine/salary/web/SISchemeController.java b/src/com/engine/salary/web/SISchemeController.java index bd175ee15..13b532394 100644 --- a/src/com/engine/salary/web/SISchemeController.java +++ b/src/com/engine/salary/web/SISchemeController.java @@ -4,11 +4,11 @@ import com.engine.common.util.ParamUtil; import com.engine.common.util.ServiceUtil; import com.engine.salary.entity.siaccount.po.InsuranceAccountInspectPO; import com.engine.salary.entity.siarchives.param.InsuranceArchivesListParam; +import com.engine.salary.entity.siarchives.param.SIArchiveImportParam; import com.engine.salary.entity.sischeme.dto.InsuranceSchemeListDTO; import com.engine.salary.entity.sischeme.param.InsuranceSchemeDetailUpdateParam; import com.engine.salary.entity.sischeme.param.InsuranceSchemeParam; import com.engine.salary.entity.sischeme.param.InsuranceSchemeReqParam; -import com.engine.salary.entity.sischeme.param.SISchemaImportParam; import com.engine.salary.enums.siaccount.EmployeeStatusEnum; import com.engine.salary.enums.sicategory.WelfareTypeEnum; import com.engine.salary.service.SIAccountService; @@ -231,18 +231,18 @@ public class SISchemeController { @POST @Path("/preview") @Produces(MediaType.APPLICATION_JSON) - public String preview(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SISchemaImportParam queryParam) { + public String preview(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SIArchiveImportParam queryParam) { User user = HrmUserVarify.getUser(request, response); - return new ResponseResult>(user).run(getService(user)::preview, queryParam); + return new ResponseResult>(user).run(getService(user)::preview, queryParam); } @POST @Path("/importBatch") @Produces(MediaType.APPLICATION_JSON) - public String batchImportEbatch(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SISchemaImportParam queryParam) { + public String batchImportEbatch(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SIArchiveImportParam queryParam) { User user = HrmUserVarify.getUser(request, response); - return new ResponseResult>(user).run(getService(user)::batchImportEbatch, queryParam); + return new ResponseResult>(user).run(getService(user)::batchImportEbatch, queryParam); }