diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/costfee/CostFeeServiceImpl.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/costfee/CostFeeServiceImpl.java index 5ad926a..636dffc 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/costfee/CostFeeServiceImpl.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/costfee/CostFeeServiceImpl.java @@ -272,18 +272,17 @@ public class CostFeeServiceImpl implements CostFeeService { // 设置单位id fee.setCompanyId(String.valueOf(nameToCompanyIdMap.get(fee.getCompanyName()))); //设置班组id - //fee.setDeptId(getDeptList(teamIdMap, importObj.getTeamIds())); + fee.setDeptId(getDeptList(teamIdMap, importObj.getTeamIds())); saveFeeList.add(fee); } } // 4. 处理重复数据(删除+插入原子性) if (!feeList.isEmpty()) { // 4.1 查询并删除重复项 - -// List duplicateIds = personalCostMapper.selectDuplicateIds(saveFeeList); -// if (!duplicateIds.isEmpty()) { -// personalCostMapper.deleteByIds(duplicateIds); -// } + List duplicateIds = personalCostMapper.selectDuplicateIds(saveFeeList); + if (!duplicateIds.isEmpty()) { + personalCostMapper.deleteByIds(duplicateIds); + } // 4.2 批量插入主表 personalCostMapper.insertBatch(saveFeeList); @@ -339,10 +338,10 @@ public class CostFeeServiceImpl implements CostFeeService { // 4. 批量插入主表(空集合直接跳过) if (!feeList.isEmpty()) { //查询重复项,进行删除 - List ids = mechanicalCostMapper.selectDuplicateIds(saveFeeList); - if (!CollectionUtils.isEmpty(ids)) { - mechanicalCostMapper.deleteByIds(ids); - } + List ids = mechanicalCostMapper.selectDuplicateIds(saveFeeList); + if (!CollectionUtils.isEmpty(ids)) { + mechanicalCostMapper.deleteByIds(ids); + } mechanicalCostMapper.insertBatch(saveFeeList); } log.info("成功插入 {} 自有机械费用数据", dataList.size()); @@ -712,6 +711,27 @@ public class CostFeeServiceImpl implements CostFeeService { rowNum, teamIds.length, weights.length )); } + //校验权重值合计不能大于100% + if (weights.length > 0) { + int totalWeight = 0; + for (int j = 0; j < weights.length; j++) { + String weightStr = weights[j].trim(); + int weight = Integer.parseInt(weightStr); + totalWeight += weight; + + // 提前校验:避免超大数值溢出(可选,根据业务场景调整) + if (totalWeight > 100) { + break; // 已超100%,无需继续计算 + } + } + + if (totalWeight > 100) { + throw exception0(BAD_REQUEST.getCode(), String.format( + "第%d条数据:权重值合计不能大于100%", rowNum, totalWeight + )); + } + } + Long companyId = nameToCompanyIdMap.get(importBean.getCompanyName()); //单位校验 validatecompany(rowNum, importBean.getCompanyName(), companyId, belongCompanyId); diff --git a/urbanops-module-garden/src/main/resources/mapper/personalcost/PersonalCostMapper.xml b/urbanops-module-garden/src/main/resources/mapper/personalcost/PersonalCostMapper.xml index 04c2b34..58f9898 100644 --- a/urbanops-module-garden/src/main/resources/mapper/personalcost/PersonalCostMapper.xml +++ b/urbanops-module-garden/src/main/resources/mapper/personalcost/PersonalCostMapper.xml @@ -7,7 +7,7 @@ FROM garden_personal_cost WHERE - (salary_month = #{key.salaryMonth} AND name = #{key.name}) + (salary_month = #{key.salaryMonth} AND name = #{key.name} and company_id = #{key.companyId})