Commit cbfa410d sunke

线边仓间入库类型修正

出入库记录只记录补料单号
1 个父辈 7d58d994
......@@ -27,6 +27,8 @@ import com.neotel.smfcore.core.hik.enums.IN_OUT_TYPE;
import com.neotel.smfcore.core.message.util.DeviceMessageUtil;
import com.neotel.smfcore.core.order.LiteOrderCache;
import com.neotel.smfcore.core.order.enums.ORDER_COLOR;
import com.neotel.smfcore.core.order.service.manager.ILiteOrderItemManager;
import com.neotel.smfcore.core.order.service.manager.ILiteOrderManager;
import com.neotel.smfcore.core.order.service.po.LiteOrder;
import com.neotel.smfcore.core.order.service.po.LiteOrderItem;
import com.neotel.smfcore.core.storage.enums.DeviceType;
......@@ -95,6 +97,12 @@ public class BaseDeviceHandler implements IDeviceHandler {
@Autowired
protected LiteOrderCache liteOrderCache;
@Autowired
private ILiteOrderManager liteOrderManager;
@Autowired
private ILiteOrderItemManager liteOrderItemManager;
/**
* CID的服务器消息(key 为 cid)
*/
......@@ -663,13 +671,15 @@ public class BaseDeviceHandler implements IDeviceHandler {
//判断是否是工单出库
if(ObjectUtil.isNotEmpty( task.getSourceId())&&ObjectUtil.isNotEmpty(task.getSourceName())&&task.isOrderTask()){
LiteOrder liteOrder=liteOrderCache.findOrderByNo(task.getSourceName());
LiteOrderItem item=liteOrder.getItemById(task.getSubSourceId());
log.info("工单["+task.getSourceId()+"]物料["+task.getBarcode()+"]ItemId=" + task.getSubSourceId() + "出库完成");
LiteOrder liteOrder=liteOrderManager.get(task.getSourceId());
//LiteOrderItem item= liteOrderItemManager.get(task.getSubSourceId());
//liteOrder.getItemById(task.getSubSourceId());
String station = task.getSubSourceInfo();
int interceptFlag=task.isNeedSplitting()?1:0;
int interceptQty=task.getNeedQty();
//工单出库出库完成,7.3排程发料过账接口
ScheduleTaskInfo taskInfo=new ScheduleTaskInfo(liteOrder.getJobNo(),liteOrder.getReplenishmentNo(),item.getStation(),liteOrder.getBaseCode(),liteOrder.getLgort(),task.getNum(),interceptFlag,interceptQty,task.getBarcode());
ScheduleTaskInfo taskInfo=new ScheduleTaskInfo(liteOrder.getJobNo(),liteOrder.getReplenishmentNo(),station,liteOrder.getBaseCode(),liteOrder.getLgort(),task.getNum(),interceptFlag,interceptQty,task.getBarcode());
boolean result=HikApi.scheduleTaskApi(task.getOperator(),taskInfo );
}else {
//出库完成,调用 ,7.6出库下架过账接口
......
......@@ -112,7 +112,7 @@ public class NLPShelfHandler extends BaseDeviceHandler{
taskService.updateQueueTask(queueTask);
if(Strings.isNotBlank(queueTask.getPosName())){
statusBean.addData("open", queueTask.getPosName() + "=" + color.name());
log.info("库位[" + queueTask.getPosName() + "]["+queueTask.getBarcode()+"]+亮灯:" + color.name());
log.info("发送到客户端库位[" + queueTask.getPosName() + "]["+queueTask.getBarcode()+"]+亮灯:" + color.name());
}
}
}
......@@ -151,7 +151,7 @@ public class NLPShelfHandler extends BaseDeviceHandler{
List<String> ngToOk=new ArrayList<>();
//数据库有信息,实际无料
if(noReelPosErrorList.length>0){
log.info("开始检测noReelPosErrorList");
//log.info("开始检测noReelPosErrorList");
Query query=new Query(Criteria.where("posName").in(noReelPosErrorList));
List<StoragePos> posList= storagePosManager.findByQuery(query);
for (StoragePos pos:posList) {
......
......@@ -248,13 +248,14 @@ public class SingleInController {
if(inList != null){
if(inList.getDocType() == 4){
//线边仓间入库
businessType = "01";
businessType = "02";
businessNo = docName;
}
}
}
if(inType.equals(4)){
//退料入库
businessType = "01";
}
......
......@@ -104,6 +104,20 @@ public class LiteOrderCache implements ITaskListener {
liteOrderMap.put(order.getOrderNo(), order);
}
public LiteOrder findOrderById(String orderId){
for (LiteOrder order : liteOrderMap.values()) {
if(order.getId().equals(orderId)){
return order;
}
}
LiteOrder order=liteOrderManager.get(orderId);
if(order!=null){
addOrderToMap(order);
return order;
}
return null;
}
public LiteOrder findOrderByNo(String orderNo){
if(liteOrderMap.containsKey(orderNo)){
......@@ -184,18 +198,19 @@ public class LiteOrderCache implements ITaskListener {
private synchronized void finishedOrderTask(DataLog task) throws ValidateException {
//更新工单状态
String orderNo = task.getSourceName();
if (!Strings.isNullOrEmpty(orderNo)) {
LiteOrder order = liteOrderMap.get(orderNo);
String sourceName = task.getSourceName();
if (!Strings.isNullOrEmpty(task.getSourceId())) {
LiteOrder order = findOrderById(task.getSourceId());
if (order == null) {
log.info("缓存中未找到[" + orderNo + "],从数据库中重新加载");
order = liteOrderManager.findByOrderNo(orderNo);
log.info("缓存中未找到"+sourceName+"[" + task.getSourceId() + "],从数据库中重新加载");
order = liteOrderManager.get(task.getSourceId());
if (order != null) {
List<LiteOrderItem> items = liteOrderItemManager.findOrderItems(orderNo);
List<LiteOrderItem> items = liteOrderItemManager.findOrderItems(sourceName);
order.setOrderItems(items);
}
}
if (order != null) {
String orderNo = order.getOrderNo();
//任务是取消的,需要将总待出库数量-1
if (task.isCancel()) {
order.setTaskReelCount(order.getTaskReelCount() - 1);
......@@ -239,9 +254,9 @@ public class LiteOrderCache implements ITaskListener {
}
}
liteOrderManager.save(order);
liteOrderMap.put(orderNo, order);
liteOrderMap.put(order.getOrderNo(), order);
} else {
log.error("完成任务时,未找到工单[" + orderNo + "]信息");
log.error("完成任务时,未找到工单"+sourceName+"[" + task.getSourceId() + "]信息");
}
}
......@@ -565,7 +580,6 @@ public class LiteOrderCache implements ITaskListener {
DataLog task = taskService.newTask(pos) ;
task.setSourceId(cacheOrder.getId());
task.setSourceName(cacheOrder.getOrderNo());
task.setSubSourceId(orderItem.getId());
task.setSubSourceInfo(orderItem.getStation());
task.setType(OP.CHECKOUT);
......@@ -574,7 +588,9 @@ public class LiteOrderCache implements ITaskListener {
task.setOperator(userName);
task.setOutType(IN_OUT_TYPE.OUT_ORDER);//工单出库类型为10
task.setSourceName(cacheOrder.getJobNo());
if(cacheOrder.isRepleOrder()){
//task.setSourceName(cacheOrder.getReplenishmentNo());
task.setOutType(IN_OUT_TYPE.OUT_REPLE);//补料出库类型为11
}
if(jieliaoPosMap.containsKey(pos.getPosName())){
......
......@@ -243,6 +243,11 @@ public class LiteOrder extends BasePo implements Serializable {
setClosed(true);
}
}
if(isRepleOrder()){
//产线补料,直接关闭
setClosed(true);
}
setTaskFinishedTime(System.currentTimeMillis());
}
......
......@@ -30,6 +30,7 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.logging.log4j.util.Strings;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.data.mongodb.core.query.Criteria;
......@@ -215,6 +216,10 @@ public class OutListController {
Integer type = Convert.toInt(params.get("docType"));
//先从已存在的出库单查询是否存在
if(Strings.isBlank(name)){
return ResultBean.newErrorResult(1, "smfcore.empty", "出库单号不能为空");
}
OutList outList = outListCache.getOutList(name);
if (outList == null) {
//从接口获取出库单
......
......@@ -81,6 +81,7 @@ public class StoragePos extends BasePo implements Serializable {
*/
private List<String> limitPnList;
//海康项目小于0时用于锁定料架上的库位,不进行工单挑料
//进料优先级,数字越大优先级越高,例:1-1的优先级为100 仓1-2的优先级200,那么入仓时就会优先进入1-2仓
private double priority = 0f;
......
package com.neotel.smfcore.hikvision.bean;
import com.sun.corba.se.impl.resolver.SplitLocalResolverImpl;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
......
......@@ -424,7 +424,7 @@ public class PanaApiController implements IOpAuthApi, ITaskListener{
}
}
}else{
log.info("没有配置PanaCIM条码检测接口,查找setConfiguration注册的IP 及端口");
//log.info("没有配置PanaCIM条码检测接口,查找setConfiguration注册的IP 及端口");
return null;
}
} catch (Exception e) {
......@@ -477,7 +477,7 @@ public class PanaApiController implements IOpAuthApi, ITaskListener{
String result = HttpHelper.postJson(inNotifyApi,params);
log.info("Response Of checkInNotification From PanaCIM:"+result);
}else{
log.info("没有配置PanaCIM接口,无需通知");
//log.info("没有配置PanaCIM接口,无需通知");
}
} catch (Exception e) {
......@@ -511,7 +511,7 @@ public class PanaApiController implements IOpAuthApi, ITaskListener{
log.info("Response Of deliverNotification From PanaCIM:"+result);
}else{
log.info("没有配置PanaCIM接口,无需通知");
//log.info("没有配置PanaCIM接口,无需通知");
}
} catch (Exception e) {
log.error("出库通知PanaCIM["+outNotifyApi+"]料盘"+task.getBarcode()+" 出错",e);
......
......@@ -4,12 +4,9 @@ import com.neotel.smfcore.common.annotation.QueryCondition;
import com.neotel.smfcore.common.bean.BetweenData;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy;
import java.io.Serializable;
import java.sql.Timestamp;
import java.util.Date;
import java.util.List;
@ApiModel
public class RoleQueryCriteria implements Serializable {
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!