package cn.com.lzt.garbageweight; import cn.afterturn.easypoi.entity.vo.NormalExcelConstants; import cn.afterturn.easypoi.excel.ExcelImportUtil; import cn.afterturn.easypoi.excel.entity.ExportParams; import cn.afterturn.easypoi.excel.entity.ImportParams; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.daju.mix.dao.entity.TBGarbageWeight; import com.daju.mix.dao.service.ITBGarbageWeightService; import com.google.common.collect.Lists; import org.apache.commons.lang3.StringUtils; import org.apache.log4j.Logger; import org.jeecgframework.core.common.model.json.AjaxJson; import org.jeecgframework.core.common.model.json.DataGrid; import org.jeecgframework.core.util.ExceptionUtil; import org.jeecgframework.core.util.ResourceUtil; import org.jeecgframework.core.util.StringUtil; import org.jeecgframework.tag.core.easyui.TagUtil; import org.jeecgframework.web.system.pojo.base.DictEntity; import org.jeecgframework.web.system.service.SystemService; import org.joda.time.LocalDateTime; import org.springframework.stereotype.Controller; import org.springframework.transaction.annotation.Transactional; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.servlet.ModelAndView; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.InputStream; import java.text.SimpleDateFormat; import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.stream.Collectors; /** * @projectName: daju * @Title: GarbageweightController * @Description: 作业报表管理-垃圾重量统计 * @author: Future * @date: 2021/8/13 16:02 * @version: v1.0 **/ @Controller @RequestMapping("/garbageWeightController") public class GarbageWeightController { /** * 日 志 **/ private static final Logger logger = Logger.getLogger(GarbageWeightController.class); private static final String BASE_PATH = "cn/com/lzt/garbageweight/"; private static final String Dic_Code_rubbishType = "rubbishType"; private static final List WER_Garbage = Lists.newArrayList("湿垃圾","厨余垃圾", "餐厨垃圾"); private static final List DRY_Refuse = Lists.newArrayList("干垃圾", "装修垃圾分拣残渣", "一般工业垃圾"); @Resource private ITBGarbageWeightService itbGarbageWeightService; @Resource private SystemService systemService; @RequestMapping(params = "view") public ModelAndView index() { return new ModelAndView(BASE_PATH.concat("index")); } /** * @return void * @author: Future * @version: v1.0 * @Description: 分页查询 垃圾重量统计 * @date: 2021/8/14 10:26 * @Param [tbGarbageWeight, response, dataGrid] **/ @RequestMapping(params = "datagrid") public void datagrid(TBGarbageWeight tbGarbageWeight, HttpServletRequest request,HttpServletResponse response, DataGrid dataGrid) throws Exception { try { //空对象判断 Optional.ofNullable(tbGarbageWeight).orElseThrow(() -> new Exception("垃圾重量统计对象不能为null")); //条件 LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); String query_weighTime_begin = request.getParameter("weighTime_begin1"); String query_weighTime_end = request.getParameter("weighTime_end2"); queryWrapper .like(StringUtils.isNotBlank(tbGarbageWeight.getPlate()), TBGarbageWeight::getPlate, tbGarbageWeight.getPlate()) .eq(StringUtils.isNotBlank(tbGarbageWeight.getGarbageType()), TBGarbageWeight::getGarbageType, tbGarbageWeight.getGarbageType()) .eq(StringUtils.isNotBlank(tbGarbageWeight.getAreaRegion()), TBGarbageWeight::getAreaRegion, tbGarbageWeight.getAreaRegion()); if(StringUtil.isNotEmpty(query_weighTime_begin) && StringUtil.isNotEmpty(query_weighTime_end)){ queryWrapper.between(TBGarbageWeight::getWeighTime, new SimpleDateFormat("yyyy-MM-dd").parse(query_weighTime_begin), new SimpleDateFormat("yyyy-MM-dd").parse(query_weighTime_end)); } Page list = itbGarbageWeightService.page(new Page<>(dataGrid.getPage(), dataGrid.getRows()), queryWrapper); TagUtil.datagrid(response, dataGrid, list); }catch (Exception e){ } } /** * @return java.lang.String * @author: Future * @version: v1.0 * @Description: 导出excel 使模板 * @date: 2021/8/14 11:32 * @Param [request, response, dataGrid, modelMap] **/ @RequestMapping(params = "exportXlsByT") public String exportXlsByT(TBGarbageWeight tbGarbageWeight,HttpServletRequest request, HttpServletResponse response , DataGrid dataGrid, ModelMap modelMap) { modelMap.put(NormalExcelConstants.FILE_NAME, "垃圾重量明细报表"); modelMap.put(NormalExcelConstants.CLASS, TBGarbageWeight.class); modelMap.put(NormalExcelConstants.PARAMS,new ExportParams("垃圾重量明细报表", "导出人:"+ResourceUtil.getSessionUser().getRealName(), "导出信息")); modelMap.put(NormalExcelConstants.DATA_LIST, new ArrayList<>()); return NormalExcelConstants.EASYPOI_EXCEL_VIEW; } /** * 导入功能跳转 * * @return */ @RequestMapping(params = "upload") public ModelAndView upload(HttpServletRequest req) { req.setAttribute("controller_name", "garbageWeightController"); return new ModelAndView("common/upload/common_excel_upload"); } @SuppressWarnings("unchecked") @RequestMapping(params = "importExcel", method = RequestMethod.POST) @ResponseBody @Transactional(rollbackFor = Exception.class) public AjaxJson importExcel(HttpServletRequest request, HttpServletResponse response) { AjaxJson j = new AjaxJson(); MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; Map fileMap = multipartRequest.getFileMap(); for (Map.Entry entity : fileMap.entrySet()) { MultipartFile file = entity.getValue();// 获取上传文件对象 ImportParams params = new ImportParams(); params.setTitleRows(2); params.setHeadRows(1); params.setNeedSave(true); try { // 获取垃圾类型的字典数据 List rubbishType = systemService.queryDict("", "rubbishType", ""); Map rubbishTypeCollect = rubbishType.stream().collect(Collectors.toMap(DictEntity::getTypename, DictEntity::getTypecode)); List areaRegion = systemService.queryDict("", "areaRegion", ""); Map areaRegionCollect = areaRegion.stream().collect(Collectors.toMap(DictEntity::getTypename, DictEntity::getTypecode)); // delete-刘梦祥-2021年12月16日19:54:25(导入数据同步导出数据字典映射规则,删除原本的错误逻辑) /*List> plateAndAreaRegion = itbGarbageWeightService.getPlateAndAreaRegion(); Map map= new ConcurrentHashMap<>(); plateAndAreaRegion.forEach(stringStringMap -> { for (String key : stringStringMap.keySet()) { map.put(stringStringMap.get("plate"),stringStringMap.get("area_region")); System.out.println(stringStringMap.get("plate")+"---"+stringStringMap.get("area_region")); } });*/ List tbGarbageWeightList = ExcelImportUtil.importExcel( file.getInputStream(), TBGarbageWeight.class, params); tbGarbageWeightList.forEach(tbGarbageWeight -> { // 垃圾类型是否包含 if (WER_Garbage.contains(tbGarbageWeight.getGarbageType())) { tbGarbageWeight.setGarbageType(rubbishTypeCollect.get("湿垃圾")); } else if (DRY_Refuse.contains(tbGarbageWeight.getGarbageType())) { tbGarbageWeight.setGarbageType(rubbishTypeCollect.get("干垃圾")); } else { tbGarbageWeight.setGarbageType("类型缺失!"); } // 区域划分 if(StringUtil.isNotEmpty(areaRegionCollect.get(tbGarbageWeight.getAreaRegion()))){ tbGarbageWeight.setAreaRegion(areaRegionCollect.get(tbGarbageWeight.getAreaRegion())); }else{ tbGarbageWeight.setAreaRegion("类型缺失!"); } // 时间写入 if(tbGarbageWeight.getWeighTime() != null){ tbGarbageWeight.setWeighTime(tbGarbageWeight.getWeighTime()); } }); itbGarbageWeightService.saveBatch(tbGarbageWeightList,10); j.setMsg("文件导入成功!"); } catch (Exception e) { j.setMsg("文件导入失败!" + e.getMessage()); logger.error(ExceptionUtil.getExceptionMessage(e)); } finally { try { file.getInputStream().close(); } catch (IOException e) { e.printStackTrace(); } } } return j; } /** * 导出excel * * @param request * @param response */ @RequestMapping(params = "exportXls") public String exportXls(TBGarbageWeight tbGarbageWeight, HttpServletRequest request, HttpServletResponse response , DataGrid dataGrid, ModelMap modelMap) { List tbGarbageWeightList = itbGarbageWeightService.list(); List rubbishType = systemService.queryDict("", "rubbishType", ""); Map rubbishTypeCollect = rubbishType.stream().collect(Collectors.toMap(DictEntity::getTypecode, DictEntity::getTypename)); List areaRegion = systemService.queryDict("", "areaRegion", ""); Map areaRegionCollect = areaRegion.stream().collect(Collectors.toMap(DictEntity::getTypecode, DictEntity::getTypename)); tbGarbageWeightList.forEach(tbGarbageWeight1 -> { tbGarbageWeight1.setGarbageType(rubbishTypeCollect.get(tbGarbageWeight1.getGarbageType())); tbGarbageWeight1.setAreaRegion(areaRegionCollect.get(tbGarbageWeight1.getAreaRegion())); }); modelMap.put(NormalExcelConstants.FILE_NAME, "垃圾重量明细报表"); modelMap.put(NormalExcelConstants.CLASS, TBGarbageWeight.class); modelMap.put(NormalExcelConstants.PARAMS,new ExportParams("垃圾重量明细报表", "导出人:"+ ResourceUtil.getSessionUser().getRealName(), "导出信息")); modelMap.put(NormalExcelConstants.DATA_LIST, tbGarbageWeightList); return NormalExcelConstants.EASYPOI_EXCEL_VIEW; } }