From 24a5d5638b40a6921f24fd01997db64237c6b653 Mon Sep 17 00:00:00 2001 From: gdg <764716047@qq.com> Date: 星期一, 28 十二月 2020 08:55:41 +0800 Subject: [PATCH] 1.替换字典 和数据字典同步 2.入库 --- src/main/webapp/warehouse_reagent_use.xhtml | 2 src/main/java/com/nanometer/smartlab/service/EncodeReplaceDictServiceImpl.java | 8 + src/main/java/com/nanometer/smartlab/service/SysWarehouseServiceImpl.java | 135 ++++++++++++++++++++++++++ src/main/java/com/nanometer/smartlab/service/SysWarehouseService.java | 2 src/main/java/com/nanometer/smartlab/dao/SysReagentDao.xml | 22 ++++ src/main/java/com/nanometer/smartlab/dao/BaseMetaDao.xml | 17 +++ src/main/java/com/nanometer/smartlab/controller/EncodeReplaceDictController.java | 27 +++++ src/main/java/com/nanometer/smartlab/service/EncodeReplaceDictService.java | 4 src/main/java/com/nanometer/smartlab/service/SysReagentService.java | 2 src/main/java/com/nanometer/smartlab/api/ApiAction.java | 25 ++++ src/main/java/com/nanometer/smartlab/dao/SysReagentDao.java | 2 src/main/java/com/nanometer/smartlab/service/BaseMetaService.java | 2 src/main/java/com/nanometer/smartlab/service/BaseMetaServiceImpl.java | 5 + src/main/java/com/nanometer/smartlab/dao/BaseMetaDao.java | 3 src/main/java/com/nanometer/smartlab/service/SysReagentServiceImpl.java | 11 ++ 15 files changed, 260 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/nanometer/smartlab/api/ApiAction.java b/src/main/java/com/nanometer/smartlab/api/ApiAction.java index eba9df5..53318c8 100644 --- a/src/main/java/com/nanometer/smartlab/api/ApiAction.java +++ b/src/main/java/com/nanometer/smartlab/api/ApiAction.java @@ -10,7 +10,7 @@ import com.nanometer.smartlab.dao.SysLaboratoryContainerDao; import com.nanometer.smartlab.dao.SysWarehouseContainerDao; import com.nanometer.smartlab.entity.*; -import com.nanometer.smartlab.entity.SysWarning; +import com.nanometer.smartlab.entity.dto.InWarehouseInfoDto; import com.nanometer.smartlab.entity.dto.SysWarehouseDto; import com.nanometer.smartlab.entity.enumtype.ApiStatus; import com.nanometer.smartlab.entity.enumtype.ReplaceDictType; @@ -1265,5 +1265,28 @@ } + /** + * @Description: 入库 + * @date 2020/12/24 14:19 + */ + @ResponseBody + @RequestMapping("putInStorage") + public Object putInWarehouse(@RequestBody InWarehouseInfoDto inWarehouseInfo) { + try { + + if (inWarehouseInfo.getReagentCode() != null && inWarehouseInfo.getReagentCode().size() > 0) { + sysWarehouseService.putInWarehouse(inWarehouseInfo); + return ResponseModel.getOkInstence("入库成功"); + } else { + return ResponseModel.getErrInstance("无试剂条码"); + } + } catch (Exception e) { + e.printStackTrace(); + logger.info(e); + return ResponseModel.getErrInstance("系统出错"); + } + + } + } diff --git a/src/main/java/com/nanometer/smartlab/controller/EncodeReplaceDictController.java b/src/main/java/com/nanometer/smartlab/controller/EncodeReplaceDictController.java index 2949efb..b23aaf7 100644 --- a/src/main/java/com/nanometer/smartlab/controller/EncodeReplaceDictController.java +++ b/src/main/java/com/nanometer/smartlab/controller/EncodeReplaceDictController.java @@ -1,8 +1,11 @@ package com.nanometer.smartlab.controller; +import com.nanometer.smartlab.entity.BaseMeta; import com.nanometer.smartlab.entity.EncodeReplaceDict; import com.nanometer.smartlab.entity.SysUser; import com.nanometer.smartlab.entity.enumtype.ReplaceDictType; +import com.nanometer.smartlab.entity.enumtype.ValidFlag; +import com.nanometer.smartlab.service.BaseMetaService; import com.nanometer.smartlab.service.EncodeReplaceDictService; import com.nanometer.smartlab.util.FacesUtils; import org.apache.log4j.Logger; @@ -23,6 +26,8 @@ @Resource private EncodeReplaceDictService encodeReplaceDictService; + @Resource + private BaseMetaService baseMetaService; private LazyDataModel<EncodeReplaceDict> dataModel; @@ -99,6 +104,10 @@ FacesUtils.warn("请选择数据"); } else { encodeReplaceDictService.deleteOne(selectOne.getId()); + ReplaceDictType type = selectOne.getType(); + String groupId = "encode_replace_" + type.getKey(); + BaseMeta baseMeta = baseMetaService.getBaseMeta(groupId, selectOne.getNumber(),null); + baseMetaService.deleteBaseMeta(Collections.singletonList(baseMeta.getId())); FacesUtils.info("删除成功"); } } @@ -113,10 +122,28 @@ encodeReplaceDictService.checkAddOne(encodeReplaceDict); encodeReplaceDictService.addOne(encodeReplaceDict, getUser()); + BaseMeta baseMeta = new BaseMeta(); + baseMeta.setMetaKey(encodeReplaceDict.getNumber()); + baseMeta.setMetaValue(encodeReplaceDict.getInfo()); + ReplaceDictType type = encodeReplaceDict.getType(); + String groupId = "encode_replace_" + type.getKey(); + baseMeta.setGroupId(groupId); + baseMetaService.insertBaseMeta(baseMeta); + } else { //更新 //校验实体 encodeReplaceDictService.checkUpdateOne(encodeReplaceDict); + //更新前拿出baseMeta + EncodeReplaceDict originData = encodeReplaceDictService.getOne(encodeReplaceDict.getId()); + ReplaceDictType type = originData.getType(); + String groupId = "encode_replace_" + type.getKey(); + BaseMeta baseMeta = baseMetaService.getBaseMeta(groupId, originData.getNumber(),null); + baseMeta.setMetaKey(encodeReplaceDict.getNumber()); + baseMeta.setMetaValue(encodeReplaceDict.getInfo()); + baseMeta.setGroupId("encode_replace_" + encodeReplaceDict.getType().getKey()); + baseMeta.setValidFlag(ValidFlag.VALID); + baseMetaService.updateBaseMeta(baseMeta); encodeReplaceDictService.updateOne(encodeReplaceDict); } diff --git a/src/main/java/com/nanometer/smartlab/dao/BaseMetaDao.java b/src/main/java/com/nanometer/smartlab/dao/BaseMetaDao.java index 63a94c7..4a01f06 100644 --- a/src/main/java/com/nanometer/smartlab/dao/BaseMetaDao.java +++ b/src/main/java/com/nanometer/smartlab/dao/BaseMetaDao.java @@ -1,6 +1,7 @@ package com.nanometer.smartlab.dao; import com.nanometer.smartlab.entity.BaseMeta; +import org.apache.ibatis.annotations.Param; import org.springframework.dao.DataAccessException; import java.util.List; @@ -20,4 +21,6 @@ public int deleteBaseMeta(String id) throws DataAccessException; public int deleteBaseMetas(List<String> ids) throws DataAccessException; public List<BaseMeta> getAllBaseMeta() throws DataAccessException; + + BaseMeta selectBaseMeta(@Param("groupId") String groupId, @Param("key")String key,@Param("value") String value); } diff --git a/src/main/java/com/nanometer/smartlab/dao/BaseMetaDao.xml b/src/main/java/com/nanometer/smartlab/dao/BaseMetaDao.xml index b69671e..88b4780 100644 --- a/src/main/java/com/nanometer/smartlab/dao/BaseMetaDao.xml +++ b/src/main/java/com/nanometer/smartlab/dao/BaseMetaDao.xml @@ -55,8 +55,23 @@ where valid_flag = 1 <include refid="queryWhereSql"/> </select> + <select id="selectBaseMeta" resultMap="BaseMeta"> + select * from base_meta + where + 1= 1 + <if test="groupId != null and groupId != ''"> + and group_id = #{groupId} + </if> + <if test="key != null and key != ''"> + and meta_key = #{key} + </if> + <if test="value != null and value != ''"> + and meta_value = #{value} + </if> + limit 1 + </select> - <insert id="insertBaseMeta" parameterType="com.nanometer.smartlab.entity.BaseMeta"> + <insert id="insertBaseMeta" parameterType="com.nanometer.smartlab.entity.BaseMeta"> insert into base_meta(id, group_id, meta_key, meta_value, order_index, memo, create_time, update_time, valid_flag) values (#{id}, #{groupId}, #{metaKey}, #{metaValue}, #{orderIndex}, #{memo}, now(), now(), 1) </insert> diff --git a/src/main/java/com/nanometer/smartlab/dao/SysReagentDao.java b/src/main/java/com/nanometer/smartlab/dao/SysReagentDao.java index cc30590..521dc99 100644 --- a/src/main/java/com/nanometer/smartlab/dao/SysReagentDao.java +++ b/src/main/java/com/nanometer/smartlab/dao/SysReagentDao.java @@ -33,4 +33,6 @@ Map getSysReagentDetail(String id); String getReagentUnitByReagentId(String reagentId); + + List<SysReagent> getReagent(Map params); } diff --git a/src/main/java/com/nanometer/smartlab/dao/SysReagentDao.xml b/src/main/java/com/nanometer/smartlab/dao/SysReagentDao.xml index 682c9e2..7f6ea53 100644 --- a/src/main/java/com/nanometer/smartlab/dao/SysReagentDao.xml +++ b/src/main/java/com/nanometer/smartlab/dao/SysReagentDao.xml @@ -115,6 +115,7 @@ AND f.user_id= #{user} WHERE f.id IS NOT NULL and sr.valid_flag = 1 + and sr.type != 3 <if test="cas != null and cas != ''"> and sr.cas like concat("%", #{cas} ,"%") </if> @@ -143,6 +144,7 @@ AND f.user_id = #{user} AND f.id IS NULL where sr.valid_flag = 1 + and sr.type != 3 <if test="cas != null and cas != ''"> and sr.cas like concat("%", #{cas} ,"%") </if> @@ -375,7 +377,27 @@ and product_home is null </if> </select> + <select id="getReagent" resultMap="SysReagent"> + select * From sys_reagent + where type=3 + and valid_flag = 1 + <if test="name!=null and name!=''"> + and name =#{name} + </if> + <if test="cas!=null and cas!=''"> + and cas =#{cas} + </if> + <if test="packing!=null and packing!=''"> + and reagent_unit =#{packing} + </if> + <if test="factory!=null and factory!=''"> + and product_home =#{factory} + </if> + <if test="specifications!=null and specifications!=''"> + and reagent_format =#{specifications} + </if> + </select> <insert id="insertSysReagent" parameterType="com.nanometer.smartlab.entity.SysReagent"> diff --git a/src/main/java/com/nanometer/smartlab/service/BaseMetaService.java b/src/main/java/com/nanometer/smartlab/service/BaseMetaService.java index ad53683..52d11d8 100644 --- a/src/main/java/com/nanometer/smartlab/service/BaseMetaService.java +++ b/src/main/java/com/nanometer/smartlab/service/BaseMetaService.java @@ -24,4 +24,6 @@ public String getBaseMetaValue(String id); public String getBaseMetaKey(String id); public List<BaseMeta> getAllBaseMeta(); + + BaseMeta getBaseMeta(String groupId, String key,String value); } diff --git a/src/main/java/com/nanometer/smartlab/service/BaseMetaServiceImpl.java b/src/main/java/com/nanometer/smartlab/service/BaseMetaServiceImpl.java index a5abf01..269f52b 100644 --- a/src/main/java/com/nanometer/smartlab/service/BaseMetaServiceImpl.java +++ b/src/main/java/com/nanometer/smartlab/service/BaseMetaServiceImpl.java @@ -282,4 +282,9 @@ public List<BaseMeta> getAllBaseMeta() { return this.baseMetaDao.getAllBaseMeta(); } + + @Override + public BaseMeta getBaseMeta(String groupId, String key,String value) { + return baseMetaDao.selectBaseMeta(groupId,key,value); + } } diff --git a/src/main/java/com/nanometer/smartlab/service/EncodeReplaceDictService.java b/src/main/java/com/nanometer/smartlab/service/EncodeReplaceDictService.java index 2be7830..8fccc0c 100644 --- a/src/main/java/com/nanometer/smartlab/service/EncodeReplaceDictService.java +++ b/src/main/java/com/nanometer/smartlab/service/EncodeReplaceDictService.java @@ -17,7 +17,9 @@ void updateOne(EncodeReplaceDict encodeReplaceDict); - boolean checkAddOne(EncodeReplaceDict encodeReplaceDict) throws Exception; + void checkAddOne(EncodeReplaceDict encodeReplaceDict) throws Exception; void checkUpdateOne(EncodeReplaceDict encodeReplaceDict) throws Exception; + + EncodeReplaceDict getOne(Long id); } diff --git a/src/main/java/com/nanometer/smartlab/service/EncodeReplaceDictServiceImpl.java b/src/main/java/com/nanometer/smartlab/service/EncodeReplaceDictServiceImpl.java index be4a4fc..0870e7c 100644 --- a/src/main/java/com/nanometer/smartlab/service/EncodeReplaceDictServiceImpl.java +++ b/src/main/java/com/nanometer/smartlab/service/EncodeReplaceDictServiceImpl.java @@ -59,7 +59,7 @@ } @Override - public boolean checkAddOne(EncodeReplaceDict encodeReplaceDict) throws Exception { + public void checkAddOne(EncodeReplaceDict encodeReplaceDict) throws Exception { Map<String, Object> params = null; params = new HashMap<>(); //同一个类型下的编号是否重复 @@ -78,7 +78,6 @@ throw new Exception("信息重复"); } //同时不存在就合格 - return check1 == 0 && check2 == 0; } @Override @@ -103,5 +102,10 @@ } } + @Override + public EncodeReplaceDict getOne(Long id) { + return encodeReplaceDictMapper.selectByPrimaryKey(id); + } + } diff --git a/src/main/java/com/nanometer/smartlab/service/SysReagentService.java b/src/main/java/com/nanometer/smartlab/service/SysReagentService.java index 66ba215..efa925f 100644 --- a/src/main/java/com/nanometer/smartlab/service/SysReagentService.java +++ b/src/main/java/com/nanometer/smartlab/service/SysReagentService.java @@ -36,4 +36,6 @@ List<SysReagent> reagentList(SysUser user, String name, String cas, String supplierId, String productSn, int first, int pageSize); String getReagentUnitByReagentId(String reagentId); + + List<SysReagent> getReagent(String name, String cas, String factory, String specifications, String packing); } diff --git a/src/main/java/com/nanometer/smartlab/service/SysReagentServiceImpl.java b/src/main/java/com/nanometer/smartlab/service/SysReagentServiceImpl.java index d615fcc..3a3e9e6 100644 --- a/src/main/java/com/nanometer/smartlab/service/SysReagentServiceImpl.java +++ b/src/main/java/com/nanometer/smartlab/service/SysReagentServiceImpl.java @@ -142,6 +142,17 @@ return sysReagentDao.getReagentUnitByReagentId(reagentId); } + @Override + public List<SysReagent> getReagent(String name, String cas, String factory, String specifications, String packing) { + Map<String, String> params = new HashMap<>(); + params.put("name", name); + params.put("cas", cas); + params.put("factory", factory); + params.put("specifications", specifications); + params.put("packing", packing); + return sysReagentDao.getReagent(params); + } + @Transactional(propagation = Propagation.REQUIRED) public int getSysReagentTotalCount(String name, String cas, String supplierId,Integer type) { diff --git a/src/main/java/com/nanometer/smartlab/service/SysWarehouseService.java b/src/main/java/com/nanometer/smartlab/service/SysWarehouseService.java index b1c2675..5ad2982 100644 --- a/src/main/java/com/nanometer/smartlab/service/SysWarehouseService.java +++ b/src/main/java/com/nanometer/smartlab/service/SysWarehouseService.java @@ -1,6 +1,7 @@ package com.nanometer.smartlab.service; import com.nanometer.smartlab.entity.SysWarehouse; +import com.nanometer.smartlab.entity.dto.InWarehouseInfoDto; import com.nanometer.smartlab.entity.dto.SysWarehouseDto; import java.util.List; @@ -21,4 +22,5 @@ List<SysWarehouseDto> getWarehouseList(); + void putInWarehouse(InWarehouseInfoDto inWarehouseInfo) throws Exception; } diff --git a/src/main/java/com/nanometer/smartlab/service/SysWarehouseServiceImpl.java b/src/main/java/com/nanometer/smartlab/service/SysWarehouseServiceImpl.java index dbd05ef..2d2fe60 100644 --- a/src/main/java/com/nanometer/smartlab/service/SysWarehouseServiceImpl.java +++ b/src/main/java/com/nanometer/smartlab/service/SysWarehouseServiceImpl.java @@ -1,14 +1,18 @@ package com.nanometer.smartlab.service; +import com.nanometer.smartlab.dao.BaseMetaDao; import com.nanometer.smartlab.dao.SysWarehouseDao; -import com.nanometer.smartlab.entity.SysWarehouse; +import com.nanometer.smartlab.entity.*; +import com.nanometer.smartlab.entity.dto.InWarehouseInfoDto; import com.nanometer.smartlab.entity.dto.SysWarehouseDto; +import com.nanometer.smartlab.entity.enumtype.*; import com.nanometer.smartlab.exception.AlarmCode; import com.nanometer.smartlab.exception.AlarmException; import com.nanometer.smartlab.exception.BusinessException; import com.nanometer.smartlab.exception.ExceptionEnumCode; import com.nanometer.smartlab.util.IDUtils; import com.nanometer.smartlab.util.MessageUtil; +import com.sun.xml.internal.bind.v2.model.core.ID; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.springframework.dao.DataAccessException; @@ -34,6 +38,20 @@ @Resource(name = "sysWarehouseDao") SysWarehouseDao sysWarehouseDao; + @Resource + DangerousEncodeService dangerousEncodeService; + @Resource + BaseMetaService baseMetaService; + @Resource + BaseMetaDao baseMetaDao; + @Resource + SysReagentService sysReagentService; + @Resource + OpeReagentStatusService opeReagentStatusService; + @Resource + OpeUseFlowService opeUseFlowService; + @Resource + OpeWarehouseReserveService opeWarehouseReserveService; @Transactional(propagation = Propagation.REQUIRED) public List<SysWarehouse> getSysWarehouseList(String type, String name, Integer first, Integer pageSize) { @@ -170,4 +188,119 @@ public List<SysWarehouseDto> getWarehouseList() { return sysWarehouseDao.selectWarehouse(); } + + @Override + @Transactional + public void putInWarehouse(InWarehouseInfoDto inWarehouseInfo) throws Exception { + List<String> codes = inWarehouseInfo.getReagentCode(); + if (codes !=null && codes.size()>0){ + // + codes.forEach(code->{ + //获取试剂名称码 5到8位 + String reagentCode = code.substring(4, 8); + //获取厂商编码 第3位 + String factoryCode = code.substring(2, 3); + //获取规格 第4位 + String specificationsCode = code.substring(3, 4); + //获取包装 第19位 + String packingCode = code.substring(18, 19); + + //厂商 + BaseMeta factory = baseMetaService + .getBaseMeta("encode_replace_"+ReplaceDictType.factory.getKey(), factoryCode,null); + //规格 + BaseMeta specifications = baseMetaService + .getBaseMeta("encode_replace_"+ReplaceDictType.specifications.getKey(), specificationsCode,null); + //厂商信息 + BaseMeta packing= baseMetaService + .getBaseMeta("encode_replace_"+ReplaceDictType.packing.getKey(), packingCode,null); + + //Todo 校验 + DangerousEncode dangerousEncode = new DangerousEncode(); + //数据库存储的前缀00空着 + dangerousEncode.setReagentCode("00"+reagentCode); + List<DangerousEncode> dangerousEncodes = + dangerousEncodeService.selectAll(dangerousEncode,null,null); + + String reagentName = dangerousEncodes.get(0).getReagentName(); + String cas = dangerousEncodes.get(0).getCas(); + //查找是否存在试剂 + List<SysReagent> reagent = sysReagentService + .getReagent(reagentName, cas, factory.getId(), specifications.getId(), packing.getId()); + + OpeReagentStatus ors = new OpeReagentStatus(); + if (reagent != null &&reagent.size()>0){ + //存在试剂 + String reagentId = reagent.get(0).getId(); + ors.setReagentId(reagentId); + + }else{ + //试剂不存在 + SysReagent sr = new SysReagent(); + sr.setId(IDUtils.uuid()); + sr.setCas(cas); + sr.setName(reagentName); + sr.setProductHome(factory.getId()); + sr.setReagentFormat(specifications.getId()); + sr.setReagentUnit(packing.getId()); + //设备生成试剂类型 为3 + sr.setType(3); + sr.setDangerousFlag(DangerousFlag.NORMAL); + SysReagent sysReagent = sysReagentService.insertSysReagent(sr); + String reagentId = sysReagent.getId(); + ors.setReagentId(reagentId); + } + + ors.setId(IDUtils.uuid()); + //入仓库 + ors.setStatus(ArrivalStatus.WAREHOUSE); + //批号 + ors.setArticleNumber(inWarehouseInfo.getArticleNumber()); + ors.setValidFlag(ValidFlag.VALID); + ors.setContainerId(inWarehouseInfo.getContainerId()); + ors.setHouseId(inWarehouseInfo.getWarehouseId()); + ors.setUserId(inWarehouseInfo.getUser()); + ors.setReagentCode(code); + opeReagentStatusService.insertOpeReagentStatus(ors); + + //更新试剂流向 + OpeUseFlow opeUseFlow = new OpeUseFlow(); + //入仓库 + opeUseFlow.setStatus(ArrivalStatus.WAREHOUSE); + opeUseFlow.setContainerId(inWarehouseInfo.getContainerId()); + opeUseFlow.setHouseId(inWarehouseInfo.getWarehouseId()); + opeUseFlow.setStoreType(StoreType.DIRECTSTORE); + opeUseFlow.setReagentCode(code); + //持有者 + opeUseFlow.setUserId(inWarehouseInfo.getUser()); + 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()); + opeUseFlowService.insertOpeUseFlow(opeUseFlow); + + //更新仓库库存 + // 仓库库存update + OpeWarehouseReserve opeWarehouseReserve = opeWarehouseReserveService + .getOpeWarehouseReserve2(ors.getReagentId(), inWarehouseInfo.getArticleNumber(), inWarehouseInfo.getWarehouseId()); + if (opeWarehouseReserve == null) { + opeWarehouseReserve = new OpeWarehouseReserve(); + opeWarehouseReserve.setReagentId(ors.getReagentId()); + opeWarehouseReserve.setArticleNumber(inWarehouseInfo.getArticleNumber()); + opeWarehouseReserve.setReserve(0); + opeWarehouseReserve.setWarehouseId(inWarehouseInfo.getWarehouseId()); + } + //库存加1 + opeWarehouseReserve.setReserve(opeWarehouseReserve.getReserve() + 1); + if (StringUtils.isBlank(opeWarehouseReserve.getId())) { + this.opeWarehouseReserveService.insertOpeWarehouseReserve(opeWarehouseReserve); + } else { + this.opeWarehouseReserveService.updateOpeWarehouseReserve(opeWarehouseReserve); + } + + }); + } + + } } diff --git a/src/main/webapp/warehouse_reagent_use.xhtml b/src/main/webapp/warehouse_reagent_use.xhtml index b787822..0767d75 100644 --- a/src/main/webapp/warehouse_reagent_use.xhtml +++ b/src/main/webapp/warehouse_reagent_use.xhtml @@ -261,7 +261,7 @@ </p:column> <p:column headerText="包装" width="90px;" style="text-align: center;"> - <h:outputText value="#{row.mainMetering}" /> + <h:outputText value="#{row.mainMetering==null?'':row.mainMetering}" /> </p:column> <p:column headerText="数量" width="90px;" style="text-align: center;"> -- Gitblit v1.9.2