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("系统出错"); } } } 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); } 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); } 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> 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); } 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"> 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); } 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); } } 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); } 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); } } 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); } 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) { 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; } 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); } }); } } } 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;">