package com.whyc.service; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.google.gson.reflect.TypeToken; import com.whyc.dto.*; import com.whyc.pojo.db_abe_ram.AbeInf; import com.whyc.pojo.db_param.PageParam; import com.whyc.pojo.db_wms.Task; import com.whyc.util.HttpUtil; import com.whyc.util.JsonUtil; import com.whyc.util.ThreadLocalUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import sun.applet.Main; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; @Service public class WmsService { @Autowired private TaskService taskService; @Autowired private AbeInfService abeInfService; public Response getMaterialList() { String httpUrl = "http://192.168.10.133:8051"+"/api/Wms_material/get_all"; Response response = HttpUtil.doGet(httpUrl, (String) null); //对结果进行处理 if(response.getCode() == 1){ //请求成功,data有正常数据 String dataStr = (String) response.getData(); //WmsMaterialDto wmsMaterialDto = JsonUtil.getGson().fromJson(dataStr, WmsMaterialDto.class); List wmsMaterialDtoList = JsonUtil.getGson().fromJson(dataStr, new TypeToken>(){}.getType()); response.set(1,wmsMaterialDtoList); } return response; } /** * * @param palletDto * @return * 响应报文 * 实例 { * "code": 0, * "message": "string" * } * 参数说明 字段名称 参数类型 字段描述 * code Int 接口通信返回编码详细信息, 0:成功 * message String 详细信息 * 会自动根据返回编码Code在信息前增加Code详情 */ public Response sendTask(WmsPalletDto palletDto) { String httpUrl = "http://192.168.10.133:8051"+"/api/Wms_pallet/WmsOutTask"; Response response = HttpUtil.doPost(httpUrl, JsonUtil.getGson().toJson(palletDto)); //对结果进行处理 if(response.getCode() == 1){ //请求成功,data有正常数据 String dataStr = (String) response.getData(); WmsResponse responseInside = JsonUtil.getGson().fromJson(dataStr, WmsResponse.class); response.set(1,responseInside); if(responseInside.getCode() ==0) { //对下发的任务进行数据库存储 Date date = new Date(); List pallets = palletDto.getPallets(); List taskNos = responseInside.getTask_no(); for (int i = 0; i < pallets.size(); i++) { String pallet = pallets.get(i); String taskNo = taskNos.get(i); Task task = new Task(); task.setTaskNo(taskNo); task.setPallets(pallet); task.setDes(palletDto.getDes()); if (palletDto.getDes() == 3) { //活化,填入活化参数 List activateParameter = palletDto.getActivateParameter(); task.setActivateParameter(String.join(",", activateParameter)); } task.setCreateTime(date); taskService.add(task); } } } return response; } public Response getLocationList() { String httpUrl = "http://192.168.10.133:8051"+"/api/wms_location/get_all"; Response response = HttpUtil.doGet(httpUrl, (String) null); //对结果进行处理 if(response.getCode() == 1){ //请求成功,data有正常数据 String dataStr = (String) response.getData(); /*//截取dataStr中"data:"后的字符串 int index = dataStr.indexOf("data"); dataStr = dataStr.substring(index+6, dataStr.length()-3); //WmsLocationDto wmsLocationDto = JsonUtil.getGson().fromJson(dataStr, WmsLocationDto.class);*/ WmsResponse> wmsResponse = JsonUtil.getGson().fromJson(dataStr, new TypeToken>>(){}.getType()); List wmsLocationDtoList = wmsResponse.getData(); response.set(1,wmsLocationDtoList); } return response; } public Response getPalletList(int MaterialType, int PalletStatus) { String httpUrl = "http://192.168.10.133:8051"+"/api/Wms_pallet/get_all"; Map queryMap = new HashMap<>(); queryMap.put("MaterialType",MaterialType); queryMap.put("PalletStatus",PalletStatus); Response response = HttpUtil.doGet(httpUrl, HttpUtil.urlEncode(queryMap)); //对结果进行处理 if(response.getCode() == 1){ //请求成功,data有正常数据 String dataStr = (String) response.getData(); /* //截取dataStr中"data:"后的字符串 int index = dataStr.indexOf("data"); dataStr = dataStr.substring(index+6, dataStr.length()-3); List wmsPalletList = JsonUtil.getGson().fromJson(dataStr, new TypeToken>(){}.getType());*/ WmsResponse> wmsResponse = JsonUtil.getGson().fromJson(dataStr, new TypeToken>>(){}.getType()); List wmsPalletList = wmsResponse.getData(); response.set(1,wmsPalletList); } return response; } public Response sendTaskStatus(TaskDto taskDto) { String taskNo = taskDto.getTask_no(); //通过taskNo从数据库查找对应的记录 Task taskInDB = taskService.getByTaskNo(taskNo); if(taskInDB == null){ return new Response<>().set(1,"未找到对应的任务"); } Task task = new Task(); task.setTaskNo(taskNo); task.setTaskType(taskDto.getTask_type()); //这个地方起始点的定义,运行过程中需要关注,以及编码对应的具体位置,需要他们提供 task.setStartLocationCode(taskDto.getStart_location_code()); task.setEndLocationCode(taskDto.getEnd_location_code()); task.setStatus(taskDto.getStatus()); task.setStatusTime(ThreadLocalUtil.parse(taskDto.getStatus_time(),1)); //对接收到的任务进行逻辑判断和数据存储 //String taskNo = task.getTaskNo(); //taskType=4,入库测压任务,这个为仓储自动触发的任务,非主动平台下达, // 需要手动添加任务类型,和电池组编号 Integer taskType = task.getTaskType(); if(taskType == 4){ task.setDes(2); task.setPallets(taskDto.getPallet()); } Integer status = task.getStatus(); Date statusTime = task.getStatusTime(); switch (status){ case 1: case 11: case 21: { task.setPickUpStartTime(statusTime); }break; case 2: case 12: case 22: task.setPickUpTime(statusTime);break; case 13: case 23: { /*String pallet = task.getPallets(); if(pallet == null){ pallet = taskService.getByTaskNo(taskNo).getPallets(); }*/ String pallet = taskInDB.getPallets(); //更新电池单体编号和任务编号 AbeInf abeInf = abeInfService.get(); abeInf.setAbeMonId(Integer.valueOf(pallet)); abeInf.setTaskNo(taskNo); abeInfService.updateById(abeInf); //设置放置到活化仓的开始时间 task.setActivationChamberStartTime(statusTime); }break; case 14: case 24: task.setActivationChamberPickUpTime(statusTime);break; case 15: case 25: task.setActivationChamberEndTime(statusTime);break; case 4: case 16: case 26: task.setBackFinishTime(statusTime); task.setEndTime(new Date()); break; default: throw new IllegalArgumentException("status字段未定义,无法被识别: " + status); } taskService.update(task); return new Response().setII(1,"上报状态完成"); } public Response getFinishedPage(int pageNum, int pageSize) { PageHelper helper = new PageHelper(); helper.startPage(pageNum,pageSize); List tasks = taskService.getFinishedList(); PageInfo pageInfo = new PageInfo<>(tasks); return new Response().set(1,pageInfo); } public Response getOngoingList() { List taskList = taskService.getOngoingList(); return new Response().set(1,taskList); } }