Commit 8bdf41b7 by 彭祥礼

增加KPI管理导入功能

parent 9d841d57
...@@ -19,6 +19,7 @@ import com.winsun.mapper.SchoolMapper; ...@@ -19,6 +19,7 @@ import com.winsun.mapper.SchoolMapper;
import com.winsun.mapper.SysUserMapper; import com.winsun.mapper.SysUserMapper;
import com.winsun.mapper.UserSchoolMapper; import com.winsun.mapper.UserSchoolMapper;
import com.winsun.utils.ExcelDealUtils; import com.winsun.utils.ExcelDealUtils;
import com.winsun.utils.ImportExcel;
import com.winsun.utils.MyBatisPlusUpdateUtils; import com.winsun.utils.MyBatisPlusUpdateUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
...@@ -32,14 +33,12 @@ import org.springframework.web.bind.annotation.RequestMapping; ...@@ -32,14 +33,12 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.ServletOutputStream; import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/** /**
* 正则校检 * 正则校检
...@@ -423,10 +422,6 @@ public class LzKpiController extends BaseController { ...@@ -423,10 +422,6 @@ public class LzKpiController extends BaseController {
@Permission(menuname = "楼长KPI管理信息导入模板", method = RequestMethod.POST, value = "downloadMoBan") @Permission(menuname = "楼长KPI管理信息导入模板", method = RequestMethod.POST, value = "downloadMoBan")
public ResponseData downloadMoBan() { public ResponseData downloadMoBan() {
ArrayList<String> columns = new ArrayList<>(); ArrayList<String> columns = new ArrayList<>();
columns.add(SL_sysuName);
columns.add(SL_account);
columns.add(SL_substName);
columns.add(SL_schoolName);
columns.add(SL_reportDaily); columns.add(SL_reportDaily);
columns.add(SL_collectiveSales); columns.add(SL_collectiveSales);
columns.add(SL_weeklyMeeting); columns.add(SL_weeklyMeeting);
...@@ -434,27 +429,31 @@ public class LzKpiController extends BaseController { ...@@ -434,27 +429,31 @@ public class LzKpiController extends BaseController {
columns.add(SL_designPlan); columns.add(SL_designPlan);
columns.add(SL_kpi); columns.add(SL_kpi);
columns.add(SL_month); columns.add(SL_month);
columns.add(SL_sysuName);
columns.add(SL_account);
columns.add(SL_substName);
columns.add(SL_schoolName);
ServletOutputStream os = null; ServletOutputStream os = null;
XSSFWorkbook workbook = new XSSFWorkbook(); XSSFWorkbook workbook = new XSSFWorkbook();
try { try {
//创建工作表 //创建工作表
XSSFSheet sheet = workbook.createSheet("楼长KPI管理信息"); XSSFSheet sheet = workbook.createSheet("楼长KPI管理信息");
sheet.setColumnWidth(0, 4000); sheet.setColumnWidth(0, 2000);
sheet.setColumnWidth(1, 6000); sheet.setColumnWidth(1, 2000);
sheet.setColumnWidth(2, 3000); sheet.setColumnWidth(2, 2000);
sheet.setColumnWidth(3, 9000); sheet.setColumnWidth(3, 2000);
sheet.setColumnWidth(4, 2000); sheet.setColumnWidth(4, 2000);
sheet.setColumnWidth(5, 2000); sheet.setColumnWidth(5, 2000);
sheet.setColumnWidth(6, 2000); sheet.setColumnWidth(6, 5000);
sheet.setColumnWidth(7, 2000); sheet.setColumnWidth(7, 4000);
sheet.setColumnWidth(8, 2000); sheet.setColumnWidth(8, 6000);
sheet.setColumnWidth(9, 2000); sheet.setColumnWidth(9, 3000);
sheet.setColumnWidth(10, 5000); sheet.setColumnWidth(10, 9000);
//下拉选项 //下拉选项
List<String> fengju = new ArrayList<>(); /*List<String> fengju = new ArrayList<>();
fengju.add("受理不成功"); fengju.add("受理不成功");
fengju.add("受理成功"); fengju.add("受理成功");
sheet = this.getXSSFSheet(sheet, fengju, 1, 1); sheet = this.getXSSFSheet(sheet, fengju, 1, 1);*/
//添加表头 //添加表头
final XSSFRow row = sheet.createRow(0); final XSSFRow row = sheet.createRow(0);
XSSFCellStyle cellStyle = workbook.createCellStyle(); XSSFCellStyle cellStyle = workbook.createCellStyle();
...@@ -472,11 +471,11 @@ public class LzKpiController extends BaseController { ...@@ -472,11 +471,11 @@ public class LzKpiController extends BaseController {
workbook.write(os); workbook.write(os);
os.flush(); os.flush();
} catch (IOException e) { } catch (IOException e) {
log.error("受理单模板文件出错!" + e.getMessage(), e); log.error("楼长KPI管理信息模板文件出错!" + e.getMessage(), e);
} finally { } finally {
IOUtils.closeQuite(workbook, os); IOUtils.closeQuite(workbook, os);
} }
return ResponseData.error("受理单模板出错"); return ResponseData.error("楼长KPI管理信息模板出错");
} }
XSSFSheet getXSSFSheet(XSSFSheet sheet, List<String> datas, int firstcol, int lastcol) { XSSFSheet getXSSFSheet(XSSFSheet sheet, List<String> datas, int firstcol, int lastcol) {
...@@ -501,7 +500,7 @@ public class LzKpiController extends BaseController { ...@@ -501,7 +500,7 @@ public class LzKpiController extends BaseController {
* @param file 上传的数据文件 * @param file 上传的数据文件
* @return * @return
*/ */
/*@Permission(menuname = "上传数据", value = "importDate", method = RequestMethod.POST) @Permission(menuname = "上传数据", value = "importDate", method = RequestMethod.POST)
public ResponseData<String> updateDatas(@RequestParam(name = "file") MultipartFile file) { public ResponseData<String> updateDatas(@RequestParam(name = "file") MultipartFile file) {
StringBuffer error = new StringBuffer(); StringBuffer error = new StringBuffer();
if (!StringUtils.endsWithAny(file.getOriginalFilename(), "xlsx", "xls")) { if (!StringUtils.endsWithAny(file.getOriginalFilename(), "xlsx", "xls")) {
...@@ -517,123 +516,143 @@ public class LzKpiController extends BaseController { ...@@ -517,123 +516,143 @@ public class LzKpiController extends BaseController {
try { try {
importExcel = new ImportExcel(file, HEADER_NUM, SHEET_INDEX); importExcel = new ImportExcel(file, HEADER_NUM, SHEET_INDEX);
} catch (Exception e) { } catch (Exception e) {
log.error("受理单导入异常", e.getMessage()); log.error("楼长KPI管理信息导入异常", e.getMessage());
return ResponseData.error("导入异常!"); return ResponseData.error("导入异常!");
} }
List<Map<String, Object>> listMap = importExcel.getDataListMap(); List<Map<String, Object>> listMap = importExcel.getDataListMap();
if (listMap.size() == 1) { if (listMap.size() == 1) {
return ResponseData.error("文件不能为空"); return ResponseData.error("文件不能为空");
} }
if (!listMap.get(0).get("a").toString().equals(SL_sysuName)) { if (!listMap.get(0).get("a").toString().equals(SL_reportDaily)) {
return ResponseData.error("模板不对,请选择正确的模板!"); return ResponseData.error("模板不对,请选择正确的模板!");
} }
if (!listMap.get(0).get("b").toString().equals(SL_account)) { if (!listMap.get(0).get("b").toString().equals(SL_collectiveSales)) {
return ResponseData.error("模板不对,请选择正确的模板!"); return ResponseData.error("模板不对,请选择正确的模板!");
} }
if (!listMap.get(0).get("c").toString().equals(SL_substName)) { if (!listMap.get(0).get("c").toString().equals(SL_weeklyMeeting)) {
return ResponseData.error("模板不对,请选择正确的模板!"); return ResponseData.error("模板不对,请选择正确的模板!");
} }
if (!listMap.get(0).get("d").toString().equals(SL_schoolName)) { if (!listMap.get(0).get("d").toString().equals(SL_organTraining)) {
return ResponseData.error("模板不对,请选择正确的模板!"); return ResponseData.error("模板不对,请选择正确的模板!");
} }
if (!listMap.get(0).get("d").toString().equals(SL_reportDaily)) { if (!listMap.get(0).get("e").toString().equals(SL_designPlan)) {
return ResponseData.error("模板不对,请选择正确的模板!"); return ResponseData.error("模板不对,请选择正确的模板!");
} }
if (!listMap.get(0).get("d").toString().equals(SL_collectiveSales)) { if (!listMap.get(0).get("f").toString().equals(SL_kpi)) {
return ResponseData.error("模板不对,请选择正确的模板!"); return ResponseData.error("模板不对,请选择正确的模板!");
} }
if (!listMap.get(0).get("d").toString().equals(SL_weeklyMeeting)) { if (!listMap.get(0).get("g").toString().equals(SL_month)) {
return ResponseData.error("模板不对,请选择正确的模板!"); return ResponseData.error("模板不对,请选择正确的模板!");
} }
if (!listMap.get(0).get("d").toString().equals(SL_organTraining)) { if (!listMap.get(0).get("h").toString().equals(SL_sysuName)) {
return ResponseData.error("模板不对,请选择正确的模板!"); return ResponseData.error("模板不对,请选择正确的模板!");
} }
if (!listMap.get(0).get("d").toString().equals(SL_designPlan)) { if (!listMap.get(0).get("i").toString().equals(SL_account)) {
return ResponseData.error("模板不对,请选择正确的模板!"); return ResponseData.error("模板不对,请选择正确的模板!");
} }
if (!listMap.get(0).get("d").toString().equals(SL_kpi)) { if (!listMap.get(0).get("j").toString().equals(SL_substName)) {
return ResponseData.error("模板不对,请选择正确的模板!"); return ResponseData.error("模板不对,请选择正确的模板!");
} }
if (!listMap.get(0).get("d").toString().equals(SL_month)) { if (!listMap.get(0).get("k").toString().equals(SL_schoolName)) {
return ResponseData.error("模板不对,请选择正确的模板!"); return ResponseData.error("模板不对,请选择正确的模板!");
} }
if (listMap.get(0).size() != 11) { if (listMap.get(0).size() != 11) {
return ResponseData.error("模板不对,请选择正确的模板!"); return ResponseData.error("模板不对,请选择正确的模板!");
} }
List<String> accountList = new LinkedList<>();
List<Map<String,Object>> sysUserList = new LinkedList<>();
//校验数据 //校验数据
try { try {
//校验数据 //校验数据
for (int i = 1; i < listMap.size(); i++) { for (int i = 1; i < listMap.size(); i++) {
Map<String, Object> temp = listMap.get(i); Map<String, Object> temp = listMap.get(i);
if (!temp.containsKey("a")) { if (!temp.containsKey("a")) {
return ResponseData.error("第" + (i + 1) + "行的姓名不能为空"); return ResponseData.error("第" + (i + 1) + "行的汇总任务量不能为空");
} }
if (StringUtils.isBlank(temp.get("a").toString())) { if (StringUtils.isBlank(temp.get("a").toString())) {
return ResponseData.error("第" + (i + 1) + "行的姓名不能为空"); return ResponseData.error("第" + (i + 1) + "行的汇总任务量不能为空");
} }
if (!temp.containsKey("b")) { if (!temp.containsKey("b")) {
return ResponseData.error("第" + (i + 1) + "行的账号不能为空"); return ResponseData.error("第" + (i + 1) + "行的参与集中营销不能为空");
} }
if (StringUtils.isBlank(temp.get("b").toString())) { if (StringUtils.isBlank(temp.get("b").toString())) {
return ResponseData.error("第" + (i + 1) + "行的账号不能为空"); return ResponseData.error("第" + (i + 1) + "行的参与集中营销不能为空");
} }
if (!temp.containsKey("c")) { if (!temp.containsKey("c")) {
return ResponseData.error("第" + (i + 1) + "行的县分不能为空"); return ResponseData.error("第" + (i + 1) + "行的组织周例会不能为空");
} }
if (StringUtils.isBlank(temp.get("c").toString())) { if (StringUtils.isBlank(temp.get("c").toString())) {
return ResponseData.error("第" + (i + 1) + "行的县分不能为空"); return ResponseData.error("第" + (i + 1) + "行的组织周例会不能为空");
} }
if (!temp.containsKey("d")) { if (!temp.containsKey("d")) {
return ResponseData.error("第" + (i + 1) + "行的学校名不能为空"); return ResponseData.error("第" + (i + 1) + "行的定制扫楼营销方案不能为空");
} }
if (StringUtils.isBlank(temp.get("d").toString())) { if (StringUtils.isBlank(temp.get("d").toString())) {
return ResponseData.error("第" + (i + 1) + "行的学校名不能为空"); return ResponseData.error("第" + (i + 1) + "行的定制扫楼营销方案不能为空");
} }
if (!temp.containsKey("e")) { if (!temp.containsKey("e")) {
return ResponseData.error("第" + (i + 1) + "行的汇总任务量不能为空"); return ResponseData.error("第" + (i + 1) + "行的组织培训不能为空");
} }
if (StringUtils.isBlank(temp.get("e").toString())) { if (StringUtils.isBlank(temp.get("e").toString())) {
return ResponseData.error("第" + (i + 1) + "行的汇总任务量不能为空"); return ResponseData.error("第" + (i + 1) + "行的组织培训不能为空");
} }
if (!temp.containsKey("f")) { if (!temp.containsKey("f")) {
return ResponseData.error("第" + (i + 1) + "行的参与集中营销不能为空"); return ResponseData.error("第" + (i + 1) + "行的KPI总值不能为空");
} }
if (StringUtils.isBlank(temp.get("f").toString())) { if (StringUtils.isBlank(temp.get("f").toString())) {
return ResponseData.error("第" + (i + 1) + "行的参与集中营销不能为空"); return ResponseData.error("第" + (i + 1) + "行的KPI总值不能为空");
} }
if (!temp.containsKey("g")) { if (!temp.containsKey("g")) {
return ResponseData.error("第" + (i + 1) + "行的组织周例会不能为空"); return ResponseData.error("第" + (i + 1) + "行的KPI月份不能为空");
} }
if (StringUtils.isBlank(temp.get("g").toString())) { if (StringUtils.isBlank(temp.get("g").toString())) {
return ResponseData.error("第" + (i + 1) + "行的组织周例会不能为空"); return ResponseData.error("第" + (i + 1) + "行的KPI月份不能为空");
} }if (!temp.containsKey("h")) {
if (!temp.containsKey("h")) { return ResponseData.error("第" + (i + 1) + "行的姓名不能为空");
return ResponseData.error("第" + (i + 1) + "行的定制扫楼营销方案不能为空");
} }
if (StringUtils.isBlank(temp.get("h").toString())) { if (StringUtils.isBlank(temp.get("h").toString())) {
return ResponseData.error("第" + (i + 1) + "行的定制扫楼营销方案不能为空"); return ResponseData.error("第" + (i + 1) + "行的姓名不能为空");
} }
if (!temp.containsKey("i")) { if (!temp.containsKey("i")) {
return ResponseData.error("第" + (i + 1) + "行的组织培训不能为空"); return ResponseData.error("第" + (i + 1) + "行的账号不能为空");
} }
if (StringUtils.isBlank(temp.get("i").toString())) { if (StringUtils.isBlank(temp.get("i").toString())) {
return ResponseData.error("第" + (i + 1) + "行的组织培训不能为空"); return ResponseData.error("第" + (i + 1) + "行的账号不能为空");
} }
if (!temp.containsKey("j")) { if (!temp.containsKey("j")) {
return ResponseData.error("第" + (i + 1) + "行的KPI总值不能为空"); return ResponseData.error("第" + (i + 1) + "行的县分不能为空");
} }
if (StringUtils.isBlank(temp.get("j").toString())) { if (StringUtils.isBlank(temp.get("j").toString())) {
return ResponseData.error("第" + (i + 1) + "行的KPI总值不能为空"); return ResponseData.error("第" + (i + 1) + "行的县分不能为空");
} }
if (!temp.containsKey("k")) { if (!temp.containsKey("k")) {
return ResponseData.error("第" + (i + 1) + "行的KPI月份不能为空"); return ResponseData.error("第" + (i + 1) + "行的学校名不能为空");
} }
if (StringUtils.isBlank(temp.get("k").toString())) { if (StringUtils.isBlank(temp.get("k").toString())) {
return ResponseData.error("第" + (i + 1) + "行的KPI月份不能为空"); return ResponseData.error("第" + (i + 1) + "行的学校名不能为空");
}
if (temp.containsKey("i")) {
accountList.add(temp.get("i").toString());
} }
} }
Wrapper<SysUser> sysWrapper = new EntityWrapper<>();
sysWrapper.setSqlSelect("id,account");
sysWrapper.in("account",accountList);
sysUserList = sysUserMapper.selectMaps(sysWrapper);
for (Map<String, Object> map : listMap) {
String account = map.get("i").toString();
for (Map<String, Object> tmap : sysUserList) {
if(account.equals(tmap.get("account").toString())){
map.put("h",tmap.get("id").toString());
break;
}
}
}
//检查excel表中是否有重复人员编号 //检查excel表中是否有重复人员编号
int size = listMap.size(); /*int size = listMap.size();
Set<String> accountSet = new HashSet<>(size); Set<String> accountSet = new HashSet<>(size);
for (int i = 0; i < size; i++) { for (int i = 0; i < size; i++) {
Map<String, Object> temp = listMap.get(i); Map<String, Object> temp = listMap.get(i);
...@@ -641,46 +660,47 @@ public class LzKpiController extends BaseController { ...@@ -641,46 +660,47 @@ public class LzKpiController extends BaseController {
} }
if (accountSet.size() != size) { if (accountSet.size() != size) {
return ResponseData.error("文件中有重复的用户账号,请确认用户账号不能重复!"); return ResponseData.error("文件中有重复的用户账号,请确认用户账号不能重复!");
} }*/
} catch (Exception e) { } catch (Exception e) {
log.error("楼长KPI管理信息导入异常", e.getMessage()); log.error("楼长KPI管理信息导入异常", e.getMessage());
return ResponseData.error("导入异常!"); return ResponseData.error("导入异常!");
} }
int number = 0; int number = 0;
Date acceptDate = new Date(); Date acceptDate = new Date();
Date successTime = acceptDate; Date successTime = acceptDate;
for (int i = 1; i < listMap.size(); i++) { for (int i = 1; i < listMap.size(); i++) {
Map<String, Object> map = listMap.get(i); Map<String, Object> map = listMap.get(i);
String sysuName = map.get("a").toString(); LzKpi lzKpi = new LzKpi();
String account = map.get("b").toString(); Integer reportDaily = Integer.valueOf(map.get("a").toString());
String substName = map.get("c").toString(); lzKpi.setReportDaily(reportDaily);
String schoolName = map.get("d").toString(); Integer collectiveSales = Integer.valueOf(map.get("b").toString());
Integer reportDaily = Integer.valueOf(map.get("e").toString()); lzKpi.setCollectiveSales(collectiveSales);
Integer collectiveSales = Integer.valueOf(map.get("f").toString()); Integer weeklyMeeting = Integer.valueOf(map.get("c").toString());
Integer weeklyMeeting = Integer.valueOf(map.get("g").toString()); lzKpi.setWeeklyMeeting(weeklyMeeting);
Integer organTraining = Integer.valueOf(map.get("h").toString()); Integer organTraining = Integer.valueOf(map.get("d").toString());
Integer designPlan = Integer.valueOf(map.get("i").toString()); lzKpi.setOrganTraining(organTraining);
Integer kpi = Integer.valueOf(map.get("j").toString()); Integer designPlan = Integer.valueOf(map.get("e").toString());
String month = map.get("k").toString(); lzKpi.setDesignPlan(designPlan);
String acceptComment = null; Integer kpi = Integer.valueOf(map.get("f").toString());
if (StringUtils.isNotBlank(map.get("d").toString())) { lzKpi.setKpi(kpi);
acceptComment = map.get("d").toString(); String month = map.get("g").toString();
} lzKpi.setMonth(month);
String userId = map.get("h").toString();
lzKpi.setUserId(userId);
Integer integer = null; String userId0 = null;
if (StringUtils.isNotBlank(account)) { if (StringUtils.isNotBlank(map.get("h").toString())) {
integer = orderMapper.updateOrderSUByOrderNumberIsNotNull(orderNumber, orderStatus, acceptName, acceptResult, acceptComment, acceptDate,successTime); userId0 = map.get("h").toString();
} }
Integer integer = lzKpiMapper.insert(lzKpi);
if (integer == 1) { if (integer == 1) {
number++; number++;
String id = orderMapper.selectIdByOrderNumber(orderNumber);
appMapper.inserOrderHis(id, status, acceptDate, user.getName());
} else { } else {
error.append("第" + (i + 1) + "行的更新失败,"); error.append("第" + (i + 1) + "行的更新失败,");
} }
} }
error.append("成功更新" + number + "条数据!"); error.append("成功更新" + number + "条数据!");
return ResponseData.success(error.toString(), "导入完成"); return ResponseData.success(error.toString(), "导入完成");
}*/ }
} }
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