north-glass-erp/northglass-erp/src/views/pp/glassOptimize/ProjectMange.vue
@@ -582,6 +582,11 @@ 'Content-Type': 'application/json' } }).then((res) => { // 检查业务状态码,如果是201则抛出错误以在catch中处理 if (Number(res.code) === 201) { // 抛出自定义错误对象,包含后端返回的msg信息 throw new Error(res.msg || '操作失败'); } if (Number(res.code) === 200 && (res.msg === "" || res.msg === null)) { ElMessage.success(successMsg); } else { @@ -594,7 +599,7 @@ }).catch((error) => { console.error('请求出错,操作未完成,详细错误信息:', error); //const errorMsg = (res.data && res.data.errorMessage) ? res.data.errorMessage : '操作失败,未获取到具体原因,请联系管理员'; ElMessage.error(`请求出错,操作未完成`); ElMessage.error(`请求出错,操作未完成 `+error); rollbackStateAndReloadGrid(row, targetState); // 调用回滚函数 }); } north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ProjectDetail.vue
@@ -683,7 +683,23 @@ localStorage.setItem('projectNo', projectNo.value); }); const saveOptimizeData = () => { const saveOptimizeData = async () => { try { // 先从后端查询工程状态 const stateRes = await request.post(`/glassOptimize/getProjectState/${projectNo.value}`); if (Number(stateRes.code) === 200) { const projectData = stateRes.data.data; // 检查 optimize_state 状态 if (projectData.optimize_state === 1) { // 如果已完成优化,提示用户并阻止继续执行 ElMessage.warning('已完成优化保存,不允许重复提交'); return; } } else { ElMessage.warning(stateRes.msg); return; } if(orderInfo.optimizeData!==null){ if(quantitys.value===orderInfo.optimizeData.optimalResults.glassTotalQuantity){ console.log("保存数据1",orderInfo.optimizeData) @@ -693,18 +709,19 @@ } else { ElMessage.warning(res.msg); } }).catch((error) => { console.error("获取数据出错:", error); }); }else{ ElMessage.warning("原片不足,小片未全部优化"); } }else { ElMessage.warning("数据未优化"); } } catch (error) { ElMessage.error('检查工程状态失败,请稍后重试'); console.error('检查工程状态失败:', error); } } const fetchData = () => { north-glass-erp/northglass-erp/src/views/sd/order/CADDraw.vue
New file @@ -0,0 +1,11 @@ <script setup lang="ts"> import { MlCadViewer } from '@mlightcad/cad-viewer' </script> <template> <MlCadViewer locale="zh" url="Drawing1.dwg" /> </template> <style scoped> </style> north-glass-erp/src/main/java/com/example/erp/controller/pp/GlassOptimizeController.java
@@ -130,11 +130,14 @@ @PathVariable Integer states, @PathVariable Integer code ) throws JsonProcessingException { try { if (glassOptimizeService.updateProjectState(projectNumber, state,states,code)) { return Result.success(); } else { throw new ServiceException(Constants.Code_500, "修改失败"); } } catch (Exception e) { return Result.error("201", e.getMessage()); } } north-glass-erp/src/main/java/com/example/erp/service/mm/MaterialInventoryService.java
@@ -1,23 +1,14 @@ package com.example.erp.service.mm; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.example.erp.common.Constants; import com.example.erp.dto.mm.FinishedOperateLogDTO; import com.example.erp.dto.mm.MaterialLogDTO; import com.example.erp.entity.mm.*; import com.example.erp.entity.pp.*; import com.example.erp.entity.sd.Delivery; import com.example.erp.entity.sd.DeliveryDetail; import com.example.erp.entity.sd.OrderDetail; import com.example.erp.entity.sd.OrderProcessDetail; import com.example.erp.entity.userInfo.Log; import com.example.erp.entity.userInfo.SysError; import com.example.erp.exception.ServiceException; import com.example.erp.mapper.mm.BasicWarehouseTypeMapper; import com.example.erp.mapper.mm.MaterialInventoryMapper; import com.example.erp.mapper.mm.MaterialLogMapper; @@ -29,8 +20,6 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.interceptor.TransactionAspectSupport; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.List; import java.util.ArrayList; @@ -38,6 +27,9 @@ import java.text.SimpleDateFormat; import java.time.LocalDate; import java.util.*; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.atomic.AtomicReference; import java.util.stream.Collectors; @Service @@ -1317,12 +1309,20 @@ } public Object appGetStockList() { List<MaterialInventory> materialInventoryList = materialInventoryMapper.selectGetStockList(); ExecutorService executor = Executors.newFixedThreadPool(2); AtomicReference<List<MaterialInventory>> materialInventoryList = new AtomicReference<>(new ArrayList<MaterialInventory>()); executor.execute(() -> { materialInventoryList.set(materialInventoryMapper.selectGetStockList()); }); List<Object> list = new ArrayList<>(); executor.shutdown(); Map<String, Object> totalSum = new HashMap<>(); Integer inventoryQuantity = 0; Integer availableQuantity = 0; Double totalArea = 0.00; for (MaterialInventory materialInventory : materialInventoryList) { for (MaterialInventory materialInventory : materialInventoryList.get()) { inventoryQuantity += materialInventory.getInventoryQuantity(); availableQuantity += materialInventory.getAvailableQuantity(); totalArea += materialInventory.getTotalArea(); north-glass-erp/src/main/java/com/example/erp/service/pp/GlassOptimizeService.java
@@ -18,6 +18,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.interceptor.TransactionAspectSupport; @@ -45,6 +46,9 @@ GlassOptimizeMapper glassOptimizeMapper; @Autowired SysErrorService sysErrorService; @Value("${mesIp:localhost}") // 注入mesIp配置,默认值为10.153.19.31 private String mesIp; RabbitMQUtil rabbitMQUtil; //模拟计算 @@ -772,12 +776,14 @@ Map<String, Object> cancelResult = issuingCancelProject(projectNumber); // 获取返回结果中的data字段 Map<String, Object> responseData = (Map<String, Object>) cancelResult.get("data"); // 检查响应中的code字段,只有当code为200或202时才允许更新状态 if (responseData != null && responseData.containsKey("code")) { Object responseCode = responseData.get("code"); if (responseCode.equals(200) || responseCode.equals(202)) { glassOptimizeMapper.updateProjectStateMp(projectNumber, state); } else if (responseCode.equals(201)) { // 当返回201时,抛出自定义异常或返回错误信息 throw new RuntimeException(responseData.get("message").toString()); }else { return false; } @@ -1241,8 +1247,7 @@ boolean saveState=false; try { // 1. 创建URL对象 // URL url = new URL("http://10.153.19.31:88/api/loadGlass/engineering/importEngineer"); URL url = new URL("http://localhost:88/api/loadGlass/engineering/importEngineer"); URL url = new URL("http://" + mesIp + ":88/api/loadGlass/engineering/importEngineer"); // 2. 打开连接 HttpURLConnection conn = (HttpURLConnection) url.openConnection(); @@ -1480,8 +1485,8 @@ try { // 1. 创建URL对象 // URL url = new URL("http://10.153.19.31:88/api/loadGlass/engineering/optimizeCancelTask"); URL url = new URL("http://localhost:88/api/loadGlass/engineering/optimizeCancelTask"); URL url = new URL("http://" + mesIp + ":88/api/loadGlass/engineering/optimizeCancelTask"); // URL url = new URL("http://localhost:88/api/loadGlass/engineering/optimizeCancelTask"); // 2. 打开连接 north-glass-erp/src/main/java/com/example/erp/service/pp/ReportService.java
@@ -5,6 +5,7 @@ import com.alibaba.fastjson.TypeReference; import com.baomidou.dynamic.datasource.annotation.DS; import com.example.erp.common.AsyncQueryExecutor; import com.example.erp.entity.sd.*; import com.example.erp.tools.AreaComputed.*; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -12,10 +13,6 @@ import com.example.erp.dto.pp.*; import com.example.erp.entity.pp.DamageDetails; import com.example.erp.entity.pp.Report; import com.example.erp.entity.sd.BasicData; import com.example.erp.entity.sd.OrderDetail; import com.example.erp.entity.sd.OrderGlassDetail; import com.example.erp.entity.sd.ProductDetail; import com.example.erp.mapper.pp.*; import com.example.erp.mapper.sd.*; import org.springframework.beans.factory.annotation.Autowired; @@ -53,6 +50,7 @@ FlowCardMapper flowCardMapper; private ReportingWorkMapper reportingWorkMapper; private final OrderMapper orderMapper; @Resource private AsyncQueryExecutor asyncExecutor; @@ -136,7 +134,7 @@ ProductionSchedulingMapper productionSchedulingMapper, FlowCardMapper flowCardMapper, OrderGlassDetailMapper orderGlassDetailMapper, BasicDataMapper basicDataMapper, ProductDetailMapper productDetailMapper, OrderDetailMapper orderDetailMapper, ReportingWorkMapper reportingWorkMapper, DamageDetailsMapper damageDetailsMapper) { ReportingWorkMapper reportingWorkMapper, DamageDetailsMapper damageDetailsMapper, OrderMapper orderMapper) { this.reportMapper = reportMapper; this.orderProcessDetailMapper = orderProcessDetailMapper; this.productionSchedulingMapper = productionSchedulingMapper; @@ -147,6 +145,7 @@ this.orderDetailMapper = orderDetailMapper; this.reportingWorkMapper = reportingWorkMapper; this.damageDetailsMapper = damageDetailsMapper; this.orderMapper = orderMapper; } //流程卡进度方法 @@ -303,8 +302,6 @@ dataList.get(i).put("reportWorkQuantityShow",JSON.toJSONString(dataShow)); } map.put("data",dataList ); @@ -1445,11 +1442,10 @@ dataList.get(i).put("reportWorkQuantityShow",JSON.toJSONString(dataShow)); } Order order = orderMapper.selectOrderId(orderId); map.put("mergeCells", rowCount); map.put("data",dataList); map.put("order",order); return map; } north-glass-erp/src/main/java/com/example/erp/service/sd/OrderService.java
@@ -1061,6 +1061,7 @@ totalSum.put("perimeter", df.format(perimeter)); totalSum.put("count", list.size()); Map<String,Object> map = new HashMap<>(); map.put("data",list); map.put("date",date); north-glass-erp/src/main/resources/application-prod.yml
@@ -7,6 +7,8 @@ ip: localhost port: 3309 #mesIp: 10.153.19.31 mesIp: localhost #sa-token: # timeout: 86400 north-glass-erp/src/main/resources/mapper/mm/MaterialInventory.xml
@@ -1393,6 +1393,7 @@ left join mm.material_store ms on mi.material_code=ms.id where inventory_quantity>0 and mi.inventory_organization = '原片库' order by mi.id desc </select>