- 在 ISchProdScheduleItemService 中新增 receiveFromDetail 方法接口 - 在 SchProdScheduleItemController 中新增 /receiveFromDetail 接口 - 在 SchProdScheduleItemServiceImpl 中实现明细下发业务逻辑 - 新增 SchProdScheduleItemDispatchBo 数据传输对象 - 支持按明细+工序步骤维度删除重复记录后再重新插入 - 使用明细自身 scheduleDate 作为生产日期确保多天排产准确性 - 实现批量插入排产单明细项功能
161 lines
6.2 KiB
Java
161 lines
6.2 KiB
Java
package com.klp.flow.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.flow.domain.vo.SchProdScheduleItemVo;
|
||
import com.klp.flow.domain.vo.SchProdScheduleItemMergeValidateVo;
|
||
import com.klp.flow.domain.bo.SchProdScheduleItemBo;
|
||
import com.klp.flow.domain.bo.SchProdScheduleItemMergeBo;
|
||
import com.klp.flow.domain.bo.SchProdScheduleItemReceiveBo;
|
||
import com.klp.flow.domain.bo.SchProdScheduleItemMergeValidateBo;
|
||
import com.klp.flow.domain.bo.SchProdScheduleItemSortBo;
|
||
import com.klp.flow.domain.bo.SchProdScheduleItemDispatchBo;
|
||
import com.klp.flow.service.ISchProdScheduleItemService;
|
||
import com.klp.common.core.page.TableDataInfo;
|
||
|
||
/**
|
||
* 排产单主加明细可合并
|
||
*
|
||
* @author klp
|
||
* @date 2026-06-26
|
||
*/
|
||
@Validated
|
||
@RequiredArgsConstructor
|
||
@RestController
|
||
@RequestMapping("/flow/prodScheduleItem")
|
||
public class SchProdScheduleItemController extends BaseController {
|
||
|
||
private final ISchProdScheduleItemService iSchProdScheduleItemService;
|
||
|
||
/**
|
||
* 查询排产单主加明细可合并列表
|
||
*/
|
||
@GetMapping("/list")
|
||
public TableDataInfo<SchProdScheduleItemVo> list(SchProdScheduleItemBo bo, PageQuery pageQuery) {
|
||
return iSchProdScheduleItemService.queryPageList(bo, pageQuery);
|
||
}
|
||
|
||
/**
|
||
* 导出排产单主加明细可合并列表
|
||
*/
|
||
@Log(title = "排产单主加明细可合并", businessType = BusinessType.EXPORT)
|
||
@PostMapping("/export")
|
||
public void export(SchProdScheduleItemBo bo, HttpServletResponse response) {
|
||
List<SchProdScheduleItemVo> list = iSchProdScheduleItemService.queryList(bo);
|
||
ExcelUtil.exportExcel(list, "排产单主加明细可合并", SchProdScheduleItemVo.class, response);
|
||
}
|
||
|
||
/**
|
||
* 获取排产单主加明细可合并详细信息
|
||
*
|
||
* @param scheduleId 主键
|
||
*/
|
||
@GetMapping("/{scheduleId}")
|
||
public R<SchProdScheduleItemVo> getInfo(@NotNull(message = "主键不能为空")
|
||
@PathVariable Long scheduleId) {
|
||
return R.ok(iSchProdScheduleItemService.queryById(scheduleId));
|
||
}
|
||
|
||
/**
|
||
* 新增排产单主加明细可合并
|
||
*/
|
||
@Log(title = "排产单主加明细可合并", businessType = BusinessType.INSERT)
|
||
@RepeatSubmit()
|
||
@PostMapping()
|
||
public R<Void> add(@Validated(AddGroup.class) @RequestBody SchProdScheduleItemBo bo) {
|
||
return toAjax(iSchProdScheduleItemService.insertByBo(bo));
|
||
}
|
||
|
||
/**
|
||
* 批量新增排产单主加明细可合并
|
||
*/
|
||
@Log(title = "排产单主加明细可合并", businessType = BusinessType.INSERT)
|
||
@RepeatSubmit()
|
||
@PostMapping("/batch")
|
||
public R<Void> addBatch(@Validated(AddGroup.class) @RequestBody List<SchProdScheduleItemBo> boList) {
|
||
return toAjax(iSchProdScheduleItemService.insertBatchByBo(boList));
|
||
}
|
||
|
||
/**
|
||
* 修改排产单主加明细可合并
|
||
*/
|
||
@Log(title = "排产单主加明细可合并", businessType = BusinessType.UPDATE)
|
||
@RepeatSubmit()
|
||
@PutMapping()
|
||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody SchProdScheduleItemBo bo) {
|
||
return toAjax(iSchProdScheduleItemService.updateByBo(bo));
|
||
}
|
||
|
||
/**
|
||
* 删除排产单主加明细可合并
|
||
*
|
||
* @param scheduleIds 主键串
|
||
*/
|
||
@Log(title = "排产单主加明细可合并", businessType = BusinessType.DELETE)
|
||
@DeleteMapping("/{scheduleIds}")
|
||
public R<Void> remove(@NotEmpty(message = "主键不能为空")
|
||
@PathVariable Long[] scheduleIds) {
|
||
return toAjax(iSchProdScheduleItemService.deleteWithValidByIds(Arrays.asList(scheduleIds), true));
|
||
}
|
||
|
||
/**
|
||
* 合并排产单主加明细可合并:先删除被合并的记录,再插入合并后的新记录
|
||
*/
|
||
@Log(title = "排产单主加明细可合并", businessType = BusinessType.UPDATE)
|
||
@RepeatSubmit()
|
||
@PostMapping("/merge")
|
||
public R<Void> merge(@Validated @RequestBody SchProdScheduleItemMergeBo mergeBo) {
|
||
return toAjax(iSchProdScheduleItemService.mergeByBo(mergeBo));
|
||
}
|
||
|
||
/**
|
||
* 接收产需单:从 sch_prod_schedule + sch_prod_schedule_detail 全字段复制到 sch_prod_schedule_item
|
||
*/
|
||
@Log(title = "排产单主加明细可合并", businessType = BusinessType.INSERT)
|
||
@RepeatSubmit()
|
||
@PostMapping("/receive")
|
||
public R<Void> receive(@Validated @RequestBody SchProdScheduleItemReceiveBo receiveBo) {
|
||
return toAjax(iSchProdScheduleItemService.receiveByBo(receiveBo));
|
||
}
|
||
|
||
/**
|
||
* 明细下发:逐条从 sch_prod_schedule_detail 下发到 sch_prod_schedule_item
|
||
* 生产日期使用明细的 scheduleDate,支持一条一条明细独立下发
|
||
* 若已下发过(同明细+同工序),先删除旧记录再重新插入
|
||
*/
|
||
@Log(title = "排产单主加明细可合并", businessType = BusinessType.INSERT)
|
||
@RepeatSubmit()
|
||
@PostMapping("/receiveFromDetail")
|
||
public R<Void> receiveFromDetail(@Validated @RequestBody SchProdScheduleItemDispatchBo dispatchBo) {
|
||
return toAjax(iSchProdScheduleItemService.receiveFromDetail(dispatchBo));
|
||
}
|
||
|
||
/**
|
||
* 合并校验:检查待合并记录来源产需单的 header 字段是否一致
|
||
*/
|
||
@PostMapping("/mergeValidate")
|
||
public R<SchProdScheduleItemMergeValidateVo> mergeValidate(@Validated @RequestBody SchProdScheduleItemMergeValidateBo validateBo) {
|
||
return R.ok(iSchProdScheduleItemService.validateMerge(validateBo));
|
||
}
|
||
|
||
@PostMapping("/sort")
|
||
public R<Void> saveSort(@Validated @RequestBody SchProdScheduleItemSortBo sortBo) {
|
||
return toAjax(iSchProdScheduleItemService.saveSort(sortBo));
|
||
}
|
||
}
|