Merge branch 'feature/250601_考勤引用编辑' into custom/西部信托
This commit is contained in:
commit
4b9e75e306
|
|
@ -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;
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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>
|
||||
|
|
@ -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=")">
|
||||
|
|
|
|||
|
|
@ -92,4 +92,10 @@ public interface AttendQuoteDataService {
|
|||
* @param attendQuoteDataEditParam
|
||||
*/
|
||||
Map<String, Object> getData(AttendQuoteDataEditParam attendQuoteDataEditParam);
|
||||
|
||||
/**
|
||||
* 批量删除考勤引用明细数据
|
||||
* @param batchDeleteData
|
||||
*/
|
||||
void batchDeleteData(AttendQuoteDataDeleteParam batchDeleteData);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue