package com.qianwen.smartman.modules.cps.controller; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.apache.commons.codec.Charsets; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.disk.DiskFileItem; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import java.util.Arrays; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.commons.CommonsMultipartFile; import com.alibaba.excel.EasyExcel; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.metadata.IPage; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.qianwen.core.boot.ctrl.BladeController; import com.qianwen.core.excel.util.ExcelUtil; import com.qianwen.core.mp.support.Condition; import com.qianwen.core.mp.support.Query; import com.qianwen.core.oss.model.BladeFile; import com.qianwen.core.scanner.modular.annotation.GetResource; import com.qianwen.core.scanner.modular.annotation.PostResource; import com.qianwen.core.scanner.modular.annotation.PutResource; import com.qianwen.core.scanner.modular.stereotype.ApiResource; import com.qianwen.core.secure.annotation.PreAuth; import com.qianwen.core.tenant.annotation.NonDS; import com.qianwen.core.tool.api.R; import com.qianwen.core.tool.utils.DateUtil; import com.qianwen.smartman.modules.cps.dto.EmployeeDTO; import com.qianwen.smartman.modules.cps.entity.WorkstationDatapoints; import com.qianwen.smartman.modules.cps.service.WorkstationDatapointsService; import com.qianwen.smartman.modules.cps.vo.EmployeeSelectVO; import com.qianwen.smartman.modules.cps.vo.WorkstationDatapointsSubmitVO; import com.qianwen.smartman.modules.cps.vo.WorkstationDatapointsVO; import com.qianwen.smartman.modules.cps.wrapper.EmployeeExcelWrapper; import com.qianwen.smartman.modules.resource.builder.oss.OssBuilder; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @Api(value = "工位管理", tags = {"工位管理"}) @RestController @ApiResource({"smis/workstation"}) @NonDS @Validated public class WorkstationDpController extends BladeController { @Autowired private WorkstationDatapointsService workstationDatapointsService; @Autowired private OssBuilder ossBuilder; //@PreAuth @GetResource({"/listDatapointsByWorkstationId"}) @ApiOperation("根据工位id获取数据点") public R listDatapointsByWorkstationId(@RequestParam Long workstationId) { return R.data(workstationDatapointsService.getDatapoints(workstationId)); } @PutResource({"/saveDatapoints"}) @ApiOperation("保存工位数据点配置") public R saveDatapoints(@RequestBody WorkstationDatapointsSubmitVO datapoints) { //return R.data(true); try { workstationDatapointsService.submit(datapoints); }catch(Exception e) { //R.fail(null). return R.fail(e.getMessage()); } return R.data(true); } @ApiOperationSupport(order = 7) @GetResource({"/export-dp"}) @ApiOperation("导出工位数据点") @PreAuth public R exportDatapoints(long workstationId) { //List list = EmployeeExcelWrapper.build().pageVO(pages).getRecords(); String fileName = String.format("%s-%s.xlsx", "点位配置", DateUtil.time()); WorkstationDatapointsVO dpVO = workstationDatapointsService.getDatapoints(workstationId); List> head = new ArrayList<>(); head.add(Arrays.asList("名称","别名")); List> data = new ArrayList<>(); data.add(Arrays.asList("DeviceStatus","alias")); MultipartFile multipartFile = exportExcel("sheet1",fileName,head(dpVO.getDpHead()),data(dpVO.getDpHead(),dpVO.getDpConfig())); BladeFile bladeFile = this.ossBuilder.tempTemplate().putFile(multipartFile.getOriginalFilename(), multipartFile); return R.data(bladeFile); //return null; } List> data(String dpHead,String dpConfig){ List> result = new ArrayList<>(); JSONArray headsJson = JSONArray.parseArray(dpHead); JSONArray dataJson = JSONArray.parseArray(dpConfig); JSONObject rowJson; JSONObject headOne ; String prop; List rowData; for(int i=0;i(); for(int j=0;j> head(String dpHeadFullJsonStr){ List> head = new ArrayList<>(); JSONArray headsJson = JSONArray.parseArray(dpHeadFullJsonStr); JSONObject headOne ; boolean isRequired; String title; for(int i=0;i head0 = new ArrayList<>(); headOne = headsJson.getJSONObject(i); if(headOne.containsKey("isRequired")) { isRequired = headOne.getBooleanValue("isRequired"); }else { isRequired = false; } title = (isRequired?"*":"") + headOne.getString("label"); head0.add(title); head.add(head0); } return head; } /** * 动态表头导出 * * @param response HttpServletResponse * @param fileName 文件名 * @param Myhead Excel表头信息 * @param data Excel数据 */ public MultipartFile exportExcel(String sheetName,String filename, List> myhead, List> data) { try { DiskFileItemFactory factory = new DiskFileItemFactory(); factory.setRepository(new File(System.getProperty("java.io.tmpdir"))); //factory.setRepository(new File("d:/")); FileItem fileItem = factory.createItem("excel", "application/vnd.ms-excel", true, filename); EasyExcel.write(fileItem.getOutputStream()) .head(myhead) .sheet(sheetName) .doWrite(data); return new CommonsMultipartFile(fileItem); } catch (IOException e) { e.printStackTrace(); } return null; } }