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

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

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

@ -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<Long> createDeliverOrder(@Valid @RequestBody DeliverOrderSaveReqVO createReqVO) {
return success(deliverOrderService.createDeliverOrder(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新发货订单")
@PreAuthorize("@ss.hasPermission('heli:deliver-order:update')")
public CommonResult<Boolean> 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<Boolean> 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<DeliverOrderRespVO> 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<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));
}
}
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<Long> createDeliverOrder(@Valid @RequestBody DeliverOrderSaveReqVO createReqVO) {
return success(deliverOrderService.createDeliverOrder(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新发货订单")
@PreAuthorize("@ss.hasPermission('heli:deliver-order:update')")
public CommonResult<Boolean> 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<Long> 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<Boolean> 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<DeliverOrderRespVO> 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<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 = "收货详细地址不能为空")
private String receiveAddress;
@Schema(description = "操作类型")
@NotBlank(message = "操作类型不能为空")
private String active;
@Schema(description = "操作意见")
private String activeOpinion;
@Schema(description = "发货订单子项列表")
private List<DeliverOrderSubDO> deliverOrderSubs;

@ -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();
}
}

@ -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<DeliverOrderDO> {
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;
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<DeliverOrderDO> getDeliverOrderPage(DeliverOrderPageReqVO pageReqVO);
// ==================== 子表(发货订单子项) ====================
/**
*
*
* @param deliveryOrderId id
* @return
*/
List<DeliverOrderSubDO> getDeliverOrderSubListByDeliveryOrderId(Long deliveryOrderId);
}
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<DeliverOrderDO> getDeliverOrderPage(DeliverOrderPageReqVO pageReqVO);
// ==================== 子表(发货订单子项) ====================
/**
*
*
* @param deliveryOrderId id
* @return
*/
List<DeliverOrderSubDO> getDeliverOrderSubListByDeliveryOrderId(Long deliveryOrderId);
void operateProjectOrder(DeliverOrderSaveReqVO operateReqVO);
}

@ -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<DeliverOrderDO> getDeliverOrderPage(DeliverOrderPageReqVO pageReqVO) {
return deliverOrderMapper.selectPage(pageReqVO);
}
// ==================== 子表(发货订单子项) ====================
@Override
public List<DeliverOrderSubDO> getDeliverOrderSubListByDeliveryOrderId(Long deliveryOrderId) {
return deliverOrderSubMapper.selectListByDeliveryOrderId(deliveryOrderId);
}
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);
}
}
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<DeliverOrderDO>() {{
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<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