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,5 +1,10 @@
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;
@ -11,6 +16,7 @@ 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;
@ -39,6 +45,12 @@ 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')")
@ -54,6 +66,26 @@ public class DeliverOrderController {
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)

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

@ -63,4 +63,5 @@ public interface DeliverOrderService {
*/
List<DeliverOrderSubDO> getDeliverOrderSubListByDeliveryOrderId(Long deliveryOrderId);
void operateProjectOrder(DeliverOrderSaveReqVO operateReqVO);
}

@ -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);
// 插入子表
createDeliverOrderSubList(deliverOrder.getId(), createReqVO.getDeliverOrderSubs());
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);

Loading…
Cancel
Save