|
|
|
@ -0,0 +1,250 @@
|
|
|
|
|
package com.glxp.sale.admin.controller.inout.utils;
|
|
|
|
|
|
|
|
|
|
import com.glxp.sale.admin.constant.ConstantStatus;
|
|
|
|
|
import com.glxp.sale.admin.entity.inout.*;
|
|
|
|
|
import com.glxp.sale.admin.req.basic.FilterUdiInfoRequest;
|
|
|
|
|
import com.glxp.sale.admin.req.inout.StockOrderFilterRequest;
|
|
|
|
|
import com.glxp.sale.admin.res.basic.UdiRelevanceResponse;
|
|
|
|
|
import com.glxp.sale.admin.service.basic.UdiRelevanceService;
|
|
|
|
|
import com.glxp.sale.admin.service.inout.OrderDetailService;
|
|
|
|
|
import com.glxp.sale.admin.service.inout.OrderService;
|
|
|
|
|
import com.glxp.sale.admin.service.inout.StockOrderService;
|
|
|
|
|
import com.glxp.sale.admin.service.thrsys.ThrDataService;
|
|
|
|
|
import com.glxp.sale.admin.thread.InvProductsTrService;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
|
|
@Service
|
|
|
|
|
public class CheckOrderUtils {
|
|
|
|
|
@Resource
|
|
|
|
|
private OrderDetailService myErpOrderService;
|
|
|
|
|
@Resource
|
|
|
|
|
UdiRelevanceService udiRelevanceService;
|
|
|
|
|
@Resource
|
|
|
|
|
private OrderService orderService;
|
|
|
|
|
@Resource
|
|
|
|
|
StockOrderService stockOrderService;
|
|
|
|
|
@Resource
|
|
|
|
|
InvProductsTrService invProductsTrService;
|
|
|
|
|
|
|
|
|
|
public void check(String orderId, List<ErpOrderEntity> vailOrderEntities) {
|
|
|
|
|
FilterErpOrderRequest filterErpOrderRequest = new FilterErpOrderRequest();
|
|
|
|
|
filterErpOrderRequest.setOrderId(orderId);
|
|
|
|
|
List<ErpOrderEntity> myErpOrders = myErpOrderService.filterAllMyErpOrder(filterErpOrderRequest);
|
|
|
|
|
OrderEntity orderEntity = orderService.findById(orderId);
|
|
|
|
|
String errMsg = null;
|
|
|
|
|
|
|
|
|
|
for (ErpOrderEntity myErpOrder : myErpOrders) {
|
|
|
|
|
FilterUdiInfoRequest filterUdiInfoRequest = new FilterUdiInfoRequest();
|
|
|
|
|
filterUdiInfoRequest.setNameCode(myErpOrder.getNameCode());
|
|
|
|
|
List<UdiRelevanceResponse> udiRelevanceEntities = udiRelevanceService.filterUdiRelevance(filterUdiInfoRequest);
|
|
|
|
|
if (udiRelevanceEntities != null && udiRelevanceEntities.size() > 1 && myErpOrder.getBindRlFk() == null) {
|
|
|
|
|
orderEntity.setRemark("该产品DI绑定多个产品ID,请在扫码单据详情绑定对应产品ID");
|
|
|
|
|
orderEntity.setStatus(ConstantStatus.ORDER_STATUS_SUCCESS);
|
|
|
|
|
orderEntity.setContrastStatus(ConstantStatus.ORDER_CHECK_FAIL);
|
|
|
|
|
orderService.updateOrder(orderEntity);
|
|
|
|
|
return;
|
|
|
|
|
} else {
|
|
|
|
|
for (ErpOrderEntity vailOrderEntity : vailOrderEntities) {
|
|
|
|
|
UdiRelevanceResponse udiRelevanceResponse = null;
|
|
|
|
|
if (udiRelevanceEntities.size() == 1) {
|
|
|
|
|
udiRelevanceResponse = udiRelevanceEntities.get(0);
|
|
|
|
|
} else {
|
|
|
|
|
for (UdiRelevanceResponse temps : udiRelevanceEntities) {
|
|
|
|
|
if ((temps.getId() + "").equals(myErpOrder.getBindRlFk())) {
|
|
|
|
|
udiRelevanceResponse = temps;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (checkId(vailOrderEntity, udiRelevanceResponse) == null
|
|
|
|
|
&& checkBatchNo(vailOrderEntity, myErpOrder) == null
|
|
|
|
|
&& checkProductDate(vailOrderEntity, myErpOrder) == null
|
|
|
|
|
&& checkExpireDate(vailOrderEntity, myErpOrder) == null
|
|
|
|
|
&& checkWarehouse(vailOrderEntity, myErpOrder) == null
|
|
|
|
|
&& checkCount(vailOrderEntity, myErpOrder) == null
|
|
|
|
|
) {
|
|
|
|
|
|
|
|
|
|
myErpOrder.setErpCount(vailOrderEntity.getErpCount());
|
|
|
|
|
myErpOrder.setReCount(vailOrderEntity.getReCount());
|
|
|
|
|
myErpOrder.setGoodsname(vailOrderEntity.getGoodsname());
|
|
|
|
|
myErpOrder.setGoodsid(vailOrderEntity.getGoodsid());
|
|
|
|
|
myErpOrder.setStatus("success");
|
|
|
|
|
vailOrderEntity.setStatus("success");
|
|
|
|
|
myErpOrderService.updateErpOrder(myErpOrder);
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
} else {
|
|
|
|
|
errMsg = checkBatchNo(vailOrderEntity, myErpOrder);
|
|
|
|
|
if (errMsg == null) {
|
|
|
|
|
errMsg = checkId(vailOrderEntity, udiRelevanceResponse);
|
|
|
|
|
if (errMsg == null) {
|
|
|
|
|
errMsg = checkProductDate(vailOrderEntity, myErpOrder);
|
|
|
|
|
if (errMsg == null) {
|
|
|
|
|
errMsg = checkExpireDate(vailOrderEntity, myErpOrder);
|
|
|
|
|
if (errMsg == null) {
|
|
|
|
|
errMsg = checkWarehouse(vailOrderEntity, myErpOrder);
|
|
|
|
|
if (errMsg == null) {
|
|
|
|
|
errMsg = checkCount(vailOrderEntity, myErpOrder);
|
|
|
|
|
if (errMsg != null) {
|
|
|
|
|
myErpOrder.setErpCount(vailOrderEntity.getErpCount());
|
|
|
|
|
myErpOrder.setReCount(vailOrderEntity.getReCount());
|
|
|
|
|
myErpOrder.setGoodsname(vailOrderEntity.getGoodsname());
|
|
|
|
|
myErpOrder.setGoodsid(vailOrderEntity.getGoodsid());
|
|
|
|
|
myErpOrder.setStatus("fail");
|
|
|
|
|
vailOrderEntity.setStatus("fail");
|
|
|
|
|
myErpOrderService.updateErpOrder(myErpOrder);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
if (checkFinish(myErpOrders, vailOrderEntities)) {
|
|
|
|
|
orderEntity.setRemark("校验成功");
|
|
|
|
|
orderEntity.setStatus(ConstantStatus.ORDER_STATUS_SUCCESS);
|
|
|
|
|
orderEntity.setContrastStatus(ConstantStatus.ORDER_CHECK_SUCCESS);
|
|
|
|
|
orderService.updateOrder(orderEntity);
|
|
|
|
|
|
|
|
|
|
//更新业务单据为已校验
|
|
|
|
|
List<String> erpIds = DataTransUtil.strToErpList(orderEntity.getErpFk());
|
|
|
|
|
if (erpIds != null && erpIds.size() > 0) {
|
|
|
|
|
for (String id : erpIds) {
|
|
|
|
|
StockOrderFilterRequest stockOrderFilterRequest = new StockOrderFilterRequest();
|
|
|
|
|
stockOrderFilterRequest.setBillNo(id);
|
|
|
|
|
StockOrderEntity stockOrderEntity = stockOrderService.findOne(stockOrderFilterRequest);
|
|
|
|
|
stockOrderEntity.setStatus(ConstantStatus.SORDER_CHECKED);
|
|
|
|
|
stockOrderService.updateById(stockOrderEntity);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//生产库存
|
|
|
|
|
// invProductsTrService.genInvProducts(orderEntity.getId());
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
for (ErpOrderEntity erpOrderEntity : vailOrderEntities) {
|
|
|
|
|
if (!checkErpOrderExit(myErpOrders, erpOrderEntity)) {
|
|
|
|
|
erpOrderEntity.setOrderIdFk(orderId);
|
|
|
|
|
erpOrderEntity.setCoName(erpOrderEntity.getGoodsname());
|
|
|
|
|
erpOrderEntity.setPackSpec(erpOrderEntity.getGoodsunit());
|
|
|
|
|
myErpOrderService.insertErpOrder(erpOrderEntity);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
orderEntity.setRemark(errMsg);
|
|
|
|
|
orderEntity.setStatus(ConstantStatus.ORDER_STATUS_SUCCESS);
|
|
|
|
|
orderEntity.setContrastStatus(ConstantStatus.ORDER_CHECK_FAIL);
|
|
|
|
|
orderService.updateOrder(orderEntity);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//校验选入业务单据是否多出,多出,则添加到详情
|
|
|
|
|
public boolean checkErpOrderExit(List<ErpOrderEntity> myErpOrders, ErpOrderEntity vailErpEntity) {
|
|
|
|
|
for (ErpOrderEntity myErp : myErpOrders) {
|
|
|
|
|
if (myErp.getGoodsid() != null && vailErpEntity.getGoodsid().equals(myErp.getGoodsid())) {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//是否全部校验完成
|
|
|
|
|
public boolean checkFinish(List<ErpOrderEntity> myErpOrders, List<ErpOrderEntity> vailOrders) {
|
|
|
|
|
for (ErpOrderEntity myErpOrder : myErpOrders) {
|
|
|
|
|
if (!"success".equals(myErpOrder.getStatus())) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for (ErpOrderEntity myErpOrder : vailOrders) {
|
|
|
|
|
if (!"success".equals(myErpOrder.getStatus())) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public String checkId(ErpOrderEntity vailOrderEntity, UdiRelevanceResponse udiRelevanceResponse) {
|
|
|
|
|
if (vailOrderEntity.getGoodsid() != null && udiRelevanceResponse != null) {
|
|
|
|
|
if (vailOrderEntity.getGoodsid().equals(udiRelevanceResponse.getId() + ""))
|
|
|
|
|
return null;
|
|
|
|
|
} else {
|
|
|
|
|
return "产品ID不匹配!";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return "产品信息未找到!";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public String checkBatchNo(ErpOrderEntity vailOrderEntity, ErpOrderEntity myErpOrder) {
|
|
|
|
|
if (vailOrderEntity.getGoodsid() != null && myErpOrder.getBatchNo() != null) {
|
|
|
|
|
if (vailOrderEntity.getBatchNo().equals(myErpOrder.getBatchNo()))
|
|
|
|
|
return null;
|
|
|
|
|
} else if (vailOrderEntity.getGoodsid() == null && myErpOrder.getBatchNo() == null) {
|
|
|
|
|
return null;
|
|
|
|
|
} else {
|
|
|
|
|
return myErpOrder.getCoName() + "批次号不匹配!";
|
|
|
|
|
}
|
|
|
|
|
return "批次号不匹配!";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public String checkProductDate(ErpOrderEntity vailOrderEntity, ErpOrderEntity myErpOrder) {
|
|
|
|
|
if (vailOrderEntity.getProductDate() != null && myErpOrder.getProductDate() != null) {
|
|
|
|
|
if (vailOrderEntity.getProductDate().equals(myErpOrder.getProductDate()))
|
|
|
|
|
return null;
|
|
|
|
|
} else if (vailOrderEntity.getProductDate() == null && myErpOrder.getProductDate() == null) {
|
|
|
|
|
return null;
|
|
|
|
|
} else {
|
|
|
|
|
return myErpOrder.getCoName() + "生产日期不匹配!";
|
|
|
|
|
}
|
|
|
|
|
return "生产日期不匹配!";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public String checkExpireDate(ErpOrderEntity vailOrderEntity, ErpOrderEntity myErpOrder) {
|
|
|
|
|
if (vailOrderEntity.getExpireDate() != null && myErpOrder.getExpireDate() != null) {
|
|
|
|
|
if (vailOrderEntity.getExpireDate().equals(myErpOrder.getExpireDate()))
|
|
|
|
|
return null;
|
|
|
|
|
} else if (vailOrderEntity.getExpireDate() == null && myErpOrder.getExpireDate() == null) {
|
|
|
|
|
return null;
|
|
|
|
|
} else {
|
|
|
|
|
return myErpOrder.getCoName() + "失效日期不匹配!";
|
|
|
|
|
}
|
|
|
|
|
return "失效日期不匹配!";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public String checkWarehouse(ErpOrderEntity vailOrderEntity, ErpOrderEntity myErpOrder) {
|
|
|
|
|
if (vailOrderEntity.getWarehouseCode() != null && myErpOrder.getWarehouseCode() != null) {
|
|
|
|
|
if (vailOrderEntity.getWarehouseCode().equals(myErpOrder.getWarehouseCode()))
|
|
|
|
|
return null;
|
|
|
|
|
} else if (vailOrderEntity.getWarehouseCode() == null && myErpOrder.getWarehouseCode() == null) {
|
|
|
|
|
return null;
|
|
|
|
|
} else {
|
|
|
|
|
return myErpOrder.getCoName() + "仓位号不匹配!";
|
|
|
|
|
}
|
|
|
|
|
return "仓位号不匹配!";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public String checkCount(ErpOrderEntity vailOrderEntity, ErpOrderEntity myErpOrder) {
|
|
|
|
|
if (vailOrderEntity.getReCount() != null && myErpOrder.getCount() != null) {
|
|
|
|
|
if (vailOrderEntity.getReCount() == myErpOrder.getCount())
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
return myErpOrder.getCoName() + "数量不匹配!";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|