gdg
2020-12-21 9ce91fb10ce1d1022112aeeee5a0cdc7301dac4d
新增模块:危化品编码
已修改1个文件
已添加8个文件
1189 ■■■■■ 文件已修改
src/main/java/com/nanometer/smartlab/controller/DangerousEncodeController.java 196 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/dao/DangerousEncodeMapper.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/dao/DangerousEncodeMapper.xml 293 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/entity/DangerousEncode.java 214 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/service/DangerousEncodeService.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/service/DangerousEncodeServiceImpl.java 189 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/WEB-INF/spring-menu.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/resources/template/危化品编码导入模板.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/sys_dangerous_encode.xhtml 238 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/controller/DangerousEncodeController.java
对比新文件
@@ -0,0 +1,196 @@
package com.nanometer.smartlab.controller;
import com.nanometer.smartlab.entity.DangerousEncode;
import com.nanometer.smartlab.entity.dto.ContainerStatusMngDto;
import com.nanometer.smartlab.service.DangerousEncodeService;
import com.nanometer.smartlab.util.Constants;
import com.nanometer.smartlab.util.FacesUtils;
import com.nanometer.smartlab.util.IDUtils;
import org.apache.log4j.Logger;
import org.primefaces.context.RequestContext;
import org.primefaces.event.FileUploadEvent;
import org.primefaces.model.LazyDataModel;
import org.primefaces.model.SortOrder;
import org.springframework.context.annotation.Scope;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Controller;
import javax.annotation.Resource;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@Controller
@Scope("session")
public class DangerousEncodeController extends BaseController{
    private static Logger logger = Logger.getLogger(DangerousEncodeController.class);
    @Resource
    private DangerousEncodeService dangerousEncodeService;
    private LazyDataModel<DangerousEncode> dataModel;
    private boolean isSearch;
    private DangerousEncode dangerousEncode;
    private DangerousEncode selectOne;
    private DangerousEncode dangerousEncodeFilter = new DangerousEncode();
    public LazyDataModel<DangerousEncode> getDataModel() {
        if (this.dataModel == null) {
            this.dataModel = new LazyDataModel<DangerousEncode>() {
                public List<DangerousEncode> load
                        (int first, int pageSize, String sortField, SortOrder sortOrder, Map<String, Object> filters) {
                    List<DangerousEncode> list = null;
                    try {
                        int pageCount = dangerousEncodeService.countAll(dangerousEncodeFilter);
                        this.setRowCount(pageCount);
                        if (pageCount > 0)
                            list = dangerousEncodeService.selectAll(dangerousEncodeFilter, isSearch?0:first, pageSize);
                    } catch (Exception e) {
                        logger.error("error occured.", e);
                    }
                    return list;
                }
                @Override
                public DangerousEncode getRowData(String rowKey) {
                    Iterator<DangerousEncode> iterator = this.iterator();
                    DangerousEncode su = null;
                    while (iterator.hasNext()) {
                        su = iterator.next();
                        if (rowKey.equals(su.getId())) {
                            return su;
                        }
                    }
                    return null;
                }
            };
        }
        return dataModel;
    }
    public void  onNewBtnClick(){
        this.dangerousEncode = new DangerousEncode();
    }
    //保存
    public void onSaveBtnClick(){
        try {
            //插入
            if (dangerousEncode.getId() == null) {
                //设置 id,创建者和更新时间
                dangerousEncode.setId(IDUtils.uuid());
                dangerousEncode.setCreator(getUser().getId());
                dangerousEncode.setUpdateTime(new Date());
                //插入
                dangerousEncodeService.insertOne(dangerousEncode);
            }
            //更新
            else{
                dangerousEncode.setUpdateTime(new Date());
                dangerousEncodeService.updateOne(dangerousEncode);
            }
            FacesUtils.info("操作成功");
            RequestContext.getCurrentInstance().execute("PF('dialog').hide()");
        }catch (Exception e){
            e.printStackTrace();
            FacesUtils.warn("操作失败");
        }
    }
    //编辑
    public void onEditBtnClick(){
        if (this.selectOne == null) {
            FacesUtils.warn("请选择数据");
        }
        else{
            this.dangerousEncode = this.selectOne;
            RequestContext.getCurrentInstance().execute("PF('dialog').show()");
        }
    }
    //删除
    public void onDeleteBtnClick(){
        if (this.selectOne == null) {
            FacesUtils.warn("请选择数据");
        }
        else{
            try {
                dangerousEncodeService.deleteOne(this.selectOne.getId());
                FacesUtils.info("删除成功");
            }catch (Exception e){
                e.printStackTrace();
                FacesUtils.warn("操作失败");
            }
        }
    }
    //导入
    public void importByExcel(FileUploadEvent event){
    try {
        dangerousEncodeService.importInfoByExcel(event,getUser());
        FacesUtils.info("导入完成");
    }
    catch(Exception e){
        e.printStackTrace();
        FacesUtils.warn(e.getMessage());
    }
    }
    //导出
    public void export2Excel(){
        List<Map> list = dangerousEncodeService.exportList(dangerousEncodeFilter);
        try{
            dangerousEncodeService.export2Excel(list);
        }catch (Exception e){
            e.printStackTrace();
            FacesUtils.warn("导出失败");
        }
    }
    public void modelChange(){
        this.isSearch = true;
    }
    public DangerousEncode getDangerousEncode() {
        return dangerousEncode;
    }
    public void setDangerousEncode(DangerousEncode dangerousEncode) {
        this.dangerousEncode = dangerousEncode;
    }
    public DangerousEncode getSelectOne() {
        return selectOne;
    }
    public void setSelectOne(DangerousEncode selectOne) {
        this.selectOne = selectOne;
    }
    public DangerousEncode getDangerousEncodeFilter() {
        return dangerousEncodeFilter;
    }
    public void setDangerousEncodeFilter(DangerousEncode dangerousEncodeFilter) {
        this.dangerousEncodeFilter = dangerousEncodeFilter;
    }
}
src/main/java/com/nanometer/smartlab/dao/DangerousEncodeMapper.java
对比新文件
@@ -0,0 +1,26 @@
package com.nanometer.smartlab.dao;
import com.nanometer.smartlab.entity.DangerousEncode;
import java.util.List;
import java.util.Map;
public interface DangerousEncodeMapper {
    int deleteByPrimaryKey(String id);
    int insert(DangerousEncode record);
    int insertSelective(DangerousEncode record);
    DangerousEncode selectByPrimaryKey(String id);
    int updateByPrimaryKeySelective(DangerousEncode record);
    int updateByPrimaryKey(DangerousEncode record);
    List<DangerousEncode> selectAll(Map params);
    int countAll(Map params);
    List<Map> selectExportList(Map params);
}
src/main/java/com/nanometer/smartlab/dao/DangerousEncodeMapper.xml
对比新文件
@@ -0,0 +1,293 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nanometer.smartlab.dao.DangerousEncodeMapper">
  <resultMap id="BaseResultMap" type="com.nanometer.smartlab.entity.DangerousEncode">
    <!--          -->
    <id column="id" jdbcType="VARCHAR" property="id" />
    <result column="container_number" jdbcType="VARCHAR" property="containerNumber" />
    <result column="reagent_code" jdbcType="VARCHAR" property="reagentCode" />
    <result column="reagent_name" jdbcType="VARCHAR" property="reagentName" />
    <result column="cas" jdbcType="VARCHAR" property="cas" />
    <result column="memo" jdbcType="VARCHAR" property="memo" />
    <result column="property" jdbcType="VARCHAR" property="property" />
    <result column="feature" jdbcType="VARCHAR" property="feature" />
    <result column="avoid" jdbcType="VARCHAR" property="avoid" />
    <result column="status" jdbcType="VARCHAR" property="status" />
    <result column="fire" jdbcType="VARCHAR" property="fire" />
    <result column="random" jdbcType="VARCHAR" property="random" />
    <result column="code" jdbcType="VARCHAR" property="code" />
    <result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
    <result column="creator" jdbcType="VARCHAR" property="creator" />
    <result column="count" jdbcType="INTEGER" property="count" />
  </resultMap>
  <sql id="Base_Column_List">
    <!--          -->
    id, container_number, reagent_code, reagent_name, cas, memo, property, feature, avoid,
    status, fire, random, code, update_time, creator, count
  </sql>
  <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
    <!--          -->
    select
    <include refid="Base_Column_List" />
    from sys_dangerous_encode
    where id = #{id,jdbcType=VARCHAR}
  </select>
  <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
    <!--          -->
    delete from sys_dangerous_encode
    where id = #{id,jdbcType=VARCHAR}
  </delete>
  <insert id="insert" parameterType="com.nanometer.smartlab.entity.DangerousEncode">
    <!--          -->
    insert into sys_dangerous_encode (id, container_number, reagent_code,
      reagent_name, cas, memo,
      property, feature, avoid,
      status, fire, random,
      code, update_time, creator,
      count)
    values (#{id,jdbcType=VARCHAR}, #{containerNumber,jdbcType=VARCHAR}, #{reagentCode,jdbcType=VARCHAR},
      #{reagentName,jdbcType=VARCHAR}, #{cas,jdbcType=VARCHAR}, #{memo,jdbcType=VARCHAR},
      #{property,jdbcType=VARCHAR}, #{feature,jdbcType=VARCHAR}, #{avoid,jdbcType=VARCHAR},
      #{status,jdbcType=VARCHAR}, #{fire,jdbcType=VARCHAR}, #{random,jdbcType=VARCHAR},
      #{code,jdbcType=VARCHAR}, #{updateTime,jdbcType=TIMESTAMP}, #{creator,jdbcType=VARCHAR},
      #{count,jdbcType=INTEGER})
  </insert>
  <insert id="insertSelective" parameterType="com.nanometer.smartlab.entity.DangerousEncode">
    <!--          -->
    insert into sys_dangerous_encode
    <trim prefix="(" suffix=")" suffixOverrides=",">
      <if test="id != null">
        id,
      </if>
      <if test="containerNumber != null">
        container_number,
      </if>
      <if test="reagentCode != null">
        reagent_code,
      </if>
      <if test="reagentName != null">
        reagent_name,
      </if>
      <if test="cas != null">
        cas,
      </if>
      <if test="memo != null">
        memo,
      </if>
      <if test="property != null">
        property,
      </if>
      <if test="feature != null">
        feature,
      </if>
      <if test="avoid != null">
        avoid,
      </if>
      <if test="status != null">
        status,
      </if>
      <if test="fire != null">
        fire,
      </if>
      <if test="random != null">
        random,
      </if>
      <if test="code != null">
        code,
      </if>
      <if test="updateTime != null">
        update_time,
      </if>
      <if test="creator != null">
        creator,
      </if>
      <if test="count != null">
        count,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides=",">
      <if test="id != null">
        #{id,jdbcType=VARCHAR},
      </if>
      <if test="containerNumber != null">
        #{containerNumber,jdbcType=VARCHAR},
      </if>
      <if test="reagentCode != null">
        #{reagentCode,jdbcType=VARCHAR},
      </if>
      <if test="reagentName != null">
        #{reagentName,jdbcType=VARCHAR},
      </if>
      <if test="cas != null">
        #{cas,jdbcType=VARCHAR},
      </if>
      <if test="memo != null">
        #{memo,jdbcType=VARCHAR},
      </if>
      <if test="property != null">
        #{property,jdbcType=VARCHAR},
      </if>
      <if test="feature != null">
        #{feature,jdbcType=VARCHAR},
      </if>
      <if test="avoid != null">
        #{avoid,jdbcType=VARCHAR},
      </if>
      <if test="status != null">
        #{status,jdbcType=VARCHAR},
      </if>
      <if test="fire != null">
        #{fire,jdbcType=VARCHAR},
      </if>
      <if test="random != null">
        #{random,jdbcType=VARCHAR},
      </if>
      <if test="code != null">
        #{code,jdbcType=VARCHAR},
      </if>
      <if test="updateTime != null">
        #{updateTime,jdbcType=TIMESTAMP},
      </if>
      <if test="creator != null">
        #{creator,jdbcType=VARCHAR},
      </if>
      <if test="count != null">
        #{count,jdbcType=INTEGER},
      </if>
    </trim>
  </insert>
  <update id="updateByPrimaryKeySelective" parameterType="com.nanometer.smartlab.entity.DangerousEncode">
    <!--          -->
    update sys_dangerous_encode
    <set>
      <if test="containerNumber != null">
        container_number = #{containerNumber,jdbcType=VARCHAR},
      </if>
      <if test="reagentCode != null">
        reagent_code = #{reagentCode,jdbcType=VARCHAR},
      </if>
      <if test="reagentName != null">
        reagent_name = #{reagentName,jdbcType=VARCHAR},
      </if>
      <if test="cas != null">
        cas = #{cas,jdbcType=VARCHAR},
      </if>
      <if test="memo != null">
        memo = #{memo,jdbcType=VARCHAR},
      </if>
      <if test="property != null">
        property = #{property,jdbcType=VARCHAR},
      </if>
      <if test="feature != null">
        feature = #{feature,jdbcType=VARCHAR},
      </if>
      <if test="avoid != null">
        avoid = #{avoid,jdbcType=VARCHAR},
      </if>
      <if test="status != null">
        status = #{status,jdbcType=VARCHAR},
      </if>
      <if test="fire != null">
        fire = #{fire,jdbcType=VARCHAR},
      </if>
      <if test="random != null">
        random = #{random,jdbcType=VARCHAR},
      </if>
      <if test="code != null">
        code = #{code,jdbcType=VARCHAR},
      </if>
      <if test="updateTime != null">
        update_time = #{updateTime,jdbcType=TIMESTAMP},
      </if>
      <if test="creator != null">
        creator = #{creator,jdbcType=VARCHAR},
      </if>
      <if test="count != null">
        count = #{count,jdbcType=INTEGER},
      </if>
    </set>
    where id = #{id,jdbcType=VARCHAR}
  </update>
  <update id="updateByPrimaryKey" parameterType="com.nanometer.smartlab.entity.DangerousEncode">
    <!--          -->
    update sys_dangerous_encode
    set container_number = #{containerNumber,jdbcType=VARCHAR},
      reagent_code = #{reagentCode,jdbcType=VARCHAR},
      reagent_name = #{reagentName,jdbcType=VARCHAR},
      cas = #{cas,jdbcType=VARCHAR},
      memo = #{memo,jdbcType=VARCHAR},
      property = #{property,jdbcType=VARCHAR},
      feature = #{feature,jdbcType=VARCHAR},
      avoid = #{avoid,jdbcType=VARCHAR},
      status = #{status,jdbcType=VARCHAR},
      fire = #{fire,jdbcType=VARCHAR},
      random = #{random,jdbcType=VARCHAR},
      code = #{code,jdbcType=VARCHAR},
      update_time = #{updateTime,jdbcType=TIMESTAMP},
      creator = #{creator,jdbcType=VARCHAR},
      count = #{count,jdbcType=INTEGER}
    where id = #{id,jdbcType=VARCHAR}
  </update>
  <select id="selectAll" parameterType="java.util.Map" resultMap="BaseResultMap">
    select
    <include refid="Base_Column_List" />
    from sys_dangerous_encode
    <where>
      <if test="reagentName !=null and reagentName != ''">
        reagent_name like concat("%",#{reagentName},"%")
      </if>
      <if test="cas !=null and cas != ''">
        cas like concat("%",#{cas},"%")
      </if>
      <if test="reagentCode!=null and reagentCode != ''">
        reagent_code like concat("%",#{reagentCode},"%")
      </if>
      <if test="containerNumber !=null and containerNumber != ''">
        container_number like concat("%",#{containerNumber},"%")
      </if>
    </where>
    order by update_time
  </select>
  <select id="countAll" parameterType="java.util.Map" resultType="java.lang.Integer">
    select count(1)
    from sys_dangerous_encode
    <where>
      <if test="reagentName !=null and reagentName != ''">
        reagent_name like concat("%",#{reagentName},"%")
      </if>
      <if test="cas !=null and cas != ''">
        cas like concat("%",#{cas},"%")
      </if>
      <if test="reagentCode!=null and reagentCode != ''">
        reagent_code like concat("%",#{reagentCode},"%")
      </if>
      <if test="containerNumber !=null and containerNumber != ''">
        container_number like concat("%",#{containerNumber},"%")
      </if>
    </where>
  </select>
  <select id="selectExportList" parameterType="java.util.Map" resultType="java.util.Map">
    select
    container_number containerNumber, reagent_code reagentCode, reagent_name reagentName, cas, memo, property, feature, avoid,
    status, fire, random, code, update_time, creator, count
    from sys_dangerous_encode
    <where>
      <if test="reagentName !=null and reagentName != ''">
        reagent_name like concat("%",#{reagentName},"%")
      </if>
      <if test="cas !=null and cas != ''">
        cas like concat("%",#{cas},"%")
      </if>
      <if test="reagentCode!=null and reagentCode != ''">
        reagent_code like concat("%",#{reagentCode},"%")
      </if>
      <if test="containerNumber !=null and containerNumber != ''">
        container_number like concat("%",#{containerNumber},"%")
      </if>
    </where>
  </select>
</mapper>
src/main/java/com/nanometer/smartlab/entity/DangerousEncode.java
对比新文件
@@ -0,0 +1,214 @@
package com.nanometer.smartlab.entity;
import java.util.Date;
public class DangerousEncode {
    /** id  id **/
    private String id;
    /** 柜码  container_number **/
    private String containerNumber;
    /** 试剂名称码  reagent_code **/
    private String reagentCode;
    /** 试剂名称  reagent_name **/
    private String reagentName;
    /** CAS号  cas **/
    private String cas;
    /** 备注  memo **/
    private String memo;
    /** 性状  property **/
    private String property;
    /** 特性  feature **/
    private String feature;
    /** 相忌  avoid **/
    private String avoid;
    /** 状态  status **/
    private String status;
    /** 灭火器  fire **/
    private String fire;
    /** 随机码  random **/
    private String random;
    /** 编码  code **/
    private String code;
    /** 更新时间  update_time **/
    private Date updateTime;
    /** 创建用户  creator **/
    private String creator;
    /** 使用次数  count **/
    private Integer count;
    /**   id  id   **/
    public String getId() {
        return id;
    }
    /**   id  id   **/
    public void setId(String id) {
        this.id = id == null ? null : id.trim();
    }
    /**   柜码  container_number   **/
    public String getContainerNumber() {
        return containerNumber;
    }
    /**   柜码  container_number   **/
    public void setContainerNumber(String containerNumber) {
        this.containerNumber = containerNumber == null ? null : containerNumber.trim();
    }
    /**   试剂名称码  reagent_code   **/
    public String getReagentCode() {
        return reagentCode;
    }
    /**   试剂名称码  reagent_code   **/
    public void setReagentCode(String reagentCode) {
        this.reagentCode = reagentCode == null ? null : reagentCode.trim();
    }
    /**   试剂名称  reagent_name   **/
    public String getReagentName() {
        return reagentName;
    }
    /**   试剂名称  reagent_name   **/
    public void setReagentName(String reagentName) {
        this.reagentName = reagentName == null ? null : reagentName.trim();
    }
    /**   CAS号  cas   **/
    public String getCas() {
        return cas;
    }
    /**   CAS号  cas   **/
    public void setCas(String cas) {
        this.cas = cas == null ? null : cas.trim();
    }
    /**   备注  memo   **/
    public String getMemo() {
        return memo;
    }
    /**   备注  memo   **/
    public void setMemo(String memo) {
        this.memo = memo == null ? null : memo.trim();
    }
    /**   性状  property   **/
    public String getProperty() {
        return property;
    }
    /**   性状  property   **/
    public void setProperty(String property) {
        this.property = property == null ? null : property.trim();
    }
    /**   特性  feature   **/
    public String getFeature() {
        return feature;
    }
    /**   特性  feature   **/
    public void setFeature(String feature) {
        this.feature = feature == null ? null : feature.trim();
    }
    /**   相忌  avoid   **/
    public String getAvoid() {
        return avoid;
    }
    /**   相忌  avoid   **/
    public void setAvoid(String avoid) {
        this.avoid = avoid == null ? null : avoid.trim();
    }
    /**   状态  status   **/
    public String getStatus() {
        return status;
    }
    /**   状态  status   **/
    public void setStatus(String status) {
        this.status = status == null ? null : status.trim();
    }
    /**   灭火器  fire   **/
    public String getFire() {
        return fire;
    }
    /**   灭火器  fire   **/
    public void setFire(String fire) {
        this.fire = fire == null ? null : fire.trim();
    }
    /**   随机码  random   **/
    public String getRandom() {
        return random;
    }
    /**   随机码  random   **/
    public void setRandom(String random) {
        this.random = random == null ? null : random.trim();
    }
    /**   编码  code   **/
    public String getCode() {
        return code;
    }
    /**   编码  code   **/
    public void setCode(String code) {
        this.code = code == null ? null : code.trim();
    }
    /**   更新时间  update_time   **/
    public Date getUpdateTime() {
        return updateTime;
    }
    /**   更新时间  update_time   **/
    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }
    /**   创建用户  creator   **/
    public String getCreator() {
        return creator;
    }
    /**   创建用户  creator   **/
    public void setCreator(String creator) {
        this.creator = creator == null ? null : creator.trim();
    }
    /**   使用次数  count   **/
    public Integer getCount() {
        return count;
    }
    /**   使用次数  count   **/
    public void setCount(Integer count) {
        this.count = count;
    }
}
src/main/java/com/nanometer/smartlab/service/DangerousEncodeService.java
对比新文件
@@ -0,0 +1,27 @@
package com.nanometer.smartlab.service;
import com.nanometer.smartlab.entity.DangerousEncode;
import com.nanometer.smartlab.entity.SysUser;
import org.primefaces.event.FileUploadEvent;
import java.util.List;
import java.util.Map;
public interface DangerousEncodeService {
    List<DangerousEncode> selectAll(DangerousEncode dangerousEncodeFilter, Integer offset, Integer pageSize);
    int countAll(DangerousEncode dangerousEncodeFilter);
    void deleteOne(String id);
    void insertOne(DangerousEncode dangerousEncode);
    void updateOne(DangerousEncode dangerousEncode);
    void importInfoByExcel(FileUploadEvent event, SysUser user) throws Exception;
    void export2Excel(List<Map> list) throws Exception;
    List<Map> exportList(DangerousEncode dangerousEncodeFilter);
}
src/main/java/com/nanometer/smartlab/service/DangerousEncodeServiceImpl.java
对比新文件
@@ -0,0 +1,189 @@
package com.nanometer.smartlab.service;
import com.nanometer.smartlab.dao.DangerousEncodeMapper;
import com.nanometer.smartlab.entity.DangerousEncode;
import com.nanometer.smartlab.entity.SysUser;
import com.nanometer.smartlab.util.ExcelUtils;
import com.nanometer.smartlab.util.IDUtils;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.primefaces.event.FileUploadEvent;
import org.primefaces.model.UploadedFile;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.io.IOException;
import java.io.InputStream;
import java.util.*;
@Service
public class DangerousEncodeServiceImpl implements DangerousEncodeService{
    @Resource
    private DangerousEncodeMapper dangerousEncodeMapper;
    /* 根据条件查询*/
    @Override
    public List<DangerousEncode> selectAll(DangerousEncode dangerousEncodeFilter, Integer offset, Integer pageSize) {
        Map<String, Object> params = new HashMap<>();
        if (dangerousEncodeFilter != null){
            params.put("containerNumber", dangerousEncodeFilter.getContainerNumber());
            params.put("reagentCode", dangerousEncodeFilter.getReagentCode());
            params.put("reagentName", dangerousEncodeFilter.getReagentName());
            params.put("cas", dangerousEncodeFilter.getCas());
        }
        params.put("offset", offset);
        params.put("pageSize", pageSize);
        return dangerousEncodeMapper.selectAll(params);
    }
    /* 根据条件查询个数*/
    @Override
    public int countAll(DangerousEncode dangerousEncodeFilter) {
        Map<String,Object> params = new HashMap<>();
        if (dangerousEncodeFilter != null){
            params.put("containerNumber", dangerousEncodeFilter.getContainerNumber());
            params.put("reagentCode", dangerousEncodeFilter.getReagentCode());
            params.put("reagentName", dangerousEncodeFilter.getReagentName());
            params.put("cas", dangerousEncodeFilter.getCas());
        }
        return dangerousEncodeMapper.countAll(params);
    }
    @Override
    @Transactional
    public void deleteOne(String id) {
        dangerousEncodeMapper.deleteByPrimaryKey(id);
    }
    @Override
    @Transactional
    public void insertOne(DangerousEncode dangerousEncode) {
        dangerousEncodeMapper.insert(dangerousEncode);
    }
    @Override
    @Transactional
    public void updateOne(DangerousEncode dangerousEncode) {
        dangerousEncodeMapper.updateByPrimaryKeySelective(dangerousEncode);
    }
    /* 导入*/
    @Override
    @Transactional
    public void importInfoByExcel(FileUploadEvent event, SysUser user) throws Exception {
        //准备工作
        List<DangerousEncode> encodeList = selectAll(null, null, null);
        HashSet<String> set = new HashSet<>();
        if (encodeList != null && encodeList.size() > 0) {
            encodeList.forEach(encodeData -> {
                set.add(encodeData.getReagentCode());
            });
            set.add("");
        }
        //更新时间
        Date date = new Date();
        UploadedFile file = event.getFile();
        InputStream is = file.getInputstream();
        boolean isExcel2003 = true;
        if (file.getFileName().matches("^.+\\.(?i)(xlsx)$")) {
            isExcel2003 = false;
        }
        Workbook wb = null;
        if (isExcel2003) {
            wb = new HSSFWorkbook(is);
        } else {
            wb = new XSSFWorkbook(is);
        }
        Sheet sheet = wb.getSheetAt(0);
        int totalRows = sheet.getPhysicalNumberOfRows();
        Row row = null;
        int totalCells = 0;
        for (int i = 1; i < totalRows; i++) {
            List<String> valuesList = new ArrayList<String>();
            row = sheet.getRow(i);
            totalCells = row.getPhysicalNumberOfCells();
            //System.out.println("====="+totalCells);
            for (int t = 0; t < totalCells; t++) {
                String cellInfo = "";
                if (row.getCell(t) != null) {
                    //读取excel单元格数据转化之前设置单元格类型为String
                    row.getCell(t).setCellType(CellType.STRING);
                    cellInfo = row.getCell(t).getStringCellValue();
                }
                valuesList.add(cellInfo);
            }
            //柜号    试剂名称码    试剂名称    CAS号    备注    性状    特性    相忌    状态    灭火器    随机码    编码
            //如果试剂条码存或者为空就失败
            if (set.contains(valuesList.get(1).trim())){
                throw new Exception(i + 1 + "行," + 2 + "列,试剂条码存或者为空");
            }
            //加入
            set.add(valuesList.get(1));
            DangerousEncode dangerousEncode = new DangerousEncode();
            dangerousEncode.setId(IDUtils.uuid());
            dangerousEncode.setContainerNumber(valuesList.get(0));
            dangerousEncode.setReagentCode(valuesList.get(1));
            dangerousEncode.setReagentName(valuesList.get(2));
            dangerousEncode.setCas(valuesList.get(3));
            dangerousEncode.setMemo(valuesList.get(4));
            dangerousEncode.setProperty(valuesList.get(5));
            dangerousEncode.setFeature(valuesList.get(6));
            dangerousEncode.setAvoid(valuesList.get(7));
            dangerousEncode.setStatus(valuesList.get(8));
            dangerousEncode.setFire(valuesList.get(9));
            dangerousEncode.setRandom(valuesList.get(10));
            dangerousEncode.setCode(valuesList.get(11));
            dangerousEncode.setCount(0);
            dangerousEncode.setUpdateTime(date);
            dangerousEncode.setCreator(user.getId());
            dangerousEncodeMapper.insert(dangerousEncode);
        }
    }
    @Override
    public List<Map> exportList(DangerousEncode dangerousEncodeFilter) {
        Map<String, String> params = new HashMap<>();
        if (dangerousEncodeFilter != null) {
            params.put("containerNumber", dangerousEncodeFilter.getContainerNumber());
            params.put("reagentCode", dangerousEncodeFilter.getReagentCode());
            params.put("reagentName", dangerousEncodeFilter.getReagentName());
            params.put("cas", dangerousEncodeFilter.getCas());
        }
        return dangerousEncodeMapper.selectExportList(params);
    }
    @Override
    public void export2Excel(List<Map> list) throws Exception {
        Map<String,String> map = new LinkedHashMap<>();
        map.put("containerNumber", "柜号");
        map.put("reagentCode", "试剂名称码");
        map.put("reagentName", "试剂名称");
        map.put("cas", "CAS号");
        map.put("memo", "备注");
        map.put("property", "性状");
        map.put("feature", "特性");
        map.put("avoid", "相忌");
        map.put("status", "状态");
        map.put("fire", "灭火器");
        map.put("random", "随机码");
        map.put("code", "编码");
        ExcelUtils.export2Excel(list,"危化品编码",map);
    }
}
src/main/webapp/WEB-INF/spring-menu.xml
@@ -211,6 +211,12 @@
                        <property name="page" value="sys_controller_mng"></property>
                        <property name="privilegeCode" value="sys_controller_mng"></property>
                    </bean>
                    <bean class="com.nanometer.smartlab.model.MenuModel">
                        <property name="id" value="sys_dangerous_encode"></property>
                        <property name="title" value="危化品编码"></property>
                        <property name="page" value="sys_dangerous_encode"></property>
                        <property name="privilegeCode" value="sys_dangerous_encode"></property>
                    </bean>
                </list>
            </property>
        </bean>
src/main/webapp/resources/template/危化品编码导入模板.xlsx
Binary files differ
src/main/webapp/sys_dangerous_encode.xhtml
对比新文件
@@ -0,0 +1,238 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html
        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:p="http://primefaces.org/ui"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:c="http://java.sun.com/jsp/jstl/core">
<ui:composition>
    <h:form id="dangerousEncodeForm">
        <p:panel styleClass="center-header">
            <p:outputLabel styleClass="title" value="危化品编码"/>
            <p:panelGrid styleClass="filter" columns="9">
                <p:outputLabel value="试剂名称:"/>
                <p:inputText value="#{dangerousEncodeController.dangerousEncodeFilter.reagentName}"/>
                <p:outputLabel value="CAS号:"/>
                <p:inputText value="#{dangerousEncodeController.dangerousEncodeFilter.cas}"/>
                <p:outputLabel value="试剂名称码:"/>
                <p:inputText value="#{dangerousEncodeController.dangerousEncodeFilter.reagentCode}"/>
                <p:outputLabel value="柜码:"/>
                <p:inputText value="#{dangerousEncodeController.dangerousEncodeFilter.containerNumber}"/>
                <p:commandLink styleClass="search" process="@form" update="@form" actionListener="#{dangerousEncodeController.modelChange}"/>
            </p:panelGrid>
        </p:panel>
        <p:panel styleClass="center-body">
            <p:panelGrid columns="6" styleClass="btn">
                <p:commandButton value="新建" styleClass="new-btn"
                                 process="@this"
                                 actionListener="#{dangerousEncodeController.onNewBtnClick}"
                                 oncomplete="PF('dialog').show();"
                                 update=":dialog,:dialogForm"/>
                <p:commandButton value="修改" styleClass="edit-btn"
                                 process="@form"
                                 actionListener="#{dangerousEncodeController.onEditBtnClick}"
                                 update=":dialog,:dialogForm"/>
                <p:commandButton value="删除" styleClass="del-btn"
                                 process="@form"
                                 actionListener="#{dangerousEncodeController.onDeleteBtnClick}"
                                 update="@form">
                    <p:confirm header="确认"
                               message="确认操作?"/>
                </p:commandButton>
                <p:commandButton value="导入" styleClass="import-btn" onclick="importSupplier()"/>
                <p:commandButton value="导出" styleClass="new-btn"   ajax="false" actionListener="#{dangerousEncodeController.export2Excel}" />
                <a href="resources/template/危化品编码导入模板.xlsx" style="display: inline-block;">
                    <img src="resources/images/xlsx.png" width="30px;" alt="危化品编码导入模板"/>
                </a>
            </p:panelGrid>
            <script type="text/javascript">
                function importSupplier(){
                    $("#dangerousEncodeForm\\:importInfo_input").click();
                }
            </script>
            <div style="display: none" id='importDv'>
                <p:fileUpload fileUploadListener="#{dangerousEncodeController.importByExcel}"
                              dragDropSupport="false" id="importInfo"  label="导入"
                              update="@form" auto="true" sizeLimit="5000000"
                              mode="advanced"/>
            </div>
            <p:dataTable id="dangerousEncodeInfoMngDataTable"
                         styleClass="data-table"
                         paginator="true"
                         paginatorAlwaysVisible="false"
                         paginatorPosition="bottom"
                         lazy="true" value="#{dangerousEncodeController.dataModel}"
                         var="row"
                         rowKey="#{row.id}"
                         emptyMessage="无数据"
                         rows="20"
                         selection="#{dangerousEncodeController.selectOne}"
                         selectionMode="single"
                         pageLinks="5">
                <p:column headerText="试剂名称码">
                    <h:outputText value="#{row.reagentCode}"/>
                </p:column>
                <p:column headerText="试剂名称">
                    <h:outputText value="#{row.reagentName}"/>
                </p:column>
                <p:column headerText="柜码">
                    <h:outputText value="#{row.containerNumber}"/>
                </p:column>
                <p:column headerText="CAS号">
                    <h:outputText value="#{row.cas}"/>
                </p:column>
                <p:column headerText="备注">
                    <h:outputText value="#{row.memo}"/>
                </p:column>
                <p:column headerText="性状">
                    <h:outputText value="#{row.property}"/>
                </p:column>
                <p:column headerText="特性">
                    <h:outputText value="#{row.feature}"/>
                </p:column>
                <p:column headerText="相忌">
                    <h:outputText value="#{row.avoid}"/>
                </p:column>
                <p:column headerText="特性">
                    <h:outputText value="#{row.avoid}"/>
                </p:column>
                <p:column headerText="状态">
                    <h:outputText value="#{row.status}"/>
                </p:column>
                <p:column headerText="灭火器">
                    <h:outputText value="#{row.fire}"/>
                </p:column>
                <p:column headerText="随机码">
                    <h:outputText value="#{row.random}"/>
                </p:column>
                <p:column headerText="编码" width="200">
                    <h:outputText value="#{row.code}"/>
                </p:column>
            </p:dataTable>
        </p:panel>
    </h:form>
    <p:dialog modal="true"
              header="#{dangerousEncodeController.selectOne.id eq null?'新建':'修改'}"
              appendTo="@(body)"
              id="dialog"
              widgetVar="dialog"
              resizable="false"
              width="800"  >
        <h:form id="dialogForm">
            <p:panelGrid columns="4"
                         styleClass="content2 grid-padding-bottom2">
                <p:outputLabel value="柜号"/>
                <p:inputText value="#{dangerousEncodeController.dangerousEncode.containerNumber}"
                             maxlength="100"
                             required="true"
                             requiredMessage="请输入柜号"/>
                <p:outputLabel value="试剂名称码"/>
                <p:inputText value="#{dangerousEncodeController.dangerousEncode.reagentCode}"
                             maxlength="100"
                             required="true"
                             requiredMessage="请输入试剂名称码"/>
                <p:outputLabel value="试剂名称"/>
                <p:inputText value="#{dangerousEncodeController.dangerousEncode.reagentName}"
                             maxlength="100"
                             required="true"
                             requiredMessage="请输入试剂名称"/>
                <p:outputLabel value="CAS号"/>
                <p:inputText value="#{dangerousEncodeController.dangerousEncode.cas}"
                             maxlength="100"
                             required="true"
                             requiredMessage="请输入CAS号"/>
                <p:outputLabel value="备注"/>
                <p:inputText value="#{dangerousEncodeController.dangerousEncode.memo}"
                             maxlength="100"/>
                <p:outputLabel value="性状"/>
                <p:inputText value="#{dangerousEncodeController.dangerousEncode.property}"
                             maxlength="100"/>
                <p:outputLabel value="特性"/>
                <p:inputText value="#{dangerousEncodeController.dangerousEncode.feature}"
                             maxlength="100"
                             required="true"
                             requiredMessage="请输入特性"/>
                <p:outputLabel value="相忌"/>
                <p:inputText value="#{dangerousEncodeController.dangerousEncode.avoid}"
                             maxlength="100"
                             required="true"
                             requiredMessage="请输入相忌"/>
                <p:outputLabel value="状态"/>
                <p:inputText value="#{dangerousEncodeController.dangerousEncode.status}"
                             maxlength="100"
                             required="true"
                             requiredMessage="请输入状态"/>
                <p:outputLabel value="灭火器"/>
                <p:inputText value="#{dangerousEncodeController.dangerousEncode.fire}"
                             maxlength="100"
                             required="true"
                             requiredMessage="请输入灭火器"/>
                <p:outputLabel value="随机码"/>
                <p:inputText value="#{dangerousEncodeController.dangerousEncode.random}"
                             maxlength="100"
                             required="true"
                             requiredMessage="请输入随机码"/>
                <p:outputLabel value="编码"/>
                <p:inputText value="#{dangerousEncodeController.dangerousEncode.code}"
                             maxlength="100"
                             required="true"
                             requiredMessage="请输入编码"/>
            </p:panelGrid>
            <p:panel styleClass="btn">
                <p:commandButton value="保存"
                                 actionListener="#{dangerousEncodeController.onSaveBtnClick}"
                                 process="@form"
                                 update=":dangerousEncodeForm:dangerousEncodeInfoMngDataTable">
                    <p:confirm header="确认"
                               message="确认操作?"/>
                </p:commandButton>
            </p:panel>
        </h:form>
    </p:dialog>
</ui:composition>
</html>