Commit 3123116f zshaohui

1.看板修改

2.外仓工单上传
1 个父辈 6d2b6e3c
...@@ -453,9 +453,9 @@ public class DataCache { ...@@ -453,9 +453,9 @@ public class DataCache {
List<Storage> storages = Lists.newArrayList(); List<Storage> storages = Lists.newArrayList();
for (Storage storage : allStorages.values()) { for (Storage storage : allStorages.values()) {
if (storageIds == null || storageIds.contains(storage.getId())) { if (storageIds == null || storageIds.contains(storage.getId())) {
if (!storage.isVirtual()) { //if (!storage.isVirtual()) {
storages.add(storage); storages.add(storage);
} //}
} }
} }
Map<String, InventoryItem> map = getInventory(storages); Map<String, InventoryItem> map = getInventory(storages);
......
...@@ -5,6 +5,7 @@ import com.google.common.collect.Lists; ...@@ -5,6 +5,7 @@ import com.google.common.collect.Lists;
import com.neotel.smfcore.common.csv.CsvReader; import com.neotel.smfcore.common.csv.CsvReader;
import com.neotel.smfcore.core.device.util.DataCache; 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.enums.LITEORDER_SOURCE;
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;
...@@ -74,6 +75,7 @@ public class DefaultOrderFileListener implements IOrderFileListener { ...@@ -74,6 +75,7 @@ public class DefaultOrderFileListener implements IOrderFileListener {
} }
} }
log.info("watchOrderDir:新增加订单:" + liteOrder.getOrderNo() + ",共" + liteOrderItems.size() + "条工单详情"); log.info("watchOrderDir:新增加订单:" + liteOrder.getOrderNo() + ",共" + liteOrderItems.size() + "条工单详情");
liteOrder.setSource(LITEORDER_SOURCE.OUTTER.name());
liteOrder = liteOrderManager.createWithItems(liteOrder); liteOrder = liteOrderManager.createWithItems(liteOrder);
liteOrderCache.addOrderToMap(liteOrder); liteOrderCache.addOrderToMap(liteOrder);
...@@ -105,10 +107,11 @@ public class DefaultOrderFileListener implements IOrderFileListener { ...@@ -105,10 +107,11 @@ public class DefaultOrderFileListener implements IOrderFileListener {
csvRead = CsvReader.newReader(fileURL,"PN", orderSetting.getPn()); csvRead = CsvReader.newReader(fileURL,"PN", orderSetting.getPn());
int partNumberIndex = csvRead.getIndex("PN", orderSetting.getPn()); int partNumberIndex = csvRead.getIndex("PN", orderSetting.getPn());
int qtyIndex = csvRead.getIndex("QTY", orderSetting.getQty()); //int qtyIndex = csvRead.getIndex("QTY", orderSetting.getQty());
int feederIndex = csvRead.getIndex("FEEDER", orderSetting.getFeeder()); //int feederIndex = csvRead.getIndex("FEEDER", orderSetting.getFeeder());
int riIndex = csvRead.getIndex("RI",orderSetting.getRi()); //int riIndex = csvRead.getIndex("RI",orderSetting.getRi());
int soIndex = csvRead.getIndex("SO", orderSetting.getSo()); int soIndex = csvRead.getIndex("SO", orderSetting.getSo());
int reelCountIndex = csvRead.getIndex("REELCOUNT", orderSetting.getSo());
int row = 1; int row = 1;
int newRowCount = 0; int newRowCount = 0;
...@@ -118,15 +121,15 @@ public class DefaultOrderFileListener implements IOrderFileListener { ...@@ -118,15 +121,15 @@ public class DefaultOrderFileListener implements IOrderFileListener {
row++; row++;
String[] lineValues = csvRead.getValues(); String[] lineValues = csvRead.getValues();
String partNumber = lineValues[partNumberIndex]; String partNumber = lineValues[partNumberIndex];
String ri=""; //String ri="";
if(riIndex!=-1){ /*if(riIndex!=-1){
ri=lineValues[riIndex]; ri=lineValues[riIndex];
} }*/
if (partNumber.isEmpty()&&ri.isEmpty()) { if (partNumber.isEmpty()/*&&ri.isEmpty()*/) {
log.warn("行[partNumber=" + partNumber + "]中PN和RI都 为空,此行忽略"); log.warn("行[partNumber=" + partNumber + "]中PN和RI都 为空,此行忽略");
} else { } else {
int num = 1; //int num = 1;
if (qtyIndex != -1) { /*if (qtyIndex != -1) {
String numStr = lineValues[qtyIndex]; String numStr = lineValues[qtyIndex];
if (Strings.isNotBlank(numStr)) { if (Strings.isNotBlank(numStr)) {
try { try {
...@@ -139,7 +142,7 @@ public class DefaultOrderFileListener implements IOrderFileListener { ...@@ -139,7 +142,7 @@ public class DefaultOrderFileListener implements IOrderFileListener {
String feeder = ""; String feeder = "";
if (feederIndex != -1) { if (feederIndex != -1) {
feeder = lineValues[feederIndex]; feeder = lineValues[feederIndex];
} }*/
String so=fileName; String so=fileName;
if(soIndex!=-1){ if(soIndex!=-1){
...@@ -153,10 +156,24 @@ public class DefaultOrderFileListener implements IOrderFileListener { ...@@ -153,10 +156,24 @@ public class DefaultOrderFileListener implements IOrderFileListener {
if(partNumber.isEmpty()){ if(partNumber.isEmpty()){
item.setNeedReelCount(1); item.setNeedReelCount(1);
} }
item.setNeedNum(num); //item.setNeedNum(num);
//item.setFeederInfo(feeder);
//item.setRi(ri);
int count = 1;
if (reelCountIndex != -1) {
String countStr = lineValues[reelCountIndex];
if (Strings.isNotBlank(countStr)) {
try {
count = Integer.valueOf(countStr);
} catch (Exception e) {
log.error(partNumber + "的数量:" + countStr + " 不是数字,使用1");
}
}
}
item.setNeedReelCount(count);
item.setFeederInfo(feeder);
item.setRi(ri);
if(!itemMap.containsKey(so)){ if(!itemMap.containsKey(so)){
itemMap.put(so,new ArrayList<LiteOrderItem>()); itemMap.put(so,new ArrayList<LiteOrderItem>());
} }
......
...@@ -4,9 +4,11 @@ import com.neotel.smfcore.common.base.IBaseManager; ...@@ -4,9 +4,11 @@ import com.neotel.smfcore.common.base.IBaseManager;
import com.neotel.smfcore.common.exception.ValidateException; import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.core.barcode.service.po.Barcode; import com.neotel.smfcore.core.barcode.service.po.Barcode;
import com.neotel.smfcore.core.order.service.po.LiteOrder; import com.neotel.smfcore.core.order.service.po.LiteOrder;
import com.neotel.smfcore.core.storage.rest.dto.TacticsOutDto;
import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.Query;
import java.util.List; import java.util.List;
import java.util.Set;
public interface ILiteOrderManager extends IBaseManager<LiteOrder> { public interface ILiteOrderManager extends IBaseManager<LiteOrder> {
LiteOrder findByOrderNo(String orderNo); LiteOrder findByOrderNo(String orderNo);
...@@ -17,4 +19,6 @@ public interface ILiteOrderManager extends IBaseManager<LiteOrder> { ...@@ -17,4 +19,6 @@ public interface ILiteOrderManager extends IBaseManager<LiteOrder> {
LiteOrder findBySource(String source); LiteOrder findBySource(String source);
List<LiteOrder> findByQueryAndPartNumber(Query q, String partNumber); List<LiteOrder> findByQueryAndPartNumber(Query q, String partNumber);
LiteOrder batchCheckOut(Set<TacticsOutDto> outDtoSet);
} }
...@@ -6,12 +6,14 @@ import com.neotel.smfcore.common.exception.ValidateException; ...@@ -6,12 +6,14 @@ import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.core.barcode.service.dao.IBarcodeDao; import com.neotel.smfcore.core.barcode.service.dao.IBarcodeDao;
import com.neotel.smfcore.core.barcode.service.manager.IBarcodeManager; import com.neotel.smfcore.core.barcode.service.manager.IBarcodeManager;
import com.neotel.smfcore.core.barcode.service.po.Barcode; import com.neotel.smfcore.core.barcode.service.po.Barcode;
import com.neotel.smfcore.core.order.enums.LITEORDER_SOURCE;
import com.neotel.smfcore.core.order.enums.LITEORDER_STATUS; import com.neotel.smfcore.core.order.enums.LITEORDER_STATUS;
import com.neotel.smfcore.core.order.service.dao.ILiteOrderDao; import com.neotel.smfcore.core.order.service.dao.ILiteOrderDao;
import com.neotel.smfcore.core.order.service.manager.ILiteOrderItemManager; 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.storage.rest.dto.TacticsOutDto;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -23,6 +25,7 @@ import org.springframework.stereotype.Service; ...@@ -23,6 +25,7 @@ import org.springframework.stereotype.Service;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Set;
@Service @Service
public class LiteOrderManagerImpl implements ILiteOrderManager { public class LiteOrderManagerImpl implements ILiteOrderManager {
...@@ -73,6 +76,7 @@ public class LiteOrderManagerImpl implements ILiteOrderManager { ...@@ -73,6 +76,7 @@ public class LiteOrderManagerImpl implements ILiteOrderManager {
List<LiteOrderItem> items = Lists.newArrayList(); List<LiteOrderItem> items = Lists.newArrayList();
for (LiteOrderItem liteOrderItem : liteOrder.getOrderItems()) { for (LiteOrderItem liteOrderItem : liteOrder.getOrderItems()) {
liteOrderItem.setOrderId(liteOrder.getId()); liteOrderItem.setOrderId(liteOrder.getId());
liteOrderItem.setOrderNo(liteOrder.getOrderNo());
liteOrderItem = liteOrderItemManager.save(liteOrderItem); liteOrderItem = liteOrderItemManager.save(liteOrderItem);
items.add(liteOrderItem); items.add(liteOrderItem);
} }
...@@ -137,6 +141,24 @@ public class LiteOrderManagerImpl implements ILiteOrderManager { ...@@ -137,6 +141,24 @@ public class LiteOrderManagerImpl implements ILiteOrderManager {
} }
@Override @Override
public LiteOrder batchCheckOut(Set<TacticsOutDto> outDtoSet) {
LiteOrder liteOrder = new LiteOrder();
liteOrder.setOrderNo("Manual" + System.currentTimeMillis());
liteOrder.setSource(LITEORDER_SOURCE.OUTTER.name());
liteOrder.setType(1);
List<LiteOrderItem> orderItems = new ArrayList<>();
for (TacticsOutDto outDto : outDtoSet) {
LiteOrderItem item = new LiteOrderItem();
item.setPn(outDto.getPartNumber());
item.setNeedReelCount(outDto.getPlateNumber());
orderItems.add(item);
}
liteOrder.setOrderItems(orderItems);
liteOrder = createWithItems(liteOrder);
return liteOrder;
}
@Override
public PageData<LiteOrder> findByPage(Query query, Pageable pageable) { public PageData<LiteOrder> findByPage(Query query, Pageable pageable) {
int totalCount = liteOrderDao.countByQuery(query); int totalCount = liteOrderDao.countByQuery(query);
List<LiteOrder> list = liteOrderDao.findByQuery(query, pageable); List<LiteOrder> list = liteOrderDao.findByQuery(query, pageable);
......
...@@ -12,6 +12,9 @@ import com.neotel.smfcore.core.barcode.service.manager.IBarcodeManager; ...@@ -12,6 +12,9 @@ import com.neotel.smfcore.core.barcode.service.manager.IBarcodeManager;
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.device.util.DataCache;
import com.neotel.smfcore.core.language.util.MessageUtils; import com.neotel.smfcore.core.language.util.MessageUtils;
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.storage.bean.InventoryItem; import com.neotel.smfcore.core.storage.bean.InventoryItem;
import com.neotel.smfcore.core.storage.rest.dto.*; import com.neotel.smfcore.core.storage.rest.dto.*;
import com.neotel.smfcore.core.storage.rest.mapstruct.InventoryItemMapper; import com.neotel.smfcore.core.storage.rest.mapstruct.InventoryItemMapper;
...@@ -25,6 +28,7 @@ import com.neotel.smfcore.core.storage.service.po.Storage; ...@@ -25,6 +28,7 @@ import com.neotel.smfcore.core.storage.service.po.Storage;
import com.neotel.smfcore.core.storage.service.po.StoragePos; import com.neotel.smfcore.core.storage.service.po.StoragePos;
import com.neotel.smfcore.core.system.service.po.DataLog; import com.neotel.smfcore.core.system.service.po.DataLog;
import com.neotel.smfcore.core.system.util.TaskService; import com.neotel.smfcore.core.system.util.TaskService;
import com.neotel.smfcore.security.annotation.AnonymousAccess;
import com.neotel.smfcore.security.service.manager.IGroupManager; import com.neotel.smfcore.security.service.manager.IGroupManager;
import com.neotel.smfcore.security.service.po.Group; import com.neotel.smfcore.security.service.po.Group;
import com.neotel.smfcore.security.service.po.User; import com.neotel.smfcore.security.service.po.User;
...@@ -76,6 +80,12 @@ public class MaterialController { ...@@ -76,6 +80,12 @@ public class MaterialController {
@Autowired @Autowired
private final IGroupManager groupManager; private final IGroupManager groupManager;
@Autowired
private ILiteOrderManager orderManager;
@Autowired
private LiteOrderCache liteOrderCache;
@ApiOperation("导出库存列表") @ApiOperation("导出库存列表")
@GetMapping(value = "/inventory/download") @GetMapping(value = "/inventory/download")
@PreAuthorize("@el.check('tacticsOuput')") @PreAuthorize("@el.check('tacticsOuput')")
...@@ -374,4 +384,24 @@ public class MaterialController { ...@@ -374,4 +384,24 @@ public class MaterialController {
} }
} }
@ApiOperation("批量出库")
@RequestMapping("/batchCheckOut")
@AnonymousAccess
public ResultBean batchCheckOut(@RequestBody Set<TacticsOutDto> outDtoSet) {
if (outDtoSet == null || outDtoSet.isEmpty()) {
throw new ValidateException("smfcore.valueCanotNull", "{0}不能为空", new String[]{"PN"});
}
for (TacticsOutDto dto :
outDtoSet) {
if (dto.getPartNumber() == null) {
throw new ValidateException("smfcore.valueCanotNull", "{0}不能为空", new String[]{"PN"});
} else if (dto.getPlateNumber() == null) {
throw new ValidateException("smfcore.valueCanotNull", "{0}不能为空", new String[]{"Num"});
}
}
LiteOrder liteOrder = orderManager.batchCheckOut(outDtoSet);
liteOrderCache.addOrderToMap(liteOrder);
return ResultBean.newOkResult("");
}
} }
...@@ -353,7 +353,7 @@ public class StoragePosManagerImpl implements IStoragePosManager { ...@@ -353,7 +353,7 @@ public class StoragePosManagerImpl implements IStoragePosManager {
c.and("barcode.subCodeList.isOut").is(isOut); c.and("barcode.subCodeList.isOut").is(isOut);
} }
//Sort sort = getSortByCheckOutType(checkOutType); //Sort sort = getSortByCheckOutType(checkOutType);
Sort sort = Sort.by(Sort.Direction.ASC, "barcode.subCodeList.createDate","canCheckOutTime", "barcode.usedCount"); Sort sort = Sort.by(Sort.Direction.ASC, "barcode.subCodeList.createDate"/*,"canCheckOutTime", "barcode.usedCount"*/);
Query q = new Query(c); Query q = new Query(c);
q.with(sort); q.with(sort);
StoragePos pos = storagePosDao.findOne(q); StoragePos pos = storagePosDao.findOne(q);
......
...@@ -23,6 +23,8 @@ public class OrderSetting implements Serializable { ...@@ -23,6 +23,8 @@ public class OrderSetting implements Serializable {
public String so="WO"; public String so="WO";
public String reelCount = "REELCOUNT";
/** /**
* 是否显示料架亮灯方式 * 是否显示料架亮灯方式
*/ */
......
...@@ -181,26 +181,29 @@ public class SettingsController { ...@@ -181,26 +181,29 @@ public class SettingsController {
OrderSetting orderSetting = dataCache.getOrderSetting(); OrderSetting orderSetting = dataCache.getOrderSetting();
titles.add(orderSetting.getPn() ); titles.add(orderSetting.getPn() );
titles.add(orderSetting.getFeeder()); /* titles.add(orderSetting.getFeeder());
titles.add((orderSetting.getQty())); titles.add((orderSetting.getQty()));
titles.add(orderSetting.getRi()); titles.add(orderSetting.getRi());
titles.add(orderSetting.getSo()); titles.add(orderSetting.getSo());*/
titles.add(orderSetting.getReelCount());
for(int i=1;i<=10;i++) { for(int i=1;i<=10;i++) {
Map<String, Object> map = new LinkedHashMap<>(); Map<String, Object> map = new LinkedHashMap<>();
if(i<=4){ if(i<=4){
map.put(orderSetting.getPn(),"PN"+i); map.put(orderSetting.getPn(),"PN"+i);
map.put(orderSetting.getFeeder(),"Feeder1"+i); /* map.put(orderSetting.getFeeder(),"Feeder1"+i);
map.put(orderSetting.getQty(),"100"+i); map.put(orderSetting.getQty(),"100"+i);
map.put(orderSetting.getRi(),""); map.put(orderSetting.getRi(),"");
map.put(orderSetting.getSo(),"WO1001" ); map.put(orderSetting.getSo(),"WO1001" );*/
map.put(orderSetting.getReelCount(),i);
} }
else{ else{
map.put(orderSetting.getPn(),"PN2"+i); map.put(orderSetting.getPn(),"PN2"+i);
map.put(orderSetting.getFeeder(),"Feeder2"+i); /* map.put(orderSetting.getFeeder(),"Feeder2"+i);
map.put(orderSetting.getQty(),"200"+i); map.put(orderSetting.getQty(),"200"+i);
map.put(orderSetting.getRi(),""); map.put(orderSetting.getRi(),"");
map.put(orderSetting.getSo(),"WO1002" ); map.put(orderSetting.getSo(),"WO1002" );*/
map.put(orderSetting.getReelCount(),i);
} }
maps.add(map); maps.add(map);
} }
......
...@@ -20,6 +20,7 @@ import com.neotel.smfcore.core.device.util.DataCache; ...@@ -20,6 +20,7 @@ import com.neotel.smfcore.core.device.util.DataCache;
import com.neotel.smfcore.core.message.util.DeviceMessageUtil; import com.neotel.smfcore.core.message.util.DeviceMessageUtil;
import com.neotel.smfcore.core.order.LiteOrderCache; import com.neotel.smfcore.core.order.LiteOrderCache;
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.storage.enums.CHECKOUT_TYPE; import com.neotel.smfcore.core.storage.enums.CHECKOUT_TYPE;
import com.neotel.smfcore.core.storage.enums.DeviceType; import com.neotel.smfcore.core.storage.enums.DeviceType;
import com.neotel.smfcore.core.storage.rest.dto.TacticsOutDto; import com.neotel.smfcore.core.storage.rest.dto.TacticsOutDto;
......
...@@ -163,15 +163,15 @@ public class LizhenApi extends DefaultSmfApiListener { ...@@ -163,15 +163,15 @@ public class LizhenApi extends DefaultSmfApiListener {
if (status != null) { if (status != null) {
if (status == 200) { if (status == 200) {
JSONObject dataJson = resultJson.getJSONObject("data"); 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 partNum = dataJson.get("partNum") == null ? "" : dataJson.get("partNum").toString();
String partSpec = dataJson.get("partSpec") == null ? "" : dataJson.get("partSpec").toString(); String partSpec = dataJson.get("partSpec") == null ? "" : dataJson.get("partSpec").toString();
int qty = dataJson.get("qty") == null ? 0 : Integer.valueOf(dataJson.get("qty").toString()); int qty = dataJson.get("qty") == null ? 0 : Integer.valueOf(dataJson.get("qty").toString());
String vendor = dataJson.get("vendor") == null ? "" : dataJson.get("vendor").toString(); //String vendor = dataJson.get("vendor") == null ? "" : dataJson.get("vendor").toString();
String vendorNum = dataJson.get("vendorNum") == null ? "" : dataJson.get("vendorNum").toString(); //String vendorNum = dataJson.get("vendorNum") == null ? "" : dataJson.get("vendorNum").toString();
String dataCode = dataJson.get("dataCode") == null ? "" : dataJson.get("dataCode").toString(); //String dataCode = dataJson.get("dataCode") == null ? "" : dataJson.get("dataCode").toString();
String lotCode = dataJson.get("lotCode") == null ? "" : dataJson.get("lotCode").toString(); //String lotCode = dataJson.get("lotCode") == null ? "" : dataJson.get("lotCode").toString();
if (StringUtils.isBlank(reelID)) { /*if (StringUtils.isBlank(reelID)) {
return null; return null;
} }
if (StringUtils.isNotBlank(reelID)){ if (StringUtils.isNotBlank(reelID)){
...@@ -179,11 +179,11 @@ public class LizhenApi extends DefaultSmfApiListener { ...@@ -179,11 +179,11 @@ public class LizhenApi extends DefaultSmfApiListener {
} }
if (StringUtils.isNotBlank(partNum)){ if (StringUtils.isNotBlank(partNum)){
barcode.setPartNumber(partNum); barcode.setPartNumber(partNum);
} }*/
barcode.setAmount(qty); barcode.setAmount(qty);
if (StringUtils.isNotBlank(vendor)){ /*if (StringUtils.isNotBlank(vendor)){
barcode.setProvider(vendor); barcode.setProvider(vendor);
} }
if (StringUtils.isNotBlank(vendorNum)){ if (StringUtils.isNotBlank(vendorNum)){
...@@ -194,7 +194,7 @@ public class LizhenApi extends DefaultSmfApiListener { ...@@ -194,7 +194,7 @@ public class LizhenApi extends DefaultSmfApiListener {
} }
if (StringUtils.isNotBlank(lotCode)){ if (StringUtils.isNotBlank(lotCode)){
barcode.setBatch(lotCode); barcode.setBatch(lotCode);
} }*/
if (StringUtils.isNotBlank(partSpec)){ if (StringUtils.isNotBlank(partSpec)){
barcode.setDescribe(partSpec); barcode.setDescribe(partSpec);
} }
...@@ -323,7 +323,7 @@ public class LizhenApi extends DefaultSmfApiListener { ...@@ -323,7 +323,7 @@ public class LizhenApi extends DefaultSmfApiListener {
Map<String, Object> dataMap = new HashMap<>(); Map<String, Object> dataMap = new HashMap<>();
dataMap.put("pickingid", ""); dataMap.put("pickingid", "");
if (StringUtils.isNotBlank(task.getSourceName())) { if (StringUtils.isNotBlank(task.getSourceName()) && StringUtils.isNotBlank(task.getLine())) {
dataMap.put("pickingid", task.getSourceName()); dataMap.put("pickingid", task.getSourceName());
outNotifyUrl = outNotifyUrlPK; outNotifyUrl = outNotifyUrlPK;
log.info("出库pk不为空:"+outNotifyUrl); log.info("出库pk不为空:"+outNotifyUrl);
......
...@@ -761,6 +761,12 @@ public class OutLineStorageController { ...@@ -761,6 +761,12 @@ public class OutLineStorageController {
pos.setUsed(false); pos.setUsed(false);
storagePosManager.save(pos); storagePosManager.save(pos);
dataCache.updateInventory(pos, barcode); dataCache.updateInventory(pos, barcode);
List<Barcode> subCodeList = barcode.getSubCodeList();
if (subCodeList != null && !subCodeList.isEmpty()) {
for (Barcode subCode : subCodeList) {
dataCache.updateInventoryAmount(dataCache.getStorageById(pos.getStorageId()).getCid(), subCode.getPartNumber(), -subCode.getAmount());
}
}
} }
} }
Map<String, Object> resultMap = getBoxInfo(code); Map<String, Object> resultMap = getBoxInfo(code);
...@@ -795,6 +801,14 @@ public class OutLineStorageController { ...@@ -795,6 +801,14 @@ public class OutLineStorageController {
pos.setUsed(true); pos.setUsed(true);
pos.setUpdateDate(new Date()); pos.setUpdateDate(new Date());
pos = storagePosManager.save(pos); pos = storagePosManager.save(pos);
//同时,更改虚拟仓缓存
dataCache.updateInventory(pos,barcode);
List<Barcode> subCodeList = barcode.getSubCodeList();
if (subCodeList != null && !subCodeList.isEmpty()){
for (Barcode subCode : subCodeList) {
dataCache.updateInventoryAmount(storage.getCid(),subCode.getPartNumber(),subCode.getAmount());
}
}
return pos; return pos;
} }
......
package com.neotel.smfcore.custom.lizhen.agvBox.rest; package com.neotel.smfcore.custom.lizhen.agvBox.rest;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.lowagie.text.Anchor;
import com.neotel.smfcore.common.bean.ReelLockPosInfo; import com.neotel.smfcore.common.bean.ReelLockPosInfo;
import com.neotel.smfcore.common.bean.ResultBean; import com.neotel.smfcore.common.bean.ResultBean;
import com.neotel.smfcore.common.exception.ValidateException; import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.common.utils.*; import com.neotel.smfcore.common.utils.*;
import com.neotel.smfcore.core.api.SmfApi; import com.neotel.smfcore.core.api.SmfApi;
import com.neotel.smfcore.core.barcode.bean.BarcodeRule;
import com.neotel.smfcore.core.barcode.bean.CodeBean; import com.neotel.smfcore.core.barcode.bean.CodeBean;
import com.neotel.smfcore.core.barcode.service.manager.IBarcodeManager; import com.neotel.smfcore.core.barcode.service.manager.IBarcodeManager;
import com.neotel.smfcore.core.barcode.service.po.Barcode; import com.neotel.smfcore.core.barcode.service.po.Barcode;
...@@ -15,10 +13,7 @@ import com.neotel.smfcore.core.barcode.utils.CodeResolve; ...@@ -15,10 +13,7 @@ import com.neotel.smfcore.core.barcode.utils.CodeResolve;
import com.neotel.smfcore.core.device.enums.OP; import com.neotel.smfcore.core.device.enums.OP;
import com.neotel.smfcore.core.device.enums.OP_STATUS; import com.neotel.smfcore.core.device.enums.OP_STATUS;
import com.neotel.smfcore.core.device.util.DataCache; import com.neotel.smfcore.core.device.util.DataCache;
import com.neotel.smfcore.core.order.LiteOrderCache;
import com.neotel.smfcore.core.order.service.manager.ILiteOrderItemManager; 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.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.enums.DeviceType; import com.neotel.smfcore.core.storage.enums.DeviceType;
import com.neotel.smfcore.core.storage.service.manager.IStoragePosManager; import com.neotel.smfcore.core.storage.service.manager.IStoragePosManager;
...@@ -41,7 +36,6 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -41,7 +36,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Sort; import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.Query;
import org.springframework.http.HttpRequest;
import org.springframework.web.bind.annotation.RequestBody; 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.RestController; import org.springframework.web.bind.annotation.RestController;
......
...@@ -6,6 +6,8 @@ import com.neotel.smfcore.core.device.util.DataCache; ...@@ -6,6 +6,8 @@ import com.neotel.smfcore.core.device.util.DataCache;
import com.neotel.smfcore.core.storage.service.manager.IStoragePosManager; import com.neotel.smfcore.core.storage.service.manager.IStoragePosManager;
import com.neotel.smfcore.core.system.service.manager.IDataLogManager; import com.neotel.smfcore.core.system.service.manager.IDataLogManager;
import com.neotel.smfcore.custom.lizhen.kanban.common.bean.dto.InOutDataDto; import com.neotel.smfcore.custom.lizhen.kanban.common.bean.dto.InOutDataDto;
import com.neotel.smfcore.custom.lizhen.kanban.service.manager.InOutDataDtoManager;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
...@@ -13,6 +15,7 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -13,6 +15,7 @@ import org.springframework.web.bind.annotation.RestController;
import java.util.*; import java.util.*;
@RestController @RestController
@Slf4j
public class KanbanUtils { public class KanbanUtils {
private static String F2; private static String F2;
...@@ -27,6 +30,15 @@ public class KanbanUtils { ...@@ -27,6 +30,15 @@ public class KanbanUtils {
private static DataCache dataCache; private static DataCache dataCache;
private static InOutDataDtoManager inOutDataManager;
/**
* 今日出入库缓存
*/
private static InOutDataDto todayInOutDto = null;
/** /**
* 得到当日的出入库完成统计 * 得到当日的出入库完成统计
* *
...@@ -34,14 +46,24 @@ public class KanbanUtils { ...@@ -34,14 +46,24 @@ public class KanbanUtils {
*/ */
public static Map<String, Integer> getTodayInAndOutAmount() { public static Map<String, Integer> getTodayInAndOutAmount() {
Map<String, Integer> resultMap = new HashMap<>(); Map<String, Integer> resultMap = new HashMap<>();
resultMap.put("in", 0); int inCount = 0;
resultMap.put("out", 0); int outCount = 0;
//得到当前日期与结束日期 if (todayInOutDto == null || System.currentTimeMillis() - todayInOutDto.getCreateDate().getTime() >= 1000 * 60 * 1) {
Date startDate = getCurrentDate(); todayInOutDto = new InOutDataDto();
Date endDate = DateUtil.addDays(startDate, 1); //得到当前日期与结束日期
//得到出入库数据 Date startDate = getCurrentDate();
int inCount = dataLogManager.getInOutData(startDate, endDate, OP.PUT_IN, "",-1,""); Date endDate = DateUtil.addDays(startDate, 1);
int outCount = dataLogManager.getInOutData(startDate, endDate, OP.CHECKOUT, "",-1,""); //得到出入库数据
inCount = dataLogManager.getInOutData(startDate, endDate, OP.PUT_IN, "", -1, "");
outCount = dataLogManager.getInOutData(startDate, endDate, OP.CHECKOUT, "", -1, "");
todayInOutDto.setInValue(inCount);
todayInOutDto.setOutValue(outCount);
todayInOutDto.setCreateDate(new Date());
} else {
inCount = todayInOutDto.getInValue();
outCount = todayInOutDto.getOutValue();
}
resultMap.put("in", inCount); resultMap.put("in", inCount);
resultMap.put("out", outCount); resultMap.put("out", outCount);
return resultMap; return resultMap;
...@@ -53,27 +75,53 @@ public class KanbanUtils { ...@@ -53,27 +75,53 @@ public class KanbanUtils {
* @return * @return
*/ */
public static InOutDataDto getSevenDaysInAndOutAmount() { public static InOutDataDto getSevenDaysInAndOutAmount() {
InOutDataDto dataDto = new InOutDataDto(); InOutDataDto dataDto = getSixDaysAgoData();
List<String> labelList = new ArrayList<>();
List<Integer> putInValueList = new ArrayList<>();
List<Integer> checkOutValueList = new ArrayList<>();
Date currentDate = getCurrentDate(); //当前时间 Date currentDate = getCurrentDate(); //当前时间
Date startDate = DateUtil.addDays(currentDate, -6); //开始时间(与当前时间相差7天) //增加当天出入库记录
for (int day = 1; day < 8; day++) { List<String> labelList = dataDto.getLabelList();
Date endDate = DateUtil.addDays(startDate, 1); labelList.add(DateUtil.toDateString(currentDate, "MM/dd"));
int inData = dataLogManager.getInOutData(startDate, endDate, OP.PUT_IN, "",-1,"");
int outData = dataLogManager.getInOutData(startDate, endDate, OP.CHECKOUT, "",-1,"");
labelList.add(DateUtil.toDateString(startDate, "MM/dd"));
putInValueList.add(inData);
checkOutValueList.add(outData);
startDate = endDate;
}
dataDto.setLabelList(labelList); dataDto.setLabelList(labelList);
Map<String, Integer> todayInAndOutAmount = getTodayInAndOutAmount();
Integer inValue = todayInAndOutAmount.get("in");
Integer outValue = todayInAndOutAmount.get("out");
List<Integer> putInValueList = dataDto.getPutInValueList();
putInValueList.add(inValue);
dataDto.setPutInValueList(putInValueList); dataDto.setPutInValueList(putInValueList);
List<Integer> checkOutValueList = dataDto.getCheckOutValueList();
checkOutValueList.add(outValue);
dataDto.setCheckOutValueList(checkOutValueList); dataDto.setCheckOutValueList(checkOutValueList);
return dataDto; return dataDto;
} }
private static InOutDataDto getSixDaysAgoData() {
Date currentDate = getCurrentDate();
InOutDataDto dataDto = inOutDataManager.getSixDaysAgoData(currentDate);
if (dataDto == null) {
dataDto = new InOutDataDto();
List<String> labelList = new ArrayList<>();
List<Integer> putInValueList = new ArrayList<>();
List<Integer> checkOutValueList = new ArrayList<>();
Date startDate = DateUtil.addDays(currentDate, -6); //开始时间(与当前时间相差7天)
for (int day = 1; day < 7; day++) {
Date endDate = DateUtil.addDays(startDate, 1);
int inData = dataLogManager.getInOutData(startDate, endDate, OP.PUT_IN, "", -1, "");
int outData = dataLogManager.getInOutData(startDate, endDate, OP.CHECKOUT, "", -1, "");
labelList.add(DateUtil.toDateString(startDate, "MM/dd"));
putInValueList.add(inData);
checkOutValueList.add(outData);
startDate = endDate;
}
dataDto.setCheckOutValueList(checkOutValueList);
dataDto.setPutInValueList(putInValueList);
dataDto.setLabelList(labelList);
inOutDataManager.save(dataDto);
}
return dataDto;
}
/** /**
* 得到当前日期 * 得到当前日期
...@@ -122,18 +170,23 @@ public class KanbanUtils { ...@@ -122,18 +170,23 @@ public class KanbanUtils {
this.dataCache = dataCache; this.dataCache = dataCache;
} }
@Autowired
private void setInOutDataManager(InOutDataDtoManager manager) {
this.inOutDataManager = manager;
}
@Value("${lizhen.F2.name}") @Value("${lizhen.F2.name}")
private void setF2Floor(String floor){ private void setF2Floor(String floor) {
F2 = floor; F2 = floor;
} }
@Value("${lizhen.F3.name}") @Value("${lizhen.F3.name}")
private void setF3Floor(String floor){ private void setF3Floor(String floor) {
F3 = floor; F3 = floor;
} }
@Value("${lizhen.F5.name}") @Value("${lizhen.F5.name}")
private void setF5Floor(String floor){ private void setF5Floor(String floor) {
F5 = floor; F5 = floor;
} }
} }
package com.neotel.smfcore.custom.lizhen.kanban.common.bean.dto; package com.neotel.smfcore.custom.lizhen.kanban.common.bean.dto;
import com.neotel.smfcore.common.base.BasePo;
import lombok.Data; import lombok.Data;
import lombok.Setter; import lombok.Setter;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date;
import java.util.List; import java.util.List;
@Data @Data
public class InOutDataDto { public class InOutDataDto extends BasePo {
public InOutDataDto() { public InOutDataDto() {
this.labelList = new ArrayList<>(); this.labelList = new ArrayList<>();
...@@ -29,4 +31,19 @@ public class InOutDataDto { ...@@ -29,4 +31,19 @@ public class InOutDataDto {
* 出库量 * 出库量
*/ */
private List<Integer> checkOutValueList; private List<Integer> checkOutValueList;
/**
* 当前时间
*/
private String dateStr;
/**
* 入库量
*/
private int inValue;
/**
* 出库量
*/
private int outValue;
} }
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!