同步薪资项目至账套

This commit is contained in:
Harryxzy 2023-08-31 09:24:41 +08:00
parent c2ae65ff79
commit 190bbe0875
8 changed files with 149 additions and 0 deletions

View File

@ -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();
}
}
}

View File

@ -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<Long> salarySobIds;
}

View File

@ -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<SalaryItemPO> values);
/**
* 获取薪资项目在哪些账套中使用
* @param salaryItemId
* @return
*/
List<Map<String, Object>> getSalarySobBySalaryItem(Long salaryItemId);
/**
* 将薪资项目管理中的信息同步至账套
* @param syncSalaryItemParam
*/
void syncSalaryItemToSalarySobItem(SyncSalaryItemParam syncSalaryItemParam);
}

View File

@ -125,4 +125,6 @@ public interface SalarySobItemService {
* 薪资项目的详情
*/
SalarySobItemFormDTO getSalaryItemForm(SalarySobItemPO param);
void update(SalarySobItemPO po);
}

View File

@ -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<Map<String, Object>> getSalarySobBySalaryItem(Long salaryItemId) {
// 查询所有启用的薪资账套
List<SalarySobItemPO> salarySobItemList = getSalarySobItemService(user).listBySalaryItemIds(Collections.singleton(salaryItemId));
Set<Long> salarySobIds = SalaryEntityUtil.properties(salarySobItemList, SalarySobItemPO::getSalarySobId);
List<SalarySobPO> salarySobs = getSalarySobService(user).listByIds(salarySobIds);
return salarySobs.stream().map(m -> {
Map<String, Object> 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<SalarySobItemPO> 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

View File

@ -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();

View File

@ -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<Long, SalaryItemFormDTO>(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<Long, List<Map<String, Object>>>(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<SyncSalaryItemParam, String>(user).run(getSalaryItemWrapper(user)::syncSalaryItemToSalarySobItem, param);
}
/**
* "获取薪资项目可选的类型(与属性有联动)"
*

View File

@ -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<Map<String, Object>> getSalarySobBySalaryItem(Long salaryItemId) {
return getSalaryItemService(user).getSalarySobBySalaryItem(salaryItemId);
}
/**
* 将薪资项目管理中的信息同步至账套
* @param syncSalaryItemParam
*/
public void syncSalaryItemToSalarySobItem(SyncSalaryItemParam syncSalaryItemParam) {
getSalaryItemService(user).syncSalaryItemToSalarySobItem(syncSalaryItemParam);
}
}