Commit d71ed583 zshaohui

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

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