mirror of
https://gitee.com/zhijiantianya/ruoyi-vue-pro.git
synced 2026-03-22 05:07:17 +08:00
✨ feat(mes): 重构生产入库单行相关逻辑,更新字段及接口
重命名和更新了生产入库单行的请求和响应对象,调整了字段名称以更好地反映业务逻辑。同时,优化了控制器中的相关方法,确保与新的数据结构一致。此变更旨在提升代码的可读性和维护性。
This commit is contained in:
@@ -1,175 +0,0 @@
|
||||
package cn.iocoder.yudao.module.mes.controller.admin.wm.productproduce;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
|
||||
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
|
||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
|
||||
import cn.iocoder.yudao.module.mes.controller.admin.wm.productproduce.vo.MesWmProductProducePageReqVO;
|
||||
import cn.iocoder.yudao.module.mes.controller.admin.wm.productproduce.vo.MesWmProductProduceRespVO;
|
||||
import cn.iocoder.yudao.module.mes.controller.admin.wm.productproduce.vo.MesWmProductProduceSaveReqVO;
|
||||
import cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation.MesMdWorkstationDO;
|
||||
import cn.iocoder.yudao.module.mes.dal.dataobject.pro.process.MesProProcessDO;
|
||||
import cn.iocoder.yudao.module.mes.dal.dataobject.pro.task.MesProTaskDO;
|
||||
import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderDO;
|
||||
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productproduce.MesWmProductProduceDO;
|
||||
import cn.iocoder.yudao.module.mes.service.md.workstation.MesMdWorkstationService;
|
||||
import cn.iocoder.yudao.module.mes.service.pro.process.MesProProcessService;
|
||||
import cn.iocoder.yudao.module.mes.service.pro.task.MesProTaskService;
|
||||
import cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderService;
|
||||
import cn.iocoder.yudao.module.mes.service.wm.productproduce.MesWmProductProduceService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import jakarta.annotation.Resource;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.Valid;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
|
||||
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
||||
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
|
||||
|
||||
@Tag(name = "管理后台 - MES 生产入库单")
|
||||
@RestController
|
||||
@RequestMapping("/mes/wm/product-produce")
|
||||
@Validated
|
||||
public class MesWmProductProduceController {
|
||||
|
||||
@Resource
|
||||
private MesWmProductProduceService produceService;
|
||||
@Resource
|
||||
private MesMdWorkstationService workstationService;
|
||||
@Resource
|
||||
private MesProWorkOrderService workOrderService;
|
||||
@Resource
|
||||
private MesProProcessService processService;
|
||||
@Resource
|
||||
private MesProTaskService taskService;
|
||||
|
||||
@PostMapping("/create")
|
||||
@Operation(summary = "创建生产入库单")
|
||||
@PreAuthorize("@ss.hasPermission('mes:wm-product-produce:create')")
|
||||
public CommonResult<Long> createProductProduce(@Valid @RequestBody MesWmProductProduceSaveReqVO createReqVO) {
|
||||
return success(produceService.createProductProduce(createReqVO));
|
||||
}
|
||||
|
||||
@PutMapping("/update")
|
||||
@Operation(summary = "修改生产入库单")
|
||||
@PreAuthorize("@ss.hasPermission('mes:wm-product-produce:update')")
|
||||
public CommonResult<Boolean> updateProductProduce(@Valid @RequestBody MesWmProductProduceSaveReqVO updateReqVO) {
|
||||
produceService.updateProductProduce(updateReqVO);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@DeleteMapping("/delete")
|
||||
@Operation(summary = "删除生产入库单")
|
||||
@Parameter(name = "id", description = "编号", required = true)
|
||||
@PreAuthorize("@ss.hasPermission('mes:wm-product-produce:delete')")
|
||||
public CommonResult<Boolean> deleteProductProduce(@RequestParam("id") Long id) {
|
||||
produceService.deleteProductProduce(id);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@GetMapping("/get")
|
||||
@Operation(summary = "获得生产入库单")
|
||||
@Parameter(name = "id", description = "编号", required = true, example = "1024")
|
||||
@PreAuthorize("@ss.hasPermission('mes:wm-product-produce:query')")
|
||||
public CommonResult<MesWmProductProduceRespVO> getProductProduce(@RequestParam("id") Long id) {
|
||||
MesWmProductProduceDO produce = produceService.getProductProduce(id);
|
||||
if (produce == null) {
|
||||
return success(null);
|
||||
}
|
||||
return success(buildRespVOList(Collections.singletonList(produce)).get(0));
|
||||
}
|
||||
|
||||
@GetMapping("/page")
|
||||
@Operation(summary = "获得生产入库单分页")
|
||||
@PreAuthorize("@ss.hasPermission('mes:wm-product-produce:query')")
|
||||
public CommonResult<PageResult<MesWmProductProduceRespVO>> getProductProducePage(
|
||||
@Valid MesWmProductProducePageReqVO pageReqVO) {
|
||||
PageResult<MesWmProductProduceDO> pageResult = produceService.getProductProducePage(pageReqVO);
|
||||
return success(new PageResult<>(buildRespVOList(pageResult.getList()), pageResult.getTotal()));
|
||||
}
|
||||
|
||||
@GetMapping("/export-excel")
|
||||
@Operation(summary = "导出生产入库单 Excel")
|
||||
@PreAuthorize("@ss.hasPermission('mes:wm-product-produce:export')")
|
||||
@ApiAccessLog(operateType = EXPORT)
|
||||
public void exportProductProduceExcel(@Valid MesWmProductProducePageReqVO pageReqVO,
|
||||
HttpServletResponse response) throws IOException {
|
||||
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
|
||||
PageResult<MesWmProductProduceDO> pageResult = produceService.getProductProducePage(pageReqVO);
|
||||
ExcelUtils.write(response, "生产入库单.xls", "数据", MesWmProductProduceRespVO.class,
|
||||
buildRespVOList(pageResult.getList()));
|
||||
}
|
||||
|
||||
@PutMapping("/finish")
|
||||
@Operation(summary = "完成生产入库单")
|
||||
@Parameter(name = "id", description = "编号", required = true)
|
||||
@PreAuthorize("@ss.hasPermission('mes:wm-product-produce:update-status')")
|
||||
public CommonResult<Boolean> finishProductProduce(@RequestParam("id") Long id) {
|
||||
produceService.finishProductProduce(id);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@PutMapping("/cancel")
|
||||
@Operation(summary = "取消生产入库单")
|
||||
@Parameter(name = "id", description = "编号", required = true)
|
||||
@PreAuthorize("@ss.hasPermission('mes:wm-product-produce:update-status')")
|
||||
public CommonResult<Boolean> cancelProductProduce(@RequestParam("id") Long id) {
|
||||
produceService.cancelProductProduce(id);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@GetMapping("/check-quantity")
|
||||
@Operation(summary = "校验生产入库单数量", description = "校验每行明细数量之和是否等于行入库数量")
|
||||
@Parameter(name = "id", description = "编号", required = true)
|
||||
@PreAuthorize("@ss.hasPermission('mes:wm-product-produce:query')")
|
||||
public CommonResult<Boolean> checkProductProduceQuantity(@RequestParam("id") Long id) {
|
||||
return success(produceService.checkProductProduceQuantity(id));
|
||||
}
|
||||
|
||||
// ==================== 拼接 VO ====================
|
||||
|
||||
private List<MesWmProductProduceRespVO> buildRespVOList(List<MesWmProductProduceDO> list) {
|
||||
if (CollUtil.isEmpty(list)) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
// 1. 获得关联数据
|
||||
Map<Long, MesMdWorkstationDO> workstationMap = workstationService.getWorkstationMap(
|
||||
convertSet(list, MesWmProductProduceDO::getWorkstationId));
|
||||
Map<Long, MesProWorkOrderDO> workOrderMap = workOrderService.getWorkOrderMap(
|
||||
convertSet(list, MesWmProductProduceDO::getWorkOrderId));
|
||||
Map<Long, MesProProcessDO> processMap = processService.getProcessMap(
|
||||
convertSet(list, MesWmProductProduceDO::getProcessId));
|
||||
Map<Long, MesProTaskDO> taskMap = taskService.getTaskMap(
|
||||
convertSet(list, MesWmProductProduceDO::getTaskId));
|
||||
// 2. 构建结果
|
||||
return BeanUtils.toBean(list, MesWmProductProduceRespVO.class, vo -> {
|
||||
// 2.1 填充工作站名称
|
||||
MapUtils.findAndThen(workstationMap, vo.getWorkstationId(),
|
||||
workstation -> vo.setWorkstationName(workstation.getName()));
|
||||
// 2.2 填充工单编号
|
||||
MapUtils.findAndThen(workOrderMap, vo.getWorkOrderId(),
|
||||
workOrder -> vo.setWorkOrderCode(workOrder.getCode()));
|
||||
// 2.3 填充工序名称
|
||||
MapUtils.findAndThen(processMap, vo.getProcessId(),
|
||||
process -> vo.setProcessName(process.getName()));
|
||||
// 2.4 填充任务编号
|
||||
MapUtils.findAndThen(taskMap, vo.getTaskId(),
|
||||
task -> vo.setTaskCode(task.getCode()));
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,140 +0,0 @@
|
||||
package cn.iocoder.yudao.module.mes.controller.admin.wm.productproduce;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||
import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
|
||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
import cn.iocoder.yudao.module.mes.controller.admin.wm.productproduce.vo.detail.MesWmProductProduceDetailRespVO;
|
||||
import cn.iocoder.yudao.module.mes.controller.admin.wm.productproduce.vo.detail.MesWmProductProduceDetailSaveReqVO;
|
||||
import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO;
|
||||
import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO;
|
||||
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productproduce.MesWmProductProduceDetailDO;
|
||||
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseAreaDO;
|
||||
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseDO;
|
||||
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseLocationDO;
|
||||
import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
|
||||
import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService;
|
||||
import cn.iocoder.yudao.module.mes.service.wm.productproduce.MesWmProductProduceDetailService;
|
||||
import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService;
|
||||
import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseLocationService;
|
||||
import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import jakarta.annotation.Resource;
|
||||
import jakarta.validation.Valid;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
||||
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
|
||||
|
||||
@Tag(name = "管理后台 - MES 生产入库明细")
|
||||
@RestController
|
||||
@RequestMapping("/mes/wm/product-produce-detail")
|
||||
@Validated
|
||||
public class MesWmProductProduceDetailController {
|
||||
|
||||
@Resource
|
||||
private MesWmProductProduceDetailService produceDetailService;
|
||||
|
||||
@Resource
|
||||
private MesMdItemService itemService;
|
||||
|
||||
@Resource
|
||||
private MesMdUnitMeasureService unitMeasureService;
|
||||
|
||||
@Resource
|
||||
private MesWmWarehouseService warehouseService;
|
||||
|
||||
@Resource
|
||||
private MesWmWarehouseLocationService locationService;
|
||||
|
||||
@Resource
|
||||
private MesWmWarehouseAreaService areaService;
|
||||
|
||||
@PostMapping("/create")
|
||||
@Operation(summary = "创建生产入库明细")
|
||||
@PreAuthorize("@ss.hasPermission('mes:wm-product-produce:create')")
|
||||
public CommonResult<Long> createProductProduceDetail(@Valid @RequestBody MesWmProductProduceDetailSaveReqVO createReqVO) {
|
||||
return success(produceDetailService.createProductProduceDetail(createReqVO));
|
||||
}
|
||||
|
||||
@PutMapping("/update")
|
||||
@Operation(summary = "修改生产入库明细")
|
||||
@PreAuthorize("@ss.hasPermission('mes:wm-product-produce:update')")
|
||||
public CommonResult<Boolean> updateProductProduceDetail(@Valid @RequestBody MesWmProductProduceDetailSaveReqVO updateReqVO) {
|
||||
produceDetailService.updateProductProduceDetail(updateReqVO);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@DeleteMapping("/delete")
|
||||
@Operation(summary = "删除生产入库明细")
|
||||
@Parameter(name = "id", description = "编号", required = true)
|
||||
@PreAuthorize("@ss.hasPermission('mes:wm-product-produce:delete')")
|
||||
public CommonResult<Boolean> deleteProductProduceDetail(@RequestParam("id") Long id) {
|
||||
produceDetailService.deleteProductProduceDetail(id);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@GetMapping("/get")
|
||||
@Operation(summary = "获得生产入库明细")
|
||||
@Parameter(name = "id", description = "编号", required = true, example = "1024")
|
||||
@PreAuthorize("@ss.hasPermission('mes:wm-product-produce:query')")
|
||||
public CommonResult<MesWmProductProduceDetailRespVO> getProductProduceDetail(@RequestParam("id") Long id) {
|
||||
MesWmProductProduceDetailDO detail = produceDetailService.getProductProduceDetail(id);
|
||||
if (detail == null) {
|
||||
return success(null);
|
||||
}
|
||||
return success(buildRespVOList(Collections.singletonList(detail)).get(0));
|
||||
}
|
||||
|
||||
@GetMapping("/list-by-line")
|
||||
@Operation(summary = "获得生产入库明细列表(按行编号)")
|
||||
@Parameter(name = "lineId", description = "行编号", required = true, example = "1024")
|
||||
@PreAuthorize("@ss.hasPermission('mes:wm-product-produce:query')")
|
||||
public CommonResult<List<MesWmProductProduceDetailRespVO>> getProductProduceDetailListByLineId(
|
||||
@RequestParam("lineId") Long lineId) {
|
||||
List<MesWmProductProduceDetailDO> list = produceDetailService.getProductProduceDetailListByLineId(lineId);
|
||||
return success(buildRespVOList(list));
|
||||
}
|
||||
|
||||
// ==================== 拼接 VO ====================
|
||||
|
||||
private List<MesWmProductProduceDetailRespVO> buildRespVOList(List<MesWmProductProduceDetailDO> list) {
|
||||
if (CollUtil.isEmpty(list)) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
// 1. 获得关联数据
|
||||
Map<Long, MesMdItemDO> itemMap = itemService.getItemMap(
|
||||
convertSet(list, MesWmProductProduceDetailDO::getItemId));
|
||||
Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap(
|
||||
convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId));
|
||||
Map<Long, MesWmWarehouseDO> warehouseMap = warehouseService.getWarehouseMap(
|
||||
convertSet(list, MesWmProductProduceDetailDO::getWarehouseId));
|
||||
Map<Long, MesWmWarehouseLocationDO> locationMap = locationService.getWarehouseLocationMap(
|
||||
convertSet(list, MesWmProductProduceDetailDO::getLocationId));
|
||||
Map<Long, MesWmWarehouseAreaDO> areaMap = areaService.getWarehouseAreaMap(
|
||||
convertSet(list, MesWmProductProduceDetailDO::getAreaId));
|
||||
// 2. 构建结果
|
||||
return BeanUtils.toBean(list, MesWmProductProduceDetailRespVO.class, vo -> {
|
||||
MapUtils.findAndThen(itemMap, vo.getItemId(), item -> {
|
||||
vo.setItemCode(item.getCode()).setItemName(item.getName()).setSpecification(item.getSpecification());
|
||||
MapUtils.findAndThen(unitMeasureMap, item.getUnitMeasureId(),
|
||||
unitMeasure -> vo.setUnitMeasureName(unitMeasure.getName()));
|
||||
});
|
||||
MapUtils.findAndThen(warehouseMap, vo.getWarehouseId(),
|
||||
warehouse -> vo.setWarehouseName(warehouse.getName()));
|
||||
MapUtils.findAndThen(locationMap, vo.getLocationId(),
|
||||
location -> vo.setLocationName(location.getName()));
|
||||
MapUtils.findAndThen(areaMap, vo.getAreaId(),
|
||||
area -> vo.setAreaName(area.getName()));
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
@@ -5,9 +5,8 @@ import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
|
||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
import cn.iocoder.yudao.module.mes.controller.admin.wm.productproduce.vo.line.MesWmProductProduceLinePageReqVO;
|
||||
import cn.iocoder.yudao.module.mes.controller.admin.wm.productproduce.vo.line.MesWmProductProduceLineRespVO;
|
||||
import cn.iocoder.yudao.module.mes.controller.admin.wm.productproduce.vo.line.MesWmProductProduceLineSaveReqVO;
|
||||
import cn.iocoder.yudao.module.mes.controller.admin.wm.productproduce.vo.MesWmProductProduceLinePageReqVO;
|
||||
import cn.iocoder.yudao.module.mes.controller.admin.wm.productproduce.vo.MesWmProductProduceLineRespVO;
|
||||
import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO;
|
||||
import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO;
|
||||
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productproduce.MesWmProductProduceLineDO;
|
||||
@@ -15,13 +14,14 @@ import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
|
||||
import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService;
|
||||
import cn.iocoder.yudao.module.mes.service.wm.productproduce.MesWmProductProduceLineService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import jakarta.annotation.Resource;
|
||||
import jakarta.validation.Valid;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
@@ -37,69 +37,22 @@ import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.
|
||||
public class MesWmProductProduceLineController {
|
||||
|
||||
@Resource
|
||||
private MesWmProductProduceLineService produceLineService;
|
||||
|
||||
private MesWmProductProduceLineService productProduceLineService;
|
||||
@Resource
|
||||
private MesMdItemService itemService;
|
||||
|
||||
@Resource
|
||||
private MesMdUnitMeasureService unitMeasureService;
|
||||
|
||||
@PostMapping("/create")
|
||||
@Operation(summary = "创建生产入库单行")
|
||||
@PreAuthorize("@ss.hasPermission('mes:wm-product-produce:create')")
|
||||
public CommonResult<Long> createProductProduceLine(@Valid @RequestBody MesWmProductProduceLineSaveReqVO createReqVO) {
|
||||
return success(produceLineService.createProductProduceLine(createReqVO));
|
||||
}
|
||||
|
||||
@PutMapping("/update")
|
||||
@Operation(summary = "修改生产入库单行")
|
||||
@PreAuthorize("@ss.hasPermission('mes:wm-product-produce:update')")
|
||||
public CommonResult<Boolean> updateProductProduceLine(@Valid @RequestBody MesWmProductProduceLineSaveReqVO updateReqVO) {
|
||||
produceLineService.updateProductProduceLine(updateReqVO);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@DeleteMapping("/delete")
|
||||
@Operation(summary = "删除生产入库单行")
|
||||
@Parameter(name = "id", description = "编号", required = true)
|
||||
@PreAuthorize("@ss.hasPermission('mes:wm-product-produce:delete')")
|
||||
public CommonResult<Boolean> deleteProductProduceLine(@RequestParam("id") Long id) {
|
||||
produceLineService.deleteProductProduceLine(id);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@GetMapping("/get")
|
||||
@Operation(summary = "获得生产入库单行")
|
||||
@Parameter(name = "id", description = "编号", required = true, example = "1024")
|
||||
@PreAuthorize("@ss.hasPermission('mes:wm-product-produce:query')")
|
||||
public CommonResult<MesWmProductProduceLineRespVO> getProductProduceLine(@RequestParam("id") Long id) {
|
||||
MesWmProductProduceLineDO line = produceLineService.getProductProduceLine(id);
|
||||
if (line == null) {
|
||||
return success(null);
|
||||
}
|
||||
return success(buildRespVOList(Collections.singletonList(line)).get(0));
|
||||
}
|
||||
|
||||
@GetMapping("/page")
|
||||
@Operation(summary = "获得生产入库单行分页")
|
||||
@PreAuthorize("@ss.hasPermission('mes:wm-product-produce:query')")
|
||||
public CommonResult<PageResult<MesWmProductProduceLineRespVO>> getProductProduceLinePage(
|
||||
@Valid MesWmProductProduceLinePageReqVO pageReqVO) {
|
||||
PageResult<MesWmProductProduceLineDO> pageResult = produceLineService.getProductProduceLinePage(pageReqVO);
|
||||
PageResult<MesWmProductProduceLineDO> pageResult = productProduceLineService.getProductProduceLinePage(
|
||||
pageReqVO);
|
||||
return success(new PageResult<>(buildRespVOList(pageResult.getList()), pageResult.getTotal()));
|
||||
}
|
||||
|
||||
@GetMapping("/list-by-produce")
|
||||
@Operation(summary = "获得生产入库单行列表(按入库单编号)")
|
||||
@Parameter(name = "produceId", description = "入库单编号", required = true, example = "1024")
|
||||
@PreAuthorize("@ss.hasPermission('mes:wm-product-produce:query')")
|
||||
public CommonResult<List<MesWmProductProduceLineRespVO>> getProductProduceLineListByProduceId(
|
||||
@RequestParam("produceId") Long produceId) {
|
||||
List<MesWmProductProduceLineDO> list = produceLineService.getProductProduceLineListByProduceId(produceId);
|
||||
return success(buildRespVOList(list));
|
||||
}
|
||||
|
||||
// ==================== 拼接 VO ====================
|
||||
|
||||
private List<MesWmProductProduceLineRespVO> buildRespVOList(List<MesWmProductProduceLineDO> list) {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package cn.iocoder.yudao.module.mes.controller.admin.wm.productproduce.vo.line;
|
||||
package cn.iocoder.yudao.module.mes.controller.admin.wm.productproduce.vo;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
@@ -13,8 +13,8 @@ import lombok.ToString;
|
||||
@ToString(callSuper = true)
|
||||
public class MesWmProductProduceLinePageReqVO extends PageParam {
|
||||
|
||||
@Schema(description = "入库单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
||||
@NotNull(message = "入库单编号不能为空")
|
||||
private Long produceId;
|
||||
@Schema(description = "报工单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
||||
@NotNull(message = "报工单编号不能为空")
|
||||
private Long feedbackId;
|
||||
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package cn.iocoder.yudao.module.mes.controller.admin.wm.productproduce.vo.line;
|
||||
package cn.iocoder.yudao.module.mes.controller.admin.wm.productproduce.vo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
@@ -1,34 +0,0 @@
|
||||
package cn.iocoder.yudao.module.mes.controller.admin.wm.productproduce.vo;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
|
||||
|
||||
@Schema(description = "管理后台 - MES 生产入库单分页 Request VO")
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class MesWmProductProducePageReqVO extends PageParam {
|
||||
|
||||
@Schema(description = "生产工单ID", example = "1")
|
||||
private Long workOrderId;
|
||||
|
||||
@Schema(description = "工作站ID", example = "1")
|
||||
private Long workstationId;
|
||||
|
||||
@Schema(description = "工序ID", example = "1")
|
||||
private Long processId;
|
||||
|
||||
@Schema(description = "状态", example = "10")
|
||||
private Integer status;
|
||||
|
||||
@Schema(description = "入库日期范围")
|
||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||
private LocalDateTime[] produceDate;
|
||||
|
||||
}
|
||||
@@ -1,54 +0,0 @@
|
||||
package cn.iocoder.yudao.module.mes.controller.admin.wm.productproduce.vo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@Schema(description = "管理后台 - MES 生产入库单 Response VO")
|
||||
@Data
|
||||
public class MesWmProductProduceRespVO {
|
||||
|
||||
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "生产工单 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
||||
private Long workOrderId;
|
||||
|
||||
@Schema(description = "生产工单编号", example = "WO20250226001")
|
||||
private String workOrderCode;
|
||||
|
||||
@Schema(description = "报工单 ID", example = "1")
|
||||
private Long feedbackId;
|
||||
|
||||
@Schema(description = "生产任务 ID", example = "1")
|
||||
private Long taskId;
|
||||
|
||||
@Schema(description = "生产任务编号", example = "TASK20250226001")
|
||||
private String taskCode;
|
||||
|
||||
@Schema(description = "工作站 ID", example = "1")
|
||||
private Long workstationId;
|
||||
|
||||
@Schema(description = "工作站名称", example = "装配工作站")
|
||||
private String workstationName;
|
||||
|
||||
@Schema(description = "工序 ID", example = "1")
|
||||
private Long processId;
|
||||
|
||||
@Schema(description = "工序名称", example = "组装工序")
|
||||
private String processName;
|
||||
|
||||
@Schema(description = "入库日期")
|
||||
private LocalDateTime produceDate;
|
||||
|
||||
@Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
|
||||
private Integer status;
|
||||
|
||||
@Schema(description = "备注", example = "备注")
|
||||
private String remark;
|
||||
|
||||
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private LocalDateTime createTime;
|
||||
|
||||
}
|
||||
@@ -1,38 +0,0 @@
|
||||
package cn.iocoder.yudao.module.mes.controller.admin.wm.productproduce.vo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@Schema(description = "管理后台 - MES 生产入库单新增/修改 Request VO")
|
||||
@Data
|
||||
public class MesWmProductProduceSaveReqVO {
|
||||
|
||||
@Schema(description = "编号", example = "1024")
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "生产工单 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
||||
@NotNull(message = "生产工单 ID 不能为空")
|
||||
private Long workOrderId;
|
||||
|
||||
@Schema(description = "报工单 ID", example = "1")
|
||||
private Long feedbackId;
|
||||
|
||||
@Schema(description = "生产任务 ID", example = "1")
|
||||
private Long taskId;
|
||||
|
||||
@Schema(description = "工作站 ID", example = "1")
|
||||
private Long workstationId;
|
||||
|
||||
@Schema(description = "工序 ID", example = "1")
|
||||
private Long processId;
|
||||
|
||||
@Schema(description = "入库日期")
|
||||
private LocalDateTime produceDate;
|
||||
|
||||
@Schema(description = "备注", example = "备注")
|
||||
private String remark;
|
||||
|
||||
}
|
||||
@@ -1,70 +0,0 @@
|
||||
package cn.iocoder.yudao.module.mes.controller.admin.wm.productproduce.vo.detail;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@Schema(description = "管理后台 - MES 生产入库明细 Response VO")
|
||||
@Data
|
||||
public class MesWmProductProduceDetailRespVO {
|
||||
|
||||
@Schema(description = "编号", example = "1")
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "入库单编号", example = "1")
|
||||
private Long produceId;
|
||||
|
||||
@Schema(description = "行编号", example = "1")
|
||||
private Long lineId;
|
||||
|
||||
@Schema(description = "物料编号", example = "1")
|
||||
private Long itemId;
|
||||
|
||||
@Schema(description = "物料编码", example = "ITEM001")
|
||||
private String itemCode;
|
||||
|
||||
@Schema(description = "物料名称", example = "螺丝")
|
||||
private String itemName;
|
||||
|
||||
@Schema(description = "规格型号", example = "M8*20")
|
||||
private String specification;
|
||||
|
||||
@Schema(description = "计量单位名称", example = "个")
|
||||
private String unitMeasureName;
|
||||
|
||||
@Schema(description = "入库数量", example = "300.00")
|
||||
private BigDecimal quantity;
|
||||
|
||||
@Schema(description = "批次编号", example = "1")
|
||||
private Long batchId;
|
||||
|
||||
@Schema(description = "批次号", example = "BATCH20260101001")
|
||||
private String batchCode;
|
||||
|
||||
@Schema(description = "仓库编号", example = "1")
|
||||
private Long warehouseId;
|
||||
|
||||
@Schema(description = "仓库名称", example = "成品仓库")
|
||||
private String warehouseName;
|
||||
|
||||
@Schema(description = "库区编号", example = "1")
|
||||
private Long locationId;
|
||||
|
||||
@Schema(description = "库区名称", example = "A区")
|
||||
private String locationName;
|
||||
|
||||
@Schema(description = "库位编号", example = "1")
|
||||
private Long areaId;
|
||||
|
||||
@Schema(description = "库位名称", example = "A01")
|
||||
private String areaName;
|
||||
|
||||
@Schema(description = "备注", example = "备注")
|
||||
private String remark;
|
||||
|
||||
@Schema(description = "创建时间")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
}
|
||||
@@ -1,50 +0,0 @@
|
||||
package cn.iocoder.yudao.module.mes.controller.admin.wm.productproduce.vo.detail;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Schema(description = "管理后台 - MES 生产入库明细新增/修改 Request VO")
|
||||
@Data
|
||||
public class MesWmProductProduceDetailSaveReqVO {
|
||||
|
||||
@Schema(description = "编号", example = "1024")
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "入库单行编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
||||
@NotNull(message = "入库单行编号不能为空")
|
||||
private Long lineId;
|
||||
|
||||
@Schema(description = "入库单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
||||
@NotNull(message = "入库单编号不能为空")
|
||||
private Long produceId;
|
||||
|
||||
@Schema(description = "物料编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
||||
@NotNull(message = "物料编号不能为空")
|
||||
private Long itemId;
|
||||
|
||||
@Schema(description = "入库数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "300.00")
|
||||
@NotNull(message = "入库数量不能为空")
|
||||
private BigDecimal quantity;
|
||||
|
||||
@Schema(description = "批次编号", example = "1")
|
||||
private Long batchId;
|
||||
|
||||
@Schema(description = "批次号", example = "BATCH20260101001")
|
||||
private String batchCode;
|
||||
|
||||
@Schema(description = "仓库编号", example = "1")
|
||||
private Long warehouseId;
|
||||
|
||||
@Schema(description = "库区编号", example = "1")
|
||||
private Long locationId;
|
||||
|
||||
@Schema(description = "库位编号", example = "1")
|
||||
private Long areaId;
|
||||
|
||||
@Schema(description = "备注", example = "备注")
|
||||
private String remark;
|
||||
|
||||
}
|
||||
@@ -1,52 +0,0 @@
|
||||
package cn.iocoder.yudao.module.mes.controller.admin.wm.productproduce.vo.line;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import jakarta.validation.constraints.DecimalMin;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@Schema(description = "管理后台 - MES 生产入库单行 Save Request VO")
|
||||
@Data
|
||||
public class MesWmProductProduceLineSaveReqVO {
|
||||
|
||||
@Schema(description = "行ID", example = "1")
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "入库单ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
||||
@NotNull(message = "入库单ID不能为空")
|
||||
private Long produceId;
|
||||
|
||||
@Schema(description = "报工单 ID", example = "1")
|
||||
private Long feedbackId;
|
||||
|
||||
@Schema(description = "物料ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
||||
@NotNull(message = "物料ID不能为空")
|
||||
private Long itemId;
|
||||
|
||||
@Schema(description = "入库数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00")
|
||||
@NotNull(message = "入库数量不能为空")
|
||||
@DecimalMin(value = "0", inclusive = false, message = "入库数量必须大于 0")
|
||||
private BigDecimal quantity;
|
||||
|
||||
@Schema(description = "批次ID", example = "1")
|
||||
private Long batchId;
|
||||
|
||||
@Schema(description = "批次号", example = "BATCH20260101001")
|
||||
private String batchCode;
|
||||
|
||||
@Schema(description = "有效期")
|
||||
private LocalDateTime expireDate;
|
||||
|
||||
@Schema(description = "批号", example = "LOT001")
|
||||
private String lotNumber;
|
||||
|
||||
@Schema(description = "质检状态", example = "1")
|
||||
private Integer qualityStatus;
|
||||
|
||||
@Schema(description = "备注", example = "备注")
|
||||
private String remark;
|
||||
|
||||
}
|
||||
@@ -18,12 +18,4 @@ public interface MesWmProductProduceDetailMapper extends BaseMapperX<MesWmProduc
|
||||
return selectList(MesWmProductProduceDetailDO::getLineId, lineId);
|
||||
}
|
||||
|
||||
default List<MesWmProductProduceDetailDO> selectListByProduceId(Long produceId) {
|
||||
return selectList(MesWmProductProduceDetailDO::getProduceId, produceId);
|
||||
}
|
||||
|
||||
default void deleteByProduceId(Long produceId) {
|
||||
delete(MesWmProductProduceDetailDO::getProduceId, produceId);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.mes.dal.mysql.wm.productproduce;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import cn.iocoder.yudao.module.mes.controller.admin.wm.productproduce.vo.line.MesWmProductProduceLinePageReqVO;
|
||||
import cn.iocoder.yudao.module.mes.controller.admin.wm.productproduce.vo.MesWmProductProduceLinePageReqVO;
|
||||
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productproduce.MesWmProductProduceLineDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
@@ -19,7 +19,7 @@ public interface MesWmProductProduceLineMapper extends BaseMapperX<MesWmProductP
|
||||
|
||||
default PageResult<MesWmProductProduceLineDO> selectPage(MesWmProductProduceLinePageReqVO reqVO) {
|
||||
return selectPage(reqVO, new LambdaQueryWrapperX<MesWmProductProduceLineDO>()
|
||||
.eqIfPresent(MesWmProductProduceLineDO::getProduceId, reqVO.getProduceId())
|
||||
.eqIfPresent(MesWmProductProduceLineDO::getFeedbackId, reqVO.getFeedbackId())
|
||||
.orderByDesc(MesWmProductProduceLineDO::getId));
|
||||
}
|
||||
|
||||
@@ -27,10 +27,6 @@ public interface MesWmProductProduceLineMapper extends BaseMapperX<MesWmProductP
|
||||
return selectList(MesWmProductProduceLineDO::getProduceId, produceId);
|
||||
}
|
||||
|
||||
default void deleteByProduceId(Long produceId) {
|
||||
delete(MesWmProductProduceLineDO::getProduceId, produceId);
|
||||
}
|
||||
|
||||
default List<MesWmProductProduceLineDO> selectListByFeedbackId(Long feedbackId) {
|
||||
return selectList(MesWmProductProduceLineDO::getFeedbackId, feedbackId);
|
||||
}
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
package cn.iocoder.yudao.module.mes.dal.mysql.wm.productproduce;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import cn.iocoder.yudao.module.mes.controller.admin.wm.productproduce.vo.MesWmProductProducePageReqVO;
|
||||
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productproduce.MesWmProductProduceDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
@@ -15,14 +12,4 @@ import org.apache.ibatis.annotations.Mapper;
|
||||
@Mapper
|
||||
public interface MesWmProductProduceMapper extends BaseMapperX<MesWmProductProduceDO> {
|
||||
|
||||
default PageResult<MesWmProductProduceDO> selectPage(MesWmProductProducePageReqVO reqVO) {
|
||||
return selectPage(reqVO, new LambdaQueryWrapperX<MesWmProductProduceDO>()
|
||||
.eqIfPresent(MesWmProductProduceDO::getWorkOrderId, reqVO.getWorkOrderId())
|
||||
.eqIfPresent(MesWmProductProduceDO::getWorkstationId, reqVO.getWorkstationId())
|
||||
.eqIfPresent(MesWmProductProduceDO::getProcessId, reqVO.getProcessId())
|
||||
.eqIfPresent(MesWmProductProduceDO::getStatus, reqVO.getStatus())
|
||||
.betweenIfPresent(MesWmProductProduceDO::getProduceDate, reqVO.getProduceDate())
|
||||
.orderByDesc(MesWmProductProduceDO::getId));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
package cn.iocoder.yudao.module.mes.service.wm.productproduce;
|
||||
|
||||
import cn.iocoder.yudao.module.mes.controller.admin.wm.productproduce.vo.detail.MesWmProductProduceDetailSaveReqVO;
|
||||
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productproduce.MesWmProductProduceDetailDO;
|
||||
import jakarta.validation.Valid;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -12,34 +10,11 @@ import java.util.List;
|
||||
public interface MesWmProductProduceDetailService {
|
||||
|
||||
/**
|
||||
* 创建生产入库明细
|
||||
* 创建生产入库明细(内部使用)
|
||||
*
|
||||
* @param createReqVO 创建信息
|
||||
* @return 编号
|
||||
* @param detail 明细数据
|
||||
*/
|
||||
Long createProductProduceDetail(@Valid MesWmProductProduceDetailSaveReqVO createReqVO);
|
||||
|
||||
/**
|
||||
* 更新生产入库明细
|
||||
*
|
||||
* @param updateReqVO 更新信息
|
||||
*/
|
||||
void updateProductProduceDetail(@Valid MesWmProductProduceDetailSaveReqVO updateReqVO);
|
||||
|
||||
/**
|
||||
* 删除生产入库明细
|
||||
*
|
||||
* @param id 编号
|
||||
*/
|
||||
void deleteProductProduceDetail(Long id);
|
||||
|
||||
/**
|
||||
* 获得生产入库明细
|
||||
*
|
||||
* @param id 编号
|
||||
* @return 生产入库明细
|
||||
*/
|
||||
MesWmProductProduceDetailDO getProductProduceDetail(Long id);
|
||||
void createProductProduceDetail(MesWmProductProduceDetailDO detail);
|
||||
|
||||
/**
|
||||
* 根据行ID获取明细列表
|
||||
@@ -49,19 +24,4 @@ public interface MesWmProductProduceDetailService {
|
||||
*/
|
||||
List<MesWmProductProduceDetailDO> getProductProduceDetailListByLineId(Long lineId);
|
||||
|
||||
/**
|
||||
* 根据入库单ID获取明细列表
|
||||
*
|
||||
* @param produceId 入库单ID
|
||||
* @return 明细列表
|
||||
*/
|
||||
List<MesWmProductProduceDetailDO> getProductProduceDetailListByProduceId(Long produceId);
|
||||
|
||||
/**
|
||||
* 根据入库单ID删除明细
|
||||
*
|
||||
* @param produceId 入库单ID
|
||||
*/
|
||||
void deleteProductProduceDetailByProduceId(Long produceId);
|
||||
|
||||
}
|
||||
|
||||
@@ -1,19 +1,13 @@
|
||||
package cn.iocoder.yudao.module.mes.service.wm.productproduce;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
import cn.iocoder.yudao.module.mes.controller.admin.wm.productproduce.vo.detail.MesWmProductProduceDetailSaveReqVO;
|
||||
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productproduce.MesWmProductProduceDetailDO;
|
||||
import cn.iocoder.yudao.module.mes.dal.mysql.wm.productproduce.MesWmProductProduceDetailMapper;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.WM_PRODUCT_PRODUCE_DETAIL_NOT_EXISTS;
|
||||
|
||||
/**
|
||||
* MES 生产入库明细 Service 实现类
|
||||
*/
|
||||
@@ -22,67 +16,16 @@ import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.WM_PRODUCT_PR
|
||||
public class MesWmProductProduceDetailServiceImpl implements MesWmProductProduceDetailService {
|
||||
|
||||
@Resource
|
||||
private MesWmProductProduceDetailMapper produceDetailMapper;
|
||||
|
||||
@Resource
|
||||
@Lazy
|
||||
private MesWmProductProduceLineService produceLineService;
|
||||
private MesWmProductProduceDetailMapper productProduceDetailMapper;
|
||||
|
||||
@Override
|
||||
public Long createProductProduceDetail(MesWmProductProduceDetailSaveReqVO createReqVO) {
|
||||
// 校验父数据存在
|
||||
produceLineService.validateProductProduceLineExists(createReqVO.getLineId());
|
||||
|
||||
// 插入
|
||||
MesWmProductProduceDetailDO detail = BeanUtils.toBean(createReqVO, MesWmProductProduceDetailDO.class);
|
||||
produceDetailMapper.insert(detail);
|
||||
return detail.getId();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateProductProduceDetail(MesWmProductProduceDetailSaveReqVO updateReqVO) {
|
||||
// 校验存在
|
||||
validateProductProduceDetailExists(updateReqVO.getId());
|
||||
// 校验父数据存在
|
||||
produceLineService.validateProductProduceLineExists(updateReqVO.getLineId());
|
||||
|
||||
// 更新
|
||||
MesWmProductProduceDetailDO updateObj = BeanUtils.toBean(updateReqVO, MesWmProductProduceDetailDO.class);
|
||||
produceDetailMapper.updateById(updateObj);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteProductProduceDetail(Long id) {
|
||||
// 校验存在
|
||||
validateProductProduceDetailExists(id);
|
||||
// 删除
|
||||
produceDetailMapper.deleteById(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public MesWmProductProduceDetailDO getProductProduceDetail(Long id) {
|
||||
return produceDetailMapper.selectById(id);
|
||||
public void createProductProduceDetail(MesWmProductProduceDetailDO detail) {
|
||||
productProduceDetailMapper.insert(detail);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<MesWmProductProduceDetailDO> getProductProduceDetailListByLineId(Long lineId) {
|
||||
return produceDetailMapper.selectListByLineId(lineId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<MesWmProductProduceDetailDO> getProductProduceDetailListByProduceId(Long produceId) {
|
||||
return produceDetailMapper.selectListByProduceId(produceId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteProductProduceDetailByProduceId(Long produceId) {
|
||||
produceDetailMapper.deleteByProduceId(produceId);
|
||||
}
|
||||
|
||||
private void validateProductProduceDetailExists(Long id) {
|
||||
if (produceDetailMapper.selectById(id) == null) {
|
||||
throw exception(WM_PRODUCT_PRODUCE_DETAIL_NOT_EXISTS);
|
||||
}
|
||||
return productProduceDetailMapper.selectListByLineId(lineId);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,10 +1,8 @@
|
||||
package cn.iocoder.yudao.module.mes.service.wm.productproduce;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.module.mes.controller.admin.wm.productproduce.vo.line.MesWmProductProduceLinePageReqVO;
|
||||
import cn.iocoder.yudao.module.mes.controller.admin.wm.productproduce.vo.line.MesWmProductProduceLineSaveReqVO;
|
||||
import cn.iocoder.yudao.module.mes.controller.admin.wm.productproduce.vo.MesWmProductProduceLinePageReqVO;
|
||||
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productproduce.MesWmProductProduceLineDO;
|
||||
import jakarta.validation.Valid;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -14,72 +12,34 @@ import java.util.List;
|
||||
public interface MesWmProductProduceLineService {
|
||||
|
||||
/**
|
||||
* 创建生产入库单行
|
||||
* 创建生产入库单行(内部使用)
|
||||
*
|
||||
* @param createReqVO 创建信息
|
||||
* @return 编号
|
||||
* @param line 行数据
|
||||
*/
|
||||
Long createProductProduceLine(@Valid MesWmProductProduceLineSaveReqVO createReqVO);
|
||||
void createProductProduceLine(MesWmProductProduceLineDO line);
|
||||
|
||||
/**
|
||||
* 更新生产入库单行
|
||||
* 根据入库单 ID 获取行列表
|
||||
*
|
||||
* @param updateReqVO 更新信息
|
||||
*/
|
||||
void updateProductProduceLine(@Valid MesWmProductProduceLineSaveReqVO updateReqVO);
|
||||
|
||||
/**
|
||||
* 删除生产入库单行
|
||||
*
|
||||
* @param id 编号
|
||||
*/
|
||||
void deleteProductProduceLine(Long id);
|
||||
|
||||
/**
|
||||
* 获得生产入库单行
|
||||
*
|
||||
* @param id 编号
|
||||
* @return 生产入库单行
|
||||
*/
|
||||
MesWmProductProduceLineDO getProductProduceLine(Long id);
|
||||
|
||||
/**
|
||||
* 获得生产入库单行分页
|
||||
*
|
||||
* @param pageReqVO 分页查询
|
||||
* @return 生产入库单行分页
|
||||
*/
|
||||
PageResult<MesWmProductProduceLineDO> getProductProduceLinePage(MesWmProductProduceLinePageReqVO pageReqVO);
|
||||
|
||||
/**
|
||||
* 根据入库单ID获取行列表
|
||||
*
|
||||
* @param produceId 入库单ID
|
||||
* @param produceId 入库单 ID
|
||||
* @return 行列表
|
||||
*/
|
||||
List<MesWmProductProduceLineDO> getProductProduceLineListByProduceId(Long produceId);
|
||||
|
||||
/**
|
||||
* 根据入库单ID删除行
|
||||
* 根据报工记录 ID 获取行列表
|
||||
*
|
||||
* @param produceId 入库单ID
|
||||
*/
|
||||
void deleteProductProduceLineByProduceId(Long produceId);
|
||||
|
||||
/**
|
||||
* 校验生产入库单行是否存在
|
||||
*
|
||||
* @param id 编号
|
||||
* @return 生产入库单行
|
||||
*/
|
||||
MesWmProductProduceLineDO validateProductProduceLineExists(Long id);
|
||||
|
||||
/**
|
||||
* 根据报工记录ID获取行列表
|
||||
*
|
||||
* @param feedbackId 报工记录ID
|
||||
* @param feedbackId 报工记录 ID
|
||||
* @return 行列表
|
||||
*/
|
||||
List<MesWmProductProduceLineDO> getProductProduceLineListByFeedbackId(Long feedbackId);
|
||||
|
||||
/**
|
||||
* 获得生产入库单行分页
|
||||
*
|
||||
* @param pageReqVO 分页查询参数
|
||||
* @return 行分页列表
|
||||
*/
|
||||
PageResult<MesWmProductProduceLineDO> getProductProduceLinePage(MesWmProductProduceLinePageReqVO pageReqVO);
|
||||
|
||||
}
|
||||
|
||||
@@ -1,22 +1,15 @@
|
||||
package cn.iocoder.yudao.module.mes.service.wm.productproduce;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
import cn.iocoder.yudao.module.mes.controller.admin.wm.productproduce.vo.line.MesWmProductProduceLinePageReqVO;
|
||||
import cn.iocoder.yudao.module.mes.controller.admin.wm.productproduce.vo.line.MesWmProductProduceLineSaveReqVO;
|
||||
import cn.iocoder.yudao.module.mes.controller.admin.wm.productproduce.vo.MesWmProductProduceLinePageReqVO;
|
||||
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productproduce.MesWmProductProduceLineDO;
|
||||
import cn.iocoder.yudao.module.mes.dal.mysql.wm.productproduce.MesWmProductProduceLineMapper;
|
||||
import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.WM_PRODUCT_PRODUCE_LINE_NOT_EXISTS;
|
||||
|
||||
/**
|
||||
* MES 生产入库单行 Service 实现类
|
||||
*/
|
||||
@@ -25,81 +18,26 @@ import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.WM_PRODUCT_PR
|
||||
public class MesWmProductProduceLineServiceImpl implements MesWmProductProduceLineService {
|
||||
|
||||
@Resource
|
||||
private MesWmProductProduceLineMapper produceLineMapper;
|
||||
|
||||
@Resource
|
||||
@Lazy
|
||||
private MesWmProductProduceService produceService;
|
||||
@Resource
|
||||
private MesMdItemService itemService;
|
||||
private MesWmProductProduceLineMapper productProduceLineMapper;
|
||||
|
||||
@Override
|
||||
public Long createProductProduceLine(MesWmProductProduceLineSaveReqVO createReqVO) {
|
||||
// 校验父数据存在
|
||||
produceService.validateProductProduceExists(createReqVO.getProduceId());
|
||||
// 校验物料存在
|
||||
itemService.validateItemExists(createReqVO.getItemId());
|
||||
|
||||
// 插入
|
||||
MesWmProductProduceLineDO line = BeanUtils.toBean(createReqVO, MesWmProductProduceLineDO.class);
|
||||
produceLineMapper.insert(line);
|
||||
return line.getId();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateProductProduceLine(MesWmProductProduceLineSaveReqVO updateReqVO) {
|
||||
// 校验存在
|
||||
validateProductProduceLineExists(updateReqVO.getId());
|
||||
// 校验父数据存在
|
||||
produceService.validateProductProduceExists(updateReqVO.getProduceId());
|
||||
// 校验物料存在
|
||||
itemService.validateItemExists(updateReqVO.getItemId());
|
||||
|
||||
// 更新
|
||||
MesWmProductProduceLineDO updateObj = BeanUtils.toBean(updateReqVO, MesWmProductProduceLineDO.class);
|
||||
produceLineMapper.updateById(updateObj);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteProductProduceLine(Long id) {
|
||||
// 校验存在
|
||||
validateProductProduceLineExists(id);
|
||||
// 删除
|
||||
produceLineMapper.deleteById(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public MesWmProductProduceLineDO getProductProduceLine(Long id) {
|
||||
return produceLineMapper.selectById(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageResult<MesWmProductProduceLineDO> getProductProduceLinePage(MesWmProductProduceLinePageReqVO pageReqVO) {
|
||||
return produceLineMapper.selectPage(pageReqVO);
|
||||
public void createProductProduceLine(MesWmProductProduceLineDO line) {
|
||||
productProduceLineMapper.insert(line);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<MesWmProductProduceLineDO> getProductProduceLineListByProduceId(Long produceId) {
|
||||
return produceLineMapper.selectListByProduceId(produceId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteProductProduceLineByProduceId(Long produceId) {
|
||||
produceLineMapper.deleteByProduceId(produceId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public MesWmProductProduceLineDO validateProductProduceLineExists(Long id) {
|
||||
MesWmProductProduceLineDO line = produceLineMapper.selectById(id);
|
||||
if (line == null) {
|
||||
throw exception(WM_PRODUCT_PRODUCE_LINE_NOT_EXISTS);
|
||||
}
|
||||
return line;
|
||||
return productProduceLineMapper.selectListByProduceId(produceId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<MesWmProductProduceLineDO> getProductProduceLineListByFeedbackId(Long feedbackId) {
|
||||
return produceLineMapper.selectListByFeedbackId(feedbackId);
|
||||
return productProduceLineMapper.selectListByFeedbackId(feedbackId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageResult<MesWmProductProduceLineDO> getProductProduceLinePage(MesWmProductProduceLinePageReqVO pageReqVO) {
|
||||
return productProduceLineMapper.selectPage(pageReqVO);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,55 +1,13 @@
|
||||
package cn.iocoder.yudao.module.mes.service.wm.productproduce;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.module.mes.controller.admin.wm.productproduce.vo.MesWmProductProducePageReqVO;
|
||||
import cn.iocoder.yudao.module.mes.controller.admin.wm.productproduce.vo.MesWmProductProduceSaveReqVO;
|
||||
import cn.iocoder.yudao.module.mes.dal.dataobject.pro.feedback.MesProFeedbackDO;
|
||||
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productproduce.MesWmProductProduceDO;
|
||||
import jakarta.validation.Valid;
|
||||
|
||||
/**
|
||||
* MES 生产入库单 Service 接口
|
||||
*/
|
||||
public interface MesWmProductProduceService {
|
||||
|
||||
/**
|
||||
* 创建生产入库单
|
||||
*
|
||||
* @param createReqVO 创建信息
|
||||
* @return 编号
|
||||
*/
|
||||
Long createProductProduce(@Valid MesWmProductProduceSaveReqVO createReqVO);
|
||||
|
||||
/**
|
||||
* 修改生产入库单
|
||||
*
|
||||
* @param updateReqVO 修改信息
|
||||
*/
|
||||
void updateProductProduce(@Valid MesWmProductProduceSaveReqVO updateReqVO);
|
||||
|
||||
/**
|
||||
* 删除生产入库单
|
||||
*
|
||||
* @param id 编号
|
||||
*/
|
||||
void deleteProductProduce(Long id);
|
||||
|
||||
/**
|
||||
* 获得生产入库单
|
||||
*
|
||||
* @param id 编号
|
||||
* @return 生产入库单
|
||||
*/
|
||||
MesWmProductProduceDO getProductProduce(Long id);
|
||||
|
||||
/**
|
||||
* 获得生产入库单分页
|
||||
*
|
||||
* @param pageReqVO 分页参数
|
||||
* @return 生产入库单分页
|
||||
*/
|
||||
PageResult<MesWmProductProduceDO> getProductProducePage(MesWmProductProducePageReqVO pageReqVO);
|
||||
|
||||
/**
|
||||
* 校验生产入库单是否存在
|
||||
*
|
||||
@@ -65,21 +23,6 @@ public interface MesWmProductProduceService {
|
||||
*/
|
||||
void finishProductProduce(Long id);
|
||||
|
||||
/**
|
||||
* 取消生产入库单(非已完成/已取消状态 → 已取消)
|
||||
*
|
||||
* @param id 编号
|
||||
*/
|
||||
void cancelProductProduce(Long id);
|
||||
|
||||
/**
|
||||
* 校验生产入库单的数量:每行明细数量之和是否等于行入库数量
|
||||
*
|
||||
* @param id 编号
|
||||
* @return 是否全部一致
|
||||
*/
|
||||
Boolean checkProductProduceQuantity(Long id);
|
||||
|
||||
/**
|
||||
* 根据报工记录,自动生成产品产出单(头 + 行 + 明细)
|
||||
*
|
||||
|
||||
@@ -3,25 +3,17 @@ package cn.iocoder.yudao.module.mes.service.wm.productproduce;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.ObjUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
|
||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
import cn.iocoder.yudao.framework.common.util.object.ObjectUtils;
|
||||
import cn.iocoder.yudao.module.mes.controller.admin.wm.batch.vo.MesWmBatchGenerateReqVO;
|
||||
import cn.iocoder.yudao.module.mes.controller.admin.wm.productproduce.vo.MesWmProductProducePageReqVO;
|
||||
import cn.iocoder.yudao.module.mes.controller.admin.wm.productproduce.vo.MesWmProductProduceSaveReqVO;
|
||||
import cn.iocoder.yudao.module.mes.dal.dataobject.pro.feedback.MesProFeedbackDO;
|
||||
import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderDO;
|
||||
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.batch.MesWmBatchDO;
|
||||
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productproduce.MesWmProductProduceDetailDO;
|
||||
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productproduce.MesWmProductProduceDO;
|
||||
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productproduce.MesWmProductProduceLineDO;
|
||||
import cn.iocoder.yudao.module.mes.dal.mysql.wm.productproduce.MesWmProductProduceDetailMapper;
|
||||
import cn.iocoder.yudao.module.mes.dal.mysql.wm.productproduce.MesWmProductProduceLineMapper;
|
||||
import cn.iocoder.yudao.module.mes.dal.mysql.wm.productproduce.MesWmProductProduceMapper;
|
||||
import cn.iocoder.yudao.module.mes.enums.wm.MesWmProductProduceStatusEnum;
|
||||
import cn.iocoder.yudao.module.mes.enums.wm.MesWmQualityStatusEnum;
|
||||
import cn.iocoder.yudao.module.mes.service.md.workstation.MesMdWorkstationService;
|
||||
import cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderService;
|
||||
import cn.iocoder.yudao.module.mes.service.wm.batch.MesWmBatchService;
|
||||
import jakarta.annotation.Resource;
|
||||
@@ -46,98 +38,31 @@ public class MesWmProductProduceServiceImpl implements MesWmProductProduceServic
|
||||
|
||||
@Resource
|
||||
private MesWmProductProduceMapper productProduceMapper;
|
||||
// TODO @芋艿:需要优化,不要直接调用对方的 mapper
|
||||
@Resource
|
||||
private MesWmProductProduceLineMapper produceLineMapper;
|
||||
// TODO @芋艿:需要优化,不要直接调用对方的 mapper
|
||||
@Resource
|
||||
private MesWmProductProduceDetailMapper produceDetailMapper;
|
||||
|
||||
@Resource
|
||||
private MesWmProductProduceLineService produceLineService;
|
||||
private MesWmProductProduceLineService productProduceLineService;
|
||||
@Resource
|
||||
private MesWmProductProduceDetailService produceDetailService;
|
||||
@Resource
|
||||
private MesMdWorkstationService workstationService;
|
||||
private MesWmProductProduceDetailService productProduceDetailService;
|
||||
@Resource
|
||||
private MesProWorkOrderService workOrderService;
|
||||
@Resource
|
||||
private MesWmBatchService batchService;
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Long createProductProduce(MesWmProductProduceSaveReqVO createReqVO) {
|
||||
// 1. 校验关联数据
|
||||
if (createReqVO.getWorkOrderId() != null) {
|
||||
workOrderService.validateWorkOrderExists(createReqVO.getWorkOrderId());
|
||||
}
|
||||
if (createReqVO.getWorkstationId() != null) {
|
||||
workstationService.validateWorkstationExists(createReqVO.getWorkstationId());
|
||||
}
|
||||
|
||||
// 2. 插入主表
|
||||
MesWmProductProduceDO produce = BeanUtils.toBean(createReqVO, MesWmProductProduceDO.class);
|
||||
produce.setStatus(MesWmProductProduceStatusEnum.PREPARE.getStatus());
|
||||
productProduceMapper.insert(produce);
|
||||
return produce.getId();
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void updateProductProduce(MesWmProductProduceSaveReqVO updateReqVO) {
|
||||
// 1.1 校验存在 + 准备中状态
|
||||
validateProductProduceExistsAndPrepare(updateReqVO.getId());
|
||||
// 1.2 校验关联数据
|
||||
if (updateReqVO.getWorkOrderId() != null) {
|
||||
workOrderService.validateWorkOrderExists(updateReqVO.getWorkOrderId());
|
||||
}
|
||||
if (updateReqVO.getWorkstationId() != null) {
|
||||
workstationService.validateWorkstationExists(updateReqVO.getWorkstationId());
|
||||
}
|
||||
|
||||
// 2. 更新主表
|
||||
MesWmProductProduceDO updateObj = BeanUtils.toBean(updateReqVO, MesWmProductProduceDO.class);
|
||||
productProduceMapper.updateById(updateObj);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void deleteProductProduce(Long id) {
|
||||
// 1. 校验存在 + 准备中状态
|
||||
validateProductProduceExistsAndPrepare(id);
|
||||
|
||||
// 2.1 级联删除明细
|
||||
produceDetailService.deleteProductProduceDetailByProduceId(id);
|
||||
// 2.2 级联删除行
|
||||
produceLineService.deleteProductProduceLineByProduceId(id);
|
||||
// 2.3 删除主表
|
||||
productProduceMapper.deleteById(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public MesWmProductProduceDO getProductProduce(Long id) {
|
||||
return productProduceMapper.selectById(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageResult<MesWmProductProduceDO> getProductProducePage(MesWmProductProducePageReqVO pageReqVO) {
|
||||
return productProduceMapper.selectPage(pageReqVO);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void finishProductProduce(Long id) {
|
||||
// 1.1 校验存在 + 草稿状态
|
||||
validateProductProduceExistsAndPrepare(id);
|
||||
// 1.2 校验至少有一条行
|
||||
List<MesWmProductProduceLineDO> lines = produceLineService.getProductProduceLineListByProduceId(id);
|
||||
List<MesWmProductProduceLineDO> lines = productProduceLineService.getProductProduceLineListByProduceId(id);
|
||||
if (CollUtil.isEmpty(lines)) {
|
||||
throw exception(WM_PRODUCT_PRODUCE_NO_LINE);
|
||||
}
|
||||
|
||||
// 2. 校验每行明细数量之和等于行数量
|
||||
for (MesWmProductProduceLineDO line : lines) {
|
||||
List<MesWmProductProduceDetailDO> details = produceDetailService.getProductProduceDetailListByLineId(line.getId());
|
||||
List<MesWmProductProduceDetailDO> details = productProduceDetailService.getProductProduceDetailListByLineId(
|
||||
line.getId());
|
||||
BigDecimal totalDetailQty = CollectionUtils.getSumValue(details,
|
||||
MesWmProductProduceDetailDO::getQuantity, BigDecimal::add, BigDecimal.ZERO);
|
||||
if (line.getQuantity() != null && totalDetailQty.compareTo(line.getQuantity()) != 0) {
|
||||
@@ -152,37 +77,6 @@ public class MesWmProductProduceServiceImpl implements MesWmProductProduceServic
|
||||
.setId(id).setStatus(MesWmProductProduceStatusEnum.FINISHED.getStatus()));
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void cancelProductProduce(Long id) {
|
||||
// 1. 校验存在
|
||||
MesWmProductProduceDO produce = validateProductProduceExists(id);
|
||||
// 已完成和已取消不允许取消
|
||||
if (ObjectUtils.equalsAny(produce.getStatus(),
|
||||
MesWmProductProduceStatusEnum.FINISHED.getStatus(),
|
||||
MesWmProductProduceStatusEnum.CANCELED.getStatus())) {
|
||||
throw exception(WM_PRODUCT_PRODUCE_CANCEL_NOT_ALLOWED);
|
||||
}
|
||||
|
||||
// 2. 取消
|
||||
productProduceMapper.updateById(new MesWmProductProduceDO()
|
||||
.setId(id).setStatus(MesWmProductProduceStatusEnum.CANCELED.getStatus()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean checkProductProduceQuantity(Long id) {
|
||||
List<MesWmProductProduceLineDO> lines = produceLineService.getProductProduceLineListByProduceId(id);
|
||||
for (MesWmProductProduceLineDO line : lines) {
|
||||
List<MesWmProductProduceDetailDO> details = produceDetailService.getProductProduceDetailListByLineId(line.getId());
|
||||
BigDecimal totalDetailQty = CollectionUtils.getSumValue(details,
|
||||
MesWmProductProduceDetailDO::getQuantity, BigDecimal::add, BigDecimal.ZERO);
|
||||
if (line.getQuantity() != null && totalDetailQty.compareTo(line.getQuantity()) != 0) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public MesWmProductProduceDO generateProductProduce(MesProFeedbackDO feedback, boolean checkFlag) {
|
||||
@@ -217,7 +111,7 @@ public class MesWmProductProduceServiceImpl implements MesWmProductProduceServic
|
||||
// 3.1 需要检验:创建一条行(质量状态=待检验),不生成明细
|
||||
MesWmProductProduceLineDO line = buildProduceLine(produce, feedback, batchId, batchCode,
|
||||
feedback.getFeedbackQuantity(), MesWmQualityStatusEnum.PENDING.getStatus());
|
||||
produceLineMapper.insert(line);
|
||||
productProduceLineService.createProductProduceLine(line);
|
||||
// TODO @芋艿:先不生成明细行,等待检验完成时,再根据行的质量状态生成明细行
|
||||
} else {
|
||||
// 3.2 无需检验:按合格品/不合格品各生成一行 + 明细
|
||||
@@ -227,19 +121,19 @@ public class MesWmProductProduceServiceImpl implements MesWmProductProduceServic
|
||||
if (unqualifiedQty.compareTo(BigDecimal.ZERO) > 0) {
|
||||
MesWmProductProduceLineDO unqualifiedLine = buildProduceLine(produce, feedback, batchId, batchCode,
|
||||
unqualifiedQty, MesWmQualityStatusEnum.FAIL.getStatus());
|
||||
produceLineMapper.insert(unqualifiedLine);
|
||||
productProduceLineService.createProductProduceLine(unqualifiedLine);
|
||||
MesWmProductProduceDetailDO unqualifiedDetail = buildProduceDetail(produce, feedback, batchId, batchCode,
|
||||
unqualifiedLine.getId(), unqualifiedQty);
|
||||
produceDetailMapper.insert(unqualifiedDetail);
|
||||
productProduceDetailService.createProductProduceDetail(unqualifiedDetail);
|
||||
}
|
||||
// 3.2.2 合格品行 + 明细
|
||||
if (qualifiedQty.compareTo(BigDecimal.ZERO) > 0) {
|
||||
MesWmProductProduceLineDO qualifiedLine = buildProduceLine(produce, feedback, batchId, batchCode,
|
||||
qualifiedQty, MesWmQualityStatusEnum.PASS.getStatus());
|
||||
produceLineMapper.insert(qualifiedLine);
|
||||
productProduceLineService.createProductProduceLine(qualifiedLine);
|
||||
MesWmProductProduceDetailDO qualifiedDetail = buildProduceDetail(produce, feedback, batchId, batchCode,
|
||||
qualifiedLine.getId(), qualifiedQty);
|
||||
produceDetailMapper.insert(qualifiedDetail);
|
||||
productProduceDetailService.createProductProduceDetail(qualifiedDetail);
|
||||
}
|
||||
}
|
||||
return produce;
|
||||
@@ -288,5 +182,4 @@ public class MesWmProductProduceServiceImpl implements MesWmProductProduceServic
|
||||
return produce;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user