package com.example.erp.service.pp; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.dynamic.datasource.annotation.DS; import com.example.erp.common.RabbitMQUtil; import com.example.erp.entity.pp.FlowCard; import com.example.erp.entity.pp.OptimizeProjectMange; import com.example.erp.mapper.pp.GlassOptimizeMapper; import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.io.IOException; import java.sql.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.TimeoutException; @Service @DS("sd") public class GlassOptimizeService { @Autowired GlassOptimizeMapper glassOptimizeMapper; RabbitMQUtil rabbitMQUtil; //模拟计算 public Map SimulationCalculation(Map message) { Map map = new HashMap<>(); try { rabbitMQUtil = new RabbitMQUtil(); // 发送消息 // 获取 computeData 和 cardData Object computeData = message.get("computeData"); Object cardData = message.get("cardData"); rabbitMQUtil.sendMessage("6"); System.out.println("send message: " + message); String date = rabbitMQUtil.receiveMessages(); System.out.println("Received message: " + date); // 关闭连接 rabbitMQUtil.close(); map.put("data", date); } catch (IOException e) { e.printStackTrace(); } catch (TimeoutException | InterruptedException e) { e.printStackTrace(); } return map; } //模拟计算保存 public Boolean addSimulation(Map object) { try { glassOptimizeMapper.addSimulation(object); glassOptimizeMapper.addratioResult(object); glassOptimizeMapper.addratioProjectResult(object); return true; } catch (Exception e) { e.printStackTrace(); return false; } } //优化设置保存 public Boolean optimizeParmsSave(Map object) { try { ObjectMapper mapper = new ObjectMapper(); String jsonString = mapper.writeValueAsString(object); glassOptimizeMapper.optimizeParmsSave(jsonString); return true; } catch (Exception e) { e.printStackTrace(); return false; } } //优化调整结果保存 public Boolean saveOptimizeResult(Map object) { try { ObjectMapper mapper = new ObjectMapper(); String jsonString = mapper.writeValueAsString(object); glassOptimizeMapper.optimizeResultSave(jsonString); return true; } catch (Exception e) { e.printStackTrace(); return false; } } public Boolean updateOptimizeResult(Map object,String processId){ try { ObjectMapper mapper = new ObjectMapper(); String jsonString = mapper.writeValueAsString(object); glassOptimizeMapper.updateOptimizeResult(jsonString,processId); return true; } catch (Exception e) { e.printStackTrace(); return false; } } //优化调整结果查询 public Map selectOptimizeResult(String processId) { Map map = new HashMap<>(); map.put("data", glassOptimizeMapper.selectOptimizeResult(processId)); return map; } //工程信息 public Map projectInfoSv(String projectNo) { Map map = new HashMap<>(); map.put("data", glassOptimizeMapper.projectInfoMp(projectNo)); return map; } //工程信息流程卡 public Map getProcessCardSv(String projectNo) { Map map = new HashMap<>(); map.put("data", glassOptimizeMapper.getProcessCardMp(projectNo)); return map; } //库存信息 public Map materialStoreSv(String thickness, String model) { Map map = new HashMap<>(); map.put("data", glassOptimizeMapper.materialStoreMp(thickness,model)); return map; } //工程查询流程卡 public Map getFlowCardList(String optionVal, Integer radio) { Map map = new HashMap<>(); map.put("data", glassOptimizeMapper.getFlowCardListMp(optionVal, radio)); return map; } //工程管理查询 public Map OptimizeProjectMange(Date startSelectTime, Date endSelectTime, OptimizeProjectMange optimizeProjectMange) { Map map = new HashMap<>(); map.put("data", glassOptimizeMapper.optimizeProjectMangeMp(startSelectTime, endSelectTime , optimizeProjectMange)); return map; } //修改排版状态 public Boolean updateProjectState(String projectNumber, Integer state) { if (!projectNumber.isEmpty()) { glassOptimizeMapper.updateProjectStateMp(projectNumber, state); return true; } else { return false; } } //删除工程 public Map deleteProject(String projectNumber) { Map map = new HashMap<>(); map.put("data", glassOptimizeMapper.deleteProjectMp(projectNumber)); return map; } public Map getProjectListSv() { Map map = new HashMap<>(); map.put("data", glassOptimizeMapper.getProjectListMp()); return map; } //模拟计算工程号查询 public MapselectProjectComputeSv(String projectNumber) { Map map = new HashMap<>(); map.put("data", glassOptimizeMapper.selectProjectComputeMp(projectNumber)); return map; } //模拟计算流程卡详情 public MapselectComputeDetailSv(String processId) { Map map = new HashMap<>(); map.put("data", glassOptimizeMapper.selectComputeDetailMp(processId)); return map; } public Map getProcessCardDetailSv(String processId, Integer technologyNumber) { Map map = new HashMap<>(); map.put("data", glassOptimizeMapper.getProcessCardDetailmMp(processId,technologyNumber)); return map; } public Map selectGlassTypeSv() { Map map = new HashMap<>(); map.put("data", glassOptimizeMapper.selectGlassTypeMp()); return map; } public Map getProjectIdSv() { Map map = new HashMap<>(); map.put("data", glassOptimizeMapper.getProjectIdSv()); return map; } public Boolean addProjectSv(String optionVal, String projectId, String projectNmae, Map object) { String userName = ""; if (object.get("userName") != null) { userName = object.get("userName").toString(); } if ("null".equals(projectNmae)) { projectNmae = ""; } Double sumArea = (double) 0; Double area = (double) 0; Integer sumQuantity = 0; List flowCardList = JSONArray.parseArray(JSONObject.toJSONString(object.get("projectdetail")), FlowCard.class); if (!flowCardList.isEmpty()) { for (FlowCard flowCard : flowCardList) { //给流程卡表添加对应的工程号 glassOptimizeMapper.updateFlowCardProject(flowCard.getProcessId(),flowCard.getTechnologyNumber(),projectId); area = glassOptimizeMapper.getSelectArea(flowCard.getProcessId(),flowCard.getTechnologyNumber()); sumArea += area; sumQuantity +=flowCard.getQuantity(); } int index = optionVal.indexOf("mm"); // 获取 "mm" 前面的部分 String glass_thickness = optionVal.substring(0, index); // 获取 "mm" 后面的部分 String glass_type = optionVal.substring(index + 2); glassOptimizeMapper.addProjectMp(projectId,projectNmae,glass_thickness,glass_type,sumQuantity,sumArea,userName); return true; } else { return false; } } }