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