From 845f117d9c5bdf93de17a93c44c8c1333b181147 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Mon, 12 Aug 2024 17:17:52 +0800 Subject: [PATCH] =?UTF-8?q?excel=E5=AF=BC=E5=85=A5=E5=B7=A5=E5=85=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/service/SalaryFormulaService.java | 1 + .../salary/service/SalaryItemService.java | 1 + .../impl/SalaryArchiveItemServiceImpl.java | 29 ++++++++++++------- .../service/impl/SalaryItemServiceImpl.java | 26 ++++++++++------- .../sys/service/SalarySysConfService.java | 1 + .../impl/SalarySysConfServiceImpl.java | 20 +++++++++++++ .../web/SalarySystemConfigController.java | 7 ++--- .../wrapper/SalarySystemConfigWrapper.java | 27 +++++++++++++---- 8 files changed, 80 insertions(+), 32 deletions(-) diff --git a/src/com/engine/salary/service/SalaryFormulaService.java b/src/com/engine/salary/service/SalaryFormulaService.java index 56e287ea9..03058dd3d 100644 --- a/src/com/engine/salary/service/SalaryFormulaService.java +++ b/src/com/engine/salary/service/SalaryFormulaService.java @@ -59,5 +59,6 @@ public interface SalaryFormulaService { void update(FormulaPO formulaPO); FormluaConfig getConfig(); + void parseConfig(FormluaConfig config); } diff --git a/src/com/engine/salary/service/SalaryItemService.java b/src/com/engine/salary/service/SalaryItemService.java index f9a760dcb..4a30697ab 100644 --- a/src/com/engine/salary/service/SalaryItemService.java +++ b/src/com/engine/salary/service/SalaryItemService.java @@ -153,6 +153,7 @@ public interface SalaryItemService { void syncSalaryItemToSalarySobItem(SyncSalaryItemParam syncSalaryItemParam); SalaryItemAllConfig getConfig(); + void parseConfig(SalaryItemAllConfig salaryItemConfig); List getConfig(SalaryItemExportParam param); diff --git a/src/com/engine/salary/service/impl/SalaryArchiveItemServiceImpl.java b/src/com/engine/salary/service/impl/SalaryArchiveItemServiceImpl.java index a40d8f8eb..1c688a8f3 100644 --- a/src/com/engine/salary/service/impl/SalaryArchiveItemServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryArchiveItemServiceImpl.java @@ -752,22 +752,29 @@ public class SalaryArchiveItemServiceImpl extends Service implements SalaryArchi @Override public void parseConfig(ArchiveFieldConfig config) { + long uid = user.getUID(); List salaryItemPOList = getSalaryItemService(user).listAll(); - Set ids = SalaryEntityUtil.properties(salaryItemPOList, SalaryItemPO::getId); - Set names = SalaryEntityUtil.properties(salaryItemPOList, SalaryItemPO::getName); - Set codes = SalaryEntityUtil.properties(salaryItemPOList, SalaryItemPO::getCode); + Map idMap = SalaryEntityUtil.convert2Map(salaryItemPOList, SalaryItemPO::getId); + Map nameMap = SalaryEntityUtil.convert2Map(salaryItemPOList, SalaryItemPO::getName); + Map codeMap = SalaryEntityUtil.convert2Map(salaryItemPOList, SalaryItemPO::getCode); - Optional.ofNullable(config.getSalaryItems()) + Optional.ofNullable(config .getSalaryItems()) .orElse(new ArrayList<>()) .forEach(itemPO -> { - //todo 异常提示 - if (ids.contains(itemPO.getId())) { + if (idMap.containsKey(itemPO.getId())) { + getSalaryItemMapper().updateIgnoreNull(itemPO); + } else if (nameMap.containsKey(itemPO.getName())) { + SalaryItemPO salaryItemPO = nameMap.get(itemPO.getName()); + itemPO.setId(salaryItemPO.getId()); + itemPO.setCreator(uid); + getSalaryItemMapper().updateIgnoreNull(itemPO); - }else if(names.contains(itemPO.getName())){ - - }else if(codes.contains(itemPO.getCode())){ - - }else { + } else if (codeMap.containsKey(itemPO.getCode())) { + SalaryItemPO salaryItemPO = codeMap.get(itemPO.getCode()); + itemPO.setId(salaryItemPO.getId()); + itemPO.setCreator(uid); + getSalaryItemMapper().updateIgnoreNull(itemPO); + } else { getSalaryItemMapper().insertIgnoreNull(itemPO); } }); diff --git a/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java b/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java index 07126915c..96b188bf3 100644 --- a/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java @@ -785,21 +785,27 @@ public class SalaryItemServiceImpl extends Service implements SalaryItemService @Override public void parseConfig(SalaryItemAllConfig salaryItemConfig) { + long uid = user.getUID(); List salaryItemPOList = listAll(); - Set ids = SalaryEntityUtil.properties(salaryItemPOList, SalaryItemPO::getId); - Set names = SalaryEntityUtil.properties(salaryItemPOList, SalaryItemPO::getName); - Set codes = SalaryEntityUtil.properties(salaryItemPOList, SalaryItemPO::getCode); + Map idMap = SalaryEntityUtil.convert2Map(salaryItemPOList, SalaryItemPO::getId); + Map nameMap = SalaryEntityUtil.convert2Map(salaryItemPOList, SalaryItemPO::getName); + Map codeMap = SalaryEntityUtil.convert2Map(salaryItemPOList, SalaryItemPO::getCode); Optional.ofNullable(salaryItemConfig.getSalaryItems()) .orElse(new ArrayList<>()) .forEach(itemPO -> { - //todo 异常提示 - if (ids.contains(itemPO.getId())) { - - } else if (names.contains(itemPO.getName())) { - - } else if (codes.contains(itemPO.getCode())) { - + if (idMap.containsKey(itemPO.getId())) { + getSalaryItemMapper().updateIgnoreNull(itemPO); + } else if (nameMap.containsKey(itemPO.getName())) { + SalaryItemPO salaryItemPO = nameMap.get(itemPO.getName()); + itemPO.setId(salaryItemPO.getId()); + itemPO.setCreator(uid); + getSalaryItemMapper().updateIgnoreNull(itemPO); + } else if (codeMap.containsKey(itemPO.getCode())) { + SalaryItemPO salaryItemPO = codeMap.get(itemPO.getCode()); + itemPO.setId(salaryItemPO.getId()); + itemPO.setCreator(uid); + getSalaryItemMapper().updateIgnoreNull(itemPO); } else { getSalaryItemMapper().insertIgnoreNull(itemPO); } diff --git a/src/com/engine/salary/sys/service/SalarySysConfService.java b/src/com/engine/salary/sys/service/SalarySysConfService.java index aca487ab1..b11e547f1 100644 --- a/src/com/engine/salary/sys/service/SalarySysConfService.java +++ b/src/com/engine/salary/sys/service/SalarySysConfService.java @@ -140,5 +140,6 @@ public interface SalarySysConfService { void saveSettingByType(String confValue, String confKey, String title, String app); SysConfig getConfig(); + void parseConfig(SysConfig config); } diff --git a/src/com/engine/salary/sys/service/impl/SalarySysConfServiceImpl.java b/src/com/engine/salary/sys/service/impl/SalarySysConfServiceImpl.java index 497a2f4be..6abb450b7 100644 --- a/src/com/engine/salary/sys/service/impl/SalarySysConfServiceImpl.java +++ b/src/com/engine/salary/sys/service/impl/SalarySysConfServiceImpl.java @@ -65,6 +65,7 @@ import weaver.hrm.User; import java.util.*; import java.util.concurrent.ExecutorService; import java.util.concurrent.Future; +import java.util.stream.Collectors; import static com.engine.salary.sys.constant.SalarySysConstant.*; import static java.util.concurrent.Executors.newFixedThreadPool; @@ -514,17 +515,36 @@ public class SalarySysConfServiceImpl extends Service implements SalarySysConfSe public SysConfig getConfig() { SysConfig sysConfig = new SysConfig(); List salarySysConfPOS = getSalarySysConfMapper().listAll(); + //去除加密配置 + salarySysConfPOS = salarySysConfPOS.stream().filter(po -> !po.getConfKey().equals(OPEN_APPLICATION_ENCRYPT)).collect(Collectors.toList()); sysConfig.setSalarySysConfs(salarySysConfPOS); return sysConfig; } @Override public void parseConfig(SysConfig config) { + List salarySysConfs = config.getSalarySysConfs(); + if (CollectionUtils.isEmpty(salarySysConfs)) { + return; + } + + salarySysConfs.forEach(po -> { + SalarySysConfPO sysConfPO = getSalarySysConfMapper().getOneByCode(po.getConfKey()); + if (sysConfPO == null) { + getSalarySysConfMapper().insertIgnoreNull(po); + } else { + sysConfPO.setConfValue(po.getConfValue()); + getSalarySysConfMapper().updateIgnoreNull(sysConfPO); + } + + }); + } /** * 开启/关闭加解密 + * * @param confValue */ public void updateEncrypt(String confValue) { diff --git a/src/com/engine/salary/web/SalarySystemConfigController.java b/src/com/engine/salary/web/SalarySystemConfigController.java index 2b80395a3..84953493d 100644 --- a/src/com/engine/salary/web/SalarySystemConfigController.java +++ b/src/com/engine/salary/web/SalarySystemConfigController.java @@ -8,6 +8,7 @@ import com.engine.salary.sys.entity.vo.AppSettingVO; import com.engine.salary.sys.entity.vo.OrderRuleVO; import com.engine.salary.sys.enums.TaxDeclarationFunctionEnum; import com.engine.salary.util.ResponseResult; +import com.engine.salary.util.excel.ImportExcelResponse; import com.engine.salary.util.page.PageInfo; import com.engine.salary.util.xml.XStreamUtil; import com.engine.salary.wrapper.SalarySystemConfigWrapper; @@ -339,10 +340,6 @@ public class SalarySystemConfigController { User user = HrmUserVarify.getUser(request, response); SalaryConfig salaryConfig = getSalarySystemConfigWrapper(user).downloadConfig(); -// XStream xStream = new XStream(); -// //由于使用的注解,将自动检测注解开启 -// xStream.autodetectAnnotations(true); -// String xml = xStream.toXML(salaryConfig); String xml = XStreamUtil.marshal(salaryConfig); String fileName = "薪酬配置" + LocalDate.now(); @@ -372,7 +369,7 @@ public class SalarySystemConfigController { @Produces(MediaType.APPLICATION_JSON) public String initConfig(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody uploadConfigParam param) { User user = HrmUserVarify.getUser(request, response); - return new ResponseResult(user).run(getSalarySystemConfigWrapper(user)::uploadConfig, param); + return new ResponseResult(user).run(getSalarySystemConfigWrapper(user)::uploadConfig, param); } diff --git a/src/com/engine/salary/wrapper/SalarySystemConfigWrapper.java b/src/com/engine/salary/wrapper/SalarySystemConfigWrapper.java index 5b424bd69..00d18d198 100644 --- a/src/com/engine/salary/wrapper/SalarySystemConfigWrapper.java +++ b/src/com/engine/salary/wrapper/SalarySystemConfigWrapper.java @@ -8,6 +8,7 @@ import com.engine.salary.entity.salaryformula.config.FormluaConfig; import com.engine.salary.entity.salaryitem.config.SalaryItemAllConfig; import com.engine.salary.entity.taxagent.config.TaxAgentConfig; import com.engine.salary.entity.taxagent.po.TaxAgentBasePO; +import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.service.*; import com.engine.salary.service.impl.*; import com.engine.salary.sys.config.SysConfig; @@ -19,6 +20,7 @@ import com.engine.salary.sys.enums.TaxDeclarationFunctionEnum; import com.engine.salary.sys.service.SalarySysConfService; import com.engine.salary.sys.service.impl.SalarySysConfServiceImpl; import com.engine.salary.util.SalaryEntityUtil; +import com.engine.salary.util.excel.ImportExcelResponse; import com.engine.salary.util.page.PageInfo; import com.engine.salary.util.page.SalaryPageUtil; import com.engine.salary.util.valid.RuntimeTypeEnum; @@ -32,9 +34,7 @@ import weaver.hrm.User; import java.io.*; import java.nio.charset.StandardCharsets; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; /** * 累计专项附加扣除 @@ -200,8 +200,12 @@ public class SalarySystemConfigWrapper extends Service { } - public SalaryConfig downloadConfig() { + Boolean chief = getTaxAgentService(user).isChief((long) user.getUID()); + if (!chief) { + throw new SalaryRunTimeException("您不是薪酬总管理员,无法迁入出配置!"); + } + SalaryConfig salaryConfig = new SalaryConfig(); SysConfig sysConfig = getSalarySysConfService(user).getConfig(); @@ -225,7 +229,14 @@ public class SalarySystemConfigWrapper extends Service { return salaryConfig; } - public void uploadConfig(uploadConfigParam param) { + public ImportExcelResponse uploadConfig(uploadConfigParam param) { + Boolean chief = getTaxAgentService(user).isChief((long) user.getUID()); + if (!chief) { + throw new SalaryRunTimeException("您不是薪酬总管理员,无法迁入配置!"); + } + + ImportExcelResponse response = ImportExcelResponse.builder().build(); + InputStream fileInputStream = null; try { fileInputStream = ImageFileManager.getInputStreamById(Integer.parseInt(param.getImageId())); @@ -239,6 +250,8 @@ public class SalarySystemConfigWrapper extends Service { SalaryConfig config = XStreamUtil.unmarshal(SalaryConfig.class, xml.toString()); + getSalarySysConfService(user).parseConfig(config.getSysConfig()); + getSalaryFormulaService(user).parseConfig(config.getFormluaConfig()); getSalaryItemService(user).parseConfig(config.getSalaryItemConfig()); @@ -249,8 +262,10 @@ public class SalarySystemConfigWrapper extends Service { getTaxAgentService(user).parseConfig(config.getTaxAgentConfigs()); + return response; } catch (IOException e) { - e.printStackTrace(); + response.setErrorData(Collections.singletonList(ImportExcelResponse.Error.builder().message("文件读取失败!").build())); + return response; } finally { IOUtils.closeQuietly(fileInputStream); }