From 190bbe087568ab47bb4ab01f42bc0929a0d35d7a Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Thu, 31 Aug 2023 09:24:41 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8C=E6=AD=A5=E8=96=AA=E8=B5=84=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E8=87=B3=E8=B4=A6=E5=A5=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/salary/biz/SalarySobItemBiz.java | 15 +++++++ .../salaryitem/param/SyncSalaryItemParam.java | 30 +++++++++++++ .../salary/service/SalaryItemService.java | 13 ++++++ .../salary/service/SalarySobItemService.java | 2 + .../service/impl/SalaryItemServiceImpl.java | 45 +++++++++++++++++++ .../impl/SalarySobItemServiceImpl.java | 5 +++ .../salary/web/SalaryItemController.java | 23 ++++++++++ .../salary/wrapper/SalaryItemWrapper.java | 16 +++++++ 8 files changed, 149 insertions(+) create mode 100644 src/com/engine/salary/entity/salaryitem/param/SyncSalaryItemParam.java diff --git a/src/com/engine/salary/biz/SalarySobItemBiz.java b/src/com/engine/salary/biz/SalarySobItemBiz.java index f5537d7d5..66ac63d0c 100644 --- a/src/com/engine/salary/biz/SalarySobItemBiz.java +++ b/src/com/engine/salary/biz/SalarySobItemBiz.java @@ -10,6 +10,7 @@ import weaver.conn.mybatis.MyBatisFactory; import java.util.Collection; import java.util.List; +import java.util.Objects; public class SalarySobItemBiz { @@ -154,4 +155,18 @@ public class SalarySobItemBiz { sqlSession.close(); } } + + public void update(SalarySobItemPO salarySobItemPO) { + if (Objects.isNull(salarySobItemPO)) { + return; + } + SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession(); + try { + SalarySobItemMapper mapper = sqlSession.getMapper(SalarySobItemMapper.class); + mapper.updateIgnoreNull(salarySobItemPO); + sqlSession.commit(); + } finally { + sqlSession.close(); + } + } } diff --git a/src/com/engine/salary/entity/salaryitem/param/SyncSalaryItemParam.java b/src/com/engine/salary/entity/salaryitem/param/SyncSalaryItemParam.java new file mode 100644 index 000000000..aadc5f5aa --- /dev/null +++ b/src/com/engine/salary/entity/salaryitem/param/SyncSalaryItemParam.java @@ -0,0 +1,30 @@ +package com.engine.salary.entity.salaryitem.param; + +import com.engine.salary.util.valid.DataCheck; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * @author Harryxzy + * @ClassName SyncSalaryItemParam + * @date 2023/08/30 17:51 + * @description 同步薪资项目到账套中参数 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SyncSalaryItemParam { + + // 薪资项目id + @DataCheck(require = true, message = "薪资项目id不能为空") + private Long salaryItemId; + + // 薪资账套id + @DataCheck(require = true, message = "薪资账套不能为空") + private List salarySobIds; +} diff --git a/src/com/engine/salary/service/SalaryItemService.java b/src/com/engine/salary/service/SalaryItemService.java index fbf123363..c42079fa3 100644 --- a/src/com/engine/salary/service/SalaryItemService.java +++ b/src/com/engine/salary/service/SalaryItemService.java @@ -2,6 +2,7 @@ package com.engine.salary.service; import com.engine.salary.entity.salaryitem.param.SalaryItemSaveParam; import com.engine.salary.entity.salaryitem.param.SalaryItemSearchParam; +import com.engine.salary.entity.salaryitem.param.SyncSalaryItemParam; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.enums.SalarySystemTypeEnum; import com.engine.salary.service.impl.SalaryItemServiceImpl; @@ -9,6 +10,7 @@ import com.engine.salary.util.page.PageInfo; import java.util.Collection; import java.util.List; +import java.util.Map; import java.util.Set; /** @@ -133,5 +135,16 @@ public interface SalaryItemService { */ void batchUpdateSortedIndex(List values); + /** + * 获取薪资项目在哪些账套中使用 + * @param salaryItemId + * @return + */ + List> getSalarySobBySalaryItem(Long salaryItemId); + /** + * 将薪资项目管理中的信息同步至账套 + * @param syncSalaryItemParam + */ + void syncSalaryItemToSalarySobItem(SyncSalaryItemParam syncSalaryItemParam); } diff --git a/src/com/engine/salary/service/SalarySobItemService.java b/src/com/engine/salary/service/SalarySobItemService.java index 37197e51f..7f1aa0647 100644 --- a/src/com/engine/salary/service/SalarySobItemService.java +++ b/src/com/engine/salary/service/SalarySobItemService.java @@ -125,4 +125,6 @@ public interface SalarySobItemService { * 薪资项目的详情 */ SalarySobItemFormDTO getSalaryItemForm(SalarySobItemPO param); + + void update(SalarySobItemPO po); } diff --git a/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java b/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java index 3affdd0e3..d8204a2b4 100644 --- a/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java @@ -10,10 +10,12 @@ import com.engine.salary.entity.salaryformula.po.FormulaVar; import com.engine.salary.entity.salaryitem.bo.SalaryItemBO; import com.engine.salary.entity.salaryitem.param.SalaryItemSaveParam; import com.engine.salary.entity.salaryitem.param.SalaryItemSearchParam; +import com.engine.salary.entity.salaryitem.param.SyncSalaryItemParam; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.entity.salaryitem.po.SysSalaryItemPO; import com.engine.salary.entity.salarysob.po.SalarySobBackItemPO; import com.engine.salary.entity.salarysob.po.SalarySobItemPO; +import com.engine.salary.entity.salarysob.po.SalarySobPO; import com.engine.salary.entity.taxagent.po.TaxAgentPO; import com.engine.salary.enums.SalarySystemTypeEnum; import com.engine.salary.enums.SalaryValueTypeEnum; @@ -24,11 +26,13 @@ import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.page.PageInfo; import com.engine.salary.util.page.SalaryPageUtil; +import com.engine.salary.util.valid.ValidUtil; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import weaver.hrm.User; @@ -69,6 +73,10 @@ public class SalaryItemServiceImpl extends Service implements SalaryItemService return ServiceUtil.getService(SalarySobBackItemServiceImpl.class, user); } + public SalarySobService getSalarySobService(User user) { + return ServiceUtil.getService(SalarySobServiceImpl.class, user); + } + private SysSalaryItemBiz sysSalaryItemBiz = new SysSalaryItemBiz(); // @Autowired @@ -391,6 +399,43 @@ public class SalaryItemServiceImpl extends Service implements SalaryItemService salaryItemBiz.batchUpdateSortedIndex(values); } + @Override + public List> getSalarySobBySalaryItem(Long salaryItemId) { + // 查询所有启用的薪资账套 + List salarySobItemList = getSalarySobItemService(user).listBySalaryItemIds(Collections.singleton(salaryItemId)); + Set salarySobIds = SalaryEntityUtil.properties(salarySobItemList, SalarySobItemPO::getSalarySobId); + List salarySobs = getSalarySobService(user).listByIds(salarySobIds); + return salarySobs.stream().map(m -> { + Map map = new HashMap<>(); + map.put("id", String.valueOf(m.getId())); + map.put("content", m.getName()); + return map; + }).collect(Collectors.toList()); + } + + @Override + public void syncSalaryItemToSalarySobItem(SyncSalaryItemParam param) { + ValidUtil.doValidator(param); + // 获取薪资项目信息 + SalaryItemPO salaryItemPO = salaryItemBiz.getById(param.getSalaryItemId()); + if (ObjectUtils.isEmpty(salaryItemPO)) { + throw new SalaryRunTimeException("薪资项目不存在或已被删除"); + } + // 获取薪资账套中薪资项目信息 + List salarySobItemPOS = getSalarySobItemService(user).listBySalaryItemIds(Collections.singleton(param.getSalaryItemId())); + salarySobItemPOS = salarySobItemPOS.stream().filter( po -> param.getSalarySobIds().contains(po.getSalarySobId())).collect(Collectors.toList()); + // 更新薪资账套中的薪资项目信息 + Date now = new Date(); + for (SalarySobItemPO sobItem : salarySobItemPOS) { + sobItem.setFormulaId(sobItem.getFormulaId()); + sobItem.setRoundingMode(sobItem.getRoundingMode()); + sobItem.setPattern(sobItem.getPattern()); + sobItem.setValueType(sobItem.getValueType()); + sobItem.setDescription(sobItem.getDescription()); + sobItem.setUpdateTime(now); + getSalarySobItemService(user).update(sobItem); + } + } @Data @Builder diff --git a/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java b/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java index 169b54bb8..c4e27cdea 100644 --- a/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java @@ -727,6 +727,11 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe salarySobItemMapper.deleteItemShowBySalarySobId(salarySobIds); } + @Override + public void update(SalarySobItemPO po) { + salarySobItemMapper.update(po); + } + @Override public SalarySobItemFormDTO getSalaryItemForm(SalarySobItemPO param) { SalarySobItemFormDTO salarySobItemFormDTO = new SalarySobItemFormDTO(); diff --git a/src/com/engine/salary/web/SalaryItemController.java b/src/com/engine/salary/web/SalaryItemController.java index 61584bae1..39131b9f4 100644 --- a/src/com/engine/salary/web/SalaryItemController.java +++ b/src/com/engine/salary/web/SalaryItemController.java @@ -8,6 +8,7 @@ import com.engine.salary.entity.salaryitem.dto.SalaryItemListDTO; import com.engine.salary.entity.salaryitem.dto.SysSalaryItemListDTO; import com.engine.salary.entity.salaryitem.param.SalaryItemSaveParam; import com.engine.salary.entity.salaryitem.param.SalaryItemSearchParam; +import com.engine.salary.entity.salaryitem.param.SyncSalaryItemParam; import com.engine.salary.entity.salaryitem.param.SysSalaryItemSearchParam; import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.util.ResponseResult; @@ -112,6 +113,28 @@ public class SalaryItemController { return new ResponseResult(user).run(getSalaryItemWrapper(user)::getForm, id); } + /** + * 获取哪些账套中使用了该薪资项目 + */ + @GET + @Path("/getSalarySobBySalaryItem") + @Produces(MediaType.APPLICATION_JSON) + public String getSalarySobBySalaryItem(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "id") Long id) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>>(user).run(getSalaryItemWrapper(user)::getSalarySobBySalaryItem, id); + } + + /** + * 将薪资项目管理中的信息同步至账套 + */ + @POST + @Path("/syncSalaryItemToSalarySobItem") + @Produces(MediaType.APPLICATION_JSON) + public String syncSalaryItemToSalarySobItem(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SyncSalaryItemParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalaryItemWrapper(user)::syncSalaryItemToSalarySobItem, param); + } + /** * "获取薪资项目可选的类型(与属性有联动)" * diff --git a/src/com/engine/salary/wrapper/SalaryItemWrapper.java b/src/com/engine/salary/wrapper/SalaryItemWrapper.java index b1d43a044..e0ac23554 100644 --- a/src/com/engine/salary/wrapper/SalaryItemWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryItemWrapper.java @@ -10,6 +10,7 @@ import com.engine.salary.entity.salaryitem.dto.SalaryItemFormDTO; import com.engine.salary.entity.salaryitem.dto.SalaryItemListDTO; import com.engine.salary.entity.salaryitem.param.SalaryItemSaveParam; import com.engine.salary.entity.salaryitem.param.SalaryItemSearchParam; +import com.engine.salary.entity.salaryitem.param.SyncSalaryItemParam; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.entity.salaryitem.po.SysSalaryItemPO; import com.engine.salary.entity.salarysob.po.SalarySobItemPO; @@ -262,4 +263,19 @@ public class SalaryItemWrapper extends Service { } + /** + * 获取薪资项目在哪些账套中使用 + * @param salaryItemId + */ + public List> getSalarySobBySalaryItem(Long salaryItemId) { + return getSalaryItemService(user).getSalarySobBySalaryItem(salaryItemId); + } + + /** + * 将薪资项目管理中的信息同步至账套 + * @param syncSalaryItemParam + */ + public void syncSalaryItemToSalarySobItem(SyncSalaryItemParam syncSalaryItemParam) { + getSalaryItemService(user).syncSalaryItemToSalarySobItem(syncSalaryItemParam); + } }