From c3510da29a7974c6af7ff3de1ade3db429d6f848 Mon Sep 17 00:00:00 2001 From: 李宇 <986321569@qq.com> Date: 星期三, 18 八月 2021 14:27:59 +0800 Subject: [PATCH] 申购管理申请履历显示所有历史单据,提交时如有无效试剂耗材报错 --- src/main/java/com/nanometer/smartlab/service/OpeUseFlowServiceImpl.java | 399 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 389 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/nanometer/smartlab/service/OpeUseFlowServiceImpl.java b/src/main/java/com/nanometer/smartlab/service/OpeUseFlowServiceImpl.java index 12d1e8b..5092e03 100644 --- a/src/main/java/com/nanometer/smartlab/service/OpeUseFlowServiceImpl.java +++ b/src/main/java/com/nanometer/smartlab/service/OpeUseFlowServiceImpl.java @@ -1,20 +1,19 @@ package com.nanometer.smartlab.service; import java.math.BigDecimal; -import java.sql.Time; import java.sql.Timestamp; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; import javax.annotation.Resource; -import javax.ejb.EJB; -import com.nanometer.smartlab.dao.SysLaboratoryContainerDao; -import com.nanometer.smartlab.dao.SysWarehouseContainerDao; +import com.nanometer.smartlab.dao.*; import com.nanometer.smartlab.entity.*; +import com.nanometer.smartlab.entity.dto.PersonUseDetail; +import com.nanometer.smartlab.entity.enumtype.OperateStatus; import com.nanometer.smartlab.util.Constants; -import com.nanometer.smartlab.util.Utils; +import com.nanometer.smartlab.util.ExcelUtils; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang3.time.DateUtils; import org.apache.log4j.Logger; @@ -25,7 +24,6 @@ import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; -import com.nanometer.smartlab.dao.OpeUseFlowDao; import com.nanometer.smartlab.entity.enumtype.ArrivalStatus; import com.nanometer.smartlab.entity.enumtype.SeeFlag; import com.nanometer.smartlab.exception.AlarmCode; @@ -53,6 +51,14 @@ @Resource private SysUserService sysUserService; + @Resource + private OpeReagentStatusService opeReagentStatusService; + @Resource + private SysReagentService sysReagentService; + @Resource + private BaseMetaDao baseMetaDao; + @Resource + private OpeReagentStatusDao opeReagentStatusDao; @Transactional(propagation = Propagation.REQUIRED) @@ -63,7 +69,7 @@ } if(opeUseFlow.getCreateTime()==null){ - opeUseFlow.setCreateTime(new Timestamp(System.currentTimeMillis())); + opeUseFlow.setCreateTime(new Timestamp(System.currentTimeMillis()+1000)); } this.opeUseFlowDao.insertOpeUseFlow(opeUseFlow); @@ -128,8 +134,8 @@ } @Transactional(propagation = Propagation.REQUIRED) - public List<OpeUseFlow> getOpeUseFlowListByName(String houseName,String reagentId, String reagentCode, Integer status, String userId, - Date startDate,Date endDate,Integer first, Integer pageSize) { + public List<OpeUseFlow> getOpeUseFlowListByName(String houseName,String reagentId, String reagentCode,String containerCode, Integer status, String userId, + Date startDate,Date endDate,Integer first, Integer pageSize,String operatestate) { try { Map<String, Object> params = new HashMap<String, Object>(); @@ -168,6 +174,8 @@ params.put("status", status); params.put("houseName", houseName); + params.put("operatestate", operatestate); + params.put("containerCode", containerCode); addParamByUserId(userId, params); params.put("first", first); @@ -181,7 +189,7 @@ } @Transactional(propagation = Propagation.REQUIRED) - public int getOpeUseFlowTotalCountByName(String houseName,String reagentId, String reagentCode, Integer status, String userId,Date startDate,Date endDate) { + public int getOpeUseFlowTotalCountByName(String houseName,String reagentId, String reagentCode,String containerCode, Integer status, String userId,Date startDate,Date endDate,String operatestate) { try { Map<String, Object> params = new HashMap<String, Object>(); params.put("reagentName", reagentId); @@ -218,7 +226,9 @@ params.put("endDate",sdfend.format(now)); } + params.put("operatestate", operatestate); params.put("houseName", houseName); + params.put("containerCode", containerCode); addParamByUserId(userId, params); params.put("status", status); @@ -357,4 +367,373 @@ params.put("status",-1); opeUseFlowDao.updateTimeByCode(params); } + + @Override + public OpeUseFlow getOpeUseFlowByCode(String reagentCode) { + return opeUseFlowDao.getOpeUseFlowByCode(reagentCode); + } + + @Override + public void updateReceiptNumber(String code, String receiptNumber) { + opeUseFlowDao.updateReceiptNumber(code, receiptNumber); + } + + @Transactional + public void updateReceiptNumberByCode(List<OpeApplyReserve> selectedTmpOrderList,String receiptNumber) { + + for (OpeApplyReserve oar : selectedTmpOrderList) { + if (oar.getFlag() == 1) { + //库中领取 code存的是 试剂状态的id + for (String statusId : oar.getReagentCode()) { + String code = opeReagentStatusService.getOpeReagentStatus(statusId).getReagentCode(); + //此时状态为领用待入库 + this.updateReceiptNumber(code, receiptNumber); + } + }else{ + //根据id或者试剂的条码直接查找 状态表单 查询订单所有的流向 + List<String> codeTmp = opeReagentStatusService + .generateReagentCode(oar.getStartReagentCode2(), oar.getEndReagentCode2()); + for (String code : codeTmp) { + this.updateReceiptNumber(code, receiptNumber); + } + } + + } + + + } + + @Override + public Map<String, Integer> getRegentInfoFromReceiptNumber(String receiptNumber) { + List<Map> maps = opeUseFlowDao.getRegentInfoFromReceiptNumber(receiptNumber); + if (maps.size() > 0) { + Map<String, Integer> printInfo = new HashMap<>(); + for (Map map : maps) { + Integer count =Integer.parseInt(String.valueOf(map.get("count")));; + String reagentId = (String) map.get("reagentId"); + SysReagent reagent = sysReagentService.getSysReagent(reagentId); + printInfo.put(reagent.getId(), count); + } + return printInfo; + } + + return null; + } + + @Override + public Map getApplyUserByReagentCode(String reagentCode) { + + 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); + String id = baseMetaList2.get(0).getId(); + return opeUseFlowDao.getUserIdByReagentCode(reagentCode, id); + } + + @Override + public void updateReceiptNumberByCode2(List<OpeWarehouseReserve> selectTmpList, String receiptNumber) { + for (OpeWarehouseReserve owr : selectTmpList) { + if (owr.getFlag() == 1) { + //库中领取 code存的是 试剂状态的id + for (String statusId : owr.getReagentCodes()) { + String code = opeReagentStatusService.getOpeReagentStatus(statusId).getReagentCode(); + //此时状态为领用待入库 + this.updateReceiptNumber(code, receiptNumber); + } + }else{ + //根据id或者试剂的条码直接查找 状态表单 查询订单所有的流向 + List<String> codeTmp = opeReagentStatusService + .generateReagentCode(owr.getStartReagentCode2(), owr.getEndReagentCode2()); + for (String code : codeTmp) { + this.updateReceiptNumber(code, receiptNumber); + } + } + + } + + } + + @Override + public int getPersonalUseInfoCount(String reagentCode,String userId, Date startDate, Date endDate, String receiptNumber, + String department, String project,String applyPerson,String reagentName) { + Map<String,Object> params = new HashMap<>(); + + SimpleDateFormat sdfstart = new SimpleDateFormat("yyyy-MM-dd 00:00:00"); + SimpleDateFormat sdfend = new SimpleDateFormat("yyyy-MM-dd 23:59:59"); + Date now = new Date(); + Calendar cal = Calendar.getInstance(); + cal.setTime(now); + cal.add(Calendar.DATE, -7); + Date startTime = cal.getTime(); + + if (null != startDate){ + try { + params.put("startTime",sdfstart.format(startDate)); + }catch (Exception e){ + e.printStackTrace(); + } + }else { + params.put("startTime",sdfstart.format(startTime)); + } + + if (null != endDate){ + try { + params.put("endTime",sdfend.format(endDate)); + }catch (Exception e){ + e.printStackTrace(); + } + }else { + params.put("endTime",sdfend.format(now)); + } + + params.put("userId", userId); + params.put("receiptNumber", receiptNumber); + params.put("department", department); + params.put("project", project); + params.put("reagentCode", reagentCode); + params.put("applyPerson", applyPerson); + if (StringUtils.isNotBlank(reagentName)) { + //根据试剂名获取单号 + + } + params.put("reagentName", reagentName); + //操作状态位仓库领取 + Map<String, String> metaMap2 = new HashMap<>(); + metaMap2.put("groupId", "operate_status"); + metaMap2.put("metaKey", String.valueOf(OperateStatus.WAREHOUSEOUT.getKey())); + List<BaseMeta> baseMetas = baseMetaDao.getBaseMetaList(metaMap2); + params.put("operatestate", baseMetas.get(0).getId()); + + metaMap2.put("metaKey", String.valueOf(OperateStatus.TRANSFER.getKey())); + List<BaseMeta> baseMetas1 = baseMetaDao.getBaseMetaList(metaMap2); + params.put("operatestate1", baseMetas1.get(0).getId()); + + addParamByUserId(userId, params); + return opeUseFlowDao.countPersonalUseInfo(params); + } + + @Override + public List<OpeUseFlow> getPersonalUseInfoList(String reagentCode,String userId, Date startDate, Date endDate, String receiptNumber, + String department, String project,String applyPerson,String reagentName, int first, int pageSize) { + Map<String, Object> params = new HashMap<>(); + SimpleDateFormat sdfstart = new SimpleDateFormat("yyyy-MM-dd 00:00:00"); + SimpleDateFormat sdfend = new SimpleDateFormat("yyyy-MM-dd 23:59:59"); + Date now = new Date(); + Calendar cal = Calendar.getInstance(); + cal.setTime(now); + cal.add(Calendar.DATE, -7); + Date startTime = cal.getTime(); + if (null != startDate){ + try { + params.put("startTime",sdfstart.format(startDate)); + }catch (Exception e){ + e.printStackTrace(); + } + }else { + params.put("startTime",sdfstart.format(startTime)); + } + if (null != endDate){ + try { + params.put("endTime",sdfend.format(endDate)); + }catch (Exception e){ + e.printStackTrace(); + } + }else { + params.put("endTime",sdfend.format(now)); + } + params.put("userId", userId); + params.put("receiptNumber", receiptNumber); + params.put("department", department); + params.put("project", project); + params.put("reagentCode", reagentCode); + params.put("applyPerson", applyPerson); + params.put("reagentName", reagentName); + //操作状态位仓库领取 + Map<String, String> metaMap2 = new HashMap<>(); + metaMap2.put("groupId", "operate_status"); + metaMap2.put("metaKey", String.valueOf(OperateStatus.WAREHOUSEOUT.getKey())); + List<BaseMeta> baseMetas = baseMetaDao.getBaseMetaList(metaMap2); + params.put("operatestate", baseMetas.get(0).getId()); + + metaMap2.put("metaKey", String.valueOf(OperateStatus.TRANSFER.getKey())); + List<BaseMeta> baseMetas1 = baseMetaDao.getBaseMetaList(metaMap2); + params.put("operatestate1", baseMetas1.get(0).getId()); + + params.put("first", first); + params.put("pageSize", pageSize); + + addParamByUserId(userId, params); + return opeUseFlowDao.selectPersonalUseInfo(params); + } + + @Override + public List<PersonUseDetail> getApplyInfo(String receiptNumber) { + Map<String,Object> params = new HashMap<>(); + Map<String, String> metaMap2 = new HashMap<>(); + metaMap2.put("groupId", "operate_status"); + metaMap2.put("metaKey", String.valueOf(OperateStatus.WAREHOUSEOUT.getKey())); + List<BaseMeta> baseMetas = baseMetaDao.getBaseMetaList(metaMap2); + params.put("operatestate", baseMetas.get(0).getId()); + + metaMap2.put("metaKey", String.valueOf(OperateStatus.TRANSFER.getKey())); + List<BaseMeta> baseMetas1 = baseMetaDao.getBaseMetaList(metaMap2); + params.put("operatestate1", baseMetas1.get(0).getId()); + + params.put("receiptNumber", receiptNumber); + + return opeUseFlowDao.getApplyInfo(params); + + } + + + @Override + public int getApplyInfoSize(String receiptNumber) { + Map<String,Object> params = new HashMap<>(); + Map<String, String> metaMap2 = new HashMap<>(); + metaMap2.put("groupId", "operate_status"); + metaMap2.put("metaKey", String.valueOf(OperateStatus.WAREHOUSEOUT.getKey())); + List<BaseMeta> baseMetas = baseMetaDao.getBaseMetaList(metaMap2); + params.put("operatestate", baseMetas.get(0).getId()); + + metaMap2.put("metaKey", String.valueOf(OperateStatus.TRANSFER.getKey())); + List<BaseMeta> baseMetas1 = baseMetaDao.getBaseMetaList(metaMap2); + params.put("operatestate1", baseMetas1.get(0).getId()); + + params.put("receiptNumber", receiptNumber); + + return opeUseFlowDao.getApplyInfoSize(params); + + } + + @Override + public int getOpeUseFlow(OpeUseFlow opeUseFlow) { + return opeUseFlowDao.countOpeUseFlow(opeUseFlow); + } + + @Override + @Transactional + public void scrapReagent(String reagentId,String reagentCode, String userId) { + //1.试剂状态表更新试剂状态为报废 + OpeReagentStatus status = opeReagentStatusService.getStatus(reagentId, reagentCode); + if (status.getStatus() == ArrivalStatus.SCRAP) { + throw new BusinessException(ExceptionEnumCode.PARAM_ERR,"该试剂已是报废状态,无法进行操作"); + } + //报废 + status.setStatus(ArrivalStatus.SCRAP); + status.setUserId(userId); + opeReagentStatusDao.updateOpeReagentStatusDao(status); + + //2.插入一条报废的流向记录 + OpeUseFlow useFlow = new OpeUseFlow(); + //获取报废状态id + Map<String, Object> params = new HashMap<>(); + params.put("groupId", "operate_status"); + params.put("metaKey", String.valueOf(OperateStatus.SCRAP.getKey())); + List<BaseMeta> baseMetas = baseMetaDao.getBaseMetaList(params); + useFlow.setOperateState(baseMetas.get(0).getId()); + useFlow.setReagentCode(reagentCode); + useFlow.setContainerId(status.getContainerId()); + useFlow.setHouseId(status.getHouseId()); + useFlow.setUserId(userId); + useFlow.setPlace(status.getPlace()); + useFlow.setRemainder(status.getRemainder()); + useFlow.setStoreType(status.getStoreType()); + useFlow.setProject(status.getProjectNum()); + useFlow.setArticleNumber(status.getArticleNumber()); + + useFlow.setCreateTime(new Timestamp(new Date().getTime())); + useFlow.setId(IDUtils.uuid()); + opeUseFlowDao.insertOpeUseFlow(useFlow); + + } + + @Override + public OpeUseFlow selectById(String id) { + return opeUseFlowDao.selectById(id); + } + + @Override + public OpeUseFlow selectByReceiptNumber(String receiptNumber,String userId) { + + Map<String, Object> params = new HashMap<>(); + params.put("userId", userId); + params.put("receiptNumber", receiptNumber); + //操作状态位仓库领取 + Map<String, String> metaMap2 = new HashMap<>(); + metaMap2.put("groupId", "operate_status"); + metaMap2.put("metaKey", String.valueOf(OperateStatus.WAREHOUSEOUT.getKey())); + List<BaseMeta> baseMetas = baseMetaDao.getBaseMetaList(metaMap2); + params.put("operatestate", baseMetas.get(0).getId()); + + metaMap2.put("metaKey", String.valueOf(OperateStatus.TRANSFER.getKey())); + List<BaseMeta> baseMetas1 = baseMetaDao.getBaseMetaList(metaMap2); + params.put("operatestate1", baseMetas1.get(0).getId()); + + addParamByUserId(userId, params); + + return opeUseFlowDao.selectByReceiptNumber(params); + } + + @Override + public List<Map> selectAll(String houseName, String reagentId, String reagentCode, String containerCode, String userId, Date startDate, Date endDate) { + try { + Map<String, Object> params = new HashMap<String, Object>(); + + params.put("reagentName", reagentId); + if (StringUtils.isNotBlank(reagentCode)) { + params.put("reagentCode", "%" + reagentCode + "%"); + } + SimpleDateFormat sdfstart = new SimpleDateFormat("yyyy-MM-dd 00:00:00"); + SimpleDateFormat sdfend = new SimpleDateFormat("yyyy-MM-dd 23:59:59"); + Date now = new Date(); + Calendar cal = Calendar.getInstance(); + cal.setTime(now); + cal.add(Calendar.DATE, -7); + Date startTime = cal.getTime(); + + if (null != startDate){ + try { + params.put("startDate",sdfstart.format(startDate)); + }catch (Exception e){ + e.printStackTrace(); + } + }else { + params.put("startDate",sdfstart.format(startTime)); + } + if (null != endDate){ + try { + params.put("endDate",sdfend.format(endDate)); + }catch (Exception e){ + e.printStackTrace(); + } + }else { + params.put("endDate",sdfend.format(now)); + } + params.put("houseName", houseName); + params.put("containerCode", containerCode); + addParamByUserId(userId, params); + return opeUseFlowDao.selectAll(params); + } catch (DataAccessException e) { + logger.error(e.getMessage(), e); + throw new BusinessException(ExceptionEnumCode.DB_ERR, + MessageUtil.getMessageByCode(ExceptionEnumCode.DB_ERR.getCode()), e); + } + } + + @Override + public boolean export2Excel(List<Map> list) throws Exception { + Map<String,String> map = new LinkedHashMap<>(); + map.put("reagentCode", "试剂条形码"); + map.put("reagentName", "试剂名称"); + map.put("laboratoryContainerCode", "柜号"); + map.put("operatestateName", "操作状态"); + map.put("remainder", "残存量"); + map.put("userName", "持有者"); + map.put("createTime", "更新时间"); + map.put("warehouseContainerName", "场所名"); + ExcelUtils.export2Excel(list,"试剂流向追踪列表",map); + return true; + } + } -- Gitblit v1.9.2