diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/flowable/FlowMonitorController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/flowable/FlowMonitorController.java index 8540925f..4d3e85c0 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/flowable/FlowMonitorController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/flowable/FlowMonitorController.java @@ -289,6 +289,9 @@ public class FlowMonitorController extends BaseController { Todo todo = new Todo(); todo.setBusinessKey(businessKey); Todo todo1 = todoService.selectTodo(todo); + if (todo1 == null){ + todo1= todoService.selectLastApproveTodo(businessKey,null); + } activitiTracingChart.generateFlowChart(todo1.getProcessInstanceId(), response.getOutputStream()); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/util/ActivitiTracingChart.java b/ruoyi-admin/src/main/java/com/ruoyi/web/util/ActivitiTracingChart.java index a83d3644..f3573a1a 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/util/ActivitiTracingChart.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/util/ActivitiTracingChart.java @@ -70,7 +70,7 @@ public class ActivitiTracingChart { ProcessEngineConfiguration engConf = processEngineConfiguration.getProcessEngineConfiguration(); ProcessDiagramGenerator diagramGenerator = engConf.getProcessDiagramGenerator(); - InputStream in = diagramGenerator.generateDiagram(bpmnModel, "bmp", highLightedActivities, highLightedFlows, "宋体", + InputStream in = diagramGenerator.generateDiagram(bpmnModel, "png", highLightedActivities, highLightedFlows, "宋体", "宋体", "宋体", engConf.getClassLoader(), 1.0, true); byte[] buf = new byte[1024]; int length; diff --git a/ruoyi-admin/src/main/resources/templates/project/order/approve.html b/ruoyi-admin/src/main/resources/templates/project/order/approve.html index db45463e..87b429f7 100644 --- a/ruoyi-admin/src/main/resources/templates/project/order/approve.html +++ b/ruoyi-admin/src/main/resources/templates/project/order/approve.html @@ -356,7 +356,22 @@ th:field="*{partnerPhone}"> - + + 收货地址 + + + + + + 收货人 + + Email + + 联系方式 + + + diff --git a/ruoyi-admin/src/main/resources/templates/project/order/edit.html b/ruoyi-admin/src/main/resources/templates/project/order/edit.html index ec61221f..77dec61c 100644 --- a/ruoyi-admin/src/main/resources/templates/project/order/edit.html +++ b/ruoyi-admin/src/main/resources/templates/project/order/edit.html @@ -412,6 +412,7 @@
  • 备货信息
  • 物流信息
  • 流转过程
  • +
  • 流程进度
  • @@ -569,6 +570,9 @@
    +
    + image +
    @@ -850,7 +854,7 @@ $(function () { - + $('#flowable-image').attr("src",ctx+"flow/monitor/traceProcessKey?businessKey="+[[${projectOrderInfo.orderCode}]]) let shipmentAmount = [[${projectOrderInfo.shipmentAmount}]] || 0 if (shipmentAmount) { diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/flowable/service/impl/TodoServiceImpl.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/flowable/service/impl/TodoServiceImpl.java index 05511871..1e99d4c2 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/flowable/service/impl/TodoServiceImpl.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/flowable/service/impl/TodoServiceImpl.java @@ -276,7 +276,6 @@ public class TodoServiceImpl implements TodoService { if (StringUtils.isBlank(taskId)) { taskId = taskService.createTaskQuery().processInstanceBusinessKey(businessKey).taskAssignee(String.valueOf(getSysUser().getUserId())).singleResult().getId(); } - //fixme 后续流程审批人改为配置项 log.info("流程审批----businessKey:{} taskId:{} variable:{}", businessKey, taskId, JSON.toJSONString(variable)); if (ObjectUtils.isNotEmpty(variable)) { taskService.complete(taskId, variable); diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectOrderInfoServiceImpl.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectOrderInfoServiceImpl.java index 8162cd26..1f37d58f 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectOrderInfoServiceImpl.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectOrderInfoServiceImpl.java @@ -831,7 +831,7 @@ public class ProjectOrderInfoServiceImpl implements IProjectOrderInfoService, To // } // 添加终端产品列 - addHeadList(maxHardware, headerList, "终端"); + addHeadList(maxHardware, headerList, "硬件"); // 添加服务产品列 @@ -844,9 +844,12 @@ public class ProjectOrderInfoServiceImpl implements IProjectOrderInfoService, To addHeadList(maxMaintenanceService, headerList, "维保服务"); - headerList.add(Collections.singletonList("订单金额")); - headerList.add(Collections.singletonList("产品总价(配置信息总价)")); + headerList.add(Collections.singletonList("总价合计")); + headerList.add(Collections.singletonList("折后总价合计")); headerList.add(Collections.singletonList("维保金额")); + headerList.add(Collections.singletonList("软件折后小计")); + headerList.add(Collections.singletonList("硬件折后小计")); + headerList.add(Collections.singletonList("服务折后小计")); return headerList; } @@ -886,6 +889,7 @@ public class ProjectOrderInfoServiceImpl implements IProjectOrderInfoService, To OrderExcelNumStaticsDto nVIDIADto = new OrderExcelNumStaticsDto(BigDecimal.ZERO, 0L,""); List maintenanceList = new ArrayList<>(); List deployList = new ArrayList<>(); + List notDeployAndMaintenanceList = new ArrayList<>(); List oneList = new ArrayList<>(); List nvidiaList = new ArrayList<>(); // 添加软件产品列 @@ -914,25 +918,26 @@ public class ProjectOrderInfoServiceImpl implements IProjectOrderInfoService, To // 添加终端产品列 totalPrice = processProducts(info.getHardwareProjectProductInfoList(), maxHardware, row, totalPrice); + + if (CollUtil.isNotEmpty(info.getMaintenanceProjectProductInfoList())){ + for (ProjectProductInfo projectProductInfo : info.getMaintenanceProjectProductInfoList()) { + if (MAINTENANCE_SERVICES.contains(projectProductInfo.getProductBomCode()) ) { + maintenanceList.add(projectProductInfo); + maintenancePrice = maintenancePrice.add(projectProductInfo.getAllPrice()); + }else if ( DEPLOY_SERVICES.contains(projectProductInfo.getProductBomCode()) ) { + deployList.add(projectProductInfo); + }else{ + notDeployAndMaintenanceList.add(projectProductInfo); + } + } + } + + int serviceIndex=maxMaintenance; // 添加服务产品列 for (int maxMaintenanceIndex = 0; serviceIndex >0 ; maxMaintenanceIndex++) { - if (CollUtil.isNotEmpty(info.getMaintenanceProjectProductInfoList()) && maxMaintenanceIndex < info.getMaintenanceProjectProductInfoList().size()) { - ProjectProductInfo productInfo = info.getMaintenanceProjectProductInfoList().get(maxMaintenanceIndex); - - if (productInfo != null && StringUtils.isNotEmpty(productInfo.getProductBomCode()) - && MAINTENANCE_SERVICES.contains(productInfo.getProductBomCode()) - ) { - maintenanceList.add(productInfo); - maintenancePrice = maintenancePrice.add(productInfo.getAllPrice()); - continue; - } - if (productInfo != null && StringUtils.isNotEmpty(productInfo.getProductBomCode()) - && DEPLOY_SERVICES.contains(productInfo.getProductBomCode()) - ) { - deployList.add(productInfo); - continue; - } + if (CollUtil.isNotEmpty(notDeployAndMaintenanceList) && maxMaintenanceIndex < notDeployAndMaintenanceList.size()) { + ProjectProductInfo productInfo = notDeployAndMaintenanceList.get(maxMaintenanceIndex); totalPrice = addProductRow(productInfo, row, totalPrice); serviceIndex--; } else { @@ -967,10 +972,21 @@ public class ProjectOrderInfoServiceImpl implements IProjectOrderInfoService, To // row.add(15, oneStorDto.getAllPrice().toString()); // row.add(16, nVIDIADto.getQuantity().toString()); // row.add(17, nVIDIADto.getAllPrice().toString()); +// row.add(StrUtil.toStringOrNull(info.getOrderChannel().equals(ProjectOrderInfo.OrderChannelEnum.TOTAL_GENERATION.getCode()) ? +// info.getShipmentAmount() : info.getActualPurchaseAmount())); row.add(info.getShipmentAmount() != null ? info.getShipmentAmount().toString() : ""); row.add(totalPrice.toString()); //维保金额 row.add(maintenancePrice.toString()); + row.add(StrUtil.toStringOrNull(info.getSoftwareProjectProductInfoList() == null ? 0 : +// info.getSoftwareProjectProductInfoList().stream() +// .map(item -> item.getPrice().multiply(info.getDiscountFold() == null ||info.getOrderStatus().equals(ProjectOrderInfo.OrderStatus.WAIT_APPROVE.getCode()) ? BigDecimal.ONE : info.getDiscountFold()).setScale(2,RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(item.getQuantity()))) +// .reduce(BigDecimal.ZERO, BigDecimal::add))); + info.getSoftwareProjectProductInfoList().stream().map(ProjectProductInfo::getAllPrice).reduce(BigDecimal.ZERO, BigDecimal::add))); + row.add(StrUtil.toStringOrNull(info.getHardwareProjectProductInfoList() == null ? 0 : + info.getHardwareProjectProductInfoList().stream().map(ProjectProductInfo::getAllPrice).reduce(BigDecimal.ZERO, BigDecimal::add))); + row.add(StrUtil.toStringOrNull(info.getMaintenanceProjectProductInfoList() == null ? 0 : + info.getMaintenanceProjectProductInfoList().stream().map(ProjectProductInfo::getAllPrice).reduce(BigDecimal.ZERO, BigDecimal::add))); dataList.add(row); } return dataList; diff --git a/ruoyi-sip/src/main/resources/mapper/flow/TodoMapper.xml b/ruoyi-sip/src/main/resources/mapper/flow/TodoMapper.xml index 6e9015c6..2c89ee0c 100644 --- a/ruoyi-sip/src/main/resources/mapper/flow/TodoMapper.xml +++ b/ruoyi-sip/src/main/resources/mapper/flow/TodoMapper.xml @@ -275,5 +275,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and task_name like concat('%',#{taskName},'%') + order by approve_time desc + limit 1 \ No newline at end of file