From 7f657e725373eee795c4159f4b8f59c699434779 Mon Sep 17 00:00:00 2001 From: zengchenxi Date: Mon, 29 Jan 2024 09:57:48 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E9=9C=80=E6=B1=82=E5=BC=80=E5=8F=91?= =?UTF-8?q?=E3=80=91=E5=8F=91=E8=B4=A7=E5=8D=95=20=E5=AE=8C=E5=96=84?= =?UTF-8?q?=E5=90=8E=E5=8F=B0=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/enums/OperateTypeEnum.java | 4 + .../heli/enums/BusinessFileTypeEnum.java | 3 +- .../deliverorder/DeliverOrderController.java | 244 +++++++++-------- .../vo/DeliverOrderSaveReqVO.java | 7 + .../deliverorder/DeliverOrderDO.java | 5 + .../deliverorder/DeliverOrderMapper.java | 17 ++ .../deliverorder/DeliverOrderService.java | 133 ++++----- .../deliverorder/DeliverOrderServiceImpl.java | 257 ++++++++++-------- 8 files changed, 385 insertions(+), 285 deletions(-) diff --git a/mes-framework/mes-spring-boot-starter-biz-operatelog/src/main/java/com/chanko/yunxi/mes/framework/operatelog/core/enums/OperateTypeEnum.java b/mes-framework/mes-spring-boot-starter-biz-operatelog/src/main/java/com/chanko/yunxi/mes/framework/operatelog/core/enums/OperateTypeEnum.java index 70198a87..0f8a4259 100644 --- a/mes-framework/mes-spring-boot-starter-biz-operatelog/src/main/java/com/chanko/yunxi/mes/framework/operatelog/core/enums/OperateTypeEnum.java +++ b/mes-framework/mes-spring-boot-starter-biz-operatelog/src/main/java/com/chanko/yunxi/mes/framework/operatelog/core/enums/OperateTypeEnum.java @@ -68,6 +68,10 @@ public enum OperateTypeEnum { * 终止 * */ TERMINATE(13), + /* + * 发货 + * */ + DELIVER(14), /** * 其它 * diff --git a/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/BusinessFileTypeEnum.java b/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/BusinessFileTypeEnum.java index f210c61b..afb5f29f 100644 --- a/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/BusinessFileTypeEnum.java +++ b/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/BusinessFileTypeEnum.java @@ -11,7 +11,8 @@ import lombok.Getter; public enum BusinessFileTypeEnum { CONTRACT("合同"), - TECHNOLOGY_PROTOCOL("技术协议"); + TECHNOLOGY_PROTOCOL("技术协议"), + ID_CARD("身份证照片"); private String description; 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 4b0d5574..e55067df 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 @@ -1,106 +1,138 @@ -package com.chanko.yunxi.mes.module.heli.controller.admin.deliverorder; - -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.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.service.deliverorder.DeliverOrderService; - -@Tag(name = "管理后台 - 发货订单") -@RestController -@RequestMapping("/heli/deliver-order") -@Validated -public class DeliverOrderController { - - @Resource - private DeliverOrderService deliverOrderService; - - @PostMapping("/create") - @Operation(summary = "创建发货订单") - @PreAuthorize("@ss.hasPermission('heli:deliver-order:create')") - public CommonResult createDeliverOrder(@Valid @RequestBody DeliverOrderSaveReqVO createReqVO) { - return success(deliverOrderService.createDeliverOrder(createReqVO)); - } - - @PutMapping("/update") - @Operation(summary = "更新发货订单") - @PreAuthorize("@ss.hasPermission('heli:deliver-order:update')") - public CommonResult updateDeliverOrder(@Valid @RequestBody DeliverOrderSaveReqVO updateReqVO) { - deliverOrderService.updateDeliverOrder(updateReqVO); - return success(true); - } - - @DeleteMapping("/delete") - @Operation(summary = "删除发货订单") - @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('heli:deliver-order:delete')") - public CommonResult deleteDeliverOrder(@RequestParam("id") Long id) { - deliverOrderService.deleteDeliverOrder(id); - return success(true); - } - - @GetMapping("/get") - @Operation(summary = "获得发货订单") - @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('heli:deliver-order:query')") - public CommonResult getDeliverOrder(@RequestParam("id") Long id) { - DeliverOrderDO deliverOrder = deliverOrderService.getDeliverOrder(id); - return success(BeanUtils.toBean(deliverOrder, DeliverOrderRespVO.class)); - } - - @GetMapping("/page") - @Operation(summary = "获得发货订单分页") - @PreAuthorize("@ss.hasPermission('heli:deliver-order:query')") - public CommonResult> getDeliverOrderPage(@Valid DeliverOrderPageReqVO pageReqVO) { - PageResult pageResult = deliverOrderService.getDeliverOrderPage(pageReqVO); - return success(BeanUtils.toBean(pageResult, DeliverOrderRespVO.class)); - } - - @GetMapping("/export-excel") - @Operation(summary = "导出发货订单 Excel") - @PreAuthorize("@ss.hasPermission('heli:deliver-order:export')") - @OperateLog(type = EXPORT) - public void exportDeliverOrderExcel(@Valid DeliverOrderPageReqVO pageReqVO, - HttpServletResponse response) throws IOException { - pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); - List list = deliverOrderService.getDeliverOrderPage(pageReqVO).getList(); - // 导出 Excel - ExcelUtils.write(response, "发货订单.xls", "数据", DeliverOrderRespVO.class, - BeanUtils.toBean(list, DeliverOrderRespVO.class)); - } - - // ==================== 子表(发货订单子项) ==================== - - @GetMapping("/deliver-order-sub/list-by-delivery-order-id") - @Operation(summary = "获得发货订单子项列表") - @Parameter(name = "deliveryOrderId", description = "订单id") - @PreAuthorize("@ss.hasPermission('heli:deliver-order:query')") - public CommonResult> getDeliverOrderSubListByDeliveryOrderId(@RequestParam("deliveryOrderId") Long deliveryOrderId) { - return success(deliverOrderService.getDeliverOrderSubListByDeliveryOrderId(deliveryOrderId)); - } - -} \ No newline at end of file +package com.chanko.yunxi.mes.module.heli.controller.admin.deliverorder; + +import com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum; +import com.chanko.yunxi.mes.framework.operatelog.core.service.OperateLogFrameworkService; +import com.chanko.yunxi.mes.module.heli.controller.admin.projectorder.vo.ProjectOrderSaveReqVO; +import com.chanko.yunxi.mes.module.heli.enums.BusinesTypeEnum; +import org.springframework.transaction.annotation.Transactional; +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.time.LocalDateTime; +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.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.service.deliverorder.DeliverOrderService; + +@Tag(name = "管理后台 - 发货订单") +@RestController +@RequestMapping("/heli/deliver-order") +@Validated +public class DeliverOrderController { + + @Resource + private DeliverOrderService deliverOrderService; + + @Resource + private OperateLogFrameworkService operateLogFrameworkService; + + @Resource + private HttpServletRequest request; + + @PostMapping("/create") + @Operation(summary = "创建发货订单") + @PreAuthorize("@ss.hasPermission('heli:deliver-order:create')") + public CommonResult createDeliverOrder(@Valid @RequestBody DeliverOrderSaveReqVO createReqVO) { + return success(deliverOrderService.createDeliverOrder(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新发货订单") + @PreAuthorize("@ss.hasPermission('heli:deliver-order:update')") + public CommonResult updateDeliverOrder(@Valid @RequestBody DeliverOrderSaveReqVO updateReqVO) { + deliverOrderService.updateDeliverOrder(updateReqVO); + return success(true); + } + + @PostMapping("/operate") + @Operation(summary = "操作项目订单") + @PreAuthorize("@ss.hasPermission('heli:delivery-order:update')") + @OperateLog(enable = false) + @Transactional(rollbackFor = Exception.class) + public CommonResult operateProjectOrder(@Valid @RequestBody DeliverOrderSaveReqVO operateReqVO) { + LocalDateTime startTime = LocalDateTime.now(); + deliverOrderService.operateProjectOrder(operateReqVO); + + // 手动记录日志 + operateLogFrameworkService.createOperateLog(request, + startTime, + BusinesTypeEnum.PROJECT_ORDER.name(), + operateReqVO.getId(), + OperateTypeEnum.valueOf(operateReqVO.getActive()).getType(), + operateReqVO.getActiveOpinion()); + + return success(operateReqVO.getId()); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除发货订单") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('heli:deliver-order:delete')") + public CommonResult deleteDeliverOrder(@RequestParam("id") Long id) { + deliverOrderService.deleteDeliverOrder(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得发货订单") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('heli:deliver-order:query')") + public CommonResult getDeliverOrder(@RequestParam("id") Long id) { + DeliverOrderDO deliverOrder = deliverOrderService.getDeliverOrder(id); + return success(BeanUtils.toBean(deliverOrder, DeliverOrderRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得发货订单分页") + @PreAuthorize("@ss.hasPermission('heli:deliver-order:query')") + public CommonResult> getDeliverOrderPage(@Valid DeliverOrderPageReqVO pageReqVO) { + PageResult pageResult = deliverOrderService.getDeliverOrderPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, DeliverOrderRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出发货订单 Excel") + @PreAuthorize("@ss.hasPermission('heli:deliver-order:export')") + @OperateLog(type = EXPORT) + public void exportDeliverOrderExcel(@Valid DeliverOrderPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = deliverOrderService.getDeliverOrderPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "发货订单.xls", "数据", DeliverOrderRespVO.class, + BeanUtils.toBean(list, DeliverOrderRespVO.class)); + } + + // ==================== 子表(发货订单子项) ==================== + + @GetMapping("/deliver-order-sub/list-by-delivery-order-id") + @Operation(summary = "获得发货订单子项列表") + @Parameter(name = "deliveryOrderId", description = "订单id") + @PreAuthorize("@ss.hasPermission('heli:deliver-order:query')") + public CommonResult> getDeliverOrderSubListByDeliveryOrderId(@RequestParam("deliveryOrderId") Long deliveryOrderId) { + return success(deliverOrderService.getDeliverOrderSubListByDeliveryOrderId(deliveryOrderId)); + } + +} 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 43158d4d..8bb0733e 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 @@ -82,6 +82,13 @@ public class DeliverOrderSaveReqVO { @NotEmpty(message = "收货详细地址不能为空") private String receiveAddress; + @Schema(description = "操作类型") + @NotBlank(message = "操作类型不能为空") + private String active; + + @Schema(description = "操作意见") + private String activeOpinion; + @Schema(description = "发货订单子项列表") private List deliverOrderSubs; 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 8eaca3a7..9e746650 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,5 +1,6 @@ package com.chanko.yunxi.mes.module.heli.dal.dataobject.deliverorder; +import com.chanko.yunxi.mes.module.heli.enums.DeliverOrderStatusEnum; import lombok.*; import java.util.*; import java.time.LocalDateTime; @@ -119,4 +120,8 @@ public class DeliverOrderDO extends BaseDO { @TableField(exist = false) private String customerName; + + public boolean canDeliver() { + return DeliverOrderStatusEnum.DEFAULT.getCode() == this.deliverStatus.intValue(); + } } 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 f1b1029e..af785f1a 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 @@ -7,6 +7,7 @@ import com.chanko.yunxi.mes.module.heli.controller.admin.deliverorder.vo.Deliver 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; @@ -42,4 +43,20 @@ public interface DeliverOrderMapper extends BaseMapperX { return selectPage(reqVO, query); } + 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") + .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) + .eq(DeliverOrderDO::getId, id) + .groupBy(DeliverOrderDO::getId) + .last("LIMIT 1") + .disableSubLogicDel(); + return selectOne(query); + } + } 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 7bb6476c..6b8b211c 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 @@ -1,66 +1,67 @@ -package com.chanko.yunxi.mes.module.heli.service.deliverorder; - -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.framework.common.pojo.PageResult; -import com.chanko.yunxi.mes.framework.common.pojo.PageParam; - -/** - * 发货订单 Service 接口 - * - * @author 管理员 - */ -public interface DeliverOrderService { - - /** - * 创建发货订单 - * - * @param createReqVO 创建信息 - * @return 编号 - */ - Long createDeliverOrder(@Valid DeliverOrderSaveReqVO createReqVO); - - /** - * 更新发货订单 - * - * @param updateReqVO 更新信息 - */ - void updateDeliverOrder(@Valid DeliverOrderSaveReqVO updateReqVO); - - /** - * 删除发货订单 - * - * @param id 编号 - */ - void deleteDeliverOrder(Long id); - - /** - * 获得发货订单 - * - * @param id 编号 - * @return 发货订单 - */ - DeliverOrderDO getDeliverOrder(Long id); - - /** - * 获得发货订单分页 - * - * @param pageReqVO 分页查询 - * @return 发货订单分页 - */ - PageResult getDeliverOrderPage(DeliverOrderPageReqVO pageReqVO); - - // ==================== 子表(发货订单子项) ==================== - - /** - * 获得发货订单子项列表 - * - * @param deliveryOrderId 订单id - * @return 发货订单子项列表 - */ - List getDeliverOrderSubListByDeliveryOrderId(Long deliveryOrderId); - -} \ No newline at end of file +package com.chanko.yunxi.mes.module.heli.service.deliverorder; + +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.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; + +/** + * 发货订单 Service 接口 + * + * @author 管理员 + */ +public interface DeliverOrderService { + + /** + * 创建发货订单 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createDeliverOrder(@Valid DeliverOrderSaveReqVO createReqVO); + + /** + * 更新发货订单 + * + * @param updateReqVO 更新信息 + */ + void updateDeliverOrder(@Valid DeliverOrderSaveReqVO updateReqVO); + + /** + * 删除发货订单 + * + * @param id 编号 + */ + void deleteDeliverOrder(Long id); + + /** + * 获得发货订单 + * + * @param id 编号 + * @return 发货订单 + */ + DeliverOrderDO getDeliverOrder(Long id); + + /** + * 获得发货订单分页 + * + * @param pageReqVO 分页查询 + * @return 发货订单分页 + */ + PageResult getDeliverOrderPage(DeliverOrderPageReqVO pageReqVO); + + // ==================== 子表(发货订单子项) ==================== + + /** + * 获得发货订单子项列表 + * + * @param deliveryOrderId 订单id + * @return 发货订单子项列表 + */ + List getDeliverOrderSubListByDeliveryOrderId(Long deliveryOrderId); + + void operateProjectOrder(DeliverOrderSaveReqVO operateReqVO); +} 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 b6ddbe77..def73747 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 @@ -1,112 +1,145 @@ -package com.chanko.yunxi.mes.module.heli.service.deliverorder; - -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.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.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.deliverorder.DeliverOrderMapper; -import com.chanko.yunxi.mes.module.heli.dal.mysql.deliverordersub.DeliverOrderSubMapper; - -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 DeliverOrderServiceImpl implements DeliverOrderService { - - @Resource - private DeliverOrderMapper deliverOrderMapper; - @Resource - private DeliverOrderSubMapper deliverOrderSubMapper; - - @Override - @Transactional(rollbackFor = Exception.class) - public Long createDeliverOrder(DeliverOrderSaveReqVO createReqVO) { - // 插入 - DeliverOrderDO deliverOrder = BeanUtils.toBean(createReqVO, DeliverOrderDO.class); - deliverOrderMapper.insert(deliverOrder); - - // 插入子表 - createDeliverOrderSubList(deliverOrder.getId(), createReqVO.getDeliverOrderSubs()); - // 返回 - return deliverOrder.getId(); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void updateDeliverOrder(DeliverOrderSaveReqVO updateReqVO) { - // 校验存在 - validateDeliverOrderExists(updateReqVO.getId()); - // 更新 - DeliverOrderDO updateObj = BeanUtils.toBean(updateReqVO, DeliverOrderDO.class); - deliverOrderMapper.updateById(updateObj); - - // 更新子表 - updateDeliverOrderSubList(updateReqVO.getId(), updateReqVO.getDeliverOrderSubs()); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void deleteDeliverOrder(Long id) { - // 校验存在 - validateDeliverOrderExists(id); - // 删除 - deliverOrderMapper.deleteById(id); - - // 删除子表 - deleteDeliverOrderSubByDeliveryOrderId(id); - } - - private void validateDeliverOrderExists(Long id) { - if (deliverOrderMapper.selectById(id) == null) { - throw exception(DELIVER_ORDER_NOT_EXISTS); - } - } - - @Override - public DeliverOrderDO getDeliverOrder(Long id) { - return deliverOrderMapper.selectById(id); - } - - @Override - public PageResult getDeliverOrderPage(DeliverOrderPageReqVO pageReqVO) { - return deliverOrderMapper.selectPage(pageReqVO); - } - - // ==================== 子表(发货订单子项) ==================== - - @Override - public List getDeliverOrderSubListByDeliveryOrderId(Long deliveryOrderId) { - return deliverOrderSubMapper.selectListByDeliveryOrderId(deliveryOrderId); - } - - private void createDeliverOrderSubList(Long deliveryOrderId, List list) { - list.forEach(o -> o.setDeliveryOrderId(deliveryOrderId)); - deliverOrderSubMapper.insertBatch(list); - } - - private void updateDeliverOrderSubList(Long deliveryOrderId, List list) { - deleteDeliverOrderSubByDeliveryOrderId(deliveryOrderId); - list.forEach(o -> o.setId(null).setUpdater(null).setUpdateTime(null)); // 解决更新情况下:1)id 冲突;2)updateTime 不更新 - createDeliverOrderSubList(deliveryOrderId, list); - } - - private void deleteDeliverOrderSubByDeliveryOrderId(Long deliveryOrderId) { - deliverOrderSubMapper.deleteByDeliveryOrderId(deliveryOrderId); - } - -} \ No newline at end of file +package com.chanko.yunxi.mes.module.heli.service.deliverorder; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderDO; +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.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.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.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.deliverorder.DeliverOrderMapper; +import com.chanko.yunxi.mes.module.heli.dal.mysql.deliverordersub.DeliverOrderSubMapper; + +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 DeliverOrderServiceImpl implements DeliverOrderService { + + @Resource + private DeliverOrderMapper deliverOrderMapper; + @Resource + private DeliverOrderSubMapper deliverOrderSubMapper; + @Resource + private SerialNumberService serialNumberService; + + @Override + @Transactional(rollbackFor = Exception.class) + public Long createDeliverOrder(DeliverOrderSaveReqVO createReqVO) { + // 插入 + DeliverOrderDO deliverOrder = BeanUtils.toBean(createReqVO, DeliverOrderDO.class); + // 月度流水号 + SerialNumberDO serialNumberDO = serialNumberService.getSerialNumber(BusinesTypeEnum.DELIVER_ORDER.name(), new SimpleDateFormat("yyyyMM").format(new Date())); + serialNumberDO.setSerialNumber(serialNumberDO.getSerialNumber()+1); + deliverOrderMapper.insert(deliverOrder); + + // 插入子表 + if(createReqVO.getDeliverOrderSubs() != null && !createReqVO.getDeliverOrderSubs().isEmpty()){ + createDeliverOrderSubList(deliverOrder.getId(), createReqVO.getDeliverOrderSubs()); + } + // 回写序列记录 + serialNumberService.updateSerialNumber(serialNumberDO); + // 返回 + return deliverOrder.getId(); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void updateDeliverOrder(DeliverOrderSaveReqVO updateReqVO) { + // 校验存在 + DeliverOrderDO oldDO = validateDeliverOrderExists(updateReqVO.getId()); + if(!oldDO.canDeliver()){ + throw exception(INVALID_OPERATE); + } + // 更新 + DeliverOrderDO updateObj = BeanUtils.toBean(updateReqVO, DeliverOrderDO.class); + deliverOrderMapper.updateById(updateObj); + + // 更新子表 + updateDeliverOrderSubList(updateReqVO.getId(), updateReqVO.getDeliverOrderSubs()); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteDeliverOrder(Long id) { + // 校验存在 + validateDeliverOrderExists(id); + // 删除 + deliverOrderMapper.deleteById(id); + + // 删除子表 + deleteDeliverOrderSubByDeliveryOrderId(id); + } + + private DeliverOrderDO validateDeliverOrderExists(Long id) { + DeliverOrderDO deliverOrderDO = deliverOrderMapper.selectOne(new LambdaQueryWrapper() {{ + eq(DeliverOrderDO::getId, id); + last("LIMIT 1 FOR UPDATE"); + }}); + if (deliverOrderDO == null) { + throw exception(DELIVER_ORDER_NOT_EXISTS); + } + return deliverOrderDO; + } + + @Override + public DeliverOrderDO getDeliverOrder(Long id) { + return deliverOrderMapper.selectById(id); + } + + @Override + public PageResult getDeliverOrderPage(DeliverOrderPageReqVO pageReqVO) { + return deliverOrderMapper.selectPage(pageReqVO); + } + + // ==================== 子表(发货订单子项) ==================== + + @Override + public List getDeliverOrderSubListByDeliveryOrderId(Long deliveryOrderId) { + return deliverOrderSubMapper.selectListByDeliveryOrderId(deliveryOrderId); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void operateProjectOrder(DeliverOrderSaveReqVO operateReqVO) { + if(operateReqVO.getId() == null){ + createDeliverOrder(operateReqVO); + }else{ + updateDeliverOrder(operateReqVO); + } + } + + private void createDeliverOrderSubList(Long deliveryOrderId, List list) { + list.forEach(o -> o.setDeliveryOrderId(deliveryOrderId)); + deliverOrderSubMapper.insertBatch(list); + } + + private void updateDeliverOrderSubList(Long deliveryOrderId, List list) { + deleteDeliverOrderSubByDeliveryOrderId(deliveryOrderId); + list.forEach(o -> o.setId(null).setUpdater(null).setUpdateTime(null)); // 解决更新情况下:1)id 冲突;2)updateTime 不更新 + createDeliverOrderSubList(deliveryOrderId, list); + } + + private void deleteDeliverOrderSubByDeliveryOrderId(Long deliveryOrderId) { + deliverOrderSubMapper.deleteByDeliveryOrderId(deliveryOrderId); + } + +}