pull/2/head
siontion 9 months ago
commit 4aaf964519

@ -68,6 +68,10 @@ public enum OperateTypeEnum {
* *
* */ * */
TERMINATE(13), TERMINATE(13),
/*
*
* */
DELIVER(14),
/** /**
* *
* *

@ -11,7 +11,8 @@ import lombok.Getter;
public enum BusinessFileTypeEnum { public enum BusinessFileTypeEnum {
CONTRACT("合同"), CONTRACT("合同"),
TECHNOLOGY_PROTOCOL("技术协议"); TECHNOLOGY_PROTOCOL("技术协议"),
ID_CARD("身份证照片");
private String description; private String description;

@ -1,106 +1,138 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.deliverorder; package com.chanko.yunxi.mes.module.heli.controller.admin.deliverorder;
import org.springframework.web.bind.annotation.*; import com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum;
import javax.annotation.Resource; import com.chanko.yunxi.mes.framework.operatelog.core.service.OperateLogFrameworkService;
import org.springframework.validation.annotation.Validated; import com.chanko.yunxi.mes.module.heli.controller.admin.projectorder.vo.ProjectOrderSaveReqVO;
import org.springframework.security.access.prepost.PreAuthorize; import com.chanko.yunxi.mes.module.heli.enums.BusinesTypeEnum;
import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.transaction.annotation.Transactional;
import io.swagger.v3.oas.annotations.Parameter; import org.springframework.web.bind.annotation.*;
import io.swagger.v3.oas.annotations.Operation; import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import javax.validation.constraints.*; import org.springframework.security.access.prepost.PreAuthorize;
import javax.validation.*; import io.swagger.v3.oas.annotations.tags.Tag;
import javax.servlet.http.*; import io.swagger.v3.oas.annotations.Parameter;
import java.util.*; import io.swagger.v3.oas.annotations.Operation;
import java.io.IOException;
import javax.validation.constraints.*;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam; import javax.validation.*;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult; import javax.servlet.http.*;
import com.chanko.yunxi.mes.framework.common.pojo.CommonResult; import java.time.LocalDateTime;
import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; import java.util.*;
import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success; import java.io.IOException;
import com.chanko.yunxi.mes.framework.excel.core.util.ExcelUtils; import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.operatelog.core.annotations.OperateLog; import com.chanko.yunxi.mes.framework.common.pojo.CommonResult;
import static com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum.*; 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.module.heli.controller.admin.deliverorder.vo.*;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.deliverorder.DeliverOrderDO; import com.chanko.yunxi.mes.framework.excel.core.util.ExcelUtils;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.deliverordersub.DeliverOrderSubDO;
import com.chanko.yunxi.mes.module.heli.service.deliverorder.DeliverOrderService; import com.chanko.yunxi.mes.framework.operatelog.core.annotations.OperateLog;
import static com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum.*;
@Tag(name = "管理后台 - 发货订单")
@RestController import com.chanko.yunxi.mes.module.heli.controller.admin.deliverorder.vo.*;
@RequestMapping("/heli/deliver-order") import com.chanko.yunxi.mes.module.heli.dal.dataobject.deliverorder.DeliverOrderDO;
@Validated import com.chanko.yunxi.mes.module.heli.dal.dataobject.deliverordersub.DeliverOrderSubDO;
public class DeliverOrderController { import com.chanko.yunxi.mes.module.heli.service.deliverorder.DeliverOrderService;
@Resource @Tag(name = "管理后台 - 发货订单")
private DeliverOrderService deliverOrderService; @RestController
@RequestMapping("/heli/deliver-order")
@PostMapping("/create") @Validated
@Operation(summary = "创建发货订单") public class DeliverOrderController {
@PreAuthorize("@ss.hasPermission('heli:deliver-order:create')")
public CommonResult<Long> createDeliverOrder(@Valid @RequestBody DeliverOrderSaveReqVO createReqVO) { @Resource
return success(deliverOrderService.createDeliverOrder(createReqVO)); private DeliverOrderService deliverOrderService;
}
@Resource
@PutMapping("/update") private OperateLogFrameworkService operateLogFrameworkService;
@Operation(summary = "更新发货订单")
@PreAuthorize("@ss.hasPermission('heli:deliver-order:update')") @Resource
public CommonResult<Boolean> updateDeliverOrder(@Valid @RequestBody DeliverOrderSaveReqVO updateReqVO) { private HttpServletRequest request;
deliverOrderService.updateDeliverOrder(updateReqVO);
return success(true); @PostMapping("/create")
} @Operation(summary = "创建发货订单")
@PreAuthorize("@ss.hasPermission('heli:deliver-order:create')")
@DeleteMapping("/delete") public CommonResult<Long> createDeliverOrder(@Valid @RequestBody DeliverOrderSaveReqVO createReqVO) {
@Operation(summary = "删除发货订单") return success(deliverOrderService.createDeliverOrder(createReqVO));
@Parameter(name = "id", description = "编号", required = true) }
@PreAuthorize("@ss.hasPermission('heli:deliver-order:delete')")
public CommonResult<Boolean> deleteDeliverOrder(@RequestParam("id") Long id) { @PutMapping("/update")
deliverOrderService.deleteDeliverOrder(id); @Operation(summary = "更新发货订单")
return success(true); @PreAuthorize("@ss.hasPermission('heli:deliver-order:update')")
} public CommonResult<Boolean> updateDeliverOrder(@Valid @RequestBody DeliverOrderSaveReqVO updateReqVO) {
deliverOrderService.updateDeliverOrder(updateReqVO);
@GetMapping("/get") return success(true);
@Operation(summary = "获得发货订单") }
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('heli:deliver-order:query')") @PostMapping("/operate")
public CommonResult<DeliverOrderRespVO> getDeliverOrder(@RequestParam("id") Long id) { @Operation(summary = "操作项目订单")
DeliverOrderDO deliverOrder = deliverOrderService.getDeliverOrder(id); @PreAuthorize("@ss.hasPermission('heli:delivery-order:update')")
return success(BeanUtils.toBean(deliverOrder, DeliverOrderRespVO.class)); @OperateLog(enable = false)
} @Transactional(rollbackFor = Exception.class)
public CommonResult<Long> operateProjectOrder(@Valid @RequestBody DeliverOrderSaveReqVO operateReqVO) {
@GetMapping("/page") LocalDateTime startTime = LocalDateTime.now();
@Operation(summary = "获得发货订单分页") deliverOrderService.operateProjectOrder(operateReqVO);
@PreAuthorize("@ss.hasPermission('heli:deliver-order:query')")
public CommonResult<PageResult<DeliverOrderRespVO>> getDeliverOrderPage(@Valid DeliverOrderPageReqVO pageReqVO) { // 手动记录日志
PageResult<DeliverOrderDO> pageResult = deliverOrderService.getDeliverOrderPage(pageReqVO); operateLogFrameworkService.createOperateLog(request,
return success(BeanUtils.toBean(pageResult, DeliverOrderRespVO.class)); startTime,
} BusinesTypeEnum.PROJECT_ORDER.name(),
operateReqVO.getId(),
@GetMapping("/export-excel") OperateTypeEnum.valueOf(operateReqVO.getActive()).getType(),
@Operation(summary = "导出发货订单 Excel") operateReqVO.getActiveOpinion());
@PreAuthorize("@ss.hasPermission('heli:deliver-order:export')")
@OperateLog(type = EXPORT) return success(operateReqVO.getId());
public void exportDeliverOrderExcel(@Valid DeliverOrderPageReqVO pageReqVO, }
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); @DeleteMapping("/delete")
List<DeliverOrderDO> list = deliverOrderService.getDeliverOrderPage(pageReqVO).getList(); @Operation(summary = "删除发货订单")
// 导出 Excel @Parameter(name = "id", description = "编号", required = true)
ExcelUtils.write(response, "发货订单.xls", "数据", DeliverOrderRespVO.class, @PreAuthorize("@ss.hasPermission('heli:deliver-order:delete')")
BeanUtils.toBean(list, DeliverOrderRespVO.class)); public CommonResult<Boolean> deleteDeliverOrder(@RequestParam("id") Long id) {
} deliverOrderService.deleteDeliverOrder(id);
return success(true);
// ==================== 子表(发货订单子项) ==================== }
@GetMapping("/deliver-order-sub/list-by-delivery-order-id") @GetMapping("/get")
@Operation(summary = "获得发货订单子项列表") @Operation(summary = "获得发货订单")
@Parameter(name = "deliveryOrderId", description = "订单id") @Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('heli:deliver-order:query')") @PreAuthorize("@ss.hasPermission('heli:deliver-order:query')")
public CommonResult<List<DeliverOrderSubDO>> getDeliverOrderSubListByDeliveryOrderId(@RequestParam("deliveryOrderId") Long deliveryOrderId) { public CommonResult<DeliverOrderRespVO> getDeliverOrder(@RequestParam("id") Long id) {
return success(deliverOrderService.getDeliverOrderSubListByDeliveryOrderId(deliveryOrderId)); 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<PageResult<DeliverOrderRespVO>> getDeliverOrderPage(@Valid DeliverOrderPageReqVO pageReqVO) {
PageResult<DeliverOrderDO> 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<DeliverOrderDO> 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<List<DeliverOrderSubDO>> getDeliverOrderSubListByDeliveryOrderId(@RequestParam("deliveryOrderId") Long deliveryOrderId) {
return success(deliverOrderService.getDeliverOrderSubListByDeliveryOrderId(deliveryOrderId));
}
}

@ -82,6 +82,13 @@ public class DeliverOrderSaveReqVO {
@NotEmpty(message = "收货详细地址不能为空") @NotEmpty(message = "收货详细地址不能为空")
private String receiveAddress; private String receiveAddress;
@Schema(description = "操作类型")
@NotBlank(message = "操作类型不能为空")
private String active;
@Schema(description = "操作意见")
private String activeOpinion;
@Schema(description = "发货订单子项列表") @Schema(description = "发货订单子项列表")
private List<DeliverOrderSubDO> deliverOrderSubs; private List<DeliverOrderSubDO> deliverOrderSubs;

@ -1,5 +1,6 @@
package com.chanko.yunxi.mes.module.heli.dal.dataobject.deliverorder; package com.chanko.yunxi.mes.module.heli.dal.dataobject.deliverorder;
import com.chanko.yunxi.mes.module.heli.enums.DeliverOrderStatusEnum;
import lombok.*; import lombok.*;
import java.util.*; import java.util.*;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@ -119,4 +120,8 @@ public class DeliverOrderDO extends BaseDO {
@TableField(exist = false) @TableField(exist = false)
private String customerName; private String customerName;
public boolean canDeliver() {
return DeliverOrderStatusEnum.DEFAULT.getCode() == this.deliverStatus.intValue();
}
} }

@ -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.customer.CustomerDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.deliverorder.DeliverOrderDO; 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.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.chanko.yunxi.mes.module.system.dal.dataobject.user.AdminUserDO;
import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
@ -42,4 +43,20 @@ public interface DeliverOrderMapper extends BaseMapperX<DeliverOrderDO> {
return selectPage(reqVO, query); return selectPage(reqVO, query);
} }
default DeliverOrderDO selectById(Long id) {
MPJLambdaWrapper<DeliverOrderDO> 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);
}
} }

@ -1,66 +1,67 @@
package com.chanko.yunxi.mes.module.heli.service.deliverorder; package com.chanko.yunxi.mes.module.heli.service.deliverorder;
import java.util.*; import java.util.*;
import javax.validation.*; import javax.validation.*;
import com.chanko.yunxi.mes.module.heli.controller.admin.deliverorder.vo.*; 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.deliverorder.DeliverOrderDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.deliverordersub.DeliverOrderSubDO; 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.PageResult;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam; import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
/** /**
* Service * Service
* *
* @author * @author
*/ */
public interface DeliverOrderService { public interface DeliverOrderService {
/** /**
* *
* *
* @param createReqVO * @param createReqVO
* @return * @return
*/ */
Long createDeliverOrder(@Valid DeliverOrderSaveReqVO createReqVO); Long createDeliverOrder(@Valid DeliverOrderSaveReqVO createReqVO);
/** /**
* *
* *
* @param updateReqVO * @param updateReqVO
*/ */
void updateDeliverOrder(@Valid DeliverOrderSaveReqVO updateReqVO); void updateDeliverOrder(@Valid DeliverOrderSaveReqVO updateReqVO);
/** /**
* *
* *
* @param id * @param id
*/ */
void deleteDeliverOrder(Long id); void deleteDeliverOrder(Long id);
/** /**
* *
* *
* @param id * @param id
* @return * @return
*/ */
DeliverOrderDO getDeliverOrder(Long id); DeliverOrderDO getDeliverOrder(Long id);
/** /**
* *
* *
* @param pageReqVO * @param pageReqVO
* @return * @return
*/ */
PageResult<DeliverOrderDO> getDeliverOrderPage(DeliverOrderPageReqVO pageReqVO); PageResult<DeliverOrderDO> getDeliverOrderPage(DeliverOrderPageReqVO pageReqVO);
// ==================== 子表(发货订单子项) ==================== // ==================== 子表(发货订单子项) ====================
/** /**
* *
* *
* @param deliveryOrderId id * @param deliveryOrderId id
* @return * @return
*/ */
List<DeliverOrderSubDO> getDeliverOrderSubListByDeliveryOrderId(Long deliveryOrderId); List<DeliverOrderSubDO> getDeliverOrderSubListByDeliveryOrderId(Long deliveryOrderId);
} void operateProjectOrder(DeliverOrderSaveReqVO operateReqVO);
}

@ -1,112 +1,145 @@
package com.chanko.yunxi.mes.module.heli.service.deliverorder; package com.chanko.yunxi.mes.module.heli.service.deliverorder;
import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import javax.annotation.Resource; import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderDO;
import org.springframework.validation.annotation.Validated; import com.chanko.yunxi.mes.module.heli.dal.dataobject.serialnumber.SerialNumberDO;
import org.springframework.transaction.annotation.Transactional; import com.chanko.yunxi.mes.module.heli.enums.BusinesTypeEnum;
import com.chanko.yunxi.mes.module.heli.service.serialnumber.SerialNumberService;
import java.util.*; import org.springframework.stereotype.Service;
import com.chanko.yunxi.mes.module.heli.controller.admin.deliverorder.vo.*; import javax.annotation.Resource;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.deliverorder.DeliverOrderDO; import org.springframework.validation.annotation.Validated;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.deliverordersub.DeliverOrderSubDO; import org.springframework.transaction.annotation.Transactional;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam; import java.text.SimpleDateFormat;
import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; import java.util.*;
import com.chanko.yunxi.mes.module.heli.controller.admin.deliverorder.vo.*;
import com.chanko.yunxi.mes.module.heli.dal.mysql.deliverorder.DeliverOrderMapper; import com.chanko.yunxi.mes.module.heli.dal.dataobject.deliverorder.DeliverOrderDO;
import com.chanko.yunxi.mes.module.heli.dal.mysql.deliverordersub.DeliverOrderSubMapper; import com.chanko.yunxi.mes.module.heli.dal.dataobject.deliverordersub.DeliverOrderSubDO;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception; import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.*; import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils;
/** import com.chanko.yunxi.mes.module.heli.dal.mysql.deliverorder.DeliverOrderMapper;
* Service import com.chanko.yunxi.mes.module.heli.dal.mysql.deliverordersub.DeliverOrderSubMapper;
*
* @author import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception;
*/ import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.*;
@Service
@Validated /**
public class DeliverOrderServiceImpl implements DeliverOrderService { * Service
*
@Resource * @author
private DeliverOrderMapper deliverOrderMapper; */
@Resource @Service
private DeliverOrderSubMapper deliverOrderSubMapper; @Validated
public class DeliverOrderServiceImpl implements DeliverOrderService {
@Override
@Transactional(rollbackFor = Exception.class) @Resource
public Long createDeliverOrder(DeliverOrderSaveReqVO createReqVO) { private DeliverOrderMapper deliverOrderMapper;
// 插入 @Resource
DeliverOrderDO deliverOrder = BeanUtils.toBean(createReqVO, DeliverOrderDO.class); private DeliverOrderSubMapper deliverOrderSubMapper;
deliverOrderMapper.insert(deliverOrder); @Resource
private SerialNumberService serialNumberService;
// 插入子表
createDeliverOrderSubList(deliverOrder.getId(), createReqVO.getDeliverOrderSubs()); @Override
// 返回 @Transactional(rollbackFor = Exception.class)
return deliverOrder.getId(); public Long createDeliverOrder(DeliverOrderSaveReqVO createReqVO) {
} // 插入
DeliverOrderDO deliverOrder = BeanUtils.toBean(createReqVO, DeliverOrderDO.class);
@Override // 月度流水号
@Transactional(rollbackFor = Exception.class) SerialNumberDO serialNumberDO = serialNumberService.getSerialNumber(BusinesTypeEnum.DELIVER_ORDER.name(), new SimpleDateFormat("yyyyMM").format(new Date()));
public void updateDeliverOrder(DeliverOrderSaveReqVO updateReqVO) { serialNumberDO.setSerialNumber(serialNumberDO.getSerialNumber()+1);
// 校验存在 deliverOrderMapper.insert(deliverOrder);
validateDeliverOrderExists(updateReqVO.getId());
// 更新 // 插入子表
DeliverOrderDO updateObj = BeanUtils.toBean(updateReqVO, DeliverOrderDO.class); if(createReqVO.getDeliverOrderSubs() != null && !createReqVO.getDeliverOrderSubs().isEmpty()){
deliverOrderMapper.updateById(updateObj); createDeliverOrderSubList(deliverOrder.getId(), createReqVO.getDeliverOrderSubs());
}
// 更新子表 // 回写序列记录
updateDeliverOrderSubList(updateReqVO.getId(), updateReqVO.getDeliverOrderSubs()); serialNumberService.updateSerialNumber(serialNumberDO);
} // 返回
return deliverOrder.getId();
@Override }
@Transactional(rollbackFor = Exception.class)
public void deleteDeliverOrder(Long id) { @Override
// 校验存在 @Transactional(rollbackFor = Exception.class)
validateDeliverOrderExists(id); public void updateDeliverOrder(DeliverOrderSaveReqVO updateReqVO) {
// 删除 // 校验存在
deliverOrderMapper.deleteById(id); DeliverOrderDO oldDO = validateDeliverOrderExists(updateReqVO.getId());
if(!oldDO.canDeliver()){
// 删除子表 throw exception(INVALID_OPERATE);
deleteDeliverOrderSubByDeliveryOrderId(id); }
} // 更新
DeliverOrderDO updateObj = BeanUtils.toBean(updateReqVO, DeliverOrderDO.class);
private void validateDeliverOrderExists(Long id) { deliverOrderMapper.updateById(updateObj);
if (deliverOrderMapper.selectById(id) == null) {
throw exception(DELIVER_ORDER_NOT_EXISTS); // 更新子表
} updateDeliverOrderSubList(updateReqVO.getId(), updateReqVO.getDeliverOrderSubs());
} }
@Override @Override
public DeliverOrderDO getDeliverOrder(Long id) { @Transactional(rollbackFor = Exception.class)
return deliverOrderMapper.selectById(id); public void deleteDeliverOrder(Long id) {
} // 校验存在
validateDeliverOrderExists(id);
@Override // 删除
public PageResult<DeliverOrderDO> getDeliverOrderPage(DeliverOrderPageReqVO pageReqVO) { deliverOrderMapper.deleteById(id);
return deliverOrderMapper.selectPage(pageReqVO);
} // 删除子表
deleteDeliverOrderSubByDeliveryOrderId(id);
// ==================== 子表(发货订单子项) ==================== }
@Override private DeliverOrderDO validateDeliverOrderExists(Long id) {
public List<DeliverOrderSubDO> getDeliverOrderSubListByDeliveryOrderId(Long deliveryOrderId) { DeliverOrderDO deliverOrderDO = deliverOrderMapper.selectOne(new LambdaQueryWrapper<DeliverOrderDO>() {{
return deliverOrderSubMapper.selectListByDeliveryOrderId(deliveryOrderId); eq(DeliverOrderDO::getId, id);
} last("LIMIT 1 FOR UPDATE");
}});
private void createDeliverOrderSubList(Long deliveryOrderId, List<DeliverOrderSubDO> list) { if (deliverOrderDO == null) {
list.forEach(o -> o.setDeliveryOrderId(deliveryOrderId)); throw exception(DELIVER_ORDER_NOT_EXISTS);
deliverOrderSubMapper.insertBatch(list); }
} return deliverOrderDO;
}
private void updateDeliverOrderSubList(Long deliveryOrderId, List<DeliverOrderSubDO> list) {
deleteDeliverOrderSubByDeliveryOrderId(deliveryOrderId); @Override
list.forEach(o -> o.setId(null).setUpdater(null).setUpdateTime(null)); // 解决更新情况下1id 冲突2updateTime 不更新 public DeliverOrderDO getDeliverOrder(Long id) {
createDeliverOrderSubList(deliveryOrderId, list); return deliverOrderMapper.selectById(id);
} }
private void deleteDeliverOrderSubByDeliveryOrderId(Long deliveryOrderId) { @Override
deliverOrderSubMapper.deleteByDeliveryOrderId(deliveryOrderId); public PageResult<DeliverOrderDO> getDeliverOrderPage(DeliverOrderPageReqVO pageReqVO) {
} return deliverOrderMapper.selectPage(pageReqVO);
}
}
// ==================== 子表(发货订单子项) ====================
@Override
public List<DeliverOrderSubDO> 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<DeliverOrderSubDO> list) {
list.forEach(o -> o.setDeliveryOrderId(deliveryOrderId));
deliverOrderSubMapper.insertBatch(list);
}
private void updateDeliverOrderSubList(Long deliveryOrderId, List<DeliverOrderSubDO> list) {
deleteDeliverOrderSubByDeliveryOrderId(deliveryOrderId);
list.forEach(o -> o.setId(null).setUpdater(null).setUpdateTime(null)); // 解决更新情况下1id 冲突2updateTime 不更新
createDeliverOrderSubList(deliveryOrderId, list);
}
private void deleteDeliverOrderSubByDeliveryOrderId(Long deliveryOrderId) {
deliverOrderSubMapper.deleteByDeliveryOrderId(deliveryOrderId);
}
}

Loading…
Cancel
Save