From 9ce91fb10ce1d1022112aeeee5a0cdc7301dac4d Mon Sep 17 00:00:00 2001 From: gdg <764716047@qq.com> Date: 星期一, 21 十二月 2020 16:41:42 +0800 Subject: [PATCH] 新增模块:危化品编码 --- src/main/webapp/WEB-INF/spring-menu.xml | 6 src/main/java/com/nanometer/smartlab/entity/DangerousEncode.java | 214 ++++++++++ src/main/java/com/nanometer/smartlab/dao/DangerousEncodeMapper.xml | 293 ++++++++++++++ src/main/java/com/nanometer/smartlab/dao/DangerousEncodeMapper.java | 26 + src/main/java/com/nanometer/smartlab/service/DangerousEncodeService.java | 27 + src/main/webapp/resources/template/危化品编码导入模板.xlsx | 0 src/main/webapp/sys_dangerous_encode.xhtml | 238 +++++++++++ src/main/java/com/nanometer/smartlab/controller/DangerousEncodeController.java | 196 +++++++++ src/main/java/com/nanometer/smartlab/service/DangerousEncodeServiceImpl.java | 189 +++++++++ 9 files changed, 1,189 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/nanometer/smartlab/controller/DangerousEncodeController.java b/src/main/java/com/nanometer/smartlab/controller/DangerousEncodeController.java new file mode 100644 index 0000000..d7a4639 --- /dev/null +++ b/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; + } + + +} diff --git a/src/main/java/com/nanometer/smartlab/dao/DangerousEncodeMapper.java b/src/main/java/com/nanometer/smartlab/dao/DangerousEncodeMapper.java new file mode 100644 index 0000000..0a2bbdd --- /dev/null +++ b/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); +} \ No newline at end of file diff --git a/src/main/java/com/nanometer/smartlab/dao/DangerousEncodeMapper.xml b/src/main/java/com/nanometer/smartlab/dao/DangerousEncodeMapper.xml new file mode 100644 index 0000000..5bb352b --- /dev/null +++ b/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> \ No newline at end of file diff --git a/src/main/java/com/nanometer/smartlab/entity/DangerousEncode.java b/src/main/java/com/nanometer/smartlab/entity/DangerousEncode.java new file mode 100644 index 0000000..3fcceb2 --- /dev/null +++ b/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; + } + +} \ No newline at end of file diff --git a/src/main/java/com/nanometer/smartlab/service/DangerousEncodeService.java b/src/main/java/com/nanometer/smartlab/service/DangerousEncodeService.java new file mode 100644 index 0000000..eb0d5b6 --- /dev/null +++ b/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); +} diff --git a/src/main/java/com/nanometer/smartlab/service/DangerousEncodeServiceImpl.java b/src/main/java/com/nanometer/smartlab/service/DangerousEncodeServiceImpl.java new file mode 100644 index 0000000..a3d630f --- /dev/null +++ b/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); + + } + + +} diff --git a/src/main/webapp/WEB-INF/spring-menu.xml b/src/main/webapp/WEB-INF/spring-menu.xml index 98f0b38..143cdb8 100644 --- a/src/main/webapp/WEB-INF/spring-menu.xml +++ b/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> diff --git "a/src/main/webapp/resources/template/\345\215\261\345\214\226\345\223\201\347\274\226\347\240\201\345\257\274\345\205\245\346\250\241\346\235\277.xlsx" "b/src/main/webapp/resources/template/\345\215\261\345\214\226\345\223\201\347\274\226\347\240\201\345\257\274\345\205\245\346\250\241\346\235\277.xlsx" new file mode 100644 index 0000000..8acf068 --- /dev/null +++ "b/src/main/webapp/resources/template/\345\215\261\345\214\226\345\223\201\347\274\226\347\240\201\345\257\274\345\205\245\346\250\241\346\235\277.xlsx" Binary files differ diff --git a/src/main/webapp/sys_dangerous_encode.xhtml b/src/main/webapp/sys_dangerous_encode.xhtml new file mode 100644 index 0000000..89e02a7 --- /dev/null +++ b/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> \ No newline at end of file -- Gitblit v1.9.2