gdg
2020-12-28 24a5d5638b40a6921f24fd01997db64237c6b653
1.替换字典 和数据字典同步
2.入库
已修改15个文件
267 ■■■■■ 文件已修改
src/main/java/com/nanometer/smartlab/api/ApiAction.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/controller/EncodeReplaceDictController.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/dao/BaseMetaDao.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/dao/BaseMetaDao.xml 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/dao/SysReagentDao.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/dao/SysReagentDao.xml 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/service/BaseMetaService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/service/BaseMetaServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/service/EncodeReplaceDictService.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/service/EncodeReplaceDictServiceImpl.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/service/SysReagentService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/service/SysReagentServiceImpl.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/service/SysWarehouseService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/service/SysWarehouseServiceImpl.java 135 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/warehouse_reagent_use.xhtml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
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;">