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<WorkstationDatapointsVO> listDatapointsByWorkstationId(@RequestParam Long workstationId) {
|
return R.data(workstationDatapointsService.getDatapoints(workstationId));
|
}
|
|
@PutResource({"/saveDatapoints"})
|
@ApiOperation("保存工位数据点配置")
|
public R<Boolean> 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<BladeFile> exportDatapoints(long workstationId) {
|
//List<EmployeeExcel> list = EmployeeExcelWrapper.build().pageVO(pages).getRecords();
|
String fileName = String.format("%s-%s.xlsx", "点位配置", DateUtil.time());
|
|
WorkstationDatapointsVO dpVO = workstationDatapointsService.getDatapoints(workstationId);
|
|
|
List<List<String>> head = new ArrayList<>();
|
head.add(Arrays.asList("名称","别名"));
|
|
List<List<Object>> 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<List<Object>> data(String dpHead,String dpConfig){
|
List<List<Object>> result = new ArrayList<>();
|
JSONArray headsJson = JSONArray.parseArray(dpHead);
|
|
JSONArray dataJson = JSONArray.parseArray(dpConfig);
|
JSONObject rowJson;
|
JSONObject headOne ;
|
String prop;
|
List<Object> rowData;
|
for(int i=0;i<dataJson.size();i++) {
|
rowJson = dataJson.getJSONObject(i);
|
rowData = new ArrayList<>();
|
|
for(int j=0;j<headsJson.size();j++) {
|
headOne = headsJson.getJSONObject(j);
|
prop = headOne.getString("prop");
|
if(rowJson.containsKey(prop)) {
|
rowData.add(rowJson.getString(prop));
|
}else {
|
rowData.add("");
|
}
|
}
|
|
result.add(rowData);
|
}
|
|
return result;
|
}
|
|
List<List<String>> head(String dpHeadFullJsonStr){
|
List<List<String>> head = new ArrayList<>();
|
JSONArray headsJson = JSONArray.parseArray(dpHeadFullJsonStr);
|
|
JSONObject headOne ;
|
boolean isRequired;
|
String title;
|
for(int i=0;i<headsJson.size();i++) {
|
List<String> 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<List<String>> myhead, List<List<Object>> 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;
|
}
|
}
|