diff --git a/anrui-base/anrui-base-biz/src/main/resources/ftl/dai_existingvehicles.ftl b/anrui-base/anrui-base-biz/src/main/resources/ftl/dai_existingvehicles.ftl
index c3c6dbb5d7..0e89f78bd9 100644
--- a/anrui-base/anrui-base-biz/src/main/resources/ftl/dai_existingvehicles.ftl
+++ b/anrui-base/anrui-base-biz/src/main/resources/ftl/dai_existingvehicles.ftl
@@ -1067,17 +1067,6 @@
(出卖方) :
-
-
-
-
-
-
-
-
-
-
-
@@ -1089,16 +1078,6 @@
${createOrgName!}
-
-
-
-
-
-
-
-
-
-
@@ -1151,46 +1130,12 @@
- <#-- -->
<#if carSaleCustomerName??>
${carSaleCustomerName!}
<#else>
-
+
#if>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -1223,29 +1168,9 @@
<#if carSaleIdNo??>
${carSaleIdNo!}
<#else>
-
+
#if>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -1284,39 +1209,6 @@
#if>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -1341,26 +1233,6 @@
#if>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -1848,17 +1720,6 @@
为
-
-
-
-
-
-
-
-
-
-
-
@@ -1877,30 +1738,8 @@
-
-
-
-
-
-
-
-
-
-
-
-
- 元(大写
-
-
-
-
-
-
-
-
-
-
+ 元(大写
@@ -1913,27 +1752,6 @@
${priceRemarks!}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -1995,17 +1813,6 @@
向甲方交纳订金
-
-
-
-
-
-
-
-
-
-
-
@@ -2024,19 +1831,8 @@
-
-
-
-
-
-
-
-
-
-
-
- 元, 乙方提车时交清全部车款。甲方未收到全款前, 车辆所有
+ 元,乙方提车时交清全部车款。甲方未收到全款前,车辆所有
@@ -2090,17 +1886,6 @@
付地点
-
-
-
-
-
-
-
-
-
-
-
@@ -2112,17 +1897,6 @@
${address!}
-
-
-
-
-
-
-
-
-
-
-
@@ -2131,7 +1905,7 @@
- ,乙方自提。
+ ,乙方自提。
@@ -2173,7 +1947,7 @@
- 乙方或乙方授权的提车人提车时需按照合同约定的车辆信息对车况及随车工具进行验收,验
+ 乙方或乙方授权的提车人提车时需按照合同约定的车辆信息对车况及随车工具进行验 收,验
@@ -2332,15 +2106,6 @@
辆自身问题等甲方原因导致车辆不能登记上牌的,
-
-
-
-
-
-
-
-
-
@@ -2369,16 +2134,7 @@
- 解决; 由于乙方未按有关规定时限及时办理车辆登记上牌手续或车辆注册登记所在公司的
-
-
-
-
-
-
-
-
-
+ 解决;由于乙方未按有关规定时限及时办理车辆登记上牌手续或车辆注册登记所在公司的
@@ -2408,7 +2164,7 @@
- 非甲方原因导致不能办理车辆登记上牌手续的, 由乙方自行解决。
+ 非甲方原因导致不能办理车辆登记上牌手续的,由乙方自行解决。
@@ -2430,7 +2186,7 @@
- 七、乙方交纳订金后在 10 日内不提车的,视为乙方单方放
+ 七、乙方交纳订金后在10日内不提车的,视为乙方单方放
@@ -2440,16 +2196,7 @@
- 弃购车, 甲方有权将车辆另行处置, 订
-
-
-
-
-
-
-
-
-
+ 弃购车,甲方有权将车辆另行处置,订
@@ -2501,17 +2248,7 @@
- 乙方交纳订金后,因甲方原因导致乙方不能提车的,甲方退还乙方订金,合同终止不再履行
-
-
-
-
-
-
-
-
-
- 。
+ 乙方交纳订金后,因甲方原因导致乙方不能提车的,甲方退还乙方订金,合同终止不再履行。
@@ -2652,7 +2389,7 @@
-
+
@@ -2822,26 +2559,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -2850,7 +2567,7 @@
- ${year!}
+ ${year!}
@@ -2902,16 +2619,6 @@
日
-
-
-
-
-
-
-
-
-
-
@@ -2920,7 +2627,7 @@
- ${year!}
+ ${year!}
@@ -2972,16 +2679,6 @@
日
-
-
-
-
-
-
-
-
-
-
diff --git a/anrui-base/anrui-base-biz/src/main/resources/ftl/dai_existingvehicles_black.ftl b/anrui-base/anrui-base-biz/src/main/resources/ftl/dai_existingvehicles_black.ftl
index f42f1c80ce..a355ae60c6 100644
--- a/anrui-base/anrui-base-biz/src/main/resources/ftl/dai_existingvehicles_black.ftl
+++ b/anrui-base/anrui-base-biz/src/main/resources/ftl/dai_existingvehicles_black.ftl
@@ -1067,17 +1067,6 @@
(出卖方) :
-
-
-
-
-
-
-
-
-
-
-
@@ -1089,16 +1078,6 @@
${createOrgName!}
-
-
-
-
-
-
-
-
-
-
@@ -1142,50 +1121,6 @@
(买受方):
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -1206,36 +1141,6 @@
号码:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -1274,39 +1179,6 @@
#if>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -1331,26 +1203,6 @@
#if>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -1838,17 +1690,6 @@
为
-
-
-
-
-
-
-
-
-
-
-
@@ -1867,30 +1708,8 @@
-
-
-
-
-
-
-
-
-
-
-
- 元(大写
-
-
-
-
-
-
-
-
-
-
-
+ 元(大写
@@ -1903,27 +1722,6 @@
${priceRemarks!}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -1985,17 +1783,6 @@
向甲方交纳订金
-
-
-
-
-
-
-
-
-
-
-
@@ -2005,18 +1792,7 @@
- ${depositTotal!}
-
-
-
-
-
-
-
-
-
-
-
+ ${depositTotal!}
@@ -2026,7 +1802,7 @@
- 元, 乙方提车时交清全部车款。甲方未收到全款前, 车辆所有
+ 元,乙方提车时交清全部车款。甲方未收到全款前,车辆所有
@@ -2080,17 +1856,6 @@
付地点
-
-
-
-
-
-
-
-
-
-
-
@@ -2109,19 +1874,8 @@
-
-
-
-
-
-
-
-
-
-
-
- ,乙方自提。
+ ,乙方自提。
@@ -2163,7 +1917,7 @@
- 乙方或乙方授权的提车人提车时需按照合同约定的车辆信息对车况及随车工具进行验收,验
+ 乙方或乙方授权的提车人提车时需按照合同约定的车辆信息对车况及随车工具进行验 收,验
@@ -2322,15 +2076,6 @@
辆自身问题等甲方原因导致车辆不能登记上牌的,
-
-
-
-
-
-
-
-
-
@@ -2359,16 +2104,7 @@
- 解决; 由于乙方未按有关规定时限及时办理车辆登记上牌手续或车辆注册登记所在公司的
-
-
-
-
-
-
-
-
-
+ 解决;由于乙方未按有关规定时限及时办理车辆登记上牌手续或车辆注册登记所在公司的
@@ -2398,7 +2134,7 @@
- 非甲方原因导致不能办理车辆登记上牌手续的, 由乙方自行解决。
+ 非甲方原因导致不能办理车辆登记上牌手续的,由乙方自行解决。
@@ -2430,16 +2166,7 @@
- 弃购车, 甲方有权将车辆另行处置, 订
-
-
-
-
-
-
-
-
-
+ 弃购车,甲方有权将车辆另行处置, 订
@@ -2642,7 +2369,7 @@
-
+
@@ -2812,26 +2539,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -2840,7 +2547,7 @@
- ${year!}
+ ${year!}
@@ -2892,16 +2599,6 @@
日
-
-
-
-
-
-
-
-
-
-
@@ -2910,7 +2607,7 @@
- ${year!}
+ ${year!}
@@ -2962,16 +2659,6 @@
日
-
-
-
-
-
-
-
-
-
-
diff --git a/anrui-base/anrui-base-biz/src/main/resources/ftl/dai_orderacar.ftl b/anrui-base/anrui-base-biz/src/main/resources/ftl/dai_orderacar.ftl
index d0bd1e6aa8..6ec022806e 100644
--- a/anrui-base/anrui-base-biz/src/main/resources/ftl/dai_orderacar.ftl
+++ b/anrui-base/anrui-base-biz/src/main/resources/ftl/dai_orderacar.ftl
@@ -2718,17 +2718,7 @@
- 甲
-
-
-
-
-
-
-
-
-
- 方:
+ 甲方:
@@ -2737,7 +2727,7 @@
-
+
@@ -2871,7 +2861,7 @@
- ${year!}
+ ${year!}
@@ -2933,16 +2923,6 @@
日
-
-
-
-
-
-
-
-
-
-
@@ -2951,7 +2931,7 @@
- ${year!}
+ ${year!}
diff --git a/anrui-base/anrui-base-biz/src/main/resources/ftl/dai_orderacar_black.ftl b/anrui-base/anrui-base-biz/src/main/resources/ftl/dai_orderacar_black.ftl
index ddec373cfc..c3810fe3e7 100644
--- a/anrui-base/anrui-base-biz/src/main/resources/ftl/dai_orderacar_black.ftl
+++ b/anrui-base/anrui-base-biz/src/main/resources/ftl/dai_orderacar_black.ftl
@@ -2703,17 +2703,7 @@
- 甲
-
-
-
-
-
-
-
-
-
- 方:
+ 甲方:
@@ -2722,7 +2712,7 @@
-
+
@@ -2856,7 +2846,7 @@
- ${year!}
+ ${year!}
@@ -2918,16 +2908,6 @@
日
-
-
-
-
-
-
-
-
-
-
@@ -2936,7 +2916,7 @@
- ${year!}
+ ${year!}
diff --git a/anrui-base/anrui-base-biz/src/main/resources/ftl/existingvehicles.ftl b/anrui-base/anrui-base-biz/src/main/resources/ftl/existingvehicles.ftl
index aebbcae42a..5fe070d9da 100644
--- a/anrui-base/anrui-base-biz/src/main/resources/ftl/existingvehicles.ftl
+++ b/anrui-base/anrui-base-biz/src/main/resources/ftl/existingvehicles.ftl
@@ -1730,7 +1730,7 @@
- 元(大写
+ 元(大写
@@ -1877,7 +1877,7 @@
- 元, 乙方提车时交清全部车款。甲方未收到全款前, 车辆所有
+ 元,乙方提车时交清全部车款。甲方未收到全款前,车辆所有
@@ -1972,7 +1972,7 @@
- ,乙方自提。
+ ,乙方自提。
@@ -2014,7 +2014,7 @@
- 乙方或乙方授权的提车人提车时需按照合同约定的车辆信息对车况及随车工具进行验收,验
+ 乙方或乙方授权的提车人提车时需按照合同约定的车辆信息对车况及随车工具进行验 收,验
@@ -2218,7 +2218,7 @@
- 解决; 由于乙方未按有关规定时限及时办理车辆登记上牌手续或车辆注册登记所在公司的
+ 解决;由于乙方未按有关规定时限及时办理车辆登记上牌手续或车辆注册登记所在公司的
@@ -2257,7 +2257,7 @@
- 非甲方原因导致不能办理车辆登记上牌手续的, 由乙方自行解决。
+ 非甲方原因导致不能办理车辆登记上牌手续的,由乙方自行解决。
@@ -2279,7 +2279,7 @@
- 七、乙方交纳订金后在 10 日内不提车的,视为乙方单方放
+ 七、乙方交纳订金后在10日内不提车的,视为乙方单方放
@@ -2289,7 +2289,7 @@
- 弃购车, 甲方有权将车辆另行处置, 订
+ 弃购车,甲方有权将车辆另行处置,订
@@ -2660,7 +2660,7 @@
-
+
@@ -2869,17 +2869,7 @@
- ${year!} 年 ${month!} 月 ${day!} 日
-
-
-
-
-
-
-
-
-
-
+ ${year!} 年 ${month!} 月 ${day!} 日
@@ -2889,7 +2879,7 @@
- ${year!} 年 ${month!} 月 ${day!} 日
+ ${year!} 年 ${month!} 月 ${day!} 日
diff --git a/anrui-base/anrui-base-biz/src/main/resources/ftl/existingvehicles_black.ftl b/anrui-base/anrui-base-biz/src/main/resources/ftl/existingvehicles_black.ftl
index 0e7bc3ddfc..f2f0721d81 100644
--- a/anrui-base/anrui-base-biz/src/main/resources/ftl/existingvehicles_black.ftl
+++ b/anrui-base/anrui-base-biz/src/main/resources/ftl/existingvehicles_black.ftl
@@ -1730,7 +1730,7 @@
- 元(大写
+ 元(大写
@@ -1877,7 +1877,7 @@
- 元, 乙方提车时交清全部车款。甲方未收到全款前, 车辆所有
+ 元,乙方提车时交清全部车款。甲方未收到全款前,车辆所有
@@ -2014,7 +2014,7 @@
- 乙方或乙方授权的提车人提车时需按照合同约定的车辆信息对车况及随车工具进行验收,验
+ 乙方或乙方授权的提车人提车时需按照合同约定的车辆信息对车况及随车工具进行验 收,验
@@ -2257,7 +2257,7 @@
- 非甲方原因导致不能办理车辆登记上牌手续的, 由乙方自行解决。
+ 非甲方原因导致不能办理车辆登记上牌手续的,由乙方自行解决。
@@ -2279,7 +2279,7 @@
- 七、乙方交纳订金后在 10 日内不提车的,视为乙方单方放
+ 七、乙方交纳订金后在10日内不提车的,视为乙方单方放
@@ -2289,7 +2289,7 @@
- 弃购车, 甲方有权将车辆另行处置, 订
+ 弃购车,甲方有权将车辆另行处置,订
@@ -2660,7 +2660,7 @@
-
+
@@ -2869,17 +2869,7 @@
- ${year!} 年 ${month!} 月 ${day!} 日
-
-
-
-
-
-
-
-
-
-
+ ${year!} 年 ${month!} 月 ${day!} 日
@@ -2889,7 +2879,7 @@
- ${year!} 年 ${month!} 月 ${day!} 日
+ ${year!} 年 ${month!} 月 ${day!} 日
diff --git a/anrui-base/anrui-base-biz/src/main/resources/ftl/orderacar.ftl b/anrui-base/anrui-base-biz/src/main/resources/ftl/orderacar.ftl
index 8c2b0ba8e3..05922a8fdd 100644
--- a/anrui-base/anrui-base-biz/src/main/resources/ftl/orderacar.ftl
+++ b/anrui-base/anrui-base-biz/src/main/resources/ftl/orderacar.ftl
@@ -2744,17 +2744,7 @@
- 甲
-
-
-
-
-
-
-
-
-
- 方:
+ 甲方:
@@ -2763,7 +2753,7 @@
-
+
diff --git a/anrui-base/anrui-base-biz/src/main/resources/ftl/orderacar_black.ftl b/anrui-base/anrui-base-biz/src/main/resources/ftl/orderacar_black.ftl
index f410976648..597033b9e2 100644
--- a/anrui-base/anrui-base-biz/src/main/resources/ftl/orderacar_black.ftl
+++ b/anrui-base/anrui-base-biz/src/main/resources/ftl/orderacar_black.ftl
@@ -2743,17 +2743,7 @@
- 甲
-
-
-
-
-
-
-
-
-
- 方:
+ 甲方:
@@ -2762,7 +2752,7 @@
-
+
diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/resources/ftl/clmmht.ftl b/anrui-riskcenter/anrui-riskcenter-biz/src/main/resources/ftl/clmmht.ftl
index fd98f5aeb2..e3ccd1007d 100644
--- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/resources/ftl/clmmht.ftl
+++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/resources/ftl/clmmht.ftl
@@ -1864,7 +1864,7 @@
- ,乙方自提。
+ ,乙方自提。
diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/resources/ftl/jsclqrs.ftl b/anrui-riskcenter/anrui-riskcenter-biz/src/main/resources/ftl/jsclqrs.ftl
index 27e5e7d3a5..7a167d2bae 100644
--- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/resources/ftl/jsclqrs.ftl
+++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/resources/ftl/jsclqrs.ftl
@@ -1353,7 +1353,7 @@
- 接收人签字(手印)或盖章:
+ 接收人签字(手印):
diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbill/AsBusrepairPageVo.java b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbill/AsBusrepairPageVo.java
index debac70157..9ea35d5190 100644
--- a/yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbill/AsBusrepairPageVo.java
+++ b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbill/AsBusrepairPageVo.java
@@ -32,6 +32,8 @@ public class AsBusrepairPageVo {
//旧件回收说明
private String shortss;
//旧件照片
+ private String photoss;
+ //旧件照片
private List photos = new ArrayList<>();
diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/api/asbwdiffapply/AsBwdiffapplyDetailsVo.java b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbwdiffapply/AsBwdiffapplyDetailsVo.java
index 4a65bd9ee8..053db22a72 100644
--- a/yxt-as/src/main/java/com/yxt/anrui/as/api/asbwdiffapply/AsBwdiffapplyDetailsVo.java
+++ b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbwdiffapply/AsBwdiffapplyDetailsVo.java
@@ -59,8 +59,15 @@ public class AsBwdiffapplyDetailsVo implements Vo {
private String sid; // sid
+ @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+ @ApiModelProperty("申请日期")
+ private Date createTime;
@ApiModelProperty("单据编号")
private String billNo; // 单据编号
+ @ApiModelProperty("备注")
+ private String remarks;
+ @ApiModelProperty("申请人sid")
+ private String createBySid;
@ApiModelProperty("申请人")
private String createByName; // 申请人
@ApiModelProperty("申请部门sid")
diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/api/asbwdiffapply/AsBwdiffapplyDto.java b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbwdiffapply/AsBwdiffapplyDto.java
index 4cecda4305..6138c9bab7 100644
--- a/yxt-as/src/main/java/com/yxt/anrui/as/api/asbwdiffapply/AsBwdiffapplyDto.java
+++ b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbwdiffapply/AsBwdiffapplyDto.java
@@ -62,6 +62,10 @@ public class AsBwdiffapplyDto implements Dto {
@ApiModelProperty("单据编号")
private String billNo; // 单据编号
+ @ApiModelProperty("备注")
+ private String remarks;
+ @ApiModelProperty("申请人sid")
+ private String createBySid;
@ApiModelProperty("申请人")
private String createByName; // 申请人
@ApiModelProperty("申请部门sid")
diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/api/asbwdiffapply/flowable/BwdiffApplyDelegateQuery.java b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbwdiffapply/flowable/BwdiffApplyDelegateQuery.java
new file mode 100644
index 0000000000..92e4fac256
--- /dev/null
+++ b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbwdiffapply/flowable/BwdiffApplyDelegateQuery.java
@@ -0,0 +1,23 @@
+package com.yxt.anrui.as.api.asbwdiffapply.flowable;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @description:
+ * @author: dimengzhe
+ * @date: 2024/5/11
+ **/
+@Data
+public class BwdiffApplyDelegateQuery {
+
+ private String userSid;
+ @ApiModelProperty("流程实例id")
+ private String instanceId;
+ @ApiModelProperty("任务Id")
+ private String taskId;
+ @ApiModelProperty("审批人sid")
+ private String assignee;
+ @ApiModelProperty("填写意见")
+ private String views;
+}
diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/api/asbwdiffapply/flowable/BwdiffApplyNodeQuery.java b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbwdiffapply/flowable/BwdiffApplyNodeQuery.java
new file mode 100644
index 0000000000..81b891501f
--- /dev/null
+++ b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbwdiffapply/flowable/BwdiffApplyNodeQuery.java
@@ -0,0 +1,18 @@
+package com.yxt.anrui.as.api.asbwdiffapply.flowable;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @description:
+ * @author: dimengzhe
+ * @date: 2024/5/11
+ **/
+@Data
+public class BwdiffApplyNodeQuery {
+
+ @ApiModelProperty(value = "环节定义id")
+ private String taskDefKey;
+ @ApiModelProperty(value = "业务sid")
+ private String businessSid;
+}
diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/api/asbwdiffapply/flowable/BwdiffApplyNodeVo.java b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbwdiffapply/flowable/BwdiffApplyNodeVo.java
new file mode 100644
index 0000000000..4808a978a2
--- /dev/null
+++ b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbwdiffapply/flowable/BwdiffApplyNodeVo.java
@@ -0,0 +1,24 @@
+package com.yxt.anrui.as.api.asbwdiffapply.flowable;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @description:
+ * @author: dimengzhe
+ * @date: 2024/5/11
+ **/
+@Data
+public class BwdiffApplyNodeVo {
+
+ @ApiModelProperty(value = "节点名称")
+ private String name;
+ @ApiModelProperty(value = "节点id")
+ private String id;
+ @ApiModelProperty(value = "审批组")
+ private List candidateGroups;
+ @ApiModelProperty(value = "是否是最后环节")
+ private String endTask;
+}
diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/api/asbwdiffapply/flowable/BwdiffApplyTaskQuery.java b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbwdiffapply/flowable/BwdiffApplyTaskQuery.java
new file mode 100644
index 0000000000..76254aa760
--- /dev/null
+++ b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbwdiffapply/flowable/BwdiffApplyTaskQuery.java
@@ -0,0 +1,43 @@
+package com.yxt.anrui.as.api.asbwdiffapply.flowable;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * @description:
+ * @author: dimengzhe
+ * @date: 2024/5/11
+ **/
+@Data
+public class BwdiffApplyTaskQuery {
+
+ /**
+ * 终止、驳回、撤回
+ */
+ @ApiModelProperty("任务Id")
+ @NotBlank(message = "参数错误:taskId")
+ private String taskId;
+ /**
+ * 终止、驳回、撤回
+ */
+ @ApiModelProperty("业务sid")
+ @NotBlank(message = "参数错误:businessSid")
+ private String businessSid;
+ /**
+ * 终止、驳回
+ */
+ @ApiModelProperty("任务意见")
+ private String comment;
+ /**
+ * 终止、撤回、驳回
+ */
+ @ApiModelProperty("用户Sid")
+ private String userSid;
+ /**
+ * 终止
+ */
+ @ApiModelProperty("流程实例Id")
+ private String instanceId;
+}
diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/api/asbwdiffapply/flowable/CompleteBwdiffApplyDto.java b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbwdiffapply/flowable/CompleteBwdiffApplyDto.java
new file mode 100644
index 0000000000..6ac8f3386a
--- /dev/null
+++ b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbwdiffapply/flowable/CompleteBwdiffApplyDto.java
@@ -0,0 +1,35 @@
+package com.yxt.anrui.as.api.asbwdiffapply.flowable;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * @description:
+ * @author: dimengzhe
+ * @date: 2024/5/11
+ **/
+@Data
+public class CompleteBwdiffApplyDto {
+
+ @ApiModelProperty(value = "用户sid")
+ @NotBlank(message = "参数错误:userSid")
+ private String userSid;
+ @ApiModelProperty(value = "用户全路径sid")
+ private String orgSidPath;
+ @ApiModelProperty(value = "节点id")
+ @NotBlank(message = "参数错误:taskDefKey")
+ private String taskDefKey;
+ @ApiModelProperty(value = "任务id")
+ @NotBlank(message = "参数错误:taskId")
+ private String taskId;
+ @ApiModelProperty(value = "流程id")
+ @NotBlank(message = "参数错误:instanceId")
+ private String instanceId;
+ @ApiModelProperty(value = "意见")
+ private String comment;
+ @ApiModelProperty(value = "业务sid")
+ @NotBlank(message = "参数错误:businessSid")
+ private String businessSid;
+}
diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/api/asbwdiffapply/flowable/SubmitBwdiffApplyDto.java b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbwdiffapply/flowable/SubmitBwdiffApplyDto.java
new file mode 100644
index 0000000000..9a68dff097
--- /dev/null
+++ b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbwdiffapply/flowable/SubmitBwdiffApplyDto.java
@@ -0,0 +1,20 @@
+package com.yxt.anrui.as.api.asbwdiffapply.flowable;
+
+import com.yxt.anrui.as.api.asbusclaimcheckapply.AsBusclaimCheckApplyDto;
+import com.yxt.anrui.as.api.asbwdiffapply.AsBwdiffapplyDto;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @description:
+ * @author: dimengzhe
+ * @date: 2024/5/11
+ **/
+@Data
+public class SubmitBwdiffApplyDto extends AsBwdiffapplyDto {
+
+ @ApiModelProperty("流程实例id")
+ private String instanceId;
+ @ApiModelProperty("任务id")
+ private String taskId;
+}
diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/api/asbwdiffapplydetail/AsBwdiffapplyDetailDetailsVo.java b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbwdiffapplydetail/AsBwdiffapplyDetailDetailsVo.java
index 4c9daee86d..317ef53492 100644
--- a/yxt-as/src/main/java/com/yxt/anrui/as/api/asbwdiffapplydetail/AsBwdiffapplyDetailDetailsVo.java
+++ b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbwdiffapplydetail/AsBwdiffapplyDetailDetailsVo.java
@@ -58,6 +58,8 @@ public class AsBwdiffapplyDetailDetailsVo implements Vo {
private String sid; // sid
+ @ApiModelProperty("备注")
+ private String remarks;
@ApiModelProperty("业务sid")
private String mainSid; // 业务sid
@ApiModelProperty("维修工单sid")
diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/api/asbwdiffapplydetail/AsBwdiffapplyDetailDto.java b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbwdiffapplydetail/AsBwdiffapplyDetailDto.java
index 3f9acbe6f5..0f45651b47 100644
--- a/yxt-as/src/main/java/com/yxt/anrui/as/api/asbwdiffapplydetail/AsBwdiffapplyDetailDto.java
+++ b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbwdiffapplydetail/AsBwdiffapplyDetailDto.java
@@ -59,6 +59,8 @@ public class AsBwdiffapplyDetailDto implements Dto {
private String sid; // sid
+ @ApiModelProperty("备注")
+ private String remarks;
@ApiModelProperty("业务sid")
private String mainSid; // 业务sid
@ApiModelProperty("维修工单sid")
diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/api/asbwinvoiceapply/AsBwinvoiceapplyQuery.java b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbwinvoiceapply/AsBwinvoiceapplyQuery.java
index 0e379a9a48..ba8f631395 100644
--- a/yxt-as/src/main/java/com/yxt/anrui/as/api/asbwinvoiceapply/AsBwinvoiceapplyQuery.java
+++ b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbwinvoiceapply/AsBwinvoiceapplyQuery.java
@@ -67,8 +67,8 @@ public class AsBwinvoiceapplyQuery implements Query {
private String finishTimeEnd;
@ApiModelProperty("开票名称")
private String invoiceTitle;
- @ApiModelProperty("开票类型value")
- private String invoiceTypeValue;
+ @ApiModelProperty("开票类型")
+ private String invoiceTypeKey;
private String orgPath;
private String userSid;
diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/api/asbwinvoiceapply/flowable/BwinvoiceApplyDelegateQuery.java b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbwinvoiceapply/flowable/BwinvoiceApplyDelegateQuery.java
new file mode 100644
index 0000000000..b4a6741490
--- /dev/null
+++ b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbwinvoiceapply/flowable/BwinvoiceApplyDelegateQuery.java
@@ -0,0 +1,23 @@
+package com.yxt.anrui.as.api.asbwinvoiceapply.flowable;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @description:
+ * @author: dimengzhe
+ * @date: 2024/5/11
+ **/
+@Data
+public class BwinvoiceApplyDelegateQuery {
+
+ private String userSid;
+ @ApiModelProperty("流程实例id")
+ private String instanceId;
+ @ApiModelProperty("任务Id")
+ private String taskId;
+ @ApiModelProperty("审批人sid")
+ private String assignee;
+ @ApiModelProperty("填写意见")
+ private String views;
+}
diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/api/asbwinvoiceapply/flowable/BwinvoiceApplyNodeQuery.java b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbwinvoiceapply/flowable/BwinvoiceApplyNodeQuery.java
new file mode 100644
index 0000000000..a1a54b3a27
--- /dev/null
+++ b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbwinvoiceapply/flowable/BwinvoiceApplyNodeQuery.java
@@ -0,0 +1,18 @@
+package com.yxt.anrui.as.api.asbwinvoiceapply.flowable;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @description:
+ * @author: dimengzhe
+ * @date: 2024/5/11
+ **/
+@Data
+public class BwinvoiceApplyNodeQuery {
+
+ @ApiModelProperty(value = "环节定义id")
+ private String taskDefKey;
+ @ApiModelProperty(value = "业务sid")
+ private String businessSid;
+}
diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/api/asbwinvoiceapply/flowable/BwinvoiceApplyNodeVo.java b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbwinvoiceapply/flowable/BwinvoiceApplyNodeVo.java
new file mode 100644
index 0000000000..e10d35e888
--- /dev/null
+++ b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbwinvoiceapply/flowable/BwinvoiceApplyNodeVo.java
@@ -0,0 +1,24 @@
+package com.yxt.anrui.as.api.asbwinvoiceapply.flowable;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @description:
+ * @author: dimengzhe
+ * @date: 2024/5/11
+ **/
+@Data
+public class BwinvoiceApplyNodeVo {
+
+ @ApiModelProperty(value = "节点名称")
+ private String name;
+ @ApiModelProperty(value = "节点id")
+ private String id;
+ @ApiModelProperty(value = "审批组")
+ private List candidateGroups;
+ @ApiModelProperty(value = "是否是最后环节")
+ private String endTask;
+}
diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/api/asbwinvoiceapply/flowable/BwinvoiceApplyTaskQuery.java b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbwinvoiceapply/flowable/BwinvoiceApplyTaskQuery.java
new file mode 100644
index 0000000000..465a63d02a
--- /dev/null
+++ b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbwinvoiceapply/flowable/BwinvoiceApplyTaskQuery.java
@@ -0,0 +1,43 @@
+package com.yxt.anrui.as.api.asbwinvoiceapply.flowable;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * @description:
+ * @author: dimengzhe
+ * @date: 2024/5/11
+ **/
+@Data
+public class BwinvoiceApplyTaskQuery {
+
+ /**
+ * 终止、驳回、撤回
+ */
+ @ApiModelProperty("任务Id")
+ @NotBlank(message = "参数错误:taskId")
+ private String taskId;
+ /**
+ * 终止、驳回、撤回
+ */
+ @ApiModelProperty("业务sid")
+ @NotBlank(message = "参数错误:businessSid")
+ private String businessSid;
+ /**
+ * 终止、驳回
+ */
+ @ApiModelProperty("任务意见")
+ private String comment;
+ /**
+ * 终止、撤回、驳回
+ */
+ @ApiModelProperty("用户Sid")
+ private String userSid;
+ /**
+ * 终止
+ */
+ @ApiModelProperty("流程实例Id")
+ private String instanceId;
+}
diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/api/asbwinvoiceapply/flowable/CompleteBwinvoiceApplyDto.java b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbwinvoiceapply/flowable/CompleteBwinvoiceApplyDto.java
new file mode 100644
index 0000000000..69a3a0d882
--- /dev/null
+++ b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbwinvoiceapply/flowable/CompleteBwinvoiceApplyDto.java
@@ -0,0 +1,35 @@
+package com.yxt.anrui.as.api.asbwinvoiceapply.flowable;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * @description:
+ * @author: dimengzhe
+ * @date: 2024/5/11
+ **/
+@Data
+public class CompleteBwinvoiceApplyDto {
+
+ @ApiModelProperty(value = "用户sid")
+ @NotBlank(message = "参数错误:userSid")
+ private String userSid;
+ @ApiModelProperty(value = "用户全路径sid")
+ private String orgSidPath;
+ @ApiModelProperty(value = "节点id")
+ @NotBlank(message = "参数错误:taskDefKey")
+ private String taskDefKey;
+ @ApiModelProperty(value = "任务id")
+ @NotBlank(message = "参数错误:taskId")
+ private String taskId;
+ @ApiModelProperty(value = "流程id")
+ @NotBlank(message = "参数错误:instanceId")
+ private String instanceId;
+ @ApiModelProperty(value = "意见")
+ private String comment;
+ @ApiModelProperty(value = "业务sid")
+ @NotBlank(message = "参数错误:businessSid")
+ private String businessSid;
+}
diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/api/asbwinvoiceapply/flowable/SubmitBwinvoiceApplyDto.java b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbwinvoiceapply/flowable/SubmitBwinvoiceApplyDto.java
new file mode 100644
index 0000000000..24a1e7e190
--- /dev/null
+++ b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbwinvoiceapply/flowable/SubmitBwinvoiceApplyDto.java
@@ -0,0 +1,20 @@
+package com.yxt.anrui.as.api.asbwinvoiceapply.flowable;
+
+import com.yxt.anrui.as.api.asbusclaimcheckapply.AsBusclaimCheckApplyDto;
+import com.yxt.anrui.as.api.asbwinvoiceapply.AsBwinvoiceapplyDto;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @description:
+ * @author: dimengzhe
+ * @date: 2024/5/11
+ **/
+@Data
+public class SubmitBwinvoiceApplyDto extends AsBwinvoiceapplyDto {
+
+ @ApiModelProperty("流程实例id")
+ private String instanceId;
+ @ApiModelProperty("任务id")
+ private String taskId;
+}
diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbill/AsBusrepairBillMapper.xml b/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbill/AsBusrepairBillMapper.xml
index c4bd4829ba..962687571d 100644
--- a/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbill/AsBusrepairBillMapper.xml
+++ b/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbill/AsBusrepairBillMapper.xml
@@ -76,9 +76,12 @@
a.mobile,
b.vinNo,
b.vehMark,
- DATE_FORMAT(a.entryTime, '%Y-%m-%d') as entryTime
+ DATE_FORMAT(a.entryTime, '%Y-%m-%d') as entryTime,
+ wor.shortss,
+ wor.photos as photoss
from as_busrepair_bill a
LEFT JOIN as_busrepair_bill_vech AS b on a.sid = b.billSid
+ LEFT JOIN yxt_wms.wms_old_register wor on a.billNo = wor.billNo
${ew.sqlSegment}
diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbill/AsBusrepairBillService.java b/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbill/AsBusrepairBillService.java
index 996babb30b..4b139751fd 100644
--- a/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbill/AsBusrepairBillService.java
+++ b/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbill/AsBusrepairBillService.java
@@ -43,6 +43,7 @@ import com.yxt.anrui.as.feign.portal.sysorganization.SysOrganizationVo;
import com.yxt.anrui.as.feign.portal.sysstafforg.SysStaffOrgFeign;
import com.yxt.anrui.as.feign.portal.sysuser.SysUserFeign;
import com.yxt.anrui.as.feign.portal.sysuser.SysUserVo;
+import com.yxt.common.base.config.component.FileUploadComponent;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.PagerUtil;
import com.yxt.common.core.query.PagerQuery;
@@ -98,6 +99,8 @@ public class AsBusrepairBillService extends MybatisBaseService page = PagerUtil.queryToPage(pagerQuery);
IPage pagging = baseMapper.pageBillList(page, qw);
+ for (AsBusrepairPageVo record : pagging.getRecords()) {
+ String photoss = record.getPhotoss();
+ String[] files = photoss.split(",");
+ List photos = new ArrayList<>();
+ for (String file : files) {
+ String url = fileUploadComponent.getUrlPrefix() + file;
+ photos.add(url);
+ }
+ record.setPhotos(photos);
+ }
PagerVo p = PagerUtil.pageToVo(pagging, null);
return p;
}
diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbwdiffapply/AsBwdiffapplyMapper.java b/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbwdiffapply/AsBwdiffapplyMapper.java
index 23a0c983a8..87fcd31548 100644
--- a/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbwdiffapply/AsBwdiffapplyMapper.java
+++ b/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbwdiffapply/AsBwdiffapplyMapper.java
@@ -36,6 +36,7 @@ import com.yxt.anrui.as.api.asbwdiffapply.AsBwdiffapply;
import com.yxt.anrui.as.api.asbwdiffapply.AsBwdiffapplyVo;
import java.util.List;
+import java.util.Map;
/**
* Project: yxt-as(保外工单)
@@ -58,4 +59,6 @@ public interface AsBwdiffapplyMapper extends BaseMapper {
String selectNum(String billNo);
int selectBySid(String join);
+
+ int updateFlowFiled(Map beanToMap);
}
\ No newline at end of file
diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbwdiffapply/AsBwdiffapplyMapper.xml b/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbwdiffapply/AsBwdiffapplyMapper.xml
index 18f26b8e51..7791174fb7 100644
--- a/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbwdiffapply/AsBwdiffapplyMapper.xml
+++ b/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbwdiffapply/AsBwdiffapplyMapper.xml
@@ -23,4 +23,22 @@
WHERE nodeState != '待提交'
and find_in_set(sid, #{list})
+
+
+ UPDATE as_bwdiffapply
+ SET nodeState=#{nodeState}, nodeId=#{taskDefKey}
+
+ , finishTime = NOW()
+
+
+ , procDefId=#{procDefId}
+
+
+ , procInstId=#{procInsId}
+
+
+ , taskId=#{taskId}
+
+ WHERE sid=#{sid}
+
\ No newline at end of file
diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbwdiffapply/AsBwdiffapplyRest.java b/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbwdiffapply/AsBwdiffapplyRest.java
index d7d6ccf906..2cb2ede47e 100644
--- a/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbwdiffapply/AsBwdiffapplyRest.java
+++ b/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbwdiffapply/AsBwdiffapplyRest.java
@@ -25,12 +25,17 @@
*********************************************************/
package com.yxt.anrui.as.biz.asbwdiffapply;
+import cn.hutool.core.bean.BeanUtil;
+import com.yxt.anrui.as.api.asbusclaimcheckapply.flowable.*;
+import com.yxt.anrui.as.api.asbwdiffapply.flowable.*;
+import com.yxt.anrui.as.feign.flowable.flow.BusinessVariables;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cloud.openfeign.SpringQueryMap;
import org.springframework.web.bind.annotation.*;
import com.yxt.anrui.as.api.asbwdiffapply.AsBwdiffapplyQuery;
@@ -38,6 +43,9 @@ import com.yxt.anrui.as.api.asbwdiffapply.AsBwdiffapplyVo;
import com.yxt.anrui.as.api.asbwdiffapply.AsBwdiffapplyDetailsVo;
import com.yxt.anrui.as.api.asbwdiffapply.AsBwdiffapplyDto;
+import javax.validation.Valid;
+import java.util.List;
+
/**
* Project: yxt-as(保外工单)
* File: AsBwdiffapplyFeignFallback.java
@@ -88,4 +96,56 @@ public class AsBwdiffapplyRest {
AsBwdiffapplyDetailsVo vo = asBwdiffapplyService.fetchDetailsVoBySid(sid);
return rb.success().setData(vo);
}
+
+ @ApiOperation("提交")
+ @PostMapping("/submitApply")
+ public ResultBean submitApply(@Valid @RequestBody SubmitBwdiffApplyDto dto) {
+ return asBwdiffapplyService.submitApply(dto);
+ }
+
+ @ApiOperation(value = "办理(同意)")
+ @PostMapping("/complete")
+ public ResultBean complete(@Valid @RequestBody CompleteBwdiffApplyDto query) {
+ BusinessVariables bv = new BusinessVariables();
+ BeanUtil.copyProperties(query, bv);
+ bv.setModelId("");
+ return asBwdiffapplyService.complete(bv);
+ }
+
+ @ApiOperation(value = "获取上一个环节")
+ @GetMapping(value = "/getPreviousNodesForReject")
+ ResultBean> getPreviousNodesForReject(@Valid @SpringQueryMap BwdiffApplyNodeQuery query) {
+ return asBwdiffapplyService.getPreviousNodesForReject(query);
+ }
+
+ @ApiOperation(value = "获取下一个环节")
+ @GetMapping(value = "/getNextNodesForSubmit")
+ ResultBean> getNextNodesForSubmit(@Valid @SpringQueryMap BwdiffApplyNodeQuery query) {
+ return asBwdiffapplyService.getNextNodesForSubmit(query);
+ }
+
+ @ApiOperation(value = "驳回任务")
+ @PostMapping(value = "/reject")
+ public ResultBean taskReject(@Valid @RequestBody BwdiffApplyTaskQuery query) {
+ return asBwdiffapplyService.taskReject(query);
+ }
+
+ @ApiOperation(value = "撤回流程")
+ @PostMapping(value = "/revokeProcess")
+ public ResultBean revokeProcess(@Valid @RequestBody BwdiffApplyTaskQuery query) {
+ return asBwdiffapplyService.revokeProcess(query);
+ }
+
+ @ApiOperation(value = "终止任务")
+ @PostMapping(value = "/breakProcess")
+ public ResultBean breakProcess(@Valid @RequestBody BwdiffApplyTaskQuery query) {
+ return asBwdiffapplyService.breakProcess(query);
+ }
+
+ @ApiOperation(value = "加签")
+ @PostMapping(value = "/delegate")
+ @ResponseBody
+ public ResultBean delegate(@RequestBody BwdiffApplyDelegateQuery query) {
+ return asBwdiffapplyService.delegate(query);
+ }
}
diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbwdiffapply/AsBwdiffapplyService.java b/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbwdiffapply/AsBwdiffapplyService.java
index 3f081090a8..fda184edbd 100644
--- a/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbwdiffapply/AsBwdiffapplyService.java
+++ b/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbwdiffapply/AsBwdiffapplyService.java
@@ -27,10 +27,15 @@ package com.yxt.anrui.as.biz.asbwdiffapply;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
+import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.google.common.util.concurrent.ThreadFactoryBuilder;
import com.yxt.anrui.as.api.asappendix.AsAppendix;
+import com.yxt.anrui.as.api.asbusclaimcheckapply.AsBusclaimCheckApply;
+import com.yxt.anrui.as.api.asbusclaimcheckapply.flowable.*;
import com.yxt.anrui.as.api.asbwdiffapply.*;
+import com.yxt.anrui.as.api.asbwdiffapply.flowable.*;
import com.yxt.anrui.as.api.asbwdiffapplydetail.AsBwdiffapplyDetailDetailsVo;
import com.yxt.anrui.as.api.asbwdiffapplydetail.AsBwdiffapplyDetailDto;
import com.yxt.anrui.as.api.asbwdiffapplydetail.AsBwdiffapplyDetailFile;
@@ -38,10 +43,18 @@ import com.yxt.anrui.as.biz.asappendix.AsAppendixService;
import com.yxt.anrui.as.biz.asbwdiffapplydetail.AsBwdiffapplyDetailService;
import com.yxt.anrui.as.feign.base.billno.Rule;
import com.yxt.anrui.as.feign.file.AsFileEnum;
+import com.yxt.anrui.as.feign.flowable.flow.BusinessVariables;
import com.yxt.anrui.as.feign.flowable.flow.FlowableFeign;
+import com.yxt.anrui.as.feign.flowable.flow.ProcDefEnum;
+import com.yxt.anrui.as.feign.flowable.flow.UpdateFlowFieldVo;
+import com.yxt.anrui.as.feign.flowable.flow2.FlowDelegateQuery;
import com.yxt.anrui.as.feign.flowable.flow2.FlowFeign;
import com.yxt.anrui.as.feign.flowable.flowtask.FlowTaskFeign;
+import com.yxt.anrui.as.feign.flowable.flowtask.FlowTaskVo;
+import com.yxt.anrui.as.feign.flowable.flowtask.LatestTaskVo;
import com.yxt.anrui.as.feign.message.MessageFeign;
+import com.yxt.anrui.as.feign.message.MessageFlowVo;
+import com.yxt.anrui.as.feign.message.MessageFlowableQuery;
import com.yxt.anrui.as.feign.portal.privilege.PrivilegeQuery;
import com.yxt.anrui.as.feign.portal.sysorganization.SysOrganizationFeign;
import com.yxt.anrui.as.feign.portal.sysorganization.SysOrganizationVo;
@@ -55,11 +68,13 @@ import com.yxt.common.base.utils.PagerUtil;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.vo.PagerVo;
+import org.apache.tomcat.util.threads.ThreadPoolExecutor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
-import java.util.ArrayList;
-import java.util.List;
+import java.util.*;
+import java.util.concurrent.*;
+import java.util.stream.Collectors;
/**
* Project: yxt-as(保外工单)
@@ -302,4 +317,307 @@ public class AsBwdiffapplyService extends MybatisBaseService variables = new HashMap<>();
+ Map appMap = new HashMap<>();
+ appMap.put("sid", businessSid);
+ variables.put("app", appMap);
+ //用户的部门全路径sid
+ SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(asBwdiffapply.getDeptSid()).getData();
+ if (sysOrganization != null) {
+ bv.setOrgSidPath(sysOrganization.getOrgSidPath());
+ }
+ bv.setBusinessSid(businessSid);
+ bv.setUserSid(dto.getCreateBySid());
+ bv.setFormVariables(variables);
+ if (r == 1) {
+ //ToDo:流程定义id
+ bv.setModelId(ProcDefEnum.ASBWDIFFAPPLY.getProDefId());
+ ResultBean voResultBean = flowFeign.startProcess(bv);
+ if (!voResultBean.getSuccess()) {
+ return rb.setMsg(voResultBean.getMsg());
+ }
+ UpdateFlowFieldVo ufVo = voResultBean.getData();
+ updateFlowFiled(BeanUtil.beanToMap(ufVo));
+ asBwdiffapply = fetchBySid(businessSid);
+ //==================================添加线程
+ try {
+ ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
+ .setNameFormat("demo-pool-%d").build();
+ ExecutorService pool = new ThreadPoolExecutor(2, 100,
+ 0L, TimeUnit.MILLISECONDS,
+ new LinkedBlockingQueue(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy());
+ AsBwdiffapply finalAsBwdiffapply = asBwdiffapply;
+ Future future1 = pool.submit(() -> {
+ //极光推送
+ MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
+ MessageFlowVo messageFlowVo = new MessageFlowVo();
+ BeanUtil.copyProperties(ufVo, messageFlowVo);
+ messageFlowableQuery.setUfVo(messageFlowVo);
+ messageFlowableQuery.setAppMap(appMap);
+ messageFlowableQuery.setBusinessSid(businessSid);
+ messageFlowableQuery.setModuleName("工单应收调差申请");
+ messageFlowableQuery.setMsgContent(finalAsBwdiffapply.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
+ messageFlowableQuery.setMsgTitle("工单应收调差申请");
+ ResultBean stringResultBean = messageFeign.pushMessage(messageFlowableQuery);
+ });
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ //==================================添加线程
+ return voResultBean;
+ }
+ if (r == 2) {
+ // ToDo:驳回到发起人后再次提交
+ if (StringUtils.isBlank(dto.getInstanceId())) {
+ return rb.setMsg("参数错误:instanceId");
+ }
+ bv.setTaskId(asBwdiffapply.getTaskId());
+ bv.setTaskDefKey(asBwdiffapply.getNodeId());
+ bv.setComment("重新提交");
+ bv.setInstanceId(dto.getInstanceId());
+ return complete(bv);
+ }
+ return rb;
+ }
+
+ private int updateFlowFiled(Map beanToMap) {
+ return baseMapper.updateFlowFiled(beanToMap);
+ }
+
+
+ private int submitBusinessData(SubmitBwdiffApplyDto dto, AsBwdiffapply asBwdiffapply) {
+ int r = 0;
+ if (StringUtils.isBlank(dto.getSid())) {
+ r = 1;
+ } else {
+ if (asBwdiffapply != null) {
+ String businessTaskId = asBwdiffapply.getTaskId();
+ if (StringUtils.isBlank(businessTaskId) && StringUtils.isBlank(dto.getTaskId())) {
+ //新提交
+ r = 1;
+ } else if (StringUtils.isNotBlank(businessTaskId) && businessTaskId.equals(dto.getTaskId())) {
+ //二次提交//只有数据一致的时候才能进行下一步
+ r = 2;
+ }
+ } else {
+ r = 3;
+ }
+ }
+ return r;
+ }
+
+ public ResultBean complete(BusinessVariables bv) {
+ ResultBean rb = ResultBean.fireFail();
+ String businessSid = bv.getBusinessSid();
+ AsBwdiffapply asBwdiffapply = fetchBySid(businessSid);
+ Map variables = new HashMap<>();
+ Map appMap = new HashMap<>();
+ appMap.put("sid", businessSid);
+ variables.put("app", appMap);
+ bv.setFormVariables(variables);
+ SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(asBwdiffapply.getDeptSid()).getData();
+ if (sysOrganization != null) {
+ bv.setOrgSidPath(sysOrganization.getOrgSidPath());
+ }
+ bv.setModelId(asBwdiffapply.getProcDefId());
+ if (bv.getTaskId().equals(asBwdiffapply.getTaskId())) {
+ ResultBean resultBean = flowFeign.handleProsess(bv);
+ if (!resultBean.getSuccess()) {
+ return rb.setMsg(resultBean.getMsg());
+ }
+ UpdateFlowFieldVo ufVo = resultBean.getData();
+ updateFlowFiled(BeanUtil.beanToMap(resultBean.getData()));
+ if ("Event_end".equals(resultBean.getData().getTaskDefKey())) {
+
+ } else {
+ //极光推送
+ asBwdiffapply = fetchBySid(businessSid);
+ MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
+ MessageFlowVo messageFlowVo = new MessageFlowVo();
+ BeanUtil.copyProperties(ufVo, messageFlowVo);
+ messageFlowVo.setProcDefId(asBwdiffapply.getProcDefId());
+ messageFlowVo.setProcInsId(asBwdiffapply.getProcInstId());
+ messageFlowableQuery.setUfVo(messageFlowVo);
+ messageFlowableQuery.setAppMap(appMap);
+ messageFlowableQuery.setBusinessSid(businessSid);
+ messageFlowableQuery.setModuleName("工单应收调差申请");
+ messageFlowableQuery.setMsgContent(asBwdiffapply.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
+ messageFlowableQuery.setMsgTitle("工单应收调差申请");
+ ResultBean stringResultBean = messageFeign.pushMessage(messageFlowableQuery);
+ }
+ return rb.success().setData(resultBean.getData());
+ } else {
+ return rb.setMsg("操作失败!提交的数据不一致");
+ }
+ }
+
+ public ResultBean> getPreviousNodesForReject(BwdiffApplyNodeQuery query) {
+ ResultBean> rb = ResultBean.fireFail();
+ BusinessVariables bv = new BusinessVariables();
+ BeanUtil.copyProperties(query, bv);
+ AsBwdiffapply asBwdiffapply = fetchBySid(query.getBusinessSid());
+ bv.setModelId(asBwdiffapply.getProcDefId());
+ ResultBean>> resultBean = flowTaskFeign.getPreviousNodesForReject(bv);
+ //判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给TemplateApplyNodeVo
+ List voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), BwdiffApplyNodeVo.class)).collect(Collectors.toList());
+ return rb.success().setData(voList);
+ }
+
+ public ResultBean> getNextNodesForSubmit(BwdiffApplyNodeQuery query) {
+ ResultBean> rb = ResultBean.fireFail();
+ BusinessVariables bv = new BusinessVariables();
+ BeanUtil.copyProperties(query, bv);
+ AsBwdiffapply asBwdiffapply = fetchBySid(query.getBusinessSid());
+ bv.setModelId(asBwdiffapply.getProcDefId());
+ ResultBean>> resultBean = flowTaskFeign.getNextNodesForSubmit(bv);
+ //判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给TemplateApplyNodeVo
+ List voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), BwdiffApplyNodeVo.class)).collect(Collectors.toList());
+ return rb.success().setData(voList);
+ }
+
+ public ResultBean taskReject(BwdiffApplyTaskQuery query) {
+ ResultBean rb = ResultBean.fireFail();
+ String businessSid = query.getBusinessSid();
+ AsBwdiffapply asBwdiffapply = fetchBySid(businessSid);
+ if (asBwdiffapply == null) {
+ return rb.setMsg("该申请不存在");
+ }
+ String businessTaskId = asBwdiffapply.getTaskId();
+ if (StringUtils.isNotBlank(businessTaskId)) {
+ if (businessTaskId.equals(query.getTaskId())) {
+ if (StringUtils.isBlank(query.getComment())) {
+ return rb.setMsg("请填写意见");
+ }
+ if (StringUtils.isBlank(query.getUserSid())) {
+ return rb.setMsg("参数错误:userSid");
+ }
+ FlowTaskVo flowTaskVo = new FlowTaskVo();
+ BeanUtil.copyProperties(query, flowTaskVo);
+ Map variables = new HashMap<>();
+ Map appMap = new HashMap<>();
+ appMap.put("sid", businessSid);
+ variables.put("app", appMap);
+ ResultBean resultBean = flowableFeign.taskReject(flowTaskVo);
+ if (!resultBean.getSuccess()) {
+ return rb.setMsg(resultBean.getMsg());
+ }
+ UpdateFlowFieldVo ufVo = resultBean.getData();
+ Map map = BeanUtil.beanToMap(ufVo);
+ //更新业务中的流程相关的参数
+ updateFlowFiled(map);
+ //极光推送
+ asBwdiffapply = fetchBySid(businessSid);
+ MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
+ MessageFlowVo messageFlowVo = new MessageFlowVo();
+ BeanUtil.copyProperties(ufVo, messageFlowVo);
+ String procId = asBwdiffapply.getProcInstId();
+ messageFlowVo.setProcInsId(procId);
+ messageFlowVo.setProcDefId(asBwdiffapply.getProcDefId());
+ messageFlowableQuery.setUfVo(messageFlowVo);
+ messageFlowableQuery.setAppMap(appMap);
+ messageFlowableQuery.setBusinessSid(businessSid);
+ messageFlowableQuery.setModuleName("工单应收调差申请");
+ ResultBean> listResultBean = flowTaskFeign.getLatestTasks(procId);
+ String nextName = listResultBean.getData().get(0).getName_();
+ String nextNodeUserSids = listResultBean.getData().get(0).getASSIGNEE_();
+ if ("发起申请".equals(nextName)) {
+ messageFlowableQuery.setMsgContent("您提交的" + messageFlowableQuery.getModuleName() + "已被驳回,请重新提交");
+ } else {
+ messageFlowableQuery.setMsgContent(asBwdiffapply.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
+ }
+
+ messageFlowableQuery.setMsgTitle("工单应收调差申请");
+ ResultBean stringResultBean = messageFeign.pushMessage(messageFlowableQuery);
+ return rb.success();
+ }
+ }
+ return rb.setMsg("操作失败!提交的数据不一致!");
+ }
+
+ public ResultBean revokeProcess(BwdiffApplyTaskQuery query) {
+ ResultBean rb = ResultBean.fireFail();
+ if (StringUtils.isBlank(query.getUserSid())) {
+ return rb.setMsg("参数错误:userSid");
+ }
+ AsBwdiffapply asBwdiffapply = fetchBySid(query.getBusinessSid());
+ String businessTaskId = asBwdiffapply.getTaskId();
+ if (StringUtils.isNotBlank(businessTaskId)) {
+ if (businessTaskId.equals(query.getTaskId())) {
+ FlowTaskVo flowTaskVo = new FlowTaskVo();
+ BeanUtil.copyProperties(query, flowTaskVo);
+ ResultBean resultBean = flowableFeign.revokeProcess(flowTaskVo);
+ if (!resultBean.getSuccess()) {
+ return rb.setMsg(resultBean.getMsg());
+ }
+ updateFlowFiled(BeanUtil.beanToMap(resultBean.getData()));
+ return rb.success().setData(resultBean.getData());
+ }
+ }
+ return rb.setMsg("操作失败,提交的数据不一致!");
+ }
+
+ public ResultBean breakProcess(BwdiffApplyTaskQuery query) {
+ ResultBean rb = ResultBean.fireFail();
+ if (StringUtils.isBlank(query.getInstanceId())) {
+ return rb.setMsg("参数错误:instanceId");
+ }
+ if (StringUtils.isBlank(query.getUserSid())) {
+ return rb.setMsg("参数错误:userSid");
+ }
+ if (StringUtils.isBlank(query.getComment())) {
+ return rb.setMsg("请填写意见");
+ }
+ AsBwdiffapply asBwdiffapply = fetchBySid(query.getBusinessSid());
+ String businessTaskId = asBwdiffapply.getTaskId();
+ if (StringUtils.isNotBlank(businessTaskId)) {
+ if (query.getUserSid().equals(asBwdiffapply.getCreateBySid())) {
+ FlowTaskVo flowTaskVo = new FlowTaskVo();
+ BeanUtil.copyProperties(query, flowTaskVo);
+ ResultBean resultBean = flowableFeign.breakProcess(flowTaskVo);
+ if (!resultBean.getSuccess()) {
+ return rb.setMsg(resultBean.getMsg());
+ }
+ Map map = BeanUtil.beanToMap(resultBean.getData());
+ updateFlowFiled(map);
+ return rb.success().setData(resultBean.getData());
+ } else {
+ if (businessTaskId.equals(query.getTaskId())) {
+ FlowTaskVo flowTaskVo = new FlowTaskVo();
+ BeanUtil.copyProperties(query, flowTaskVo);
+ ResultBean resultBean = flowableFeign.breakProcess(flowTaskVo);
+ if (!resultBean.getSuccess()) {
+ return rb.setMsg(resultBean.getMsg());
+ }
+ Map map = BeanUtil.beanToMap(resultBean.getData());
+ updateFlowFiled(map);
+ return rb.success().setData(resultBean.getData());
+ }
+ }
+ }
+ return rb.setMsg("操作失败!提交的数据不一致!");
+ }
+
+ public ResultBean delegate(BwdiffApplyDelegateQuery query) {
+ ResultBean rb = ResultBean.fireFail();
+ FlowDelegateQuery delegateQuery = new FlowDelegateQuery();
+ BeanUtil.copyProperties(query, delegateQuery);
+ flowFeign.delegate(delegateQuery);
+ return rb.success();
+ }
}
\ No newline at end of file
diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbwinvoiceapply/AsBwinvoiceapplyMapper.java b/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbwinvoiceapply/AsBwinvoiceapplyMapper.java
index 5d51cece77..54e67e9bd2 100644
--- a/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbwinvoiceapply/AsBwinvoiceapplyMapper.java
+++ b/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbwinvoiceapply/AsBwinvoiceapplyMapper.java
@@ -36,6 +36,7 @@ import com.yxt.anrui.as.api.asbwinvoiceapply.AsBwinvoiceapply;
import com.yxt.anrui.as.api.asbwinvoiceapply.AsBwinvoiceapplyVo;
import java.util.List;
+import java.util.Map;
/**
* Project: yxt-as(保外工单)
@@ -58,4 +59,6 @@ public interface AsBwinvoiceapplyMapper extends BaseMapper {
String selectNum(String billNo);
int selectBySid(String join);
+
+ int updateFlowFiled(Map beanToMap);
}
\ No newline at end of file
diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbwinvoiceapply/AsBwinvoiceapplyMapper.xml b/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbwinvoiceapply/AsBwinvoiceapplyMapper.xml
index 5f3d9b4d1f..898b8a58d1 100644
--- a/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbwinvoiceapply/AsBwinvoiceapplyMapper.xml
+++ b/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbwinvoiceapply/AsBwinvoiceapplyMapper.xml
@@ -23,4 +23,22 @@
WHERE nodeState != '待提交'
and find_in_set(sid, #{list})
+
+
+ UPDATE as_bwinvoiceapply
+ SET nodeState=#{nodeState}, nodeId=#{taskDefKey}
+
+ , finishTime = NOW()
+
+
+ , procDefId=#{procDefId}
+
+
+ , procInstId=#{procInsId}
+
+
+ , taskId=#{taskId}
+
+ WHERE sid=#{sid}
+
\ No newline at end of file
diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbwinvoiceapply/AsBwinvoiceapplyRest.java b/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbwinvoiceapply/AsBwinvoiceapplyRest.java
index 72df5c6d5e..cdb5fa74d8 100644
--- a/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbwinvoiceapply/AsBwinvoiceapplyRest.java
+++ b/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbwinvoiceapply/AsBwinvoiceapplyRest.java
@@ -25,12 +25,17 @@
*********************************************************/
package com.yxt.anrui.as.biz.asbwinvoiceapply;
+import cn.hutool.core.bean.BeanUtil;
+import com.yxt.anrui.as.api.asbusclaimcheckapply.flowable.*;
+import com.yxt.anrui.as.api.asbwinvoiceapply.flowable.*;
+import com.yxt.anrui.as.feign.flowable.flow.BusinessVariables;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cloud.openfeign.SpringQueryMap;
import org.springframework.web.bind.annotation.*;
import com.yxt.anrui.as.api.asbwinvoiceapply.AsBwinvoiceapplyQuery;
@@ -38,6 +43,9 @@ import com.yxt.anrui.as.api.asbwinvoiceapply.AsBwinvoiceapplyVo;
import com.yxt.anrui.as.api.asbwinvoiceapply.AsBwinvoiceapplyDetailsVo;
import com.yxt.anrui.as.api.asbwinvoiceapply.AsBwinvoiceapplyDto;
+import javax.validation.Valid;
+import java.util.List;
+
/**
* Project: yxt-as(保外工单)
* File: AsBwinvoiceapplyFeignFallback.java
@@ -88,4 +96,56 @@ public class AsBwinvoiceapplyRest {
AsBwinvoiceapplyDetailsVo vo = asBwinvoiceapplyService.fetchDetailsVoBySid(sid);
return rb.success().setData(vo);
}
+
+ @ApiOperation("提交")
+ @PostMapping("/submitApply")
+ public ResultBean submitApply(@Valid @RequestBody SubmitBwinvoiceApplyDto dto) {
+ return asBwinvoiceapplyService.submitApply(dto);
+ }
+
+ @ApiOperation(value = "办理(同意)")
+ @PostMapping("/complete")
+ public ResultBean complete(@Valid @RequestBody CompleteBwinvoiceApplyDto query) {
+ BusinessVariables bv = new BusinessVariables();
+ BeanUtil.copyProperties(query, bv);
+ bv.setModelId("");
+ return asBwinvoiceapplyService.complete(bv);
+ }
+
+ @ApiOperation(value = "获取上一个环节")
+ @GetMapping(value = "/getPreviousNodesForReject")
+ ResultBean> getPreviousNodesForReject(@Valid @SpringQueryMap BwinvoiceApplyNodeQuery query) {
+ return asBwinvoiceapplyService.getPreviousNodesForReject(query);
+ }
+
+ @ApiOperation(value = "获取下一个环节")
+ @GetMapping(value = "/getNextNodesForSubmit")
+ ResultBean> getNextNodesForSubmit(@Valid @SpringQueryMap BwinvoiceApplyNodeQuery query) {
+ return asBwinvoiceapplyService.getNextNodesForSubmit(query);
+ }
+
+ @ApiOperation(value = "驳回任务")
+ @PostMapping(value = "/reject")
+ public ResultBean taskReject(@Valid @RequestBody BwinvoiceApplyTaskQuery query) {
+ return asBwinvoiceapplyService.taskReject(query);
+ }
+
+ @ApiOperation(value = "撤回流程")
+ @PostMapping(value = "/revokeProcess")
+ public ResultBean revokeProcess(@Valid @RequestBody BwinvoiceApplyTaskQuery query) {
+ return asBwinvoiceapplyService.revokeProcess(query);
+ }
+
+ @ApiOperation(value = "终止任务")
+ @PostMapping(value = "/breakProcess")
+ public ResultBean breakProcess(@Valid @RequestBody BwinvoiceApplyTaskQuery query) {
+ return asBwinvoiceapplyService.breakProcess(query);
+ }
+
+ @ApiOperation(value = "加签")
+ @PostMapping(value = "/delegate")
+ @ResponseBody
+ public ResultBean delegate(@RequestBody BwinvoiceApplyDelegateQuery query) {
+ return asBwinvoiceapplyService.delegate(query);
+ }
}
diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbwinvoiceapply/AsBwinvoiceapplyService.java b/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbwinvoiceapply/AsBwinvoiceapplyService.java
index 685482b65a..d78beaa7f6 100644
--- a/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbwinvoiceapply/AsBwinvoiceapplyService.java
+++ b/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbwinvoiceapply/AsBwinvoiceapplyService.java
@@ -27,20 +27,33 @@ package com.yxt.anrui.as.biz.asbwinvoiceapply;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
+import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.google.common.util.concurrent.ThreadFactoryBuilder;
import com.yxt.anrui.as.api.asappendix.AsAppendix;
+import com.yxt.anrui.as.api.asbusclaimcheckapply.AsBusclaimCheckApply;
+import com.yxt.anrui.as.api.asbusclaimcheckapply.flowable.*;
import com.yxt.anrui.as.api.asbwinvoiceapply.*;
+import com.yxt.anrui.as.api.asbwinvoiceapply.flowable.*;
import com.yxt.anrui.as.api.asbwinvoiceapplydetail.AsBwinvoiceapplyDetailDetailsVo;
import com.yxt.anrui.as.api.asbwinvoiceapplydetail.AsBwinvoiceapplyDetailDto;
import com.yxt.anrui.as.biz.asappendix.AsAppendixService;
import com.yxt.anrui.as.biz.asbwinvoiceapplydetail.AsBwinvoiceapplyDetailService;
import com.yxt.anrui.as.feign.base.billno.Rule;
import com.yxt.anrui.as.feign.file.AsFileEnum;
+import com.yxt.anrui.as.feign.flowable.flow.BusinessVariables;
import com.yxt.anrui.as.feign.flowable.flow.FlowableFeign;
+import com.yxt.anrui.as.feign.flowable.flow.ProcDefEnum;
+import com.yxt.anrui.as.feign.flowable.flow.UpdateFlowFieldVo;
+import com.yxt.anrui.as.feign.flowable.flow2.FlowDelegateQuery;
import com.yxt.anrui.as.feign.flowable.flow2.FlowFeign;
import com.yxt.anrui.as.feign.flowable.flowtask.FlowTaskFeign;
+import com.yxt.anrui.as.feign.flowable.flowtask.FlowTaskVo;
+import com.yxt.anrui.as.feign.flowable.flowtask.LatestTaskVo;
import com.yxt.anrui.as.feign.message.MessageFeign;
+import com.yxt.anrui.as.feign.message.MessageFlowVo;
+import com.yxt.anrui.as.feign.message.MessageFlowableQuery;
import com.yxt.anrui.as.feign.portal.privilege.PrivilegeQuery;
import com.yxt.anrui.as.feign.portal.sysorganization.SysOrganizationFeign;
import com.yxt.anrui.as.feign.portal.sysorganization.SysOrganizationVo;
@@ -54,11 +67,13 @@ import com.yxt.common.base.utils.PagerUtil;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.vo.PagerVo;
+import org.apache.tomcat.util.threads.ThreadPoolExecutor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
-import java.util.ArrayList;
-import java.util.List;
+import java.util.*;
+import java.util.concurrent.*;
+import java.util.stream.Collectors;
/**
* Project: yxt-as(保外工单)
@@ -154,8 +169,8 @@ public class AsBwinvoiceapplyService extends MybatisBaseService variables = new HashMap<>();
+ Map appMap = new HashMap<>();
+ appMap.put("sid", businessSid);
+ variables.put("app", appMap);
+ //用户的部门全路径sid
+ SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(asBwinvoiceapply.getDeptSid()).getData();
+ if (sysOrganization != null) {
+ bv.setOrgSidPath(sysOrganization.getOrgSidPath());
+ }
+ bv.setBusinessSid(businessSid);
+ bv.setUserSid(dto.getCreateBySid());
+ bv.setFormVariables(variables);
+ if (r == 1) {
+ //ToDo:流程定义id
+ bv.setModelId(ProcDefEnum.ASBWINVOICEAPPLY.getProDefId());
+ ResultBean voResultBean = flowFeign.startProcess(bv);
+ if (!voResultBean.getSuccess()) {
+ return rb.setMsg(voResultBean.getMsg());
+ }
+ UpdateFlowFieldVo ufVo = voResultBean.getData();
+ updateFlowFiled(BeanUtil.beanToMap(ufVo));
+ asBwinvoiceapply = fetchBySid(businessSid);
+ //==================================添加线程
+ try {
+ ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
+ .setNameFormat("demo-pool-%d").build();
+ ExecutorService pool = new ThreadPoolExecutor(2, 100,
+ 0L, TimeUnit.MILLISECONDS,
+ new LinkedBlockingQueue(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy());
+ AsBwinvoiceapply finalAsBwinvoiceapply = asBwinvoiceapply;
+ Future future1 = pool.submit(() -> {
+ //极光推送
+ MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
+ MessageFlowVo messageFlowVo = new MessageFlowVo();
+ BeanUtil.copyProperties(ufVo, messageFlowVo);
+ messageFlowableQuery.setUfVo(messageFlowVo);
+ messageFlowableQuery.setAppMap(appMap);
+ messageFlowableQuery.setBusinessSid(businessSid);
+ messageFlowableQuery.setModuleName("工单开票申请");
+ messageFlowableQuery.setMsgContent(finalAsBwinvoiceapply.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
+ messageFlowableQuery.setMsgTitle("工单开票申请");
+ ResultBean stringResultBean = messageFeign.pushMessage(messageFlowableQuery);
+ });
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ //==================================添加线程
+ return voResultBean;
+ }
+ if (r == 2) {
+ // ToDo:驳回到发起人后再次提交
+ if (StringUtils.isBlank(dto.getInstanceId())) {
+ return rb.setMsg("参数错误:instanceId");
+ }
+ bv.setTaskId(asBwinvoiceapply.getTaskId());
+ bv.setTaskDefKey(asBwinvoiceapply.getNodeId());
+ bv.setComment("重新提交");
+ bv.setInstanceId(dto.getInstanceId());
+ return complete(bv);
+ }
+ return rb;
+ }
+
+ private int updateFlowFiled(Map beanToMap) {
+ return baseMapper.updateFlowFiled(beanToMap);
+ }
+
+
+ private int submitBusinessData(SubmitBwinvoiceApplyDto dto, AsBwinvoiceapply asBwinvoiceapply) {
+ int r = 0;
+ if (StringUtils.isBlank(dto.getSid())) {
+ r = 1;
+ } else {
+ if (asBwinvoiceapply != null) {
+ String businessTaskId = asBwinvoiceapply.getTaskId();
+ if (StringUtils.isBlank(businessTaskId) && StringUtils.isBlank(dto.getTaskId())) {
+ //新提交
+ r = 1;
+ } else if (StringUtils.isNotBlank(businessTaskId) && businessTaskId.equals(dto.getTaskId())) {
+ //二次提交//只有数据一致的时候才能进行下一步
+ r = 2;
+ }
+ } else {
+ r = 3;
+ }
+ }
+ return r;
+ }
+
+ public ResultBean complete(BusinessVariables bv) {
+ ResultBean rb = ResultBean.fireFail();
+ String businessSid = bv.getBusinessSid();
+ AsBwinvoiceapply asBwinvoiceapply = fetchBySid(businessSid);
+ Map variables = new HashMap<>();
+ Map appMap = new HashMap<>();
+ appMap.put("sid", businessSid);
+ variables.put("app", appMap);
+ bv.setFormVariables(variables);
+ SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(asBwinvoiceapply.getDeptSid()).getData();
+ if (sysOrganization != null) {
+ bv.setOrgSidPath(sysOrganization.getOrgSidPath());
+ }
+ bv.setModelId(asBwinvoiceapply.getProcDefId());
+ if (bv.getTaskId().equals(asBwinvoiceapply.getTaskId())) {
+ ResultBean resultBean = flowFeign.handleProsess(bv);
+ if (!resultBean.getSuccess()) {
+ return rb.setMsg(resultBean.getMsg());
+ }
+ UpdateFlowFieldVo ufVo = resultBean.getData();
+ updateFlowFiled(BeanUtil.beanToMap(resultBean.getData()));
+ if ("Event_end".equals(resultBean.getData().getTaskDefKey())) {
+
+ } else {
+ //极光推送
+ asBwinvoiceapply = fetchBySid(businessSid);
+ MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
+ MessageFlowVo messageFlowVo = new MessageFlowVo();
+ BeanUtil.copyProperties(ufVo, messageFlowVo);
+ messageFlowVo.setProcDefId(asBwinvoiceapply.getProcDefId());
+ messageFlowVo.setProcInsId(asBwinvoiceapply.getProcInstId());
+ messageFlowableQuery.setUfVo(messageFlowVo);
+ messageFlowableQuery.setAppMap(appMap);
+ messageFlowableQuery.setBusinessSid(businessSid);
+ messageFlowableQuery.setModuleName("工单开票申请");
+ messageFlowableQuery.setMsgContent(asBwinvoiceapply.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
+ messageFlowableQuery.setMsgTitle("工单开票申请");
+ ResultBean stringResultBean = messageFeign.pushMessage(messageFlowableQuery);
+ }
+ return rb.success().setData(resultBean.getData());
+ } else {
+ return rb.setMsg("操作失败!提交的数据不一致");
+ }
+ }
+
+ public ResultBean> getPreviousNodesForReject(BwinvoiceApplyNodeQuery query) {
+ ResultBean> rb = ResultBean.fireFail();
+ BusinessVariables bv = new BusinessVariables();
+ BeanUtil.copyProperties(query, bv);
+ AsBwinvoiceapply asBwinvoiceapply = fetchBySid(query.getBusinessSid());
+ bv.setModelId(asBwinvoiceapply.getProcDefId());
+ ResultBean>> resultBean = flowTaskFeign.getPreviousNodesForReject(bv);
+ //判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给TemplateApplyNodeVo
+ List voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), BwinvoiceApplyNodeVo.class)).collect(Collectors.toList());
+ return rb.success().setData(voList);
+ }
+
+ public ResultBean> getNextNodesForSubmit(BwinvoiceApplyNodeQuery query) {
+ ResultBean> rb = ResultBean.fireFail();
+ BusinessVariables bv = new BusinessVariables();
+ BeanUtil.copyProperties(query, bv);
+ AsBwinvoiceapply asBwinvoiceapply = fetchBySid(query.getBusinessSid());
+ bv.setModelId(asBwinvoiceapply.getProcDefId());
+ ResultBean>> resultBean = flowTaskFeign.getNextNodesForSubmit(bv);
+ //判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给TemplateApplyNodeVo
+ List voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), BwinvoiceApplyNodeVo.class)).collect(Collectors.toList());
+ return rb.success().setData(voList);
+ }
+
+ public ResultBean taskReject(BwinvoiceApplyTaskQuery query) {
+ ResultBean rb = ResultBean.fireFail();
+ String businessSid = query.getBusinessSid();
+ AsBwinvoiceapply asBwinvoiceapply = fetchBySid(businessSid);
+ if (asBwinvoiceapply == null) {
+ return rb.setMsg("该申请不存在");
+ }
+ String businessTaskId = asBwinvoiceapply.getTaskId();
+ if (StringUtils.isNotBlank(businessTaskId)) {
+ if (businessTaskId.equals(query.getTaskId())) {
+ if (StringUtils.isBlank(query.getComment())) {
+ return rb.setMsg("请填写意见");
+ }
+ if (StringUtils.isBlank(query.getUserSid())) {
+ return rb.setMsg("参数错误:userSid");
+ }
+ FlowTaskVo flowTaskVo = new FlowTaskVo();
+ BeanUtil.copyProperties(query, flowTaskVo);
+ Map variables = new HashMap<>();
+ Map appMap = new HashMap<>();
+ appMap.put("sid", businessSid);
+ variables.put("app", appMap);
+ ResultBean resultBean = flowableFeign.taskReject(flowTaskVo);
+ if (!resultBean.getSuccess()) {
+ return rb.setMsg(resultBean.getMsg());
+ }
+ UpdateFlowFieldVo ufVo = resultBean.getData();
+ Map map = BeanUtil.beanToMap(ufVo);
+ //更新业务中的流程相关的参数
+ updateFlowFiled(map);
+ //极光推送
+ asBwinvoiceapply = fetchBySid(businessSid);
+ MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
+ MessageFlowVo messageFlowVo = new MessageFlowVo();
+ BeanUtil.copyProperties(ufVo, messageFlowVo);
+ String procId = asBwinvoiceapply.getProcInstId();
+ messageFlowVo.setProcInsId(procId);
+ messageFlowVo.setProcDefId(asBwinvoiceapply.getProcDefId());
+ messageFlowableQuery.setUfVo(messageFlowVo);
+ messageFlowableQuery.setAppMap(appMap);
+ messageFlowableQuery.setBusinessSid(businessSid);
+ messageFlowableQuery.setModuleName("工单开票申请");
+ ResultBean> listResultBean = flowTaskFeign.getLatestTasks(procId);
+ String nextName = listResultBean.getData().get(0).getName_();
+ String nextNodeUserSids = listResultBean.getData().get(0).getASSIGNEE_();
+ if ("发起申请".equals(nextName)) {
+ messageFlowableQuery.setMsgContent("您提交的" + messageFlowableQuery.getModuleName() + "已被驳回,请重新提交");
+ } else {
+ messageFlowableQuery.setMsgContent(asBwinvoiceapply.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
+ }
+
+ messageFlowableQuery.setMsgTitle("工单开票申请");
+ ResultBean stringResultBean = messageFeign.pushMessage(messageFlowableQuery);
+ return rb.success();
+ }
+ }
+ return rb.setMsg("操作失败!提交的数据不一致!");
+ }
+
+ public ResultBean revokeProcess(BwinvoiceApplyTaskQuery query) {
+ ResultBean rb = ResultBean.fireFail();
+ if (StringUtils.isBlank(query.getUserSid())) {
+ return rb.setMsg("参数错误:userSid");
+ }
+ AsBwinvoiceapply asBwinvoiceapply = fetchBySid(query.getBusinessSid());
+ String businessTaskId = asBwinvoiceapply.getTaskId();
+ if (StringUtils.isNotBlank(businessTaskId)) {
+ if (businessTaskId.equals(query.getTaskId())) {
+ FlowTaskVo flowTaskVo = new FlowTaskVo();
+ BeanUtil.copyProperties(query, flowTaskVo);
+ ResultBean resultBean = flowableFeign.revokeProcess(flowTaskVo);
+ if (!resultBean.getSuccess()) {
+ return rb.setMsg(resultBean.getMsg());
+ }
+ updateFlowFiled(BeanUtil.beanToMap(resultBean.getData()));
+ return rb.success().setData(resultBean.getData());
+ }
+ }
+ return rb.setMsg("操作失败,提交的数据不一致!");
+ }
+
+ public ResultBean breakProcess(BwinvoiceApplyTaskQuery query) {
+ ResultBean rb = ResultBean.fireFail();
+ if (StringUtils.isBlank(query.getInstanceId())) {
+ return rb.setMsg("参数错误:instanceId");
+ }
+ if (StringUtils.isBlank(query.getUserSid())) {
+ return rb.setMsg("参数错误:userSid");
+ }
+ if (StringUtils.isBlank(query.getComment())) {
+ return rb.setMsg("请填写意见");
+ }
+ AsBwinvoiceapply asBwinvoiceapply = fetchBySid(query.getBusinessSid());
+ String businessTaskId = asBwinvoiceapply.getTaskId();
+ if (StringUtils.isNotBlank(businessTaskId)) {
+ if (query.getUserSid().equals(asBwinvoiceapply.getCreateBySid())) {
+ FlowTaskVo flowTaskVo = new FlowTaskVo();
+ BeanUtil.copyProperties(query, flowTaskVo);
+ ResultBean resultBean = flowableFeign.breakProcess(flowTaskVo);
+ if (!resultBean.getSuccess()) {
+ return rb.setMsg(resultBean.getMsg());
+ }
+ Map map = BeanUtil.beanToMap(resultBean.getData());
+ updateFlowFiled(map);
+ return rb.success().setData(resultBean.getData());
+ } else {
+ if (businessTaskId.equals(query.getTaskId())) {
+ FlowTaskVo flowTaskVo = new FlowTaskVo();
+ BeanUtil.copyProperties(query, flowTaskVo);
+ ResultBean resultBean = flowableFeign.breakProcess(flowTaskVo);
+ if (!resultBean.getSuccess()) {
+ return rb.setMsg(resultBean.getMsg());
+ }
+ Map map = BeanUtil.beanToMap(resultBean.getData());
+ updateFlowFiled(map);
+ return rb.success().setData(resultBean.getData());
+ }
+ }
+ }
+ return rb.setMsg("操作失败!提交的数据不一致!");
+ }
+
+ public ResultBean delegate(BwinvoiceApplyDelegateQuery query) {
+ ResultBean rb = ResultBean.fireFail();
+ FlowDelegateQuery delegateQuery = new FlowDelegateQuery();
+ BeanUtil.copyProperties(query, delegateQuery);
+ flowFeign.delegate(delegateQuery);
+ return rb.success();
+ }
}
\ No newline at end of file
diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/feign/flowable/flow/ProcDefEnum.java b/yxt-as/src/main/java/com/yxt/anrui/as/feign/flowable/flow/ProcDefEnum.java
index 7ec5e912cf..7f125d06a3 100644
--- a/yxt-as/src/main/java/com/yxt/anrui/as/feign/flowable/flow/ProcDefEnum.java
+++ b/yxt-as/src/main/java/com/yxt/anrui/as/feign/flowable/flow/ProcDefEnum.java
@@ -13,6 +13,8 @@ public enum ProcDefEnum {
REVERSESETTLEAPPLY("工单反结算申请", "process_g3r02po8:1:10975004"),
ASBUSCLAIMINVOICEBILL("索赔单开票申请", "process_33p7rz6h:1:11297504"),
ASBUSCLAIMCHECKAPPLY("索赔单调整申请", "process_7icw4lhq:1:11310004"),
+ ASBWDIFFAPPLY("工单应收调差申请", "process_zcxxb6de:1:12097508"),
+ ASBWINVOICEAPPLY("工单开票申请", "process_j8zlnkl1:1:12097504"),
;