Merge branch 'release/2.9.10.2312.02' into release/个税版本
# Conflicts: # src/com/engine/salary/util/page/SalaryPageUtil.java
This commit is contained in:
commit
0856f63ca5
|
|
@ -2,9 +2,9 @@ Delete from LeftMenuInfo where id=100186;
|
|||
/
|
||||
Delete from LeftMenuConfig where infoid=100186;
|
||||
/
|
||||
call LMConfig_U_ByInfoInsert (2,100118,9);
|
||||
select LMConfig_U_ByInfoInsert (2,100118,9);
|
||||
/
|
||||
call LMInfo_Insert (100186,541290,'','',2,100118,9,18);
|
||||
select LMInfo_Insert (100186,541290,'','',2,100118,9,18);
|
||||
/
|
||||
update LeftMenuInfo set mobxrouteurl = '',iconClassName = '',fullrouteurl='/spa/hrmSalary/static/index.html#/main/hrmSalary/externalPersonManage' where id = 100186;
|
||||
/
|
||||
|
|
@ -1,17 +1,14 @@
|
|||
select @current_date:= date_format( now(),'%Y-%m-%d');
|
||||
select @current_time:= date_format( now(),'%T');
|
||||
INSERT INTO datashowset(SHOWNAME, SHOWCLASS, DATAFROM, DATASOURCEID, SQLTEXT, WSURL, WSOPERATION, XMLTEXT, INPARA,SHOWTYPE, KEYFIELD, PARENTFIELD, SHOWFIELD, DETAILPAGEURL, TYPENAME, SELECTTYPE, SHOWPAGEURL,BROWSERFROM, NAME, CUSTOMID, CUSTOMHREF, SQLTEXT1, SQLTEXT2, NAMEHEADER, DESCRIPTIONHEADER,WSWORKNAME, SEARCHBYID, CREATEDATE, CREATETIME, MODIFYDATE, MODIFYTIME, SEARCHBYNAME,onlylowestnode, characterset, uuid, isSupportPaging, ESBID, ESBSHOWID, mobiledetailpageurl,isPhyPage, subcompanyid, unconditionalQuery) VALUES ('salaryExtEmp', '1', '1', '', 'SELECT * FROM hrsa_external_employee where delete_type=0', '', '', '', '', '1','id', '', '', '', '', '', '', 2, '薪酬非系统人员', NULL, '', NULL, NULL, NULL, NULL, '', '', @current_date,@current_time, NULL, NULL, '', '', '0', uuid(), '', '', '', '', '1', 0, 1);
|
||||
INSERT INTO datashowset(SHOWNAME, SHOWCLASS, DATAFROM, DATASOURCEID, SQLTEXT, WSURL, WSOPERATION, XMLTEXT, INPARA,SHOWTYPE, KEYFIELD, PARENTFIELD, SHOWFIELD, DETAILPAGEURL, TYPENAME, SELECTTYPE, SHOWPAGEURL,BROWSERFROM, NAME, CUSTOMID, CUSTOMHREF, SQLTEXT1, SQLTEXT2, NAMEHEADER, DESCRIPTIONHEADER,WSWORKNAME, SEARCHBYID, CREATEDATE, CREATETIME, MODIFYDATE, MODIFYTIME, SEARCHBYNAME,onlylowestnode, characterset, uuid, isSupportPaging, ESBID, ESBSHOWID, mobiledetailpageurl,isPhyPage, subcompanyid, unconditionalQuery) VALUES ('salaryExtEmp', '1', '1', '', 'SELECT * FROM hrsa_external_employee where delete_type=0', '', '', '', '', '1','id', '', '', '', '', '', '', 2, '薪酬非系统人员', NULL, '', NULL, NULL, NULL, NULL, '', '', '2020-01-01', '19:12:12', NULL, NULL, '', '', '0', uuid(), '', '', '', '', '1', 0, 1);
|
||||
|
||||
select @datashowset_id:= max(id)from datashowset;
|
||||
|
||||
INSERT INTO datashowcacheset(showname, subcompanyid, isopencache, Createdate, createtime, Updatedate, Updatetime)
|
||||
VALUES ('salaryExtEmp', '0', 0, @current_date, @current_time, NULL, NULL);
|
||||
VALUES ('salaryExtEmp', '0', 0, '2020-01-01', '19:12:12', NULL, NULL);
|
||||
|
||||
INSERT INTO datashowparam(MAINID, FIELDNAME, SEARCHNAME, TRANSQL, ISSHOWNAME, dsporder, uuid, width)
|
||||
VALUES (@datashowset_id, '姓名', 'username', '', 1, 1, uuid(), NULL);
|
||||
VALUES ((select max(id) from datashowparam), '姓名', 'username', '', 1, 1, uuid(), NULL);
|
||||
INSERT INTO datashowparam(MAINID, FIELDNAME, SEARCHNAME, TRANSQL, ISSHOWNAME, dsporder, uuid, width)
|
||||
VALUES (@datashowset_id, '手机号', 'mobile', '', 0, 2, uuid(), NULL);
|
||||
VALUES ((select max(id) from datashowparam), '手机号', 'mobile', '', 0, 2, uuid(), NULL);
|
||||
INSERT INTO datasearchparam(MAINID, FIELDNAME, SEARCHNAME, FIELDTYPE, WOKFLOWFIELDNAME, dsporder, uuid, isshowfield)
|
||||
VALUES (@datashowset_id, '姓名', 'username', '2', '', 1, uuid(), '');
|
||||
VALUES ((select max(id) from datasearchparam), '姓名', 'username', '2', '', 1, uuid(), '');
|
||||
INSERT INTO datasearchparam(MAINID, FIELDNAME, SEARCHNAME, FIELDTYPE, WOKFLOWFIELDNAME, dsporder, uuid, isshowfield)
|
||||
VALUES (@datashowset_id, '手机号', 'mobile', '2', '', 2, uuid(), '');
|
||||
VALUES ((select max(id) from datasearchparam), '手机号', 'mobile', '2', '', 2, uuid(), '');
|
||||
|
|
@ -0,0 +1,70 @@
|
|||
package com.engine.salary.action;
|
||||
|
||||
import com.engine.common.util.ServiceUtil;
|
||||
import com.engine.salary.mapper.taxagent.TaxAgentMapper;
|
||||
import com.engine.salary.service.SalaryAcctRecordService;
|
||||
import com.engine.salary.service.impl.SalaryAcctRecordServiceImpl;
|
||||
import com.engine.salary.util.db.MapperProxyFactory;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
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.Arrays;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author Harryxzy
|
||||
* @ClassName FileSalaryAcctRecordAction
|
||||
* @date 2023/12/13 9:17
|
||||
* @description 薪资核算记录归档action
|
||||
*/
|
||||
@Slf4j
|
||||
public class FileSalaryAcctRecordAction implements Action {
|
||||
|
||||
|
||||
private SalaryAcctRecordService getSalaryAcctRecordService(User user) {
|
||||
return ServiceUtil.getService(SalaryAcctRecordServiceImpl.class, user);
|
||||
}
|
||||
|
||||
private TaxAgentMapper getTaxAgentMapper() {
|
||||
return MapperProxyFactory.getProxy(TaxAgentMapper.class);
|
||||
}
|
||||
|
||||
|
||||
private String recordIdFieldName;
|
||||
|
||||
|
||||
public String getRecordIdFieldName() {
|
||||
return recordIdFieldName;
|
||||
}
|
||||
|
||||
public void setRecordIdFieldName(String recordIdFieldName) {
|
||||
this.recordIdFieldName = recordIdFieldName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String execute(RequestInfo requestInfo) {
|
||||
Property[] properties = requestInfo.getMainTableInfo().getProperty();
|
||||
Map<String, String> fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName,
|
||||
property -> Util.null2String(property.getValue())));
|
||||
String salaryAcctRecordId = fieldMap.get(recordIdFieldName);
|
||||
if (StringUtils.isBlank(salaryAcctRecordId)) {
|
||||
requestInfo.getRequestManager().setMessage("薪资核算记录不存在");
|
||||
return FAILURE_AND_CONTINUE;
|
||||
}
|
||||
User user = new User();
|
||||
user.setUid(1);
|
||||
try {
|
||||
getSalaryAcctRecordService(user).file(Long.valueOf(salaryAcctRecordId));
|
||||
} catch (Exception e) {
|
||||
requestInfo.getRequestManager().setMessage(e.getMessage());
|
||||
return FAILURE_AND_CONTINUE;
|
||||
}
|
||||
return SUCCESS;
|
||||
}
|
||||
}
|
||||
|
|
@ -23,6 +23,7 @@ import com.engine.salary.enums.salaryaccounting.LockStatusEnum;
|
|||
import com.engine.salary.enums.salaryitem.SalaryDataTypeEnum;
|
||||
import com.engine.salary.util.SalaryEntityUtil;
|
||||
import com.engine.salary.util.SalaryI18nUtil;
|
||||
import com.engine.salary.util.page.SalaryPageUtil;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Maps;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
|
|
@ -85,7 +86,6 @@ public class SalaryAcctResultBO {
|
|||
// }
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 构建薪资核算结果列表的表头(线下对比)
|
||||
*
|
||||
|
|
@ -170,7 +170,7 @@ public class SalaryAcctResultBO {
|
|||
List<WeaTableColumnGroup> columns = Lists.newArrayList();
|
||||
// 员工信息字段
|
||||
for (SalarySobEmpFieldDTO salarySobEmpFieldDTO : salarySobItemAggregateDTO.getEmpFields()) {
|
||||
columns.add(new WeaTableColumnGroup("150", salarySobEmpFieldDTO.getFieldName(), salarySobEmpFieldDTO.getFieldId()));
|
||||
columns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobEmpFieldDTO.getFieldName()), salarySobEmpFieldDTO.getFieldName(), salarySobEmpFieldDTO.getFieldId()));
|
||||
}
|
||||
// 薪资项目分组下的薪资项目
|
||||
for (SalarySobItemGroupDTO salarySobItemGroupDTO : salarySobItemAggregateDTO.getItemGroups()) {
|
||||
|
|
@ -180,29 +180,29 @@ public class SalaryAcctResultBO {
|
|||
List<WeaTableColumnGroup> childrenColumns = Lists.newArrayList();
|
||||
for (SalarySobItemDTO salarySobItemDTO : salarySobItemGroupDTO.getItems()) {
|
||||
if (lockSalaryItemIds.contains(salarySobItemDTO.getSalaryItemId())) {
|
||||
childrenColumns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.LOCK.getValue(), salarySobItemDTO.getPattern()));
|
||||
childrenColumns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobItemDTO.getName()), salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.LOCK.getValue(), salarySobItemDTO.getPattern()));
|
||||
} else {
|
||||
childrenColumns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.UNLOCK.getValue(), salarySobItemDTO.getPattern()));
|
||||
childrenColumns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobItemDTO.getName()), salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.UNLOCK.getValue(), salarySobItemDTO.getPattern()));
|
||||
}
|
||||
}
|
||||
WeaTableColumnGroup weaTableColumnWapper = new WeaTableColumnGroup("150", salarySobItemGroupDTO.getName(), String.valueOf(salarySobItemGroupDTO.getId()), childrenColumns);
|
||||
WeaTableColumnGroup weaTableColumnWapper = new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobItemGroupDTO.getName()), salarySobItemGroupDTO.getName(), String.valueOf(salarySobItemGroupDTO.getId()), childrenColumns);
|
||||
columns.add(weaTableColumnWapper);
|
||||
}
|
||||
// 没有分类的薪资项目
|
||||
for (SalarySobItemDTO salarySobItemDTO : salarySobItemAggregateDTO.getItems()) {
|
||||
if (lockSalaryItemIds.contains(salarySobItemDTO.getSalaryItemId())) {
|
||||
columns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.LOCK.getValue(), salarySobItemDTO.getPattern()));
|
||||
columns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobItemDTO.getName()), salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.LOCK.getValue(), salarySobItemDTO.getPattern()));
|
||||
} else {
|
||||
columns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.UNLOCK.getValue(), salarySobItemDTO.getPattern()));
|
||||
columns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobItemDTO.getName()), salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.UNLOCK.getValue(), salarySobItemDTO.getPattern()));
|
||||
}
|
||||
|
||||
}
|
||||
// 回算的薪资项目
|
||||
for (SalarySobItemDTO salarySobItemDTO : salarySobItemAggregateDTO.getBackCalcItems()) {
|
||||
if (lockSalaryItemIds.contains(salarySobItemDTO.getSalaryItemId())) {
|
||||
columns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.LOCK.getValue(), salarySobItemDTO.getPattern()));
|
||||
columns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobItemDTO.getName()), salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.LOCK.getValue(), salarySobItemDTO.getPattern()));
|
||||
} else {
|
||||
columns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.UNLOCK.getValue(), salarySobItemDTO.getPattern()));
|
||||
columns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobItemDTO.getName()), salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.UNLOCK.getValue(), salarySobItemDTO.getPattern()));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -442,9 +442,9 @@ public class SalaryAcctResultBO {
|
|||
sortItem(salarySobItemPOMap);
|
||||
// 根据账套分组封装薪资项目的值
|
||||
List<SalaryAcctResultDetailDTO.SalaryAcctResultDetailItemByGroupDTO> itemsByGroup = new ArrayList<>();
|
||||
for(SalarySobItemGroupPO groupPO : salarySobItemGroupPOS){
|
||||
List<SalarySobItemPO> groupItems = salarySobItemPOMap.getOrDefault(groupPO.getId(),Collections.emptyList());
|
||||
if(CollectionUtils.isNotEmpty(groupItems)){
|
||||
for (SalarySobItemGroupPO groupPO : salarySobItemGroupPOS) {
|
||||
List<SalarySobItemPO> groupItems = salarySobItemPOMap.getOrDefault(groupPO.getId(), Collections.emptyList());
|
||||
if (CollectionUtils.isNotEmpty(groupItems)) {
|
||||
List<SalaryAcctResultDetailDTO.SalaryAcctResultDetailItemDTO> items = groupItems.stream()
|
||||
.map(salarySobItemPO -> convert2SalaryAcctResultDetailItemDTO(salarySobItemPO, salaryItemMap.get(salarySobItemPO.getSalaryItemId()), resultValueMap, formulaContentMap))
|
||||
.collect(Collectors.toList());
|
||||
|
|
@ -452,12 +452,12 @@ public class SalaryAcctResultBO {
|
|||
.salarySobItemGroupId(groupPO.getId())
|
||||
.salarySobItemGroupName(groupPO.getName())
|
||||
.salaryItems(items)
|
||||
.sortedIndex(groupPO.getSortedIndex()).build() );
|
||||
.sortedIndex(groupPO.getSortedIndex()).build());
|
||||
}
|
||||
}
|
||||
// 未分类
|
||||
List<SalarySobItemPO> noGroupItems = salarySobItemPOMap.getOrDefault(0L, Collections.emptyList());
|
||||
if(CollectionUtils.isNotEmpty(noGroupItems)){
|
||||
if (CollectionUtils.isNotEmpty(noGroupItems)) {
|
||||
List<SalaryAcctResultDetailDTO.SalaryAcctResultDetailItemDTO> items = noGroupItems.stream()
|
||||
.map(salarySobItemPO -> convert2SalaryAcctResultDetailItemDTO(salarySobItemPO, salaryItemMap.get(salarySobItemPO.getSalaryItemId()), resultValueMap, formulaContentMap))
|
||||
.collect(Collectors.toList());
|
||||
|
|
@ -469,7 +469,6 @@ public class SalaryAcctResultBO {
|
|||
}
|
||||
|
||||
|
||||
|
||||
// // 公式项的值(不根据salaryItemPO的valueType判断是因为薪资项目的valueType属性改变后并不会同步更新薪资账套中的薪资项目的formulaId字段)
|
||||
// List<SalaryAcctResultDetailDTO.SalaryAcctResultDetailItemDTO> formulaItems = salarySobItemPOS.stream()
|
||||
// .filter(salarySobItemPO -> salarySobItemPO.getFormulaId() > 0)
|
||||
|
|
@ -500,7 +499,7 @@ public class SalaryAcctResultBO {
|
|||
}
|
||||
|
||||
public static List<SalarySobItemGroupPO> sortGroup(List<SalarySobItemGroupPO> salarySobItemGroupPOS) {
|
||||
if(CollectionUtils.isEmpty(salarySobItemGroupPOS)){
|
||||
if (CollectionUtils.isEmpty(salarySobItemGroupPOS)) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
return salarySobItemGroupPOS.stream().sorted(Comparator.comparingInt(SalarySobItemGroupPO::getSortedIndex)).collect(Collectors.toList());
|
||||
|
|
@ -508,10 +507,9 @@ public class SalaryAcctResultBO {
|
|||
|
||||
/**
|
||||
* 薪资账套的薪资项目按照sortedIndex排序
|
||||
*
|
||||
*/
|
||||
public static void sortItem(Map<Long, List<SalarySobItemPO>> salarySobItemPOMap) {
|
||||
for(Map.Entry<Long, List<SalarySobItemPO>> entry : salarySobItemPOMap.entrySet()){
|
||||
for (Map.Entry<Long, List<SalarySobItemPO>> entry : salarySobItemPOMap.entrySet()) {
|
||||
List<SalarySobItemPO> items = entry.getValue();
|
||||
if (CollectionUtils.isNotEmpty(items)) {
|
||||
List<SalarySobItemPO> sortedValue = items.stream().sorted(Comparator.comparingInt(SalarySobItemPO::getSortedIndex)).collect(Collectors.toList());
|
||||
|
|
@ -535,9 +533,9 @@ public class SalaryAcctResultBO {
|
|||
|
||||
SalaryValueTypeEnum salaryValueTypeEnum = SalaryValueTypeEnum.parseByValue(Optional.ofNullable(salarySobItemPO).map(SalarySobItemPO::getValueType).orElse(0));
|
||||
String itemFormulaContent;
|
||||
if(Objects.equals(salaryValueTypeEnum.getValue(),SalaryValueTypeEnum.FORMULA.getValue())){
|
||||
if (Objects.equals(salaryValueTypeEnum.getValue(), SalaryValueTypeEnum.FORMULA.getValue())) {
|
||||
itemFormulaContent = Optional.ofNullable(formulaContentMap.get(salarySobItemPO.getSalaryItemId().toString())).map(SalaryAcctResultListColumnDTO::getFormulaContent).orElse("");
|
||||
}else{
|
||||
} else {
|
||||
itemFormulaContent = salaryValueTypeEnum == null ? "" : salaryValueTypeEnum.getDefaultLabel();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@ public class SalaryItemSaveParam {
|
|||
private Integer roundingMode;
|
||||
|
||||
//保留小数位
|
||||
@DataCheck(require = true, type = ValidTypeEnum.NUMBER, max = 6, message = "小数位最多为6")
|
||||
@DataCheck(require = true, type = ValidTypeEnum.NUMBER, max = 8, message = "小数位最多为8")
|
||||
private Integer pattern;
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ import com.engine.salary.util.SalaryI18nUtil;
|
|||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Maps;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.commons.lang3.math.NumberUtils;
|
||||
|
|
@ -32,6 +33,7 @@ import java.util.stream.Collectors;
|
|||
* @version 1.0
|
||||
**/
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class SalarySobItemAggregateBO {
|
||||
|
||||
/**
|
||||
|
|
@ -206,7 +208,7 @@ public class SalarySobItemAggregateBO {
|
|||
* @param salarySobEmpFields 薪资账套的员工信息字段
|
||||
* @return
|
||||
*/
|
||||
private List<SalarySobEmpFieldDTO> buildEmpField(Collection<SalarySobEmpFieldPO> salarySobEmpFields) {
|
||||
public List<SalarySobEmpFieldDTO> buildEmpField(Collection<SalarySobEmpFieldPO> salarySobEmpFields) {
|
||||
if (CollectionUtils.isEmpty(salarySobEmpFields)) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ public class SalarySobItemFormDTO {
|
|||
private Integer roundingMode;
|
||||
|
||||
//保留小数位")
|
||||
@DataCheck(require = true, type = ValidTypeEnum.NUMBER, max = 6, message = "小数位最多为6")
|
||||
@DataCheck(require = true, type = ValidTypeEnum.NUMBER, max = 8, message = "小数位最多为8")
|
||||
private Integer pattern;
|
||||
|
||||
//取值方式")
|
||||
|
|
|
|||
|
|
@ -116,10 +116,10 @@ public class SalaryStatisticsItemServiceImpl extends Service implements SalarySt
|
|||
.maxRule(SalaryEntityUtil.toJSONString(saveParam.getMaxRule()))
|
||||
.minRule(SalaryEntityUtil.toJSONString(saveParam.getMinRule()))
|
||||
.medianRule(SalaryEntityUtil.toJSONString(saveParam.getMedianRule()))
|
||||
.lastRule(SalaryEntityUtil.toJSONString(saveParam.getMedianRule()))
|
||||
.oldRule(SalaryEntityUtil.toJSONString(saveParam.getMedianRule()))
|
||||
.frequentRule(SalaryEntityUtil.toJSONString(saveParam.getMedianRule()))
|
||||
.tileRule(SalaryEntityUtil.toJSONString(saveParam.getMedianRule()))
|
||||
.lastRule(SalaryEntityUtil.toJSONString(saveParam.getLastRule()))
|
||||
.oldRule(SalaryEntityUtil.toJSONString(saveParam.getOldRule()))
|
||||
.frequentRule(SalaryEntityUtil.toJSONString(saveParam.getFrequentRule()))
|
||||
.tileRule(SalaryEntityUtil.toJSONString(saveParam.getTileRule()))
|
||||
.indexValue(max + 1)
|
||||
.statReportId(saveParam.getStatReportId())
|
||||
.unitType(saveParam.getUnitType() == null ? UnitTypeEnum.YUAN.getValue() : saveParam.getUnitType())
|
||||
|
|
|
|||
|
|
@ -352,7 +352,7 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary
|
|||
po.setCreator(uid);
|
||||
po.setCreateTime(now);
|
||||
po.setUpdateTime(now);
|
||||
po.setReportName(po.getReportName()+"_copy");
|
||||
po.setReportName(po.getReportName() + "_copy");
|
||||
|
||||
getSalaryStatisticsReportMapper().insertIgnoreNull(po);
|
||||
|
||||
|
|
@ -414,11 +414,21 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary
|
|||
param.setSalaryStartMonth(SalaryDateUtil.getFormatYearMonth(reportPO.getSalaryStartMonth()));
|
||||
param.setSalaryEndMonth(SalaryDateUtil.getFormatYearMonth(reportPO.getSalaryEndMonth()));
|
||||
String key = "id";
|
||||
param.setTaxAgent(((List<Map>) JSON.parseArray(reportPO.getTaxAgentSetting(), Map.class)).stream().map(m -> Long.valueOf(m.get(key).toString())).collect(Collectors.toList()));
|
||||
param.setSubCompany(((List<Map>) JSON.parseArray(reportPO.getSubCompanySetting(), Map.class)).stream().map(m -> Long.valueOf(m.get(key).toString())).collect(Collectors.toList()));
|
||||
param.setDepart(((List<Map>) JSON.parseArray(reportPO.getDepartSetting(), Map.class)).stream().map(m -> Long.valueOf(m.get(key).toString())).collect(Collectors.toList()));
|
||||
param.setEmployee(((List<Map>) JSON.parseArray(reportPO.getEmployeeSetting(), Map.class)).stream().map(m -> Long.valueOf(m.get(key).toString())).collect(Collectors.toList()));
|
||||
param.setHiredate(JSON.parseArray(reportPO.getHiredateSetting(), Date.class));
|
||||
if (reportPO.getTaxAgentSetting() != null) {
|
||||
param.setTaxAgent(((List<Map>) JSON.parseArray(reportPO.getTaxAgentSetting(), Map.class)).stream().map(m -> Long.valueOf(m.get(key).toString())).collect(Collectors.toList()));
|
||||
}
|
||||
if (reportPO.getSubCompanySetting() != null) {
|
||||
param.setSubCompany(((List<Map>) JSON.parseArray(reportPO.getSubCompanySetting(), Map.class)).stream().map(m -> Long.valueOf(m.get(key).toString())).collect(Collectors.toList()));
|
||||
}
|
||||
if (reportPO.getDepartSetting() != null) {
|
||||
param.setDepart(((List<Map>) JSON.parseArray(reportPO.getDepartSetting(), Map.class)).stream().map(m -> Long.valueOf(m.get(key).toString())).collect(Collectors.toList()));
|
||||
}
|
||||
if (reportPO.getEmployeeSetting() != null) {
|
||||
param.setEmployee(((List<Map>) JSON.parseArray(reportPO.getEmployeeSetting(), Map.class)).stream().map(m -> Long.valueOf(m.get(key).toString())).collect(Collectors.toList()));
|
||||
}
|
||||
if (reportPO.getHiredateSetting() != null) {
|
||||
param.setHiredate(JSON.parseArray(reportPO.getHiredateSetting(), Date.class));
|
||||
}
|
||||
SalaryStatisticsReportDataQueryParam queryParam = new SalaryStatisticsReportDataQueryParam();
|
||||
com.mzlion.core.utils.BeanUtils.copyProperties(param, queryParam);
|
||||
// 获取本期报表分权后的核算人员
|
||||
|
|
@ -1062,7 +1072,7 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary
|
|||
List<FieldSetting> fieldSettings = Optional.ofNullable(Optional.ofNullable(employeeInfoExpandDTO).orElse(new EmployeeInfoExpandDTO()).getFieldSettings()).orElse(new ArrayList<>());
|
||||
Map<Long, Map<String, String>> expandEmployeeMap = getSalaryEmployeeService(user).expandEmployeeMap(empIds, employeeInfoExpandDTO);
|
||||
|
||||
log.info("扩展属性"+expandEmployeeMap);
|
||||
log.info("扩展属性" + expandEmployeeMap);
|
||||
|
||||
// List<ExtEmployeePO> extEmployees = extEmployeeService.listByIdsWithDeleted(accountDetailPOList.stream().filter(e -> EmployeeTypeEnum.EXT_EMPLOYEE.getValue().equals(e.getEmployeeType())).map(SalaryAcctEmployeePO::getEmployeeId).distinct().collect(Collectors.toList()), data.getTenantKey());
|
||||
// Map<Long, String> employeeExtByIdMap = SalaryEntityUtil.convert2Map(extEmployees, ExtEmployeePO::getId, ExtEmployeePO::getUsername);
|
||||
|
|
@ -1075,7 +1085,7 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary
|
|||
temp.put(DM, employeeByIdMap.get(k).getUsername());
|
||||
fieldSettings.forEach(
|
||||
fieldSetting -> {
|
||||
temp.put(fieldSetting.getField(), expandEmployeeMap.getOrDefault(k,new HashMap<>()).get(fieldSetting.getField()));
|
||||
temp.put(fieldSetting.getField(), expandEmployeeMap.getOrDefault(k, new HashMap<>()).get(fieldSetting.getField()));
|
||||
}
|
||||
);
|
||||
temp.putAll(SalaryStatisticsReportBO.calculateItem(v, lastEmployeeListMap.get(k), sameEmployeeListMap.get(k), salaryAcctResultValueMap, data.getSalaryStatisticsItemList()));
|
||||
|
|
|
|||
|
|
@ -18,9 +18,9 @@ import com.engine.salary.entity.salaryacct.dto.SalaryComparisonResultListDTO;
|
|||
import com.engine.salary.entity.salaryacct.param.*;
|
||||
import com.engine.salary.entity.salaryacct.po.*;
|
||||
import com.engine.salary.entity.salaryitem.po.SalaryItemPO;
|
||||
import com.engine.salary.entity.salarysob.bo.SalarySobItemAggregateBO;
|
||||
import com.engine.salary.entity.salarysob.dto.SalarySobEmpFieldDTO;
|
||||
import com.engine.salary.entity.salarysob.dto.SalarySobItemAggregateDTO;
|
||||
import com.engine.salary.entity.salarysob.dto.SalarySobItemDTO;
|
||||
import com.engine.salary.entity.salarysob.dto.SalarySobItemGroupDTO;
|
||||
import com.engine.salary.entity.salarysob.po.SalarySobEmpFieldPO;
|
||||
import com.engine.salary.entity.salarysob.po.SalarySobItemGroupPO;
|
||||
import com.engine.salary.entity.salarysob.po.SalarySobItemPO;
|
||||
|
|
@ -670,19 +670,22 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc
|
|||
parseHeader(headerColumnGroup, finalWeaTableColumns);
|
||||
|
||||
List<Object> headerList = new ArrayList<>(finalWeaTableColumns);
|
||||
// 查询薪资核算结果
|
||||
List<Map<String, Object>> resultMapList = getSalaryAcctResultService(user).listByParam(param);
|
||||
// excel导出的数据
|
||||
List<List<Object>> rows = new ArrayList<>();
|
||||
rows.add(headerList);
|
||||
for (Map<String, Object> map : resultMapList) {
|
||||
List<Object> row = Lists.newArrayListWithExpectedSize(headerColumnGroup.size());
|
||||
for (WeaTableColumnGroup weaTableColumn : headerColumnGroup) {
|
||||
row.add(map.getOrDefault(weaTableColumn.getColumn(), StringUtils.EMPTY));
|
||||
if (param.getImportType() != null && param.getImportType().equals("true")) {
|
||||
// 需要导出现有数据,查询薪资核算结果
|
||||
List<Map<String, Object>> resultMapList = getSalaryAcctResultService(user).listByParam(param);
|
||||
for (Map<String, Object> map : resultMapList) {
|
||||
List<Object> row = Lists.newArrayListWithExpectedSize(headerColumnGroup.size());
|
||||
for (WeaTableColumnGroup weaTableColumn : headerColumnGroup) {
|
||||
row.add(map.getOrDefault(weaTableColumn.getColumn(), StringUtils.EMPTY));
|
||||
}
|
||||
rows.add(row);
|
||||
}
|
||||
rows.add(row);
|
||||
}
|
||||
|
||||
|
||||
String sheetName = "薪资核算导入模板";
|
||||
return ExcelUtilPlus.genWorkbookWithChildTitleColumn(rows, sheetName, false);
|
||||
}
|
||||
|
|
@ -784,12 +787,12 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc
|
|||
if (Objects.isNull(salaryAcctRecordPO)) {
|
||||
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98747, "薪资核算记录不存在或已被删除"));
|
||||
}
|
||||
// 模板表头(默认必带"个税扣缴义务人"、"姓名")
|
||||
List<Object> headerList = Lists.newArrayList(SalaryI18nUtil.getI18nLabel(85429, "姓名"), SalaryI18nUtil.getI18nLabel(86184, "个税扣缴义务人"));
|
||||
//定位人员带“部门”,“手机号”,“工号”
|
||||
headerList.add("部门");
|
||||
headerList.add("手机号");
|
||||
headerList.add("工号");
|
||||
// // 模板表头(默认必带"个税扣缴义务人"、"姓名")
|
||||
// List<Object> headerList = Lists.newArrayList(SalaryI18nUtil.getI18nLabel(85429, "姓名"), SalaryI18nUtil.getI18nLabel(86184, "个税扣缴义务人"));
|
||||
// //定位人员带“部门”,“手机号”,“工号”
|
||||
// headerList.add("部门");
|
||||
// headerList.add("手机号");
|
||||
// headerList.add("工号");
|
||||
// 查询薪资账套下的薪资项目
|
||||
SalarySobItemAggregateDTO salarySobItemAggregateDTO = getSalarySobItemService(user).getAggregateBySalarySobId(salaryAcctRecordPO.getSalarySobId());
|
||||
|
||||
|
|
@ -804,16 +807,16 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc
|
|||
// }
|
||||
//
|
||||
// }
|
||||
// 薪资项目分类下的新资项目
|
||||
for (SalarySobItemGroupDTO itemGroup : salarySobItemAggregateDTO.getItemGroups()) {
|
||||
for (SalarySobItemDTO item : itemGroup.getItems()) {
|
||||
headerList.add(item.getName());
|
||||
}
|
||||
}
|
||||
// 没有分类的薪资项目
|
||||
for (SalarySobItemDTO item : salarySobItemAggregateDTO.getItems()) {
|
||||
headerList.add(item.getName());
|
||||
}
|
||||
// // 薪资项目分类下的新资项目
|
||||
// for (SalarySobItemGroupDTO itemGroup : salarySobItemAggregateDTO.getItemGroups()) {
|
||||
// for (SalarySobItemDTO item : itemGroup.getItems()) {
|
||||
// headerList.add(item.getName());
|
||||
// }
|
||||
// }
|
||||
// // 没有分类的薪资项目
|
||||
// for (SalarySobItemDTO item : salarySobItemAggregateDTO.getItems()) {
|
||||
// headerList.add(item.getName());
|
||||
// }
|
||||
|
||||
|
||||
// 无分类薪资项目id
|
||||
|
|
@ -821,11 +824,10 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc
|
|||
// 查询列表的表头
|
||||
List<WeaTableColumnGroup> weaTableColumns = listWeaTableColumn(salaryAcctRecordPO);
|
||||
List<Object> finalWeaTableColumns = new ArrayList<>();
|
||||
finalWeaTableColumns.add(new WeaTableColumnGroup("150", SalaryI18nUtil.getI18nLabel(85429, "姓名"), SalaryI18nUtil.getI18nLabel(85429, "姓名")));
|
||||
finalWeaTableColumns.add(new WeaTableColumnGroup("150", SalaryI18nUtil.getI18nLabel(86184, "个税扣缴义务人"), SalaryI18nUtil.getI18nLabel(86184, "个税扣缴义务人")));
|
||||
finalWeaTableColumns.add(new WeaTableColumnGroup("150", "部门", "部门"));
|
||||
finalWeaTableColumns.add(new WeaTableColumnGroup("150", "手机号", "手机号"));
|
||||
finalWeaTableColumns.add(new WeaTableColumnGroup("150", "工号", "工号"));
|
||||
// 查询薪资核算所用的薪资账套的员工信息字段
|
||||
List<SalarySobEmpFieldPO> salarySobEmpFieldPOS = getSalarySobEmpFieldService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId());
|
||||
List<SalarySobEmpFieldDTO> salarySobEmpFieldDTOS = new SalarySobItemAggregateBO().buildEmpField(salarySobEmpFieldPOS);
|
||||
salarySobEmpFieldDTOS.stream().forEach(empField -> finalWeaTableColumns.add(new WeaTableColumnGroup("150", SalaryI18nUtil.getI18nLabel(0, empField.getFieldName()), SalaryI18nUtil.getI18nLabel(0, empField.getFieldName()))));
|
||||
for (WeaTableColumnGroup tableColumn : weaTableColumns) {
|
||||
WeaTableColumnGroup columnGroupItem = (WeaTableColumnGroup) tableColumn;
|
||||
if (columnGroupItem.getChildren() != null) {
|
||||
|
|
@ -869,7 +871,7 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc
|
|||
fileInputStream = ImageFileManager.getInputStreamById(Integer.parseInt(param.getImageId()));
|
||||
Sheet sheet = ExcelSupport.parseFile(fileInputStream, 0, EXCEL_TYPE_XLSX);
|
||||
map.put("headers", ExcelSupport.getSheetHeader(sheet, 1));
|
||||
map.put("list", ExcelParseHelper.parse2List(sheet, 2));
|
||||
map.put("list", ExcelParseHelper.parse2List(sheet, 2, 1));
|
||||
return map;
|
||||
|
||||
} finally {
|
||||
|
|
@ -944,7 +946,11 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc
|
|||
// 租户下所有的个税扣缴义务人
|
||||
List<TaxAgentPO> taxAgents = getTaxAgentService(user).listAll();
|
||||
Map<String, Long> taxAgentNameMap = SalaryEntityUtil.convert2Map(taxAgents, TaxAgentPO::getName, TaxAgentPO::getId);
|
||||
|
||||
// 薪资核算人员信息字段
|
||||
List<SalarySobEmpFieldPO> salarySobEmpFieldPOS = getSalarySobEmpFieldService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId());
|
||||
List<String> salarySobEmpFields = SalaryEntityUtil.properties(new SalarySobItemAggregateBO().buildEmpField(salarySobEmpFieldPOS), SalarySobEmpFieldDTO::getFieldName, Collectors.toList());
|
||||
List<String> excludeFields = Arrays.asList("个税扣缴义务人", "部门", "姓名");
|
||||
salarySobEmpFields = salarySobEmpFields.stream().filter(field -> !excludeFields.contains(field)).collect(Collectors.toList());
|
||||
// 索引(用于计算进度)
|
||||
int index = 0;
|
||||
// 失败的数量
|
||||
|
|
@ -1066,7 +1072,9 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc
|
|||
}
|
||||
} else if (StringUtils.equals(SalaryI18nUtil.getI18nLabel(86184, "部门"), dataKey.toString())
|
||||
|| StringUtils.equals(SalaryI18nUtil.getI18nLabel(86186, "手机号"), dataKey.toString())
|
||||
|| StringUtils.equals(SalaryI18nUtil.getI18nLabel(86186, "工号"), dataKey.toString())) {
|
||||
|| StringUtils.equals(SalaryI18nUtil.getI18nLabel(86186, "工号"), dataKey.toString())
|
||||
|| salarySobEmpFields.contains(dataKey.toString())
|
||||
) {
|
||||
|
||||
} else if (StringUtils.equals(SalaryI18nUtil.getI18nLabel(86184, "个税扣缴义务人"), dataKey.toString())) {
|
||||
if (StringUtils.isEmpty(dataValue)) {
|
||||
|
|
|
|||
|
|
@ -39,8 +39,8 @@ public class SalaryPageUtil {
|
|||
return pageInfo;
|
||||
}
|
||||
|
||||
public static <T> PageInfo<T> buildPage(Integer pageNo, Integer pageSize,List<T> totalCollection) {
|
||||
PageInfo<T> pageInfo = new PageInfo<>();
|
||||
public static <T> PageInfo<T> buildPage(Integer pageNo, Integer pageSize, List<T> totalCollection) {
|
||||
PageInfo<T> pageInfo = new PageInfo<>();
|
||||
pageInfo.setTotal(totalCollection.size());
|
||||
totalCollection = subList(pageNo, pageSize, totalCollection);
|
||||
pageInfo.setPageNum(pageNo);
|
||||
|
|
@ -93,6 +93,18 @@ public class SalaryPageUtil {
|
|||
endIndex > source.size() ? source.size() : endIndex);
|
||||
}
|
||||
|
||||
public static String selfAdaption(String chars) {
|
||||
int adaption = 0;
|
||||
|
||||
if (chars != null) {
|
||||
adaption = chars.length() * 12 + 55;
|
||||
}
|
||||
if (adaption < 79) {
|
||||
adaption = 79;
|
||||
}
|
||||
return adaption + "";
|
||||
}
|
||||
|
||||
|
||||
public static List<Column> convertList(List<WeaTableColumn> columns){
|
||||
if(CollectionUtils.isNotEmpty(columns)){
|
||||
|
|
|
|||
Loading…
Reference in New Issue