Commit 6572d7a3 zshaohui

1.格力新增创建工单,查询工单/工单详情,修改建议出仓时间 接口

1 个父辈 e06f3c0e
...@@ -21,6 +21,7 @@ import com.neotel.smfcore.core.order.service.manager.ILiteOrderItemManager; ...@@ -21,6 +21,7 @@ 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.manager.ILiteOrderManager;
import com.neotel.smfcore.core.order.service.po.LiteOrder; import com.neotel.smfcore.core.order.service.po.LiteOrder;
import com.neotel.smfcore.core.order.service.po.LiteOrderItem; import com.neotel.smfcore.core.order.service.po.LiteOrderItem;
import com.neotel.smfcore.core.order.service.po.LiteOrderItemOutDetail;
import com.neotel.smfcore.core.shelf.util.TaskShelfUtil; import com.neotel.smfcore.core.shelf.util.TaskShelfUtil;
import com.neotel.smfcore.core.storage.enums.CHECKOUT_TYPE; import com.neotel.smfcore.core.storage.enums.CHECKOUT_TYPE;
import com.neotel.smfcore.core.storage.service.manager.IStoragePosManager; import com.neotel.smfcore.core.storage.service.manager.IStoragePosManager;
...@@ -35,6 +36,7 @@ import org.springframework.stereotype.Service; ...@@ -35,6 +36,7 @@ import org.springframework.stereotype.Service;
import java.util.*; import java.util.*;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Collectors;
/** /**
* Created by sunke on 2021/7/12. * Created by sunke on 2021/7/12.
...@@ -142,6 +144,10 @@ public class LiteOrderCache { ...@@ -142,6 +144,10 @@ public class LiteOrderCache {
if(order.isNew()||order.isTaskFinished()){ if(order.isNew()||order.isTaskFinished()){
//判断是否到达时间 //判断是否到达时间
Date curr=new Date(); Date curr=new Date();
Date sDate = order.getSDate();
if (sDate == null){
sDate = order.getCreateDate();
}
if(order.getSDate().before(curr)){ if(order.getSDate().before(curr)){
//开始自动出库 //开始自动出库
String result= checkOutLiteOrder(order.getOrderNo(),false); String result= checkOutLiteOrder(order.getOrderNo(),false);
...@@ -151,7 +157,6 @@ public class LiteOrderCache { ...@@ -151,7 +157,6 @@ public class LiteOrderCache {
}else{ }else{
log.info("自动执行工单 【"+order.getOrderNo()+"】 成功"); log.info("自动执行工单 【"+order.getOrderNo()+"】 成功");
} }
break; break;
} }
} }
...@@ -280,6 +285,20 @@ public class LiteOrderCache { ...@@ -280,6 +285,20 @@ public class LiteOrderCache {
liteOrderItem.setOutReelCount(liteOrderItem.getOutReelCount() + 1); liteOrderItem.setOutReelCount(liteOrderItem.getOutReelCount() + 1);
liteOrderItem.setTotalOutNum(liteOrderItem.getTotalOutNum()+task.getNum()); liteOrderItem.setTotalOutNum(liteOrderItem.getTotalOutNum()+task.getNum());
liteOrderItem.setTotalOutReelCount(liteOrderItem.getTotalOutReelCount()+1); liteOrderItem.setTotalOutReelCount(liteOrderItem.getTotalOutReelCount()+1);
//同时更新出库详情信息
List<LiteOrderItemOutDetail> outDetailList = liteOrderItem.getOutDetailList();
if (outDetailList == null){
outDetailList = new ArrayList<>();
}
LiteOrderItemOutDetail detail = new LiteOrderItemOutDetail();
detail.setBarcode(task.getBarcode());
detail.setNum(task.getNum());
detail.setCreateDate(task.getCreateDate());
detail.setUpdateDate(task.getUpdateDate());
outDetailList.add(detail);
liteOrderItem.setOutDetailList(outDetailList);
liteOrderItem = liteOrderItemManager.save(liteOrderItem); liteOrderItem = liteOrderItemManager.save(liteOrderItem);
// Barcode barcode = barcodeManager.findByBarcode(task.getBarcode()); // Barcode barcode = barcodeManager.findByBarcode(task.getBarcode());
// if (barcode != null) { // if (barcode != null) {
......
...@@ -8,6 +8,7 @@ import org.springframework.data.mongodb.core.mapping.Document; ...@@ -8,6 +8,7 @@ import org.springframework.data.mongodb.core.mapping.Document;
import java.io.Serializable; import java.io.Serializable;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import java.util.Map; import java.util.Map;
@Data @Data
...@@ -98,6 +99,11 @@ public class LiteOrderItem extends BasePo implements Serializable ,Comparable<Li ...@@ -98,6 +99,11 @@ public class LiteOrderItem extends BasePo implements Serializable ,Comparable<Li
public Map<String,String> appendData = new HashMap<>(); public Map<String,String> appendData = new HashMap<>();
/** /**
* 出库详情
*/
private List<LiteOrderItemOutDetail> outDetailList;
/**
* 出库是否满足要求,已出库数量大于需求数量 * 出库是否满足要求,已出库数量大于需求数量
*/ */
public boolean isOutFinished(){ public boolean isOutFinished(){
......
package com.neotel.smfcore.core.order.service.po;
import lombok.Data;
import java.util.Date;
@Data
public class LiteOrderItemOutDetail {
private String barcode;
private int num;
private Date createDate;
private Date updateDate;
}
...@@ -47,7 +47,7 @@ public class GreeMsgHandlerImpl implements MessageHandler { ...@@ -47,7 +47,7 @@ public class GreeMsgHandlerImpl implements MessageHandler {
private KafkaMsgUtil msgUtil; private KafkaMsgUtil msgUtil;
// private MqttGateway mqttGateway; // private MqttGateway mqttGateway;
@KafkaListener(topics = {"Topic_task_dzlc"}, groupId = "${spring.kafka.consumer.group-id}") //@KafkaListener(topics = {"Topic_task_dzlc"}, groupId = "${spring.kafka.consumer.group-id}")
public void kafkaListener(ConsumerRecord<?, ?> record) { public void kafkaListener(ConsumerRecord<?, ?> record) {
try { try {
log.info("---------------kafkaListener 收到消息-----------------"); log.info("---------------kafkaListener 收到消息-----------------");
......
package com.neotel.smfcore.custom.gree20242.bean;
import lombok.Data;
import java.util.List;
@Data
public class GreeOrder {
private String hSerial;
private String line;
private String so;
private String stme;
private List<GreeOrderItem> outItems;
}
package com.neotel.smfcore.custom.gree20242.bean;
import lombok.Data;
@Data
public class GreeOrderDetailQuery {
private String hSerial;
}
package com.neotel.smfcore.custom.gree20242.bean;
import lombok.Data;
import java.util.List;
@Data
public class GreeOrderDetailResult {
private String hSerial;
private String line;
private String so;
private String stme;
private String status;
private List<GreeOrderDetailResultItem> outItems;
}
package com.neotel.smfcore.custom.gree20242.bean;
import lombok.Data;
import java.util.List;
@Data
public class GreeOrderDetailResultItem {
private String partNum; // 零件编号
private int needQty; // 需求数量
private int outQty; // 出库数量
private List<GreeOrderDetailResultItemDetail> detailList; // 明细列表
}
package com.neotel.smfcore.custom.gree20242.bean;
import lombok.Data;
@Data
public class GreeOrderDetailResultItemDetail {
private String barcode;
private int qty;
private String startDate;
private String endDate;
}
package com.neotel.smfcore.custom.gree20242.bean;
import lombok.Data;
@Data
public class GreeOrderItem {
private String partNum;
private int qty;
}
package com.neotel.smfcore.custom.gree20242.bean;
import lombok.Data;
@Data
public class GreeOrderQuery {
private String dateTimeFrom;
private String dateTimeTo;
private String line;
}
package com.neotel.smfcore.custom.gree20242.bean;
import lombok.Data;
@Data
public class GreeOrderResult {
private String hSerial;
private String line;
private String so;
private String stme;
private String status; // 如果 status 是枚举类型,可以替换为 enum
}
package com.neotel.smfcore.custom.gree20242.bean;
import lombok.Data;
@Data
public class GreeOrderUpdateStme {
private String hSerial;
private String stme;
}
...@@ -353,6 +353,9 @@ smfcore.mesApi.loginCheck.error=MES\u767B\u9646\u9A8C\u8BC1\u9519\u8BEF\uFF1A{0} ...@@ -353,6 +353,9 @@ smfcore.mesApi.loginCheck.error=MES\u767B\u9646\u9A8C\u8BC1\u9519\u8BEF\uFF1A{0}
smfcore.taskShelf.notExist=\u672A\u627E\u5230\u5DE5\u5355[{0}]\u7684rfid[{1}] smfcore.taskShelf.notExist=\u672A\u627E\u5230\u5DE5\u5355[{0}]\u7684rfid[{1}]
smfcore.agvShelf.noLoc=\u672A\u627E\u5230\u6599\u67B6{0}\u76EE\u6807\u4F4D\u7F6E smfcore.agvShelf.noLoc=\u672A\u627E\u5230\u6599\u67B6{0}\u76EE\u6807\u4F4D\u7F6E
smfcore.codeLight=\u626B\u7801\u4EAE\u706F smfcore.codeLight=\u626B\u7801\u4EAE\u706F
smfcore.valueInvalid=[{0}]\u4E0D\u662F\u6709\u6548\u7684\u53C2\u6570
smfcore.greeOrder.hasClose=[{0}]\u5DF2\u5173\u95ED
smfcore.greeOrder.executing=[{0}]\u6B63\u5728\u6267\u884C
#smfclient.nlp.onlyOneTray=\u4E0D\u53EF\u540C\u65F6\u653E\u5165\u591A\u76D8\u7269\u6599:{0} #smfclient.nlp.onlyOneTray=\u4E0D\u53EF\u540C\u65F6\u653E\u5165\u591A\u76D8\u7269\u6599:{0}
#smfclient.nlp.cannotFindPos={0}\u672A\u627E\u5230\u5E93\u4F4D:{1} #smfclient.nlp.cannotFindPos={0}\u672A\u627E\u5230\u5E93\u4F4D:{1}
#smfclient.nlp.inputOk={0}\u5165\u5E93\u5230{1}\u6210\u529F #smfclient.nlp.inputOk={0}\u5165\u5E93\u5230{1}\u6210\u529F
......
...@@ -350,4 +350,7 @@ smfcore.mesApi.inCheck.error=MES verification error\uFF1A{0} ...@@ -350,4 +350,7 @@ smfcore.mesApi.inCheck.error=MES verification error\uFF1A{0}
smfcore.mesApi.loginCheck.fail=MES Login fail smfcore.mesApi.loginCheck.fail=MES Login fail
smfcore.mesApi.loginCheck.error=MES Login error\uFF1A{0} smfcore.mesApi.loginCheck.error=MES Login error\uFF1A{0}
smfcore.agvShelf.noLoc=Shelf {0} target location not found smfcore.agvShelf.noLoc=Shelf {0} target location not found
smfcore.codeLight=CODE LIGHT
\ No newline at end of file \ No newline at end of file
smfcore.codeLight=CODE LIGHT
smfcore.valueInvalid=[{0}] is not a valid parameter
smfcore.greeOrder.hasClose=[{0}] has been closed
smfcore.greeOrder.executing=[{0}] is being executed
\ No newline at end of file \ No newline at end of file
...@@ -347,4 +347,7 @@ smfcore.mesApi.inCheck.error=MES\u9A8C\u8BC1\u51FA\u9519\uFF1A{0} ...@@ -347,4 +347,7 @@ smfcore.mesApi.inCheck.error=MES\u9A8C\u8BC1\u51FA\u9519\uFF1A{0}
smfcore.mesApi.loginCheck.fail=MES\u767B\u9646\u9A8C\u8BC1\u5931\u8D25 smfcore.mesApi.loginCheck.fail=MES\u767B\u9646\u9A8C\u8BC1\u5931\u8D25
smfcore.mesApi.loginCheck.error=MES\u767B\u9646\u9A8C\u8BC1\u9519\u8BEF\uFF1A{0} smfcore.mesApi.loginCheck.error=MES\u767B\u9646\u9A8C\u8BC1\u9519\u8BEF\uFF1A{0}
smfcore.agvShelf.noLoc=\u672A\u627E\u5230\u6599\u67B6{0}\u76EE\u6807\u4F4D\u7F6E smfcore.agvShelf.noLoc=\u672A\u627E\u5230\u6599\u67B6{0}\u76EE\u6807\u4F4D\u7F6E
smfcore.codeLight=\u626B\u7801\u4EAE\u706F
\ No newline at end of file \ No newline at end of file
smfcore.codeLight=\u626B\u7801\u4EAE\u706F
smfcore.valueInvalid=[{0}]\u306F\u6709\u52B9\u306A\u30D1\u30E9\u30E1\u30FC\u30BF\u3067\u306F\u3042\u308A\u307E\u305B\u3093
smfcore.greeOrder.hasClose=[{0}]\u306F\u9589\u3058\u3089\u308C\u307E\u3057\u305F
smfcore.greeOrder.executing=[{0}]\u3092\u5B9F\u884C\u4E2D\u3067\u3059
\ No newline at end of file \ No newline at end of file
...@@ -347,4 +347,7 @@ smfcore.mesApi.inCheck.error=MES\u9A8C\u8BC1\u51FA\u9519\uFF1A{0} ...@@ -347,4 +347,7 @@ smfcore.mesApi.inCheck.error=MES\u9A8C\u8BC1\u51FA\u9519\uFF1A{0}
smfcore.mesApi.loginCheck.fail=MES\u767B\u9646\u9A8C\u8BC1\u5931\u8D25 smfcore.mesApi.loginCheck.fail=MES\u767B\u9646\u9A8C\u8BC1\u5931\u8D25
smfcore.mesApi.loginCheck.error=MES\u767B\u9646\u9A8C\u8BC1\u9519\u8BEF\uFF1A{0} smfcore.mesApi.loginCheck.error=MES\u767B\u9646\u9A8C\u8BC1\u9519\u8BEF\uFF1A{0}
smfcore.agvShelf.noLoc=\u672A\u627E\u5230\u6599\u67B6{0}\u76EE\u6807\u4F4D\u7F6E smfcore.agvShelf.noLoc=\u672A\u627E\u5230\u6599\u67B6{0}\u76EE\u6807\u4F4D\u7F6E
smfcore.codeLight=\u626B\u7801\u4EAE\u706F
\ No newline at end of file \ No newline at end of file
smfcore.codeLight=\u626B\u7801\u4EAE\u706F
smfcore.valueInvalid=[{0}]\u4E0D\u662F\u6709\u6548\u7684\u53C2\u6570
smfcore.greeOrder.hasClose=[{0}]\u5DF2\u5173\u95ED
smfcore.greeOrder.executing=[{0}]\u6B63\u5728\u6267\u884C
\ No newline at end of file \ No newline at end of file
...@@ -348,4 +348,7 @@ smfcore.mesApi.inCheck.error=MES\u9A57\u8B49\u51FA\u932F\uFF1A{0} ...@@ -348,4 +348,7 @@ smfcore.mesApi.inCheck.error=MES\u9A57\u8B49\u51FA\u932F\uFF1A{0}
smfcore.mesApi.loginCheck.fail=MES\u767B\u9678\u9A57\u8B49\u5931\u6557 smfcore.mesApi.loginCheck.fail=MES\u767B\u9678\u9A57\u8B49\u5931\u6557
smfcore.mesApi.loginCheck.error=MES\u767B\u9678\u9A57\u8B49\u932F\u8AA4\uFF1A{0} smfcore.mesApi.loginCheck.error=MES\u767B\u9678\u9A57\u8B49\u932F\u8AA4\uFF1A{0}
smfcore.agvShelf.noLoc=\u672A\u627E\u5230\u6599\u67B6{0}\u76EE\u6A19\u4F4D\u7F6E smfcore.agvShelf.noLoc=\u672A\u627E\u5230\u6599\u67B6{0}\u76EE\u6A19\u4F4D\u7F6E
smfcore.codeLight=\u6383\u78BC\u4EAE\u71C8
\ No newline at end of file \ No newline at end of file
smfcore.codeLight=\u6383\u78BC\u4EAE\u71C8
smfcore.valueInvalid=[{0}]\u4E0D\u662F\u6709\u6548\u7684\u53C3\u6578
smfcore.greeOrder.hasClose=[{0}]\u5DF2\u95DC\u9589
smfcore.greeOrder.executing=[{0}]\u6B63\u5728\u57F7\u884C
\ No newline at end of file \ No newline at end of file
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!