package com.klp.controller; import java.util.List; import java.util.Arrays; import lombok.RequiredArgsConstructor; import javax.servlet.http.HttpServletResponse; import javax.validation.constraints.*; import org.springframework.web.bind.annotation.*; import org.springframework.validation.annotation.Validated; import com.klp.common.annotation.RepeatSubmit; import com.klp.common.annotation.Log; import com.klp.common.core.controller.BaseController; import com.klp.common.core.domain.PageQuery; import com.klp.common.core.domain.R; import com.klp.common.core.validate.AddGroup; import com.klp.common.core.validate.EditGroup; import com.klp.common.enums.BusinessType; import com.klp.common.utils.poi.ExcelUtil; import com.klp.domain.vo.WmsCoilPendingActionVo; import com.klp.domain.vo.TheoryCycleRegressionResultVo; import com.klp.domain.bo.WmsCoilPendingActionBo; import com.klp.service.IWmsCoilPendingActionService; import com.klp.common.core.page.TableDataInfo; import org.springframework.format.annotation.DateTimeFormat; import java.util.Date; /** * 钢卷待操作 * * @author Joshi * @date 2025-11-03 */ @Validated @RequiredArgsConstructor @RestController @RequestMapping("/wms/coilPendingAction") public class WmsCoilPendingActionController extends BaseController { private final IWmsCoilPendingActionService iWmsCoilPendingActionService; /** * 查询钢卷待操作列表 */ @GetMapping("/list") public TableDataInfo list(WmsCoilPendingActionBo bo, PageQuery pageQuery) { return iWmsCoilPendingActionService.queryPageList(bo, pageQuery); } /** * 导出钢卷待操作列表 */ @Log(title = "钢卷待操作", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(WmsCoilPendingActionBo bo, HttpServletResponse response) { List list = iWmsCoilPendingActionService.queryList(bo); ExcelUtil.exportExcel(list, "钢卷待操作", WmsCoilPendingActionVo.class, response); } /** * 获取钢卷待操作详细信息 * * @param actionId 主键 */ @GetMapping("/{actionId}") public R getInfo(@NotNull(message = "主键不能为空") @PathVariable Long actionId) { return R.ok(iWmsCoilPendingActionService.queryById(actionId)); } /** * 新增钢卷待操作 */ @Log(title = "钢卷待操作", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping() public R add(@Validated(AddGroup.class) @RequestBody WmsCoilPendingActionBo bo) { return toAjax(iWmsCoilPendingActionService.insertByBo(bo)); } /** * 修改钢卷待操作 */ @Log(title = "钢卷待操作", businessType = BusinessType.UPDATE) @RepeatSubmit() @PutMapping() public R edit(@Validated(EditGroup.class) @RequestBody WmsCoilPendingActionBo bo) { return toAjax(iWmsCoilPendingActionService.updateByBo(bo)); } /** * 删除钢卷待操作 * * @param actionIds 主键串 */ @Log(title = "钢卷待操作", businessType = BusinessType.DELETE) @DeleteMapping("/{actionIds}") public R remove(@NotEmpty(message = "主键不能为空") @PathVariable("actionIds") Long[] actionIds) { return toAjax(iWmsCoilPendingActionService.deleteWithValidByIds(Arrays.asList(actionIds), true)); } /** * 更新操作状态 */ @Log(title = "钢卷待操作", businessType = BusinessType.UPDATE) @PutMapping("/status/{actionId}/{status}") public R updateStatus(@PathVariable("actionId") Long actionId, @PathVariable("status") Integer status) { return toAjax(iWmsCoilPendingActionService.updateStatus(actionId, status)); } /** * 开始处理操作 */ @Log(title = "钢卷待操作", businessType = BusinessType.UPDATE) @PutMapping("/start/{actionId}") public R startProcess(@PathVariable("actionId") Long actionId) { return toAjax(iWmsCoilPendingActionService.startProcess(actionId)); } /** * 完成操作 */ @Log(title = "钢卷待操作", businessType = BusinessType.UPDATE) @PutMapping("/complete/{actionId}") public R completeAction(@PathVariable("actionId") Long actionId) { return toAjax(iWmsCoilPendingActionService.completeAction(actionId)); } /** * 取消操作 */ @Log(title = "钢卷待操作", businessType = BusinessType.UPDATE) @PutMapping("/cancel/{actionId}") public R cancelAction(@PathVariable("actionId") Long actionId) { return toAjax(iWmsCoilPendingActionService.cancelAction(actionId)); } /** * 计算理论节拍回归(默认近6个月),并返回散点+拟合线 */ @GetMapping("/theoryCycle/regression") public R theoryCycleRegression( @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date startTime, @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date endTime, @RequestParam(value = "includePoints", required = false, defaultValue = "false") Boolean includePoints, @RequestParam(value = "maxPoints", required = false, defaultValue = "2000") Integer maxPoints) { return R.ok(iWmsCoilPendingActionService.calcTheoryCycleRegression(startTime, endTime, includePoints, maxPoints)); } }