1、MaterialRegForm
package cecep.hundred.reports.model;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
public class MaterialRegForm {
private Integer id;
private String batchNumber; // 批次
private String batchYear; //批次年
@JsonFormat(pattern="yyyy-mm-dd")
private Date receiveTime; // 接收文件时间
private String provinces; //省份
private String fileName; //文件名称
@JsonFormat(pattern="yyyy-mm-dd")
private Date issuedTime; //印发时间
private String fileNumber; //文件编号
@JsonFormat(pattern="yyyy-mm-dd")
private Date submitYear; //报送年
private String submitQuarter; //报送季度
private Integer enterprisesNumber; //企业数
private String enterprisesName; //上报企业名称
private String recipient; //接收人
private String remarks; //备注
private Date createTime; // 排序时间
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getBatchNumber() {
return batchNumber;
}
public void setBatchNumber(String batchNumber) {
this.batchNumber = batchNumber;
}
public String getBatchYear() {
return batchYear;
}
public void setBatchYear(String batchYear) {
this.batchYear = batchYear;
}
public Date getReceiveTime() {
return receiveTime;
}
public void setReceiveTime(Date receiveTime) {
this.receiveTime = receiveTime;
}
public String getProvinces() {
return provinces;
}
public void setProvinces(String provinces) {
this.provinces = provinces;
}
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public Date getIssuedTime() {
return issuedTime;
}
public void setIssuedTime(Date issuedTime) {
this.issuedTime = issuedTime;
}
public String getFileNumber() {
return fileNumber;
}
public void setFileNumber(String fileNumber) {
this.fileNumber = fileNumber;
}
public Date getSubmitYear() {
return submitYear;
}
public void setSubmitYear(Date submitYear) {
this.submitYear = submitYear;
}
public String getSubmitQuarter() {
return submitQuarter;
}
public void setSubmitQuarter(String submitQuarter) {
this.submitQuarter = submitQuarter;
}
public Integer getEnterprisesNumber() {
return enterprisesNumber;
}
public void setEnterprisesNumber(Integer enterprisesNumber) {
this.enterprisesNumber = enterprisesNumber;
}
public String getEnterprisesName() {
return enterprisesName;
}
public void setEnterprisesName(String enterprisesName) {
this.enterprisesName = enterprisesName;
}
public String getRecipient() {
return recipient;
}
public void setRecipient(String recipient) {
this.recipient = recipient;
}
public String getRemarks() {
return remarks;
}
public void setRemarks(String remarks) {
this.remarks = remarks;
}
}
2、MaterialRegFormFile
package cecep.hundred.reports.model;
public class MaterialRegFormFile {
private int fileId; //附件id
private int materialId; //MaterialRegForm表ID主键
private String fileName; // 附件名称
private String filePath; // 存放路径
private String uploadName; //用户上传的文件名
public int getFileId() {
return fileId;
}
public void setFileId(int fileId) {
this.fileId = fileId;
}
public int getMaterialId() {
return materialId;
}
public void setMaterialId(int materialId) {
this.materialId = materialId;
}
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public String getFilePath() {
return filePath;
}
public void setFilePath(String filePath) {
this.filePath = filePath;
}
public String getUploadName() {
return uploadName;
}
public void setUploadName(String uploadName) {
this.uploadName = uploadName;
}
}
3、MaterialRegFormMapper
package cecep.hundred.reports.dao;
import cecep.hundred.reports.model.MaterialRegForm;
import cecep.hundred.reports.model.MaterialRegFormFile;
import com.alibaba.fastjson.JSONObject;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
public interface MaterialRegFormMapper {
/**
* 根据ID删除
* */
int deleteByPrimaryKey(Integer id);
/***
*
*添加
*/
int insert(MaterialRegForm record);
/**
* 不为NUll添加
* */
int insertSelective(MaterialRegForm record);
/**
* 根据ID查对象信息
* */
MaterialRegForm selectByPrimaryKey(Integer id);
/**
* 不为null 修改
* */
int updateByPrimaryKeySelective(MaterialRegForm record);
/**
* 修改
* */
int updateByPrimaryKey(MaterialRegForm record);
/**
* 查询总条数
* @return
*/
int countByObj();
/**
*
* 查询总数据
*/
List<MaterialRegForm> selectAll(JSONObject obj);
/**
* 根据ID查询 附加总数
* */
int countFile(@Param(value="id")Integer id);
//获取要删除的附件
public List<String> getFileUrlById(@Param("id")Integer id);
/**
* 获取已上传的附件
* @param
* @return
*/
public List<Map<String, Object>> getMaterialRegFormFiles(@Param("materialId")Integer materialId);
/**
* 插入数据
* @param entity
* @return
*/
public int insertFileMessage(MaterialRegFormFile entity);
/**
* 获取单条数据
* @param
* @return
*/
public MaterialRegFormFile getMaterialRegFormFileId(Integer materialId);
/**
* 删除文件数据通过ID(物理删除,从数据库中彻底删除)
* @param
* @return
*/
public int deleteFileById(Integer id);
/**
* 修改点击单个删除
* */
public int deleteFileByIds(Integer id);
/***
* 查询所有附件 下载使用
*/
List<MaterialRegFormFile> findMaterialRegFormFiles(Integer id);
//附件下载
MaterialRegFormFile downloadFileById(Integer id);
}
4、MaterialRegFormMapper.xml
<?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="cecep.hundred.reports.dao.MaterialRegFormMapper">
<resultMap id="BaseResultMap" type="cecep.hundred.reports.model.MaterialRegForm">
<id column="ID" jdbcType="INTEGER" property="id" />
<result column="batch_number" jdbcType="CHAR" property="batchNumber" />
<result column="batch_year" jdbcType="VARCHAR" property="batchYear" />
<result column="receive_time" jdbcType="DATE" property="receiveTime" />
<result column="provinces" jdbcType="CHAR" property="provinces" />
<result column="file_name" jdbcType="VARCHAR" property="fileName" />
<result column="issued_time" jdbcType="DATE" property="issuedTime" />
<result column="file_number" jdbcType="VARCHAR" property="fileNumber" />
<result column="submit_year" jdbcType="DATE" property="submitYear" />
<result column="submit_quarter" jdbcType="CHAR" property="submitQuarter" />
<result column="enterprises_number" jdbcType="INTEGER" property="enterprisesNumber" />
<result column="enterprises_name" jdbcType="VARCHAR" property="enterprisesName" />
<result column="recipient" jdbcType="VARCHAR" property="recipient" />
<result column="remarks" jdbcType="VARCHAR" property="remarks" />
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
</resultMap>
<!--附件表-->
<resultMap id="BaseResultMaps" type="cecep.hundred.reports.model.MaterialRegFormFile">
<result column="file_id" property="fileId" jdbcType="INTEGER" />
<result column="material_id" property="materialId" jdbcType="INTEGER" />
<result column="file_name" property="fileName" jdbcType="VARCHAR" />
<result column="file_path" property="filePath" jdbcType="VARCHAR" />
<result column="upload_name" property="uploadName" jdbcType="VARCHAR" />
</resultMap>
<sql id="Base_Column_List">
ID, batch_number, batch_year, receive_time, provinces, file_name, issued_time,
file_number, submit_year, submit_quarter, enterprises_number, enterprises_name, recipient,
remarks,create_time
</sql>
<select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from material_reg_form
where ID = #{id,jdbcType=INTEGER}
</select>
<!-- 查询 总条数-->
<select id="countByObj" resultType="java.lang.Integer">
SELECT
COUNT(*)
FROM material_reg_form
</select>
<!--查询所有数据-->
<select id="selectAll" resultType="cecep.hundred.reports.model.MaterialRegForm" resultMap="BaseResultMap">
SELECT
<include refid="Base_Column_List" />
FROM material_reg_form
<where>
<trim prefixOverrides="AND">
<if test="provinces != null and provinces != ''">
AND provinces = #{provinces,jdbcType=VARCHAR}
</if>
<if test="enterprisesName != null and enterprisesName != ''">
AND enterprises_name like concat('%',#{enterprisesName,jdbcType=VARCHAR},'%')
</if>
<if test="receiveTime != null and receiveTime != ''">
AND receive_time >= #{receiveTime,jdbcType=DATE}
</if>
<if test="batchNumber != null and batchNumber != ''">
AND batch_number = #{batchNumber,jdbcType=VARCHAR}
</if>
<if test="batchYear != null and batchYear != ''">
AND batch_year = #{batchYear,jdbcType=VARCHAR}
</if>
<if test="submitQuarter != null and submitQuarter != ''">
AND submit_quarter = #{submitQuarter,jdbcType=CHAR}
</if>
</trim>
</where>
order by create_time desc
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
delete from material_reg_form
where ID = #{id,jdbcType=INTEGER}
</delete>
<insert id="insert" parameterType="cecep.hundred.reports.model.MaterialRegForm" useGeneratedKeys="true" keyProperty="id">
insert into material_reg_form (ID, batch_number, batch_year,
receive_time, provinces, file_name,
issued_time, file_number, submit_year,
submit_quarter, enterprises_number, enterprises_name,
recipient, remarks,create_time)
values (#{id,jdbcType=INTEGER}, #{batchNumber,jdbcType=CHAR}, #{batchYear,jdbcType=VARCHAR},
#{receiveTime,jdbcType=DATE}, #{provinces,jdbcType=VARCHAR}, #{fileName,jdbcType=VARCHAR},
#{issuedTime,jdbcType=DATE}, #{fileNumber,jdbcType=VARCHAR}, #{submitYear,jdbcType=DATE},
#{submitQuarter,jdbcType=CHAR}, #{enterprisesNumber,jdbcType=INTEGER}, #{enterprisesName,jdbcType=VARCHAR},
#{recipient,jdbcType=VARCHAR}, #{remarks,jdbcType=VARCHAR},#{createTime,jdbcType=TIMESTAMP})
</insert>
<insert id="insertSelective" parameterType="cecep.hundred.reports.model.MaterialRegForm">
insert into material_reg_form
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">
ID,
</if>
<if test="batchNumber != null">
batch_number,
</if>
<if test="batchYear != null">
batch_year,
</if>
<if test="receiveTime != null">
receive_time,
</if>
<if test="provinces != null">
provinces,
</if>
<if test="fileName != null">
file_name,
</if>
<if test="issuedTime != null">
issued_time,
</if>
<if test="fileNumber != null">
file_number,
</if>
<if test="submitYear != null">
submit_year,
</if>
<if test="submitQuarter != null">
submit_quarter,
</if>
<if test="enterprisesNumber != null">
enterprises_number,
</if>
<if test="enterprisesName != null">
enterprises_name,
</if>
<if test="recipient != null">
recipient,
</if>
<if test="remarks != null">
remarks,
</if>
<if test="createTime != null">
create_time,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">
#{id,jdbcType=INTEGER},
</if>
<if test="batchNumber != null">
#{batchNumber,jdbcType=CHAR},
</if>
<if test="batchYear != null">
#{batchYear,jdbcType=VARCHAR},
</if>
<if test="receiveTime != null">
#{receiveTime,jdbcType=DATE},
</if>
<if test="provinces != null">
#{provinces,jdbcType=VARCHAR},
</if>
<if test="fileName != null">
#{fileName,jdbcType=VARCHAR},
</if>
<if test="issuedTime != null">
#{issuedTime,jdbcType=DATE},
</if>
<if test="fileNumber != null">
#{fileNumber,jdbcType=VARCHAR},
</if>
<if test="submitYear != null">
#{submitYear,jdbcType=DATE},
</if>
<if test="submitQuarter != null">
#{submitQuarter,jdbcType=CHAR},
</if>
<if test="enterprisesNumber != null">
#{enterprisesNumber,jdbcType=INTEGER},
</if>
<if test="enterprisesName != null">
#{enterprisesName,jdbcType=VARCHAR},
</if>
<if test="recipient != null">
#{recipient,jdbcType=VARCHAR},
</if>
<if test="remarks != null">
#{remarks,jdbcType=VARCHAR},
</if>
<if test="createTime != null">
#{createTime,jdbcType=VARCHAR},
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="cecep.hundred.reports.model.MaterialRegForm">
update material_reg_form
<set>
<if test="batchNumber != null">
batch_number = #{batchNumber,jdbcType=CHAR},
</if>
<if test="batchYear != null">
batch_year = #{batchYear,jdbcType=VARCHAR},
</if>
<if test="receiveTime != null">
receive_time = #{receiveTime,jdbcType=DATE},
</if>
<if test="provinces != null">
provinces = #{provinces,jdbcType=VARCHAR},
</if>
<if test="fileName != null">
file_name = #{fileName,jdbcType=VARCHAR},
</if>
<if test="issuedTime != null">
issued_time = #{issuedTime,jdbcType=DATE},
</if>
<if test="fileNumber != null">
file_number = #{fileNumber,jdbcType=VARCHAR},
</if>
<if test="submitYear != null">
submit_year = #{submitYear,jdbcType=DATE},
</if>
<if test="submitQuarter != null">
submit_quarter = #{submitQuarter,jdbcType=CHAR},
</if>
<if test="enterprisesNumber != null">
enterprises_number = #{enterprisesNumber,jdbcType=INTEGER},
</if>
<if test="enterprisesName != null">
enterprises_name = #{enterprisesName,jdbcType=VARCHAR},
</if>
<if test="recipient != null">
recipient = #{recipient,jdbcType=VARCHAR},
</if>
<if test="remarks != null">
remarks = #{remarks,jdbcType=VARCHAR},
</if>
</set>
where ID = #{id,jdbcType=INTEGER}
</update>
<update id="updateByPrimaryKey" parameterType="cecep.hundred.reports.model.MaterialRegForm">
update material_reg_form
set batch_number = #{batchNumber,jdbcType=CHAR},
batch_year = #{batchYear,jdbcType=VARCHAR},
receive_time = #{receiveTime,jdbcType=DATE},
provinces = #{provinces,jdbcType=VARCHAR},
file_name = #{fileName,jdbcType=VARCHAR},
issued_time = #{issuedTime,jdbcType=DATE},
file_number = #{fileNumber,jdbcType=VARCHAR},
submit_year = #{submitYear,jdbcType=DATE},
submit_quarter = #{submitQuarter,jdbcType=CHAR},
enterprises_number = #{enterprisesNumber,jdbcType=INTEGER},
enterprises_name = #{enterprisesName,jdbcType=VARCHAR},
recipient = #{recipient,jdbcType=VARCHAR},
remarks = #{remarks,jdbcType=VARCHAR}
where ID = #{id,jdbcType=INTEGER}
</update>
<!-- 根据ID查询附件总数 -->
<select id="countFile" resultType="java.lang.Integer">
SELECT count(1) from material_reg_form_file WHERE material_id=#{id}
</select>
<!-- 获取要删除的附件地址 -->
<select id="getFileUrlById" resultType="java.lang.String">
SELECT file_path from material_reg_form_file
where material_id=#{id}
</select>
<!-- 获取已上传的附件 -->
<select id="getMaterialRegFormFiles" resultMap="BaseResultMaps">
SELECT file_id,file_name,file_path,material_id,upload_name from material_reg_form_file WHERE material_id=#{materialId}
</select>
<!-- 插入数据 -->
<insert id="insertFileMessage">
INSERT INTO material_reg_form_file(
file_id,
file_name,
file_path,
material_id,
upload_name
) VALUES (
#{fileId},
#{fileName},
#{filePath},
#{materialId},
#{uploadName}
)
</insert>
<!-- 上传 获取单条附件 用于点击下载 -->
<select id="getMaterialRegFormFileId" resultType="cecep.hundred.reports.model.MaterialRegFormFile" resultMap="BaseResultMaps">
SELECT file_id , file_name ,file_path ,material_id from material_reg_form_file WHERE material_id=#{materialId}
</select>
<!-- 删除文件数据通过ID(物理删除,从数据库中彻底删除)全部删除 -->
<delete id="deleteFileById">
DELETE FROM material_reg_form_file
WHERE material_id = #{id}
</delete>
<!-- 根据fileId删除 -->
<delete id="deleteFileByIds">
DELETE FROM material_reg_form_file
WHERE file_id = #{id}
</delete>
<!-- 查询所有附件 下载使用 -->
<select id="findMaterialRegFormFiles" resultType="cecep.hundred.reports.model.MaterialRegFormFile" resultMap="BaseResultMaps">
SELECT file_id,file_name,file_path,material_id from material_reg_form_file WHERE material_id=#{materialId}
</select>
<!-- 根据附件id获取单条附件 -->
<select id="downloadFileById" resultType="cecep.hundred.reports.model.MaterialRegFormFile" resultMap="BaseResultMaps">
SELECT file_id, file_name ,file_path ,material_id,upload_name from material_reg_form_file WHERE file_id=#{id}
</select>
<!-- 根据年查询季度 批次 -->
<select id="selectBatchNumber" resultType="java.lang.Integer">
select batch_number from material_reg_form where
<if test="batchYear != null and batchYear != ''">
batch_year = #{batchYear}
</if>
</select>
<select id="selectSubmitQuarter" resultType="java.lang.Integer">
select submit_quarter from material_reg_form where
<if test="batchYear != null and batchYear != ''">
batch_year = #{batchYear}
</if>
</select>
</mapper>
5、MaterialRegFormService
package cecep.hundred.reports.service;
import cecep.hundred.reports.model.MaterialRegForm;
import cecep.hundred.reports.model.MaterialRegFormFile;
import cecep.hundred.util.CustomException;
import com.alibaba.fastjson.JSONObject;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
public interface MaterialRegFormService {
/**
* 根据ID删除
* */
int deleteByPrimaryKey(Integer id);
/***
*
*添加
*/
int insert(MaterialRegForm record);
/**
* 不为NUll添加
* */
int insertSelective(MaterialRegForm record);
/**
* 根据ID查对象信息
* */
MaterialRegForm selectByPrimaryKey(Integer id);
/**
* 不为null 修改
* */
int updateByPrimaryKeySelective(MaterialRegForm record);
/**
* 修改
* */
int updateByPrimaryKey(MaterialRegForm record);
/**
* 查询总条数
* @return
*/
int countByObj();
/**
*
* 查询总数据
*/
Object selectAll(JSONObject obj) throws CustomException;
/**
* 根据ID查询 附加总数
* */
int countFile(@Param(value="id")Integer id);
//获取要删除的附件
public List<String> getFileUrlById(@Param("id")Integer id);
/**
* 获取已上传的附件
* @param
* @return
*/
public List<Map<String, Object>> getMaterialRegFormFiles(@Param("materialId")Integer materialId);
/**
* 插入数据
* @param entity
* @return
*/
public int insertFileMessage(MaterialRegFormFile entity);
/**
* 获取单条数据
* @param
* @return
*/
public MaterialRegFormFile getMaterialRegFormFileId(Integer materialId);
/**
* 删除文件数据通过ID(物理删除,从数据库中彻底删除)
* @param
* @return
*/
public int deleteFileById(Integer id);
List<MaterialRegFormFile> findMaterialRegFormFiles(Integer id);
//附件下载
MaterialRegFormFile downloadFileById(Integer id);
}
6、MaterialRegFormServiceImpl
package cecep.hundred.reports.service.impl;
import cecep.hundred.reports.dao.MaterialRegFormMapper;
import cecep.hundred.reports.model.DeductionCause;
import cecep.hundred.reports.model.MaterialRegForm;
import cecep.hundred.reports.model.MaterialRegFormFile;
import cecep.hundred.reports.service.MaterialRegFormService;
import cecep.hundred.util.CustomException;
import cecep.hundred.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* @Author: ysw
* @Date: 2019/10/28 9:50
*/
@Service
public class MaterialRegFormServiceImpl implements MaterialRegFormService {
@Autowired
MaterialRegFormMapper materialRegFormMapper;
@Value("${noticeAddress}")
public String noticeAddress; //附件存放地址
private Integer returnId;
@Override
public int deleteByPrimaryKey(Integer id) {
return materialRegFormMapper.deleteByPrimaryKey(id);
}
// 添加 + 修改
@Override
public int insert(MaterialRegForm record) {
try {
if (ObjectUtil.isNull(record)) {
throw new CustomException(CustomException.EXCEPTION_INFO_MESSAGE.PARAMETER_VERIFY_ERROR.value());
}
synchronized (this) {
if (ObjectUtil.isNull(record.getId())) {
record.setCreateTime(new Date());
materialRegFormMapper.insert(record);
} else {
this.materialRegFormMapper.updateByPrimaryKey(record);
}
}
} catch (CustomException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
returnId=record.getId();
return 0;
}
@Override
public int insertSelective(MaterialRegForm record) {
return materialRegFormMapper.insertSelective(record);
}
@Override
public MaterialRegForm selectByPrimaryKey(Integer id) {
try {
if (ObjectUtil.isNull(id)) {
throw new CustomException(CustomException.EXCEPTION_INFO_MESSAGE.PARAMETER_VERIFY_ERROR.value());
}
} catch (CustomException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return materialRegFormMapper.selectByPrimaryKey(id);
}
@Override
public int updateByPrimaryKeySelective(MaterialRegForm record) {
return materialRegFormMapper.updateByPrimaryKeySelective(record);
}
@Override
public int updateByPrimaryKey(MaterialRegForm record) {
return materialRegFormMapper.updateByPrimaryKey(record);
}
/***
* 查询总记录
*/
@Override
public int countByObj() {
return materialRegFormMapper.countByObj();
}
/**
* 查询所有
* */
@Override
public Object selectAll(JSONObject obj) throws CustomException {
try {
final int total = materialRegFormMapper.countByObj();
List<MaterialRegForm> resultList = materialRegFormMapper.selectAll(obj);
HashMap<String,Object> map = new HashMap();
map.put("total", total);
map.put("list", resultList);
return map;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/* 附件方法 */
@Override
public int countFile(Integer id) {
return materialRegFormMapper.countFile(id);
}
@Override
public List<String> getFileUrlById(Integer id) {
return materialRegFormMapper.getFileUrlById(id);
}
@Override
public List<Map<String, Object>> getMaterialRegFormFiles(Integer materialId) {
return materialRegFormMapper.getMaterialRegFormFiles(materialId);
}
@Override
public int insertFileMessage(MaterialRegFormFile entity) {
return materialRegFormMapper.insertFileMessage(entity);
}
@Override
public MaterialRegFormFile getMaterialRegFormFileId(Integer materialId) {
return materialRegFormMapper.getMaterialRegFormFileId(materialId);
}
@Override
public int deleteFileById(Integer id) {
return materialRegFormMapper.deleteFileById(id);
}
@Override
public List<MaterialRegFormFile> findMaterialRegFormFiles(Integer id) {
return materialRegFormMapper.findMaterialRegFormFiles(id);
}
@Override
public MaterialRegFormFile downloadFileById(Integer id) {
return materialRegFormMapper.downloadFileById(id);
}
//附件上传
@Transactional(readOnly = false)
public void importMaterialRegFormFile(CommonsMultipartFile file, Integer id) {
int count = this.materialRegFormMapper.countFile(id);
// 获取上传文件的名称
String oldFileName = file.getOriginalFilename();
//带uuid的名称存到数据库
String uuid = UUID.randomUUID().toString().replace("-", "").toLowerCase();
String fileNameSuffix = uuid+file.getOriginalFilename();
try {
//判断给的路径中是否存在最后的
if (noticeAddress.lastIndexOf("/") != (noticeAddress.length() - 1)) {
noticeAddress += "/";
}
File saveFile = new File(noticeAddress + fileNameSuffix);
File saveFileUrl = new File(noticeAddress);
//判断文件夹是否存在,不存在的情况下创建父级目录
if (!saveFileUrl.isDirectory()) {
saveFileUrl.mkdirs();
}
//判断文件是否存在,如果不存在的情况下再去保存文件
file.transferTo(saveFile);
//如果文件正常存入的话
if (count == 0) {//新增
MaterialRegFormFile d = new MaterialRegFormFile();
d.setFilePath(noticeAddress + fileNameSuffix);
d.setFileName(fileNameSuffix);
d.setMaterialId(returnId);
d.setUploadName(oldFileName);
this.materialRegFormMapper.insertFileMessage(d);
} else {//修改
MaterialRegFormFile d = new MaterialRegFormFile();
d.setFilePath(noticeAddress + fileNameSuffix);
d.setFileName(fileNameSuffix);
d.setMaterialId(returnId);
d.setUploadName(oldFileName);
this.materialRegFormMapper.insertFileMessage(d);
}
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 直接删除删除的附件并删除全部
* */
@Transactional(readOnly = false)
public void deleteFileByUpdate(Integer id) {
//获取需要删除的文件的路径
List<String> fileUrlList = new ArrayList<String>();
fileUrlList = this.materialRegFormMapper.getFileUrlById(id);
materialRegFormMapper.deleteFileById(id); //删除文件数据通过ID(物理删除,从数据库中彻底删除)
//数据库中的数据删除成功后,删除文件路径下的文件
for (int i = 0; i < fileUrlList.size(); i++) {
File file = new File(fileUrlList.get(i).toString());
if (file.exists() && file.isFile()) {
file.delete();
}
}
}
/**
* 删除单条
* */
@Transactional(readOnly = false)
public void deleteFileByUpdates(Integer id) {
if (id != null){
//获取需要删除的文件的路径
List<String> fileUrlList = new ArrayList<String>();
// 根据 fileId获取单条数据
MaterialRegFormFile materialRegFormFile = materialRegFormMapper.downloadFileById(id);
if (materialRegFormFile!=null){
String filePath = materialRegFormFile.getFilePath();
fileUrlList.add(filePath);
}
materialRegFormMapper.deleteFileByIds(id);
//数据库中的数据删除成功后,删除文件路径下的文件
for (int i = 0; i < fileUrlList.size(); i++) {
File file = new File(fileUrlList.get(i).toString());
if (file.exists() && file.isFile()) {
file.delete();
}
}
}
}
}
7、MaterialRegFormController
package cecep.hundred.reports.controller;
import cecep.hundred.reports.model.MaterialRegForm;
import cecep.hundred.reports.model.MaterialRegFormFile;
import cecep.hundred.reports.service.impl.MaterialRegFormServiceImpl;
import cecep.hundred.util.JsonUtils;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.SocketException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* @Author: ysw
* @Date: 2019/10/28 10:22
*/
@Controller
@RequestMapping("/materialRegForm")
public class MaterialRegFormController {
private static final Logger logger = Logger.getLogger(MaterialRegFormController.class);
@Autowired
MaterialRegFormServiceImpl materialRegFormService;
/**
* 查询所有数据
* */
@RequestMapping(value = "/getMaterialRegForm")
public void getMaterialRegForm(@RequestBody JSONObject obj, HttpServletResponse response,HttpServletRequest request) {
try {
if(obj.get("receiveTime")!="" && obj.get("receiveTime")!=null){
String receiveTime = (String)obj.get("receiveTime");
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date date = format.parse(receiveTime);
obj.put("receiveTime",date);
}
Object result = this.materialRegFormService.selectAll(obj);
JsonUtils.write_json(response, JSONObject.toJSONString(JsonUtils.setJosnStr("1", "", result), SerializerFeature.WriteMapNullValue));
} catch (Exception e) {
JsonUtils.write_json(response, JsonUtils.setJosnStr("0", e.getMessage()).toString());
}
}
/**
* 添加 + 修改
* */
@RequestMapping(value = "/saveFunction")
public void saveFunction(@RequestBody JSONObject obj, HttpServletResponse response) {
try {
MaterialRegForm record = JSONObject.toJavaObject(obj, MaterialRegForm.class);
materialRegFormService.insert(record);
JsonUtils.write_json(response, JsonUtils.setJosnStr("1", "保存成功", null).toString());
} catch (Exception e) {
e.printStackTrace();
JsonUtils.write_json(response, JsonUtils.setJosnStr("0", e.getMessage()).toString());
}
}
/***
*根据主键查对象信息
*
*/
@RequestMapping(value = "/selectById/{id}")
public void getFunctionById(@PathVariable Integer id, HttpServletResponse response) {
try {
Object result = this.materialRegFormService.selectByPrimaryKey(id);
System.out.println(JSONObject.toJSONString(JsonUtils.setJosnStr("1", "成功", result)));
JsonUtils.write_json(response, JSONObject.toJSONString(JsonUtils.setJosnStr("1", "成功", result), SerializerFeature.WriteMapNullValue));
} catch (Exception e) {
JsonUtils.write_json(response, JsonUtils.setJosnStr("0", e.getMessage()).toString());
}
}
/**
* 根据ID删除
* */
@RequestMapping(value = "/deleteFunction/{id}")
public void deleteFunction(@PathVariable Integer id, HttpServletResponse response) {
try {
materialRegFormService.deleteFileByUpdate(id); //通过ID删除数据 并删除文件
this.materialRegFormService.deleteByPrimaryKey(id); // 删除数据
JsonUtils.write_json(response, JsonUtils.setJosnStr("1", "成功", null).toString());
} catch (Exception e) {
JsonUtils.write_json(response, JsonUtils.setJosnStr("0", e.getMessage()).toString());
}
}
/**
*
* 通过修改删除文件
* */
@RequestMapping(value = "/deleteFileByUpdate")
public void deleteFileByUpdate(String deleteFileArr,String divLength,HttpServletResponse response) {
try{
String idArray[] =deleteFileArr.substring(0, deleteFileArr.length()-1).split(",");
for(String id : idArray){
int i = Integer.valueOf(id);
materialRegFormService.deleteFileByUpdates(i);
}
JsonUtils.write_json(response, JsonUtils.setJosnStr("1", "保存成功", "").toString());
}catch (Exception e){
e.printStackTrace();
JsonUtils.write_json(response, JsonUtils.setJosnStr("", "删除附件失败", "").toString());
}
}
/**
* 上传附件
* */
@RequestMapping("/importMaterialRegFormFile")
public void importMaterialRegFormFile(@RequestParam(value = "file") CommonsMultipartFile file, @RequestParam(value = "materialId") Integer id, HttpServletResponse response,HttpServletRequest request){
try {
materialRegFormService.importMaterialRegFormFile(file,id);
JsonUtils.write_json(response, JsonUtils.setJosnStr("1", "成功", "上传成功").toString());
} catch (Exception e) {
e.printStackTrace();
JsonUtils.write_json(response, JsonUtils.setJosnStr("0", "失败", "失败").toString());
}
}
//获取上传完成的附件
@RequestMapping("/getMaterialRegFormFiles")
public void getMaterialRegFormFiles(@RequestParam(value = "materialId")Integer materialId,HttpServletResponse response){
try {
Map<String, Object> result=new HashMap<String, Object>();
List<Map<String, Object>> list=this.materialRegFormService.getMaterialRegFormFiles(materialId);
result.put("list", list);
result.put("success", true);
JsonUtils.write_json(response, JsonUtils.setJosnStr("1", "成功", result).toString());
} catch (Exception e) {
e.printStackTrace();
JsonUtils.write_json(response, JsonUtils.setJosnStr("0", "失败", "失败").toString());
}
}
//单个附件下载
@ResponseBody
@RequestMapping(value = "/downloadFile")
public void downloadFileById(Integer id, HttpServletRequest request, HttpServletResponse response) {
MaterialRegFormFile materialRegFormFile = materialRegFormService.downloadFileById(id);
String filePath = materialRegFormFile.getFilePath();
String fileName = materialRegFormFile.getUploadName();
try {
InputStream in = new FileInputStream(filePath);
String userAgent = request.getHeader("User-Agent");
// 针对IE或者以IE为内核的浏览器:Chrome
if (userAgent.contains("MSIE") || userAgent.contains("Trident") || userAgent.contains("Chrome")) {
fileName = java.net.URLEncoder.encode(fileName, "UTF-8");
} else {
// 非IE浏览器的处理:
fileName = response.encodeURL(new String(fileName.getBytes("UTF-8"), "ISO-8859-1"));
}
response.addHeader("Content-Disposition", "attachment;filename=" + fileName);
response.setContentType("application/octet-stream");
BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream());
int len = 0;
while ((len = in.read()) != -1) {
out.write(len);
out.flush();
}
out.close();
in.close();
} catch (SocketException s){
}catch (IOException e) {
e.printStackTrace();
}
}
@Value("${noticeAddress}")
public String noticeAddress; //附件存放地址
//查询附件是否存在
@RequestMapping(value = "/downloadFindFile")
public void downloadFindFile(Integer id, HttpServletRequest request, HttpServletResponse response) {
try {
MaterialRegFormFile materialRegFormFile = materialRegFormService.downloadFileById(id);
String fileName = materialRegFormFile.getFileName();
Boolean isExits = false;
//判断磁盘文件是否存在
File resource = new File(noticeAddress);
File[] reportList = resource.listFiles();
if(reportList != null) {
for (int i = 0; i < reportList.length; i++) {
if (reportList[i].isFile()) {
if (reportList[i].getName().length() >= fileName.length()) {// 文件夹中文件名称长度 >= 存储时报告名称
if (fileName.equals(reportList[i].getName().substring(0, fileName.length()))) {// 看名字是否一致
isExits = true;
}
}
}
}
}
if (isExits == false) {
JsonUtils.write_json(response, JSONObject.toJSONString(JsonUtils.setJosnStr("0", "磁盘文件不存在", "磁盘文件不存在"), SerializerFeature.WriteMapNullValue));
}
else {
JsonUtils.write_json(response, JSONObject.toJSONString(JsonUtils.setJosnStr("1", "存在可以下载", ""), SerializerFeature.WriteMapNullValue));
}
} catch (Exception e) {
e.printStackTrace();
JsonUtils.write_json(response, JSONObject.toJSONString(JsonUtils.setJosnStr("1", "成功", "附件异常,请联系管理员"), SerializerFeature.WriteMapNullValue));
}
}
}
8、文件地址
noticeAddress=c\:/mepscc/fileUpload/notice/
9、jsp页面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" %>
<% String pageName = "/report/toManagement"; %>
<%@include file="../leftFun.jsp" %>
<link rel="shortcut icon" href="#"/>
<link rel="stylesheet" href="<%=basePath%>/plugins/bootstrap-select-1.13.2/dist/css/bootstrap-select.css">
<link rel="stylesheet" href="<%=basePath%>/plugins/datatables/dataTables.bootstrap4.css">
<link rel="stylesheet"
href="${pageContext.request.contextPath }/dist/js/plugins/bootstrap/css/bootstrap-datetimepicker.min.css">
<link rel="stylesheet" href="<%=basePath%>/plugins/bootstrap/css/bootstrap.css">
<%--webupload 样式 --%>
<link rel="stylesheet" href="<%=basePath%>/plugins/webuploader-0.1.5/webuploader-0.1.5/css/webuploader.css">
<!-- Bootstrap 4 -->
<script src="<%=basePath%>/plugins/bootstrap/js/bootstrap.bundle.min.js"></script>
<!-- DataTables -->
<script src="<%=basePath%>/plugins/datatables/jquery.dataTables.js"></script>
<script src="<%=basePath%>/plugins/datatables/dataTables.bootstrap4.js"></script>
<!-- SlimScroll -->
<script src="<%=basePath%>/plugins/slimScroll/jquery.slimscroll.min.js"></script>
<!-- FastClick -->
<script src="<%=basePath%>/plugins/fastclick/fastclick.js"></script>
<script src="<%=basePath%>/plugins/timepicker/bootstrap-timepicker.min.js"></script>
<!-- AdminLTE App -->
<script src="<%=basePath%>/dist/js/adminlte.min.js"></script>
<!-- AdminLTE for demo purposes -->
<script src="<%=basePath%>/dist/js/demo.js"></script>
<script src="<%=basePath%>/plugins/select2/select2.full.min.js"></script>
<!-- InputMask -->
<script src="<%=basePath%>/plugins/input-mask/jquery.inputmask.js"></script>
<script src="<%=basePath%>/plugins/input-mask/jquery.inputmask.date.extensions.js"></script>
<script src="<%=basePath%>/plugins/input-mask/jquery.inputmask.extensions.js"></script>
<script src="<%=basePath%>/plugins/daterangepicker/moment.min.js"></script>
<%--<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.2/moment.min.js"></script>--%>
<script src="<%=basePath%>/plugins/bootstrap/js/bootstrap.js"></script>
<script src="<%=basePath%>/dist/js/plugins/jquery/jquery.js"></script>
<script src="<%=basePath%>/dist/js/plugins/jquery/core.js"></script>
<script src="<%=basePath %>/plugins/bootstrap/js/bootstrap-datetimepicker.js"></script>
<script src="<%=basePath %>/plugins/bootstrap/js/locales/bootstrap-datetimepicker.zh-CN.js"></script>
<script src="<%=basePath %>/plugins/bootstrap-select-1.13.2/dist/js/bootstrap-select.js"></script>
<script src="<%=basePath %>/plugins/utils.js"></script>
<script src="<%=basePath %>/plugins/layUI/layer.js"></script>
<%-- webupload --%>
<script src="<%=basePath %>/plugins/webuploader-0.1.5/webuploader-0.1.5/dist/webuploader.js"></script>
<style>
#picker div:nth-child(2) {
width: 100% !important;
height: 100% !important;
}
</style>
<div>
<div class="content-wrapper">
<section class="content-header">
</section>
<!-- Main content -->
<section class="content">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<h3 class="card-title" style="margin-bottom: 0rem;">报告接收管理</h3>
</div>
<!-- /.card-header -->
<div class="card-body">
<form id="formReset" action="${pageContext.request.contextPath }/" method="post">
<div class="card-body">
<div class="row">
<div class="col-md-3">
<div class="form-group">
<label for="province">省份:</label>
<input list="browsers_province" class="form-control" type="text"
id="province" name="province" placeholder="">
<datalist id="browsers_province">
</datalist>
</div>
</div>
<div class="col-md-3">
<div class="form-group">
<label for="companyName">企业名称:</label>
<input list="browsers_companyName" class="form-control" type="text"
id="companyName" name="companyName" placeholder="">
<datalist id="browsers_companyName">
</datalist>
</div>
</div>
<div class="col-md-3">
<div class="form-group">
<label for="report_year">文件接收时间:</label>
<input class="form-control year-dates" type="text" id="report_year"
name="report_year" placeholder="">
</div>
</div>
<div class="col-md-3">
<div class="form-group">
<label for="report_year">所属年度:</label>
<input type="text" class="form-control year-date " id="batchYear" name="batchYear">
</div>
</div>
<div class="col-md-3">
<div class="form-group">
<label for="batchNumber">批次:</label>
<select class="form-control select" id="batchNumber" name="batchNumber">
</select>
</div>
</div>
<div class="col-md-3">
<div class="form-group">
<label for="batchNumber">报送季度:</label>
<select class="form-control select" id="submitQuarter2" name="submitQuarter">
</select>
</div>
</div>
</div>
<div class="col-md-12">
<button type="button" class="btn btn-default float-right"
style="margin-right:10px;" onclick="fReset();">重置
</button>
<button id="query" type="button" class="btn btn-default float-right"
style="margin-right:10px;">查询
</button>
<button id="insert" type="button" class="btn btn-default float-right insert"
style="margin-right:10px;">新增
</button>
</div>
</div>
</form>
<table id="dataTable" class="table table-bordered table-striped dataTable" style="text-align:center">
<thead>
<tr>
<th width="" style="white-space:nowrap;"><span style="color: white;">修改</span></th>
<th width="" style="white-space:nowrap;">所属年份</th>
<th width="15%" style="white-space:nowrap;">批次</th>
<th width="" style="white-space:nowrap;">报送季度</th>
<th width="" style="white-space:nowrap;">文件接收时间</th>
<th width="" style="white-space:nowrap;">省份/市</th>
<th width="" style="white-space:nowrap;">文件名称</th>
<th width="12%" style="white-space:nowrap;">印发时间时间</th>
<th width="" style="white-space:nowrap;">文件编号</th>
<th width="" style="white-space:nowrap;">企业数</th>
<th width="" style="white-space:nowrap;">上报企业</th>
<th width="" style="white-space:nowrap;">接收人</th>
<th width="" style="white-space:nowrap;">备注</th>
<th width="" style="white-space:nowrap;"><span style="color: white;">删除</span></th>
</tr>
</thead>
<tbody></tbody>
</table>
</div>
</div>
</div>
</div>
</section>
</div>
<%@include file="../footer.jsp" %>
<aside class="control-sidebar control-sidebar-dark">
</aside>
</div>
<%-- 新增页面模态框 --%>
<div class="modal fade" id="myModal-save-info" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"
aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header" style="text-align: center">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title" id="myModalLabel" style="text-align: center">报告接收管理</h4>
</div>
<form class="form-horizontal" role="form" id="saveForm">
<input type="hidden" id="id" name="id" value=""/>
<div class="modal-body">
<div class="form-group">
<label for="batchYear" class="col-sm-10 control-label no-padding-right">所属年度:</label>
<input class="form-control year-date" type="text" id="batchYear2" name="batchYear">
<label for="province" class="col-sm-10 control-label no-padding-right">批次:</label>
<select class="form-control select" id="pc" name="batchNumber">
<option value=""></option>
<option value="1">第一批次</option>
<option value="2">第二批次</option>
<option value="3">第三批次</option>
<option value="4">第四批次</option>
</select>
<label for="province" class="col-sm-10 control-label no-padding-right">接收文件时间:</label>
<input class="form-control year-dates" type="text" id="receiveTime" name="receiveTime" value="">
<label for="province" class="col-sm-10 control-label no-padding-right">省份:</label>
<input list="browsers_provinces" class="form-control" type="text" multiple=multiple
id="provinces" name="provinces">
<datalist id="browsers_provinces">
</datalist>
<label for="province" class="col-sm-10 control-label no-padding-right">文件名称:</label>
<input class="form-control" type="text" id="fileName" name="fileName">
<label for="province" class="col-sm-10 control-label no-padding-right">印发时间:</label>
<input class="form-control year-dates" type="text" id="issuedTime" name="issuedTime" value="">
<label for="province" class="col-sm-10 control-label no-padding-right">文件编号:</label>
<input class="form-control" type="text" id="fileNumber" name="fileNumber">
<label for="province" class="col-sm-10 control-label no-padding-right">报送季度:</label>
<select class="form-control select" id="submitQuarter" name="submitQuarter">
<option value=""></option>
<option value="1">第一季度</option>
<option value="2">第二季度</option>
<option value="3">第三季度</option>
<option value="4">第四季度</option>
</select>
<label for="companyName" class="col-sm-10 control-label no-padding-right">企业名称:</label>
<%-- <input list="browsers_companyNames" class="form-control" type="text" id="enterprisesName" name="enterprisesName">
<datalist id="browsers_companyNames">
</datalist>--%>
<select class="form-control selectpicker" multiple="multiple" title="可多选" id="enterprisesName" name="enterprisesName" >
</select>
<input type="hidden" id="hiddEnterprisesName" value="" name="" >
<label for="province" class="col-sm-10 control-label no-padding-right">企业数:</label>
<input class="form-control" type="text" id="enterprisesNumber" name="enterprisesNumber" readonly="readonly" onkeyup="value=value.replace(/[^\d]/g,'')">
<label for="province" class="col-sm-10 control-label no-padding-right">接收人:</label>
<input class="form-control" type="text" id="recipient" name="recipient">
<label for="province" class="col-sm-10 control-label no-padding-right">备注:</label>
<input class="form-control" type="text" id="remarks" name="remarks">
</div>
<div id="uploader" class="wu-example">
<!--用来存放文件信息-->
<div id="thelist" class="uploader-list"></div>
<div class="btns">
<div id="picker">选择文件</div>
<a style="color:red;">单个上传文件的大小不能超过10MB,一次最多上传三个文件</a>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
<button type="button" class="btn btn-primary btn-insert" >提交</button>
</div>
</form>
</div>
</div>
</div>
<script type="text/javascript">
var eName="";
function query() {
var provinces = ""; // 省份
var enterprisesName = ""; // 企业名称
var receiveTime = ""; //文件接收时间时间
var batchNumber = ""; // 批次
var batchYear=""; //年度
var submitQuarter=""; // 季度
provinces = $('#province').val();
enterprisesName = $('#companyName').val();
receiveTime = $('#report_year').val();
batchNumber = $('#batchNumber').val();
batchYear = $("#batchYear").val();
// name=$("#electronic_name").find("option:selected").text();
submitQuarter = $("#submitQuarter2").val();
$.ajax({
url: '${pageContext.request.contextPath }/materialRegForm/getMaterialRegForm',
type: 'post',
data: JSON.stringify(
{
"provinces": provinces,
"enterprisesName": enterprisesName,
"receiveTime": receiveTime,
"batchNumber": batchNumber,
"batchYear":batchYear,
"submitQuarter":submitQuarter
}
),
dataType: 'json',
contentType: 'application/json; charset=utf-8',
success: function (data) {
//console.log(data.data.list[0]);
$('#dataTable tbody').empty();
if (data.data.list.length > 0 && data.data.list != null) {
var data_con;
for (var i = 0; i < data.data.list.length; i++) {
//需要创建的内容
if (i % 2 == 1) {
data_con += '<tr role="row" class="even" >';
} else {
data_con += '<tr role="row" class="odd" >';
}
data_con += '<td>' + '<a href="javascript:void(0)" class="btn-update">修改</a><input type="checkbox" style="display: none" class="minimal" value="' + nullToEmptyStr(data.data.list[i].id) + '" name="disassembleId" id="disassembleId"/>' + '</td>';
data_con += '<td>' + nullToEmptyStr(data.data.list[i].batchYear) + '</td>';
if (data.data.list[i].batchNumber == "1") {
data_con += '<td>' + "第一批次" + '</td>';
} else if (data.data.list[i].batchNumber == "2") {
data_con += '<td>' + "第二批次" + '</td>';
} else if (data.data.list[i].batchNumber == "3") {
data_con += '<td>' + "第三批次" + '</td>';
} else if (data.data.list[i].batchNumber == "4") {
data_con += '<td>' + "第四批次" + '</td>';
} else {
data_con += '<td>' + "" + '</td>';
}
if (data.data.list[i].submitQuarter == "1") {
data_con += '<td>' + "第一季度" + '</td>';
} else if (data.data.list[i].submitQuarter == "2") {
data_con += '<td>' + "第二季度" + '</td>';
} else if (data.data.list[i].submitQuarter == "3") {
data_con += '<td>' + "第三季度" + '</td>';
} else if (data.data.list[i].submitQuarter == "4") {
data_con += '<td>' + "第四季度" + '</td>';
} else {
data_con += '<td>' + "" + '</td>';
}
data_con += '<td>' + new Date(Number(data.data.list[i].receiveTime)).getFullYear() + '-' + p((new Date(Number(data.data.list[i].receiveTime)).getMonth() + 1)) + '-' + p(new Date(Number(data.data.list[i].receiveTime)).getDate()) + '</td>';
data_con += '<td>' + nullToEmptyStr(data.data.list[i].provinces) + '</td>';
data_con += '<td class="cause">' + nullToEmptyStr(cutStr_5(data.data.list[i].fileName)) + '</td>';
data_con += '<td style="display:none;">' + nullToEmptyStr(data.data.list[i].fileName) + '</td>';
data_con += '<td>' + new Date(Number(data.data.list[i].issuedTime)).getFullYear() + '-' + p((new Date(Number(data.data.list[i].issuedTime)).getMonth() + 1)) + '-' + p(new Date(Number(data.data.list[i].issuedTime)).getDate()) + '</td>';
data_con += '<td>' + nullToEmptyStr(data.data.list[i].fileNumber) + '</td>';
data_con += '<td>' + nullToEmptyStr(data.data.list[i].enterprisesNumber) + '</td>';
data_con += '<td class="cause">' + nullToEmptyStr(cutStr_5(removeBlock(data.data.list[i].enterprisesName))) + '</td>';
data_con += '<td style="display:none;">' + nullToEmptyStr(removeBlock(data.data.list[i].enterprisesName)) + '</td>';
data_con += '<td>' + nullToEmptyStr(data.data.list[i].recipient) + '</td>';
data_con += '<td class="cause">' + nullToEmptyStr(cutStr_2(data.data.list[i].remarks)) + '</td>';
data_con += '<td style="display:none;">' + nullToEmptyStr(data.data.list[i].remarks) + '</td>';
data_con += '<td>' + '<a href="javascript:void(0)" class="btn-delete">删除</a><input type="checkbox" style="display: none" class="minimal" value="' + nullToEmptyStr(data.data.list[i].id) + '" name="disassembleId" id="disassembleId"/>' + '</td>';
data_con += '</tr>';
//合并单元格
}
$('#dataTable tbody').html(data_con);
} else {
layer.msg("无数据");
}
}
})
}
//补0
function p(s) {
return s < 10 ? '0' + s : s;
}
$('#query').click(function () {
query();
});
$(document).ready(function () {
query();
});
//截取显示字符长度
function cutStr_5(str) {
if (str != null && str != "null") {
str = str.replace(' ', '').substring(0, 4)
}
return str;
}
function cutStr_2(str) {
if (str != null && str != "null") {
str = str.replace(' ', '').substring(0, 2)
}
return str;
}
//显示字符0补NULL
function nullToEmptyStr(str) {
if (!str) {
if (str == 0) {
return 0;
}
return '';
}
return str;
}
/*重置文件选择框
*/
function resetFile() {
if (window.navigator.userAgent.indexOf("MSIE") >= 1) { // 此处判断是否是IE
$('#file').replaceWith($('#file').clone(true));
} else {
$('#file').val('');
}
}
// 获取选中主键值组
function getChecked() {
var arr = new Array();
$('input[type=checkbox][name=disassembleId]:checked').each(function () {
arr.push($(this).val());
});
return arr;
}
//自动获取企业数
$("#enterprisesName").change(function () {
var arr= new Array();
var str= $('.selectpicker ').selectpicker('val').toString();
arr=str.split(',');
if (str!=""){
$("#enterprisesNumber").val(arr.length)
}else{
var v =$("#enterprisesNumber").val();
$("#enterprisesNumber").val(v)
}
});
/* $("#enterprisesNumber").click(function () {
});*/
/**
* 省份查询
*/
$('#province').focus(function () {
$.ajax({
url: '${pageContext.request.contextPath }/parameter/getProvince',
type: 'post',
data: JSON.stringify({"province": $(this).val()}),
dataType: 'json',
contentType: 'application/json; charset=utf-8',
traditional: true,
success: function (data) {
$('#browsers_province').empty();
var pro = data.data;
for (var o in pro) {
$('#browsers_province').append('<option label="' + pro[o] + '" value="' + o + '">')
}
$('#browsers_companyName').empty();
},
error: function () {
layer.msg("异常!");
}
})
});
/**
* 弹出模态框省份
* */
$('#provinces').focus(function () {
$.ajax({
url: '${pageContext.request.contextPath }/parameter/getProvince',
type: 'post',
data: JSON.stringify({"province": $(this).val()}),
dataType: 'json',
contentType: 'application/json; charset=utf-8',
traditional: true,
success: function (data) {
$('#browsers_provinces').empty();
var pro = data.data;
for (var o in pro) {
$('#browsers_provinces').append('<option label="' + pro[o] + '" value="' + o + '">')
}
// $('.browsers_companyNames').empty();
},
error: function () {
layer.msg("异常!");
}
})
});
/**
* 企业名称选择框,动态时时加载企业名称
*/
$("#companyName").focus(function () {
$.ajax({
url: '${pageContext.request.contextPath }/parameter/getCompanyName',
type: 'post',
data: JSON.stringify({"province": $("#province").val()}),
dataType: 'json',
contentType: 'application/json; charset=utf-8',
traditional: true,
success: function (data) {
//console.log(data.data)
$('#browsers_companyName').empty();
var com = data.data;
for (var o in com) {
$('#browsers_companyName').append('<option label="' + com[o] + '" value="' + o + '">');
}
},
error: function () {
layer.msg("服务器异常!");
}
})
});
/**
* 弹出模态框企业名称
* */
function company(){
$.ajax({
url: '${pageContext.request.contextPath }/parameter/getCompanyName',
type: 'post',
data: JSON.stringify({"province": $("#provinces").val()}),
dataType: 'json',
contentType: 'application/json; charset=utf-8',
traditional: true,
success: function (data) {
//console.log(data.data)
//$('.browsers_companyNames').empty();
var com = data.data;
for (var o in com) {
//console.log(o);
$(".selectpicker").append("<option value='" + o + "'>" + o + "</option>");
}
$('.selectpicker').selectpicker('val', '');
$('.selectpicker').selectpicker('refresh');
},
error: function () {
layer.msg("服务器异常!");
}
});
}
/**
* 根据年查季度
* */
$("#batchYear").change(function(){
$.ajax({
url : '${pageContext.request.contextPath }/materialRegForm/getBatchYear',
type : 'post',
data : JSON.stringify({"batchYear":$('#batchYear').val()}),
dataType : 'json',
contentType : 'application/json; charset=utf-8',
traditional: true,
success:function(data){
$('#batchNumber').empty();
$('#batchNumber').append('<option value=""></option>')
var com = data.data;
for(var o in com){
$('#batchNumber').append('<option value='+o+'>'+com[o]+'</option>');
}
//联动季度
$.ajax({
url : '${pageContext.request.contextPath }/materialRegForm/getSubmitQuarter',
type : 'post',
data : JSON.stringify({"batchYear":$('#batchYear').val()}),
dataType : 'json',
contentType : 'application/json; charset=utf-8',
traditional: true,
success:function(data){
$('#submitQuarter2').empty();
$('#submitQuarter2').append('<option value=""></option>')
var com = data.data;
for(var o in com){
$('#submitQuarter2').append('<option value='+o+'>'+com[o]+'</option>');
}
}
})
},
error : function(a,b,c,d) {
}
})
});
//重置
function fReset() {
document.getElementById("formReset").reset();
query();
}
//获取身份对应的城市
$("#provinces").blur(function () {
$('.selectpicker').empty()
company();
});
//加载所有公司
$(function() {
company()
});
$(document).on('click mouseenter', '.cause', function () {
var that = this;
//console.log($(that).next().text());
layer.tips($(that).next().text(), that); //在元素的事件回调体中,follow直接赋予this即可
});
//添加页面
$(document).delegate('.insert', 'click', function () {
company();
//设置默认名称
$(".selectpicker").selectpicker({
title:"可多选"
});
$('.selectpicker').selectpicker('val',1);
$("#id").val("");
//弹出框
$('#myModal-save-info').modal('show');
$("#thelist").empty();
$('#saveForm').get(0).reset();
webupload('add');
});
//修改回显
$(document).delegate('.btn-update', 'click', function () {
var url = '${pageContext.request.contextPath }/materialRegForm/selectById/' + $(this).next().val();
post(url, null, function (result) {
// console.log(result.data);
if (result != null) {
$("#thelist").empty();
$('#saveForm').get(0).reset();
$('#saveForm').initForm({
jsonValue: result.data
});
//多选框默认选中
var e = removeBlock(result.data.enterprisesName);
$(".selectpicker").selectpicker({
title:e
});
$('.selectpicker').selectpicker('val', e);
//全局变量赋值
eName=result.data.enterprisesName;
$("#receiveTime").val(getLocalTime($("#receiveTime").val()));
$("#issuedTime").val(getLocalTime($("#issuedTime").val()));
$('#myModal-save-info').modal('show');
var ids = jsonValue.id;
$("#id").val(ids);
webupload();
} else {
}
});
});
//删除单条记录
$(document).delegate('.btn-delete', 'click', function () {
var url = '${pageContext.request.contextPath}/materialRegForm/deleteFunction/' + $(this).next().val();
layer.confirm("确认删除?",function () {
post(url, null, function (ret) {
if (ret.code == 1) {
layer.msg(ret.msg);
query();
} else {
layer.msg(ret.msg);
}
});
});
});
//时间戳转日期格式
function getLocalTime(value) {
var a = parseInt(value);
return isNaN(a) ? "非法日期" : formatDate(new Date(a));
}
function formatDate(now) {
var year = now.getFullYear();
var month = now.getMonth() + 1;
var date = now.getDate();
/* var hour = now.getHours();
var minute = now.getMinutes();
var second = now.getSeconds();*/
return year + "-" + p(month) + "-" + p(date);
}
//判断输入框
function input1(value, element) {
return this.optional(element) || /^[-\+]?\d+$/.test(value) || /^[-\+]?\d+(\.\d+)?$/.test(value);
}
//去除包裹的大括号
function removeBlock (str) {
if (str) {
var reg = /^\[/gi
var reg2 = /\]$/gi
str = str.replace(reg, '')
str = str.replace(reg2, '')
return str
} else {
return str
}
}
</script>
<%--附件上传--%>
<script type="text/javascript">
var uploader;
var deleteFileArr = ""; //拼接ID
var materialId;
var AcFileId;//回显时的附件id
function webupload(method) {
if (uploader != undefined) {
uploader.destroy(); //用于防止每次调用 选择文件框变大 每次调用initUploader()函数前,一定要将uploader销毁,要不然调用一次,上传文件框就会变大一次
};
materialId = $("#id").val();//通过id 有没有值 判断是修改还是新增
if (materialId == undefined) {
materialId = 0;
}
var fileArrs = new Array();
var length = 3; //定义上传文件的个数
var allMaxSize = 10;//定义单个上传文件的大小
$('#publishTime').datetimepicker({
format: "YYYY-MM-DD HH:mm:ss"
});
//添加赋值
if (method == "add") {
materialId = 0;
}
uploader = WebUploader.create({
formData: {
materialId: materialId
},
// swf文件路径
swf: '${pageContext.request.contextPath}/plugins/webuploader-0.1.5/webuploader-0.1.5/dist/Uploader.swf',
// 文件接收服务端。
server: '${pageContext.request.contextPath}/materialRegForm/importMaterialRegFormFile',
// 选择文件的按钮。可选。
// 内部根据当前运行是创建,可能是input元素,也可能是flash.
pick: '#picker',
// 不压缩image, 默认如果是jpeg,文件上传前会压缩一把再上传!
resize: false,
auto: false,
duplicate: true,
fileNumLimit: length,
fileSizeLimit: allMaxSize * 1024 * 1024//限制大小10M,所有被选文件,超出选择不上
});
// 当有文件被添加进队列的时候
uploader.on('fileQueued', function (file) {
var fileIndex = fileArrs.indexOf(file.name);
fileArrs.push(file.name);
// console.log(fileIndex +" :当文件被加入队列的时候输出"); //输出-1
if (fileIndex == -1) {
//console.log("file.statusText : "+file.statusText); // 用于判断上传的状态 complete完成上传
if (file.statusText == 'complete') {
//$("#thelist").empty(); //清空div
$list = $("#thelist");
$list.append('<div id="' + file.id + '" class="item">' +
'<h4 class="info">' + '<a style="cursor:pointer; color:#00BFFF" onclick="downloadFindFile(this)" value="' + AcFileId + '">' + file.name + '</a>' + '<a id="dowfile' + AcFileId + '" href="${pageContext.request.contextPath}/materialRegForm/downloadFile?id=' + AcFileId + '">' + '</a>' + '</h4><p class="state">完成上传</p>' +
'<p class="remove-this" style="color: red;cursor:pointer;display:inline-block">删除</p>' +
'</div>');
} else {
//$("#thelist").empty();
$list = $("#thelist");
$list.append('<div id="' + file.id + '" class="item">' +
'<h4 class="info">' + file.name + '</h4><p class="state">等待上传...</p>' +
'<p class="remove-this" style="color: red;cursor:pointer;display:inline-block " >删除</p>' +
'</div>');
}
} else {
layer.msg("上传文件名不能重复");
uploader.removeFile(file);
}
});
//判断文件上传的大小个数
uploader.on("error", function (err) {
if (err == "Q_EXCEED_NUM_LIMIT") {
layer.msg("附件上传只能上传" + length + "个");
} else if (err == "Q_EXCEED_SIZE_LIMIT") {
layer.msg("附件上传单个文件大小不能超过" + allMaxSize + "MB");
}
});
//上传成功提示
uploader.on('uploadSuccess', function (file) {
$('#' + file.id).addClass('upload-state-done');
$('#' + file.id).find('p.state').text('完成上传');
var stats = uploader.getStats();
//如果队列中不存在数据的话,直接保存
if (stats.queueNum == 0 && stats.progressNum == 0 && stats.interruptNum == 0) {
layer.msg("保存成功。上传成功的文件数为:" + stats.successNum + ",上传失败的文件数为:" + stats.uploadFailNum + "。");
}
});
//上传出错提示
uploader.on('uploadError', function (file) {
$('#' + file.id).find('p.state').text('上传出错');
});
//删除数组中的元素
Array.prototype.remove = function (val) {
var index = this.indexOf(val);
if (index > -1) {
this.splice(index, 2);//删除两个
}
};
//修改删除按钮
$('#thelist').on('click', '.remove-this', function () {
var fileItem = $(this).parent();
var id = $(fileItem).attr("id");
var file = uploader.getFile(id);
if (file == undefined) {
return;
}
var fileid = file.source.id;
if (id != "") {//修改时删除文件并删除数据库数据及上传的文件 通过文件名称删除
$("#" + id).remove();
uploader.removeFile(id, true);
fileArrs.remove(file.name);
if (fileid != null && fileid != undefined && fileid != "") {
deleteFileArr += fileid + ",";
}
} else {//新增时删除文件 清空队列
uploader.removeFile(id, true);
fileArrs.remove(file.name);
$(fileItem).fadeOut(function () {
$(fileItem).remove();
});
}
});
//修改的话 回显附件
if (materialId != "" || materialId != undefined) {
$.ajax({
url: '${pageContext.request.contextPath}/materialRegForm/getMaterialRegFormFiles?materialId=' + materialId,
type: 'GET',
headers: {"Accept": "application/json"},
contentType: 'application/json;charset=utf-8',
success: function (resp) {
if (resp.data.success) {
var res = resp.data;
fileList = res.list;
console.log(fileList);
$.each(fileList, function (index, item) {
AcFileId = item.fileId//附件id
var obj = {};
var arr = item.uploadName;//用户上传的文件名
var index = arr.length - 1;
obj.name = arr;
obj.id = item.fileId;
obj.size = 1;
var file = new WebUploader.File(obj);
//此处是关键,将文件状态改为'已上传完成'
file.setStatus('complete', 'complete');
uploader.addFiles(file);
fileArrs.push(file.name);
});
} else {
layer.msg(resp.msg);
}
},
error: function (resp) {
layer.msg(resp.msg);
}
});
}
//webupload
}
//保存
$(document).delegate('.btn-insert', 'click', function () {
//用来解决 selectpicker 框架不会先select 值问题
var i = $('.selectpicker').selectpicker('val');
if (i=="") {
$('select[name="enterprisesName"]').attr('name','');
$('input[id="hiddEnterprisesName"]').attr('name','enterprisesName');
$("input[id='hiddEnterprisesName']").attr("value",eName);
}else{
$('input[id="hiddEnterprisesName"]').attr('name','');
$('select[id="enterprisesName"]').attr('name','enterprisesName');
$('.selectpicker').selectpicker('val',i);
}
var url = '${pageContext.request.contextPath}/materialRegForm/saveFunction';
post(url, JSON.stringify($('#saveForm').serializeObject()), function (ret) {
if (ret.code == 1) {
var id= $("#id").val();
if (id==""){
layer.msg("保存成功");
}else{
layer.msg("修改成功");
}
console.log(id);
if (materialId != "") {
if (deleteFileArr.length != 0 && deleteFileArr != null && deleteFileArr != undefined) {
deleteFileByUpdate();
}
}
uploader.upload();
query();
$('#myModal-save-info').modal('hide');
} else {
layer.msg(ret.msg);
}
});
});
//修改删除附件
function deleteFileByUpdate() {
var divLength = $('#thelist').html().length;//div中内容长度
$.get("${pageContext.request.contextPath}/materialRegForm/deleteFileByUpdate?deleteFileArr=" + deleteFileArr + "&divLength=" + divLength, function (data) {
if (data.code == 1) {
layer.msg("保存成功");
} else {
layer.msg("保存失败请刷新页面进行重试");
}
})
}
//单个文件下载
function downloadFindFile(obj) {
var AcFileId = $(obj).attr("value");
//console.log(AcFileId);
var el = document.getElementById("dowfile" + AcFileId);
$.get("${pageContext.request.contextPath}/materialRegForm/downloadFindFile?id=" + AcFileId, function (data) {
if (data.code == 1) {
el.click();
} else if (data.code == 0) {
layer.msg(data.msg);
}
})
}
</script>
<script>
/**
* 初始化时间插件
* $input: jquery对象
* param: 自定义配置参数
* 例如:initDateTime($('#datepicker'), {
* format: "yyyy-mm",
* startView: '3',
* minView:'3',
* })
*/
function initDateTime($input, param) {
$input.datetimepicker('remove');
var option = {
language: 'zh-CN',
format: "yyyy-mm-dd",
startView: '2',
minView: '2',
autoclose: true,
todayBtn: true,
pickerPosition: "bottom-left"
}
if (param) {
$.extend(true, option, param)
}
return $input.datetimepicker(option).datetimepicker('setDate', new Date());
}
/**
* 年份
*/
initDateTime($('.year-date'), {
format: 'yyyy',
startView: '4',
minView: '4',
maxView: '4',
startDate: '2014',
endDate: '2019'
}).val("");
initDateTime($('.year-dates'), {
format: 'yyyy-mm-dd'
}).val("");
</script>
</body>