package com.zy.asrs.service.impl;
|
|
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSONObject;
|
import com.baomidou.mybatisplus.mapper.EntityWrapper;
|
import com.core.common.Cools;
|
import com.core.common.DateUtils;
|
import com.core.common.SnowflakeIdWorker;
|
import com.core.common.SpringUtils;
|
import com.core.exception.CoolException;
|
import com.zy.asrs.entity.*;
|
import com.zy.asrs.entity.param.*;
|
import com.zy.asrs.entity.result.OpenOrderCompeteResult;
|
import com.zy.asrs.entity.result.StockVo;
|
import com.zy.asrs.mapper.TagMapper;
|
import com.zy.asrs.service.*;
|
import com.zy.asrs.utils.MatUtils;
|
import com.zy.asrs.utils.OrderInAndOutUtil;
|
import com.zy.asrs.utils.Utils;
|
import com.zy.common.model.DetlDto;
|
import com.zy.common.service.CommonService;
|
import com.zy.common.utils.HttpHandler;
|
import com.zy.common.utils.NodeUtils;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import javax.rmi.CORBA.Util;
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
|
/**
|
* Created by vincent on 2022/4/9
|
*/
|
@Slf4j
|
@Service
|
public class OpenServiceImpl implements OpenService {
|
|
@Autowired
|
private OrderService orderService;
|
@Autowired
|
private OrderDetlService orderDetlService;
|
@Autowired
|
private SnowflakeIdWorker snowflakeIdWorker;
|
@Autowired
|
private DocTypeService docTypeService;
|
@Autowired
|
private MatService matService;
|
@Autowired
|
private LocDetlService locDetlService;
|
@Autowired
|
private PackService packService;
|
@Autowired
|
private TagService tagService;
|
@Autowired
|
private TagMapper tagMapper;
|
@Autowired
|
private BasArmService basArmService;
|
@Autowired
|
private BasArmMastService basArmMastService;
|
@Autowired
|
private BasArmMastSignService basArmMastSignService;
|
@Autowired
|
private BasAgvMastService basAgvMastService;
|
@Autowired
|
private LocOwnerService locOwnerService;
|
@Autowired
|
private CommonService commonService;
|
|
@Override
|
@Transactional
|
public void pakinOrderCreate(OpenOrderPakinParam param) {
|
Order order = orderService.selectByNo(param.getOrderNo());
|
if (!Cools.isEmpty(order)) {
|
throw new CoolException(param.getOrderNo() + "单据已存在,请勿重复提交");
|
}
|
DocType docType = docTypeService.selectOrAdd(param.getOrderType(), Boolean.TRUE);
|
Date now = new Date();
|
LocOwner locOwner = null;
|
if (!Cools.isEmpty(param.getOwnerId())) {
|
locOwner = locOwnerService.selectById(param.getOwnerId());
|
} else {
|
locOwner = locOwnerService.selectById(1);
|
}
|
// 单据主档
|
order = new Order(
|
String.valueOf(snowflakeIdWorker.nextId()), // 编号[非空]
|
param.getOrderNo(), // 订单编号
|
DateUtils.convert(now), // 单据日期
|
docType.getDocId(), // 单据类型
|
null, // 项目编号
|
param.getStandby1(), //项目名称 客户PO号
|
null, // 调拨项目编号
|
null, // 初始票据号
|
null, // 票据号
|
null, // 客户编号
|
locOwner.getOwner(), // 客户
|
null, // 联系方式
|
null, // 操作人员
|
null, // 合计金额
|
null, // 优惠率
|
null, // 优惠金额
|
null, // 销售或采购费用合计
|
null, // 实付金额
|
null, // 付款类型
|
null, // 业务员
|
null, // 结算天数
|
null, // 邮费支付类型
|
null, // 邮费
|
null, // 付款时间
|
null, // 发货时间
|
null, // 物流名称
|
null, // 物流单号
|
1L, // 订单状态
|
1, // 状态
|
9527L, // 添加人员
|
now, // 添加时间
|
9527L, // 修改人员
|
now, // 修改时间
|
null, // 备注
|
1
|
);
|
if (!orderService.insert(order)) {
|
throw new CoolException("生成单据主档失败,请联系管理员");
|
}
|
// 单据明细档
|
List<DetlDto> list = new ArrayList<>();
|
List<DetlDto> orderDetails = param.getOrderDetails();
|
for (DetlDto detail : orderDetails) {
|
DetlDto dto = new DetlDto(detail.getMatnr(), detail.getBatch(),detail.getBrand(),detail.getStandby1(),detail.getStandby2(),detail.getStandby3(),detail.getLineNumber(),detail.getBoxType1(),detail.getBoxType2(),detail.getBoxType3(), detail.getAnfme());
|
if (DetlDto.hasLineNumber(list, dto)) {
|
DetlDto detlDto = DetlDto.findLineNumber(list, dto.getMatnr(), dto.getBatch(),dto.getBrand(),dto.getStandby1(),dto.getStandby2(),dto.getStandby3(),dto.getLineNumber(),dto.getBoxType1(),dto.getBoxType2(),dto.getBoxType3());
|
assert detlDto != null;
|
detlDto.setAnfme(detlDto.getAnfme() + detail.getAnfme());
|
} else {
|
list.add(dto);
|
}
|
}
|
for (DetlDto detlDto : list) {
|
Mat mat = matService.selectByMatnr(detlDto.getMatnr());
|
if (Cools.isEmpty(mat)) {
|
throw new CoolException(detlDto.getMatnr() + "编号商品检索失败,请先添加商品");
|
}
|
OrderDetl orderDetl = new OrderDetl();
|
orderDetl.sync(mat);
|
orderDetl.setLineNumber(detlDto.getLineNumber());
|
orderDetl.setBatch(detlDto.getBatch());
|
orderDetl.setAnfme(detlDto.getAnfme());
|
orderDetl.setBrand(detlDto.getBrand());
|
orderDetl.setStandby1(detlDto.getStandby1());
|
orderDetl.setStandby2(detlDto.getStandby2());
|
orderDetl.setStandby3(detlDto.getStandby3());
|
orderDetl.setBoxType1(detlDto.getBoxType1());
|
orderDetl.setBoxType2(detlDto.getBoxType2());
|
orderDetl.setBoxType3(detlDto.getBoxType3());
|
orderDetl.setOrderId(order.getId());
|
orderDetl.setOrderNo(order.getOrderNo());
|
orderDetl.setCreateBy(9527L);
|
orderDetl.setCreateTime(now);
|
orderDetl.setUpdateBy(9527L);
|
orderDetl.setUpdateTime(now);
|
orderDetl.setStatus(1);
|
orderDetl.setQty(0.0D);
|
orderDetl.setPakinPakoutStatus(1);
|
if (!orderDetlService.insert(orderDetl)) {
|
throw new CoolException("生成单据明细失败,请联系管理员");
|
}
|
}
|
}
|
|
@Override
|
@Transactional
|
public List<OpenOrderCompeteResult> pakinOrderComplete(OpenOrderCompleteParam param) {
|
List<OpenOrderCompeteResult> results = new ArrayList<>();
|
if (!Cools.isEmpty(param) && !Cools.isEmpty(param.getOrderNo())) {
|
// 指定订单
|
Order order = orderService.selectByNo(param.getOrderNo());
|
|
// Order order = OrderInAndOutUtil.selectByNo(Boolean.TRUE,param.getOrderNo());
|
|
if (null != order) {
|
OpenOrderCompeteResult result = new OpenOrderCompeteResult();
|
results.add(result);
|
result.setOrderNo(order.getOrderNo());
|
result.setOrderTime(order.getOrderTime());
|
result.setOrderType(order.getDocType$());
|
List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId());
|
// List<OrderDetl> orderDetls = OrderInAndOutUtil.selectByOrderId(order.getPakinPakoutStatus$(), order.getId());
|
for (OrderDetl orderDetl : orderDetls) {
|
result.getOrderDetails().add(new DetlDto(orderDetl.getOrderNo(), orderDetl.getMatnr(), orderDetl.getBatch(),orderDetl.getBrand(),
|
orderDetl.getStandby1(),orderDetl.getStandby2(),orderDetl.getStandby3(),orderDetl.getLineNumber(),
|
orderDetl.getBoxType1(),orderDetl.getBoxType2(),orderDetl.getBoxType3(), orderDetl.getQty()));
|
}
|
if (order.getSettle() == 4L) {
|
// 修改订单状态 4.完成 ===>> 6.已上报
|
// if (!orderService.updateSettle(order.getId(), 6L, null)) {
|
// throw new CoolException("服务器内部错误,请联系管理员");
|
// }
|
OrderInAndOutUtil.updateOrder(order.getPakinPakoutStatus$(),order.getId(), 6L, null);
|
}
|
}
|
} else {
|
// 所有订单
|
// List<Order> orders = orderService.selectBySettle(4L);
|
List<Order> orders = OrderInAndOutUtil.selectBySettle(null, 4L);
|
if (orders.isEmpty()){
|
orders = new ArrayList<>();
|
}
|
for (Order order : orders) {
|
OpenOrderCompeteResult result = new OpenOrderCompeteResult();
|
results.add(result);
|
result.setOrderNo(order.getOrderNo());
|
result.setOrderTime(order.getOrderTime());
|
result.setOrderType(order.getDocType$());
|
List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId());
|
// List<OrderDetl> orderDetls = OrderInAndOutUtil.selectByOrderId(order.getPakinPakoutStatus$(), order.getId());
|
|
for (OrderDetl orderDetl : orderDetls) {
|
result.getOrderDetails().add(new DetlDto(orderDetl.getOrderNo(), orderDetl.getMatnr(), orderDetl.getBatch(),orderDetl.getBrand(),
|
orderDetl.getStandby1(),orderDetl.getStandby2(),orderDetl.getStandby3(),orderDetl.getLineNumber(),
|
orderDetl.getBoxType1(),orderDetl.getBoxType2(),orderDetl.getBoxType3(),
|
orderDetl.getQty()));
|
}
|
// // 修改订单状态 4.完成 ===>> 6.已上报
|
// if (!orderService.updateSettle(order.getId(), 6L, null)) {
|
// throw new CoolException("服务器内部错误,请联系管理员");
|
// }
|
OrderInAndOutUtil.updateOrder(order.getPakinPakoutStatus$(),order.getId(),6L,null);
|
|
}
|
}
|
return results;
|
}
|
|
@Override
|
@Transactional
|
public void pakoutOrderCreate(OpenOrderPakoutParam param) {
|
Order order = orderService.selectByNo(param.getOrderNo());
|
// 如果单据不存在则添加;如果单据存在,作业中无法修改,反之则修改单据
|
if (!Cools.isEmpty(order)) {
|
if (order.getSettle() > 1L) {
|
throw new CoolException(param.getOrderNo() + "正在出库,无法修改单据");
|
}
|
orderService.remove(order.getId());
|
}
|
DocType docType = docTypeService.selectOrAdd(param.getOrderType(), Boolean.FALSE);
|
Date now = new Date();
|
LocOwner locOwner = null;
|
if (!Cools.isEmpty(param.getOwnerId())) {
|
locOwner = locOwnerService.selectById(param.getOwnerId());
|
} else {
|
locOwner = locOwnerService.selectById(1);
|
}
|
// 单据主档
|
order = new Order(
|
String.valueOf(snowflakeIdWorker.nextId()), // 编号[非空]
|
param.getOrderNo(), // 订单编号
|
DateUtils.convert(now), // 单据日期
|
docType.getDocId(), // 单据类型
|
null, // 项目编号
|
param.getStandby1(), //项目名称 客户PO号
|
null, // 调拨项目编号
|
null, // 初始票据号
|
null, // 票据号
|
null, // 客户编号
|
locOwner.getOwner(), // 客户
|
null, // 联系方式
|
null, // 操作人员
|
null, // 合计金额
|
null, // 优惠率
|
null, // 优惠金额
|
null, // 销售或采购费用合计
|
null, // 实付金额
|
null, // 付款类型
|
null, // 业务员
|
null, // 结算天数
|
null, // 邮费支付类型
|
null, // 邮费
|
null, // 付款时间
|
null, // 发货时间
|
null, // 物流名称
|
null, // 物流单号
|
1L, // 订单状态
|
1, // 状态
|
9527L, // 添加人员
|
now, // 添加时间
|
9527L, // 修改人员
|
now, // 修改时间
|
null, // 备注
|
2
|
);
|
if (!orderService.insert(order)) {
|
throw new CoolException("生成单据主档失败,请联系管理员");
|
}
|
// 单据明细档
|
List<DetlDto> list = new ArrayList<>();
|
List<DetlDto> orderDetails = param.getOrderDetails();
|
for (DetlDto detail : orderDetails) {
|
DetlDto dto = new DetlDto(detail.getMatnr(), detail.getBatch(),detail.getBrand(),detail.getStandby1(),detail.getStandby2(),detail.getStandby3(),detail.getLineNumber(),
|
detail.getBoxType1(),detail.getBoxType2(),detail.getBoxType3(), detail.getAnfme());
|
if (DetlDto.hasLineNumber(list, dto)) {
|
DetlDto detlDto = DetlDto.findLineNumber(list, dto.getMatnr(), dto.getBatch(),dto.getBrand(),dto.getStandby1(),dto.getStandby2(),dto.getStandby3(),dto.getLineNumber(),
|
dto.getBoxType1(),dto.getBoxType2(),dto.getBoxType3());
|
assert detlDto != null;
|
detlDto.setAnfme(detlDto.getAnfme() + detail.getAnfme());
|
} else {
|
list.add(dto);
|
}
|
}
|
for (DetlDto detlDto : list) {
|
Mat mat = matService.selectByMatnr(detlDto.getMatnr());
|
if (Cools.isEmpty(mat)) {
|
throw new CoolException(detlDto.getMatnr() + "编号商品检索失败,请先添加商品");
|
}
|
OrderDetl orderDetl = new OrderDetl();
|
orderDetl.sync(mat);
|
orderDetl.setLineNumber(detlDto.getLineNumber());
|
orderDetl.setBatch(detlDto.getBatch());
|
orderDetl.setAnfme(detlDto.getAnfme());
|
orderDetl.setBrand(detlDto.getBrand());
|
orderDetl.setStandby1(detlDto.getStandby1());
|
orderDetl.setStandby2(detlDto.getStandby2());
|
orderDetl.setStandby3(detlDto.getStandby3());
|
orderDetl.setBoxType1(detlDto.getBoxType1());
|
orderDetl.setBoxType2(detlDto.getBoxType2());
|
orderDetl.setBoxType3(detlDto.getBoxType3());
|
orderDetl.setOrderId(order.getId());
|
orderDetl.setOrderNo(order.getOrderNo());
|
orderDetl.setCreateBy(9527L);
|
orderDetl.setCreateTime(now);
|
orderDetl.setUpdateBy(9527L);
|
orderDetl.setUpdateTime(now);
|
orderDetl.setStatus(1);
|
orderDetl.setQty(0.0D);
|
orderDetl.setPakinPakoutStatus(2);
|
if (!orderDetlService.insert(orderDetl)) {
|
throw new CoolException("生成单据明细失败,请联系管理员");
|
}
|
}
|
}
|
|
@Override
|
public List<OpenOrderCompeteResult> pakoutOrderComplete(OpenOrderCompleteParam param) {
|
List<OpenOrderCompeteResult> results = new ArrayList<>();
|
if (!Cools.isEmpty(param) && !Cools.isEmpty(param.getOrderNo())) {
|
// 指定订单
|
Order order = orderService.selectByNo(param.getOrderNo());
|
// Order order = OrderInAndOutUtil.selectByNo(Boolean.FALSE, param.getOrderNo());
|
if (null != order) {
|
OpenOrderCompeteResult result = new OpenOrderCompeteResult();
|
results.add(result);
|
result.setOrderNo(order.getOrderNo());
|
result.setOrderTime(order.getOrderTime());
|
result.setOrderType(order.getDocType$());
|
List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId());
|
// List<OrderDetl> orderDetls = OrderInAndOutUtil.selectByOrderId(order.getPakinPakoutStatus$(),order.getId());
|
for (OrderDetl orderDetl : orderDetls) {
|
result.getOrderDetails().add(new DetlDto(orderDetl.getOrderNo(), orderDetl.getMatnr(), orderDetl.getBatch(), orderDetl.getBrand(),
|
orderDetl.getStandby1(),orderDetl.getStandby2(),orderDetl.getStandby3(),orderDetl.getLineNumber(),
|
orderDetl.getBoxType1(),orderDetl.getBoxType2(),orderDetl.getBoxType3(), orderDetl.getQty()));
|
}
|
if (order.getSettle() == 4L) {
|
// 修改订单状态 4.完成 ===>> 6.已上报
|
// if (!orderService.updateSettle(order.getId(), 6L, null)) {
|
// throw new CoolException("服务器内部错误,请联系管理员");
|
// }
|
OrderInAndOutUtil.updateOrder(order.getPakinPakoutStatus$(),order.getId(),6L,null);
|
}
|
}
|
} else {
|
// 所有订单
|
// List<Order> orders = orderService.selectList(new EntityWrapper<Order>().eq("settle", 4L));
|
List<Order> orders = OrderInAndOutUtil.selectBySettle(null, 4L);
|
for (Order order : orders) {
|
OpenOrderCompeteResult result = new OpenOrderCompeteResult();
|
results.add(result);
|
result.setOrderNo(order.getOrderNo());
|
result.setOrderTime(order.getOrderTime());
|
result.setOrderType(order.getDocType$());
|
List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId());
|
// List<OrderDetl> orderDetls = OrderInAndOutUtil.selectByOrderId(order.getPakinPakoutStatus$(), order.getId());
|
for (OrderDetl orderDetl : orderDetls) {
|
result.getOrderDetails().add(new DetlDto(orderDetl.getOrderNo(), orderDetl.getMatnr(), orderDetl.getBatch(),orderDetl.getBrand(),
|
orderDetl.getStandby1(),orderDetl.getStandby2(),orderDetl.getStandby3(),orderDetl.getLineNumber(),
|
orderDetl.getBoxType1(),orderDetl.getBoxType2(),orderDetl.getBoxType3(), orderDetl.getQty()));
|
}
|
// 修改订单状态 4.完成 ===>> 6.已上报
|
// if (!orderService.updateSettle(order.getId(), 6L, null)) {
|
// throw new CoolException("服务器内部错误,请联系管理员");
|
// }
|
OrderInAndOutUtil.updateOrder(order.getPakinPakoutStatus$(),order.getId(),6L,null);
|
}
|
}
|
return results;
|
}
|
|
@Override
|
@Transactional
|
public List<StockVo> queryStock() {
|
return locDetlService.queryStockTotal();
|
}
|
|
@Override
|
@Transactional
|
public void packageUp(PackParam param) {
|
if (Cools.isEmpty(param.getBarcode())) {
|
throw new CoolException("barcode不能为空");
|
}
|
Mat analyse = MatUtils.analyseMat(param.getBarcode());
|
Pack pack = packService.selectByBarcode(param.getBarcode());
|
if (null != pack) {
|
throw new CoolException(param.getBarcode() + "重复提交");
|
}
|
Date now = new Date();
|
pack = new Pack(
|
param.getBarcode(), // 条码[非空]
|
analyse.getMatnr(), // 商品编号
|
analyse.getBarcode(), // 序列码
|
1L, // 订单状态
|
1, // 状态
|
now, // 添加时间
|
null, // 添加人员
|
now, // 修改时间
|
null, // 修改人员
|
null // 备注
|
);
|
if (!packService.insert(pack)) {
|
throw new CoolException("服务器内部错误,请联系管理员");
|
}
|
|
Mat mat = matService.selectByMatnr(analyse.getMatnr());
|
if (mat == null) {
|
mat = new Mat();
|
// 分类
|
Long tagId;
|
// 一级分类
|
if (!Cools.isEmpty(param.getGroupCode()) && !Cools.isEmpty(param.getGroupName())) {
|
Tag priTag = tagService.selectByName(param.getGroupCode(), 2);
|
if (priTag == null) {
|
Tag top = tagService.getTop();
|
NodeUtils nodeUtils = new NodeUtils();
|
nodeUtils.executePath(top.getId());
|
priTag = new Tag(
|
null, // 编号
|
param.getGroupCode(), // 名称
|
top.getId(), // 父级
|
top.getName(), // 父级名称
|
nodeUtils.path.toString(), // 关联路径
|
nodeUtils.pathName.toString(), // 关联路径名
|
0, // 类型
|
null, // 负责人
|
null, // 图片
|
null, // 简要描述
|
null, // 数量
|
2, // 等级
|
null, // 排序
|
1, // 状态
|
now, // 添加时间
|
null, // 添加人员
|
now, // 修改时间
|
null, // 修改人员
|
null // 备注
|
);
|
if (tagMapper.insert(priTag) == 0) {
|
throw new CoolException("服务器内部错误,请联系管理员");
|
}
|
}
|
// 二级分类
|
Tag secTag = tagService.selectByName(param.getGroupName(), 3);
|
if (secTag == null) {
|
NodeUtils nodeUtils = new NodeUtils();
|
nodeUtils.executePath(priTag.getId());
|
secTag = new Tag(
|
null, // 编号
|
param.getGroupName(), // 名称
|
priTag.getId(), // 父级
|
priTag.getName(), // 父级名称
|
nodeUtils.path.toString(), // 关联路径
|
nodeUtils.pathName.toString(), // 关联路径名
|
0, // 类型
|
null, // 负责人
|
null, // 图片
|
null, // 简要描述
|
null, // 数量
|
3, // 等级
|
null, // 排序
|
1, // 状态
|
now, // 添加时间
|
null, // 添加人员
|
now, // 修改时间
|
null, // 修改人员
|
null // 备注
|
);
|
if (tagMapper.insert(secTag) == 0) {
|
throw new CoolException("服务器内部错误,请联系管理员");
|
}
|
}
|
tagId = secTag.getId();
|
} else {
|
tagId = tagService.getTop().getId();
|
}
|
mat.setTagId(tagId);
|
mat.setMatnr(analyse.getMatnr());
|
mat.setMaktx(param.getMaterialName());
|
mat.setSpecs(param.getConfigureDesc());
|
mat.setModel(analyse.getModel());
|
mat.setStatus(1);
|
mat.setCreateTime(now);
|
mat.setUpdateTime(now);
|
if (!matService.insert(mat)) {
|
throw new CoolException("服务器内部错误,请联系管理员");
|
} else {
|
log.info("打包上线添加新物料[商品编号:{}]", mat.getMatnr());
|
}
|
}
|
}
|
|
@Override
|
@Transactional
|
public void syncMat(MatSyncParam param) {
|
if (Cools.isEmpty(param.getMatDetails()) || param.getMatDetails().size() <=0 ) {
|
throw new CoolException("商品数据为空");
|
}
|
|
for(MatSyncParam.MatParam matParam : param.getMatDetails()){
|
if(Cools.isEmpty(matParam.getMatnr())){
|
throw new CoolException("商品编码不能为空");
|
}
|
|
Date now = new Date();
|
Mat mat = matService.selectByMatnr(matParam.getMatnr());
|
if (mat == null) {
|
mat = new Mat();
|
// 分类
|
Long tagId;
|
// 一级分类
|
if (!Cools.isEmpty(matParam.getGroupCode()) && !Cools.isEmpty(matParam.getGroupName())) {
|
Tag priTag = tagService.selectByName(matParam.getGroupCode(), 2);
|
if (priTag == null) {
|
Tag top = tagService.getTop();
|
NodeUtils nodeUtils = new NodeUtils();
|
nodeUtils.executePath(top.getId());
|
priTag = new Tag(
|
null, // 编号
|
matParam.getGroupCode(), // 名称
|
top.getId(), // 父级
|
top.getName(), // 父级名称
|
nodeUtils.path.toString(), // 关联路径
|
nodeUtils.pathName.toString(), // 关联路径名
|
0, // 类型
|
null, // 负责人
|
null, // 图片
|
null, // 简要描述
|
null, // 数量
|
2, // 等级
|
null, // 排序
|
1, // 状态
|
now, // 添加时间
|
null, // 添加人员
|
now, // 修改时间
|
null, // 修改人员
|
null // 备注
|
);
|
if (tagMapper.insert(priTag) == 0) {
|
throw new CoolException("服务器内部错误,请联系管理员");
|
}
|
}
|
// 二级分类
|
Tag secTag = tagService.selectByName(matParam.getGroupName(), 3);
|
if (secTag == null) {
|
NodeUtils nodeUtils = new NodeUtils();
|
nodeUtils.executePath(priTag.getId());
|
secTag = new Tag(
|
null, // 编号
|
matParam.getGroupName(), // 名称
|
priTag.getId(), // 父级
|
priTag.getName(), // 父级名称
|
nodeUtils.path.toString(), // 关联路径
|
nodeUtils.pathName.toString(), // 关联路径名
|
0, // 类型
|
null, // 负责人
|
null, // 图片
|
null, // 简要描述
|
null, // 数量
|
3, // 等级
|
null, // 排序
|
1, // 状态
|
now, // 添加时间
|
null, // 添加人员
|
now, // 修改时间
|
null, // 修改人员
|
null // 备注
|
);
|
if (tagMapper.insert(secTag) == 0) {
|
throw new CoolException("服务器内部错误,请联系管理员");
|
}
|
}
|
tagId = secTag.getId();
|
} else {
|
tagId = tagService.getTop().getId();
|
}
|
mat.sync(matParam);
|
// mat.setMatnr(param.getMatnr());
|
// mat.setMaktx(param.getMaktx());
|
// mat.setSpecs(param.getSpecs());
|
// mat.setModel(param.getModel());
|
|
mat.setTagId(tagId);
|
mat.setStatus(1);
|
mat.setCreateTime(now);
|
mat.setUpdateTime(now);
|
if (!matService.insert(mat)) {
|
throw new CoolException("服务器内部错误,请联系管理员");
|
} else {
|
log.info("同步新物料[商品编号:{}]", mat.getMatnr());
|
}
|
} else {
|
mat.sync(matParam);
|
if (!matService.update(mat, new EntityWrapper<Mat>().eq("matnr",matParam.getMatnr()))) {
|
throw new CoolException("更新已存在商品信息失败,请联系管理员");
|
}
|
}
|
}
|
|
}
|
|
@Override
|
@Transactional
|
public void taskArmReport(TaskArmReportParam param) {
|
BasArmMast basArmMast = new BasArmMast(param);
|
List<BasArm> basArmList = basArmService.selectList(new EntityWrapper<BasArm>().eq("sorting_line_sou", basArmMast.getSortingLine()));
|
for (BasArm basArm : basArmList) {
|
if (basArm.getStatus()!=1){
|
continue;
|
}
|
basArmMast.setArmNo(basArm.getArmNo());
|
basArmMast.setStaNo(basArm.getStaNoSou());
|
break;
|
}
|
BasArmMast basArmMastOld = basArmMastService.selectOne(
|
new EntityWrapper<BasArmMast>()
|
.eq("sorting_line", basArmMast.getSortingLine())
|
.eq("arm_no", basArmMast.getArmNo())
|
.eq("status", 0)
|
);
|
if (Cools.isEmpty(basArmMastOld)){
|
basArmMastService.insert(basArmMast);
|
} else {
|
throw new CoolException("等待前边货物抓取!!!"+ JSON.toJSONString(param));
|
}
|
}
|
|
@Override
|
@Transactional
|
public void taskArmCycleResult(TaskArmCycleResultParam param) {
|
BasArm basArm = basArmService.selectOne(new EntityWrapper<BasArm>()
|
.eq("arm_no", param.getArm_no())
|
.eq("sorting_line", Integer.parseInt(param.getStaNo()))
|
.eq("status", 1)
|
);
|
if (Cools.isEmpty(basArm)){
|
throw new CoolException("机械臂配置异常,查询不到机械臂数据!!!"+ JSON.toJSONString(param));
|
}
|
|
try{
|
BasArmMastSign basArmMastSign = basArmMastSignService.selectOne(
|
new EntityWrapper<BasArmMastSign>()
|
.eq("matnr", param.getMatnr())
|
.eq("order_no", param.getOrderNo())
|
.eq("create_time", param.getBindingTags())
|
);
|
if (!Cools.isEmpty(basArmMastSign)){
|
basArmMastSign.setStatus(1);
|
basArmMastSignService.updateById(basArmMastSign);
|
}
|
} catch (Exception e){
|
}
|
|
BasArmMast basArmMastListError = basArmMastService.selectOne(
|
new EntityWrapper<BasArmMast>()
|
.eq("sorting_line", basArm.getSortingLineSou())
|
.eq("arm_no", param.getArm_no())
|
.eq("status", 9)
|
);
|
if (!Cools.isEmpty(basArmMastListError)){
|
if (Integer.parseInt(param.getPick_num()) ==1){
|
basArmMastListError.setStatus(2);
|
basArmMastService.updateById(basArmMastListError);
|
}
|
return;
|
}
|
|
|
BasArmMast basArmMast = basArmMastService.selectOne(
|
new EntityWrapper<BasArmMast>()
|
.eq("sorting_line", basArm.getSortingLineSou())
|
.eq("arm_no", param.getArm_no())
|
.eq("status", 1)
|
);
|
if (Cools.isEmpty(basArmMast)){
|
throw new CoolException("未查询到相关机械臂拆码垛任务!!!"+ JSON.toJSONString(param));
|
}
|
if (Integer.parseInt(param.getPick_num()) !=1){
|
basArmMast.setStatus(9);
|
basArmMastService.updateById(basArmMast);
|
} else {
|
basArmMast.setStatus(2);
|
basArmMastService.updateById(basArmMast);
|
}
|
}
|
|
@Override
|
@Transactional
|
public void taskArmWorkspaceStatus(TaskArmWorkspaceStatusParam param) {
|
BasArm basArm = basArmService.selectOne(new EntityWrapper<BasArm>()
|
.eq("arm_no", param.getArm_no())
|
.eq("sta_no", Integer.parseInt(param.getId()))
|
.eq("status", 1)
|
);
|
if (Cools.isEmpty(basArm)){
|
throw new CoolException("机械臂配置异常,查询不到机械臂数据!!!"+ JSON.toJSONString(param));
|
}
|
BasArmMast basArmMast = basArmMastService.selectOne(
|
new EntityWrapper<BasArmMast>()
|
.eq("sta_no", basArm.getStaNoSou())
|
.eq("arm_no", param.getArm_no())
|
.eq("status", 2)
|
);
|
if (Cools.isEmpty(basArmMast)){
|
throw new CoolException("未查询到相关机械臂拆码垛任务!!!"+ JSON.toJSONString(param));
|
}
|
basArmMastService.updateArmMastStatus(param.getArm_no(),basArmMast.getSortingLine(),2,3);
|
}
|
|
@Override
|
@Transactional
|
public void taskArmWorkOrderStatus(OrderArmEndParam param) {
|
BasArm basArm = basArmService.selectOne(new EntityWrapper<BasArm>()
|
.eq("arm_no", param.getArm_no())
|
.eq("sorting_line", Integer.parseInt(param.getStaNo()))
|
.eq("status", 1)
|
);
|
if (Cools.isEmpty(basArm)){
|
throw new CoolException("机械臂配置异常,查询不到机械臂数据!!!"+ JSON.toJSONString(param));
|
}
|
BasArmMast basArmMast = basArmMastService.selectOne(
|
new EntityWrapper<BasArmMast>()
|
.eq("sorting_line",basArm.getSortingLineSou())
|
.eq("arm_no", param.getArm_no())
|
.eq("status", 5)
|
);
|
if (!Cools.isEmpty(basArmMast)){
|
basArmMastService.updateArmMastStatus(param.getArm_no(),basArmMast.getSortingLine(), 5,6);
|
}
|
}
|
|
@Override
|
@Transactional
|
public boolean TaskArmWorkOrderSign(OrderArmEndParam param) {
|
BasArmMastSign basArmMastSignNew = basArmMastSignService.selectOne(
|
new EntityWrapper<BasArmMastSign>()
|
.eq("order_no", param.getOrderNo())
|
.eq("create_time", param.getBindingTags())
|
.eq("status", 0)
|
);
|
if (Cools.isEmpty(basArmMastSignNew)){
|
return false;
|
}
|
return true;
|
}
|
|
@Override
|
@Transactional
|
public boolean TaskAgvReport(TaskAgvReportParam param) {
|
BasAgvMast basAgvMast = basAgvMastService.selectOne(new EntityWrapper<BasAgvMast>().eq("task_no", param.getTaskNo()));
|
if (Cools.isEmpty(basAgvMast)){
|
return false;
|
}
|
basAgvMast.setStatus(2);
|
basAgvMastService.updateById(basAgvMast);
|
return true;
|
}
|
|
@Override
|
@Transactional
|
public boolean taskAgvCreate(TaskAgvCreateParam param) {
|
// 参数检查
|
if (param == null) {
|
throw new CoolException("参数不能为空");
|
}
|
Integer devpId = 1;
|
// 创建对象(构造函数中已生成 timestamp)
|
BasAgvMast basAgvMast = new BasAgvMast();
|
// 生成 WMS 任务号(如无外部传入,可以使用雪花ID 或自增)
|
basAgvMast.setTaskNo(commonService.getWorkNo(0));
|
// 赋值参数
|
basAgvMast.setSourceStaNo(param.getSourceStaNo());
|
basAgvMast.setStaNo(param.getStaNo());
|
basAgvMast.setSourceLocNo(param.getSourceLocNo());
|
basAgvMast.setLocNo(param.getLocNo());
|
// 默认值
|
basAgvMast.setPriority(1L); // 默认优先级
|
basAgvMast.setStatus(0); // 初始状态
|
basAgvMast.setAppeTime(new Date()); // 添加时间
|
basAgvMast.setModiTime(new Date()); // 修改时间
|
basAgvMast.setIoType(param.getIoType());// 任务类型
|
basAgvMast.setDevpId(devpId);
|
|
// 插入数据库
|
basAgvMastService.insert(basAgvMast);
|
|
return true;
|
}
|
|
@Override
|
@Transactional
|
public List<AgvLocListDetlParam> getAgvLocList(AgvLocListParam param){
|
|
if (param == null || Cools.isEmpty(param.getLocNoList())) {
|
throw new CoolException("库位号不能为空");
|
}
|
|
List<String> locNos = param.getLocNoList();
|
|
List<AgvLocListDetlParam> result = new ArrayList<>();
|
|
for (String locNo : locNos) {
|
|
// 查询该库位 detail
|
List<LocDetl> detlList = locDetlService.selectList(
|
new EntityWrapper<LocDetl>().eq("loc_no", locNo)
|
);
|
|
AgvLocListDetlParam dto = new AgvLocListDetlParam();
|
dto.setLocNo(locNo);
|
dto.setAgvDetlList(detlList);
|
result.add(dto);
|
}
|
|
return result;
|
}
|
|
|
@Override
|
@Transactional
|
public boolean bindCtnrAndBin(bindCtnrAndBinParam param) {
|
// 参数检查
|
if (param == null) {
|
throw new CoolException("参数不能为空");
|
}
|
AgvBindCtnrAndBinParam agvBindCtnrAndBinParam = new AgvBindCtnrAndBinParam();
|
BasAgvLocNoService basAgvLocNoService = SpringUtils.getBean(BasAgvLocNoService.class);
|
BasAgvLocNo basAgvLocNoSou = basAgvLocNoService.selectOne(new EntityWrapper<BasAgvLocNo>().eq("loc_no", param.getLocNo()));
|
BasAgvLocNo basAgvLocNoEnd = basAgvLocNoService.selectOne(new EntityWrapper<BasAgvLocNo>().eq("sta_no", param.getStaNo()));
|
agvBindCtnrAndBinParam.setReqCode(String.valueOf(System.currentTimeMillis()));
|
agvBindCtnrAndBinParam.setCtnrCode(param.getBarcode());
|
agvBindCtnrAndBinParam.setCtnrTyp("1");
|
agvBindCtnrAndBinParam.setPositionCode(
|
basAgvLocNoSou != null && basAgvLocNoSou.getAgvLocNo() != null
|
? basAgvLocNoSou.getAgvLocNo()
|
: ""
|
);
|
agvBindCtnrAndBinParam.setStgBinCode(
|
basAgvLocNoEnd != null && basAgvLocNoEnd.getAgvLocNo() != null
|
? basAgvLocNoEnd.getAgvLocNo()
|
: ""
|
);
|
agvBindCtnrAndBinParam.setIndBind(param.getIndBind());
|
try {
|
String URL = "http://10.10.10.200:8181/rcms/services/rest/hikRpcService"; // AGV接口地址
|
String mesPath = "bindCtnrAndBin"; // 接口路径
|
String response = "";
|
boolean success = false;
|
|
try {
|
log.info("AGV绑定容器接口请求参数: {}", JSON.toJSONString(agvBindCtnrAndBinParam));
|
|
response = new HttpHandler.Builder()
|
.setUri(URL)
|
.setPath(mesPath)
|
.setJson(JSON.toJSONString(agvBindCtnrAndBinParam))
|
.build()
|
.doPost();
|
|
log.info("AGV绑定容器接口响应: {}", response);
|
JSONObject jsonObject = JSON.parseObject(response);
|
|
if (jsonObject.getInteger("code") != null && jsonObject.getInteger("code").equals(0)) {
|
success = true;
|
} else {
|
log.error("AGV绑定容器失败!!!url:{};request:{};response:{}", URL + "/" + mesPath, JSON.toJSONString(agvBindCtnrAndBinParam), response);
|
throw new CoolException("AGV绑定容器失败: " + jsonObject.getString("msg"));
|
}
|
} catch (Exception e) {
|
log.error("AGV绑定容器接口调用异常!!!url:{};request:{};response:{}", URL + "/" + mesPath, JSON.toJSONString(agvBindCtnrAndBinParam), response, e);
|
throw new CoolException("AGV绑定容器接口调用异常: " + e.getMessage());
|
}
|
} catch (Exception e) {
|
throw new CoolException(e.getMessage());
|
}
|
return true;
|
}
|
|
|
|
}
|