Commit 9e195110 zshaohui

mes接口增加亮灯颜色

1 个父辈 8ea5424c
...@@ -81,4 +81,6 @@ public interface ITaskService { ...@@ -81,4 +81,6 @@ public interface ITaskService {
void addTaskToFinished(StoragePos pos, Barcode barcode, String opUser); void addTaskToFinished(StoragePos pos, Barcode barcode, String opUser);
void addTaskToExecute(DataLog task); void addTaskToExecute(DataLog task);
String checkout(StoragePos pos, boolean forceOut, String subSourceId, boolean isSingleOut, String rgbCode);
} }
...@@ -19,6 +19,7 @@ import com.myproject.util.DateUtil; ...@@ -19,6 +19,7 @@ import com.myproject.util.DateUtil;
import com.myproject.util.StorageConstants; import com.myproject.util.StorageConstants;
import com.myproject.webapp.controller.storage.BaseController; import com.myproject.webapp.controller.storage.BaseController;
import com.myproject.webapp.filter.LocaleFilter; import com.myproject.webapp.filter.LocaleFilter;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.core.util.Integers; import org.apache.logging.log4j.core.util.Integers;
...@@ -28,6 +29,7 @@ import org.springframework.web.bind.annotation.RequestBody; ...@@ -28,6 +29,7 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.PostConstruct;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.io.IOException; import java.io.IOException;
import java.text.ParseException; import java.text.ParseException;
...@@ -59,6 +61,30 @@ public class MesApiController extends BaseController { ...@@ -59,6 +61,30 @@ public class MesApiController extends BaseController {
protected final static Logger log = LogManager.getLogger(MesApiController.class); protected final static Logger log = LogManager.getLogger(MesApiController.class);
private Map<String,String> colorMap = Maps.newConcurrentMap();
@PostConstruct
private void initColor() {
colorMap.put("FF0000", "Red");
colorMap.put("FFC0CB", "Pink");
colorMap.put("C71585", "Medium Violet Red");
colorMap.put("FF8C00", "Dark Orange");
colorMap.put("FFFF00", "Yellow");
colorMap.put("BDB76B", "Dark Khaki");
colorMap.put("E6E6FA", "Lavender");
colorMap.put("9370DB", "Medium Purple");
colorMap.put("800080", "Purple");
colorMap.put("ADFF2F", "Green Yellow");
colorMap.put("98FB98", "Pale Green");
colorMap.put("008000", "Green");
colorMap.put("808000", "Olive");
colorMap.put("00FFFF", "Aqua");
colorMap.put("7FFFD4", "Aquamarine");
colorMap.put("B0C4DE", "Light Steel Blue");
colorMap.put("0000FF", "Blue");
colorMap.put("FFE4C4", "Bisque");
colorMap.put("f4A460", "Sandy Brown");
}
/** /**
* 基础数据同步 * 基础数据同步
*/ */
...@@ -159,22 +185,31 @@ public class MesApiController extends BaseController { ...@@ -159,22 +185,31 @@ public class MesApiController extends BaseController {
try { try {
String[] REEL_IDS = request.getParameterValues("RIS"); String[] REEL_IDS = request.getParameterValues("RIS");
String rgbCode = request.getParameter("rgbCode"); //亮灯颜色
if(REEL_IDS == null || REEL_IDS.length == 0){ if(REEL_IDS == null || REEL_IDS.length == 0){
return "Error: RI 为必须项"; return "Error"+getText("smfcore.mesApi.codeResolveUrl.paramNull",new String[]{"RIS"},request.getLocale());
//return "Error: RI 为必须项";
}
//判断亮灯颜色是否在这20种内
if (StringUtils.isBlank(colorMap.get(rgbCode))){
return "Error"+getText("color.error.notExist",new String[]{"rgbCode"},request.getLocale());
//return "Error: rgbCode 不在颜色范围内";
} }
ArrayList<StoragePos> poses = Lists.newArrayList(); ArrayList<StoragePos> poses = Lists.newArrayList();
for (String REEL_ID : REEL_IDS) { for (String REEL_ID : REEL_IDS) {
StoragePos pos = storagePosManager.getByBarcode(REEL_ID); StoragePos pos = storagePosManager.getByBarcode(REEL_ID);
if(pos == null){ if(pos == null){
return "Error: RI["+REEL_ID+"]在BOX中不存在"; return "Error"+getText("barcode.error.notExist",new String[]{REEL_ID},request.getLocale());
//return "Error: RI["+REEL_ID+"]在BOX中不存在";
} }
poses.add(pos); poses.add(pos);
} }
for (StoragePos pos : poses) { for (StoragePos pos : poses) {
log.info("出库位置仓位【"+pos.getPosName()+"】"); log.info("出库位置仓位【"+pos.getPosName()+"】");
taskService.checkout(pos,false,null,false); taskService.checkout(pos,false,null,false,rgbCode);
} }
}catch (Exception e){ }catch (Exception e){
......
...@@ -21,6 +21,7 @@ import com.myproject.webapp.controller.webService.boxHandler.SmdXlBoxHandler; ...@@ -21,6 +21,7 @@ import com.myproject.webapp.controller.webService.boxHandler.SmdXlBoxHandler;
import com.myproject.webapp.controller.webService.boxHandler.VerticalBoxHandler; import com.myproject.webapp.controller.webService.boxHandler.VerticalBoxHandler;
import com.myproject.util.HttpHelper; import com.myproject.util.HttpHelper;
import com.myproject.util.StorageConstants; import com.myproject.util.StorageConstants;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -1095,6 +1096,8 @@ public class TaskService implements ITaskService { ...@@ -1095,6 +1096,8 @@ public class TaskService implements ITaskService {
StorageConstants.ORDER_COLOR orderColor = StorageConstants.ORDER_COLOR.fromRgb(lightColor); StorageConstants.ORDER_COLOR orderColor = StorageConstants.ORDER_COLOR.fromRgb(lightColor);
if (orderColor != null) { if (orderColor != null) {
opValue = opValue + "=" + orderColor.name().toLowerCase(); opValue = opValue + "=" + orderColor.name().toLowerCase();
} else {
opValue = opValue + "=#" + lightColor;
} }
} }
...@@ -1542,88 +1545,7 @@ public class TaskService implements ITaskService { ...@@ -1542,88 +1545,7 @@ public class TaskService implements ITaskService {
@Override @Override
public synchronized String checkout(StoragePos pos, boolean forceOut, String subSourceId, boolean isSingleOut) { public synchronized String checkout(StoragePos pos, boolean forceOut, String subSourceId, boolean isSingleOut) {
return checkout(pos,forceOut,subSourceId,isSingleOut,"");
Barcode barcode = pos.getBarcode();
if (barcode != null) {
if (barcode.isSolder()) {
//锡膏出库
log.info("设置库位[" + pos.getPosName() + "]中的锡膏[" + barcode.getBarcode() + "]的出库时间为立即出库");
try {
barcode.setNeedOutDate(new Date());
barcode = barcodeManager.save(barcode);
pos.setBarcode(barcode);
storagePosManager.save(pos);
return "";
} catch (ValidateException e) {
e.printStackTrace();
}
}
} else {
if (!forceOut) {
String msg = "库位[" + pos.getPosName() + "]中已无物料,忽略";
log.info(msg);
//return msg;
return "allBoxView.noReel";
}
}
Collection<DataLog> allTasks = taskMap.values();
for (DataLog taskInList : allTasks) {
if (taskInList.getPosId() == null) continue;
if (taskInList.getPosId().equals(pos.getId())) {
String msg = "库位【" + pos.getPosName() + "已在任务列表中,忽略】";
log.info(msg);
//return msg;
return "order.error.executing";
}
}
DataLog task = newTask(pos);
task.setType(StorageConstants.OP.CHECKOUT);
task.setStatus(StorageConstants.OP_STATUS.WAIT.name());
task.setSingleOut(isSingleOut);
//工单出库任务
if (!Strings.isNullOrEmpty(subSourceId)) {
LiteOrderItem liteOrderItem = liteOrderItemDao.findOneById(subSourceId);
if (liteOrderItem != null) {
String orderNo = liteOrderItem.getOrderNo();
LiteOrder cacheOrder = liteOrderMap.get(orderNo);
if (cacheOrder == null || cacheOrder.isOutOne() || cacheOrder.isTaskFinished() || cacheOrder.isNew()) {
if (cacheOrder == null) {
//缓存中没有,加入到缓存中
cacheOrder = liteOrderDao.findWithItemsByOrderNo(orderNo);
cacheOrder.setTaskReelCount(1);
cacheOrder.setFinishedReelCount(0);
} else if (cacheOrder.isOutOne() || cacheOrder.isOutOneFinished()) {
//数量+上去
cacheOrder.setTaskReelCount(cacheOrder.getTaskReelCount() + 1);
} else {
cacheOrder.setTaskReelCount(1);
cacheOrder.setFinishedReelCount(0);
}
cacheOrder.setTaskFinishedTime(-1);
log.info("订单[" + orderNo + "]补料任务" + task.getBarcode() + " 任务数:" + cacheOrder.getFinishedReelCount() + "/" + cacheOrder.getTaskReelCount());
task.setSourceId(cacheOrder.getId());
task.setSourceName(orderNo);
task.setSubSourceId(liteOrderItem.getId());
task.setSubSourceInfo(liteOrderItem.getFeederInfo());
cacheOrder.setStatus(StorageConstants.LITEORDER_STATUS.ONE);
liteOrderDao.save(cacheOrder);
liteOrderMap.put(orderNo, cacheOrder);
} else {
//return "无法执行工单补料任务";
return "order.out.failed";
}
} else {
//return "未找到工单信息";
return "order.out.notFound";
}
}
task = dataLogDao.save(task);
addTaskToExecute(task);
return "";
} }
...@@ -1741,6 +1663,95 @@ public class TaskService implements ITaskService { ...@@ -1741,6 +1663,95 @@ public class TaskService implements ITaskService {
taskMap.put(task.getId(), task); taskMap.put(task.getId(), task);
} }
@Override
public String checkout(StoragePos pos, boolean forceOut, String subSourceId, boolean isSingleOut, String rgbCode) {
Barcode barcode = pos.getBarcode();
if (barcode != null) {
if (barcode.isSolder()) {
//锡膏出库
log.info("设置库位[" + pos.getPosName() + "]中的锡膏[" + barcode.getBarcode() + "]的出库时间为立即出库");
try {
barcode.setNeedOutDate(new Date());
barcode = barcodeManager.save(barcode);
pos.setBarcode(barcode);
storagePosManager.save(pos);
return "";
} catch (ValidateException e) {
e.printStackTrace();
}
}
} else {
if (!forceOut) {
String msg = "库位[" + pos.getPosName() + "]中已无物料,忽略";
log.info(msg);
//return msg;
return "allBoxView.noReel";
}
}
Collection<DataLog> allTasks = taskMap.values();
for (DataLog taskInList : allTasks) {
if (taskInList.getPosId() == null) continue;
if (taskInList.getPosId().equals(pos.getId())) {
String msg = "库位【" + pos.getPosName() + "已在任务列表中,忽略】";
log.info(msg);
//return msg;
return "order.error.executing";
}
}
DataLog task = newTask(pos);
task.setType(StorageConstants.OP.CHECKOUT);
task.setStatus(StorageConstants.OP_STATUS.WAIT.name());
task.setSingleOut(isSingleOut);
//判断颜色是否为空
if (StringUtils.isNotBlank(rgbCode)){
task.setLightColor(rgbCode);
}
//工单出库任务
if (!Strings.isNullOrEmpty(subSourceId)) {
LiteOrderItem liteOrderItem = liteOrderItemDao.findOneById(subSourceId);
if (liteOrderItem != null) {
String orderNo = liteOrderItem.getOrderNo();
LiteOrder cacheOrder = liteOrderMap.get(orderNo);
if (cacheOrder == null || cacheOrder.isOutOne() || cacheOrder.isTaskFinished() || cacheOrder.isNew()) {
if (cacheOrder == null) {
//缓存中没有,加入到缓存中
cacheOrder = liteOrderDao.findWithItemsByOrderNo(orderNo);
cacheOrder.setTaskReelCount(1);
cacheOrder.setFinishedReelCount(0);
} else if (cacheOrder.isOutOne() || cacheOrder.isOutOneFinished()) {
//数量+上去
cacheOrder.setTaskReelCount(cacheOrder.getTaskReelCount() + 1);
} else {
cacheOrder.setTaskReelCount(1);
cacheOrder.setFinishedReelCount(0);
}
cacheOrder.setTaskFinishedTime(-1);
log.info("订单[" + orderNo + "]补料任务" + task.getBarcode() + " 任务数:" + cacheOrder.getFinishedReelCount() + "/" + cacheOrder.getTaskReelCount());
task.setSourceId(cacheOrder.getId());
task.setSourceName(orderNo);
task.setSubSourceId(liteOrderItem.getId());
task.setSubSourceInfo(liteOrderItem.getFeederInfo());
cacheOrder.setStatus(StorageConstants.LITEORDER_STATUS.ONE);
liteOrderDao.save(cacheOrder);
liteOrderMap.put(orderNo, cacheOrder);
} else {
//return "无法执行工单补料任务";
return "order.out.failed";
}
} else {
//return "未找到工单信息";
return "order.out.notFound";
}
}
task = dataLogDao.save(task);
addTaskToExecute(task);
return "";
}
/** /**
* 加入要执行的任务 * 加入要执行的任务
*/ */
......
...@@ -430,3 +430,5 @@ storage.type.smdDuo=SMD-DUO ...@@ -430,3 +430,5 @@ storage.type.smdDuo=SMD-DUO
error.storage.offline=\u30C7\u30D0\u30A4\u30B9[{0}]\u30AA\u30D5\u30E9\u30A4\u30F3 error.storage.offline=\u30C7\u30D0\u30A4\u30B9[{0}]\u30AA\u30D5\u30E9\u30A4\u30F3
barcode.error.maxRule=\u30D0\u30FC\u30B3\u30FC\u30C9\u30EB\u30FC\u30EB\u306E\u6700\u5927\u5024\u306F12 barcode.error.maxRule=\u30D0\u30FC\u30B3\u30FC\u30C9\u30EB\u30FC\u30EB\u306E\u6700\u5927\u5024\u306F12
error.barcode.taskNotEnd=\u30D1\u30EC\u30C3\u30C8[{0}]\u306B\u5BFE\u3059\u308B\u64CD\u4F5C\u304C\u5B8C\u4E86\u3057\u3066\u304A\u3089\u305A\u3001\u53CE\u7D0D\u64CD\u4F5C\u304C\u3067\u304D\u307E\u305B\u3093\u3002 error.barcode.taskNotEnd=\u30D1\u30EC\u30C3\u30C8[{0}]\u306B\u5BFE\u3059\u308B\u64CD\u4F5C\u304C\u5B8C\u4E86\u3057\u3066\u304A\u3089\u305A\u3001\u53CE\u7D0D\u64CD\u4F5C\u304C\u3067\u304D\u307E\u305B\u3093\u3002
smfcore.mesApi.codeResolveUrl.paramNull=[{0}]NULL\u5024\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093
color.error.notExist=\u30AB\u30E9\u30FC[{0}]\u5B58\u5728\u3057\u306A\u3044
\ No newline at end of file \ No newline at end of file
...@@ -431,3 +431,5 @@ storage.type.smdDuo=SMD-DUO ...@@ -431,3 +431,5 @@ storage.type.smdDuo=SMD-DUO
error.storage.offline=\u8BBE\u5907[{0}]\u79BB\u7EBF error.storage.offline=\u8BBE\u5907[{0}]\u79BB\u7EBF
barcode.error.maxRule=\u6761\u7801\u89C4\u5219\u7684\u6700\u5927\u6570\u91CF\u4E3A12 barcode.error.maxRule=\u6761\u7801\u89C4\u5219\u7684\u6700\u5927\u6570\u91CF\u4E3A12
error.barcode.taskNotEnd=\u6599\u76D8[{0}]\u7684\u64CD\u4F5C\u672A\u5B8C\u6210,\u65E0\u6CD5\u6267\u884C\u5165\u5E93\u64CD\u4F5C error.barcode.taskNotEnd=\u6599\u76D8[{0}]\u7684\u64CD\u4F5C\u672A\u5B8C\u6210,\u65E0\u6CD5\u6267\u884C\u5165\u5E93\u64CD\u4F5C
smfcore.mesApi.codeResolveUrl.paramNull=[{0}]\u4E0D\u80FD\u4E3A\u7A7A
color.error.notExist=\u989C\u8272{0}\u4E0D\u5B58\u5728
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!