Commit 4fb558e0 by 陈浩建

学校批量导入导出

parent 939534f8
......@@ -53,6 +53,11 @@ public class School implements Serializable {
*/
@TableField("service_qrcode" )
private String serviceQrcode;
/**
* 揽装人
*/
@TableField("lz_user" )
private String lzUser;
/**
* 揽装工号
......
......@@ -56,4 +56,13 @@ public interface SchoolMapper extends BaseMapper<School> {
" LEFT JOIN hhr_school s ON s.`id`=us.`school_id`" +
" WHERE u.id=#{id}")
Map<String, Object> querySchoolById(@Param("id") String id);
Map<String, Object> querySchoolMap(@Param("subName") String subName,@Param("schoolName") String schoolName);
int insertSchoolMap(Map<String,Object> map);
int updateSchoolMap(Map<String,Object> map);
int insertNetworkInfo(Map<String,Object> map);
}
<?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.winsun.mapper.SchoolMapper">
<select id="querySchoolMap" parameterType="String" resultType="HashMap">
select * from hhr_school where sub_name = #{subName} and school_name = #{schoolName}
</select>
<insert id="insertSchoolMap">
INSERT INTO hhr_school
(sub_name,school_name,status,lz_user,lzgh,network_code,network_name,app_id,app_key)
VALUES (#{a},#{b},0,#{c},#{d},#{e},#{f},#{g},#{h})
</insert>
<update id="updateSchoolMap">
update hhr_school set
<if test="c != null and c != ''">
lz_user = #{c},
</if>
<if test="d != null and d != ''">
lzgh = #{d},
</if>
<if test="e != null and e != ''">
network_code = #{e},
</if>
<if test="f != null and f != ''">
network_name = #{f},
</if>
<if test="g != null and g != ''">
app_id = #{g},
</if>
<if test="h != null and h != ''">
app_key = #{h},
</if>
sub_name = #{a},school_name = #{b}
where
sub_name = #{a}
and
school_name = #{b}
</update>
<insert id="insertNetworkInfo">
INSERT INTO hhr_network_info (area_name,school_name,network_code,network_name)
VALUES (#{a},#{b},#{e},#{f})
</insert>
</mapper>
\ No newline at end of file
......@@ -9,6 +9,7 @@ import com.winsun.auth.core.annotion.Permission;
import com.winsun.auth.core.base.controller.BaseController;
import com.winsun.auth.core.common.model.ResponseData;
import com.winsun.auth.core.shiro.ShiroUser;
import com.winsun.auth.core.util.IOUtils;
import com.winsun.bean.Package;
import com.winsun.bean.Product;
import com.winsun.bean.School;
......@@ -18,9 +19,14 @@ import com.winsun.mapper.PackageMapper;
import com.winsun.mapper.ProductMapper;
import com.winsun.mapper.SchoolMapper;
import com.winsun.mapper.SchoolPackageMapper;
import com.winsun.utils.ExcelDealUtils;
import com.winsun.utils.ImportExcel;
import com.winsun.utils.MyBatisPlusUpdateUtils;
import io.lettuce.core.dynamic.annotation.Param;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.xssf.usermodel.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.RequestMapping;
......@@ -29,13 +35,13 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
/**
* @Author: chancy
......@@ -46,6 +52,25 @@ import java.util.Map;
@RequestMapping("/school/schoolManagement")
public class SchoolManagementController extends BaseController {
/**
* 导入
*/
private static final int HEADER_NUM = -1;
private static final int SHEET_INDEX = 0;
/**
* 受理单模板列名
* 校园名称(必填) 所属县分(必填) 揽装人 揽装工号 网点编码 网点名称 终端编码 终端密匙
*/
private static String SL_SUB_NAME = "所属县分(必填)";
private static String SL_SCHOOL = "校园名称(必填)";
private static String SL_LZ_USER = "揽装人";
private static String SL_LZGH = "揽装工号";
private static String SL_NET_CODE = "网点编码";
private static String SL_NET_NAME = "网点名称";
private static String SL_APP_ID = "终端编码";
private static String SL_APP_KEY = "终端密匙";
private static SchoolMapper schoolMapper;
private static SchoolPackageMapper schoolPackageMapper;
......@@ -307,5 +332,213 @@ public class SchoolManagementController extends BaseController {
return ResponseData.success(schoolList, "查询完毕!");
}
/**
* 受理订单
*
* @param file 上传的数据文件
* @return
*/
@Permission(menuname = "上传数据", value = "importDate", method = RequestMethod.POST)
public ResponseData<String> updateDatas(@RequestParam(name = "file") MultipartFile file) {
StringBuffer error = new StringBuffer();
if (!StringUtils.endsWithAny(file.getOriginalFilename(), "xlsx", "xls")) {
return ResponseData.error("手工上传数据仅支持Excel文件,其他格式不支持!");
}
if ( (double)file.getSize()/1048576 > 100) {
return ResponseData.error("文件过大,无法上传");
}
ShiroUser user = getShiroUser();
// 当前是否有数据权限
boolean hasDataPermission = user.getRoleNames().stream().anyMatch(data -> StringUtils.equalsAny(data, "超级管理员"));
if (!hasDataPermission) {
return ResponseData.error("无数据权限!");
}
ImportExcel importExcel = null;
try {
importExcel = new ImportExcel(file, HEADER_NUM, SHEET_INDEX);
} catch (Exception e) {
log.error("受理单导入异常", e.getMessage());
return ResponseData.error("导入异常!");
}
List<Map<String, Object>> listMap = importExcel.getDataListMap();
if (listMap.size() == 1) {
return ResponseData.error("文件不能为空");
}
if (!listMap.get(0).get("a").toString().equals(SL_SUB_NAME)) {
return ResponseData.error("模板不对,请选择正确的模板!");
}
if (!listMap.get(0).get("b").toString().equals(SL_SCHOOL)) {
return ResponseData.error("模板不对,请选择正确的模板!");
}
if (!listMap.get(0).get("c").toString().equals(SL_LZ_USER)) {
return ResponseData.error("模板不对,请选择正确的模板!");
}
if (!listMap.get(0).get("d").toString().equals(SL_LZGH)) {
return ResponseData.error("模板不对,请选择正确的模板!");
}
if (!listMap.get(0).get("e").toString().equals(SL_NET_CODE)) {
return ResponseData.error("模板不对,请选择正确的模板!");
}
if (!listMap.get(0).get("f").toString().equals(SL_NET_NAME)) {
return ResponseData.error("模板不对,请选择正确的模板!");
}
if (!listMap.get(0).get("g").toString().equals(SL_APP_ID)) {
return ResponseData.error("模板不对,请选择正确的模板!");
}
if (!listMap.get(0).get("h").toString().equals(SL_APP_KEY)) {
return ResponseData.error("模板不对,请选择正确的模板!");
}
if (listMap.get(0).size() != 8) {
return ResponseData.error("模板不对,请选择正确的模板!");
}
//校验数据
try {
//校验数据
for (int i = 1; i < listMap.size(); i++) {
Map<String, Object> temp = listMap.get(i);
if (!temp.containsKey("a")) {
return ResponseData.error("第" + (i + 1) + "行的所属县份不能为空");
}
if (StringUtils.isBlank(temp.get("a").toString())) {
return ResponseData.error("第" + (i + 1) + "行的所属县份不能为空");
}
if (!temp.containsKey("b")) {
return ResponseData.error("第" + (i + 1) + "行的学校名称不能为空");
}
if (StringUtils.isBlank(temp.get("b").toString())) {
return ResponseData.error("第" + (i + 1) + "行的学校名称不能为空");
}
if (!temp.containsKey("c")) {
listMap.get(i).put("c","");
}
if (!temp.containsKey("d")) {
listMap.get(i).put("d","");
}
if (!temp.containsKey("e")) {
listMap.get(i).put("e","");
}
if (!temp.containsKey("f")) {
listMap.get(i).put("f","");
}
if (!temp.containsKey("g")) {
listMap.get(i).put("g","");
}
if (!temp.containsKey("h")) {
listMap.get(i).put("h","");
}
}
//检查excel表中是否有重复人员编号
int size = listMap.size();
Set<String> accountSet = new HashSet<>(size);
for (int i = 0; i < size; i++) {
Map<String, Object> temp = listMap.get(i);
accountSet.add((String) temp.get("a")+temp.get("b"));
}
if (accountSet.size() != size) {
return ResponseData.error("文件中有重复的学校,请确认学校不能重复!");
}
} catch (Exception e) {
log.error("学校导入异常", e.getMessage());
return ResponseData.error("导入异常!");
}
int number = 0;
Date acceptDate = new Date();
Date successTime = acceptDate;
StringBuffer subName = new StringBuffer();
StringBuffer schoolName = new StringBuffer();
Integer integer = 0;
Map<String,Object> schoolMap = new HashMap<>();
for (int i = 1; i < listMap.size(); i++) {
Map<String, Object> map = listMap.get(i);
subName = new StringBuffer(map.get("a").toString());
schoolName = new StringBuffer(map.get("b").toString());
integer = 0;
schoolMap = schoolMapper.querySchoolMap(subName.toString(),schoolName.toString());
try{
if(schoolMap != null && schoolMap.size() != 0){
integer = schoolMapper.updateSchoolMap(map);
}else {
integer = schoolMapper.insertSchoolMap(map);
}
}catch (Exception e){
e.printStackTrace();
}
if (integer == 1) {
number++;
} else {
error.append("第" + (i + 1) + "行的更新失败,");
}
}
error.append("成功更新" + number + "条数据!");
return ResponseData.success(error.toString(), "导入完成");
}
/**
*
* @return
*/
@Permission(menuname = "导出学校列表信息", value = "excelOut", method = RequestMethod.POST)
public void excelOut(@Param("networkName") String networkName,
@Param("networkName") String status,
@Param("networkName") String subName,
@Param("networkName") String schoolName){
Wrapper<School> wrapper = new EntityWrapper();
wrapper.like(StringUtils.isNotBlank(networkName), "network_name", networkName, SqlLike.DEFAULT);
wrapper.like(StringUtils.isNotBlank(schoolName), "school_name", schoolName, SqlLike.DEFAULT);
wrapper.eq(StringUtils.isNotBlank(subName), "sub_name", subName);
wrapper.eq(StringUtils.isNotBlank(status), "status", status);
List<Map<String, Object>> maps = schoolMapper.selectMaps(wrapper);
ServletOutputStream os = null;
XSSFWorkbook workbook = ExcelDealUtils.getWorkBook(ExcelDealUtils.schoolExcel("校园列表"), maps);
try {
HttpServletResponse response = getHttpServletResponse();
response.reset();
response.setCharacterEncoding("UTF-8");
response.setContentType("application/octet-stream");
os = response.getOutputStream();
workbook.write(os);
os.flush();
} catch (Exception e) {
log.error("文件出错!" + e.getMessage(), e);
} finally {
IOUtils.closeQuite(workbook, os);
}
}
@Permission(menuname = "下载学校上传模板", value = "excelMBOut", method = RequestMethod.POST)
public void excelMBOut(){
Map<String,Object> map = new HashMap<>();
map.put("subName", "");
map.put("schoolName", "");
map.put("lzUser", "");
map.put("lzgh", "");
map.put("networkCode", "");
map.put("networkName", "");
map.put("appId", "");
map.put("appKey", "");
List<Map<String, Object>> maps = new ArrayList<Map<String,Object>>();
maps.add(map);
ServletOutputStream os = null;
XSSFWorkbook workbook = ExcelDealUtils.getWorkBook(ExcelDealUtils.schoolExcel("校园模板"), maps);
try {
HttpServletResponse response = getHttpServletResponse();
response.reset();
response.setCharacterEncoding("UTF-8");
response.setContentType("application/octet-stream");
os = response.getOutputStream();
workbook.write(os);
os.flush();
} catch (Exception e) {
log.error("文件出错!" + e.getMessage(), e);
} finally {
IOUtils.closeQuite(workbook, os);
}
}
}
......@@ -527,4 +527,20 @@ public class ExcelDealUtils {
return resultMap;
}
// 管理导出excel表头
public static Map<String, Object> schoolExcel(String sheetName){
Map<String, Object> headMap = new LinkedHashMap<String, Object>();
headMap.put("所属县分(必填)", "subName");
headMap.put("校园名称(必填)", "schoolName");
headMap.put("揽装人", "lzUser");
headMap.put("揽装工号", "lzgh");
headMap.put("网点编码", "networkCode");
headMap.put("网点名称", "networkName");
headMap.put("终端编码", "appId");
headMap.put("终端密匙", "appKey");
Map<String, Object> resultMap = dealHeadMap(headMap);
resultMap.put("sheetName", sheetName);
return resultMap;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment