diff --git a/nl-module-base/nl-module-base-server/src/main/resources/mapper/classstandard/BtIvtCutpointivtMapper.xml b/nl-module-base/nl-module-base-server/src/main/resources/mapper/classstandard/CuttingProcessService.xml similarity index 100% rename from nl-module-base/nl-module-base-server/src/main/resources/mapper/classstandard/BtIvtCutpointivtMapper.xml rename to nl-module-base/nl-module-base-server/src/main/resources/mapper/classstandard/CuttingProcessService.xml diff --git a/nl-module-base/nl-module-base-server/src/main/resources/mapper/codegen/BtIvtCutpointivtMapper.xml b/nl-module-base/nl-module-base-server/src/main/resources/mapper/codegen/CuttingProcessService.xml similarity index 100% rename from nl-module-base/nl-module-base-server/src/main/resources/mapper/codegen/BtIvtCutpointivtMapper.xml rename to nl-module-base/nl-module-base-server/src/main/resources/mapper/codegen/CuttingProcessService.xml diff --git a/nl-module-base/nl-module-base-server/src/main/resources/mapper/materialbase/BtIvtCutpointivtMapper.xml b/nl-module-base/nl-module-base-server/src/main/resources/mapper/materialbase/CuttingProcessService.xml similarity index 100% rename from nl-module-base/nl-module-base-server/src/main/resources/mapper/materialbase/BtIvtCutpointivtMapper.xml rename to nl-module-base/nl-module-base-server/src/main/resources/mapper/materialbase/CuttingProcessService.xml diff --git a/nl-module-base/nl-module-base-server/src/main/resources/mapper/measureunit/BtIvtCutpointivtMapper.xml b/nl-module-base/nl-module-base-server/src/main/resources/mapper/measureunit/CuttingProcessService.xml similarity index 100% rename from nl-module-base/nl-module-base-server/src/main/resources/mapper/measureunit/BtIvtCutpointivtMapper.xml rename to nl-module-base/nl-module-base-server/src/main/resources/mapper/measureunit/CuttingProcessService.xml diff --git a/nl-module-lms/nl-module-lms-api/src/main/java/cn/code/nl/module/lms/enums/ErrorCodeConstants.java b/nl-module-lms/nl-module-lms-api/src/main/java/cn/code/nl/module/lms/enums/ErrorCodeConstants.java index 72832a06..54685c11 100644 --- a/nl-module-lms/nl-module-lms-api/src/main/java/cn/code/nl/module/lms/enums/ErrorCodeConstants.java +++ b/nl-module-lms/nl-module-lms-api/src/main/java/cn/code/nl/module/lms/enums/ErrorCodeConstants.java @@ -11,8 +11,13 @@ public interface ErrorCodeConstants { // ========== 生箔点位库存 ========== ErrorCode RAW_FOIL_POINT_IVT_NOT_EXISTS = new ErrorCode(1, "生箔点位库存不存在"); ErrorCode IVT_CUTPOINTIVT_NOT_EXISTS = new ErrorCode(2, "分切设备点位不存在"); + ErrorCode CUT_QZZ_ISSUED = new ErrorCode(22, "分切设备气涨轴已下发"); ErrorCode IVT_SHAFTTUBEIVT_NOT_EXISTS = new ErrorCode(3, "穿拔轴点位不存在"); + ErrorCode SLITTINGPRODUCTIONPLAN_NOT_EXISTS = new ErrorCode(3, "穿拔轴点位不存在"); + ErrorCode CUTPOINTIVT_POINT_NOT_EXISTS = new ErrorCode(3, "下双轴任务失败,管轴数量不够,请及时备货"); + ErrorCode CUT_FOIL_TRANSPORT_TASK_CREATE_FAIL = new ErrorCode(14, "创建搬运任务失败"); + ErrorCode CUT_POINT_OCCUPIED = new ErrorCode(12, "点位:{}被占用"); // ========== 生箔工序工单 ========== diff --git a/nl-module-lms/nl-module-lms-api/src/main/java/cn/code/nl/module/lms/enums/slittingproduction/SlittingproductionHandleCodeConstants.java b/nl-module-lms/nl-module-lms-api/src/main/java/cn/code/nl/module/lms/enums/slittingproduction/SlittingproductionHandleCodeConstants.java new file mode 100644 index 00000000..b500a50a --- /dev/null +++ b/nl-module-lms/nl-module-lms-api/src/main/java/cn/code/nl/module/lms/enums/slittingproduction/SlittingproductionHandleCodeConstants.java @@ -0,0 +1,13 @@ +package cn.code.nl.module.lms.enums.slittingproduction; + +/** + * 分切工序任务回调处理器编码常量 + * + * + */ +public interface SlittingproductionHandleCodeConstants { + + String SLI_UP_QZZ_TASK = "sliUpQzzTask"; + + +} diff --git a/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/admin/slittingproductionplan/SlittingproductionplanController.java b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/admin/slittingproductionplan/SlittingproductionplanController.java new file mode 100644 index 00000000..af98a227 --- /dev/null +++ b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/admin/slittingproductionplan/SlittingproductionplanController.java @@ -0,0 +1,104 @@ +package cn.code.nl.module.lms.controller.admin.slittingproductionplan; + +import org.springframework.web.bind.annotation.*; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import jakarta.validation.constraints.*; +import jakarta.validation.*; +import jakarta.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import cn.code.nl.framework.common.pojo.PageParam; +import cn.code.nl.framework.common.pojo.PageResult; +import cn.code.nl.framework.common.pojo.CommonResult; +import cn.code.nl.framework.common.util.object.BeanUtils; +import static cn.code.nl.framework.common.pojo.CommonResult.success; + +import cn.code.nl.framework.excel.core.util.ExcelUtils; + +import cn.code.nl.framework.apilog.core.annotation.ApiAccessLog; +import static cn.code.nl.framework.apilog.core.enums.OperateTypeEnum.*; + +import cn.code.nl.module.lms.controller.admin.slittingproductionplan.vo.*; +import cn.code.nl.module.lms.dal.dataobject.slittingproductionplan.SlittingproductionplanDO; +import cn.code.nl.module.lms.service.slittingproductionplan.SlittingproductionplanService; + +@Tag(name = "管理后台 - 分切生产计划") +@RestController +@RequestMapping("lms/slittingproductionplan") +@Validated +public class SlittingproductionplanController { + + @Resource + private SlittingproductionplanService slittingproductionplanService; + + @PostMapping("/create") + @Operation(summary = "创建分切生产计划") + @PreAuthorize("@ss.hasPermission('lms:slittingproductionplan:create')") + public CommonResult createSlittingproductionplan(@Valid @RequestBody SlittingproductionplanSaveReqVO createReqVO) { + return success(slittingproductionplanService.createSlittingproductionplan(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新分切生产计划") + @PreAuthorize("@ss.hasPermission('lms:slittingproductionplan:update')") + public CommonResult updateSlittingproductionplan(@Valid @RequestBody SlittingproductionplanSaveReqVO updateReqVO) { + slittingproductionplanService.updateSlittingproductionplan(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除分切生产计划") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('lms:slittingproductionplan:delete')") + public CommonResult deleteSlittingproductionplan(@RequestParam("id") String id) { + slittingproductionplanService.deleteSlittingproductionplan(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除分切生产计划") + @PreAuthorize("@ss.hasPermission('lms:slittingproductionplan:delete')") + public CommonResult deleteSlittingproductionplanList(@RequestParam("ids") List ids) { + slittingproductionplanService.deleteSlittingproductionplanListByIds(ids); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得分切生产计划") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('lms:slittingproductionplan:query')") + public CommonResult getSlittingproductionplan(@RequestParam("id") String id) { + SlittingproductionplanDO slittingproductionplan = slittingproductionplanService.getSlittingproductionplan(id); + return success(BeanUtils.toBean(slittingproductionplan, SlittingproductionplanRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得分切生产计划分页") + @PreAuthorize("@ss.hasPermission('lms:slittingproductionplan:query')") + public CommonResult> getSlittingproductionplanPage(@Valid SlittingproductionplanPageReqVO pageReqVO) { + PageResult pageResult = slittingproductionplanService.getSlittingproductionplanPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, SlittingproductionplanRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出分切生产计划 Excel") + @PreAuthorize("@ss.hasPermission('lms:slittingproductionplan:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportSlittingproductionplanExcel(@Valid SlittingproductionplanPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = slittingproductionplanService.getSlittingproductionplanPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "分切生产计划.xls", "数据", SlittingproductionplanRespVO.class, + BeanUtils.toBean(list, SlittingproductionplanRespVO.class)); + } + +} diff --git a/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/admin/slittingproductionplan/vo/SlittingproductionplanPageReqVO.java b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/admin/slittingproductionplan/vo/SlittingproductionplanPageReqVO.java new file mode 100644 index 00000000..a0665c2b --- /dev/null +++ b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/admin/slittingproductionplan/vo/SlittingproductionplanPageReqVO.java @@ -0,0 +1,41 @@ +package cn.code.nl.module.lms.controller.admin.slittingproductionplan.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.code.nl.framework.common.pojo.PageParam; +import java.math.BigDecimal; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static cn.code.nl.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 分切生产计划分页 Request VO") +@Data +public class SlittingproductionplanPageReqVO extends PageParam { + + @Schema(description = "分切订单类型", example = "1") + private String orderType; + + @Schema(description = "来源母卷号", example = "王五") + private String parentContainerName; + + @Schema(description = "生产日期") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private String[] manufactureDate; + + @Schema(description = "开始时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] startTime; + + @Schema(description = "结束时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] endTime; + + @Schema(description = "状态", example = "2") + private String status; + + @Schema(description = "气涨轴规格") + private String qzzSize; + +} \ No newline at end of file diff --git a/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/admin/slittingproductionplan/vo/SlittingproductionplanRespVO.java b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/admin/slittingproductionplan/vo/SlittingproductionplanRespVO.java new file mode 100644 index 00000000..614d99dd --- /dev/null +++ b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/admin/slittingproductionplan/vo/SlittingproductionplanRespVO.java @@ -0,0 +1,180 @@ +package cn.code.nl.module.lms.controller.admin.slittingproductionplan.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.math.BigDecimal; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import cn.idev.excel.annotation.*; + +@Schema(description = "管理后台 - 分切生产计划 Response VO") +@Data +@ExcelIgnoreUnannotated +public class SlittingproductionplanRespVO { + + @Schema(description = "分切订单类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @ExcelProperty("分切订单类型") + private String orderType; + + @Schema(description = "产品编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") + @ExcelProperty("产品编码") + private String productName; + + @Schema(description = "产品描述", example = "随便") + @ExcelProperty("产品描述") + private String description; + + @Schema(description = "来源母卷号", example = "王五") + @ExcelProperty("来源母卷号") + private String parentContainerName; + + @Schema(description = "子卷立库木箱号") + @ExcelProperty("子卷立库木箱号") + private String packageBoxSn; + + @Schema(description = "来源卷位置") + @ExcelProperty("来源卷位置") + private String wareHouse; + + @Schema(description = "分切组", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("分切组") + private String splitGroup; + + @Schema(description = "生产顺序", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("生产顺序") + private String manufactureSort; + + @Schema(description = "生产订单", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三") + @ExcelProperty("生产订单") + private String mfgOrderName; + + @Schema(description = "生产日期", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("生产日期") + private String manufactureDate; + + @Schema(description = "管件类型", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("管件类型") + private String paperTubeOrFrp; + + @Schema(description = "纸筒物料编码") + @ExcelProperty("纸筒物料编码") + private String paperTubeMaterial; + + @Schema(description = "纸筒物料描述", example = "随便") + @ExcelProperty("纸筒物料描述") + private String paperTubeDescription; + + @Schema(description = "纸筒规格") + @ExcelProperty("纸筒规格") + private String paperTubeModel; + + @Schema(description = "FRP管物料编码") + @ExcelProperty("FRP管物料编码") + private String frpMaterial; + + @Schema(description = "FRP管物料描述", example = "你猜") + @ExcelProperty("FRP管物料描述") + private String frpDescription; + + @Schema(description = "FRP管规格") + @ExcelProperty("FRP管规格") + private String frpModel; + + @Schema(description = "子卷幅宽", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("子卷幅宽") + private BigDecimal splitBreadth; + + @Schema(description = "子卷理论长度", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("子卷理论长度") + private BigDecimal splitHeight; + + @Schema(description = "子卷理论重量", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("子卷理论重量") + private BigDecimal splitWeight; + + @Schema(description = "开始时间") + @ExcelProperty("开始时间") + private LocalDateTime startTime; + + @Schema(description = "结束时间") + @ExcelProperty("结束时间") + private LocalDateTime endTime; + + @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @ExcelProperty("状态") + private String status; + + @Schema(description = "上料完成", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("上料完成") + private String isParentOk; + + @Schema(description = "子卷套轴完成", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("子卷套轴完成") + private String isChildTzOk; + + @Schema(description = "子卷配送完成", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("子卷配送完成") + private String isChildPsOk; + + @Schema(description = "气涨轴编码") + @ExcelProperty("气涨轴编码") + private String qzzno; + + @Schema(description = "修改人", example = "22455") + @ExcelProperty("修改人") + private Long updateOptid; + + @Schema(description = "部门ID", example = "12797") + @ExcelProperty("部门ID") + private Long sysdeptid; + + @Schema(description = "公司ID", example = "6749") + @ExcelProperty("公司ID") + private Long syscompanyid; + + @Schema(description = "销售订单及行号", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四") + @ExcelProperty("销售订单及行号") + private String saleOrderName; + + @Schema(description = "是否呼叫", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("是否呼叫") + private String isCall; + + @Schema(description = "呼叫时间") + @ExcelProperty("呼叫时间") + private String callTime; + + @Schema(description = "是否呼叫纸管") + @ExcelProperty("是否呼叫纸管") + private String isPaperOk; + + @Schema(description = "气涨轴规格") + @ExcelProperty("气涨轴规格") + private String qzzSize; + + @Schema(description = "上下") + @ExcelProperty("上下") + private String upOrDown; + + @Schema(description = "子卷等级") + @ExcelProperty("子卷等级") + private String level; + + @Schema(description = "重量") + @ExcelProperty("重量") + private String weight; + + @Schema(description = "纸管重量") + @ExcelProperty("纸管重量") + private String paperWeight; + + @Schema(description = "生产区域") + @ExcelProperty("生产区域") + private String productArea; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/admin/slittingproductionplan/vo/SlittingproductionplanSaveReqVO.java b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/admin/slittingproductionplan/vo/SlittingproductionplanSaveReqVO.java new file mode 100644 index 00000000..e87bdb0e --- /dev/null +++ b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/admin/slittingproductionplan/vo/SlittingproductionplanSaveReqVO.java @@ -0,0 +1,153 @@ +package cn.code.nl.module.lms.controller.admin.slittingproductionplan.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import jakarta.validation.constraints.*; +import java.math.BigDecimal; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 分切生产计划新增/修改 Request VO") +@Data +public class SlittingproductionplanSaveReqVO { + + private String workorderId; + + @Schema(description = "分切订单类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotEmpty(message = "分切订单类型不能为空") + private String orderType; + + @Schema(description = "产品编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") + @NotEmpty(message = "产品编码不能为空") + private String productName; + + @Schema(description = "产品描述", example = "随便") + private String description; + + @Schema(description = "来源母卷号", example = "王五") + private String parentContainerName; + + @Schema(description = "子卷立库木箱号") + private String packageBoxSn; + + @Schema(description = "来源卷位置") + private String wareHouse; + + @Schema(description = "分切组", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "分切组不能为空") + private String splitGroup; + + @Schema(description = "生产顺序", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "生产顺序不能为空") + private String manufactureSort; + + @Schema(description = "生产订单", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三") + @NotEmpty(message = "生产订单不能为空") + private String mfgOrderName; + + @Schema(description = "生产日期", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "生产日期不能为空") + private String manufactureDate; + + @Schema(description = "管件类型", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "管件类型不能为空") + private String paperTubeOrFrp; + + @Schema(description = "纸筒物料编码") + private String paperTubeMaterial; + + @Schema(description = "纸筒物料描述", example = "随便") + private String paperTubeDescription; + + @Schema(description = "纸筒规格") + private String paperTubeModel; + + @Schema(description = "FRP管物料编码") + private String frpMaterial; + + @Schema(description = "FRP管物料描述", example = "你猜") + private String frpDescription; + + @Schema(description = "FRP管规格") + private String frpModel; + + @Schema(description = "子卷幅宽", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "子卷幅宽不能为空") + private BigDecimal splitBreadth; + + @Schema(description = "子卷理论长度", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "子卷理论长度不能为空") + private BigDecimal splitHeight; + + @Schema(description = "子卷理论重量", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "子卷理论重量不能为空") + private BigDecimal splitWeight; + + @Schema(description = "开始时间") + private LocalDateTime startTime; + + @Schema(description = "结束时间") + private LocalDateTime endTime; + + @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @NotEmpty(message = "状态不能为空") + private String status; + + @Schema(description = "上料完成", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "上料完成不能为空") + private String isParentOk; + + @Schema(description = "子卷套轴完成", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "子卷套轴完成不能为空") + private String isChildTzOk; + + @Schema(description = "子卷配送完成", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "子卷配送完成不能为空") + private String isChildPsOk; + + @Schema(description = "气涨轴编码") + private String qzzno; + + @Schema(description = "修改人", example = "22455") + private Long updateOptid; + + @Schema(description = "部门ID", example = "12797") + private Long sysdeptid; + + @Schema(description = "公司ID", example = "6749") + private Long syscompanyid; + + @Schema(description = "销售订单及行号", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四") + @NotEmpty(message = "销售订单及行号不能为空") + private String saleOrderName; + + @Schema(description = "是否呼叫", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "是否呼叫不能为空") + private String isCall; + + @Schema(description = "呼叫时间") + private String callTime; + + @Schema(description = "是否呼叫纸管") + private String isPaperOk; + + @Schema(description = "气涨轴规格") + private String qzzSize; + + @Schema(description = "上下") + private String upOrDown; + + @Schema(description = "子卷等级") + private String level; + + @Schema(description = "重量") + private String weight; + + @Schema(description = "纸管重量") + private String paperWeight; + + @Schema(description = "生产区域") + private String productArea; + +} diff --git a/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/pda/slittingproduction/CuttingProcessController.java b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/pda/slittingproduction/CuttingProcessController.java new file mode 100644 index 00000000..36757282 --- /dev/null +++ b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/pda/slittingproduction/CuttingProcessController.java @@ -0,0 +1,55 @@ +package cn.code.nl.module.lms.controller.pda.slittingproduction; + +import cn.code.nl.framework.common.pojo.CommonResult; +import cn.code.nl.module.lms.controller.pda.slittingproduction.vo.SlittingDownVO; +import cn.code.nl.module.lms.service.pda.slittingproduction.CuttingProcessService; +import jakarta.validation.Valid; +import lombok.RequiredArgsConstructor; +import org.springframework.security.access.prepost.PreAuthorize; +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; + +import static cn.code.nl.framework.common.pojo.CommonResult.success; + +/** + * @author sh + * 2026/7/23 + * 手持-分切下料控制层 + */ +@RestController +@RequestMapping("/api/pda/cuttingProcess") +@RequiredArgsConstructor +public class CuttingProcessController { + + private final CuttingProcessService cuttingProcessService; + + /** + * 分切下料子卷到分切缓存架 + * @param createReqVO + * @return + */ + @PostMapping("/createSlittingDown") + @PreAuthorize("@ss.hasPermission('lms:cutting-process:create')") + public CommonResult createWorkOrder(@Valid @RequestBody SlittingDownVO createReqVO) { + cuttingProcessService.markingFoilSlittingToCache(createReqVO); + return success(true); + } + + + /** + * 分切下料-分切送轴 + * @param createReqVO + * @return + */ + @PostMapping("/doUpShaftToSlitter") + @PreAuthorize("@ss.hasPermission('lms:cutting-process:create')") + public CommonResult doUpShaftToSlitter(@Valid @RequestBody SlittingDownVO createReqVO) { + cuttingProcessService.doUpShaftToSlitter(createReqVO); + return success(true); + } + + + +} diff --git a/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/pda/slittingproduction/dto/SlittingDownDTO.java b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/pda/slittingproduction/dto/SlittingDownDTO.java new file mode 100644 index 00000000..93ae021c --- /dev/null +++ b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/pda/slittingproduction/dto/SlittingDownDTO.java @@ -0,0 +1,12 @@ +package cn.code.nl.module.lms.controller.pda.slittingproduction.dto; + +import lombok.Data; + +@Data +public class SlittingDownDTO { + + + private String pointCode; + + +} diff --git a/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/pda/slittingproduction/eum/CutpointivtPointStatusEnum.java b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/pda/slittingproduction/eum/CutpointivtPointStatusEnum.java new file mode 100644 index 00000000..999cc9c4 --- /dev/null +++ b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/pda/slittingproduction/eum/CutpointivtPointStatusEnum.java @@ -0,0 +1,24 @@ +package cn.code.nl.module.lms.controller.pda.slittingproduction.eum; + +public enum CutpointivtPointStatusEnum { + + NO_STOCK("0", "无货"), + HAS_TUBE_AXIS("1", "有管轴"), + HAS_SUB_ROLL("2", "有子卷"); + + private String name; + private String code; + + private CutpointivtPointStatusEnum(String code, String name) { + this.code = code; + this.name = name; + } + + public String getName() { + return name; + } + + public String getCode() { + return code; + } +} diff --git a/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/pda/slittingproduction/eum/CutpointivtTypeEnum.java b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/pda/slittingproduction/eum/CutpointivtTypeEnum.java new file mode 100644 index 00000000..491198ea --- /dev/null +++ b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/pda/slittingproduction/eum/CutpointivtTypeEnum.java @@ -0,0 +1,28 @@ +package cn.code.nl.module.lms.controller.pda.slittingproduction.eum; + +import cn.code.nl.module.lms.controller.admin.btcutpointivt.vo.BtIvtCutpointivtPageReqVO; + +public enum CutpointivtTypeEnum { + + CUTTING_BLANKING_CACHE("1", "分切下料缓存位"), + CUTTING_BLANKING_AGV("2", "分切下料agv对接位"), + PULL_AXIS_SUB_DOCK("3", "拔轴子卷对接位"), + PULL_AXIS_SUB_CACHE("4", "拔轴子卷缓存位"), + PULL_AXIS_QZZ_CACHE("5", "气涨轴缓存位"); + + private String name; + private String code; + + private CutpointivtTypeEnum(String code, String name) { + this.code = code; + this.name = name; + } + + public String getName() { + return name; + } + + public String getCode() { + return code; + } +} diff --git a/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/pda/slittingproduction/eum/SlittingproductionplanStausEnum.java b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/pda/slittingproduction/eum/SlittingproductionplanStausEnum.java new file mode 100644 index 00000000..ad1345a7 --- /dev/null +++ b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/pda/slittingproduction/eum/SlittingproductionplanStausEnum.java @@ -0,0 +1,25 @@ +package cn.code.nl.module.lms.controller.pda.slittingproduction.eum; + +public enum SlittingproductionplanStausEnum { + + START("1", "开始"), + INBOUND_FINISHED("2", "入站完成"), + OUTBOUND_PROCESSING("3", "出站中"), + END("4", "结束"); + + private String name; + private String code; + + private SlittingproductionplanStausEnum(String code, String name) { + this.code = code; + this.name = name; + } + + public String getName() { + return name; + } + + public String getCode() { + return code; + } +} diff --git a/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/pda/slittingproduction/vo/ShaftToSlitterVO.java b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/pda/slittingproduction/vo/ShaftToSlitterVO.java new file mode 100644 index 00000000..37fe6d89 --- /dev/null +++ b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/pda/slittingproduction/vo/ShaftToSlitterVO.java @@ -0,0 +1,16 @@ +package cn.code.nl.module.lms.controller.pda.slittingproduction.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(description = "手持 - 分切工序分切送轴 Request VO") +@Data +public class ShaftToSlitterVO { + + @Schema(description = "点位编码") + private String pointCode; + + + @Schema(description = "气涨轴编码") + private String qzzNo; +} diff --git a/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/pda/slittingproduction/vo/SlittingDownVO.java b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/pda/slittingproduction/vo/SlittingDownVO.java new file mode 100644 index 00000000..bc698188 --- /dev/null +++ b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/controller/pda/slittingproduction/vo/SlittingDownVO.java @@ -0,0 +1,28 @@ +package cn.code.nl.module.lms.controller.pda.slittingproduction.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(description = "手持 - 分切工序分切下料 Request VO") +@Data +public class SlittingDownVO { + + @Schema(description = "点位编码") + private String pointCode; + @Schema(description = "纸管编码") + private String gxNo; + + @Schema(description = "上轴气涨轴编码") + private String upQzzNo; + + @Schema(description = "下轴气涨轴编码") + private String downQzzNo; + + @Schema(description = "上轴纸管编码") + private String upPaperTubeMaterial; + + @Schema(description = "下轴纸管编码") + private String downPaperTubeMaterial; + + +} diff --git a/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/dal/dataobject/btivtcutpointivt/BtIvtCutpointivtDO.java b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/dal/dataobject/btivtcutpointivt/BtIvtCutpointivtDO.java index a20b67a3..47522637 100644 --- a/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/dal/dataobject/btivtcutpointivt/BtIvtCutpointivtDO.java +++ b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/dal/dataobject/btivtcutpointivt/BtIvtCutpointivtDO.java @@ -32,38 +32,33 @@ public class BtIvtCutpointivtDO extends BaseDO { * AGV点位名称 */ private String pointName; + /** - * 桁架点位编码1 + * 气胀轴编码 */ - private String trussPointCode1; + private String qzzNo; + /** - * 桁架点位编码2 + * 管芯编码 */ - private String trussPointCode2; + private String gxNo; + /** - * 气胀轴编码1 + * 子卷号 */ - private String qzzNo1; + private String subContainer; /** - * 气胀轴编码2 - */ - private String qzzNo2; - /** - * 上轴管芯 - */ - private String upGx; - /** - * 下轴管芯 - */ - private String downGx; - /** - * 点位类型,1-分切缓存位,2-分切对接位,3-套轴对接位,4-套轴缓存位 + * 点位类型,1-分切下料缓存位,2-分切下料agv对接位,3-拔轴子卷对接位,4-拔轴子卷缓存位 */ private String pointType; + /** * 生产区域 */ private String productArea; + + + /** * 顺序号 */ @@ -98,4 +93,10 @@ public class BtIvtCutpointivtDO extends BaseDO { private String pointStatus; + /** + * 锁状态 + */ + private String lockStatus; + + } diff --git a/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/dal/dataobject/cutpointIvt/IvtCutpointivtDO.java b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/dal/dataobject/cutpointIvt/IvtCutpointivtDO.java index 8a6e6d5c..3ce5daa2 100644 --- a/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/dal/dataobject/cutpointIvt/IvtCutpointivtDO.java +++ b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/dal/dataobject/cutpointIvt/IvtCutpointivtDO.java @@ -117,4 +117,9 @@ public class IvtCutpointivtDO extends BaseDO { private String qzzGeneration; + /** + * 锁状态 + */ + private String lockStatus; + } diff --git a/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/dal/dataobject/slittingproductionplan/SlittingproductionplanDO.java b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/dal/dataobject/slittingproductionplan/SlittingproductionplanDO.java new file mode 100644 index 00000000..ee5a1a90 --- /dev/null +++ b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/dal/dataobject/slittingproductionplan/SlittingproductionplanDO.java @@ -0,0 +1,202 @@ +package cn.code.nl.module.lms.dal.dataobject.slittingproductionplan; + +import lombok.*; +import java.util.*; +import java.math.BigDecimal; +import java.math.BigDecimal; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import cn.code.nl.framework.mybatis.core.dataobject.BaseDO; + +/** + * 分切生产计划 DO + * + * @author 诺力管理员 + */ +@TableName("lms_slittingproductionplan") +@KeySequence("lms_slittingproductionplan_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SlittingproductionplanDO extends BaseDO { + + /** + * 分切计划标识 + */ + @TableId(type = IdType.INPUT) + private String workorderId; + /** + * 分切订单类型 + */ + private String orderType; + /** + * 产品编码 + */ + private String productName; + /** + * 产品描述 + */ + private String description; + /** + * 来源母卷号 + */ + private String parentContainerName; + /** + * 子卷立库木箱号 + */ + private String packageBoxSn; + /** + * 来源卷位置 + */ + private String wareHouse; + /** + * 分切组 + */ + private String splitGroup; + /** + * 生产顺序 + */ + private String manufactureSort; + /** + * 生产订单 + */ + private String mfgOrderName; + /** + * 生产日期 + */ + private String manufactureDate; + /** + * 管件类型 + */ + private String paperTubeOrFrp; + /** + * 纸筒物料编码 + */ + private String paperTubeMaterial; + /** + * 纸筒物料描述 + */ + private String paperTubeDescription; + /** + * 纸筒规格 + */ + private String paperTubeModel; + /** + * FRP管物料编码 + */ + private String frpMaterial; + /** + * FRP管物料描述 + */ + private String frpDescription; + /** + * FRP管规格 + */ + private String frpModel; + /** + * 子卷幅宽 + */ + private BigDecimal splitBreadth; + /** + * 子卷理论长度 + */ + private BigDecimal splitHeight; + /** + * 子卷理论重量 + */ + private BigDecimal splitWeight; + /** + * 开始时间 + */ + private LocalDateTime startTime; + /** + * 结束时间 + */ + private LocalDateTime endTime; + /** + * 状态 + */ + private String status; + /** + * 上料完成 + */ + private String isParentOk; + /** + * 子卷套轴完成 + */ + private String isChildTzOk; + /** + * 子卷配送完成 + */ + private String isChildPsOk; + /** + * 气涨轴编码 + */ + private String qzzno; + /** + * 修改人 + */ + private Long updateOptid; + /** + * 部门ID + */ + private Long sysdeptid; + /** + * 公司ID + */ + private Long syscompanyid; + /** + * 销售订单及行号 + */ + private String saleOrderName; + /** + * 是否呼叫 + */ + private String isCall; + /** + * 呼叫时间 + */ + private String callTime; + /** + * 是否呼叫纸管 + */ + private String isPaperOk; + /** + * 气涨轴规格 + */ + private String qzzSize; + /** + * 上下 + */ + private String upOrDown; + /** + * 子卷等级 + */ + private String level; + /** + * 重量 + */ + private String weight; + /** + * 纸管重量 + */ + private String paperWeight; + /** + * 生产区域 + */ + private String productArea; + + /** + * 分切编码 + */ + private String cutCode; + + +} diff --git a/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/dal/mysql/btivtcutpointivt/BtIvtCutpointivtMapper.java b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/dal/mysql/btivtcutpointivt/BtIvtCutpointivtMapper.java index 901cb05f..84d18e04 100644 --- a/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/dal/mysql/btivtcutpointivt/BtIvtCutpointivtMapper.java +++ b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/dal/mysql/btivtcutpointivt/BtIvtCutpointivtMapper.java @@ -5,6 +5,8 @@ import cn.code.nl.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.code.nl.framework.mybatis.core.mapper.BaseMapperX; import cn.code.nl.module.lms.controller.admin.btcutpointivt.vo.BtIvtCutpointivtPageReqVO; import cn.code.nl.module.lms.dal.dataobject.btivtcutpointivt.BtIvtCutpointivtDO; +import cn.code.nl.module.lms.enums.LockStatusEnum; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import org.apache.ibatis.annotations.Mapper; /** @@ -26,4 +28,12 @@ public interface BtIvtCutpointivtMapper extends BaseMapperX .orderByDesc(BtIvtCutpointivtDO::getIvtId)); } + default int lockPoint(Long ivtId) { + BtIvtCutpointivtDO updateObj = new BtIvtCutpointivtDO(); + updateObj.setLockStatus(LockStatusEnum.OCCUPIED.getCode()); + return update(updateObj, new LambdaUpdateWrapper() + .eq(BtIvtCutpointivtDO::getIvtId, ivtId) + .eq(BtIvtCutpointivtDO::getLockStatus, LockStatusEnum.IDLE.getCode())); + } + } diff --git a/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/dal/mysql/ivtcutpointivt/IvtCutpointivtMapper.java b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/dal/mysql/ivtcutpointivt/IvtCutpointivtMapper.java index bc63907d..537b9cba 100644 --- a/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/dal/mysql/ivtcutpointivt/IvtCutpointivtMapper.java +++ b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/dal/mysql/ivtcutpointivt/IvtCutpointivtMapper.java @@ -7,6 +7,8 @@ import cn.code.nl.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.code.nl.framework.mybatis.core.mapper.BaseMapperX; import cn.code.nl.module.lms.controller.admin.cutpointivt.vo.IvtCutpointivtPageReqVO; import cn.code.nl.module.lms.dal.dataobject.cutpointIvt.IvtCutpointivtDO; +import cn.code.nl.module.lms.enums.LockStatusEnum; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import org.apache.ibatis.annotations.Mapper; /** @@ -27,4 +29,17 @@ public interface IvtCutpointivtMapper extends BaseMapperX { .orderByDesc(IvtCutpointivtDO::getIvtId)); } + default IvtCutpointivtDO selectByPointCode(String pointCode){ + return selectOne(IvtCutpointivtDO::getPointCode,pointCode); + }; + + + default int lockPoint(Long ivtId) { + IvtCutpointivtDO updateObj = new IvtCutpointivtDO(); + updateObj.setLockStatus(LockStatusEnum.OCCUPIED.getCode()); + return update(updateObj, new LambdaUpdateWrapper() + .eq(IvtCutpointivtDO::getIvtId, ivtId) + .eq(IvtCutpointivtDO::getLockStatus, LockStatusEnum.IDLE.getCode())); + } + } diff --git a/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/dal/mysql/slittingproductionplan/SlittingproductionplanMapper.java b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/dal/mysql/slittingproductionplan/SlittingproductionplanMapper.java new file mode 100644 index 00000000..b3c92aa5 --- /dev/null +++ b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/dal/mysql/slittingproductionplan/SlittingproductionplanMapper.java @@ -0,0 +1,35 @@ +package cn.code.nl.module.lms.dal.mysql.slittingproductionplan; + +import java.util.*; + +import cn.code.nl.framework.common.pojo.PageResult; +import cn.code.nl.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.code.nl.framework.mybatis.core.mapper.BaseMapperX; +import cn.code.nl.module.lms.controller.pda.slittingproduction.dto.SlittingDownDTO; +import cn.code.nl.module.lms.dal.dataobject.slittingproductionplan.SlittingproductionplanDO; +import com.baomidou.mybatisplus.core.toolkit.support.SFunction; +import org.apache.ibatis.annotations.Mapper; +import cn.code.nl.module.lms.controller.admin.slittingproductionplan.vo.*; + +/** + * 分切生产计划 Mapper + * + * @author 诺力管理员 + */ +@Mapper +public interface SlittingproductionplanMapper extends BaseMapperX { + + default PageResult selectPage(SlittingproductionplanPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(SlittingproductionplanDO::getOrderType, reqVO.getOrderType()) + .likeIfPresent(SlittingproductionplanDO::getParentContainerName, reqVO.getParentContainerName()) + .betweenIfPresent(SlittingproductionplanDO::getManufactureDate, reqVO.getManufactureDate()) + .betweenIfPresent(SlittingproductionplanDO::getStartTime, reqVO.getStartTime()) + .betweenIfPresent(SlittingproductionplanDO::getEndTime, reqVO.getEndTime()) + .eqIfPresent(SlittingproductionplanDO::getStatus, reqVO.getStatus()) + .eqIfPresent(SlittingproductionplanDO::getQzzSize, reqVO.getQzzSize()) + .orderByDesc(SlittingproductionplanDO::getWorkorderId)); + } + + +} diff --git a/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/service/cutpointIvt/IvtCutpointivtService.java b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/service/cutpointIvt/IvtCutpointivtService.java index f8e66ece..1c1a7f96 100644 --- a/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/service/cutpointIvt/IvtCutpointivtService.java +++ b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/service/cutpointIvt/IvtCutpointivtService.java @@ -61,4 +61,14 @@ public interface IvtCutpointivtService { */ PageResult getIvtCutpointivtPage(IvtCutpointivtPageReqVO pageReqVO); + + /** + * 根据AGV对应的点位编码获取点位实体 + * @param point AGV点位编码 + * @param flag 是否需要校验启用 + * @return 实体 + */ + IvtCutpointivtDO getPintByAgvCode(String point, boolean flag); + + IvtCutpointivtDO allocatePoint(String pointCode); } diff --git a/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/service/cutpointIvt/IvtCutpointivtServiceImpl.java b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/service/cutpointIvt/IvtCutpointivtServiceImpl.java index b19bc70d..130362b2 100644 --- a/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/service/cutpointIvt/IvtCutpointivtServiceImpl.java +++ b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/service/cutpointIvt/IvtCutpointivtServiceImpl.java @@ -5,6 +5,8 @@ import cn.code.nl.module.lms.controller.admin.cutpointivt.vo.IvtCutpointivtSaveR import cn.code.nl.module.lms.dal.dataobject.cutpointIvt.IvtCutpointivtDO; import cn.code.nl.module.lms.dal.mysql.ivtcutpointivt.IvtCutpointivtMapper; import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.springframework.stereotype.Service; import jakarta.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -19,6 +21,7 @@ import cn.code.nl.framework.common.util.object.BeanUtils; import static cn.code.nl.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.code.nl.framework.common.util.collection.CollectionUtils.convertList; import static cn.code.nl.framework.common.util.collection.CollectionUtils.diffList; +import static cn.code.nl.module.lms.enums.ErrorCodeConstants.CUT_POINT_OCCUPIED; import static cn.code.nl.module.lms.enums.ErrorCodeConstants.IVT_CUTPOINTIVT_NOT_EXISTS; /** @@ -83,4 +86,23 @@ public class IvtCutpointivtServiceImpl implements IvtCutpointivtService { return ivtCutpointivtMapper.selectPage(pageReqVO); } + + @Override + public IvtCutpointivtDO getPintByAgvCode(String point, boolean flag) { + LambdaQueryWrapper lam = new QueryWrapper().lambda(); + lam.eq(flag, IvtCutpointivtDO::getIsUsed, "1").eq(IvtCutpointivtDO::getPointCode, point); + return ivtCutpointivtMapper.selectOne(lam); + } + + @Override + public IvtCutpointivtDO allocatePoint(String pointCode) { + IvtCutpointivtDO ivtCutpointivtDO = ivtCutpointivtMapper.selectByPointCode(pointCode); + // CAS 占用:抢占失败说明已被其他任务占有 + if (ivtCutpointivtMapper.lockPoint(ivtCutpointivtDO.getIvtId()) == 0) { + throw exception(CUT_POINT_OCCUPIED, ivtCutpointivtDO.getPointCode()); + } + + return ivtCutpointivtDO; + } + } diff --git a/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/service/ivtcutpointivt/BtIvtCutpointivtService.java b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/service/ivtcutpointivt/BtIvtCutpointivtService.java index 0442b5de..56bf4eeb 100644 --- a/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/service/ivtcutpointivt/BtIvtCutpointivtService.java +++ b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/service/ivtcutpointivt/BtIvtCutpointivtService.java @@ -60,4 +60,13 @@ public interface BtIvtCutpointivtService { */ PageResult getIvtCutpointivtPage(BtIvtCutpointivtPageReqVO pageReqVO); + + /** + * 根据类型查询集合 + * + * + */ + List getIvtCutpointivtListByType(String type, String status, String pullAxisQzzCacheCode); + + void allocatePoint(List ivtCutpointivtListByTypeList); } diff --git a/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/service/ivtcutpointivt/BtIvtCutpointivtServiceImpl.java b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/service/ivtcutpointivt/BtIvtCutpointivtServiceImpl.java index 605b2cbd..e6ea5a43 100644 --- a/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/service/ivtcutpointivt/BtIvtCutpointivtServiceImpl.java +++ b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/service/ivtcutpointivt/BtIvtCutpointivtServiceImpl.java @@ -1,7 +1,9 @@ package cn.code.nl.module.lms.service.ivtcutpointivt; +import cn.code.nl.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.code.nl.module.lms.controller.admin.btcutpointivt.vo.BtIvtCutpointivtPageReqVO; import cn.code.nl.module.lms.controller.admin.btcutpointivt.vo.BtIvtCutpointivtSaveReqVO; +import cn.code.nl.module.lms.controller.pda.slittingproduction.eum.CutpointivtPointStatusEnum; import cn.code.nl.module.lms.dal.dataobject.btivtcutpointivt.BtIvtCutpointivtDO; import cn.code.nl.module.lms.dal.mysql.btivtcutpointivt.BtIvtCutpointivtMapper; import org.springframework.stereotype.Service; @@ -9,13 +11,14 @@ import jakarta.annotation.Resource; import org.springframework.validation.annotation.Validated; import java.util.*; + import cn.code.nl.framework.common.pojo.PageResult; import cn.code.nl.framework.common.util.object.BeanUtils; import static cn.code.nl.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.code.nl.framework.common.util.collection.CollectionUtils.convertList; -import static cn.code.nl.module.lms.enums.ErrorCodeConstants.IVT_CUTPOINTIVT_NOT_EXISTS; +import static cn.code.nl.module.lms.enums.ErrorCodeConstants.*; /** * 分切区缓存点位库存 Service 实现类 @@ -57,10 +60,10 @@ public class BtIvtCutpointivtServiceImpl implements BtIvtCutpointivtService { } @Override - public void deleteIvtCutpointivtListByIds(List ids) { + public void deleteIvtCutpointivtListByIds(List ids) { // 删除 btIvtCutpointivtMapper.deleteByIds(ids); - } + } private void validateIvtCutpointivtExists(Long id) { @@ -79,4 +82,25 @@ public class BtIvtCutpointivtServiceImpl implements BtIvtCutpointivtService { return btIvtCutpointivtMapper.selectPage(pageReqVO); } + @Override + public List getIvtCutpointivtListByType(String type, String status, String pullAxisQzzCacheCode) { + return btIvtCutpointivtMapper.selectList(new LambdaQueryWrapperX() + .eqIfPresent(BtIvtCutpointivtDO::getPointType, type) + .eqIfPresent(BtIvtCutpointivtDO::getPointStatus, status) + .eqIfPresent(BtIvtCutpointivtDO::getGxNo, pullAxisQzzCacheCode) + .eqIfPresent(BtIvtCutpointivtDO::getIsUsed, "1") + .orderByDesc(BtIvtCutpointivtDO::getIvtId)); + + } + + @Override + public void allocatePoint(List ivtCutpointivtListByTypeList) { + for (BtIvtCutpointivtDO btIvtCutpointivtDO : ivtCutpointivtListByTypeList) { + // CAS 占用:抢占失败说明已被其他任务占有 + if (btIvtCutpointivtMapper.lockPoint(btIvtCutpointivtDO.getIvtId()) == 0) { + throw exception(CUT_POINT_OCCUPIED, btIvtCutpointivtDO.getPointCode()); + } + } + } + } diff --git a/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/service/pda/slittingproduction/CuttingProcessService.java b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/service/pda/slittingproduction/CuttingProcessService.java new file mode 100644 index 00000000..c7c3a144 --- /dev/null +++ b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/service/pda/slittingproduction/CuttingProcessService.java @@ -0,0 +1,9 @@ +package cn.code.nl.module.lms.service.pda.slittingproduction; + +import cn.code.nl.module.lms.controller.pda.slittingproduction.vo.SlittingDownVO; + +public interface CuttingProcessService { + void markingFoilSlittingToCache(SlittingDownVO createReqVO); + + void doUpShaftToSlitter(SlittingDownVO createReqVO); +} diff --git a/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/service/pda/slittingproduction/impl/CuttingProcessServiceImpl.java b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/service/pda/slittingproduction/impl/CuttingProcessServiceImpl.java new file mode 100644 index 00000000..412b7db4 --- /dev/null +++ b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/service/pda/slittingproduction/impl/CuttingProcessServiceImpl.java @@ -0,0 +1,213 @@ +package cn.code.nl.module.lms.service.pda.slittingproduction.impl; + +import cn.code.nl.framework.common.pojo.CommonResult; +import cn.code.nl.module.lms.controller.pda.slittingproduction.dto.SlittingDownDTO; +import cn.code.nl.module.lms.controller.pda.slittingproduction.eum.CutpointivtPointStatusEnum; +import cn.code.nl.module.lms.controller.pda.slittingproduction.eum.CutpointivtTypeEnum; +import cn.code.nl.module.lms.controller.pda.slittingproduction.vo.SlittingDownVO; +import cn.code.nl.module.lms.dal.dataobject.btivtcutpointivt.BtIvtCutpointivtDO; +import cn.code.nl.module.lms.dal.dataobject.cutpointIvt.IvtCutpointivtDO; +import cn.code.nl.module.lms.dal.dataobject.rawfoilcasheposition.RawFoilCashePositionDO; +import cn.code.nl.module.lms.dal.dataobject.slittingproductionplan.SlittingproductionplanDO; +import cn.code.nl.module.lms.enums.RawFoilHandleCodeConstants; +import cn.code.nl.module.lms.enums.slittingproduction.SlittingproductionHandleCodeConstants; +import cn.code.nl.module.lms.service.cutpointIvt.IvtCutpointivtService; +import cn.code.nl.module.lms.service.ivtcutpointivt.BtIvtCutpointivtService; +import cn.code.nl.module.lms.service.pda.slittingproduction.CuttingProcessService; +import cn.code.nl.module.lms.service.slittingproductionplan.SlittingproductionplanService; +import cn.code.nl.module.task.api.TransportTaskApi; +import cn.code.nl.module.task.dto.TransportTaskCreateReqDTO; +import cn.code.nl.module.task.enums.AcsTaskTypeEnum; +import cn.code.nl.module.task.enums.TaskOwnerServiceEnum; +import cn.code.nl.module.task.enums.TaskTypeEnum; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.lang.UUID; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.ObjectUtil; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.apache.commons.lang3.StringUtils; +import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +import static cn.code.nl.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.code.nl.module.lms.enums.ErrorCodeConstants.*; + +@Slf4j +@Service +public class CuttingProcessServiceImpl implements CuttingProcessService { + + + @Autowired + private BtIvtCutpointivtService btIvtCutpointivtService; + + @Autowired + private IvtCutpointivtService ivtCutpointivtService; + + @Resource + private TransportTaskApi transportTaskApi; + + @Autowired + private SlittingproductionplanService slittingproductionplanService; + public void markingFoilSlittingToCache(SlittingDownVO createReqVO) { + + + //查找分切设备 + checkPoint(createReqVO); + + //创建分切计划,根据上下轴生成任务 + creatTask(createReqVO); + + + } + + private void checkPoint(SlittingDownVO createReqVO) { + IvtCutpointivtDO ivtCutpointivtDO = ivtCutpointivtService.getPintByAgvCode(createReqVO.getPointCode(), false); + + if (ObjectUtil.isEmpty(ivtCutpointivtDO)){ + throw exception(IVT_CUTPOINTIVT_NOT_EXISTS); + } + + //分切设备上、下轴气涨轴均已下发,不允许重复送轴 + if (StringUtils.isNotEmpty(ivtCutpointivtDO.getDownQzzno()) + && StringUtils.isNotEmpty(ivtCutpointivtDO.getUpQzzno())) { + throw exception(CUT_QZZ_ISSUED); + } + + } + + /** + * 分切送轴 + * @param createReqVO + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void doUpShaftToSlitter(SlittingDownVO createReqVO) { + //TODO + //点位校验 + checkPoint(createReqVO); + + ivtCutpointivtService.allocatePoint(createReqVO.getPointCode()); + + + // 生成分切计划 + SlittingproductionplanDO plan = new SlittingproductionplanDO(); + plan.setWorkorderId(IdUtil.getSnowflake(1, 1).nextIdStr()); + plan.setOrderType("1"); + plan.setProductName("-"); + plan.setDescription("-"); + plan.setCutCode(createReqVO.getPointCode()); + plan.setManufactureDate(DateUtil.format(new Date(), "yyyy-MM-dd")); +// if ("1".equals(callShaftVo.getPaper_or_frp())) { +// // 纸管 +// plan.setPaper_tube_material(callShaftVo.getMaterial_code()); +// plan.setPaper_tube_model(callShaftVo.getMaterial_spec()); +// plan.setPaper_tube_description(callShaftVo.getMaterial_spec()); +// } else { +// // frp +// plan.setFRP_material(callShaftVo.getMaterial_code()); +// plan.setFRP_model(callShaftVo.getMaterial_spec()); +// plan.setFRP_description(callShaftVo.getMaterial_spec()); +// } +// plan.setStatus("01"); +// +// plan.setSale_order_name("-"); +// plan.setQzz_size(callShaftVo.getQzz_size()); +// plan.setUp_or_down(cutDevice.getUp_point_code().equals(callShaftVo.getPoint_code()) +// ? "1" : "2"); +// plan.setLeft_or_right(callShaftVo.getLeft_or_right()); +// plans.add(plan); + + // 创建任务 + creatShaftToSlitterTask(createReqVO); + + + } + + private void creatShaftToSlitterTask(SlittingDownVO createReqVO) { + // 两个编码不为空生成送双轴任务 + List ivtCutpointivtListByTypeList = btIvtCutpointivtService.getIvtCutpointivtListByType(CutpointivtTypeEnum.PULL_AXIS_QZZ_CACHE.getCode(), CutpointivtPointStatusEnum.HAS_TUBE_AXIS.getCode(),createReqVO.getGxNo()); + + + if (StringUtils.isEmpty(createReqVO.getUpQzzNo()) && StringUtils.isEmpty(createReqVO.getDownQzzNo())) { + if (ivtCutpointivtListByTypeList.size()<2){ + throw exception(CUTPOINTIVT_POINT_NOT_EXISTS); + } + // 点位占用 + btIvtCutpointivtService.allocatePoint(ivtCutpointivtListByTypeList); + + + + + TransportTaskCreateReqDTO reqDTO = new TransportTaskCreateReqDTO(); + reqDTO.setTaskName(UUID.randomUUID().toString()); + reqDTO.setOwnerService(TaskOwnerServiceEnum.LMS.getCode()); + reqDTO.setHandleCode(SlittingproductionHandleCodeConstants.SLI_UP_QZZ_TASK); + reqDTO.setAcsTaskType(AcsTaskTypeEnum.TRUSS_TASK.getCode()); + reqDTO.setAgvSystemType("1"); + reqDTO.setPointCode1(ivtCutpointivtListByTypeList.get(0).getPointCode()); + reqDTO.setPointCode2(ivtCutpointivtListByTypeList.get(1).getPointCode()); + reqDTO.setPointCode3(createReqVO.getPointCode()+ "_S"); + reqDTO.setPointCode4(createReqVO.getPointCode()+ "_X"); + reqDTO.setMaterialCode(createReqVO.getDownQzzNo()); + reqDTO.setPriority("1"); + reqDTO.setIsAutoIssue("1"); + reqDTO.setIsCreateFinish(true); + reqDTO.setTaskType(TaskTypeEnum.SLI_UP_QZZ_TASK.getCode()); + try { + + CommonResult result = transportTaskApi.createTransportTask(reqDTO); + if (result.isError()) { + log.error("创建搬运任务失败, pointCode={}, reqDTO={}, 返回={}", + createReqVO.getPointCode(), reqDTO, result); + throw exception(CUT_FOIL_TRANSPORT_TASK_CREATE_FAIL); + } + } catch (Exception e) { + // 补偿释放:生箔机点位 + 母卷下料位(下料位尚未分配成功时跳过) +// rawFoilPointIVTService.releasePointLock(rawFoilPointIVTDO.getPointCode()); +// if (ObjectUtil.isNotEmpty(unloadingPosition)) { +// rawFoilCashePositionService.releasePositionLock(unloadingPosition.getPointCode()); +// } + throw e; + } + + } + // 送单轴任务 + else if (StringUtils.isEmpty(createReqVO.getUpQzzNo())) { + + } + } + + private static void creatTask(SlittingDownVO createReqVO) { + + // 两个编码为空生成下双轴任务 + if (StringUtils.isEmpty(createReqVO.getUpQzzNo()) && StringUtils.isEmpty(createReqVO.getDownQzzNo())) { + + + } + + + // 上单轴任务 + else if (StringUtils.isEmpty(createReqVO.getUpQzzNo())) { + + } + + + else if (StringUtils.isEmpty(createReqVO.getDownQzzNo())) { + + + } + // 下 + else { + // TODO 在这里写【都不为空】的正常业务代码 + System.out.println("上下轴气涨轴编码均有值,执行正常分支逻辑"); + + } + } +} diff --git a/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/service/slittingproductionplan/SlittingproductionplanService.java b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/service/slittingproductionplan/SlittingproductionplanService.java new file mode 100644 index 00000000..3e298d02 --- /dev/null +++ b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/service/slittingproductionplan/SlittingproductionplanService.java @@ -0,0 +1,69 @@ +package cn.code.nl.module.lms.service.slittingproductionplan; + +import java.util.*; + +import cn.code.nl.module.lms.controller.pda.slittingproduction.dto.SlittingDownDTO; +import cn.code.nl.module.lms.controller.pda.slittingproduction.vo.SlittingDownVO; +import jakarta.validation.*; +import cn.code.nl.module.lms.controller.admin.slittingproductionplan.vo.*; +import cn.code.nl.module.lms.dal.dataobject.slittingproductionplan.SlittingproductionplanDO; +import cn.code.nl.framework.common.pojo.PageResult; +import cn.code.nl.framework.common.pojo.PageParam; + +/** + * 分切生产计划 Service 接口 + * + * @author 诺力管理员 + */ +public interface SlittingproductionplanService { + + /** + * 创建分切生产计划 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + String createSlittingproductionplan(@Valid SlittingproductionplanSaveReqVO createReqVO); + + /** + * 更新分切生产计划 + * + * @param updateReqVO 更新信息 + */ + void updateSlittingproductionplan(@Valid SlittingproductionplanSaveReqVO updateReqVO); + + /** + * 删除分切生产计划 + * + * @param id 编号 + */ + void deleteSlittingproductionplan(String id); + + /** + * 批量删除分切生产计划 + * + * @param ids 编号 + */ + void deleteSlittingproductionplanListByIds(List ids); + + /** + * 获得分切生产计划 + * + * @param id 编号 + * @return 分切生产计划 + */ + SlittingproductionplanDO getSlittingproductionplan(String id); + + /** + * 获得分切生产计划分页 + * + * @param pageReqVO 分页查询 + * @return 分切生产计划分页 + */ + PageResult getSlittingproductionplanPage(SlittingproductionplanPageReqVO pageReqVO); + + + + + List getSlittingproductionplanByDTO(SlittingDownDTO slittingDownDTO); +} diff --git a/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/service/slittingproductionplan/SlittingproductionplanServiceImpl.java b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/service/slittingproductionplan/SlittingproductionplanServiceImpl.java new file mode 100644 index 00000000..f9a3a0fa --- /dev/null +++ b/nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/service/slittingproductionplan/SlittingproductionplanServiceImpl.java @@ -0,0 +1,95 @@ +package cn.code.nl.module.lms.service.slittingproductionplan; + +import cn.code.nl.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.code.nl.module.lms.controller.pda.slittingproduction.dto.SlittingDownDTO; +import cn.code.nl.module.lms.controller.pda.slittingproduction.eum.SlittingproductionplanStausEnum; +import org.springframework.stereotype.Service; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; + +import java.util.*; + +import cn.code.nl.module.lms.controller.admin.slittingproductionplan.vo.*; +import cn.code.nl.module.lms.dal.dataobject.slittingproductionplan.SlittingproductionplanDO; +import cn.code.nl.framework.common.pojo.PageResult; +import cn.code.nl.framework.common.util.object.BeanUtils; + +import cn.code.nl.module.lms.dal.mysql.slittingproductionplan.SlittingproductionplanMapper; + +import static cn.code.nl.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.code.nl.framework.common.util.collection.CollectionUtils.convertList; +import static cn.code.nl.module.lms.enums.ErrorCodeConstants.*; + +/** + * 分切生产计划 Service 实现类 + * + * @author 诺力管理员 + */ +@Service +@Validated +public class SlittingproductionplanServiceImpl implements SlittingproductionplanService { + + @Resource + private SlittingproductionplanMapper slittingproductionplanMapper; + + @Override + public String createSlittingproductionplan(SlittingproductionplanSaveReqVO createReqVO) { + // 插入 + SlittingproductionplanDO slittingproductionplan = BeanUtils.toBean(createReqVO, SlittingproductionplanDO.class); + slittingproductionplanMapper.insert(slittingproductionplan); + + // 返回 + return slittingproductionplan.getWorkorderId(); + } + + @Override + public void updateSlittingproductionplan(SlittingproductionplanSaveReqVO updateReqVO) { + // 校验存在 + validateSlittingproductionplanExists(updateReqVO.getWorkorderId()); + // 更新 + SlittingproductionplanDO updateObj = BeanUtils.toBean(updateReqVO, SlittingproductionplanDO.class); + slittingproductionplanMapper.updateById(updateObj); + } + + @Override + public void deleteSlittingproductionplan(String id) { + // 校验存在 + validateSlittingproductionplanExists(id); + // 删除 + slittingproductionplanMapper.deleteById(id); + } + + @Override + public void deleteSlittingproductionplanListByIds(List ids) { + // 删除 + slittingproductionplanMapper.deleteByIds(ids); + } + + + private void validateSlittingproductionplanExists(String id) { + if (slittingproductionplanMapper.selectById(id) == null) { + throw exception(SLITTINGPRODUCTIONPLAN_NOT_EXISTS); + } + } + + @Override + public SlittingproductionplanDO getSlittingproductionplan(String id) { + return slittingproductionplanMapper.selectById(id); + } + + @Override + public PageResult getSlittingproductionplanPage(SlittingproductionplanPageReqVO pageReqVO) { + return slittingproductionplanMapper.selectPage(pageReqVO); + } + + @Override + public List getSlittingproductionplanByDTO(SlittingDownDTO slittingDownDTO) { + return slittingproductionplanMapper.selectList(new LambdaQueryWrapperX() + .eq(SlittingproductionplanDO::getStatus, SlittingproductionplanStausEnum.START.getCode()) + .eq(SlittingproductionplanDO::getCutCode, slittingDownDTO.getPointCode())); + + + } + + +} diff --git a/nl-module-lms/nl-module-lms-server/src/main/resources/mapper/btivtcutpointivt/BtIvtCutpointivtMapper.xml b/nl-module-lms/nl-module-lms-server/src/main/resources/mapper/btivtcutpointivt/CuttingProcessService.xml similarity index 100% rename from nl-module-lms/nl-module-lms-server/src/main/resources/mapper/btivtcutpointivt/BtIvtCutpointivtMapper.xml rename to nl-module-lms/nl-module-lms-server/src/main/resources/mapper/btivtcutpointivt/CuttingProcessService.xml diff --git a/nl-module-lms/nl-module-lms-server/src/main/resources/mapper/ivtcutpointIvt/IvtCutpointivtMapper.xml b/nl-module-lms/nl-module-lms-server/src/main/resources/mapper/ivtcutpointIvt/CuttingProcessService.xml similarity index 100% rename from nl-module-lms/nl-module-lms-server/src/main/resources/mapper/ivtcutpointIvt/IvtCutpointivtMapper.xml rename to nl-module-lms/nl-module-lms-server/src/main/resources/mapper/ivtcutpointIvt/CuttingProcessService.xml diff --git a/nl-module-lms/nl-module-lms-server/src/main/resources/mapper/ivtshafttubeivt/IvtShafttubeivtMapper.xml b/nl-module-lms/nl-module-lms-server/src/main/resources/mapper/ivtshafttubeivt/CuttingProcessService.xml similarity index 100% rename from nl-module-lms/nl-module-lms-server/src/main/resources/mapper/ivtshafttubeivt/IvtShafttubeivtMapper.xml rename to nl-module-lms/nl-module-lms-server/src/main/resources/mapper/ivtshafttubeivt/CuttingProcessService.xml diff --git a/nl-module-lms/nl-module-lms-server/src/main/resources/mapper/rawfoilpointivt/RawFoilPointIVTMapper.xml b/nl-module-lms/nl-module-lms-server/src/main/resources/mapper/rawfoilpointivt/CuttingProcessService.xml similarity index 100% rename from nl-module-lms/nl-module-lms-server/src/main/resources/mapper/rawfoilpointivt/RawFoilPointIVTMapper.xml rename to nl-module-lms/nl-module-lms-server/src/main/resources/mapper/rawfoilpointivt/CuttingProcessService.xml diff --git a/nl-module-lms/nl-module-lms-server/src/main/resources/mapper/slittingproductionplan/SlittingproductionplanMapper.xml b/nl-module-lms/nl-module-lms-server/src/main/resources/mapper/slittingproductionplan/SlittingproductionplanMapper.xml new file mode 100644 index 00000000..e33869e5 --- /dev/null +++ b/nl-module-lms/nl-module-lms-server/src/main/resources/mapper/slittingproductionplan/SlittingproductionplanMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/nl-module-task/nl-module-task-api/src/main/java/cn/code/nl/module/task/enums/TaskTypeEnum.java b/nl-module-task/nl-module-task-api/src/main/java/cn/code/nl/module/task/enums/TaskTypeEnum.java index b861612a..7597890b 100644 --- a/nl-module-task/nl-module-task-api/src/main/java/cn/code/nl/module/task/enums/TaskTypeEnum.java +++ b/nl-module-task/nl-module-task-api/src/main/java/cn/code/nl/module/task/enums/TaskTypeEnum.java @@ -10,6 +10,7 @@ import lombok.Getter; public enum TaskTypeEnum { RAW_FOIL_STANDARD_TASK("010101","生箔标准任务"), + SLI_UP_QZZ_TASK("010101","分切送轴任务"), RAW_FOIL_INSTORAGE_TASK("010102","称重入库任务"); diff --git a/nl-module-wms/nl-module-wms-server/src/main/resources/mapper/bsrealstorattr/BtIvtCutpointivtMapper.xml b/nl-module-wms/nl-module-wms-server/src/main/resources/mapper/bsrealstorattr/CuttingProcessService.xml similarity index 100% rename from nl-module-wms/nl-module-wms-server/src/main/resources/mapper/bsrealstorattr/BtIvtCutpointivtMapper.xml rename to nl-module-wms/nl-module-wms-server/src/main/resources/mapper/bsrealstorattr/CuttingProcessService.xml diff --git a/nl-module-wms/nl-module-wms-server/src/main/resources/mapper/groupplate/GroupPlateMapper.xml b/nl-module-wms/nl-module-wms-server/src/main/resources/mapper/groupplate/CuttingProcessService.xml similarity index 100% rename from nl-module-wms/nl-module-wms-server/src/main/resources/mapper/groupplate/GroupPlateMapper.xml rename to nl-module-wms/nl-module-wms-server/src/main/resources/mapper/groupplate/CuttingProcessService.xml diff --git a/nl-module-wms/nl-module-wms-server/src/main/resources/mapper/iostorinv/IostorInvMapper.xml b/nl-module-wms/nl-module-wms-server/src/main/resources/mapper/iostorinv/CuttingProcessService.xml similarity index 100% rename from nl-module-wms/nl-module-wms-server/src/main/resources/mapper/iostorinv/IostorInvMapper.xml rename to nl-module-wms/nl-module-wms-server/src/main/resources/mapper/iostorinv/CuttingProcessService.xml diff --git a/nl-module-wms/nl-module-wms-server/src/main/resources/mapper/iostorinvdis/IostorinvDisMapper.xml b/nl-module-wms/nl-module-wms-server/src/main/resources/mapper/iostorinvdis/CuttingProcessService.xml similarity index 100% rename from nl-module-wms/nl-module-wms-server/src/main/resources/mapper/iostorinvdis/IostorinvDisMapper.xml rename to nl-module-wms/nl-module-wms-server/src/main/resources/mapper/iostorinvdis/CuttingProcessService.xml diff --git a/nl-module-wms/nl-module-wms-server/src/main/resources/mapper/iostorinvdtl/IostorinvDtlMapper.xml b/nl-module-wms/nl-module-wms-server/src/main/resources/mapper/iostorinvdtl/CuttingProcessService.xml similarity index 100% rename from nl-module-wms/nl-module-wms-server/src/main/resources/mapper/iostorinvdtl/IostorinvDtlMapper.xml rename to nl-module-wms/nl-module-wms-server/src/main/resources/mapper/iostorinvdtl/CuttingProcessService.xml diff --git a/nl-module-wms/nl-module-wms-server/src/main/resources/mapper/moveinvdtl/MoveInvDtlMapper.xml b/nl-module-wms/nl-module-wms-server/src/main/resources/mapper/moveinvdtl/CuttingProcessService.xml similarity index 100% rename from nl-module-wms/nl-module-wms-server/src/main/resources/mapper/moveinvdtl/MoveInvDtlMapper.xml rename to nl-module-wms/nl-module-wms-server/src/main/resources/mapper/moveinvdtl/CuttingProcessService.xml diff --git a/nl-module-wms/nl-module-wms-server/src/main/resources/mapper/sectattr/SectAttrMapper.xml b/nl-module-wms/nl-module-wms-server/src/main/resources/mapper/sectattr/CuttingProcessService.xml similarity index 100% rename from nl-module-wms/nl-module-wms-server/src/main/resources/mapper/sectattr/SectAttrMapper.xml rename to nl-module-wms/nl-module-wms-server/src/main/resources/mapper/sectattr/CuttingProcessService.xml diff --git a/nl-module-wms/nl-module-wms-server/src/main/resources/mapper/storagevehicleext/StorageVehicleExtMapper.xml b/nl-module-wms/nl-module-wms-server/src/main/resources/mapper/storagevehicleext/CuttingProcessService.xml similarity index 100% rename from nl-module-wms/nl-module-wms-server/src/main/resources/mapper/storagevehicleext/StorageVehicleExtMapper.xml rename to nl-module-wms/nl-module-wms-server/src/main/resources/mapper/storagevehicleext/CuttingProcessService.xml diff --git a/nl-module-wms/nl-module-wms-server/src/main/resources/mapper/storagevehicleinfo/StorageVehicleInfoMapper.xml b/nl-module-wms/nl-module-wms-server/src/main/resources/mapper/storagevehicleinfo/CuttingProcessService.xml similarity index 100% rename from nl-module-wms/nl-module-wms-server/src/main/resources/mapper/storagevehicleinfo/StorageVehicleInfoMapper.xml rename to nl-module-wms/nl-module-wms-server/src/main/resources/mapper/storagevehicleinfo/CuttingProcessService.xml diff --git a/nl-module-wms/nl-module-wms-server/src/main/resources/mapper/structAttr/StrucAttrMapper.xml b/nl-module-wms/nl-module-wms-server/src/main/resources/mapper/structAttr/CuttingProcessService.xml similarity index 100% rename from nl-module-wms/nl-module-wms-server/src/main/resources/mapper/structAttr/StrucAttrMapper.xml rename to nl-module-wms/nl-module-wms-server/src/main/resources/mapper/structAttr/CuttingProcessService.xml diff --git a/nl-module-wms/nl-module-wms-server/src/main/resources/mapper/warehousestrategy/WarehouseStrategyMapper.xml b/nl-module-wms/nl-module-wms-server/src/main/resources/mapper/warehousestrategy/CuttingProcessService.xml similarity index 100% rename from nl-module-wms/nl-module-wms-server/src/main/resources/mapper/warehousestrategy/WarehouseStrategyMapper.xml rename to nl-module-wms/nl-module-wms-server/src/main/resources/mapper/warehousestrategy/CuttingProcessService.xml diff --git a/nl-module-wms/nl-module-wms-server/src/main/resources/mapper/warehousestrategyconfig/WarehouseStrategyConfigMapper.xml b/nl-module-wms/nl-module-wms-server/src/main/resources/mapper/warehousestrategyconfig/CuttingProcessService.xml similarity index 100% rename from nl-module-wms/nl-module-wms-server/src/main/resources/mapper/warehousestrategyconfig/WarehouseStrategyConfigMapper.xml rename to nl-module-wms/nl-module-wms-server/src/main/resources/mapper/warehousestrategyconfig/CuttingProcessService.xml diff --git a/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/api/lms/slittingproductionplan/index.ts b/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/api/lms/slittingproductionplan/index.ts new file mode 100644 index 00000000..aefeea49 --- /dev/null +++ b/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/api/lms/slittingproductionplan/index.ts @@ -0,0 +1,94 @@ +import type { PageParam, PageResult } from '@vben/request'; +import type { Dayjs } from 'dayjs'; + +import { requestClient } from '#/api/request'; + +export namespace LmsSlittingproductionplanApi { + /** 分切生产计划信息 */ + export interface Slittingproductionplan { + orderType?: string; // 分切订单类型 + productName?: string; // 产品编码 + description: string; // 产品描述 + parentContainerName: string; // 来源母卷号 + packageBoxSn: string; // 子卷立库木箱号 + wareHouse: string; // 来源卷位置 + splitGroup?: string; // 分切组 + manufactureSort?: string; // 生产顺序 + mfgOrderName?: string; // 生产订单 + manufactureDate?: string; // 生产日期 + paperTubeOrFrp?: string; // 管件类型 + paperTubeMaterial: string; // 纸筒物料编码 + paperTubeDescription: string; // 纸筒物料描述 + paperTubeModel: string; // 纸筒规格 + frpMaterial: string; // FRP管物料编码 + frpDescription: string; // FRP管物料描述 + frpModel: string; // FRP管规格 + splitBreadth?: number; // 子卷幅宽 + splitHeight?: number; // 子卷理论长度 + splitWeight?: number; // 子卷理论重量 + startTime: string | Dayjs; // 开始时间 + endTime: string | Dayjs; // 结束时间 + status?: string; // 状态 + isParentOk?: string; // 上料完成 + isChildTzOk?: string; // 子卷套轴完成 + isChildPsOk?: string; // 子卷配送完成 + qzzno: string; // 气涨轴编码 + updateOptid: number; // 修改人 + sysdeptid: number; // 部门ID + syscompanyid: number; // 公司ID + saleOrderName?: string; // 销售订单及行号 + isCall?: string; // 是否呼叫 + callTime: string; // 呼叫时间 + isPaperOk: string; // 是否呼叫纸管 + qzzSize: string; // 气涨轴规格 + upOrDown: string; // 上下 + level: string; // 子卷等级 + weight: string; // 重量 + paperWeight: string; // 纸管重量 + productArea: string; // 生产区域 + } +} + +/** 查询分切生产计划分页 */ +export function getSlittingproductionplanPage(params: PageParam) { + return requestClient.get>( + '/lms/slittingproductionplan/page', + { params }, + ); +} + +/** 查询分切生产计划详情 */ +export function getSlittingproductionplan(id: number) { + return requestClient.get( + `/lms/slittingproductionplan/get?id=${id}`, + ); +} + +/** 新增分切生产计划 */ +export function createSlittingproductionplan(data: LmsSlittingproductionplanApi.Slittingproductionplan) { + return requestClient.post('/lms/slittingproductionplan/create', data); +} + +/** 修改分切生产计划 */ +export function updateSlittingproductionplan(data: LmsSlittingproductionplanApi.Slittingproductionplan) { + return requestClient.put('/lms/slittingproductionplan/update', data); +} + +/** 删除分切生产计划 */ +export function deleteSlittingproductionplan(id: number) { + return requestClient.delete(`/lms/slittingproductionplan/delete?id=${id}`); +} + +/** 批量删除分切生产计划 */ +export function deleteSlittingproductionplanList(ids: number[]) { + return requestClient.delete( + `/lms/slittingproductionplan/delete-list?ids=${ids.join(',')}`, + ); +} + +/** 导出分切生产计划 */ +export function exportSlittingproductionplan(params: any) { + return requestClient.download('/lms/slittingproductionplan/export-excel', { params }); +} + + \ No newline at end of file diff --git a/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/lms/slittingproductionplan/data.ts b/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/lms/slittingproductionplan/data.ts new file mode 100644 index 00000000..47996479 --- /dev/null +++ b/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/lms/slittingproductionplan/data.ts @@ -0,0 +1,652 @@ +import type { VbenFormSchema } from '#/adapter/form'; +import type { VxeTableGridOptions } from '#/adapter/vxe-table'; +import type { LmsSlittingproductionplanApi } from '#/api/lms/slittingproductionplan'; + +import { getDictOptions } from '@vben/hooks'; + +import { getRangePickerDefaultProps } from '#/utils'; + +/** 新增/修改的表单 */ +export function useFormSchema(): VbenFormSchema[] { + return [ + { + fieldName: 'id', + component: 'Input', + dependencies: { + triggerFields: [''], + show: () => false, + }, + }, + { + fieldName: 'orderType', + label: '分切订单类型', + rules: 'required', + component: 'Select', + componentProps: { + options: [], + placeholder: '请选择分切订单类型', + }, + }, + { + fieldName: 'productName', + label: '产品编码', + rules: 'required', + component: 'Input', + componentProps: { + placeholder: '请输入产品编码', + }, + }, + { + fieldName: 'description', + label: '产品描述', + component: 'RichTextarea', + }, + { + fieldName: 'parentContainerName', + label: '来源母卷号', + component: 'Input', + componentProps: { + placeholder: '请输入来源母卷号', + }, + }, + { + fieldName: 'packageBoxSn', + label: '子卷立库木箱号', + component: 'Input', + componentProps: { + placeholder: '请输入子卷立库木箱号', + }, + }, + { + fieldName: 'wareHouse', + label: '来源卷位置', + component: 'Input', + componentProps: { + placeholder: '请输入来源卷位置', + }, + }, + { + fieldName: 'splitGroup', + label: '分切组', + rules: 'required', + component: 'Input', + componentProps: { + placeholder: '请输入分切组', + }, + }, + { + fieldName: 'manufactureSort', + label: '生产顺序', + rules: 'required', + component: 'Input', + componentProps: { + placeholder: '请输入生产顺序', + }, + }, + { + fieldName: 'mfgOrderName', + label: '生产订单', + rules: 'required', + component: 'Input', + componentProps: { + placeholder: '请输入生产订单', + }, + }, + { + fieldName: 'manufactureDate', + label: '生产日期', + rules: 'required', + component: 'DatePicker', + componentProps: { + showTime: true, + format: 'YYYY-MM-DD HH:mm:ss', + valueFormat: 'x', + }, + }, + { + fieldName: 'paperTubeOrFrp', + label: '管件类型', + rules: 'required', + component: 'Input', + componentProps: { + placeholder: '请输入管件类型', + }, + }, + { + fieldName: 'paperTubeMaterial', + label: '纸筒物料编码', + component: 'Input', + componentProps: { + placeholder: '请输入纸筒物料编码', + }, + }, + { + fieldName: 'paperTubeDescription', + label: '纸筒物料描述', + component: 'RichTextarea', + }, + { + fieldName: 'paperTubeModel', + label: '纸筒规格', + component: 'Input', + componentProps: { + placeholder: '请输入纸筒规格', + }, + }, + { + fieldName: 'frpMaterial', + label: 'FRP管物料编码', + component: 'Input', + componentProps: { + placeholder: '请输入FRP管物料编码', + }, + }, + { + fieldName: 'frpDescription', + label: 'FRP管物料描述', + component: 'RichTextarea', + }, + { + fieldName: 'frpModel', + label: 'FRP管规格', + component: 'Input', + componentProps: { + placeholder: '请输入FRP管规格', + }, + }, + { + fieldName: 'splitBreadth', + label: '子卷幅宽', + rules: 'required', + component: 'Input', + componentProps: { + placeholder: '请输入子卷幅宽', + }, + }, + { + fieldName: 'splitHeight', + label: '子卷理论长度', + rules: 'required', + component: 'Input', + componentProps: { + placeholder: '请输入子卷理论长度', + }, + }, + { + fieldName: 'splitWeight', + label: '子卷理论重量', + rules: 'required', + component: 'Input', + componentProps: { + placeholder: '请输入子卷理论重量', + }, + }, + { + fieldName: 'startTime', + label: '开始时间', + component: 'DatePicker', + componentProps: { + showTime: true, + format: 'YYYY-MM-DD HH:mm:ss', + valueFormat: 'x', + }, + }, + { + fieldName: 'endTime', + label: '结束时间', + component: 'DatePicker', + componentProps: { + showTime: true, + format: 'YYYY-MM-DD HH:mm:ss', + valueFormat: 'x', + }, + }, + { + fieldName: 'status', + label: '状态', + rules: 'required', + component: 'RadioGroup', + componentProps: { + options: [], + buttonStyle: 'solid', + optionType: 'button', + }, + }, + { + fieldName: 'isParentOk', + label: '上料完成', + rules: 'required', + component: 'Input', + componentProps: { + placeholder: '请输入上料完成', + }, + }, + { + fieldName: 'isChildTzOk', + label: '子卷套轴完成', + rules: 'required', + component: 'Input', + componentProps: { + placeholder: '请输入子卷套轴完成', + }, + }, + { + fieldName: 'isChildPsOk', + label: '子卷配送完成', + rules: 'required', + component: 'Input', + componentProps: { + placeholder: '请输入子卷配送完成', + }, + }, + { + fieldName: 'qzzno', + label: '气涨轴编码', + component: 'Input', + componentProps: { + placeholder: '请输入气涨轴编码', + }, + }, + { + fieldName: 'updateOptid', + label: '修改人', + component: 'Input', + componentProps: { + placeholder: '请输入修改人', + }, + }, + { + fieldName: 'sysdeptid', + label: '部门ID', + component: 'Input', + componentProps: { + placeholder: '请输入部门ID', + }, + }, + { + fieldName: 'syscompanyid', + label: '公司ID', + component: 'Input', + componentProps: { + placeholder: '请输入公司ID', + }, + }, + { + fieldName: 'saleOrderName', + label: '销售订单及行号', + rules: 'required', + component: 'Input', + componentProps: { + placeholder: '请输入销售订单及行号', + }, + }, + { + fieldName: 'isCall', + label: '是否呼叫', + rules: 'required', + component: 'Input', + componentProps: { + placeholder: '请输入是否呼叫', + }, + }, + { + fieldName: 'callTime', + label: '呼叫时间', + component: 'DatePicker', + componentProps: { + showTime: true, + format: 'YYYY-MM-DD HH:mm:ss', + valueFormat: 'x', + }, + }, + { + fieldName: 'isPaperOk', + label: '是否呼叫纸管', + component: 'Input', + componentProps: { + placeholder: '请输入是否呼叫纸管', + }, + }, + { + fieldName: 'qzzSize', + label: '气涨轴规格', + component: 'Input', + componentProps: { + placeholder: '请输入气涨轴规格', + }, + }, + { + fieldName: 'upOrDown', + label: '上下', + component: 'Input', + componentProps: { + placeholder: '请输入上下', + }, + }, + { + fieldName: 'level', + label: '子卷等级', + component: 'Input', + componentProps: { + placeholder: '请输入子卷等级', + }, + }, + { + fieldName: 'weight', + label: '重量', + component: 'Input', + componentProps: { + placeholder: '请输入重量', + }, + }, + { + fieldName: 'paperWeight', + label: '纸管重量', + component: 'Input', + componentProps: { + placeholder: '请输入纸管重量', + }, + }, + { + fieldName: 'productArea', + label: '生产区域', + component: 'Input', + componentProps: { + placeholder: '请输入生产区域', + }, + }, + ]; +} + +/** 列表的搜索表单 */ +export function useGridFormSchema(): VbenFormSchema[] { + return [ + { + fieldName: 'orderType', + label: '分切订单类型', + component: 'Select', + componentProps: { + allowClear: true, + options: [], + placeholder: '请选择分切订单类型', + }, + }, + { + fieldName: 'parentContainerName', + label: '来源母卷号', + component: 'Input', + componentProps: { + allowClear: true, + placeholder: '请输入来源母卷号', + }, + }, + { + fieldName: 'manufactureDate', + label: '生产日期', + component: 'RangePicker', + componentProps: { + ...getRangePickerDefaultProps(), + allowClear: true, + }, + }, + { + fieldName: 'startTime', + label: '开始时间', + component: 'RangePicker', + componentProps: { + ...getRangePickerDefaultProps(), + allowClear: true, + }, + }, + { + fieldName: 'endTime', + label: '结束时间', + component: 'RangePicker', + componentProps: { + ...getRangePickerDefaultProps(), + allowClear: true, + }, + }, + { + fieldName: 'status', + label: '状态', + component: 'Select', + componentProps: { + allowClear: true, + options: [], + placeholder: '请选择状态', + }, + }, + { + fieldName: 'qzzSize', + label: '气涨轴规格', + component: 'Input', + componentProps: { + allowClear: true, + placeholder: '请输入气涨轴规格', + }, + }, + ]; +} + +/** 列表的字段 */ +export function useGridColumns(): VxeTableGridOptions['columns'] { + return [ + { type: 'checkbox', width: 40 }, + { + field: 'orderType', + title: '分切订单类型', + minWidth: 120, + }, + { + field: 'productName', + title: '产品编码', + minWidth: 120, + }, + { + field: 'description', + title: '产品描述', + minWidth: 120, + }, + { + field: 'parentContainerName', + title: '来源母卷号', + minWidth: 120, + }, + { + field: 'packageBoxSn', + title: '子卷立库木箱号', + minWidth: 120, + }, + { + field: 'wareHouse', + title: '来源卷位置', + minWidth: 120, + }, + { + field: 'splitGroup', + title: '分切组', + minWidth: 120, + }, + { + field: 'manufactureSort', + title: '生产顺序', + minWidth: 120, + }, + { + field: 'mfgOrderName', + title: '生产订单', + minWidth: 120, + }, + { + field: 'manufactureDate', + title: '生产日期', + minWidth: 120, + }, + { + field: 'paperTubeOrFrp', + title: '管件类型', + minWidth: 120, + }, + { + field: 'paperTubeMaterial', + title: '纸筒物料编码', + minWidth: 120, + }, + { + field: 'paperTubeDescription', + title: '纸筒物料描述', + minWidth: 120, + }, + { + field: 'paperTubeModel', + title: '纸筒规格', + minWidth: 120, + }, + { + field: 'frpMaterial', + title: 'FRP管物料编码', + minWidth: 120, + }, + { + field: 'frpDescription', + title: 'FRP管物料描述', + minWidth: 120, + }, + { + field: 'frpModel', + title: 'FRP管规格', + minWidth: 120, + }, + { + field: 'splitBreadth', + title: '子卷幅宽', + minWidth: 120, + }, + { + field: 'splitHeight', + title: '子卷理论长度', + minWidth: 120, + }, + { + field: 'splitWeight', + title: '子卷理论重量', + minWidth: 120, + }, + { + field: 'startTime', + title: '开始时间', + minWidth: 120, + formatter: 'formatDateTime', + }, + { + field: 'endTime', + title: '结束时间', + minWidth: 120, + formatter: 'formatDateTime', + }, + { + field: 'status', + title: '状态', + minWidth: 120, + }, + { + field: 'isParentOk', + title: '上料完成', + minWidth: 120, + }, + { + field: 'isChildTzOk', + title: '子卷套轴完成', + minWidth: 120, + }, + { + field: 'isChildPsOk', + title: '子卷配送完成', + minWidth: 120, + }, + { + field: 'qzzno', + title: '气涨轴编码', + minWidth: 120, + }, + { + field: 'updateOptid', + title: '修改人', + minWidth: 120, + }, + { + field: 'sysdeptid', + title: '部门ID', + minWidth: 120, + }, + { + field: 'syscompanyid', + title: '公司ID', + minWidth: 120, + }, + { + field: 'saleOrderName', + title: '销售订单及行号', + minWidth: 120, + }, + { + field: 'isCall', + title: '是否呼叫', + minWidth: 120, + }, + { + field: 'callTime', + title: '呼叫时间', + minWidth: 120, + }, + { + field: 'isPaperOk', + title: '是否呼叫纸管', + minWidth: 120, + }, + { + field: 'qzzSize', + title: '气涨轴规格', + minWidth: 120, + }, + { + field: 'upOrDown', + title: '上下', + minWidth: 120, + }, + { + field: 'level', + title: '子卷等级', + minWidth: 120, + }, + { + field: 'weight', + title: '重量', + minWidth: 120, + }, + { + field: 'paperWeight', + title: '纸管重量', + minWidth: 120, + }, + { + field: 'productArea', + title: '生产区域', + minWidth: 120, + }, + { + field: 'createTime', + title: '创建时间', + minWidth: 120, + formatter: 'formatDateTime', + }, + { + title: '操作', + width: 200, + fixed: 'right', + slots: { default: 'actions' }, + }, + ]; +} + \ No newline at end of file diff --git a/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/lms/slittingproductionplan/index.vue b/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/lms/slittingproductionplan/index.vue new file mode 100644 index 00000000..84999d3a --- /dev/null +++ b/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/lms/slittingproductionplan/index.vue @@ -0,0 +1,186 @@ + + + \ No newline at end of file diff --git a/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/lms/slittingproductionplan/modules/form.vue b/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/lms/slittingproductionplan/modules/form.vue new file mode 100644 index 00000000..bcf5dc3f --- /dev/null +++ b/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/lms/slittingproductionplan/modules/form.vue @@ -0,0 +1,82 @@ + + + \ No newline at end of file