diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml
deleted file mode 100644
index 731c640f..00000000
--- a/.gitea/workflows/dev.yml
+++ /dev/null
@@ -1,210 +0,0 @@
-run-name: ${{ gitea.actor }} 构建镜像并推送(不含JAR依赖上传)🚀
-on:
- push:
- branches:
- - main
-
-jobs:
- build-parent-pom:
- runs-on: ubuntu
- steps:
- - name: 拉取代码仓库
- uses: http://git.missmoc.top/mocheng/checkout@v4
-
- - name: 配置环境变量(绝对路径)
- run: |
- export JAVA_HOME="/java17/java17"
- export MAVEN_HOME="/maven/apache-maven-3.9.11"
-
- if [ ! -f "$JAVA_HOME/bin/java" ]; then
- echo "错误:JDK可执行文件不存在于 $JAVA_HOME/bin/java"
- exit 1
- fi
- if [ ! -f "$MAVEN_HOME/bin/mvn" ]; then
- echo "错误:Maven可执行文件不存在于 $MAVEN_HOME/bin/mvn"
- exit 1
- fi
-
- echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV
- echo "$JAVA_HOME/bin" >> $GITHUB_PATH
- echo "MAVEN_HOME=$MAVEN_HOME" >> $GITHUB_ENV
- echo "$MAVEN_HOME/bin" >> $GITHUB_PATH
-
- "$JAVA_HOME/bin/java" -version
- "$MAVEN_HOME/bin/mvn" -v
-
- - name: 配置Maven仓库
- run: |
- mkdir -p ~/.m2
- cat > ~/.m2/settings.xml << EOF
-
-
- /root/.m2/repository
-
-
- multi-repo
-
-
- local-repo
- file:///root/.m2/repository
-
-
- aliyun-public
- https://maven.aliyun.com/repository/public
-
-
-
-
-
- multi-repo
-
-
- EOF
-
- - name: 构建主POM(仅本地安装,不上传)
- run: |
- MAIN_POM_ABSOLUTE_PATH="${GITHUB_WORKSPACE}/pom.xml"
- if [ ! -f "$MAIN_POM_ABSOLUTE_PATH" ]; then
- echo "错误:主POM文件不存在"
- exit 1
- fi
-
- retries=3
- count=0
- until "$MAVEN_HOME/bin/mvn" clean install -U -DskipTests -f "$MAIN_POM_ABSOLUTE_PATH"; do
- count=$((count + 1))
- if [ $count -ge $retries ]; then
- echo "错误:主POM构建失败"
- exit 1
- fi
- sleep 10
- done
-
- # build-common-modules:
- # needs: build-parent-pom
- # runs-on: ubuntu
- # steps:
- # - name: 拉取代码仓库
- # uses: http://git.missmoc.top/mocheng/checkout@v4
-
- # - name: 配置环境变量
- # run: |
- # export JAVA_HOME="/java17/java17"
- # export MAVEN_HOME="/maven/apache-maven-3.9.11"
- # echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV
- # echo "$JAVA_HOME/bin" >> $GITHUB_PATH
- # echo "MAVEN_HOME=$MAVEN_HOME" >> $GITHUB_ENV
- # echo "$MAVEN_HOME/bin" >> $GITHUB_PATH
-
- # - name: 构建通用模块(仅本地使用,不上传)
- # run: |
- # COMMON_MODULES=(
- # "ruoyi-common"
- # "ruoyi-api"
- # "ruoyi-common-bom"
- # "ruoyi-common-alibaba-bom"
- # "ruoyi-api-bom"
- # )
-
- # for module in "${COMMON_MODULES[@]}"; do
- # MODULE_POM_ABSOLUTE_PATH="${GITHUB_WORKSPACE}/${module}/pom.xml"
- # if [ ! -f "$MODULE_POM_ABSOLUTE_PATH" ]; then
- # echo "警告:模块 $module 不存在,跳过"
- # continue
- # fi
-
- # retries=3
- # count=0
- # until "$MAVEN_HOME/bin/mvn" clean compile install -U -DskipTests -f "$MODULE_POM_ABSOLUTE_PATH"; do
- # count=$((count + 1))
- # if [ $count -ge $retries ]; then
- # echo "错误:模块 $module 构建失败"
- # exit 1
- # fi
- # sleep 10
- # done
- # done
-
- build-and-push-services:
- needs: build-common-modules
- runs-on: ubuntu
- strategy:
- matrix:
- service:
- - ruoyi-auth
- - ruoyi-gateway
- - ruoyi-modules/Property
- - ruoyi-modules/ruoyi-gen
- - ruoyi-modules/ruoyi-job
- - ruoyi-modules/ruoyi-resource
- - ruoyi-modules/ruoyi-system
- - ruoyi-modules/ruoyi-workflow
- - ruoyi-modules/Sis
- - ruoyi-visual/ruoyi-monitor
- - ruoyi-visual/ruoyi-nacos
- - ruoyi-seata-server
- - ruoyi-sentinel-dashboard
- - ruoyi-snailjob-server
- steps:
- - name: 拉取代码仓库
- uses: http://git.missmoc.top/mocheng/checkout@v4
-
- - name: 配置环境变量
- run: |
- export JAVA_HOME="/java17/java17"
- export MAVEN_HOME="/maven/apache-maven-3.9.11"
- echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV
- echo "$JAVA_HOME/bin" >> $GITHUB_PATH
- echo "MAVEN_HOME=$MAVEN_HOME" >> $GITHUB_ENV
- echo "$MAVEN_HOME/bin" >> $GITHUB_PATH
-
- - name: 构建服务模块
- run: |
- SERVICE_NAME="${{ matrix.service }}"
- SERVICE_POM_ABSOLUTE_PATH="${GITHUB_WORKSPACE}/${SERVICE_NAME}/pom.xml"
- if [ ! -f "$SERVICE_POM_ABSOLUTE_PATH" ]; then
- echo "错误:服务 $SERVICE_NAME 的POM文件不存在"
- exit 1
- fi
-
- "$MAVEN_HOME/bin/mvn" clean package -U -DskipTests -f "$SERVICE_POM_ABSOLUTE_PATH"
-
- - name: 配置Docker Buildx
- uses: http://git.missmoc.top/mocheng/setup-buildx-action@v3
-
- - name: 登录到容器仓库
- uses: http://git.missmoc.top/mocheng/login-action@v3
- with:
- registry: ${{ secrets.REGISTRY_URL }}
- username: ${{ secrets.REGISTRY_USER }}
- password: ${{ secrets.REGISTRY_PASS }}
-
- - name: 确定Dockerfile路径
- id: dockerfile-path
- run: |
- SERVICE_NAME="${{ matrix.service }}"
- DOCKERFILE_ABSOLUTE_PATH="${GITHUB_WORKSPACE}/${SERVICE_NAME}/Dockerfile"
-
- if [ -f "$DOCKERFILE_ABSOLUTE_PATH" ]; then
- echo "dockerfile_path=$DOCKERFILE_ABSOLUTE_PATH" >> $GITHUB_OUTPUT
- else
- echo "dockerfile_path=${GITHUB_WORKSPACE}/Dockerfile" >> $GITHUB_OUTPUT
- fi
-
- - name: 构建并推送Docker镜像(仅推送镜像,不上传JAR)
- uses: http://git.missmoc.top/mocheng/build-push-action@v5
- with:
- context: "${{ github.workspace }}"
- file: ${{ github.workspace }}/${{ matrix.service }}/Dockerfile
- tags: 172.100.10.45:3000/by2025/smartparks/${{ matrix.service }}:latest
- # tags: ${{ secrets.REGISTRY_URL }}/by2025/$(echo ${{ matrix.service }} | tr 'A-Z' 'a-z'):${{ github.sha }}
- # tags: ${{ secrets.REGISTRY_URL }}/by2025/${{ matrix.service }}:2.0.4
- push: true
- cache-from: type=gha
- cache-to: type=gha,mode=max
- - name: 重启服务
- id: dockerfile-path
- run: |
- kubectl rollout restart deployment sis -n smartparks
- kubectl rollout restart deployment property -n smartparks
-
diff --git a/.gitea/workflows/master.yml b/.gitea/workflows/master.yml
index f551cd7e..52fde7ea 100644
--- a/.gitea/workflows/master.yml
+++ b/.gitea/workflows/master.yml
@@ -3,7 +3,7 @@ name: Build and Push to Target Registry
# 监听master分支的推送事件
on:
push:
- branches: [ master ]
+ branches: [ prod ]
jobs:
build-and-deploy:
@@ -15,7 +15,7 @@ jobs:
- name: 拉取代码
uses: http://git.missmoc.top/mocheng/checkout@v4
with:
- fetch-depth: 0
+ fetch-depth: 1
- name: 使用Maven构建项目
run: |
diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/ServiceWorkOrdersController.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/ServiceWorkOrdersController.java
index 72906e58..870364de 100644
--- a/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/ServiceWorkOrdersController.java
+++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/ServiceWorkOrdersController.java
@@ -26,7 +26,7 @@ import java.util.List;
/**
* 【业务管理-工单处理】
- * 前端访问路由地址为:/system/workOrders
+ * 前端访问路由地址为:/property/workOrders
*
* @author mocheng
* @date 2025-07-07
@@ -42,7 +42,7 @@ public class ServiceWorkOrdersController extends BaseController {
/**
* 查询【工单处理】列表
*/
- //@SaCheckPermission("system:workOrders:list")
+ @SaCheckPermission("property:workOrders:list")
@GetMapping("/list")
public TableDataInfo list(ServiceWorkOrdersBo bo, PageQuery pageQuery) {
return serviceWorkOrdersService.queryPageList(bo, pageQuery);
@@ -51,7 +51,7 @@ public class ServiceWorkOrdersController extends BaseController {
/**
* 导出【工单处理】列表
*/
- // @SaCheckPermission("system:workOrders:export")
+ @SaCheckPermission("property:workOrders:export")
@Log(title = "【工单处理】", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(ServiceWorkOrdersBo bo, HttpServletResponse response) {
@@ -64,7 +64,7 @@ public class ServiceWorkOrdersController extends BaseController {
*
* @param id 主键
*/
- // @SaCheckPermission("system:workOrders:query")
+ @SaCheckPermission("property:workOrders:query")
@GetMapping("/{id}")
public R getInfo(@NotNull(message = "主键不能为空")
@PathVariable("id") Long id) {
@@ -74,7 +74,7 @@ public class ServiceWorkOrdersController extends BaseController {
/**
* 新增【工单处理】
*/
- // @SaCheckPermission("system:workOrders:add")
+ @SaCheckPermission("property:workOrders:add")
@Log(title = "【工单处理】", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
@@ -85,20 +85,40 @@ public class ServiceWorkOrdersController extends BaseController {
/**
* 修改【工单处理】
*/
- //@SaCheckPermission("system:workOrders:edit")
+ @SaCheckPermission("property:workOrders:edit")
@Log(title = "【工单处理】", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R edit(@Validated(EditGroup.class) @RequestBody ServiceWorkOrdersBo bo) {
return toAjax(serviceWorkOrdersService.updateByBo(bo));
}
+ /**
+ * 派单【工单处理】
+ */
+ @SaCheckPermission("property:workOrders:dispatch")
+ @Log(title = "【工单处理】", businessType = BusinessType.UPDATE)
+ @RepeatSubmit()
+ @PutMapping("/dispatch")
+ public R dispatch(@Validated(EditGroup.class) @RequestBody ServiceWorkOrdersBo bo) {
+ return toAjax(serviceWorkOrdersService.updateByBo(bo));
+ }
+ /**
+ * 抢单【工单处理】
+ */
+ @SaCheckPermission("property:workOrders:grab")
+ @Log(title = "【工单处理】", businessType = BusinessType.UPDATE)
+ @RepeatSubmit()
+ @PutMapping("grab")
+ public R grab(@Validated(EditGroup.class) @RequestBody ServiceWorkOrdersBo bo) {
+ return toAjax(serviceWorkOrdersService.updateByBo(bo));
+ }
/**
* 删除【工单处理】
*
* @param ids 主键串
*/
- // @SaCheckPermission("system:workOrders:remove")
+ @SaCheckPermission("property:workOrders:remove")
@Log(title = "【工单处理】", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R remove(@NotEmpty(message = "主键不能为空")
diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/ServiceWorkOrders.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/ServiceWorkOrders.java
index 932b39b5..2642cfa6 100644
--- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/ServiceWorkOrders.java
+++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/ServiceWorkOrders.java
@@ -47,7 +47,7 @@ public class ServiceWorkOrders extends TenantEntity {
private Long type;
/**
- * 状态
+ * 状态(0创建工单,1已派单2已抢单3处理中,4已完成,5已评价)
*/
private String status;
diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/ServiceWorkOrdersType.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/ServiceWorkOrdersType.java
index 9d88bdfe..118998aa 100644
--- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/ServiceWorkOrdersType.java
+++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/ServiceWorkOrdersType.java
@@ -38,7 +38,7 @@ public class ServiceWorkOrdersType extends TenantEntity {
private String orderTypeName;
/**
- * 运作模式
+ * 运作模式(0派单+抢单,1派单,2自动派单)
*/
private String operationMode;
@@ -56,7 +56,10 @@ public class ServiceWorkOrdersType extends TenantEntity {
* 是否支持转单(0支持,1不支持)
*/
private Integer isTransfers;
-
+ /**
+ * 权重(1一般2紧急3危急)
+ */
+ private String processingWeight;
/**
* 搜索值
*/
diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/CostCarChargeBo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/CostCarChargeBo.java
index e149f6be..54d530b1 100644
--- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/CostCarChargeBo.java
+++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/CostCarChargeBo.java
@@ -50,6 +50,11 @@ public class CostCarChargeBo extends BaseEntity {
* 车位
*/
private String location;
+ /**
+ * 车位名称
+ */
+ private String locationName;
+
/**
* 缴费状态
*/
diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/ServiceWorkOrdersTypeBo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/ServiceWorkOrdersTypeBo.java
index aa7376a5..a9a15f6c 100644
--- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/ServiceWorkOrdersTypeBo.java
+++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/ServiceWorkOrdersTypeBo.java
@@ -54,7 +54,10 @@ public class ServiceWorkOrdersTypeBo extends BaseEntity {
*/
@NotNull(message = "完成时效不能为空", groups = { AddGroup.class, EditGroup.class })
private Integer completionNumber;
-
+ /**
+ * 权重(1一般2紧急3危急)
+ */
+ private String processingWeight;
/**
* 是否支持转单(0支持,1不支持)
*/
diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/enums/OrderReportingTypeEnum.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/enums/OrderReportingTypeEnum.java
new file mode 100644
index 00000000..48b898ef
--- /dev/null
+++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/enums/OrderReportingTypeEnum.java
@@ -0,0 +1,28 @@
+package org.dromara.property.domain.enums;
+
+/**
+ * 工单上报类型
+ */
+public enum OrderReportingTypeEnum {
+ TELEPHONE_REPORT("电话上报", "1"),
+ SCENE_REPORT("现场上报", "2"),
+ SYSTEM_REPORT("系统上报", "3"),
+ PHONE_REPORT("手机上报", "4");
+
+
+ private final String name;
+ private final String value;
+
+ OrderReportingTypeEnum(String name, String value) {
+ this.name = name;
+ this.value = value;
+ }
+
+ public String getName() {
+ return this.name;
+ }
+
+ public String getValue() {
+ return this.value;
+ }
+}
diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/enums/OrderTypeOperationEnum.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/enums/OrderTypeOperationEnum.java
new file mode 100644
index 00000000..72e9bb2c
--- /dev/null
+++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/enums/OrderTypeOperationEnum.java
@@ -0,0 +1,28 @@
+package org.dromara.property.domain.enums;
+/**
+ * @Author:yuyongle
+ * @Date:2025/7/4 10:35
+ * @Description:工单类型运作模式
+ **/
+public enum OrderTypeOperationEnum {
+ DISPATCH_ORDERS_AND_GRAB_ORDERS("派单+抢单", "0"),
+ DISPATCH("派单", "1"),
+ AUTOMATE_DISPATCH("自动派单", "2");
+
+
+ private final String name;
+ private final String value;
+
+ OrderTypeOperationEnum(String name, String value) {
+ this.name = name;
+ this.value = value;
+ }
+
+ public String getName() {
+ return this.name;
+ }
+
+ public String getValue() {
+ return this.value;
+ }
+}
diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/CostHouseChargeDetailVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/CostHouseChargeDetailVo.java
index 777a9e9c..24b326a8 100644
--- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/CostHouseChargeDetailVo.java
+++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/CostHouseChargeDetailVo.java
@@ -35,6 +35,10 @@ public class CostHouseChargeDetailVo implements Serializable {
*/
@ExcelProperty(value = "房屋")
private Long roomId;
+ /**
+ * 房屋名称
+ */
+ private String roomName;
/**
* 业主
*/
diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/CostHouseChargeVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/CostHouseChargeVo.java
index 29b63ee0..b2109a73 100644
--- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/CostHouseChargeVo.java
+++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/CostHouseChargeVo.java
@@ -42,6 +42,11 @@ public class CostHouseChargeVo implements Serializable {
*/
@ExcelProperty(value = "房屋")
private Long roomId;
+
+ /**
+ * 房屋名称
+ */
+ private String roomName;
/**
* 业主
*/
diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/CostMeterWaterVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/CostMeterWaterVo.java
index 6e3a2185..815a6ddd 100644
--- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/CostMeterWaterVo.java
+++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/CostMeterWaterVo.java
@@ -45,6 +45,10 @@ public class CostMeterWaterVo implements Serializable {
* 费用类型
*/
private String costType;
+ /**
+ * 费用名称
+ */
+ private String costTypeName;
/**
* 房间id
*/
diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrdersInfoVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrdersInfoVo.java
index 87a9e11f..67ab2f1e 100644
--- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrdersInfoVo.java
+++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrdersInfoVo.java
@@ -57,7 +57,10 @@ public class ServiceWorkOrdersInfoVo implements Serializable {
*/
@ExcelProperty(value = "权重")
private String processingWeight;
-
+ /**
+ * 运作模式(0派单+抢单,1派单,2自动派单)
+ */
+ private String operationMode;
/**
* 状态
*/
diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrdersTypeVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrdersTypeVo.java
index c6c49fab..9b44e8a4 100644
--- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrdersTypeVo.java
+++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrdersTypeVo.java
@@ -68,7 +68,10 @@ public class ServiceWorkOrdersTypeVo implements Serializable {
*/
@ExcelProperty(value = "是否支持转单(0支持,1不支持)")
private Integer isTransfers;
-
+ /**
+ * 权重(1一般2紧急3危急)
+ */
+ private String processingWeight;
/**
* 搜索值
diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrdersVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrdersVo.java
index 67a807cd..ec5db7b3 100644
--- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrdersVo.java
+++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrdersVo.java
@@ -67,7 +67,7 @@ public class ServiceWorkOrdersVo implements Serializable {
/**
* 状态
*/
- @ExcelProperty(value = "状态")
+ @ExcelProperty(value = "状态(0创建工单,1已派单2已抢单3处理中,4已完成,5已评价)")
private String status;
/**
@@ -75,7 +75,10 @@ public class ServiceWorkOrdersVo implements Serializable {
*/
@ExcelProperty(value = "派单时间")
private Date dispatchTime;
-
+ /**
+ * 运作模式(0派单+抢单,1派单,2自动派单)
+ */
+ private String operationMode;
/**
* 发起人
*/
diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/TbRoomMapper.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/TbRoomMapper.java
index caae3fe6..87a23973 100644
--- a/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/TbRoomMapper.java
+++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/TbRoomMapper.java
@@ -20,5 +20,5 @@ public interface TbRoomMapper extends BaseMapperPlus {
//查询房间名称
String queryRoomName(Long roomId);
- Map queryRoomNameList(@Param("ids") List ids);
+ List queryRoomNameList(@Param("ids") List ids);
}
diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/ITbRoomService.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/ITbRoomService.java
index ea077fbe..a9a2dc56 100644
--- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/ITbRoomService.java
+++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/ITbRoomService.java
@@ -9,6 +9,7 @@ import org.dromara.common.mybatis.core.page.PageQuery;
import java.util.Collection;
import java.util.List;
+import java.util.Map;
/**
* 房间信息Service接口
@@ -76,5 +77,11 @@ public interface ITbRoomService {
* @return 房间名称
*/
String queryRoomName(Long roomId);
+ /**
+ * 获取详细房间名称
+ * @param ids 房间id集合
+ * @return 房间名称
+ */
+ List queryRoomNameList(List ids);
}
diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AssetTypeServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AssetTypeServiceImpl.java
index 13ef526d..fad7357c 100644
--- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AssetTypeServiceImpl.java
+++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AssetTypeServiceImpl.java
@@ -73,7 +73,7 @@ public class AssetTypeServiceImpl implements IAssetTypeService {
private LambdaQueryWrapper buildQueryWrapper(AssetTypeBo bo) {
Map params = bo.getParams();
LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
- lqw.orderByAsc(AssetType::getId);
+ lqw.orderByAsc(AssetType::getSort);
lqw.like(StringUtils.isNotBlank(bo.getAssetTypeName()), AssetType::getAssetTypeName, bo.getAssetTypeName());
lqw.eq(bo.getSort() != null, AssetType::getSort, bo.getSort());
return lqw;
diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/CostCarChargeServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/CostCarChargeServiceImpl.java
index 7be26b05..ca8efbed 100644
--- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/CostCarChargeServiceImpl.java
+++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/CostCarChargeServiceImpl.java
@@ -82,6 +82,7 @@ public class CostCarChargeServiceImpl implements ICostCarChargeService {
// List residentPersonIdList = result.getRecords().stream().map(vo -> vo.getPersonId()).distinct().collect(Collectors.toList());
// List remoteUserVos = remoteUserService.selectListByIds(residentPersonIdList);
List residentPeoplelist = residentPersonMapper.selectList();
+ List roomNames = roomService.queryRoomNameList(idList);
result.getRecords().stream().forEach(s -> {
if (CollUtil.isNotEmpty(residentPeoplelist)) {
ResidentPerson residentPerson = residentPeoplelist.stream()
diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/CostHouseChargeServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/CostHouseChargeServiceImpl.java
index 76e391c5..2debf50a 100644
--- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/CostHouseChargeServiceImpl.java
+++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/CostHouseChargeServiceImpl.java
@@ -55,6 +55,7 @@ public class CostHouseChargeServiceImpl implements ICostHouseChargeService {
private final ResidentPersonMapper residentPersonMapper;
@DubboReference
private RemoteUserService remoteUserService;
+
/**
* 查询房屋收费
*
@@ -66,12 +67,14 @@ public class CostHouseChargeServiceImpl implements ICostHouseChargeService {
CostHouseChargeVo costHouseChargeVo = baseMapper.selectVoById(id);
CostHouseChargeDetailVo costHouseChargeDetailVo = BeanUtil.copyProperties(costHouseChargeVo, CostHouseChargeDetailVo.class);
CostItemsVo costItemsVo = costItemsMapper.selectVoById(costHouseChargeDetailVo.getCostItemsId());
- costHouseChargeDetailVo.setCostItemsVo(ObjectUtil.isNotEmpty(costItemsVo)?costItemsVo:null);
+ costHouseChargeDetailVo.setCostItemsVo(ObjectUtil.isNotEmpty(costItemsVo) ? costItemsVo : null);
TbRoomVo tbRoomVo = tbRoomMapper.selectVoById(costHouseChargeDetailVo.getRoomId());
- costHouseChargeDetailVo.setRoomVo(ObjectUtil.isNotEmpty(tbRoomVo)?tbRoomVo:null);
- ResidentPersonVo residentPersonVo = residentPersonMapper.selectVoById(costHouseChargeVo.getPersonId());
+ costHouseChargeDetailVo.setRoomVo(ObjectUtil.isNotEmpty(tbRoomVo) ? tbRoomVo : null);
+ ResidentPersonVo residentPersonVo = residentPersonMapper.selectVoById(costHouseChargeVo.getPersonId());
//RemoteUserVo userInfo = remoteUserService.getUserInfoById(costHouseChargeVo.getPersonId());
- costHouseChargeDetailVo.setPersonName(ObjectUtil.isNotEmpty(residentPersonVo)?residentPersonVo.getUserName():null);
+ String roomName = tbRoomMapper.queryRoomName(costHouseChargeDetailVo.getRoomId());
+ costHouseChargeDetailVo.setRoomName(StringUtils.isNotBlank(roomName) ? roomName : null);
+ costHouseChargeDetailVo.setPersonName(ObjectUtil.isNotEmpty(residentPersonVo) ? residentPersonVo.getUserName() : null);
return costHouseChargeDetailVo;
}
@@ -91,7 +94,9 @@ public class CostHouseChargeServiceImpl implements ICostHouseChargeService {
if (CollUtil.isNotEmpty(residentPeoplelist)) {
ResidentPerson residentPerson = residentPeoplelist.stream()
.filter(vo -> vo.getId() != null && vo.getId().equals(s.getPersonId())).findFirst().orElse(null);
- s.setPersonName(ObjectUtil.isNotEmpty(residentPerson)?residentPerson.getUserName():null);
+ s.setPersonName(ObjectUtil.isNotEmpty(residentPerson) ? residentPerson.getUserName() : null);
+ String roomName = tbRoomMapper.queryRoomName(s.getRoomId());
+ s.setRoomName(StringUtils.isNotBlank(roomName) ? roomName : null);
}
});
return TableDataInfo.build(result);
@@ -181,7 +186,7 @@ public class CostHouseChargeServiceImpl implements ICostHouseChargeService {
@Transactional(rollbackFor = Exception.class)
public Boolean returnFree(CostChargeReturnFeeBo bo) {
CostHouseChargeVo costHouseChargeVo = baseMapper.selectVoById(bo.getId());
- Assert.isTrue(ObjectUtil.isNotEmpty(costHouseChargeVo),"该费用不存在");
+ Assert.isTrue(ObjectUtil.isNotEmpty(costHouseChargeVo), "该费用不存在");
var CostReturnPayFee = new CostReturnPayFee().setItemId(costHouseChargeVo.getCostItemsId())
.setReturnNo(RandomUtil.randomNumbers(11))
.setReason(bo.getReason())
@@ -189,8 +194,7 @@ public class CostHouseChargeServiceImpl implements ICostHouseChargeService {
.setUserId(costHouseChargeVo.getPersonId())
.setPayNo(costHouseChargeVo.getId().toString())
.setPayAcount(costHouseChargeVo.getAmountReceivable())
- .setState("0")
- ;
+ .setState("0");
boolean flag = costReturnPayFeeMapper.insert(CostReturnPayFee) > 0;
CostHouseCharge costHouseCharge = BeanUtil.copyProperties(costHouseChargeVo, CostHouseCharge.class);
costHouseCharge.setChargeStatus(ChargeStatusEnum.REFUND_PENDING_REVIEW.getValue());
diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/CostMeterWaterServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/CostMeterWaterServiceImpl.java
index 87110271..b8e5e537 100644
--- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/CostMeterWaterServiceImpl.java
+++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/CostMeterWaterServiceImpl.java
@@ -1,6 +1,8 @@
package org.dromara.property.service.impl;
import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.ObjectUtil;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -10,6 +12,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
+import org.dromara.property.domain.vo.CostMeterTypeVo;
+import org.dromara.property.mapper.CostMeterTypeMapper;
import org.springframework.stereotype.Service;
import org.dromara.property.domain.bo.CostMeterWaterBo;
import org.dromara.property.domain.vo.CostMeterWaterVo;
@@ -35,6 +39,7 @@ import java.util.Collection;
public class CostMeterWaterServiceImpl implements ICostMeterWaterService {
private final CostMeterWaterMapper baseMapper;
+ private final CostMeterTypeMapper costMeterTypeMapper;
/**
* 查询费用-水电抄
@@ -58,6 +63,16 @@ public class CostMeterWaterServiceImpl implements ICostMeterWaterService {
public TableDataInfo queryPageList(CostMeterWaterBo bo, PageQuery pageQuery) {
LambdaQueryWrapper lqw = buildQueryWrapper(bo);
Page result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+ if (CollUtil.isNotEmpty(result.getRecords())){
+ //收集抄表类型id
+ List meterTypeIds = result.getRecords().stream().map(CostMeterWaterVo::getMeterTypeId).toList();
+ List costMeterTypeVos = costMeterTypeMapper.selectVoByIds(meterTypeIds);
+ result.getRecords().stream().forEach(s -> {
+ //查找抄表类型名称
+ CostMeterTypeVo costMeterTypeVo = costMeterTypeVos.stream().filter(vo -> vo.getId() != null && vo.getId().equals(s.getMeterTypeId())).findFirst().orElse(null);
+ s.setCostTypeName(ObjectUtil.isNotEmpty(costMeterTypeVo)?costMeterTypeVo.getName():null);
+ });
+ }
return TableDataInfo.build(result);
}
@@ -79,6 +94,7 @@ public class CostMeterWaterServiceImpl implements ICostMeterWaterService {
lqw.orderByAsc(CostMeterWater::getId);
lqw.eq(bo.getItemId() != null, CostMeterWater::getItemId, bo.getItemId());
lqw.eq(bo.getMeterTypeId() != null, CostMeterWater::getMeterTypeId, bo.getMeterTypeId());
+ lqw.eq(StringUtils.isNotBlank(bo.getCostType()), CostMeterWater::getCostType, bo.getCostType());
lqw.like(StringUtils.isNotBlank(bo.getObjName()), CostMeterWater::getObjName, bo.getObjName());
lqw.eq(StringUtils.isNotBlank(bo.getCurDegrees()), CostMeterWater::getCurDegrees, bo.getCurDegrees());
lqw.eq(StringUtils.isNotBlank(bo.getPreDegrees()), CostMeterWater::getPreDegrees, bo.getPreDegrees());
diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/CostPayFeeAuditServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/CostPayFeeAuditServiceImpl.java
index 6062d170..807db09b 100644
--- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/CostPayFeeAuditServiceImpl.java
+++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/CostPayFeeAuditServiceImpl.java
@@ -92,7 +92,7 @@ public class CostPayFeeAuditServiceImpl implements ICostPayFeeAuditService {
}
if (CollUtil.isNotEmpty(roomVoList)) {
TbRoomVo tbRoomVo = roomVoList.stream()
- .filter(vo -> vo.getId() != null && vo.getId().equals(s.getChargeId())).findFirst().orElse(null);
+ .filter(vo -> vo.getId() != null && vo.getId().equals(s.getRoomNumber())).findFirst().orElse(null);
s.setRoomNumber(ObjectUtil.isNotEmpty(tbRoomVo) ? tbRoomVo.getRoomNumber() : null);
}
costPayFeeAuditVoList.add(s);
diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/MeetServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/MeetServiceImpl.java
index c986c0b5..1f6eacf5 100644
--- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/MeetServiceImpl.java
+++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/MeetServiceImpl.java
@@ -63,16 +63,16 @@ public class MeetServiceImpl implements IMeetService {
@Override
public MeetVo queryById(Long id) {
MeetVo meetVo = baseMapper.selectVoById(id);
- ResidentPersonVo residentPersonVo = residentPersonMapper.selectVoById(meetVo.getPrincipals());
- if(ObjectUtil.isNotEmpty(residentPersonVo)){
- meetVo.setPrincipalsName(residentPersonVo.getUserName());
- meetVo.setPhoneNo(residentPersonVo.getPhone());
- }
-// RemoteUserVo userInfo = remoteUserService.getUserInfoById(Long.valueOf(meetVo.getPrincipals()));
-// if (ObjectUtil.isNotEmpty(userInfo)) {
-// meetVo.setPrincipalsName(userInfo.getNickName());
-// meetVo.setPhoneNo(userInfo.getPhonenumber());
+ // ResidentPersonVo residentPersonVo = residentPersonMapper.selectVoById(meetVo.getPrincipals());
+// if(ObjectUtil.isNotEmpty(residentPersonVo)){
+// meetVo.setPrincipalsName(residentPersonVo.getUserName());
+// meetVo.setPhoneNo(residentPersonVo.getPhone());
// }
+ RemoteUserVo userInfo = remoteUserService.getUserInfoById(Long.valueOf(meetVo.getPrincipals()));
+ if (ObjectUtil.isNotEmpty(userInfo)) {
+ meetVo.setPrincipalsName(userInfo.getNickName());
+ meetVo.setPhoneNo(userInfo.getPhonenumber());
+ }
String locationName = roomMapper.queryRoomName(Long.valueOf(meetVo.getLocation()));
meetVo.setLocationName(locationName);
return meetVo;
@@ -172,7 +172,7 @@ public class MeetServiceImpl implements IMeetService {
@Transactional(rollbackFor = Exception.class)
public Boolean insertByBo(MeetBo bo) {
Meet add = MapstructUtils.convert(bo, Meet.class);
- bo.setStatus(1);
+ bo.setStatus(0);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/ResidentUnitServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/ResidentUnitServiceImpl.java
index eea0eb33..7130b2de 100644
--- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/ResidentUnitServiceImpl.java
+++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/ResidentUnitServiceImpl.java
@@ -1,5 +1,6 @@
package org.dromara.property.service.impl;
+import cn.hutool.core.collection.CollUtil;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -18,9 +19,11 @@ import org.dromara.property.domain.ResidentUnit;
import org.dromara.property.mapper.ResidentUnitMapper;
import org.dromara.property.service.IResidentUnitService;
+import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Collection;
+import java.util.stream.Collectors;
/**
* 入驻单位Service业务层处理
@@ -50,8 +53,18 @@ public class ResidentUnitServiceImpl implements IResidentUnitService {
ResidentUnitVo residentUnitVo = baseMapper.selectVoById(id);
//获取入驻位置详情
if(StringUtils.isNotBlank(residentUnitVo.getLocation())){
- String roomName = roomService.queryRoomName(Long.valueOf(residentUnitVo.getLocation()));
- residentUnitVo.setLocationDetail(roomName);
+ // 修改后的代码
+ List idList = Arrays.stream(residentUnitVo.getLocation().split(","))
+ .map(String::trim)
+ .map(Long::parseLong)
+ .collect(Collectors.toList());
+
+ List roomNames = roomService.queryRoomNameList(idList);
+ // 元素用,拼接成字符串
+ if(CollUtil.isNotEmpty(roomNames)){
+ String locationDetail = String.join(",", roomNames);
+ residentUnitVo.setLocationDetail(locationDetail);
+ }
}
Long num = personService.queryPersonCount(residentUnitVo.getId());
residentUnitVo.setNumber(num);
diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/ServiceWorkOrdersServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/ServiceWorkOrdersServiceImpl.java
index 2d53d195..af6440aa 100644
--- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/ServiceWorkOrdersServiceImpl.java
+++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/ServiceWorkOrdersServiceImpl.java
@@ -2,6 +2,7 @@ package org.dromara.property.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
@@ -16,15 +17,20 @@ import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.redis.utils.RedisUtils;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.property.domain.*;
import org.dromara.property.domain.bo.ServiceWorkOrdersBo;
import org.dromara.property.domain.bo.mobile.MServiceWorkOrdersBo;
+import org.dromara.property.domain.enums.OrderReportingTypeEnum;
+import org.dromara.property.domain.enums.OrderTypeOperationEnum;
+import org.dromara.property.domain.enums.WorkOrderStatusEnum;
import org.dromara.property.domain.vo.*;
import org.dromara.property.mapper.ResidentPersonMapper;
import org.dromara.property.mapper.ServiceWorkOrdersMapper;
import org.dromara.property.mapper.ServiceWorkOrdersRecordMapper;
import org.dromara.property.mapper.ServiceWorkOrdersTypeMapper;
+import org.dromara.property.mapper.attendanceMapper.AttendanceUserGroupMapper;
import org.dromara.property.service.IServiceWorkOrdersService;
import org.dromara.system.api.RemoteUserService;
import org.dromara.system.api.domain.vo.RemoteUserVo;
@@ -54,6 +60,7 @@ public class ServiceWorkOrdersServiceImpl implements IServiceWorkOrdersService {
private final ServiceWorkOrdersRecordMapper workOrdersRecordMapper;
@DubboReference
private RemoteUserService remoteUserService;
+ private final AttendanceUserGroupMapper attendanceUserGroupMapper;
/**
* 查询【工单处理】
@@ -71,10 +78,12 @@ public class ServiceWorkOrdersServiceImpl implements IServiceWorkOrdersService {
ServiceWorkOrdersTypeVo serviceWorkOrdersTypeVo = typesMapper.selectVoById(serviceWorkOrdersVo.getType());
if (Objects.nonNull(serviceWorkOrdersTypeVo)) {
serviceWorkOrdersInfoVo.setTypeName(serviceWorkOrdersTypeVo.getOrderTypeName());
+ serviceWorkOrdersInfoVo.setOperationMode(ObjectUtil.isNotNull(serviceWorkOrdersTypeVo) ? serviceWorkOrdersTypeVo.getOperationMode() : null);
+
}
//ResidentPersonVo residentPersonHandler = residentPersonMapper.selectVoById(Long.valueOf(serviceWorkOrdersVo.getHandler()));
- RemoteUserVo userInfo = remoteUserService.getUserInfoById(Long.valueOf(serviceWorkOrdersVo.getHandler()));
+ RemoteUserVo userInfo = remoteUserService.getUserInfoById(Long.valueOf(serviceWorkOrdersVo.getHandler()));
if (ObjectUtil.isNotEmpty(userInfo)) {
serviceWorkOrdersInfoVo.setHandlerText(userInfo.getNickName());
serviceWorkOrdersInfoVo.setHandlerPhone(userInfo.getPhonenumber());
@@ -89,7 +98,7 @@ public class ServiceWorkOrdersServiceImpl implements IServiceWorkOrdersService {
serviceWorkOrdersRecordInfoVos.stream().forEach(workOrdersRecordVo -> {
RemoteUserVo remoteUserVo = remoteUserVos.stream().filter(vo -> vo.getUserId() != null && vo.getUserId().equals(serviceWorkOrdersVo.getHandler())).findFirst().orElse(null);
workOrdersRecordVo.setHandlerName(Objects.nonNull(remoteUserVo) ? remoteUserVo.getNickName() : null);
- workOrdersRecordVo.setInitiatorPeople(Objects.nonNull(serviceWorkOrdersTypeVo)?serviceWorkOrdersVo.getInitiatorPeople():null);
+ workOrdersRecordVo.setInitiatorPeople(Objects.nonNull(serviceWorkOrdersTypeVo) ? serviceWorkOrdersVo.getInitiatorPeople() : null);
if (workOrdersRecordVo.getStatus().equals("1") || workOrdersRecordVo.getStatus().equals("2")) {
serviceWorkOrdersInfoVo.setDispatchTime(workOrdersRecordVo.getCreateTime());
}
@@ -123,6 +132,7 @@ public class ServiceWorkOrdersServiceImpl implements IServiceWorkOrdersService {
ServiceWorkOrdersTypeVo serviceWorkOrdersTypeVo = serviceWorkOrdersTypeVoList.stream().filter(vo -> vo.getId() != null && vo.getId().equals(s.getType())).findFirst().orElse(null);
s.setTypeName(ObjectUtil.isNotNull(serviceWorkOrdersTypeVo) ? serviceWorkOrdersTypeVo.getOrderTypeName() : null);
+ s.setOperationMode(ObjectUtil.isNotNull(serviceWorkOrdersTypeVo) ? serviceWorkOrdersTypeVo.getOperationMode() : null);
serviceWorkOrdersVoList.add(s);
});
return TableDataInfo.build(new Page().setRecords(serviceWorkOrdersVoList).setTotal(result.getTotal()));
@@ -151,6 +161,7 @@ public class ServiceWorkOrdersServiceImpl implements IServiceWorkOrdersService {
ServiceWorkOrdersTypeVo serviceWorkOrdersTypeVo = serviceWorkOrdersTypeVoList.stream().filter(vo -> vo.getId() != null && vo.getId().equals(s.getType())).findFirst().orElse(null);
s.setTypeName(ObjectUtil.isNotNull(serviceWorkOrdersTypeVo) ? serviceWorkOrdersTypeVo.getOrderTypeName() : null);
+ s.setOperationMode(ObjectUtil.isNotNull(serviceWorkOrdersTypeVo) ? serviceWorkOrdersTypeVo.getOperationMode() : null);
serviceWorkOrdersVoList.add(s);
});
return serviceWorkOrdersVoList;
@@ -159,15 +170,15 @@ public class ServiceWorkOrdersServiceImpl implements IServiceWorkOrdersService {
private LambdaQueryWrapper buildQueryWrapper(ServiceWorkOrdersBo bo) {
//查询类型下子类型id
LambdaQueryWrapper OrdersTypeWrapper = new LambdaQueryWrapper<>();
- OrdersTypeWrapper.eq(ServiceWorkOrdersType::getParentId,bo.getType());
+ OrdersTypeWrapper.eq(ServiceWorkOrdersType::getParentId, bo.getType());
List serviceWorkOrdersTypes = typesMapper.selectList(OrdersTypeWrapper);
List typeIds = serviceWorkOrdersTypes.stream()
.map(ServiceWorkOrdersType::getId)
.collect(Collectors.toList());
typeIds.add(bo.getType());
List statusList = new ArrayList<>();
- if(StringUtils.isNotBlank(bo.getStatus())){
- statusList = Arrays.asList(bo.getStatus().split(","));
+ if (StringUtils.isNotBlank(bo.getStatus())) {
+ statusList = Arrays.asList(bo.getStatus().split(","));
}
Map params = bo.getParams();
LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
@@ -197,11 +208,14 @@ public class ServiceWorkOrdersServiceImpl implements IServiceWorkOrdersService {
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean insertByBo(ServiceWorkOrdersBo bo) {
+ //查询工单类型
+ ServiceWorkOrdersType serviceWorkOrdersType = typesMapper.selectById(bo.getType());
ServiceWorkOrders add = MapstructUtils.convert(bo, ServiceWorkOrders.class);
LoginUser user = LoginHelper.getLoginUser();
add.setOrderNo("GD" + IdUtil.getSnowflakeNextIdStr());
- add.setStatus("0");
+ add.setStatus(WorkOrderStatusEnum.CREATE_ORDER.getValue());
add.setInitiatorPeople(user.getNickname());
+ add.setProcessingWeight(serviceWorkOrdersType.getProcessingWeight());
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
@@ -210,11 +224,67 @@ public class ServiceWorkOrdersServiceImpl implements IServiceWorkOrdersService {
serviceWorkOrdersRecord.setOrderId(add.getId());
serviceWorkOrdersRecord.setStatus(add.getStatus());
//serviceWorkOrdersRecord.setHandler(add.getHandler());
- workOrdersRecordMapper.insert(serviceWorkOrdersRecord);
+ boolean flags = workOrdersRecordMapper.insert(serviceWorkOrdersRecord) > 0;
+ if (flags) {
+ if (serviceWorkOrdersType.getOperationMode().equals(OrderTypeOperationEnum.AUTOMATE_DISPATCH.getValue())) {
+ handleServiceWorkOrder(add);
+ }
+ }
}
return flag;
}
+ //自动派单
+ private void handleServiceWorkOrder(ServiceWorkOrders serviceWorkOrders) {
+ LocalDate today = LocalDate.now();
+ // 1. 获取今日排班人员(优先查缓存,未命中则查询数据库并缓存)
+ List attendanceUserGroups = RedisUtils.getCacheList(DateUtil.today());
+ if (CollUtil.isEmpty(attendanceUserGroups)) {
+ attendanceUserGroups = attendanceUserGroupMapper.selectList(
+ new LambdaQueryWrapper()
+ .le(AttendanceUserGroup::getStartDate, today)
+ .ge(AttendanceUserGroup::getEndDate, today)
+ .orderByAsc(AttendanceUserGroup::getCreateTime)
+ );
+ Assert.isTrue(CollUtil.isNotEmpty(attendanceUserGroups),"暂无排班人员");
+ // 缓存当天排班数据(假设当天不会变)
+ RedisUtils.setCacheList(DateUtil.today(), attendanceUserGroups);
+ }
+
+ // 2. 获取并更新轮询索引(原子性很重要)
+ int currentIndex;
+ Integer lastScheduleId = RedisUtils.getCacheObject(DateUtil.today()+"LastScheduleId");
+ if (lastScheduleId == null || lastScheduleId < 0 || lastScheduleId >= attendanceUserGroups.size()) {
+ currentIndex = 0; // 越界或未设置,重置为0
+ } else {
+ currentIndex = lastScheduleId + 1;
+ if (currentIndex >= attendanceUserGroups.size()) {
+ currentIndex = 0; // 循环轮询
+ }
+ }
+ RedisUtils.setCacheObject(DateUtil.today()+"LastScheduleId", currentIndex);
+
+ // 3. 分配处理人
+ AttendanceUserGroup assignedGroup = attendanceUserGroups.get(currentIndex);
+ Long employeeId = assignedGroup.getEmployeeId();
+
+ serviceWorkOrders.setHandler(employeeId);
+ serviceWorkOrders.setStatus(WorkOrderStatusEnum.DISPATCHED.getValue());
+
+ // 4. 插入记录
+ ServiceWorkOrdersRecord record = new ServiceWorkOrdersRecord();
+ record.setOrderId(serviceWorkOrders.getId());
+ record.setHandler(employeeId);
+ record.setStatus(WorkOrderStatusEnum.DISPATCHED.getValue());
+ workOrdersRecordMapper.insert(record);
+
+ // 5. 更新工单
+ serviceWorkOrders.setDispatchTime(new Date());
+ baseMapper.updateById(serviceWorkOrders);
+
+ log.info("成功派单,工单号:{}", serviceWorkOrders.getOrderNo());
+ }
+
/**
* 修改【工单处理】
*
@@ -242,17 +312,17 @@ public class ServiceWorkOrdersServiceImpl implements IServiceWorkOrdersService {
* 修改前的数据校验
*/
private void validEntityBeforeUpdate(ServiceWorkOrders entity) {
- Assert.isTrue(ObjectUtil.isNotEmpty(entity.getStatus()),"状态不能为空!");
+ Assert.isTrue(ObjectUtil.isNotEmpty(entity.getStatus()), "状态不能为空!");
LambdaQueryWrapper ordersLambdaQueryWrapper = new LambdaQueryWrapper<>();
ordersLambdaQueryWrapper.eq(ServiceWorkOrdersRecord::getOrderId, entity.getId());
ordersLambdaQueryWrapper.eq(ServiceWorkOrdersRecord::getStatus, entity.getStatus());
boolean exists = workOrdersRecordMapper.exists(ordersLambdaQueryWrapper);
//TODO 做一些数据校验,如唯一约束
- ServiceWorkOrdersRecord serviceWorkOrdersRecord = new ServiceWorkOrdersRecord();
- serviceWorkOrdersRecord.setOrderId(entity.getId());
- serviceWorkOrdersRecord.setStatus(entity.getStatus());
- serviceWorkOrdersRecord.setHandler(entity.getHandler());
- workOrdersRecordMapper.insert(serviceWorkOrdersRecord);
+ ServiceWorkOrdersRecord serviceWorkOrdersRecord = new ServiceWorkOrdersRecord();
+ serviceWorkOrdersRecord.setOrderId(entity.getId());
+ serviceWorkOrdersRecord.setStatus(entity.getStatus());
+ serviceWorkOrdersRecord.setHandler(entity.getHandler());
+ workOrdersRecordMapper.insert(serviceWorkOrdersRecord);
}
/**
@@ -497,16 +567,17 @@ public class ServiceWorkOrdersServiceImpl implements IServiceWorkOrdersService {
}
-
-
//小程序端新增
@Override
public Boolean insertMServiceWorkOrdersBo(MServiceWorkOrdersBo bo) {
+ //查询工单类型
+ ServiceWorkOrdersType serviceWorkOrdersType = typesMapper.selectById(bo.getType());
ServiceWorkOrders add = MapstructUtils.convert(bo, ServiceWorkOrders.class);
LoginUser user = LoginHelper.getLoginUser();
add.setOrderNo("GD" + IdUtil.getSnowflakeNextIdStr());
add.setOrderName("工单名称");
- add.setStatus("0");
+ add.setStatus(WorkOrderStatusEnum.CREATE_ORDER.getValue());
+ add.setReportingType(OrderReportingTypeEnum.PHONE_REPORT.getValue());
add.setInitiatorPeople(user.getNickname());
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
@@ -515,15 +586,22 @@ public class ServiceWorkOrdersServiceImpl implements IServiceWorkOrdersService {
ServiceWorkOrdersRecord serviceWorkOrdersRecord = new ServiceWorkOrdersRecord();
serviceWorkOrdersRecord.setOrderId(add.getId());
serviceWorkOrdersRecord.setStatus(add.getStatus());
- workOrdersRecordMapper.insert(serviceWorkOrdersRecord);
+ boolean flags = workOrdersRecordMapper.insert(serviceWorkOrdersRecord) > 0;
+ if (flags) {
+ if (serviceWorkOrdersType.getOperationMode().equals(OrderTypeOperationEnum.AUTOMATE_DISPATCH.getValue())) {
+ handleServiceWorkOrder(add);
+ }
+ }
}
return flag;
}
+
public List getList() {
LambdaQueryWrapper serviceWorkOrdersWrapper = new LambdaQueryWrapper<>();
return baseMapper.selectList(serviceWorkOrdersWrapper);
}
+
@Override
public List