Commit 9a8217b9 zshaohui

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

1 个父辈 ff812e90
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 com.google.common.base.Strings;
import com.google.common.collect.Lists;
......@@ -34,6 +36,8 @@ import com.neotel.smfcore.core.system.util.DevicesStatusUtil;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
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 javax.annotation.PostConstruct;
......@@ -672,7 +676,6 @@ public class DataCache {
*/
public int updateInventory(StoragePos pos, Barcode barcode) {
Storage storage = getStorageById(pos.getStorageId());
String cid = storage.getCid();
String partNumber = barcode.getPartNumber();
int amount = 0;
......@@ -683,6 +686,7 @@ public class DataCache {
storage.emptyOnePos(pos);
updateSpUsePosCount(storage, pos, -1);
removeUsedPosList(cid, pos );
updateInOutData(cid, storage.getId(), -1);
} else {
//入库
amount = barcode.getAmount();
......@@ -693,6 +697,7 @@ public class DataCache {
if (ObjectUtil.isNotEmpty(storage.getInListName())) {
inListCache.UpdateInList(storage.getInListName(), pos, barcode);
}
updateInOutData(cid, storage.getId(), 1);
}
allStorage.put(cid, storage);
return updateInventoryAmount(cid, partNumber, amount);
......@@ -893,4 +898,37 @@ public class DataCache {
}
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;
import com.neotel.smfcore.common.base.AbstractBaseDao;
import com.neotel.smfcore.core.inout.service.dao.IInOutDataDao;
import com.neotel.smfcore.core.inout.service.po.InOutData;
import org.springframework.stereotype.Service;
@Service
public class InOutDataDaoImpl extends AbstractBaseDao implements IInOutDataDao {
@Override
public Class getEntityClass() {
return IInOutDataDao.class;
return InOutData.class;
}
}
......@@ -2,9 +2,12 @@ package com.neotel.smfcore.core.inout.service.manager;
import com.neotel.smfcore.common.base.IBaseManager;
import com.neotel.smfcore.core.inout.service.po.InOutData;
import org.springframework.data.mongodb.core.query.Query;
import java.util.Date;
public interface IInOutDataManager extends IBaseManager<InOutData> {
InOutData findOneByDate(Date startDate,Date endDate);
InOutData findOneByQuery(Query query);
}
......@@ -57,4 +57,10 @@ public class InOutDataManagerImpl implements IInOutDataManager {
Sort s = Sort.by(Sort.Direction.DESC, "createDate");
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;
import com.neotel.smfcore.common.base.BasePo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.mongodb.core.mapping.Document;
@Data
@Document
@AllArgsConstructor
@NoArgsConstructor
public class InOutData extends BasePo {
/**
* 设备cid
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!