Commit 9a8217b9 zshaohui

修改库存时,同时保存1个小时内出入库数量

1 个父辈 ff812e90
package com.neotel.smfcore.core.device.util; package com.neotel.smfcore.core.device.util;
import cn.hutool.core.date.DateUnit;
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.google.common.collect.Lists; import com.google.common.collect.Lists;
...@@ -34,6 +36,8 @@ import com.neotel.smfcore.core.system.util.DevicesStatusUtil; ...@@ -34,6 +36,8 @@ import com.neotel.smfcore.core.system.util.DevicesStatusUtil;
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;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import javax.annotation.PostConstruct; import javax.annotation.PostConstruct;
...@@ -672,7 +676,6 @@ public class DataCache { ...@@ -672,7 +676,6 @@ public class DataCache {
*/ */
public int updateInventory(StoragePos pos, Barcode barcode) { public int updateInventory(StoragePos pos, Barcode barcode) {
Storage storage = getStorageById(pos.getStorageId()); Storage storage = getStorageById(pos.getStorageId());
String cid = storage.getCid(); String cid = storage.getCid();
String partNumber = barcode.getPartNumber(); String partNumber = barcode.getPartNumber();
int amount = 0; int amount = 0;
...@@ -683,6 +686,7 @@ public class DataCache { ...@@ -683,6 +686,7 @@ public class DataCache {
storage.emptyOnePos(pos); storage.emptyOnePos(pos);
updateSpUsePosCount(storage, pos, -1); updateSpUsePosCount(storage, pos, -1);
removeUsedPosList(cid, pos ); removeUsedPosList(cid, pos );
updateInOutData(cid, storage.getId(), -1);
} else { } else {
//入库 //入库
amount = barcode.getAmount(); amount = barcode.getAmount();
...@@ -693,6 +697,7 @@ public class DataCache { ...@@ -693,6 +697,7 @@ public class DataCache {
if (ObjectUtil.isNotEmpty(storage.getInListName())) { if (ObjectUtil.isNotEmpty(storage.getInListName())) {
inListCache.UpdateInList(storage.getInListName(), pos, barcode); inListCache.UpdateInList(storage.getInListName(), pos, barcode);
} }
updateInOutData(cid, storage.getId(), 1);
} }
allStorage.put(cid, storage); allStorage.put(cid, storage);
return updateInventoryAmount(cid, partNumber, amount); return updateInventoryAmount(cid, partNumber, amount);
...@@ -893,4 +898,37 @@ public class DataCache { ...@@ -893,4 +898,37 @@ public class DataCache {
} }
return true; return true;
} }
private synchronized void updateInOutData(String cid, String storageId, int amount) {
InOutData inOutData = getLastSaveInOutData(cid, storageId);
//如果amount小于0,则是出库,否则入库
if (amount < 0) {
inOutData.setOutCount(inOutData.getOutCount() + 1);
} else if (amount > 0) {
inOutData.setInCount(inOutData.getInCount() + 1);
}
inOutData.setUpdateDate(new Date());
inOutDataManager.save(inOutData);
}
private InOutData getLastSaveInOutData(String cid, String storageId) {
InOutData inOutData = inOutDataManager.findOneByQuery(new Query(Criteria.where("cid").is(cid).and("storageId").is(storageId)));
if (inOutData == null) {
inOutData = new InOutData();
} else {
Date createDate = inOutData.getCreateDate();
//判断当前是否超过1个小时
String createDateStr = DateUtil.format(createDate, "yyyy-MM-dd HH");
String currentDateStr = DateUtil.format(new Date(), "yyyy-MM-dd HH");
long between = DateUtil.between(DateUtil.parse(createDateStr,"yyyy-MM-dd HH"), DateUtil.parse(currentDateStr,"yyyy-MM-dd HH"), DateUnit.HOUR);
if (between >= 1) {
inOutData = new InOutData();
}
}
inOutData.setCid(cid);
inOutData.setStorageId(storageId);
return inOutData;
}
} }
...@@ -2,12 +2,13 @@ package com.neotel.smfcore.core.inout.service.dao.impl; ...@@ -2,12 +2,13 @@ package com.neotel.smfcore.core.inout.service.dao.impl;
import com.neotel.smfcore.common.base.AbstractBaseDao; import com.neotel.smfcore.common.base.AbstractBaseDao;
import com.neotel.smfcore.core.inout.service.dao.IInOutDataDao; import com.neotel.smfcore.core.inout.service.dao.IInOutDataDao;
import com.neotel.smfcore.core.inout.service.po.InOutData;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@Service @Service
public class InOutDataDaoImpl extends AbstractBaseDao implements IInOutDataDao { public class InOutDataDaoImpl extends AbstractBaseDao implements IInOutDataDao {
@Override @Override
public Class getEntityClass() { public Class getEntityClass() {
return IInOutDataDao.class; return InOutData.class;
} }
} }
...@@ -2,9 +2,12 @@ package com.neotel.smfcore.core.inout.service.manager; ...@@ -2,9 +2,12 @@ package com.neotel.smfcore.core.inout.service.manager;
import com.neotel.smfcore.common.base.IBaseManager; import com.neotel.smfcore.common.base.IBaseManager;
import com.neotel.smfcore.core.inout.service.po.InOutData; import com.neotel.smfcore.core.inout.service.po.InOutData;
import org.springframework.data.mongodb.core.query.Query;
import java.util.Date; import java.util.Date;
public interface IInOutDataManager extends IBaseManager<InOutData> { public interface IInOutDataManager extends IBaseManager<InOutData> {
InOutData findOneByDate(Date startDate,Date endDate); InOutData findOneByDate(Date startDate,Date endDate);
InOutData findOneByQuery(Query query);
} }
...@@ -57,4 +57,10 @@ public class InOutDataManagerImpl implements IInOutDataManager { ...@@ -57,4 +57,10 @@ public class InOutDataManagerImpl implements IInOutDataManager {
Sort s = Sort.by(Sort.Direction.DESC, "createDate"); Sort s = Sort.by(Sort.Direction.DESC, "createDate");
return inOutDataDao.findOne(q.addCriteria(c).with(s)); return inOutDataDao.findOne(q.addCriteria(c).with(s));
} }
@Override
public InOutData findOneByQuery(Query query) {
query.with(Sort.by(Sort.Direction.DESC,"createDate"));
return inOutDataDao.findOne(query);
}
} }
package com.neotel.smfcore.core.inout.service.po; package com.neotel.smfcore.core.inout.service.po;
import com.neotel.smfcore.common.base.BasePo; import com.neotel.smfcore.common.base.BasePo;
import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.mongodb.core.mapping.Document; import org.springframework.data.mongodb.core.mapping.Document;
@Data @Data
@Document @Document
@AllArgsConstructor
@NoArgsConstructor
public class InOutData extends BasePo { public class InOutData extends BasePo {
/** /**
* 设备cid * 设备cid
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!