From 31ffbaf322685984516cfb284fa58741debf4e96 Mon Sep 17 00:00:00 2001
From: gdg <764716047@qq.com>
Date: Fri, 29 Jan 2021 09:12:29 +0800
Subject: [PATCH] Merge remote-tracking branch 'remotes/origin/yufei' into master
---
src/main/java/com/nanometer/smartlab/service/OpeWarehouseReserveServiceImpl.java | 327 +++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 322 insertions(+), 5 deletions(-)
diff --git a/src/main/java/com/nanometer/smartlab/service/OpeWarehouseReserveServiceImpl.java b/src/main/java/com/nanometer/smartlab/service/OpeWarehouseReserveServiceImpl.java
index 9086784..8f5995c 100644
--- a/src/main/java/com/nanometer/smartlab/service/OpeWarehouseReserveServiceImpl.java
+++ b/src/main/java/com/nanometer/smartlab/service/OpeWarehouseReserveServiceImpl.java
@@ -7,7 +7,9 @@
import javax.annotation.Resource;
import com.nanometer.smartlab.dao.OpeApplyDao;
+import com.nanometer.smartlab.dao.OpeReagentStatusDao;
import com.nanometer.smartlab.entity.*;
+import com.nanometer.smartlab.entity.enumtype.ValidFlag;
import com.nanometer.smartlab.exception.AlarmCode;
import com.nanometer.smartlab.exception.AlarmException;
import com.nanometer.smartlab.util.IDUtils;
@@ -54,6 +56,10 @@
@Resource(name="opeApplyDao")
private OpeApplyDao opeApplyDao;
+ @Resource
+ private OpeReagentStatusDao opeReagentStatusDao;
+ @Resource
+ private OpeLaboratoryReserveService opeLaboratoryReserveService;
@Transactional(propagation = Propagation.REQUIRED)
public List<OpeWarehouseReserve> getOpeWarehouseReserveList(String reagentId, String supplierId, Integer first,
@@ -88,13 +94,15 @@
@Transactional(propagation = Propagation.REQUIRED)
public List<OpeWarehouseReserve> getOpeWarehouseReserveListByName(String reagentId, String supplierId, Integer first,
- Integer pageSize) {
+ Integer pageSize,String productSn,String warehouseName) {
try {
Map<String, Object> params = new HashMap<String, Object>();
params.put("reagentName", reagentId);
params.put("supplierId", supplierId);
params.put("first", first);
params.put("pageSize", pageSize);
+ params.put("productSn", productSn);
+ params.put("warehouseName", warehouseName);
return this.opeWarehouseReserveDao.getOpeWarehouseReserveList(params);
} catch (DataAccessException e) {
logger.error(e.getMessage(), e);
@@ -104,11 +112,13 @@
}
@Transactional(propagation = Propagation.REQUIRED)
- public int getOpeWarehouseReserveTotalCountByName(String reagentId, String supplierId) {
+ public int getOpeWarehouseReserveTotalCountByName(String reagentId, String supplierId,String productSn,String warehouseName) {
try {
Map<String, Object> params = new HashMap<String, Object>();
params.put("reagentName", reagentId);
params.put("supplierId", supplierId);
+ params.put("productSn", productSn);
+ params.put("warehouseName", warehouseName);
return this.opeWarehouseReserveDao.getOpeWarehouseReserveTotalCount(params);
} catch (DataAccessException e) {
logger.error(e.getMessage(), e);
@@ -162,6 +172,17 @@
MessageUtil.getMessageByCode(ExceptionEnumCode.DB_ERR.getCode()), e);
}
}
+
+ @Override
+ public List<OpeWarehouseReserve> getOpeWarehouseReserveList(String reagentId, String articleNumber,String warehouseId) {
+ Map<String, String> params = new HashMap<>();
+ params.put("reagentId", reagentId);
+ params.put("warehouseId", warehouseId);
+ params.put("articleNumber", articleNumber);
+
+ return this.opeWarehouseReserveDao.getOpeWarehouseReserveList2(params);
+ }
+
@Transactional(propagation = Propagation.REQUIRED)
public OpeWarehouseReserve insertOpeWarehouseReserve(OpeWarehouseReserve opeWarehouseReserve) {
try {
@@ -205,7 +226,7 @@
}
@Transactional(propagation = Propagation.REQUIRED)
- public void claimForPerson(List<OpeApplyReserve> selectedListForPerson,String userId,String projectNum){
+ public void claimForPerson(List<OpeApplyReserve> selectedListForPerson,String userId,String projectNum,String laboratoryId,String laboratoryContainerId){
try{
for(OpeApplyReserve app:selectedListForPerson){
List<String> reagentCodes = app.getReagentCode();
@@ -216,9 +237,23 @@
opeReagentStatus.setUserId(userId);
opeReagentStatus.setProjectNum(projectNum);
//boolean flag = this.opeReagentStatusService.updateReagentStatus(opeReagentStatus);
- this.opeReagentStatusService.updateReagentStatus(opeReagentStatus);
+ this.opeReagentStatusService.updateReagentStatus3(opeReagentStatus);
ss.add(opeReagentStatus);
+ //更新试剂状态和
+ opeReagentStatus.setHouseId(laboratoryId);
+ opeReagentStatus.setContainerId(laboratoryContainerId);
+ this.opeReagentStatusDao.updateOpeReagentStatusDao(opeReagentStatus);
+
}
+ //更新是现实库存
+ OpeLaboratoryReserve lr=new OpeLaboratoryReserve();
+ lr.setReagentId(app.getReagent().getId());
+ lr.setHouseId(laboratoryId);
+ lr.setContainerId(laboratoryContainerId);
+ lr.setReserve(app.getSelectNum());
+ lr.setUserId(userId);
+ lr.setValidFlag(ValidFlag.VALID);
+ this.opeLaboratoryReserveService.insert(lr);
/*HashSet<String> set=new HashSet<>();//存放批号
for(int i=0;i<ss.size();i++){
set.add(ss.get(i).getArticleNumber());
@@ -325,7 +360,7 @@
for (int i = 0; i < len; i++) {
temp += "0";
}
- for (BigInteger i = startReagentCode; i.compareTo(endReagentCode) < 1; i = i.add(BigInteger.ONE)) {
+ for (BigInteger i = startReagentCode; i.compareTo(endReagentCode) < 1; i = i.add(BigInteger.ONE)) {
reagentCode = temp + String.valueOf(i);
if (this.opeReagentStatusService.isOpeReagentStatusExist(reagentCode)) {//条码存在
//throw new BusinessException(ExceptionEnumCode.REAGENT_CODE_EXIST, "入库试剂:" + opeApply.getReagent().getName() + "的试剂条形码[" + reagentCode + "]已存在。");
@@ -417,6 +452,135 @@
}
}
+ public void reagentDStore4(List<OpeApply> reagentDStoreList, String loginUserId){
+ if (reagentDStoreList == null) {
+ return;
+ }
+ OpeReagentStatus opeReagentStatus = null;
+ for (OpeApply opeApply : reagentDStoreList) {
+ List<String> codeList = opeApply.getReagentCodeList();
+ for (String reagentCode:codeList) {
+ if (this.opeReagentStatusService.isOpeReagentStatusExist(reagentCode)) {//条码存在
+ //throw new BusinessException(ExceptionEnumCode.REAGENT_CODE_EXIST, "入库试剂:" + opeApply.getReagent().getName() + "的试剂条形码[" + reagentCode + "]已存在。");
+ // 试剂最新状态update
+ opeReagentStatus=this.opeReagentStatusService.getOpeReagentStatusByReagentCode(reagentCode);
+ //opeReagentStatus = new OpeReagentStatus();
+ //opeReagentStatus.setId(id);
+ //opeReagentStatus.setReagentId(opeApply.getReagent().getId());
+ opeReagentStatus.setArticleNumber(opeApply.getArticleNumber());
+ opeReagentStatus.setReagentCode(reagentCode);
+ opeReagentStatus.setStatus(ArrivalStatus.NOREGISTER);
+ opeReagentStatus.setHouseId(opeApply.getHouseId());
+ opeReagentStatus.setContainerId(opeApply.getContainerId());
+ opeReagentStatus.setUserId(loginUserId);
+ //opeReagentStatus.setPlace(opeApply.getPlaceId());
+ //opeReagentStatus.setRemainder(opeApply.getReagent().getMainMetering()!=null?(new BigDecimal(opeApply.getReagent().getMainMetering())):new BigDecimal(0));
+ //opeReagentStatus.setStoreType(StoreType.DIRECTSTORE);
+ this.opeReagentStatusService.updateReagentStatus2(opeReagentStatus);
+
+ // 试剂使用情况领用insert
+ /*OpeUseFlow ouf=new OpeUseFlow();
+ ouf.setReagentCode(opeReagentStatus.getReagentCode());
+ ouf.setStatus(opeReagentStatus.getStatus());
+ ouf.setHouseId(opeReagentStatus.getHouseId());
+ ouf.setContainerId(opeReagentStatus.getContainerId());
+ ouf.setUserId(opeReagentStatus.getUserId());
+ ouf.setPlace(opeReagentStatus.getPlace());
+ ouf.setRemainder(opeApply.getReagent().getMainMetering()!=null?(new BigDecimal(opeApply.getReagent().getMainMetering())):new BigDecimal(0));
+ ouf.setStoreType(StoreType.DIRECTSTORE);
+
+ Map<String, String> metaMap2 = new HashMap<>();
+ metaMap2.put("groupId", "operate_status");
+ metaMap2.put("metaKey", String.valueOf(OperateStatus.WAREHOUSEOUT.getKey()));
+ List<BaseMeta> baseMetaList2 = baseMetaDao.getBaseMetaList(metaMap2);
+ ouf.setOperateState(baseMetaList2.get(0).getId());
+ this.opeUseFlowService.insertOpeUseFlow(ouf);*/
+ }else{//条码不存在
+ // 试剂最新状态insert
+ opeReagentStatus = new OpeReagentStatus();
+ opeReagentStatus.setReagentId(opeApply.getReagent().getId());
+ opeReagentStatus.setArticleNumber(opeApply.getArticleNumber());
+ opeReagentStatus.setReagentCode(reagentCode);
+ opeReagentStatus.setStatus(ArrivalStatus.NOREGISTER);
+ opeReagentStatus.setHouseId(opeApply.getHouseId());
+ opeReagentStatus.setContainerId(opeApply.getContainerId());
+ opeReagentStatus.setUserId(loginUserId);
+ //opeReagentStatus.setPlace(opeApply.getPlaceId());
+ //opeReagentStatus.setRemainder(opeApply.getReagent().getMainMetering()!=null?(new BigDecimal(opeApply.getReagent().getMainMetering())):new BigDecimal(0));
+ opeReagentStatus.setStoreType(StoreType.DIRECTSTORE);
+ this.opeReagentStatusService.insertOpeReagentStatus(opeReagentStatus);
+
+
+ // 试剂使用情况领用insert
+ OpeUseFlow ouf=new OpeUseFlow();
+ ouf.setReagentCode(opeReagentStatus.getReagentCode());
+ ouf.setStatus(opeReagentStatus.getStatus());
+ ouf.setHouseId(opeReagentStatus.getHouseId());
+ ouf.setContainerId(opeReagentStatus.getContainerId());
+ ouf.setUserId(opeReagentStatus.getUserId());
+ ouf.setPlace(opeReagentStatus.getPlace());
+ ouf.setRemainder(opeApply.getReagent().getMainMetering()!=null?opeApply.getReagent().getMainMetering():new BigDecimal(0));
+ ouf.setStoreType(StoreType.DIRECTSTORE);
+
+ Map<String, String> metaMap2 = new HashMap<>();
+ metaMap2.put("groupId", "operate_status");
+ metaMap2.put("metaKey", String.valueOf(OperateStatus.WAREHOUSEOUT.getKey()));
+ List<BaseMeta> baseMetaList2 = baseMetaDao.getBaseMetaList(metaMap2);
+ ouf.setOperateState(baseMetaList2.get(0).getId());
+ this.opeUseFlowService.insertOpeUseFlow(ouf);
+ }
+ }
+
+ }
+ }
+ public void reagentDStore3(List<OpeApply> reagentDStoreList, String loginUserId){
+ if (reagentDStoreList == null) {
+ return;
+ }
+ for (OpeApply opeApply : reagentDStoreList) {
+
+ for (String reagentCode:opeApply.getReagentCodeList()) {
+ if (this.opeReagentStatusService.isOpeReagentStatusExist(reagentCode)) {
+ //条码存在
+ throw new BusinessException(ExceptionEnumCode.REAGENT_CODE_EXIST, "入库试剂:" + opeApply.getReagent().getName() + "的试剂条形码[" + reagentCode + "]已存在。");
+
+ }else{
+ //条码不存在
+ // 试剂状态insert
+ OpeReagentStatus opeReagentStatus = new OpeReagentStatus();
+ opeReagentStatus.setReagentId(opeApply.getReagent().getId());
+ opeReagentStatus.setArticleNumber(opeApply.getArticleNumber());
+ opeReagentStatus.setReagentCode(reagentCode);
+ opeReagentStatus.setStatus(ArrivalStatus.NOREGISTER);
+ opeReagentStatus.setHouseId(opeApply.getHouseId());
+ opeReagentStatus.setContainerId(opeApply.getContainerId());
+ opeReagentStatus.setUserId(loginUserId);
+ opeReagentStatus.setStoreType(StoreType.DIRECTSTORE);
+ this.opeReagentStatusService.insertOpeReagentStatus(opeReagentStatus);
+
+
+ // 试剂使用情况领用insert
+ OpeUseFlow ouf=new OpeUseFlow();
+ ouf.setReagentCode(opeReagentStatus.getReagentCode());
+ ouf.setStatus(opeReagentStatus.getStatus());
+ ouf.setHouseId(opeReagentStatus.getHouseId());
+ ouf.setContainerId(opeReagentStatus.getContainerId());
+ ouf.setUserId(opeReagentStatus.getUserId());
+ ouf.setPlace(opeReagentStatus.getPlace());
+ ouf.setRemainder(opeApply.getReagent().getMainMetering()!=null?opeApply.getReagent().getMainMetering():new BigDecimal(0));
+ ouf.setStoreType(StoreType.DIRECTSTORE);
+
+ Map<String, String> metaMap2 = new HashMap<>();
+ metaMap2.put("groupId", "operate_status");
+ metaMap2.put("metaKey", String.valueOf(OperateStatus.WAREHOUSEOUT.getKey()));
+ List<BaseMeta> baseMetaList2 = baseMetaDao.getBaseMetaList(metaMap2);
+ ouf.setOperateState(baseMetaList2.get(0).getId());
+ this.opeUseFlowService.insertOpeUseFlow(ouf);
+ }
+ }
+
+ }
+ }
@Override
public List<OpeWarehouseReserve> selectByReId(String id) {
return this.opeWarehouseReserveDao.selectByReId(id);
@@ -428,6 +592,158 @@
params.put("newReId",newReId);
params.put("oldReId",oldReId);
this.opeWarehouseReserveDao.updateByReId(params);
+ }
+
+ @Override
+ @Transactional
+ public void insertOpeWarehouseReserve2(OpeApplyReserve opeApplyReserve, OpeOrder oo) {
+
+ OpeWarehouseReserve ope = this.opeWarehouseReserveService
+ .getOpeWarehouseReserve2(opeApplyReserve.getReagent().getId(), opeApplyReserve.getArticleNumber(),opeApplyReserve.getHouseId());
+ if (ope == null) {
+
+ ope = new OpeWarehouseReserve();
+ //库存为到货数量
+ ope.setReserve(opeApplyReserve.getArrivalNum());
+ //仓库
+ ope.setWarehouseId(opeApplyReserve.getHouseId());
+ //仓库的货柜号
+ ope.setContainerId(opeApplyReserve.getContainerId());
+ //试剂
+ ope.setReagentId(opeApplyReserve.getReagent().getId());
+ //订单编号
+ ope.setOrderCode(oo.getOrderCode());
+ // 申购编号
+ ope.setApplyCode(opeApplyReserve.getApplyCode());
+ //批号
+ ope.setArticleNumber(opeApplyReserve.getArticleNumber());
+ ope.setId(IDUtils.uuid());
+ opeWarehouseReserveDao.insertOpeWarehouseReserve2(ope);
+ }else {
+ ope.setReserve(ope.getReserve() + opeApplyReserve.getArrivalNum());
+ this.opeWarehouseReserveService.updateOpeWarehouseReserve(ope);
+ }
+
+
+
+
+ }
+
+ @Override
+ public List<OpeWarehouseReserve> selectWarehouseByReagentIdAndArticleNumber(String id,String articleNumber,boolean flag) {
+ Map<String, String> params = new HashMap<>();
+ params.put("reagentId", id);
+ params.put("articleNumber", articleNumber);
+ List<OpeWarehouseReserve> reserveList = opeWarehouseReserveDao.selectWarehouseByReagentIdAndArticleNumber(params);
+ //减去 每个仓库中的试剂有条码的个数
+ //count(reagent_id,warehouseId,1)
+ if (reserveList.size() > 0) {
+ for (OpeWarehouseReserve owr : reserveList) {
+ //根据批次号 仓库名和试剂 得到在仓库有条码的试剂总数
+ if (flag) {
+ int numOfReagentHasCode = opeReagentStatusService.getReagentNumInWarehouse(id, articleNumber, owr.getWarehouseId());
+ //仓库显示 可以补贴条码的试剂总数
+ owr.setReserve(owr.getReserve()-numOfReagentHasCode);
+ }
+ }
+ }
+ return reserveList;
+ }
+ /**
+ * 补贴扣库存去除有条码的数据
+ */
+ public List<OpeWarehouseReserve> selectWarehouseByRidAndArticleNumberAndWarehouse(String id,String articleNumber,String warehouseId) {
+ Map<String, String> params = new HashMap<>();
+ params.put("reagentId", id);
+ params.put("articleNumber", articleNumber);
+ params.put("warehouseId", warehouseId);
+ List<OpeWarehouseReserve> reserveList = opeWarehouseReserveDao.selectWarehouseByRidAndArtiNumberAndWid(params);
+ //减去 每个仓库中的试剂有条码的个数
+ //count(reagent_id,warehouseId,1)
+ if (reserveList.size() > 0) {
+ for (OpeWarehouseReserve owr : reserveList) {
+ //根据批次号 仓库名和试剂 得到在仓库有条码的试剂总数
+ int numOfReagentHasCode = opeReagentStatusService.getReagentNumInWarehouse(id, owr.getArticleNumber(), owr.getWarehouseId());
+ //仓库显示 可以补贴条码的试剂总数
+ owr.setReserve(owr.getReserve()-numOfReagentHasCode);
+ }
+ }
+ return reserveList;
+ }
+
+ @Override
+ public void updateBtReserve(String id, Integer useNum) {
+ opeWarehouseReserveDao.updateBtReserve(id, useNum);
+ }
+
+ @Override
+ public void btWarehouseReserveReduce(List<OpeApplyReserve> opeList,String userId) {
+ if (opeList.size() < 1) {
+ return;
+ }
+ for (OpeApplyReserve oar : opeList) {
+ String reagentId = oar.getReagent().getId();
+ List<String> reagentCodes = new ArrayList<>(oar.getReagentCode());
+ //开始库存扣除
+ List<OpeWarehouseReserve> cacheUpdateList = oar.getCacheUpdateList();
+ for (OpeWarehouseReserve owr : cacheUpdateList) {
+ //1.根据仓库id和试剂id搜索不同批号的试剂库存
+ List<OpeWarehouseReserve> reserveList = opeWarehouseReserveService
+ .selectWarehouseByRidAndArticleNumberAndWarehouse(reagentId, owr.getArticleNumber(), owr.getWarehouseId());
+ Integer numLeave = owr.getUseNum();
+
+ for (OpeWarehouseReserve warehouseReserve:reserveList){
+ //库存大于剩余领用-》直接扣完
+ int usedNum = 0;
+ if (warehouseReserve.getReserve() > numLeave) {
+ // warehouseReserve.setReserve(warehouseReserve.getReserve() - numLeave);
+ usedNum = numLeave;
+ numLeave = 0;
+ } else {
+ numLeave = numLeave - warehouseReserve.getReserve();
+ // warehouseReserve.setReserve(0);
+ usedNum = warehouseReserve.getReserve();
+ }
+
+ //更新流向,加入一条
+ if (usedNum > 0) {
+ for (int i = 0; i < usedNum; i++) {
+ // 试剂使用情况入库insert TODO 流向需要当时的时间和地点
+ OpeUseFlow opeUseFlow = new OpeUseFlow();
+ opeUseFlow.setReagentCode(reagentCodes.get(0));
+ opeUseFlow.setStatus(ArrivalStatus.WAREHOUSE);
+ opeUseFlow.setUserId(userId);
+ //仓库地点
+ opeUseFlow.setHouseId(warehouseReserve.getWarehouseId());
+ opeUseFlow.setContainerId(warehouseReserve.getContainerId());
+ opeUseFlow.setRemainder(oar.getReagent().getMainMetering()!=null?oar.getReagent().getMainMetering():new BigDecimal(0));
+ //入库时间
+ opeUseFlow.setCreateTime(warehouseReserve.getUpdateTime());
+ opeUseFlow.setStoreType(StoreType.DIRECTSTORE);
+
+ Map<String, String> metaMap = new HashMap<>();
+ metaMap.put("groupId", "operate_status");
+ metaMap.put("metaKey", String.valueOf(OperateStatus.WAREHOUSEIN.getKey()));
+ List<BaseMeta> baseMetaList = baseMetaDao.getBaseMetaList(metaMap);
+ opeUseFlow.setOperateState(baseMetaList.get(0).getId());
+ this.opeUseFlowService.insertOpeUseFlow(opeUseFlow);
+ reagentCodes.remove(0);
+ }
+
+ }
+
+
+ //更新库存
+ opeWarehouseReserveService.updateBtReserve(warehouseReserve.getId(),usedNum);
+ if (numLeave < 1) {
+ break;
+ }
+ }
+
+
+
+ }
+ }
}
@Transactional(propagation = Propagation.REQUIRED)
@@ -512,6 +828,7 @@
opeWarehouseReserve.setArticleNumber(opeApply.getArticleNumber());
opeWarehouseReserve.setReserve(0);
opeWarehouseReserve.setWarehouseId(opeApply.getHouseId());
+ opeWarehouseReserve.setContainerId(opeApply.getContainerId());
}
opeWarehouseReserve.setReserve(opeWarehouseReserve.getReserve() + opeApply.getArrivalNum());
if (StringUtils.isBlank(opeWarehouseReserve.getId())) {
--
Gitblit v1.9.2