|
|
|
@ -1,50 +1,39 @@
|
|
|
|
|
package jnpf.service.impl;
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
|
|
import com.baomidou.mybatisplus.annotation.TableField;
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
|
|
import jnpf.entity.*;
|
|
|
|
|
import jnpf.mapper.YysMaterialProcurementOrderMapper;
|
|
|
|
|
import jnpf.service.*;
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
|
|
import jnpf.base.UserInfo;
|
|
|
|
|
import jnpf.base.model.ColumnDataModel;
|
|
|
|
|
import jnpf.database.model.superQuery.SuperJsonModel;
|
|
|
|
|
import jnpf.entity.YysMaterialProcurementOrderEntity;
|
|
|
|
|
import jnpf.mapper.YysMaterialProcurementOrderMapper;
|
|
|
|
|
import jnpf.model.QueryModel;
|
|
|
|
|
import jnpf.model.yysmaterialprocurementorder.*;
|
|
|
|
|
import jnpf.permission.entity.UserEntity;
|
|
|
|
|
import jnpf.service.YysMaterialProcurementItemService;
|
|
|
|
|
import jnpf.service.YysMaterialProcurementOrderService;
|
|
|
|
|
import jnpf.util.*;
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
import org.apache.commons.collections4.CollectionUtils;
|
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
|
|
import jnpf.util.GeneraterSwapUtil;
|
|
|
|
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
|
|
import java.lang.reflect.Field;
|
|
|
|
|
|
|
|
|
|
import com.baomidou.mybatisplus.annotation.TableField;
|
|
|
|
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
|
|
import java.time.LocalDate;
|
|
|
|
|
import java.time.format.DateTimeFormatter;
|
|
|
|
|
import java.util.*;
|
|
|
|
|
import java.util.concurrent.CompletableFuture;
|
|
|
|
|
import java.util.concurrent.atomic.AtomicInteger;
|
|
|
|
|
|
|
|
|
|
import jnpf.model.QueryModel;
|
|
|
|
|
|
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
import jnpf.base.model.ColumnDataModel;
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
import org.apache.commons.collections4.CollectionUtils;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
|
|
import jnpf.database.model.superQuery.SuperJsonModel;
|
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
|
|
|
|
|
|
|
import jnpf.util.*;
|
|
|
|
|
|
|
|
|
|
import java.util.*;
|
|
|
|
|
|
|
|
|
|
import jnpf.base.UserInfo;
|
|
|
|
|
import jnpf.permission.entity.UserEntity;
|
|
|
|
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* YysMaterialProcurementOrder
|
|
|
|
|
* 版本: V3.5
|
|
|
|
@ -258,6 +247,7 @@ public class YysMaterialProcurementOrderServiceImpl extends ServiceImpl<YysMater
|
|
|
|
|
List<String> finalAllRuleIDlist = allRuleIDlist;
|
|
|
|
|
yysMaterialProcurementOrderQueryWrapper.lambda().and(t -> t.in(YysMaterialProcurementOrderEntity::getId, finalAllRuleIDlist));
|
|
|
|
|
}
|
|
|
|
|
yysMaterialProcurementOrderQueryWrapper.lambda().ne(YysMaterialProcurementOrderEntity::getOrderStatus, ProcurementOrderStatusEnum.TO_PRODUCTION.getCode());
|
|
|
|
|
//假删除标志
|
|
|
|
|
yysMaterialProcurementOrderQueryWrapper.lambda().isNull(YysMaterialProcurementOrderEntity::getDeleteMark);
|
|
|
|
|
|
|
|
|
@ -388,6 +378,7 @@ public class YysMaterialProcurementOrderServiceImpl extends ServiceImpl<YysMater
|
|
|
|
|
entity.setOrderNumber("PO" + currentDate + number);
|
|
|
|
|
entity.setCreatorTime(DateUtil.getNowDate());
|
|
|
|
|
entity.setCreatorUserId(userProvider.get().getUserId());
|
|
|
|
|
entity.setOrderStatus(ProcurementOrderStatusEnum.NO_ORDERS_TAKEN.getCode());
|
|
|
|
|
return entity;
|
|
|
|
|
}).collect(Collectors.toList());
|
|
|
|
|
boolean result = this.saveBatch(collect);
|
|
|
|
@ -412,29 +403,153 @@ public class YysMaterialProcurementOrderServiceImpl extends ServiceImpl<YysMater
|
|
|
|
|
wrapper.eq(YysMaterialProcurementOrderEntity::getOrderNumber, queryBody.getOrderNumber());
|
|
|
|
|
}
|
|
|
|
|
wrapper.eq(YysMaterialProcurementOrderEntity::getOrderStatus, queryBody.getOrderStatus());
|
|
|
|
|
wrapper.ne(YysMaterialProcurementOrderEntity::getOrderStatus, ProcurementOrderStatusEnum.TO_PRODUCTION.getCode());
|
|
|
|
|
wrapper.isNull(YysMaterialProcurementOrderEntity::getDeleteMark);
|
|
|
|
|
return this.list(wrapper);
|
|
|
|
|
}
|
|
|
|
|
public Void noGoods(YysMaterialProcurementOrderRequest queryNo) {
|
|
|
|
|
log.info("点击缺货结单-app");
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void finish(YysMaterialProcurementOrderRequest request) {
|
|
|
|
|
log.info("app-缺货结单,采购订单信息:{}", request);
|
|
|
|
|
if (ObjectUtil.isNull(request)) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
LambdaQueryWrapper<YysMaterialProcurementOrderEntity> wrapper = new LambdaQueryWrapper<>();
|
|
|
|
|
wrapper.eq(YysMaterialProcurementOrderEntity::getOrderNumber, request.getOrderNumber());
|
|
|
|
|
YysMaterialProcurementOrderEntity entity = this.getOne(wrapper);
|
|
|
|
|
entity.setOrderStatus(ProcurementOrderStatusEnum.OUT_OF_STOCK_STATEMENTS.getCode());
|
|
|
|
|
this.updateById(entity);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return null;
|
|
|
|
|
@Override
|
|
|
|
|
public void delay(YysMaterialProcurementOrderRequest request) {
|
|
|
|
|
log.info("app-延期交货,采购订单信息:{}", request);
|
|
|
|
|
if (ObjectUtil.isNull(request)) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
LambdaQueryWrapper<YysMaterialProcurementOrderEntity> wrapper = new LambdaQueryWrapper<>();
|
|
|
|
|
wrapper.eq(YysMaterialProcurementOrderEntity::getOrderNumber, request.getOrderNumber());
|
|
|
|
|
YysMaterialProcurementOrderEntity entity = this.getOne(wrapper);
|
|
|
|
|
if (ObjectUtil.isNull(entity)) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
entity.setOrderStatus(ProcurementOrderStatusEnum.PARTIAL_SHIPMENT.getCode());
|
|
|
|
|
entity.setDelayedDeliveryDate(request.getExpectedSendTime());
|
|
|
|
|
entity.setDelayReason(request.getExtensionReason());
|
|
|
|
|
this.updateById(entity);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public List<YysMaterialProcurementOrderEntity> delayGoods(YysMaterialProcurementOrderRequest queryDelay) {
|
|
|
|
|
return null;
|
|
|
|
|
public String shipments(YysMaterialProcurementOrderRequest request) {
|
|
|
|
|
log.info("app-发货,采购订单信息:{}", request);
|
|
|
|
|
if (ObjectUtil.isNull(request) || ObjectUtil.isNull(request.getOrderNumber())) {
|
|
|
|
|
return "发货失败,订单号为空";
|
|
|
|
|
}
|
|
|
|
|
LambdaQueryWrapper<YysMaterialProcurementOrderEntity> wrapper = new LambdaQueryWrapper<>();
|
|
|
|
|
wrapper.eq(YysMaterialProcurementOrderEntity::getOrderNumber, request.getOrderNumber());
|
|
|
|
|
YysMaterialProcurementOrderEntity entity = this.getOne(wrapper);
|
|
|
|
|
if (ObjectUtil.isNull(entity)) {
|
|
|
|
|
return "发货失败,订单不存在";
|
|
|
|
|
}
|
|
|
|
|
BigDecimal totalSendQuantity = entity.getTotalSendQuantity() != null ? entity.getTotalSendQuantity() : BigDecimal.ZERO;
|
|
|
|
|
BigDecimal newTotalSendQuantity = totalSendQuantity.add(request.getSendNumber());
|
|
|
|
|
int flag = 0;
|
|
|
|
|
if (newTotalSendQuantity.compareTo(entity.getOrderQuantity()) == 0) {
|
|
|
|
|
entity.setOrderStatus(ProcurementOrderStatusEnum.ALL_SHIPPED.getCode());
|
|
|
|
|
flag = 1;
|
|
|
|
|
} else {
|
|
|
|
|
entity.setOrderStatus(ProcurementOrderStatusEnum.PARTIAL_SHIPMENT.getCode());
|
|
|
|
|
}
|
|
|
|
|
entity.setTotalSendQuantity(newTotalSendQuantity);
|
|
|
|
|
boolean result = this.updateById(entity);
|
|
|
|
|
if (result) {
|
|
|
|
|
//部分发货
|
|
|
|
|
if (flag == 0) {
|
|
|
|
|
CompletableFuture.runAsync(() -> {
|
|
|
|
|
String mainId = RandomUtil.uuId();
|
|
|
|
|
entity.setId(mainId);
|
|
|
|
|
entity.setOrderStatus(ProcurementOrderStatusEnum.SHIPPED.getCode());
|
|
|
|
|
entity.setBatchDeliveryDate(request.getSendTime());
|
|
|
|
|
entity.setBatchShipmentQuantity(request.getSendNumber());
|
|
|
|
|
//获取采购订单号最新编码号
|
|
|
|
|
int newOrderNum = this.getNewOrderNum(entity.getOrderNumber());
|
|
|
|
|
entity.setOrderNumber(entity.getOrderNumber() + "-" + newOrderNum);
|
|
|
|
|
this.save(entity);
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
return "发货成功";
|
|
|
|
|
}
|
|
|
|
|
return "发货失败";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public List<YysMaterialProcurementOrderEntity> sendGoods(YysMaterialProcurementOrderRequest querySend) {
|
|
|
|
|
return null;
|
|
|
|
|
public String toProd(YysMaterialProcurementOrderRequest request) {
|
|
|
|
|
log.info("app-投产,采购订单信息:{}", request);
|
|
|
|
|
if (ObjectUtil.isNull(request)) {
|
|
|
|
|
return "填写信息有误";
|
|
|
|
|
}
|
|
|
|
|
LambdaQueryWrapper<YysMaterialProcurementOrderEntity> wrapper = new LambdaQueryWrapper<>();
|
|
|
|
|
wrapper.eq(YysMaterialProcurementOrderEntity::getOrderNumber, request.getOrderNumber());
|
|
|
|
|
YysMaterialProcurementOrderEntity entity = this.getOne(wrapper);
|
|
|
|
|
if (ObjectUtil.isNull(entity)) {
|
|
|
|
|
return "投产失败,订单不存在";
|
|
|
|
|
}
|
|
|
|
|
entity.setProductionDate(request.getProductionTime());
|
|
|
|
|
if (ObjectUtil.isNull(entity.getTotalProductionQuantity())) {
|
|
|
|
|
entity.setTotalProductionQuantity(request.getProductionNumber());
|
|
|
|
|
} else {
|
|
|
|
|
entity.setTotalProductionQuantity(request.getProductionNumber().add(entity.getTotalProductionQuantity()));
|
|
|
|
|
}
|
|
|
|
|
boolean result = this.updateById(entity);
|
|
|
|
|
if (result) {
|
|
|
|
|
CompletableFuture.runAsync(() -> {
|
|
|
|
|
//添加投产记录一条 列表中不展示
|
|
|
|
|
String mainId = RandomUtil.uuId();
|
|
|
|
|
entity.setId(mainId);
|
|
|
|
|
entity.setTotalProductionQuantity(request.getProductionNumber());
|
|
|
|
|
entity.setOrderStatus(ProcurementOrderStatusEnum.TO_PRODUCTION.getCode());
|
|
|
|
|
//获取采购订单号最新编码号
|
|
|
|
|
int newOrderNum = this.getNewOrderNum(entity.getOrderNumber());
|
|
|
|
|
entity.setOrderNumber(entity.getOrderNumber() + "-" + newOrderNum);
|
|
|
|
|
this.save(entity);
|
|
|
|
|
});
|
|
|
|
|
return "投产成功";
|
|
|
|
|
}
|
|
|
|
|
return "投产失败";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void takeOrder(String orderNumber) {
|
|
|
|
|
log.info("app-接单,采购订单号:{}", orderNumber);
|
|
|
|
|
LambdaQueryWrapper<YysMaterialProcurementOrderEntity> wrapper = new LambdaQueryWrapper<>();
|
|
|
|
|
wrapper.eq(YysMaterialProcurementOrderEntity::getOrderNumber, orderNumber);
|
|
|
|
|
YysMaterialProcurementOrderEntity entity = this.getOne(wrapper);
|
|
|
|
|
if (ObjectUtil.isNull(entity)) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
entity.setOrderStatus(ProcurementOrderStatusEnum.ORDERS_TAKEN.getCode());
|
|
|
|
|
this.updateById(entity);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public List<YysMaterialProcurementOrderEntity> operation(YysMaterialProcurementOrderRequest queryTc) {
|
|
|
|
|
return null;
|
|
|
|
|
public String confirmQuantity(YysMaterialProcurementOrderRequest request) {
|
|
|
|
|
log.info("确认到货,采购订单号:{}", request.getOrderNumber());
|
|
|
|
|
if (ObjectUtil.isNull(request)) {
|
|
|
|
|
return "填写信息有误";
|
|
|
|
|
}
|
|
|
|
|
LambdaQueryWrapper<YysMaterialProcurementOrderEntity> wrapper = new LambdaQueryWrapper<>();
|
|
|
|
|
wrapper.eq(YysMaterialProcurementOrderEntity::getOrderNumber, request.getOrderNumber());
|
|
|
|
|
YysMaterialProcurementOrderEntity entity = this.getOne(wrapper);
|
|
|
|
|
if (ObjectUtil.isNull(entity)) {
|
|
|
|
|
return "数据不存在";
|
|
|
|
|
}
|
|
|
|
|
entity.setConfirmQuantityReceived(request.getConfirmQuantity());
|
|
|
|
|
entity.setOrderStatus(ProcurementOrderStatusEnum.ARRIVED.getCode());
|
|
|
|
|
boolean result = this.updateById(entity);
|
|
|
|
|
if (result) {
|
|
|
|
|
return "确认到货成功";
|
|
|
|
|
}
|
|
|
|
|
return "确认到货失败";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private int getNewNum() {
|
|
|
|
@ -458,4 +573,15 @@ public class YysMaterialProcurementOrderServiceImpl extends ServiceImpl<YysMater
|
|
|
|
|
String number = max.getOrderNumber().replace("PO", "").replace(currentDate, "");
|
|
|
|
|
return Integer.parseInt(number) + 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private int getNewOrderNum(String orderNumber) {
|
|
|
|
|
LambdaQueryWrapper<YysMaterialProcurementOrderEntity> wrapper = new LambdaQueryWrapper<>();
|
|
|
|
|
wrapper.like(YysMaterialProcurementOrderEntity::getOrderNumber, orderNumber);
|
|
|
|
|
wrapper.isNull(YysMaterialProcurementOrderEntity::getDeleteMark);
|
|
|
|
|
List<YysMaterialProcurementOrderEntity> list = this.list(wrapper);
|
|
|
|
|
if (CollectionUtils.isEmpty(list) || list.size() == 1) {
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
|
|
|
|
return list.size();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|