package com.moral.api.controller; import com.alibaba.excel.EasyExcel; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.moral.api.entity.AllocationLog; import com.moral.api.entity.ResponsibilityUnit; import com.moral.api.pojo.enums.AllocationApproveEnum; import com.moral.api.pojo.enums.ChangeEnum; import com.moral.api.pojo.enums.YesOrNo; import com.moral.api.pojo.ext.allocation.AllocationExcelExt; import com.moral.api.pojo.ext.allocation.AllocationExt; import com.moral.api.pojo.ext.allocation.AllocationPageExt; import com.moral.api.pojo.query.allocation.*; import com.moral.api.pojo.query.allocationextension.AllocationExtensionAddCond; import com.moral.api.pojo.vo.allocation.AllocationListExcelVo; import com.moral.api.pojo.vo.allocation.AllocationPageVo; import com.moral.api.pojo.vo.allocation.AllocationVo; import com.moral.api.pojo.vo.file.FileAddressVo; import com.moral.api.service.AllocationService; import com.moral.api.utils.*; import com.moral.constant.Constants; import com.moral.constant.PageResult; import com.moral.constant.ResultMessage; import com.moral.util.DateUtils; import com.moral.util.WebUtils; import io.swagger.annotations.*; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.util.ObjectUtils; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.net.URL; import java.net.URLEncoder; import java.util.*; import java.util.concurrent.atomic.AtomicReference; @Api(tags = {"立行立改"}) @RestController @RequestMapping("allocation") @Slf4j public class AllocationController { @Value("${file.path}") private String basePath; @Autowired private AllocationService allocationService; @ApiOperation(value = "污染类型", notes = "污染类型") @ApiImplicitParams({ @ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String") }) @RequestMapping(value = "contaminate", method = RequestMethod.GET) public ResultMessage contaminate() { List> professions = allocationService.sysDictData(Constants.WU_RAN_LEI_XING); return ResultMessage.ok(professions); } @ApiOperation(value = "责任单位", notes = "责任单位") @ApiImplicitParams({ @ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String") }) @RequestMapping(value = "unit", method = RequestMethod.GET) public ResultMessage unit() { List responsibilityUnits = allocationService.seleteUnit(); return ResultMessage.ok(responsibilityUnits); } /** * 添加交办单 * @return */ @PostMapping("insert") @ApiOperation("新增") public ResultMessage insert(@Valid @RequestBody AllocationAddCond allocation){ allocationService.insertAllocation(allocation); return ResultMessage.ok(); } /** * 修改表单 * @param allocationUpdateCond * @return * * */ @PostMapping("update") @ApiOperation("修改") public ResultMessage update(@Valid @RequestBody AllocationUpdateCond allocationUpdateCond){ allocationService.updateAll(allocationUpdateCond); return ResultMessage.ok(); } @PostMapping("change") @ApiOperation("整改") public ResultMessage changeAllocation(@Valid @RequestBody AllocationChangeCond changeCond){ allocationService.changeAllocation(changeCond); return ResultMessage.ok(); } @PostMapping("check") @ApiOperation("审批") public ResultMessage checkAllocation(@Valid @RequestBody AllocationCheckCond checkCond){ allocationService.checkAllocation(checkCond); return ResultMessage.ok(); } @PostMapping("/page") @ApiOperation("分页") public ResultMessage> page(@Valid @RequestBody AllocationPageCond allocationPageCond) { Page page = allocationService.extPage(allocationPageCond); PageResult result = new PageResult<>(page); result.setList(AllocationPageVo.convert(page.getRecords())); return ResultMessage.ok(result); } @GetMapping("/detail") @ApiOperation("详情") public ResultMessage get(Integer id) { AllocationExt allocationext = allocationService.extOne(id); AllocationVo allocationVo = AllocationVo.convert(allocationext); allocationVo.setFileBaseList(allocationext.getFileBaseList()); allocationVo.setFileChangeList(allocationext.getFileChangeList()); allocationVo.setFileApproveList(allocationext.getFileApproveList()); allocationVo.setApproveList(allocationext.getApproveList()); allocationVo.setTime(DateUtils.dateToDateString(allocationVo.getEscalationTime(), DateUtils.yyyy_MM_dd_CN)); return ResultMessage.ok(allocationVo); } @GetMapping("remove") @ApiOperation("删除") public ResultMessage removeById(Integer id){ allocationService.removeById(id); return ResultMessage.ok(); } @GetMapping("invalid") @ApiOperation("作废") public ResultMessage invalidResult(@RequestParam @ApiParam(value = "id",name = "主键id") Integer id, @RequestParam @ApiParam(value = "invalidReason",name = "作废理由") String invalidReason){ allocationService.invalidResult(id,invalidReason); return ResultMessage.ok(); } @PostMapping("/applyfor") @ApiOperation("申请延期") public ResultMessage applyFor(@Valid @RequestBody AllocationExtensionAddCond allocationExtensionAddCond) { return allocationService.applyFor(allocationExtensionAddCond) ? ResultMessage.ok() : ResultMessage.fail(); } /** * 查询表单总览 * @return */ @GetMapping("selectUnitView") @ApiOperation("表单总览") public ResultMessage selectUnitView(HttpServletRequest request){ Map params = WebUtils.getParametersStartingWith(request, null); Map map1 = allocationService.selectUnitView(params); return ResultMessage.ok(ObjectUtils.isEmpty(map1)? "0":map1); } @GetMapping("unitExel") public void unitExel(HttpServletResponse response,HttpServletRequest request){ Map params = WebUtils.getParametersStartingWith(request, null); //数据集合 List> mapArrayList = allocationService.unitExel(params); if (CollectionUtils.isEmpty(mapArrayList)) { return; } Map map = mapArrayList.get(0); List list = new ArrayList<>(); for (String key : map.keySet()) { list.add(key); } String[] s2 = new String[list.size()]; list.toArray(s2); NoModelWriteData d = new NoModelWriteData(); d.setFileName("数据导出"); d.setHeadMap(s2); d.setDataStrMap(s2); d.setDataList(mapArrayList); try { EasyExcelUtils easyExcelUtils = new EasyExcelUtils(); easyExcelUtils.noModleWrite(d, response); } catch (Exception e) { int i = 0; } } @GetMapping("updataUnit") @ApiOperation("修改责任单位") public ResultMessage updataUnit(@RequestParam @ApiParam(value = "id",name = "主键id") Integer id, @RequestParam @ApiParam(value = "unitId",name = "责任主题Id") Integer unitId, @RequestParam @ApiParam(value = "polluteType",name = "污染分类Id") Integer polluteType){ allocationService.updataUnit(id,unitId,polluteType); return ResultMessage.ok(); } @GetMapping("getLog") @ApiOperation("修改记录") public ResultMessage getLog(@RequestParam @ApiParam(value = "allocationNum",name = "责任单号") String allocationNum){ List log = allocationService.getLog(allocationNum); return ResultMessage.ok(log); } @GetMapping("listExcel") @ApiOperation("批量导出") public void listExcel(@RequestParam @ApiParam(value = "id",name = "主键id") List id,HttpServletResponse response){ List extList = allocationService.listExcel(id); try { genImageExcel(extList,response); }catch (Exception e){ log.error("error result ",e); } } private void genImageExcel(List list, HttpServletResponse response) throws IOException { if (CollectionUtils.isEmpty(list)) { return; } List demoDataList = new ArrayList<>(); for(int i = 0;i urls = new ArrayList<>(); for(FileAddressVo z : excelExt.getFileBaseList()){ urls.add(handleFileRealPath(z.getFileAddress())); } item.setChangeTypeStr(Objects.isNull(excelExt.getChangeType())?" ":ChangeEnum.getByValue(excelExt.getChangeType()).getName()); item.setChangeStr(Objects.isNull(excelExt.getIsChange())?"否": YesOrNo.getByValue(excelExt.getIsChange()).getName()); item.setWriteCellDataFile(urls); List urlsAfter = new ArrayList<>(); for(FileAddressVo z : excelExt.getFileChangeList()){ urlsAfter.add(handleFileRealPath(z.getFileAddress())); } item.setWriteCellDataFileResult(urlsAfter); item.setEscalationTimeStr(DateUtils.dateToDateString(excelExt.getEscalationTime(),DateUtils.yyyy_MM_dd_EN)); item.setChangeTimeStr(Objects.isNull(excelExt.getChangeTime())?" ":DateUtils.dateToDateString(excelExt.getChangeTime(),DateUtils.yyyy_MM_dd_EN)); demoDataList.add(item); } try { response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + URLEncoder.encode("交办单导出", "utf-8") + ".xlsx"); response.setHeader("Access-Control-Expose-Headers", "Content-Disposition"); EasyExcel.write(response.getOutputStream(), AllocationListExcelVo.class) .registerWriteHandler(new CustomImageModifyHandler()).sheet("交办单").doWrite(demoDataList); response.getOutputStream().close(); }catch (Exception e){ log.error("error result ",e); } } private String handleFileRealPath(String path) { return basePath.replaceAll(StringUtils.BACKSLASH.concat(StringUtils.BACKSLASH), StringUtils.SLASH).concat(StringUtils.SLASH).concat(path); } }