Commit d71ed583 zshaohui

1.扫码出库的时候,提示物料有没有过期

2.按工单明细有多盘的时候 同时亮灯
3.日志显示累计数量,生产日期,lotno,poNum
1 个父辈 8ccd426b
......@@ -306,6 +306,13 @@ public class Barcode extends BasePo implements Serializable {
return DateUtil.toDateTimeString(putInDate);
}
public String getProduceDateStr() {
if (produceDate == null) {
return "";
}
return DateUtil.toDateTimeString(produceDate);
}
public void setPutInDate(Date putInDate) {
this.putInDate = putInDate;
}
......
......@@ -6,6 +6,7 @@ import com.google.common.collect.Lists;
import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.common.utils.Constants;
import com.neotel.smfcore.common.utils.ReelLockPosUtil;
import com.neotel.smfcore.common.utils.StringUtils;
import com.neotel.smfcore.core.api.SmfApi;
import com.neotel.smfcore.core.api.bean.CodeValidateParam;
import com.neotel.smfcore.core.barcode.bean.CodeBean;
......@@ -1040,6 +1041,20 @@ public class BaseDeviceHandler implements IDeviceHandler {
log.info("ACCSHELF: sourceId=" + sourceId + "的工单[" + order.getOrderNo() + "]开始执行任务:[" + needSendLog.getPosName() + "][" + needSendLog.getPartNumber() + "][" + needSendLog.getBarcode() + "]");
}
}
String subSourceId = needSendLog.getSubSourceId();
if (StringUtils.isNotEmpty(subSourceId)) {
for (DataLog dataLog : taskService.getAllTasks()) {
if (dataLog.isWait() && cid.equals(dataLog.getCid()) && subSourceId.equals(dataLog.getSubSourceId())) {
if (!needSendLog.getBarcode().equals(dataLog.getBarcode())) {
dataLog.setStatus(OP_STATUS.EXECUTING.name());
taskService.updateQueueTask(dataLog);
dataLogs.add(dataLog);
log.info("ACCSHELF: sourceId=" + sourceId + "的工单[" + order.getOrderNo() + "]开始执行任务:[" + dataLog.getPosName() + "][" + dataLog.getPartNumber() + "][" + dataLog.getBarcode() + "]");
}
}
}
}
}
}
......
package com.neotel.smfcore.core.device.handler.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import com.google.common.base.Strings;
import com.neotel.smfcore.common.bean.ResultBean;
......@@ -91,19 +92,17 @@ public class NLShelfHandler extends BaseDeviceHandler {
for (DataLog queueTask : queueTasks) {
if (!openZhiYin || StringUtils.isBlank(queueTask.getSourceId())) {
if (queueTask.isWait()) {
String rgb = queueTask.getLightColor();
ORDER_COLOR color = ORDER_COLOR.fromRgb(rgb);
if (color == null) {
if (queueTask.isPutInTask()) {
color = ORDER_COLOR.FORESTGREEN;
} else {
color = ORDER_COLOR.BLUE;
String colorName = ORDER_COLOR.DARKGREEN.name();
Date produceDate = queueTask.getProduceDate();
if (produceDate != null){
if (DateUtil.betweenYear(produceDate,new Date(),false) >= 2){
colorName = ORDER_COLOR.RED.name();
}
}
queueTask.setStatus(OP_STATUS.EXECUTING.name());
taskService.updateQueueTask(queueTask);
statusBean.addData("open", queueTask.getPosName() + "=" + color.name());
log.info("库位[" + queueTask.getPosName() + "][" + queueTask.getType() + "]+亮灯:" + color.name());
statusBean.addData("open", queueTask.getPosName() + "=" + colorName);
log.info("库位[" + queueTask.getPosName() + "][" + queueTask.getType() + "]+亮灯:" + colorName);
}
} else {
if (queueTask.isWait() || queueTask.isExecuting()) {
......@@ -119,10 +118,17 @@ public class NLShelfHandler extends BaseDeviceHandler {
List<DataLog> dataLogs = getLightGuideTask(outMap,statusBean.getCid());
for (DataLog task : dataLogs) {
if (StringUtils.isBlank(task.getLightColor())){
/*if (StringUtils.isBlank(task.getLightColor())){
task.setLightColor(ORDER_COLOR.BLUE.getRgb());
}*/
String colorName = ORDER_COLOR.DARKGREEN.name();
Date produceDate = task.getProduceDate();
if (produceDate != null){
if (DateUtil.betweenYear(produceDate,new Date(),false) >= 2){
colorName = ORDER_COLOR.RED.name();
}
}
String colorName = ORDER_COLOR.fromRgb(task.getLightColor()).name();
//String colorName = ORDER_COLOR.fromRgb(task.getLightColor()).name();
statusBean.addData("open", task.getPosName() + "=" + colorName);
log.info("库位[" + task.getPosName() + "][" + task.getType() + "]+亮灯:" + colorName);
......@@ -380,6 +386,22 @@ public class NLShelfHandler extends BaseDeviceHandler {
log.info(code + " 出库完成, 库位[" + inPos.getPosName() + "]灭灯");
String orderId = task.getSourceId();
Map<String,String> dataMap = new HashMap<>();
Date produceDate = barcode.getProduceDate();
String produceDateStr = barcode.getProduceDateStr();
if (produceDate != null) {
long year = DateUtil.betweenYear(produceDate, new Date(), false);
if (year < 2){
dataMap.put("active","1");
dataMap.put("msg",MessageUtils.getText("smf.barcode.active",new String[]{produceDateStr},new Locale(SecurityUtils.getCurrentUserLanguage()),"{0} is ACTIVE"));
} else {
dataMap.put("active","0");
dataMap.put("msg",MessageUtils.getText("smf.barcode.expired",new String[]{produceDateStr},new Locale(SecurityUtils.getCurrentUserLanguage()),"{0} is EXPIRED"));
}
}
if (!Strings.isNullOrEmpty(orderId)) {
LiteOrder liteOrder = liteOrderManager.get(orderId);
if (liteOrder != null && liteOrder.isTaskFinished()) {
......
......@@ -703,7 +703,7 @@ public class DataCache {
* @param amount
* @return
*/
public int updateInventoryAmount(String cid, String partNumber, int amount,String barcode) {
public synchronized int updateInventoryAmount(String cid, String partNumber, int amount,String barcode) {
if (amount != 0) {
InventoryItem inventoryItem = getStorageInventoryByPartNumber(cid, partNumber);
if (inventoryItem == null) {
......
......@@ -150,4 +150,16 @@ public class TaskDto implements Serializable {
}
@ApiModelProperty("位置信息,如料架编号,托盘编号,移栽编号,皮带线编号,机器人编号等")
private String locInfo = "";
@ApiModelProperty("poNum")
private String poNum;
@ApiModelProperty("生产日期")
private Date produceDate;
@ApiModelProperty("lotNo")
private String lotNo;
@ApiModelProperty("总数量")
private int totalNum = 0;
}
......@@ -40,6 +40,10 @@ public class DataLog extends BasePo implements Serializable ,Comparable<DataLog>
setW(barcode.getPlateSize());
setH(barcode.getHeight());
setProduceDate(barcode.getProduceDate());
setLotNo(barcode.getBatch());
setPoNum(barcode.getMemo());
msdAppendInfo = new MSDAppendInfo();
msdAppendInfo.setMsl(barcode.getMsl());
msdAppendInfo.setOpenTime(barcode.getOpenTime());
......@@ -249,6 +253,16 @@ public class DataLog extends BasePo implements Serializable ,Comparable<DataLog>
private String line = "";
private Date produceDate;
private String lotNo;
private String poNum;
private int totalNum;
public String getBarcode() {
if(barcode == null){
return "";
......
......@@ -1103,6 +1103,9 @@ public class TaskService {
task.setPartNumber(barcode.getPartNumber());
task.setBarcode(barcode.getBarcode());
task.setNum(barcode.getAmount());
task.setProduceDate(barcode.getProduceDate());
task.setLotNo(barcode.getBatch());
task.setPoNum(barcode.getMemo());
//如果入库单不为空,设置入库单
Storage storage = dataCache.getStorageById(pos.getStorageId());
......
......@@ -11,10 +11,15 @@ import com.neotel.smfcore.common.utils.HttpHelper;
import com.neotel.smfcore.common.utils.StringUtils;
import com.neotel.smfcore.core.api.listener.BaseSmfApiListener;
import com.neotel.smfcore.core.barcode.service.po.Barcode;
import com.neotel.smfcore.core.device.util.DataCache;
import com.neotel.smfcore.core.order.LiteOrderCache;
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.bean.InventoryItem;
import com.neotel.smfcore.core.system.service.manager.IDataLogManager;
import com.neotel.smfcore.core.system.service.po.DataLog;
import com.neotel.smfcore.core.system.util.TaskService;
import com.neotel.smfcore.custom.iriichi1081.config.IriichiConfig;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.usermodel.IgnoredErrorType;
......@@ -39,6 +44,15 @@ public class IriichiApi extends BaseSmfApiListener {
@Autowired
private LiteOrderCache liteOrderCache;
@Autowired
private DataCache dataCache;
@Autowired
private TaskService taskService;
@Autowired
private IDataLogManager dataLogManager;
@Override
public boolean isForThisApi(String apiName) {
return apiName != null && apiName.equalsIgnoreCase("iriichi");
......@@ -78,6 +92,43 @@ public class IriichiApi extends BaseSmfApiListener {
return null;
}
@Override
public void inTaskStatusChange(String inNotifyUrl, DataLog task) {
if ((task.isFinished() || task.isEnd()) && task.isPutInTask()) {
List<InventoryItem> itemList = dataCache.getInventoryByPN(task.getPartNumber(), new ArrayList<>());
if (itemList == null || itemList.isEmpty()) {
task.setTotalNum(0);
} else {
int totalNum = 0;
for (InventoryItem inventoryItem : itemList) {
totalNum = totalNum + inventoryItem.getStockCount();
}
task.setTotalNum(totalNum);
}
//taskService.moveTaskToFinished(task);
dataLogManager.save(task);
}
}
@Override
public void outTaskStatusChange(String outNotifyUrl, DataLog task) {
if ((task.isFinished() || task.isEnd() || task.isWait()) && task.isCheckOutTask()) {
List<InventoryItem> itemList = dataCache.getInventoryByPN(task.getPartNumber(), new ArrayList<>());
if (itemList == null || itemList.isEmpty()) {
task.setTotalNum(0);
} else {
int totalNum = 0;
for (InventoryItem inventoryItem : itemList) {
totalNum = totalNum + inventoryItem.getStockCount();
}
task.setTotalNum(totalNum);
}
//taskService.moveTaskToFinished(task);
dataLogManager.save(task);
}
}
public void cycleCount(Barcode barcode) {
String token = getToken();
......
......@@ -2,10 +2,10 @@ server:
port: 8800
api:
name:
name: iriichi
inCheckUrl:
outNotifyUrl:
inNotifyUrl:
outNotifyUrl: 1
inNotifyUrl: 1
......
......@@ -402,4 +402,6 @@ smfcore.storagePos.yes=\u662F
smfcore.storagePos.no=\u5426
smfcore.dashBoard=\u4EEA\u8868\u76D8
smfcore.spHumiture=\u6E29\u6E7F\u5EA6
smfcore.storageOther=\u5176\u4ED6\u8BBE\u5907
\ No newline at end of file
smfcore.storageOther=\u5176\u4ED6\u8BBE\u5907
smf.barcode.active={0} is ACTIVE
smf.barcode.expired={0} is EXPIRED
\ No newline at end of file
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!