|
|
|
@ -1,10 +1,16 @@
|
|
|
|
|
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;
|
|
|
|
@ -32,16 +38,25 @@ public class DeliverOrderServiceImpl implements DeliverOrderService {
|
|
|
|
|
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();
|
|
|
|
|
}
|
|
|
|
@ -50,7 +65,10 @@ public class DeliverOrderServiceImpl implements DeliverOrderService {
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
|
public void updateDeliverOrder(DeliverOrderSaveReqVO updateReqVO) {
|
|
|
|
|
// 校验存在
|
|
|
|
|
validateDeliverOrderExists(updateReqVO.getId());
|
|
|
|
|
DeliverOrderDO oldDO = validateDeliverOrderExists(updateReqVO.getId());
|
|
|
|
|
if(!oldDO.canDeliver()){
|
|
|
|
|
throw exception(INVALID_OPERATE);
|
|
|
|
|
}
|
|
|
|
|
// 更新
|
|
|
|
|
DeliverOrderDO updateObj = BeanUtils.toBean(updateReqVO, DeliverOrderDO.class);
|
|
|
|
|
deliverOrderMapper.updateById(updateObj);
|
|
|
|
@ -71,10 +89,15 @@ public class DeliverOrderServiceImpl implements DeliverOrderService {
|
|
|
|
|
deleteDeliverOrderSubByDeliveryOrderId(id);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void validateDeliverOrderExists(Long id) {
|
|
|
|
|
if (deliverOrderMapper.selectById(id) == null) {
|
|
|
|
|
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
|
|
|
|
@ -94,6 +117,16 @@ public class DeliverOrderServiceImpl implements DeliverOrderService {
|
|
|
|
|
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);
|
|
|
|
|