Commit f85456ab zshaohui

功能优化

1 个父辈 ad159f97
正在显示 27 个修改的文件 包含 362 行增加95 行删除
......@@ -116,4 +116,8 @@ public class ReelLockPosUtil {
}
return lockPosIds;
}
public static Collection<ReelLockPosInfo> getAllReelLockPosInfo(){
return reelLocKPosMap.values();
}
}
......@@ -289,6 +289,12 @@ public class Barcode extends BasePo implements Serializable {
*/
private String storageId;
/**
* 是否盘点
*/
private boolean isInventory = false;
/**
* 添加相关联条码
*
......
......@@ -99,6 +99,7 @@ public class CodeResolve {
codeBeanFromRule.setReelHeight(component.getHeight());
if (barcode.getHeight() != component.getHeight() || barcode.getPlateSize() != component.getPlateSize()) {
if (component.getHeight() != 1 && component.getPlateSize() != 1) {
try {
log.warn("重新设置尺寸[" + barcode.getPlateSize() + "x" + barcode.getHeight() + "]为[" + component.getPlateSize() + "x" + component.getHeight() + "]");
......@@ -109,6 +110,7 @@ public class CodeResolve {
log.error("重设尺寸出错", ve);
}
}
}
setSize = true;
}
}
......
......@@ -130,6 +130,15 @@ public class DeviceController {
lineMsg = "";
log.info("流水线[" + cids + "]获取[" + rfid + "][" + code + "]的入库库位");
//判断锁定库位,是否超过5分钟,如果超过,则解绑
/*Collection<ReelLockPosInfo> allReelLockPosInfo = ReelLockPosUtil.getAllReelLockPosInfo();
for (ReelLockPosInfo lockPosInfo : allReelLockPosInfo) {
if (new Date().getTime() - lockPosInfo.getCreateDate().getTime() >= 1000 * 60 * 5) {
ReelLockPosUtil.removeReelLockPosInfo(lockPosInfo.getBarcode());
}
}*/
Map<String, Object> resultMap = Maps.newHashMap();
if (dataCache.getCache(Constants.CACHE_StopOut)) {
......@@ -185,12 +194,12 @@ public class DeviceController {
taskService.removeFinishedTask(dataLog);
log.info("智能仓储入库,虚拟仓出库:" + barcode.getBarcode() + ",库位名称为:" + storagePos.getPosName());
storagePos.setBarcode(null);
//dataCache.updateInventory(storagePos, barcode);
barcode.setPosName(null);
barcode = barcodeManager.save(barcode);
//进行库位更改
storagePos.setUsed(false);
storagePosManager.save(storagePos);
dataCache.updateInventory(storagePos, barcode);
}
Barcode barcodeCanPutIn = smfApi.canPutInAfterResolve(barcode);
......@@ -349,7 +358,7 @@ public class DeviceController {
DeviceMessageUtil.updateLineMsg(lineMsg,code,cids,"","",null );
} else {
lineMsg = okMsg;
}
};
return resultMap;
}
......@@ -421,6 +430,7 @@ public class DeviceController {
public ResultBean disabledPos(HttpServletRequest request) {
String posId = request.getParameter("posId");
String barcode = request.getParameter("barcode");
String msg = request.getParameter("msg");
if (ObjectUtil.isEmpty(posId)) {
return ResultBean.newErrorResult(1, "smfcore.valueCanotNull", "{0}不能为空", new String[]{"posId"});
}
......@@ -432,6 +442,7 @@ public class DeviceController {
return ResultBean.newErrorResult(1, "smfcore.valueNotFind", "未找到{0}[{1}]", new String[]{"PosId", posId});
}
pos.setEnabled(false);
pos.setMsg(msg);
storagePosManager.save(pos);
log.info("屏蔽库位:库位号[" + pos.getId() + "][" + pos.getPosName() + "]barcode[" + barcode + "]");
......
......@@ -12,6 +12,8 @@ import com.neotel.smfcore.common.utils.StringUtils;
import com.neotel.smfcore.core.api.SmfApi;
import com.neotel.smfcore.core.barcode.service.manager.IBarcodeManager;
import com.neotel.smfcore.core.barcode.service.po.Barcode;
import com.neotel.smfcore.core.device.bean.StatusBean;
import com.neotel.smfcore.core.device.enums.BOX_STATUS;
import com.neotel.smfcore.core.device.enums.OP;
import com.neotel.smfcore.core.device.enums.OP_STATUS;
import com.neotel.smfcore.core.device.util.DataCache;
......@@ -29,6 +31,7 @@ import com.neotel.smfcore.core.storage.service.manager.IStoragePosManager;
import com.neotel.smfcore.core.storage.service.po.Storage;
import com.neotel.smfcore.core.storage.service.po.StoragePos;
import com.neotel.smfcore.core.system.service.po.DataLog;
import com.neotel.smfcore.core.system.util.DevicesStatusUtil;
import com.neotel.smfcore.core.system.util.TaskService;
import com.neotel.smfcore.custom.lizhen.innerBox.enums.ExtendType;
import com.sun.org.apache.regexp.internal.RE;
......@@ -410,6 +413,11 @@ public class LiteOrderCache {
if (!storage.isType(new DeviceType[]{DeviceType.SMD_XLR})) {
continue;
}
//判断当前料仓,状态是否正常
StatusBean statusBean = DevicesStatusUtil.getStatusBean(storage.getCid());
if (statusBean == null || statusBean.getStatus() != BOX_STATUS.READY) {
continue;
}
List<DataLog> allTasksByCid = taskService.getAllTasksByCid(storage.getCid());
for (DataLog task : allTasksByCid) {
/*if (!task.isFinished()
......@@ -430,11 +438,11 @@ public class LiteOrderCache {
}
if (freeStorageIds == null || freeStorageIds.isEmpty()) {
return orderNo + "前面已有出库任务,执行完继续执行";
return orderNo + "没有可用料仓";
}
//判断当前工单的任务数,是否大于2
int executingCount = 0;
/*int executingCount = 0;
if (liteOrderMap != null){
for (LiteOrder order : liteOrderMap.values()) {
if (order.isOutTails()){
......@@ -444,7 +452,7 @@ public class LiteOrderCache {
}
if (executingCount >= 2){
return "正在执行的工单超过2个,跳过";
}
}*/
LiteOrder cacheOrder = liteOrderMap.get(orderNo);
......
......@@ -293,6 +293,7 @@ public class OrderController {
criteria.setExcludeSourceList(excludeSources);
}
}
if (StringUtils.isBlank(criteria.getWarningItemId())) {
Query query = QueryHelp.getQuery(criteria);
if (criteria.getStatus() != null) {
if (criteria.getStatus() == 1) {
......@@ -304,6 +305,21 @@ public class OrderController {
PageData<LiteOrder> orderList = liteOrderManager.findByPage(query, pageable);
PageData<OrderDto> resultList = orderMapper.toDto(orderList);
return resultList;
} else {
PageData<OrderDto> resultList = new PageData<>();
resultList.setContent(new ArrayList<>());
resultList.setTotalElements(0);
LiteOrderItem item = liteOrderItemManager.findOne(new Query(Criteria.where("warningItemId").is(criteria.getWarningItemId())));
if (item != null){
String orderId = item.getOrderId();
LiteOrder liteOrder = liteOrderManager.get(orderId);
if (liteOrder != null){
resultList.setContent(Arrays.asList(orderMapper.toDto(liteOrder)));
resultList.setTotalElements(1);
}
}
return resultList;
}
}
......
......@@ -116,4 +116,7 @@ public class OrderItemDto {
@ApiModelProperty("厂区")
private String factory;
@ApiModelProperty("缺料预警ID")
private String warningItemId;
}
......@@ -24,6 +24,9 @@ public class OrderQueryCondition {
//状态,0=所有,1=已关闭,2=未关闭
private Integer status;
//缺料预警id
private String warningItemId;
//
// @QueryCondition(type=QueryCondition.Type.IN,propName = "status")
// private List<Integer> statusList ;
......
......@@ -12,4 +12,6 @@ public interface ILiteOrderItemManager extends IBaseManager<LiteOrderItem> {
LiteOrderItem getOrderItemByBarcode(String barcode);
int countByQuery(Query q);
LiteOrderItem findOne(Query query);
}
......@@ -37,6 +37,11 @@ public class LiteOrderItemManagerImpl implements ILiteOrderItemManager {
}
@Override
public LiteOrderItem findOne(Query query) {
return liteOrderItemDao.findOne(query);
}
@Override
public LiteOrderItem get(String id) {
return liteOrderItemDao.findOneById(id);
}
......
......@@ -105,7 +105,7 @@ public class StoragePosController {
criteria.setBlurry(blurry);
}
Query query = QueryHelp.getQuery(criteria);
//query.addCriteria(Criteria.where("showStatus").ne("0").exists(false));
query.addCriteria(Criteria.where("posName").ne("").exists(true));
PageData<StoragePos> pages = storagePosManager.findByPage(query, pageable);
List<StoragePosDto> StoragePosDtos = storagePosMapper.toDto(pages.getContent());
......@@ -202,6 +202,9 @@ public class StoragePosController {
Barcode barcode = storagePos.getBarcode();
if (barcode != null) {
barcode = barcodeManager.findByBarcode(barcode.getBarcode());
if (barcode == null){
barcode = storagePos.getBarcode();
}
log.info("清理库位[" + storagePos.getPosName() + "]中的库存" + barcode.getBarcode());
String opUser = SecurityUtils.getCurrentUsername();
log.info(opUser + "清理库位[" + storagePos.getPosName() + "]中的库存" + barcode.getBarcode());
......
......@@ -19,6 +19,7 @@ import com.neotel.smfcore.core.storage.service.manager.IStoragePosManager;
import com.neotel.smfcore.core.storage.service.po.Storage;
import com.neotel.smfcore.core.storage.service.po.StoragePos;
import lombok.extern.slf4j.Slf4j;
import net.bytebuddy.asm.Advice;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
......@@ -321,7 +322,8 @@ public class StoragePosManagerImpl implements IStoragePosManager {
c.and("labelId").is(labelId);
}
Query q = new Query(c);
Sort sort = getSortByCheckOutType(checkOutType);
//Sort sort = getSortByCheckOutType(checkOutType);
Sort sort = Sort.by(Sort.Direction.ASC,"barcode.amount","barcode.putInDate");
q.with(sort);
StoragePos pos = storagePosDao.findOne(q);
if (pos == null) {
......@@ -353,7 +355,7 @@ public class StoragePosManagerImpl implements IStoragePosManager {
c.and("barcode.subCodeList.isOut").is(isOut);
}
//Sort sort = getSortByCheckOutType(checkOutType);
Sort sort = Sort.by(Sort.Direction.ASC, "barcode.subCodeList.createDate","createDate"/*,"canCheckOutTime", "barcode.usedCount"*/);
Sort sort = Sort.by(Sort.Direction.ASC, "barcode.subCodeList.amount","barcode.subCodeList.createDate"/*,"canCheckOutTime", "barcode.usedCount"*/);
Query q = new Query(c);
q.with(sort);
StoragePos pos = storagePosDao.findOne(q);
......
......@@ -127,6 +127,10 @@ public class StoragePos extends BasePo implements Serializable {
*/
private String partNumber;
/**
* 信息
*/
private String msg;
public String getLabelStr(){
String posNameLabel = posName;
......
......@@ -269,12 +269,13 @@ public class TaskService {
log.info("任务[" + task.getId() + "] posName[" + task.getPosName() + "] Reel Id[" + task.getBarcode() + "]取消成功");
//同时进行库位屏蔽
if (task.isPutInTask() && !task.isFinished()){
if (/*task.isPutInTask() &&*/ !task.isFinished()){
String posName = task.getPosName();
if (StringUtils.isNotBlank(posName)){
StoragePos pos = storagePosManager.getByPosName(posName);
if (pos != null){
pos.setEnabled(false);
pos.setMsg("任务取消,屏蔽库位");
storagePosManager.save(pos);
log.info("任务取消,屏蔽库位:库位号[" + pos.getId() + "][" + pos.getPosName() + "]barcode[" + task.getBarcode() + "]");
DeviceMessageUtil.addEnabledPosMessage(pos,SecurityUtils.getCurrentUsername());
......
......@@ -163,7 +163,7 @@ public class LizhenApi extends DefaultSmfApiListener {
if (status != null) {
if (status == 200) {
JSONObject dataJson = resultJson.getJSONObject("data");
//String reelID = dataJson.get("reelID") == null ? "" : dataJson.get("reelID").toString();
String reelID = dataJson.get("reelID") == null ? "" : dataJson.get("reelID").toString();
//String partNum = dataJson.get("partNum") == null ? "" : dataJson.get("partNum").toString();
String partSpec = dataJson.get("partSpec") == null ? "" : dataJson.get("partSpec").toString();
int qty = dataJson.get("qty") == null ? 0 : Integer.valueOf(dataJson.get("qty").toString());
......@@ -180,9 +180,11 @@ public class LizhenApi extends DefaultSmfApiListener {
if (StringUtils.isNotBlank(partNum)){
barcode.setPartNumber(partNum);
}*/
if (StringUtils.isNotBlank(reelID)) {
if (qty != 0) {
barcode.setAmount(qty);
}
}
/*if (StringUtils.isNotBlank(vendor)){
barcode.setProvider(vendor);
}
......
package com.neotel.smfcore.custom.lizhen.agvBox.bean.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@Data
public class InventoryDto {
@ApiModelProperty("箱子尺寸")
private int platsize;
@ApiModelProperty("提示信息")
private String msg;
@ApiModelProperty("当前箱子号")
private String currentRfid;
@ApiModelProperty("pn和数量")
private List<Map<String, Integer>> pnCountList = new ArrayList<>();
}
......@@ -33,7 +33,7 @@ import java.util.Set;
@Slf4j
@RestController
@RequestMapping("/api/wareHouseCode")
public class WareHouseCodeController {
public class CodeController {
@Autowired
private WareHouseCodeManager codeManager;
......
package com.neotel.smfcore.custom.lizhen.agvBox.rest;
import com.neotel.smfcore.common.bean.ResultBean;
import com.neotel.smfcore.common.utils.SecurityUtils;
import com.neotel.smfcore.common.utils.StringUtils;
import com.neotel.smfcore.core.barcode.service.manager.IBarcodeManager;
import com.neotel.smfcore.core.barcode.service.po.Barcode;
import com.neotel.smfcore.core.device.enums.OP;
import com.neotel.smfcore.core.device.enums.OP_STATUS;
import com.neotel.smfcore.core.device.util.DataCache;
import com.neotel.smfcore.core.storage.rest.dto.StoragePosDto;
import com.neotel.smfcore.core.storage.rest.mapstruct.StoragePosMapper;
import com.neotel.smfcore.core.storage.service.manager.IStoragePosManager;
import com.neotel.smfcore.core.storage.service.po.Storage;
import com.neotel.smfcore.core.storage.service.po.StoragePos;
import com.neotel.smfcore.core.system.service.po.DataLog;
import com.neotel.smfcore.core.system.util.TaskService;
import com.neotel.smfcore.custom.lizhen.agvBox.bean.Station;
import com.neotel.smfcore.custom.lizhen.agvBox.bean.dto.InventoryDto;
import com.neotel.smfcore.custom.lizhen.agvBox.util.StationCacheUtil;
import com.neotel.smfcore.custom.lizhen.innerBox.enums.ExtendType;
import com.neotel.smfcore.security.annotation.AnonymousAccess;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.*;
/**
* 盘点
*/
@RestController
@RequestMapping("/inventory")
public class InventoryController {
@Autowired
private IStoragePosManager storagePosManager;
@Autowired
private StoragePosMapper storagePosMapper;
@Autowired
private DataCache dataCache;
@Autowired
private IBarcodeManager barcodeManager;
@Autowired
private TaskService taskService;
/**
* 获取盘点数据
*
* @return
*/
@RequestMapping("/getInventoryData")
@AnonymousAccess
public Map<String, List<StoragePosDto>> getInventoryData() {
Map<String, List<StoragePosDto>> resultMap = new HashMap<>();
List<Storage> storageList = new ArrayList<>();
for (Storage storage : dataCache.getAllStorage().values()) {
if (!storage.isVirtual()) {
storageList.add(storage);
}
}
//获取所有库位信息
for (Storage storage : storageList) {
List<StoragePos> storagePosList = storagePosManager.findByQuery(inventoryQuery(storage.getId(), null));
resultMap.put(storage.getName(), storagePosMapper.toDto(storagePosList));
}
return resultMap;
}
/**
* 盘点数据出库
*
* @param storagePosIdList
* @return
*/
@RequestMapping("/inventoryOut")
@AnonymousAccess
public ResultBean inventoryOut(@RequestBody List<String> storagePosIdList) {
if (storagePosIdList == null || storagePosIdList.isEmpty()) {
return ResultBean.newErrorResult(-1, "smfcore.valueCanotNull", "{0}不能为空", new String[]{"ID"});
}
if (storagePosIdList != null && !storagePosIdList.isEmpty()) {
List<StoragePos> storagePosList = storagePosManager.findByQuery(inventoryQuery(null, storagePosIdList));
if (storagePosList == null || storagePosList.isEmpty()) {
return ResultBean.newErrorResult(-1, "smfcore.label.noReel", "未找到可出库的物料");
}
for (StoragePos pos : storagePosList) {
Barcode barcode = pos.getBarcode();
if (barcode != null) {
Storage storage = dataCache.getStorageById(pos.getStorageId());
barcode.setInventory(true);
barcodeManager.save(barcode);
//生成出库任务
DataLog dataLog = new DataLog(storage, barcode, pos);
dataLog.setType(OP.CHECKOUT);
dataLog.setCreator(SecurityUtils.getCurrentUsername());
dataLog.setExtendType(ExtendType.INVENTORY_CHECKOUT); //盘点出库
taskService.updateQueueTask(dataLog);
}
}
}
return ResultBean.newOkResult("");
}
/**
* 获取工位上料箱信息
*
* @param name
* @return
*/
@RequestMapping("/getInventoryBoxInfo")
@AnonymousAccess
public ResultBean getInventoryBoxInfo(String name) {
//判断工位信息是否为空
Station station = StationCacheUtil.getStation(name);
if (station == null) {
return ResultBean.newErrorResult(-1, "", name + "工位信息未上传成功,请重试", new String[]{});
}
//当前料箱的信息
String currentRfid = station.getCurrentRfid();
if (StringUtils.isBlank(currentRfid)) {
return ResultBean.newErrorResult(-1, "", name + "当前工位料箱信息未上传成功,请重试", new String[]{});
}
//返回结果
String boxStr = currentRfid.substring(0, currentRfid.length() - 1);
InventoryDto dto = new InventoryDto();
dto.setCurrentRfid(currentRfid);
dto.setPlatsize(currentRfid.startsWith("CS") ? 7 : 15);
Barcode barcode = barcodeManager.findByBarcode(boxStr);
//
return ResultBean.newOkResult(dto);
}
private Query inventoryQuery(String storageId, List<String> storageIdList) {
Query query = new Query();
if (storageIdList != null && !storageIdList.isEmpty()) {
query.addCriteria(Criteria.where("id").in(storageIdList));
}
if (StringUtils.isNotBlank(storageId)) {
query.addCriteria(Criteria.where("storageId").is(storageId).and("used").is(true));
}
query.fields().include("barcode.barcode", "barcode.amount", "barcode.posName", "barcode.reelAmount", "updateDate");
return query;
}
}
......@@ -21,6 +21,7 @@ import com.neotel.smfcore.core.storage.service.po.Storage;
import com.neotel.smfcore.core.storage.service.po.StoragePos;
import com.neotel.smfcore.core.system.service.po.DataLog;
import com.neotel.smfcore.core.system.util.TaskService;
import com.neotel.smfcore.custom.lizhen.LizhenApi;
import com.neotel.smfcore.custom.lizhen.agvBox.bean.Station;
import com.neotel.smfcore.custom.lizhen.agvBox.enums.CHANGE_TYPE;
import com.neotel.smfcore.custom.lizhen.agvBox.enums.INOUT_TYPE;
......@@ -45,7 +46,7 @@ import java.util.stream.Collectors;
@Slf4j
@RestController
@RequestMapping("/outLine")
public class OutLineStorageController {
public class OutLineController {
@Autowired
private SmfApi smfApi;
......@@ -68,6 +69,9 @@ public class OutLineStorageController {
@Autowired
private ILiteOrderItemManager liteOrderItemManager;
@Autowired
private LizhenApi lizhenApi;
/*
* key为工位信息,value为上一个隔口信息
......@@ -223,6 +227,11 @@ public class OutLineStorageController {
return ResultBean.newErrorResult(-2, "", e.getMessage());
}
}
//获取mes数量
Barcode barcodeInfo = lizhenApi.barcodeInfo(barcode);
if (barcodeInfo != null){
barcode = barcodeInfo;
}
barcode.setReelAmount(1);
barcode.setWarehouseCode(warehouseCode);
barcode.setPosName(boxPartition);
......
......@@ -9,6 +9,7 @@ import com.neotel.smfcore.core.order.service.manager.ILiteOrderItemManager;
import com.neotel.smfcore.core.order.service.po.LiteOrderItem;
import com.neotel.smfcore.core.storage.service.manager.IStoragePosManager;
import com.neotel.smfcore.core.storage.service.po.Storage;
import com.neotel.smfcore.core.storage.service.po.StoragePos;
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;
......@@ -55,11 +56,30 @@ public class TaskRestController {
Criteria c = Criteria.where("putInTime").is(-1);
List<Barcode> barcodeList = barcodeManager.findByQuery(new Query(c));
for (Barcode barcode : barcodeList) {
Date date = new Date();
barcode.setPutInTime(date.getTime());
barcode.setPutInDate(date);
Date createDate = barcode.getCreateDate();
barcode.setPutInTime(createDate.getTime());
barcode.setPutInDate(createDate);
barcodeManager.save(barcode);
}
//再更改库存报表的信息
Criteria criteria = Criteria.where("barcode.subCodeList.putInTime").is(-1);
List<StoragePos> storagePosList = storagePosManager.findByQuery(new Query(criteria));
for (StoragePos pos : storagePosList) {
Barcode barcode = pos.getBarcode();
if (barcode != null){
List<Barcode> subCodeList = barcode.getSubCodeList();
for (Barcode subCode : subCodeList) {
if (subCode.getPutInTime() == -1){
Date createDate = subCode.getCreateDate();
subCode.setPutInDate(createDate);
subCode.setPutInTime(createDate.getTime());
}
}
barcode.setSubCodeList(subCodeList);
}
pos.setBarcode(barcode);
storagePosManager.save(pos);
}
}
......
......@@ -51,7 +51,7 @@ import java.util.stream.Collectors;
*/
@Slf4j
@RestController
public class OutWarehouseController {
public class WarehouseController {
@Autowired
private IBarcodeManager barcodeManager;
......@@ -395,6 +395,11 @@ public class OutWarehouseController {
label.setRemainingAmount(remainingAmount - barcode.getAmount());
grLabelManager.save(label);
}
//获取mes数量
Barcode barcodeInfo = lizhenApi.barcodeInfo(barcode);
if (barcodeInfo != null){
barcode = barcodeInfo;
}
//当前已扫描的料卷数量+1
int reelCurrentNum = station.getReelCurrentNum();
station.setReelCurrentNum(reelCurrentNum + 1);
......
......@@ -15,7 +15,7 @@ import java.util.List;
*/
@RestController
@RequestMapping("/ext")
public class OutWarehouseExtController {
public class WarehouseExtController {
@Autowired
private IDataLogManager dataLogManager;
......
......@@ -48,4 +48,9 @@ public class ExtendType {
* 料架出库
*/
public final static int NLSHELF_CHECKOUT = 8;
/**
* 盘点出库
*/
public final static int INVENTORY_CHECKOUT = 9;
}
......@@ -74,12 +74,12 @@ public class VirtualRestController {
@ApiOperation("虚拟入库")
@RequestMapping("/virtual/putIn")
public ResultBean putIn(@RequestBody Map<String, String> paramMap) {
public synchronized ResultBean putIn(@RequestBody Map<String, String> paramMap) {
String posName = paramMap.get("posName");
String code = paramMap.get("code");
String newCode = code.toUpperCase();
//开始解析code
CodeBean codeBean = codeResolve.resolveSingleCode("=1x1=" + newCode);
CodeBean codeBean = codeResolve.resolveSingleCode("=7x8=" + newCode);
if (!codeBean.isValid()) {
return ResultBean.newErrorResult(-1, "smfcore.error.barcode.noValidCode", "无效的条码");
}
......@@ -304,6 +304,7 @@ public class VirtualRestController {
pos = storagePosManager.save(pos);
DataLog dataLog = generateTask(storage, barcode, pos, OP.PUT_IN, OP_STATUS.FINISHED.name(), null);
dataLog.setExtendType(ExtendType.VIRTUAL_PUTIN); //虚拟入库
taskService.addTaskToExecute(dataLog);
taskService.moveTaskToFinished(dataLog);
taskService.removeFinishedTask(dataLog);
//更改缓存信息
......@@ -319,7 +320,6 @@ public class VirtualRestController {
task.setLoc(loc);
//task.setOperator(SecurityUtils.getCurrentUsername());
task.setBoxPosName(pos.getPosName());
taskService.addTaskToExecute(task);
return task;
}
......
......@@ -40,7 +40,22 @@ public class AgvStatusCache {
@RequestMapping("/service/store/agvStatus/agvInfo")
@AnonymousAccess
public ResultBean agvInfo(@RequestBody List<AgvInfo> infoList) {
AgvInfo agvInfo = infoList.get(0);
boolean hasAgvInfo = false;
if (agvInfoCacheList != null && !agvInfoCacheList.isEmpty()) {
for (AgvInfo info : agvInfoCacheList) {
if (info.getName().equals(agvInfo.getName())) {
info = agvInfo;
hasAgvInfo = true;
}
}
} else {
agvInfoCacheList = infoList;
hasAgvInfo = true;
}
if (!hasAgvInfo){
agvInfoCacheList.addAll(infoList);
}
return ResultBean.newOkResult(null);
}
......
......@@ -146,7 +146,7 @@ public class InnerReportController {
@ApiOperation("根据工单id获取工单详情")
@RequestMapping("/getItemsByOrderId")
//@AnonymousAccess
public ResultBean getItemsByOrderId(String orderId,String partNumber) {
public ResultBean getItemsByOrderId(String orderId, String partNumber) {
LiteOrder liteOrder = liteOrderManager.get(orderId);
List<LiteOrderItem> orderItems = liteOrderItemManager.findOrderItems(orderId);
List<LiteOrderItem> newOrderItems = new ArrayList<>();
......@@ -508,7 +508,6 @@ public class InnerReportController {
}
@ApiOperation("禁限用导出")
@RequestMapping("/disable/download")
@AnonymousAccess
......@@ -545,87 +544,62 @@ public class InnerReportController {
public ResultBean getInAndOutCount(ReportQueryCondition queryCondition) {
Map<String, Object> resultMap = new HashMap<>();
List<String> titleList = new ArrayList();
String[] title = {"全部入库", "全部出库","智能仓入库", "智能仓出库", "虚拟仓入库", "虚拟仓出库", "手动清空库位", "手动喂料", "手动出库","料架入库","料架出库"};
String[] title = {"全部入库", "智能仓入库", "虚拟仓入库", "料架入库", "全部出库", "智能仓出库", "虚拟仓出库", "手动清空库位", "手动喂料", "手动出库", "料架出库"};
titleList.addAll(Arrays.asList(title));
List<Integer> countList = new ArrayList();
/*resultMap.put("inCount", 0);
resultMap.put("outCount", 0);
resultMap.put("storageInCount",0);
resultMap.put("storageOutCount",0);
resultMap.put("virtualInCount",0);
resultMap.put("virtualOutCount",0);
resultMap.put("clearCount",0);
resultMap.put("feedingCount",0);
resultMap.put("manualCheckOutCount",0);*/
//开始时间
Date startDate = queryCondition.getUpdateDateHHmm().getFrom();
//结束时间
Date endDate = queryCondition.getUpdateDateHHmm().getTo();
//全部入库
int inCount = dataLogManager.getInOutData(startDate, endDate, OP.PUT_IN, queryCondition.getPartNumber(), -1,"");
int inCount = dataLogManager.getInOutData(startDate, endDate, OP.PUT_IN, queryCondition.getPartNumber(), -1, "");
countList.add(inCount);
//resultMap.put("inCount", inCount);
//全部出库
int outCount = dataLogManager.getInOutData(startDate, endDate, OP.CHECKOUT, queryCondition.getPartNumber(), -1,"");
countList.add(outCount);
//resultMap.put("outCount", outCount);
//智能仓入库
int storageInCount = dataLogManager.getInOutData(startDate, endDate, OP.PUT_IN, queryCondition.getPartNumber(), ExtendType.STORAGE_PUTIN,"");
int storageInCount = dataLogManager.getInOutData(startDate, endDate, OP.PUT_IN, queryCondition.getPartNumber(), ExtendType.STORAGE_PUTIN, "");
countList.add(storageInCount);
//resultMap.put("storageInCount",storageInCount);
//智能仓出库
int storageOutCount = dataLogManager.getInOutData(startDate, endDate, OP.CHECKOUT, queryCondition.getPartNumber(), ExtendType.STORAGE_CHECKOUT,"");
countList.add(storageOutCount);
// resultMap.put("storageOutCount",storageOutCount);
//虚拟仓入库
int virtualInCount = dataLogManager.getInOutData(startDate, endDate, OP.PUT_IN, queryCondition.getPartNumber(), ExtendType.VIRTUAL_PUTIN,"");
int virtualInCount = dataLogManager.getInOutData(startDate, endDate, OP.PUT_IN, queryCondition.getPartNumber(), ExtendType.VIRTUAL_PUTIN, "");
countList.add(virtualInCount);
//resultMap.put("virtualInCount",virtualInCount);
//料架入库
int nlShelfPutInCount = inCount - storageInCount - virtualInCount;
countList.add(nlShelfPutInCount);
//全部出库
int outCount = dataLogManager.getInOutData(startDate, endDate, OP.CHECKOUT, queryCondition.getPartNumber(), -1, "");
countList.add(outCount);
//智能仓出库
int storageOutCount = dataLogManager.getInOutData(startDate, endDate, OP.CHECKOUT, queryCondition.getPartNumber(), ExtendType.STORAGE_CHECKOUT, "");
countList.add(storageOutCount);
//虚拟仓出库
int virtualOutCount = dataLogManager.getInOutData(startDate, endDate, OP.CHECKOUT, queryCondition.getPartNumber(), ExtendType.VIRTUAL_CHECKOUT,"");
int virtualOutCount = dataLogManager.getInOutData(startDate, endDate, OP.CHECKOUT, queryCondition.getPartNumber(), ExtendType.VIRTUAL_CHECKOUT, "");
countList.add(virtualOutCount);
//resultMap.put("virtualOutCount",virtualOutCount);
//手动清空库位
int clearCount = dataLogManager.getInOutData(startDate, endDate, OP.CHECKOUT, queryCondition.getPartNumber(), ExtendType.CLEAR_POS,"");
int clearCount = dataLogManager.getInOutData(startDate, endDate, OP.CHECKOUT, queryCondition.getPartNumber(), ExtendType.CLEAR_POS, "");
countList.add(clearCount);
//resultMap.put("clearCount",clearCount);
//手动喂料
int feedingCount = dataLogManager.getInOutData(startDate, endDate, OP.CHECKOUT, queryCondition.getPartNumber(), ExtendType.MANUAL_FEEDING,"");
int feedingCount = dataLogManager.getInOutData(startDate, endDate, OP.CHECKOUT, queryCondition.getPartNumber(), ExtendType.MANUAL_FEEDING, "");
countList.add(feedingCount);
//resultMap.put("feedingCount",feedingCount);
//手动出库
int manualCheckOutCount = dataLogManager.getInOutData(startDate, endDate, OP.CHECKOUT, queryCondition.getPartNumber(), ExtendType.MANUAL_CHECKOUT,"");
int manualCheckOutCount = dataLogManager.getInOutData(startDate, endDate, OP.CHECKOUT, queryCondition.getPartNumber(), ExtendType.MANUAL_CHECKOUT, "");
countList.add(manualCheckOutCount);
//料架入库
int nlShelfPutInCount = inCount - storageInCount - virtualInCount;
countList.add(nlShelfPutInCount);
/*log.info(inCount + "");
log.info((storageInCount + virtualInCount) + "");
log.info(outCount + "");
log.info((storageOutCount + virtualOutCount + clearCount + feedingCount + manualCheckOutCount) + "");*/
//料架出库
int nlShelfCheckOutCount = outCount - storageOutCount - virtualOutCount - clearCount - feedingCount - manualCheckOutCount;
countList.add(nlShelfCheckOutCount);
//resultMap.put("manualCheckOutCount",manualCheckOutCount);
resultMap.put("title",titleList);
resultMap.put("count",countList);
resultMap.put("title", titleList);
resultMap.put("count", countList);
return ResultBean.newOkResult(resultMap);
}
......@@ -634,22 +608,6 @@ public class InnerReportController {
@RequestMapping("/getInAndOutCount/download")
@AnonymousAccess
public void getInAndOutCountDownload(ReportQueryCondition queryCondition, HttpServletResponse response) {
/*ResultBean bean = getInAndOutCount(queryCondition);
Map<String, Object> map = (Map<String, Object>) bean.getData();
List<String> titleList = (List<String>) map.get("title");
List<Integer> countList = (List<Integer>) map.get("count");
List<Map<String, Object>> results = new ArrayList<>();
Map<String, Object> resultMap = new LinkedHashMap<>();
for (int i = 0; i < titleList.size(); i++) {
resultMap.put(titleList.get(i),countList.get(i));
}
results.add(resultMap);
try {
FileUtil.downloadCSV(results,titleList, response);
} catch (Exception e) {
e.printStackTrace();
}*/
ResultBean bean = getInAndOutCount(queryCondition);
Map<String, Object> map = (Map<String, Object>) bean.getData();
List<String> titleList = (List<String>) map.get("title");
......@@ -688,22 +646,22 @@ public class InnerReportController {
if (orderItem.getOutReelCount() < orderItem.getNeedReelCount()) {
//判断线别是否相等
String line = queryCondition.getLine();
if (StringUtils.isNotBlank(line)){
if (!orderItem.getLine().contains(line)){
if (StringUtils.isNotBlank(line)) {
if (!orderItem.getLine().contains(line)) {
continue;
}
}
//判断工单号是否一致
String orderNo = queryCondition.getOrderNo();
if (StringUtils.isNotBlank(orderNo)){
if (!orderItem.getOrderNo().contains(orderNo)){
if (StringUtils.isNotBlank(orderNo)) {
if (!orderItem.getOrderNo().contains(orderNo)) {
continue;
}
}
//判断料号是否一致
String pn = queryCondition.getPn();
if (StringUtils.isNotBlank(pn)){
if (!orderItem.getPn().contains(pn)){
if (StringUtils.isNotBlank(pn)) {
if (!orderItem.getPn().contains(pn)) {
continue;
}
}
......
......@@ -472,8 +472,10 @@ public class OuterReportController {
//log.info("处理数量--" + count);
InventoryDto dto = new InventoryDto();
String posName = barcode.getPosName();
String newPosName = posName.substring(0, posName.indexOf("-"));
String newPosName = "";
if (posName.indexOf("-") != -1){
newPosName = posName.substring(0, posName.indexOf("-"));
}
//根据posName取库位信息
StoragePos pos = null;
if (posMap.get(newPosName) != null) {
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!