package com.steerinfo.dil.controller; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.TypeReference; import com.google.common.collect.Maps; import com.steerinfo.dil.config.ImageFileUtils; import com.steerinfo.dil.mapper.UniversalMapper; import com.steerinfo.dil.service.impl.UniversalServiceImpl; import com.steerinfo.dil.util.*; import com.steerinfo.framework.controller.RESTfulResult; import com.steerinfo.framework.service.pagehelper.PageHelper; import io.swagger.annotations.*; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartRequest; import org.springframework.web.multipart.commons.CommonsMultipartFile; import javax.imageio.ImageIO; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.xml.crypto.Data; import java.awt.*; import java.awt.image.BufferedImage; import java.io.*; import java.math.BigDecimal; import java.net.URLEncoder; import java.text.SimpleDateFormat; import java.util.*; import java.util.List; import static com.steerinfo.dil.util.EasyExcelUitl.exportExcelFile; import static com.steerinfo.dil.util.HTTPRequestUtils.getJsonData; import static com.steerinfo.dil.util.HTTPRequestUtils.sendPost; /** * @ author :TXF * @ time :2021/10/19 18:06 * 通用接口 */ @RequestMapping("${api.version}/uc") @RestController public class UniversalController extends BaseRESTfulController { @Autowired UniversalServiceImpl universalService; @Autowired UniversalMapper universalMapper; @Autowired ColumnDataUtil columnDataUtil; @Autowired private ImageFileUtils imageFileUtils; @ApiModelProperty(value = "边输边查物资大类") @PostMapping("/getMaterialTypeByLike") public RESTfulResult getMaterialTypeByLike(@RequestBody(required = false) Map map) { List> list = universalMapper.getMaterialTypeByLike(map); return success(list); } @ApiModelProperty(value = "边输边查物资") @PostMapping("/getMaterialByLike") public RESTfulResult getMaterialByLike(@RequestBody(required = false) Map map) { List> list = universalMapper.getMaterialByLike(map); return success(list); } @ApiModelProperty(value = "边输边查运力类型") @PostMapping("/getCapacityTypeByLike") public RESTfulResult getCapacityTypeByLike(@RequestBody(required = false) Map map) { List> list = universalMapper.getCapacityTypeByLike(map); //处理多ID for (Map item : list) { List fuelTypeIds = JSONObject.parseObject(item.get("fuelTypeIds").toString(), ArrayList.class); item.put("fuelTypeIds", fuelTypeIds); } return success(list); } @ApiModelProperty(value = "边输边查公司单位") @PostMapping("/getCompanyMesByLike") public RESTfulResult getCompanyMesByLike(@RequestBody(required = false) Map map) { List> list = universalMapper.getCompanyMesByLike(map); return success(list); } @ApiModelProperty(value = "边输边查公司计划单位") @PostMapping("/getCompanyMesByPlanLike") public RESTfulResult getCompanyMesByPlanLike(@RequestBody(required = false) Map map) { List> list = universalMapper.getCompanyMesByPlanLike(map); return success(list); } @ApiModelProperty(value = "边输边查环保标准") @PostMapping("/getEmissionStandardByLike") public RESTfulResult getEmissionStandardByLike(@RequestBody(required = false) Map map) { List> list = universalMapper.getEmissionStandardByLike(map); return success(list); } @ApiModelProperty(value = "边输边查作业点") @PostMapping("/getOperationPointByLike") public RESTfulResult getOperationPointByLike(@RequestBody(required = false) Map map) { //System.out.println(map.get("id")); List> list = universalMapper.getOperationPointByLike(map); return success(list); } @ApiModelProperty(value = "边输边查作业点") @PostMapping("/getOperationPointByLikeNoCode") public RESTfulResult getOperationPointByLikeNoCode(@RequestBody(required = false) Map map) { //System.out.println(map.get("id")); List> list = universalMapper.getOperationPointByLikeNoCode(map); return success(list); } @ApiModelProperty(value = "边输边查人员") @PostMapping("/getPersonnelByLike") public RESTfulResult getPersonnelByLike(@RequestBody(required = false) Map map) { if ("司机".equals(map.get("personnelPost"))) { List> list = universalMapper.getDriverByLike(map); return success(list); } if ("指挥工".equals(map.get("personnelTest"))){ map.put("DiaoCar","11"); List> list = universalMapper.getPersonnelByLike(map); return success(list); } List> list = universalMapper.getPersonnelByLike(map); return success(list); } @ApiModelProperty(value = "边输边查车牌号") @PostMapping("/getCapacityByLike") public RESTfulResult getCapacityByLike(@RequestBody(required = false) Map map) { List> list = universalMapper.getCapacityByLike(map); return success(list); } @ApiModelProperty(value = "边输边查车牌号生产") @PostMapping("/getCapacityByLikeSc") public RESTfulResult getCapacityByLikeSc(@RequestBody(required = false) Map map) { List> list = universalMapper.getCapacityByLikeSc(map); return success(list); } @ApiModelProperty(value = "边输边查车牌号-内部") @PostMapping("/getCapacityByLikeInner") public RESTfulResult getCapacityByLikeInner(@RequestBody(required = false) Map map) { List> list = universalMapper.getCapacityByLikeInner(map); return success(list); } @ApiModelProperty(value = "边输边查快捷需求code") @PostMapping("/getCategoryCodeByLike") public RESTfulResult getCategoryCodeByLike(@RequestBody(required = false) Map map) { List> list = universalMapper.getCategoryCodeByLike(map); return success(list); } @ApiModelProperty(value = "边输岗位信息") @PostMapping("/getJobInfosByLike") public RESTfulResult getrmsrmsjobinfosBylike(@RequestBody(required = false) Map map) { List> list = universalMapper.getrmsrmsjobinfosBylike(map); return success(list); } @ApiModelProperty(value = "边输边查运输范围") @PostMapping("/getTransRangeByLike") public RESTfulResult getTransRange(@RequestBody(required = false) Map map) { List> list = universalMapper.getTransRangeByLike(map); return success(list); } @ApiModelProperty(value = "边输边查作业路径") @PostMapping("/getLineByLike") public RESTfulResult getLineByLike(@RequestBody(required = false) Map map) { List> list = universalMapper.getLineByLike(map); return success(list); } @ApiOperation("上传文件通用方法,返回成功后的url") @PostMapping("/uploadFile") public RESTfulResult uploadFile(MultipartRequest request) throws Exception { //添加到files数组 List files = request.getFiles("file"); //没有上传 if (files.size() == 0) { return success("", "没有上传任何文件!"); } try { //上传图片,拼接在一个url里 String url = ""; for (int i = 0; i < files.size(); i++) { MultipartFile file = files.get(i); url += imageFileUtils.updateFile(file, i + new Date().getTime()) + ';'; } return success(url, "上传成功!"); } catch (Exception e) { e.printStackTrace(); return failed(e.getMessage(), "上传失败!"); } } @ApiOperation("水印测试") @PostMapping("/paintTest") public RESTfulResult uploadFile(MultipartFile file, HttpServletResponse response) throws Exception { File targetFile = DataChange.paintWater(file, "地点:xxxx省市县\n时间:" + new Date(), 50, -100); Thread.sleep(10000); targetFile.delete(); return success("上传成功"); } @ApiOperation("表格查询显示和隐藏") @PostMapping("/getColumnShowHidden") public Map getColumnShowHidden(@RequestBody(required = false) Map map) { Map responseMap = universalService.getColumnShowHidden(map); return responseMap; } @ApiOperation("切换列的显示与隐藏") @PostMapping("updateColumnShowHidden") public RESTfulResult updateColumnShowHidden(@RequestBody Map map) { return success(universalService.updateColumnShowHidden(map)); } @ApiOperation("查询列的显示隐藏方案") @PostMapping("getColumShowHideScheme") public RESTfulResult getColumShowHideScheme(@RequestBody Map map) { return success(universalService.getColumShowHideScheme(map)); } @GetMapping("/getWlUrl") public String getWlUrl() { return universalMapper.getWlUrl(); } @ApiModelProperty(value = "边输边查业务类型") @PostMapping("/getBusinessTypeLike") public RESTfulResult getBusinessTypeLike(@RequestBody(required = false) Map map) { List> list = universalMapper.getBusinessTypeLike(map); return success(list); } @ApiModelProperty(value = "边输边查燃料类型") @PostMapping("/getFuelTypeByLike") public RESTfulResult getFuelTypeByLike(@RequestBody(required = false) Map map) { List> list = universalMapper.getFuelTypeByLike(map); return success(list); } @ApiOperation(value = "查询是否有正在执行的运单") @PostMapping("/getReceivedTransOrder") public RESTfulResult getReceivedTransOrder(@RequestBody(required = false) Map map) { List> orderIds = universalMapper.getOrderIds(map); return success(orderIds); } @ApiOperation(value = "需求快捷编码") @PostMapping("/getDemandRulesCode") public RESTfulResult getDemandRulesCode(@RequestBody(required = false) Map map) { List> demandRules = universalMapper.getDemandRulesCode(map); return success(demandRules); } @ApiOperation("获取身份证内码,用于判断该车辆是否有") @PostMapping("/getIdCardCode") public RESTfulResult getIdCardCode(@RequestBody Map map) { String idCardCode = universalMapper.getIdCardCode(map); return success(idCardCode); } @ApiOperation("根据物料编码获取物料信息") @PostMapping("/getMaterial") public RESTfulResult getMaterial(@RequestBody Map map, Integer apiId, Integer pageNum, Integer pageSize) { PageHelper.startPage(pageNum, pageSize); List> material = universalMapper.getMaterial(map); PageListAdd pageList = columnDataUtil.tableColumnData(apiId, material); return success(pageList); } @ApiOperation("根据车型获取剩余车辆") @PostMapping("/getcountCar") public RESTfulResult getcountCar(@RequestBody Map map) { List> material = universalMapper.getcountCar(map); return success(material); } @ApiOperation("getShipContainer") @PostMapping("/getShipContainer") public RESTfulResult getShipContainer(@RequestBody Map map) { List> containerList = universalMapper.getContainerList(map); return success(containerList); } @ApiOperation("获取通知单号") @PostMapping("/getRequirementNo") public RESTfulResult getRequirementNo(@RequestBody Map map) { Map requireMap = new HashMap<>(); BigDecimal requirementId = universalMapper.transRequirementId(); if (map.get("businessFlag").toString().equals("XS")) { //获取当天最大的作业记录号 String serialNumber = universalMapper.getMaxSerialNumber(); requireMap.put("requirementId", requirementId); requireMap.put("requirementNo", serialNumber); } else { String requirementNo = DataChange.generateEightDigitsNumber(map.get("businessFlag").toString(), requirementId.intValue()); requireMap.put("requirementId", requirementId); requireMap.put("requirementNo", requirementNo); } return success(requireMap); } @ApiOperation("通知单边输边查") @PostMapping("/getRequirementByLike") public RESTfulResult getRequirementByLike(@RequestBody Map map) { List> list = universalMapper.getRequirementByLike(map); return success(list); } @ApiOperation("查询APP版本更新") @PostMapping("/getAppVersion") public RESTfulResult getAppVersion() { Map config = universalMapper.getConfigByName("APP最新版本"); return success(config.get("valueString")); } @ApiOperation("查询运单中最近的司机排班") @PostMapping("/getCapacityDriver") public RESTfulResult getCapacityDriver(@RequestBody Map map) { return success(universalMapper.getCapacityDriver(map)); } @ApiOperation("查询运单中所有的司机排班") @PostMapping("/getCapacityDriverSelect") public RESTfulResult getCapacityDriverSelect(@RequestBody Map map) { List> list = universalMapper.getCapacityDriverSelect(map); List> result = new ArrayList<>(); Set set = new HashSet<>(); //对list去重 for (Map item : list) { //只保留5条 if (result.size() >= 5) { break; } //去重 String key = item.get("capacityId") + "-" + item.get("driverId"); if (set.contains(key)) { continue; } else { set.add(key); result.add(item); } } return success(result); } @ApiOperation("获取车辆信息") @PostMapping("/getCapacityInfo") public RESTfulResult getCapacityInfo(@RequestBody Map map) { return success(universalMapper.getCapacityInfo(map)); } @ApiOperation("获取司机信息") @PostMapping("/getDriverInfo") public RESTfulResult getDriverInfo(@RequestBody Map map) { return success(universalMapper.getDriverInfo(map)); } @ApiOperation("需求边输边查") @PostMapping("/getRequireByLike") public RESTfulResult getRequireByLike(@RequestBody Map map) { return success(universalMapper.getRequireByLike(map)); } @ApiOperation("通用导出") @PostMapping("/excleExport") public RESTfulResult excleExport(@RequestBody Map map, HttpServletRequest httpServletRequest) throws IOException { JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(map)); jsonObject.putAll(JSONObject.parseObject(JSONObject.toJSONString(map.get("requestQuery")))); String url = "http://172.16.90.202:80" + map.get("requestUrl").toString() + "&pageNum=1&pageSize=10000"; JSONObject json = HttpUtil.sendPost(url, jsonObject, httpServletRequest.getHeader("cookie")); Map data = (Map) json.get("data"); List> listMap = (List>) data.get("list"); List> columnData = (List>) data.get("columnData"); LinkedHashMap columnMaps = Maps.newLinkedHashMap(); for (int i = 0; i < columnData.size(); i++) { columnMaps.put(columnData.get(i).get("prop").toString(), columnData.get(i).get("label").toString()); } byte[] stream1 = exportExcelFile(columnMaps, listMap); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); String path = "/data/file/exportExcel/" + simpleDateFormat.format(new Date()) + "/"; File datFile = new File(path); if (!datFile.exists()) { datFile.mkdirs(); } String name = map.get("userName") + "-" + map.get("exclename").toString() + Util.RandomCreate(8) + ".xlsx"; FileOutputStream outputStream1 = new FileOutputStream(new File(path + name)); outputStream1.write(stream1); outputStream1.flush(); outputStream1.close(); Map response = new HashMap<>(); response.put("fileName", name); response.put("filePath", path + name); return success(response); } @ApiModelProperty(value = "边输边查公司单位审批流程使用") @PostMapping("/getCompanyMesByLike2") public RESTfulResult getCompanyMesByLike2(@RequestBody(required = false) Map map) { List> list = universalMapper.getCompanyMesByLike2(map); return success(list); } @ApiOperation(value = "获取排队网格") @PostMapping("/getQueueGridList") public RESTfulResult getQueueGridList(@RequestBody(required = false) Map map) { List> list = universalMapper.getQueueGridList(map); return success(list); } @PostMapping("/getTransOrderByJobNumber") @ApiOperation("根据手机号查询运单") public RESTfulResult getTransOrderByJobNumber(@RequestBody Map map) { List> list = universalMapper.getTransOrderByJobNumber(map); return success(list); } @ApiModelProperty(value = "边输边查库存名称及信息") @PostMapping("/getInventoryByLike") public RESTfulResult getInventoryByLike(@RequestBody(required = false) Map map) { List> list = universalMapper.getInventoryByLike(map); return success(list); } @ApiModelProperty(value = "根据运单号查询运单信息") @PostMapping("/getTransOrderInFoByNo") public RESTfulResult getTransOrderInFoByNo(@RequestBody(required = false) Map map) { List> list = universalMapper.getTransOrderInFoByNo(map); return success(list); } @ApiModelProperty(value = "查询钢坯内转合同号") @PostMapping("/selectGpTzd") public RESTfulResult selectGpTzd(@RequestBody(required = false) Map map) { List> list = universalMapper.selectGpTzd(map); return success(list); } @ApiOperation(value = "查询宏瑞车辆状态") @PostMapping("getInnerCapacityStatus") public RESTfulResult getInnerCapacityStatus(@RequestBody(required = false) Map map) { List> list = universalMapper.getInnerCapacityStatus(map); return success(list); } }