diff --git a/mes-framework/mes-common/src/main/java/com/chanko/yunxi/mes/framework/common/exception/enums/GlobalErrorCodeConstants.java b/mes-framework/mes-common/src/main/java/com/chanko/yunxi/mes/framework/common/exception/enums/GlobalErrorCodeConstants.java index 030464c5..77e2ac09 100644 --- a/mes-framework/mes-common/src/main/java/com/chanko/yunxi/mes/framework/common/exception/enums/GlobalErrorCodeConstants.java +++ b/mes-framework/mes-common/src/main/java/com/chanko/yunxi/mes/framework/common/exception/enums/GlobalErrorCodeConstants.java @@ -23,9 +23,9 @@ public interface GlobalErrorCodeConstants { ErrorCode FORBIDDEN = new ErrorCode(403, "没有该操作权限"); ErrorCode NOT_FOUND = new ErrorCode(404, "请求未找到"); ErrorCode METHOD_NOT_ALLOWED = new ErrorCode(405, "请求方法不正确"); + ErrorCode REPEAT_DATA = new ErrorCode(406, "数据重复"); ErrorCode LOCKED = new ErrorCode(423, "请求失败,请稍后重试"); // 并发请求,不允许 ErrorCode TOO_MANY_REQUESTS = new ErrorCode(429, "请求过于频繁,请稍后重试"); - // ========== 服务端错误段 ========== ErrorCode INTERNAL_SERVER_ERROR = new ErrorCode(500, "系统异常"); diff --git a/mes-framework/mes-spring-boot-starter-banner/src/main/resources/banner.txt b/mes-framework/mes-spring-boot-starter-banner/src/main/resources/banner.txt index bd231a86..f797d735 100644 --- a/mes-framework/mes-spring-boot-starter-banner/src/main/resources/banner.txt +++ b/mes-framework/mes-spring-boot-starter-banner/src/main/resources/banner.txt @@ -1,4 +1,4 @@ -芋道源码 http://www.iocoder.cn +上海长江云息数字科技有限公司 Application Version: ${mes.info.version} Spring Boot Version: ${spring-boot.version} diff --git a/mes-framework/mes-spring-boot-starter-web/pom.xml b/mes-framework/mes-spring-boot-starter-web/pom.xml index 171dc70f..d9ada496 100644 --- a/mes-framework/mes-spring-boot-starter-web/pom.xml +++ b/mes-framework/mes-spring-boot-starter-web/pom.xml @@ -61,6 +61,11 @@ jsoup + + org.springframework + spring-tx + + diff --git a/mes-framework/mes-spring-boot-starter-web/src/main/java/com/chanko/yunxi/mes/framework/web/core/handler/GlobalExceptionHandler.java b/mes-framework/mes-spring-boot-starter-web/src/main/java/com/chanko/yunxi/mes/framework/web/core/handler/GlobalExceptionHandler.java index 4d50a889..c5ab28e6 100644 --- a/mes-framework/mes-spring-boot-starter-web/src/main/java/com/chanko/yunxi/mes/framework/web/core/handler/GlobalExceptionHandler.java +++ b/mes-framework/mes-spring-boot-starter-web/src/main/java/com/chanko/yunxi/mes/framework/web/core/handler/GlobalExceptionHandler.java @@ -25,6 +25,7 @@ import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RestControllerAdvice; import org.springframework.web.method.annotation.MethodArgumentTypeMismatchException; import org.springframework.web.servlet.NoHandlerFoundException; +import org.springframework.dao.DuplicateKeyException; import javax.servlet.http.HttpServletRequest; import javax.validation.ConstraintViolation; @@ -227,6 +228,11 @@ public class GlobalExceptionHandler { return requestNotPermittedExceptionHandler(req, ex); } + // 处理表数据相关异常 + if (ex instanceof DuplicateKeyException){ + return CommonResult.error(REPEAT_DATA); + } + // 情况三:处理异常 log.error("[defaultExceptionHandler]", ex); // 插入异常日志 diff --git a/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/CodeEnum.java b/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/CodeEnum.java index ffb1b6fb..54355069 100644 --- a/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/CodeEnum.java +++ b/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/CodeEnum.java @@ -40,7 +40,7 @@ public enum CodeEnum { WAREHOUSE("仓库", "Wa", 4), STOCK_IN("入库单", "WI", 4, "yyyyMMdd"), STOCK_OUT("出库单", "WO", 4, "yyyyMMdd"), - STOCK_CHECK("盘点单据", "WC", 4, "yyyyMMdd"), + STOCK_CHECK("盘点单据", "WC", 3, "yyyyMM"), PROJECT_ORDER("业务订单", 3, "yyyyMM"), PROJECT_DELIVERY_ORDER("发货单", "HL", 3, "yyyyMM"), ; diff --git a/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/DeliverSubCategoryEnum.java b/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/DeliverSubCategoryEnum.java new file mode 100644 index 00000000..e94a48dd --- /dev/null +++ b/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/DeliverSubCategoryEnum.java @@ -0,0 +1,21 @@ +package com.chanko.yunxi.mes.module.heli.enums; + +import lombok.Getter; + +/** + * 项目订单状态枚举 + * @author chenxi + * @date 2024-01-18 01:19 + */ +@Getter +public enum DeliverSubCategoryEnum { + DELIVER_LIST("发货清单"), + OTHER_LIST("其他清单") + ; + + private String description; + + DeliverSubCategoryEnum(String description) { + this.description = description; + } +} diff --git a/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/ErrorCodeConstants.java b/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/ErrorCodeConstants.java index 93254126..fdd9b8a0 100644 --- a/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/ErrorCodeConstants.java +++ b/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/ErrorCodeConstants.java @@ -16,6 +16,7 @@ import com.chanko.yunxi.mes.framework.common.exception.ErrorCode; * 003 库存管理 * 004 订单管理 * 005 发货管理 + * 006 工艺设计 * 第三段,3 位,错误码 */ public interface ErrorCodeConstants { @@ -31,6 +32,7 @@ public interface ErrorCodeConstants { ErrorCode SUPPLIER_NOT_EXISTS = new ErrorCode(1_001_005, "供应商不存在"); ErrorCode PROCEDURE_NOT_EXISTS = new ErrorCode(1_001_006, "工序不存在"); ErrorCode SERIAL_NUMBER_NOT_EXISTS = new ErrorCode(1_001_007, "序列号记录不存在"); + ErrorCode EQUIP_NOT_EXISTS = new ErrorCode(1_001_008, "设备信息不存在"); /*********组织架构************/ ErrorCode WORKSHOP_NOT_EXISTS = new ErrorCode(1_002_001, "车间不存在"); @@ -49,8 +51,10 @@ public interface ErrorCodeConstants { /************订单管理***********/ ErrorCode PROJECT_ORDER_NOT_EXISTS = new ErrorCode(1_004_001, "项目订单不存在"); - /************发货管理***********/ ErrorCode DELIVER_ORDER_NOT_EXISTS = new ErrorCode(1_005_001, "发货订单不存在"); - + ErrorCode RELATION_PROJECT_ORDER_HAS_DONE = new ErrorCode(1_005_002, "关联项目订单已经发货完成"); + ErrorCode DELIVER_AMOUNT_OVERFLOW = new ErrorCode(1_005_003, "超额发货"); + /************工艺设计***********/ + ErrorCode PROCESS_DESIGN_NOT_EXISTS = new ErrorCode(1_006_001, "工艺设计不存在"); } diff --git a/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/MaterialTypeEnum.java b/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/MaterialTypeEnum.java new file mode 100644 index 00000000..da6d0eff --- /dev/null +++ b/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/MaterialTypeEnum.java @@ -0,0 +1,27 @@ +package com.chanko.yunxi.mes.module.heli.enums; + +import lombok.Getter; + +/** + * 物料类型 + * @author chenxi + * @date 2024-02-01 04:42 + */ +@Getter +public enum MaterialTypeEnum { + + RAW("1", "原材料"), + ACCESSORY("2", "副资材"), + OFFICE("3", "办公/劳保"), + GIVING("4", "赠送物品"), + STANDARD("5", "标准件"), + VIRTUAL("6", "虚拟物料"); + + private String code; + private String description; + + MaterialTypeEnum(String code, String description) { + this.code = code; + this.description = description; + } +} diff --git a/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/ProjectOrderDeliverStatusEnum.java b/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/ProjectOrderDeliverStatusEnum.java new file mode 100644 index 00000000..4609f4ff --- /dev/null +++ b/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/ProjectOrderDeliverStatusEnum.java @@ -0,0 +1,24 @@ +package com.chanko.yunxi.mes.module.heli.enums; + +import lombok.Getter; + +/** + * 项目订单状态枚举 + * @author chenxi + * @date 2024-01-18 01:19 + */ +@Getter +public enum ProjectOrderDeliverStatusEnum { + NOT(1, "未发货"), + PART(2, "部分发货"), + ALL(3, "全部发货") + ; + + private int code; + private String description; + + ProjectOrderDeliverStatusEnum(int code, String description) { + this.code = code; + this.description = description; + } +} diff --git a/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/StockOutTypeEnum.java b/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/StockOutTypeEnum.java new file mode 100644 index 00000000..dce68a03 --- /dev/null +++ b/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/StockOutTypeEnum.java @@ -0,0 +1,25 @@ +package com.chanko.yunxi.mes.module.heli.enums; + +import lombok.Getter; + +/** + * 出库类型 + * @author chenxi + * @date 2024-02-01 02:31 + */ +@Getter +public enum StockOutTypeEnum { + + RECEIVE(1, "领料出库"), + SALE(2, "销售出库"), + LOSS(3, "盘亏出库"), + OTHER(4, "其他出库"); + + private int code; + private String description; + + StockOutTypeEnum(int code, String description) { + this.code = code; + this.description = description; + } +} diff --git a/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/StockTypeEnum.java b/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/StockTypeEnum.java new file mode 100644 index 00000000..e682923a --- /dev/null +++ b/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/StockTypeEnum.java @@ -0,0 +1,23 @@ +package com.chanko.yunxi.mes.module.heli.enums; + +import lombok.Getter; + +/** + * 库表类型 + * @author chenxi + * @date 2024-02-01 02:28 + */ +@Getter +public enum StockTypeEnum { + + IN(1, "入库"), + OUT(2, "出库"); + + private int code; + private String description; + + StockTypeEnum(int code, String description) { + this.code = code; + this.description = description; + } +} diff --git a/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/StorageStatusEnum.java b/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/StorageStatusEnum.java new file mode 100644 index 00000000..20bc10bc --- /dev/null +++ b/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/StorageStatusEnum.java @@ -0,0 +1,19 @@ +package com.chanko.yunxi.mes.module.heli.enums; + +import lombok.Getter; + +@Getter +public enum StorageStatusEnum { + + SAVE(1, "保存"), + SUBMIT(2, "提交"), + INVALID(3, "作废"); + + private int code; + private String description; + + StorageStatusEnum(int code, String description) { + this.code = code; + this.description = description; + } +} diff --git a/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/YesOrNoEnum.java b/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/YesOrNoEnum.java index e1e6de4e..9f00e404 100644 --- a/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/YesOrNoEnum.java +++ b/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/YesOrNoEnum.java @@ -10,7 +10,7 @@ import lombok.Getter; @Getter public enum YesOrNoEnum { - YES(1), NO(0); + Y(1), N(0); private int code; diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/deliverorder/DeliverOrderController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/deliverorder/DeliverOrderController.java index f25df945..d2946d85 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/deliverorder/DeliverOrderController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/deliverorder/DeliverOrderController.java @@ -33,7 +33,7 @@ import static com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEn import com.chanko.yunxi.mes.module.heli.controller.admin.deliverorder.vo.*; import com.chanko.yunxi.mes.module.heli.dal.dataobject.deliverorder.DeliverOrderDO; -import com.chanko.yunxi.mes.module.heli.dal.dataobject.deliverordersub.DeliverOrderSubDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.deliverorder.DeliverOrderSubDO; import com.chanko.yunxi.mes.module.heli.service.deliverorder.DeliverOrderService; @Tag(name = "管理后台 - 发货订单") diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/deliverorder/vo/DeliverOrderPageReqVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/deliverorder/vo/DeliverOrderPageReqVO.java index 65a1c2ca..af16e7b9 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/deliverorder/vo/DeliverOrderPageReqVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/deliverorder/vo/DeliverOrderPageReqVO.java @@ -80,7 +80,7 @@ public class DeliverOrderPageReqVO extends PageParam { @Schema(description = "收货详细地址") private String receiveAddress; - @Schema(description = "模具名称") - private String mouldName; + @Schema(description = "项目名称") + private String projectName; } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/deliverorder/vo/DeliverOrderRespVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/deliverorder/vo/DeliverOrderRespVO.java index e38c4f23..059593c0 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/deliverorder/vo/DeliverOrderRespVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/deliverorder/vo/DeliverOrderRespVO.java @@ -1,15 +1,13 @@ package com.chanko.yunxi.mes.module.heli.controller.admin.deliverorder.vo; -import com.baomidou.mybatisplus.annotation.TableField; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import java.util.*; -import org.springframework.format.annotation.DateTimeFormat; -import java.time.LocalDateTime; -import com.alibaba.excel.annotation.*; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; import com.chanko.yunxi.mes.framework.excel.core.annotations.DictFormat; import com.chanko.yunxi.mes.framework.excel.core.convert.DictConvert; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; @Schema(description = "管理后台 - 发货订单 Response VO") @Data @@ -106,9 +104,9 @@ public class DeliverOrderRespVO { @ExcelProperty("合同号") private String contractNo; - @Schema(description = "模具名称") - @ExcelProperty("模具名称") - private String mouldName; + @Schema(description = "项目名称") + @ExcelProperty("项目名称") + private String projectName; @Schema(description = "性质") @ExcelProperty("性质") @@ -118,4 +116,16 @@ public class DeliverOrderRespVO { @ExcelProperty("客户名称") private String customerName; + @Schema(description = "发货人姓名") + @ExcelProperty("发货人姓名") + private String deliverPersonName; + + @Schema(description = "制单人姓名") + @ExcelProperty("制单人姓名") + private String creatorName; + + @Schema(description = "业务员姓名") + @ExcelProperty("业务员姓名") + private String businessManName; + } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/deliverorder/vo/DeliverOrderSaveReqVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/deliverorder/vo/DeliverOrderSaveReqVO.java index 6db72db3..eee61882 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/deliverorder/vo/DeliverOrderSaveReqVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/deliverorder/vo/DeliverOrderSaveReqVO.java @@ -1,13 +1,15 @@ package com.chanko.yunxi.mes.module.heli.controller.admin.deliverorder.vo; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.deliverorder.DeliverOrderSubDO; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import javax.validation.constraints.*; -import java.util.*; -import org.springframework.format.annotation.DateTimeFormat; +import lombok.Data; + +import javax.validation.Valid; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; import java.time.LocalDateTime; -import com.chanko.yunxi.mes.module.heli.dal.dataobject.deliverordersub.DeliverOrderSubDO; +import java.util.List; @Schema(description = "管理后台 - 发货订单新增/修改 Request VO") @Data @@ -44,7 +46,6 @@ public class DeliverOrderSaveReqVO { private String deliverPersonMobile; @Schema(description = "发货方式", requiredMode = Schema.RequiredMode.REQUIRED) - @NotEmpty(message = "发货方式不能为空") private String deliverMode; @Schema(description = "收货人电话", requiredMode = Schema.RequiredMode.REQUIRED) @@ -85,7 +86,11 @@ public class DeliverOrderSaveReqVO { @Schema(description = "操作意见") private String activeOpinion; + @Valid @Schema(description = "发货订单子项列表") private List deliverOrderSubs; + @Valid + @Schema(description = "发货订单子项列表") + private List deliverOrderOtherSubs; } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/equip/EquipController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/equip/EquipController.java new file mode 100644 index 00000000..9cfdcd19 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/equip/EquipController.java @@ -0,0 +1,95 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.equip; + +import org.springframework.web.bind.annotation.*; +import javax.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 javax.validation.constraints.*; +import javax.validation.*; +import javax.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.common.pojo.CommonResult; +import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; +import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success; + +import com.chanko.yunxi.mes.framework.excel.core.util.ExcelUtils; + +import com.chanko.yunxi.mes.framework.operatelog.core.annotations.OperateLog; +import static com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum.*; + +import com.chanko.yunxi.mes.module.heli.controller.admin.equip.vo.*; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.equip.EquipDO; +import com.chanko.yunxi.mes.module.heli.service.equip.EquipService; + +@Tag(name = "管理后台 - 设备信息") +@RestController +@RequestMapping("/heli/equip") +@Validated +public class EquipController { + + @Resource + private EquipService equipService; + + @PostMapping("/create") + @Operation(summary = "创建设备信息") + @PreAuthorize("@ss.hasPermission('heli:equip:create')") + public CommonResult createEquip(@Valid @RequestBody EquipSaveReqVO createReqVO) { + return success(equipService.createEquip(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新设备信息") + @PreAuthorize("@ss.hasPermission('heli:equip:update')") + public CommonResult updateEquip(@Valid @RequestBody EquipSaveReqVO updateReqVO) { + equipService.updateEquip(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除设备信息") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('heli:equip:delete')") + public CommonResult deleteEquip(@RequestParam("id") Long id) { + equipService.deleteEquip(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得设备信息") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('heli:equip:query')") + public CommonResult getEquip(@RequestParam("id") Long id) { + EquipDO equip = equipService.getEquip(id); + return success(BeanUtils.toBean(equip, EquipRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得设备信息分页") + @PreAuthorize("@ss.hasPermission('heli:equip:query')") + public CommonResult> getEquipPage(@Valid EquipPageReqVO pageReqVO) { + PageResult pageResult = equipService.getEquipPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, EquipRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出设备信息 Excel") + @PreAuthorize("@ss.hasPermission('heli:equip:export')") + @OperateLog(type = EXPORT) + public void exportEquipExcel(@Valid EquipPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = equipService.getEquipPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "设备信息.xls", "数据", EquipRespVO.class, + BeanUtils.toBean(list, EquipRespVO.class)); + } + +} \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/equip/vo/EquipPageReqVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/equip/vo/EquipPageReqVO.java new file mode 100644 index 00000000..319f002e --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/equip/vo/EquipPageReqVO.java @@ -0,0 +1,50 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.equip.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static com.chanko.yunxi.mes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 设备信息分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class EquipPageReqVO extends PageParam { + + @Schema(description = "自增字段,唯一") + private Long id; + + @Schema(description = "设备名称 唯一") + private String name; + + @Schema(description = "模具类型id,对应 base_mould_type 表中的id") + private Long mouldTypeId; + + @Schema(description = "状态,1表示正常,2表示禁用,默认是1") + private Integer status; + + @Schema(description = "创建者") + private String creator; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + + @Schema(description = "更新者") + private String updater; + + @Schema(description = "更新时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] updateTime; + + @Schema(description = "是否删除") + private Boolean deleted; + + @Schema(description = "租户编号") + private Long tenantId; + +} \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/equip/vo/EquipRespVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/equip/vo/EquipRespVO.java new file mode 100644 index 00000000..66ea928f --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/equip/vo/EquipRespVO.java @@ -0,0 +1,30 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.equip.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.util.*; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 设备信息 Response VO") +@Data +@ExcelIgnoreUnannotated +public class EquipRespVO { + + @Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("自增字段,唯一") + private Long id; + + @Schema(description = "设备名称 唯一", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("设备名称 唯一") + private String name; + + @Schema(description = "模具类型id,对应 base_mould_type 表中的id", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("模具类型id,对应 base_mould_type 表中的id") + private Long mouldTypeId; + + @Schema(description = "状态,1表示正常,2表示禁用,默认是1") + @ExcelProperty("状态,1表示正常,2表示禁用,默认是1") + private Integer status; + +} \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/equip/vo/EquipSaveReqVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/equip/vo/EquipSaveReqVO.java new file mode 100644 index 00000000..cbbced14 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/equip/vo/EquipSaveReqVO.java @@ -0,0 +1,27 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.equip.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; +import java.util.*; + +@Schema(description = "管理后台 - 设备信息新增/修改 Request VO") +@Data +public class EquipSaveReqVO { + + @Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED) + private Long id; + + @Schema(description = "设备名称 唯一", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "设备名称 唯一不能为空") + private String name; + + @Schema(description = "模具类型id,对应 base_mould_type 表中的id", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "模具类型id,对应 base_mould_type 表中的id不能为空") + private Long mouldTypeId; + + @Schema(description = "状态,1表示正常,2表示禁用,默认是1") + private Integer status; + +} \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/material/MaterialController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/material/MaterialController.java index 6e95ff00..a8cb3b64 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/material/MaterialController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/material/MaterialController.java @@ -1,95 +1,110 @@ -package com.chanko.yunxi.mes.module.heli.controller.admin.material; - -import org.springframework.web.bind.annotation.*; -import javax.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 javax.validation.constraints.*; -import javax.validation.*; -import javax.servlet.http.*; -import java.util.*; -import java.io.IOException; - -import com.chanko.yunxi.mes.framework.common.pojo.PageParam; -import com.chanko.yunxi.mes.framework.common.pojo.PageResult; -import com.chanko.yunxi.mes.framework.common.pojo.CommonResult; -import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; -import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success; - -import com.chanko.yunxi.mes.framework.excel.core.util.ExcelUtils; - -import com.chanko.yunxi.mes.framework.operatelog.core.annotations.OperateLog; -import static com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum.*; - -import com.chanko.yunxi.mes.module.heli.controller.admin.material.vo.*; -import com.chanko.yunxi.mes.module.heli.dal.dataobject.material.MaterialDO; -import com.chanko.yunxi.mes.module.heli.service.material.MaterialService; - -@Tag(name = "管理后台 - 物料") -@RestController -@RequestMapping("/heli/material") -@Validated -public class MaterialController { - - @Resource - private MaterialService materialService; - - @PostMapping("/create") - @Operation(summary = "创建物料") - @PreAuthorize("@ss.hasPermission('heli:material:create')") - public CommonResult createMaterial(@Valid @RequestBody MaterialSaveReqVO createReqVO) { - return success(materialService.createMaterial(createReqVO)); - } - - @PutMapping("/update") - @Operation(summary = "更新物料") - @PreAuthorize("@ss.hasPermission('heli:material:update')") - public CommonResult updateMaterial(@Valid @RequestBody MaterialSaveReqVO updateReqVO) { - materialService.updateMaterial(updateReqVO); - return success(true); - } - - @DeleteMapping("/delete") - @Operation(summary = "删除物料") - @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('heli:material:delete')") - public CommonResult deleteMaterial(@RequestParam("id") Long id) { - materialService.deleteMaterial(id); - return success(true); - } - - @GetMapping("/get") - @Operation(summary = "获得物料") - @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('heli:material:query')") - public CommonResult getMaterial(@RequestParam("id") Long id) { - MaterialDO material = materialService.getMaterial(id); - return success(BeanUtils.toBean(material, MaterialRespVO.class)); - } - - @GetMapping("/page") - @Operation(summary = "获得物料分页") - @PreAuthorize("@ss.hasPermission('heli:material:query')") - public CommonResult> getMaterialPage(@Valid MaterialPageReqVO pageReqVO) { - PageResult pageResult = materialService.getMaterialPage(pageReqVO); - return success(BeanUtils.toBean(pageResult, MaterialRespVO.class)); - } - - @GetMapping("/export-excel") - @Operation(summary = "导出物料 Excel") - @PreAuthorize("@ss.hasPermission('heli:material:export')") - @OperateLog(type = EXPORT) - public void exportMaterialExcel(@Valid MaterialPageReqVO pageReqVO, - HttpServletResponse response) throws IOException { - pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); - List list = materialService.getMaterialPage(pageReqVO).getList(); - // 导出 Excel - ExcelUtils.write(response, "物料.xls", "数据", MaterialRespVO.class, - BeanUtils.toBean(list, MaterialRespVO.class)); - } - -} \ No newline at end of file +package com.chanko.yunxi.mes.module.heli.controller.admin.material; + +import org.springframework.web.bind.annotation.*; +import javax.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 javax.validation.constraints.*; +import javax.validation.*; +import javax.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.common.pojo.CommonResult; +import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; +import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success; + +import com.chanko.yunxi.mes.framework.excel.core.util.ExcelUtils; + +import com.chanko.yunxi.mes.framework.operatelog.core.annotations.OperateLog; +import static com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum.*; + +import com.chanko.yunxi.mes.module.heli.controller.admin.material.vo.*; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.material.MaterialDO; +import com.chanko.yunxi.mes.module.heli.service.material.MaterialService; + +@Tag(name = "管理后台 - 物料") +@RestController +@RequestMapping("/heli/material") +@Validated +public class MaterialController { + + @Resource + private MaterialService materialService; + + @PostMapping("/create") + @Operation(summary = "创建物料") + @PreAuthorize("@ss.hasPermission('heli:material:create')") + public CommonResult createMaterial(@Valid @RequestBody MaterialSaveReqVO createReqVO) { + return success(materialService.createMaterial(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新物料") + @PreAuthorize("@ss.hasPermission('heli:material:update')") + public CommonResult updateMaterial(@Valid @RequestBody MaterialSaveReqVO updateReqVO) { + materialService.updateMaterial(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除物料") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('heli:material:delete')") + public CommonResult deleteMaterial(@RequestParam("id") Long id) { + materialService.deleteMaterial(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得物料") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('heli:material:query')") + public CommonResult getMaterial(@RequestParam("id") Long id) { + MaterialDO material = materialService.getMaterial(id); + return success(BeanUtils.toBean(material, MaterialRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得物料分页") + @PreAuthorize("@ss.hasPermission('heli:material:query')") + public CommonResult> getMaterialPage(@Valid MaterialPageReqVO pageReqVO) { + PageResult pageResult = materialService.getMaterialPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, MaterialRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出物料 Excel") + @PreAuthorize("@ss.hasPermission('heli:material:export')") + @OperateLog(type = EXPORT) + public void exportMaterialExcel(@Valid MaterialPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = materialService.getMaterialPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "物料.xls", "数据", MaterialRespVO.class, + BeanUtils.toBean(list, MaterialRespVO.class)); + } + + @GetMapping({"/all-simples"}) + @Operation(summary = "TODO:获取物料精简信息列表", description = "只包含被开启的物料,主要用于前端的下拉选项") + public CommonResult> > getSimpleList() { + List> list = materialService.getSimpleList(); + // 拼接数据 + return success(list); + } + + @GetMapping({"/all-simples-virtual"}) + @Operation(summary = "TODO:获取物料精简信息列表", description = "只包含被开启的物料,主要用于前端的下拉选项") + public CommonResult> > getSimpleVirtualList() { + List> list = materialService.selectSimpleVirtualList(); + // 拼接数据 + return success(list); + } +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/mouldtype/MouldTypeController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/mouldtype/MouldTypeController.java index 6d117f02..f98d86a7 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/mouldtype/MouldTypeController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/mouldtype/MouldTypeController.java @@ -1,95 +1,102 @@ -package com.chanko.yunxi.mes.module.heli.controller.admin.mouldtype; - -import org.springframework.web.bind.annotation.*; -import javax.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 javax.validation.constraints.*; -import javax.validation.*; -import javax.servlet.http.*; -import java.util.*; -import java.io.IOException; - -import com.chanko.yunxi.mes.framework.common.pojo.PageParam; -import com.chanko.yunxi.mes.framework.common.pojo.PageResult; -import com.chanko.yunxi.mes.framework.common.pojo.CommonResult; -import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; -import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success; - -import com.chanko.yunxi.mes.framework.excel.core.util.ExcelUtils; - -import com.chanko.yunxi.mes.framework.operatelog.core.annotations.OperateLog; -import static com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum.*; - -import com.chanko.yunxi.mes.module.heli.controller.admin.mouldtype.vo.*; -import com.chanko.yunxi.mes.module.heli.dal.dataobject.mouldtype.MouldTypeDO; -import com.chanko.yunxi.mes.module.heli.service.mouldtype.MouldTypeService; - -@Tag(name = "管理后台 - 模具类型") -@RestController -@RequestMapping("/heli/mould-type") -@Validated -public class MouldTypeController { - - @Resource - private MouldTypeService mouldTypeService; - - @PostMapping("/create") - @Operation(summary = "创建模具类型") - @PreAuthorize("@ss.hasPermission('heli:mould-type:create')") - public CommonResult createMouldType(@Valid @RequestBody MouldTypeSaveReqVO createReqVO) { - return success(mouldTypeService.createMouldType(createReqVO)); - } - - @PutMapping("/update") - @Operation(summary = "更新模具类型") - @PreAuthorize("@ss.hasPermission('heli:mould-type:update')") - public CommonResult updateMouldType(@Valid @RequestBody MouldTypeSaveReqVO updateReqVO) { - mouldTypeService.updateMouldType(updateReqVO); - return success(true); - } - - @DeleteMapping("/delete") - @Operation(summary = "删除模具类型") - @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('heli:mould-type:delete')") - public CommonResult deleteMouldType(@RequestParam("id") Long id) { - mouldTypeService.deleteMouldType(id); - return success(true); - } - - @GetMapping("/get") - @Operation(summary = "获得模具类型") - @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('heli:mould-type:query')") - public CommonResult getMouldType(@RequestParam("id") Long id) { - MouldTypeDO mouldType = mouldTypeService.getMouldType(id); - return success(BeanUtils.toBean(mouldType, MouldTypeRespVO.class)); - } - - @GetMapping("/page") - @Operation(summary = "获得模具类型分页") - @PreAuthorize("@ss.hasPermission('heli:mould-type:query')") - public CommonResult> getMouldTypePage(@Valid MouldTypePageReqVO pageReqVO) { - PageResult pageResult = mouldTypeService.getMouldTypePage(pageReqVO); - return success(BeanUtils.toBean(pageResult, MouldTypeRespVO.class)); - } - - @GetMapping("/export-excel") - @Operation(summary = "导出模具类型 Excel") - @PreAuthorize("@ss.hasPermission('heli:mould-type:export')") - @OperateLog(type = EXPORT) - public void exportMouldTypeExcel(@Valid MouldTypePageReqVO pageReqVO, - HttpServletResponse response) throws IOException { - pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); - List list = mouldTypeService.getMouldTypePage(pageReqVO).getList(); - // 导出 Excel - ExcelUtils.write(response, "模具类型.xls", "数据", MouldTypeRespVO.class, - BeanUtils.toBean(list, MouldTypeRespVO.class)); - } - -} \ No newline at end of file +package com.chanko.yunxi.mes.module.heli.controller.admin.mouldtype; + +import org.springframework.web.bind.annotation.*; +import javax.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 javax.validation.constraints.*; +import javax.validation.*; +import javax.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.common.pojo.CommonResult; +import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; +import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success; + +import com.chanko.yunxi.mes.framework.excel.core.util.ExcelUtils; + +import com.chanko.yunxi.mes.framework.operatelog.core.annotations.OperateLog; +import static com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum.*; + +import com.chanko.yunxi.mes.module.heli.controller.admin.mouldtype.vo.*; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.mouldtype.MouldTypeDO; +import com.chanko.yunxi.mes.module.heli.service.mouldtype.MouldTypeService; + +@Tag(name = "管理后台 - 模具类型") +@RestController +@RequestMapping("/heli/mould-type") +@Validated +public class MouldTypeController { + + @Resource + private MouldTypeService mouldTypeService; + + @PostMapping("/create") + @Operation(summary = "创建模具类型") + @PreAuthorize("@ss.hasPermission('heli:mould-type:create')") + public CommonResult createMouldType(@Valid @RequestBody MouldTypeSaveReqVO createReqVO) { + return success(mouldTypeService.createMouldType(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新模具类型") + @PreAuthorize("@ss.hasPermission('heli:mould-type:update')") + public CommonResult updateMouldType(@Valid @RequestBody MouldTypeSaveReqVO updateReqVO) { + mouldTypeService.updateMouldType(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除模具类型") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('heli:mould-type:delete')") + public CommonResult deleteMouldType(@RequestParam("id") Long id) { + mouldTypeService.deleteMouldType(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得模具类型") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('heli:mould-type:query')") + public CommonResult getMouldType(@RequestParam("id") Long id) { + MouldTypeDO mouldType = mouldTypeService.getMouldType(id); + return success(BeanUtils.toBean(mouldType, MouldTypeRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得模具类型分页") + @PreAuthorize("@ss.hasPermission('heli:mould-type:query')") + public CommonResult> getMouldTypePage(@Valid MouldTypePageReqVO pageReqVO) { + PageResult pageResult = mouldTypeService.getMouldTypePage(pageReqVO); + return success(BeanUtils.toBean(pageResult, MouldTypeRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出模具类型 Excel") + @PreAuthorize("@ss.hasPermission('heli:mould-type:export')") + @OperateLog(type = EXPORT) + public void exportMouldTypeExcel(@Valid MouldTypePageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = mouldTypeService.getMouldTypePage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "模具类型.xls", "数据", MouldTypeRespVO.class, + BeanUtils.toBean(list, MouldTypeRespVO.class)); + } + + @GetMapping({"/all-simples"}) + @Operation(summary = "TODO:获取模块类型信息列表", description = "只包含被开启的模块类型,主要用于前端的下拉选项") + public CommonResult> > getSimpleList() { + List> list = mouldTypeService.getMouldTypeSimpleList(); + // 拼接数据 + return success(list); + } +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processdesign/ProcessDesignController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processdesign/ProcessDesignController.java new file mode 100644 index 00000000..4db88681 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processdesign/ProcessDesignController.java @@ -0,0 +1,106 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.processdesign; + +import org.springframework.web.bind.annotation.*; +import javax.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 javax.validation.constraints.*; +import javax.validation.*; +import javax.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.common.pojo.CommonResult; +import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; +import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success; + +import com.chanko.yunxi.mes.framework.excel.core.util.ExcelUtils; + +import com.chanko.yunxi.mes.framework.operatelog.core.annotations.OperateLog; +import static com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum.*; + +import com.chanko.yunxi.mes.module.heli.controller.admin.processdesign.vo.*; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.processdesign.ProcessDesignDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.processdesignprogress.ProcessDesignProgressDO; +import com.chanko.yunxi.mes.module.heli.service.processdesign.ProcessDesignService; + +@Tag(name = "管理后台 - 工艺设计") +@RestController +@RequestMapping("/heli/process-design") +@Validated +public class ProcessDesignController { + + @Resource + private ProcessDesignService processDesignService; + + @PostMapping("/create") + @Operation(summary = "创建工艺设计") + @PreAuthorize("@ss.hasPermission('heli:process-design:create')") + public CommonResult createProcessDesign(@Valid @RequestBody ProcessDesignSaveReqVO createReqVO) { + return success(processDesignService.createProcessDesign(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新工艺设计") + @PreAuthorize("@ss.hasPermission('heli:process-design:update')") + public CommonResult updateProcessDesign(@Valid @RequestBody ProcessDesignSaveReqVO updateReqVO) { + processDesignService.updateProcessDesign(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除工艺设计") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('heli:process-design:delete')") + public CommonResult deleteProcessDesign(@RequestParam("id") Long id) { + processDesignService.deleteProcessDesign(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得工艺设计") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('heli:process-design:query')") + public CommonResult getProcessDesign(@RequestParam("id") Long id) { + ProcessDesignDO processDesign = processDesignService.getProcessDesign(id); + return success(BeanUtils.toBean(processDesign, ProcessDesignRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得工艺设计分页") + @PreAuthorize("@ss.hasPermission('heli:process-design:query')") + public CommonResult> getProcessDesignPage(@Valid ProcessDesignPageReqVO pageReqVO) { + PageResult pageResult = processDesignService.getProcessDesignPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ProcessDesignRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出工艺设计 Excel") + @PreAuthorize("@ss.hasPermission('heli:process-design:export')") + @OperateLog(type = EXPORT) + public void exportProcessDesignExcel(@Valid ProcessDesignPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = processDesignService.getProcessDesignPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "工艺设计.xls", "数据", ProcessDesignRespVO.class, + BeanUtils.toBean(list, ProcessDesignRespVO.class)); + } + + // ==================== 子表(工艺设计进度) ==================== + + @GetMapping("/process-design-progress/list-by-process-design-id") + @Operation(summary = "获得工艺设计进度列表") + @Parameter(name = "processDesignId", description = "工艺设计id") + @PreAuthorize("@ss.hasPermission('heli:process-design:query')") + public CommonResult> getProcessDesignProgressListByProcessDesignId(@RequestParam("processDesignId") Long processDesignId) { + return success(processDesignService.getProcessDesignProgressListByProcessDesignId(processDesignId)); + } + +} \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processdesign/vo/ProcessDesignPageReqVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processdesign/vo/ProcessDesignPageReqVO.java new file mode 100644 index 00000000..3e78bfa6 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processdesign/vo/ProcessDesignPageReqVO.java @@ -0,0 +1,40 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.processdesign.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static com.chanko.yunxi.mes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 工艺设计分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class ProcessDesignPageReqVO extends PageParam { + + @Schema(description = "生产计划id", example = "87") + private Long planId; + + @Schema(description = "销售订单id", example = "27757") + private Long saleOrderId; + + @Schema(description = "销售订单子项id", example = "7018") + private Long saleOrderSubId; + + @Schema(description = "设计类型 铸造工艺|3D图纸|2D图纸|毛坯图纸 FOUNDRY_TECHNOLOGY_BLUEPRINT|3D_BLUEPRINT|2D_BLUEPRINT|WORKBLANK_BLUEPRINT", example = "1") + private String processDesignType; + + @Schema(description = "备注", example = "随便") + private String remark; + + @Schema(description = "状态,1表示正常,2表示禁用", example = "2") + private Integer status; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processdesign/vo/ProcessDesignRespVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processdesign/vo/ProcessDesignRespVO.java new file mode 100644 index 00000000..e2e62ec5 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processdesign/vo/ProcessDesignRespVO.java @@ -0,0 +1,48 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.processdesign.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 工艺设计 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ProcessDesignRespVO { + + @Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED, example = "13152") + @ExcelProperty("自增字段,唯一") + private Long id; + + @Schema(description = "生产计划id", requiredMode = Schema.RequiredMode.REQUIRED, example = "87") + @ExcelProperty("生产计划id") + private Long planId; + + @Schema(description = "销售订单id", requiredMode = Schema.RequiredMode.REQUIRED, example = "27757") + @ExcelProperty("销售订单id") + private Long saleOrderId; + + @Schema(description = "销售订单子项id", example = "7018") + @ExcelProperty("销售订单子项id") + private Long saleOrderSubId; + + @Schema(description = "设计类型 铸造工艺|3D图纸|2D图纸|毛坯图纸 FOUNDRY_TECHNOLOGY_BLUEPRINT|3D_BLUEPRINT|2D_BLUEPRINT|WORKBLANK_BLUEPRINT", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @ExcelProperty("设计类型 铸造工艺|3D图纸|2D图纸|毛坯图纸 FOUNDRY_TECHNOLOGY_BLUEPRINT|3D_BLUEPRINT|2D_BLUEPRINT|WORKBLANK_BLUEPRINT") + private String processDesignType; + + @Schema(description = "备注", example = "随便") + @ExcelProperty("备注") + private String remark; + + @Schema(description = "状态,1表示正常,2表示禁用", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @ExcelProperty("状态,1表示正常,2表示禁用") + private Integer status; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processdesign/vo/ProcessDesignSaveReqVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processdesign/vo/ProcessDesignSaveReqVO.java new file mode 100644 index 00000000..54d58081 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processdesign/vo/ProcessDesignSaveReqVO.java @@ -0,0 +1,42 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.processdesign.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; +import java.util.*; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.processdesignprogress.ProcessDesignProgressDO; + +@Schema(description = "管理后台 - 工艺设计新增/修改 Request VO") +@Data +public class ProcessDesignSaveReqVO { + + @Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED, example = "13152") + private Long id; + + @Schema(description = "生产计划id", requiredMode = Schema.RequiredMode.REQUIRED, example = "87") + @NotNull(message = "生产计划id不能为空") + private Long planId; + + @Schema(description = "销售订单id", requiredMode = Schema.RequiredMode.REQUIRED, example = "27757") + @NotNull(message = "销售订单id不能为空") + private Long saleOrderId; + + @Schema(description = "销售订单子项id", example = "7018") + private Long saleOrderSubId; + + @Schema(description = "设计类型 铸造工艺|3D图纸|2D图纸|毛坯图纸 FOUNDRY_TECHNOLOGY_BLUEPRINT|3D_BLUEPRINT|2D_BLUEPRINT|WORKBLANK_BLUEPRINT", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotEmpty(message = "设计类型 铸造工艺|3D图纸|2D图纸|毛坯图纸 FOUNDRY_TECHNOLOGY_BLUEPRINT|3D_BLUEPRINT|2D_BLUEPRINT|WORKBLANK_BLUEPRINT不能为空") + private String processDesignType; + + @Schema(description = "备注", example = "随便") + private String remark; + + @Schema(description = "状态,1表示正常,2表示禁用", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @NotNull(message = "状态,1表示正常,2表示禁用不能为空") + private Integer status; + + @Schema(description = "工艺设计进度列表") + private List processDesignProgresss; + +} \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderPageReqVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderPageReqVO.java index 070f7dc0..3fc97eb9 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderPageReqVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderPageReqVO.java @@ -37,8 +37,8 @@ public class ProjectOrderPageReqVO extends PageParam { @Schema(description = "客户id", example = "27214") private Long customerId; - @Schema(description = "模具名称", example = "赵六") - private String mouldName; + @Schema(description = "项目名称", example = "赵六") + private String projectName; @Schema(description = "业务线") private String businessLine; diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderRespVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderRespVO.java index f0f01981..4f0bc5f5 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderRespVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderRespVO.java @@ -48,9 +48,9 @@ public class ProjectOrderRespVO { @ExcelProperty("客户") private String customerName; - @Schema(description = "模具名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") - @ExcelProperty("模具名称") - private String mouldName; + @Schema(description = "项目名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") + @ExcelProperty("项目名称") + private String projectName; @Schema(description = "业务线", requiredMode = Schema.RequiredMode.REQUIRED) @ExcelProperty(value = "业务线", converter = DictConvert.class) diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderSaveReqVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderSaveReqVO.java index 8efea052..8cb7abe3 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderSaveReqVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderSaveReqVO.java @@ -37,9 +37,9 @@ public class ProjectOrderSaveReqVO { @NotNull(message = "客户id不能为空") private Long customerId; - @Schema(description = "模具名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") - @NotEmpty(message = "模具名称不能为空") - private String mouldName; + @Schema(description = "项目名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") + @NotEmpty(message = "项目名称不能为空") + private String projectName; @Schema(description = "业务线", requiredMode = Schema.RequiredMode.REQUIRED) @NotEmpty(message = "业务线不能为空") diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storage/StorageController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storage/StorageController.java index db67486a..e19d9dd2 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storage/StorageController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storage/StorageController.java @@ -94,6 +94,7 @@ public class StorageController { List logList = BeanUtils.toBean(matList,StorageLogDO.class); // 同步库存单状态到日志,便于以后统计 for (StorageLogDO log : logList){ + log.setId(null); log.setStatus(targetDo.getStatus()); } // 批量保存当前库存物料日志信息 diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storage/vo/StoragePageReqVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storage/vo/StoragePageReqVO.java index 28b308be..be0058a3 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storage/vo/StoragePageReqVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storage/vo/StoragePageReqVO.java @@ -28,7 +28,7 @@ public class StoragePageReqVO extends PageParam { private String stockNo; @Schema(description = "上游单号") - private Long headerNo; + private String headerNo; @Schema(description = "备注", example = "你说的对") private String description; diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storage/vo/StorageRespVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storage/vo/StorageRespVO.java index 97202674..048e361f 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storage/vo/StorageRespVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storage/vo/StorageRespVO.java @@ -40,7 +40,7 @@ public class StorageRespVO { @Schema(description = "上游单号") @ExcelProperty("上游单号") - private Long headerNo; + private String headerNo; @Schema(description = "备注", example = "你说的对") @ExcelProperty("备注") @@ -88,4 +88,8 @@ public class StorageRespVO { @ExcelProperty("作废时间") private LocalDateTime cancelTime; + @Schema(description = "需物料名称") + @ExcelProperty("虚物料名称") + private String vMatName; + } \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storage/vo/StorageSaveReqVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storage/vo/StorageSaveReqVO.java index 6615ea69..b399c298 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storage/vo/StorageSaveReqVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storage/vo/StorageSaveReqVO.java @@ -29,7 +29,7 @@ public class StorageSaveReqVO { private String stockNo; @Schema(description = "上游单号") - private Long headerNo; + private String headerNo; @Schema(description = "备注", example = "你说的对") private String description; diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storagecheck/StorageCheckController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storagecheck/StorageCheckController.java index df09b770..cc4c4be1 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storagecheck/StorageCheckController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storagecheck/StorageCheckController.java @@ -1,7 +1,10 @@ package com.chanko.yunxi.mes.module.heli.controller.admin.storagecheck; import com.chanko.yunxi.mes.module.heli.controller.admin.storage.vo.StorageSaveReqVO; +import com.chanko.yunxi.mes.module.heli.controller.admin.storagecheckmat.vo.StorageCheckMatSaveReqVO; +import com.chanko.yunxi.mes.module.heli.controller.admin.storagemat.vo.StorageMatSaveReqVO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.storage.StorageDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagecheckmat.StorageCheckMatDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelog.StorageLogDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagemat.StorageMatDO; import com.chanko.yunxi.mes.module.heli.service.storagecheckmat.StorageCheckMatService; @@ -54,10 +57,32 @@ public class StorageCheckController { return success(storageCheckService.createStorageCheck(createReqVO)); } + @PostMapping("/create-batch") + @Operation(summary = "批量创建盘点物料") + @PreAuthorize("@ss.hasPermission('heli:storage-mat:create')") + public CommonResult createStorageCheckMat(@Valid @RequestBody List createReqVO, @RequestParam("checkId") Long checkId) { + + storageCheckMatService.deleteCheckMatList(checkId); + for (StorageCheckMatSaveReqVO item : createReqVO) { + item.setId(null); + storageCheckMatService.createStorageCheckMat(item); + } + return success(1L); + } + @PutMapping("/update") @Operation(summary = "更新入/出库盘点") @PreAuthorize("@ss.hasPermission('heli:storage-check:update')") public CommonResult updateStorageCheck(@Valid @RequestBody StorageCheckSaveReqVO updateReqVO) { + LocalDateTime currTime = LocalDateTime.now(); + // 保存/删除按钮操作 + if(updateReqVO.getStatus().equals(3)){ + // 已删除时间更新 + updateReqVO.setOutboundTime(currTime); + } else if(updateReqVO.getStatus().equals(2)) { + // 已提交时间更新 + updateReqVO.setKeeperTime(currTime); + } storageCheckService.updateStorageCheck(updateReqVO); return success(true); } @@ -65,25 +90,8 @@ public class StorageCheckController { @PutMapping("/update-status") @Operation(summary = "更新盘点状态") @PreAuthorize("@ss.hasPermission('heli:storage:update')") - public CommonResult updateStorageCheckStatus(@Valid @RequestBody StorageCheckSaveReqVO updateReqVO) { - - // 提交或者删除时记录相关操作人 - LocalDateTime currTime = LocalDateTime.now(); - if(updateReqVO.getStatus().equals(2)){ - // 已提交时间更新 - updateReqVO.setKeeperTime(currTime); - } else if(updateReqVO.getStatus().equals(3)){ - // 已删除时间更新 - updateReqVO.setCancelTime(currTime); - } - // 盘点信息保存 - storageCheckService.updateStorageCheck(updateReqVO); - - // TODO保存物料列表信息 - - // TODO生成入库/出库单据 - - return success(true); + public CommonResult updateStorageCheckStatus(@RequestParam("checkId") Long checkId) { + return success(storageCheckService.createStorageByCheckInfo(checkId)); } @DeleteMapping("/delete") diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storagecheckmat/StorageCheckMatController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storagecheckmat/StorageCheckMatController.java index c0667b82..c91b952f 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storagecheckmat/StorageCheckMatController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storagecheckmat/StorageCheckMatController.java @@ -1,95 +1,102 @@ -package com.chanko.yunxi.mes.module.heli.controller.admin.storagecheckmat; - -import org.springframework.web.bind.annotation.*; -import javax.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 javax.validation.constraints.*; -import javax.validation.*; -import javax.servlet.http.*; -import java.util.*; -import java.io.IOException; - -import com.chanko.yunxi.mes.framework.common.pojo.PageParam; -import com.chanko.yunxi.mes.framework.common.pojo.PageResult; -import com.chanko.yunxi.mes.framework.common.pojo.CommonResult; -import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; -import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success; - -import com.chanko.yunxi.mes.framework.excel.core.util.ExcelUtils; - -import com.chanko.yunxi.mes.framework.operatelog.core.annotations.OperateLog; -import static com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum.*; - -import com.chanko.yunxi.mes.module.heli.controller.admin.storagecheckmat.vo.*; -import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagecheckmat.StorageCheckMatDO; -import com.chanko.yunxi.mes.module.heli.service.storagecheckmat.StorageCheckMatService; - -@Tag(name = "管理后台 - 盘点物料") -@RestController -@RequestMapping("/heli/storage-check-mat") -@Validated -public class StorageCheckMatController { - - @Resource - private StorageCheckMatService storageCheckMatService; - - @PostMapping("/create") - @Operation(summary = "创建盘点物料") - @PreAuthorize("@ss.hasPermission('heli:storage-check-mat:create')") - public CommonResult createStorageCheckMat(@Valid @RequestBody StorageCheckMatSaveReqVO createReqVO) { - return success(storageCheckMatService.createStorageCheckMat(createReqVO)); - } - - @PutMapping("/update") - @Operation(summary = "更新盘点物料") - @PreAuthorize("@ss.hasPermission('heli:storage-check-mat:update')") - public CommonResult updateStorageCheckMat(@Valid @RequestBody StorageCheckMatSaveReqVO updateReqVO) { - storageCheckMatService.updateStorageCheckMat(updateReqVO); - return success(true); - } - - @DeleteMapping("/delete") - @Operation(summary = "删除盘点物料") - @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('heli:storage-check-mat:delete')") - public CommonResult deleteStorageCheckMat(@RequestParam("id") Long id) { - storageCheckMatService.deleteStorageCheckMat(id); - return success(true); - } - - @GetMapping("/get") - @Operation(summary = "获得盘点物料") - @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('heli:storage-check-mat:query')") - public CommonResult getStorageCheckMat(@RequestParam("id") Long id) { - StorageCheckMatDO storageCheckMat = storageCheckMatService.getStorageCheckMat(id); - return success(BeanUtils.toBean(storageCheckMat, StorageCheckMatRespVO.class)); - } - - @GetMapping("/page") - @Operation(summary = "获得盘点物料分页") - @PreAuthorize("@ss.hasPermission('heli:storage-check-mat:query')") - public CommonResult> getStorageCheckMatPage(@Valid StorageCheckMatPageReqVO pageReqVO) { - PageResult pageResult = storageCheckMatService.getStorageCheckMatPage(pageReqVO); - return success(BeanUtils.toBean(pageResult, StorageCheckMatRespVO.class)); - } - - @GetMapping("/export-excel") - @Operation(summary = "导出盘点物料 Excel") - @PreAuthorize("@ss.hasPermission('heli:storage-check-mat:export')") - @OperateLog(type = EXPORT) - public void exportStorageCheckMatExcel(@Valid StorageCheckMatPageReqVO pageReqVO, - HttpServletResponse response) throws IOException { - pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); - List list = storageCheckMatService.getStorageCheckMatPage(pageReqVO).getList(); - // 导出 Excel - ExcelUtils.write(response, "盘点物料.xls", "数据", StorageCheckMatRespVO.class, - BeanUtils.toBean(list, StorageCheckMatRespVO.class)); - } - -} \ No newline at end of file +package com.chanko.yunxi.mes.module.heli.controller.admin.storagecheckmat; + +import org.springframework.web.bind.annotation.*; +import javax.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 javax.validation.constraints.*; +import javax.validation.*; +import javax.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.common.pojo.CommonResult; +import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; +import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success; + +import com.chanko.yunxi.mes.framework.excel.core.util.ExcelUtils; + +import com.chanko.yunxi.mes.framework.operatelog.core.annotations.OperateLog; +import static com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum.*; + +import com.chanko.yunxi.mes.module.heli.controller.admin.storagecheckmat.vo.*; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagecheckmat.StorageCheckMatDO; +import com.chanko.yunxi.mes.module.heli.service.storagecheckmat.StorageCheckMatService; + +@Tag(name = "管理后台 - 盘点物料") +@RestController +@RequestMapping("/heli/storage-check-mat") +@Validated +public class StorageCheckMatController { + + @Resource + private StorageCheckMatService storageCheckMatService; + + @PostMapping("/create") + @Operation(summary = "创建盘点物料") + @PreAuthorize("@ss.hasPermission('heli:storage-check-mat:create')") + public CommonResult createStorageCheckMat(@Valid @RequestBody StorageCheckMatSaveReqVO createReqVO) { + return success(storageCheckMatService.createStorageCheckMat(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新盘点物料") + @PreAuthorize("@ss.hasPermission('heli:storage-check-mat:update')") + public CommonResult updateStorageCheckMat(@Valid @RequestBody StorageCheckMatSaveReqVO updateReqVO) { + storageCheckMatService.updateStorageCheckMat(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除盘点物料") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('heli:storage-check-mat:delete')") + public CommonResult deleteStorageCheckMat(@RequestParam("id") Long id) { + storageCheckMatService.deleteStorageCheckMat(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得盘点物料") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('heli:storage-check-mat:query')") + public CommonResult getStorageCheckMat(@RequestParam("id") Long id) { + StorageCheckMatDO storageCheckMat = storageCheckMatService.getStorageCheckMat(id); + return success(BeanUtils.toBean(storageCheckMat, StorageCheckMatRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得盘点物料分页") + @PreAuthorize("@ss.hasPermission('heli:storage-check-mat:query')") + public CommonResult> getStorageCheckMatPage(@Valid StorageCheckMatPageReqVO pageReqVO) { + PageResult pageResult = storageCheckMatService.getStorageCheckMatPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, StorageCheckMatRespVO.class)); + } + @GetMapping("/list") + @Operation(summary = "获得盘点物料分页") + @PreAuthorize("@ss.hasPermission('heli:storage-check-mat:query')") + public CommonResult> getStorageCheckMatListByCheckID(@RequestParam("checkId") Long checkId) { + List pageResult = storageCheckMatService.getStorageMatListByCheckId(checkId); + return success(BeanUtils.toBean(pageResult, StorageCheckMatRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出盘点物料 Excel") + @PreAuthorize("@ss.hasPermission('heli:storage-check-mat:export')") + @OperateLog(type = EXPORT) + public void exportStorageCheckMatExcel(@Valid StorageCheckMatPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = storageCheckMatService.getStorageCheckMatPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "盘点物料.xls", "数据", StorageCheckMatRespVO.class, + BeanUtils.toBean(list, StorageCheckMatRespVO.class)); + } + +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storagelog/StorageLogController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storagelog/StorageLogController.java index f52b90f3..8ebe9aa4 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storagelog/StorageLogController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storagelog/StorageLogController.java @@ -13,6 +13,7 @@ import io.swagger.v3.oas.annotations.Operation; import javax.validation.constraints.*; import javax.validation.*; import javax.servlet.http.*; +import java.math.BigDecimal; import java.util.*; import java.io.IOException; @@ -89,6 +90,26 @@ public class StorageLogController { return success(pageResult); } + @GetMapping("/matRest") + @Operation(summary = "获得最新库存数量") + @PreAuthorize("@ss.hasPermission('heli:storage-log:query')") + public CommonResult getStorageNowPage(@RequestParam("matId") Long matId, @RequestParam("pnId") Long pnId) { + List pageResult = storageLogService.selectNowByMatPnId(matId,pnId); + BigDecimal matRest = BigDecimal.valueOf(0); + for(StorageLogNowDO item : pageResult){ + matRest = item.getStorageOkQty(); + } + return success(matRest); + } + + @GetMapping("/all") + @Operation(summary = "获得全部库存数据") + @PreAuthorize("@ss.hasPermission('heli:storage-log:query')") + public CommonResult> getStorageNowList(@Valid StorageNowAllReqVO queryReqVO) { + List pageResult = storageLogService.getStorageNowList(queryReqVO); + return success(pageResult); + } + @GetMapping("/export-excel") @Operation(summary = "导出入/出库日志 Excel") @PreAuthorize("@ss.hasPermission('heli:storage-log:export')") diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storagelog/vo/StorageNowAllReqVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storagelog/vo/StorageNowAllReqVO.java new file mode 100644 index 00000000..4df742a7 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storagelog/vo/StorageNowAllReqVO.java @@ -0,0 +1,27 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.storagelog.vo; + +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +@Schema(description = "管理后台 - 入/出库日志分页 Request VO") +@Data +public class StorageNowAllReqVO { + + @Schema(description = "物料编码") + private String matCode; + + @Schema(description = "物料类型") + private String matType; + + @Schema(description = "是否排除库存为0的物料") + private Integer noZero; + + @Schema(description = "仓库id") + private Integer whId; + + + +} \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storagemat/StorageMatController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storagemat/StorageMatController.java index 00f3b61d..b7bd71fd 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storagemat/StorageMatController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storagemat/StorageMatController.java @@ -87,8 +87,8 @@ public class StorageMatController { @GetMapping("/page") @Operation(summary = "获得入/出库物料分页") @PreAuthorize("@ss.hasPermission('heli:storage-mat:query')") - public CommonResult> getStorageMatPage(@Valid StorageMatPageReqVO pageReqVO) { - PageResult pageResult = storageMatService.getStorageMatPage(pageReqVO); + public CommonResult> getStorageMatPage(@Valid StorageMatPageReqVO pageReqVO) { + List pageResult = storageMatService.getStorageMatPage(pageReqVO); return success(BeanUtils.toBean(pageResult, StorageMatRespVO.class)); } @@ -99,7 +99,7 @@ public class StorageMatController { public void exportStorageMatExcel(@Valid StorageMatPageReqVO pageReqVO, HttpServletResponse response) throws IOException { pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); - List list = storageMatService.getStorageMatPage(pageReqVO).getList(); + List list = storageMatService.getStorageMatPage(pageReqVO); // 导出 Excel ExcelUtils.write(response, "入/出库物料.xls", "数据", StorageMatRespVO.class, BeanUtils.toBean(list, StorageMatRespVO.class)); @@ -110,8 +110,8 @@ public class StorageMatController { @Operation(summary = "获得入/出库物料") @Parameter(name = "id", description = "编号", required = true, example = "1024") @PreAuthorize("@ss.hasPermission('heli:storage-mat:query')") - public CommonResult> getStorageMatList() { - List list = storageMatService.getStorageMatList(); + public CommonResult> getStorageMatList(@RequestParam("whId") Long whId) { + List list = storageMatService.getStorageMatList(whId); return success(BeanUtils.toBean(list, StorageMatValidRespVO.class)); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/deliverorder/DeliverOrderDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/deliverorder/DeliverOrderDO.java index a81ae8fd..014ee630 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/deliverorder/DeliverOrderDO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/deliverorder/DeliverOrderDO.java @@ -1,14 +1,15 @@ package com.chanko.yunxi.mes.module.heli.dal.dataobject.deliverorder; +import com.baomidou.mybatisplus.annotation.KeySequence; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.chanko.yunxi.mes.framework.mybatis.core.dataobject.BaseDO; import com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum; import com.chanko.yunxi.mes.module.heli.enums.DeliverOrderStatusEnum; import lombok.*; -import java.util.*; -import java.time.LocalDateTime; -import java.time.LocalDateTime; + import java.time.LocalDateTime; -import com.baomidou.mybatisplus.annotation.*; -import com.chanko.yunxi.mes.framework.mybatis.core.dataobject.BaseDO; /** * 发货订单 DO @@ -114,7 +115,7 @@ public class DeliverOrderDO extends BaseDO { private String contractNo; @TableField(exist = false) - private String mouldName; + private String projectName; @TableField(exist = false) private String property; @@ -122,6 +123,15 @@ public class DeliverOrderDO extends BaseDO { @TableField(exist = false) private String customerName; + @TableField(exist = false) + private String deliverPersonName; + + @TableField(exist = false) + private String creatorName; + + @TableField(exist = false) + private String businessManName; + public boolean canDeliver() { return DeliverOrderStatusEnum.SAVE.getCode() == this.deliverStatus.intValue(); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/deliverorder/DeliverOrderSubDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/deliverorder/DeliverOrderSubDO.java index 61c31d03..3d32f97a 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/deliverorder/DeliverOrderSubDO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/deliverorder/DeliverOrderSubDO.java @@ -1,4 +1,4 @@ -package com.chanko.yunxi.mes.module.heli.dal.dataobject.deliverordersub; +package com.chanko.yunxi.mes.module.heli.dal.dataobject.deliverorder; import lombok.*; import java.util.*; @@ -7,6 +7,8 @@ import java.time.LocalDateTime; import com.baomidou.mybatisplus.annotation.*; import com.chanko.yunxi.mes.framework.mybatis.core.dataobject.BaseDO; +import javax.validation.constraints.Min; + /** * 发货订单子项 DO * @@ -48,6 +50,7 @@ public class DeliverOrderSubDO extends BaseDO { /** * 数量 */ + @Min(value = 1, message = "数量必须大于零") private Integer amount; /** * 单位 diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/equip/EquipDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/equip/EquipDO.java new file mode 100644 index 00000000..56200047 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/equip/EquipDO.java @@ -0,0 +1,43 @@ +package com.chanko.yunxi.mes.module.heli.dal.dataobject.equip; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import com.chanko.yunxi.mes.framework.mybatis.core.dataobject.BaseDO; + +/** + * 设备信息 DO + * + * @author 管理员 + */ +@TableName("base_equip") +@KeySequence("base_equip_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class EquipDO extends BaseDO { + + /** + * 自增字段,唯一 + */ + @TableId + private Long id; + /** + * 设备名称 唯一 + */ + private String name; + /** + * 模具类型id,对应 base_mould_type 表中的id + */ + private Long mouldTypeId; + /** + * 状态,1表示正常,2表示禁用,默认是1 + */ + private Integer status; + +} \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/processdesign/ProcessDesignDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/processdesign/ProcessDesignDO.java new file mode 100644 index 00000000..cb8df2d7 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/processdesign/ProcessDesignDO.java @@ -0,0 +1,55 @@ +package com.chanko.yunxi.mes.module.heli.dal.dataobject.processdesign; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import com.chanko.yunxi.mes.framework.mybatis.core.dataobject.BaseDO; + +/** + * 工艺设计 DO + * + * @author 管理员 + */ +@TableName("pro_process_design") +@KeySequence("pro_process_design_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ProcessDesignDO extends BaseDO { + + /** + * 自增字段,唯一 + */ + @TableId + private Long id; + /** + * 生产计划id + */ + private Long planId; + /** + * 销售订单id + */ + private Long saleOrderId; + /** + * 销售订单子项id + */ + private Long saleOrderSubId; + /** + * 设计类型 铸造工艺|3D图纸|2D图纸|毛坯图纸 FOUNDRY_TECHNOLOGY_BLUEPRINT|3D_BLUEPRINT|2D_BLUEPRINT|WORKBLANK_BLUEPRINT + */ + private String processDesignType; + /** + * 备注 + */ + private String remark; + /** + * 状态,1表示正常,2表示禁用 + */ + private Integer status; + +} \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/processdesign/ProcessDesignProgressDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/processdesign/ProcessDesignProgressDO.java new file mode 100644 index 00000000..840090c0 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/processdesign/ProcessDesignProgressDO.java @@ -0,0 +1,52 @@ +package com.chanko.yunxi.mes.module.heli.dal.dataobject.processdesignprogress; + +import lombok.*; +import java.util.*; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import com.chanko.yunxi.mes.framework.mybatis.core.dataobject.BaseDO; + +/** + * 工艺设计进度 DO + * + * @author 管理员 + */ +@TableName("pro_process_design_progress") +@KeySequence("pro_process_design_progress_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ProcessDesignProgressDO extends BaseDO { + + /** + * 自增字段,唯一 + */ + @TableId + private Long id; + /** + * 工艺设计id + */ + private Long processDesignId; + /** + * 进度百分比(%) + */ + private BigDecimal progress; + /** + * 图纸链接 + */ + private String blueprintLink; + /** + * 备注 + */ + private String remark; + /** + * 状态,1表示正常,2表示禁用 + */ + private Integer status; + +} \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/projectorder/ProjectOrderDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/projectorder/ProjectOrderDO.java index a7bdd709..c1fad8b2 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/projectorder/ProjectOrderDO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/projectorder/ProjectOrderDO.java @@ -59,9 +59,9 @@ public class ProjectOrderDO extends BaseDO { */ private Long customerId; /** - * 模具名称 + * 项目名称 */ - private String mouldName; + private String projectName; /** * 业务线 * @@ -243,7 +243,7 @@ public class ProjectOrderDO extends BaseDO { } public boolean canDelete(){ - return this.orderStatus.intValue() == ProjectOrderStatusEnum.SAVE.getCode() && this.hasAlter.intValue() == YesOrNoEnum.NO.getCode(); + return this.orderStatus.intValue() == ProjectOrderStatusEnum.SAVE.getCode() && this.hasAlter.intValue() == YesOrNoEnum.N.getCode(); } public boolean canOperate(OperateTypeEnum operateTypeEnum){ diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/storage/StorageDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/storage/StorageDO.java index eb8540d7..157c97a8 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/storage/StorageDO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/storage/StorageDO.java @@ -55,7 +55,7 @@ public class StorageDO extends BaseDO { /** * 上游单号 */ - private Long headerNo; + private String headerNo; /** * 备注 */ @@ -99,4 +99,6 @@ public class StorageDO extends BaseDO { */ private LocalDateTime createTime; + private String vMatName; + } \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/storagelogNow/StorageLogNowDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/storagelogNow/StorageLogNowDO.java index f5f45e5e..d584efad 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/storagelogNow/StorageLogNowDO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/storagelogNow/StorageLogNowDO.java @@ -6,6 +6,7 @@ import com.chanko.yunxi.mes.framework.mybatis.core.dataobject.BaseDO; import lombok.*; import java.math.BigDecimal; +import java.time.LocalDate; /** * 入/出库日志 DO @@ -27,20 +28,17 @@ public class StorageLogNowDO extends BaseDO { @TableId private Long id; - /** - * 库存良品数量 - */ private BigDecimal storageOkQty; - /** - * 批次号 - */ + private String lotNo; private String matName; - + private String shortName; private String matCode; - private String matType; + private String matSpec; + private String matBrand; + private String matUnit; private Long whId; private String whName; @@ -51,9 +49,7 @@ public class StorageLogNowDO extends BaseDO { private Long pnId; private String pnName; - private String shortName; - private String matSpec; - private String matBrand; - private String matUnit; + + } \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/deliverorder/DeliverOrderMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/deliverorder/DeliverOrderMapper.java index 3f97a7bf..d40a6048 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/deliverorder/DeliverOrderMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/deliverorder/DeliverOrderMapper.java @@ -6,8 +6,6 @@ import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX; import com.chanko.yunxi.mes.module.heli.controller.admin.deliverorder.vo.DeliverOrderPageReqVO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.customer.CustomerDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.deliverorder.DeliverOrderDO; -import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderDO; -import com.chanko.yunxi.mes.module.system.dal.dataobject.dept.DeptDO; import com.chanko.yunxi.mes.module.system.dal.dataobject.user.AdminUserDO; import com.github.yulichang.wrapper.MPJLambdaWrapper; import org.apache.ibatis.annotations.Mapper; @@ -25,8 +23,8 @@ public interface DeliverOrderMapper extends BaseMapperX { MPJLambdaWrapper query = new MPJLambdaWrapper<>(); query.selectAll(DeliverOrderDO.class) .select("u.nickname as deliverPersonName", "e.name as customerName") - .select("GROUP_CONCAT(distinct p.code) as saleOrderCode", "GROUP_CONCAT(distinct p.mould_name) as mouldName" - , "GROUP_CONCAT(distinct p.contract_no) as contractNo", "GROUP_CONCAT(distinct p.property) as property") + .select("GROUP_CONCAT(distinct p.code) as saleOrderCode", "GROUP_CONCAT(p.project_name) as projectName" + , "GROUP_CONCAT(p.contract_no) as contractNo", "GROUP_CONCAT(p.property) as property") .leftJoin("project_sale_order p on FIND_IN_SET(p.id, t.sale_order_ids)") .leftJoin(AdminUserDO.class, "u", AdminUserDO::getId, DeliverOrderDO::getDeliverPerson) .leftJoin(CustomerDO.class, "e", CustomerDO::getId, DeliverOrderDO::getCustomerId) @@ -36,7 +34,7 @@ public interface DeliverOrderMapper extends BaseMapperX { query.like(!StringUtils.isEmpty(reqVO.getCode()), DeliverOrderDO::getCode, reqVO.getCode()) .like(!StringUtils.isEmpty(reqVO.getSaleOrderCode()), "p.code", reqVO.getSaleOrderCode()) .like(!StringUtils.isEmpty(reqVO.getCustomerName()), "e.name", reqVO.getCustomerName()) - .like(!StringUtils.isEmpty(reqVO.getMouldName()), "p.mould_name", reqVO.getMouldName()) + .like(!StringUtils.isEmpty(reqVO.getProjectName()), "p.project_name", reqVO.getProjectName()) .between(reqVO.getDeliverDate() != null && reqVO.getDeliverDate().length == 2, DeliverOrderDO::getDeliverDate, ArrayUtils.get(reqVO.getDeliverDate(), 0), ArrayUtils.get(reqVO.getDeliverDate(), 1)) .eq(reqVO.getDeliverStatus() != null, DeliverOrderDO::getDeliverStatus, reqVO.getDeliverStatus()); @@ -46,12 +44,14 @@ public interface DeliverOrderMapper extends BaseMapperX { default DeliverOrderDO selectById(Long id) { MPJLambdaWrapper query = new MPJLambdaWrapper<>(); query.selectAll(DeliverOrderDO.class) - .select("u.nickname as deliverPersonName", "e.name as customerName") - .select("GROUP_CONCAT(distinct p.code) as saleOrderCode", "GROUP_CONCAT(distinct p.mould_name) as mouldName" - , "GROUP_CONCAT(distinct p.contract_no) as contractNo", "GROUP_CONCAT(distinct p.property) as property") + .select("u.nickname as deliverPersonName", "e.name as customerName", "u1.nickname as creatorName", "u2.nickname as businessManName") + .select("GROUP_CONCAT(distinct p.code) as saleOrderCode", "GROUP_CONCAT(p.project_name) as projectName" + , "GROUP_CONCAT(p.contract_no) as contractNo", "GROUP_CONCAT(p.property) as property") .leftJoin("project_sale_order p on FIND_IN_SET(p.id, t.sale_order_ids)") .leftJoin(CustomerDO.class, "e", CustomerDO::getId, DeliverOrderDO::getCustomerId) .leftJoin(AdminUserDO.class, "u", AdminUserDO::getId, DeliverOrderDO::getDeliverPerson) + .leftJoin(AdminUserDO.class, "u1", AdminUserDO::getId, DeliverOrderDO::getCreator) + .leftJoin("system_users u2 on u2.id = p.business_man") .eq(DeliverOrderDO::getId, id) .groupBy(DeliverOrderDO::getId) .last("LIMIT 1") diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/deliverorder/DeliverOrderSubMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/deliverorder/DeliverOrderSubMapper.java index 6b4e39b2..2e9a27bc 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/deliverorder/DeliverOrderSubMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/deliverorder/DeliverOrderSubMapper.java @@ -1,14 +1,11 @@ -package com.chanko.yunxi.mes.module.heli.dal.mysql.deliverordersub; +package com.chanko.yunxi.mes.module.heli.dal.mysql.deliverorder; -import java.util.*; - -import com.chanko.yunxi.mes.framework.common.pojo.PageResult; -import com.chanko.yunxi.mes.framework.common.pojo.PageParam; -import com.chanko.yunxi.mes.framework.mybatis.core.query.LambdaQueryWrapperX; import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX; -import com.chanko.yunxi.mes.module.heli.dal.dataobject.deliverordersub.DeliverOrderSubDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.deliverorder.DeliverOrderSubDO; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + /** * 发货订单子项 Mapper * @@ -25,4 +22,4 @@ public interface DeliverOrderSubMapper extends BaseMapperX { return delete(DeliverOrderSubDO::getDeliveryOrderId, deliveryOrderId); } -} \ No newline at end of file +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/equip/EquipMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/equip/EquipMapper.java new file mode 100644 index 00000000..46e6c017 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/equip/EquipMapper.java @@ -0,0 +1,34 @@ +package com.chanko.yunxi.mes.module.heli.dal.mysql.equip; + +import java.util.*; + +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.equip.EquipDO; +import org.apache.ibatis.annotations.Mapper; +import com.chanko.yunxi.mes.module.heli.controller.admin.equip.vo.*; + +/** + * 设备信息 Mapper + * + * @author 管理员 + */ +@Mapper +public interface EquipMapper extends BaseMapperX { + + default PageResult selectPage(EquipPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(EquipDO::getId, reqVO.getId()) + .likeIfPresent(EquipDO::getName, reqVO.getName()) + .eqIfPresent(EquipDO::getMouldTypeId, reqVO.getMouldTypeId()) + .eqIfPresent(EquipDO::getStatus, reqVO.getStatus()) + .eqIfPresent(EquipDO::getCreator, reqVO.getCreator()) + .betweenIfPresent(EquipDO::getCreateTime, reqVO.getCreateTime()) + .eqIfPresent(EquipDO::getUpdater, reqVO.getUpdater()) + .betweenIfPresent(EquipDO::getUpdateTime, reqVO.getUpdateTime()) + .eqIfPresent(EquipDO::getDeleted, reqVO.getDeleted()) + .orderByDesc(EquipDO::getId)); + } + +} \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/material/MaterialMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/material/MaterialMapper.java index e465763f..39d182b0 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/material/MaterialMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/material/MaterialMapper.java @@ -1,14 +1,20 @@ package com.chanko.yunxi.mes.module.heli.dal.mysql.material; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.chanko.yunxi.mes.framework.common.pojo.PageResult; import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX; import com.chanko.yunxi.mes.module.heli.controller.admin.material.vo.MaterialPageReqVO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.material.MaterialDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.pn.PnDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.supplier.SupplierDO; +import com.chanko.yunxi.mes.module.heli.enums.YesOrNoEnum; import com.github.yulichang.wrapper.MPJLambdaWrapper; import org.apache.ibatis.annotations.Mapper; import org.springframework.util.StringUtils; +import java.util.List; +import java.util.Map; + /** * 物料 Mapper * @@ -27,9 +33,21 @@ public interface MaterialMapper extends BaseMapperX { query.like(!StringUtils.isEmpty(reqVO.getName()), MaterialDO::getName, reqVO.getName()) .like(!StringUtils.isEmpty(reqVO.getCode()), MaterialDO::getCode, reqVO.getCode()) .eq(!StringUtils.isEmpty(reqVO.getMaterialType()), MaterialDO::getMaterialType, reqVO.getMaterialType()) - .eq(reqVO.getStatus() != null, MaterialDO::getStatus, reqVO.getStatus()); + .eq(reqVO.getStatus() != null, MaterialDO::getStatus, reqVO.getStatus()) + .eq(true,MaterialDO::getVirtualPart, YesOrNoEnum.N.name()) + .eq(!StringUtils.isEmpty(reqVO.getVirtualPart()), MaterialDO::getVirtualPart, reqVO.getVirtualPart()); return selectPage(reqVO, query); } + default List> selectSimpleList() { + + return selectMaps(new QueryWrapper().select("id", "name","short_name","code","material_type","spec","unit","brand").eq("virtual_part", YesOrNoEnum.N.name()).lambda()); + + } + default List> selectSimpleVirtualList() { + + return selectMaps(new QueryWrapper().select("id", "name","short_name","code","material_type","spec","unit","brand").eq("virtual_part", YesOrNoEnum.Y.name()).lambda()); + + } } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/mouldtype/MouldTypeMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/mouldtype/MouldTypeMapper.java index fc395427..10155872 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/mouldtype/MouldTypeMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/mouldtype/MouldTypeMapper.java @@ -2,10 +2,12 @@ package com.chanko.yunxi.mes.module.heli.dal.mysql.mouldtype; import java.util.*; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.chanko.yunxi.mes.framework.common.pojo.PageResult; import com.chanko.yunxi.mes.framework.mybatis.core.query.LambdaQueryWrapperX; import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX; import com.chanko.yunxi.mes.module.heli.dal.dataobject.mouldtype.MouldTypeDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.pn.PnDO; import org.apache.ibatis.annotations.Mapper; import com.chanko.yunxi.mes.module.heli.controller.admin.mouldtype.vo.*; @@ -24,5 +26,9 @@ public interface MouldTypeMapper extends BaseMapperX { .betweenIfPresent(MouldTypeDO::getCreateTime, reqVO.getCreateTime()) .orderByDesc(MouldTypeDO::getId)); } + default List> selectSimpleList() { + return selectMaps(new QueryWrapper().select("id", "name").eq("status","1").lambda()); + + } } \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/pn/PnMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/pn/PnMapper.java index b3070b9b..37c7cb9c 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/pn/PnMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/pn/PnMapper.java @@ -37,7 +37,7 @@ public interface PnMapper extends BaseMapperX { } default List> selectSimpleList() { - return selectMaps(new QueryWrapper().select("id", "pn_name","rg_id").lambda()); + return selectMaps(new QueryWrapper().select("id", "pn_name","rg_id","wh_id").eq("pn_status","1").lambda()); } } \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processdesign/ProcessDesignMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processdesign/ProcessDesignMapper.java new file mode 100644 index 00000000..9ef6257c --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processdesign/ProcessDesignMapper.java @@ -0,0 +1,32 @@ +package com.chanko.yunxi.mes.module.heli.dal.mysql.processdesign; + +import java.util.*; + +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.processdesign.ProcessDesignDO; +import org.apache.ibatis.annotations.Mapper; +import com.chanko.yunxi.mes.module.heli.controller.admin.processdesign.vo.*; + +/** + * 工艺设计 Mapper + * + * @author 管理员 + */ +@Mapper +public interface ProcessDesignMapper extends BaseMapperX { + + default PageResult selectPage(ProcessDesignPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ProcessDesignDO::getPlanId, reqVO.getPlanId()) + .eqIfPresent(ProcessDesignDO::getSaleOrderId, reqVO.getSaleOrderId()) + .eqIfPresent(ProcessDesignDO::getSaleOrderSubId, reqVO.getSaleOrderSubId()) + .eqIfPresent(ProcessDesignDO::getProcessDesignType, reqVO.getProcessDesignType()) + .eqIfPresent(ProcessDesignDO::getRemark, reqVO.getRemark()) + .eqIfPresent(ProcessDesignDO::getStatus, reqVO.getStatus()) + .betweenIfPresent(ProcessDesignDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(ProcessDesignDO::getId)); + } + +} \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processdesign/ProcessDesignProgressMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processdesign/ProcessDesignProgressMapper.java new file mode 100644 index 00000000..bf16ff47 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processdesign/ProcessDesignProgressMapper.java @@ -0,0 +1,28 @@ +package com.chanko.yunxi.mes.module.heli.dal.mysql.processdesignprogress; + +import java.util.*; + +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; +import com.chanko.yunxi.mes.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.processdesignprogress.ProcessDesignProgressDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 工艺设计进度 Mapper + * + * @author 管理员 + */ +@Mapper +public interface ProcessDesignProgressMapper extends BaseMapperX { + + default List selectListByProcessDesignId(Long processDesignId) { + return selectList(ProcessDesignProgressDO::getProcessDesignId, processDesignId); + } + + default int deleteByProcessDesignId(Long processDesignId) { + return delete(ProcessDesignProgressDO::getProcessDesignId, processDesignId); + } + +} \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/projectorder/ProjectOrderMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/projectorder/ProjectOrderMapper.java index d01d3d2d..8220ffc1 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/projectorder/ProjectOrderMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/projectorder/ProjectOrderMapper.java @@ -32,7 +32,7 @@ public interface ProjectOrderMapper extends BaseMapperX { query.like(!StringUtils.isEmpty(reqVO.getCode()), ProjectOrderDO::getCode, reqVO.getCode()) .like(!StringUtils.isEmpty(reqVO.getCustomerName()), "e.name", reqVO.getCustomerName()) .like(!StringUtils.isEmpty(reqVO.getBusinessManName()), "u.nickname", reqVO.getBusinessManName()) - .like(!StringUtils.isEmpty(reqVO.getMouldName()), ProjectOrderDO::getMouldName, reqVO.getMouldName()) + .like(!StringUtils.isEmpty(reqVO.getProjectName()), ProjectOrderDO::getProjectName, reqVO.getProjectName()) .like(!StringUtils.isEmpty(reqVO.getContractNo()), ProjectOrderDO::getContractNo, reqVO.getContractNo()) .eq(reqVO.getHasPrice() != null, ProjectOrderDO::getHasPrice, reqVO.getHasPrice()) .eq(reqVO.getOrderStatus() != null, ProjectOrderDO::getOrderStatus, reqVO.getOrderStatus()) @@ -49,10 +49,11 @@ public interface ProjectOrderMapper extends BaseMapperX { default ProjectOrderDO selectById(Long id) { MPJLambdaWrapper query = new MPJLambdaWrapper<>(); query.selectAll(ProjectOrderDO.class) - .select("u.nickname as businessManName", "d.name as businessDeptName", "u1.nickname as creatorName") + .select("u.nickname as businessManName", "d.name as businessDeptName", "u1.nickname as creatorName", "e.name as customerName") .leftJoin(AdminUserDO.class, "u", AdminUserDO::getId, ProjectOrderDO::getBusinessMan) .leftJoin(AdminUserDO.class, "u1", AdminUserDO::getId, ProjectOrderDO::getCreator) .leftJoin(DeptDO.class, "d", DeptDO::getId, ProjectOrderDO::getBusinessDeptId) + .leftJoin(CustomerDO.class, "e", CustomerDO::getId, ProjectOrderDO::getCustomerId) .eq(ProjectOrderDO::getId, id) .last("LIMIT 1") .disableSubLogicDel(); diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/rg/RgMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/rg/RgMapper.java index 1bc6a966..cc5a9d5c 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/rg/RgMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/rg/RgMapper.java @@ -35,7 +35,7 @@ public interface RgMapper extends BaseMapperX { default List> selectSimpleList() { - return selectMaps(new QueryWrapper().select("id", "rg_name","wh_id").lambda()); + return selectMaps(new QueryWrapper().select("id", "rg_name","wh_id").eq("rg_status","1").lambda()); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/storage/StorageMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/storage/StorageMapper.java index f6735725..338d5e02 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/storage/StorageMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/storage/StorageMapper.java @@ -10,6 +10,7 @@ import com.chanko.yunxi.mes.module.heli.dal.dataobject.material.MaterialDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.storage.StorageDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagemat.StorageMatDO; +import com.chanko.yunxi.mes.module.heli.enums.YesOrNoEnum; import com.chanko.yunxi.mes.module.system.dal.dataobject.dept.DeptDO; import com.chanko.yunxi.mes.module.system.dal.dataobject.user.AdminUserDO; import com.github.yulichang.wrapper.MPJLambdaWrapper; diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/storagecheckmat/StorageCheckMatMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/storagecheckmat/StorageCheckMatMapper.java index 42d4d551..e14e19a2 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/storagecheckmat/StorageCheckMatMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/storagecheckmat/StorageCheckMatMapper.java @@ -35,4 +35,10 @@ public interface StorageCheckMatMapper extends BaseMapperX { .orderByDesc(StorageCheckMatDO::getId)); } + default List selectListByCheckID(Long checkId) { + return selectList(new LambdaQueryWrapperX() + .eqIfPresent(StorageCheckMatDO::getCheckId, checkId) + .orderByDesc(StorageCheckMatDO::getId)); + } + } \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/storagelog/StorageLogNowMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/storagelog/StorageLogNowMapper.java index c9032d78..dab54a7b 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/storagelog/StorageLogNowMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/storagelog/StorageLogNowMapper.java @@ -4,9 +4,15 @@ import com.alibaba.druid.util.StringUtils; import com.chanko.yunxi.mes.framework.common.pojo.PageResult; import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX; import com.chanko.yunxi.mes.module.heli.controller.admin.storagelog.vo.StorageLogPageReqVO; +import com.chanko.yunxi.mes.module.heli.controller.admin.storagelog.vo.StorageNowAllReqVO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelogNow.StorageLogNowDO; import com.github.yulichang.wrapper.MPJLambdaWrapper; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.poi.hpsf.Decimal; + +import java.math.BigDecimal; +import java.util.List; /** * 入/出库日志 Mapper @@ -26,11 +32,20 @@ public interface StorageLogNowMapper extends BaseMapperX { .eq(reqVO.getWhId()!= null,StorageLogNowDO::getWhId, reqVO.getWhId()) .eq(reqVO.getRgId()!= null,StorageLogNowDO::getRgId, reqVO.getRgId()) .eq(reqVO.getPnId()!= null,StorageLogNowDO::getPnId, reqVO.getPnId()) + .ne(true,StorageLogNowDO::getStorageOkQty,0) .like(!StringUtils.isEmpty(reqVO.getMatName()), StorageLogNowDO::getMatName, reqVO.getMatName()) .like(!StringUtils.isEmpty(reqVO.getMatCode()), StorageLogNowDO::getMatCode, reqVO.getMatCode()) .like(!StringUtils.isEmpty(reqVO.getLotNo()),StorageLogNowDO::getLotNo, reqVO.getLotNo()); return selectPage(reqVO,query); } + PageResult selectAllPage(StorageLogPageReqVO reqVO); + + List selectNoZero(StorageNowAllReqVO reqVO); + + List selectNowList(StorageNowAllReqVO reqVO); + + + List selectNowByMatPnId(@Param("matId")Long matId,@Param("pnId")Long pnId); } \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/storagemat/StorageMatMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/storagemat/StorageMatMapper.java index ce146ab1..616451e4 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/storagemat/StorageMatMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/storagemat/StorageMatMapper.java @@ -42,9 +42,8 @@ public interface StorageMatMapper extends BaseMapperX { default List selectMatByStorckID(Long stockId) { MPJLambdaWrapper query = new MPJLambdaWrapper<>(); - query.selectAll(StorageMatDO.class) - .eq(StorageMatDO::getStockId, stockId); + query.selectAll(StorageMatDO.class).eq(stockId!= null && stockId!= 0,StorageMatDO::getStockId, stockId); return selectList(query); } - List selectStorageMatValid(); + List selectStorageMatValid(Long whId); } \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/warehouse/WarehouseMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/warehouse/WarehouseMapper.java index 8cf5f934..2fe1563a 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/warehouse/WarehouseMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/warehouse/WarehouseMapper.java @@ -42,7 +42,7 @@ public interface WarehouseMapper extends BaseMapperX { default List> selectSimpleList() { - return selectMaps(new QueryWrapper().select("id", "wh_name").lambda()); + return selectMaps(new QueryWrapper().select("id", "wh_name").eq("wh_status","1").lambda()); } } \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/manager/CrossOrderManager.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/manager/CrossOrderManager.java new file mode 100644 index 00000000..71a2f05e --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/manager/CrossOrderManager.java @@ -0,0 +1,194 @@ +package com.chanko.yunxi.mes.module.heli.manager; + +import cn.hutool.core.lang.UUID; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; +import com.chanko.yunxi.mes.module.heli.controller.admin.deliverorder.vo.DeliverOrderSaveReqVO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.deliverorder.DeliverOrderDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.deliverorder.DeliverOrderSubDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.material.MaterialDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderSubDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.storage.StorageDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelog.StorageLogDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagemat.StorageMatDO; +import com.chanko.yunxi.mes.module.heli.dal.mysql.deliverorder.DeliverOrderSubMapper; +import com.chanko.yunxi.mes.module.heli.dal.mysql.material.MaterialMapper; +import com.chanko.yunxi.mes.module.heli.dal.mysql.projectorder.ProjectOrderMapper; +import com.chanko.yunxi.mes.module.heli.dal.mysql.projectorder.ProjectOrderSubMapper; +import com.chanko.yunxi.mes.module.heli.dal.mysql.storage.StorageMapper; +import com.chanko.yunxi.mes.module.heli.dal.mysql.storagelog.StorageLogMapper; +import com.chanko.yunxi.mes.module.heli.dal.mysql.storagemat.StorageMatMapper; +import com.chanko.yunxi.mes.module.heli.enums.*; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.*; +import java.util.stream.Collectors; + +import static com.chanko.yunxi.mes.module.heli.enums.CodeEnum.STOCK_IN; + +/** + * 跨订单状态交互管理器 + * + * @author chenxi + * @date 2024-01-31 10:03 + */ +@Component +public class CrossOrderManager { + + @Resource + private ProjectOrderMapper projectOrderMapper; + @Resource + private ProjectOrderSubMapper projectOrderSubMapper; + @Resource + private DeliverOrderSubMapper deliverOrderSubMapper; + @Resource + private StorageMapper storageMapper; + @Resource + private StorageMatMapper storageMatMapper; + @Resource + private StorageLogMapper storageLogMapper; + @Resource + private MaterialMapper materialMapper; + + /** + * 刷新项目订单发货状态 + * @param projectOrderIds + */ + @Transactional(rollbackFor = Exception.class) + public void refreshProjectOrderDeliverStatus(String... projectOrderIds) { + // 锁定订单 + for (String projectOrderId : projectOrderIds) { + ProjectOrderDO projectOrderDO = projectOrderMapper.selectOne(new LambdaQueryWrapper() {{ + eq(ProjectOrderDO::getId, projectOrderId); + last("LIMIT 1 FOR UPDATE"); + }}); + + // 查询关联子项 + List projectOrderSubDOList = projectOrderSubMapper.selectListByProjectOrderId(projectOrderDO.getId()); + + // 查询发货记录 + MPJLambdaWrapper historyDeliveredSubQuery = new MPJLambdaWrapper<>(); + historyDeliveredSubQuery.selectAll(DeliverOrderSubDO.class) + .leftJoin(DeliverOrderDO.class, DeliverOrderDO::getId, DeliverOrderSubDO::getDeliveryOrderId) + .eq(DeliverOrderDO::getDeliverStatus, DeliverOrderStatusEnum.DELIVER.getCode()) + .in(DeliverOrderSubDO::getSaleOrderSubId, projectOrderSubDOList.stream().map(ProjectOrderSubDO::getId).collect(Collectors.toSet())); + List historyDeliveredSubList = deliverOrderSubMapper.selectList(historyDeliveredSubQuery); + if(historyDeliveredSubList.isEmpty()) return; + Map> historyDeliveredSubsGroupBySaleSubId = historyDeliveredSubList.stream().collect(Collectors.groupingBy(DeliverOrderSubDO::getSaleOrderSubId)); + + // 考虑变更订单情况 只需判断历史发货是否大于等于订单子项数量 + boolean allDone = projectOrderSubDOList.stream().allMatch(projectOrderSubDO -> { + List historySubList = historyDeliveredSubsGroupBySaleSubId.get(projectOrderSubDO.getId()); + int historyDeliveredAmount = historySubList == null || historySubList.isEmpty() ? 0 : historySubList.stream().mapToInt(DeliverOrderSubDO::getAmount).sum(); + return historyDeliveredAmount >= projectOrderSubDO.getAmount(); + }); + + if(allDone){ + projectOrderDO.setDeliveryStatus(ProjectOrderDeliverStatusEnum.ALL.getCode()); + }else{ + projectOrderDO.setDeliveryStatus(ProjectOrderDeliverStatusEnum.PART.getCode()); + } + projectOrderMapper.updateById(projectOrderDO); + + } + + } + + /** + * 生成出货单 + * @param updateReqVO + */ + @Transactional(rollbackFor = Exception.class) + public void generateStockOutOrder(DeliverOrderSaveReqVO updateReqVO) { + + // 出库表处理 + StorageDO storageDO = new StorageDO(); + storageDO.setStockType(StockTypeEnum.OUT.getCode()) + .setStockInType(StockOutTypeEnum.SALE.getCode()) + .setStockNo(UUID.fastUUID().toString(true)) + .setHeaderNo(updateReqVO.getCode()) + .setStatus(StorageStatusEnum.SUBMIT.getCode()) + .setCreateTime(updateReqVO.getDeliverDate()) + .setVMatName(updateReqVO.getDeliverOrderSubs().stream().map(DeliverOrderSubDO::getName).collect(Collectors.joining(","))) + .setDescription(String.format("由发货单%s操作发货后自动生成", updateReqVO.getCode())); + storageMapper.insert(storageDO); + storageDO.setStockNo(STOCK_IN.getCode(storageDO.getId().toString())); + storageMapper.updateById(storageDO); + + // 查询物料id + Set materialCodeList = updateReqVO.getDeliverOrderSubs().stream().map(deliverOrderSubDO -> { + return String.format("%s-%s", deliverOrderSubDO.getSaleOrderCode(), deliverOrderSubDO.getName()); + }).collect(Collectors.toSet()); + List subMaterialDOList = materialMapper.selectList(new LambdaQueryWrapper() {{ + in(MaterialDO::getCode, materialCodeList); + eq(MaterialDO::getVirtualPart, YesOrNoEnum.Y.name()); + }}); + Map> materialGroupByCode = subMaterialDOList.stream().collect(Collectors.groupingBy(MaterialDO::getCode)); + + // 出库物料明细 + ArrayList storageMatDOList = new ArrayList<>(16); + for (DeliverOrderSubDO deliverOrderSub : updateReqVO.getDeliverOrderSubs()) { + MaterialDO materialDO = materialGroupByCode.get(String.format("%s-%s", deliverOrderSub.getSaleOrderCode(), deliverOrderSub.getName())).get(0); + StorageMatDO storageMatDO = new StorageMatDO(); + storageMatDO.setStockId(storageDO.getId()) + .setMatId(materialDO.getId()) + .setStorageOkQty(new BigDecimal(deliverOrderSub.getAmount())); + storageMatDOList.add(storageMatDO); + } + storageMatMapper.insertBatch(storageMatDOList); + + // 将物料信息转化日志信息 + List logList = BeanUtils.toBean(storageMatDOList,StorageLogDO.class); + // 同步库存单状态到日志,便于以后统计 + for (StorageLogDO log : logList){ + log.setStatus(storageDO.getStatus()); + } + // 批量保存当前库存物料日志信息 + storageLogMapper.insertBatch(logList); + + } + + /** + * 生成虚拟物料 + * @author chenxi + * @date 2024-02-01 05:32 + */ + @Transactional(rollbackFor = Exception.class) + public void generateVirtualMaterial(String projectOrderCode, List projectOrderSubs) { + ArrayList pendingDOList = new ArrayList<>(16); + projectOrderSubs.forEach(projectOrderSubDO -> { + MaterialDO materialDO = new MaterialDO(); + materialDO.setCode(String.format("%s-%s", projectOrderCode, projectOrderSubDO.getName())) + .setName(projectOrderSubDO.getName()) + .setMaterialType(MaterialTypeEnum.VIRTUAL.getCode()) + .setUnit(projectOrderSubDO.getUnit()) + .setVirtualPart(YesOrNoEnum.Y.name()); + pendingDOList.add(materialDO); + }); + + // 判断是否存在对应的编码 如存在则更新 不存在则插入 + Map> historyGroupByCode = new HashMap<>(16); + List historyDOList = materialMapper.selectList(new LambdaQueryWrapper() {{ + in(MaterialDO::getCode, pendingDOList.stream().map(MaterialDO::getCode).collect(Collectors.toSet())); + }}); + if(historyDOList != null && !historyDOList.isEmpty()){ + historyGroupByCode.putAll(historyDOList.stream().collect(Collectors.groupingBy(MaterialDO::getCode))); + } + + pendingDOList.forEach(thisTimeMaterialDO -> { + List historyMaterialList = historyGroupByCode.get(thisTimeMaterialDO.getCode()); + if(historyMaterialList != null && !historyMaterialList.isEmpty()){ + MaterialDO historyMaterialDO = historyMaterialList.get(0); + thisTimeMaterialDO.setId(historyMaterialDO.getId()).setCreateTime(historyMaterialDO.getCreateTime()); + materialMapper.updateById(thisTimeMaterialDO); + }else{ + materialMapper.insert(thisTimeMaterialDO); + } + }); + } +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/deliverorder/DeliverOrderService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/deliverorder/DeliverOrderService.java index 6b8b211c..b4adf17c 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/deliverorder/DeliverOrderService.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/deliverorder/DeliverOrderService.java @@ -4,7 +4,7 @@ import java.util.*; import javax.validation.*; import com.chanko.yunxi.mes.module.heli.controller.admin.deliverorder.vo.*; import com.chanko.yunxi.mes.module.heli.dal.dataobject.deliverorder.DeliverOrderDO; -import com.chanko.yunxi.mes.module.heli.dal.dataobject.deliverordersub.DeliverOrderSubDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.deliverorder.DeliverOrderSubDO; import com.chanko.yunxi.mes.framework.common.pojo.PageResult; import com.chanko.yunxi.mes.framework.common.pojo.PageParam; diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/deliverorder/DeliverOrderServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/deliverorder/DeliverOrderServiceImpl.java index 12396359..9f5de4ea 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/deliverorder/DeliverOrderServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/deliverorder/DeliverOrderServiceImpl.java @@ -7,26 +7,35 @@ import com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum; import com.chanko.yunxi.mes.module.heli.controller.admin.deliverorder.vo.DeliverOrderPageReqVO; import com.chanko.yunxi.mes.module.heli.controller.admin.deliverorder.vo.DeliverOrderSaveReqVO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.deliverorder.DeliverOrderDO; -import com.chanko.yunxi.mes.module.heli.dal.dataobject.deliverordersub.DeliverOrderSubDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.deliverorder.DeliverOrderSubDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderSubDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.serialnumber.SerialNumberDO; import com.chanko.yunxi.mes.module.heli.dal.mysql.deliverorder.DeliverOrderMapper; -import com.chanko.yunxi.mes.module.heli.dal.mysql.deliverordersub.DeliverOrderSubMapper; +import com.chanko.yunxi.mes.module.heli.dal.mysql.deliverorder.DeliverOrderSubMapper; +import com.chanko.yunxi.mes.module.heli.dal.mysql.projectorder.ProjectOrderMapper; +import com.chanko.yunxi.mes.module.heli.dal.mysql.projectorder.ProjectOrderSubMapper; import com.chanko.yunxi.mes.module.heli.enums.BusinesTypeEnum; import com.chanko.yunxi.mes.module.heli.enums.DeliverOrderStatusEnum; +import com.chanko.yunxi.mes.module.heli.enums.ProjectOrderDeliverStatusEnum; +import com.chanko.yunxi.mes.module.heli.manager.CrossOrderManager; import com.chanko.yunxi.mes.module.heli.service.serialnumber.SerialNumberService; +import com.github.yulichang.wrapper.MPJLambdaWrapper; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; +import javax.validation.Valid; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.chanko.yunxi.mes.module.heli.enums.CodeEnum.PROJECT_DELIVERY_ORDER; -import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.DELIVER_ORDER_NOT_EXISTS; -import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.INVALID_OPERATE; +import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.*; /** * 发货订单 Service 实现类 @@ -43,10 +52,22 @@ public class DeliverOrderServiceImpl implements DeliverOrderService { private DeliverOrderSubMapper deliverOrderSubMapper; @Resource private SerialNumberService serialNumberService; + @Resource + private ProjectOrderMapper projectOrderMapper; + @Resource + private ProjectOrderSubMapper projectOrderSubMapper; + @Resource + private CrossOrderManager crossOrderManager; @Override @Transactional(rollbackFor = Exception.class) public Long createDeliverOrder(DeliverOrderSaveReqVO createReqVO) { + + if(OperateTypeEnum.valueOf(createReqVO.getActive()) == OperateTypeEnum.DELIVER){ + // 超额校验 + overageDeliverValidate(createReqVO.getSaleOrderIds(), createReqVO.getDeliverOrderSubs()); + } + // 插入 DeliverOrderDO deliverOrder = BeanUtils.toBean(createReqVO, DeliverOrderDO.class); // 月度流水号 @@ -60,9 +81,18 @@ public class DeliverOrderServiceImpl implements DeliverOrderService { if(createReqVO.getDeliverOrderSubs() != null && !createReqVO.getDeliverOrderSubs().isEmpty()){ createDeliverOrderSubList(deliverOrder.getId(), createReqVO.getDeliverOrderSubs()); } + if(createReqVO.getDeliverOrderOtherSubs() != null && !createReqVO.getDeliverOrderOtherSubs().isEmpty()){ + createDeliverOrderSubList(deliverOrder.getId(), createReqVO.getDeliverOrderOtherSubs()); + } + createReqVO.setId(deliverOrder.getId()).setCode(deliverOrder.getCode()); // 回写序列记录 serialNumberService.updateSerialNumber(serialNumberDO); + + OperateTypeEnum operateTypeEnum = OperateTypeEnum.valueOf(createReqVO.getActive()); + if(operateTypeEnum == OperateTypeEnum.DELIVER) { + crossOrderManager.refreshProjectOrderDeliverStatus(createReqVO.getSaleOrderIds().split(",")); + } // 返回 return deliverOrder.getId(); } @@ -72,9 +102,13 @@ public class DeliverOrderServiceImpl implements DeliverOrderService { public void updateDeliverOrder(DeliverOrderSaveReqVO updateReqVO) { // 校验存在 DeliverOrderDO oldDO = validateDeliverOrderExists(updateReqVO.getId()); - if(!oldDO.canOperate(OperateTypeEnum.valueOf(updateReqVO.getActive()))){ + OperateTypeEnum operateTypeEnum = OperateTypeEnum.valueOf(updateReqVO.getActive()); + if(!oldDO.canOperate(operateTypeEnum)){ throw exception(INVALID_OPERATE); } + // 超额校验 + overageDeliverValidate(updateReqVO.getSaleOrderIds(), updateReqVO.getDeliverOrderSubs()); + // 更新 DeliverOrderDO updateObj = BeanUtils.toBean(updateReqVO, DeliverOrderDO.class); updateObj.setDeliverStatus(DeliverOrderStatusEnum.valueOf(updateReqVO.getActive()).getCode()); @@ -82,7 +116,56 @@ public class DeliverOrderServiceImpl implements DeliverOrderService { updateReqVO.setDeliverStatus(updateObj.getDeliverStatus()); // 更新子表 - updateDeliverOrderSubList(updateReqVO.getId(), updateReqVO.getDeliverOrderSubs()); + updateDeliverOrderSubList(updateReqVO.getId(), updateReqVO.getDeliverOrderSubs(), updateReqVO.getDeliverOrderOtherSubs()); + + if(updateObj.getDeliverStatus().intValue() == DeliverOrderStatusEnum.DELIVER.getCode()) { + crossOrderManager.refreshProjectOrderDeliverStatus(updateReqVO.getSaleOrderIds().split(",")); + crossOrderManager.generateStockOutOrder(updateReqVO); + } + } + + private void overageDeliverValidate(String saleOrderIds, List thisTimeSubs) { + List thisTimeRelaSubList = thisTimeSubs.stream().filter(deliverOrderSubDO -> deliverOrderSubDO.getSaleOrderSubId() != null).collect(Collectors.toList()); + + if(!thisTimeRelaSubList.isEmpty()){ + // 锁定订单 + LambdaQueryWrapper projectQuery = new LambdaQueryWrapper<>(); + projectQuery.in(ProjectOrderDO::getId, saleOrderIds.split(",")).last("FOR UPDATE"); + List projectOrderDOList = projectOrderMapper.selectList(projectQuery); + + // 状态判断 已发货不容许操作 + boolean anyoneDone = projectOrderDOList.stream().anyMatch(projectOrderDO -> { + return projectOrderDO.getOrderStatus().intValue() == ProjectOrderDeliverStatusEnum.ALL.getCode(); + }); + if(anyoneDone){ + throw exception(RELATION_PROJECT_ORDER_HAS_DONE); + } + + // 查询关联子项目信息判断额度 + Map> thisTimeSubsGroupBySaleSubId = thisTimeRelaSubList.stream().collect(Collectors.groupingBy(DeliverOrderSubDO::getSaleOrderSubId)); + List relaProjectOrderSubList = projectOrderSubMapper.selectBatchIds(thisTimeSubsGroupBySaleSubId.keySet()); + + // 查询历史发货信息 + MPJLambdaWrapper historyDeliveredSubQuery = new MPJLambdaWrapper<>(); + historyDeliveredSubQuery.selectAll(DeliverOrderSubDO.class) + .leftJoin(DeliverOrderDO.class, DeliverOrderDO::getId, DeliverOrderSubDO::getDeliveryOrderId) + .eq(DeliverOrderDO::getDeliverStatus, DeliverOrderStatusEnum.DELIVER.getCode()) + .in(DeliverOrderSubDO::getSaleOrderSubId, thisTimeSubsGroupBySaleSubId.keySet()); + List historyDeliveredSubList = deliverOrderSubMapper.selectList(historyDeliveredSubQuery); + Map> historyDeliveredSubsGroupBySaleSubId = historyDeliveredSubList.stream().collect(Collectors.groupingBy(DeliverOrderSubDO::getSaleOrderSubId)); + + // 关联额度-历史发货额度-本次发货额度 >= 0 则可通过 + boolean allDeliverable = relaProjectOrderSubList.stream().allMatch(relaSub -> { + int relaAmount = relaSub.getAmount(); + List historySubList = historyDeliveredSubsGroupBySaleSubId.get(relaSub.getId()); + int historyDeliveredAmount = historySubList == null || historySubList.isEmpty() ? 0 : historySubList.stream().mapToInt(DeliverOrderSubDO::getAmount).sum(); + int thisTimeAmount = thisTimeSubsGroupBySaleSubId.get(relaSub.getId()).get(0).getAmount(); + return relaAmount-historyDeliveredAmount-thisTimeAmount >= 0; + }); + if(!allDeliverable){ + throw exception(DELIVER_AMOUNT_OVERFLOW); + } + } } @Override @@ -140,10 +223,14 @@ public class DeliverOrderServiceImpl implements DeliverOrderService { deliverOrderSubMapper.insertBatch(list); } - private void updateDeliverOrderSubList(Long deliveryOrderId, List list) { + private void updateDeliverOrderSubList(Long deliveryOrderId, List list, @Valid List deliverOrderOtherSubs) { deleteDeliverOrderSubByDeliveryOrderId(deliveryOrderId); list.forEach(o -> o.setId(null).setUpdater(null).setUpdateTime(null)); // 解决更新情况下:1)id 冲突;2)updateTime 不更新 createDeliverOrderSubList(deliveryOrderId, list); + if(deliverOrderOtherSubs != null && !deliverOrderOtherSubs.isEmpty()){ + deliverOrderOtherSubs.forEach(o -> o.setId(null).setUpdater(null).setUpdateTime(null)); // 解决更新情况下:1)id 冲突;2)updateTime 不更新 + createDeliverOrderSubList(deliveryOrderId, deliverOrderOtherSubs); + } } private void deleteDeliverOrderSubByDeliveryOrderId(Long deliveryOrderId) { diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/equip/EquipService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/equip/EquipService.java new file mode 100644 index 00000000..9247a3d0 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/equip/EquipService.java @@ -0,0 +1,55 @@ +package com.chanko.yunxi.mes.module.heli.service.equip; + +import java.util.*; +import javax.validation.*; +import com.chanko.yunxi.mes.module.heli.controller.admin.equip.vo.*; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.equip.EquipDO; +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; + +/** + * 设备信息 Service 接口 + * + * @author 管理员 + */ +public interface EquipService { + + /** + * 创建设备信息 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createEquip(@Valid EquipSaveReqVO createReqVO); + + /** + * 更新设备信息 + * + * @param updateReqVO 更新信息 + */ + void updateEquip(@Valid EquipSaveReqVO updateReqVO); + + /** + * 删除设备信息 + * + * @param id 编号 + */ + void deleteEquip(Long id); + + /** + * 获得设备信息 + * + * @param id 编号 + * @return 设备信息 + */ + EquipDO getEquip(Long id); + + /** + * 获得设备信息分页 + * + * @param pageReqVO 分页查询 + * @return 设备信息分页 + */ + PageResult getEquipPage(EquipPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/equip/EquipServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/equip/EquipServiceImpl.java new file mode 100644 index 00000000..8eec3f8b --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/equip/EquipServiceImpl.java @@ -0,0 +1,74 @@ +package com.chanko.yunxi.mes.module.heli.service.equip; + +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import com.chanko.yunxi.mes.module.heli.controller.admin.equip.vo.*; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.equip.EquipDO; +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; +import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; + +import com.chanko.yunxi.mes.module.heli.dal.mysql.equip.EquipMapper; + +import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.*; + +/** + * 设备信息 Service 实现类 + * + * @author 管理员 + */ +@Service +@Validated +public class EquipServiceImpl implements EquipService { + + @Resource + private EquipMapper equipMapper; + + @Override + public Long createEquip(EquipSaveReqVO createReqVO) { + // 插入 + EquipDO equip = BeanUtils.toBean(createReqVO, EquipDO.class); + equipMapper.insert(equip); + // 返回 + return equip.getId(); + } + + @Override + public void updateEquip(EquipSaveReqVO updateReqVO) { + // 校验存在 + validateEquipExists(updateReqVO.getId()); + // 更新 + EquipDO updateObj = BeanUtils.toBean(updateReqVO, EquipDO.class); + equipMapper.updateById(updateObj); + } + + @Override + public void deleteEquip(Long id) { + // 校验存在 + validateEquipExists(id); + // 删除 + equipMapper.deleteById(id); + } + + private void validateEquipExists(Long id) { + if (equipMapper.selectById(id) == null) { + throw exception(EQUIP_NOT_EXISTS); + } + } + + @Override + public EquipDO getEquip(Long id) { + return equipMapper.selectById(id); + } + + @Override + public PageResult getEquipPage(EquipPageReqVO pageReqVO) { + return equipMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/material/MaterialService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/material/MaterialService.java index 81155827..a298defd 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/material/MaterialService.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/material/MaterialService.java @@ -1,55 +1,58 @@ -package com.chanko.yunxi.mes.module.heli.service.material; - -import java.util.*; -import javax.validation.*; -import com.chanko.yunxi.mes.module.heli.controller.admin.material.vo.*; -import com.chanko.yunxi.mes.module.heli.dal.dataobject.material.MaterialDO; -import com.chanko.yunxi.mes.framework.common.pojo.PageResult; -import com.chanko.yunxi.mes.framework.common.pojo.PageParam; - -/** - * 物料 Service 接口 - * - * @author 开发者 - */ -public interface MaterialService { - - /** - * 创建物料 - * - * @param createReqVO 创建信息 - * @return 编号 - */ - Long createMaterial(@Valid MaterialSaveReqVO createReqVO); - - /** - * 更新物料 - * - * @param updateReqVO 更新信息 - */ - void updateMaterial(@Valid MaterialSaveReqVO updateReqVO); - - /** - * 删除物料 - * - * @param id 编号 - */ - void deleteMaterial(Long id); - - /** - * 获得物料 - * - * @param id 编号 - * @return 物料 - */ - MaterialDO getMaterial(Long id); - - /** - * 获得物料分页 - * - * @param pageReqVO 分页查询 - * @return 物料分页 - */ - PageResult getMaterialPage(MaterialPageReqVO pageReqVO); - -} \ No newline at end of file +package com.chanko.yunxi.mes.module.heli.service.material; + +import java.util.*; +import javax.validation.*; +import com.chanko.yunxi.mes.module.heli.controller.admin.material.vo.*; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.material.MaterialDO; +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; + +/** + * 物料 Service 接口 + * + * @author 开发者 + */ +public interface MaterialService { + + /** + * 创建物料 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createMaterial(@Valid MaterialSaveReqVO createReqVO); + + /** + * 更新物料 + * + * @param updateReqVO 更新信息 + */ + void updateMaterial(@Valid MaterialSaveReqVO updateReqVO); + + /** + * 删除物料 + * + * @param id 编号 + */ + void deleteMaterial(Long id); + + /** + * 获得物料 + * + * @param id 编号 + * @return 物料 + */ + MaterialDO getMaterial(Long id); + + /** + * 获得物料分页 + * + * @param pageReqVO 分页查询 + * @return 物料分页 + */ + PageResult getMaterialPage(MaterialPageReqVO pageReqVO); + + List> getSimpleList(); + List> selectSimpleVirtualList(); + +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/material/MaterialServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/material/MaterialServiceImpl.java index b499428b..8807cbc4 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/material/MaterialServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/material/MaterialServiceImpl.java @@ -12,6 +12,9 @@ import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; +import java.util.List; +import java.util.Map; + import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.CODE_REPEAT; import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.MATERIAL_NOT_EXISTS; @@ -85,4 +88,13 @@ public class MaterialServiceImpl implements MaterialService { return materialMapper.selectPage(pageReqVO); } + @Override + public List> getSimpleList() { + return materialMapper.selectSimpleList(); + } + + @Override + public List> selectSimpleVirtualList() { + return materialMapper.selectSimpleVirtualList(); + } } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/mouldtype/MouldTypeService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/mouldtype/MouldTypeService.java index b07354b0..892c3c55 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/mouldtype/MouldTypeService.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/mouldtype/MouldTypeService.java @@ -1,55 +1,57 @@ -package com.chanko.yunxi.mes.module.heli.service.mouldtype; - -import java.util.*; -import javax.validation.*; -import com.chanko.yunxi.mes.module.heli.controller.admin.mouldtype.vo.*; -import com.chanko.yunxi.mes.module.heli.dal.dataobject.mouldtype.MouldTypeDO; -import com.chanko.yunxi.mes.framework.common.pojo.PageResult; -import com.chanko.yunxi.mes.framework.common.pojo.PageParam; - -/** - * 模具类型 Service 接口 - * - * @author 管理员 - */ -public interface MouldTypeService { - - /** - * 创建模具类型 - * - * @param createReqVO 创建信息 - * @return 编号 - */ - Long createMouldType(@Valid MouldTypeSaveReqVO createReqVO); - - /** - * 更新模具类型 - * - * @param updateReqVO 更新信息 - */ - void updateMouldType(@Valid MouldTypeSaveReqVO updateReqVO); - - /** - * 删除模具类型 - * - * @param id 编号 - */ - void deleteMouldType(Long id); - - /** - * 获得模具类型 - * - * @param id 编号 - * @return 模具类型 - */ - MouldTypeDO getMouldType(Long id); - - /** - * 获得模具类型分页 - * - * @param pageReqVO 分页查询 - * @return 模具类型分页 - */ - PageResult getMouldTypePage(MouldTypePageReqVO pageReqVO); - -} \ No newline at end of file +package com.chanko.yunxi.mes.module.heli.service.mouldtype; + +import java.util.*; +import javax.validation.*; +import com.chanko.yunxi.mes.module.heli.controller.admin.mouldtype.vo.*; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.mouldtype.MouldTypeDO; +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; + +/** + * 模具类型 Service 接口 + * + * @author 管理员 + */ +public interface MouldTypeService { + + /** + * 创建模具类型 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createMouldType(@Valid MouldTypeSaveReqVO createReqVO); + + /** + * 更新模具类型 + * + * @param updateReqVO 更新信息 + */ + void updateMouldType(@Valid MouldTypeSaveReqVO updateReqVO); + + /** + * 删除模具类型 + * + * @param id 编号 + */ + void deleteMouldType(Long id); + + /** + * 获得模具类型 + * + * @param id 编号 + * @return 模具类型 + */ + MouldTypeDO getMouldType(Long id); + + /** + * 获得模具类型分页 + * + * @param pageReqVO 分页查询 + * @return 模具类型分页 + */ + PageResult getMouldTypePage(MouldTypePageReqVO pageReqVO); + + List> getMouldTypeSimpleList(); + +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/mouldtype/MouldTypeServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/mouldtype/MouldTypeServiceImpl.java index 89514cdf..d561d29a 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/mouldtype/MouldTypeServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/mouldtype/MouldTypeServiceImpl.java @@ -1,74 +1,78 @@ -package com.chanko.yunxi.mes.module.heli.service.mouldtype; - -import org.springframework.stereotype.Service; -import javax.annotation.Resource; -import org.springframework.validation.annotation.Validated; -import org.springframework.transaction.annotation.Transactional; - -import java.util.*; -import com.chanko.yunxi.mes.module.heli.controller.admin.mouldtype.vo.*; -import com.chanko.yunxi.mes.module.heli.dal.dataobject.mouldtype.MouldTypeDO; -import com.chanko.yunxi.mes.framework.common.pojo.PageResult; -import com.chanko.yunxi.mes.framework.common.pojo.PageParam; -import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; - -import com.chanko.yunxi.mes.module.heli.dal.mysql.mouldtype.MouldTypeMapper; - -import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception; -import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.*; - -/** - * 模具类型 Service 实现类 - * - * @author 管理员 - */ -@Service -@Validated -public class MouldTypeServiceImpl implements MouldTypeService { - - @Resource - private MouldTypeMapper mouldTypeMapper; - - @Override - public Long createMouldType(MouldTypeSaveReqVO createReqVO) { - // 插入 - MouldTypeDO mouldType = BeanUtils.toBean(createReqVO, MouldTypeDO.class); - mouldTypeMapper.insert(mouldType); - // 返回 - return mouldType.getId(); - } - - @Override - public void updateMouldType(MouldTypeSaveReqVO updateReqVO) { - // 校验存在 - validateMouldTypeExists(updateReqVO.getId()); - // 更新 - MouldTypeDO updateObj = BeanUtils.toBean(updateReqVO, MouldTypeDO.class); - mouldTypeMapper.updateById(updateObj); - } - - @Override - public void deleteMouldType(Long id) { - // 校验存在 - validateMouldTypeExists(id); - // 删除 - mouldTypeMapper.deleteById(id); - } - - private void validateMouldTypeExists(Long id) { - if (mouldTypeMapper.selectById(id) == null) { - throw exception(MOULD_TYPE_NOT_EXISTS); - } - } - - @Override - public MouldTypeDO getMouldType(Long id) { - return mouldTypeMapper.selectById(id); - } - - @Override - public PageResult getMouldTypePage(MouldTypePageReqVO pageReqVO) { - return mouldTypeMapper.selectPage(pageReqVO); - } - -} \ No newline at end of file +package com.chanko.yunxi.mes.module.heli.service.mouldtype; + +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import com.chanko.yunxi.mes.module.heli.controller.admin.mouldtype.vo.*; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.mouldtype.MouldTypeDO; +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; +import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; + +import com.chanko.yunxi.mes.module.heli.dal.mysql.mouldtype.MouldTypeMapper; + +import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.*; + +/** + * 模具类型 Service 实现类 + * + * @author 管理员 + */ +@Service +@Validated +public class MouldTypeServiceImpl implements MouldTypeService { + + @Resource + private MouldTypeMapper mouldTypeMapper; + + @Override + public Long createMouldType(MouldTypeSaveReqVO createReqVO) { + // 插入 + MouldTypeDO mouldType = BeanUtils.toBean(createReqVO, MouldTypeDO.class); + mouldTypeMapper.insert(mouldType); + // 返回 + return mouldType.getId(); + } + + @Override + public void updateMouldType(MouldTypeSaveReqVO updateReqVO) { + // 校验存在 + validateMouldTypeExists(updateReqVO.getId()); + // 更新 + MouldTypeDO updateObj = BeanUtils.toBean(updateReqVO, MouldTypeDO.class); + mouldTypeMapper.updateById(updateObj); + } + + @Override + public void deleteMouldType(Long id) { + // 校验存在 + validateMouldTypeExists(id); + // 删除 + mouldTypeMapper.deleteById(id); + } + + private void validateMouldTypeExists(Long id) { + if (mouldTypeMapper.selectById(id) == null) { + throw exception(MOULD_TYPE_NOT_EXISTS); + } + } + + @Override + public MouldTypeDO getMouldType(Long id) { + return mouldTypeMapper.selectById(id); + } + + @Override + public PageResult getMouldTypePage(MouldTypePageReqVO pageReqVO) { + return mouldTypeMapper.selectPage(pageReqVO); + } + + @Override + public List> getMouldTypeSimpleList(){ + return mouldTypeMapper.selectSimpleList(); + } +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processdesign/ProcessDesignService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processdesign/ProcessDesignService.java new file mode 100644 index 00000000..6a3b9bbd --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processdesign/ProcessDesignService.java @@ -0,0 +1,66 @@ +package com.chanko.yunxi.mes.module.heli.service.processdesign; + +import java.util.*; +import javax.validation.*; +import com.chanko.yunxi.mes.module.heli.controller.admin.processdesign.vo.*; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.processdesign.ProcessDesignDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.processdesignprogress.ProcessDesignProgressDO; +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; + +/** + * 工艺设计 Service 接口 + * + * @author 管理员 + */ +public interface ProcessDesignService { + + /** + * 创建工艺设计 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createProcessDesign(@Valid ProcessDesignSaveReqVO createReqVO); + + /** + * 更新工艺设计 + * + * @param updateReqVO 更新信息 + */ + void updateProcessDesign(@Valid ProcessDesignSaveReqVO updateReqVO); + + /** + * 删除工艺设计 + * + * @param id 编号 + */ + void deleteProcessDesign(Long id); + + /** + * 获得工艺设计 + * + * @param id 编号 + * @return 工艺设计 + */ + ProcessDesignDO getProcessDesign(Long id); + + /** + * 获得工艺设计分页 + * + * @param pageReqVO 分页查询 + * @return 工艺设计分页 + */ + PageResult getProcessDesignPage(ProcessDesignPageReqVO pageReqVO); + + // ==================== 子表(工艺设计进度) ==================== + + /** + * 获得工艺设计进度列表 + * + * @param processDesignId 工艺设计id + * @return 工艺设计进度列表 + */ + List getProcessDesignProgressListByProcessDesignId(Long processDesignId); + +} \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processdesign/ProcessDesignServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processdesign/ProcessDesignServiceImpl.java new file mode 100644 index 00000000..990abc99 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processdesign/ProcessDesignServiceImpl.java @@ -0,0 +1,112 @@ +package com.chanko.yunxi.mes.module.heli.service.processdesign; + +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import com.chanko.yunxi.mes.module.heli.controller.admin.processdesign.vo.*; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.processdesign.ProcessDesignDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.processdesignprogress.ProcessDesignProgressDO; +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; +import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; + +import com.chanko.yunxi.mes.module.heli.dal.mysql.processdesign.ProcessDesignMapper; +import com.chanko.yunxi.mes.module.heli.dal.mysql.processdesignprogress.ProcessDesignProgressMapper; + +import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.*; + +/** + * 工艺设计 Service 实现类 + * + * @author 管理员 + */ +@Service +@Validated +public class ProcessDesignServiceImpl implements ProcessDesignService { + + @Resource + private ProcessDesignMapper processDesignMapper; + @Resource + private ProcessDesignProgressMapper processDesignProgressMapper; + + @Override + @Transactional(rollbackFor = Exception.class) + public Long createProcessDesign(ProcessDesignSaveReqVO createReqVO) { + // 插入 + ProcessDesignDO processDesign = BeanUtils.toBean(createReqVO, ProcessDesignDO.class); + processDesignMapper.insert(processDesign); + + // 插入子表 + createProcessDesignProgressList(processDesign.getId(), createReqVO.getProcessDesignProgresss()); + // 返回 + return processDesign.getId(); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void updateProcessDesign(ProcessDesignSaveReqVO updateReqVO) { + // 校验存在 + validateProcessDesignExists(updateReqVO.getId()); + // 更新 + ProcessDesignDO updateObj = BeanUtils.toBean(updateReqVO, ProcessDesignDO.class); + processDesignMapper.updateById(updateObj); + + // 更新子表 + updateProcessDesignProgressList(updateReqVO.getId(), updateReqVO.getProcessDesignProgresss()); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteProcessDesign(Long id) { + // 校验存在 + validateProcessDesignExists(id); + // 删除 + processDesignMapper.deleteById(id); + + // 删除子表 + deleteProcessDesignProgressByProcessDesignId(id); + } + + private void validateProcessDesignExists(Long id) { + if (processDesignMapper.selectById(id) == null) { + throw exception(PROCESS_DESIGN_NOT_EXISTS); + } + } + + @Override + public ProcessDesignDO getProcessDesign(Long id) { + return processDesignMapper.selectById(id); + } + + @Override + public PageResult getProcessDesignPage(ProcessDesignPageReqVO pageReqVO) { + return processDesignMapper.selectPage(pageReqVO); + } + + // ==================== 子表(工艺设计进度) ==================== + + @Override + public List getProcessDesignProgressListByProcessDesignId(Long processDesignId) { + return processDesignProgressMapper.selectListByProcessDesignId(processDesignId); + } + + private void createProcessDesignProgressList(Long processDesignId, List list) { + list.forEach(o -> o.setProcessDesignId(processDesignId)); + processDesignProgressMapper.insertBatch(list); + } + + private void updateProcessDesignProgressList(Long processDesignId, List list) { + deleteProcessDesignProgressByProcessDesignId(processDesignId); + list.forEach(o -> o.setId(null).setUpdater(null).setUpdateTime(null)); // 解决更新情况下:1)id 冲突;2)updateTime 不更新 + createProcessDesignProgressList(processDesignId, list); + } + + private void deleteProcessDesignProgressByProcessDesignId(Long processDesignId) { + processDesignProgressMapper.deleteByProcessDesignId(processDesignId); + } + +} \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/projectorder/ProjectOrderServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/projectorder/ProjectOrderServiceImpl.java index b4a19f04..8ba43167 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/projectorder/ProjectOrderServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/projectorder/ProjectOrderServiceImpl.java @@ -15,6 +15,7 @@ import com.chanko.yunxi.mes.module.heli.dal.mysql.projectorder.ProjectOrderSubMa import com.chanko.yunxi.mes.module.heli.enums.BusinesTypeEnum; import com.chanko.yunxi.mes.module.heli.enums.ProjectOrderStatusEnum; import com.chanko.yunxi.mes.module.heli.enums.YesOrNoEnum; +import com.chanko.yunxi.mes.module.heli.manager.CrossOrderManager; import com.chanko.yunxi.mes.module.heli.service.customer.CustomerService; import com.chanko.yunxi.mes.module.heli.service.serialnumber.SerialNumberService; import com.chanko.yunxi.mes.module.infra.controller.admin.file.vo.file.FilePageReqVO; @@ -30,7 +31,10 @@ import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; import java.text.SimpleDateFormat; import java.time.LocalDateTime; -import java.util.*; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; import java.util.stream.Collectors; import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception; @@ -64,6 +68,9 @@ public class ProjectOrderServiceImpl implements ProjectOrderService { @Resource private FileService fileService; + @Resource + private CrossOrderManager crossOrderManager; + @Override @Transactional(rollbackFor = Exception.class) public Long createProjectOrder(ProjectOrderSaveReqVO createReqVO) { @@ -97,7 +104,7 @@ public class ProjectOrderServiceImpl implements ProjectOrderService { SerialNumberDO serialNumberDO = serialNumberService.getSerialNumber(BusinesTypeEnum.PROJECT_ORDER_SNAPSHOT.name(), projectOrder.getCode()); serialNumberDO.setSerialNumber(serialNumberDO.getSerialNumber()+1); projectOrder.setId(null) - .setIsSnapshot(YesOrNoEnum.YES.getCode()) + .setIsSnapshot(YesOrNoEnum.Y.getCode()) .setSnapshotId(createReqVO.getId()) .setSnapshotCode(createReqVO.getCode()) .setSnapshotOrderTime(createReqVO.getOrderTime()) @@ -132,7 +139,8 @@ public class ProjectOrderServiceImpl implements ProjectOrderService { public void updateProjectOrder(ProjectOrderSaveReqVO updateReqVO) { // 校验存在 ProjectOrderDO oldDO = validateProjectOrderExists(updateReqVO.getId()); - if(!oldDO.canOperate(OperateTypeEnum.valueOf(updateReqVO.getActive()))){ + OperateTypeEnum operateTypeEnum = OperateTypeEnum.valueOf(updateReqVO.getActive()); + if(!oldDO.canOperate(operateTypeEnum)){ throw exception(INVALID_OPERATE); } // 更新 @@ -143,6 +151,11 @@ public class ProjectOrderServiceImpl implements ProjectOrderService { // 更新子表 updateProjectOrderSubList(updateReqVO.getId(), updateReqVO.getProjectOrderSubs()); + + // 如已启动 按子项目生成虚拟物料数据 + if(updateObj.getOrderStatus().intValue() == ProjectOrderStatusEnum.APPROVE.getCode()){ + crossOrderManager.generateVirtualMaterial(updateReqVO.getCode(), updateReqVO.getProjectOrderSubs()); + } } @Override diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storage/StorageServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storage/StorageServiceImpl.java index b5ce293c..c7fd07f0 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storage/StorageServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storage/StorageServiceImpl.java @@ -1,11 +1,16 @@ package com.chanko.yunxi.mes.module.heli.service.storage; import cn.hutool.core.lang.UUID; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.serialnumber.SerialNumberDO; +import com.chanko.yunxi.mes.module.heli.enums.BusinesTypeEnum; +import com.chanko.yunxi.mes.module.heli.enums.CodeEnum; +import com.chanko.yunxi.mes.module.heli.service.serialnumber.SerialNumberService; import org.springframework.stereotype.Service; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; import org.springframework.transaction.annotation.Transactional; +import java.text.SimpleDateFormat; import java.util.*; import com.chanko.yunxi.mes.module.heli.controller.admin.storage.vo.*; import com.chanko.yunxi.mes.module.heli.dal.dataobject.storage.StorageDO; @@ -16,8 +21,7 @@ import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; import com.chanko.yunxi.mes.module.heli.dal.mysql.storage.StorageMapper; import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception; -import static com.chanko.yunxi.mes.module.heli.enums.CodeEnum.STOCK_IN; -import static com.chanko.yunxi.mes.module.heli.enums.CodeEnum.WAREHOUSE; +import static com.chanko.yunxi.mes.module.heli.enums.CodeEnum.*; import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.*; /** @@ -32,15 +36,36 @@ public class StorageServiceImpl implements StorageService { @Resource private StorageMapper storageMapper; + @Resource + private SerialNumberService serialNumberService; + @Override + @Transactional(rollbackFor = Exception.class) public Long createStorage(StorageSaveReqVO createReqVO) { // 插入 StorageDO storage = BeanUtils.toBean(createReqVO, StorageDO.class); - storage.setStockNo(UUID.fastUUID().toString(true)); - storageMapper.insert(storage); - storage.setStockNo(STOCK_IN.getCode(storage.getId().toString())); - storageMapper.updateById(storage); + + + SerialNumberDO serialNumberDO = new SerialNumberDO(); + if(createReqVO.getStockType().equals(1)) { + // 月度流水号 + serialNumberDO = serialNumberService.getSerialNumber(CodeEnum.STOCK_IN.name(), new SimpleDateFormat("yyyyMMdd").format(new Date())); + serialNumberDO.setSerialNumber(serialNumberDO.getSerialNumber()+1); + + // 入库前缀 + storage.setStockNo(STOCK_IN.getCode(serialNumberDO.getSerialNumber().toString())); + }else{ + // 月度流水号 + serialNumberDO = serialNumberService.getSerialNumber(CodeEnum.STOCK_OUT.name(), new SimpleDateFormat("yyyyMMdd").format(new Date())); + serialNumberDO.setSerialNumber(serialNumberDO.getSerialNumber()+1); + + // 出库前缀 + storage.setStockNo(STOCK_OUT.getCode(serialNumberDO.getSerialNumber().toString())); + } + storageMapper.insert(storage); + // 回写序列记录 + serialNumberService.updateSerialNumber(serialNumberDO); // 返回 return storage.getId(); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagecheck/StorageCheckService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagecheck/StorageCheckService.java index 5c7412f8..d92c3cc6 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagecheck/StorageCheckService.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagecheck/StorageCheckService.java @@ -1,55 +1,58 @@ -package com.chanko.yunxi.mes.module.heli.service.storagecheck; - -import java.util.*; -import javax.validation.*; -import com.chanko.yunxi.mes.module.heli.controller.admin.storagecheck.vo.*; -import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagecheck.StorageCheckDO; -import com.chanko.yunxi.mes.framework.common.pojo.PageResult; -import com.chanko.yunxi.mes.framework.common.pojo.PageParam; - -/** - * 入/出库盘点 Service 接口 - * - * @author 管理员 - */ -public interface StorageCheckService { - - /** - * 创建入/出库盘点 - * - * @param createReqVO 创建信息 - * @return 编号 - */ - Long createStorageCheck(@Valid StorageCheckSaveReqVO createReqVO); - - /** - * 更新入/出库盘点 - * - * @param updateReqVO 更新信息 - */ - void updateStorageCheck(@Valid StorageCheckSaveReqVO updateReqVO); - - /** - * 删除入/出库盘点 - * - * @param id 编号 - */ - void deleteStorageCheck(Long id); - - /** - * 获得入/出库盘点 - * - * @param id 编号 - * @return 入/出库盘点 - */ - StorageCheckDO getStorageCheck(Long id); - - /** - * 获得入/出库盘点分页 - * - * @param pageReqVO 分页查询 - * @return 入/出库盘点分页 - */ - PageResult getStorageCheckPage(StorageCheckPageReqVO pageReqVO); - -} \ No newline at end of file +package com.chanko.yunxi.mes.module.heli.service.storagecheck; + +import java.util.*; +import javax.validation.*; +import com.chanko.yunxi.mes.module.heli.controller.admin.storagecheck.vo.*; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagecheck.StorageCheckDO; +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagecheckmat.StorageCheckMatDO; + +/** + * 入/出库盘点 Service 接口 + * + * @author 管理员 + */ +public interface StorageCheckService { + + /** + * 创建入/出库盘点 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createStorageCheck(@Valid StorageCheckSaveReqVO createReqVO); + + /** + * 更新入/出库盘点 + * + * @param updateReqVO 更新信息 + */ + void updateStorageCheck(@Valid StorageCheckSaveReqVO updateReqVO); + + /** + * 删除入/出库盘点 + * + * @param id 编号 + */ + void deleteStorageCheck(Long id); + + /** + * 获得入/出库盘点 + * + * @param id 编号 + * @return 入/出库盘点 + */ + StorageCheckDO getStorageCheck(Long id); + + /** + * 获得入/出库盘点分页 + * + * @param pageReqVO 分页查询 + * @return 入/出库盘点分页 + */ + PageResult getStorageCheckPage(StorageCheckPageReqVO pageReqVO); + + Boolean createStorageByCheckInfo(Long checkId); + +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagecheck/StorageCheckServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagecheck/StorageCheckServiceImpl.java index 192e32ce..cba1d04f 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagecheck/StorageCheckServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagecheck/StorageCheckServiceImpl.java @@ -1,23 +1,38 @@ package com.chanko.yunxi.mes.module.heli.service.storagecheck; import cn.hutool.core.lang.UUID; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.serialnumber.SerialNumberDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.storage.StorageDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagecheckmat.StorageCheckMatDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelog.StorageLogDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagemat.StorageMatDO; +import com.chanko.yunxi.mes.module.heli.dal.mysql.storage.StorageMapper; +import com.chanko.yunxi.mes.module.heli.dal.mysql.storagecheckmat.StorageCheckMatMapper; +import com.chanko.yunxi.mes.module.heli.dal.mysql.storagelog.StorageLogMapper; +import com.chanko.yunxi.mes.module.heli.dal.mysql.storagemat.StorageMatMapper; +import com.chanko.yunxi.mes.module.heli.enums.CodeEnum; +import com.chanko.yunxi.mes.module.heli.service.serialnumber.SerialNumberService; +import com.chanko.yunxi.mes.module.heli.service.storagecheckmat.StorageCheckMatService; +import io.swagger.v3.oas.models.security.SecurityScheme; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import org.springframework.validation.annotation.Validated; +import javax.print.DocFlavor; + import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; +import java.text.SimpleDateFormat; +import java.time.LocalDateTime; import java.util.*; import com.chanko.yunxi.mes.module.heli.controller.admin.storagecheck.vo.*; import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagecheck.StorageCheckDO; import com.chanko.yunxi.mes.framework.common.pojo.PageResult; -import com.chanko.yunxi.mes.framework.common.pojo.PageParam; import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; import com.chanko.yunxi.mes.module.heli.dal.mysql.storagecheck.StorageCheckMapper; import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception; -import static com.chanko.yunxi.mes.module.heli.enums.CodeEnum.STOCK_CHECK; -import static com.chanko.yunxi.mes.module.heli.enums.CodeEnum.STOCK_IN; +import static com.chanko.yunxi.mes.module.heli.enums.CodeEnum.*; import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.*; /** @@ -29,18 +44,43 @@ import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.*; @Validated public class StorageCheckServiceImpl implements StorageCheckService { + @Resource + private StorageLogMapper storageLogMapper; + + @Resource + private StorageMapper storageMapper; + + @Resource + private StorageMatMapper storageMatMapper; + + @Resource + private StorageCheckMatMapper storageCheckMatMapper; + + @Resource private StorageCheckMapper storageCheckMapper; + @Resource + private StorageCheckMatService storageCheckMatService; + + @Resource + private SerialNumberService serialNumberService; + @Override + @Transactional(rollbackFor = Exception.class) public Long createStorageCheck(StorageCheckSaveReqVO createReqVO) { // 插入 StorageCheckDO storageCheck = BeanUtils.toBean(createReqVO, StorageCheckDO.class); - storageCheck.setStockNo(UUID.fastUUID().toString(true)); + // 月度流水号 + SerialNumberDO serialNumberDO = serialNumberService.getSerialNumber(CodeEnum.STOCK_CHECK.name(), new SimpleDateFormat("yyyyMM").format(new Date())); + serialNumberDO.setSerialNumber(serialNumberDO.getSerialNumber()+1); + + storageCheck.setStockNo(STOCK_CHECK.getCode(serialNumberDO.getSerialNumber().toString())); + storageCheckMapper.insert(storageCheck); - storageCheck.setStockNo(STOCK_CHECK.getCode(storageCheck.getId().toString())); - storageCheckMapper.updateById(storageCheck); + // 回写序列记录 + serialNumberService.updateSerialNumber(serialNumberDO); // 返回 return storageCheck.getId(); } @@ -78,4 +118,91 @@ public class StorageCheckServiceImpl implements StorageCheckService { return storageCheckMapper.selectPage(pageReqVO); } + @Override + public Boolean createStorageByCheckInfo(Long checkId){ + + // 获取盘点单据信息 + StorageCheckDO storageCheckDO = this.getStorageCheck(checkId); + // 获取盘点单据物料信息 + List storageCheckMats = storageCheckMatService.getStorageMatListByCheckId(checkId); + + long hasStockIn = storageCheckMats.stream().filter(item->item.getStorageOkQty().subtract(item.getMatRest()).intValue()>0).count(); + long hasStockOut = storageCheckMats.stream().filter(item->item.getStorageOkQty().subtract(item.getMatRest()).intValue()<0).count(); + + if(hasStockIn>0){ + // 库存类型为入库 + saveStorage(storageCheckDO,1,2); + } + if(hasStockOut>0){ + // 库存类型为出库 + saveStorage(storageCheckDO,2,3); + } + return true; + } + private void saveStorage(StorageCheckDO storageCheckDO,Integer stockType,Integer stockInType){ + + LocalDateTime current = LocalDateTime.now(); + // 库存类型为stockType + StorageDO storageDO = new StorageDO(); + storageDO.setStockType(stockType); + storageDO.setStockInType(stockInType); + storageDO.setStockNo(UUID.fastUUID().toString(true)); + storageDO.setHeaderNo(storageCheckDO.getStockNo()); + storageDO.setStatus(2); + storageDO.setDescription(storageCheckDO.getDescription()); + storageDO.setWhId(storageCheckDO.getWhId()); + storageDO.setKeeper(storageCheckDO.getKeeper()); + storageDO.setKeeperTime(current); + storageDO.setOutbound(storageCheckDO.getKeeper()); + storageDO.setOutboundTime(current); + storageDO.setDescription("由盘点单号"+storageCheckDO.getStockNo()+"提交产生"); + + + storageMapper.insert(storageDO); + storageDO.setStockNo(STOCK_IN.getCode(storageDO.getId().toString())); + storageMapper.updateById(storageDO); + + saveStorageMat(storageCheckDO,storageDO.getId(),stockType); + } + + private void saveStorageMat(StorageCheckDO storageCheckDO, Long stockId, Integer stockType){ + + List storageCheckMats = storageCheckMatMapper.selectListByCheckID(storageCheckDO.getId()); + + for(StorageCheckMatDO item : storageCheckMats){ + + StorageMatDO storageMatDO = new StorageMatDO(); + storageMatDO.setStockId(stockId); + storageMatDO.setMatId(item.getMatId()); + storageMatDO.setWhId(item.getWhId()); + storageMatDO.setRgId(item.getRgId()); + storageMatDO.setPnId(item.getPnId()); + storageMatDO.setStorageOkQty(item.getStorageOkQty().subtract(item.getMatRest()).abs()); + storageMatDO.setLotNo(item.getLotNo()); + + // 插入出入库物料表 + if(stockType == 1 && item.getStorageOkQty().subtract(item.getMatRest()).doubleValue()>0){ + storageMatMapper.insert(storageMatDO); + saveStorageLog(storageMatDO); + } + if(stockType == 2 && item.getStorageOkQty().subtract(item.getMatRest()).doubleValue()<0){ + storageMatMapper.insert(storageMatDO); + saveStorageLog(storageMatDO); + } + } + } + private void saveStorageLog(StorageMatDO storageMatDO){ + // 插入库存日志表 + StorageLogDO storageLogDO = new StorageLogDO(); + storageLogDO.setStockId(storageMatDO.getStockId()); + storageLogDO.setMatId(storageMatDO.getMatId()); + storageLogDO.setWhId(storageMatDO.getWhId()); + storageLogDO.setRgId(storageMatDO.getRgId()); + storageLogDO.setPnId(storageMatDO.getPnId()); + storageLogDO.setStorageOkQty(storageMatDO.getStorageOkQty()); + storageLogDO.setLotNo(storageMatDO.getLotNo()); + storageLogDO.setStatus(2); + + storageLogMapper.insert(storageLogDO); + } } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagecheckmat/StorageCheckMatService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagecheckmat/StorageCheckMatService.java index 00227048..07adc6f1 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagecheckmat/StorageCheckMatService.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagecheckmat/StorageCheckMatService.java @@ -1,55 +1,59 @@ -package com.chanko.yunxi.mes.module.heli.service.storagecheckmat; - -import java.util.*; -import javax.validation.*; -import com.chanko.yunxi.mes.module.heli.controller.admin.storagecheckmat.vo.*; -import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagecheckmat.StorageCheckMatDO; -import com.chanko.yunxi.mes.framework.common.pojo.PageResult; -import com.chanko.yunxi.mes.framework.common.pojo.PageParam; - -/** - * 盘点物料 Service 接口 - * - * @author 管理员 - */ -public interface StorageCheckMatService { - - /** - * 创建盘点物料 - * - * @param createReqVO 创建信息 - * @return 编号 - */ - Long createStorageCheckMat(@Valid StorageCheckMatSaveReqVO createReqVO); - - /** - * 更新盘点物料 - * - * @param updateReqVO 更新信息 - */ - void updateStorageCheckMat(@Valid StorageCheckMatSaveReqVO updateReqVO); - - /** - * 删除盘点物料 - * - * @param id 编号 - */ - void deleteStorageCheckMat(Long id); - - /** - * 获得盘点物料 - * - * @param id 编号 - * @return 盘点物料 - */ - StorageCheckMatDO getStorageCheckMat(Long id); - - /** - * 获得盘点物料分页 - * - * @param pageReqVO 分页查询 - * @return 盘点物料分页 - */ - PageResult getStorageCheckMatPage(StorageCheckMatPageReqVO pageReqVO); - -} \ No newline at end of file +package com.chanko.yunxi.mes.module.heli.service.storagecheckmat; + +import java.util.*; +import javax.validation.*; +import com.chanko.yunxi.mes.module.heli.controller.admin.storagecheckmat.vo.*; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagecheckmat.StorageCheckMatDO; +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; + +/** + * 盘点物料 Service 接口 + * + * @author 管理员 + */ +public interface StorageCheckMatService { + + /** + * 创建盘点物料 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createStorageCheckMat(@Valid StorageCheckMatSaveReqVO createReqVO); + + /** + * 更新盘点物料 + * + * @param updateReqVO 更新信息 + */ + void updateStorageCheckMat(@Valid StorageCheckMatSaveReqVO updateReqVO); + + /** + * 删除盘点物料 + * + * @param id 编号 + */ + void deleteStorageCheckMat(Long id); + + /** + * 获得盘点物料 + * + * @param id 编号 + * @return 盘点物料 + */ + StorageCheckMatDO getStorageCheckMat(Long id); + + /** + * 获得盘点物料分页 + * + * @param pageReqVO 分页查询 + * @return 盘点物料分页 + */ + PageResult getStorageCheckMatPage(StorageCheckMatPageReqVO pageReqVO); + + List getStorageMatListByCheckId(Long id); + + Integer deleteCheckMatList(Long checkId); + +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagecheckmat/StorageCheckMatServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagecheckmat/StorageCheckMatServiceImpl.java index 6ab814b3..b5a33518 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagecheckmat/StorageCheckMatServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagecheckmat/StorageCheckMatServiceImpl.java @@ -1,74 +1,88 @@ -package com.chanko.yunxi.mes.module.heli.service.storagecheckmat; - -import org.springframework.stereotype.Service; -import javax.annotation.Resource; -import org.springframework.validation.annotation.Validated; -import org.springframework.transaction.annotation.Transactional; - -import java.util.*; -import com.chanko.yunxi.mes.module.heli.controller.admin.storagecheckmat.vo.*; -import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagecheckmat.StorageCheckMatDO; -import com.chanko.yunxi.mes.framework.common.pojo.PageResult; -import com.chanko.yunxi.mes.framework.common.pojo.PageParam; -import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; - -import com.chanko.yunxi.mes.module.heli.dal.mysql.storagecheckmat.StorageCheckMatMapper; - -import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception; -import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.*; - -/** - * 盘点物料 Service 实现类 - * - * @author 管理员 - */ -@Service -@Validated -public class StorageCheckMatServiceImpl implements StorageCheckMatService { - - @Resource - private StorageCheckMatMapper storageCheckMatMapper; - - @Override - public Long createStorageCheckMat(StorageCheckMatSaveReqVO createReqVO) { - // 插入 - StorageCheckMatDO storageCheckMat = BeanUtils.toBean(createReqVO, StorageCheckMatDO.class); - storageCheckMatMapper.insert(storageCheckMat); - // 返回 - return storageCheckMat.getId(); - } - - @Override - public void updateStorageCheckMat(StorageCheckMatSaveReqVO updateReqVO) { - // 校验存在 - validateStorageCheckMatExists(updateReqVO.getId()); - // 更新 - StorageCheckMatDO updateObj = BeanUtils.toBean(updateReqVO, StorageCheckMatDO.class); - storageCheckMatMapper.updateById(updateObj); - } - - @Override - public void deleteStorageCheckMat(Long id) { - // 校验存在 - validateStorageCheckMatExists(id); - // 删除 - storageCheckMatMapper.deleteById(id); - } - - private void validateStorageCheckMatExists(Long id) { - if (storageCheckMatMapper.selectById(id) == null) { - throw exception(STORAGE_CHECK_MAT_NOT_EXISTS); - } - } - - @Override - public StorageCheckMatDO getStorageCheckMat(Long id) { - return storageCheckMatMapper.selectById(id); - } - - @Override - public PageResult getStorageCheckMatPage(StorageCheckMatPageReqVO pageReqVO) { - return storageCheckMatMapper.selectPage(pageReqVO); - } - -} \ No newline at end of file +package com.chanko.yunxi.mes.module.heli.service.storagecheckmat; + +import com.google.common.collect.Maps; +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import com.chanko.yunxi.mes.module.heli.controller.admin.storagecheckmat.vo.*; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagecheckmat.StorageCheckMatDO; +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; +import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; + +import com.chanko.yunxi.mes.module.heli.dal.mysql.storagecheckmat.StorageCheckMatMapper; + +import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.*; + +/** + * 盘点物料 Service 实现类 + * + * @author 管理员 + */ +@Service +@Validated +public class StorageCheckMatServiceImpl implements StorageCheckMatService { + + @Resource + private StorageCheckMatMapper storageCheckMatMapper; + + @Override + public Long createStorageCheckMat(StorageCheckMatSaveReqVO createReqVO) { + // 插入 + StorageCheckMatDO storageCheckMat = BeanUtils.toBean(createReqVO, StorageCheckMatDO.class); + storageCheckMatMapper.insert(storageCheckMat); + // 返回 + return storageCheckMat.getId(); + } + + @Override + public void updateStorageCheckMat(StorageCheckMatSaveReqVO updateReqVO) { + // 校验存在 + validateStorageCheckMatExists(updateReqVO.getId()); + // 更新 + StorageCheckMatDO updateObj = BeanUtils.toBean(updateReqVO, StorageCheckMatDO.class); + storageCheckMatMapper.updateById(updateObj); + } + + @Override + public void deleteStorageCheckMat(Long id) { + // 校验存在 + validateStorageCheckMatExists(id); + // 删除 + storageCheckMatMapper.deleteById(id); + } + + private void validateStorageCheckMatExists(Long id) { + if (storageCheckMatMapper.selectById(id) == null) { + throw exception(STORAGE_CHECK_MAT_NOT_EXISTS); + } + } + + @Override + public StorageCheckMatDO getStorageCheckMat(Long id) { + return storageCheckMatMapper.selectById(id); + } + + @Override + public PageResult getStorageCheckMatPage(StorageCheckMatPageReqVO pageReqVO) { + return storageCheckMatMapper.selectPage(pageReqVO); + } + + @Override + public List getStorageMatListByCheckId(Long id){ + return storageCheckMatMapper.selectListByCheckID(id); + } + + @Override + public Integer deleteCheckMatList(Long checkId) { + //删除条件 + Map columnMap = Maps.newHashMap(); + columnMap.put("check_id", checkId); + + return storageCheckMatMapper.deleteByMap(columnMap); + } +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagelog/StorageLogService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagelog/StorageLogService.java index f5506731..dd4adf47 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagelog/StorageLogService.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagelog/StorageLogService.java @@ -57,6 +57,10 @@ public interface StorageLogService { PageResult getStorageNowPage(StorageLogPageReqVO pageReqVO); + List selectNowByMatPnId(Long matId,Long pnId); + + List getStorageNowList(StorageNowAllReqVO queryReqVO); + void createStorageLogBatch(List storageLogDOs); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagelog/StorageLogServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagelog/StorageLogServiceImpl.java index 133a0b86..585aaf6d 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagelog/StorageLogServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagelog/StorageLogServiceImpl.java @@ -86,6 +86,23 @@ public class StorageLogServiceImpl implements StorageLogService { return storageLogNowMapper.selectPage(pageReqVO); } + @Override + public List getStorageNowList(StorageNowAllReqVO queryReqVO) { + if(queryReqVO.getNoZero().equals(1)){ + // 根据仓库id排除库存为o的物料 + return storageLogNowMapper.selectNoZero(queryReqVO); + }else{ + // 筛选全部的实时库存数据,包含未分配仓库的物料信息和已分配仓库的物料信息 + return storageLogNowMapper.selectNowList(queryReqVO); + } + // + } + + @Override + public List selectNowByMatPnId(Long matId,Long pnId) { + return storageLogNowMapper.selectNowByMatPnId(matId,pnId); + } + @Override public void createStorageLogBatch(List storageLogDOs) { for (StorageLogDO storageLogDo : storageLogDOs){ diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagemat/StorageMatService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagemat/StorageMatService.java index 8d5d1354..a640d95d 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagemat/StorageMatService.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagemat/StorageMatService.java @@ -50,16 +50,16 @@ public interface StorageMatService { * @param pageReqVO 分页查询 * @return 入/出库物料分页 */ - PageResult getStorageMatPage(StorageMatPageReqVO pageReqVO); + List getStorageMatPage(StorageMatPageReqVO pageReqVO); /** * 获得入/出库物料列表 * * @return 入/出库物料分页 */ - List getStorageMatList(); + List getStorageMatList(Long whId); - int deleteStorageMatList(Long stockId); + Integer deleteStorageMatList(Long stockId); List getStorageMatListByStockId(Long stockId); diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagemat/StorageMatServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagemat/StorageMatServiceImpl.java index 0bf3f0dd..7c43a01e 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagemat/StorageMatServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/storagemat/StorageMatServiceImpl.java @@ -73,17 +73,17 @@ public class StorageMatServiceImpl implements StorageMatService { } @Override - public PageResult getStorageMatPage(StorageMatPageReqVO pageReqVO) { - return storageMatMapper.selectPage(pageReqVO); + public List getStorageMatPage(StorageMatPageReqVO pageReqVO) { + return storageMatMapper.selectMatByStorckID(pageReqVO.getStockId()); } @Override - public List getStorageMatList() { - return storageMatMapper.selectStorageMatValid(); + public List getStorageMatList(Long whId) { + return storageMatMapper.selectStorageMatValid(whId); } @Override - public int deleteStorageMatList(Long stockId) { + public Integer deleteStorageMatList(Long stockId) { //删除条件 Map columnMap = Maps.newHashMap(); columnMap.put("stock_id", stockId); diff --git a/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/equip/EquipMapper.xml b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/equip/EquipMapper.xml new file mode 100644 index 00000000..6a50e306 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/equip/EquipMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/processdesign/ProcessDesignMapper.xml b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/processdesign/ProcessDesignMapper.xml new file mode 100644 index 00000000..977e7839 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/processdesign/ProcessDesignMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/storagelog/StorageLogAllMapper.xml b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/storagelog/StorageLogAllMapper.xml index 7a67ca90..5b89c818 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/storagelog/StorageLogAllMapper.xml +++ b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/storagelog/StorageLogAllMapper.xml @@ -55,4 +55,46 @@ + + \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/storagelog/StorageLogNowMapper.xml b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/storagelog/StorageLogNowMapper.xml new file mode 100644 index 00000000..f0a73ad1 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/storagelog/StorageLogNowMapper.xml @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/storagemat/StorageMatMapper.xml b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/storagemat/StorageMatMapper.xml index 73a91ddf..a5a263b2 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/storagemat/StorageMatMapper.xml +++ b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/storagemat/StorageMatMapper.xml @@ -22,7 +22,10 @@ - select mat_id,mat_name,mat_code,mat_rest,material_type,wh_id,rg_id,pn_id,spec as mat_spec,unit as mat_unit,'' as lot_no,storage_ok_qty from v_storage_material_amount where mat_rest > 0 + + AND wh_id = #{wh_id} + \ No newline at end of file diff --git a/mes-ui/mes-echarts/src/views/mainrigth.vue b/mes-ui/mes-echarts/src/views/mainrigth.vue index 68d479d5..462ea144 100644 --- a/mes-ui/mes-echarts/src/views/mainrigth.vue +++ b/mes-ui/mes-echarts/src/views/mainrigth.vue @@ -65,7 +65,7 @@ export default { align: ["left", "left", "center", "center", "center", "left"], }, configs: { - header: ["模具名称", "负责人", "进度", "交付时间"], + header: ["项目名称", "负责人", "进度", "交付时间"], data: [ ["JCGK-支架", "B组", "100%", "2023/12/2"], ["DYDJ-0871机壳", "B组", "90%", "2023/12/6"], diff --git a/mes-ui/mes-ui-admin-vue3/src/api/heli/equip/index.ts b/mes-ui/mes-ui-admin-vue3/src/api/heli/equip/index.ts new file mode 100644 index 00000000..d5768c97 --- /dev/null +++ b/mes-ui/mes-ui-admin-vue3/src/api/heli/equip/index.ts @@ -0,0 +1,38 @@ +import request from '@/config/axios' + +export interface EquipVO { + id: number + name: string + mouldTypeId: number + status: number +} + +// 查询设备信息分页 +export const getEquipPage = async (params) => { + return await request.get({ url: `/heli/equip/page`, params }) +} + +// 查询设备信息详情 +export const getEquip = async (id: number) => { + return await request.get({ url: `/heli/equip/get?id=` + id }) +} + +// 新增设备信息 +export const createEquip = async (data: EquipVO) => { + return await request.post({ url: `/heli/equip/create`, data }) +} + +// 修改设备信息 +export const updateEquip = async (data: EquipVO) => { + return await request.put({ url: `/heli/equip/update`, data }) +} + +// 删除设备信息 +export const deleteEquip = async (id: number) => { + return await request.delete({ url: `/heli/equip/delete?id=` + id }) +} + +// 导出设备信息 Excel +export const exportEquip = async (params) => { + return await request.download({ url: `/heli/equip/export-excel`, params }) +} diff --git a/mes-ui/mes-ui-admin-vue3/src/api/heli/material/index.ts b/mes-ui/mes-ui-admin-vue3/src/api/heli/material/index.ts index 5e26667b..8360586f 100644 --- a/mes-ui/mes-ui-admin-vue3/src/api/heli/material/index.ts +++ b/mes-ui/mes-ui-admin-vue3/src/api/heli/material/index.ts @@ -28,6 +28,14 @@ export interface MaterialVO { virtualPart: string logo: string } +// 查询物料 +export const getSimpVirtualList = async () => { + return await request.get({ url: `/heli/material/all-simples-virtual` }) +} +// 查询物料 +export const getSimpList = async () => { + return await request.get({ url: `/heli/material/all-simples` }) +} // 查询物料分页 export const getMaterialPage = async (params) => { diff --git a/mes-ui/mes-ui-admin-vue3/src/api/heli/mouldtype/index.ts b/mes-ui/mes-ui-admin-vue3/src/api/heli/mouldtype/index.ts index 7f7bb76d..dd43ee4c 100644 --- a/mes-ui/mes-ui-admin-vue3/src/api/heli/mouldtype/index.ts +++ b/mes-ui/mes-ui-admin-vue3/src/api/heli/mouldtype/index.ts @@ -1,37 +1,42 @@ -import request from '@/config/axios' - -export interface MouldTypeVO { - id: number - name: string - status: number -} - -// 查询模具类型分页 -export const getMouldTypePage = async (params) => { - return await request.get({ url: `/heli/mould-type/page`, params }) -} - -// 查询模具类型详情 -export const getMouldType = async (id: number) => { - return await request.get({ url: `/heli/mould-type/get?id=` + id }) -} - -// 新增模具类型 -export const createMouldType = async (data: MouldTypeVO) => { - return await request.post({ url: `/heli/mould-type/create`, data }) -} - -// 修改模具类型 -export const updateMouldType = async (data: MouldTypeVO) => { - return await request.put({ url: `/heli/mould-type/update`, data }) -} - -// 删除模具类型 -export const deleteMouldType = async (id: number) => { - return await request.delete({ url: `/heli/mould-type/delete?id=` + id }) -} - -// 导出模具类型 Excel -export const exportMouldType = async (params) => { - return await request.download({ url: `/heli/mould-type/export-excel`, params }) -} \ No newline at end of file +import request from '@/config/axios' + +export interface MouldTypeVO { + id: number + name: string + status: number +} + +// 查询模具类型全页数据 +export const getSimpList = async () => { + return await request.get({ url: `/heli/mould-type/all-simples` }) +} + +// 查询模具类型分页 +export const getMouldTypePage = async (params) => { + return await request.get({ url: `/heli/mould-type/page`, params }) +} + +// 查询模具类型详情 +export const getMouldType = async (id: number) => { + return await request.get({ url: `/heli/mould-type/get?id=` + id }) +} + +// 新增模具类型 +export const createMouldType = async (data: MouldTypeVO) => { + return await request.post({ url: `/heli/mould-type/create`, data }) +} + +// 修改模具类型 +export const updateMouldType = async (data: MouldTypeVO) => { + return await request.put({ url: `/heli/mould-type/update`, data }) +} + +// 删除模具类型 +export const deleteMouldType = async (id: number) => { + return await request.delete({ url: `/heli/mould-type/delete?id=` + id }) +} + +// 导出模具类型 Excel +export const exportMouldType = async (params) => { + return await request.download({ url: `/heli/mould-type/export-excel`, params }) +} diff --git a/mes-ui/mes-ui-admin-vue3/src/api/heli/processdesign/index.ts b/mes-ui/mes-ui-admin-vue3/src/api/heli/processdesign/index.ts new file mode 100644 index 00000000..5feae98d --- /dev/null +++ b/mes-ui/mes-ui-admin-vue3/src/api/heli/processdesign/index.ts @@ -0,0 +1,48 @@ +import request from '@/config/axios' + +export interface ProcessDesignVO { + id: number + planId: number + saleOrderId: number + saleOrderSubId: number + processDesignType: string + remark: string + status: number +} + +// 查询工艺设计分页 +export const getProcessDesignPage = async (params) => { + return await request.get({ url: `/heli/process-design/page`, params }) +} + +// 查询工艺设计详情 +export const getProcessDesign = async (id: number) => { + return await request.get({ url: `/heli/process-design/get?id=` + id }) +} + +// 新增工艺设计 +export const createProcessDesign = async (data: ProcessDesignVO) => { + return await request.post({ url: `/heli/process-design/create`, data }) +} + +// 修改工艺设计 +export const updateProcessDesign = async (data: ProcessDesignVO) => { + return await request.put({ url: `/heli/process-design/update`, data }) +} + +// 删除工艺设计 +export const deleteProcessDesign = async (id: number) => { + return await request.delete({ url: `/heli/process-design/delete?id=` + id }) +} + +// 导出工艺设计 Excel +export const exportProcessDesign = async (params) => { + return await request.download({ url: `/heli/process-design/export-excel`, params }) +} + +// ==================== 子表(工艺设计进度) ==================== + +// 获得工艺设计进度列表 +export const getProcessDesignProgressListByProcessDesignId = async (processDesignId) => { + return await request.get({ url: `/heli/process-design/process-design-progress/list-by-process-design-id?processDesignId=` + processDesignId }) +} \ No newline at end of file diff --git a/mes-ui/mes-ui-admin-vue3/src/api/heli/storagecheck/index.ts b/mes-ui/mes-ui-admin-vue3/src/api/heli/storagecheck/index.ts index 1a596650..e0b9a570 100644 --- a/mes-ui/mes-ui-admin-vue3/src/api/heli/storagecheck/index.ts +++ b/mes-ui/mes-ui-admin-vue3/src/api/heli/storagecheck/index.ts @@ -17,6 +17,16 @@ export interface StorageCheckVO { cancelTime: Date } + +// 查询入/出库实时分页 +export const updateStorageCheckStatus = async (checkid:number) => { + return await request.put({ url: `/heli/storage-check/update-status?checkId=`+checkid }) +} +// 查询入/出库实时分页 +export const getStorageNowMatRest = async (matid:number,pnid:number) => { + return await request.get({ url: `/heli/storage-log/matRest?matId=`+matid+'&pnId='+pnid }) +} + // 查询入/出库盘点分页 export const getStorageCheckPage = async (params) => { return await request.get({ url: `/heli/storage-check/page`, params }) diff --git a/mes-ui/mes-ui-admin-vue3/src/api/heli/storagecheckmat/index.ts b/mes-ui/mes-ui-admin-vue3/src/api/heli/storagecheckmat/index.ts index c2efa32c..a4d60d73 100644 --- a/mes-ui/mes-ui-admin-vue3/src/api/heli/storagecheckmat/index.ts +++ b/mes-ui/mes-ui-admin-vue3/src/api/heli/storagecheckmat/index.ts @@ -1,43 +1,52 @@ -import request from '@/config/axios' - -export interface StorageCheckMatVO { - id: number - checkId: number - matId: number - whId: number - rgId: number - pnId: number - storageOkQty: number - matRest: number - lotNo: string -} - -// 查询盘点物料分页 -export const getStorageCheckMatPage = async (params) => { - return await request.get({ url: `/heli/storage-check-mat/page`, params }) -} - -// 查询盘点物料详情 -export const getStorageCheckMat = async (id: number) => { - return await request.get({ url: `/heli/storage-check-mat/get?id=` + id }) -} - -// 新增盘点物料 -export const createStorageCheckMat = async (data: StorageCheckMatVO) => { - return await request.post({ url: `/heli/storage-check-mat/create`, data }) -} - -// 修改盘点物料 -export const updateStorageCheckMat = async (data: StorageCheckMatVO) => { - return await request.put({ url: `/heli/storage-check-mat/update`, data }) -} - -// 删除盘点物料 -export const deleteStorageCheckMat = async (id: number) => { - return await request.delete({ url: `/heli/storage-check-mat/delete?id=` + id }) -} - -// 导出盘点物料 Excel -export const exportStorageCheckMat = async (params) => { - return await request.download({ url: `/heli/storage-check-mat/export-excel`, params }) -} \ No newline at end of file +import request from '@/config/axios' + +export interface StorageCheckMatVO { + id: number + checkId: number + matId: number + whId: number + rgId: number + pnId: number + storageOkQty: number + matRest: number + lotNo: string +} + +// 根据盘点ID查询物料列表 +export const getStorageCheckListByCheckID = async (id:number) => { + return await request.get({ url: `/heli/storage-check-mat/list?checkId=`+id }) +} +// 批量新增盘点物料 +export const createCheckMatBatch = async (data: StorageCheckMatVO[],id:number) => { + return await request.post({ url: `/heli/storage-check/create-batch?checkId=`+id, data }) +} + +// 查询盘点物料分页 +export const getStorageCheckMatPage = async (params) => { + return await request.get({ url: `/heli/storage-check-mat/page`, params }) +} + +// 查询盘点物料详情 +export const getStorageCheckMat = async (id: number) => { + return await request.get({ url: `/heli/storage-check-mat/get?id=` + id }) +} + +// 新增盘点物料 +export const createStorageCheckMat = async (data: StorageCheckMatVO) => { + return await request.post({ url: `/heli/storage-check-mat/create`, data }) +} + +// 修改盘点物料 +export const updateStorageCheckMat = async (data: StorageCheckMatVO) => { + return await request.put({ url: `/heli/storage-check-mat/update`, data }) +} + +// 删除盘点物料 +export const deleteStorageCheckMat = async (id: number) => { + return await request.delete({ url: `/heli/storage-check-mat/delete?id=` + id }) +} + +// 导出盘点物料 Excel +export const exportStorageCheckMat = async (params) => { + return await request.download({ url: `/heli/storage-check-mat/export-excel`, params }) +} diff --git a/mes-ui/mes-ui-admin-vue3/src/api/heli/storagelog/index.ts b/mes-ui/mes-ui-admin-vue3/src/api/heli/storagelog/index.ts index 01989c02..1c648206 100644 --- a/mes-ui/mes-ui-admin-vue3/src/api/heli/storagelog/index.ts +++ b/mes-ui/mes-ui-admin-vue3/src/api/heli/storagelog/index.ts @@ -10,8 +10,18 @@ export interface StorageLogVO { storageOkQty: number lotNo: string description: string + noZero: number + matCode: string + matType:string } + +// 查询入/出库实时分页 +export const getStorageNowList = async (params) => { + return await request.get({ url: `/heli/storage-log/all`, params }) +} + + // 查询入/出库实时分页 export const getStorageNowPage = async (params) => { return await request.get({ url: `/heli/storage-log/now`, params }) diff --git a/mes-ui/mes-ui-admin-vue3/src/api/heli/storagemat/index.ts b/mes-ui/mes-ui-admin-vue3/src/api/heli/storagemat/index.ts index 8bc6f8fe..97124e70 100644 --- a/mes-ui/mes-ui-admin-vue3/src/api/heli/storagemat/index.ts +++ b/mes-ui/mes-ui-admin-vue3/src/api/heli/storagemat/index.ts @@ -14,8 +14,8 @@ export interface StorageMatVO { } // 查询入/出库物料详情 -export const getStorageMatList = async () => { - return await request.get({ url: `/heli/storage-mat/get-materials`}) +export const getStorageMatList = async (whId:number) => { + return await request.get({ url: `/heli/storage-mat/get-materials?whId=`+whId}) } // 查询入/出库物料分页 diff --git a/mes-ui/mes-ui-admin-vue3/src/assets/imgs/status/deliver.png b/mes-ui/mes-ui-admin-vue3/src/assets/imgs/status/deliver.png new file mode 100644 index 00000000..4568c2d9 Binary files /dev/null and b/mes-ui/mes-ui-admin-vue3/src/assets/imgs/status/deliver.png differ diff --git a/mes-ui/mes-ui-admin-vue3/src/store/modules/common.ts b/mes-ui/mes-ui-admin-vue3/src/store/modules/common.ts new file mode 100644 index 00000000..db9b9658 --- /dev/null +++ b/mes-ui/mes-ui-admin-vue3/src/store/modules/common.ts @@ -0,0 +1,23 @@ +import { defineStore } from 'pinia' +import { store } from '../index' + +export interface CommonStoreState { + storeMap: object +} + +export const useCommonStore = defineStore('commonStore', () => { + const storeMap = ref({}) + const getStore = (key) => { + return storeMap.value[key] + } + const setStore = (key, value) => { + return storeMap.value[key] = value + } + + return {getStore, setStore} +}) + +export const useCommonStateWithOut = () => { + return useCommonStore(store) +} + diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/deliverorder/detail.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/deliverorder/detail.vue index 11468955..eb90a40a 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/deliverorder/detail.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/deliverorder/detail.vue @@ -1,16 +1,16 @@ +
+ ${printNode.innerHTML} +
`) + doc.close() + // 浏览器打印页面打开渲染 + setTimeout(() => { + newIframe.contentWindow.focus() + newIframe.contentWindow.print() + document.body.removeChild(newIframe) // 移除打印内框架,下次打印下次再挂载 + dialogVisible.value = false + }, 100) +} +const outopen = () => { + dialogVisible.value = false +} +const queryParams: any = ref({ + code: undefined +}) + +const formLoading = ref(false) + +const formData: any = ref({ + id: undefined, + code: undefined, + saleOrderIds: undefined, + saleOrderCode: undefined, + contractNo: undefined, + property: undefined, + customerId: undefined, + customerName: undefined, + projectName: undefined, + deliverDate: undefined, + deliverStatus: 1, + deliverPerson: undefined, + deliverPersonName: undefined, + deliverPersonMobile: undefined, + deliverMode: undefined, + receivePersonMobile: undefined, + transportDriverName: undefined, + transportDriverMobile: undefined, + transportBusNumber: undefined, + transportWeight: undefined, + transportSize: undefined, + remark: undefined, + status: 1, + receivePersonName: undefined, + receiveAddress: undefined, + deliverOrderSubs: [], + deliverOrderOtherSubs: [], + deliverOrderOtherSpareSubs: [], + deliverOrderOtherCutterSubs: [], + attachments: [], + operateLogs: [], + active: undefined, + deliverCompany: '杭州合立机械有限公司' +}) + +const subTotalAmount = ref(0) +const splitThreshold = 5 +const logoDataUrl = ref('') // 存储Logo的Base64编码数据URL + +/** 打开弹窗 */ +const open = async (id: number) => { + dialogVisible.value = true + // 修改时,设置数据 + formLoading.value = true + try { + formData.value = await getDeliverOrder(id) + formData.value.deliverCompany = '杭州合立机械有限公司' + + // 性质 + let properties = formData.value.property.split(',') + let property = '' + for (let i = 0; i < properties.length; i++) { + property += getDictLabel(DICT_TYPE.HELI_PROJECT_PROPERTY, properties[i]) + ',' + } + formData.value.property = property.substring(0, property.length - 1) + + // 子项列表 + const subArr = await getDeliverOrderSubListByDeliveryOrderId(id) + subTotalAmount.value = subArr.length + + if (subTotalAmount.value > splitThreshold) { + formData.value.deliverOrderSubs = subArr.filter((sub) => sub.category == 'DELIVER_LIST') + + // 分类清单 + formData.value.deliverOrderOtherSpareSubs = subArr.filter( + (sub) => sub.category == 'OTHER_LIST' && sub.subType == 1 + ) + formData.value.deliverOrderOtherCutterSubs = subArr.filter( + (sub) => sub.category == 'OTHER_LIST' && sub.subType == 2 + ) + } else { + formData.value.deliverOrderSubs = subArr + } + + //图片 + // 在组件挂载后,将Logo图片转换为Base64编码数据URL + const logoImage = new Image() + logoImage.src = urlimg // 替换为Logo图片路径 + + logoImage.onload = () => { + const canvas = document.createElement('canvas') + canvas.width = logoImage.width + canvas.height = logoImage.height + const context = canvas.getContext('2d') + context.drawImage(logoImage, 0, 0) + const base64String = canvas.toDataURL('image/png') + logoDataUrl.value = base64String + } + } finally { + formLoading.value = false + } +} +defineExpose({ open }) // 提供 open 方法,用于打开弹窗 + +onMounted(() => {}) + + + diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/equip/EquipForm.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/equip/EquipForm.vue new file mode 100644 index 00000000..4120705c --- /dev/null +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/equip/EquipForm.vue @@ -0,0 +1,122 @@ + + \ No newline at end of file diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/equip/index.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/equip/index.vue new file mode 100644 index 00000000..cc3373dc --- /dev/null +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/equip/index.vue @@ -0,0 +1,186 @@ + + + \ No newline at end of file diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/hlvuestyle/dayin.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/hlvuestyle/dayin.vue index d8e6ec5e..10055918 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/hlvuestyle/dayin.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/hlvuestyle/dayin.vue @@ -1,17 +1,21 @@ diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/hlvuestyle/dialogSelect.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/hlvuestyle/dialogSelect.vue new file mode 100644 index 00000000..87230389 --- /dev/null +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/hlvuestyle/dialogSelect.vue @@ -0,0 +1,135 @@ + + + + diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/hlvuestyle/dialogSelectOnly.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/hlvuestyle/dialogSelectOnly.vue new file mode 100644 index 00000000..809ff936 --- /dev/null +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/hlvuestyle/dialogSelectOnly.vue @@ -0,0 +1,136 @@ + + + + diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/hlvuestyle/index.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/hlvuestyle/index.vue index 8b3424b6..a5f900ab 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/hlvuestyle/index.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/hlvuestyle/index.vue @@ -17,35 +17,42 @@ 物料 - + - + 远程搜索示例 - + + + + + + 多选弹框 + + + + + + + + 单选弹框 + + + + + + + + + + diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/hlvuestyle/print.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/hlvuestyle/print.vue index 8e9e297f..9e603eab 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/hlvuestyle/print.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/hlvuestyle/print.vue @@ -37,7 +37,7 @@ 项目名称 - {{ `系列摸具` }} + {{ `系列模具` }} 业务员: {{ `xxx` }} diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/hlvuestyle/productionPrint.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/hlvuestyle/productionPrint.vue new file mode 100644 index 00000000..248c450b --- /dev/null +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/hlvuestyle/productionPrint.vue @@ -0,0 +1,565 @@ + + + + diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/hlvuestyle/shipmentsPrint.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/hlvuestyle/shipmentsPrint.vue index ee190aa4..56b62638 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/hlvuestyle/shipmentsPrint.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/hlvuestyle/shipmentsPrint.vue @@ -245,9 +245,9 @@ 序号 - 摸具名称 + 模具名称 - 摸具图号 + 模具图号 数量(套) 备注 @@ -259,9 +259,9 @@ {{ item }} - {{ '摸具名称' }} + {{ '模具名称' }} - {{ `摸具图号` }} + {{ `模具图号` }} {{ item }} {{ `备注` }} @@ -274,9 +274,9 @@ {{ item }} - {{ '摸具名称' }} + {{ '模具名称' }} - {{ `摸具图号` }} + {{ `模具图号` }} {{ item }} {{ `备注` }} @@ -289,9 +289,9 @@ {{ item }} - {{ '摸具名称' }} + {{ '模具名称' }} - {{ `摸具图号` }} + {{ `模具图号` }} {{ item }} {{ `备注` }} diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/hlvuestyle/userSelect.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/hlvuestyle/userSelect.vue index ad546e9b..731df74e 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/hlvuestyle/userSelect.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/hlvuestyle/userSelect.vue @@ -2,6 +2,8 @@ ([]) // 用户列表 const userSelectList = ref([]) +const loading = ref(true) const userSelectLoading = ref(false) const propsmodelValue = toRefs(props).modelValue // 获取 props 中的 modelValue const initialValue: any = ref(null) // 存储初始选中的用户 ID const gitlist = async () => { const data = await UserApi.getUserPage(userParams) - userList.value = data.list + userList.value = [...userList.value, ...data.list] // 设置初始值 if (propsmodelValue.value) { valueName.value = propsmodelValue.value const initialUser = await UserApi.getUser(valueName.value) - // 查找初始用户是否已经在 userList 中 let foundInitialUserInList = false for (const user of userList.value) { if (user.id === initialUser.id) { - userSelectList.value = [] - userList.value = [] foundInitialUserInList = true break } } // 如果初始用户不在列表中,则将其添加到列表开头 if (!foundInitialUserInList && !userSelectList.value.length) { - userSelectList.value = [] - userList.value = [] + userList.value.unshift(initialUser) } + // loading.value = false } - remoteMethod('') + userSelectList.value = userList.value + loading.value = false } const remoteMethod = async (query: any) => { @@ -88,10 +89,7 @@ const remoteMethod = async (query: any) => { userList.value = data.list userSelectList.value = data.list } else { - // 加载所有数据(无查询条件时的情况) - const data = await UserApi.getUserPage({ ...userParams, pageNo: 1 }) - userList.value = [...userList.value, ...data.list] - userSelectList.value = userList.value + gitlist() } } catch (error) { console.error(error) diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/material/index.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/material/index.vue index acc33dd8..46d14632 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/material/index.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/material/index.vue @@ -189,7 +189,7 @@ const queryParams = reactive({ invUpperLimit: undefined, invLowerLimit: undefined, barcode: undefined, - virtualPart: undefined, + virtualPart: "N", logo: undefined, }) const queryFormRef = ref() // 搜索的表单 diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/processdesign/ProcessDesignForm.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/processdesign/ProcessDesignForm.vue new file mode 100644 index 00000000..6290b3ba --- /dev/null +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/processdesign/ProcessDesignForm.vue @@ -0,0 +1,141 @@ + + \ No newline at end of file diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/processdesign/components/ProcessDesignProgressForm.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/processdesign/components/ProcessDesignProgressForm.vue new file mode 100644 index 00000000..6532f33a --- /dev/null +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/processdesign/components/ProcessDesignProgressForm.vue @@ -0,0 +1,119 @@ + + \ No newline at end of file diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/processdesign/index.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/processdesign/index.vue new file mode 100644 index 00000000..0a7d494a --- /dev/null +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/processdesign/index.vue @@ -0,0 +1,243 @@ + + + \ No newline at end of file diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/projectorder/approve.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/projectorder/approve.vue index 7bd8aea5..f41a58d5 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/projectorder/approve.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/projectorder/approve.vue @@ -1,230 +1,253 @@