|
@@ -427,7 +427,18 @@ public class TimeCardRepairService {
|
|
|
|
|
|
|
|
private void assertSourceDateAvailable(String userId, String day) {
|
|
private void assertSourceDateAvailable(String userId, String day) {
|
|
|
List<Map> original = query(whConf.getFormUuidWorkHoursSummary(), mapOf(R_SUBMITTER, userId, R_DAY, day));
|
|
List<Map> original = query(whConf.getFormUuidWorkHoursSummary(), mapOf(R_SUBMITTER, userId, R_DAY, day));
|
|
|
- McException.assertAccessException(original.size() > 0, "来源日期已有原工时记录,不能补填 userId=" + userId + ", day=" + day);
|
|
|
|
|
|
|
+ boolean hasApprovedOrChangedHours = original.stream()
|
|
|
|
|
+ .anyMatch(TimeCardRepairService::hasApprovedOrChangedHours);
|
|
|
|
|
+ McException.assertAccessException(hasApprovedOrChangedHours,
|
|
|
|
|
+ "来源日期已有已审批或变更工时,不能补填 userId=" + userId + ", day=" + day);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /** 仅原汇总当天已审批与变更工时的实际合计大于 0 时禁止补填;暂存草稿不占用补填资格。 */
|
|
|
|
|
+ static boolean hasApprovedOrChangedHours(Map record) {
|
|
|
|
|
+ Object nested = record == null ? null : record.get("formData");
|
|
|
|
|
+ Map formData = nested instanceof Map ? (Map) nested : record;
|
|
|
|
|
+ if (formData == null) return false;
|
|
|
|
|
+ return num(formData.get(R_DAILY_APPROVED)) + num(formData.get(R_DAILY_CHANGE)) > 1e-6;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
private void assertRepairRowMutable(String userId, String day, Map row, String category) {
|
|
private void assertRepairRowMutable(String userId, String day, Map row, String category) {
|