diff --git a/src/com/engine/salary/entity/datacollection/param/AttendQuoteDataDeleteParam.java b/src/com/engine/salary/entity/datacollection/param/AttendQuoteDataDeleteParam.java new file mode 100644 index 000000000..84c2e08e6 --- /dev/null +++ b/src/com/engine/salary/entity/datacollection/param/AttendQuoteDataDeleteParam.java @@ -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 attendQuoteDataIds; + + +} diff --git a/src/com/engine/salary/mapper/datacollection/AttendQuoteDataMapper.java b/src/com/engine/salary/mapper/datacollection/AttendQuoteDataMapper.java index aa4bfff5c..4cf2581bd 100644 --- a/src/com/engine/salary/mapper/datacollection/AttendQuoteDataMapper.java +++ b/src/com/engine/salary/mapper/datacollection/AttendQuoteDataMapper.java @@ -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 listSome(@Param("param") AttendQuoteDataQueryParam param); + + void deleteByIds(@Param("ids") List ids); } \ No newline at end of file diff --git a/src/com/engine/salary/mapper/datacollection/AttendQuoteDataMapper.xml b/src/com/engine/salary/mapper/datacollection/AttendQuoteDataMapper.xml index ca51de22a..05e1b74fd 100644 --- a/src/com/engine/salary/mapper/datacollection/AttendQuoteDataMapper.xml +++ b/src/com/engine/salary/mapper/datacollection/AttendQuoteDataMapper.xml @@ -155,6 +155,18 @@ AND delete_type = 0 + + UPDATE hrsa_attend_quote_data + SET delete_type=1 + WHERE delete_type = 0 + + AND id IN + + #{id} + + + + t1.id, @@ -396,4 +408,5 @@ + \ No newline at end of file diff --git a/src/com/engine/salary/mapper/datacollection/AttendQuoteDataValueMapper.xml b/src/com/engine/salary/mapper/datacollection/AttendQuoteDataValueMapper.xml index 30d790e9d..e904c9dc8 100644 --- a/src/com/engine/salary/mapper/datacollection/AttendQuoteDataValueMapper.xml +++ b/src/com/engine/salary/mapper/datacollection/AttendQuoteDataValueMapper.xml @@ -381,6 +381,9 @@ AND attend_quote_id = #{param.attendQuoteId} + + AND attend_quote_data_id = #{param.attendQuoteDataId} + AND employee_id IN diff --git a/src/com/engine/salary/service/AttendQuoteDataService.java b/src/com/engine/salary/service/AttendQuoteDataService.java index 21609dd55..063ae2457 100644 --- a/src/com/engine/salary/service/AttendQuoteDataService.java +++ b/src/com/engine/salary/service/AttendQuoteDataService.java @@ -92,4 +92,10 @@ public interface AttendQuoteDataService { * @param attendQuoteDataEditParam */ Map getData(AttendQuoteDataEditParam attendQuoteDataEditParam); + + /** + * 批量删除考勤引用明细数据 + * @param batchDeleteData + */ + void batchDeleteData(AttendQuoteDataDeleteParam batchDeleteData); } diff --git a/src/com/engine/salary/service/impl/AttendQuoteDataServiceImpl.java b/src/com/engine/salary/service/impl/AttendQuoteDataServiceImpl.java index 0ff7b6674..387e277c2 100644 --- a/src/com/engine/salary/service/impl/AttendQuoteDataServiceImpl.java +++ b/src/com/engine/salary/service/impl/AttendQuoteDataServiceImpl.java @@ -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 attendQuoteData = attendQuoteDataEditParam.getAttendQuoteData(); + if (attendQuoteData == null || attendQuoteData.keySet().size() == 0) { + return; + } AttendQuoteDataBiz dataBiz = new AttendQuoteDataBiz(); AttendQuoteDataValueBiz attendQuoteDataValueBiz = new AttendQuoteDataValueBiz(); ArrayList ids = new ArrayList<>(); @@ -891,15 +892,35 @@ public class AttendQuoteDataServiceImpl extends Service implements AttendQuoteDa if (list == null || list.size() == 0) { throw new SalaryRunTimeException("该数据不存在!"); } - Map attendQuoteFieldData = new HashMap<>(); + AttendQuoteDataBaseDTO attendQuoteDataBaseDTO = list.get(0); + Date now = new Date(); + List values = new ArrayList<>(); for (Map.Entry entrySet : attendQuoteData.entrySet()) { String[] s = entrySet.getKey().split("_"); - attendQuoteFieldData.put(s[0], entrySet.getValue()); - } - for (Map.Entry 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 attendQuoteFields = getAllAttendQuoteFields(); - // 获取最终结果 - List> listMaps = getListMaps(list); + AttendQuoteDataBaseDTO attendQuoteDataBaseDTO = list.get(0); + + // 考核数据值 + List attendQuoteDataValues = dataValueBiz.listSome(AttendQuoteDataValuePO.builder().attendQuoteDataId(attendQuoteDataBaseDTO.getId()).build()); + + Map 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 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 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 datas = new HashMap<>(); - datas.put("data", listMaps.get(0)); - datas.put("dataKey", result.getResultMap()); - return datas; + + Map 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 attendQuoteDataPOS = listByIds(param.getAttendQuoteDataIds()); + if (CollectionUtils.isEmpty(attendQuoteDataPOS) || attendQuoteDataPOS.size() != param.getAttendQuoteDataIds().size()) { + throw new SalaryRunTimeException("考勤引用数据不存在或已被删除,请刷新页面后重试!"); + } + // 删除数据 + deleteByIds(param.getAttendQuoteDataIds()); + } + + private void deleteByIds(List attendQuoteDataIds) { + if (CollectionUtils.isEmpty(attendQuoteDataIds)) { + return; + } + List> partition = Lists.partition(attendQuoteDataIds, 500); + partition.forEach(part -> { + getAttendQuoteDataMapper().deleteByIds(part); + }); + } + + private List listByIds(List attendQuoteDataIds) { + if (CollectionUtils.isEmpty(attendQuoteDataIds)) { + return Collections.emptyList(); + } + List> partition = Lists.partition(attendQuoteDataIds, 500); + ArrayList resultList = new ArrayList<>(); + partition.forEach(part -> { + resultList.addAll(getAttendQuoteDataMapper().listSome(AttendQuoteDataQueryParam.builder().ids(part).build())); + }); + return resultList; + } } diff --git a/src/com/engine/salary/web/AttendQuoteController.java b/src/com/engine/salary/web/AttendQuoteController.java index 5e0f1464c..cc704523a 100644 --- a/src/com/engine/salary/web/AttendQuoteController.java +++ b/src/com/engine/salary/web/AttendQuoteController.java @@ -231,6 +231,15 @@ public class AttendQuoteController { return new ResponseResult>(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(user).run(getAttendQuoteDataWrapper(user)::batchDeleteData, deleteParam); + } + @GET @Path("/selectSalarySobList") @Produces(MediaType.APPLICATION_JSON) diff --git a/src/com/engine/salary/wrapper/AttendQuoteDataWrapper.java b/src/com/engine/salary/wrapper/AttendQuoteDataWrapper.java index 2e5d4e579..781e7d468 100644 --- a/src/com/engine/salary/wrapper/AttendQuoteDataWrapper.java +++ b/src/com/engine/salary/wrapper/AttendQuoteDataWrapper.java @@ -179,4 +179,9 @@ public class AttendQuoteDataWrapper extends Service { public Map getData(AttendQuoteDataEditParam attendQuoteDataEditParam) { return getAttendQuoteDataService(user).getData(attendQuoteDataEditParam); } + + public void batchDeleteData(AttendQuoteDataDeleteParam batchDeleteData) { + getAttendQuoteDataService(user).batchDeleteData(batchDeleteData); + } + }