package com.malk.controller; import com.malk.server.common.McR; import com.malk.server.workhours.TimeCardDuplicateCleanupRequest; import com.malk.server.workhours.TimeCardDuplicateCleanupResult; import com.malk.server.workhours.TimeCardInstanceDeleteRequest; import com.malk.server.workhours.TimeCardSummaryUpsertRequest; import com.malk.service.workhours.TimeCardSummaryService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * TimeCard 工时汇总接口。 */ @RestController @RequestMapping("/timecard") public class TimeCardController { @Autowired private TimeCardSummaryService timeCardSummaryService; /** * 按填报人 ID + 日期原子写入单日工时汇总。 * * @param request 单日汇总数据 * @return 宜搭写入结果 */ @PostMapping("/summary/upsert") public McR upsertSummary(@RequestBody TimeCardSummaryUpsertRequest request) { return McR.success(timeCardSummaryService.upsert(request)); } /** * 按显式清单受控清理重复汇总记录,默认只校验不删除。 * * @param request 重复记录清理请求 * @return 校验、删除和复查统计 */ @PostMapping("/summary/cleanup-duplicates") public McR cleanupDuplicates( @RequestBody TimeCardDuplicateCleanupRequest request) { return McR.success(timeCardSummaryService.cleanupDuplicates(request)); } /** * 按显式实例 ID 受控删除记录,默认只校验不删除。 * * @param request 实例删除请求 * @return 校验和删除统计 */ @PostMapping("/summary/delete-instances") public McR> deleteInstances( @RequestBody TimeCardInstanceDeleteRequest request) { return McR.success(timeCardSummaryService.deleteInstances(request)); } }