Merge branch 'feature/250601_考勤引用编辑' into custom/西部信托

This commit is contained in:
Harryxzy 2025-06-12 13:28:44 +08:00
commit 4b9e75e306
8 changed files with 150 additions and 28 deletions

View File

@ -0,0 +1,26 @@
package com.engine.salary.entity.datacollection.param;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @ClassName AttendQuoteDataDeleteParam
* @author Harryxzy
* @date 2025/6/3 15:52
* @description 考勤引用明细批量删除
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class AttendQuoteDataDeleteParam {
//主键id"
private List<Long> attendQuoteDataIds;
}

View File

@ -3,7 +3,6 @@ package com.engine.salary.mapper.datacollection;
import com.engine.salary.entity.datacollection.dto.AttendQuoteDataBaseDTO;
import com.engine.salary.entity.datacollection.param.AttendQuoteDataQueryParam;
import com.engine.salary.entity.datacollection.po.AttendQuoteDataPO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.Collection;
@ -82,4 +81,6 @@ public interface AttendQuoteDataMapper {
List<AttendQuoteDataPO> listSome(@Param("param") AttendQuoteDataQueryParam param);
void deleteByIds(@Param("ids") List<Long> ids);
}

View File

@ -155,6 +155,18 @@
AND delete_type = 0
</delete>
<delete id="deleteByIds">
UPDATE hrsa_attend_quote_data
SET delete_type=1
WHERE delete_type = 0
<if test="ids != null and ids.size()>0">
AND id IN
<foreach collection="ids" open="(" item="id" separator="," close=")">
#{id}
</foreach>
</if>
</delete>
<sql id="attendQuoteDataColumn">
t1.id,
@ -396,4 +408,5 @@
</if>
</select>
</mapper>

View File

@ -381,6 +381,9 @@
<if test="param.attendQuoteId != null and param.attendQuoteId != ''">
AND attend_quote_id = #{param.attendQuoteId}
</if>
<if test="param.attendQuoteDataId != null ">
AND attend_quote_data_id = #{param.attendQuoteDataId}
</if>
<if test="param.employeeIds != null and param.employeeIds.size() > 0">
AND employee_id IN
<foreach collection="param.employeeIds" open="(" item="employeeId" separator="," close=")">

View File

@ -92,4 +92,10 @@ public interface AttendQuoteDataService {
* @param attendQuoteDataEditParam
*/
Map<String, Object> getData(AttendQuoteDataEditParam attendQuoteDataEditParam);
/**
* 批量删除考勤引用明细数据
* @param batchDeleteData
*/
void batchDeleteData(AttendQuoteDataDeleteParam batchDeleteData);
}

View File

@ -4,9 +4,7 @@ import cn.hutool.core.util.NumberUtil;
import com.alibaba.druid.support.json.JSONUtils;
import com.alibaba.fastjson.JSONObject;
import com.api.formmode.mybatis.util.SqlProxyHandle;
import com.cloudstore.eccom.pc.table.WeaTable;
import com.cloudstore.eccom.pc.table.WeaTableColumn;
import com.cloudstore.eccom.result.WeaResultMsg;
import com.engine.common.util.ServiceUtil;
import com.engine.core.impl.Service;
import com.engine.hrmelog.entity.dto.LoggerContext;
@ -882,6 +880,9 @@ public class AttendQuoteDataServiceImpl extends Service implements AttendQuoteDa
@Override
public void editData(AttendQuoteDataEditParam attendQuoteDataEditParam) {
Map<String, String> attendQuoteData = attendQuoteDataEditParam.getAttendQuoteData();
if (attendQuoteData == null || attendQuoteData.keySet().size() == 0) {
return;
}
AttendQuoteDataBiz dataBiz = new AttendQuoteDataBiz();
AttendQuoteDataValueBiz attendQuoteDataValueBiz = new AttendQuoteDataValueBiz();
ArrayList<Long> ids = new ArrayList<>();
@ -891,15 +892,35 @@ public class AttendQuoteDataServiceImpl extends Service implements AttendQuoteDa
if (list == null || list.size() == 0) {
throw new SalaryRunTimeException("该数据不存在!");
}
Map<String, String> attendQuoteFieldData = new HashMap<>();
AttendQuoteDataBaseDTO attendQuoteDataBaseDTO = list.get(0);
Date now = new Date();
List<AttendQuoteDataValuePO> values = new ArrayList<>();
for (Map.Entry<String, String> entrySet : attendQuoteData.entrySet()) {
String[] s = entrySet.getKey().split("_");
attendQuoteFieldData.put(s[0], entrySet.getValue());
}
for (Map.Entry<String, String> entrySet : attendQuoteFieldData.entrySet()) {
AttendQuoteDataValuePO updatePO = AttendQuoteDataValuePO.builder().employeeId(list.get(0).getEmployeeId()).attendQuoteFieldId(SalaryEntityUtil.string2Long(entrySet.getKey())).dataValue(entrySet.getValue()).build();
attendQuoteDataValueBiz.updateDataValue(updatePO);
values.add(AttendQuoteDataValuePO.builder()
.createTime(now)
.updateTime(now)
.creator((long) user.getUID())
.tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
.employeeId(attendQuoteDataBaseDTO.getEmployeeId())
.attendQuoteId(attendQuoteDataBaseDTO.getAttendQuoteId())
.attendQuoteDataId(attendQuoteDataBaseDTO.getId())
.attendQuoteFieldId(Long.valueOf(s[0]))
.dataValue(Utils.null2String(entrySet.getValue()))
.build());
}
// 先删除数据
attendQuoteDataValueBiz.deleteByAttendQuoteDataIds(ids);
// 批量插入
values = values.stream()
.filter(po -> StringUtils.isNotBlank(po.getDataValue()))
.map(val -> {
val.setDataValue(val.getDataValue().trim());
return val;
})
.collect(Collectors.toList());
dataValueBiz.insertData(values);
}
/**
@ -919,32 +940,38 @@ public class AttendQuoteDataServiceImpl extends Service implements AttendQuoteDa
}
// 所有考勤字段
List<AttendQuoteFieldPO> attendQuoteFields = getAllAttendQuoteFields();
// 获取最终结果
List<Map<String, Object>> listMaps = getListMaps(list);
AttendQuoteDataBaseDTO attendQuoteDataBaseDTO = list.get(0);
// 考核数据值
List<AttendQuoteDataValuePO> attendQuoteDataValues = dataValueBiz.listSome(AttendQuoteDataValuePO.builder().attendQuoteDataId(attendQuoteDataBaseDTO.getId()).build());
Map<String, Object> valueMap = new LinkedHashMap<>();
valueMap.put("id", attendQuoteDataBaseDTO.getId());
valueMap.put("username", attendQuoteDataBaseDTO.getUsername());
valueMap.put("departmentName", attendQuoteDataBaseDTO.getDepartmentName());
valueMap.put("mobile", attendQuoteDataBaseDTO.getMobile());
valueMap.put("jobNum", attendQuoteDataBaseDTO.getJobNum());
valueMap.put("idNo", attendQuoteDataBaseDTO.getIdNo());
// 考勤数据
attendQuoteDataValues.stream().filter(a -> a.getAttendQuoteDataId().equals(attendQuoteDataBaseDTO.getId())).collect(Collectors.toList()).forEach(e -> {
valueMap.put(e.getAttendQuoteFieldId() + "_attendQuoteData", e.getDataValue());
});
List<WeaTableColumn> columns = new ArrayList<>();
columns.add(new WeaTableColumn("150", SalaryI18nUtil.getI18nLabel(85429, "姓名"), "username"));
columns.add(new WeaTableColumn("150", SalaryI18nUtil.getI18nLabel(86185, "部门"), "departmentName"));
columns.add(new WeaTableColumn("150", SalaryI18nUtil.getI18nLabel(86186, "手机号"), "mobile"));
columns.add(new WeaTableColumn("150", SalaryI18nUtil.getI18nLabel(86317, "工号"), "jobNum"));
columns.add(new WeaTableColumn("150", SalaryI18nUtil.getI18nLabel(86317, "身份证号"), "idNo"));
// 动态列
if (CollectionUtils.isNotEmpty(listMaps)) {
Map<String, Object> map = listMaps.stream().max(Comparator.comparingInt(m -> m.keySet().size())).get();
for (AttendQuoteFieldPO attendQuoteField : attendQuoteFields) {
if (map.containsKey(attendQuoteField.getId() + "_attendQuoteData")) {
columns.add(new WeaTableColumn("150", attendQuoteField.getFieldName(), attendQuoteField.getId() + "_attendQuoteData"));
}
}
for (AttendQuoteFieldPO attendQuoteField : attendQuoteFields) {
columns.add(new WeaTableColumn("150", attendQuoteField.getFieldName(), attendQuoteField.getId() + "_attendQuoteData"));
}
WeaTable weaTable = new WeaTable();
weaTable.setColumns(columns);
WeaResultMsg result = new WeaResultMsg(false);
result.putAll(weaTable.makeDataResult());
result.success();
Map<String, Object> datas = new HashMap<>();
datas.put("data", listMaps.get(0));
datas.put("dataKey", result.getResultMap());
return datas;
Map<String, Object> resultMap = new HashMap<>();
resultMap.put("data", valueMap);
resultMap.put("columns", columns);
return resultMap;
}
/**
@ -1041,4 +1068,36 @@ public class AttendQuoteDataServiceImpl extends Service implements AttendQuoteDa
return errorMsg;
}
@Override
public void batchDeleteData(AttendQuoteDataDeleteParam param) {
List<AttendQuoteDataPO> attendQuoteDataPOS = listByIds(param.getAttendQuoteDataIds());
if (CollectionUtils.isEmpty(attendQuoteDataPOS) || attendQuoteDataPOS.size() != param.getAttendQuoteDataIds().size()) {
throw new SalaryRunTimeException("考勤引用数据不存在或已被删除,请刷新页面后重试!");
}
// 删除数据
deleteByIds(param.getAttendQuoteDataIds());
}
private void deleteByIds(List<Long> attendQuoteDataIds) {
if (CollectionUtils.isEmpty(attendQuoteDataIds)) {
return;
}
List<List<Long>> partition = Lists.partition(attendQuoteDataIds, 500);
partition.forEach(part -> {
getAttendQuoteDataMapper().deleteByIds(part);
});
}
private List<AttendQuoteDataPO> listByIds(List<Long> attendQuoteDataIds) {
if (CollectionUtils.isEmpty(attendQuoteDataIds)) {
return Collections.emptyList();
}
List<List<Long>> partition = Lists.partition(attendQuoteDataIds, 500);
ArrayList<AttendQuoteDataPO> resultList = new ArrayList<>();
partition.forEach(part -> {
resultList.addAll(getAttendQuoteDataMapper().listSome(AttendQuoteDataQueryParam.builder().ids(part).build()));
});
return resultList;
}
}

View File

@ -231,6 +231,15 @@ public class AttendQuoteController {
return new ResponseResult<AttendQuoteDataEditParam, Map<String, Object>>(user).run(getAttendQuoteDataWrapper(user)::editData, queryParam);
}
@POST
@Path("/batchDeleteData")
@Produces(MediaType.APPLICATION_JSON)
public String batchDeleteData(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody AttendQuoteDataDeleteParam deleteParam) {
User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<AttendQuoteDataDeleteParam, String>(user).run(getAttendQuoteDataWrapper(user)::batchDeleteData, deleteParam);
}
@GET
@Path("/selectSalarySobList")
@Produces(MediaType.APPLICATION_JSON)

View File

@ -179,4 +179,9 @@ public class AttendQuoteDataWrapper extends Service {
public Map<String, Object> getData(AttendQuoteDataEditParam attendQuoteDataEditParam) {
return getAttendQuoteDataService(user).getData(attendQuoteDataEditParam);
}
public void batchDeleteData(AttendQuoteDataDeleteParam batchDeleteData) {
getAttendQuoteDataService(user).batchDeleteData(batchDeleteData);
}
}