新疆后端项目
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<parent>
|
||||
<artifactId>health-emergency</artifactId>
|
||||
<groupId>com.renkang</groupId>
|
||||
<version>2.0.0</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>health-emergency-biz</artifactId>
|
||||
<dependencies>
|
||||
<!--定时任务-->
|
||||
<dependency>
|
||||
<groupId>org.jeecgframework.boot</groupId>
|
||||
<artifactId>jeecg-boot-starter-job</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.renkang</groupId>
|
||||
<artifactId>health-emergency-api</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.jeecgframework.boot</groupId>
|
||||
<artifactId>jeecg-system-cloud-api</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.renkang</groupId>
|
||||
<artifactId>health-im-api</artifactId>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-source-plugin</artifactId>
|
||||
<version>${maven-source-plugin.version}</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>attach-sources</id>
|
||||
<goals>
|
||||
<goal>jar</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
package com.renkang.emergency.api;
|
||||
|
||||
/**
|
||||
* @author Junqiang Zhu
|
||||
*/
|
||||
public interface RequestPrefix {
|
||||
String BASE = "/api/emergency";
|
||||
String RESOURCE = BASE + "/resource";
|
||||
String ORDER = BASE + "/order";
|
||||
String SEND_RECORD = ORDER + "/send/record";
|
||||
String SCHEDULE = BASE + "/schedule";
|
||||
|
||||
String DISEASE = BASE + "/disease";
|
||||
|
||||
// 不鉴权路径
|
||||
String API = "/api";
|
||||
String ANON = API + "/anon/aed";
|
||||
String AED = API + "/aed";
|
||||
}
|
||||
+38
@@ -0,0 +1,38 @@
|
||||
package com.renkang.emergency.api.controller;
|
||||
|
||||
import com.renkang.emergency.api.RequestPrefix;
|
||||
import com.renkang.emergency.api.service.AedApiService;
|
||||
import com.renkang.emergency.entity.AedLatest;
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* aed组网不鉴权控制器
|
||||
*
|
||||
* @author Junqiang Zhu
|
||||
* @date 2023-12-12 14:36
|
||||
*/
|
||||
@RequestMapping(RequestPrefix.ANON)
|
||||
@RestController
|
||||
public class AedAnonApiController {
|
||||
|
||||
@Autowired
|
||||
private AedApiService aedApiService;
|
||||
|
||||
/**
|
||||
* 最新数据推送
|
||||
* @param aedLatest data
|
||||
* @return string
|
||||
*/
|
||||
@PostMapping("latest-data")
|
||||
public Result<String> latestData(@RequestBody AedLatest aedLatest) {
|
||||
aedApiService.addAedLatest(aedLatest);
|
||||
return Result.OK("success");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+47
@@ -0,0 +1,47 @@
|
||||
package com.renkang.emergency.api.controller;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.renkang.emergency.api.RequestPrefix;
|
||||
import com.renkang.emergency.api.service.AedApiService;
|
||||
import com.renkang.emergency.bean.response.AedGeo;
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Junqiang Zhu
|
||||
* @date 2023-12-12 14:36
|
||||
*/
|
||||
@RequestMapping(RequestPrefix.AED)
|
||||
@RestController
|
||||
public class AedApiController {
|
||||
|
||||
@Autowired
|
||||
private AedApiService aedApiService;
|
||||
|
||||
/**
|
||||
* 附近的aed
|
||||
*
|
||||
* @param longitude 经度
|
||||
* @param latitude 维度
|
||||
* @param radiusRange 半径范围
|
||||
* @return result
|
||||
*/
|
||||
@GetMapping("nearbyAed")
|
||||
public Result<List<AedGeo>> nearbyAed(@RequestParam(required = false) BigDecimal longitude,
|
||||
@RequestParam(required = false) BigDecimal latitude,
|
||||
@RequestParam(defaultValue = "100000") Double radiusRange,
|
||||
@RequestParam(required = false) Integer aedNum) {
|
||||
|
||||
List<AedGeo> aedGeos = aedApiService.nearbyAed(longitude, latitude, radiusRange, aedNum);
|
||||
if (CollectionUtil.isEmpty(aedGeos)) {
|
||||
return Result.OK("该位置附近暂无设备",aedGeos);
|
||||
}
|
||||
|
||||
return Result.ok(aedGeos);
|
||||
}
|
||||
|
||||
}
|
||||
+121
@@ -0,0 +1,121 @@
|
||||
package com.renkang.emergency.api.controller;
|
||||
|
||||
import com.renkang.emergency.api.RequestPrefix;
|
||||
import com.renkang.emergency.api.service.EmergencyApiService;
|
||||
import com.renkang.emergency.bean.request.CallBack;
|
||||
import com.renkang.emergency.bean.request.EmergencyCall;
|
||||
import com.renkang.emergency.bean.request.SingleParam;
|
||||
import com.renkang.emergency.bean.response.Call;
|
||||
import com.renkang.emergency.bean.response.Stat;
|
||||
import com.renkang.emergency.bean.response.StatSimple;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author Junqiang Zhu
|
||||
* @date 2023-04-24 17:47
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping(RequestPrefix.BASE)
|
||||
public class EmergencyApiController {
|
||||
|
||||
@Autowired
|
||||
private EmergencyApiService emergencyApiService;
|
||||
|
||||
|
||||
/**
|
||||
* 应急呼叫
|
||||
*
|
||||
* @param emergencyCall data
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/call")
|
||||
public Result<String> call(@RequestBody @Validated EmergencyCall emergencyCall) {
|
||||
return Result.ok(emergencyApiService.call(emergencyCall));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取值班人员
|
||||
*
|
||||
* @return 当前在线值班人员
|
||||
*/
|
||||
@GetMapping("/officerOnDuty")
|
||||
public Result<Call> officerOnDuty() {
|
||||
return Result.ok(emergencyApiService.officerOnDuty());
|
||||
}
|
||||
|
||||
/**
|
||||
* 呼叫回调
|
||||
*
|
||||
* @param callBack data
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/call/back")
|
||||
public Result<Boolean> callBack(@RequestBody @Validated CallBack callBack) {
|
||||
return Result.ok(emergencyApiService.callBack(callBack));
|
||||
}
|
||||
|
||||
/**
|
||||
* 结束会话
|
||||
*
|
||||
* @param sessionId 会话id
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/session/over")
|
||||
public Result<Boolean> sessionOver(@RequestBody @Validated SingleParam<String> sessionId) {
|
||||
return Result.ok(emergencyApiService.sessionOver(sessionId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 数据统计
|
||||
*
|
||||
* @param personType 人员类型(0:操作人员 1: 专业人员)
|
||||
* @return data
|
||||
*/
|
||||
@GetMapping("/stat")
|
||||
public Result<Stat> stat(@RequestParam String personType) {
|
||||
return Result.ok(emergencyApiService.stat(personType));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 操作人员数据统计
|
||||
*/
|
||||
@GetMapping("/statSimple")
|
||||
public Result<StatSimple> statSimple() {
|
||||
return Result.ok(emergencyApiService.statSimple());
|
||||
}
|
||||
|
||||
|
||||
@Operation(summary = "创建群聊-应急")
|
||||
@GetMapping(value = "/createGroupMag")
|
||||
public Result<Map<String, Object>> createGroupMag(@RequestParam("name") String name, @RequestParam("longitude") String longitude,
|
||||
@RequestParam("latitude") String latitude,
|
||||
@RequestParam(required = false) String type) {
|
||||
return emergencyApiService.createGroupMag(name, longitude, latitude, type);
|
||||
}
|
||||
|
||||
|
||||
@Operation(summary = "创建群聊-干预")
|
||||
@GetMapping(value = "/createGroupMagIntervene")
|
||||
public Result<Map<String, Object>> createGroupMagIntervene(@RequestParam("name") String name, @RequestParam("longitude") String longitude,
|
||||
@RequestParam("latitude") String latitude,
|
||||
@RequestParam(required = false) String type) {
|
||||
return emergencyApiService.createGroupMagIntervene(name, longitude, latitude,type);
|
||||
}
|
||||
|
||||
@GetMapping(value = "/fixOrderStatus")
|
||||
public Result<List<String>> fixOrderStatus() {
|
||||
return Result.ok(emergencyApiService.fixOrderStatus());
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
+287
@@ -0,0 +1,287 @@
|
||||
package com.renkang.emergency.api.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.renkang.emergency.api.RequestPrefix;
|
||||
import com.renkang.emergency.api.service.EmergencyOrderApiService;
|
||||
import com.renkang.emergency.api.service.EmergencyResourceApiService;
|
||||
import com.renkang.emergency.bean.request.ListSession;
|
||||
import com.renkang.emergency.bean.request.OrderEvaluation;
|
||||
import com.renkang.emergency.bean.request.SingleParam;
|
||||
import com.renkang.emergency.bean.request.StationUpdateOrder;
|
||||
import com.renkang.emergency.bean.response.InitUserOrder;
|
||||
import com.renkang.emergency.bean.response.OrderThrough;
|
||||
import com.renkang.emergency.bean.response.SessionOrderUser;
|
||||
import com.renkang.emergency.entity.Order;
|
||||
import com.renkang.emergency.entity.OrderDetail;
|
||||
import com.renkang.emergency.entity.OrderSendRecord;
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Junqiang Zhu
|
||||
* @date 2023-04-24 17:47
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping(RequestPrefix.ORDER)
|
||||
public class EmergencyOrderApiController {
|
||||
|
||||
@Autowired
|
||||
private EmergencyOrderApiService emergencyOrderApiService;
|
||||
@Autowired
|
||||
private EmergencyResourceApiService emergencyResourceApiService;
|
||||
|
||||
/**
|
||||
* 发起人参与订单列表
|
||||
*/
|
||||
@GetMapping("/initUserOrderPage")
|
||||
public Result<IPage<InitUserOrder>> initUserOrderPage(@RequestParam(value = "pageNo", defaultValue = "1") Long pageNo,
|
||||
@RequestParam(value = "pageSize", defaultValue = "10") Long pageSize) {
|
||||
Page<Order> page = new Page<>(pageNo, pageSize);
|
||||
return Result.ok(emergencyOrderApiService.initUserOrderPage(page));
|
||||
}
|
||||
|
||||
/**
|
||||
* 应急小结
|
||||
*/
|
||||
@GetMapping("/orderThrough")
|
||||
public Result<OrderThrough> orderThrough(@RequestParam @Validated @NotBlank(message = "id为空") String id) {
|
||||
return Result.ok(emergencyOrderApiService.orderThrough(id));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取会话列表
|
||||
*
|
||||
* @param sessions 会话集合
|
||||
* @param type 人员类型(操作/专业人员)
|
||||
* @return result
|
||||
*/
|
||||
@PostMapping("listSession")
|
||||
public Result<List<SessionOrderUser>> listSession(@RequestBody ListSession value) {
|
||||
try {
|
||||
return Result.OK(emergencyOrderApiService.listSession(value));
|
||||
} catch (Exception e) {
|
||||
return Result.error(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 订单列表
|
||||
*
|
||||
* @param orderType 订单类型 (-1:全部 0:进行中 3: 已完成)
|
||||
* @param personType 人员类型 (0:操作人 1:专业人 3:发起人/救助人 4:驻场人)
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/page")
|
||||
public Result<IPage<Order>> page(@RequestParam(value = "pageNo", defaultValue = "1") Long pageNo,
|
||||
@RequestParam(value = "pageSize", defaultValue = "10") Long pageSize,
|
||||
@RequestParam("orderType") String orderType,
|
||||
@RequestParam("personType") String personType) {
|
||||
Page<Order> page = new Page<>(pageNo, pageSize);
|
||||
return Result.ok(emergencyOrderApiService.page(page, orderType, personType));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 是否有正在进行的会话
|
||||
*
|
||||
* @return "" 或者 sessionId
|
||||
*/
|
||||
@GetMapping("/sessionNow")
|
||||
public Result<String> sessionNow(@RequestParam String userId) {
|
||||
return Result.ok(emergencyResourceApiService.sessionNow(userId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改被救助人
|
||||
*
|
||||
* @param order 救助人信息
|
||||
* @return result
|
||||
*/
|
||||
@PostMapping("/updateSalvageUser")
|
||||
public Result<String> updateSalvageUser(@RequestBody Order order) {
|
||||
try {
|
||||
emergencyOrderApiService.updateSalvageUser(order);
|
||||
return Result.OK("修改被救助人成功");
|
||||
} catch (Exception e) {
|
||||
return Result.error(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 应急单详情
|
||||
*
|
||||
* @param orderId 单子id
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/detail")
|
||||
public Result<OrderDetail> detail(@RequestParam String orderId) {
|
||||
return Result.ok(emergencyOrderApiService.detail(orderId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 拒绝派单
|
||||
*/
|
||||
@PostMapping("/rejectionOfOrder")
|
||||
public Result<String> rejectionOfOrder(@RequestBody @Validated SingleParam<String> singleParam) {
|
||||
try {
|
||||
emergencyOrderApiService.rejectionOfOrder(singleParam);
|
||||
return Result.OK("成功");
|
||||
} catch (Exception e) {
|
||||
return Result.error(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 补充小结
|
||||
*/
|
||||
@PostMapping("/fillSummary")
|
||||
public Result<String> fillSummary(@RequestBody @Validated OrderDetail detail) {
|
||||
try {
|
||||
emergencyOrderApiService.fillSummary(detail);
|
||||
return Result.OK("成功");
|
||||
} catch (Exception e) {
|
||||
return Result.error(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 驻场派单
|
||||
*/
|
||||
@PostMapping("/stationSendOrder")
|
||||
public Result<String> stationSendOrder(@RequestBody Order order) {
|
||||
try {
|
||||
emergencyOrderApiService.stationSendOrder(order);
|
||||
return Result.ok("派单成功");
|
||||
} catch (Exception e) {
|
||||
return Result.error(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 结束应急
|
||||
*/
|
||||
@PostMapping("/orderOver")
|
||||
public Result<String> orderOver(@RequestBody Order order) {
|
||||
try {
|
||||
emergencyOrderApiService.orderOver(order);
|
||||
return Result.ok("结束应急成功");
|
||||
} catch (Exception e) {
|
||||
return Result.error(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 补单
|
||||
*/
|
||||
@PostMapping("/replenishOrder")
|
||||
public Result<String> replenishOrder(@RequestBody Order order) {
|
||||
try {
|
||||
emergencyOrderApiService.replenishOrder(order);
|
||||
return Result.ok("补单成功");
|
||||
} catch (Exception e) {
|
||||
return Result.error(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过sessionId 获取订单详情
|
||||
*/
|
||||
@GetMapping("/getOrderBySessionId")
|
||||
public Result<Order> getOrderBySessionId(@RequestParam String sessionId) {
|
||||
try {
|
||||
return Result.ok(emergencyOrderApiService.getOrderBySessionId(sessionId));
|
||||
} catch (Exception e) {
|
||||
return Result.error(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取订单详情通过订单id
|
||||
*/
|
||||
@GetMapping("/getOrderById")
|
||||
public Result<Order> getOrderById(@RequestParam String id) {
|
||||
try {
|
||||
return Result.ok(emergencyOrderApiService.getOrderById(id));
|
||||
} catch (Exception e) {
|
||||
return Result.error(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 驻场人员 接单/拒单
|
||||
* 1:已接单 2:已拒单)
|
||||
*/
|
||||
@PostMapping("/acceptOrRejectOrder")
|
||||
public Result<String> acceptOrRejectOrder(@RequestBody @Validated StationUpdateOrder stationUpdateOrder) {
|
||||
try {
|
||||
emergencyOrderApiService.acceptOrRejectOrder(stationUpdateOrder);
|
||||
return Result.OK("修改成功");
|
||||
} catch (Exception e) {
|
||||
return Result.error(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 驻场人员 派单列表
|
||||
* orderStatus 是否接单(-1:全部 0:待处理 1:已接单 2:已拒单 3:已完成(已有别人接单))
|
||||
*/
|
||||
@GetMapping("/listOrderSend")
|
||||
public Result<IPage<OrderSendRecord>> listOrderSend(@RequestParam(value = "pageNo", defaultValue = "1") Long pageNo,
|
||||
@RequestParam(value = "pageSize", defaultValue = "10") Long pageSize,
|
||||
@RequestParam("orderStatus") String orderStatus) {
|
||||
Page<OrderSendRecord> page = new Page<>(pageNo, pageSize);
|
||||
try {
|
||||
return Result.OK(emergencyOrderApiService.pageOrderSend(page, orderStatus));
|
||||
} catch (Exception e) {
|
||||
return Result.error(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 评价
|
||||
*/
|
||||
@PostMapping("/evaluation")
|
||||
public Result<String> evaluation(@RequestBody @Validated OrderEvaluation orderEvaluation) {
|
||||
try {
|
||||
emergencyOrderApiService.evaluation(orderEvaluation);
|
||||
return Result.OK("评价成功");
|
||||
} catch (Exception e) {
|
||||
return Result.error(e.getMessage());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取救助意见
|
||||
*/
|
||||
@GetMapping("/salvageOpinion")
|
||||
public Result<String> salvageOpinion(@RequestParam String sessionId) {
|
||||
return Result.OK(emergencyOrderApiService.salvageOpinion(sessionId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加救助意见
|
||||
*/
|
||||
@PostMapping("/addSalvageOpinion")
|
||||
public Result<String> addSalvageOpinion(@RequestBody Order order) {
|
||||
try {
|
||||
emergencyOrderApiService.addSalvageOpinion(order);
|
||||
return Result.OK("添加成功");
|
||||
} catch (Exception e) {
|
||||
return Result.error(e.getMessage());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+42
@@ -0,0 +1,42 @@
|
||||
package com.renkang.emergency.api.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.renkang.emergency.api.RequestPrefix;
|
||||
import com.renkang.emergency.api.service.EmergencyOrderSendRecordApiService;
|
||||
import com.renkang.emergency.entity.OrderSendRecord;
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* @author Junqiang Zhu
|
||||
* @date 2023-04-24 17:47
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping(RequestPrefix.SEND_RECORD)
|
||||
public class EmergencyOrderSendRecordApiController {
|
||||
|
||||
@Autowired
|
||||
private EmergencyOrderSendRecordApiService emergencyOrderSendRecordApiService;
|
||||
|
||||
/**
|
||||
* 订单列表
|
||||
*
|
||||
* @param orderType 订单类型 (0:进行中 4: 已完成)
|
||||
* @param personType 人员类型 (0:操作人 1:专业人 2: 救助人 3:发起人 4: 驻场人)
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/page")
|
||||
public Result<IPage<OrderSendRecord>> page(@RequestParam(value = "pageNo", defaultValue = "1") Long pageNo,
|
||||
@RequestParam(value = "pageSize", defaultValue = "10") Long pageSize,
|
||||
@RequestParam("orderId") String orderId) {
|
||||
Page<OrderSendRecord> page = new Page<OrderSendRecord>(pageNo, pageSize);
|
||||
return Result.ok(emergencyOrderSendRecordApiService.pageRecord(page, orderId));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+53
@@ -0,0 +1,53 @@
|
||||
package com.renkang.emergency.api.controller;
|
||||
|
||||
import com.renkang.emergency.api.RequestPrefix;
|
||||
import com.renkang.emergency.api.service.EmergencyResourceApiService;
|
||||
import com.renkang.emergency.bean.response.ResourceHome;
|
||||
import com.renkang.emergency.entity.EmergencyResourceDO;
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Junqiang Zhu
|
||||
* @date 2023-04-24 17:47
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping(RequestPrefix.RESOURCE)
|
||||
public class EmergencyResourceApiController {
|
||||
|
||||
@Autowired
|
||||
private EmergencyResourceApiService emergencyResourceApiService;
|
||||
|
||||
/**
|
||||
* 获取首页数据
|
||||
*
|
||||
* @param type 资源类型
|
||||
* @param longitude 经度
|
||||
* @param latitude 维度
|
||||
* @return result
|
||||
*/
|
||||
@GetMapping("/home")
|
||||
public Result<ResourceHome> home(@RequestParam(required = false) String type,
|
||||
@RequestParam(required = false) Double longitude,
|
||||
@RequestParam(required = false) Double latitude) {
|
||||
return Result.ok(emergencyResourceApiService.listResourceByType(type, longitude, latitude));
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询主场医院列表
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/selectStationHospitalList")
|
||||
public Result<List<EmergencyResourceDO>> selectHospitalList() {
|
||||
return emergencyResourceApiService.selectHospitalList();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+47
@@ -0,0 +1,47 @@
|
||||
package com.renkang.emergency.api.controller;
|
||||
|
||||
import com.renkang.emergency.api.RequestPrefix;
|
||||
import com.renkang.emergency.api.service.EmergencyScheduleApiService;
|
||||
import com.renkang.emergency.bean.response.ScheduleRecordShow;
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* 排班controller
|
||||
*
|
||||
* @author Junqiang Zhu
|
||||
* @date 2023-05-25
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping(RequestPrefix.SCHEDULE)
|
||||
public class EmergencyScheduleApiController {
|
||||
|
||||
@Autowired
|
||||
private EmergencyScheduleApiService emergencyScheduleApiService;
|
||||
|
||||
/**
|
||||
* 年/月值班记录
|
||||
*/
|
||||
@GetMapping("/scheduleRecord")
|
||||
public Result<ScheduleRecordShow> scheduleRecord(@RequestParam String year,
|
||||
@RequestParam(required = false) String month,
|
||||
@RequestParam(required = false) String userId) {
|
||||
return Result.ok(emergencyScheduleApiService.scheduleRecord(year, month, userId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 年/月值班 展示
|
||||
*/
|
||||
@GetMapping("/scheduleShow")
|
||||
public Result<ScheduleRecordShow> scheduleShow(@RequestParam Integer year,
|
||||
@RequestParam Integer month,
|
||||
@RequestParam(required = false) String userId) {
|
||||
return Result.ok(emergencyScheduleApiService.scheduleShow(year, month, userId));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+299
@@ -0,0 +1,299 @@
|
||||
package com.renkang.emergency.api.controller;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.alibaba.druid.util.StringUtils;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.renkang.emergency.api.RequestPrefix;
|
||||
import com.renkang.emergency.api.service.IEmergencySeriousDiseaseService;
|
||||
import com.renkang.emergency.api.service.impl.EmergencyApiServiceImpl;
|
||||
import com.renkang.emergency.bean.response.Call;
|
||||
import com.renkang.emergency.constant.EmergencyConstants;
|
||||
import com.renkang.emergency.entity.EmergencySeriousDisease;
|
||||
import com.renkang.emergency.entity.EmergencySeriousDiseaseDO;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.compress.utils.Lists;
|
||||
import org.apache.shiro.SecurityUtils;
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
import org.jeecg.common.aspect.annotation.AutoLog;
|
||||
import org.jeecg.common.system.vo.LoginUser;
|
||||
import org.jeecg.common.util.AgeCalculateUtil;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@Tag(name = "大病就医")
|
||||
@RestController
|
||||
@RequestMapping(RequestPrefix.DISEASE)
|
||||
@Slf4j
|
||||
public class EmergencySeriousDiseaseApiController {
|
||||
|
||||
|
||||
@Autowired
|
||||
private IEmergencySeriousDiseaseService emergencySeriousDiseaseService;
|
||||
|
||||
|
||||
@Autowired
|
||||
private EmergencyApiServiceImpl emergencyApiServiceImpl;
|
||||
|
||||
@Transactional
|
||||
@AutoLog(value = "预约看病")
|
||||
@Operation(summary = "预约看病", description = "预约看病")
|
||||
@PostMapping(value = "/appointmentSeeDoctor")
|
||||
/*@LimitSubmit(key = "appointmentSeeDoctor:%s")*/
|
||||
public Result<String> appointmentSeeDoctor(@RequestBody @Validated EmergencySeriousDisease emergencySeriousDisease) {
|
||||
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
||||
|
||||
//同一时间只能存在一个大病就医单
|
||||
int count = emergencySeriousDiseaseService.selectEmergencyExist(sysUser.getId());
|
||||
if (count > 0) {
|
||||
return Result.error("当前已有大病就医预约,无法继续预约");
|
||||
}
|
||||
|
||||
Date date = new Date();
|
||||
if (date.getTime() >= emergencySeriousDisease.getDesireTime().getTime()) {
|
||||
return Result.error("预约时间必须大于当前时间");
|
||||
}
|
||||
emergencySeriousDisease.setUserDepart(sysUser.getOrgCode());
|
||||
emergencySeriousDisease.setUserId(sysUser.getId());
|
||||
emergencySeriousDisease.setState("1");
|
||||
emergencySeriousDisease.setIsFill(EmergencyConstants.ORDER_IS_FILL_0);
|
||||
emergencySeriousDisease.setCreateTime(date);
|
||||
emergencySeriousDisease.setReservationNo(String.valueOf(IdWorker.getId()));
|
||||
emergencySeriousDisease.setRealname(sysUser.getRealname());
|
||||
String idCard = sysUser.getIdCard();
|
||||
if (!StringUtils.isEmpty(idCard)) {
|
||||
emergencySeriousDisease.setAge(AgeCalculateUtil.countAge(idCard));
|
||||
}
|
||||
emergencySeriousDisease.setTelPhone(sysUser.getPhone());
|
||||
emergencySeriousDisease.setSex(sysUser.getSex());
|
||||
emergencySeriousDisease.setIdNo(idCard);
|
||||
|
||||
Call rs = emergencyApiServiceImpl.officerOnDuty();
|
||||
|
||||
if (rs == null || CollectionUtils.isEmpty(rs.getOperators())) {
|
||||
return Result.error("没有接受方人员!");
|
||||
}
|
||||
String operatorsId = rs.getOperators().get(0).getUserId();
|
||||
emergencySeriousDisease.setOperatorId(operatorsId);
|
||||
emergencySeriousDisease.setCenterId(rs.getCenterId());
|
||||
emergencySeriousDiseaseService.save(emergencySeriousDisease);
|
||||
|
||||
return Result.ok("预约成功");
|
||||
}
|
||||
|
||||
|
||||
@AutoLog(value = "预约看病详情")
|
||||
@Operation(summary = "预约看病详情", description = "预约看病详情")
|
||||
@GetMapping(value = "/selectEmergencySeriousDiseaseDOById")
|
||||
public Result<EmergencySeriousDiseaseDO> selectEmergencySeriousDiseaseDOById(@RequestParam(name = "id", required = true) String id) {
|
||||
|
||||
LambdaQueryWrapper<EmergencySeriousDisease> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(EmergencySeriousDisease::getId, id);
|
||||
queryWrapper.eq(EmergencySeriousDisease::getStatus, 1);
|
||||
queryWrapper.eq(EmergencySeriousDisease::getDelFlag, 0);
|
||||
EmergencySeriousDisease emergencySeriousDisease = emergencySeriousDiseaseService.getOne(queryWrapper);
|
||||
|
||||
if (emergencySeriousDisease == null) {
|
||||
return Result.error("数据不存在");
|
||||
}
|
||||
|
||||
EmergencySeriousDiseaseDO emergencySeriousDiseaseDO = new EmergencySeriousDiseaseDO();
|
||||
|
||||
BeanUtil.copyProperties(emergencySeriousDisease, emergencySeriousDiseaseDO);
|
||||
|
||||
emergencySeriousDiseaseDO.setNewState(emergencySeriousDisease.getState());
|
||||
|
||||
|
||||
if (StringUtils.equals(emergencySeriousDisease.getState(), "6") || StringUtils.equals(emergencySeriousDisease.getState(), "7") ||
|
||||
StringUtils.equals(emergencySeriousDisease.getState(), "8")) {
|
||||
emergencySeriousDiseaseDO.setNewState("1");
|
||||
}
|
||||
|
||||
if (StringUtils.equals(emergencySeriousDisease.getState(), "3") || StringUtils.equals(emergencySeriousDisease.getState(), "4")) {
|
||||
emergencySeriousDiseaseDO.setNewState("3");
|
||||
}
|
||||
|
||||
if (StringUtils.equals(emergencySeriousDisease.getState(), "5")) {
|
||||
emergencySeriousDiseaseDO.setNewState("4");
|
||||
}
|
||||
|
||||
return Result.ok(emergencySeriousDiseaseDO);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Transactional
|
||||
@AutoLog(value = "修改看病详情")
|
||||
@Operation(summary = "修改看病详情", description = "修改看病详情")
|
||||
@PostMapping(value = "/updateEmergencySeriousDiseaseDOById")
|
||||
/*@LimitSubmit(key = "updateEmergencySeriousDiseaseDOById:%s")*/
|
||||
public Result<String> updateEmergencySeriousDiseaseDOById(@RequestBody @Validated EmergencySeriousDisease emergencySeriousDisease) {
|
||||
|
||||
LambdaQueryWrapper<EmergencySeriousDisease> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(EmergencySeriousDisease::getId, emergencySeriousDisease.getId());
|
||||
queryWrapper.eq(EmergencySeriousDisease::getStatus, 1);
|
||||
queryWrapper.eq(EmergencySeriousDisease::getDelFlag, 0);
|
||||
EmergencySeriousDisease emergencySeriousDiseaseOnly = emergencySeriousDiseaseService.getOne(queryWrapper);
|
||||
|
||||
if (emergencySeriousDiseaseOnly == null) {
|
||||
return Result.error("数据不存在");
|
||||
}
|
||||
String state = emergencySeriousDiseaseOnly.getState();
|
||||
if (!StringUtils.equals(state, "1") && StringUtils.equals(state, "5")) {
|
||||
return Result.ok("该预约暂时无法修改");
|
||||
}
|
||||
|
||||
emergencySeriousDisease.setState("1");
|
||||
emergencySeriousDiseaseService.updateById(emergencySeriousDisease);
|
||||
return Result.ok("修改完成");
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Operation(summary = "预约看病列表", description = "预约看病列表")
|
||||
@GetMapping(value = "/selectEmergencySeriousDiseaseList")
|
||||
public Result<List<EmergencySeriousDiseaseDO>> selectEmergencySeriousDiseaseList(@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo) {
|
||||
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
||||
|
||||
|
||||
QueryWrapper<EmergencySeriousDisease> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("user_id", sysUser.getId());
|
||||
queryWrapper.orderByDesc("create_time");
|
||||
Page<EmergencySeriousDisease> page = new Page<>(pageNo, 10);
|
||||
|
||||
IPage<EmergencySeriousDisease> pageList = emergencySeriousDiseaseService.page(page, queryWrapper);
|
||||
|
||||
List<EmergencySeriousDisease> list = pageList.getRecords();
|
||||
|
||||
List<EmergencySeriousDiseaseDO> res = Lists.newArrayList();
|
||||
if (CollectionUtil.isNotEmpty(list)) {
|
||||
|
||||
if (CollectionUtil.isNotEmpty(list)) {
|
||||
for (EmergencySeriousDisease emergencySeriousDisease : list) {
|
||||
EmergencySeriousDiseaseDO aa = BeanUtil.toBean(emergencySeriousDisease, EmergencySeriousDiseaseDO.class);
|
||||
res.add(aa);
|
||||
}
|
||||
}
|
||||
}
|
||||
return Result.ok(res);
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 预约看病列表 根据状态
|
||||
*
|
||||
* @param pageNo
|
||||
* @param pageSize
|
||||
* @param state
|
||||
* @return
|
||||
*/
|
||||
@Operation(summary = "预约看病列表 根据状态", description = "预约看病列表 根据状态")
|
||||
@GetMapping(value = "/selectEmergencySeriousDiseaseListByState")
|
||||
public Result<List<EmergencySeriousDiseaseDO>> selectEmergencySeriousDiseaseListByState(@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
|
||||
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
|
||||
@RequestParam(name = "state") String state) {
|
||||
|
||||
|
||||
List<EmergencySeriousDiseaseDO> list = emergencySeriousDiseaseService.selectEmergencySeriousDiseaseListByState(pageNo, pageSize, state);
|
||||
|
||||
|
||||
return Result.ok(list);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Operation(summary = "驻场人员接单", description = "驻场人员接单")
|
||||
// @RequiresPermissions("emergency:emergency_serious_disease:acceptStation")
|
||||
@GetMapping(value = "/acceptStation")
|
||||
public Result<String> acceptStation(@RequestParam(name = "id", required = true) String id) {
|
||||
|
||||
EmergencySeriousDisease emergencySeriousDisease = emergencySeriousDiseaseService.getById(id);
|
||||
|
||||
if (emergencySeriousDisease == null) {
|
||||
return Result.OK("该数据不存在!");
|
||||
}
|
||||
|
||||
String state = emergencySeriousDisease.getState();
|
||||
if (!"2".equals(state)) {
|
||||
return Result.OK("该订单暂时无法接单!");
|
||||
}
|
||||
emergencySeriousDisease.setAcceptStationTime(new Date());
|
||||
emergencySeriousDisease.setState("3");
|
||||
emergencySeriousDiseaseService.updateById(emergencySeriousDisease);
|
||||
|
||||
return Result.OK("派单成功!");
|
||||
}
|
||||
|
||||
|
||||
@Operation(summary = "驻场人员预约完成", description = "驻场人员预约完成")
|
||||
// @RequiresPermissions("emergency:emergency_serious_disease:stationReservationFinish")
|
||||
@GetMapping(value = "/stationReservationFinish")
|
||||
public Result<String> stationReservationFinish(@RequestParam(name = "id", required = true) String id,
|
||||
@RequestParam(name = "reservationTime", required = true) Date reservationTime) {
|
||||
|
||||
EmergencySeriousDisease emergencySeriousDisease = emergencySeriousDiseaseService.getById(id);
|
||||
|
||||
if (emergencySeriousDisease == null) {
|
||||
return Result.OK("该数据不存在!");
|
||||
}
|
||||
|
||||
String state = emergencySeriousDisease.getState();
|
||||
if (!"3".equals(state)) {
|
||||
return Result.OK("该订单暂时无法预约完成!");
|
||||
}
|
||||
emergencySeriousDisease.setDesireFinishTime(new Date());
|
||||
emergencySeriousDisease.setReservationTime(reservationTime);
|
||||
emergencySeriousDisease.setState("4");
|
||||
emergencySeriousDiseaseService.updateById(emergencySeriousDisease);
|
||||
|
||||
return Result.OK("派单成功!");
|
||||
}
|
||||
|
||||
|
||||
@Operation(summary = "驻场人员驳回", description = "驻场人员驳回")
|
||||
// @RequiresPermissions("emergency:emergency_serious_disease:stationReject")
|
||||
@GetMapping(value = "/stationReject")
|
||||
public Result<String> stationReject(@RequestParam(name = "id", required = true) String id,
|
||||
@RequestParam(name = "rejectionReason", required = true) String rejectionReason) {
|
||||
|
||||
EmergencySeriousDisease emergencySeriousDisease = emergencySeriousDiseaseService.getById(id);
|
||||
|
||||
if (emergencySeriousDisease == null) {
|
||||
return Result.OK("该数据不存在!");
|
||||
}
|
||||
|
||||
String state = emergencySeriousDisease.getState();
|
||||
if (!"2".equals(state)) {
|
||||
return Result.OK("该订单暂时无法驳回!");
|
||||
}
|
||||
emergencySeriousDisease.setStationRejectionReason(rejectionReason);
|
||||
emergencySeriousDisease.setStationRejectionTime(new Date());
|
||||
emergencySeriousDisease.setState("7");
|
||||
emergencySeriousDiseaseService.updateById(emergencySeriousDisease);
|
||||
|
||||
return Result.OK("驳回成功!");
|
||||
}
|
||||
|
||||
|
||||
@Operation(summary = "预约看病列表 超时处理", description = "预约看病列表 超时处理")
|
||||
@GetMapping(value = "/expireEmergencySeriousDiseaseList")
|
||||
public Result<String> expireEmergencySeriousDiseaseList() {
|
||||
|
||||
emergencySeriousDiseaseService.expireEmergencySeriousDiseaseList();
|
||||
return Result.ok();
|
||||
|
||||
}
|
||||
}
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
package com.renkang.emergency.api.controller;
|
||||
|
||||
import com.renkang.emergency.bean.request.ZiYunData;
|
||||
import com.renkang.emergency.service.IZyAmbulanceDataService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* @author Jiang Shunzhi
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/api/ambulance")
|
||||
@Tag(name = "救护车")
|
||||
public class ZiYunController {
|
||||
|
||||
@Autowired
|
||||
private IZyAmbulanceDataService ambulanceDataService;
|
||||
|
||||
@Operation(description = "救护车数据推送")
|
||||
@PostMapping("/info/push")
|
||||
@RequiresPermissions("emergency:ambulance:data:push")
|
||||
public Result<Boolean> infoPush(@RequestBody ZiYunData data) {
|
||||
return Result.ok(ambulanceDataService.infoPush(data));
|
||||
}
|
||||
|
||||
}
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
package com.renkang.emergency.api.service;
|
||||
|
||||
import com.renkang.emergency.bean.response.AedGeo;
|
||||
import com.renkang.emergency.entity.AedLatest;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Junqiang Zhu
|
||||
* @date 2023-12-12 15:54
|
||||
*/
|
||||
public interface AedApiService {
|
||||
void addAedLatest(AedLatest aedLatest);
|
||||
List<AedGeo> nearbyAed(BigDecimal longitude, BigDecimal latitude, Double radiusRange, Integer aedNum);
|
||||
}
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
package com.renkang.emergency.api.service;
|
||||
|
||||
import com.renkang.emergency.bean.request.CallBack;
|
||||
import com.renkang.emergency.bean.request.EmergencyCall;
|
||||
import com.renkang.emergency.bean.request.SingleParam;
|
||||
import com.renkang.emergency.bean.response.Call;
|
||||
import com.renkang.emergency.bean.response.Stat;
|
||||
import com.renkang.emergency.bean.response.StatSimple;
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author Junqiang Zhu
|
||||
* @date 2023-04-26 10:47
|
||||
*/
|
||||
public interface EmergencyApiService {
|
||||
String call(EmergencyCall emergencyCall);
|
||||
|
||||
boolean callBack(CallBack callBack);
|
||||
|
||||
boolean sessionOver(SingleParam<String> sessionId);
|
||||
|
||||
Stat stat(String personType);
|
||||
|
||||
Call officerOnDuty();
|
||||
|
||||
StatSimple statSimple();
|
||||
|
||||
Result<Map<String, Object>> createGroupMag(String name, String longitude, String latitude, String type);
|
||||
|
||||
Result<Map<String, Object>> createGroupMagIntervene(String name, String longitude, String latitude, String type);
|
||||
|
||||
List<String> fixOrderStatus();
|
||||
|
||||
}
|
||||
+73
@@ -0,0 +1,73 @@
|
||||
package com.renkang.emergency.api.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.renkang.emergency.bean.request.ListSession;
|
||||
import com.renkang.emergency.bean.request.OrderEvaluation;
|
||||
import com.renkang.emergency.bean.request.SingleParam;
|
||||
import com.renkang.emergency.bean.request.StationUpdateOrder;
|
||||
import com.renkang.emergency.bean.response.InitUserOrder;
|
||||
import com.renkang.emergency.bean.response.OrderThrough;
|
||||
import com.renkang.emergency.bean.response.SessionOrderUser;
|
||||
import com.renkang.emergency.entity.Order;
|
||||
import com.renkang.emergency.entity.OrderDetail;
|
||||
import com.renkang.emergency.entity.OrderSendRecord;
|
||||
import com.renkang.emergency.entity.TblHelpCentorVo;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Junqiang Zhu
|
||||
* @date 2023-04-27 10:34
|
||||
*/
|
||||
public interface EmergencyOrderApiService {
|
||||
IPage<InitUserOrder> initUserOrderPage(Page<Order> page);
|
||||
|
||||
IPage<Order> page(Page<Order> page, String orderType, String personType);
|
||||
|
||||
/**
|
||||
* 订单详情
|
||||
*/
|
||||
OrderDetail detail(String orderId);
|
||||
|
||||
/**
|
||||
* 修改被救助人
|
||||
*/
|
||||
void updateSalvageUser(Order order);
|
||||
|
||||
/**
|
||||
* 拒绝派单
|
||||
*/
|
||||
void rejectionOfOrder(SingleParam<String> singleParam);
|
||||
|
||||
/**
|
||||
* 补充小结
|
||||
*/
|
||||
void fillSummary(OrderDetail detail);
|
||||
|
||||
void stationSendOrder(Order order);
|
||||
|
||||
void orderOver(Order order);
|
||||
|
||||
void replenishOrder(Order order);
|
||||
|
||||
Order getOrderBySessionId(String sessionId);
|
||||
|
||||
void acceptOrRejectOrder(StationUpdateOrder stationUpdateOrder);
|
||||
|
||||
IPage<OrderSendRecord> pageOrderSend(Page<OrderSendRecord> page, String orderStatus);
|
||||
|
||||
void evaluation(OrderEvaluation orderEvaluation);
|
||||
|
||||
String salvageOpinion(String sessionId);
|
||||
|
||||
void addSalvageOpinion(Order order);
|
||||
|
||||
List<SessionOrderUser> listSession(ListSession value);
|
||||
|
||||
OrderThrough orderThrough(String id);
|
||||
|
||||
Order getOrderById(String id);
|
||||
|
||||
List<TblHelpCentorVo> getSicknessTypeStatistic(String sex, String depart);
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
package com.renkang.emergency.api.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.renkang.emergency.entity.OrderSendRecord;
|
||||
|
||||
/**
|
||||
* @author Junqiang Zhu
|
||||
* @date 2023-04-27 17:32
|
||||
*/
|
||||
public interface EmergencyOrderSendRecordApiService {
|
||||
IPage<OrderSendRecord> pageRecord(Page<OrderSendRecord> page, String orderId);
|
||||
}
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
package com.renkang.emergency.api.service;
|
||||
|
||||
import com.renkang.emergency.bean.response.ResourceHome;
|
||||
import com.renkang.emergency.entity.EmergencyResourceDO;
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Junqiang Zhu
|
||||
* @date 2023-04-25 13:07
|
||||
*/
|
||||
public interface EmergencyResourceApiService {
|
||||
ResourceHome listResourceByType(String type, Double longitude, Double latitude);
|
||||
|
||||
String sessionNow(String userId);
|
||||
|
||||
Result<List<EmergencyResourceDO>> selectHospitalList();
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
package com.renkang.emergency.api.service;
|
||||
|
||||
import com.renkang.emergency.bean.response.ScheduleRecordShow;
|
||||
|
||||
/**
|
||||
* @author Junqiang Zhu
|
||||
* @date 2023-04-25 13:07
|
||||
*/
|
||||
public interface EmergencyScheduleApiService {
|
||||
ScheduleRecordShow scheduleRecord(String year, String month, String userId);
|
||||
|
||||
ScheduleRecordShow scheduleShow(Integer year, Integer month, String userId);
|
||||
}
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
package com.renkang.emergency.api.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.renkang.emergency.entity.EmergencySeriousDisease;
|
||||
import com.renkang.emergency.entity.EmergencySeriousDiseaseDO;
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Description: 大病就医
|
||||
* @Author: jeecg-boot
|
||||
* @Date: 2023-04-23
|
||||
* @Version: V1.0
|
||||
*/
|
||||
public interface IEmergencySeriousDiseaseService extends IService<EmergencySeriousDisease> {
|
||||
|
||||
Result<String> appointmentSeeDoctor(EmergencySeriousDiseaseDO emergencySeriousDiseaseDO);
|
||||
|
||||
IPage<EmergencySeriousDisease> pageList(Page<EmergencySeriousDisease> page, EmergencySeriousDisease emergencySeriousDisease);
|
||||
|
||||
List<EmergencySeriousDiseaseDO> selectEmergencySeriousDiseaseListByState(Integer pageNo, Integer pageSize, String state);
|
||||
|
||||
void expireEmergencySeriousDiseaseList();
|
||||
|
||||
int selectEmergencyExist(String userId);
|
||||
}
|
||||
+331
@@ -0,0 +1,331 @@
|
||||
package com.renkang.emergency.api.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.renkang.emergency.api.service.AedApiService;
|
||||
import com.renkang.emergency.bean.response.AedGeo;
|
||||
import com.renkang.emergency.entity.Aed;
|
||||
import com.renkang.emergency.entity.AedLatest;
|
||||
import com.renkang.emergency.entity.AedWarnInfo;
|
||||
import com.renkang.emergency.enums.AedEnumUtil;
|
||||
import com.renkang.emergency.manager.AedManger;
|
||||
import com.renkang.emergency.mapper.AedLatestMapper;
|
||||
import com.renkang.emergency.mapper.AedMapper;
|
||||
import com.renkang.emergency.service.IAedWarnInfoService;
|
||||
import com.renkang.emergency.util.DateUtils;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.jeecg.global.GlobalUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.core.task.AsyncTaskExecutor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Junqiang Zhu
|
||||
* @date 2023-12-12 15:54
|
||||
*/
|
||||
@Service
|
||||
@Slf4j
|
||||
public class AedApiServiceImpl implements AedApiService {
|
||||
|
||||
@Autowired
|
||||
private AedLatestMapper aedLatestMapper;
|
||||
@Autowired
|
||||
private AsyncTaskExecutor taskExecutor;
|
||||
@Autowired
|
||||
private AedManger aedManger;
|
||||
@Autowired
|
||||
private AedMapper aedMapper;
|
||||
@Autowired
|
||||
private IAedWarnInfoService aedWarnInfoService;
|
||||
|
||||
@Override
|
||||
public void addAedLatest(AedLatest latest) {
|
||||
// 最新数据
|
||||
aedLatestMapper.insert(latest);
|
||||
// 修改aed基础信息
|
||||
taskExecutor.execute(() -> updateAedInfo(latest));
|
||||
// 异常数据处理
|
||||
taskExecutor.execute(() -> handleWarnInfo(latest));
|
||||
}
|
||||
|
||||
private void updateAedInfo(AedLatest latest) {
|
||||
if (StrUtil.isBlank(latest.getAedModel()) || StrUtil.isBlank(latest.getAedNo())) {
|
||||
return;
|
||||
}
|
||||
|
||||
LambdaUpdateWrapper<Aed> updateWrapper = new LambdaUpdateWrapper<>();
|
||||
updateWrapper.eq(Aed::getHostModel, latest.getAedModel())
|
||||
.eq(Aed::getHostSerialNum, latest.getAedNo());
|
||||
|
||||
// 电压
|
||||
if (StrUtil.isNotBlank(latest.getRouterVoltage())) {
|
||||
updateWrapper.set(Aed::getBatteryVoltage, latest.getRouterVoltage());
|
||||
}
|
||||
// 有效期
|
||||
if (ObjectUtil.isNotNull(latest.getPadExpiration())) {
|
||||
updateWrapper.set(Aed::getElectrodeSheetValidTime, latest.getPadExpiration());
|
||||
}
|
||||
// 路由器型号
|
||||
if (StrUtil.isNotBlank(latest.getRouterModel())) {
|
||||
updateWrapper.set(Aed::getRouterModel, latest.getRouterModel());
|
||||
}
|
||||
// 路由器序列号
|
||||
if (StrUtil.isNotBlank(latest.getRouterSerialNo())) {
|
||||
updateWrapper.set(Aed::getRouterSerialNum, latest.getRouterSerialNo());
|
||||
}
|
||||
|
||||
// 自检查状态
|
||||
handleStatusCheck(latest, updateWrapper);
|
||||
// 电极片状态
|
||||
handleStatusElectrodeSheet(latest, updateWrapper);
|
||||
// 电池状态
|
||||
handleStatusBattery(latest, updateWrapper);
|
||||
// 路由状态
|
||||
handleStatusRouter(latest, updateWrapper);
|
||||
|
||||
// 修改数据
|
||||
aedMapper.update(null, updateWrapper);
|
||||
}
|
||||
|
||||
private void handleStatusRouter(AedLatest latest, LambdaUpdateWrapper<Aed> updateWrapper) {
|
||||
if (latest == null || StrUtil.isBlank(latest.getRouterVoltage())) {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
BigDecimal data = new BigDecimal(latest.getRouterVoltage());
|
||||
if (data.compareTo(BigDecimal.valueOf(6.5)) < 0) {
|
||||
updateWrapper.set(Aed::getRouterStatus, AedEnumUtil.RouterPowerEnum.LOW.ordinal());
|
||||
} else {
|
||||
updateWrapper.set(Aed::getRouterStatus, AedEnumUtil.RouterPowerEnum.OK.ordinal());
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("路由电压状态解析错误", e);
|
||||
}
|
||||
}
|
||||
|
||||
private void handleStatusBattery(AedLatest latest, LambdaUpdateWrapper<Aed> updateWrapper) {
|
||||
if (latest == null || StrUtil.isBlank(latest.getBatteryPower())) {
|
||||
return;
|
||||
}
|
||||
String result = latest.getBatteryPower();
|
||||
try {
|
||||
String[] split = result.split("%");
|
||||
BigDecimal data = new BigDecimal(split[0]);
|
||||
if (data.compareTo(BigDecimal.valueOf(5)) < 0) {
|
||||
updateWrapper.set(Aed::getBatteryStatus, AedEnumUtil.BatteryPowerEnum.CHANGE.ordinal());
|
||||
} else if (data.compareTo(BigDecimal.valueOf(25)) < 0) {
|
||||
updateWrapper.set(Aed::getBatteryStatus, AedEnumUtil.BatteryPowerEnum.LOW.ordinal());
|
||||
} else {
|
||||
updateWrapper.set(Aed::getBatteryStatus, AedEnumUtil.BatteryPowerEnum.OK.ordinal());
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("aed组网数据推送解析错误{电量状态解析}", e);
|
||||
}
|
||||
}
|
||||
|
||||
private void handleStatusElectrodeSheet(AedLatest latest, LambdaUpdateWrapper<Aed> updateWrapper) {
|
||||
if (latest == null || ObjectUtil.isNull(latest.getPadExpiration())) {
|
||||
return;
|
||||
}
|
||||
Date padExpiration = latest.getPadExpiration();
|
||||
int date = DateUtils.numOfMonthsThatDiffer(padExpiration, new Date());
|
||||
if (date <= 0) {
|
||||
updateWrapper.set(Aed::getElectrodeSheetStatus, AedEnumUtil.ExpiredPowerEnum.EXPIRED.ordinal());
|
||||
} else if (date == 1) {
|
||||
updateWrapper.set(Aed::getElectrodeSheetStatus, AedEnumUtil.ExpiredPowerEnum.APPROACH.ordinal());
|
||||
} else {
|
||||
updateWrapper.set(Aed::getElectrodeSheetStatus, AedEnumUtil.ExpiredPowerEnum.OK.ordinal());
|
||||
}
|
||||
}
|
||||
|
||||
private void handleStatusCheck(AedLatest latest, LambdaUpdateWrapper<Aed> updateWrapper) {
|
||||
if (latest == null || StrUtil.isBlank(latest.getAedStatus())) {
|
||||
return;
|
||||
}
|
||||
String aedStatus = latest.getAedStatus();
|
||||
if ("00000000".equals(aedStatus)) {
|
||||
updateWrapper.set(Aed::getCheckStatus, AedEnumUtil.CheckEnum.OK.ordinal());
|
||||
} else if ("00010001".equals(aedStatus)) {
|
||||
updateWrapper.set(Aed::getCheckStatus, AedEnumUtil.CheckEnum.CANNOT_FIND.ordinal());
|
||||
} else if ("00010002".equals(aedStatus)) {
|
||||
updateWrapper.set(Aed::getCheckStatus, AedEnumUtil.CheckEnum.CANNOT_CONNECT.ordinal());
|
||||
} else if ("00010005".equals(aedStatus)) {
|
||||
updateWrapper.set(Aed::getCheckStatus, AedEnumUtil.CheckEnum.CANNOT_GET.ordinal());
|
||||
}
|
||||
}
|
||||
|
||||
private void handleWarnInfo(AedLatest aedLatest) {
|
||||
List<AedWarnInfo> list = new ArrayList<>();
|
||||
// 电池电量
|
||||
handleBatteryPower(list, aedLatest);
|
||||
// 路由电量
|
||||
handleRoutingPower(list, aedLatest);
|
||||
// 过期
|
||||
handleIsExpired(list, aedLatest);
|
||||
// 自检结果
|
||||
handleCheck(list, aedLatest);
|
||||
// 电极片
|
||||
handleElectrodeSheet(list, aedLatest);
|
||||
// 温度
|
||||
handleTemp(list, aedLatest);
|
||||
|
||||
// 数据插入
|
||||
if (CollectionUtil.isNotEmpty(list)) {
|
||||
aedWarnInfoService.saveBatch(list);
|
||||
}
|
||||
}
|
||||
|
||||
private void handleTemp(List<AedWarnInfo> list, AedLatest latest) {
|
||||
}
|
||||
|
||||
private void handleElectrodeSheet(List<AedWarnInfo> list, AedLatest latest) {
|
||||
}
|
||||
|
||||
private void handleCheck(List<AedWarnInfo> list, AedLatest latest) {
|
||||
if (latest == null || list == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
String module = String.valueOf(AedEnumUtil.WarnTypeEnum.CHECK.ordinal());
|
||||
AedWarnInfo aedWarnInfo = get(latest, module);
|
||||
aedWarnInfo.setValue(latest.getAedStatus());
|
||||
if (StrUtil.isBlank(latest.getAedStatus())) {
|
||||
aedWarnInfo.setType(String.valueOf(AedEnumUtil.CheckEnum.CANNOT_FIND.ordinal()));
|
||||
aedWarnInfo.setWarnDesc(String.format("{%s}设备自检失败,请检查", new Date().getTime()));
|
||||
list.add(aedWarnInfo);
|
||||
return;
|
||||
}
|
||||
|
||||
// 没有找到
|
||||
if ("00010001".equals(latest.getAedStatus())) {
|
||||
aedWarnInfo.setType(String.valueOf(AedEnumUtil.CheckEnum.CANNOT_FIND.ordinal()));
|
||||
aedWarnInfo.setWarnDesc(String.format("{%s}没有找到AED", new Date().getTime()));
|
||||
list.add(aedWarnInfo);
|
||||
}
|
||||
// 无法连接
|
||||
if ("00010002".equals(latest.getAedStatus())) {
|
||||
aedWarnInfo.setType(String.valueOf(AedEnumUtil.CheckEnum.CANNOT_CONNECT.ordinal()));
|
||||
aedWarnInfo.setWarnDesc(String.format("{%s}无法连接AED", new Date().getTime()));
|
||||
list.add(aedWarnInfo);
|
||||
}
|
||||
// 无法获取自检信息
|
||||
if ("00010005".equals(latest.getAedStatus())) {
|
||||
aedWarnInfo.setType(String.valueOf(AedEnumUtil.CheckEnum.CANNOT_GET.ordinal()));
|
||||
aedWarnInfo.setWarnDesc(String.format("{%s}无法获取自检信息", new Date().getTime()));
|
||||
list.add(aedWarnInfo);
|
||||
}
|
||||
}
|
||||
|
||||
private void handleIsExpired(List<AedWarnInfo> list, AedLatest latest) {
|
||||
if (latest == null || list == null) {
|
||||
return;
|
||||
}
|
||||
if (ObjectUtil.isNull(latest.getPadExpiration())) {
|
||||
return;
|
||||
}
|
||||
|
||||
String module = String.valueOf(AedEnumUtil.WarnTypeEnum.EXPIRED.ordinal());
|
||||
AedWarnInfo aedWarnInfo = get(latest, module);
|
||||
int month = DateUtils.numOfMonthsThatDiffer(latest.getPadExpiration(), new Date());
|
||||
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM");
|
||||
String format = simpleDateFormat.format(latest.getPadExpiration());
|
||||
aedWarnInfo.setValue(format);
|
||||
// 已过期
|
||||
if (month <= 0) {
|
||||
aedWarnInfo.setType(String.valueOf(AedEnumUtil.ExpiredPowerEnum.EXPIRED.ordinal()));
|
||||
list.add(aedWarnInfo);
|
||||
}
|
||||
// 快过期
|
||||
if (month == 1) {
|
||||
aedWarnInfo.setType(String.valueOf(AedEnumUtil.ExpiredPowerEnum.APPROACH.ordinal()));
|
||||
list.add(aedWarnInfo);
|
||||
}
|
||||
}
|
||||
|
||||
private void handleRoutingPower(List<AedWarnInfo> list, AedLatest latest) {
|
||||
if (latest == null || list == null) {
|
||||
return;
|
||||
}
|
||||
if (StrUtil.isBlank(latest.getRouterVoltage())) {
|
||||
return;
|
||||
}
|
||||
String module = String.valueOf(AedEnumUtil.WarnTypeEnum.ROUTER.ordinal());
|
||||
AedWarnInfo aedWarnInfo = get(latest, module);
|
||||
aedWarnInfo.setValue(latest.getRouterVoltage());
|
||||
try {
|
||||
BigDecimal data = new BigDecimal(latest.getRouterVoltage());
|
||||
if (data.compareTo(BigDecimal.valueOf(6.5)) < 0) {
|
||||
aedWarnInfo.setType(String.valueOf(AedEnumUtil.RouterPowerEnum.LOW.ordinal()));
|
||||
aedWarnInfo.setWarnDesc("路由器电压低于6.5v");
|
||||
list.add(aedWarnInfo);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("aed组网数据推送解析错误{路由电压}", e);
|
||||
}
|
||||
}
|
||||
|
||||
private void handleBatteryPower(List<AedWarnInfo> list, AedLatest latest) {
|
||||
if (latest == null || list == null) {
|
||||
return;
|
||||
}
|
||||
if (StrUtil.isBlank(latest.getBatteryPower())) {
|
||||
return;
|
||||
}
|
||||
String module = String.valueOf(AedEnumUtil.WarnTypeEnum.BATTERY.ordinal());
|
||||
AedWarnInfo aedWarnInfo = get(latest, module);
|
||||
aedWarnInfo.setValue(latest.getBatteryPower());
|
||||
try {
|
||||
String[] split = latest.getBatteryPower().split("%");
|
||||
BigDecimal data = new BigDecimal(split[0]);
|
||||
if (data.compareTo(BigDecimal.valueOf(5)) < 0) {
|
||||
aedWarnInfo.setType(String.valueOf(AedEnumUtil.BatteryPowerEnum.CHANGE.ordinal()));
|
||||
list.add(aedWarnInfo);
|
||||
} else if (data.compareTo(BigDecimal.valueOf(25)) < 0) {
|
||||
aedWarnInfo.setType(String.valueOf(AedEnumUtil.BatteryPowerEnum.LOW.ordinal()));
|
||||
list.add(aedWarnInfo);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("aed组网数据推送解析错误{电量}", e);
|
||||
}
|
||||
}
|
||||
|
||||
private AedWarnInfo get(AedLatest latest, String module) {
|
||||
AedWarnInfo aedWarnInfo = new AedWarnInfo();
|
||||
aedWarnInfo.setAedModel(latest.getAedModel());
|
||||
aedWarnInfo.setAedNo(latest.getAedNo());
|
||||
aedWarnInfo.setLatestId(latest.getId());
|
||||
aedWarnInfo.setModule(module);
|
||||
aedWarnInfo.setWarnStatus("0");
|
||||
aedWarnInfo.setCreateTime(new Date());
|
||||
return aedWarnInfo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<AedGeo> nearbyAed(BigDecimal longitude, BigDecimal latitude, Double radiusRange, Integer aedNum) {
|
||||
if (longitude != null && latitude != null) {
|
||||
return aedManger.geoSearch(longitude, latitude, radiusRange, aedNum, "");
|
||||
}
|
||||
return aedAll();
|
||||
}
|
||||
|
||||
private List<AedGeo> aedAll() {
|
||||
LambdaQueryWrapper<Aed> queryWrapper = new LambdaQueryWrapper<>();
|
||||
List<Aed> list = aedMapper.selectList(queryWrapper);
|
||||
if (CollectionUtil.isEmpty(list)) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
List<AedGeo> result = new ArrayList<>();
|
||||
GlobalUtils.convertList(list, result, AedGeo.class);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
+945
@@ -0,0 +1,945 @@
|
||||
package com.renkang.emergency.api.service.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.renkang.emergency.api.service.EmergencyApiService;
|
||||
import com.renkang.emergency.bean.request.CallBack;
|
||||
import com.renkang.emergency.bean.request.EmergencyCall;
|
||||
import com.renkang.emergency.bean.request.EmergencySocket;
|
||||
import com.renkang.emergency.bean.request.SingleParam;
|
||||
import com.renkang.emergency.bean.response.*;
|
||||
import com.renkang.emergency.constant.EmergencyConstants;
|
||||
import com.renkang.emergency.entity.*;
|
||||
import com.renkang.emergency.manager.EmergencyCloudManager;
|
||||
import com.renkang.emergency.mapper.*;
|
||||
import com.renkang.emergency.service.IEmergencyCenterService;
|
||||
import com.renkang.emergency.service.ISysNotifySmsPhoneService;
|
||||
import com.renkang.emergency.service.ITblAmbulanceGpsService;
|
||||
import com.renkang.emergency.util.CodeConstant;
|
||||
import com.renkang.emergency.util.DateUtils;
|
||||
import com.renkang.emergency.websocket.WebSocket;
|
||||
import com.renkang.im.api.IMHelloApi;
|
||||
import com.renkang.im.entity.ConSessionRequestDO;
|
||||
import com.renkang.im.entity.ImGroupMsgTextReqDO;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.shiro.SecurityUtils;
|
||||
import org.jeecg.bean.request.ListUser;
|
||||
import org.jeecg.common.api.dto.message.BusTemplateMessageDTO;
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
import org.jeecg.common.constant.CommonConstant;
|
||||
import org.jeecg.common.system.api.ISysBaseAPI;
|
||||
import org.jeecg.common.system.vo.LoginUser;
|
||||
import org.jeecg.common.system.vo.LoginUserNew;
|
||||
import org.jeecg.common.system.vo.SysDepartModel;
|
||||
import org.jeecg.global.GlobalUtils;
|
||||
import org.jeecg.modules.manager.ISysCache;
|
||||
import org.jeecg.modules.system.entity.SysDepart;
|
||||
import org.jeecg.modules.system.entity.SysUser;
|
||||
import org.parboiled.common.StringUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.core.task.AsyncTaskExecutor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.text.DateFormat;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author Junqiang Zhu
|
||||
* @date 2023-04-25 13:07
|
||||
*/
|
||||
@Slf4j
|
||||
@Service("emergencyApiService")
|
||||
public class EmergencyApiServiceImpl implements EmergencyApiService {
|
||||
private static final Logger logger = LoggerFactory.getLogger(EmergencyApiServiceImpl.class);
|
||||
@Autowired
|
||||
private OrderMapper orderMapper;
|
||||
@Autowired
|
||||
private OrderInterveneMapper orderInterveneMapper;
|
||||
@Autowired
|
||||
private EmergencyCloudManager emergencyCloudManager;
|
||||
@Autowired
|
||||
private ScheduleCustomMapper scheduleCustomMapper;
|
||||
@Autowired
|
||||
private ScheduleDefaultMapper scheduleDefaultMapper;
|
||||
@Autowired
|
||||
private EmergencySeriousDiseaseMapper emergencySeriousDiseaseMapper;
|
||||
|
||||
@Autowired
|
||||
private EmergencyResourceApiServiceImpl emergencyResourceApiServiceImpl;
|
||||
|
||||
@Autowired
|
||||
private ITblAmbulanceGpsService tblAmbulanceGpsService;
|
||||
|
||||
@Resource
|
||||
private IEmergencyCenterService centerService;
|
||||
|
||||
@Autowired
|
||||
private IMHelloApi iMHelloApi;
|
||||
|
||||
@Autowired
|
||||
private ISysBaseAPI sysBaseAPI;
|
||||
|
||||
@Autowired
|
||||
private ISysCache sysCache;
|
||||
|
||||
@Autowired
|
||||
private WebSocket webSocket;
|
||||
@Resource
|
||||
private ISysNotifySmsPhoneService sysNotifySmsPhoneService;
|
||||
@Autowired
|
||||
private AsyncTaskExecutor asyncTaskExecutor;
|
||||
@Autowired
|
||||
private EmergencyCenterMapper emergencyCenterMapper;
|
||||
@Autowired
|
||||
private EmergencySchedulesNewItemMapper emergencySchedulesNewItemMapper;
|
||||
@Autowired
|
||||
private LargeScreenImpl largeScreen;
|
||||
|
||||
|
||||
@Override
|
||||
public String call(EmergencyCall emergencyCall) {
|
||||
// 订单
|
||||
return insertOrder(emergencyCall);
|
||||
}
|
||||
|
||||
public String callIntervene(EmergencyCall emergencyCall, String type) {
|
||||
// 订单
|
||||
return insertOrderIntervene(emergencyCall.getCallType(), emergencyCall.getResourceId(),
|
||||
emergencyCall.getLongitude(), emergencyCall.getLatitude(), type);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean callBack(CallBack callBack) {
|
||||
|
||||
// 获取用户集合
|
||||
Map<String, LoginUserNew> map = emergencyCloudManager.listUser(Arrays.asList(callBack.getOperationUserId(), callBack.getMajorUserId()));
|
||||
|
||||
LoginUserNew operationUser = map.get(callBack.getOperationUserId());
|
||||
LoginUserNew majorUser = map.get(callBack.getMajorUserId());
|
||||
|
||||
Date now = new Date();
|
||||
Order order = new Order();
|
||||
order.setId(callBack.getOrderId());
|
||||
order.setSessionId(callBack.getSessionId());
|
||||
order.setSessionNow(true);
|
||||
|
||||
order.setOperationUserId(callBack.getOperationUserId());
|
||||
order.setOperationUserName(handleNull(operationUser).getRealname());
|
||||
order.setOperationUserSex(ifNullReturnEmpty(handleNull(operationUser).getSex()));
|
||||
order.setOperationUserMobile(handleNull(operationUser).getPhone());
|
||||
order.setOperationUserAvatar(handleNull(operationUser).getAvatar());
|
||||
order.setOperationResponseTime(now);
|
||||
|
||||
order.setMajorUserId(callBack.getMajorUserId());
|
||||
order.setMajorUserName(handleNull(majorUser).getRealname());
|
||||
order.setMajorUserSex(ifNullReturnEmpty(handleNull(majorUser).getSex()));
|
||||
order.setMajorUserMobile(handleNull(majorUser).getPhone());
|
||||
order.setMajorUserAvatar(handleNull(majorUser).getAvatar());
|
||||
order.setMajorResponseTime(now);
|
||||
|
||||
order.setOrderStatus(EmergencyConstants.ORDER_STATUS_1_NEW);
|
||||
order.setIsDispatch(EmergencyConstants.ORDER_SEND_STATUS_1);
|
||||
|
||||
// 应急中心id
|
||||
order.setCenterId(callBack.getCenterId());
|
||||
|
||||
int result = orderMapper.updateById(order);
|
||||
|
||||
return result == 1;
|
||||
}
|
||||
|
||||
private void sendInitMsg(String groupId, String callType, String userId) {
|
||||
asyncTaskExecutor.execute(() -> {
|
||||
try {
|
||||
List<LoginUserNew> loginUserNews = sysBaseAPI.listUserByIds(new ListUser(Collections.singletonList(userId)));
|
||||
LoginUserNew majorUser = loginUserNews.isEmpty() ? null : loginUserNews.get(0);
|
||||
ImGroupMsgTextReqDO req = new ImGroupMsgTextReqDO();
|
||||
req.setGroupId(groupId);
|
||||
req.setFromUserId("administrator");
|
||||
req.setContent(
|
||||
handleNull(majorUser).getRealname() +
|
||||
"(" + handleNull(majorUser).getPhone() + ")" +
|
||||
getCallName(callType) +
|
||||
"已发起,请相关人员及时响应"
|
||||
);
|
||||
iMHelloApi.sendGroupMsgTextNew(req);
|
||||
} catch (Exception e) {
|
||||
log.error("发送消息失败", e);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private String getCallName(String callType) {
|
||||
switch (callType) {
|
||||
case "0":
|
||||
return "120求助";
|
||||
case "1":
|
||||
return "APP应急求助";
|
||||
case "2":
|
||||
return "急救联动";
|
||||
default:
|
||||
return "应急求助";
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean sessionOver(SingleParam<String> sessionId) {
|
||||
LambdaUpdateWrapper<Order> updateWrapper = new LambdaUpdateWrapper<>();
|
||||
updateWrapper.eq(Order::getSessionId, sessionId.getParam())
|
||||
.set(Order::getSessionNow, EmergencyConstants.SESSION_NOW_0)
|
||||
.set(Order::getSessionOverTime, new Date());
|
||||
int update = orderMapper.update(null, updateWrapper);
|
||||
return update == 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Stat stat(String personType) {
|
||||
LoginUser loginUser = GlobalUtils.getLoginUser();
|
||||
String userId = loginUser.getId();
|
||||
Stat stat = new Stat();
|
||||
stat.setCompletionRate(getCompletionRate(userId, personType));
|
||||
stat.setTotalNum(getTotalNum(userId, personType));
|
||||
stat.setDutyTeamNum(getDutyTeamNum());
|
||||
stat.setTimelinessRate(getTimelinessRate(userId));
|
||||
return stat;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Call officerOnDuty() {
|
||||
CenterUser onDutyUser = findOnDutyUser(false);
|
||||
Call onDutyPerson = convertUser(onDutyUser);
|
||||
List<EmergencyUser> operation = findIdleUsers(onDutyPerson.getOperators(), EmergencyConstants.OPERATION_NEW);
|
||||
List<EmergencyUser> major = findIdleUsers(onDutyPerson.getMajors(), EmergencyConstants.MAJOR_NEW);
|
||||
|
||||
onDutyPerson.setMajors(major);
|
||||
onDutyPerson.setOperators(operation);
|
||||
|
||||
return onDutyPerson;
|
||||
}
|
||||
|
||||
private CenterUser findOnDutyUser(boolean isDefaultCenter) {
|
||||
EmergencyCenter emergencyCenter = getEmergencyCenter(isDefaultCenter);
|
||||
CenterUser centerUser = new CenterUser();
|
||||
if (emergencyCenter == null) {
|
||||
centerUser.setCenterId(null);
|
||||
centerUser.setCenterUsers(Collections.emptyList());
|
||||
return centerUser;
|
||||
}
|
||||
|
||||
String today = DateUtil.today();
|
||||
List<EmergencyUser> emergencyUsers = emergencySchedulesNewItemMapper.onDutyUser(emergencyCenter.getId(), today);
|
||||
if (CollUtil.isNotEmpty(emergencyUsers)) {
|
||||
centerUser.setCenterId(emergencyCenter.getId());
|
||||
centerUser.setCenterUsers(emergencyUsers);
|
||||
return centerUser;
|
||||
}
|
||||
|
||||
// 默认中心也没有数据 返回空
|
||||
if (emergencyCenter.getDefaultCenter()) {
|
||||
centerUser.setCenterId(null);
|
||||
centerUser.setCenterUsers(Collections.emptyList());
|
||||
return centerUser;
|
||||
}
|
||||
|
||||
return findOnDutyUser(true);
|
||||
}
|
||||
|
||||
private Call convertUser(CenterUser onDutyUser) {
|
||||
Call call = new Call();
|
||||
if (onDutyUser == null || CollUtil.isEmpty(onDutyUser.getCenterUsers())) {
|
||||
call.setOperators(Collections.emptyList());
|
||||
call.setMajors(Collections.emptyList());
|
||||
return call;
|
||||
}
|
||||
List<EmergencyUser> list = onDutyUser.getCenterUsers();
|
||||
List<EmergencyUser> operations = list.stream().filter(f -> EmergencyConstants.OPERATION_NEW.equals(f.getUserType())).collect(Collectors.toList());
|
||||
List<EmergencyUser> majors = list.stream().filter(f -> EmergencyConstants.MAJOR_NEW.equals(f.getUserType())).collect(Collectors.toList());
|
||||
|
||||
call.setOperators(operations);
|
||||
call.setMajors(majors);
|
||||
call.setCenterId(onDutyUser.getCenterId());
|
||||
return call;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前登录用户可使用的中心
|
||||
*
|
||||
* @param isDefaultCenter 是否拉取默认中心
|
||||
* @return 中心id
|
||||
*/
|
||||
private EmergencyCenter getEmergencyCenter(boolean isDefaultCenter) {
|
||||
|
||||
LambdaQueryWrapper<EmergencyCenter> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.select(EmergencyCenter::getId,
|
||||
EmergencyCenter::getServiceScope,
|
||||
EmergencyCenter::getDefaultCenter)
|
||||
.eq(EmergencyCenter::getStatus, 0); // 0:开启 1:关闭
|
||||
|
||||
LoginUser loginUser = GlobalUtils.getLoginUser();
|
||||
String orgCode = loginUser.getOrgCode();
|
||||
if (StrUtil.isBlank(orgCode) || isDefaultCenter) {
|
||||
queryWrapper.eq(EmergencyCenter::getDefaultCenter, true);
|
||||
}
|
||||
|
||||
// 所有的应急中心
|
||||
List<EmergencyCenter> emergencyCenters = emergencyCenterMapper.selectList(queryWrapper);
|
||||
if (StrUtil.isBlank(orgCode) || isDefaultCenter) {
|
||||
if (CollUtil.isEmpty(emergencyCenters)) {
|
||||
return null;
|
||||
} else {
|
||||
return emergencyCenters.get(0);
|
||||
}
|
||||
}
|
||||
|
||||
List<EmergencyCenter> collect = emergencyCenters.stream()
|
||||
.peek(center -> {
|
||||
if (StrUtil.isNotBlank(center.getServiceScope())) {
|
||||
try {
|
||||
String[] split = center.getServiceScope().split(",");
|
||||
center.setServiceScopeList(Arrays.asList(split));
|
||||
} catch (Exception e) {
|
||||
center.setServiceScopeList(Collections.emptyList());
|
||||
}
|
||||
}
|
||||
})
|
||||
.filter(center -> center.getServiceScopeList().stream().anyMatch(orgCode::startsWith))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
if (CollUtil.isNotEmpty(collect)) {
|
||||
return collect.get(0);
|
||||
}
|
||||
|
||||
// 默认中心用作兜底
|
||||
List<EmergencyCenter> defaultCenter = emergencyCenters.stream()
|
||||
.filter(EmergencyCenter::getDefaultCenter)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
if (CollUtil.isEmpty(defaultCenter)) {
|
||||
return null;
|
||||
}
|
||||
return defaultCenter.get(0);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public StatSimple statSimple() {
|
||||
LoginUser loginUser = GlobalUtils.getLoginUser();
|
||||
String userId = loginUser.getId();
|
||||
StatSimple simple = new StatSimple();
|
||||
simple.setEmeNum(getEmeResNum(userId));
|
||||
simple.setEmeResRate(getEmeResRate(userId));
|
||||
simple.setSeriousNum(getSeriousNum(userId));
|
||||
simple.setSeriousRate(getSeriousRate(userId));
|
||||
return simple;
|
||||
}
|
||||
|
||||
|
||||
private Integer getEmeResNum(String userId) {
|
||||
if (StrUtil.isBlank(userId)) {
|
||||
return 0;
|
||||
}
|
||||
LambdaQueryWrapper<Order> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(Order::getSessionNow, true)
|
||||
.eq(Order::getOperationUserId, userId)
|
||||
.eq(Order::getStatus, CommonConstant.STATUS_1)
|
||||
.eq(Order::getDelFlag, CommonConstant.DEL_FLAG_0);
|
||||
Long aLong = orderMapper.selectCount(queryWrapper);
|
||||
return aLong.intValue();
|
||||
}
|
||||
|
||||
private BigDecimal getEmeResRate(String userId) {
|
||||
if (StrUtil.isBlank(userId)) {
|
||||
return BigDecimal.ZERO;
|
||||
}
|
||||
|
||||
LambdaQueryWrapper<Order> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(Order::getOperationUserId, userId)
|
||||
.eq(Order::getStatus, CommonConstant.STATUS_1)
|
||||
.eq(Order::getDelFlag, CommonConstant.DEL_FLAG_0);
|
||||
List<Order> orders = orderMapper.selectList(queryWrapper);
|
||||
|
||||
if (CollectionUtils.isEmpty(orders)) {
|
||||
return BigDecimal.ZERO;
|
||||
}
|
||||
|
||||
long count = orders.stream().filter(order -> {
|
||||
// 响应时间小于发起时间两分钟
|
||||
return DateUtils.ltFixedMinute(order.getCreateTime(), order.getOperationResponseTime(), 2);
|
||||
}).count();
|
||||
|
||||
return BigDecimal.valueOf(count)
|
||||
.divide(BigDecimal.valueOf(orders.size()), 2, RoundingMode.HALF_UP)
|
||||
.multiply(BigDecimal.valueOf(100));
|
||||
}
|
||||
|
||||
private BigDecimal getSeriousRate(String userId) {
|
||||
if (StrUtil.isBlank(userId)) {
|
||||
return BigDecimal.ZERO;
|
||||
}
|
||||
LambdaQueryWrapper<EmergencySeriousDisease> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.select(EmergencySeriousDisease::getId, EmergencySeriousDisease::getState)
|
||||
.eq(EmergencySeriousDisease::getOperatorId, userId)
|
||||
.eq(EmergencySeriousDisease::getStatus, CommonConstant.STATUS_1)
|
||||
.eq(EmergencySeriousDisease::getDelFlag, CommonConstant.DEL_FLAG_0);
|
||||
|
||||
List<EmergencySeriousDisease> list = emergencySeriousDiseaseMapper.selectList(queryWrapper);
|
||||
if (CollectionUtils.isEmpty(list)) {
|
||||
return BigDecimal.ZERO;
|
||||
}
|
||||
|
||||
int total = list.size();
|
||||
//1未派单 2已派单 3已接单 4已预约 5已完成 6操作人员驳回 7驻场人员驳回 8 超时未接单
|
||||
long wait = list.parallelStream().filter(f -> "1".equals(f.getState())).count();
|
||||
|
||||
return BigDecimal.valueOf(wait)
|
||||
.divide(BigDecimal.valueOf(total), 2, RoundingMode.HALF_UP)
|
||||
.multiply(BigDecimal.valueOf(100));
|
||||
}
|
||||
|
||||
private Integer getSeriousNum(String userId) {
|
||||
if (StrUtil.isBlank(userId)) {
|
||||
return 0;
|
||||
}
|
||||
LambdaQueryWrapper<EmergencySeriousDisease> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(EmergencySeriousDisease::getOperatorId, userId)
|
||||
.eq(EmergencySeriousDisease::getStatus, CommonConstant.STATUS_1)
|
||||
.eq(EmergencySeriousDisease::getDelFlag, CommonConstant.DEL_FLAG_0)
|
||||
//1未派单 2已派单 3已接单 4已预约 5已完成 6操作人员驳回 7驻场人员驳回 8 超时未接单
|
||||
.in(EmergencySeriousDisease::getState, Arrays.asList("1", "7", "8"));
|
||||
|
||||
return emergencySeriousDiseaseMapper.selectCount(queryWrapper).intValue();
|
||||
}
|
||||
|
||||
private BigDecimal getTimelinessRate(String userId) {
|
||||
// 总次数
|
||||
int totalNum = getTotalNum(null, null);
|
||||
if (totalNum == 0) {
|
||||
return BigDecimal.ZERO;
|
||||
}
|
||||
|
||||
int num = 0;
|
||||
|
||||
LambdaQueryWrapper<Order> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(Order::getMajorUserId, userId);
|
||||
List<Order> orders = orderMapper.selectList(queryWrapper);
|
||||
for (Order order : orders) {
|
||||
Date majorResponseTime = order.getMajorResponseTime();
|
||||
if (ObjectUtil.isNull(majorResponseTime)) {
|
||||
continue;
|
||||
}
|
||||
boolean b = DateUtils.ltFixedMinute(order.getCreateTime(), order.getMajorResponseTime(), 5);
|
||||
if (b) {
|
||||
num++;
|
||||
}
|
||||
}
|
||||
|
||||
return BigDecimal.valueOf(num)
|
||||
.divide(BigDecimal.valueOf(totalNum), 2, RoundingMode.HALF_UP)
|
||||
.multiply(BigDecimal.valueOf(100));
|
||||
}
|
||||
|
||||
private Integer getDutyTeamNum() {
|
||||
Call onDutyPerson = getOnDutyPerson();
|
||||
if (ObjectUtil.isNull(onDutyPerson)) {
|
||||
return 0;
|
||||
}
|
||||
return Math.min(onDutyPerson.getMajors().size(), onDutyPerson.getOperators().size());
|
||||
}
|
||||
|
||||
private Integer getTotalNum(String userId, String userType) {
|
||||
LambdaQueryWrapper<Order> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(Order::getStatus, CommonConstant.STATUS_1).eq(Order::getDelFlag, CommonConstant.DEL_FLAG_0);
|
||||
|
||||
if (EmergencyConstants.OPERATION.equals(userType)) {
|
||||
if (StrUtil.isNotBlank(userId)) {
|
||||
queryWrapper.eq(Order::getOperationUserId, userId);
|
||||
}
|
||||
}
|
||||
|
||||
if (EmergencyConstants.MAJOR.equals(userType)) {
|
||||
if (StrUtil.isNotBlank(userId)) {
|
||||
queryWrapper.eq(Order::getMajorUserId, userId);
|
||||
}
|
||||
}
|
||||
|
||||
Long num = orderMapper.selectCount(queryWrapper);
|
||||
if (ObjectUtil.isNull(num)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return num.intValue();
|
||||
}
|
||||
|
||||
private BigDecimal getCompletionRate(String userId, String personType) {
|
||||
// 应急发生次数
|
||||
int total = getTotalNum(null, null);
|
||||
// 应急回复次数
|
||||
Integer reply = getTotalNum(userId, personType);
|
||||
if (total == 0) {
|
||||
return BigDecimal.ZERO;
|
||||
}
|
||||
return BigDecimal.valueOf(reply)
|
||||
.divide(BigDecimal.valueOf(total), 2, RoundingMode.HALF_UP)
|
||||
.multiply(BigDecimal.valueOf(100));
|
||||
}
|
||||
|
||||
|
||||
private LoginUserNew handleNull(LoginUserNew loginUserNew) {
|
||||
if (ObjectUtil.isNull(loginUserNew)) {
|
||||
loginUserNew = new LoginUserNew();
|
||||
}
|
||||
return loginUserNew;
|
||||
}
|
||||
|
||||
private String ifNullReturnEmpty(Integer integer) {
|
||||
if (ObjectUtil.isNull(integer)) {
|
||||
return StrUtil.EMPTY;
|
||||
}
|
||||
return integer.toString();
|
||||
}
|
||||
|
||||
private Call getOnDutyPerson() {
|
||||
// 获取自定义排班信息
|
||||
Call custom = getScheduleCustom();
|
||||
// 获取默认排班信息
|
||||
getScheduleDefault(CollectionUtils.isEmpty(custom.getOperators()), (CollectionUtils.isEmpty(custom.getMajors())), custom);
|
||||
return custom;
|
||||
}
|
||||
|
||||
private List<EmergencyUser> findIdleUsers(List<EmergencyUser> users, String userType) {
|
||||
if (CollectionUtils.isEmpty(users)) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
List<EmergencyUser> result = new ArrayList<>();
|
||||
// 操作人员
|
||||
if (EmergencyConstants.OPERATION_NEW.equals(userType)) {
|
||||
DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
|
||||
String dateStr = format.format(new Date());
|
||||
List<EmergencyUser> list = orderMapper.officerOnDutyJoinSessionInfoByOP(dateStr);
|
||||
if (CollectionUtils.isEmpty(list)) {
|
||||
return users;
|
||||
}
|
||||
result = checkSessionUser(users, list);
|
||||
|
||||
}
|
||||
|
||||
// 专业人员
|
||||
if (EmergencyConstants.MAJOR_NEW.equals(userType)) {
|
||||
DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
|
||||
String dateStr = format.format(new Date());
|
||||
List<EmergencyUser> list = orderMapper.officerOnDutyJoinSessionInfoByMajor(dateStr);
|
||||
if (CollectionUtils.isEmpty(list)) {
|
||||
return users;
|
||||
}
|
||||
result = checkSessionUser(users, list);
|
||||
}
|
||||
// 排序
|
||||
return result.stream().sorted(Comparator.comparingInt(EmergencyUser::getNum)).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
/**
|
||||
* @param users 值班人员
|
||||
* @param sessionInfos 正在会话的值班人员
|
||||
* @return 可以参与会话的人员
|
||||
*/
|
||||
private List<EmergencyUser> checkSessionUser(List<EmergencyUser> users, List<EmergencyUser> sessionInfos) {
|
||||
List<EmergencyUser> result = new ArrayList<>();
|
||||
for (EmergencyUser user : users) {
|
||||
int flag = 0;
|
||||
for (EmergencyUser sessionUser : sessionInfos) {
|
||||
if (sessionUser.getUserId().equals(user.getUserId())) {
|
||||
user.setNum(sessionUser.getNum());
|
||||
flag++;
|
||||
}
|
||||
}
|
||||
if (flag == 0) {
|
||||
result.add(user);
|
||||
}
|
||||
}
|
||||
|
||||
if (CollectionUtils.isEmpty(result)) {
|
||||
return users;
|
||||
} else {
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
private void getScheduleDefault(boolean getOperator, boolean getMajors, Call custom) {
|
||||
Date now = new Date();
|
||||
int week = DateUtils.weekDay(now);
|
||||
int amOrPm = DateUtils.amOrPm(now);
|
||||
// 默认排班操作人员
|
||||
if (getOperator) {
|
||||
LambdaQueryWrapper<ScheduleDefault> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(ScheduleDefault::getWeek, week)
|
||||
.eq(ScheduleDefault::getType, amOrPm)
|
||||
.eq(ScheduleDefault::getUserType, EmergencyConstants.OPERATION);
|
||||
|
||||
List<ScheduleDefault> scheduleDefaults = scheduleDefaultMapper.selectList(queryWrapper);
|
||||
convertDefault(scheduleDefaults, custom.getOperators());
|
||||
}
|
||||
// 默认排班专业人员
|
||||
if (getMajors) {
|
||||
LambdaQueryWrapper<ScheduleDefault> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(ScheduleDefault::getWeek, week)
|
||||
.eq(ScheduleDefault::getType, amOrPm)
|
||||
.eq(ScheduleDefault::getUserType, EmergencyConstants.MAJOR);
|
||||
|
||||
List<ScheduleDefault> scheduleDefaults = scheduleDefaultMapper.selectList(queryWrapper);
|
||||
convertDefault(scheduleDefaults, custom.getMajors());
|
||||
}
|
||||
}
|
||||
|
||||
private Call getScheduleCustom() {
|
||||
|
||||
int amOrPm = DateUtils.amOrPm(new Date());
|
||||
// 操作人员list
|
||||
LambdaQueryWrapper<ScheduleCustom> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(ScheduleCustom::getScheduleTime, DateUtil.today())
|
||||
.eq(ScheduleCustom::getType, String.valueOf(amOrPm))
|
||||
.eq(ScheduleCustom::getUserType, EmergencyConstants.OPERATION);
|
||||
List<ScheduleCustom> operations = scheduleCustomMapper.selectList(queryWrapper);
|
||||
|
||||
// 专业人员
|
||||
LambdaQueryWrapper<ScheduleCustom> majorWrapper = new LambdaQueryWrapper<>();
|
||||
majorWrapper.eq(ScheduleCustom::getScheduleTime, DateUtil.today())
|
||||
.eq(ScheduleCustom::getType, String.valueOf(amOrPm))
|
||||
.eq(ScheduleCustom::getUserType, EmergencyConstants.MAJOR);
|
||||
List<ScheduleCustom> majors = scheduleCustomMapper.selectList(majorWrapper);
|
||||
|
||||
// convert
|
||||
List<EmergencyUser> operationUser = new ArrayList<>();
|
||||
List<EmergencyUser> majorUser = new ArrayList<>();
|
||||
convertCustom(operations, operationUser);
|
||||
convertCustom(majors, majorUser);
|
||||
// return
|
||||
Call custom = new Call();
|
||||
custom.setOperators(operationUser);
|
||||
custom.setMajors(majorUser);
|
||||
|
||||
return custom;
|
||||
}
|
||||
|
||||
private void convertCustom(List<ScheduleCustom> list, List<EmergencyUser> emergencyUsers) {
|
||||
if (CollectionUtils.isEmpty(list)) {
|
||||
return;
|
||||
}
|
||||
list.forEach(scheduleCustom -> {
|
||||
EmergencyUser user = new EmergencyUser();
|
||||
BeanUtil.copyProperties(scheduleCustom, user);
|
||||
emergencyUsers.add(user);
|
||||
});
|
||||
}
|
||||
|
||||
private void convertDefault(List<ScheduleDefault> list, List<EmergencyUser> emergencyUsers) {
|
||||
if (CollectionUtils.isEmpty(list)) {
|
||||
return;
|
||||
}
|
||||
list.forEach(scheduleCustom -> {
|
||||
EmergencyUser user = new EmergencyUser();
|
||||
BeanUtil.copyProperties(scheduleCustom, user);
|
||||
emergencyUsers.add(user);
|
||||
});
|
||||
}
|
||||
|
||||
private String insertOrder(EmergencyCall emergencyCall) {
|
||||
|
||||
LoginUser loginUser = GlobalUtils.getLoginUser();
|
||||
|
||||
Order order = new Order();
|
||||
order.setInitiatorType(emergencyCall.getCallType());
|
||||
order.setIsFill(EmergencyConstants.ORDER_IS_FILL_0);
|
||||
order.setResourceId(emergencyCall.getResourceId());
|
||||
// 发起人
|
||||
order.setInitiatorUserId(loginUser.getId());
|
||||
order.setInitiatorUserSex(String.valueOf(loginUser.getSex()));
|
||||
order.setInitiatorUserName(loginUser.getRealname());
|
||||
order.setInitiatorUserMobile(loginUser.getPhone());
|
||||
order.setInitiatorUserIdCard(loginUser.getIdCard());
|
||||
if (ObjectUtil.isNotNull(emergencyCall.getLongitude())) {
|
||||
order.setInitiatorLongitude(BigDecimal.valueOf(emergencyCall.getLongitude()));
|
||||
}
|
||||
if (ObjectUtil.isNotNull(emergencyCall.getLatitude())) {
|
||||
order.setInitiatorLatitude(BigDecimal.valueOf(emergencyCall.getLatitude()));
|
||||
}
|
||||
order.setInitiatorUserDepart(loginUser.getOrgCode());
|
||||
order.setInitiatorUserAvatar(loginUser.getAvatar());
|
||||
// 救助人
|
||||
order.setSalvageUserId(loginUser.getId());
|
||||
order.setSalvageUserSex(String.valueOf(loginUser.getSex()));
|
||||
order.setSalvageUserName(loginUser.getRealname());
|
||||
order.setSalvageUserMobile(loginUser.getPhone());
|
||||
order.setSalvageUserIdCard(loginUser.getIdCard());
|
||||
order.setSalvageUserDepart(loginUser.getOrgCode());
|
||||
order.setSalvageUserAvatar(loginUser.getAvatar());
|
||||
// 如果是120 插入应急中心
|
||||
if (StrUtil.isBlank(emergencyCall.getCenterId()) && EmergencyConstants.CALL_TYPE_0.equals(emergencyCall.getCallType())) {
|
||||
Call call = officerOnDuty();
|
||||
order.setCenterId(call.getCenterId());
|
||||
}
|
||||
orderMapper.insert(order);
|
||||
// 大屏推送及发送短信
|
||||
EmergencySocket socket = new EmergencySocket();
|
||||
socket.setType(emergencyCall.getCallType());
|
||||
socket.setCenterId(emergencyCall.getCenterId());
|
||||
socket.setOrgCode(loginUser.getOrgCode());
|
||||
largeScreen.orderPush(socket, emergencyCall.getLongitude(), emergencyCall.getLatitude(),order.getId());
|
||||
return order.getId();
|
||||
}
|
||||
|
||||
private String insertOrderIntervene(String callType, String resourceId, Double longitude, Double latitude, String type) {
|
||||
LoginUser loginUser = GlobalUtils.getLoginUser();
|
||||
|
||||
OrderIntervene order = new OrderIntervene();
|
||||
order.setInitiatorType(callType);
|
||||
order.setIsFill(EmergencyConstants.ORDER_IS_FILL_0);
|
||||
order.setResourceId(resourceId);
|
||||
order.setType(type);
|
||||
// 发起人
|
||||
order.setInitiatorUserId(loginUser.getId());
|
||||
order.setInitiatorUserSex(String.valueOf(loginUser.getSex()));
|
||||
order.setInitiatorUserName(loginUser.getRealname());
|
||||
order.setInitiatorUserMobile(loginUser.getPhone());
|
||||
order.setInitiatorUserIdCard(loginUser.getIdCard());
|
||||
if (ObjectUtil.isNotNull(longitude)) {
|
||||
order.setInitiatorLongitude(BigDecimal.valueOf(longitude));
|
||||
}
|
||||
if (ObjectUtil.isNotNull(latitude)) {
|
||||
order.setInitiatorLatitude(BigDecimal.valueOf(latitude));
|
||||
}
|
||||
order.setInitiatorUserDepart(loginUser.getOrgCode());
|
||||
order.setInitiatorUserAvatar(loginUser.getAvatar());
|
||||
// 救助人
|
||||
order.setSalvageUserId(loginUser.getId());
|
||||
order.setSalvageUserSex(String.valueOf(loginUser.getSex()));
|
||||
order.setSalvageUserName(loginUser.getRealname());
|
||||
order.setSalvageUserMobile(loginUser.getPhone());
|
||||
order.setSalvageUserIdCard(loginUser.getIdCard());
|
||||
order.setSalvageUserDepart(loginUser.getOrgCode());
|
||||
order.setSalvageUserAvatar(loginUser.getAvatar());
|
||||
|
||||
orderInterveneMapper.insert(order);
|
||||
|
||||
return order.getId();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Result<Map<String, Object>> createGroupMag(String name, String longitude, String latitude, String type) {
|
||||
|
||||
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
||||
|
||||
Order order = emergencyResourceApiServiceImpl.sessionNowSession(sysUser.getId());
|
||||
|
||||
List<String> userList = new ArrayList<>(2);
|
||||
if (order != null) {
|
||||
Map res = new HashMap<>();
|
||||
res.put("userId", sysUser.getId());
|
||||
res.put("groupId", order.getSessionId());
|
||||
res.put("tfNew", "0");
|
||||
userList.add(order.getOperationUserId());
|
||||
userList.add(order.getMajorUserId());
|
||||
res.put("member", userList);
|
||||
res.put("id", order.getId());
|
||||
return Result.OK(res);
|
||||
}
|
||||
|
||||
// 当前值班人员
|
||||
Call rs = this.officerOnDuty();
|
||||
|
||||
if (rs == null || CollectionUtils.isEmpty(rs.getMajors()) || CollectionUtils.isEmpty(rs.getOperators())) {
|
||||
return Result.error("没有接受方人员!");
|
||||
}
|
||||
|
||||
String majorsId = rs.getMajors().get(0).getUserId();
|
||||
String operatorsId = rs.getOperators().get(0).getUserId();
|
||||
|
||||
List<String> yesIds = new ArrayList<>();
|
||||
yesIds.add(sysUser.getId());
|
||||
yesIds.add(majorsId);
|
||||
yesIds.add(operatorsId);
|
||||
|
||||
ConSessionRequestDO conSessionRequestDO = selectConSessionRequestDO(yesIds, "", name);
|
||||
conSessionRequestDO.setUserId(sysUser.getId());
|
||||
|
||||
|
||||
Result<Map<String, Object>> imrs = iMHelloApi.creatGroupMagNew(conSessionRequestDO);
|
||||
boolean isSuccess = imrs.isSuccess();
|
||||
if (!isSuccess) {
|
||||
return Result.error("应急单创建失败");
|
||||
}
|
||||
String sessionId = (String) imrs.getResult().get("groupId");
|
||||
String callType = StrUtil.isNotBlank(type) ? "2" : "1";
|
||||
sendInitMsg(sessionId, callType, sysUser.getId());
|
||||
EmergencyCall emergencyCall = new EmergencyCall();
|
||||
emergencyCall.setCallType(callType);
|
||||
emergencyCall.setLongitude(Double.valueOf(longitude));
|
||||
emergencyCall.setLatitude(Double.valueOf(latitude));
|
||||
emergencyCall.setCenterId(rs.getCenterId());
|
||||
String orderId = this.call(emergencyCall);
|
||||
CallBack callBack = new CallBack();
|
||||
callBack.setOrderId(orderId);
|
||||
callBack.setMajorUserId(majorsId);
|
||||
callBack.setOperationUserId(operatorsId);
|
||||
callBack.setSessionId(sessionId);
|
||||
callBack.setCenterId(rs.getCenterId());
|
||||
this.callBack(callBack);
|
||||
userList.add(operatorsId);
|
||||
userList.add(majorsId);
|
||||
imrs.getResult().put("member", userList);
|
||||
imrs.getResult().put("tfNew", "1");
|
||||
imrs.getResult().put("id", orderId);
|
||||
return imrs;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Result<Map<String, Object>> createGroupMagIntervene(String name, String longitude, String latitude, String type) {
|
||||
// 干预每次发起都是创建新的应急单
|
||||
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
||||
|
||||
Call call = this.officerOnDuty();
|
||||
if (call == null || CollectionUtils.isEmpty(call.getMajors()) || CollectionUtils.isEmpty(call.getOperators())) {
|
||||
return Result.error("没有接受方人员!");
|
||||
}
|
||||
|
||||
String majorsId = call.getMajors().get(0).getUserId();
|
||||
String operatorsId = call.getOperators().get(0).getUserId();
|
||||
|
||||
List<String> yesIds = new ArrayList<>();
|
||||
yesIds.add(sysUser.getId());
|
||||
yesIds.add(majorsId);
|
||||
yesIds.add(operatorsId);
|
||||
|
||||
ConSessionRequestDO conSessionRequestDO = this.selectConSessionRequestDO(yesIds, "", name);
|
||||
conSessionRequestDO.setUserId(sysUser.getId());
|
||||
|
||||
Result<Map<String, Object>> imrs = iMHelloApi.creatGroupMagNew(conSessionRequestDO);
|
||||
boolean isSuccess = imrs.isSuccess();
|
||||
if (!isSuccess) {
|
||||
return Result.error("应急单创建失败");
|
||||
}
|
||||
String sessionId = (String) imrs.getResult().get("groupId");
|
||||
sendInitMsg(sessionId, "3", sysUser.getId());
|
||||
EmergencyCall emergencyCall = new EmergencyCall();
|
||||
emergencyCall.setCallType("1");
|
||||
emergencyCall.setLongitude(Double.valueOf(longitude));
|
||||
emergencyCall.setLatitude(Double.valueOf(latitude));
|
||||
String bb = this.callIntervene(emergencyCall, type);
|
||||
CallBack callBack = new CallBack();
|
||||
callBack.setOrderId(bb);
|
||||
callBack.setMajorUserId(majorsId);
|
||||
callBack.setOperationUserId(operatorsId);
|
||||
callBack.setSessionId(sessionId);
|
||||
callBack.setCenterId(call.getCenterId());
|
||||
this.callBackIntervene(callBack);
|
||||
|
||||
List<String> userList = new ArrayList<>(2);
|
||||
userList.add(operatorsId);
|
||||
userList.add(majorsId);
|
||||
imrs.getResult().put("member", userList);
|
||||
imrs.getResult().put("tfNew", "1");
|
||||
imrs.getResult().put("id", bb);
|
||||
|
||||
return imrs;
|
||||
}
|
||||
|
||||
private boolean callBackIntervene(CallBack callBack) {
|
||||
// 获取用户集合
|
||||
Map<String, LoginUserNew> map = emergencyCloudManager.listUser(Arrays.asList(callBack.getOperationUserId(), callBack.getMajorUserId()));
|
||||
|
||||
LoginUserNew operationUser = map.get(callBack.getOperationUserId());
|
||||
LoginUserNew majorUser = map.get(callBack.getMajorUserId());
|
||||
|
||||
Date now = new Date();
|
||||
OrderIntervene order = new OrderIntervene();
|
||||
order.setId(callBack.getOrderId());
|
||||
order.setSessionId(callBack.getSessionId());
|
||||
order.setSessionNow(true);
|
||||
|
||||
order.setOperationUserId(callBack.getOperationUserId());
|
||||
order.setOperationUserName(handleNull(operationUser).getRealname());
|
||||
order.setOperationUserSex(ifNullReturnEmpty(handleNull(operationUser).getSex()));
|
||||
order.setOperationUserMobile(handleNull(operationUser).getPhone());
|
||||
order.setOperationUserAvatar(handleNull(operationUser).getAvatar());
|
||||
order.setOperationResponseTime(now);
|
||||
|
||||
order.setMajorUserId(callBack.getMajorUserId());
|
||||
order.setMajorUserName(handleNull(majorUser).getRealname());
|
||||
order.setMajorUserSex(ifNullReturnEmpty(handleNull(majorUser).getSex()));
|
||||
order.setMajorUserMobile(handleNull(majorUser).getPhone());
|
||||
order.setMajorUserAvatar(handleNull(majorUser).getAvatar());
|
||||
order.setMajorResponseTime(now);
|
||||
|
||||
order.setOrderStatus(EmergencyConstants.ORDER_STATUS_1_NEW);
|
||||
order.setIsDispatch(EmergencyConstants.ORDER_SEND_STATUS_1);
|
||||
order.setCenterId(callBack.getCenterId());
|
||||
int result = orderInterveneMapper.updateById(order);
|
||||
|
||||
return result == 1;
|
||||
}
|
||||
|
||||
|
||||
public ConSessionRequestDO selectConSessionRequestDO(List<String> userIds, String doctorId, String name) {
|
||||
ListUser listUser = new ListUser();
|
||||
listUser.setUserIds(userIds);
|
||||
List<LoginUserNew> loginUser = sysBaseAPI.listUserByIds(listUser);
|
||||
|
||||
ConSessionRequestDO conSessionRequestDO = new ConSessionRequestDO();
|
||||
conSessionRequestDO.setAccountList(loginUser);
|
||||
conSessionRequestDO.setName(name);
|
||||
|
||||
if (StringUtils.isNotEmpty(doctorId)) {
|
||||
CompletableFuture<LoginUserNew> future = CompletableFuture.supplyAsync(() -> {
|
||||
return selectUserByAccount(doctorId);
|
||||
});
|
||||
LoginUserNew toAccount = future.join();
|
||||
if (toAccount != null) {
|
||||
loginUser.add(toAccount);
|
||||
}
|
||||
}
|
||||
return conSessionRequestDO;
|
||||
}
|
||||
|
||||
|
||||
public LoginUserNew selectUserByAccount(String userId) {
|
||||
|
||||
List<LoginUserNew> loginUser = sysBaseAPI.listUserByIds(new ListUser(Collections.singletonList(userId)));
|
||||
|
||||
if (CollectionUtils.isNotEmpty(loginUser)) {
|
||||
return loginUser.get(0);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> fixOrderStatus() {
|
||||
LambdaQueryWrapper<Order> wrapper = Wrappers.lambdaQuery(Order.class)
|
||||
.ne(Order::getOrderStatus, EmergencyConstants.ORDER_STATUS_5_NEW);
|
||||
List<Order> orders = orderMapper.selectList(wrapper);
|
||||
return orders.parallelStream().peek(order -> {
|
||||
try {
|
||||
ImGroupMsgTextReqDO req = new ImGroupMsgTextReqDO();
|
||||
req.setGroupId(order.getSessionId());
|
||||
req.setFromUserId("administrator");
|
||||
req.setContent("系统提示:该应急工单未结束,请操作人员及时处理");
|
||||
iMHelloApi.sendGroupMsgTextNew(req);
|
||||
} catch (Exception e) {
|
||||
log.error("发送消息失败", e);
|
||||
}
|
||||
}).map(Order::getId).collect(Collectors.toList());
|
||||
}
|
||||
}
|
||||
+867
@@ -0,0 +1,867 @@
|
||||
package com.renkang.emergency.api.service.impl;
|
||||
|
||||
import cn.hutool.core.util.IdcardUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.renkang.emergency.api.service.EmergencyOrderApiService;
|
||||
import com.renkang.emergency.bean.request.ListSession;
|
||||
import com.renkang.emergency.bean.request.OrderEvaluation;
|
||||
import com.renkang.emergency.bean.request.SingleParam;
|
||||
import com.renkang.emergency.bean.request.StationUpdateOrder;
|
||||
import com.renkang.emergency.bean.response.*;
|
||||
import com.renkang.emergency.constant.EmergencyConstants;
|
||||
import com.renkang.emergency.entity.Order;
|
||||
import com.renkang.emergency.entity.OrderDetail;
|
||||
import com.renkang.emergency.entity.OrderSendRecord;
|
||||
import com.renkang.emergency.entity.TblHelpCentorVo;
|
||||
import com.renkang.emergency.manager.EmergencyCacheManager;
|
||||
import com.renkang.emergency.mapper.OrderDetailMapper;
|
||||
import com.renkang.emergency.mapper.OrderMapper;
|
||||
import com.renkang.emergency.mapper.OrderSendRecordMapper;
|
||||
import com.renkang.emergency.service.IOrderDetailService;
|
||||
import com.renkang.emergency.service.IOrderService;
|
||||
import com.renkang.im.api.IMHelloApi;
|
||||
import com.renkang.im.entity.ImGroupMsgTextReqDO;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.jeecg.common.constant.CommonConstant;
|
||||
import org.jeecg.common.system.vo.LoginUser;
|
||||
import org.jeecg.global.GlobalUtils;
|
||||
import org.jeecg.modules.manager.ISysCache;
|
||||
import org.jeecg.modules.system.entity.SysDepart;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* @author Junqiang Zhu
|
||||
* @date 2023-04-27 10:35
|
||||
*/
|
||||
@Service("emergencyOrderApiService")
|
||||
@Slf4j
|
||||
public class EmergencyOrderApiServiceImpl implements EmergencyOrderApiService {
|
||||
|
||||
@Autowired
|
||||
private OrderMapper orderMapper;
|
||||
@Autowired
|
||||
private IOrderService orderService;
|
||||
@Autowired
|
||||
private OrderDetailMapper orderDetailMapper;
|
||||
@Autowired
|
||||
private EmergencyCacheManager emergencyCacheManager;
|
||||
@Autowired
|
||||
private IOrderDetailService orderDetailService;
|
||||
@Autowired
|
||||
private OrderSendRecordMapper orderSendRecordMapper;
|
||||
@Autowired
|
||||
private IMHelloApi imHelloApi;
|
||||
@Autowired
|
||||
private ISysCache sysCache;
|
||||
|
||||
@Override
|
||||
public IPage<InitUserOrder> initUserOrderPage(Page<Order> page) {
|
||||
String userId = GlobalUtils.getLoginUser().getId();
|
||||
LambdaQueryWrapper<Order> queryWrapper = GlobalUtils.getLambdaQueryWrapper();
|
||||
queryWrapper.select(Order::getId, Order::getInitiatorUserId,
|
||||
Order::getInitiatorUserName, Order::getCreateTime,
|
||||
Order::getSendOrderHospital, Order::getStationBusiness,
|
||||
Order::getOrderStatus, Order::getSessionId)
|
||||
.eq(Order::getInitiatorUserId, userId)
|
||||
.orderByDesc(Order::getCreateTime);
|
||||
|
||||
Page<Order> orderPage = orderMapper.selectPage(page, queryWrapper);
|
||||
Page<InitUserOrder> result = new Page<>();
|
||||
if (ObjectUtil.isNull(orderPage) || CollectionUtils.isEmpty(orderPage.getRecords())) {
|
||||
return result;
|
||||
}
|
||||
List<InitUserOrder> list = new ArrayList<>();
|
||||
|
||||
GlobalUtils.copyPageDataToTarget(orderPage, result);
|
||||
GlobalUtils.convertList(orderPage.getRecords(), list, InitUserOrder.class);
|
||||
result.setRecords(list);
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param orderType 订单类型 (0:进行中 3: 已完成)
|
||||
* @param personType 人员类型 (0:操作人 1:专业人 3:发起人/救助人 4:驻场人)
|
||||
* @return result
|
||||
*/
|
||||
@Override
|
||||
public IPage<Order> page(Page<Order> page, String orderType, String personType) {
|
||||
List<String> orderStatus = getOrderStatus(orderType, personType);
|
||||
if (CollectionUtils.isEmpty(orderStatus)) {
|
||||
return new Page<>();
|
||||
}
|
||||
|
||||
LambdaQueryWrapper<Order> queryWrapper = getQueryWrapper(personType, orderStatus);
|
||||
return listOrderByType(page, queryWrapper);
|
||||
// IPage<OrderSimple> simpleLetterPage = handleOrders(orderPage);
|
||||
// GlobalUtils.copyPageDataToTarget(orderPage, simpleLetterPage);
|
||||
//
|
||||
// return simpleLetterPage;
|
||||
}
|
||||
|
||||
@Override
|
||||
public OrderDetail detail(String orderId) {
|
||||
return orderDetailMapper.selectById(orderId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateSalvageUser(Order order) {
|
||||
if (ObjectUtil.isNull(order)) {
|
||||
throw new RuntimeException("数据为空");
|
||||
}
|
||||
if (StrUtil.isBlank(order.getId())) {
|
||||
throw new RuntimeException("应急单id为空");
|
||||
}
|
||||
if (StrUtil.isBlank(order.getSalvageUserId())) {
|
||||
throw new RuntimeException("救助人为空");
|
||||
}
|
||||
|
||||
LambdaUpdateWrapper<Order> updateWrapper = new LambdaUpdateWrapper<>();
|
||||
updateWrapper.eq(Order::getId, order.getId())
|
||||
.set(Order::getSalvageUserId, order.getSalvageUserId())
|
||||
.set(Order::getSalvageUserName, order.getSalvageUserName())
|
||||
.set(Order::getSalvageUserSex, order.getSalvageUserSex())
|
||||
.set(Order::getSalvageUserMobile, order.getSalvageUserMobile())
|
||||
.set(Order::getSalvageUserIdCard, order.getSalvageUserIdCard())
|
||||
.set(Order::getSalvageUserDepart, order.getSalvageUserDepart())
|
||||
.set(Order::getSalvageUserAvatar, order.getSalvageUserAvatar())
|
||||
.set(Order::getUpdateTime, new Date());
|
||||
|
||||
orderMapper.update(null, updateWrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void rejectionOfOrder(SingleParam<String> singleParam) {
|
||||
if (ObjectUtil.isNull(singleParam) || StrUtil.isBlank(singleParam.getParam())) {
|
||||
throw new RuntimeException("参数缺失");
|
||||
}
|
||||
|
||||
// 查找订单
|
||||
LambdaQueryWrapper<Order> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(Order::getId, singleParam.getParam());
|
||||
boolean exists = orderMapper.exists(queryWrapper);
|
||||
if (!exists) {
|
||||
throw new RuntimeException("该订单不存在");
|
||||
}
|
||||
|
||||
// 修改订单
|
||||
LambdaUpdateWrapper<Order> updateWrapper = new LambdaUpdateWrapper<>();
|
||||
updateWrapper.eq(Order::getId, singleParam.getParam())
|
||||
.set(Order::getIsDispatch, EmergencyConstants.ORDER_SEND_STATUS_1);
|
||||
orderMapper.update(null, updateWrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fillSummary(OrderDetail detail) {
|
||||
if (StrUtil.isBlank(detail.getId())) {
|
||||
throw new RuntimeException("未知订单");
|
||||
}
|
||||
|
||||
String orderId = detail.getId();
|
||||
|
||||
boolean existOrder = orderDetailService.ifDoesNotExistInsertOrderDetail(orderId);
|
||||
if (!existOrder) {
|
||||
throw new RuntimeException("未知订单");
|
||||
}
|
||||
|
||||
OrderDetail result = new OrderDetail();
|
||||
result.setId(orderId);
|
||||
// 事件经过
|
||||
result.setOrderThrough(detail.getOrderThrough());
|
||||
// 事件结果
|
||||
result.setOrderResult(detail.getOrderResult());
|
||||
// 病情记录
|
||||
result.setOrderRecord(detail.getOrderRecord());
|
||||
|
||||
orderDetailMapper.updateById(result);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void stationSendOrder(Order order) {
|
||||
if (StrUtil.isBlank(order.getId())) {
|
||||
throw new RuntimeException("未知订单");
|
||||
}
|
||||
if (StrUtil.isBlank(order.getStationUserId())) {
|
||||
throw new RuntimeException("未选择驻场人员");
|
||||
}
|
||||
if (StrUtil.isBlank(order.getStationBusiness())) {
|
||||
throw new RuntimeException("未选择派单业务类型");
|
||||
}
|
||||
|
||||
Order result = orderService.getOrderById(order.getId());
|
||||
if (result == null) {
|
||||
throw new RuntimeException("未知订单");
|
||||
}
|
||||
if (EmergencyConstants.ORDER_STATUS_5_NEW.equals(result.getOrderStatus())) {
|
||||
throw new RuntimeException("订单已结束");
|
||||
}
|
||||
|
||||
|
||||
boolean existOrderSendRecord = existOrderSendRecord(order.getId(), order.getStationUserId());
|
||||
if (existOrderSendRecord) {
|
||||
// 产品要求 不管有没有人接单都可以再次配单
|
||||
// throw new RuntimeException("已有人接单,无需重新派单...");
|
||||
}
|
||||
|
||||
// 新增派单记录
|
||||
Date now = new Date();
|
||||
OrderSendRecord record = new OrderSendRecord();
|
||||
record.setOrderId(order.getId());
|
||||
record.setStationUserId(order.getStationUserId());
|
||||
record.setStationUserSex(order.getStationUserSex());
|
||||
record.setStationUserName(order.getStationUserName());
|
||||
record.setStationBusiness(order.getStationBusiness());
|
||||
record.setStationUserDepart(order.getStationUserDepart());
|
||||
record.setSendOrderHospital(order.getSendOrderHospital());
|
||||
record.setTransferOrderTime(now);
|
||||
// 默认接单
|
||||
record.setAccept(EmergencyConstants.SEND_ORDER_ACCEPT_1);
|
||||
orderSendRecordMapper.insert(record);
|
||||
|
||||
// 修改订单信息
|
||||
Order update = new Order();
|
||||
update.setId(order.getId());
|
||||
update.setOrderStatus(EmergencyConstants.ORDER_STATUS_2_NEW);
|
||||
// todo 现在没有驻场人员端 所以默认派单的时候已接单
|
||||
update.setIsDispatch(EmergencyConstants.ORDER_SEND_STATUS_4);
|
||||
update.setOperationSendOrderTime(new Date());
|
||||
update.setStationUserId(order.getStationUserId());
|
||||
update.setStationUserName(order.getStationUserName());
|
||||
update.setStationUserSex(order.getStationUserSex());
|
||||
update.setStationUserMobile(order.getStationUserMobile());
|
||||
update.setStationUserAvatar(order.getStationUserAvatar());
|
||||
update.setSendOrderHospital(order.getSendOrderHospital());
|
||||
update.setStationBusiness(order.getStationBusiness());
|
||||
update.setStationResponseTime(now);
|
||||
|
||||
orderMapper.updateById(update);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void orderOver(Order order) {
|
||||
if (StrUtil.isBlank(order.getId())) {
|
||||
throw new RuntimeException("未知订单");
|
||||
}
|
||||
Order existOrder = orderService.getById(order.getId());
|
||||
if (ObjectUtil.isNull(existOrder)) {
|
||||
throw new RuntimeException("未知订单");
|
||||
}
|
||||
if (EmergencyConstants.ORDER_STATUS_5_NEW.equals(existOrder.getOrderStatus())) {
|
||||
throw new RuntimeException("应急单已结束,无需重复操作");
|
||||
}
|
||||
Order update = new Order();
|
||||
update.setId(order.getId());
|
||||
update.setOrderStatus(EmergencyConstants.ORDER_STATUS_5_NEW);
|
||||
update.setIsDispatch(EmergencyConstants.ORDER_SEND_STATUS_5);
|
||||
update.setOrderOverTime(new Date());
|
||||
update.setSessionNow(false);
|
||||
orderMapper.updateById(update);
|
||||
|
||||
// 给im发消息
|
||||
sendImMsg(existOrder.getSessionId());
|
||||
}
|
||||
|
||||
private void sendImMsg(String sessionId) {
|
||||
if (StrUtil.isBlank(sessionId)) {
|
||||
return;
|
||||
}
|
||||
imHelloApi.sendGroupMsg(getMsgBody(sessionId));
|
||||
}
|
||||
|
||||
private ImGroupMsgTextReqDO getMsgBody(String sessionId) {
|
||||
|
||||
ImGroupMsgTextReqDO im = new ImGroupMsgTextReqDO();
|
||||
im.setGroupId(sessionId);
|
||||
im.setFromUserId("administrator");
|
||||
im.setContent(getMsgJson());
|
||||
return im;
|
||||
}
|
||||
|
||||
private String getMsgJson() {
|
||||
SendIm sendIm = new SendIm();
|
||||
/** 1: 应急单*/
|
||||
sendIm.setType(1);
|
||||
sendIm.setTitle("应急单");
|
||||
sendIm.setContent("该应急单已结束");
|
||||
return JSONObject.toJSON(sendIm).toString();
|
||||
}
|
||||
|
||||
// 补单
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void replenishOrder(Order order) {
|
||||
if (ObjectUtil.isNull(order)) {
|
||||
throw new RuntimeException("空参");
|
||||
}
|
||||
if (StrUtil.isBlank(order.getInitiatorType())) {
|
||||
throw new RuntimeException("未选择发起类型(120/应急就医)");
|
||||
}
|
||||
if (StrUtil.isBlank(order.getId())) {
|
||||
insertReplenishOrder(order);
|
||||
} else {
|
||||
updateReplenishOrder(order);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Order getOrderBySessionId(String sessionId) {
|
||||
if (StrUtil.isBlank(sessionId)) {
|
||||
throw new RuntimeException("未知会话");
|
||||
}
|
||||
LambdaQueryWrapper<Order> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(Order::getSessionId, sessionId)
|
||||
.eq(Order::getStatus, CommonConstant.STATUS_1)
|
||||
.eq(Order::getDelFlag, CommonConstant.DEL_FLAG_0);
|
||||
|
||||
Order order = orderMapper.selectOne(queryWrapper);
|
||||
if (ObjectUtil.isNull(order)) {
|
||||
return order;
|
||||
}
|
||||
// 派单记录
|
||||
order.setOrderSendRecordList(listOrderSendRecord(order.getId()));
|
||||
handleUserDepart(order);
|
||||
handleOrderDetail(order);
|
||||
|
||||
return order;
|
||||
}
|
||||
|
||||
private void handleOrderDetail(Order order) {
|
||||
if (ObjectUtil.isNull(order) || StrUtil.isBlank(order.getId())) {
|
||||
return;
|
||||
}
|
||||
LambdaQueryWrapper<OrderDetail> lambdaQueryWrapper = GlobalUtils.getLambdaQueryWrapper();
|
||||
lambdaQueryWrapper.eq(OrderDetail::getId, order.getId());
|
||||
OrderDetail orderDetail = orderDetailMapper.selectOne(lambdaQueryWrapper);
|
||||
order.setOrderDetail(orderDetail);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void acceptOrRejectOrder(StationUpdateOrder stationUpdateOrder) {
|
||||
LoginUser loginUser = GlobalUtils.getLoginUser();
|
||||
// 校验订单
|
||||
boolean existOrder = orderService.existOrder(stationUpdateOrder.getOrderId());
|
||||
if (!existOrder) {
|
||||
throw new RuntimeException("未知订单");
|
||||
}
|
||||
|
||||
LambdaQueryWrapper<OrderSendRecord> lambdaQueryWrapper = GlobalUtils.getLambdaQueryWrapper();
|
||||
lambdaQueryWrapper.eq(OrderSendRecord::getOrderId, stationUpdateOrder.getOrderId());
|
||||
List<OrderSendRecord> list = orderSendRecordMapper.selectList(lambdaQueryWrapper);
|
||||
if (CollectionUtils.isEmpty(list)) {
|
||||
throw new RuntimeException("订单异常,没有派单记录");
|
||||
}
|
||||
|
||||
LambdaUpdateWrapper<OrderSendRecord> updateWrapper = new LambdaUpdateWrapper<>();
|
||||
updateWrapper.eq(OrderSendRecord::getStationUserId, loginUser.getId())
|
||||
.eq(OrderSendRecord::getOrderId, stationUpdateOrder.getOrderId())
|
||||
.set(OrderSendRecord::getAccept, stationUpdateOrder.getOrderStatus())
|
||||
.set(OrderSendRecord::getRefuseCause, stationUpdateOrder.getCause())
|
||||
.set(OrderSendRecord::getMemo, stationUpdateOrder.getMemo())
|
||||
.set(OrderSendRecord::getTransferOrderTime, new Date());
|
||||
|
||||
// 接单
|
||||
LambdaUpdateWrapper<Order> orderUpdateWrapper = new LambdaUpdateWrapper<>();
|
||||
if (EmergencyConstants.SEND_ORDER_ACCEPT_1.equals(stationUpdateOrder.getOrderStatus())) {
|
||||
orderUpdateWrapper.eq(Order::getId, stationUpdateOrder.getOrderId())
|
||||
.set(Order::getStationUserId, loginUser.getId())
|
||||
.set(Order::getStationUserSex, loginUser.getSex())
|
||||
.set(Order::getStationUserName, loginUser.getRealname())
|
||||
.set(Order::getStationUserDepart, loginUser.getOrgCode())
|
||||
.set(Order::getStationUserAvatar, loginUser.getAvatar())
|
||||
.set(Order::getStationResponseTime, new Date())
|
||||
.set(Order::getSendOrderHospital, stationUpdateOrder.getHospital())
|
||||
.set(Order::getStationBusiness, stationUpdateOrder.getBusiness())
|
||||
.set(Order::getOrderStatus, EmergencyConstants.ORDER_STATUS_4_NEW)
|
||||
.set(Order::getIsDispatch, EmergencyConstants.ORDER_SEND_STATUS_4);
|
||||
orderMapper.update(null, orderUpdateWrapper);
|
||||
|
||||
// 修改其他派单记录为已完成
|
||||
LambdaUpdateWrapper<OrderSendRecord> orderSendRecordWrapper = new LambdaUpdateWrapper<>();
|
||||
orderSendRecordWrapper.eq(OrderSendRecord::getOrderId, stationUpdateOrder.getOrderId())
|
||||
.ne(OrderSendRecord::getStationUserId, loginUser.getId())
|
||||
.set(OrderSendRecord::getAccept, EmergencyConstants.SEND_ORDER_ACCEPT_3);
|
||||
orderSendRecordMapper.update(null, orderSendRecordWrapper);
|
||||
} else {
|
||||
// 拒单 修改应急单为待审核
|
||||
orderUpdateWrapper.eq(Order::getId, stationUpdateOrder.getOrderId())
|
||||
.set(Order::getOrderStatus, EmergencyConstants.ORDER_STATUS_3_NEW)
|
||||
.set(Order::getIsDispatch, EmergencyConstants.ORDER_SEND_STATUS_3);
|
||||
orderMapper.update(null, orderUpdateWrapper);
|
||||
}
|
||||
|
||||
orderSendRecordMapper.update(null, updateWrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IPage<OrderSendRecord> pageOrderSend(Page<OrderSendRecord> page, String orderStatus) {
|
||||
if (StrUtil.isBlank(orderStatus)) {
|
||||
throw new RuntimeException("未知订单状态");
|
||||
}
|
||||
LoginUser loginUser = GlobalUtils.getLoginUser();
|
||||
LambdaQueryWrapper<OrderSendRecord> lambdaQueryWrapper = GlobalUtils.getLambdaQueryWrapper();
|
||||
lambdaQueryWrapper.eq(OrderSendRecord::getStationUserId, loginUser.getId());
|
||||
// 全部订单
|
||||
if (!"-1".equals(orderStatus)) {
|
||||
lambdaQueryWrapper.eq(OrderSendRecord::getAccept, orderStatus);
|
||||
}
|
||||
|
||||
Page<OrderSendRecord> orderSendRecordPage = orderSendRecordMapper.selectPage(page, lambdaQueryWrapper);
|
||||
if (ObjectUtil.isNull(orderSendRecordPage) || CollectionUtils.isEmpty(orderSendRecordPage.getRecords())) {
|
||||
return orderSendRecordPage;
|
||||
}
|
||||
|
||||
orderSendRecordPage.getRecords().forEach(orderSendRecord -> {
|
||||
Order order = orderMapper.selectById(orderSendRecord.getOrderId());
|
||||
if (ObjectUtil.isNotNull(order)) {
|
||||
handleUserDepart(order);
|
||||
orderSendRecord.setOrder(order);
|
||||
}
|
||||
});
|
||||
|
||||
return orderSendRecordPage;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void evaluation(OrderEvaluation orderEvaluation) {
|
||||
LoginUser loginUser = GlobalUtils.getLoginUser();
|
||||
LambdaQueryWrapper<Order> lambdaQueryWrapper = GlobalUtils.getLambdaQueryWrapper();
|
||||
lambdaQueryWrapper.eq(Order::getSalvageUserId, loginUser.getId())
|
||||
.eq(Order::getId, orderEvaluation.getOrderId());
|
||||
|
||||
Order order = orderMapper.selectOne(lambdaQueryWrapper);
|
||||
if (ObjectUtil.isNull(order)) {
|
||||
throw new RuntimeException("没有关联订单");
|
||||
}
|
||||
|
||||
boolean existInsertOrderDetail = orderDetailService.ifDoesNotExistInsertOrderDetail(order.getId());
|
||||
if (!existInsertOrderDetail) {
|
||||
throw new RuntimeException("没有关联订单");
|
||||
}
|
||||
|
||||
OrderDetail detail = new OrderDetail();
|
||||
detail.setId(order.getId());
|
||||
detail.setOrderScore(orderEvaluation.getScore());
|
||||
detail.setOrderEvaluation(orderEvaluation.getEvaluation());
|
||||
|
||||
orderDetailMapper.updateById(detail);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String salvageOpinion(String sessionId) {
|
||||
LambdaQueryWrapper<Order> queryWrapper = GlobalUtils.getLambdaQueryWrapper();
|
||||
queryWrapper.select(Order::getInfoDesc, Order::getId).eq(Order::getSessionId, sessionId);
|
||||
|
||||
List<Order> orders = orderMapper.selectList(queryWrapper);
|
||||
if (CollectionUtils.isEmpty(orders)) {
|
||||
return StrUtil.EMPTY;
|
||||
}
|
||||
|
||||
String result = orders.get(0).getInfoDesc();
|
||||
if (StrUtil.isBlank(result)) {
|
||||
return StrUtil.EMPTY;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addSalvageOpinion(Order order) {
|
||||
if (StrUtil.isBlank(order.getSessionId()) || StrUtil.isBlank(order.getInfoDesc())) {
|
||||
throw new RuntimeException("参数缺失 sessionId/救助意见");
|
||||
}
|
||||
|
||||
LambdaUpdateWrapper<Order> updateWrapper = new LambdaUpdateWrapper<>();
|
||||
updateWrapper.eq(Order::getSessionId, order.getSessionId())
|
||||
.set(Order::getInfoDesc, order.getInfoDesc());
|
||||
|
||||
orderMapper.update(null, updateWrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SessionOrderUser> listSession(ListSession value) {
|
||||
if (CollectionUtils.isEmpty(value.getSessions())) {
|
||||
throw new RuntimeException("参数会话列表为空");
|
||||
}
|
||||
if (!EmergencyConstants.OPERATION.equals(value.getType())) {
|
||||
if (!EmergencyConstants.MAJOR.equals(value.getType())) {
|
||||
throw new RuntimeException("未知类型");
|
||||
}
|
||||
}
|
||||
|
||||
List<Order> orders = getSessionOrder(value.getSessions(), value.getType());
|
||||
return convertOrder(orders);
|
||||
}
|
||||
|
||||
@Override
|
||||
public OrderThrough orderThrough(String id) {
|
||||
LambdaQueryWrapper<OrderDetail> queryWrapper = GlobalUtils.getLambdaQueryWrapper();
|
||||
queryWrapper.select(
|
||||
OrderDetail::getId,
|
||||
OrderDetail::getOrderThrough,
|
||||
OrderDetail::getOrderResult)
|
||||
.eq(OrderDetail::getId, id);
|
||||
|
||||
OrderThrough result = new OrderThrough();
|
||||
OrderDetail orderDetail = orderDetailMapper.selectOne(queryWrapper);
|
||||
if (orderDetail == null) {
|
||||
result.setOrderThrough(StrUtil.EMPTY);
|
||||
result.setOrderResult(StrUtil.EMPTY);
|
||||
return result;
|
||||
}
|
||||
|
||||
result.setOrderThrough(StrUtil.isBlank(orderDetail.getOrderThrough()) ? StrUtil.EMPTY : orderDetail.getOrderThrough());
|
||||
result.setOrderResult(StrUtil.isBlank(orderDetail.getOrderResult()) ? StrUtil.EMPTY : orderDetail.getOrderResult());
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Order getOrderById(String id) {
|
||||
if (StrUtil.isBlank(id)) {
|
||||
throw new RuntimeException("未知订单");
|
||||
}
|
||||
LambdaQueryWrapper<Order> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(Order::getId, id)
|
||||
.eq(Order::getStatus, CommonConstant.STATUS_1)
|
||||
.eq(Order::getDelFlag, CommonConstant.DEL_FLAG_0);
|
||||
|
||||
Order order = orderMapper.selectOne(queryWrapper);
|
||||
if (ObjectUtil.isNull(order)) {
|
||||
return order;
|
||||
}
|
||||
// 派单记录
|
||||
order.setOrderSendRecordList(listOrderSendRecord(order.getId()));
|
||||
handleUserDepart(order);
|
||||
handleOrderDetail(order);
|
||||
|
||||
return order;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<TblHelpCentorVo> getSicknessTypeStatistic(String sex, String depart) {
|
||||
LambdaQueryWrapper<Order> queryWrapper = new LambdaQueryWrapper<>();
|
||||
if (StrUtil.isNotBlank(sex) && !"0".equals(sex)){
|
||||
queryWrapper.eq(Order::getSalvageUserSex,sex);
|
||||
}
|
||||
if (StrUtil.isNotBlank(depart)){
|
||||
queryWrapper.like(Order::getSalvageUserDepart,depart);
|
||||
}
|
||||
queryWrapper.eq(Order::getDelFlag, CommonConstant.DEL_FLAG_0);
|
||||
List<Order> orders = orderMapper.selectList(queryWrapper);
|
||||
// 统计
|
||||
Map<String, Integer> map = new HashMap<>();
|
||||
orders.forEach(order -> {
|
||||
String initiatorType = order.getInitiatorType();
|
||||
if (map.containsKey(initiatorType)) {
|
||||
map.put(initiatorType, map.get(initiatorType) + 1);
|
||||
} else {
|
||||
map.put(initiatorType, 1);
|
||||
}
|
||||
});
|
||||
List<TblHelpCentorVo> voList = new ArrayList<>();
|
||||
map.forEach((k, v) -> {
|
||||
TblHelpCentorVo vo = new TblHelpCentorVo();
|
||||
vo.setType(k);
|
||||
vo.setCount(v);
|
||||
voList.add(vo);
|
||||
});
|
||||
return voList;
|
||||
}
|
||||
|
||||
private List<SessionOrderUser> convertOrder(List<Order> orders) {
|
||||
if (CollectionUtils.isEmpty(orders)) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
List<SessionOrderUser> result = new ArrayList<>();
|
||||
orders.forEach(order -> {
|
||||
SessionOrderUser sessionUser = new SessionOrderUser();
|
||||
sessionUser.setOrderId(order.getId());
|
||||
sessionUser.setSessionId(order.getSessionId());
|
||||
sessionUser.setUserId(order.getInitiatorUserId());
|
||||
sessionUser.setUserName(order.getInitiatorUserName());
|
||||
sessionUser.setAge(getAgeByIdCard(order.getInitiatorUserIdCard()));
|
||||
sessionUser.setSex(order.getInitiatorUserSex());
|
||||
sessionUser.setAvatar(order.getInitiatorUserAvatar());
|
||||
sessionUser.setDepart(getDepartName(order.getInitiatorUserDepart()));
|
||||
sessionUser.setInitTime(order.getCreateTime());
|
||||
sessionUser.setHospital(order.getSendOrderHospital());
|
||||
sessionUser.setOrderStatus(order.getOrderStatus());
|
||||
result.add(sessionUser);
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
private String getDepartName(String orgCode) {
|
||||
SysDepart result = sysCache.getDepartByOrgCode(orgCode);
|
||||
if (ObjectUtil.isNull(result)) {
|
||||
return StrUtil.EMPTY;
|
||||
}
|
||||
return result.getDepartName();
|
||||
}
|
||||
|
||||
private Integer getAgeByIdCard(String idCard) {
|
||||
if (StrUtil.isBlank(idCard)) {
|
||||
return null;
|
||||
}
|
||||
try {
|
||||
return IdcardUtil.getAgeByIdCard(idCard);
|
||||
} catch (Exception e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private List<Order> getSessionOrder(List<String> sessions, String type) {
|
||||
String userId = GlobalUtils.getLoginUser().getId();
|
||||
LambdaQueryWrapper<Order> queryWrapper = GlobalUtils.getLambdaQueryWrapper();
|
||||
if (EmergencyConstants.MAJOR.equals(type)) {
|
||||
queryWrapper.eq(Order::getMajorUserId, userId);
|
||||
}
|
||||
if (EmergencyConstants.OPERATION.equals(type)) {
|
||||
queryWrapper.eq(Order::getOperationUserId, userId);
|
||||
}
|
||||
queryWrapper.ne(Order::getOrderStatus, EmergencyConstants.ORDER_STATUS_5_NEW);
|
||||
queryWrapper.apply("FIND_IN_SET(session_id, {0})", String.join(",", sessions));
|
||||
return orderMapper.selectList(queryWrapper);
|
||||
}
|
||||
|
||||
private void handleUserDepart(Order order) {
|
||||
// 发起人部门
|
||||
SysDepart initUserDepart = emergencyCacheManager.getUserDepart(order.getInitiatorUserDepart());
|
||||
// 发起人二级部门
|
||||
SysDepart initUserSecondDepart = emergencyCacheManager.getUserSecondDepart(order.getInitiatorUserDepart());
|
||||
|
||||
// 救助人部门
|
||||
SysDepart saUserDepart = emergencyCacheManager.getUserDepart(order.getSalvageUserDepart());
|
||||
// 救助人二级部门
|
||||
SysDepart saUserSecondDepart = emergencyCacheManager.getUserSecondDepart(order.getSalvageUserDepart());
|
||||
|
||||
order.setInitiatorUserDepart(initUserDepart.getDepartName());
|
||||
order.setInitiatorUserSecondDepart(initUserSecondDepart.getDepartName());
|
||||
order.setSalvageUserDepart(saUserDepart.getDepartName());
|
||||
order.setSalvageUserSecondDepart(saUserSecondDepart.getDepartName());
|
||||
}
|
||||
|
||||
|
||||
private List<OrderSendRecord> listOrderSendRecord(String id) {
|
||||
if (StrUtil.isBlank(id)) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
LambdaQueryWrapper<OrderSendRecord> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(OrderSendRecord::getOrderId, id)
|
||||
.eq(OrderSendRecord::getStatus, CommonConstant.STATUS_1)
|
||||
.eq(OrderSendRecord::getDelFlag, CommonConstant.DEL_FLAG_0)
|
||||
.orderByDesc(OrderSendRecord::getCreateTime);
|
||||
|
||||
List<OrderSendRecord> list = orderSendRecordMapper.selectList(queryWrapper);
|
||||
if (CollectionUtils.isEmpty(list)) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
private void updateReplenishOrder(Order order) {
|
||||
String orderId = order.getId();
|
||||
boolean exist = orderService.existOrder(orderId);
|
||||
if (!exist) {
|
||||
throw new RuntimeException("应急单不存在");
|
||||
}
|
||||
// 修改订单
|
||||
handleReplenishOrder(order);
|
||||
orderMapper.updateById(order);
|
||||
|
||||
// 修改订单详情
|
||||
OrderDetail orderDetail = order.getOrderDetail();
|
||||
if (ObjectUtil.isNull(orderDetail)) {
|
||||
return;
|
||||
}
|
||||
orderDetail.setId(orderId);
|
||||
boolean existInsertOrderDetail = orderDetailService.ifDoesNotExistInsertOrderDetail(orderId);
|
||||
if (existInsertOrderDetail) {
|
||||
handleReplenishOrderDetail(order.getOrderDetail());
|
||||
orderDetailMapper.updateById(orderDetail);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void handleReplenishOrderDetail(OrderDetail orderDetail) {
|
||||
if (ObjectUtil.isNull(orderDetail)) {
|
||||
return;
|
||||
}
|
||||
orderDetail.setOrderScore(null);
|
||||
orderDetail.setOrderEvaluation(null);
|
||||
orderDetail.setOrderEvaluationTime(null);
|
||||
}
|
||||
|
||||
private void handleReplenishOrder(Order order) {
|
||||
order.setSessionId(null);
|
||||
order.setSessionNow(false);
|
||||
order.setSessionOverTime(null);
|
||||
order.setIsFill(EmergencyConstants.ORDER_IS_FILL_1);
|
||||
}
|
||||
|
||||
private void insertReplenishOrder(Order order) {
|
||||
// 应急单信息
|
||||
handleReplenishOrder(order);
|
||||
orderMapper.insert(order);
|
||||
|
||||
// 应急单子详情
|
||||
String orderId = order.getId();
|
||||
OrderDetail orderDetail = order.getOrderDetail();
|
||||
if (ObjectUtil.isNull(orderDetail)) {
|
||||
return;
|
||||
}
|
||||
orderDetail.setId(orderId);
|
||||
handleReplenishOrderDetail(orderDetail);
|
||||
// insert
|
||||
orderDetailMapper.insert(orderDetail);
|
||||
}
|
||||
|
||||
|
||||
private boolean existOrderSendRecord(String orderId, String stationUserId) {
|
||||
LambdaQueryWrapper<OrderSendRecord> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(OrderSendRecord::getOrderId, orderId)
|
||||
.eq(OrderSendRecord::getStatus, CommonConstant.STATUS_1)
|
||||
.eq(OrderSendRecord::getDelFlag, CommonConstant.DEL_FLAG_0);
|
||||
//.eq(OrderSendRecord::getStationUserId,stationUserId);
|
||||
|
||||
List<OrderSendRecord> list = orderSendRecordMapper.selectList(queryWrapper);
|
||||
//是否接单(0:待处理 1:已接单 2:已拒单)
|
||||
//long count = list.stream().filter(f -> !"2".equals(f.getAccept())).count();
|
||||
long count = list.stream().filter(f -> "1".equals(f.getAccept())).count();
|
||||
return count >= 1;
|
||||
}
|
||||
|
||||
|
||||
private LambdaQueryWrapper<Order> getQueryWrapper(String personType, List<String> orderStatus) {
|
||||
// personType 人员类型 (0:操作人 1:专业人 3:发起人/救助人 4:驻场人)
|
||||
LoginUser loginUser = GlobalUtils.getLoginUser();
|
||||
LambdaQueryWrapper<Order> queryWrapper = new LambdaQueryWrapper<>();
|
||||
// 时间倒叙
|
||||
queryWrapper.orderByDesc(Order::getCreateTime);
|
||||
switch (personType) {
|
||||
case EmergencyConstants.OPERATION:
|
||||
queryWrapper.eq(Order::getOperationUserId, loginUser.getId()).in(Order::getOrderStatus, orderStatus);
|
||||
break;
|
||||
case EmergencyConstants.MAJOR:
|
||||
queryWrapper.eq(Order::getMajorUserId, loginUser.getId()).in(Order::getOrderStatus, orderStatus);
|
||||
break;
|
||||
case EmergencyConstants.STATION:
|
||||
queryWrapper.eq(Order::getStationUserId, loginUser.getId())
|
||||
.eq(Order::getIsDispatch, EmergencyConstants.ORDER_SEND_STATUS_2)
|
||||
.in(Order::getOrderStatus, orderStatus);
|
||||
break;
|
||||
case EmergencyConstants.INITIATOR:
|
||||
case EmergencyConstants.SALVAGE:
|
||||
queryWrapper.eq(Order::getInitiatorUserId, loginUser.getId())
|
||||
.or()
|
||||
.eq(Order::getSalvageUserId, loginUser.getId())
|
||||
.in(Order::getOrderStatus, orderStatus);
|
||||
break;
|
||||
default:
|
||||
}
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
private IPage<OrderSimple> handleOrders(Page<Order> orders) {
|
||||
if (CollectionUtils.isEmpty(orders.getRecords())) {
|
||||
return new Page<>();
|
||||
}
|
||||
IPage<OrderSimple> result = new Page<>();
|
||||
List<OrderSimple> list = new ArrayList<>();
|
||||
for (Order order : orders.getRecords()) {
|
||||
OrderSimple simpleLetter = new OrderSimple();
|
||||
simpleLetter.setUserName(order.getInitiatorUserName());
|
||||
simpleLetter.setAge(order.getInitiatorUserAge());
|
||||
simpleLetter.setSex(order.getInitiatorUserSex());
|
||||
simpleLetter.setAvatar(order.getInitiatorUserAvatar());
|
||||
simpleLetter.setSecondDepart(getSecondDepartName(order.getInitiatorUserDepart()));
|
||||
simpleLetter.setOrderId(order.getId());
|
||||
simpleLetter.setSessionId(order.getSessionId());
|
||||
simpleLetter.setSessionNow(order.getSessionNow());
|
||||
simpleLetter.setLongitude(order.getInitiatorLongitude());
|
||||
simpleLetter.setLatitude(order.getInitiatorLatitude());
|
||||
simpleLetter.setCreateTime(order.getCreateTime());
|
||||
simpleLetter.setOrderStatus(order.getOrderStatus());
|
||||
simpleLetter.setHospital(order.getSendOrderHospital());
|
||||
simpleLetter.setSalvageOpinion(order.getInfoDesc());
|
||||
/* simpleLetter.setResTime(order.getOperationResponseTime());
|
||||
simpleLetter.setSalvageTime(order.getCreateTime());
|
||||
simpleLetter.setSalvage(handleOrder(order, EmergencyConstants.SALVAGE));
|
||||
simpleLetter.setOperation(handleOrder(order, EmergencyConstants.OPERATION));
|
||||
simpleLetter.setMajor(handleOrder(order, EmergencyConstants.MAJOR));
|
||||
//派单时间
|
||||
simpleLetter.setSendOrderTime(order.getOperationSendOrderTime());
|
||||
// 是否派单
|
||||
simpleLetter.setSendOrder(order.getIsDispatch());
|
||||
simpleLetter.setSendOrderType(order.getStationBusiness());
|
||||
// 小结标题
|
||||
simpleLetter.setThrough(order.getDetailTitle());
|
||||
*/
|
||||
list.add(simpleLetter);
|
||||
}
|
||||
result.setRecords(list);
|
||||
return result;
|
||||
}
|
||||
|
||||
private String getSecondDepartName(String orgCode) {
|
||||
SysDepart userSecondDepart = emergencyCacheManager.getUserSecondDepart(orgCode);
|
||||
return userSecondDepart.getDepartName();
|
||||
}
|
||||
|
||||
private EmergencyUser handleOrder(Order order, String type) {
|
||||
EmergencyUser user = new EmergencyUser();
|
||||
|
||||
if (EmergencyConstants.OPERATION.equals(type)) {
|
||||
user.setUserId(order.getOperationUserId());
|
||||
user.setUserName(order.getOperationUserName());
|
||||
user.setUserSex(order.getOperationUserSex());
|
||||
}
|
||||
|
||||
if (EmergencyConstants.MAJOR.equals(type)) {
|
||||
user.setUserId(order.getMajorUserId());
|
||||
user.setUserName(order.getMajorUserName());
|
||||
user.setUserSex(order.getMajorUserSex());
|
||||
}
|
||||
|
||||
if (EmergencyConstants.SALVAGE.equals(type)) {
|
||||
user.setUserId(order.getSalvageUserId());
|
||||
user.setUserName(order.getSalvageUserName());
|
||||
user.setUserSex(order.getSalvageUserSex());
|
||||
}
|
||||
|
||||
return user;
|
||||
}
|
||||
|
||||
|
||||
private List<String> getOrderStatus(String orderType, String personType) {
|
||||
if (EmergencyConstants.ORDER_STATUS_5_NEW.equals(orderType)) {
|
||||
return Collections.singletonList(EmergencyConstants.ORDER_STATUS_5_NEW);
|
||||
}
|
||||
|
||||
if (EmergencyConstants.STATION.equals(personType)) {
|
||||
return Collections.singletonList(EmergencyConstants.ORDER_STATUS_1_NEW);
|
||||
} else {
|
||||
return Arrays.asList(EmergencyConstants.ORDER_STATUS_0_NEW, EmergencyConstants.ORDER_STATUS_1_NEW);
|
||||
}
|
||||
}
|
||||
|
||||
private Page<Order> listOrderByType(Page<Order> page, LambdaQueryWrapper<Order> queryWrapper) {
|
||||
Page<Order> orders = orderMapper.selectPage(page, queryWrapper);
|
||||
if (CollectionUtils.isEmpty(orders.getRecords())) {
|
||||
return new Page<>();
|
||||
}
|
||||
return orders;
|
||||
}
|
||||
}
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
package com.renkang.emergency.api.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.renkang.emergency.api.service.EmergencyOrderSendRecordApiService;
|
||||
import com.renkang.emergency.entity.OrderSendRecord;
|
||||
import com.renkang.emergency.mapper.OrderSendRecordMapper;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* @author Junqiang Zhu
|
||||
* @date 2023-04-27 17:32
|
||||
*/
|
||||
@Service("emergencyOrderSendRecordApiService")
|
||||
public class EmergencyOrderSendRecordApiServiceImpl implements EmergencyOrderSendRecordApiService {
|
||||
|
||||
@Autowired
|
||||
private OrderSendRecordMapper orderSendRecordMapper;
|
||||
|
||||
@Override
|
||||
public IPage<OrderSendRecord> pageRecord(Page<OrderSendRecord> page, String orderId) {
|
||||
LambdaQueryWrapper<OrderSendRecord> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(OrderSendRecord::getOrderId, orderId)
|
||||
.eq(OrderSendRecord::getAccept, false);
|
||||
|
||||
return orderSendRecordMapper.selectPage(page, queryWrapper);
|
||||
}
|
||||
}
|
||||
+204
@@ -0,0 +1,204 @@
|
||||
package com.renkang.emergency.api.service.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.renkang.emergency.api.service.EmergencyResourceApiService;
|
||||
import com.renkang.emergency.bean.common.ResourceExt;
|
||||
import com.renkang.emergency.bean.response.ResourceHome;
|
||||
import com.renkang.emergency.constant.EmergencyConstants;
|
||||
import com.renkang.emergency.entity.EmergencyResourceDO;
|
||||
import com.renkang.emergency.entity.Order;
|
||||
import com.renkang.emergency.entity.Resource;
|
||||
import com.renkang.emergency.manager.EmergencyCloudManager;
|
||||
import com.renkang.emergency.manager.ResourceManager;
|
||||
import com.renkang.emergency.mapper.OrderMapper;
|
||||
import com.renkang.emergency.mapper.ResourceMapper;
|
||||
import com.renkang.emergency.util.ResourceUtils;;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
import org.jeecg.common.system.api.ISysBaseAPI;
|
||||
import org.jeecg.common.system.vo.DictModel;
|
||||
import org.jeecg.global.GlobalUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.geo.Point;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author Junqiang Zhu
|
||||
* @date 2023-04-25 13:07
|
||||
*/
|
||||
@Service("emergencyResourceApiService")
|
||||
public class EmergencyResourceApiServiceImpl implements EmergencyResourceApiService {
|
||||
@Autowired
|
||||
private EmergencyCloudManager emergencyCloudManager;
|
||||
@Autowired
|
||||
private ResourceManager resourceManager;
|
||||
@Autowired
|
||||
private OrderMapper orderMapper;
|
||||
@Autowired
|
||||
private ResourceMapper resourceMapper;
|
||||
|
||||
@Autowired
|
||||
private ISysBaseAPI sysBaseAPI;
|
||||
|
||||
@Override
|
||||
public ResourceHome listResourceByType(String type, Double longitude, Double latitude) {
|
||||
if (StrUtil.isBlank(type)) {
|
||||
type = EmergencyConstants.RESOURCE_ALL;
|
||||
}
|
||||
|
||||
ResourceHome home = new ResourceHome();
|
||||
// 是否有正在进行的会话
|
||||
String sessionId = sessionNow(null);
|
||||
if (StrUtil.isNotBlank(sessionId)) {
|
||||
home.setSessionId(sessionId);
|
||||
// 前端页面返回需要数据 继续查数据
|
||||
//return home;
|
||||
}
|
||||
|
||||
// 字典数据
|
||||
List<DictModel> dictItems = emergencyCloudManager.getDictItems(EmergencyConstants.EMERGENCY_RESOURCE_TYPE_DICT);
|
||||
|
||||
if (ObjectUtils.isEmpty(longitude) || ObjectUtils.isEmpty(latitude)) {
|
||||
home.setDicts(dictItems);
|
||||
|
||||
List<ResourceExt> list = this.listResource(type);
|
||||
|
||||
List<ResourceExt> resources = new ArrayList<>();
|
||||
if("3".equals(type) || "0".equals(type)){
|
||||
resources = this.selectResourceByLongitudeLatitude(null,null,null);
|
||||
}
|
||||
|
||||
list.addAll(resources);
|
||||
home.setResources(list);
|
||||
|
||||
return home;
|
||||
}
|
||||
|
||||
// 资源数据
|
||||
Point point = new Point(longitude, latitude);
|
||||
List<ResourceExt> resources = resourceManager.geoSearch(point, 100000, type);
|
||||
List<ResourceExt> resourcesLL = new ArrayList<>();
|
||||
if("3".equals(type) || "0".equals(type)){
|
||||
resourcesLL = this.selectResourceByLongitudeLatitude(100000D,longitude,latitude);
|
||||
}
|
||||
resources.addAll(resourcesLL);
|
||||
|
||||
home.setDicts(dictItems);
|
||||
home.setResources(resources);
|
||||
return home;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String sessionNow(String userId) {
|
||||
if (StrUtil.isBlank(userId)) {
|
||||
userId = GlobalUtils.getLoginUser().getId();
|
||||
}
|
||||
LambdaQueryWrapper<Order> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(Order::getInitiatorUserId, userId)
|
||||
.eq(Order::getSessionNow, true);
|
||||
List<Order> orders = orderMapper.selectList(queryWrapper);
|
||||
if (CollectionUtils.isEmpty(orders)) {
|
||||
return StrUtil.EMPTY;
|
||||
}
|
||||
return orders.get(0).getSessionId();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Result<List<EmergencyResourceDO>> selectHospitalList() {
|
||||
List<String> resourcrList = resourceMapper.selectHospitalList();
|
||||
List<String> stationList = sysBaseAPI.selectStationHospitalList();
|
||||
|
||||
List<EmergencyResourceDO> list = new ArrayList<>();
|
||||
if (CollectionUtils.isNotEmpty(resourcrList) && CollectionUtils.isNotEmpty(stationList)) {
|
||||
|
||||
List<String> resultList = resourcrList.stream().filter(stationList::contains).collect(Collectors.toList());
|
||||
|
||||
if (CollectionUtils.isNotEmpty(resultList)) {
|
||||
List<EmergencyResourceDO> resourceDOList = resourceMapper.selectHospitalListByIds(String.join(",", resultList));
|
||||
return Result.OK(resourceDOList);
|
||||
}
|
||||
}
|
||||
|
||||
return Result.OK(list);
|
||||
}
|
||||
|
||||
|
||||
public Order sessionNowSession(String userId) {
|
||||
if (StrUtil.isBlank(userId)) {
|
||||
userId = GlobalUtils.getLoginUser().getId();
|
||||
}
|
||||
LambdaQueryWrapper<Order> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(Order::getInitiatorUserId, userId)
|
||||
.eq(Order::getSessionNow, true);
|
||||
List<Order> orders = orderMapper.selectList(queryWrapper);
|
||||
if (CollectionUtils.isEmpty(orders)) {
|
||||
return null;
|
||||
}
|
||||
return orders.get(0);
|
||||
}
|
||||
|
||||
|
||||
private List<ResourceExt> listResource(String type) {
|
||||
|
||||
if("3".equals(type)){
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
LambdaQueryWrapper<Resource> queryWrapper = GlobalUtils.getLambdaQueryWrapper();
|
||||
if (!EmergencyConstants.RESOURCE_ALL.equals(type)) {
|
||||
queryWrapper.eq(Resource::getType, type);
|
||||
queryWrapper.ne(Resource::getType, "3");
|
||||
}
|
||||
|
||||
List<Resource> resources = resourceMapper.selectList(queryWrapper);
|
||||
|
||||
List<ResourceExt> result = new ArrayList<>();
|
||||
if (CollectionUtils.isNotEmpty(resources)) {
|
||||
for (Resource resource : resources) {
|
||||
ResourceExt resourceExt = new ResourceExt();
|
||||
BeanUtil.copyProperties(resource, resourceExt);
|
||||
result.add(resourceExt);
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
public List<ResourceExt> selectResourceByLongitudeLatitude(Double distance,Double longitude,Double latitude){
|
||||
List<ResourceExt> resourceExtList = new ArrayList<>();
|
||||
/* Point point = new Point(longitude, latitude);
|
||||
List<MedicalResource> list = medicalCenterApi.selectResourceByLongitudeLatitude(distance, longitude, latitude).getResult();
|
||||
|
||||
for (MedicalResource medicalResource : list) {
|
||||
|
||||
ResourceExt resourceExt = convertToResourcesExt(medicalResource);
|
||||
Point geoPoint = new Point(medicalResource.getLongitude().doubleValue(), medicalResource.getLatitude().doubleValue());
|
||||
resourceExt.setType("3");
|
||||
resourceExt.setDistance(ResourceUtils.geoDistance(point, geoPoint));
|
||||
resourceExtList.add(resourceExt);
|
||||
}*/
|
||||
return resourceExtList;
|
||||
}
|
||||
|
||||
|
||||
/* private static ResourceExt convertToResourcesExt(MedicalResource resource) {
|
||||
if (Objects.isNull(resource)) {
|
||||
return null;
|
||||
}
|
||||
ResourceExt resourceExt = new ResourceExt();
|
||||
BeanUtil.copyProperties(resource, resourceExt);
|
||||
return resourceExt;
|
||||
}*/
|
||||
|
||||
|
||||
}
|
||||
+267
@@ -0,0 +1,267 @@
|
||||
package com.renkang.emergency.api.service.impl;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.renkang.emergency.api.service.EmergencyScheduleApiService;
|
||||
import com.renkang.emergency.bean.response.ScheduleDay;
|
||||
import com.renkang.emergency.bean.response.ScheduleMonth;
|
||||
import com.renkang.emergency.bean.response.ScheduleRecordShow;
|
||||
import com.renkang.emergency.constant.EmergencyConstants;
|
||||
import com.renkang.emergency.entity.ScheduleCustom;
|
||||
import com.renkang.emergency.entity.ScheduleDefault;
|
||||
import com.renkang.emergency.entity.ScheduleRecord;
|
||||
import com.renkang.emergency.mapper.ScheduleCustomMapper;
|
||||
import com.renkang.emergency.mapper.ScheduleDefaultMapper;
|
||||
import com.renkang.emergency.mapper.ScheduleRecordMapper;
|
||||
import com.renkang.emergency.util.DateUtils;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.jeecg.global.GlobalUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author Junqiang Zhu
|
||||
* @date 2023-04-25 13:07
|
||||
*/
|
||||
@Service("emergencyScheduleApiService")
|
||||
public class EmergencyScheduleApiServiceImpl implements EmergencyScheduleApiService {
|
||||
|
||||
@Autowired
|
||||
private ScheduleRecordMapper scheduleRecordMapper;
|
||||
@Autowired
|
||||
private ScheduleCustomMapper scheduleCustomMapper;
|
||||
@Autowired
|
||||
private ScheduleDefaultMapper scheduleDefaultMapper;
|
||||
|
||||
@Override
|
||||
public ScheduleRecordShow scheduleRecord(String year, String month, String userId) {
|
||||
if (StrUtil.isBlank(year)) {
|
||||
throw new RuntimeException("参数缺失 year");
|
||||
}
|
||||
if (StrUtil.isBlank(userId)) {
|
||||
userId = GlobalUtils.getLoginUser().getId();
|
||||
}
|
||||
// return
|
||||
ScheduleRecordShow show = new ScheduleRecordShow();
|
||||
show.setYear(Integer.valueOf(year));
|
||||
show.setMonths(new ArrayList<>());
|
||||
|
||||
List<ScheduleRecord> scheduleRecords = scheduleRecordMapper.scheduleRecord(year, month, userId);
|
||||
if (CollectionUtils.isEmpty(scheduleRecords)) {
|
||||
return show;
|
||||
}
|
||||
|
||||
handleMonths(scheduleRecords, show);
|
||||
return show;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ScheduleRecordShow scheduleShow(Integer year, Integer month, String userId) {
|
||||
if (ObjectUtil.isNull(year)) {
|
||||
throw new RuntimeException("参数缺失 year");
|
||||
}
|
||||
if (StrUtil.isBlank(userId)) {
|
||||
userId = GlobalUtils.getLoginUser().getId();
|
||||
}
|
||||
// return
|
||||
ScheduleRecordShow show = new ScheduleRecordShow();
|
||||
show.setYear(year);
|
||||
|
||||
if (ObjectUtil.isNull(month)) {
|
||||
month = getThisMonth();
|
||||
}
|
||||
|
||||
// 过往月
|
||||
if (month < getThisMonth()) {
|
||||
return this.scheduleRecord(String.valueOf(year), String.valueOf(month), userId);
|
||||
}
|
||||
|
||||
// 未来月
|
||||
if (month > getThisMonth()) {
|
||||
ScheduleMonth futureMonth = getFutureMonth(year, month, userId);
|
||||
show.setMonths(Collections.singletonList(futureMonth));
|
||||
return show;
|
||||
}
|
||||
|
||||
// 当前月
|
||||
ScheduleMonth months = getCurrentMonth(year, month, userId);
|
||||
show.setMonths(Collections.singletonList(months));
|
||||
return show;
|
||||
}
|
||||
|
||||
|
||||
private ScheduleMonth getFutureMonth(Integer year, Integer month, String userId) {
|
||||
// 默认排班
|
||||
List<ScheduleDefault> scheduleDefaults = listScheduleDefault(userId);
|
||||
// 自定义排班
|
||||
List<ScheduleCustom> customList = listScheduleCustom(year, month, userId);
|
||||
|
||||
return convertDefaultToMonth(year, month, scheduleDefaults, customList);
|
||||
}
|
||||
|
||||
private ScheduleMonth getCurrentMonth(Integer year, Integer month, String userId) {
|
||||
// 值班记录
|
||||
List<ScheduleMonth> months = this.scheduleRecord(String.valueOf(year), String.valueOf(month), userId).getMonths();
|
||||
ScheduleMonth recordMonth = new ScheduleMonth();
|
||||
recordMonth.setMonth(month);
|
||||
recordMonth.setDays(new ArrayList<>());
|
||||
if (CollectionUtils.isNotEmpty(months)) {
|
||||
recordMonth = months.get(0);
|
||||
}
|
||||
|
||||
// 未来/当天值班
|
||||
ScheduleMonth futureMonth = getFutureMonth(year, month, userId);
|
||||
|
||||
// 将 list2 中不存在于 list1 的元素添加到 list1
|
||||
for (ScheduleDay day2 : futureMonth.getDays()) {
|
||||
boolean exists = false;
|
||||
for (ScheduleDay day1 : recordMonth.getDays()) {
|
||||
if (day1.getDay().equals(day2.getDay())) {
|
||||
exists = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!exists) {
|
||||
recordMonth.getDays().add(day2);
|
||||
}
|
||||
}
|
||||
|
||||
return recordMonth;
|
||||
}
|
||||
|
||||
private ScheduleMonth convertDefaultToMonth(int year, int month, List<ScheduleDefault> scheduleDefaults, List<ScheduleCustom> customList) {
|
||||
ScheduleMonth result = new ScheduleMonth();
|
||||
result.setMonth(month);
|
||||
if (CollectionUtils.isEmpty(scheduleDefaults) && CollectionUtils.isEmpty(customList)) {
|
||||
result.setDays(Collections.emptyList());
|
||||
return result;
|
||||
}
|
||||
|
||||
List<ScheduleDay> dayList = new ArrayList<>();
|
||||
|
||||
Map<Integer, List<ScheduleDefault>> collect = scheduleDefaults.parallelStream().collect(Collectors.groupingBy(ScheduleDefault::getWeek));
|
||||
collect.forEach((week, defaults) -> {
|
||||
List<Integer> days = DateUtils.monthAllDayOfTheWeek(year, month, week);
|
||||
days.forEach(dayOfMonth -> {
|
||||
long am = defaults.parallelStream().filter(f -> EmergencyConstants.AM.equals(f.getType())).count();
|
||||
long pm = defaults.parallelStream().filter(f -> EmergencyConstants.PM.equals(f.getType())).count();
|
||||
ScheduleDay day = new ScheduleDay();
|
||||
day.setDay(dayOfMonth);
|
||||
day.setAm(am >= 1);
|
||||
day.setPm(pm >= 1);
|
||||
dayList.add(day);
|
||||
});
|
||||
});
|
||||
|
||||
// 自定义替换默认
|
||||
handleDefaultCustom(dayList, customList);
|
||||
|
||||
result.setDays(dayList);
|
||||
return result;
|
||||
}
|
||||
|
||||
private void handleDefaultCustom(List<ScheduleDay> dayList, List<ScheduleCustom> customList) {
|
||||
if (CollectionUtils.isEmpty(customList)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// 自定义
|
||||
List<ScheduleDay> dayCustom = new ArrayList<>();
|
||||
Map<Date, List<ScheduleCustom>> collect = customList.parallelStream().collect(Collectors.groupingBy(ScheduleCustom::getScheduleTime));
|
||||
collect.forEach((date, scheduleCustoms) -> {
|
||||
ScheduleDay custom = new ScheduleDay();
|
||||
long am = scheduleCustoms.parallelStream().filter(f -> EmergencyConstants.AM.equals(f.getType())).count();
|
||||
long pm = scheduleCustoms.parallelStream().filter(f -> EmergencyConstants.PM.equals(f.getType())).count();
|
||||
custom.setDay(DateUtil.dayOfMonth(date));
|
||||
custom.setAm(am >= 1);
|
||||
custom.setPm(pm >= 1);
|
||||
dayCustom.add(custom);
|
||||
});
|
||||
|
||||
// 替换或添加元素到 list1
|
||||
for (ScheduleDay day2 : dayCustom) {
|
||||
boolean replaced = false;
|
||||
for (int i = 0; i < dayList.size(); i++) {
|
||||
ScheduleDay day1 = dayList.get(i);
|
||||
if (day1.getDay().equals(day2.getDay())) {
|
||||
dayList.set(i, day2);
|
||||
replaced = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!replaced) {
|
||||
dayList.add(day2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private List<ScheduleDefault> listScheduleDefault(String userId) {
|
||||
// 默认值班
|
||||
LambdaQueryWrapper<ScheduleDefault> queryWrapper = GlobalUtils.getLambdaQueryWrapper();
|
||||
queryWrapper.select(ScheduleDefault::getUserId,
|
||||
ScheduleDefault::getType,
|
||||
ScheduleDefault::getWeek)
|
||||
.eq(ScheduleDefault::getUserId, userId);
|
||||
return scheduleDefaultMapper.selectList(queryWrapper);
|
||||
}
|
||||
|
||||
private List<ScheduleCustom> listScheduleCustom(int year, int month, String userId) {
|
||||
// 自定义值班
|
||||
return scheduleCustomMapper.listScheduleByMonth(year, month, userId);
|
||||
}
|
||||
|
||||
|
||||
private int getThisMonth() {
|
||||
return DateUtil.thisMonth() + 1;
|
||||
}
|
||||
|
||||
private int getThisDay() {
|
||||
return DateUtil.dayOfMonth(new Date());
|
||||
}
|
||||
|
||||
private void handleMonths(List<ScheduleRecord> list, ScheduleRecordShow show) {
|
||||
if (CollectionUtils.isEmpty(list)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// 月数据
|
||||
List<ScheduleMonth> months = new ArrayList<>();
|
||||
|
||||
Map<String, List<ScheduleRecord>> monthMap = list.parallelStream().collect(Collectors.groupingBy(ScheduleRecord::getMonth));
|
||||
|
||||
monthMap.forEach((month, list1) -> {
|
||||
ScheduleMonth scheduleMonth = new ScheduleMonth();
|
||||
scheduleMonth.setMonth(Integer.parseInt(month));
|
||||
scheduleMonth.setDays(handleDays(list1));
|
||||
|
||||
months.add(scheduleMonth);
|
||||
});
|
||||
|
||||
show.setMonths(months);
|
||||
}
|
||||
|
||||
private List<ScheduleDay> handleDays(List<ScheduleRecord> list) {
|
||||
if (CollectionUtils.isEmpty(list)) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
List<ScheduleDay> days = new ArrayList<>();
|
||||
Map<String, List<ScheduleRecord>> dayMap = list.parallelStream().collect(Collectors.groupingBy(ScheduleRecord::getDay));
|
||||
dayMap.forEach((day, list1) -> {
|
||||
ScheduleDay scheduleDay = new ScheduleDay();
|
||||
long am = list1.parallelStream().filter(f -> EmergencyConstants.AM.equals(f.getType())).count();
|
||||
long pm = list1.parallelStream().filter(f -> EmergencyConstants.PM.equals(f.getType())).count();
|
||||
scheduleDay.setDay(Integer.valueOf(day));
|
||||
scheduleDay.setAm(am >= 1);
|
||||
scheduleDay.setPm(pm >= 1);
|
||||
|
||||
days.add(scheduleDay);
|
||||
});
|
||||
return days;
|
||||
}
|
||||
|
||||
}
|
||||
+79
@@ -0,0 +1,79 @@
|
||||
package com.renkang.emergency.api.service.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.renkang.emergency.api.service.IEmergencySeriousDiseaseService;
|
||||
import com.renkang.emergency.entity.EmergencySeriousDisease;
|
||||
import com.renkang.emergency.entity.EmergencySeriousDiseaseDO;
|
||||
import com.renkang.emergency.mapper.EmergencySeriousDiseaseMapper;
|
||||
import org.apache.commons.compress.utils.Lists;
|
||||
import org.apache.shiro.SecurityUtils;
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
import org.jeecg.common.system.vo.LoginUser;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Description: 大病就医
|
||||
* @Author: jeecg-boot
|
||||
* @Date: 2023-04-23
|
||||
* @Version: V1.0
|
||||
*/
|
||||
@Service
|
||||
public class EmergencySeriousDiseaseServiceImpl extends ServiceImpl<EmergencySeriousDiseaseMapper, EmergencySeriousDisease> implements IEmergencySeriousDiseaseService {
|
||||
|
||||
@Autowired
|
||||
private EmergencySeriousDiseaseMapper emergencySeriousDiseaseMapper;
|
||||
|
||||
@Override
|
||||
public Result<String> appointmentSeeDoctor(EmergencySeriousDiseaseDO emergencySeriousDiseaseDO) {
|
||||
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IPage<EmergencySeriousDisease> pageList(Page<EmergencySeriousDisease> page, EmergencySeriousDisease emergencySeriousDisease) {
|
||||
return emergencySeriousDiseaseMapper.pageList(page, emergencySeriousDisease);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<EmergencySeriousDiseaseDO> selectEmergencySeriousDiseaseListByState(Integer pageNo, Integer pageSize, String state) {
|
||||
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
||||
|
||||
Page<EmergencySeriousDisease> page = new Page<EmergencySeriousDisease>(pageNo, pageSize);
|
||||
|
||||
List<EmergencySeriousDisease> list = emergencySeriousDiseaseMapper.selectEmergencySeriousDiseaseListByState(page, state, sysUser.getId());
|
||||
|
||||
List<EmergencySeriousDiseaseDO> res = Lists.newArrayList();
|
||||
if (CollectionUtil.isNotEmpty(list)) {
|
||||
|
||||
if (CollectionUtil.isNotEmpty(list)) {
|
||||
for (EmergencySeriousDisease emergencySeriousDisease : list) {
|
||||
EmergencySeriousDiseaseDO aa = BeanUtil.toBean(emergencySeriousDisease, EmergencySeriousDiseaseDO.class);
|
||||
res.add(aa);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@Override
|
||||
public void expireEmergencySeriousDiseaseList() {
|
||||
|
||||
emergencySeriousDiseaseMapper.updateEmergencyStateOne();
|
||||
emergencySeriousDiseaseMapper.updateEmergencyStateTeo();
|
||||
}
|
||||
|
||||
public int selectEmergencyExist(String userId){
|
||||
return emergencySeriousDiseaseMapper.selectEmergencyExist(userId);
|
||||
}
|
||||
}
|
||||
+503
@@ -0,0 +1,503 @@
|
||||
package com.renkang.emergency.api.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.date.DateTime;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.lang.Validator;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.renkang.emergency.bean.request.CenterOpenTime;
|
||||
import com.renkang.emergency.bean.request.EmergencySocket;
|
||||
import com.renkang.emergency.entity.EmergencyCenter;
|
||||
import com.renkang.emergency.entity.TblBaseHospitalVo;
|
||||
import com.renkang.emergency.entity.TblUserHelp;
|
||||
import com.renkang.emergency.service.EmergencyCenterOpenTimeService;
|
||||
import com.renkang.emergency.service.IEmergencyCenterService;
|
||||
import com.renkang.emergency.service.ISysNotifySmsPhoneService;
|
||||
import com.renkang.emergency.service.ITblAmbulanceGpsService;
|
||||
import com.renkang.emergency.util.CodeConstant;
|
||||
import com.renkang.emergency.websocket.WebSocket;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.jeecg.bean.request.ListUser;
|
||||
import org.jeecg.common.api.dto.message.BusTemplateMessageDTO;
|
||||
import org.jeecg.common.constant.CommonConstant;
|
||||
import org.jeecg.common.system.api.ISysBaseAPI;
|
||||
import org.jeecg.common.system.vo.LoginUser;
|
||||
import org.jeecg.common.system.vo.LoginUserNew;
|
||||
import org.jeecg.global.GlobalUtils;
|
||||
import org.jeecg.modules.manager.ISysCache;
|
||||
import org.jeecg.modules.system.entity.SysDepart;
|
||||
import org.jeecg.modules.system.entity.SysUser;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
||||
/**
|
||||
* 大屏相关
|
||||
*/
|
||||
@Slf4j
|
||||
@RequiredArgsConstructor
|
||||
@Service("largeScreenService")
|
||||
public class LargeScreenImpl {
|
||||
private final IEmergencyCenterService centerService;
|
||||
private final ITblAmbulanceGpsService tblAmbulanceGpsService;
|
||||
private final EmergencyCenterOpenTimeService centerOpenTimeService;
|
||||
|
||||
private final ISysBaseAPI sysBaseAPI;
|
||||
private final ISysNotifySmsPhoneService sysNotifySmsPhoneService;
|
||||
private final ISysCache sysCache;
|
||||
private final WebSocket webSocket;
|
||||
private static final String UNKNOWN_USER = "UNKNOWN_";
|
||||
|
||||
/**
|
||||
* 紧急求助大屏推送(应急就医与120)
|
||||
*
|
||||
* @param socket 推送信息
|
||||
* @param longitude 经纬度
|
||||
* @param latitude 经纬度
|
||||
* @param busId busId
|
||||
*/
|
||||
public void orderPush(EmergencySocket socket, Double longitude, Double latitude, String busId) {
|
||||
log.info("获取应急中心... 执行时间: {}", System.currentTimeMillis());
|
||||
EmergencyCenter center = this.getCenter(socket);
|
||||
socket.setCenterId(center.getId());
|
||||
log.info("构建应急求助推送消息... 执行时间: {}", System.currentTimeMillis());
|
||||
this.setPushMsg(socket, center, longitude, latitude);
|
||||
// 开始推送
|
||||
this.startPush(socket, busId, center,0);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 七陌电话大屏推送
|
||||
*/
|
||||
public void qimoPush(TblUserHelp userHelp) {
|
||||
log.info("根据坐席号获取应急中心... 执行时间: {}", System.currentTimeMillis());
|
||||
EmergencySocket socket = new EmergencySocket();
|
||||
socket.setPopType(2);
|
||||
socket.setQueue(userHelp.getQueue());
|
||||
socket.setNoticeId(userHelp.getNoticeId());
|
||||
socket.setCenterId(userHelp.getCenterId());
|
||||
EmergencyCenter center = this.getCenter(socket);
|
||||
LoginUserNew sysUser;
|
||||
if (userHelp.getUserId().startsWith(UNKNOWN_USER)) {
|
||||
sysUser = null;
|
||||
} else {
|
||||
// 查询用户相关信息
|
||||
List<LoginUserNew> loginUserNews = sysBaseAPI.listUserByIds(new ListUser(Collections.singletonList(userHelp.getUserId())));
|
||||
sysUser = CollectionUtils.isEmpty(loginUserNews) ? null : loginUserNews.get(0);
|
||||
}
|
||||
log.info("构建七陌电话推送消息... 执行时间: {}", System.currentTimeMillis());
|
||||
this.setQimoPushMsg(socket, sysUser, userHelp);
|
||||
// 开始推送
|
||||
this.startPush(socket, userHelp.getId(), center, 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* 开始推送
|
||||
*
|
||||
* @param socket 推送信息
|
||||
* @param busId busId
|
||||
* @param center 应急中心
|
||||
* @param type 0:应急就医 1:七陌电话
|
||||
* Ps:新增type
|
||||
*/
|
||||
private void startPush(EmergencySocket socket, String busId, EmergencyCenter center,Integer type) {
|
||||
// 根据 center.getDefaultCenter() 状态 走不同逻辑 true:旧版逻辑 false:新版逻辑
|
||||
if (center.getDefaultCenter()) {
|
||||
this.defaultLargeScreenPush(socket);
|
||||
this.defaultSmsPush(socket, busId, center, type);
|
||||
} else {
|
||||
log.info("新版大屏推送... 执行时间: {}", System.currentTimeMillis());
|
||||
webSocket.pushMessageBase(socket);
|
||||
this.newSmsPush(socket, busId, center, type);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 旧版大屏推送
|
||||
*
|
||||
* @param socket 推送信息
|
||||
*/
|
||||
private void defaultLargeScreenPush(EmergencySocket socket) {
|
||||
if (StrUtil.isNotEmpty(socket.getOrgCode()) && socket.getOrgCode().contains("A01A59")) {
|
||||
log.info("银川大屏推送... 执行时间: {}", System.currentTimeMillis());
|
||||
webSocket.pushMessageYc(socket);
|
||||
} else {
|
||||
log.info("西安大屏推送... 执行时间: {}", System.currentTimeMillis());
|
||||
webSocket.pushMessageXn(socket);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 旧版短信推送
|
||||
*
|
||||
* @param socket 推送信息
|
||||
* @param busId busId
|
||||
*/
|
||||
private void defaultSmsPush(EmergencySocket socket, String busId, EmergencyCenter center, Integer type) {
|
||||
log.info("旧版短信推送开始... 执行时间: {}", System.currentTimeMillis());
|
||||
Set<String> mobiles = new HashSet<>();
|
||||
this.setPhonePush(socket, mobiles);
|
||||
// 发送短信
|
||||
this.sendSms(new ArrayList<>(mobiles), socket, busId, center, type);
|
||||
log.info("旧版短信推送结束... 执行时间: {}", System.currentTimeMillis());
|
||||
}
|
||||
|
||||
/**
|
||||
* 新版短信推送
|
||||
*
|
||||
* @param socket 推送信息
|
||||
* @param busId busId
|
||||
*/
|
||||
private void newSmsPush(EmergencySocket socket, String busId, EmergencyCenter center,Integer type) {
|
||||
log.info("新版短信推送开始... 执行时间: {}", System.currentTimeMillis());
|
||||
String mobiles = setSmsDataNew(center, findPhone(socket.getOrgCode()));
|
||||
if (StrUtil.isNotEmpty(mobiles)) {
|
||||
List<String> phoneList = Arrays.asList(mobiles.split(","));
|
||||
// 发送短信
|
||||
this.sendSms(phoneList, socket, busId, center, type);
|
||||
}
|
||||
log.info("新版短信推送结束... 执行时间: {}", System.currentTimeMillis());
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送短信
|
||||
*
|
||||
* @param phoneList 手机号列表
|
||||
* @param socket 推送信息
|
||||
* @param busId busId
|
||||
* Ps: type==0 时发送的是应急就医(应急中心 和 120 电话)的短信 type==1 时发送的是七陌电话的短信
|
||||
*/
|
||||
private void sendSms(List<String> phoneList, EmergencySocket socket, String busId, EmergencyCenter center, Integer type) {
|
||||
if (CollUtil.isNotEmpty(phoneList)) {
|
||||
phoneList.forEach(phone -> {
|
||||
if (StrUtil.isBlank(phone)) {
|
||||
return;
|
||||
}
|
||||
if (type==0){
|
||||
Map<String, String> data = new HashMap<String, String>();
|
||||
data.put("userName", socket.getRealName());
|
||||
data.put("departName", socket.getDepartName());
|
||||
data.put("secondDepartName", socket.getOrgName());
|
||||
data.put("mobile", socket.getPhone());
|
||||
String code = "";
|
||||
if ("0".equals(socket.getType())) {
|
||||
log.info("拨打120,准备发送短信给【{}】", phone);
|
||||
code = "noticeUserHelp_120";
|
||||
}
|
||||
if ("1".equals(socket.getType())) {
|
||||
log.info("应急就医,准备发送短信给【{}】", phone);
|
||||
code = "noticeUserHelp_emer";
|
||||
}
|
||||
if (StrUtil.isNotEmpty(code)) {
|
||||
sysBaseAPI.sendBusSms(new BusTemplateMessageDTO("admin", phone, data, code, code, busId));
|
||||
}
|
||||
}
|
||||
|
||||
if (type == 1){
|
||||
String noticeContent = String.format("[%s] %s (%s-%s)", StrUtil.isEmpty(socket.getQueue()) ? center.getCenterName() : socket.getQueue(),
|
||||
socket.getRealName(), socket.getDepartName(), socket.getDepartName());
|
||||
Map<String, String> data = new HashMap<>(2);
|
||||
data.put("noticeContent", noticeContent);
|
||||
data.put("mobile", socket.getPhone());
|
||||
String templateCode = "qimoNotice";
|
||||
String busType = "emergency_qimo";
|
||||
sysBaseAPI.sendBusSms(new BusTemplateMessageDTO("qimo", phone, data, templateCode, busType, socket.getNoticeId()));
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 构建紧急求助推送消息
|
||||
*
|
||||
* @param socket 消息对象
|
||||
* @param center 应急中心
|
||||
* @param longitude 经纬度
|
||||
* @param latitude 经纬度
|
||||
*/
|
||||
private void setPushMsg(EmergencySocket socket, EmergencyCenter center, Double longitude, Double latitude) {
|
||||
LoginUser sysUser = GlobalUtils.getLoginUser();
|
||||
socket.setPopType(1);
|
||||
socket.setUserId(sysUser.getId());
|
||||
socket.setRealName(sysUser.getRealname());
|
||||
socket.setAge(sysUser.getAge());
|
||||
socket.setSex(sysUser.getSex());
|
||||
socket.setPhone(sysUser.getPhone());
|
||||
this.setDepartmentInfo(socket, sysUser.getOrgCode());
|
||||
// 获取所有资源
|
||||
List<TblBaseHospitalVo> allList = tblAmbulanceGpsService.getAllList(String.valueOf(center.getLatitude()), String.valueOf(center.getLongitude()), null, null);
|
||||
socket.setLon(longitude);
|
||||
socket.setLat(latitude);
|
||||
List<TblBaseHospitalVo> hospitalSocketVoList = new ArrayList<>();
|
||||
if (CollUtil.isNotEmpty(allList)) {
|
||||
List<TblBaseHospitalVo> threeNearestHospitals = findThreeNearestHospitals(allList, socket.getLon(), socket.getLat());
|
||||
threeNearestHospitals.forEach(item -> {
|
||||
TblBaseHospitalVo hospitalSocketVo = new TblBaseHospitalVo();
|
||||
hospitalSocketVo.setName(item.getName());
|
||||
hospitalSocketVo.setLon(item.getLon());
|
||||
hospitalSocketVo.setLat(item.getLat());
|
||||
hospitalSocketVoList.add(hospitalSocketVo);
|
||||
});
|
||||
}
|
||||
socket.setHospitalList(hospitalSocketVoList);
|
||||
}
|
||||
|
||||
private void setQimoPushMsg(EmergencySocket socket, LoginUserNew sysUser, TblUserHelp userHelp) {
|
||||
if (sysUser != null) {
|
||||
socket.setUserId(sysUser.getId());
|
||||
socket.setRealName(sysUser.getRealname());
|
||||
socket.setAge(sysUser.getAge());
|
||||
socket.setSex(sysUser.getSex());
|
||||
socket.setPhone(sysUser.getPhone());
|
||||
// 设置部门信息
|
||||
this.setDepartmentInfo(socket,sysUser.getOrgCode());
|
||||
} else {
|
||||
// 设置默认信息
|
||||
socket.setUserId(null);
|
||||
socket.setRealName("未知");
|
||||
socket.setDepartCode("未知");
|
||||
socket.setDepartName("未知");
|
||||
socket.setOrgCode("未知");
|
||||
socket.setOrgName("未知");
|
||||
socket.setPhone(userHelp.getOutMobile());
|
||||
}
|
||||
// 获取所有资源 电话没有经纬度
|
||||
// List<TblBaseHospitalVo> allList = tblAmbulanceGpsService.getAllList(String.valueOf(center.getLatitude()), String.valueOf(center.getLongitude()), null, null);
|
||||
// if (userHelp.getLon()!=null){
|
||||
// socket.setLon(userHelp.getLon().doubleValue());
|
||||
// }
|
||||
// if (userHelp.getLat()!=null){
|
||||
// socket.setLat(userHelp.getLat().doubleValue());
|
||||
// }
|
||||
|
||||
// List<TblBaseHospitalVo> hospitalSocketVoList = new ArrayList<>();
|
||||
// if (CollUtil.isNotEmpty(allList)) {
|
||||
// List<TblBaseHospitalVo> threeNearestHospitals = findThreeNearestHospitals(allList, socket.getLon(), socket.getLat());
|
||||
// threeNearestHospitals.forEach(item -> {
|
||||
// TblBaseHospitalVo hospitalSocketVo = new TblBaseHospitalVo();
|
||||
// hospitalSocketVo.setName(item.getName());
|
||||
// hospitalSocketVo.setLon(item.getLon());
|
||||
// hospitalSocketVo.setLat(item.getLat());
|
||||
// hospitalSocketVoList.add(hospitalSocketVo);
|
||||
// });
|
||||
// }
|
||||
// socket.setHospitalList(hospitalSocketVoList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据单位与部门code查询应急中心(如果都没找到则查询默认应急中心)
|
||||
*
|
||||
* @param socket 推送信息
|
||||
* @return 应急中心
|
||||
*/
|
||||
private EmergencyCenter getCenter(EmergencySocket socket) {
|
||||
EmergencyCenter center;
|
||||
if (StrUtil.isNotBlank(socket.getCenterId())) {
|
||||
center = centerService.getById(socket.getCenterId());
|
||||
} else {
|
||||
// 所有的应急中心
|
||||
List<EmergencyCenter> emergencyCenters = centerService.list(new LambdaQueryWrapper<EmergencyCenter>()
|
||||
.eq(EmergencyCenter::getStatus, CommonConstant.STATUS_0));
|
||||
|
||||
center = emergencyCenters.stream()
|
||||
.filter(currentCenter -> matchOrgCode(socket.getOrgCode(), currentCenter.getServiceScope()))
|
||||
.findFirst()
|
||||
.orElse(null);
|
||||
|
||||
if (ObjectUtil.isNull(center)) {
|
||||
center = emergencyCenters.stream()
|
||||
.filter(EmergencyCenter::getDefaultCenter)
|
||||
.findAny()
|
||||
.orElseGet(() -> {
|
||||
EmergencyCenter defaultCenter = new EmergencyCenter();
|
||||
defaultCenter.setDefaultCenter(true);
|
||||
defaultCenter.setId("1000000000000000000");
|
||||
defaultCenter.setLatitude(BigDecimal.valueOf(34.327286));
|
||||
defaultCenter.setLongitude(BigDecimal.valueOf(108.945167));
|
||||
return defaultCenter;
|
||||
});
|
||||
}
|
||||
}
|
||||
if (ObjectUtil.isNotNull(center)) {
|
||||
center.setOpenTimes(centerOpenTimeService.findTime(center.getId()));
|
||||
}
|
||||
return center;
|
||||
}
|
||||
|
||||
private Boolean matchOrgCode(String orgCode, String serviceScope) {
|
||||
if (StrUtil.isBlank(serviceScope)) {
|
||||
return false;
|
||||
}
|
||||
for (String scope : serviceScope.split(",")) {
|
||||
if (orgCode.startsWith(scope)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 构建需要推送短信的电话(旧版)
|
||||
*
|
||||
* @param mobiles 电话列表
|
||||
*/
|
||||
private void setPhonePush(EmergencySocket socket, Set<String> mobiles) {
|
||||
List<SysDepart> departChildrenByCode = sysCache.getDepartChildrenByCode(socket.getOrgCode());
|
||||
if (CollUtil.isNotEmpty(departChildrenByCode)) {
|
||||
// 获取健康管理员
|
||||
List<SysUser> healtherList = sysBaseAPI.selectUserByRoleCode("healther").getResult();
|
||||
if (CollUtil.isNotEmpty(healtherList)) {
|
||||
mobiles.addAll(healtherList.stream().map(SysUser::getPhone).filter(Validator::isMobile).collect(Collectors.toList()));
|
||||
}
|
||||
|
||||
// 获取事务站站长
|
||||
List<SysUser> stationList = sysBaseAPI.selectUserByRoleCode("station").getResult();
|
||||
if (CollUtil.isNotEmpty(stationList)) {
|
||||
mobiles.addAll(stationList.stream().map(SysUser::getPhone).filter(Validator::isMobile).collect(Collectors.toList()));
|
||||
}
|
||||
}
|
||||
//健康科 王娜 李翎,应急电话
|
||||
Set<String> phoneNumbers = sysNotifySmsPhoneService.getPhoneNumbers(CodeConstant.NOTIFY_SMS_CENTER, CodeConstant.NOTIFY_SMS_XIAN);
|
||||
mobiles.addAll(phoneNumbers.stream().filter(Validator::isMobile).collect(Collectors.toList()));
|
||||
}
|
||||
|
||||
/**
|
||||
* 查找健康管理员电话
|
||||
*
|
||||
* @param orgCode 机构编码
|
||||
* @return 部门
|
||||
*/
|
||||
private String findPhone(String orgCode) {
|
||||
if (!StrUtil.startWith(orgCode, "A01")) {
|
||||
return "";
|
||||
}
|
||||
String orgCodeForLoop = orgCode;
|
||||
SysDepart depart;
|
||||
while (true) {
|
||||
depart = sysCache.getDepartByOrgCode(orgCodeForLoop);
|
||||
if (ObjectUtil.isNull(depart) || StrUtil.isBlank(depart.getHealthManageUserMobile())) {
|
||||
if (orgCodeForLoop.length() >= 6) {
|
||||
orgCodeForLoop = orgCodeForLoop.substring(0, orgCodeForLoop.length() - 3);
|
||||
continue;
|
||||
} else {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
return depart.getHealthManageUserMobile();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 非值班时间内的异常向值班电话发送短信 向健康管理员字段追加中心值班电话逻辑
|
||||
*
|
||||
* @param center 应急中心
|
||||
* @param mobiles 电话(,分隔)
|
||||
* @return 电话(, 分隔)
|
||||
*/
|
||||
public String setSmsDataNew(EmergencyCenter center, String mobiles) {
|
||||
StringBuilder updatedMobiles = new StringBuilder(mobiles);
|
||||
if (ObjectUtil.isNotEmpty(center.getOpenTimes())) {
|
||||
if (!isCurrentTimeInOpenTimes(center.getOpenTimes())) {
|
||||
if (ObjectUtil.isNotEmpty(center.getDutyPhone())) {
|
||||
String dutyPhone = center.getDutyPhone();
|
||||
if (updatedMobiles.length() > 0) {
|
||||
updatedMobiles.append(",");
|
||||
}
|
||||
updatedMobiles.append(dutyPhone);
|
||||
}
|
||||
}
|
||||
}
|
||||
return updatedMobiles.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置部门信息
|
||||
* @param socket socket
|
||||
* @param orgCode 部门编码
|
||||
*/
|
||||
private void setDepartmentInfo(EmergencySocket socket, String orgCode) {
|
||||
SysDepart secondDepart = sysCache.getDepartByOrgCode(GlobalUtils.getSecondDepartOrgCode(orgCode));
|
||||
Optional<SysDepart> optionalSecondDepart = Optional.ofNullable(secondDepart);
|
||||
socket.setDepartCode(optionalSecondDepart.map(SysDepart::getOrgCode).orElse(""));
|
||||
socket.setDepartName(optionalSecondDepart.map(SysDepart::getDepartName).orElse(""));
|
||||
|
||||
SysDepart thirdDepart = sysCache.getDepartByOrgCode(GlobalUtils.getThirdDepartOrgCode(orgCode));
|
||||
Optional<SysDepart> optionalThirdDepart = Optional.ofNullable(thirdDepart);
|
||||
socket.setOrgCode(optionalThirdDepart.map(SysDepart::getOrgCode).orElse(""));
|
||||
socket.setOrgName(optionalThirdDepart.map(SysDepart::getDepartName).orElse(""));
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断当前时间是否在值班时间段内
|
||||
*/
|
||||
public boolean isCurrentTimeInOpenTimes(List<CenterOpenTime> openTimes) {
|
||||
DateTime now = DateUtil.date();
|
||||
String format = "HH:mm";
|
||||
for (CenterOpenTime openTime : openTimes) {
|
||||
DateTime start = DateUtil.parse(openTime.getOpenTimeStart(), format);
|
||||
DateTime end = DateUtil.parse(openTime.getOpenTimeStart(), format);
|
||||
if (now.isAfterOrEquals(start) && now.isBeforeOrEquals(end)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取最近的医院
|
||||
*
|
||||
* @param allList 所有医院
|
||||
* @param lon 经纬度
|
||||
* @param lat 经纬度
|
||||
* @return 最近的医院列表
|
||||
*/
|
||||
public List<TblBaseHospitalVo> findThreeNearestHospitals(List<TblBaseHospitalVo> allList, final Double lon, final Double lat) {
|
||||
if (allList == null || allList.size() < 3) {
|
||||
return allList; // 如果列表中没有足够的点,则返回全部点
|
||||
}
|
||||
|
||||
// 先对整个列表进行排序
|
||||
allList.sort(new Comparator<TblBaseHospitalVo>() {
|
||||
@Override
|
||||
public int compare(TblBaseHospitalVo h1, TblBaseHospitalVo h2) {
|
||||
double dist1 = distance(lat, lon, h1.getLat().doubleValue(), h1.getLon().doubleValue());
|
||||
double dist2 = distance(lon, lat, h2.getLat().doubleValue(), h2.getLon().doubleValue());
|
||||
return Double.compare(dist1, dist2);
|
||||
}
|
||||
});
|
||||
|
||||
// 选择前三个最近的点
|
||||
return new ArrayList<>(allList.subList(0, 3));
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算两点之间的距离
|
||||
*
|
||||
* @param lat1 经纬度1
|
||||
* @param lon1 经纬度1
|
||||
* @param lat2 经纬度2
|
||||
* @param lon2 经纬度2
|
||||
* @return 距离
|
||||
*/
|
||||
private static double distance(double lat1, double lon1, double lat2, double lon2) {
|
||||
// 地球半径(单位:千米)
|
||||
final int R = 6371;
|
||||
|
||||
double latDistance = Math.toRadians(lat2 - lat1);
|
||||
double lonDistance = Math.toRadians(lon2 - lon1);
|
||||
double a = Math.sin(latDistance / 2) * Math.sin(latDistance / 2)
|
||||
+ Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2))
|
||||
* Math.sin(lonDistance / 2) * Math.sin(lonDistance / 2);
|
||||
double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
|
||||
// 将距离转化为米
|
||||
return R * c * 1000;
|
||||
}
|
||||
}
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
package com.renkang.emergency.archives.controller;
|
||||
|
||||
import com.renkang.emergency.archives.model.vo.EmergencyCenterInfo;
|
||||
import com.renkang.emergency.archives.service.ArchivesEmergencyCenterService;
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author stan
|
||||
* @since 2024-12-23 10:23
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("archives/emergency")
|
||||
public class ArchivesEmergencyCenterController {
|
||||
|
||||
@Autowired
|
||||
private ArchivesEmergencyCenterService archivesEmergencyCenterService;
|
||||
|
||||
|
||||
/**
|
||||
* 所有的应急中心
|
||||
* @return list
|
||||
*/
|
||||
@GetMapping("centers")
|
||||
public Result<List<EmergencyCenterInfo>> centers() {
|
||||
return Result.ok(archivesEmergencyCenterService.centers());
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+50
@@ -0,0 +1,50 @@
|
||||
package com.renkang.emergency.archives.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.renkang.emergency.archives.model.dto.ResourceArchivesPageParam;
|
||||
import com.renkang.emergency.archives.model.vo.YearsStatistic;
|
||||
import com.renkang.emergency.archives.model.vo.ResourceArchivesInfo;
|
||||
import com.renkang.emergency.archives.service.ArchivesResourceService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Description: 档案模块-机构信息-应急医院控制器
|
||||
* @Author: feng
|
||||
* @Date: 2024-11-20
|
||||
* @Version: V1.0
|
||||
*/
|
||||
@Tag(name = "档案/机构信息/应急医院")
|
||||
@RestController
|
||||
@RequestMapping("/archives")
|
||||
@RequiredArgsConstructor
|
||||
public class ArchivesResourceController {
|
||||
private final ArchivesResourceService archivesResourceService;
|
||||
|
||||
@GetMapping("/page")
|
||||
@Operation(summary = "应急医院列表数据", description = "应急医院列表数据")
|
||||
public Result<IPage<ResourceArchivesInfo>> medicalResourceArchivesPage(ResourceArchivesPageParam pageParam) {
|
||||
return Result.OK(archivesResourceService.resourceArchivesPage(pageParam));
|
||||
}
|
||||
|
||||
@GetMapping("/geo")
|
||||
@Operation(summary = "应急医院地图数据", description = "应急医院地图数据")
|
||||
public Result<List<ResourceArchivesInfo>> medicalResourceArchivesMap(ResourceArchivesPageParam param) {
|
||||
return Result.OK(archivesResourceService.resourceArchivesMap(param));
|
||||
}
|
||||
|
||||
@GetMapping("/years-statistic")
|
||||
@Operation(summary = "历年服务人数变化", description = "历年服务人次变化")
|
||||
public Result<List<YearsStatistic>> yearsDiagnosisStatistic(@RequestParam(name = "id") @Parameter(description = "医院ID") String id) {
|
||||
return Result.OK(archivesResourceService.yearsStatistic(id));
|
||||
}
|
||||
}
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
package com.renkang.emergency.archives.model.dto;
|
||||
|
||||
import com.renkang.emergency.entity.Resource;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.jeecg.base.Criteria;
|
||||
import org.jeecg.base.PageInfo;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Schema(title = "档案应急医院列表参数", description = "档案应急医院列表参数")
|
||||
public class ResourceArchivesPageParam extends PageInfo<Resource> {
|
||||
@Schema(description = "应急医院名称")
|
||||
@Criteria(value = Criteria.Mode.LIKE, property = "name")
|
||||
private String resourceName;
|
||||
|
||||
@Schema(description = "查询类型(默认油田 1:油田医院 2:合作医院)")
|
||||
private Integer type;
|
||||
public Integer getType(){
|
||||
return this.type==null?1:this.type;
|
||||
}
|
||||
|
||||
@Schema(description = "医院等级")
|
||||
private Integer level;
|
||||
|
||||
@Schema(description = "查询年份(默认当年)")
|
||||
private Integer year;
|
||||
}
|
||||
+28
@@ -0,0 +1,28 @@
|
||||
package com.renkang.emergency.archives.model.vo;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* @author stan
|
||||
* @since 2024-12-24 13:18
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
public class EmergencyCenterInfo {
|
||||
private String centerId;
|
||||
private String centerName;
|
||||
private BigDecimal longitude;
|
||||
private BigDecimal latitude;
|
||||
private String address;
|
||||
// 操作人员数量
|
||||
private Integer opNum;
|
||||
// 专业人员数量
|
||||
private Integer majNum;
|
||||
// 当年应急人次
|
||||
private Integer thisYearNum;
|
||||
// 累计应急人次
|
||||
private Integer totalYearNum;
|
||||
}
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
package com.renkang.emergency.archives.model.vo;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
/**
|
||||
* @author stan
|
||||
* @since 2024-12-24 14:12
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
public class EmergencyNum {
|
||||
// 应急中心id
|
||||
private String id;
|
||||
// 发起应急的数量
|
||||
private Integer num;
|
||||
}
|
||||
+66
@@ -0,0 +1,66 @@
|
||||
package com.renkang.emergency.archives.model.vo;
|
||||
|
||||
import com.renkang.emergency.entity.Resource;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.jeecg.common.aspect.annotation.Dict;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Schema(title = "档案应急医院列表数据模型", description = "档案应急医院列表数据模型")
|
||||
public class ResourceArchivesInfo {
|
||||
/**医院ID*/
|
||||
@Schema(title = "医院ID")
|
||||
private String id;
|
||||
/**名称*/
|
||||
@Schema(title = "医院名称")
|
||||
private String name;
|
||||
/**等级*/
|
||||
@Schema(title = "医院等级")
|
||||
@Dict(dicCode = "hospital_level")
|
||||
private String level;
|
||||
/**地址*/
|
||||
@Schema(title = "详细地址")
|
||||
private String address;
|
||||
/**电话*/
|
||||
@Schema(title = "联系电话")
|
||||
private String mobile;
|
||||
/**类型*/
|
||||
@Schema(title = "类型(默认油田 1:油田医院 2:合作医院)")
|
||||
private String type;
|
||||
/**经度*/
|
||||
@Schema(title = "经度")
|
||||
private BigDecimal longitude;
|
||||
/**纬度*/
|
||||
@Schema(title = "纬度")
|
||||
private BigDecimal latitude;
|
||||
/**图片*/
|
||||
@Schema(title = "图片")
|
||||
private String img;
|
||||
/**当年诊疗人次*/
|
||||
@Schema(title = "当年服务人次")
|
||||
private Integer thisYearSum;
|
||||
/**当年诊疗人次年份*/
|
||||
@Schema(title = "当年服务人次年份")
|
||||
private Integer year;
|
||||
/**累积诊疗人次*/
|
||||
@Schema(title = "累积服务人次")
|
||||
private Integer allSum;
|
||||
|
||||
public ResourceArchivesInfo(Resource resource) {
|
||||
this.id = resource.getId();
|
||||
this.name = resource.getName();
|
||||
this.address = resource.getAddress();
|
||||
this.type = resource.getType();
|
||||
this.level = resource.getLevel();
|
||||
this.mobile = resource.getMobile();
|
||||
this.longitude = resource.getLongitude();
|
||||
this.latitude = resource.getLatitude();
|
||||
this.img = resource.getImg();
|
||||
}
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
package com.renkang.emergency.archives.model.vo;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class ResourceStatisticVo {
|
||||
private String resourceId;
|
||||
private Integer sums;
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
package com.renkang.emergency.archives.model.vo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
@Schema(title = "档案应急医院趋势数据模型", description = "档案应急医院趋势数据模型")
|
||||
public class YearsStatistic {
|
||||
@Schema(title = "当年服务人次")
|
||||
private Integer sums;
|
||||
|
||||
@Schema(title = "年份")
|
||||
private Integer year;
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
package com.renkang.emergency.archives.service;
|
||||
|
||||
import com.renkang.emergency.archives.model.vo.EmergencyCenterInfo;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author stan
|
||||
* @since 2024-12-24
|
||||
*/
|
||||
public interface ArchivesEmergencyCenterService {
|
||||
List<EmergencyCenterInfo> centers();
|
||||
}
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
package com.renkang.emergency.archives.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.renkang.emergency.archives.model.dto.ResourceArchivesPageParam;
|
||||
import com.renkang.emergency.archives.model.vo.YearsStatistic;
|
||||
import com.renkang.emergency.archives.model.vo.ResourceArchivesInfo;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Description: 档案模块-机构信息-一线医疗service
|
||||
* @Author: feng
|
||||
* @Date: 2024-11-20
|
||||
* @Version: V1.0
|
||||
*/
|
||||
public interface ArchivesResourceService {
|
||||
/**
|
||||
* 应急医院列表数据
|
||||
*/
|
||||
IPage<ResourceArchivesInfo> resourceArchivesPage(ResourceArchivesPageParam pageParam);
|
||||
|
||||
/**
|
||||
*应急医院地图数据
|
||||
*/
|
||||
List<ResourceArchivesInfo> resourceArchivesMap(ResourceArchivesPageParam param);
|
||||
|
||||
/**
|
||||
*历年诊疗人数变化
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
List<YearsStatistic> yearsStatistic(String id);
|
||||
}
|
||||
+108
@@ -0,0 +1,108 @@
|
||||
package com.renkang.emergency.archives.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.renkang.emergency.archives.model.vo.EmergencyCenterInfo;
|
||||
import com.renkang.emergency.archives.model.vo.EmergencyNum;
|
||||
import com.renkang.emergency.archives.service.ArchivesEmergencyCenterService;
|
||||
import com.renkang.emergency.entity.EmergencyCenter;
|
||||
import com.renkang.emergency.entity.EmergencyProfessionUser;
|
||||
import com.renkang.emergency.mapper.EmergencyCenterMapper;
|
||||
import com.renkang.emergency.mapper.EmergencyProfessionUserMapper;
|
||||
import com.renkang.emergency.mapper.OrderMapper;
|
||||
import org.jeecg.global.GlobalUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
||||
/**
|
||||
* @author stan
|
||||
* @since 2024-12-24
|
||||
*/
|
||||
@Service
|
||||
public class ArchivesEmergencyCenterServiceImpl implements ArchivesEmergencyCenterService {
|
||||
|
||||
@Autowired
|
||||
private EmergencyCenterMapper emergencyCenterMapper;
|
||||
@Autowired
|
||||
private EmergencyProfessionUserMapper emergencyProfessionUserMapper;
|
||||
@Autowired
|
||||
private OrderMapper orderMapper;
|
||||
|
||||
@Override
|
||||
public List<EmergencyCenterInfo> centers() {
|
||||
List<String> managedCodes = GlobalUtils.getManagedCodes(null);
|
||||
if (CollUtil.isEmpty(managedCodes) || managedCodes.contains("A99")) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
LambdaQueryWrapper<EmergencyCenter> queryWrapper = new LambdaQueryWrapper<>();
|
||||
// 权限过滤
|
||||
queryWrapper.or(andWrapper -> {
|
||||
for (int i = 0; i < managedCodes.size(); i++) {
|
||||
if (i != 0) {
|
||||
andWrapper.or();
|
||||
}
|
||||
andWrapper.likeRight(EmergencyCenter::getOrgCode, managedCodes.get(i));
|
||||
}
|
||||
});
|
||||
// 如果后续涉及到操作人员 专业人员查看的需求 这里的方法替换成 IEmergencyCenterService.allCenter()接口
|
||||
List<EmergencyCenter> emergencyCenters = emergencyCenterMapper.selectList(queryWrapper);
|
||||
if (CollUtil.isEmpty(emergencyCenters)) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
// 应急中心ids
|
||||
List<String> centerIds = emergencyCenters.stream().map(EmergencyCenter::getId).collect(Collectors.toList());
|
||||
// 操作人员 专业人员数量
|
||||
List<EmergencyProfessionUser> userNum = emergencyProfessionUserMapper.findUserNum();
|
||||
// 当年应急 累计应急
|
||||
List<EmergencyNum> emergencyThisYear = orderMapper.emergencyNum(centerIds, "0");
|
||||
List<EmergencyNum> emergencyTotal = orderMapper.emergencyNum(centerIds, "1");
|
||||
|
||||
List<EmergencyCenterInfo> infos = new ArrayList<>();
|
||||
emergencyCenters.forEach(center -> {
|
||||
EmergencyCenterInfo info = new EmergencyCenterInfo();
|
||||
info.setCenterId(center.getId());
|
||||
info.setCenterName(center.getCenterName());
|
||||
info.setAddress(center.getAddress());
|
||||
info.setLongitude(center.getLongitude());
|
||||
info.setLatitude(center.getLatitude());
|
||||
|
||||
info.setOpNum(userNum.stream()
|
||||
.filter(user -> center.getId().equals(user.getCenterId()))
|
||||
.map(EmergencyProfessionUser::getOperatorNum)
|
||||
.findFirst()
|
||||
.orElse(0)
|
||||
);
|
||||
info.setMajNum(userNum.stream()
|
||||
.filter(user -> center.getId().equals(user.getCenterId()))
|
||||
.map(EmergencyProfessionUser::getProfessionNum)
|
||||
.findFirst()
|
||||
.orElse(0)
|
||||
);
|
||||
|
||||
info.setThisYearNum(emergencyThisYear.stream()
|
||||
.filter(year -> center.getId().equals(year.getId()))
|
||||
.map(EmergencyNum::getNum)
|
||||
.findFirst()
|
||||
.orElse(0)
|
||||
);
|
||||
|
||||
info.setTotalYearNum(emergencyTotal.stream()
|
||||
.filter(year -> center.getId().equals(year.getId()))
|
||||
.map(EmergencyNum::getNum)
|
||||
.findFirst()
|
||||
.orElse(0)
|
||||
);
|
||||
|
||||
infos.add(info);
|
||||
});
|
||||
|
||||
return infos;
|
||||
}
|
||||
}
|
||||
+123
@@ -0,0 +1,123 @@
|
||||
package com.renkang.emergency.archives.service.impl;
|
||||
|
||||
import cn.hutool.core.date.DatePattern;
|
||||
import cn.hutool.core.date.DateTime;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.github.yulichang.base.MPJBaseMapper;
|
||||
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
||||
import com.renkang.emergency.archives.model.dto.ResourceArchivesPageParam;
|
||||
import com.renkang.emergency.archives.model.vo.YearsStatistic;
|
||||
import com.renkang.emergency.archives.model.vo.ResourceArchivesInfo;
|
||||
import com.renkang.emergency.archives.model.vo.ResourceStatisticVo;
|
||||
import com.renkang.emergency.archives.service.ArchivesResourceService;
|
||||
import com.renkang.emergency.entity.Order;
|
||||
import com.renkang.emergency.entity.Resource;
|
||||
import com.renkang.emergency.mapper.OrderMapper;
|
||||
import com.renkang.emergency.mapper.ResourceMapper;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.jeecg.util.WrapperUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Description: 档案模块-机构信息-一线医疗serviceimpl
|
||||
* @Author: feng
|
||||
* @Date: 2024-11-20
|
||||
* @Version: V1.0
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class ArchivesResourceServiceImpl implements ArchivesResourceService {
|
||||
private static final Logger log = LoggerFactory.getLogger(ArchivesResourceServiceImpl.class);
|
||||
private final ResourceMapper resourceMapper;
|
||||
private final OrderMapper orderMapper;
|
||||
|
||||
@Override
|
||||
public IPage<ResourceArchivesInfo> resourceArchivesPage(ResourceArchivesPageParam pageParam) {
|
||||
IPage<ResourceArchivesInfo> resultPage = new Page<>();
|
||||
LambdaQueryWrapper<Resource> wrapper = WrapperUtils.initLambdaWrapper(pageParam);
|
||||
wrapper.like(StrUtil.isNotEmpty(pageParam.getResourceName()),Resource::getName,pageParam.getResourceName());
|
||||
wrapper.eq(ObjectUtil.isNotEmpty(pageParam.getType()),Resource::getType,pageParam.getType());
|
||||
wrapper.eq(ObjectUtil.isNotEmpty(pageParam.getLevel()), Resource::getLevel, pageParam.getLevel());
|
||||
IPage<Resource> resourceIPage = resourceMapper.selectPage(new Page<>(pageParam.getPageNo(),pageParam.getPageSize()),wrapper);
|
||||
BeanUtils.copyProperties(resourceIPage, resultPage, "records");
|
||||
if(ObjectUtil.isNotEmpty(resourceIPage.getRecords())){
|
||||
List<ResourceArchivesInfo> archivesInfos = resourceIPage.getRecords().stream().map(ResourceArchivesInfo::new).collect(Collectors.toList());
|
||||
Integer year = ObjectUtil.isNull(pageParam.getYear())? DateUtil.thisYear() : pageParam.getYear();
|
||||
disposeMedicalResourceStaticData(archivesInfos,year);
|
||||
resultPage.setRecords(archivesInfos);
|
||||
}
|
||||
return resultPage;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ResourceArchivesInfo> resourceArchivesMap(ResourceArchivesPageParam param) {
|
||||
LambdaQueryWrapper<Resource> wrapper = WrapperUtils.initLambdaWrapper(param);
|
||||
wrapper.eq(ObjectUtil.isNotEmpty(param.getType()),Resource::getType,param.getType());
|
||||
List<Resource> resourceList = resourceMapper.selectList(wrapper);
|
||||
List<ResourceArchivesInfo> archivesInfos = resourceList.stream().map(ResourceArchivesInfo::new).collect(Collectors.toList());
|
||||
if(ObjectUtil.isNotEmpty(archivesInfos)){
|
||||
Integer year = ObjectUtil.isNull(param.getYear())? DateUtil.thisYear() : param.getYear();
|
||||
disposeMedicalResourceStaticData(archivesInfos,year);
|
||||
}
|
||||
return archivesInfos;
|
||||
}
|
||||
|
||||
private void disposeMedicalResourceStaticData(List<ResourceArchivesInfo> archivesInfos, Integer year){
|
||||
Set<String> resourceIds = archivesInfos.stream().map(ResourceArchivesInfo::getId).collect(Collectors.toSet());
|
||||
//统计当年服务人数
|
||||
CompletableFuture<Map<String,Integer>> completableFutureThisYearSum = CompletableFuture.supplyAsync(() -> selectThisYearSum(resourceIds,year));
|
||||
//统计历年服务人数
|
||||
CompletableFuture<Map<String,Integer>> completableFutureAllDiagnosisSum = CompletableFuture.supplyAsync(() -> selectAllSum(resourceIds));
|
||||
CompletableFuture.allOf(completableFutureThisYearSum, completableFutureAllDiagnosisSum).join();
|
||||
try {
|
||||
Map<String,Integer> allSumMap = completableFutureAllDiagnosisSum.get();
|
||||
Map<String,Integer> thisYearDiagnosisSumMap = completableFutureThisYearSum.get();
|
||||
for (ResourceArchivesInfo info : archivesInfos){
|
||||
info.setYear(year);
|
||||
info.setAllSum(Optional.ofNullable(allSumMap.get(info.getId())).orElse(0));
|
||||
info.setThisYearSum(Optional.ofNullable(thisYearDiagnosisSumMap.get(info.getId())).orElse(0));
|
||||
}
|
||||
} catch (InterruptedException | ExecutionException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
private Map<String,Integer> selectThisYearSum(Set<String> medicalResourceIds,Integer year){
|
||||
MPJLambdaWrapper<Order> queryWrapper = new MPJLambdaWrapper<>();
|
||||
Date yearDate =new DateTime(year.toString(), DatePattern.NORM_YEAR_PATTERN);
|
||||
queryWrapper.between(Order::getOrderOverTime,DateUtil.beginOfYear(yearDate),DateUtil.endOfYear(yearDate));
|
||||
return commonStatistic(queryWrapper, orderMapper, medicalResourceIds);
|
||||
}
|
||||
|
||||
private Map<String,Integer> selectAllSum(Set<String> medicalResourceIds){
|
||||
MPJLambdaWrapper<Order> queryWrapper = new MPJLambdaWrapper<>();
|
||||
return commonStatistic(queryWrapper, orderMapper, medicalResourceIds);
|
||||
}
|
||||
|
||||
private <T> Map<String,Integer> commonStatistic(MPJLambdaWrapper<T> queryWrapper, MPJBaseMapper<T> mapper, Set<String> medicalResourceIds){
|
||||
queryWrapper.selectAs("resource_id", ResourceStatisticVo::getResourceId);
|
||||
queryWrapper.selectCount("id", ResourceStatisticVo::getSums);
|
||||
queryWrapper.in("resource_id",medicalResourceIds);
|
||||
queryWrapper.groupBy("resource_id");
|
||||
List<ResourceStatisticVo> list = mapper.selectJoinList(ResourceStatisticVo.class,queryWrapper);
|
||||
return list.stream().collect(Collectors.toMap(ResourceStatisticVo::getResourceId, ResourceStatisticVo::getSums,(k1, k2) -> k1));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<YearsStatistic> yearsStatistic(String medicalCenterId) {
|
||||
return resourceMapper.yearsStatistic(medicalCenterId);
|
||||
}
|
||||
}
|
||||
+235
@@ -0,0 +1,235 @@
|
||||
package com.renkang.emergency.async;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.github.yulichang.query.MPJLambdaQueryWrapper;
|
||||
import com.renkang.emergency.entity.EmergencyGrouped;
|
||||
import com.renkang.emergency.entity.TblQimoNotice;
|
||||
import com.renkang.emergency.entity.dto.CallLogDTO;
|
||||
import com.renkang.emergency.entity.vo.CallLogExportVO;
|
||||
import com.renkang.emergency.mapper.EmergencyGroupedMapper;
|
||||
import com.renkang.emergency.service.IEmergencyGroupedService;
|
||||
import com.renkang.emergency.service.ITbQimoNoticeService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.poi.ss.usermodel.Sheet;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.apache.shiro.SecurityUtils;
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
import org.jeecg.common.system.api.ISysBaseAPI;
|
||||
import org.jeecg.common.system.vo.LoginUser;
|
||||
import org.jeecg.common.util.MyUploadUtil;
|
||||
import org.jeecg.global.GlobalUtils;
|
||||
import org.jeecg.modules.exports.entity.CommonExportsInfo;
|
||||
import org.jeecg.modules.manager.ISysCache;
|
||||
import org.jeecg.modules.system.bean.UserEmployee;
|
||||
import org.jeecg.modules.system.entity.SysDepart;
|
||||
import org.jeecg.modules.system.entity.SysUser;
|
||||
import org.jeecgframework.poi.excel.ExcelExportUtil;
|
||||
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
|
||||
import org.jeecgframework.poi.excel.entity.ExportParams;
|
||||
import org.jeecgframework.poi.excel.export.styler.ExcelExportStylerBorderImpl;
|
||||
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.net.URLEncoder;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
@Slf4j
|
||||
public class AsyncImportService {
|
||||
|
||||
@Resource
|
||||
private ISysBaseAPI sysBaseAPI;
|
||||
@Resource
|
||||
private ISysCache sysCache;
|
||||
@Value("${jeecg.path.upload}")
|
||||
private String upLoadPath;
|
||||
@Resource
|
||||
private ITbQimoNoticeService tbQimoNoticeService;
|
||||
@Resource
|
||||
private IEmergencyGroupedService groupedService;
|
||||
@Resource
|
||||
private EmergencyGroupedMapper groupedMapper;
|
||||
|
||||
@Async
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void asyncExport(CallLogDTO dto, CommonExportsInfo info, String empFinish, String errCode, String sheetName, String fileName) {
|
||||
LambdaQueryWrapper<TblQimoNotice> queryWrapper = new LambdaQueryWrapper<>();
|
||||
// 基础信息查询
|
||||
if (StrUtil.isNotEmpty(dto.getRealName())||StrUtil.isNotEmpty(dto.getOrgCode())) {
|
||||
Result<Page<UserEmployee>> pageResult = sysBaseAPI.feignQueryPageList(dto.getRealName(), null, dto.getOrgCode(), null, null, null, 1, 999999);
|
||||
if (pageResult.isSuccess()) {
|
||||
List<UserEmployee> records = pageResult.getResult().getRecords();
|
||||
List<String> phoneList = records.stream().map(SysUser::getPhone).distinct().collect(Collectors.toList());
|
||||
if (CollUtil.isNotEmpty(phoneList)){
|
||||
queryWrapper.in(TblQimoNotice::getCallNo, phoneList);
|
||||
}else {
|
||||
queryWrapper.eq(TblQimoNotice::getCallNo, "0");
|
||||
}
|
||||
}
|
||||
}
|
||||
// 应急中心
|
||||
if (StrUtil.isNotEmpty(dto.getCenterId())) {
|
||||
LambdaQueryWrapper<EmergencyGrouped> groupedWrapper = new LambdaQueryWrapper<>();
|
||||
groupedWrapper.eq(EmergencyGrouped::getCenterId, dto.getCenterId());
|
||||
List<EmergencyGrouped> list = groupedService.list(groupedWrapper);
|
||||
List<String> seatIdList = list.stream().map(EmergencyGrouped::getSeatId).distinct().collect(Collectors.toList());
|
||||
if (CollUtil.isNotEmpty(seatIdList)) {
|
||||
queryWrapper.in(TblQimoNotice::getExten, seatIdList);
|
||||
}else {
|
||||
queryWrapper.eq(TblQimoNotice::getExten, "0");
|
||||
}
|
||||
}
|
||||
// 坐席工号
|
||||
if (StrUtil.isNotEmpty(dto.getSeatId())) {
|
||||
queryWrapper.eq(TblQimoNotice::getExten, dto.getSeatId());
|
||||
}
|
||||
List<TblQimoNotice> list = tbQimoNoticeService.list(queryWrapper);
|
||||
info.setExportMsg("通话记录导出中");
|
||||
info.setHandleMsg("0/" + list.size());
|
||||
info.setHandleEndTime(new Date());
|
||||
GlobalUtils.setFeignToken();
|
||||
sysBaseAPI.updateExportsInfo(info);
|
||||
List<CallLogExportVO> exports = new ArrayList<>();
|
||||
if (CollUtil.isNotEmpty(list)) {
|
||||
// 工号list
|
||||
List<String> seatIdList = list.stream().map(TblQimoNotice::getExten).filter(ObjectUtil::isNotEmpty).distinct().collect(Collectors.toList());
|
||||
// 坐席组map
|
||||
Map<String, EmergencyGrouped> groupedMap = getGroupedMapBySeatIdList(seatIdList);
|
||||
// 手机号list
|
||||
List<String> phoneList = list.stream().map(TblQimoNotice::getCallNo).filter(ObjectUtil::isNotEmpty).distinct().collect(Collectors.toList());
|
||||
Map<String, SysUser> userMap = getUserMapByPhoneList(phoneList);
|
||||
|
||||
for (TblQimoNotice tblQimoNotice : list) {
|
||||
CallLogExportVO exportVO = new CallLogExportVO();
|
||||
SysUser user = userMap.get(tblQimoNotice.getCallNo());
|
||||
// 设置单位信息
|
||||
String orgName = Optional.ofNullable(user).map(u -> {
|
||||
SysDepart secondDepart = sysCache.getDepartByOrgCode(GlobalUtils.getSecondDepartOrgCode(u.getOrgCode()));
|
||||
return Optional.ofNullable(secondDepart).map(SysDepart::getDepartName).orElse("");
|
||||
}).orElse("");
|
||||
exportVO.setOrgName(orgName);
|
||||
// 设置部门信息
|
||||
String departName = Optional.ofNullable(user).map(u -> {
|
||||
SysDepart thirdDepart = sysCache.getDepartByOrgCode(GlobalUtils.getThirdDepartOrgCode(u.getOrgCode()));
|
||||
return Optional.ofNullable(thirdDepart).map(SysDepart::getDepartName).orElse("");
|
||||
}).orElse("");
|
||||
exportVO.setDepartName(departName);
|
||||
// 设置用户信息
|
||||
if (user != null) {
|
||||
exportVO.setRealName(user.getRealname());
|
||||
exportVO.setSex(user.getSex());
|
||||
} else {
|
||||
exportVO.setRealName("未知用户_" + tblQimoNotice.getCallNo());
|
||||
}
|
||||
// 设置其他字段
|
||||
exportVO.setCenterName(Optional.ofNullable(groupedMap.get(tblQimoNotice.getExten())).map(EmergencyGrouped::getCenterName).orElse(""));
|
||||
exportVO.setSeatId(tblQimoNotice.getExten());
|
||||
exportVO.setPhone(tblQimoNotice.getCallNo());
|
||||
Optional.ofNullable(tblQimoNotice.getBegin())
|
||||
.ifPresent(begin -> Optional.ofNullable(tblQimoNotice.getEnd()).ifPresent(end -> {
|
||||
exportVO.setCallDuration(String.valueOf(end.getTime() - begin.getTime()));
|
||||
}));
|
||||
exportVO.setCallTime(Optional.ofNullable(tblQimoNotice.getBegin())
|
||||
.map(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.ENGLISH)::format).orElse(""));
|
||||
exports.add(exportVO);
|
||||
}
|
||||
}
|
||||
// 导出设置
|
||||
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
||||
ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
|
||||
// 此处设置的filename无效 ,前端会重新更新设置一下
|
||||
String encode = null;
|
||||
try {
|
||||
encode = URLEncoder.encode(sheetName, "UTF-8");
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
log.error("导出文件名编码异常", e);
|
||||
}
|
||||
|
||||
// 配置导出参数
|
||||
ExportParams exportParams = new ExportParams(sheetName + "报表", "导出人:" + sysUser.getRealname(), sheetName);
|
||||
exportParams.setStyle(ExcelExportStylerBorderImpl.class);
|
||||
exportParams.setImageBasePath(upLoadPath);
|
||||
|
||||
// 设置导出的数据
|
||||
mv.addObject(NormalExcelConstants.FILE_NAME, encode);
|
||||
mv.addObject(NormalExcelConstants.CLASS, CallLogExportVO.class);
|
||||
mv.addObject(NormalExcelConstants.PARAMS, exportParams);
|
||||
mv.addObject(NormalExcelConstants.DATA_LIST, exports);
|
||||
|
||||
// 记录条数
|
||||
info.setHandleMsg(exports.size()+ "/" + exports.size());
|
||||
|
||||
// 生成 Workbook 对象并修改
|
||||
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, CallLogExportVO.class, exports);
|
||||
Sheet sheet = workbook.getSheetAt(0);
|
||||
|
||||
try {
|
||||
// 将 Workbook 写入 ByteArrayOutputStream
|
||||
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
||||
workbook.write(out);
|
||||
byte[] workbookBytes = out.toByteArray();
|
||||
ByteArrayInputStream in = new ByteArrayInputStream(workbookBytes);
|
||||
|
||||
// 上传 FTP
|
||||
String suffixName = ".xlsx";
|
||||
in.reset();
|
||||
String url = MyUploadUtil.upload(in, MyUploadUtil.IMPORT_BIZ, fileName + suffixName);
|
||||
info.setExportUrl(url);
|
||||
|
||||
// 关闭流
|
||||
in.close();
|
||||
out.close();
|
||||
} catch (Exception e) {
|
||||
log.error("导出异常", e);
|
||||
} finally {
|
||||
// 数据导入完成
|
||||
info.setExportStatus(empFinish);
|
||||
info.setExportMsg("医护人员导出完成");
|
||||
info.setHandleEndTime(new Date());
|
||||
GlobalUtils.setFeignToken();
|
||||
sysBaseAPI.updateExportsInfo(info);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取坐席组map
|
||||
* @param seatIdList 工号list
|
||||
* @return 坐席组list
|
||||
*/
|
||||
private Map<String, EmergencyGrouped> getGroupedMapBySeatIdList(List<String> seatIdList) {
|
||||
MPJLambdaQueryWrapper<EmergencyGrouped> seatWrapper = new MPJLambdaQueryWrapper<>();
|
||||
seatWrapper.selectAll(EmergencyGrouped.class);
|
||||
seatWrapper.in(EmergencyGrouped::getSeatId, seatIdList);
|
||||
List<EmergencyGrouped> groupedList = groupedService.list(seatWrapper);
|
||||
return groupedList.stream().collect(Collectors.toMap(EmergencyGrouped::getSeatId, item -> item));
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量根据手机号获取用户map
|
||||
* @param phoneList
|
||||
* @return
|
||||
*/
|
||||
private Map<String, SysUser> getUserMapByPhoneList(List<String> phoneList) {
|
||||
Result<List<SysUser>> userByPhoneList = sysBaseAPI.getUserByPhoneList(phoneList);
|
||||
return userByPhoneList.getResult().stream()
|
||||
.collect(Collectors.toMap(
|
||||
SysUser::getPhone,
|
||||
item -> item,
|
||||
(existing, replacement) -> existing // 如果有重复,保留现有项
|
||||
));
|
||||
}
|
||||
}
|
||||
+114
@@ -0,0 +1,114 @@
|
||||
package com.renkang.emergency.beanvalidator;
|
||||
|
||||
import javax.validation.ConstraintViolation;
|
||||
import javax.validation.ConstraintViolationException;
|
||||
import javax.validation.Validator;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* JSR303 Validator(Hibernate Validator)工具类.
|
||||
* <p>
|
||||
* ConstraintViolation中包含propertyPath, message 和invalidValue等信息.
|
||||
* 提供了各种convert方法,适合不同的i18n需求:
|
||||
* 1.List<String>, String内容为message
|
||||
* 2.List<String>, String内容为propertyPath + separator + message
|
||||
* 3.Map<propertyPath, message>
|
||||
*/
|
||||
public class BeanValidators {
|
||||
|
||||
/**
|
||||
* 调用JSR303的validate方法, 验证失败时抛出ConstraintViolationException.
|
||||
*/
|
||||
public static void validateWithException(Validator validator,
|
||||
Object object, Class<?>... groups)
|
||||
throws ConstraintViolationException {
|
||||
Set constraintViolations = validator.validate(object, groups);
|
||||
if (!constraintViolations.isEmpty()) {
|
||||
throw new ConstraintViolationException(constraintViolations);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 辅助方法,
|
||||
* 转换ConstraintViolationException中的Set<ConstraintViolations>中为List<message>.
|
||||
*/
|
||||
public static List<String> extractMessage(ConstraintViolationException e) {
|
||||
return extractMessage(e.getConstraintViolations());
|
||||
}
|
||||
|
||||
/**
|
||||
* 辅助方法, 转换Set<ConstraintViolation>为List<message>
|
||||
*/
|
||||
public static List<String> extractMessage(
|
||||
Set<? extends ConstraintViolation> constraintViolations) {
|
||||
List<String> errorMessages = new ArrayList<String>();
|
||||
for (ConstraintViolation violation : constraintViolations) {
|
||||
errorMessages.add(violation.getMessage());
|
||||
}
|
||||
return errorMessages;
|
||||
}
|
||||
|
||||
/**
|
||||
* 辅助方法,
|
||||
* 转换ConstraintViolationException中的Set<ConstraintViolations>为Map<property,
|
||||
* message>.
|
||||
*/
|
||||
public static Map<String, String> extractPropertyAndMessage(
|
||||
ConstraintViolationException e) {
|
||||
return extractPropertyAndMessage(e.getConstraintViolations());
|
||||
}
|
||||
|
||||
/**
|
||||
* 辅助方法, 转换Set<ConstraintViolation>为Map<property, message>.
|
||||
*/
|
||||
public static Map<String, String> extractPropertyAndMessage(
|
||||
Set<? extends ConstraintViolation> constraintViolations) {
|
||||
Map<String, String> errorMessages = new HashMap<String, String>();
|
||||
for (ConstraintViolation violation : constraintViolations) {
|
||||
errorMessages.put(violation.getPropertyPath().toString(),
|
||||
violation.getMessage());
|
||||
}
|
||||
return errorMessages;
|
||||
}
|
||||
|
||||
/**
|
||||
* 辅助方法, 转换ConstraintViolationException中的Set<ConstraintViolations>为List<
|
||||
* propertyPath message>.
|
||||
*/
|
||||
public static List<String> extractPropertyAndMessageAsList(
|
||||
ConstraintViolationException e) {
|
||||
return extractPropertyAndMessageAsList(e.getConstraintViolations(), " ");
|
||||
}
|
||||
|
||||
/**
|
||||
* 辅助方法, 转换Set<ConstraintViolations>为List<propertyPath message>.
|
||||
*/
|
||||
public static List<String> extractPropertyAndMessageAsList(
|
||||
Set<? extends ConstraintViolation> constraintViolations) {
|
||||
return extractPropertyAndMessageAsList(constraintViolations, " ");
|
||||
}
|
||||
|
||||
/**
|
||||
* 辅助方法, 转换ConstraintViolationException中的Set<ConstraintViolations>为List<
|
||||
* propertyPath +separator+ message>.
|
||||
*/
|
||||
public static List<String> extractPropertyAndMessageAsList(
|
||||
ConstraintViolationException e, String separator) {
|
||||
return extractPropertyAndMessageAsList(e.getConstraintViolations(),
|
||||
separator);
|
||||
}
|
||||
|
||||
/**
|
||||
* 辅助方法, 转换Set<ConstraintViolation>为List<propertyPath +separator+ message>.
|
||||
*/
|
||||
public static List<String> extractPropertyAndMessageAsList(
|
||||
Set<? extends ConstraintViolation> constraintViolations,
|
||||
String separator) {
|
||||
List<String> errorMessages = new ArrayList<String>();
|
||||
for (ConstraintViolation violation : constraintViolations) {
|
||||
errorMessages.add(violation.getPropertyPath() + separator
|
||||
+ violation.getMessage());
|
||||
}
|
||||
return errorMessages;
|
||||
}
|
||||
}
|
||||
+255
@@ -0,0 +1,255 @@
|
||||
package com.renkang.emergency.controller;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.renkang.emergency.constant.EmergencyConstants;
|
||||
import com.renkang.emergency.entity.Aed;
|
||||
import com.renkang.emergency.manager.AedCacheManager;
|
||||
import com.renkang.emergency.manager.AedManger;
|
||||
import com.renkang.emergency.service.IAedService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
import org.jeecg.common.aspect.annotation.AutoLog;
|
||||
import org.jeecg.common.system.base.controller.JeecgController;
|
||||
import org.jeecg.common.system.query.QueryGenerator;
|
||||
import org.jeecg.global.GlobalUtils;
|
||||
import org.jeecg.modules.manager.ISysCache;
|
||||
import org.jeecg.modules.system.entity.SysDepart;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Description: aed
|
||||
* @Author: jeecg-boot
|
||||
* @Date: 2023-12-12
|
||||
* @Version: V1.0
|
||||
*/
|
||||
@Tag(name = "aed")
|
||||
@RestController
|
||||
@RequestMapping("/emergency/aed")
|
||||
@Slf4j
|
||||
public class AedController extends JeecgController<Aed, IAedService> {
|
||||
@Autowired
|
||||
private IAedService aedService;
|
||||
@Autowired
|
||||
private AedManger aedManger;
|
||||
@Autowired
|
||||
private AedCacheManager aedCacheManager;
|
||||
@Autowired
|
||||
private ISysCache sysCache;
|
||||
|
||||
/**
|
||||
* 分页列表查询
|
||||
*
|
||||
* @param aed
|
||||
* @param pageNo
|
||||
* @param pageSize
|
||||
* @param req
|
||||
* @return
|
||||
*/
|
||||
//@AutoLog(value = "aed-分页列表查询")
|
||||
@Operation(summary = "aed-分页列表查询", description = "aed-分页列表查询")
|
||||
@GetMapping(value = "/list")
|
||||
public Result<IPage<Aed>> queryPageList(Aed aed,
|
||||
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
|
||||
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
|
||||
HttpServletRequest req) {
|
||||
QueryWrapper<Aed> queryWrapper = QueryGenerator.initQueryWrapper(aed, req.getParameterMap());
|
||||
Page<Aed> page = new Page<Aed>(pageNo, pageSize);
|
||||
IPage<Aed> pageList = aedService.page(page, queryWrapper);
|
||||
handleDepartName(pageList.getRecords());
|
||||
return Result.OK(pageList);
|
||||
}
|
||||
|
||||
private void handleDepartName(List<Aed> list) {
|
||||
if (CollectionUtil.isEmpty(list)) {
|
||||
return;
|
||||
}
|
||||
list.forEach(aed -> {
|
||||
// 单位
|
||||
SysDepart sysDepart = sysCache.getDepartByOrgCode(GlobalUtils.getSecondDepartOrgCode(aed.getDepartCode()));
|
||||
if (sysDepart != null) {
|
||||
aed.setSecondDepartName(sysDepart.getDepartName());
|
||||
}
|
||||
|
||||
// 部门
|
||||
if (StrUtil.isNotBlank(aed.getDepartCode()) && aed.getDepartCode().length() > 6) {
|
||||
SysDepart secondDepart = sysCache.getDepartByOrgCode(aed.getDepartCode());
|
||||
if (secondDepart != null) {
|
||||
aed.setDepartName(secondDepart.getDepartName());
|
||||
}
|
||||
}
|
||||
|
||||
// 管理部门
|
||||
SysDepart manageDepart = sysCache.getDepartByOrgCode(aed.getManageDepartCode());
|
||||
if (manageDepart != null) {
|
||||
aed.setManageDepartName(manageDepart.getDepartName());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加
|
||||
*
|
||||
* @param aed
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "aed-添加")
|
||||
@Operation(summary = "aed-添加", description = "aed-添加")
|
||||
// @RequiresPermissions("emergency:aed:add")
|
||||
@PostMapping(value = "/add")
|
||||
public Result<String> add(@RequestBody Aed aed) {
|
||||
if (ObjectUtil.isNotNull(aed.getLongitude())) {
|
||||
if (aed.getLongitude().compareTo(EmergencyConstants.LONGITUDE_START) < 0
|
||||
|| aed.getLongitude().compareTo(EmergencyConstants.LONGITUDE_END) > 0) {
|
||||
return Result.error("经度范围正常值为:" + EmergencyConstants.LONGITUDE_START + "--" + EmergencyConstants.LONGITUDE_END);
|
||||
}
|
||||
}
|
||||
if (ObjectUtil.isNotNull(aed.getLatitude())) {
|
||||
if (aed.getLatitude().compareTo(EmergencyConstants.LATITUDE_START) < 0
|
||||
|| aed.getLatitude().compareTo(EmergencyConstants.LATITUDE_END) > 0) {
|
||||
return Result.error("维度范围正常值为:" + EmergencyConstants.LATITUDE_START + "--" + EmergencyConstants.LATITUDE_END);
|
||||
}
|
||||
}
|
||||
|
||||
// 数据保存
|
||||
aedService.save(aed);
|
||||
// 添加redis geo
|
||||
aedManger.addGeo(aed);
|
||||
|
||||
return Result.OK("添加成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑
|
||||
*
|
||||
* @param aed
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "aed-编辑")
|
||||
@Operation(summary = "aed-编辑", description = "aed-编辑")
|
||||
// @RequiresPermissions("emergency:aed:edit")
|
||||
@RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST})
|
||||
public Result<String> edit(@RequestBody Aed aed) {
|
||||
|
||||
if (ObjectUtil.isNotNull(aed.getLongitude())) {
|
||||
if (aed.getLongitude().compareTo(EmergencyConstants.LONGITUDE_START) < 0
|
||||
|| aed.getLongitude().compareTo(EmergencyConstants.LONGITUDE_END) > 0) {
|
||||
return Result.error("经度范围正常值为:" + EmergencyConstants.LONGITUDE_START + "--" + EmergencyConstants.LONGITUDE_END);
|
||||
}
|
||||
}
|
||||
if (ObjectUtil.isNotNull(aed.getLatitude())) {
|
||||
if (aed.getLatitude().compareTo(EmergencyConstants.LATITUDE_START) < 0
|
||||
|| aed.getLatitude().compareTo(EmergencyConstants.LATITUDE_END) > 0) {
|
||||
return Result.error("维度范围正常值为:" + EmergencyConstants.LATITUDE_START + "--" + EmergencyConstants.LATITUDE_END);
|
||||
}
|
||||
}
|
||||
// 编辑数据
|
||||
aedService.updateById(aed);
|
||||
// 删除旧数据缓存
|
||||
aedCacheManager.deleteCache(aed.getId());
|
||||
// 编辑redis geo
|
||||
aedManger.updateGeo(aed);
|
||||
return Result.OK("编辑成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id删除
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "aed-通过id删除")
|
||||
@Operation(summary = "aed-通过id删除", description = "aed-通过id删除")
|
||||
// @RequiresPermissions("emergency:aed:delete")
|
||||
@DeleteMapping(value = "/delete")
|
||||
public Result<String> delete(@RequestParam(name = "id", required = true) Integer id) {
|
||||
aedService.removeById(id);
|
||||
// redis geo
|
||||
aedManger.removeGeo(id);
|
||||
// 删除缓存
|
||||
aedCacheManager.deleteCache(id);
|
||||
return Result.OK("删除成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除
|
||||
*
|
||||
* @param ids
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "aed-批量删除")
|
||||
@Operation(summary = "aed-批量删除", description = "aed-批量删除")
|
||||
// @RequiresPermissions("emergency:aed:deleteBatch")
|
||||
@DeleteMapping(value = "/deleteBatch")
|
||||
public Result<String> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
|
||||
List<String> list = Arrays.asList(ids.split(","));
|
||||
if (CollectionUtil.isEmpty(list)) {
|
||||
return Result.error("参数为空!");
|
||||
}
|
||||
// 删除数据
|
||||
this.aedService.removeByIds(list);
|
||||
list.forEach(id -> {
|
||||
Integer cacheId = Integer.valueOf(id);
|
||||
aedManger.removeGeo(cacheId);
|
||||
aedCacheManager.deleteCache(cacheId);
|
||||
});
|
||||
return Result.OK("批量删除成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id查询
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
//@AutoLog(value = "aed-通过id查询")
|
||||
@Operation(summary = "aed-通过id查询", description = "aed-通过id查询")
|
||||
@GetMapping(value = "/queryById")
|
||||
public Result<Aed> queryById(@RequestParam(name = "id") Integer id) {
|
||||
Aed aed = aedCacheManager.getOne(id);
|
||||
if (aed == null) {
|
||||
return Result.error("未找到对应数据");
|
||||
}
|
||||
return Result.OK(aed);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出excel
|
||||
*
|
||||
* @param request
|
||||
* @param aed
|
||||
*/
|
||||
@RequiresPermissions("emergency:aed:exportXls")
|
||||
@RequestMapping(value = "/exportXls")
|
||||
public ModelAndView exportXls(HttpServletRequest request, Aed aed) {
|
||||
return super.exportXls(request, aed, Aed.class, "aed");
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过excel导入数据
|
||||
*
|
||||
* @param request
|
||||
* @param response
|
||||
* @return
|
||||
*/
|
||||
@RequiresPermissions("emergency:aed:importExcel")
|
||||
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
|
||||
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
|
||||
return super.importExcel(request, response, Aed.class);
|
||||
}
|
||||
|
||||
}
|
||||
+154
@@ -0,0 +1,154 @@
|
||||
package com.renkang.emergency.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.renkang.emergency.entity.AedLatest;
|
||||
import com.renkang.emergency.service.IAedLatestService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
import org.jeecg.common.aspect.annotation.AutoLog;
|
||||
import org.jeecg.common.system.base.controller.JeecgController;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.Arrays;
|
||||
|
||||
/**
|
||||
* @Description: aed_latest
|
||||
* @Author: jeecg-boot
|
||||
* @Date: 2023-12-12
|
||||
* @Version: V1.0
|
||||
*/
|
||||
@Tag(name = "aed_latest")
|
||||
@RestController
|
||||
@RequestMapping("/emergency/aedLatest")
|
||||
@Slf4j
|
||||
public class AedLatestController extends JeecgController<AedLatest, IAedLatestService> {
|
||||
@Autowired
|
||||
private IAedLatestService aedLatestService;
|
||||
|
||||
/**
|
||||
* 分页列表查询
|
||||
*
|
||||
* @param aedLatest
|
||||
* @param pageNo
|
||||
* @param pageSize
|
||||
* @return
|
||||
*/
|
||||
//@AutoLog(value = "aed_latest-分页列表查询")
|
||||
@Operation(summary = "aed_latest-分页列表查询", description = "aed_latest-分页列表查询")
|
||||
@GetMapping(value = "/list")
|
||||
public Result<IPage<AedLatest>> queryPageList(AedLatest aedLatest,
|
||||
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
|
||||
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
|
||||
return Result.OK(aedLatestService.pageCustom(aedLatest,pageNo,pageSize));
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加
|
||||
*
|
||||
* @param aedLatest
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "aed_latest-添加")
|
||||
@Operation(summary = "aed_latest-添加", description = "aed_latest-添加")
|
||||
@RequiresPermissions("emergency:aed_latest:add")
|
||||
@PostMapping(value = "/add")
|
||||
public Result<String> add(@RequestBody AedLatest aedLatest) {
|
||||
aedLatestService.save(aedLatest);
|
||||
return Result.OK("添加成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑
|
||||
*
|
||||
* @param aedLatest
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "aed_latest-编辑")
|
||||
@Operation(summary = "aed_latest-编辑", description = "aed_latest-编辑")
|
||||
@RequiresPermissions("emergency:aed_latest:edit")
|
||||
@RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST})
|
||||
public Result<String> edit(@RequestBody AedLatest aedLatest) {
|
||||
aedLatestService.updateById(aedLatest);
|
||||
return Result.OK("编辑成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id删除
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "aed_latest-通过id删除")
|
||||
@Operation(summary = "aed_latest-通过id删除", description = "aed_latest-通过id删除")
|
||||
@RequiresPermissions("emergency:aed_latest:delete")
|
||||
@DeleteMapping(value = "/delete")
|
||||
public Result<String> delete(@RequestParam(name = "id", required = true) String id) {
|
||||
aedLatestService.removeById(id);
|
||||
return Result.OK("删除成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除
|
||||
*
|
||||
* @param ids
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "aed_latest-批量删除")
|
||||
@Operation(summary = "aed_latest-批量删除", description = "aed_latest-批量删除")
|
||||
@RequiresPermissions("emergency:aed_latest:deleteBatch")
|
||||
@DeleteMapping(value = "/deleteBatch")
|
||||
public Result<String> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
|
||||
this.aedLatestService.removeByIds(Arrays.asList(ids.split(",")));
|
||||
return Result.OK("批量删除成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id查询
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
//@AutoLog(value = "aed_latest-通过id查询")
|
||||
@Operation(summary = "aed_latest-通过id查询", description = "aed_latest-通过id查询")
|
||||
@GetMapping(value = "/queryById")
|
||||
public Result<AedLatest> queryById(@RequestParam(name = "id", required = true) String id) {
|
||||
AedLatest aedLatest = aedLatestService.getById(id);
|
||||
if (aedLatest == null) {
|
||||
return Result.error("未找到对应数据");
|
||||
}
|
||||
return Result.OK(aedLatest);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出excel
|
||||
*
|
||||
* @param request
|
||||
* @param aedLatest
|
||||
*/
|
||||
@RequiresPermissions("emergency:aed_latest:exportXls")
|
||||
@RequestMapping(value = "/exportXls")
|
||||
public ModelAndView exportXls(HttpServletRequest request, AedLatest aedLatest) {
|
||||
return super.exportXls(request, aedLatest, AedLatest.class, "aed_latest");
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过excel导入数据
|
||||
*
|
||||
* @param request
|
||||
* @param response
|
||||
* @return
|
||||
*/
|
||||
@RequiresPermissions("emergency:aed_latest:importExcel")
|
||||
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
|
||||
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
|
||||
return super.importExcel(request, response, AedLatest.class);
|
||||
}
|
||||
|
||||
}
|
||||
+81
@@ -0,0 +1,81 @@
|
||||
package com.renkang.emergency.controller;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.renkang.emergency.entity.AedWarnInfo;
|
||||
import com.renkang.emergency.service.IAedWarnInfoService;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
import org.jeecg.common.system.base.controller.JeecgController;
|
||||
import org.jeecg.global.GlobalUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* @Description: aed_warn_info
|
||||
* @Author: jeecg-boot
|
||||
* @Date: 2023-12-12
|
||||
* @Version: V1.0
|
||||
*/
|
||||
@Tag(name = "aed_warn_info")
|
||||
@RestController
|
||||
@RequestMapping("/emergency/aedWarnInfo")
|
||||
@Slf4j
|
||||
public class AedWarnInfoController extends JeecgController<AedWarnInfo, IAedWarnInfoService> {
|
||||
@Autowired
|
||||
private IAedWarnInfoService aedWarnInfoService;
|
||||
|
||||
/**
|
||||
* 自定义分页列表
|
||||
* @param aedWarnInfo 条件
|
||||
* @param pageNo 页码
|
||||
* @param pageSize 条数
|
||||
* @return page
|
||||
*/
|
||||
@GetMapping(value = "/listCustom")
|
||||
public Result<IPage<AedWarnInfo>> listCustom(AedWarnInfo aedWarnInfo,
|
||||
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
|
||||
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize) {
|
||||
return Result.OK(aedWarnInfoService.pageCustom(pageNo,pageSize, aedWarnInfo));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 修改处理信息
|
||||
* @param id id
|
||||
* @param warnInfo 报警信息
|
||||
* @return boolean
|
||||
*/
|
||||
@GetMapping(value = "/updateHandleInfo")
|
||||
public Result<String> updateHandleInfo(@RequestParam Integer id,@RequestParam String warnInfo) {
|
||||
if (ObjectUtil.isNull(id) || StrUtil.isBlank(warnInfo)) {
|
||||
return Result.error("参数缺失");
|
||||
}
|
||||
boolean b = aedWarnInfoService.updateHandleInfo(id, warnInfo);
|
||||
return GlobalUtils.getResult(b, b ? "成功" : "失败",null);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id查询
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
//@AutoLog(value = "aed_warn_info-通过id查询")
|
||||
@Operation(summary = "aed_warn_info-通过id查询", description = "aed_warn_info-通过id查询")
|
||||
@GetMapping(value = "/queryById")
|
||||
public Result<AedWarnInfo> queryById(@RequestParam(name="id",required=true) String id) {
|
||||
AedWarnInfo aedWarnInfo = aedWarnInfoService.getById(id);
|
||||
if(aedWarnInfo==null) {
|
||||
return Result.error("未找到对应数据");
|
||||
}
|
||||
return Result.OK(aedWarnInfo);
|
||||
}
|
||||
|
||||
}
|
||||
+113
@@ -0,0 +1,113 @@
|
||||
package com.renkang.emergency.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.renkang.emergency.bean.request.AddBatchAdmin;
|
||||
import com.renkang.emergency.entity.EmergencyCenterAdmin;
|
||||
import com.renkang.emergency.service.IEmergencyCenterAdminService;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
import org.jeecg.common.system.base.controller.JeecgController;
|
||||
import org.jeecg.modules.system.entity.SysUser;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
/**
|
||||
* @Name EmergencyCenterController
|
||||
* @Author YangYuanChen
|
||||
* @Data 20242024/8/21下午3:02
|
||||
*/
|
||||
@Tag(name = "emergency_center_list")
|
||||
@RestController
|
||||
@RequestMapping("/emergency/center/admin")
|
||||
@Slf4j
|
||||
public class EmergencyCenterAdminController extends JeecgController<EmergencyCenterAdmin, IEmergencyCenterAdminService> {
|
||||
|
||||
@Autowired
|
||||
private IEmergencyCenterAdminService emergencyCenterAdminService;
|
||||
|
||||
/**
|
||||
* 管理员列表接口
|
||||
*
|
||||
* @param realName 真实姓名
|
||||
* @param centerId 中心id
|
||||
* @param type 类型 0:管理员 1:大屏管理员
|
||||
* @param pageNo 页码
|
||||
* @param pageSize 条数
|
||||
* @return page
|
||||
*/
|
||||
@GetMapping("list")
|
||||
public Result<IPage<EmergencyCenterAdmin>> page(@RequestParam(required = false) String realName,
|
||||
@RequestParam String centerId,
|
||||
@RequestParam String type,
|
||||
@RequestParam(defaultValue = "1") Integer pageNo,
|
||||
@RequestParam(defaultValue = "10") Integer pageSize) {
|
||||
return Result.ok(emergencyCenterAdminService.customPage(centerId, type, realName, pageNo, pageSize));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 添加大屏管理员
|
||||
*
|
||||
* @param admin data
|
||||
* @return string
|
||||
*/
|
||||
@PostMapping("addCenterAdmin")
|
||||
public Result<String> addCenterAdmin(@RequestBody @Validated EmergencyCenterAdmin admin) {
|
||||
emergencyCenterAdminService.addCenterAdmin(admin);
|
||||
return Result.ok("添加成功");
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加大屏管理员批量
|
||||
*
|
||||
* @param admins data
|
||||
* @return string
|
||||
*/
|
||||
@PostMapping("addBatchCenterAdmin")
|
||||
public Result<String> addBatchCenterAdmin(@RequestBody @Validated AddBatchAdmin admins) {
|
||||
emergencyCenterAdminService.addBatchCenterAdmin(admins);
|
||||
return Result.ok("添加成功");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 修改管理员 只能修改姓名
|
||||
*
|
||||
* @param admin data
|
||||
* @return string
|
||||
*/
|
||||
@PostMapping("updateAdmin")
|
||||
public Result<String> updateAdmin(@RequestBody EmergencyCenterAdmin admin) {
|
||||
emergencyCenterAdminService.updateAdmin(admin);
|
||||
return Result.ok("修改成功");
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除管理员
|
||||
*
|
||||
* @param admin data
|
||||
* @return string
|
||||
*/
|
||||
@PostMapping("delAdmin")
|
||||
public Result<String> delAdmin(@RequestBody EmergencyCenterAdmin admin) {
|
||||
emergencyCenterAdminService.delAdmin(admin);
|
||||
return Result.ok("删除成功");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 选择用户
|
||||
*
|
||||
* @param filter data
|
||||
* @return page
|
||||
*/
|
||||
@GetMapping("chooseUser")
|
||||
public Result<?> chooseUser(SysUser filter,
|
||||
@RequestParam(defaultValue = "1") Integer pageNo,
|
||||
@RequestParam(defaultValue = "10") Integer pageSize) {
|
||||
return Result.ok(emergencyCenterAdminService.chooseUser(filter, pageNo, pageSize));
|
||||
}
|
||||
|
||||
}
|
||||
+172
@@ -0,0 +1,172 @@
|
||||
package com.renkang.emergency.controller;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.renkang.emergency.bean.response.SimpleCenter;
|
||||
import com.renkang.emergency.constant.EmergencyConstants;
|
||||
import com.renkang.emergency.entity.EmergencyCenter;
|
||||
import com.renkang.emergency.service.IEmergencyCenterService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
import org.jeecg.common.system.base.controller.JeecgController;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Name EmergencyCenterController
|
||||
* @Author YangYuanChen
|
||||
* @Data 20242024/8/21下午3:02
|
||||
*/
|
||||
@Tag(name = "emergency_center_list")
|
||||
@RestController
|
||||
@RequestMapping("/emergency/center")
|
||||
@Slf4j
|
||||
public class EmergencyCenterController extends JeecgController<EmergencyCenter, IEmergencyCenterService> {
|
||||
|
||||
@Autowired
|
||||
private IEmergencyCenterService centerListService;
|
||||
|
||||
/**
|
||||
* 新增急救中心数据
|
||||
*/
|
||||
@Operation(summary = "emergency_center-新增急救中心数据", description = "emergency_center-新增急救中心数据")
|
||||
@PostMapping("/addCenter")
|
||||
public Result<String> addCenter(@Validated @RequestBody EmergencyCenter emergencyGrouped) {
|
||||
centerListService.customSave(emergencyGrouped);
|
||||
return Result.OK("新增数据成功");
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询急救中心列表数据
|
||||
*/
|
||||
@Operation(summary = "emergency_center-分页查询急救中心列表数据", description = "emergency_center-分页查询急救中心列表数据")
|
||||
@GetMapping("/list")
|
||||
public Result<IPage<EmergencyCenter>> pageList(@RequestParam(required = false) String name,
|
||||
@RequestParam(required = false) String orgCode,
|
||||
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
|
||||
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
|
||||
IPage<EmergencyCenter> pageList = centerListService.customPage(name, orgCode, pageNo, pageSize);
|
||||
return Result.OK(pageList);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 所有的应急中心
|
||||
*/
|
||||
@GetMapping("/allCenter")
|
||||
public Result<List<SimpleCenter>> allCenter() {
|
||||
return Result.ok(centerListService.allCenter());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 删除中心
|
||||
*
|
||||
* @param center data
|
||||
* @return string
|
||||
*/
|
||||
@PostMapping("delCenter")
|
||||
public Result<String> delCenter(@RequestBody EmergencyCenter center) {
|
||||
// todo 删除中心 人员是否删除?
|
||||
centerListService.delCenter(center);
|
||||
return Result.OK("删除成功");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 修改中心
|
||||
*
|
||||
* @param center data
|
||||
* @return string
|
||||
*/
|
||||
@PostMapping("updateCenter")
|
||||
public Result<String> updateCenter(@RequestBody @Validated EmergencyCenter center) {
|
||||
centerListService.customUpdate(center);
|
||||
return Result.OK("修改成功");
|
||||
}
|
||||
|
||||
/**
|
||||
* 开启关闭
|
||||
*
|
||||
* @param center data
|
||||
* @return string
|
||||
*/
|
||||
@PostMapping("updateCenterStatus")
|
||||
public Result<String> updateCenterStatus(@RequestBody EmergencyCenter center) {
|
||||
if (StrUtil.isBlank(center.getId()) || StrUtil.isBlank(center.getStatus())) {
|
||||
return Result.error("未知参数");
|
||||
}
|
||||
if (!(EmergencyConstants.CENTER_STATUS_0.equals(center.getStatus()) || EmergencyConstants.CENTER_STATUS_1.equals(center.getStatus()))) {
|
||||
return Result.error("修改状态异常");
|
||||
}
|
||||
// 关闭中心
|
||||
if (EmergencyConstants.CENTER_STATUS_1.equals(center.getStatus())) {
|
||||
// 默认应急中心不能关闭
|
||||
EmergencyCenter byId = centerListService.getById(center.getId());
|
||||
if (byId.getDefaultCenter()) {
|
||||
return Result.error("默认中心不能关闭");
|
||||
}
|
||||
}
|
||||
|
||||
EmergencyCenter update = new EmergencyCenter();
|
||||
update.setId(center.getId());
|
||||
update.setStatus(center.getStatus());
|
||||
centerListService.updateById(update);
|
||||
return Result.OK("修改成功");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 数据导出
|
||||
*
|
||||
* @param name 姓名
|
||||
* @param orgCode 单位code
|
||||
* @return excel
|
||||
*/
|
||||
@GetMapping("export")
|
||||
public Result<String> export(@RequestParam(required = false) String name,
|
||||
@RequestParam(required = false) String orgCode) {
|
||||
centerListService.export(name, orgCode);
|
||||
return Result.ok("导出成功,请在导出记录查看");
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置默认中心
|
||||
*
|
||||
* @param centerId 中心id
|
||||
* @param defaultCenter true/false
|
||||
* @return string
|
||||
*/
|
||||
@GetMapping("settingDefaultCenter")
|
||||
public Result<String> settingDefaultCenter(@RequestParam String centerId,
|
||||
@RequestParam Boolean defaultCenter) {
|
||||
centerListService.settingDefaultCenter(centerId, defaultCenter);
|
||||
return Result.ok("设置成功");
|
||||
}
|
||||
|
||||
@GetMapping("getCenterDetail")
|
||||
@Operation(summary = "获取登录人应急中心数据", description = "获取登录人应急中心数据")
|
||||
public Result<EmergencyCenter> getCenterDetail() {
|
||||
return Result.OK(centerListService.getCenterDetail());
|
||||
}
|
||||
|
||||
@GetMapping("/getOrgCodesByCenterId")
|
||||
public Result<String> getOrgCodesByCenterId(@RequestParam(name = "centerId") String centerId) {
|
||||
EmergencyCenter center = centerListService.getById(centerId);
|
||||
if (ObjectUtil.isNotEmpty(center)) {
|
||||
return Result.ok(center.getServiceScope());
|
||||
}
|
||||
return Result.ok("");
|
||||
}
|
||||
|
||||
@GetMapping("/getCenterIdByOrgCodeList")
|
||||
public Result<EmergencyCenter> getCenterIdByOrgCodeList(@RequestParam(name = "userOrgCode") String userOrgCode) {
|
||||
return Result.ok(centerListService.getCenterIdByOrgCodeList(userOrgCode));
|
||||
}
|
||||
}
|
||||
+229
@@ -0,0 +1,229 @@
|
||||
package com.renkang.emergency.controller;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.renkang.emergency.entity.EmergencyCenterResource;
|
||||
import com.renkang.emergency.service.IEmergencyCenterResourceService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
import org.jeecg.common.system.base.controller.JeecgController;
|
||||
import org.jeecg.common.system.query.QueryGenerator;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
import org.jeecg.common.aspect.annotation.AutoLog;
|
||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||
|
||||
|
||||
/**
|
||||
* @Description: 应急医疗点
|
||||
* @Author: jeecg-boot
|
||||
* @Date: 2024-09-19
|
||||
* @Version: V1.0
|
||||
*/
|
||||
@Tag(name="应急医疗点")
|
||||
@RestController
|
||||
@RequestMapping("/emergency/emergencyCenterResource")
|
||||
@Slf4j
|
||||
public class EmergencyCenterResourceController extends JeecgController<EmergencyCenterResource, IEmergencyCenterResourceService> {
|
||||
@Autowired
|
||||
private IEmergencyCenterResourceService emergencyCenterResourceService;
|
||||
|
||||
/**
|
||||
* 分页列表查询
|
||||
*
|
||||
* @param emergencyCenterResource
|
||||
* @param pageNo
|
||||
* @param pageSize
|
||||
* @param req
|
||||
* @return
|
||||
*/
|
||||
//@AutoLog(value = "应急医疗点-分页列表查询")
|
||||
//@Operation(summary="应急医疗点-分页列表查询", description="应急医疗点-分页列表查询")
|
||||
//@PostMapping(value = "/list")
|
||||
/*public Result<Page<MedicalResource>> queryPageList(@RequestBody EmergencyCenterResource emergencyCenterResource,
|
||||
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
|
||||
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
|
||||
HttpServletRequest req) {
|
||||
|
||||
List<EmergencyCenterResource> medicalResourceIds = emergencyCenterResourceService.lambdaQuery()
|
||||
.eq(EmergencyCenterResource::getEmergencyCenterId, emergencyCenterResource.getEmergencyCenterId())
|
||||
.select(EmergencyCenterResource::getMedicalResourceId)
|
||||
.list();
|
||||
|
||||
|
||||
if(CollectionUtil.isEmpty(medicalResourceIds)){
|
||||
return Result.ok();
|
||||
}
|
||||
|
||||
List<String> medicals = medicalResourceIds.stream() // 流处理
|
||||
.map(EmergencyCenterResource::getMedicalResourceId) // 获取 medicalResourceId
|
||||
.collect(Collectors.toList());
|
||||
|
||||
|
||||
Result<Page<MedicalResource>> pageList = medicalCenterApi.selectResourceByHospitalBack(medicals,emergencyCenterResource.getOrgCode(),emergencyCenterResource.getName(),pageNo,pageSize);
|
||||
|
||||
return pageList;
|
||||
}*/
|
||||
|
||||
/**
|
||||
* 添加
|
||||
*
|
||||
* @param emergencyCenterResource
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "应急医疗点-添加")
|
||||
@Operation(summary="应急医疗点-添加", description="应急医疗点-添加")
|
||||
// @RequiresPermissions("emergency:emergency_center_resource:add")
|
||||
@PostMapping(value = "/add")
|
||||
public Result<String> add(@RequestBody EmergencyCenterResource emergencyCenterResource) {
|
||||
|
||||
List<String> resources = emergencyCenterResource.getResources();
|
||||
for (String resource : resources) {
|
||||
LambdaQueryWrapper<EmergencyCenterResource> lambdaQueryWrapper = new LambdaQueryWrapper();
|
||||
lambdaQueryWrapper.eq(EmergencyCenterResource::getEmergencyCenterId,emergencyCenterResource.getEmergencyCenterId());
|
||||
lambdaQueryWrapper.eq(EmergencyCenterResource::getMedicalResourceId,resource);
|
||||
long existData = emergencyCenterResourceService.count(lambdaQueryWrapper);
|
||||
if(existData > 0){
|
||||
continue;
|
||||
}
|
||||
EmergencyCenterResource emergencyCenterResourceOnly = new EmergencyCenterResource();
|
||||
emergencyCenterResourceOnly.setEmergencyCenterId(emergencyCenterResource.getEmergencyCenterId());
|
||||
emergencyCenterResourceOnly.setMedicalResourceId(resource);
|
||||
emergencyCenterResourceService.save(emergencyCenterResourceOnly);
|
||||
}
|
||||
return Result.OK("添加成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑
|
||||
*
|
||||
* @param emergencyCenterResource
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "应急医疗点-编辑")
|
||||
@Operation(summary="应急医疗点-编辑", description="应急医疗点-编辑")
|
||||
@RequiresPermissions("emergency:emergency_center_resource:edit")
|
||||
@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
|
||||
public Result<String> edit(@RequestBody EmergencyCenterResource emergencyCenterResource) {
|
||||
|
||||
LambdaQueryWrapper<EmergencyCenterResource> lambdaQueryWrapper = new LambdaQueryWrapper();
|
||||
lambdaQueryWrapper.eq(EmergencyCenterResource::getEmergencyCenterId,emergencyCenterResource.getEmergencyCenterId());
|
||||
lambdaQueryWrapper.eq(EmergencyCenterResource::getMedicalResourceId,emergencyCenterResource.getMedicalResourceId());
|
||||
lambdaQueryWrapper.ne(EmergencyCenterResource::getId,emergencyCenterResource.getId());
|
||||
long existData = emergencyCenterResourceService.count(lambdaQueryWrapper);
|
||||
|
||||
if(existData > 0){
|
||||
return Result.error("医疗点已存在");
|
||||
}
|
||||
|
||||
emergencyCenterResourceService.updateById(emergencyCenterResource);
|
||||
return Result.OK("编辑成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id删除
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "应急医疗点-通过id删除")
|
||||
@Operation(summary="应急医疗点-通过id删除", description="应急医疗点-通过id删除")
|
||||
@RequiresPermissions("emergency:emergency_center_resource:delete")
|
||||
@DeleteMapping(value = "/delete")
|
||||
public Result<String> delete(@RequestParam(name="emergencyCenterId",required=true) String emergencyCenterId,
|
||||
@RequestParam(name="medicalResourceId",required=true) String medicalResourceId) {
|
||||
emergencyCenterResourceService.lambdaUpdate().eq(EmergencyCenterResource::getEmergencyCenterId,emergencyCenterId).eq(EmergencyCenterResource::getMedicalResourceId,medicalResourceId).remove();
|
||||
return Result.OK("删除成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除
|
||||
*
|
||||
* @param ids
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "应急医疗点-批量删除")
|
||||
@Operation(summary="应急医疗点-批量删除", description="应急医疗点-批量删除")
|
||||
@RequiresPermissions("emergency:emergency_center_resource:deleteBatch")
|
||||
@DeleteMapping(value = "/deleteBatch")
|
||||
public Result<String> deleteBatch(@RequestParam(name="emergencyCenterId",required=true) String emergencyCenterIds,
|
||||
@RequestParam(name="emergencyCenterId",required=true) String emergencyCenterId) {
|
||||
|
||||
String[] idList = emergencyCenterIds.split(",");
|
||||
for (String s : idList) {
|
||||
emergencyCenterResourceService.lambdaUpdate().eq(EmergencyCenterResource::getEmergencyCenterId,emergencyCenterId).eq(EmergencyCenterResource::getMedicalResourceId,s).remove();
|
||||
}
|
||||
return Result.OK("批量删除成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id查询
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
//@AutoLog(value = "应急医疗点-通过id查询")
|
||||
@Operation(summary="应急医疗点-通过id查询", description="应急医疗点-通过id查询")
|
||||
@GetMapping(value = "/queryById")
|
||||
public Result<EmergencyCenterResource> queryById(@RequestParam(name="id",required=true) String id) {
|
||||
EmergencyCenterResource emergencyCenterResource = emergencyCenterResourceService.getById(id);
|
||||
if(emergencyCenterResource==null) {
|
||||
return Result.error("未找到对应数据");
|
||||
}
|
||||
return Result.OK(emergencyCenterResource);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出excel
|
||||
*
|
||||
* @param request
|
||||
* @param emergencyCenterResource
|
||||
*/
|
||||
@RequiresPermissions("emergency:emergency_center_resource:exportXls")
|
||||
@RequestMapping(value = "/exportXls")
|
||||
public ModelAndView exportXls(HttpServletRequest request, EmergencyCenterResource emergencyCenterResource) {
|
||||
return super.exportXls(request, emergencyCenterResource, EmergencyCenterResource.class, "应急医疗点");
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过excel导入数据
|
||||
*
|
||||
* @param request
|
||||
* @param response
|
||||
* @return
|
||||
*/
|
||||
@RequiresPermissions("emergency:emergency_center_resource:importExcel")
|
||||
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
|
||||
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
|
||||
return super.importExcel(request, response, EmergencyCenterResource.class);
|
||||
}
|
||||
|
||||
|
||||
@AutoLog(value = "应急医疗点-通过id删除")
|
||||
@Operation(summary="应急医疗点-通过id删除", description="应急医疗点-通过id删除")
|
||||
@RequiresPermissions("emergency:emergency_center_resource:delete")
|
||||
@DeleteMapping(value = "/deleteResource")
|
||||
public Result<String> deleteResource(@RequestParam(name="id",required=true) String id) {
|
||||
|
||||
boolean removed = emergencyCenterResourceService.lambdaUpdate()
|
||||
.eq(EmergencyCenterResource::getId,id)
|
||||
.remove();
|
||||
|
||||
return Result.OK("删除成功!");
|
||||
}
|
||||
|
||||
}
|
||||
+205
@@ -0,0 +1,205 @@
|
||||
package com.renkang.emergency.controller;
|
||||
|
||||
import java.util.Arrays;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.renkang.emergency.entity.EmergencyGrouped;
|
||||
import com.renkang.emergency.entity.TblQimoNotice;
|
||||
import com.renkang.emergency.entity.dto.EmergencyGroupedDTO;
|
||||
import com.renkang.emergency.entity.dto.TblQimoNoticeDTO;
|
||||
import com.renkang.emergency.entity.vo.EmergencyGroupedVO;
|
||||
import com.renkang.emergency.entity.vo.TblQimoNoticeVO;
|
||||
import com.renkang.emergency.service.IEmergencyGroupedService;
|
||||
import com.renkang.emergency.service.ITbQimoNoticeService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
import org.jeecg.common.system.base.controller.JeecgController;
|
||||
import org.jeecg.common.system.query.QueryGenerator;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
import org.jeecg.common.aspect.annotation.AutoLog;
|
||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||
|
||||
|
||||
/**
|
||||
* @Description: 分组管理表
|
||||
* @Author: jeecg-boot
|
||||
* @Date: 2024-09-09
|
||||
* @Version: V1.0
|
||||
*/
|
||||
@Tag(name="分组管理表")
|
||||
@RestController
|
||||
@RequestMapping("/emergency/emergencyGrouped")
|
||||
@Slf4j
|
||||
public class EmergencyGroupedController extends JeecgController<EmergencyGrouped, IEmergencyGroupedService> {
|
||||
@Autowired
|
||||
private IEmergencyGroupedService emergencyGroupedService;
|
||||
@Autowired
|
||||
private ITbQimoNoticeService noticeService;
|
||||
|
||||
/**
|
||||
* 分页列表查询
|
||||
*
|
||||
* @param dto
|
||||
* @param pageNo
|
||||
* @param pageSize
|
||||
* @param req
|
||||
* @return
|
||||
*/
|
||||
//@AutoLog(value = "分组管理表-分页列表查询")
|
||||
@Operation(summary="分组管理表-分页列表查询", description="分组管理表-分页列表查询")
|
||||
@GetMapping(value = "/list")
|
||||
public Result<IPage<EmergencyGrouped>> queryPageList(EmergencyGroupedDTO dto,
|
||||
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
|
||||
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
|
||||
HttpServletRequest req) {
|
||||
Page<EmergencyGrouped> page = new Page<EmergencyGrouped>(pageNo, pageSize);
|
||||
IPage<EmergencyGrouped> pageList = emergencyGroupedService.queryPageList(page, dto);
|
||||
return Result.OK(pageList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通话记录-分页列表查询
|
||||
*
|
||||
* @param dto
|
||||
* @param pageNo
|
||||
* @param pageSize
|
||||
* @param req
|
||||
* @return
|
||||
*/
|
||||
//@AutoLog(value = "通话记录-分页列表查询")
|
||||
@Operation(summary="通话记录-分页列表查询", description="通话记录-分页列表查询")
|
||||
@GetMapping(value = "/callList")
|
||||
public Result<IPage<TblQimoNoticeVO>> queryCallPageList(TblQimoNoticeDTO dto,
|
||||
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
|
||||
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
|
||||
HttpServletRequest req) {
|
||||
Page<TblQimoNotice> page = new Page<TblQimoNotice>(pageNo, pageSize);
|
||||
IPage<TblQimoNoticeVO> pageList = emergencyGroupedService.queryCallPageList(page, dto);
|
||||
return Result.OK(pageList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id删除
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "通话记录-通过id删除通话记录")
|
||||
@Operation(summary="通话记录-通过id删除通话记录", description="通话记录-通过id删除通话记录")
|
||||
@DeleteMapping(value = "/callDelete")
|
||||
public Result<String> callDelete(@RequestParam(name="id",required=true) String id) {
|
||||
noticeService.removeById(id);
|
||||
return Result.OK("删除成功!");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 添加
|
||||
*
|
||||
* @param emergencyGrouped
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "分组管理表-添加")
|
||||
@Operation(summary="分组管理表-添加", description="分组管理表-添加")
|
||||
@RequiresPermissions("emergency:emergency_grouped:add")
|
||||
@PostMapping(value = "/add")
|
||||
public Result<String> add(@RequestBody EmergencyGrouped emergencyGrouped) {
|
||||
emergencyGroupedService.saveData(emergencyGrouped);
|
||||
return Result.OK("添加成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑
|
||||
*
|
||||
* @param emergencyGrouped
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "分组管理表-编辑")
|
||||
@Operation(summary="分组管理表-编辑", description="分组管理表-编辑")
|
||||
@RequiresPermissions("emergency:emergency_grouped:edit")
|
||||
@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
|
||||
public Result<String> edit(@RequestBody EmergencyGrouped emergencyGrouped) {
|
||||
emergencyGroupedService.updateData(emergencyGrouped);
|
||||
return Result.OK("编辑成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id删除
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "分组管理表-通过id删除")
|
||||
@Operation(summary="分组管理表-通过id删除", description="分组管理表-通过id删除")
|
||||
@RequiresPermissions("emergency:emergency_grouped:delete")
|
||||
@DeleteMapping(value = "/delete")
|
||||
public Result<String> delete(@RequestParam(name="id",required=true) String id) {
|
||||
emergencyGroupedService.removeById(id);
|
||||
return Result.OK("删除成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除
|
||||
*
|
||||
* @param ids
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "分组管理表-批量删除")
|
||||
@Operation(summary="分组管理表-批量删除", description="分组管理表-批量删除")
|
||||
@RequiresPermissions("emergency:emergency_grouped:deleteBatch")
|
||||
@DeleteMapping(value = "/deleteBatch")
|
||||
public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
|
||||
this.emergencyGroupedService.removeByIds(Arrays.asList(ids.split(",")));
|
||||
return Result.OK("批量删除成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id查询
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
//@AutoLog(value = "分组管理表-通过id查询")
|
||||
@Operation(summary="分组管理表-通过id查询", description="分组管理表-通过id查询")
|
||||
@GetMapping(value = "/queryById")
|
||||
public Result<EmergencyGrouped> queryById(@RequestParam(name="id",required=true) String id) {
|
||||
EmergencyGrouped emergencyGrouped = emergencyGroupedService.getById(id);
|
||||
if(emergencyGrouped==null) {
|
||||
return Result.error("未找到对应数据");
|
||||
}
|
||||
return Result.OK(emergencyGrouped);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出excel
|
||||
*
|
||||
* @param request
|
||||
* @param emergencyGrouped
|
||||
*/
|
||||
@RequiresPermissions("emergency:emergency_grouped:exportXls")
|
||||
@RequestMapping(value = "/exportXls")
|
||||
public ModelAndView exportXls(HttpServletRequest request, EmergencyGrouped emergencyGrouped) {
|
||||
return super.exportXls(request, emergencyGrouped, EmergencyGrouped.class, "分组管理表");
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过excel导入数据
|
||||
*
|
||||
* @param request
|
||||
* @param response
|
||||
* @return
|
||||
*/
|
||||
@RequiresPermissions("emergency:emergency_grouped:importExcel")
|
||||
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
|
||||
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
|
||||
return super.importExcel(request, response, EmergencyGrouped.class);
|
||||
}
|
||||
|
||||
}
|
||||
+82
@@ -0,0 +1,82 @@
|
||||
package com.renkang.emergency.controller;
|
||||
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.renkang.emergency.entity.EmergencyProfessionUser;
|
||||
import com.renkang.emergency.service.EmergencyProfessionUserService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
/**
|
||||
* (EmergencyProfessionUser)表控制层
|
||||
*
|
||||
* @author stan
|
||||
* @since 2024-09-12 09:38:00
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/emergency/profession/user")
|
||||
@Slf4j
|
||||
public class EmergencyProfessionUserController {
|
||||
|
||||
@Autowired
|
||||
private EmergencyProfessionUserService emergencyProfessionUserService;
|
||||
|
||||
|
||||
/**
|
||||
* 分页列表
|
||||
* @param name 姓名
|
||||
* @param centerId 中心id
|
||||
* @param type 人员类型 5:操作 6:专业
|
||||
* @param pageNo 页码
|
||||
* @param pageSize 条数
|
||||
* @return page 分页数据
|
||||
*/
|
||||
@GetMapping("/list")
|
||||
public Result<IPage<EmergencyProfessionUser>> list(@RequestParam(required = false) String name,
|
||||
@RequestParam(required = false) String centerId,
|
||||
@RequestParam(name = "type", defaultValue = "5") Integer type,
|
||||
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
|
||||
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
|
||||
IPage<EmergencyProfessionUser> pageList = emergencyProfessionUserService.customPage(name, centerId, type, pageNo, pageSize);
|
||||
return Result.OK(pageList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增数据
|
||||
*
|
||||
* @param emergencyProfessionUser 新增数据
|
||||
* @return String
|
||||
*/
|
||||
@PostMapping("/add")
|
||||
public Result<String> add(@RequestBody @Validated EmergencyProfessionUser emergencyProfessionUser) {
|
||||
emergencyProfessionUserService.customAdd(emergencyProfessionUser);
|
||||
return Result.OK("添加成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑数据
|
||||
*
|
||||
* @param data 编辑数据
|
||||
* @return String
|
||||
*/
|
||||
@PostMapping("/edit")
|
||||
public Result<String> edit(@RequestBody EmergencyProfessionUser data) {
|
||||
emergencyProfessionUserService.customEdit(data);
|
||||
return Result.OK("编辑成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除数据
|
||||
*
|
||||
* @param ids 主键ids
|
||||
* @return String
|
||||
*/
|
||||
@PostMapping("/deleteBatch")
|
||||
public Result<String> deleteBatch(@RequestParam(name = "ids") String ids) {
|
||||
emergencyProfessionUserService.customRemove(ids);
|
||||
return Result.OK("删除成功!");
|
||||
}
|
||||
}
|
||||
+163
@@ -0,0 +1,163 @@
|
||||
package com.renkang.emergency.controller;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.renkang.emergency.entity.EmergencySchedules;
|
||||
import com.renkang.emergency.entity.dto.EmergencySchedulesDTO;
|
||||
import com.renkang.emergency.entity.vo.EmergencySchedulesVO;
|
||||
import com.renkang.emergency.service.IEmergencySchedulesNewService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
import org.jeecg.common.system.base.controller.JeecgController;
|
||||
import org.jeecg.common.system.query.QueryGenerator;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
import org.jeecg.common.aspect.annotation.AutoLog;
|
||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||
|
||||
|
||||
/**
|
||||
* @Description: 排班表
|
||||
* @Author: jeecg-boot
|
||||
* @Date: 2024-09-09
|
||||
* @Version: V1.0
|
||||
*/
|
||||
@Tag(name="排班表")
|
||||
@RestController
|
||||
@RequestMapping("/emergency/emergencySchedulesNew")
|
||||
@Slf4j
|
||||
public class EmergencySchedulesNewController extends JeecgController<EmergencySchedules, IEmergencySchedulesNewService> {
|
||||
@Autowired
|
||||
private IEmergencySchedulesNewService emergencySchedulesNewService;
|
||||
|
||||
/**
|
||||
* 分页列表查询
|
||||
*
|
||||
* @param dto
|
||||
* @param pageNo
|
||||
* @param pageSize
|
||||
* @param req
|
||||
* @return
|
||||
*/
|
||||
//@AutoLog(value = "排班表-分页列表查询")
|
||||
@Operation(summary="排班表-分页列表查询", description="排班表-分页列表查询")
|
||||
@GetMapping(value = "/list")
|
||||
public Result<EmergencySchedulesVO> queryList(EmergencySchedulesDTO dto,
|
||||
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
|
||||
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
|
||||
HttpServletRequest req) {
|
||||
return Result.OK(emergencySchedulesNewService.queryList(dto));
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加
|
||||
*
|
||||
* @param dto
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "排班表-添加")
|
||||
@Operation(summary="排班表-添加", description="排班表-添加")
|
||||
// @RequiresPermissions("emergency:emergency_schedules_new:add")
|
||||
@PostMapping(value = "/add")
|
||||
public Result<String> add(@RequestBody EmergencySchedulesDTO dto) {
|
||||
emergencySchedulesNewService.save(dto);
|
||||
return Result.OK("添加成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑
|
||||
*
|
||||
* @param emergencySchedulesNew
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "排班表-编辑")
|
||||
@Operation(summary="排班表-编辑", description="排班表-编辑")
|
||||
@RequiresPermissions("emergency:emergency_schedules_new:edit")
|
||||
@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
|
||||
public Result<String> edit(@RequestBody EmergencySchedules emergencySchedulesNew) {
|
||||
emergencySchedulesNewService.updateById(emergencySchedulesNew);
|
||||
return Result.OK("编辑成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id删除
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "排班表-通过id删除")
|
||||
@Operation(summary="排班表-通过id删除", description="排班表-通过id删除")
|
||||
@RequiresPermissions("emergency:emergency_schedules_new:delete")
|
||||
@DeleteMapping(value = "/delete")
|
||||
public Result<String> delete(@RequestParam(name="id",required=true) String id) {
|
||||
emergencySchedulesNewService.removeById(id);
|
||||
return Result.OK("删除成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除
|
||||
*
|
||||
* @param ids
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "排班表-批量删除")
|
||||
@Operation(summary="排班表-批量删除", description="排班表-批量删除")
|
||||
@RequiresPermissions("emergency:emergency_schedules_new:deleteBatch")
|
||||
@DeleteMapping(value = "/deleteBatch")
|
||||
public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
|
||||
this.emergencySchedulesNewService.removeByIds(Arrays.asList(ids.split(",")));
|
||||
return Result.OK("批量删除成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id查询
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
//@AutoLog(value = "排班表-通过id查询")
|
||||
@Operation(summary="排班表-通过id查询", description="排班表-通过id查询")
|
||||
@GetMapping(value = "/queryById")
|
||||
public Result<EmergencySchedules> queryById(@RequestParam(name="id",required=true) String id) {
|
||||
EmergencySchedules emergencySchedulesNew = emergencySchedulesNewService.getById(id);
|
||||
if(emergencySchedulesNew==null) {
|
||||
return Result.error("未找到对应数据");
|
||||
}
|
||||
return Result.OK(emergencySchedulesNew);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出excel
|
||||
*
|
||||
* @param request
|
||||
* @param emergencySchedulesNew
|
||||
*/
|
||||
@RequiresPermissions("emergency:emergency_schedules_new:exportXls")
|
||||
@RequestMapping(value = "/exportXls")
|
||||
public ModelAndView exportXls(HttpServletRequest request, EmergencySchedules emergencySchedulesNew) {
|
||||
return super.exportXls(request, emergencySchedulesNew, EmergencySchedules.class, "排班表");
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过excel导入数据
|
||||
*
|
||||
* @param request
|
||||
* @param response
|
||||
* @return
|
||||
*/
|
||||
@RequiresPermissions("emergency:emergency_schedules_new:importExcel")
|
||||
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
|
||||
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
|
||||
return super.importExcel(request, response, EmergencySchedules.class);
|
||||
}
|
||||
|
||||
}
|
||||
+162
@@ -0,0 +1,162 @@
|
||||
package com.renkang.emergency.controller;
|
||||
|
||||
import java.util.Arrays;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.renkang.emergency.entity.EmergencySchedulesItem;
|
||||
import com.renkang.emergency.service.IEmergencySchedulesNewItemService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
import org.jeecg.common.system.base.controller.JeecgController;
|
||||
import org.jeecg.common.system.query.QueryGenerator;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
import org.jeecg.common.aspect.annotation.AutoLog;
|
||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||
|
||||
|
||||
/**
|
||||
* @Description: 排班子表
|
||||
* @Author: jeecg-boot
|
||||
* @Date: 2024-09-09
|
||||
* @Version: V1.0
|
||||
*/
|
||||
@Tag(name="排班子表")
|
||||
@RestController
|
||||
@RequestMapping("/emergency/emergencySchedulesNewItem")
|
||||
@Slf4j
|
||||
public class EmergencySchedulesNewItemController extends JeecgController<EmergencySchedulesItem, IEmergencySchedulesNewItemService> {
|
||||
@Autowired
|
||||
private IEmergencySchedulesNewItemService emergencySchedulesNewItemService;
|
||||
|
||||
/**
|
||||
* 分页列表查询
|
||||
*
|
||||
* @param emergencySchedulesNewItem
|
||||
* @param pageNo
|
||||
* @param pageSize
|
||||
* @param req
|
||||
* @return
|
||||
*/
|
||||
//@AutoLog(value = "排班子表-分页列表查询")
|
||||
@Operation(summary="排班子表-分页列表查询", description="排班子表-分页列表查询")
|
||||
@GetMapping(value = "/list")
|
||||
public Result<IPage<EmergencySchedulesItem>> queryPageList(EmergencySchedulesItem emergencySchedulesNewItem,
|
||||
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
|
||||
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
|
||||
HttpServletRequest req) {
|
||||
QueryWrapper<EmergencySchedulesItem> queryWrapper = QueryGenerator.initQueryWrapper(emergencySchedulesNewItem, req.getParameterMap());
|
||||
Page<EmergencySchedulesItem> page = new Page<EmergencySchedulesItem>(pageNo, pageSize);
|
||||
IPage<EmergencySchedulesItem> pageList = emergencySchedulesNewItemService.page(page, queryWrapper);
|
||||
return Result.OK(pageList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加
|
||||
*
|
||||
* @param emergencySchedulesNewItem
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "排班子表-添加")
|
||||
@Operation(summary="排班子表-添加", description="排班子表-添加")
|
||||
@RequiresPermissions("emergency:emergency_schedules_new_item:add")
|
||||
@PostMapping(value = "/add")
|
||||
public Result<String> add(@RequestBody EmergencySchedulesItem emergencySchedulesNewItem) {
|
||||
emergencySchedulesNewItemService.save(emergencySchedulesNewItem);
|
||||
return Result.OK("添加成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑
|
||||
*
|
||||
* @param emergencySchedulesNewItem
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "排班子表-编辑")
|
||||
@Operation(summary="排班子表-编辑", description="排班子表-编辑")
|
||||
@RequiresPermissions("emergency:emergency_schedules_new_item:edit")
|
||||
@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
|
||||
public Result<String> edit(@RequestBody EmergencySchedulesItem emergencySchedulesNewItem) {
|
||||
emergencySchedulesNewItemService.updateById(emergencySchedulesNewItem);
|
||||
return Result.OK("编辑成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id删除
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "排班子表-通过id删除")
|
||||
@Operation(summary="排班子表-通过id删除", description="排班子表-通过id删除")
|
||||
@RequiresPermissions("emergency:emergency_schedules_new_item:delete")
|
||||
@DeleteMapping(value = "/delete")
|
||||
public Result<String> delete(@RequestParam(name="id",required=true) String id) {
|
||||
emergencySchedulesNewItemService.removeById(id);
|
||||
return Result.OK("删除成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除
|
||||
*
|
||||
* @param ids
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "排班子表-批量删除")
|
||||
@Operation(summary="排班子表-批量删除", description="排班子表-批量删除")
|
||||
@RequiresPermissions("emergency:emergency_schedules_new_item:deleteBatch")
|
||||
@DeleteMapping(value = "/deleteBatch")
|
||||
public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
|
||||
this.emergencySchedulesNewItemService.removeByIds(Arrays.asList(ids.split(",")));
|
||||
return Result.OK("批量删除成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id查询
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
//@AutoLog(value = "排班子表-通过id查询")
|
||||
@Operation(summary="排班子表-通过id查询", description="排班子表-通过id查询")
|
||||
@GetMapping(value = "/queryById")
|
||||
public Result<EmergencySchedulesItem> queryById(@RequestParam(name="id",required=true) String id) {
|
||||
EmergencySchedulesItem emergencySchedulesNewItem = emergencySchedulesNewItemService.getById(id);
|
||||
if(emergencySchedulesNewItem==null) {
|
||||
return Result.error("未找到对应数据");
|
||||
}
|
||||
return Result.OK(emergencySchedulesNewItem);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出excel
|
||||
*
|
||||
* @param request
|
||||
* @param emergencySchedulesNewItem
|
||||
*/
|
||||
@RequiresPermissions("emergency:emergency_schedules_new_item:exportXls")
|
||||
@RequestMapping(value = "/exportXls")
|
||||
public ModelAndView exportXls(HttpServletRequest request, EmergencySchedulesItem emergencySchedulesNewItem) {
|
||||
return super.exportXls(request, emergencySchedulesNewItem, EmergencySchedulesItem.class, "排班子表");
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过excel导入数据
|
||||
*
|
||||
* @param request
|
||||
* @param response
|
||||
* @return
|
||||
*/
|
||||
@RequiresPermissions("com.renkang.emergency:emergency_schedules_new_item:importExcel")
|
||||
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
|
||||
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
|
||||
return super.importExcel(request, response, EmergencySchedulesItem.class);
|
||||
}
|
||||
|
||||
}
|
||||
+353
@@ -0,0 +1,353 @@
|
||||
package com.renkang.emergency.controller;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.renkang.emergency.api.service.IEmergencySeriousDiseaseService;
|
||||
import com.renkang.emergency.constant.EmergencyConstants;
|
||||
import com.renkang.emergency.entity.EmergencySeriousDisease;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.shiro.SecurityUtils;
|
||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
import org.jeecg.common.aspect.annotation.AutoLog;
|
||||
import org.jeecg.common.system.api.ISysBaseAPI;
|
||||
import org.jeecg.common.system.base.controller.JeecgController;
|
||||
import org.jeecg.common.system.vo.LoginUser;
|
||||
import org.jeecg.common.util.AgeCalculateUtil;
|
||||
import org.jeecg.global.GlobalUtils;
|
||||
import org.jeecg.modules.manager.SysCacheImpl;
|
||||
import org.jeecg.modules.system.entity.SysDepart;
|
||||
import org.parboiled.common.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.redis.core.StringRedisTemplate;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.Arrays;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Description: 大病就医
|
||||
* @Author: jeecg-boot
|
||||
* @Date: 2023-04-23
|
||||
* @Version: V1.0
|
||||
*/
|
||||
@Tag(name = "大病就医")
|
||||
@RestController
|
||||
@RequestMapping("/emergency/emergencySeriousDisease")
|
||||
@Slf4j
|
||||
public class EmergencySeriousDiseaseController extends JeecgController<EmergencySeriousDisease, IEmergencySeriousDiseaseService> {
|
||||
|
||||
@Autowired
|
||||
private IEmergencySeriousDiseaseService emergencySeriousDiseaseService;
|
||||
|
||||
|
||||
@Autowired
|
||||
private StringRedisTemplate stringRedisTemplate;
|
||||
|
||||
|
||||
@Autowired
|
||||
private SysCacheImpl sysCache;
|
||||
|
||||
@Autowired
|
||||
private ISysBaseAPI sysBaseAPI;
|
||||
|
||||
/**
|
||||
* 分页列表查询
|
||||
*
|
||||
* @param emergencySeriousDisease
|
||||
* @param pageNo
|
||||
* @param pageSize
|
||||
* @param req
|
||||
* @return
|
||||
*/
|
||||
//@AutoLog(value = "大病就医-分页列表查询")
|
||||
@Operation(summary = "大病就医-分页列表查询", description = "大病就医-分页列表查询")
|
||||
@GetMapping(value = "/list")
|
||||
public Result<IPage<EmergencySeriousDisease>> queryPageList(EmergencySeriousDisease emergencySeriousDisease,
|
||||
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
|
||||
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
|
||||
HttpServletRequest req) {
|
||||
|
||||
Page<EmergencySeriousDisease> page = new Page<EmergencySeriousDisease>(pageNo, pageSize);
|
||||
IPage<EmergencySeriousDisease> pageList = emergencySeriousDiseaseService.pageList(page, emergencySeriousDisease);
|
||||
|
||||
List<EmergencySeriousDisease> list = pageList.getRecords();
|
||||
|
||||
list.forEach(x -> {
|
||||
String userDepart = x.getUserDepart();
|
||||
if (StringUtils.isNotEmpty(userDepart)) {
|
||||
SysDepart secondDepartOrgCode = sysCache.getDepartByOrgCode(GlobalUtils.getSecondDepartOrgCode(userDepart));
|
||||
SysDepart thridDepartOrgCode = sysCache.getDepartByOrgCode(GlobalUtils.getThirdDepartOrgCode(userDepart));
|
||||
x.setUserDepart("");
|
||||
if (secondDepartOrgCode != null && thridDepartOrgCode != null) {
|
||||
x.setUserDepart(secondDepartOrgCode.getDepartName() + "-" + thridDepartOrgCode.getDepartName());
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return Result.OK(pageList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 大病就医-分页列表查询 操作人员
|
||||
*
|
||||
* @param emergencySeriousDisease
|
||||
* @param pageNo
|
||||
* @param pageSize
|
||||
* @param req
|
||||
* @return
|
||||
*/
|
||||
@Operation(summary = "大病就医-分页列表查询 操作人员", description = "大病就医-分页列表查询 操作人员")
|
||||
@GetMapping(value = "/operatorList")
|
||||
public Result<IPage<EmergencySeriousDisease>> operatorList(EmergencySeriousDisease emergencySeriousDisease,
|
||||
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
|
||||
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
|
||||
HttpServletRequest req) {
|
||||
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
||||
Page<EmergencySeriousDisease> page = new Page<EmergencySeriousDisease>(pageNo, pageSize);
|
||||
emergencySeriousDisease.setOperatorId(sysUser.getId());
|
||||
IPage<EmergencySeriousDisease> pageList = emergencySeriousDiseaseService.pageList(page, emergencySeriousDisease);
|
||||
|
||||
List<EmergencySeriousDisease> list = pageList.getRecords();
|
||||
|
||||
list.forEach(x -> {
|
||||
String userDepart = x.getUserDepart();
|
||||
if (StringUtils.isNotEmpty(userDepart)) {
|
||||
SysDepart secondDepartOrgCode = sysCache.getDepartByOrgCode(GlobalUtils.getSecondDepartOrgCode(userDepart));
|
||||
SysDepart thridDepartOrgCode = sysCache.getDepartByOrgCode(GlobalUtils.getThirdDepartOrgCode(userDepart));
|
||||
x.setUserDepart("");
|
||||
if (secondDepartOrgCode != null && thridDepartOrgCode != null) {
|
||||
x.setUserDepart(secondDepartOrgCode.getDepartName() + "-" + thridDepartOrgCode.getDepartName());
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return Result.OK(pageList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加
|
||||
*
|
||||
* @param emergencySeriousDisease
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "大病就医-添加")
|
||||
@Operation(summary = "大病就医-添加", description = "大病就医-添加")
|
||||
@RequiresPermissions("emergency:emergency_serious_disease:add")
|
||||
@PostMapping(value = "/add")
|
||||
public Result<String> add(@RequestBody EmergencySeriousDisease emergencySeriousDisease) {
|
||||
|
||||
LoginUser loginUser = sysBaseAPI.getUserById(emergencySeriousDisease.getUserId());
|
||||
|
||||
if (loginUser == null) {
|
||||
return Result.error("用户不存在");
|
||||
}
|
||||
|
||||
Date date = new Date();
|
||||
if (date.getTime() >= emergencySeriousDisease.getDesireTime().getTime()) {
|
||||
return Result.error("预约时间必须大于当前时间");
|
||||
}
|
||||
emergencySeriousDisease.setUserDepart(loginUser.getOrgCode());
|
||||
emergencySeriousDisease.setState("1");
|
||||
emergencySeriousDisease.setIsFill(EmergencyConstants.ORDER_IS_FILL_0);
|
||||
emergencySeriousDisease.setCreateTime(date);
|
||||
emergencySeriousDisease.setReservationNo(String.valueOf(IdWorker.getId()));
|
||||
emergencySeriousDisease.setRealname(loginUser.getRealname());
|
||||
String idCard = loginUser.getIdCard();
|
||||
if (!com.alibaba.druid.util.StringUtils.isEmpty(idCard)) {
|
||||
emergencySeriousDisease.setAge(AgeCalculateUtil.countAge(idCard));
|
||||
}
|
||||
emergencySeriousDisease.setTelPhone(loginUser.getPhone());
|
||||
emergencySeriousDisease.setSex(loginUser.getSex());
|
||||
emergencySeriousDisease.setIdNo(idCard);
|
||||
emergencySeriousDiseaseService.save(emergencySeriousDisease);
|
||||
return Result.OK("添加成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑
|
||||
*
|
||||
* @param emergencySeriousDisease
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "大病就医-编辑")
|
||||
@Operation(summary = "大病就医-编辑", description = "大病就医-编辑")
|
||||
@RequiresPermissions("emergency:emergency_serious_disease:edit")
|
||||
@RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST})
|
||||
public Result<String> edit(@RequestBody EmergencySeriousDisease emergencySeriousDisease) {
|
||||
|
||||
LoginUser loginUser = sysBaseAPI.getUserById(emergencySeriousDisease.getUserId());
|
||||
|
||||
if (loginUser == null) {
|
||||
return Result.error("用户不存在");
|
||||
}
|
||||
|
||||
emergencySeriousDisease.setUserDepart(loginUser.getOrgCode());
|
||||
emergencySeriousDisease.setState("1");
|
||||
emergencySeriousDisease.setIsFill(EmergencyConstants.ORDER_IS_FILL_0);
|
||||
emergencySeriousDisease.setUpdateTime(new Date());
|
||||
emergencySeriousDisease.setReservationNo(String.valueOf(IdWorker.getId()));
|
||||
emergencySeriousDisease.setRealname(loginUser.getRealname());
|
||||
String idCard = loginUser.getIdCard();
|
||||
if (!com.alibaba.druid.util.StringUtils.isEmpty(idCard)) {
|
||||
emergencySeriousDisease.setAge(AgeCalculateUtil.countAge(idCard));
|
||||
}
|
||||
emergencySeriousDisease.setTelPhone(loginUser.getPhone());
|
||||
emergencySeriousDisease.setSex(loginUser.getSex());
|
||||
emergencySeriousDisease.setIdNo(idCard);
|
||||
|
||||
emergencySeriousDiseaseService.updateById(emergencySeriousDisease);
|
||||
return Result.OK("编辑成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id删除
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "大病就医-通过id删除")
|
||||
@Operation(summary = "大病就医-通过id删除", description = "大病就医-通过id删除")
|
||||
@RequiresPermissions("emergency:emergency_serious_disease:delete")
|
||||
@DeleteMapping(value = "/delete")
|
||||
public Result<String> delete(@RequestParam(name = "id", required = true) String id) {
|
||||
emergencySeriousDiseaseService.removeById(id);
|
||||
return Result.OK("删除成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除
|
||||
*
|
||||
* @param ids
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "大病就医-批量删除")
|
||||
@Operation(summary = "大病就医-批量删除", description = "大病就医-批量删除")
|
||||
@RequiresPermissions("emergency:emergency_serious_disease:deleteBatch")
|
||||
@DeleteMapping(value = "/deleteBatch")
|
||||
public Result<String> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
|
||||
this.emergencySeriousDiseaseService.removeByIds(Arrays.asList(ids.split(",")));
|
||||
return Result.OK("批量删除成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id查询
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
//@AutoLog(value = "大病就医-通过id查询")
|
||||
@Operation(summary = "大病就医-通过id查询", description = "大病就医-通过id查询")
|
||||
@GetMapping(value = "/queryById")
|
||||
public Result<EmergencySeriousDisease> queryById(@RequestParam(name = "id", required = true) String id) {
|
||||
EmergencySeriousDisease emergencySeriousDisease = emergencySeriousDiseaseService.getById(id);
|
||||
if (emergencySeriousDisease == null) {
|
||||
return Result.error("未找到对应数据");
|
||||
}
|
||||
|
||||
String userDepart = emergencySeriousDisease.getUserDepart();
|
||||
if (StringUtils.isNotEmpty(userDepart)) {
|
||||
SysDepart secondDepartOrgCode = sysCache.getDepartByOrgCode(GlobalUtils.getSecondDepartOrgCode(userDepart));
|
||||
SysDepart thridDepartOrgCode = sysCache.getDepartByOrgCode(GlobalUtils.getThirdDepartOrgCode(userDepart));
|
||||
emergencySeriousDisease.setUserDepart("");
|
||||
if (secondDepartOrgCode != null && thridDepartOrgCode != null) {
|
||||
emergencySeriousDisease.setUserDepart(secondDepartOrgCode.getDepartName() + "-" + thridDepartOrgCode.getDepartName());
|
||||
}
|
||||
}
|
||||
|
||||
return Result.OK(emergencySeriousDisease);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出excel
|
||||
*
|
||||
* @param request
|
||||
* @param emergencySeriousDisease
|
||||
*/
|
||||
@RequiresPermissions("emergency:emergency_serious_disease:exportXls")
|
||||
@RequestMapping(value = "/exportXls")
|
||||
public ModelAndView exportXls(HttpServletRequest request, EmergencySeriousDisease emergencySeriousDisease) {
|
||||
return super.exportXls(request, emergencySeriousDisease, EmergencySeriousDisease.class, "大病就医");
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过excel导入数据
|
||||
*
|
||||
* @param request
|
||||
* @param response
|
||||
* @return
|
||||
*/
|
||||
@RequiresPermissions("emergency:emergency_serious_disease:importExcel")
|
||||
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
|
||||
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
|
||||
return super.importExcel(request, response, EmergencySeriousDisease.class);
|
||||
}
|
||||
|
||||
|
||||
@Operation(summary = "操作人员派单", description = "操作人员派单")
|
||||
// @RequiresPermissions("emergency:emergency_serious_disease:dispatchStation")
|
||||
@GetMapping(value = "/dispatchStation")
|
||||
public Result<String> dispatchStation(@RequestParam(name = "id", required = true) String id,
|
||||
@RequestParam(name = "stationUserId", required = true) String stationUserId) {
|
||||
|
||||
EmergencySeriousDisease emergencySeriousDisease = emergencySeriousDiseaseService.getById(id);
|
||||
|
||||
if (emergencySeriousDisease == null) {
|
||||
return Result.error("该数据不存在!");
|
||||
}
|
||||
|
||||
String state = emergencySeriousDisease.getState();
|
||||
if (!"1".equals(state) && !"7".equals(state)) {
|
||||
return Result.error("该订单暂时无法派单!");
|
||||
}
|
||||
emergencySeriousDisease.setStationUserId(stationUserId);
|
||||
|
||||
LoginUser loginUser = sysBaseAPI.getUserById(stationUserId);
|
||||
if(loginUser != null){
|
||||
emergencySeriousDisease.setStationUserName(loginUser.getRealname());
|
||||
}
|
||||
emergencySeriousDisease.setSendOrderTime(new Date());
|
||||
emergencySeriousDisease.setState("4");
|
||||
emergencySeriousDisease.setReservationTime(emergencySeriousDisease.getDesireTime());
|
||||
emergencySeriousDisease.setAcceptStationTime(new Date());
|
||||
|
||||
emergencySeriousDiseaseService.updateById(emergencySeriousDisease);
|
||||
|
||||
return Result.OK("派单成功!");
|
||||
}
|
||||
|
||||
|
||||
@Operation(summary = "操作人员驳回", description = "操作人员驳回")
|
||||
// @RequiresPermissions("emergency:emergency_serious_disease:operatorReject")
|
||||
@GetMapping(value = "/operatorReject")
|
||||
public Result<String> operatorReject(@RequestParam(name = "id", required = true) String id,
|
||||
@RequestParam(name = "rejectionReason", required = true) String rejectionReason) {
|
||||
|
||||
EmergencySeriousDisease emergencySeriousDisease = emergencySeriousDiseaseService.getById(id);
|
||||
|
||||
if (emergencySeriousDisease == null) {
|
||||
return Result.error("该数据不存在!");
|
||||
}
|
||||
String state = emergencySeriousDisease.getState();
|
||||
if ("6".equals(state)) {
|
||||
return Result.error("该订单无法驳回!");
|
||||
}
|
||||
|
||||
emergencySeriousDisease.setRejectionReason(rejectionReason);
|
||||
emergencySeriousDisease.setRejectionTime(new Date());
|
||||
emergencySeriousDisease.setState("6");
|
||||
emergencySeriousDiseaseService.updateById(emergencySeriousDisease);
|
||||
|
||||
return Result.OK("驳回成功!");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+76
@@ -0,0 +1,76 @@
|
||||
package com.renkang.emergency.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.renkang.emergency.entity.TblUserHelp;
|
||||
import com.renkang.emergency.entity.dto.*;
|
||||
import com.renkang.emergency.service.ITbUserHelpMacService;
|
||||
import com.renkang.emergency.service.ITblAmbulanceGpsService;
|
||||
import com.renkang.emergency.service.YcLargeScreenService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import org.jeecg.common.api.dto.YcMedicalCenterFakerData;
|
||||
import org.jeecg.common.api.dto.YcUserHealthFakerData;
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/emergency/LargeScreenNew")
|
||||
public class LargeScreenNewController {
|
||||
@Resource
|
||||
private ITbUserHelpMacService tbUserHelpMacService;
|
||||
@Resource
|
||||
private YcLargeScreenService ycLargeScreenService;
|
||||
@Resource
|
||||
private ITblAmbulanceGpsService tblAmbulanceGpsService;
|
||||
|
||||
/**
|
||||
* 服务详情数据-24.09.19 新版大屏接口
|
||||
*/
|
||||
@PostMapping("/statisticsNew")
|
||||
@Operation(summary = "服务详情数据", description = "服务详情数据")
|
||||
public Result<?> statisticsNew(@RequestBody StatisticsDTO dto) {
|
||||
return Result.OK(tbUserHelpMacService.statisticsNew(dto));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取云坐席列表数据-24.09.19 新版大屏接口
|
||||
*/
|
||||
@PostMapping("/phoneListNew")
|
||||
@Operation(summary = "获取云坐席列表数据", description = "获取云坐席列表数据")
|
||||
public Result<?> getPhoneListNew(@RequestBody PhoneListDTO dto) {
|
||||
return Result.ok(tbUserHelpMacService.getPhoneListNew(dto));
|
||||
}
|
||||
|
||||
/**
|
||||
* 一线医疗点每日工作动态-24.09.19 新版大屏接口
|
||||
*/
|
||||
@PostMapping("/medicalCenterNew")
|
||||
@Operation(summary = "一线医疗点每日工作动态", description = "一线医疗点每日工作动态")
|
||||
public Result<List<YcMedicalCenterFakerData>> medicalCenterNew(@RequestBody MedicalCenterDTO dto) {
|
||||
return Result.ok(ycLargeScreenService.medicalCenterNew(dto));
|
||||
}
|
||||
|
||||
/**
|
||||
* 员工队伍健康状况数据-24.09.19 新版大屏接口
|
||||
*/
|
||||
@PostMapping("/userHealthCenterNew")
|
||||
@Operation(summary = "员工队伍健康状况数据", description = "员工队伍健康状况数据")
|
||||
public Result<YcUserHealthFakerData> userHealthCenterNew(@RequestBody UserHealthCenterDTO dto) {
|
||||
return Result.ok(ycLargeScreenService.userHealthCenterNew(dto));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取所有资源-24.09.19 新版大屏接口
|
||||
*/
|
||||
@PostMapping("/getAllListNew")
|
||||
@Operation(summary = "获取所有资源", description = "获取所有资源")
|
||||
public Result<?> getAllListNew(@RequestBody ResourcesAllDTO dto) {
|
||||
return Result.OK(tblAmbulanceGpsService.getAllListNew(dto));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+237
@@ -0,0 +1,237 @@
|
||||
package com.renkang.emergency.controller;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.renkang.emergency.entity.Order;
|
||||
import com.renkang.emergency.entity.OrderDetail;
|
||||
import com.renkang.emergency.entity.Resource;
|
||||
import com.renkang.emergency.manager.EmergencyCacheManager;
|
||||
import com.renkang.emergency.manager.EmergencyCloudManager;
|
||||
import com.renkang.emergency.service.IOrderDetailService;
|
||||
import com.renkang.emergency.service.IOrderService;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
import org.jeecg.common.aspect.annotation.AutoLog;
|
||||
import org.jeecg.common.system.base.controller.JeecgController;
|
||||
import org.jeecg.common.system.vo.LoginUserNew;
|
||||
import org.jeecg.modules.system.entity.SysDepart;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @Description: emergency_order
|
||||
* @Author: jeecg-boot
|
||||
* @Date: 2023-04-26
|
||||
* @Version: V1.0
|
||||
*/
|
||||
@Tag(name = "emergency_order")
|
||||
@RestController
|
||||
@RequestMapping("/emergency/order")
|
||||
@Slf4j
|
||||
public class OrderController extends JeecgController<Order, IOrderService> {
|
||||
@Autowired
|
||||
private IOrderService orderService;
|
||||
@Autowired
|
||||
private EmergencyCacheManager emergencyCacheManager;
|
||||
@Autowired
|
||||
private IOrderDetailService orderDetailService;
|
||||
@Autowired
|
||||
private EmergencyCloudManager emergencyCloudManager;
|
||||
|
||||
/**
|
||||
* 分页列表查询
|
||||
*
|
||||
* @param order
|
||||
* @param pageNo
|
||||
* @param pageSize
|
||||
* @param req
|
||||
* @return
|
||||
*/
|
||||
//@AutoLog(value = "emergency_order-分页列表查询")
|
||||
@Operation(summary = "emergency_order-分页列表查询", description = "emergency_order-分页列表查询")
|
||||
@GetMapping(value = "/list")
|
||||
public Result<IPage<Order>> queryPageList(Order order,
|
||||
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
|
||||
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
|
||||
HttpServletRequest req) {
|
||||
Page<Order> page = new Page<Order>(pageNo, pageSize);
|
||||
IPage<Order> pageList = orderService.pageCustom(page, order, req);
|
||||
return Result.OK(pageList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 专业人员订单列表
|
||||
*/
|
||||
@GetMapping(value = "/listOrderMajor")
|
||||
public Result<IPage<Order>> listOrderMajor(Order order,
|
||||
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
|
||||
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
|
||||
Page<Order> page = new Page<>(pageNo, pageSize);
|
||||
IPage<Order> pageList = orderService.listOrderMajor(page, order);
|
||||
return Result.OK(pageList);
|
||||
}
|
||||
|
||||
@Operation(summary = "修改被救助人", description = "修改被救助人")
|
||||
@GetMapping(value = "/changeSalvageUserId")
|
||||
public Result<String> changeSalvageUserId(@RequestParam(name = "id", required = true) String id,
|
||||
@RequestParam(name = "salvageUserId", required = true) String salvageUserId) {
|
||||
|
||||
Order order = orderService.getById(id);
|
||||
|
||||
if (order == null) {
|
||||
return Result.error("数据不存在");
|
||||
}
|
||||
|
||||
Map<String, LoginUserNew> map = emergencyCloudManager.listUser(Collections.singletonList(salvageUserId));
|
||||
LoginUserNew loginUserNew = map.get(salvageUserId);
|
||||
|
||||
if (loginUserNew == null) {
|
||||
return Result.error("用户不存在");
|
||||
}
|
||||
|
||||
order.setSalvageUserId(salvageUserId);
|
||||
order.setSalvageUserMobile(loginUserNew.getPhone());
|
||||
order.setSalvageUserDepart(loginUserNew.getOrgCode());
|
||||
order.setSalvageUserSex(loginUserNew.getSex().toString());
|
||||
order.setSalvageUserName(loginUserNew.getRealname());
|
||||
|
||||
orderService.updateById(order);
|
||||
|
||||
return Result.ok("更换被救人成功");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 添加
|
||||
*
|
||||
* @param order
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "emergency_order-添加")
|
||||
@Operation(summary = "emergency_order-添加", description = "emergency_order-添加")
|
||||
@RequiresPermissions("emergency:emergency_order:add")
|
||||
@PostMapping(value = "/add")
|
||||
public Result<String> add(@RequestBody Order order) {
|
||||
orderService.save(order);
|
||||
return Result.OK("添加成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑
|
||||
*
|
||||
* @param order
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "emergency_order-编辑")
|
||||
@Operation(summary = "emergency_order-编辑", description = "emergency_order-编辑")
|
||||
@RequiresPermissions("emergency:emergency_order:edit")
|
||||
@RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST})
|
||||
public Result<String> edit(@RequestBody Order order) {
|
||||
orderService.updateById(order);
|
||||
return Result.OK("编辑成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id删除
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "emergency_order-通过id删除")
|
||||
@Operation(summary = "emergency_order-通过id删除", description = "emergency_order-通过id删除")
|
||||
@RequiresPermissions("emergency:emergency_order:delete")
|
||||
@DeleteMapping(value = "/delete")
|
||||
public Result<String> delete(@RequestParam(name = "id", required = true) String id) {
|
||||
orderService.removeById(id);
|
||||
return Result.OK("删除成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除
|
||||
*
|
||||
* @param ids
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "emergency_order-批量删除")
|
||||
@Operation(summary = "emergency_order-批量删除", description = "emergency_order-批量删除")
|
||||
@RequiresPermissions("emergency:emergency_order:deleteBatch")
|
||||
@DeleteMapping(value = "/deleteBatch")
|
||||
public Result<String> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
|
||||
this.orderService.removeByIds(Arrays.asList(ids.split(",")));
|
||||
return Result.OK("批量删除成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id查询
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
//@AutoLog(value = "emergency_order-通过id查询")
|
||||
@Operation(summary = "emergency_order-通过id查询", description = "emergency_order-通过id查询")
|
||||
@GetMapping(value = "/queryById")
|
||||
public Result<Order> queryById(@RequestParam(name = "id", required = true) String id) {
|
||||
Order order = orderService.getById(id);
|
||||
|
||||
if (ObjectUtil.isNotNull(order)) {
|
||||
OrderDetail detail = orderDetailService.getById(order.getId());
|
||||
order.setOrderDetail(detail);
|
||||
|
||||
// 部门信息
|
||||
// 发起人二级部门信息
|
||||
SysDepart initUserDepart = emergencyCacheManager.getUserSecondDepart(order.getInitiatorUserDepart());
|
||||
order.setInitiatorUserSecondDepart(initUserDepart.getDepartName());
|
||||
// 救助人二级部门信息
|
||||
SysDepart salvageUserDepart = emergencyCacheManager.getUserSecondDepart(order.getSalvageUserDepart());
|
||||
order.setSalvageUserSecondDepart(salvageUserDepart.getDepartName());
|
||||
|
||||
if (StrUtil.isNotBlank(order.getResourceId())) {
|
||||
Resource resource = emergencyCacheManager.getById(order.getResourceId());
|
||||
if (ObjectUtil.isNotNull(resource)) {
|
||||
order.setResourceName(resource.getName());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return Result.OK(order);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出excel
|
||||
*
|
||||
* @param request
|
||||
* @param order
|
||||
*/
|
||||
@RequiresPermissions("emergency:emergency_order:exportXls")
|
||||
@RequestMapping(value = "/exportXls")
|
||||
public ModelAndView exportXls(HttpServletRequest request, Order order) {
|
||||
return super.exportXls(request, order, Order.class, "emergency_order");
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过excel导入数据
|
||||
*
|
||||
* @param request
|
||||
* @param response
|
||||
* @return
|
||||
*/
|
||||
@RequiresPermissions("emergency:emergency_order:importExcel")
|
||||
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
|
||||
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
|
||||
return super.importExcel(request, response, Order.class);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+162
@@ -0,0 +1,162 @@
|
||||
package com.renkang.emergency.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.renkang.emergency.entity.OrderDetail;
|
||||
import com.renkang.emergency.service.IOrderDetailService;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
import org.jeecg.common.aspect.annotation.AutoLog;
|
||||
import org.jeecg.common.system.base.controller.JeecgController;
|
||||
import org.jeecg.common.system.query.QueryGenerator;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.Arrays;
|
||||
|
||||
/**
|
||||
* @Description: emergency_order_detail
|
||||
* @Author: jeecg-boot
|
||||
* @Date: 2023-05-17
|
||||
* @Version: V1.0
|
||||
*/
|
||||
@Tag(name = "emergency_order_detail")
|
||||
@RestController
|
||||
@RequestMapping("/emergency/orderDetail")
|
||||
@Slf4j
|
||||
public class OrderDetailController extends JeecgController<OrderDetail, IOrderDetailService> {
|
||||
@Autowired
|
||||
private IOrderDetailService orderDetailService;
|
||||
|
||||
/**
|
||||
* 分页列表查询
|
||||
*
|
||||
* @param orderDetail
|
||||
* @param pageNo
|
||||
* @param pageSize
|
||||
* @param req
|
||||
* @return
|
||||
*/
|
||||
//@AutoLog(value = "emergency_order_detail-分页列表查询")
|
||||
@Operation(summary = "emergency_order_detail-分页列表查询", description = "emergency_order_detail-分页列表查询")
|
||||
@GetMapping(value = "/list")
|
||||
public Result<IPage<OrderDetail>> queryPageList(OrderDetail orderDetail,
|
||||
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
|
||||
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
|
||||
HttpServletRequest req) {
|
||||
QueryWrapper<OrderDetail> queryWrapper = QueryGenerator.initQueryWrapper(orderDetail, req.getParameterMap());
|
||||
Page<OrderDetail> page = new Page<OrderDetail>(pageNo, pageSize);
|
||||
IPage<OrderDetail> pageList = orderDetailService.page(page, queryWrapper);
|
||||
return Result.OK(pageList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加
|
||||
*
|
||||
* @param orderDetail
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "emergency_order_detail-添加")
|
||||
@Operation(summary = "emergency_order_detail-添加", description = "emergency_order_detail-添加")
|
||||
@RequiresPermissions("emergency:emergency_order_detail:add")
|
||||
@PostMapping(value = "/add")
|
||||
public Result<String> add(@RequestBody OrderDetail orderDetail) {
|
||||
orderDetailService.save(orderDetail);
|
||||
return Result.OK("添加成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑
|
||||
*
|
||||
* @param orderDetail
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "emergency_order_detail-编辑")
|
||||
@Operation(summary = "emergency_order_detail-编辑", description = "emergency_order_detail-编辑")
|
||||
@RequiresPermissions("emergency:emergency_order_detail:edit")
|
||||
@RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST})
|
||||
public Result<String> edit(@RequestBody OrderDetail orderDetail) {
|
||||
orderDetailService.updateById(orderDetail);
|
||||
return Result.OK("编辑成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id删除
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "emergency_order_detail-通过id删除")
|
||||
@Operation(summary = "emergency_order_detail-通过id删除", description = "emergency_order_detail-通过id删除")
|
||||
@RequiresPermissions("emergency:emergency_order_detail:delete")
|
||||
@DeleteMapping(value = "/delete")
|
||||
public Result<String> delete(@RequestParam(name = "id", required = true) String id) {
|
||||
orderDetailService.removeById(id);
|
||||
return Result.OK("删除成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除
|
||||
*
|
||||
* @param ids
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "emergency_order_detail-批量删除")
|
||||
@Operation(summary = "emergency_order_detail-批量删除", description = "emergency_order_detail-批量删除")
|
||||
@RequiresPermissions("emergency:emergency_order_detail:deleteBatch")
|
||||
@DeleteMapping(value = "/deleteBatch")
|
||||
public Result<String> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
|
||||
this.orderDetailService.removeByIds(Arrays.asList(ids.split(",")));
|
||||
return Result.OK("批量删除成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id查询
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
//@AutoLog(value = "emergency_order_detail-通过id查询")
|
||||
@Operation(summary = "emergency_order_detail-通过id查询", description = "emergency_order_detail-通过id查询")
|
||||
@GetMapping(value = "/queryById")
|
||||
public Result<OrderDetail> queryById(@RequestParam(name = "id", required = true) String id) {
|
||||
OrderDetail orderDetail = orderDetailService.getById(id);
|
||||
if (orderDetail == null) {
|
||||
return Result.error("未找到对应数据");
|
||||
}
|
||||
return Result.OK(orderDetail);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出excel
|
||||
*
|
||||
* @param request
|
||||
* @param orderDetail
|
||||
*/
|
||||
@RequiresPermissions("emergency:emergency_order_detail:exportXls")
|
||||
@RequestMapping(value = "/exportXls")
|
||||
public ModelAndView exportXls(HttpServletRequest request, OrderDetail orderDetail) {
|
||||
return super.exportXls(request, orderDetail, OrderDetail.class, "emergency_order_detail");
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过excel导入数据
|
||||
*
|
||||
* @param request
|
||||
* @param response
|
||||
* @return
|
||||
*/
|
||||
@RequiresPermissions("emergency:emergency_order_detail:importExcel")
|
||||
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
|
||||
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
|
||||
return super.importExcel(request, response, OrderDetail.class);
|
||||
}
|
||||
|
||||
}
|
||||
+162
@@ -0,0 +1,162 @@
|
||||
package com.renkang.emergency.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.renkang.emergency.entity.OrderIntervene;
|
||||
import com.renkang.emergency.service.IOrderInterveneService;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
import org.jeecg.common.aspect.annotation.AutoLog;
|
||||
import org.jeecg.common.system.base.controller.JeecgController;
|
||||
import org.jeecg.common.system.query.QueryGenerator;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.Arrays;
|
||||
|
||||
/**
|
||||
* @Description: emergency_order_intervene
|
||||
* @Author: jeecg-boot
|
||||
* @Date: 2023-09-25
|
||||
* @Version: V1.0
|
||||
*/
|
||||
@Tag(name = "emergency_order_intervene")
|
||||
@RestController
|
||||
@RequestMapping("/emergency/orderIntervene")
|
||||
@Slf4j
|
||||
public class OrderInterveneController extends JeecgController<OrderIntervene, IOrderInterveneService> {
|
||||
@Autowired
|
||||
private IOrderInterveneService orderInterveneService;
|
||||
|
||||
/**
|
||||
* 分页列表查询
|
||||
*
|
||||
* @param orderIntervene
|
||||
* @param pageNo
|
||||
* @param pageSize
|
||||
* @param req
|
||||
* @return
|
||||
*/
|
||||
//@AutoLog(value = "emergency_order_intervene-分页列表查询")
|
||||
@Operation(summary = "emergency_order_intervene-分页列表查询", description = "emergency_order_intervene-分页列表查询")
|
||||
@GetMapping(value = "/list")
|
||||
public Result<IPage<OrderIntervene>> queryPageList(OrderIntervene orderIntervene,
|
||||
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
|
||||
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
|
||||
HttpServletRequest req) {
|
||||
QueryWrapper<OrderIntervene> queryWrapper = QueryGenerator.initQueryWrapper(orderIntervene, req.getParameterMap());
|
||||
Page<OrderIntervene> page = new Page<OrderIntervene>(pageNo, pageSize);
|
||||
IPage<OrderIntervene> pageList = orderInterveneService.page(page, queryWrapper);
|
||||
return Result.OK(pageList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加
|
||||
*
|
||||
* @param orderIntervene
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "emergency_order_intervene-添加")
|
||||
@Operation(summary = "emergency_order_intervene-添加", description = "emergency_order_intervene-添加")
|
||||
@RequiresPermissions("emergency:emergency_order_intervene:add")
|
||||
@PostMapping(value = "/add")
|
||||
public Result<String> add(@RequestBody OrderIntervene orderIntervene) {
|
||||
orderInterveneService.save(orderIntervene);
|
||||
return Result.OK("添加成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑
|
||||
*
|
||||
* @param orderIntervene
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "emergency_order_intervene-编辑")
|
||||
@Operation(summary = "emergency_order_intervene-编辑", description = "emergency_order_intervene-编辑")
|
||||
@RequiresPermissions("emergency:emergency_order_intervene:edit")
|
||||
@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
|
||||
public Result<String> edit(@RequestBody OrderIntervene orderIntervene) {
|
||||
orderInterveneService.updateById(orderIntervene);
|
||||
return Result.OK("编辑成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id删除
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "emergency_order_intervene-通过id删除")
|
||||
@Operation(summary = "emergency_order_intervene-通过id删除", description = "emergency_order_intervene-通过id删除")
|
||||
@RequiresPermissions("emergency:emergency_order_intervene:delete")
|
||||
@DeleteMapping(value = "/delete")
|
||||
public Result<String> delete(@RequestParam(name="id",required=true) String id) {
|
||||
orderInterveneService.removeById(id);
|
||||
return Result.OK("删除成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除
|
||||
*
|
||||
* @param ids
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "emergency_order_intervene-批量删除")
|
||||
@Operation(summary = "emergency_order_intervene-批量删除", description = "emergency_order_intervene-批量删除")
|
||||
@RequiresPermissions("emergency:emergency_order_intervene:deleteBatch")
|
||||
@DeleteMapping(value = "/deleteBatch")
|
||||
public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
|
||||
this.orderInterveneService.removeByIds(Arrays.asList(ids.split(",")));
|
||||
return Result.OK("批量删除成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id查询
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
//@AutoLog(value = "emergency_order_intervene-通过id查询")
|
||||
@Operation(summary = "emergency_order_intervene-通过id查询", description = "emergency_order_intervene-通过id查询")
|
||||
@GetMapping(value = "/queryById")
|
||||
public Result<OrderIntervene> queryById(@RequestParam(name="id",required=true) String id) {
|
||||
OrderIntervene orderIntervene = orderInterveneService.getById(id);
|
||||
if(orderIntervene==null) {
|
||||
return Result.error("未找到对应数据");
|
||||
}
|
||||
return Result.OK(orderIntervene);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出excel
|
||||
*
|
||||
* @param request
|
||||
* @param orderIntervene
|
||||
*/
|
||||
@RequiresPermissions("emergency:emergency_order_intervene:exportXls")
|
||||
@RequestMapping(value = "/exportXls")
|
||||
public ModelAndView exportXls(HttpServletRequest request, OrderIntervene orderIntervene) {
|
||||
return super.exportXls(request, orderIntervene, OrderIntervene.class, "emergency_order_intervene");
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过excel导入数据
|
||||
*
|
||||
* @param request
|
||||
* @param response
|
||||
* @return
|
||||
*/
|
||||
@RequiresPermissions("emergency:emergency_order_intervene:importExcel")
|
||||
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
|
||||
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
|
||||
return super.importExcel(request, response, OrderIntervene.class);
|
||||
}
|
||||
|
||||
}
|
||||
+175
@@ -0,0 +1,175 @@
|
||||
package com.renkang.emergency.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.renkang.emergency.entity.OrderSendRecord;
|
||||
import com.renkang.emergency.service.IOrderSendRecordService;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
import org.jeecg.common.aspect.annotation.AutoLog;
|
||||
import org.jeecg.common.system.base.controller.JeecgController;
|
||||
import org.jeecg.common.system.query.QueryGenerator;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Description: emergency_order_send_record
|
||||
* @Author: jeecg-boot
|
||||
* @Date: 2023-04-27
|
||||
* @Version: V1.0
|
||||
*/
|
||||
@Tag(name = "emergency_order_send_record")
|
||||
@RestController
|
||||
@RequestMapping("/emergency/orderSendRecord")
|
||||
@Slf4j
|
||||
public class OrderSendRecordController extends JeecgController<OrderSendRecord, IOrderSendRecordService> {
|
||||
@Autowired
|
||||
private IOrderSendRecordService orderSendRecordService;
|
||||
|
||||
/**
|
||||
* 分页列表查询
|
||||
*
|
||||
* @param orderSendRecord
|
||||
* @param pageNo
|
||||
* @param pageSize
|
||||
* @param req
|
||||
* @return
|
||||
*/
|
||||
//@AutoLog(value = "emergency_order_send_record-分页列表查询")
|
||||
@Operation(summary = "emergency_order_send_record-分页列表查询", description = "emergency_order_send_record-分页列表查询")
|
||||
@GetMapping(value = "/list")
|
||||
public Result<IPage<OrderSendRecord>> queryPageList(OrderSendRecord orderSendRecord,
|
||||
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
|
||||
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
|
||||
HttpServletRequest req) {
|
||||
QueryWrapper<OrderSendRecord> queryWrapper = QueryGenerator.initQueryWrapper(orderSendRecord, req.getParameterMap());
|
||||
queryWrapper.lambda().orderByDesc(OrderSendRecord::getCreateTime);
|
||||
Page<OrderSendRecord> page = new Page<OrderSendRecord>(pageNo, pageSize);
|
||||
IPage<OrderSendRecord> pageList = orderSendRecordService.page(page, queryWrapper);
|
||||
return Result.OK(pageList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取应急单的所有派单记录
|
||||
*
|
||||
* @param orderId 订单id
|
||||
* @return result
|
||||
*/
|
||||
@GetMapping(value = "/all")
|
||||
public Result<List<OrderSendRecord>> all(@RequestParam String orderId) {
|
||||
return Result.OK(orderSendRecordService.all(orderId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加
|
||||
*
|
||||
* @param orderSendRecord
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "emergency_order_send_record-添加")
|
||||
@Operation(summary = "emergency_order_send_record-添加", description = "emergency_order_send_record-添加")
|
||||
@RequiresPermissions("emergency:emergency_order_send_record:add")
|
||||
@PostMapping(value = "/add")
|
||||
public Result<String> add(@RequestBody OrderSendRecord orderSendRecord) {
|
||||
orderSendRecordService.save(orderSendRecord);
|
||||
return Result.OK("添加成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑
|
||||
*
|
||||
* @param orderSendRecord
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "emergency_order_send_record-编辑")
|
||||
@Operation(summary = "emergency_order_send_record-编辑", description = "emergency_order_send_record-编辑")
|
||||
@RequiresPermissions("emergency:emergency_order_send_record:edit")
|
||||
@RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST})
|
||||
public Result<String> edit(@RequestBody OrderSendRecord orderSendRecord) {
|
||||
orderSendRecordService.updateById(orderSendRecord);
|
||||
return Result.OK("编辑成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id删除
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "emergency_order_send_record-通过id删除")
|
||||
@Operation(summary = "emergency_order_send_record-通过id删除", description = "emergency_order_send_record-通过id删除")
|
||||
@RequiresPermissions("emergency:emergency_order_send_record:delete")
|
||||
@DeleteMapping(value = "/delete")
|
||||
public Result<String> delete(@RequestParam(name = "id", required = true) String id) {
|
||||
orderSendRecordService.removeById(id);
|
||||
return Result.OK("删除成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除
|
||||
*
|
||||
* @param ids
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "emergency_order_send_record-批量删除")
|
||||
@Operation(summary = "emergency_order_send_record-批量删除", description = "emergency_order_send_record-批量删除")
|
||||
@RequiresPermissions("emergency:emergency_order_send_record:deleteBatch")
|
||||
@DeleteMapping(value = "/deleteBatch")
|
||||
public Result<String> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
|
||||
this.orderSendRecordService.removeByIds(Arrays.asList(ids.split(",")));
|
||||
return Result.OK("批量删除成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id查询
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
//@AutoLog(value = "emergency_order_send_record-通过id查询")
|
||||
@Operation(summary = "emergency_order_send_record-通过id查询", description = "emergency_order_send_record-通过id查询")
|
||||
@GetMapping(value = "/queryById")
|
||||
public Result<OrderSendRecord> queryById(@RequestParam(name = "id", required = true) String id) {
|
||||
OrderSendRecord orderSendRecord = orderSendRecordService.getById(id);
|
||||
if (orderSendRecord == null) {
|
||||
return Result.error("未找到对应数据");
|
||||
}
|
||||
return Result.OK(orderSendRecord);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出excel
|
||||
*
|
||||
* @param request
|
||||
* @param orderSendRecord
|
||||
*/
|
||||
@RequiresPermissions("emergency:emergency_order_send_record:exportXls")
|
||||
@RequestMapping(value = "/exportXls")
|
||||
public ModelAndView exportXls(HttpServletRequest request, OrderSendRecord orderSendRecord) {
|
||||
return super.exportXls(request, orderSendRecord, OrderSendRecord.class, "emergency_order_send_record");
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过excel导入数据
|
||||
*
|
||||
* @param request
|
||||
* @param response
|
||||
* @return
|
||||
*/
|
||||
@RequiresPermissions("emergency:emergency_order_send_record:importExcel")
|
||||
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
|
||||
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
|
||||
return super.importExcel(request, response, OrderSendRecord.class);
|
||||
}
|
||||
|
||||
}
|
||||
+250
@@ -0,0 +1,250 @@
|
||||
package com.renkang.emergency.controller;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.renkang.emergency.bean.response.EmergencyHospital;
|
||||
import com.renkang.emergency.constant.EmergencyConstants;
|
||||
import com.renkang.emergency.entity.Resource;
|
||||
import com.renkang.emergency.manager.EmergencyCacheManager;
|
||||
import com.renkang.emergency.manager.ResourceManager;
|
||||
import com.renkang.emergency.service.IResourceService;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
import org.jeecg.common.aspect.annotation.AutoLog;
|
||||
import org.jeecg.common.system.base.controller.JeecgController;
|
||||
import org.jeecg.common.system.query.QueryGenerator;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Description: 应急资源
|
||||
* @Author: jeecg-boot
|
||||
* @Date: 2023-04-24
|
||||
* @Version: V1.0
|
||||
*/
|
||||
@Tag(name = "应急资源")
|
||||
@RestController
|
||||
@RequestMapping("/emergency/resource")
|
||||
@Slf4j
|
||||
public class ResourceController extends JeecgController<Resource, IResourceService> {
|
||||
@Autowired
|
||||
private IResourceService resourceService;
|
||||
@Autowired
|
||||
private ResourceManager resourceManager;
|
||||
@Autowired
|
||||
private EmergencyCacheManager emergencyCacheManager;
|
||||
|
||||
|
||||
/**
|
||||
* 所有的应急医院
|
||||
*
|
||||
* @return list hospital
|
||||
*/
|
||||
@GetMapping(value = "listCustom")
|
||||
public Result<List<EmergencyHospital>> listCustom() {
|
||||
return Result.OK(resourceService.listCustom());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 分页列表查询
|
||||
*
|
||||
* @param resource
|
||||
* @param pageNo
|
||||
* @param pageSize
|
||||
* @param req
|
||||
* @return
|
||||
*/
|
||||
//@AutoLog(value = "应急资源-分页列表查询")
|
||||
@Operation(summary = "应急资源-分页列表查询", description = "应急资源-分页列表查询")
|
||||
@GetMapping(value = "/list")
|
||||
public Result<IPage<Resource>> queryPageList(Resource resource,
|
||||
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
|
||||
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
|
||||
HttpServletRequest req) {
|
||||
QueryWrapper<Resource> queryWrapper = QueryGenerator.initQueryWrapper(resource, req.getParameterMap());
|
||||
Page<Resource> page = new Page<Resource>(pageNo, pageSize);
|
||||
IPage<Resource> pageList = resourceService.page(page, queryWrapper);
|
||||
return Result.OK(pageList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加
|
||||
*
|
||||
* @param resource
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "应急资源-添加")
|
||||
@Operation(summary = "应急资源-添加", description = "应急资源-添加")
|
||||
@RequiresPermissions("emergency:emergency_resource:add")
|
||||
@PostMapping(value = "/add")
|
||||
public Result<String> add(@RequestBody Resource resource) {
|
||||
if (ObjectUtil.isNull(resource.getLongitude()) || ObjectUtil.isNull(resource.getLatitude())) {
|
||||
return Result.error("经纬度为空");
|
||||
}
|
||||
if (resource.getLongitude().compareTo(EmergencyConstants.LONGITUDE_START) < 0
|
||||
|| resource.getLongitude().compareTo(EmergencyConstants.LONGITUDE_END) > 0) {
|
||||
return Result.error("经度范围正常值为:" + EmergencyConstants.LONGITUDE_START + "--" + EmergencyConstants.LONGITUDE_END);
|
||||
}
|
||||
if (resource.getLatitude().compareTo(EmergencyConstants.LATITUDE_START) < 0
|
||||
|| resource.getLatitude().compareTo(EmergencyConstants.LATITUDE_END) > 0) {
|
||||
return Result.error("维度范围正常值为:" + EmergencyConstants.LATITUDE_START + "--" + EmergencyConstants.LATITUDE_END);
|
||||
}
|
||||
resourceService.save(resource);
|
||||
|
||||
// 添加redis geo
|
||||
resourceManager.addOne(resource);
|
||||
|
||||
return Result.OK("添加成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑
|
||||
*
|
||||
* @param resource
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "应急资源-编辑")
|
||||
@Operation(summary = "应急资源-编辑", description = "应急资源-编辑")
|
||||
@RequiresPermissions("emergency:emergency_resource:edit")
|
||||
@RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST})
|
||||
public Result<String> edit(@RequestBody Resource resource) {
|
||||
|
||||
if (ObjectUtil.isNotNull(resource.getLongitude())) {
|
||||
if (resource.getLongitude().compareTo(EmergencyConstants.LONGITUDE_START) < 0
|
||||
|| resource.getLongitude().compareTo(EmergencyConstants.LONGITUDE_END) > 0) {
|
||||
return Result.error("经度范围正常值为:" + EmergencyConstants.LONGITUDE_START + "--" + EmergencyConstants.LONGITUDE_END);
|
||||
}
|
||||
}
|
||||
|
||||
if (ObjectUtil.isNotNull(resource.getLatitude())) {
|
||||
if (resource.getLatitude().compareTo(EmergencyConstants.LATITUDE_START) < 0
|
||||
|| resource.getLatitude().compareTo(EmergencyConstants.LATITUDE_END) > 0) {
|
||||
return Result.error("维度范围正常值为:" + EmergencyConstants.LATITUDE_START + "--" + EmergencyConstants.LATITUDE_END);
|
||||
}
|
||||
}
|
||||
|
||||
// 旧数据
|
||||
Resource old = resourceService.getById(resource.getId());
|
||||
if (old == null) {
|
||||
return Result.error("数据异常,不存在的数据");
|
||||
}
|
||||
// 编辑数据
|
||||
resourceService.updateById(resource);
|
||||
// 删除旧数据缓存
|
||||
emergencyCacheManager.deleteCache(resource.getId());
|
||||
|
||||
// 修改redis geo
|
||||
if (old.getLongitude() != null && old.getLatitude() != null && resource.getLongitude() != null && resource.getLatitude() != null) {
|
||||
if (old.getLongitude().compareTo(resource.getLongitude()) != 0
|
||||
|| old.getLatitude().compareTo(resource.getLatitude()) != 0) {
|
||||
// 编辑redis geo
|
||||
resourceManager.editOne(resource);
|
||||
}
|
||||
}
|
||||
|
||||
return Result.OK("编辑成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id删除
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "应急资源-通过id删除")
|
||||
@Operation(summary = "应急资源-通过id删除", description = "应急资源-通过id删除")
|
||||
@RequiresPermissions("emergency:emergency_resource:delete")
|
||||
@DeleteMapping(value = "/delete")
|
||||
public Result<String> delete(@RequestParam(name = "id", required = true) String id) {
|
||||
Resource resource = resourceService.getById(id);
|
||||
if (ObjectUtil.isNull(resource)) {
|
||||
return Result.OK("删除成功!");
|
||||
}
|
||||
resourceService.removeById(id);
|
||||
// redis geo
|
||||
resourceManager.delOne(resource);
|
||||
return Result.OK("删除成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除
|
||||
*
|
||||
* @param ids
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "应急资源-批量删除")
|
||||
@Operation(summary = "应急资源-批量删除", description = "应急资源-批量删除")
|
||||
@RequiresPermissions("emergency:emergency_resource:deleteBatch")
|
||||
@DeleteMapping(value = "/deleteBatch")
|
||||
public Result<String> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
|
||||
// 删除redis geo 以及缓存
|
||||
List<Resource> resources = resourceService.listByIds(Arrays.asList(ids.split(",")));
|
||||
|
||||
this.resourceService.removeByIds(Arrays.asList(ids.split(",")));
|
||||
|
||||
resourceManager.delBatch(resources);
|
||||
return Result.OK("批量删除成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id查询
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
//@AutoLog(value = "应急资源-通过id查询")
|
||||
@Operation(summary = "应急资源-通过id查询", description = "应急资源-通过id查询")
|
||||
@GetMapping(value = "/queryById")
|
||||
public Result<Resource> queryById(@RequestParam(name = "id", required = true) String id) {
|
||||
Resource resource = resourceService.getById(id);
|
||||
if (resource == null) {
|
||||
return Result.error("未找到对应数据");
|
||||
}
|
||||
return Result.OK(resource);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出excel
|
||||
*
|
||||
* @param request
|
||||
* @param resource
|
||||
*/
|
||||
@RequiresPermissions("emergency:emergency_resource:exportXls")
|
||||
@RequestMapping(value = "/exportXls")
|
||||
public ModelAndView exportXls(HttpServletRequest request, Resource resource) {
|
||||
return super.exportXls(request, resource, Resource.class, "应急资源");
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过excel导入数据
|
||||
*
|
||||
* @param request
|
||||
* @param response
|
||||
* @return
|
||||
*/
|
||||
@RequiresPermissions("emergency:emergency_resource:importExcel")
|
||||
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
|
||||
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
|
||||
return super.importExcel(request, response, Resource.class);
|
||||
}
|
||||
|
||||
|
||||
@GetMapping(value = "/selectHostitalList")
|
||||
public Result<List<Resource>> selectHostitalList() {
|
||||
|
||||
List<Resource> pageList = resourceService.selectHostitalList();
|
||||
return Result.OK(pageList);
|
||||
}
|
||||
}
|
||||
+210
@@ -0,0 +1,210 @@
|
||||
package com.renkang.emergency.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.renkang.emergency.bean.request.ScheduleCustomDetail;
|
||||
import com.renkang.emergency.bean.response.ScheduleDefaultCustom;
|
||||
import com.renkang.emergency.entity.ScheduleCustom;
|
||||
import com.renkang.emergency.service.IScheduleCustomService;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
import org.jeecg.common.aspect.annotation.AutoLog;
|
||||
import org.jeecg.common.system.base.controller.JeecgController;
|
||||
import org.jeecg.common.system.query.QueryGenerator;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.Arrays;
|
||||
|
||||
/**
|
||||
* @Description: emergency_schedule_custom
|
||||
* @Author: jeecg-boot
|
||||
* @Date: 2023-04-26
|
||||
* @Version: V1.0
|
||||
*/
|
||||
@Tag(name = "emergency_schedule_custom")
|
||||
@RestController
|
||||
@RequestMapping("/emergency/scheduleCustom")
|
||||
@Slf4j
|
||||
public class ScheduleCustomController extends JeecgController<ScheduleCustom, IScheduleCustomService> {
|
||||
@Autowired
|
||||
private IScheduleCustomService scheduleCustomService;
|
||||
|
||||
/**
|
||||
* 分页列表查询
|
||||
*
|
||||
* @param scheduleCustom
|
||||
* @param pageNo
|
||||
* @param pageSize
|
||||
* @param req
|
||||
* @return
|
||||
*/
|
||||
//@AutoLog(value = "emergency_schedule_custom-分页列表查询")
|
||||
@Operation(summary = "emergency_schedule_custom-分页列表查询", description = "emergency_schedule_custom-分页列表查询")
|
||||
@GetMapping(value = "/list")
|
||||
public Result<IPage<ScheduleCustom>> queryPageList(ScheduleCustom scheduleCustom,
|
||||
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
|
||||
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
|
||||
HttpServletRequest req) {
|
||||
QueryWrapper<ScheduleCustom> queryWrapper = QueryGenerator.initQueryWrapper(scheduleCustom, req.getParameterMap());
|
||||
queryWrapper.lambda().orderByDesc(ScheduleCustom::getScheduleTime);
|
||||
Page<ScheduleCustom> page = new Page<ScheduleCustom>(pageNo, pageSize);
|
||||
IPage<ScheduleCustom> pageList = scheduleCustomService.page(page, queryWrapper);
|
||||
return Result.OK(pageList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页数据
|
||||
*
|
||||
* @param amOrPm 0:上午 1:下午
|
||||
* @param date 日期
|
||||
* @param pageNo 页码
|
||||
* @param pageSize 条数
|
||||
* @return
|
||||
*/
|
||||
@GetMapping(value = "/listCustom")
|
||||
public Result<IPage<ScheduleDefaultCustom>> listCustom(String amOrPm, String date,
|
||||
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
|
||||
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
|
||||
Page<ScheduleDefaultCustom> page = new Page<>(pageNo, pageSize);
|
||||
IPage<ScheduleDefaultCustom> pageList = scheduleCustomService.pageCustom(page, amOrPm, date);
|
||||
return Result.OK(pageList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改自定义排班
|
||||
*
|
||||
* @param detail 数据
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/updateScheduleCustom")
|
||||
public Result<Boolean> updateScheduleCustom(@RequestBody @Validated ScheduleCustomDetail detail) {
|
||||
boolean result = scheduleCustomService.updateScheduleCustom(detail);
|
||||
if (result) {
|
||||
return Result.OK("修改成功");
|
||||
}
|
||||
return Result.OK("修改失败");
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除自定义排班
|
||||
*
|
||||
* @param detail 数据
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/delCustom")
|
||||
public Result<String> delCustom(@RequestBody @Validated ScheduleCustomDetail detail) {
|
||||
return scheduleCustomService.delCustom(detail);
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加
|
||||
*
|
||||
* @param scheduleCustom
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "emergency_schedule_custom-添加")
|
||||
@Operation(summary = "emergency_schedule_custom-添加", description = "emergency_schedule_custom-添加")
|
||||
@RequiresPermissions("emergency:emergency_schedule_custom:add")
|
||||
@PostMapping(value = "/add")
|
||||
public Result<String> add(@RequestBody ScheduleCustom scheduleCustom) {
|
||||
scheduleCustomService.save(scheduleCustom);
|
||||
return Result.OK("添加成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑
|
||||
*
|
||||
* @param scheduleCustom
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "emergency_schedule_custom-编辑")
|
||||
@Operation(summary = "emergency_schedule_custom-编辑", description = "emergency_schedule_custom-编辑")
|
||||
@RequiresPermissions("emergency:emergency_schedule_custom:edit")
|
||||
@RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST})
|
||||
public Result<String> edit(@RequestBody ScheduleCustom scheduleCustom) {
|
||||
scheduleCustomService.updateById(scheduleCustom);
|
||||
return Result.OK("编辑成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id删除
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "emergency_schedule_custom-通过id删除")
|
||||
@Operation(summary = "emergency_schedule_custom-通过id删除", description = "emergency_schedule_custom-通过id删除")
|
||||
@RequiresPermissions("emergency:emergency_schedule_custom:delete")
|
||||
@DeleteMapping(value = "/delete")
|
||||
public Result<String> delete(@RequestParam(name = "id", required = true) String id) {
|
||||
scheduleCustomService.removeById(id);
|
||||
return Result.OK("删除成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除
|
||||
*
|
||||
* @param ids
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "emergency_schedule_custom-批量删除")
|
||||
@Operation(summary = "emergency_schedule_custom-批量删除", description = "emergency_schedule_custom-批量删除")
|
||||
@RequiresPermissions("emergency:emergency_schedule_custom:deleteBatch")
|
||||
@DeleteMapping(value = "/deleteBatch")
|
||||
public Result<String> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
|
||||
this.scheduleCustomService.removeByIds(Arrays.asList(ids.split(",")));
|
||||
return Result.OK("批量删除成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id查询
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
//@AutoLog(value = "emergency_schedule_custom-通过id查询")
|
||||
@Operation(summary = "emergency_schedule_custom-通过id查询", description = "emergency_schedule_custom-通过id查询")
|
||||
@GetMapping(value = "/queryById")
|
||||
public Result<ScheduleCustom> queryById(@RequestParam(name = "id", required = true) String id) {
|
||||
ScheduleCustom scheduleCustom = scheduleCustomService.getById(id);
|
||||
if (scheduleCustom == null) {
|
||||
return Result.error("未找到对应数据");
|
||||
}
|
||||
return Result.OK(scheduleCustom);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出excel
|
||||
*
|
||||
* @param request
|
||||
* @param scheduleCustom
|
||||
*/
|
||||
@RequiresPermissions("emergency:emergency_schedule_custom:exportXls")
|
||||
@RequestMapping(value = "/exportXls")
|
||||
public ModelAndView exportXls(HttpServletRequest request, ScheduleCustom scheduleCustom) {
|
||||
return super.exportXls(request, scheduleCustom, ScheduleCustom.class, "emergency_schedule_custom");
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过excel导入数据
|
||||
*
|
||||
* @param request
|
||||
* @param response
|
||||
* @return
|
||||
*/
|
||||
@RequiresPermissions("emergency:emergency_schedule_custom:importExcel")
|
||||
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
|
||||
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
|
||||
return super.importExcel(request, response, ScheduleCustom.class);
|
||||
}
|
||||
|
||||
}
|
||||
+172
@@ -0,0 +1,172 @@
|
||||
package com.renkang.emergency.controller;
|
||||
|
||||
import com.renkang.emergency.bean.request.ScheduleDetail;
|
||||
import com.renkang.emergency.bean.response.ScheduleDefaultCustom;
|
||||
import com.renkang.emergency.entity.ScheduleDefault;
|
||||
import com.renkang.emergency.service.IScheduleDefaultService;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
import org.jeecg.common.aspect.annotation.AutoLog;
|
||||
import org.jeecg.common.system.base.controller.JeecgController;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Description: emergency_schedule_default
|
||||
* @Author: jeecg-boot
|
||||
* @Date: 2023-04-26
|
||||
* @Version: V1.0
|
||||
*/
|
||||
@Tag(name = "emergency_schedule_default")
|
||||
@RestController
|
||||
@RequestMapping("/emergency/scheduleDefault")
|
||||
@Slf4j
|
||||
public class ScheduleDefaultController extends JeecgController<ScheduleDefault, IScheduleDefaultService> {
|
||||
@Autowired
|
||||
private IScheduleDefaultService scheduleDefaultService;
|
||||
|
||||
/**
|
||||
* 分页列表查询
|
||||
*
|
||||
* @param scheduleDefault
|
||||
* @param pageNo
|
||||
* @param pageSize
|
||||
* @param req
|
||||
* @return
|
||||
*/
|
||||
//@AutoLog(value = "emergency_schedule_default-分页列表查询")
|
||||
@Operation(summary = "emergency_schedule_default-分页列表查询", description = "emergency_schedule_default-分页列表查询")
|
||||
@GetMapping(value = "/list")
|
||||
public Result<List<ScheduleDefaultCustom>> list() {
|
||||
return Result.OK(scheduleDefaultService.listCustom());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 修改自定义排班
|
||||
*
|
||||
* @param scheduleDetail 数据
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/updateScheduleDefault")
|
||||
public Result<Boolean> updateScheduleDefault(@RequestBody @Validated ScheduleDetail scheduleDetail) {
|
||||
boolean result = scheduleDefaultService.updateScheduleDefault(scheduleDetail);
|
||||
if (result) {
|
||||
return Result.OK("修改成功");
|
||||
}
|
||||
return Result.OK("修改失败");
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加
|
||||
*
|
||||
* @param scheduleDefault
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "emergency_schedule_default-添加")
|
||||
@Operation(summary = "emergency_schedule_default-添加", description = "emergency_schedule_default-添加")
|
||||
@RequiresPermissions("emergency:emergency_schedule_default:add")
|
||||
@PostMapping(value = "/add")
|
||||
public Result<String> add(@RequestBody ScheduleDefault scheduleDefault) {
|
||||
scheduleDefaultService.save(scheduleDefault);
|
||||
return Result.OK("添加成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑
|
||||
*
|
||||
* @param scheduleDefault
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "emergency_schedule_default-编辑")
|
||||
@Operation(summary = "emergency_schedule_default-编辑", description = "emergency_schedule_default-编辑")
|
||||
@RequiresPermissions("emergency:emergency_schedule_default:edit")
|
||||
@RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST})
|
||||
public Result<String> edit(@RequestBody ScheduleDefault scheduleDefault) {
|
||||
scheduleDefaultService.updateById(scheduleDefault);
|
||||
return Result.OK("编辑成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id删除
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "emergency_schedule_default-通过id删除")
|
||||
@Operation(summary = "emergency_schedule_default-通过id删除", description = "emergency_schedule_default-通过id删除")
|
||||
@RequiresPermissions("emergency:emergency_schedule_default:delete")
|
||||
@DeleteMapping(value = "/delete")
|
||||
public Result<String> delete(@RequestParam(name = "id", required = true) String id) {
|
||||
scheduleDefaultService.removeById(id);
|
||||
return Result.OK("删除成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除
|
||||
*
|
||||
* @param ids
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "emergency_schedule_default-批量删除")
|
||||
@Operation(summary = "emergency_schedule_default-批量删除", description = "emergency_schedule_default-批量删除")
|
||||
@RequiresPermissions("emergency:emergency_schedule_default:deleteBatch")
|
||||
@DeleteMapping(value = "/deleteBatch")
|
||||
public Result<String> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
|
||||
this.scheduleDefaultService.removeByIds(Arrays.asList(ids.split(",")));
|
||||
return Result.OK("批量删除成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id查询
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
//@AutoLog(value = "emergency_schedule_default-通过id查询")
|
||||
@Operation(summary = "emergency_schedule_default-通过id查询", description = "emergency_schedule_default-通过id查询")
|
||||
@GetMapping(value = "/queryById")
|
||||
public Result<ScheduleDefault> queryById(@RequestParam(name = "id", required = true) String id) {
|
||||
ScheduleDefault scheduleDefault = scheduleDefaultService.getById(id);
|
||||
if (scheduleDefault == null) {
|
||||
return Result.error("未找到对应数据");
|
||||
}
|
||||
return Result.OK(scheduleDefault);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出excel
|
||||
*
|
||||
* @param request
|
||||
* @param scheduleDefault
|
||||
*/
|
||||
@RequiresPermissions("emergency:emergency_schedule_default:exportXls")
|
||||
@RequestMapping(value = "/exportXls")
|
||||
public ModelAndView exportXls(HttpServletRequest request, ScheduleDefault scheduleDefault) {
|
||||
return super.exportXls(request, scheduleDefault, ScheduleDefault.class, "emergency_schedule_default");
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过excel导入数据
|
||||
*
|
||||
* @param request
|
||||
* @param response
|
||||
* @return
|
||||
*/
|
||||
@RequiresPermissions("emergency:emergency_schedule_default:importExcel")
|
||||
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
|
||||
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
|
||||
return super.importExcel(request, response, ScheduleDefault.class);
|
||||
}
|
||||
|
||||
}
|
||||
+181
@@ -0,0 +1,181 @@
|
||||
package com.renkang.emergency.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.renkang.emergency.bean.response.ScheduleDefaultCustom;
|
||||
import com.renkang.emergency.entity.ScheduleRecord;
|
||||
import com.renkang.emergency.service.IScheduleRecordService;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
import org.jeecg.common.aspect.annotation.AutoLog;
|
||||
import org.jeecg.common.system.base.controller.JeecgController;
|
||||
import org.jeecg.common.system.query.QueryGenerator;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.Arrays;
|
||||
|
||||
/**
|
||||
* @Description: emergency_schedule_record
|
||||
* @Author: jeecg-boot
|
||||
* @Date: 2023-05-25
|
||||
* @Version: V1.0
|
||||
*/
|
||||
@Tag(name = "emergency_schedule_record")
|
||||
@RestController
|
||||
@RequestMapping("/emergency/scheduleRecord")
|
||||
@Slf4j
|
||||
public class ScheduleRecordController extends JeecgController<ScheduleRecord, IScheduleRecordService> {
|
||||
@Autowired
|
||||
private IScheduleRecordService scheduleRecordService;
|
||||
|
||||
/**
|
||||
* 分页列表查询
|
||||
*
|
||||
* @param scheduleRecord
|
||||
* @param pageNo
|
||||
* @param pageSize
|
||||
* @param req
|
||||
* @return
|
||||
*/
|
||||
//@AutoLog(value = "emergency_schedule_record-分页列表查询")
|
||||
@Operation(summary = "emergency_schedule_record-分页列表查询", description = "emergency_schedule_record-分页列表查询")
|
||||
@GetMapping(value = "/list")
|
||||
public Result<IPage<ScheduleRecord>> queryPageList(ScheduleRecord scheduleRecord,
|
||||
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
|
||||
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
|
||||
HttpServletRequest req) {
|
||||
QueryWrapper<ScheduleRecord> queryWrapper = QueryGenerator.initQueryWrapper(scheduleRecord, req.getParameterMap());
|
||||
Page<ScheduleRecord> page = new Page<ScheduleRecord>(pageNo, pageSize);
|
||||
IPage<ScheduleRecord> pageList = scheduleRecordService.page(page, queryWrapper);
|
||||
return Result.OK(pageList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 自定义分页数据
|
||||
*
|
||||
* @param amOrPm 0:上午 1:下午
|
||||
* @param date 日期
|
||||
* @param pageNo 页码
|
||||
* @param pageSize 条数
|
||||
* @return
|
||||
*/
|
||||
@GetMapping(value = "/listCustom")
|
||||
public Result<IPage<ScheduleDefaultCustom>> listCustom(String amOrPm, String date,
|
||||
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
|
||||
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
|
||||
Page<ScheduleDefaultCustom> page = new Page<>(pageNo, pageSize);
|
||||
IPage<ScheduleDefaultCustom> pageList = scheduleRecordService.pageCustom(page, amOrPm, date);
|
||||
return Result.OK(pageList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加
|
||||
*
|
||||
* @param scheduleRecord
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "emergency_schedule_record-添加")
|
||||
@Operation(summary = "emergency_schedule_record-添加", description = "emergency_schedule_record-添加")
|
||||
@RequiresPermissions("emergency:emergency_schedule_record:add")
|
||||
@PostMapping(value = "/add")
|
||||
public Result<String> add(@RequestBody ScheduleRecord scheduleRecord) {
|
||||
scheduleRecordService.save(scheduleRecord);
|
||||
return Result.OK("添加成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑
|
||||
*
|
||||
* @param scheduleRecord
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "emergency_schedule_record-编辑")
|
||||
@Operation(summary = "emergency_schedule_record-编辑", description = "emergency_schedule_record-编辑")
|
||||
@RequiresPermissions("emergency:emergency_schedule_record:edit")
|
||||
@RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST})
|
||||
public Result<String> edit(@RequestBody ScheduleRecord scheduleRecord) {
|
||||
scheduleRecordService.updateById(scheduleRecord);
|
||||
return Result.OK("编辑成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id删除
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "emergency_schedule_record-通过id删除")
|
||||
@Operation(summary = "emergency_schedule_record-通过id删除", description = "emergency_schedule_record-通过id删除")
|
||||
@RequiresPermissions("emergency:emergency_schedule_record:delete")
|
||||
@DeleteMapping(value = "/delete")
|
||||
public Result<String> delete(@RequestParam(name = "id", required = true) String id) {
|
||||
scheduleRecordService.removeById(id);
|
||||
return Result.OK("删除成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除
|
||||
*
|
||||
* @param ids
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "emergency_schedule_record-批量删除")
|
||||
@Operation(summary = "emergency_schedule_record-批量删除", description = "emergency_schedule_record-批量删除")
|
||||
@RequiresPermissions("emergency:emergency_schedule_record:deleteBatch")
|
||||
@DeleteMapping(value = "/deleteBatch")
|
||||
public Result<String> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
|
||||
this.scheduleRecordService.removeByIds(Arrays.asList(ids.split(",")));
|
||||
return Result.OK("批量删除成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id查询
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
//@AutoLog(value = "emergency_schedule_record-通过id查询")
|
||||
@Operation(summary = "emergency_schedule_record-通过id查询", description = "emergency_schedule_record-通过id查询")
|
||||
@GetMapping(value = "/queryById")
|
||||
public Result<ScheduleRecord> queryById(@RequestParam(name = "id", required = true) String id) {
|
||||
ScheduleRecord scheduleRecord = scheduleRecordService.getById(id);
|
||||
if (scheduleRecord == null) {
|
||||
return Result.error("未找到对应数据");
|
||||
}
|
||||
return Result.OK(scheduleRecord);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出excel
|
||||
*
|
||||
* @param request
|
||||
* @param scheduleRecord
|
||||
*/
|
||||
@RequiresPermissions("emergency:emergency_schedule_record:exportXls")
|
||||
@RequestMapping(value = "/exportXls")
|
||||
public ModelAndView exportXls(HttpServletRequest request, ScheduleRecord scheduleRecord) {
|
||||
return super.exportXls(request, scheduleRecord, ScheduleRecord.class, "emergency_schedule_record");
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过excel导入数据
|
||||
*
|
||||
* @param request
|
||||
* @param response
|
||||
* @return
|
||||
*/
|
||||
@RequiresPermissions("emergency:emergency_schedule_record:importExcel")
|
||||
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
|
||||
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
|
||||
return super.importExcel(request, response, ScheduleRecord.class);
|
||||
}
|
||||
|
||||
}
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
package com.renkang.emergency.controller;
|
||||
|
||||
import com.renkang.emergency.service.ITblAmbulanceGpsService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
/**
|
||||
* @author TianZi
|
||||
* @date 2023/11/30 17:14
|
||||
*/
|
||||
@Tag(name = "应急大屏/获取地图信息", description = "应急大屏/获取地图信息")
|
||||
@RestController
|
||||
@RequestMapping("/emergency/tblAmbulanceGps")
|
||||
public class TblAmbulanceGpsController {
|
||||
|
||||
@Resource
|
||||
private ITblAmbulanceGpsService tblAmbulanceGpsService;
|
||||
|
||||
/**
|
||||
* 获取所有资源
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/getAllList")
|
||||
@Operation(summary = "获取所有资源", description = "获取所有资源")
|
||||
public Result<?> getAllList(@Parameter(description = "纬度:34") @RequestParam(name = "lat") String lat,
|
||||
@Parameter(description = "经度:108") @RequestParam(name = "lon") String lon,
|
||||
@Parameter(description = "空串:全部资源,1:油田医院,2:合作医院,3:医疗点") @RequestParam(name = "type", required = false) String type,
|
||||
@Parameter(description = "搜索关键字") @RequestParam(name = "keys", required = false) String keys) {
|
||||
return Result.OK(tblAmbulanceGpsService.getAllList(lat,lon,type,keys));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取救护车gps信息
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/getAmbulanceList")
|
||||
public Result<?> getAmbulanceList() {
|
||||
return Result.OK(tblAmbulanceGpsService.getAmbulanceList());
|
||||
}
|
||||
|
||||
}
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
package com.renkang.emergency.controller;
|
||||
|
||||
import com.renkang.emergency.service.ITbHelpCenterService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
/**
|
||||
* @author TianZi
|
||||
* @date 2023/11/30 17:14
|
||||
*/
|
||||
@Tag(name = "应急大屏/主诉分类", description = "应急大屏/主诉分类")
|
||||
@RestController
|
||||
@RequestMapping("/emergency/tblHelpCenter")
|
||||
public class TblHelpCenterController {
|
||||
|
||||
@Resource
|
||||
private ITbHelpCenterService tbHelpCenterService;
|
||||
|
||||
@GetMapping("/sicknessTypeStatistic")
|
||||
@Operation(summary = "主诉分类统计", description = "主诉分类统计")
|
||||
public Result<?> sicknessTypeStatistic(@Parameter(description = "0:全部 1:女,2:男") @RequestParam(required = false) String sex, @Parameter(description = "部门id") @RequestParam(required = false) String depart) {
|
||||
return Result.OK(tbHelpCenterService.sicknessTypeStatistic(sex,depart));
|
||||
}
|
||||
|
||||
}
|
||||
+252
@@ -0,0 +1,252 @@
|
||||
package com.renkang.emergency.controller;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.lang.Validator;
|
||||
import cn.hutool.core.util.ObjUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.renkang.emergency.api.service.impl.LargeScreenImpl;
|
||||
import com.renkang.emergency.async.AsyncImportService;
|
||||
import com.renkang.emergency.constant.EmergencyConstants;
|
||||
import com.renkang.emergency.entity.EmergencyGrouped;
|
||||
import com.renkang.emergency.entity.QimoVo;
|
||||
import com.renkang.emergency.entity.TblQimoNotice;
|
||||
import com.renkang.emergency.entity.TblUserHelp;
|
||||
import com.renkang.emergency.entity.dto.CallLogDTO;
|
||||
import com.renkang.emergency.service.*;
|
||||
import com.renkang.emergency.util.QimoVoUtil;
|
||||
import com.renkang.emergency.websocket.WebSocket;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
import org.jeecg.common.system.api.ISysBaseAPI;
|
||||
import org.jeecg.common.system.vo.LoginUser;
|
||||
import org.jeecg.common.util.DateUtils;
|
||||
import org.jeecg.common.util.RedisUtil;
|
||||
import org.jeecg.global.GlobalUtils;
|
||||
import org.jeecg.modules.exports.entity.CommonExportsInfo;
|
||||
import org.jeecg.modules.manager.ISysCache;
|
||||
import org.jeecg.modules.system.entity.SysUser;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Wang Hao
|
||||
* @date 2024/05/13 09:14
|
||||
*/
|
||||
@Slf4j
|
||||
@Tag(name = "应急大屏/云坐席")
|
||||
@RestController
|
||||
@RequestMapping("/api/qimo")
|
||||
public class TblQimoNoticeController {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(TblQimoNoticeController.class);
|
||||
|
||||
private static final String UNKNOWN_USER = "UNKNOWN_";
|
||||
|
||||
@Value("${qimo.notice:1}")
|
||||
private String qimoNotice;
|
||||
|
||||
@Resource
|
||||
private AsyncImportService asyncImportService;
|
||||
|
||||
@Resource
|
||||
private ITbQimoNoticeService qimoNoticeService;
|
||||
@Resource
|
||||
private ISysNotifySmsPhoneService sysNotifySmsPhoneService;
|
||||
@Resource
|
||||
private ITbUserHelpMacService userHelpMacService;
|
||||
@Resource
|
||||
private IEmergencyGroupedService groupedService;
|
||||
@Resource
|
||||
private IEmergencyCenterService centerService;
|
||||
@Resource
|
||||
private ISysBaseAPI sysBaseAPI;
|
||||
@Autowired
|
||||
private ISysCache sysCache;
|
||||
|
||||
@Resource
|
||||
private WebSocket webSocket;
|
||||
|
||||
@Autowired
|
||||
private ITblAmbulanceGpsService tblAmbulanceGpsService;
|
||||
|
||||
@Autowired
|
||||
private LargeScreenImpl largeScreen;
|
||||
|
||||
@Autowired
|
||||
private RedisUtil redisUtil;
|
||||
|
||||
@RequestMapping(value = "/callback", method = RequestMethod.GET)
|
||||
@ResponseBody
|
||||
public String callback(QimoVo qimoVo) {
|
||||
if (!checkCallBackType(qimoVo)) {
|
||||
return "200";
|
||||
}
|
||||
GlobalUtils.setHttpFeignToken();
|
||||
// 七陌重复推送处理,3分钟内同ID去重
|
||||
if (redisUtil.get(qimoVo.getCallSheetID()) != null) {
|
||||
return "200"; // 如果缓存中存在,直接返回
|
||||
}
|
||||
redisUtil.set(qimoVo.getCallSheetID(), qimoVo.getCalledNo(), 60 * 3);
|
||||
|
||||
TblQimoNotice notice = QimoVoUtil.copyToEntity(qimoVo);
|
||||
if (!"1".equals(qimoNotice)) {
|
||||
return "200"; // 不推送
|
||||
}
|
||||
logger.info("容联七陌开始推送信息=={}", notice.getCallNo());
|
||||
if (!saveNotice(notice)) {
|
||||
return "保存呼入信息失败";
|
||||
}
|
||||
// 保存用户求助表
|
||||
TblUserHelp userHelp = saveUserHelp(notice);
|
||||
// 20250427 新增需求 非当日数据 不推
|
||||
if (!DateUtils.isSameDay(DateUtil.beginOfDay(new Date()), notice.getRing())) {
|
||||
return "200";
|
||||
}
|
||||
// 大屏及短信推送
|
||||
largeScreen.qimoPush(userHelp);
|
||||
return "200";
|
||||
}
|
||||
|
||||
private boolean checkCallBackType(QimoVo qimoVo) {
|
||||
if ("dialout".equals(qimoVo.getCallType())) {
|
||||
return false;
|
||||
}
|
||||
if ("1".equals(qimoVo.getCallNo())) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存呼入信息
|
||||
* @param notice 呼入信息
|
||||
* @return 是否保存成功
|
||||
*/
|
||||
private boolean saveNotice(TblQimoNotice notice) {
|
||||
try {
|
||||
notice.setIsRead("0");
|
||||
notice.setCreateBy("admin");
|
||||
notice.setCreateDate(new Date());
|
||||
qimoNoticeService.save(notice);
|
||||
return true;
|
||||
} catch (Exception e) {
|
||||
logger.error("容联七陌保存呼入信息失败=={}", notice, e);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存用户求助表
|
||||
* @param notice 呼入信息
|
||||
* @return 用户求助信息
|
||||
*/
|
||||
private TblUserHelp saveUserHelp(TblQimoNotice notice) {
|
||||
TblUserHelp userHelp = new TblUserHelp();
|
||||
userHelp.setStatus("0");
|
||||
userHelp.setTreatType("2");
|
||||
userHelp.setType("3");
|
||||
userHelp.setOutMobile(notice.getCallNo());
|
||||
userHelp.setScreenStatus("1");
|
||||
userHelp.setExten(notice.getExten());
|
||||
userHelp.setQueue(notice.getQueue());
|
||||
userHelp.setNoticeId(notice.getId());
|
||||
userHelp.setCenterId(getCenterIdBySeatId(notice.getExten()));
|
||||
if ("银川中心".equals(notice.getQueue())) {
|
||||
userHelp.setScreenType("2");
|
||||
} else {
|
||||
userHelp.setScreenType("1");
|
||||
}
|
||||
SysUser user = null;
|
||||
// 手机号校验
|
||||
if (Validator.isMobile(notice.getCallNo())){
|
||||
List<SysUser> userList = sysBaseAPI.userListByPhone(notice.getCallNo());
|
||||
user = userList.stream()
|
||||
.filter(item -> "1".equals(item.getPersonType()))
|
||||
.findFirst()
|
||||
.orElse(null);
|
||||
}
|
||||
if (ObjUtil.isNotNull(user)) {
|
||||
userHelp.setUserId(user.getId());
|
||||
userHelp.setSex(user.getSex());
|
||||
userHelp.setRealName(user.getRealname());
|
||||
userHelp.setOrgCode(user.getOrgCode());
|
||||
} else {
|
||||
userHelp.setUserId(UNKNOWN_USER + notice.getCallNo());
|
||||
}
|
||||
userHelpMacService.create(userHelp);
|
||||
return userHelp;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据坐席工号查询应急中心
|
||||
* @param seatId 坐席工号
|
||||
* @return 应急中心
|
||||
*/
|
||||
private String getCenterIdBySeatId(String seatId) {
|
||||
LambdaQueryWrapper<EmergencyGrouped> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(EmergencyGrouped::getSeatId, seatId)
|
||||
.eq(EmergencyGrouped::getDelFlag, 0);
|
||||
EmergencyGrouped emergencyGrouped = groupedService.getOne(wrapper, false);
|
||||
if (ObjUtil.isNull(emergencyGrouped)) {
|
||||
return "1000000000000000000";
|
||||
}
|
||||
return emergencyGrouped.getCenterId();
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
|
||||
@ResponseBody
|
||||
@Operation(summary = "根据ID获取七陌推送信息信息", description = "根据ID获取七陌推送信息信息")
|
||||
public Result<?> get(@Parameter(required = true, name = "id", description = "ID") @PathVariable("id") String id) {
|
||||
TblQimoNotice task = qimoNoticeService.getById(id);
|
||||
if (task == null) {
|
||||
return Result.error("根据ID获取七陌推送信息信息为空");
|
||||
}
|
||||
return Result.OK(task);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 导出excel
|
||||
*/
|
||||
// @RequiresPermissions("emergency:callLog:exportXls")
|
||||
@RequestMapping(value = "/exportXls")
|
||||
public Result<?> callLogExportXls(HttpServletResponse response, HttpServletRequest request, CallLogDTO dto) {
|
||||
Boolean flag = sysBaseAPI.getFinishFlagByCode(EmergencyConstants.EMERGENCY_CALL_LOG_CODE, EmergencyConstants.EMERGENCY_CALL_LOG_DOING);
|
||||
if (!flag) {
|
||||
return Result.error("已存在执行中的导出任务,请稍后导出或点击【查看导出任务】查看任务导出进度!");
|
||||
}
|
||||
String sheetName = "通话记录导出";
|
||||
String fileName = sheetName + "_" + DateUtils.getDate("yyyyMMddHHmmss");
|
||||
CommonExportsInfo info = new CommonExportsInfo();
|
||||
info.setBatchNo(String.valueOf(System.currentTimeMillis()));
|
||||
LoginUser loginUser = GlobalUtils.getLoginUser();
|
||||
final String userId = loginUser.getId();
|
||||
info.setHandleMsg("0/0");
|
||||
info.setCreateBy(userId);
|
||||
info.setCreateDate(new Date());
|
||||
info.setExportMsg("通话记录导出中");
|
||||
info.setTaskCode(EmergencyConstants.EMERGENCY_CALL_LOG_CODE);
|
||||
//数据导出中
|
||||
info.setExportStatus(EmergencyConstants.EMERGENCY_CALL_LOG_DOING);
|
||||
info.setHandleStartTime(new Date());
|
||||
CommonExportsInfo commonExportsInfo = sysBaseAPI.updateExportsInfo(info);
|
||||
String id = commonExportsInfo.getId();
|
||||
CommonExportsInfo info1 = sysBaseAPI.getExportsInfoById(id);
|
||||
// 使用异步方法执行导出逻辑
|
||||
asyncImportService.asyncExport(dto, info1, EmergencyConstants.EMERGENCY_CALL_LOG_FINISH, EmergencyConstants.EMERGENCY_CALL_LOG_CODE, sheetName, fileName);
|
||||
return qimoNoticeService.callLogExportXls();
|
||||
}
|
||||
|
||||
}
|
||||
+52
@@ -0,0 +1,52 @@
|
||||
package com.renkang.emergency.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.renkang.emergency.entity.TblUserHelp;
|
||||
import com.renkang.emergency.service.ITbUserHelpMacService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
/**
|
||||
* @author TianZi
|
||||
* @date 2023/11/30 17:14
|
||||
*/
|
||||
@Tag(name = "应急大屏/服务详情数据", description = "应急大屏/服务详情数据")
|
||||
@RestController
|
||||
@RequestMapping("/emergency/tblUserHelp")
|
||||
public class TblUserHelpController {
|
||||
|
||||
@Resource
|
||||
private ITbUserHelpMacService tbUserHelpMacService;
|
||||
|
||||
@GetMapping("/statistics")
|
||||
@Operation(summary = "服务详情数据", description = "服务详情数据")
|
||||
public Result<?> statistics(@Parameter(description = "1:全部,2:年,3:月,4:周") @RequestParam(name = "condition", defaultValue = "1") String condition,
|
||||
@Parameter(description = "1:西安 2:银川") @RequestParam(name = "dataType", defaultValue = "1") String dataType) {
|
||||
return Result.OK(tbUserHelpMacService.statistics(condition, dataType));
|
||||
}
|
||||
|
||||
@GetMapping("/phoneList")
|
||||
@Operation(summary = "获取云坐席列表数据", description = "获取云坐席列表数据")
|
||||
public Result<?> getPhoneList(@Parameter(description = "1:西安 2:银川") @RequestParam String dataType,
|
||||
@Parameter(description = "0:呼入 1:受理 2:突发重大伤病应急 3:重大伤病应急") @RequestParam String phoneType,
|
||||
@Parameter(description = "0:全部 1:女 2:男") @RequestParam String sex,
|
||||
@Parameter(description = "0:默认 1:按部门") @RequestParam String showType,
|
||||
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
|
||||
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
|
||||
Page<TblUserHelp> page = new Page<TblUserHelp>(pageNo, pageSize);
|
||||
return Result.ok(tbUserHelpMacService.getPhoneList(dataType, phoneType, sex, showType, page));
|
||||
}
|
||||
|
||||
@RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
|
||||
@ResponseBody
|
||||
@Operation(summary = "创建用户求助信息")
|
||||
public Result<?> create(@Parameter(name = "用户求助信息对象") @RequestBody TblUserHelp tblUserHelp) {
|
||||
return tbUserHelpMacService.create(tblUserHelp);
|
||||
}
|
||||
}
|
||||
+78
@@ -0,0 +1,78 @@
|
||||
package com.renkang.emergency.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.renkang.emergency.bean.response.YcAmbulanceStat;
|
||||
import com.renkang.emergency.entity.ZyAmbulanceData;
|
||||
import com.renkang.emergency.service.YcLargeScreenService;
|
||||
import org.jeecg.common.api.dto.YcMedicalCenterFakerData;
|
||||
import org.jeecg.common.api.dto.YcUserHealthFakerData;
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* 银川大屏controller
|
||||
* @author Junqiang Zhu
|
||||
* @since 2024-5-15
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/emergency/ycLargeScreen")
|
||||
public class YcLargeScreenController {
|
||||
|
||||
@Autowired
|
||||
private YcLargeScreenService ycLargeScreenService;
|
||||
|
||||
|
||||
/**
|
||||
* 一线医疗点数据
|
||||
*
|
||||
* @return data
|
||||
*/
|
||||
@GetMapping("medicalCenter")
|
||||
public Result<List<YcMedicalCenterFakerData>> medicalCenter() {
|
||||
return Result.ok(ycLargeScreenService.medicalCenter());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 员工队伍健康数据
|
||||
* @return data
|
||||
*/
|
||||
@GetMapping("userHealthCenter")
|
||||
public Result<YcUserHealthFakerData> userHealthCenter() {
|
||||
return Result.ok(ycLargeScreenService.userHealthCenter());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 救护车急救数据
|
||||
*
|
||||
* @param type 0:周 1:月 2:年
|
||||
* @return data
|
||||
*/
|
||||
@GetMapping("ambulanceStat")
|
||||
public Result<List<YcAmbulanceStat>> ambulanceStat(@RequestParam(name = "type", defaultValue = "0") String type) {
|
||||
return Result.ok(ycLargeScreenService.ambulanceStat(type));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 救护车急救数据page
|
||||
*
|
||||
* @param pageNo 页码
|
||||
* @param pageSize 条数
|
||||
* @return data
|
||||
*/
|
||||
@GetMapping("ambulancePage")
|
||||
public Result<Page<ZyAmbulanceData>> ambulancePage(@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
|
||||
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
|
||||
return Result.ok(ycLargeScreenService.ambulancePage(pageNo, pageSize));
|
||||
}
|
||||
|
||||
}
|
||||
+58
@@ -0,0 +1,58 @@
|
||||
package com.renkang.emergency.data.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.renkang.emergency.data.model.dto.DiagnosisDataPageParam;
|
||||
import com.renkang.emergency.data.model.vo.DiagnosisDataInfo;
|
||||
import com.renkang.emergency.data.service.DataDiagnosisService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
import org.jeecg.config.mybatis.bean.BeanDictInfo;
|
||||
import org.jeecg.config.mybatis.bean.TableInfo;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* @Description: 数据模块-就医数据-应急中心就医控制器
|
||||
*/
|
||||
@Tag(name = "数据/就医数据/应急中心就医")
|
||||
@RestController
|
||||
@RequestMapping("/data/diagnosis")
|
||||
@RequiredArgsConstructor
|
||||
public class DataDiagnosisController {
|
||||
|
||||
private final DataDiagnosisService dataDiagnosisService;
|
||||
|
||||
@GetMapping("page")
|
||||
@Operation(summary = "应急中心就医列表数据", description = "应急中心就医列表数据")
|
||||
public Result<IPage<DiagnosisDataInfo>> diagnosisDataPage(DiagnosisDataPageParam pageParam) {
|
||||
return Result.OK(dataDiagnosisService.diagnosisDataPage(pageParam));
|
||||
}
|
||||
|
||||
@Operation(summary = "库结构数据", description = "应急中心就医库结构数据")
|
||||
@GetMapping("tableStructure")
|
||||
public Result<TableInfo> tableStructure() {
|
||||
return Result.ok(dataDiagnosisService.tableStructure());
|
||||
}
|
||||
|
||||
@GetMapping("dict")
|
||||
@Operation(summary = "应急中心就医数据字典", description = "应急中心就医数据字典")
|
||||
public Result<BeanDictInfo> dict() {
|
||||
return Result.ok(dataDiagnosisService.dict());
|
||||
}
|
||||
|
||||
@Operation(summary = "应急中心就医列表数据导出", description = "应急中心就医列表数据导出")
|
||||
@RequestMapping(value = "exportXls")
|
||||
public Result<String> exportXls(DiagnosisDataPageParam pageParam) {
|
||||
dataDiagnosisService.exportXls(pageParam);
|
||||
return Result.ok("导出成功,请在导出记录查看");
|
||||
}
|
||||
|
||||
@Operation(summary = "应急中心就医列表数据统计", description = "应急中心就医列表数据统计")
|
||||
@GetMapping("statistics")
|
||||
public Result<DiagnosisDataInfo> statistics(DiagnosisDataPageParam pageParam) {
|
||||
return Result.OK(dataDiagnosisService.statistics(pageParam));
|
||||
}
|
||||
}
|
||||
+43
@@ -0,0 +1,43 @@
|
||||
package com.renkang.emergency.data.controller;
|
||||
|
||||
import com.renkang.emergency.data.service.DataEmergencyService;
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
import org.jeecg.config.mybatis.bean.BeanDictInfo;
|
||||
import org.jeecg.config.mybatis.bean.TableInfo;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* @author stan
|
||||
* @since 2024-12-23 10:23
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("data/emergency")
|
||||
public class DataEmergencyUserController {
|
||||
|
||||
@Autowired
|
||||
private DataEmergencyService dataEmergencyService;
|
||||
|
||||
|
||||
/**
|
||||
* 表结构信息
|
||||
* @return 表结构
|
||||
*/
|
||||
@GetMapping("tableStructure")
|
||||
public Result<TableInfo> tableStructure() {
|
||||
return Result.ok(dataEmergencyService.tableStructure());
|
||||
}
|
||||
|
||||
/**
|
||||
* 数据字典
|
||||
* @return 字典信息
|
||||
*/
|
||||
@GetMapping("dict")
|
||||
public Result<BeanDictInfo> dict() {
|
||||
return Result.ok(dataEmergencyService.dict());
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+58
@@ -0,0 +1,58 @@
|
||||
package com.renkang.emergency.data.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.renkang.emergency.data.model.dto.PhoneDataPageParam;
|
||||
import com.renkang.emergency.data.model.vo.PhoneDataInfo;
|
||||
import com.renkang.emergency.data.service.DataPhoneService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
import org.jeecg.config.mybatis.bean.BeanDictInfo;
|
||||
import org.jeecg.config.mybatis.bean.TableInfo;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* @Description: 数据模块-就医数据-应急来电控制器
|
||||
*/
|
||||
@Tag(name = "数据/应急数据/应急来电")
|
||||
@RestController
|
||||
@RequestMapping("/data/phone")
|
||||
@RequiredArgsConstructor
|
||||
public class DataPhoneController {
|
||||
|
||||
private final DataPhoneService dataPhoneService;
|
||||
|
||||
@GetMapping("page")
|
||||
@Operation(summary = "应急来电列表数据", description = "应急来电列表数据")
|
||||
public Result<IPage<PhoneDataInfo>> phoneDataPage(PhoneDataPageParam pageParam) {
|
||||
return Result.OK(dataPhoneService.phoneDataPage(pageParam));
|
||||
}
|
||||
|
||||
@Operation(summary = "库结构数据", description = "库结构数据")
|
||||
@GetMapping("tableStructure")
|
||||
public Result<TableInfo> tableStructure() {
|
||||
return Result.ok(dataPhoneService.tableStructure());
|
||||
}
|
||||
|
||||
@GetMapping("dict")
|
||||
@Operation(summary = "应急来电数据字典", description = "应急来电数据字典")
|
||||
public Result<BeanDictInfo> dict() {
|
||||
return Result.ok(dataPhoneService.dict());
|
||||
}
|
||||
|
||||
@Operation(summary = "应急来电列表数据导出", description = "应急来电列表数据导出")
|
||||
@RequestMapping(value = "exportXls")
|
||||
public Result<String> exportXls(PhoneDataPageParam pageParam) {
|
||||
dataPhoneService.exportXls(pageParam);
|
||||
return Result.ok("导出成功,请在导出记录查看");
|
||||
}
|
||||
|
||||
@Operation(summary = "应急来电列表数据统计", description = "应急来电列表数据统计")
|
||||
@GetMapping("statistics")
|
||||
public Result<PhoneDataInfo> statistics(PhoneDataPageParam pageParam) {
|
||||
return Result.OK(dataPhoneService.statistics(pageParam));
|
||||
}
|
||||
}
|
||||
+77
@@ -0,0 +1,77 @@
|
||||
package com.renkang.emergency.data.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.renkang.emergency.data.model.dto.ResourceDataPageParam;
|
||||
import com.renkang.emergency.data.model.vo.ResourceDataInfo;
|
||||
import com.renkang.emergency.data.service.DataResourceService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
import org.jeecg.config.mybatis.bean.BeanDictInfo;
|
||||
import org.jeecg.config.mybatis.bean.TableInfo;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* @Description: 档案模块-机构信息-应急医院控制器
|
||||
* @Author: feng
|
||||
* @Date: 2024-11-20
|
||||
* @Version: V1.0
|
||||
*/
|
||||
@Tag(name = "数据/机构信息/应急医院")
|
||||
@RestController
|
||||
@RequestMapping("/data/hospital")
|
||||
@RequiredArgsConstructor
|
||||
public class DataResourceController {
|
||||
private final DataResourceService dataResourceService;
|
||||
|
||||
|
||||
@GetMapping("page")
|
||||
@Operation(summary = "应急医院列表数据", description = "应急医院列表数据")
|
||||
public Result<IPage<ResourceDataInfo>> resourceDataPage(ResourceDataPageParam pageParam) {
|
||||
return Result.OK(dataResourceService.resourceDataPage(pageParam));
|
||||
}
|
||||
|
||||
/**
|
||||
* 库结构
|
||||
*
|
||||
* @return 结构体
|
||||
*/
|
||||
@Operation(summary = "应急医院库结构数据", description = "应急医院库结构数据")
|
||||
@GetMapping("tableStructure")
|
||||
public Result<TableInfo> tableStructure() {
|
||||
return Result.ok(dataResourceService.tableStructure());
|
||||
}
|
||||
|
||||
/**
|
||||
* 列表字典数据
|
||||
*
|
||||
* @return map
|
||||
*/
|
||||
@GetMapping("dict")
|
||||
@Operation(summary = "应急医院数据字典", description = "应急医院数据字典")
|
||||
public Result<BeanDictInfo> dict() {
|
||||
return Result.ok(dataResourceService.dict());
|
||||
}
|
||||
|
||||
/**
|
||||
* 应急医院列表数据导出
|
||||
*/
|
||||
@Operation(summary = "应急医院列表数据导出", description = "应急医院列表数据导出")
|
||||
@RequestMapping(value = "exportXls")
|
||||
public Result<String> exportXls(ResourceDataPageParam pageParam) {
|
||||
dataResourceService.exportXls(pageParam);
|
||||
return Result.ok("导出成功,请在导出记录查看");
|
||||
}
|
||||
|
||||
/**
|
||||
* 应急医院列表数据统计
|
||||
*/
|
||||
@Operation(summary = "应急医院列表数据统计", description = "应急医院列表数据统计")
|
||||
@GetMapping("statistics")
|
||||
public Result<ResourceDataInfo> statistics(ResourceDataPageParam pageParam) {
|
||||
return Result.OK(dataResourceService.statistics(pageParam));
|
||||
}
|
||||
}
|
||||
+84
@@ -0,0 +1,84 @@
|
||||
package com.renkang.emergency.data.model.dto;
|
||||
|
||||
import cn.hutool.core.date.DateUnit;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.ObjUtil;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.renkang.emergency.entity.EmergencySeriousDisease;
|
||||
import com.renkang.emergency.entity.Resource;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.jeecg.base.Criteria;
|
||||
import org.jeecg.base.PageInfo;
|
||||
import org.jeecg.common.aspect.annotation.Dict;
|
||||
import org.jeecgframework.poi.excel.annotation.Excel;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Schema(title = "数据应急中心就医列表参数", description = "数据应急中心就医列表参数")
|
||||
public class DiagnosisDataPageParam extends PageInfo<EmergencySeriousDisease> {
|
||||
|
||||
@Schema(description = "单位 or 部门")
|
||||
private String orgCode;
|
||||
|
||||
@Schema(description = "姓名")
|
||||
private String realName;
|
||||
|
||||
@Schema(description = "员工编号")
|
||||
private String workNo;
|
||||
|
||||
@Schema(description = "性别")
|
||||
private Integer sex;
|
||||
|
||||
@Schema(description = "年龄")
|
||||
private Integer age;
|
||||
|
||||
@Schema(description = "年龄范围参数b (当选择范围时使用)")
|
||||
private Integer ageB;
|
||||
|
||||
@Schema(description = "年龄范围条件:'>', '<', '>=', '<=', '<>', '=', '!='")
|
||||
private String ageCondition;
|
||||
|
||||
@Schema(description = "身份证号")
|
||||
private String idCard;
|
||||
|
||||
@Schema(description = "预约医院")
|
||||
private String hospitalId;
|
||||
|
||||
@Schema(title = "挂号类别 ")
|
||||
private String registerCategory;
|
||||
|
||||
@Schema(title = "预约医生")
|
||||
private String reservationDoctor;
|
||||
|
||||
public Date getAppointmentTimeStart() {
|
||||
if (ObjUtil.isNotEmpty(appointmentTimeStart)) {
|
||||
appointmentTimeStart = DateUtil.beginOfDay(appointmentTimeStart);
|
||||
}
|
||||
return appointmentTimeStart;
|
||||
}
|
||||
|
||||
@Schema(description = "预约时间开始日期")
|
||||
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
|
||||
@DateTimeFormat(pattern="yyyy-MM-dd")
|
||||
private Date appointmentTimeStart;
|
||||
|
||||
public Date getAppointmentTimeEnd() {
|
||||
if (ObjUtil.isNotEmpty(appointmentTimeEnd)) {
|
||||
appointmentTimeEnd = DateUtil.endOfDay(appointmentTimeEnd);
|
||||
}
|
||||
return appointmentTimeEnd;
|
||||
}
|
||||
|
||||
@Schema(description = "预约时间结束日期")
|
||||
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
|
||||
@DateTimeFormat(pattern="yyyy-MM-dd")
|
||||
private Date appointmentTimeEnd;
|
||||
|
||||
|
||||
|
||||
}
|
||||
+38
@@ -0,0 +1,38 @@
|
||||
package com.renkang.emergency.data.model.dto;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.renkang.emergency.entity.EmergencySeriousDisease;
|
||||
import com.renkang.emergency.entity.TblQimoNotice;
|
||||
import com.renkang.emergency.entity.TblUserHelp;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.jeecg.base.PageInfo;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Schema(title = "数据应急来电列表参数", description = "数据应急来电列表参数")
|
||||
public class PhoneDataPageParam extends PageInfo<TblQimoNotice> {
|
||||
|
||||
@Schema(description = "单位 or 部门")
|
||||
private String orgCode;
|
||||
|
||||
@Schema(description = "姓名")
|
||||
private String realname;
|
||||
|
||||
@Schema(description = "性别")
|
||||
private Integer sex;
|
||||
|
||||
@Schema(description = "呼叫中心")
|
||||
private String centerId;
|
||||
|
||||
@Schema(description = "呼叫中心")
|
||||
private String centerName;
|
||||
|
||||
@Schema(description = "坐席工号")
|
||||
private String seatId;
|
||||
|
||||
}
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
package com.renkang.emergency.data.model.dto;
|
||||
|
||||
import com.renkang.emergency.entity.Resource;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.jeecg.base.Criteria;
|
||||
import org.jeecg.base.PageInfo;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Schema(title = "数据应急医院列表参数", description = "数据应急医院列表参数")
|
||||
public class ResourceDataPageParam extends PageInfo<Resource> {
|
||||
@Schema(description = "应急医院名称")
|
||||
@Criteria(value = Criteria.Mode.LIKE, property = "name")
|
||||
private String resourceName;
|
||||
|
||||
@Schema(description = "查询类型(1:油田医院 2:合作医院)")
|
||||
private Integer type;
|
||||
|
||||
@Schema(description = "医院等级")
|
||||
private Integer level;
|
||||
|
||||
@Schema(description = "查询年份(默认当年)")
|
||||
private Integer year;
|
||||
}
|
||||
+141
@@ -0,0 +1,141 @@
|
||||
package com.renkang.emergency.data.model.vo;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableLogic;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import org.jeecg.annotation.DBColumnInfo;
|
||||
import org.jeecg.common.aspect.annotation.Dict;
|
||||
import org.jeecg.enums.DbColumnNameEnum;
|
||||
import org.jeecgframework.poi.excel.annotation.Excel;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
@Data
|
||||
public class DiagnosisData {
|
||||
private String id;
|
||||
|
||||
@Schema(description = "单位")
|
||||
@DBColumnInfo(commonName = DbColumnNameEnum.USER_ORG)
|
||||
private String departName;
|
||||
|
||||
@Schema(description = "部门")
|
||||
@DBColumnInfo(commonName = DbColumnNameEnum.USER_DEPT)
|
||||
private String orgName;
|
||||
|
||||
@Schema(description = "员工编号")
|
||||
@DBColumnInfo(commonName = DbColumnNameEnum.WORK_NO)
|
||||
private String workNo;
|
||||
|
||||
@Schema(title = "就医人员")
|
||||
private String userId;
|
||||
|
||||
@Schema(title = "是否补单")
|
||||
private Boolean isFill;
|
||||
|
||||
@Schema(title = "医院")
|
||||
private String hospitalId;
|
||||
|
||||
@Schema(title = "就诊卡号")
|
||||
private String medicalCardNo;
|
||||
|
||||
@Dict(dicCode = "category")
|
||||
@Schema(title = "挂号类别 ")
|
||||
private String registerCategory;
|
||||
|
||||
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@Schema(title = "驻场人员预约到的时间")
|
||||
private Date reservationTime;
|
||||
|
||||
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@Schema(title = "患者填写的期望预约到的时间")
|
||||
private Date desireTime;
|
||||
|
||||
@Schema(title = "预约科室")
|
||||
private String reservationOffice;
|
||||
|
||||
@Schema(title = "患者预约医生")
|
||||
private String reservationDoctor;
|
||||
|
||||
@Schema(title = "病情描述")
|
||||
private String diseaseDescribe;
|
||||
|
||||
@Schema(title = "特殊要求")
|
||||
private String specialRequirements;
|
||||
|
||||
@Dict(dicCode = "sex2")
|
||||
@Schema(title = "性别")
|
||||
@DBColumnInfo(commonName = DbColumnNameEnum.SEX)
|
||||
private Integer sex;
|
||||
|
||||
@Schema(title = "真实姓名")
|
||||
private String realname;
|
||||
|
||||
@Schema(title = "驻场人员")
|
||||
private String stationUserId;
|
||||
|
||||
@Schema(title = "预约号")
|
||||
private String reservationNo;
|
||||
|
||||
@Schema(title = "身份证号")
|
||||
private String idNo;
|
||||
|
||||
@Schema(title = "手机号")
|
||||
private String telPhone;
|
||||
@Schema(title = "年龄")
|
||||
private Integer age;
|
||||
|
||||
@Schema(title = "删除状态(0-正常,1-已删除)")
|
||||
@TableLogic
|
||||
private Integer delFlag;
|
||||
|
||||
@Dict(dicCode = "emergency_serious_state")
|
||||
@Schema(title = "状态 1未派单 2已派单 3已完成 4已驳回 5申请转单 ")
|
||||
private String state;
|
||||
|
||||
@Schema(title = "操作人员")
|
||||
private String operatorId;
|
||||
|
||||
@Schema(title = "驳回原因")
|
||||
private String rejectionReason;
|
||||
|
||||
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@Schema(title = "驳回时间")
|
||||
private Date rejectionTime;
|
||||
|
||||
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd")
|
||||
@Schema(title = "派单时间")
|
||||
private Date sendOrderTime;
|
||||
|
||||
@Schema(title = "部门")
|
||||
private String userDepart;
|
||||
|
||||
@Schema(title = "职场驳回原因")
|
||||
private String stationRejectionReason;
|
||||
|
||||
@Schema(title = "驻场驳回时间")
|
||||
private Date stationRejectionTime;
|
||||
|
||||
@Schema(title = "驻场接单时间")
|
||||
private Date acceptStationTime;
|
||||
|
||||
@Schema(title = "预约完成时间")
|
||||
private Date desireFinishTime;
|
||||
|
||||
@Schema(title = "医院名称")
|
||||
private String hospitalName;
|
||||
|
||||
@Schema(title = "驻场人员名称")
|
||||
private String stationUserName;
|
||||
|
||||
@Schema(title = "医疗中心id")
|
||||
private String centerId;
|
||||
}
|
||||
+139
@@ -0,0 +1,139 @@
|
||||
package com.renkang.emergency.data.model.vo;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.renkang.emergency.entity.EmergencySeriousDisease;
|
||||
import com.renkang.emergency.entity.Resource;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.jeecg.common.aspect.annotation.Dict;
|
||||
import org.jeecgframework.poi.excel.annotation.Excel;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Schema(title = "数据就医数据应急中心就医列表数据模型", description = "数据就医数据应急中心就医列表数据模型")
|
||||
public class DiagnosisDataInfo {
|
||||
|
||||
@Schema(description = "单位")
|
||||
private String departName;
|
||||
|
||||
@Schema(description = "部门")
|
||||
private String orgName;
|
||||
|
||||
@Schema(title = "就医人员")
|
||||
private String userId;
|
||||
|
||||
@Schema(description = "姓名")
|
||||
private String realName;
|
||||
|
||||
@Schema(description = "员工编号")
|
||||
private String workNo;
|
||||
|
||||
@Schema(description = "性别")
|
||||
@Dict(dicCode = "sex2")
|
||||
private String sex;
|
||||
|
||||
@Schema(description = "年龄")
|
||||
private String age;
|
||||
|
||||
public void setAge(String age) {
|
||||
if (age.contains(".")) {
|
||||
this.age = age.substring(0, age.indexOf("."));
|
||||
} else {
|
||||
this.age = age;
|
||||
}
|
||||
}
|
||||
|
||||
@Schema(description = "手机号码")
|
||||
private String telPhone;
|
||||
|
||||
@Schema(description = "身份证号")
|
||||
private String idNo;
|
||||
|
||||
@Schema(description = "预约医院")
|
||||
private String hospitalId;
|
||||
|
||||
@Schema(description = "预约医院")
|
||||
private String hospitalName;
|
||||
|
||||
@Schema(title = "挂号类别 ")
|
||||
@Dict(dicCode = "category")
|
||||
private String registerCategory;
|
||||
|
||||
@Schema(description = "预约科室")
|
||||
private String reservationOffice;
|
||||
|
||||
@Schema(description = "预约医生")
|
||||
private String reservationDoctor;
|
||||
|
||||
@Schema(description = "预约时间")
|
||||
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
|
||||
@DateTimeFormat(pattern="yyyy-MM-dd")
|
||||
private Date reservationTime;
|
||||
|
||||
@Schema(description = "期望预约时间")
|
||||
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
|
||||
@DateTimeFormat(pattern="yyyy-MM-dd")
|
||||
private Date desireTime;
|
||||
|
||||
@Schema(description = "病情描述")
|
||||
private String diseaseDescribe;
|
||||
|
||||
@Schema(description = "状态")
|
||||
@Dict(dicCode = "emergency_serious_state")
|
||||
private String state;
|
||||
|
||||
@Schema(description = "驻场人员")
|
||||
private String stationUserId;
|
||||
|
||||
@Schema(description = "驻场人员")
|
||||
private String stationUserName;
|
||||
|
||||
@Schema(description = "就诊卡号")
|
||||
private String medicalCardNo;
|
||||
|
||||
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@Schema(title = "派单时间")
|
||||
private Date sendOrderTime;
|
||||
|
||||
@Schema(title = "操作人员")
|
||||
private String operatorId;
|
||||
|
||||
@Schema(title = "操作人员")
|
||||
private String operatorName;
|
||||
|
||||
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@Schema(title = "驳回时间")
|
||||
private Date rejectionTime;
|
||||
|
||||
@Schema(title = "驳回原因")
|
||||
private String rejectionReason;
|
||||
|
||||
public DiagnosisDataInfo(EmergencySeriousDisease disease) {
|
||||
this.userId = disease.getUserId();
|
||||
this.hospitalId = disease.getHospitalId();
|
||||
this.hospitalName = disease.getHospitalName();
|
||||
this.registerCategory = disease.getRegisterCategory();
|
||||
this.reservationOffice = disease.getReservationOffice();
|
||||
this.reservationDoctor = disease.getReservationDoctor();
|
||||
this.reservationTime = disease.getReservationTime();
|
||||
this.desireTime = disease.getDesireTime();
|
||||
this.diseaseDescribe = disease.getDiseaseDescribe();
|
||||
this.state = disease.getState();
|
||||
this.stationUserId = disease.getStationUserId();
|
||||
this.stationUserName = disease.getStationUserName();
|
||||
this.medicalCardNo = disease.getMedicalCardNo();
|
||||
this.sendOrderTime = disease.getSendOrderTime();
|
||||
this.operatorId = disease.getOperatorId();
|
||||
this.rejectionTime = disease.getRejectionTime();
|
||||
}
|
||||
}
|
||||
+129
@@ -0,0 +1,129 @@
|
||||
package com.renkang.emergency.data.model.vo;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import org.jeecg.common.aspect.annotation.Dict;
|
||||
import org.jeecgframework.poi.excel.annotation.Excel;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class DiagnosisExport {
|
||||
/**
|
||||
* 序号
|
||||
*/
|
||||
@Excel(name = "序号", width = 15)
|
||||
@Schema(title = "序号")
|
||||
private String index;
|
||||
|
||||
@Excel(name = "单位", width = 15)
|
||||
@Schema(description = "单位")
|
||||
private String departName;
|
||||
|
||||
@Excel(name = "部门", width = 15)
|
||||
@Schema(description = "部门")
|
||||
private String orgName;
|
||||
|
||||
@Excel(name = "姓名", width = 15)
|
||||
@Schema(description = "姓名")
|
||||
private String realName;
|
||||
|
||||
@Excel(name = "员工编号", width = 15)
|
||||
@Schema(description = "员工编号")
|
||||
private String workNo;
|
||||
|
||||
@Excel(name = "性别", dicCode = "sex2", width = 15)
|
||||
@Schema(description = "性别")
|
||||
@Dict(dicCode = "sex2")
|
||||
private Integer sex;
|
||||
|
||||
@Excel(name = "年龄", width = 15)
|
||||
@Schema(description = "年龄")
|
||||
private Integer age;
|
||||
|
||||
@Excel(name = "手机号码", width = 15)
|
||||
@Schema(description = "手机号码")
|
||||
private String telPhone;
|
||||
|
||||
@Excel(name = "身份证号", width = 15)
|
||||
@Schema(description = "身份证号")
|
||||
private String idNo;
|
||||
|
||||
@Excel(name = "预约医院", width = 15)
|
||||
@Schema(description = "预约医院")
|
||||
private String hospitalName;
|
||||
|
||||
@Excel(name = "挂号类别", dicCode = "category", width = 15)
|
||||
@Schema(title = "挂号类别")
|
||||
@Dict(dicCode = "category")
|
||||
private String registerCategory;
|
||||
|
||||
@Excel(name = "预约科室", width = 15)
|
||||
@Schema(description = "预约科室")
|
||||
private String reservationOffice;
|
||||
|
||||
@Excel(name = "预约医生", width = 15)
|
||||
@Schema(description = "预约医生")
|
||||
private String reservationDoctor;
|
||||
|
||||
@Excel(name = "预约时间", format = "yyyy-MM-dd", width = 15)
|
||||
@Schema(description = "预约时间")
|
||||
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
|
||||
@DateTimeFormat(pattern="yyyy-MM-dd")
|
||||
private Date reservationTime;
|
||||
|
||||
@Excel(name = "期望预约时间", format = "yyyy-MM-dd", width = 15)
|
||||
@Schema(description = "期望预约时间")
|
||||
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
|
||||
@DateTimeFormat(pattern="yyyy-MM-dd")
|
||||
private Date desireTime;
|
||||
|
||||
@Excel(name = "病情描述", width = 15)
|
||||
@Schema(description = "病情描述")
|
||||
private String diseaseDescribe;
|
||||
|
||||
@Excel(name = "状态", replace = {"未派单_1","已派单_2","已完成_2","已驳回_4","申请转单_5"}, width = 15)
|
||||
@Schema(description = "状态")
|
||||
private String state;
|
||||
|
||||
@Excel(name = "操作人员", width = 15)
|
||||
@Schema(description = "驻场人员")
|
||||
private String stationUserName;
|
||||
|
||||
private List<DiagnosisExport> voList;
|
||||
|
||||
public DiagnosisExport() {
|
||||
}
|
||||
|
||||
|
||||
public DiagnosisExport(List<DiagnosisDataInfo> records) {
|
||||
List<DiagnosisExport> voList = new ArrayList<>();
|
||||
records.forEach(item->{
|
||||
DiagnosisExport export = new DiagnosisExport();
|
||||
export.setIndex(String.valueOf(records.indexOf(item) + 1));
|
||||
export.setDepartName(item.getDepartName());
|
||||
export.setOrgName(item.getOrgName());
|
||||
export.setRealName(item.getRealName());
|
||||
export.setWorkNo(item.getWorkNo());
|
||||
export.setSex(Integer.valueOf(item.getSex()));
|
||||
export.setAge(Integer.valueOf(item.getAge()));
|
||||
export.setTelPhone(item.getTelPhone());
|
||||
export.setIdNo(item.getIdNo());
|
||||
export.setHospitalName(item.getHospitalName());
|
||||
export.setRegisterCategory(item.getRegisterCategory());
|
||||
export.setReservationOffice(item.getReservationOffice());
|
||||
export.setReservationDoctor(item.getReservationDoctor());
|
||||
export.setReservationTime(item.getReservationTime());
|
||||
export.setDesireTime(item.getDesireTime());
|
||||
export.setDiseaseDescribe(item.getDiseaseDescribe());
|
||||
export.setState(item.getState());
|
||||
export.setStationUserName(item.getStationUserName());
|
||||
voList.add(export);
|
||||
});
|
||||
this.voList = voList;
|
||||
}
|
||||
}
|
||||
+226
@@ -0,0 +1,226 @@
|
||||
package com.renkang.emergency.data.model.vo;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableLogic;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import org.jeecg.annotation.DBColumnInfo;
|
||||
import org.jeecg.common.aspect.annotation.Dict;
|
||||
import org.jeecg.enums.DbColumnEnum;
|
||||
import org.jeecg.enums.DbColumnNameEnum;
|
||||
import org.jeecgframework.poi.excel.annotation.Excel;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@Data
|
||||
public class PhoneData {
|
||||
private String id;
|
||||
|
||||
@Schema(description = "单位")
|
||||
@DBColumnInfo(commonName = DbColumnNameEnum.USER_ORG)
|
||||
private String departName;
|
||||
|
||||
@Schema(description = "部门")
|
||||
@DBColumnInfo(commonName = DbColumnNameEnum.USER_DEPT)
|
||||
private String orgName;
|
||||
|
||||
@Schema(title = "用户id")
|
||||
private String userId;
|
||||
|
||||
@Dict(dicCode = "sex2")
|
||||
@Schema(title = "性别")
|
||||
private Integer sex;
|
||||
|
||||
@Schema(title = "真实姓名")
|
||||
private String realname;
|
||||
|
||||
@Schema(title = "手机号")
|
||||
private String telPhone;
|
||||
|
||||
@Schema(title = "删除状态(0-正常,1-已删除)")
|
||||
@TableLogic
|
||||
private Integer delFlag;
|
||||
|
||||
@Schema(title = "中心id")
|
||||
private String centerId;
|
||||
|
||||
@Schema(title = "中心名称")
|
||||
private String centerName;
|
||||
|
||||
|
||||
/**
|
||||
* 主叫号码
|
||||
*/
|
||||
@Schema(title = "主叫号码", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
|
||||
@Excel(name = "主叫号码", width = 15)
|
||||
private String callNo;
|
||||
/**
|
||||
* 被叫号码
|
||||
*/
|
||||
@Schema(title = "被叫号码", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
|
||||
@Excel(name = "被叫号码", width = 15)
|
||||
private String calledNo;
|
||||
/**
|
||||
* 通话记录ID
|
||||
*/
|
||||
@Schema(title = "通话记录ID", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
|
||||
@Excel(name = "通话记录ID", width = 15)
|
||||
private String callSheetId;
|
||||
/**
|
||||
* 转接前通话的CallSheetID
|
||||
*/
|
||||
@Schema(title = "转接前通话的CallSheetID", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
|
||||
@Excel(name = "转接前通话的CallSheetID", width = 15)
|
||||
private String refCallSheetid;
|
||||
/**
|
||||
* 通话ID
|
||||
*/
|
||||
@Schema(title = "通话ID", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
|
||||
@Excel(name = "通话ID", width = 15)
|
||||
private String callId;
|
||||
/**
|
||||
* 通话类型
|
||||
*/
|
||||
@Schema(title = "通话类型", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
|
||||
@Excel(name = "通话类型", width = 15, dicCode = "qimo_call_type")
|
||||
private String callType;
|
||||
/**
|
||||
* 通话振铃时间
|
||||
*/
|
||||
@Schema(title = "通话振铃时间", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
|
||||
@Excel(name = "通话振铃时间", width = 15, format = "yyyy-MM-dd HH:mm:ss")
|
||||
private java.util.Date ring;
|
||||
/**
|
||||
* 被叫振铃开始时间
|
||||
*/
|
||||
@Schema(title = "被叫振铃开始时间", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
|
||||
@Excel(name = "被叫振铃开始时间", width = 15, format = "yyyy-MM-dd HH:mm:ss")
|
||||
private java.util.Date ringingDate;
|
||||
/**
|
||||
* 被叫振铃开始时间
|
||||
*/
|
||||
@Schema(title = "被叫振铃开始时间", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
|
||||
@DBColumnInfo(diyName = "被叫振铃开始时间", columnType = DbColumnEnum.VARCHAR, len = 255)
|
||||
private String ringingTimestamp;
|
||||
/**
|
||||
* 通话接通时间
|
||||
*/
|
||||
@Schema(title = "通话接通时间", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
|
||||
@Excel(name = "通话接通时间", width = 15, format = "yyyy-MM-dd HH:mm:ss")
|
||||
private java.util.Date begin;
|
||||
/**
|
||||
* 通话结束时间
|
||||
*/
|
||||
@Schema(title = "通话结束时间", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
|
||||
@Excel(name = "通话结束时间", width = 15, format = "yyyy-MM-dd HH:mm:ss")
|
||||
private java.util.Date end;
|
||||
/**
|
||||
* 来电进入技能组时间
|
||||
*/
|
||||
@Schema(title = "来电进入技能组时间", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
|
||||
@Excel(name = "来电进入技能组时间", width = 15, format = "yyyy-MM-dd HH:mm:ss")
|
||||
private java.util.Date queueTime;
|
||||
/**
|
||||
* 处理坐席的工号
|
||||
*/
|
||||
@Schema(title = "处理坐席的工号", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
|
||||
@Excel(name = "处理坐席的工号", width = 15)
|
||||
private String agent;
|
||||
/**
|
||||
* 处理坐席的工号
|
||||
*/
|
||||
@Schema(title = "处理坐席的工号", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
|
||||
@Excel(name = "处理坐席的工号", width = 15)
|
||||
private String exten;
|
||||
/**
|
||||
* 处理坐席的姓名
|
||||
*/
|
||||
@Schema(title = "处理坐席的姓名", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
|
||||
@Excel(name = "处理坐席的姓名", width = 15)
|
||||
private String agentName;
|
||||
/**
|
||||
* 通话进入的技能组名称
|
||||
*/
|
||||
@Schema(title = "通话进入的技能组名称", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
|
||||
@Excel(name = "通话进入的技能组名称", width = 15)
|
||||
private String queue;
|
||||
/**
|
||||
* 接听状态
|
||||
*/
|
||||
@Schema(title = "接听状态", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
|
||||
@Dict(dicCode = "qimo_state")
|
||||
private String state;
|
||||
/**
|
||||
* 事件状态
|
||||
*/
|
||||
@Schema(title = "事件状态", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
|
||||
@Dict(dicCode = "qimo_call_state")
|
||||
private String callState;
|
||||
/**
|
||||
* 通过接口调用时
|
||||
*/
|
||||
@Schema(title = "通过接口调用时", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
|
||||
@Excel(name = "通过接口调用时", width = 15)
|
||||
private String actionId;
|
||||
/**
|
||||
* 通过调用webcall接口
|
||||
*/
|
||||
@Schema(title = "通过调用webcall接口", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
|
||||
@Excel(name = "通过调用webcall接口", width = 15)
|
||||
private String webcallActionId;
|
||||
/**
|
||||
* 通话录音文件名
|
||||
*/
|
||||
@Schema(title = "通话录音文件名", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
|
||||
@Excel(name = "通话录音文件名", width = 15)
|
||||
private String recordFile;
|
||||
/**
|
||||
* 录音服务器
|
||||
*/
|
||||
@Schema(title = "录音服务器", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
|
||||
@Excel(name = "录音服务器", width = 15)
|
||||
private String fileServer;
|
||||
/**
|
||||
* 目标号码的省
|
||||
*/
|
||||
@Schema(title = "目标号码的省", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
|
||||
@Excel(name = "目标号码的省", width = 15)
|
||||
private String province;
|
||||
/**
|
||||
* 目标号码的市
|
||||
*/
|
||||
@Schema(title = "目标号码的市", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
|
||||
@Excel(name = "目标号码的市", width = 15)
|
||||
private String district;
|
||||
/**
|
||||
* 通话在系统中选择的按键菜单
|
||||
*/
|
||||
@Schema(title = "通话在系统中选择的按键菜单", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
|
||||
@Excel(name = "通话在系统中选择的按键菜单", width = 15)
|
||||
private String ivrkey;
|
||||
/**
|
||||
* 账户编号字段
|
||||
*/
|
||||
@Schema(title = "账户编号字段", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
|
||||
@Excel(name = "账户编号字段", width = 15)
|
||||
private String accountId;
|
||||
/**
|
||||
* 账户名称字段
|
||||
*/
|
||||
@Schema(title = "账户名称字段", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
|
||||
@Excel(name = "账户名称字段", width = 15)
|
||||
private String accountName;
|
||||
/**
|
||||
* 操作人员ID
|
||||
*/
|
||||
@Schema(title = "操作人员ID", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
|
||||
@Excel(name = "操作人员ID", width = 15)
|
||||
private String receiveUserId;
|
||||
/**
|
||||
* 是否已读
|
||||
*/
|
||||
@Schema(title = "是否已读", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
|
||||
@Excel(name = "是否已读", width = 15)
|
||||
private String isRead;
|
||||
}
|
||||
+67
@@ -0,0 +1,67 @@
|
||||
package com.renkang.emergency.data.model.vo;
|
||||
|
||||
import cn.hutool.core.util.ObjUtil;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.renkang.emergency.entity.EmergencySeriousDisease;
|
||||
import com.renkang.emergency.entity.TblQimoNotice;
|
||||
import com.renkang.emergency.entity.TblUserHelp;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.jeecg.common.aspect.annotation.Dict;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Schema(title = "数据应急数据应急来电列表数据模型", description = "数据应急数据应急来电列表数据模型")
|
||||
public class PhoneDataInfo {
|
||||
|
||||
@Schema(description = "单位")
|
||||
private String departName;
|
||||
|
||||
@Schema(description = "部门")
|
||||
private String orgName;
|
||||
|
||||
@Schema(title = "用户id")
|
||||
private String userId;
|
||||
|
||||
@Schema(description = "姓名")
|
||||
private String realName;
|
||||
|
||||
@Schema(description = "性别")
|
||||
@Dict(dicCode = "sex2")
|
||||
private String sex;
|
||||
|
||||
@Schema(description = "呼叫中心")
|
||||
private String centerId;
|
||||
|
||||
@Schema(description = "呼叫中心")
|
||||
private String centerName;
|
||||
|
||||
@Schema(description = "坐席工号")
|
||||
private String seatNo;
|
||||
|
||||
@Schema(description = "电话")
|
||||
private String phone;
|
||||
|
||||
@Schema(description = "通话时长")
|
||||
private String callDuration;
|
||||
|
||||
@Schema(description = "通话时间")
|
||||
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
|
||||
private Date callTime;
|
||||
|
||||
public PhoneDataInfo(TblQimoNotice tblQimoNotice) {
|
||||
this.seatNo = tblQimoNotice.getExten();
|
||||
this.phone = tblQimoNotice.getCallNo();
|
||||
this.callTime = tblQimoNotice.getRing();
|
||||
if (ObjUtil.isNotEmpty(tblQimoNotice.getBegin()) && ObjUtil.isNotEmpty(tblQimoNotice.getEnd())) {
|
||||
this.callDuration = String.valueOf((tblQimoNotice.getEnd().getTime() - tblQimoNotice.getBegin().getTime()) / 1000);
|
||||
}
|
||||
}
|
||||
}
|
||||
+74
@@ -0,0 +1,74 @@
|
||||
package com.renkang.emergency.data.model.vo;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import org.jeecg.common.aspect.annotation.Dict;
|
||||
import org.jeecgframework.poi.excel.annotation.Excel;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class PhoneExport {
|
||||
/**
|
||||
* 序号
|
||||
*/
|
||||
@Excel(name = "序号", width = 15)
|
||||
@Schema(title = "序号")
|
||||
private String index;
|
||||
|
||||
@Excel(name = "单位", width = 15)
|
||||
@Schema(description = "单位")
|
||||
private String departName;
|
||||
|
||||
@Excel(name = "部门", width = 15)
|
||||
@Schema(description = "部门")
|
||||
private String orgName;
|
||||
|
||||
@Excel(name = "姓名", width = 15)
|
||||
@Schema(description = "姓名")
|
||||
private String realName;
|
||||
|
||||
@Excel(name = "性别", dicCode = "sex2", width = 15)
|
||||
@Schema(description = "性别")
|
||||
@Dict(dicCode = "sex2")
|
||||
private Integer sex;
|
||||
|
||||
@Excel(name = "呼叫中心", width = 15)
|
||||
@Schema(description = "呼叫中心")
|
||||
private String centerName;
|
||||
|
||||
@Excel(name = "坐席工号", width = 15)
|
||||
@Schema(description = "坐席工号")
|
||||
private String exten;
|
||||
|
||||
@Excel(name = "电话", width = 15)
|
||||
@Schema(description = "电话")
|
||||
private String phone;
|
||||
|
||||
private List<PhoneExport> voList;
|
||||
|
||||
public PhoneExport() {
|
||||
}
|
||||
|
||||
|
||||
public PhoneExport(List<PhoneDataInfo> records) {
|
||||
List<PhoneExport> voList = new ArrayList<>();
|
||||
records.forEach(item->{
|
||||
PhoneExport export = new PhoneExport();
|
||||
export.setIndex(String.valueOf(records.indexOf(item) + 1));
|
||||
export.setDepartName(item.getDepartName());
|
||||
export.setOrgName(item.getOrgName());
|
||||
export.setRealName(item.getRealName());
|
||||
export.setSex(Integer.valueOf(item.getSex()));
|
||||
export.setCenterName(item.getCenterName());
|
||||
export.setExten(item.getSeatNo());
|
||||
export.setPhone(item.getPhone());
|
||||
voList.add(export);
|
||||
});
|
||||
this.voList = voList;
|
||||
}
|
||||
}
|
||||
+115
@@ -0,0 +1,115 @@
|
||||
package com.renkang.emergency.data.model.vo;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import org.jeecg.annotation.DBColumnInfo;
|
||||
import org.jeecg.common.aspect.annotation.Dict;
|
||||
import org.jeecg.enums.DbColumnEnum;
|
||||
import org.jeecgframework.poi.excel.annotation.Excel;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class ResourceData {
|
||||
private String id;
|
||||
/**
|
||||
* 资源名称
|
||||
*/
|
||||
@Excel(name = "资源名称", width = 15)
|
||||
@Schema(title = "资源名称")
|
||||
private String name;
|
||||
/**
|
||||
* 详细地址
|
||||
*/
|
||||
@Excel(name = "详细地址", width = 15)
|
||||
@Schema(title = "详细地址")
|
||||
private String address;
|
||||
/**
|
||||
* 联系电话
|
||||
*/
|
||||
@Excel(name = "联系电话", width = 15)
|
||||
@Schema(title = "联系电话")
|
||||
private String mobile;
|
||||
/**
|
||||
* 经度
|
||||
*/
|
||||
@Excel(name = "经度", width = 15)
|
||||
@Schema(title = "经度")
|
||||
private BigDecimal longitude;
|
||||
/**
|
||||
* 纬度
|
||||
*/
|
||||
@Excel(name = "纬度", width = 15)
|
||||
@Schema(title = "纬度")
|
||||
private BigDecimal latitude;
|
||||
/**
|
||||
* 资源类型(1:油田医院 2:合作医院 3:医疗点 4: )
|
||||
*/
|
||||
@Excel(name = "资源类型(1:油田医院 2:合作医院 3:医疗点 4: )", width = 15)
|
||||
@Schema(title = "资源类型(1:油田医院 2:合作医院 3:医疗点 4: )")
|
||||
private String type;
|
||||
/**
|
||||
* 救治范围
|
||||
*/
|
||||
@Excel(name = "救治范围", width = 15)
|
||||
@Schema(title = "救治范围")
|
||||
@DBColumnInfo(diyName = "救治范围", columnType = DbColumnEnum.VARCHAR, len = 255)
|
||||
private String aidrange;
|
||||
/**
|
||||
* 高德地图数据id
|
||||
*/
|
||||
@Excel(name = "高德地图数据id", width = 15)
|
||||
@Schema(title = "高德地图数据id")
|
||||
private String gdId;
|
||||
/**
|
||||
* 网址
|
||||
*/
|
||||
@Excel(name = "网址", width = 15)
|
||||
@Schema(title = "网址")
|
||||
private String url;
|
||||
/**
|
||||
* 省
|
||||
*/
|
||||
@Excel(name = "省", width = 15)
|
||||
@Schema(title = "省")
|
||||
private String province;
|
||||
/**
|
||||
* 市
|
||||
*/
|
||||
@Excel(name = "市", width = 15)
|
||||
@Schema(title = "市")
|
||||
private String city;
|
||||
/**
|
||||
* 区
|
||||
*/
|
||||
@Excel(name = "区", width = 15)
|
||||
@Schema(title = "区")
|
||||
private String area;
|
||||
/**
|
||||
* 医院等级
|
||||
*/
|
||||
@Excel(name = "医院等级", width = 15)
|
||||
@Schema(title = "医院等级")
|
||||
@Dict(dicCode = "hospital_level")
|
||||
private String level;
|
||||
/**
|
||||
* 图片
|
||||
*/
|
||||
@Excel(name = "图片", width = 15)
|
||||
@Schema(title = "图片")
|
||||
private String img;
|
||||
/**
|
||||
* 简介
|
||||
*/
|
||||
@Excel(name = "简介", width = 15)
|
||||
@Schema(title = "简介")
|
||||
private String resourceDesc;
|
||||
/**
|
||||
* 状态(1-正常,2-冻结)
|
||||
*/
|
||||
@Excel(name = "状态(1-正常,2-冻结)", width = 15)
|
||||
@Schema(title = "状态(1-正常,2-冻结)")
|
||||
private Integer status;
|
||||
}
|
||||
+66
@@ -0,0 +1,66 @@
|
||||
package com.renkang.emergency.data.model.vo;
|
||||
|
||||
import com.renkang.emergency.entity.Resource;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.jeecg.common.aspect.annotation.Dict;
|
||||
import org.jeecgframework.poi.excel.annotation.Excel;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Schema(title = "数据应急医院列表数据模型", description = "数据应急医院列表数据模型")
|
||||
public class ResourceDataInfo {
|
||||
/**医院ID*/
|
||||
@Schema(title = "医院ID")
|
||||
private String id;
|
||||
/**名称*/
|
||||
@Schema(title = "医院名称")
|
||||
private String name;
|
||||
/**医院照片*/
|
||||
@Schema(title = "医院照片")
|
||||
private String img;
|
||||
/**医院类别*/
|
||||
@Schema(title = "医院类别(1:油田医院 2:合作医院)")
|
||||
private String type;
|
||||
/**详细地址*/
|
||||
@Schema(title = "详细地址")
|
||||
private String address;
|
||||
/**医院级别*/
|
||||
@Schema(title = "医院级别")
|
||||
@Dict(dicCode = "hospital_level")
|
||||
private String level;
|
||||
/**联系电话*/
|
||||
@Schema(title = "联系电话")
|
||||
private String mobile;
|
||||
/**简介*/
|
||||
@Schema(title = "简介")
|
||||
private String resourceDesc;
|
||||
/**网址*/
|
||||
@Schema(title = "网址")
|
||||
private String url;
|
||||
/**经度*/
|
||||
@Schema(title = "经度")
|
||||
private BigDecimal longitude;
|
||||
/**纬度*/
|
||||
@Schema(title = "纬度")
|
||||
private BigDecimal latitude;
|
||||
|
||||
public ResourceDataInfo(Resource resource) {
|
||||
this.id = resource.getId();
|
||||
this.name = resource.getName();
|
||||
this.address = resource.getAddress();
|
||||
this.type = resource.getType();
|
||||
this.level = resource.getLevel();
|
||||
this.mobile = resource.getMobile();
|
||||
this.img = resource.getImg();
|
||||
this.resourceDesc = resource.getResourceDesc();
|
||||
this.url = resource.getUrl();
|
||||
this.longitude = resource.getLongitude();
|
||||
this.latitude = resource.getLatitude();
|
||||
}
|
||||
}
|
||||
+65
@@ -0,0 +1,65 @@
|
||||
package com.renkang.emergency.data.model.vo;
|
||||
|
||||
import com.renkang.emergency.entity.Resource;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.jeecg.common.aspect.annotation.Dict;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Schema(title = "数据应急医院列表数据模型", description = "数据应急医院列表数据模型")
|
||||
public class ResourceDataStatistics {
|
||||
/**医院ID*/
|
||||
@Schema(title = "医院ID")
|
||||
private String id;
|
||||
/**名称*/
|
||||
@Schema(title = "医院名称")
|
||||
private String name;
|
||||
/**医院照片*/
|
||||
@Schema(title = "医院照片")
|
||||
private String img;
|
||||
/**医院类别*/
|
||||
@Schema(title = "医院类别(1:油田医院 2:合作医院)")
|
||||
private String type;
|
||||
/**详细地址*/
|
||||
@Schema(title = "详细地址")
|
||||
private String address;
|
||||
/**医院级别*/
|
||||
@Schema(title = "医院级别")
|
||||
@Dict(dicCode = "hospital_level")
|
||||
private String level;
|
||||
/**联系电话*/
|
||||
@Schema(title = "联系电话")
|
||||
private String mobile;
|
||||
/**简介*/
|
||||
@Schema(title = "简介")
|
||||
private String resourceDesc;
|
||||
/**网址*/
|
||||
@Schema(title = "网址")
|
||||
private String url;
|
||||
/**经度*/
|
||||
@Schema(title = "经度")
|
||||
private BigDecimal longitude;
|
||||
/**纬度*/
|
||||
@Schema(title = "纬度")
|
||||
private BigDecimal latitude;
|
||||
|
||||
public ResourceDataStatistics(Resource resource) {
|
||||
this.id = resource.getId();
|
||||
this.name = resource.getName();
|
||||
this.address = resource.getAddress();
|
||||
this.type = resource.getType();
|
||||
this.level = resource.getLevel();
|
||||
this.mobile = resource.getMobile();
|
||||
this.img = resource.getImg();
|
||||
this.resourceDesc = resource.getResourceDesc();
|
||||
this.url = resource.getUrl();
|
||||
this.longitude = resource.getLongitude();
|
||||
this.latitude = resource.getLatitude();
|
||||
}
|
||||
}
|
||||
+91
@@ -0,0 +1,91 @@
|
||||
package com.renkang.emergency.data.model.vo;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import org.jeecgframework.poi.excel.annotation.Excel;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class ResourceExport {
|
||||
/**
|
||||
* 序号
|
||||
*/
|
||||
@Excel(name = "序号", width = 15)
|
||||
@Schema(title = "序号")
|
||||
private String index;
|
||||
/**
|
||||
* 资源名称
|
||||
*/
|
||||
@Excel(name = "医院名称", width = 15)
|
||||
@Schema(title = "医院名称")
|
||||
private String name;
|
||||
/**
|
||||
* 照片
|
||||
*/
|
||||
@Excel(name = "照片", width = 15)
|
||||
@Schema(title = "照片")
|
||||
private String img;
|
||||
/**
|
||||
* 医院类别(1:油田医院 2:合作医院 3:医疗点 4: )
|
||||
*/
|
||||
@Excel(name = "医院类别", replace = {"油田医院_1","合作医院_2"}, width = 15)
|
||||
@Schema(title = "医院类别(1:油田医院 2:合作医院")
|
||||
private String type;
|
||||
/**
|
||||
* 详细地址
|
||||
*/
|
||||
@Excel(name = "详细地址", width = 20)
|
||||
@Schema(title = "详细地址")
|
||||
private String address;
|
||||
/**
|
||||
* 医院级别
|
||||
*/
|
||||
@Excel(name = "医院级别", dicCode = "hospital_level", width = 15)
|
||||
@Schema(title = "医院级别")
|
||||
private String level;
|
||||
/**
|
||||
* 联系电话
|
||||
*/
|
||||
@Excel(name = "联系电话", width = 15)
|
||||
@Schema(title = "联系电话")
|
||||
private String mobile;
|
||||
/**
|
||||
* 简介/介绍
|
||||
*/
|
||||
@Excel(name = "简介/介绍", width = 15)
|
||||
@Schema(title = "简介/介绍")
|
||||
private String resourceDesc;
|
||||
/**
|
||||
* 网址
|
||||
*/
|
||||
@Excel(name = "网址", width = 15)
|
||||
@Schema(title = "网址")
|
||||
private String url;
|
||||
|
||||
private List<ResourceExport> voList;
|
||||
|
||||
public ResourceExport() {
|
||||
}
|
||||
|
||||
|
||||
public ResourceExport(List<ResourceDataInfo> records) {
|
||||
List<ResourceExport> voList = new ArrayList<>();
|
||||
records.forEach(item->{
|
||||
ResourceExport export = new ResourceExport();
|
||||
export.setIndex(String.valueOf(records.indexOf(item) + 1));
|
||||
export.setName(item.getName());
|
||||
export.setImg(item.getImg());
|
||||
export.setType(item.getType());
|
||||
export.setAddress(item.getAddress());
|
||||
export.setLevel(item.getLevel());
|
||||
export.setMobile(item.getMobile());
|
||||
export.setResourceDesc(item.getResourceDesc());
|
||||
export.setUrl(item.getUrl());
|
||||
voList.add(export);
|
||||
});
|
||||
this.voList = voList;
|
||||
}
|
||||
}
|
||||
+28
@@ -0,0 +1,28 @@
|
||||
package com.renkang.emergency.data.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.renkang.emergency.data.model.dto.DiagnosisDataPageParam;
|
||||
import com.renkang.emergency.data.model.dto.ResourceDataPageParam;
|
||||
import com.renkang.emergency.data.model.vo.DiagnosisDataInfo;
|
||||
import com.renkang.emergency.data.model.vo.ResourceDataInfo;
|
||||
import org.jeecg.config.mybatis.bean.BeanDictInfo;
|
||||
import org.jeecg.config.mybatis.bean.TableInfo;
|
||||
|
||||
/**
|
||||
* @Description: 数据模块-就医数据-应急中心就医service
|
||||
*/
|
||||
public interface DataDiagnosisService {
|
||||
|
||||
/**
|
||||
* 应急中心就医列表数据
|
||||
*/
|
||||
IPage<DiagnosisDataInfo> diagnosisDataPage(DiagnosisDataPageParam pageParam);
|
||||
|
||||
TableInfo tableStructure();
|
||||
|
||||
BeanDictInfo dict();
|
||||
|
||||
void exportXls(DiagnosisDataPageParam pageParam);
|
||||
|
||||
DiagnosisDataInfo statistics(DiagnosisDataPageParam pageParam);
|
||||
}
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
package com.renkang.emergency.data.service;
|
||||
|
||||
import org.jeecg.config.mybatis.bean.BeanDictInfo;
|
||||
import org.jeecg.config.mybatis.bean.TableInfo;
|
||||
|
||||
/**
|
||||
* @author stan
|
||||
* @since 2024-12-23
|
||||
*/
|
||||
public interface DataEmergencyService {
|
||||
|
||||
TableInfo tableStructure();
|
||||
|
||||
BeanDictInfo dict();
|
||||
}
|
||||
+28
@@ -0,0 +1,28 @@
|
||||
package com.renkang.emergency.data.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.renkang.emergency.data.model.dto.DiagnosisDataPageParam;
|
||||
import com.renkang.emergency.data.model.dto.PhoneDataPageParam;
|
||||
import com.renkang.emergency.data.model.vo.DiagnosisDataInfo;
|
||||
import com.renkang.emergency.data.model.vo.PhoneDataInfo;
|
||||
import org.jeecg.config.mybatis.bean.BeanDictInfo;
|
||||
import org.jeecg.config.mybatis.bean.TableInfo;
|
||||
|
||||
/**
|
||||
* @Description: 数据模块-应急数据-应急来电service
|
||||
*/
|
||||
public interface DataPhoneService {
|
||||
|
||||
/**
|
||||
* 应急来电列表数据
|
||||
*/
|
||||
IPage<PhoneDataInfo> phoneDataPage(PhoneDataPageParam pageParam);
|
||||
|
||||
TableInfo tableStructure();
|
||||
|
||||
BeanDictInfo dict();
|
||||
|
||||
void exportXls(PhoneDataPageParam pageParam);
|
||||
|
||||
PhoneDataInfo statistics(PhoneDataPageParam pageParam);
|
||||
}
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
package com.renkang.emergency.data.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.renkang.emergency.archives.model.dto.ResourceArchivesPageParam;
|
||||
import com.renkang.emergency.archives.model.vo.ResourceArchivesInfo;
|
||||
import com.renkang.emergency.archives.model.vo.YearsStatistic;
|
||||
import com.renkang.emergency.data.model.dto.ResourceDataPageParam;
|
||||
import com.renkang.emergency.data.model.vo.ResourceDataInfo;
|
||||
import org.jeecg.config.mybatis.bean.BeanDictInfo;
|
||||
import org.jeecg.config.mybatis.bean.TableInfo;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Description: 档案模块-机构信息-一线医疗service
|
||||
* @Author: feng
|
||||
* @Date: 2024-11-20
|
||||
* @Version: V1.0
|
||||
*/
|
||||
public interface DataResourceService {
|
||||
/**
|
||||
* 应急医院列表数据
|
||||
*/
|
||||
IPage<ResourceDataInfo> resourceDataPage(ResourceDataPageParam pageParam);
|
||||
|
||||
TableInfo tableStructure();
|
||||
|
||||
BeanDictInfo dict();
|
||||
|
||||
void exportXls(ResourceDataPageParam pageParam);
|
||||
|
||||
ResourceDataInfo statistics(ResourceDataPageParam pageParam);
|
||||
}
|
||||
+282
@@ -0,0 +1,282 @@
|
||||
|
||||
package com.renkang.emergency.data.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.ObjUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.renkang.emergency.data.model.dto.DiagnosisDataPageParam;
|
||||
import com.renkang.emergency.data.model.vo.*;
|
||||
import com.renkang.emergency.data.service.DataDiagnosisService;
|
||||
import com.renkang.emergency.entity.EmergencySeriousDisease;
|
||||
import com.renkang.emergency.entity.Resource;
|
||||
import com.renkang.emergency.mapper.EmergencySeriousDiseaseMapper;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.jeecg.bean.request.HealthMealsWeightQueryVO;
|
||||
import org.jeecg.bean.response.BaseEmployeeInfo;
|
||||
import org.jeecg.bean.response.BaseUser;
|
||||
import org.jeecg.common.system.api.ISysBaseAPI;
|
||||
import org.jeecg.common.system.util.DictUtil;
|
||||
import org.jeecg.common.system.vo.DictModel;
|
||||
import org.jeecg.common.system.vo.LoginUser;
|
||||
import org.jeecg.common.util.MyUploadUtil;
|
||||
import org.jeecg.config.mybatis.AnalyzeTableManager;
|
||||
import org.jeecg.config.mybatis.bean.*;
|
||||
import org.jeecg.enums.TableInfoEnum;
|
||||
import org.jeecg.global.GlobalUtils;
|
||||
import org.jeecg.modules.manager.ISysCache;
|
||||
import org.jeecg.modules.system.entity.SysDepart;
|
||||
import org.jeecg.util.AsyncUtils;
|
||||
import org.jeecg.util.ColumnUtil;
|
||||
import org.jeecg.util.WrapperUtils;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.core.task.AsyncTaskExecutor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Description: 数据模块-就医数据-应急中心就医serviceImpl
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class DataDiagnosisServiceImpl implements DataDiagnosisService {
|
||||
private static final Logger log = LoggerFactory.getLogger(DataDiagnosisServiceImpl.class);
|
||||
private final ISysBaseAPI sysBaseAPI;
|
||||
private final ISysCache sysCache;
|
||||
private final EmergencySeriousDiseaseMapper emergencySeriousDiseaseMapper;
|
||||
private final AnalyzeTableManager analyzeTableManager;
|
||||
private final DictUtil dictUtil;
|
||||
private final AsyncTaskExecutor taskExecutor;
|
||||
// 应急医院导出code
|
||||
private final String exportCode = "dataResourceExportCode";
|
||||
@Override
|
||||
public IPage<DiagnosisDataInfo> diagnosisDataPage(DiagnosisDataPageParam pageParam) {
|
||||
IPage<DiagnosisDataInfo> resultPage = new Page<>();
|
||||
LambdaQueryWrapper<EmergencySeriousDisease> wrapper = buildHospitalArchivesWrapper(pageParam);
|
||||
IPage<EmergencySeriousDisease> resourceIPage = emergencySeriousDiseaseMapper.selectPage(new Page<>(pageParam.getPageNo(),pageParam.getPageSize()),wrapper);
|
||||
BeanUtils.copyProperties(resourceIPage, resultPage, "records");
|
||||
if(ObjectUtil.isNotEmpty(resourceIPage.getRecords())){
|
||||
List<DiagnosisDataInfo> archivesInfos = resourceIPage.getRecords().stream().map(DiagnosisDataInfo::new).collect(Collectors.toList());
|
||||
// 处理用户相关信息
|
||||
setUserInfos(archivesInfos);
|
||||
resultPage.setRecords(archivesInfos);
|
||||
}
|
||||
return resultPage;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TableInfo tableStructure() {
|
||||
List<String> tableNames = Collections.singletonList("emergency_serious_disease");
|
||||
Map<String, ColumnMetaData> columnInfo = analyzeTableManager.columnInfo(tableNames, DiagnosisData.class);
|
||||
TableCreateInfo createInfo = getTableCreateInfo();
|
||||
TableInfo tableInfo = new TableInfo();
|
||||
tableInfo.setColumnInfo(columnInfo);
|
||||
tableInfo.setCreateInfo(createInfo);
|
||||
return tableInfo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BeanDictInfo dict() {
|
||||
Map<String, ColumnDictData> dataMap = ColumnUtil.convertDict(DiagnosisData.class, dictUtil::queryDictItemListByCode);
|
||||
TableCreateInfo createInfo = getTableCreateInfo();
|
||||
BeanDictInfo beanDictInfo = new BeanDictInfo();
|
||||
beanDictInfo.setDictDataMap(dataMap);
|
||||
beanDictInfo.setCreateInfo(createInfo);
|
||||
return beanDictInfo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void exportXls(DiagnosisDataPageParam pageParam) {
|
||||
AsyncUtils.exportTaskExecute(exportCode, taskExecutor, () -> {
|
||||
try {
|
||||
pageParam.setPageNo(1);
|
||||
pageParam.setPageSize(99999);
|
||||
List<DiagnosisDataInfo> records = diagnosisDataPage(pageParam).getRecords();
|
||||
setExportData(new DiagnosisExport(records).getVoList());
|
||||
} catch (Exception e) {
|
||||
log.error("导出结果请在导出记录查看", e);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public DiagnosisDataInfo statistics(DiagnosisDataPageParam pageParam) {
|
||||
DiagnosisDataInfo statistics = new DiagnosisDataInfo();
|
||||
pageParam.setPageNo(1);
|
||||
pageParam.setPageSize(99999);
|
||||
List<DiagnosisDataInfo> records = diagnosisDataPage(pageParam).getRecords();
|
||||
// 统计有多少个单位
|
||||
statistics.setDepartName(records.stream().map(DiagnosisDataInfo::getDepartName).filter(Objects::nonNull).distinct().count()+"");
|
||||
// 统计有多少个部门
|
||||
statistics.setOrgName(records.stream().map(DiagnosisDataInfo::getOrgName).filter(Objects::nonNull).distinct().count()+"");
|
||||
// 统计有多少个姓名
|
||||
statistics.setRealName(records.stream().map(DiagnosisDataInfo::getRealName).filter(Objects::nonNull).distinct().count()+"");
|
||||
// 统计有多少个工号
|
||||
statistics.setWorkNo(records.stream().map(DiagnosisDataInfo::getWorkNo).filter(Objects::nonNull).distinct().count()+"");
|
||||
// 统计性别女有多少 及 性别男有多少 文字显示 女2/男3
|
||||
statistics.setSex(records.stream().map(DiagnosisDataInfo::getSex).filter(Objects::nonNull).collect(Collectors.groupingBy(a -> a, Collectors.counting())).entrySet().stream()
|
||||
.map(entry -> entry.getKey() + entry.getValue()).collect(Collectors.joining("/")));
|
||||
// 统计平均年龄
|
||||
statistics.setAge(records.stream().map(DiagnosisDataInfo::getAge).filter(Objects::nonNull).mapToInt(Integer::parseInt).average().orElse(0)+"");
|
||||
// 统计有多少个电话
|
||||
statistics.setTelPhone(records.stream().map(DiagnosisDataInfo::getTelPhone).filter(Objects::nonNull).distinct().count()+"");
|
||||
// 统计有多少个身份证号
|
||||
statistics.setIdNo(records.stream().map(DiagnosisDataInfo::getIdNo).filter(Objects::nonNull).distinct().count()+"");
|
||||
// 统计有多少个预约医院
|
||||
statistics.setHospitalName(records.stream().map(DiagnosisDataInfo::getHospitalName).filter(Objects::nonNull).distinct().count()+"");
|
||||
// 统计挂号类别 统计出每种字典值的数量
|
||||
Map<String, Long> collect = dictUtil.queryDictItemListByCode("category").stream()
|
||||
.collect(Collectors.toMap(DictModel::getValue, item -> records.stream().filter(record -> item.getValue().equals(record.getRegisterCategory())).count()));
|
||||
statistics.setRegisterCategory(collect+"");
|
||||
// 统计有多少个预约科室
|
||||
statistics.setReservationOffice(records.stream().map(DiagnosisDataInfo::getReservationOffice).filter(Objects::nonNull).distinct().count()+"");
|
||||
// 统计有多少个预约医生
|
||||
statistics.setReservationDoctor(records.stream().map(DiagnosisDataInfo::getReservationDoctor).filter(Objects::nonNull).distinct().count()+"");
|
||||
// 统计状态 统计出每种字典值的数量
|
||||
Map<String, Long> collect1 = dictUtil.queryDictItemListByCode("emergency_serious_state").stream()
|
||||
.collect(Collectors.toMap(DictModel::getValue, item -> records.stream().filter(record -> item.getValue().equals(record.getState())).count()));
|
||||
statistics.setState(collect1+"");
|
||||
// 统计有多少个驻场人员
|
||||
statistics.setStationUserName(records.stream().map(DiagnosisDataInfo::getStationUserName).filter(Objects::nonNull).distinct().count()+"");
|
||||
return statistics;
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<EmergencySeriousDisease> buildHospitalArchivesWrapper(DiagnosisDataPageParam param){
|
||||
LambdaQueryWrapper<EmergencySeriousDisease> queryWrapper = WrapperUtils.initLambdaWrapper(param);
|
||||
// 单位部门、姓名、工号、性别、年龄、身份证号
|
||||
if (StrUtil.isNotEmpty(param.getOrgCode()) ||
|
||||
StrUtil.isNotEmpty(param.getRealName()) ||
|
||||
StrUtil.isNotEmpty(param.getWorkNo()) ||
|
||||
ObjUtil.isNotEmpty(param.getSex()) ||
|
||||
ObjUtil.isNotEmpty(param.getAge()) ||
|
||||
ObjUtil.isNotEmpty(param.getIdCard())) {
|
||||
HealthMealsWeightQueryVO queryVO = getHealthMealsWeightQueryVO(param);
|
||||
List<BaseUser> records = sysBaseAPI.getUsersByMealsWeight(queryVO).getResult().getRecords();
|
||||
List<String> userIds = records.stream().map(BaseUser::getUserId).collect(Collectors.toList());
|
||||
queryWrapper.in(EmergencySeriousDisease::getUserId, CollUtil.isNotEmpty(userIds)?userIds: Collections.singletonList("-1"));
|
||||
}
|
||||
// 预约医院
|
||||
if (ObjUtil.isNotEmpty(param.getHospitalId())){
|
||||
queryWrapper.eq(EmergencySeriousDisease::getHospitalId,param.getHospitalId());
|
||||
}
|
||||
// 挂号类别
|
||||
if (ObjUtil.isNotEmpty(param.getRegisterCategory())){
|
||||
queryWrapper.eq(EmergencySeriousDisease::getRegisterCategory,param.getRegisterCategory());
|
||||
}
|
||||
// 预约医生
|
||||
if (ObjUtil.isNotEmpty(param.getReservationDoctor())){
|
||||
queryWrapper.like(EmergencySeriousDisease::getReservationDoctor,param.getReservationDoctor());
|
||||
|
||||
}
|
||||
// 预约时间
|
||||
if (ObjUtil.isNotEmpty(param.getAppointmentTimeStart()) && ObjUtil.isNotNull(param.getAppointmentTimeEnd())){
|
||||
queryWrapper.between(EmergencySeriousDisease::getReservationTime,param.getAppointmentTimeStart(),param.getAppointmentTimeEnd());
|
||||
}
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
private TableCreateInfo getTableCreateInfo() {
|
||||
TableInfoEnum user = TableInfoEnum.USER;
|
||||
TableCreateInfo info = new TableCreateInfo();
|
||||
info.setTime(user.getTime());
|
||||
info.setDesign(new ContactInfo(user.getDesign().getName(), user.getDesign().getCall()));
|
||||
info.setCharge(new ContactInfo(user.getCharge().getName(), user.getCharge().getCall()));
|
||||
info.setCompleted(new ContactInfo(user.getCompleted().getName(), user.getCompleted().getCall()));
|
||||
return info;
|
||||
}
|
||||
|
||||
private void setExportData(List<DiagnosisExport> voList){
|
||||
int dataSize = voList.size();
|
||||
String exportTitle = "应急中心就医导出";
|
||||
AsyncUtils.exportStartUpdate(dataSize, exportTitle);
|
||||
Workbook workbook;
|
||||
try {
|
||||
workbook = AsyncUtils.listToExcelAutoPoi(exportTitle, exportTitle, voList, DiagnosisExport.class);
|
||||
} catch (Exception e) {
|
||||
log.error("生成导出文件有误:{}", exportTitle, e);
|
||||
AsyncUtils.exportErrorUpdate("生成导出文件有误");
|
||||
return;
|
||||
}
|
||||
try {
|
||||
String filePath = AsyncUtils.uploadWorkbook(workbook, MyUploadUtil.EXPORT_BIZ + "/data/diagnosis", AsyncUtils.filename(exportTitle));
|
||||
if (StrUtil.isEmpty(filePath)) {
|
||||
log.error("上传导出文件有误:{}", exportTitle);
|
||||
AsyncUtils.exportErrorUpdate("生成导出文件有误");
|
||||
return;
|
||||
}
|
||||
AsyncUtils.exportFinishUpdate(dataSize, filePath);
|
||||
} catch (Exception e) {
|
||||
log.error("上传导出文件有误:{}", exportTitle, e);
|
||||
AsyncUtils.exportErrorUpdate("生成导出文件有误");
|
||||
}
|
||||
}
|
||||
|
||||
private void setUserInfos(List<DiagnosisDataInfo> userInfos){
|
||||
if (ObjectUtil.isNotEmpty(userInfos)){
|
||||
List<String> userIds = userInfos.stream().map(DiagnosisDataInfo::getUserId).collect(Collectors.toList());
|
||||
List<String> operatorIds = userInfos.stream().map(DiagnosisDataInfo::getOperatorId).distinct().collect(Collectors.toList());
|
||||
Set<String> userIdList = new HashSet<>();
|
||||
userIdList.addAll(userIds);
|
||||
userIdList.addAll(operatorIds);
|
||||
List<BaseEmployeeInfo> loginUsers = sysBaseAPI.queryBaseEmployeeInfo(new HashSet<>(userIdList));
|
||||
// 根据 userId分组
|
||||
Map<String, BaseEmployeeInfo> userMap = loginUsers.stream().collect(Collectors.toMap(BaseEmployeeInfo::getUserId, a -> a, (k1, k2) -> k1));
|
||||
for (DiagnosisDataInfo userInfo : userInfos) {
|
||||
BaseEmployeeInfo user = userMap.get(userInfo.getUserId());
|
||||
if (ObjUtil.isNotEmpty(user)){
|
||||
userInfo.setRealName(user.getRealName());
|
||||
userInfo.setWorkNo(user.getWorkNo());
|
||||
if (ObjUtil.isNotEmpty(user.getSex())){
|
||||
userInfo.setSex(user.getSex().toString());
|
||||
}
|
||||
if (ObjUtil.isNotEmpty(user.getAge())){
|
||||
userInfo.setAge(user.getAge().toString());
|
||||
}
|
||||
userInfo.setTelPhone(user.getPhone());
|
||||
userInfo.setIdNo(user.getIdCard());
|
||||
setDepart(userInfo,user);
|
||||
}
|
||||
BaseEmployeeInfo operator = userMap.get(userInfo.getOperatorId());
|
||||
if (ObjUtil.isNotEmpty(operator)){
|
||||
userInfo.setOrgName(operator.getRealName());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void setDepart(DiagnosisDataInfo a,BaseEmployeeInfo v){
|
||||
SysDepart secondDepart = sysCache.getDepartByOrgCode(GlobalUtils.getSecondDepartOrgCode(v.getThisDeptCode()));
|
||||
if (ObjUtil.isNotEmpty(secondDepart)){
|
||||
a.setDepartName(secondDepart.getDepartName());
|
||||
}
|
||||
SysDepart thirdDepart = sysCache.getDepartByOrgCode(GlobalUtils.getThirdDepartOrgCode(v.getThisDeptCode()));
|
||||
if (ObjUtil.isNotEmpty(thirdDepart)){
|
||||
a.setOrgName(thirdDepart.getDepartName());
|
||||
}
|
||||
}
|
||||
|
||||
private static @NotNull HealthMealsWeightQueryVO getHealthMealsWeightQueryVO(DiagnosisDataPageParam param) {
|
||||
HealthMealsWeightQueryVO queryVO = new HealthMealsWeightQueryVO();
|
||||
queryVO.setOrgCode(param.getOrgCode());
|
||||
queryVO.setRealName(param.getRealName());
|
||||
queryVO.setWorkNo(param.getWorkNo());
|
||||
queryVO.setSex(param.getSex());
|
||||
queryVO.setAge(param.getAge());
|
||||
queryVO.setAgeB(param.getAgeB());
|
||||
queryVO.setAgeCondition(param.getAgeCondition());
|
||||
queryVO.setIdCard(param.getIdCard());
|
||||
queryVO.setPageNo(1);
|
||||
queryVO.setPageSize(99999);
|
||||
return queryVO;
|
||||
}
|
||||
}
|
||||
+48
@@ -0,0 +1,48 @@
|
||||
package com.renkang.emergency.data.service.impl;
|
||||
|
||||
import com.renkang.emergency.data.service.DataEmergencyService;
|
||||
import com.renkang.emergency.entity.EmergencyProfessionUser;
|
||||
import org.jeecg.common.system.util.DictUtil;
|
||||
import org.jeecg.config.mybatis.AnalyzeTableManager;
|
||||
import org.jeecg.config.mybatis.bean.BeanDictInfo;
|
||||
import org.jeecg.config.mybatis.bean.ColumnDictData;
|
||||
import org.jeecg.config.mybatis.bean.TableCreateInfo;
|
||||
import org.jeecg.config.mybatis.bean.TableInfo;
|
||||
import org.jeecg.enums.TableInfoEnum;
|
||||
import org.jeecg.util.ColumnUtil;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author stan
|
||||
* @since 2024-12-23
|
||||
*/
|
||||
@Service
|
||||
public class DataEmergencyServiceImpl implements DataEmergencyService {
|
||||
|
||||
@Autowired
|
||||
private AnalyzeTableManager analyzeTableManager;
|
||||
@Autowired
|
||||
private DictUtil dictUtil;
|
||||
|
||||
|
||||
@Override
|
||||
public TableInfo tableStructure() {
|
||||
return new TableInfo(new TableCreateInfo(TableInfoEnum.DEFAULT),
|
||||
analyzeTableManager.columnInfo(Collections.singletonList("emergency_profession_user"), EmergencyProfessionUser.class));
|
||||
}
|
||||
|
||||
@Override
|
||||
public BeanDictInfo dict() {
|
||||
Map<String, ColumnDictData> dataMap = ColumnUtil.convertDict(EmergencyProfessionUser.class, dictUtil::queryDictItemListByCode);
|
||||
return new BeanDictInfo(new TableCreateInfo(TableInfoEnum.DEFAULT),dataMap);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
+258
@@ -0,0 +1,258 @@
|
||||
|
||||
package com.renkang.emergency.data.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.ObjUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.renkang.emergency.data.model.dto.DiagnosisDataPageParam;
|
||||
import com.renkang.emergency.data.model.dto.PhoneDataPageParam;
|
||||
import com.renkang.emergency.data.model.vo.*;
|
||||
import com.renkang.emergency.data.service.DataDiagnosisService;
|
||||
import com.renkang.emergency.data.service.DataPhoneService;
|
||||
import com.renkang.emergency.entity.EmergencyGrouped;
|
||||
import com.renkang.emergency.entity.EmergencySeriousDisease;
|
||||
import com.renkang.emergency.entity.TblQimoNotice;
|
||||
import com.renkang.emergency.entity.TblUserHelp;
|
||||
import com.renkang.emergency.mapper.EmergencyGroupedMapper;
|
||||
import com.renkang.emergency.mapper.EmergencySeriousDiseaseMapper;
|
||||
import com.renkang.emergency.mapper.TblQimoNoticeMapper;
|
||||
import com.renkang.emergency.mapper.TblUserHelpMapper;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.jeecg.bean.request.HealthMealsWeightQueryVO;
|
||||
import org.jeecg.bean.response.BaseUser;
|
||||
import org.jeecg.common.system.api.ISysBaseAPI;
|
||||
import org.jeecg.common.system.util.DictUtil;
|
||||
import org.jeecg.common.system.vo.DictModel;
|
||||
import org.jeecg.common.system.vo.LoginUser;
|
||||
import org.jeecg.common.util.MyUploadUtil;
|
||||
import org.jeecg.config.mybatis.AnalyzeTableManager;
|
||||
import org.jeecg.config.mybatis.bean.*;
|
||||
import org.jeecg.enums.TableInfoEnum;
|
||||
import org.jeecg.global.GlobalUtils;
|
||||
import org.jeecg.modules.manager.ISysCache;
|
||||
import org.jeecg.modules.system.entity.SysDepart;
|
||||
import org.jeecg.modules.system.entity.SysUser;
|
||||
import org.jeecg.util.AsyncUtils;
|
||||
import org.jeecg.util.ColumnUtil;
|
||||
import org.jeecg.util.WrapperUtils;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.core.task.AsyncTaskExecutor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Description: 数据模块-应急数据-应急来电serviceImpl
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class DataPhoneServiceImpl implements DataPhoneService {
|
||||
private static final Logger log = LoggerFactory.getLogger(DataPhoneServiceImpl.class);
|
||||
private final ISysBaseAPI sysBaseAPI;
|
||||
private final ISysCache sysCache;
|
||||
private final TblQimoNoticeMapper noticeMapper;
|
||||
private final EmergencyGroupedMapper groupedMapper;
|
||||
private final AnalyzeTableManager analyzeTableManager;
|
||||
private final DictUtil dictUtil;
|
||||
private final AsyncTaskExecutor taskExecutor;
|
||||
// 应急医院导出code
|
||||
private final String exportCode = "dataPhoneExportCode";
|
||||
@Override
|
||||
public IPage<PhoneDataInfo> phoneDataPage(PhoneDataPageParam pageParam) {
|
||||
IPage<PhoneDataInfo> resultPage = new Page<>();
|
||||
LambdaQueryWrapper<TblQimoNotice> wrapper = buildHospitalArchivesWrapper(pageParam);
|
||||
IPage<TblQimoNotice> resourceIPage = noticeMapper.selectPage(new Page<>(pageParam.getPageNo(),pageParam.getPageSize()),wrapper);
|
||||
BeanUtils.copyProperties(resourceIPage, resultPage, "records");
|
||||
if(ObjectUtil.isNotEmpty(resourceIPage.getRecords())){
|
||||
List<PhoneDataInfo> archivesInfos = resourceIPage.getRecords().stream().map(PhoneDataInfo::new).collect(Collectors.toList());
|
||||
// 处理用户相关信息
|
||||
setUserInfos(archivesInfos);
|
||||
resultPage.setRecords(archivesInfos);
|
||||
}
|
||||
return resultPage;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TableInfo tableStructure() {
|
||||
List<String> tableNames = Collections.singletonList("tbl_qimo_notice");
|
||||
Map<String, ColumnMetaData> columnInfo = analyzeTableManager.columnInfo(tableNames, PhoneData.class);
|
||||
TableCreateInfo createInfo = getTableCreateInfo();
|
||||
TableInfo tableInfo = new TableInfo();
|
||||
tableInfo.setColumnInfo(columnInfo);
|
||||
tableInfo.setCreateInfo(createInfo);
|
||||
return tableInfo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BeanDictInfo dict() {
|
||||
Map<String, ColumnDictData> dataMap = ColumnUtil.convertDict(PhoneData.class, dictUtil::queryDictItemListByCode);
|
||||
TableCreateInfo createInfo = getTableCreateInfo();
|
||||
BeanDictInfo beanDictInfo = new BeanDictInfo();
|
||||
beanDictInfo.setDictDataMap(dataMap);
|
||||
beanDictInfo.setCreateInfo(createInfo);
|
||||
return beanDictInfo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void exportXls(PhoneDataPageParam pageParam) {
|
||||
AsyncUtils.exportTaskExecute(exportCode, taskExecutor, () -> {
|
||||
try {
|
||||
pageParam.setPageNo(1);
|
||||
pageParam.setPageSize(99999);
|
||||
List<PhoneDataInfo> records = phoneDataPage(pageParam).getRecords();
|
||||
setExportData(new PhoneExport(records).getVoList());
|
||||
} catch (Exception e) {
|
||||
log.error("导出结果请在导出记录查看", e);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public PhoneDataInfo statistics(PhoneDataPageParam pageParam) {
|
||||
PhoneDataInfo statistics = new PhoneDataInfo();
|
||||
pageParam.setPageNo(1);
|
||||
pageParam.setPageSize(99999);
|
||||
List<PhoneDataInfo> records = phoneDataPage(pageParam).getRecords();
|
||||
// 统计有多少个单位
|
||||
statistics.setDepartName(records.stream().map(PhoneDataInfo::getDepartName).filter(Objects::nonNull).distinct().count()+"");
|
||||
// 统计有多少个部门
|
||||
statistics.setOrgName(records.stream().map(PhoneDataInfo::getOrgName).filter(Objects::nonNull).distinct().count()+"");
|
||||
// 统计有多少个姓名
|
||||
statistics.setRealName(records.stream().map(PhoneDataInfo::getRealName).filter(Objects::nonNull).distinct().count()+"");
|
||||
// 统计性别女有多少 及 性别男有多少 文字显示 女2/男3
|
||||
statistics.setSex(records.stream().map(PhoneDataInfo::getSex).filter(Objects::nonNull).collect(Collectors.groupingBy(a -> a, Collectors.counting())).entrySet().stream()
|
||||
.map(entry -> entry.getKey() + entry.getValue()).collect(Collectors.joining("/")));
|
||||
// 统计有多少个电话
|
||||
statistics.setPhone(records.stream().map(PhoneDataInfo::getPhone).filter(Objects::nonNull).distinct().count()+"");
|
||||
return statistics;
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<TblQimoNotice> buildHospitalArchivesWrapper(PhoneDataPageParam param){
|
||||
// 数据库表中不存在create_time字段 会报错 使用data_date覆盖掉create_time
|
||||
if (param.getColumn().equals("createTime")) {
|
||||
param.setColumn("create_date");
|
||||
}
|
||||
LambdaQueryWrapper<TblQimoNotice> queryWrapper = WrapperUtils.initLambdaWrapper(param);
|
||||
queryWrapper.orderByDesc(TblQimoNotice::getCreateDate);
|
||||
// 单位部门、姓名、性别
|
||||
if (StrUtil.isNotEmpty(param.getOrgCode()) ||
|
||||
StrUtil.isNotEmpty(param.getRealname()) ||
|
||||
ObjUtil.isNotEmpty(param.getSex())) {
|
||||
List<String> phones = sysBaseAPI.getPhonesByNameOrOrgCodeOrSex(param.getRealname(), param.getOrgCode(), param.getSex()).getResult();
|
||||
queryWrapper.in(TblQimoNotice::getCallNo, CollUtil.isNotEmpty(phones)?phones: Collections.singletonList("-1"));
|
||||
}
|
||||
if (StrUtil.isNotEmpty(param.getCenterId())) {
|
||||
// 查询呼叫中心对应的坐席工号
|
||||
List<EmergencyGrouped> emergencyGroupeds = groupedMapper.selectList(new LambdaQueryWrapper<EmergencyGrouped>().eq(EmergencyGrouped::getCenterId, param.getCenterId()));
|
||||
if (CollUtil.isNotEmpty(emergencyGroupeds)){
|
||||
List<String> seatIds = emergencyGroupeds.stream().map(EmergencyGrouped::getSeatId).collect(Collectors.toList());
|
||||
queryWrapper.in(TblQimoNotice::getExten, seatIds);
|
||||
}else {
|
||||
queryWrapper.eq(TblQimoNotice::getExten, "-1");
|
||||
}
|
||||
}
|
||||
if (StrUtil.isNotEmpty(param.getCenterName())) {
|
||||
// 查询呼叫中心对应的坐席工号
|
||||
List<EmergencyGrouped> emergencyGroupeds = groupedMapper.selectList(new LambdaQueryWrapper<EmergencyGrouped>().like(EmergencyGrouped::getCenterName, param.getCenterName()));
|
||||
if (CollUtil.isNotEmpty(emergencyGroupeds)){
|
||||
List<String> seatIds = emergencyGroupeds.stream().map(EmergencyGrouped::getSeatId).collect(Collectors.toList());
|
||||
queryWrapper.in(TblQimoNotice::getExten, seatIds);
|
||||
}else {
|
||||
queryWrapper.eq(TblQimoNotice::getExten, "-1");
|
||||
}
|
||||
}
|
||||
if (StrUtil.isNotEmpty(param.getSeatId())) {
|
||||
queryWrapper.eq(TblQimoNotice::getExten, param.getSeatId());
|
||||
}
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
private TableCreateInfo getTableCreateInfo() {
|
||||
TableInfoEnum user = TableInfoEnum.USER;
|
||||
TableCreateInfo info = new TableCreateInfo();
|
||||
info.setTime(user.getTime());
|
||||
info.setDesign(new ContactInfo(user.getDesign().getName(), user.getDesign().getCall()));
|
||||
info.setCharge(new ContactInfo(user.getCharge().getName(), user.getCharge().getCall()));
|
||||
info.setCompleted(new ContactInfo(user.getCompleted().getName(), user.getCompleted().getCall()));
|
||||
return info;
|
||||
}
|
||||
|
||||
private void setExportData(List<PhoneExport> voList){
|
||||
int dataSize = voList.size();
|
||||
String exportTitle = "应急中心就医导出";
|
||||
AsyncUtils.exportStartUpdate(dataSize, exportTitle);
|
||||
Workbook workbook;
|
||||
try {
|
||||
workbook = AsyncUtils.listToExcelAutoPoi(exportTitle, exportTitle, voList, PhoneExport.class);
|
||||
} catch (Exception e) {
|
||||
log.error("生成导出文件有误:{}", exportTitle, e);
|
||||
AsyncUtils.exportErrorUpdate("生成导出文件有误");
|
||||
return;
|
||||
}
|
||||
try {
|
||||
String filePath = AsyncUtils.uploadWorkbook(workbook, MyUploadUtil.EXPORT_BIZ + "/data/phone", AsyncUtils.filename(exportTitle));
|
||||
if (StrUtil.isEmpty(filePath)) {
|
||||
log.error("上传导出文件有误:{}", exportTitle);
|
||||
AsyncUtils.exportErrorUpdate("生成导出文件有误");
|
||||
return;
|
||||
}
|
||||
AsyncUtils.exportFinishUpdate(dataSize, filePath);
|
||||
} catch (Exception e) {
|
||||
log.error("上传导出文件有误:{}", exportTitle, e);
|
||||
AsyncUtils.exportErrorUpdate("生成导出文件有误");
|
||||
}
|
||||
}
|
||||
|
||||
private void setUserInfos(List<PhoneDataInfo> userInfos){
|
||||
if (ObjectUtil.isNotEmpty(userInfos)){
|
||||
Set<String> phoneList = userInfos.stream().map(PhoneDataInfo::getPhone).collect(Collectors.toSet());
|
||||
List<SysUser> loginUsers = sysBaseAPI.getUserByPhoneList(new ArrayList<>(phoneList)).getResult();
|
||||
// 根据 userId分组
|
||||
Map<String, SysUser> userMap = loginUsers.stream().collect(Collectors.toMap(SysUser::getPhone, a -> a, (k1, k2) -> k1));
|
||||
|
||||
List<String> seatNoList = userInfos.stream().map(PhoneDataInfo::getSeatNo).distinct().collect(Collectors.toList());
|
||||
List<EmergencyGrouped> emergencyGroupeds = groupedMapper.selectList(new LambdaQueryWrapper<EmergencyGrouped>().in(EmergencyGrouped::getSeatId, seatNoList));
|
||||
Map<String, EmergencyGrouped> groupedMap = emergencyGroupeds.stream().collect(Collectors.toMap(EmergencyGrouped::getSeatId, a -> a, (k1, k2) -> k1));
|
||||
for (PhoneDataInfo userInfo : userInfos) {
|
||||
SysUser user = userMap.get(userInfo.getPhone());
|
||||
if (ObjUtil.isNotEmpty(user)){
|
||||
userInfo.setRealName(user.getRealname());
|
||||
userInfo.setSex(user.getSex().toString());
|
||||
userInfo.setPhone(user.getPhone());
|
||||
userInfo.setUserId(user.getId());
|
||||
setDepart(userInfo,user);
|
||||
}else {
|
||||
userInfo.setDepartName("未知");
|
||||
userInfo.setOrgName("未知");
|
||||
userInfo.setRealName("未知");
|
||||
userInfo.setSex("未知");
|
||||
}
|
||||
EmergencyGrouped emergencyGrouped = groupedMap.get(userInfo.getSeatNo());
|
||||
if (ObjUtil.isNotEmpty(emergencyGrouped)){
|
||||
userInfo.setCenterId(emergencyGrouped.getCenterId());
|
||||
userInfo.setCenterName(emergencyGrouped.getCenterName());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void setDepart(PhoneDataInfo a,SysUser v){
|
||||
SysDepart secondDepart = sysCache.getDepartByOrgCode(GlobalUtils.getSecondDepartOrgCode(v.getOrgCode()));
|
||||
if (ObjUtil.isNotEmpty(secondDepart)){
|
||||
a.setDepartName(secondDepart.getDepartName());
|
||||
}
|
||||
SysDepart thirdDepart = sysCache.getDepartByOrgCode(GlobalUtils.getThirdDepartOrgCode(v.getOrgCode()));
|
||||
if (ObjUtil.isNotEmpty(thirdDepart)){
|
||||
a.setOrgName(thirdDepart.getDepartName());
|
||||
}
|
||||
}
|
||||
}
|
||||
+151
@@ -0,0 +1,151 @@
|
||||
package com.renkang.emergency.data.service.impl;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.renkang.emergency.data.model.dto.ResourceDataPageParam;
|
||||
import com.renkang.emergency.data.model.vo.ResourceData;
|
||||
import com.renkang.emergency.data.model.vo.ResourceDataInfo;
|
||||
import com.renkang.emergency.data.model.vo.ResourceExport;
|
||||
import com.renkang.emergency.data.service.DataResourceService;
|
||||
import com.renkang.emergency.entity.Resource;
|
||||
import com.renkang.emergency.mapper.ResourceMapper;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.jeecg.common.system.util.DictUtil;
|
||||
import org.jeecg.common.system.vo.DictModel;
|
||||
import org.jeecg.common.util.MyUploadUtil;
|
||||
import org.jeecg.config.mybatis.AnalyzeTableManager;
|
||||
import org.jeecg.config.mybatis.bean.BeanDictInfo;
|
||||
import org.jeecg.config.mybatis.bean.ColumnDictData;
|
||||
import org.jeecg.config.mybatis.bean.TableCreateInfo;
|
||||
import org.jeecg.config.mybatis.bean.TableInfo;
|
||||
import org.jeecg.enums.TableInfoEnum;
|
||||
import org.jeecg.util.AsyncUtils;
|
||||
import org.jeecg.util.ColumnUtil;
|
||||
import org.jeecg.util.WrapperUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.core.task.AsyncTaskExecutor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Description: 档案模块-机构信息-一线医疗serviceimpl
|
||||
* @Author: feng
|
||||
* @Date: 2024-11-20
|
||||
* @Version: V1.0
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class DataResourceServiceImpl implements DataResourceService {
|
||||
private static final Logger log = LoggerFactory.getLogger(DataResourceServiceImpl.class);
|
||||
private final ResourceMapper resourceMapper;
|
||||
private final AnalyzeTableManager analyzeTableManager;
|
||||
private final DictUtil dictUtil;
|
||||
private final AsyncTaskExecutor taskExecutor;
|
||||
// 应急医院导出code
|
||||
private final String exportCode = "dataResourceExportCode";
|
||||
|
||||
|
||||
@Override
|
||||
public IPage<ResourceDataInfo> resourceDataPage(ResourceDataPageParam pageParam) {
|
||||
IPage<ResourceDataInfo> resultPage = new Page<>();
|
||||
LambdaQueryWrapper<Resource> wrapper = WrapperUtils.initLambdaWrapper(pageParam);
|
||||
// 默认只查询油田医院及合作医院
|
||||
wrapper.in(Resource::getType, Arrays.asList(1,2));
|
||||
wrapper.eq(ObjectUtil.isNotEmpty(pageParam.getType()),Resource::getType,pageParam.getType());
|
||||
wrapper.eq(ObjectUtil.isNotEmpty(pageParam.getLevel()),Resource::getLevel,pageParam.getLevel());
|
||||
IPage<Resource> resourceIPage = resourceMapper.selectPage(new Page<>(pageParam.getPageNo(),pageParam.getPageSize()),wrapper);
|
||||
BeanUtils.copyProperties(resourceIPage, resultPage, "records");
|
||||
if(ObjectUtil.isNotEmpty(resourceIPage.getRecords())){
|
||||
List<ResourceDataInfo> archivesInfos = resourceIPage.getRecords().stream().map(ResourceDataInfo::new).collect(Collectors.toList());
|
||||
resultPage.setRecords(archivesInfos);
|
||||
}
|
||||
return resultPage;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TableInfo tableStructure() {
|
||||
return new TableInfo(new TableCreateInfo(TableInfoEnum.DEFAULT),
|
||||
analyzeTableManager.columnInfo(Collections.singletonList("emergency_resource"), ResourceData.class));
|
||||
}
|
||||
|
||||
@Override
|
||||
public BeanDictInfo dict() {
|
||||
Map<String, ColumnDictData> dataMap = ColumnUtil.convertDict(ResourceData.class, dictUtil::queryDictItemListByCode);
|
||||
return new BeanDictInfo(new TableCreateInfo(TableInfoEnum.DEFAULT),dataMap);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void exportXls(ResourceDataPageParam pageParam) {
|
||||
AsyncUtils.exportTaskExecute(exportCode, taskExecutor, () -> {
|
||||
try {
|
||||
pageParam.setPageNo(1);
|
||||
pageParam.setPageSize(99999);
|
||||
List<ResourceDataInfo> records = resourceDataPage(pageParam).getRecords();
|
||||
setExportData(new ResourceExport(records).getVoList());
|
||||
} catch (Exception e) {
|
||||
log.error("导出结果请在导出记录查看", e);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResourceDataInfo statistics(ResourceDataPageParam pageParam) {
|
||||
ResourceDataInfo statistics = new ResourceDataInfo();
|
||||
pageParam.setPageNo(1);
|
||||
pageParam.setPageSize(99999);
|
||||
List<ResourceDataInfo> records = resourceDataPage(pageParam).getRecords();
|
||||
// 统计医院名称
|
||||
statistics.setName(records.stream().map(ResourceDataInfo::getName).distinct().count()+"");
|
||||
// 统计有照片的有多少 以及 没有照片的有多少 赋值到img 中 用于前端展示 例如 有10/无20
|
||||
statistics.setImg("有"+records.stream().filter(item -> StrUtil.isNotEmpty(item.getImg())).count()
|
||||
+"/无"+records.stream().filter(item -> StrUtil.isEmpty(item.getImg())).count());
|
||||
// 统计医院级别 统计出每种字典值的数量
|
||||
Map<String, Long> collect = dictUtil.queryDictItemListByCode("hospital_level").stream()
|
||||
.collect(Collectors.toMap(DictModel::getValue, item -> records.stream().filter(record -> item.getValue().equals(record.getLevel())).count()));
|
||||
statistics.setLevel(collect+"");
|
||||
// 统计有多少电话
|
||||
statistics.setMobile(records.stream().filter(item -> StrUtil.isNotEmpty(item.getMobile())).count()+"");
|
||||
// 统计有多少简介
|
||||
statistics.setResourceDesc(records.stream().filter(item -> StrUtil.isNotEmpty(item.getResourceDesc())).count()+"");
|
||||
// 统计有多少网址
|
||||
statistics.setUrl(records.stream().filter(item -> StrUtil.isNotEmpty(item.getUrl())).count()+"");
|
||||
return statistics;
|
||||
}
|
||||
|
||||
private void setExportData(List<ResourceExport> voList){
|
||||
int dataSize = voList.size();
|
||||
String exportTitle = "应急医院导出";
|
||||
AsyncUtils.exportStartUpdate(dataSize, exportTitle);
|
||||
Workbook workbook;
|
||||
try {
|
||||
workbook = AsyncUtils.listToExcelAutoPoi(exportTitle, exportTitle, voList, ResourceExport.class);
|
||||
} catch (Exception e) {
|
||||
log.error("生成导出文件有误:{}", exportTitle, e);
|
||||
AsyncUtils.exportErrorUpdate("生成导出文件有误");
|
||||
return;
|
||||
}
|
||||
try {
|
||||
String filePath = AsyncUtils.uploadWorkbook(workbook, MyUploadUtil.EXPORT_BIZ + "/data/resource", AsyncUtils.filename(exportTitle));
|
||||
if (StrUtil.isEmpty(filePath)) {
|
||||
log.error("上传导出文件有误:{}", exportTitle);
|
||||
AsyncUtils.exportErrorUpdate("生成导出文件有误");
|
||||
return;
|
||||
}
|
||||
AsyncUtils.exportFinishUpdate(dataSize, filePath);
|
||||
} catch (Exception e) {
|
||||
log.error("上传导出文件有误:{}", exportTitle, e);
|
||||
AsyncUtils.exportErrorUpdate("生成导出文件有误");
|
||||
}
|
||||
}
|
||||
}
|
||||
+40
@@ -0,0 +1,40 @@
|
||||
package com.renkang.emergency.enums;
|
||||
|
||||
/**
|
||||
* @author Junqiang Zhu
|
||||
* @date 2023-12-13 09:45
|
||||
*/
|
||||
public class AedEnumUtil {
|
||||
|
||||
public enum WarnTypeEnum {
|
||||
BATTERY, // 电池
|
||||
ROUTER, // 路由
|
||||
EXPIRED, // 过期时间
|
||||
CHECK // 自检
|
||||
}
|
||||
|
||||
public enum BatteryPowerEnum {
|
||||
OK, // 正常
|
||||
LOW, // 电量低
|
||||
CHANGE // 需要更换
|
||||
}
|
||||
|
||||
public enum RouterPowerEnum {
|
||||
OK, // 正常
|
||||
LOW, // 电量低
|
||||
}
|
||||
|
||||
public enum ExpiredPowerEnum {
|
||||
OK, // 正常
|
||||
APPROACH, // 快过期
|
||||
EXPIRED // 已过期
|
||||
}
|
||||
|
||||
public enum CheckEnum {
|
||||
OK, // 正常
|
||||
CANNOT_FIND, // 没有找到
|
||||
CANNOT_CONNECT, // 无法连接
|
||||
CANNOT_GET// 无法获取
|
||||
}
|
||||
|
||||
}
|
||||
+53
@@ -0,0 +1,53 @@
|
||||
package com.renkang.emergency.manager;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import com.renkang.emergency.bean.response.AedGeo;
|
||||
import com.renkang.emergency.constant.EmergencyConstants;
|
||||
import com.renkang.emergency.entity.Aed;
|
||||
import com.renkang.emergency.mapper.AedMapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.jeecg.modules.manager.ISysCache;
|
||||
import org.jeecg.modules.system.entity.SysDepart;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.cache.annotation.CacheEvict;
|
||||
import org.springframework.cache.annotation.Cacheable;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* @author Junqiang Zhu
|
||||
* @date 2023-11-30
|
||||
*/
|
||||
@Component
|
||||
@Slf4j
|
||||
public class AedCacheManager {
|
||||
|
||||
@Autowired
|
||||
private AedMapper medicalResourceMapper;
|
||||
@Autowired
|
||||
private ISysCache sysCache;
|
||||
|
||||
@Cacheable(cacheNames = EmergencyConstants.AED_REDIS_KEY, key = "#id", unless = "#result == null")
|
||||
public AedGeo getOne(Integer id) {
|
||||
Aed resource = medicalResourceMapper.selectById(id);
|
||||
if (resource == null) {
|
||||
return null;
|
||||
}
|
||||
SysDepart sysDepart = sysCache.getDepartByOrgCode(resource.getDepartCode());
|
||||
if (sysDepart != null) {
|
||||
resource.setDepartName(sysDepart.getDepartName());
|
||||
}
|
||||
AedGeo geo = new AedGeo();
|
||||
BeanUtil.copyProperties(resource, geo);
|
||||
return geo;
|
||||
}
|
||||
|
||||
@CacheEvict(cacheNames = EmergencyConstants.AED_REDIS_KEY, key = "#id")
|
||||
public void deleteCache(Integer id) {
|
||||
}
|
||||
|
||||
@CacheEvict(cacheNames = EmergencyConstants.AED_REDIS_KEY, allEntries = true)
|
||||
public void deleteAllCaches() {
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+151
@@ -0,0 +1,151 @@
|
||||
package com.renkang.emergency.manager;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.renkang.emergency.bean.response.AedGeo;
|
||||
import com.renkang.emergency.constant.EmergencyConstants;
|
||||
import com.renkang.emergency.entity.Aed;
|
||||
import com.renkang.emergency.mapper.AedMapper;
|
||||
import com.renkang.emergency.util.ResourceUtils;
|
||||
import org.jeecg.common.constant.CommonConstant;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.geo.*;
|
||||
import org.springframework.data.redis.connection.RedisGeoCommands;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author Junqiang Zhu
|
||||
* @date 2023-11-30
|
||||
*/
|
||||
@Component
|
||||
public class AedManger {
|
||||
|
||||
@Autowired
|
||||
private AedMapper aedMapper;
|
||||
@Autowired
|
||||
private RedisTemplate<String, Object> redisTemplate;
|
||||
@Autowired
|
||||
private AedCacheManager aedCacheManager;
|
||||
|
||||
|
||||
@PostConstruct
|
||||
public void init() {
|
||||
initAedToRedisGeo();
|
||||
}
|
||||
|
||||
private void initAedToRedisGeo() {
|
||||
delAedRedisGeo();
|
||||
List<Aed> aedList = aedList();
|
||||
if (CollectionUtil.isEmpty(aedList)) {
|
||||
return;
|
||||
}
|
||||
aedList.forEach(this::addGeo);
|
||||
}
|
||||
|
||||
private void delAedRedisGeo() {
|
||||
redisTemplate.delete(EmergencyConstants.AED_REDIS_KEY);
|
||||
}
|
||||
|
||||
private List<Aed> aedList() {
|
||||
LambdaQueryWrapper<Aed> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.select(Aed::getId,
|
||||
Aed::getLongitude,
|
||||
Aed::getLatitude)
|
||||
.eq(Aed::getDelFlag, CommonConstant.DEL_FLAG_0);
|
||||
return aedMapper.selectList(queryWrapper);
|
||||
}
|
||||
|
||||
public List<AedGeo> geoSearch(BigDecimal longitude, BigDecimal latitude, double radiusRange, Integer resourceNum, String name) {
|
||||
if (longitude == null || latitude == null) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
// 点
|
||||
Point point = new Point(longitude.doubleValue(), latitude.doubleValue());
|
||||
Distance distance = new Distance(radiusRange, Metrics.KILOMETERS);
|
||||
Circle circle = new Circle(point, distance);
|
||||
|
||||
// cache
|
||||
GeoResults<RedisGeoCommands.GeoLocation<Object>> radius = redisTemplate.opsForGeo().radius(EmergencyConstants.AED_REDIS_KEY, circle);
|
||||
if (ObjectUtil.isNull(radius)) {
|
||||
return null;
|
||||
}
|
||||
List<AedGeo> result = new ArrayList<>();
|
||||
|
||||
// 计算距离
|
||||
for (GeoResult<RedisGeoCommands.GeoLocation<Object>> cache : radius) {
|
||||
Integer id = (Integer) cache.getContent().getName();
|
||||
AedGeo one = aedCacheManager.getOne(id);
|
||||
if (one == null) {
|
||||
continue;
|
||||
}
|
||||
Point geoPoint = new Point(one.getLongitude().doubleValue(), one.getLatitude().doubleValue());
|
||||
one.setDistance(ResourceUtils.geoDistance(point, geoPoint));
|
||||
result.add(one);
|
||||
}
|
||||
|
||||
return aedRedisGeoLimit(result,resourceNum,name);
|
||||
}
|
||||
|
||||
private List<AedGeo> aedRedisGeoLimit(List<AedGeo> aedGeos, Integer resourceNum, String name) {
|
||||
if (CollectionUtil.isEmpty(aedGeos)) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
// 资源名筛选
|
||||
if (StrUtil.isNotBlank(name)) {
|
||||
aedGeos = aedGeos.stream().filter(f -> f.getName().contains(name)).collect(Collectors.toList());
|
||||
if (CollectionUtil.isEmpty(aedGeos)) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
}
|
||||
|
||||
// 排序
|
||||
aedGeos = aedGeos.stream()
|
||||
.sorted((o1, o2) -> (int) (o1.getDistance() - o2.getDistance()))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
|
||||
// 数量截取
|
||||
if (ObjectUtil.isNotNull(resourceNum)) {
|
||||
return aedGeos.stream().limit(resourceNum).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
// 返回
|
||||
return aedGeos;
|
||||
}
|
||||
|
||||
public void addGeo(Aed resource) {
|
||||
if (resource.getLatitude() == null || resource.getLongitude() == null) {
|
||||
return;
|
||||
}
|
||||
Point point = new Point(resource.getLongitude().doubleValue(), resource.getLatitude().doubleValue());
|
||||
redisTemplate.opsForGeo().add(EmergencyConstants.AED_REDIS_KEY, point, resource.getId());
|
||||
}
|
||||
|
||||
public void removeGeo(Integer id) {
|
||||
if (ObjectUtil.isNull(id)) {
|
||||
return;
|
||||
}
|
||||
redisTemplate.opsForGeo().remove(EmergencyConstants.AED_REDIS_KEY, id);
|
||||
}
|
||||
|
||||
public void updateGeo(Aed resource) {
|
||||
if (resource == null || ObjectUtil.isNull(resource.getId())) {
|
||||
return;
|
||||
}
|
||||
removeGeo(resource.getId());
|
||||
addGeo(resource);
|
||||
}
|
||||
|
||||
}
|
||||
+76
@@ -0,0 +1,76 @@
|
||||
package com.renkang.emergency.manager;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.renkang.emergency.constant.EmergencyConstants;
|
||||
import com.renkang.emergency.entity.Resource;
|
||||
import com.renkang.emergency.mapper.ResourceMapper;
|
||||
import org.jeecg.common.system.vo.DictModel;
|
||||
import org.jeecg.global.GlobalUtils;
|
||||
import org.jeecg.modules.manager.ISysCache;
|
||||
import org.jeecg.modules.system.entity.SysDepart;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.cache.annotation.CacheEvict;
|
||||
import org.springframework.cache.annotation.Cacheable;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author Junqiang Zhu
|
||||
* @date 2023-04-25 15:04
|
||||
*/
|
||||
|
||||
@Component("emergencyCacheManager")
|
||||
public class EmergencyCacheManager {
|
||||
@Autowired
|
||||
private EmergencyCloudManager emergencyCloudManager;
|
||||
@Autowired
|
||||
private ResourceMapper resourceMapper;
|
||||
@Autowired
|
||||
private ISysCache sysCache;
|
||||
|
||||
public SysDepart getUserSecondDepart(String orgCode) {
|
||||
if (StrUtil.isBlank(orgCode)) {
|
||||
return new SysDepart();
|
||||
}
|
||||
SysDepart depart = sysCache.getDepartByOrgCode(GlobalUtils.getSecondDepartOrgCode(orgCode));
|
||||
return ObjectUtil.isNull(depart) ? new SysDepart() : depart;
|
||||
}
|
||||
|
||||
public SysDepart getUserDepart(String orgCode) {
|
||||
if (StrUtil.isBlank(orgCode)) {
|
||||
return new SysDepart();
|
||||
}
|
||||
SysDepart depart = sysCache.getDepartByOrgCode(orgCode);
|
||||
return ObjectUtil.isNull(depart) ? new SysDepart() : depart;
|
||||
}
|
||||
|
||||
@Cacheable(cacheNames = EmergencyConstants.RESOURCE_REDIS_KEY, key = "#id", unless = "#result == null")
|
||||
public com.renkang.emergency.entity.Resource getById(String id) {
|
||||
Resource resource = resourceMapper.selectById(id);
|
||||
if (ObjectUtil.isNull(resource)) {
|
||||
return resource;
|
||||
}
|
||||
List<DictModel> hospitalLevel = emergencyCloudManager.getDictItems("hospital_level");
|
||||
Map<String, String> map = GlobalUtils.dictToMap(hospitalLevel);
|
||||
resource.setLevel(map.get(resource.getLevel()));
|
||||
|
||||
return resource;
|
||||
}
|
||||
|
||||
// @Cacheable(cacheNames = "aid:resourcePage", key = "#id", unless = "#result == null")
|
||||
// public Resource getPageById(Long id) {
|
||||
// return resourceMapper.selectHealthMedicalResourcePageById(id);
|
||||
// }
|
||||
|
||||
@CacheEvict(cacheNames = EmergencyConstants.RESOURCE_REDIS_KEY, key = "#id")
|
||||
public void deleteCache(String id) {
|
||||
}
|
||||
|
||||
@CacheEvict(cacheNames = EmergencyConstants.RESOURCE_REDIS_KEY, allEntries = true)
|
||||
public void deleteAllCaches() {
|
||||
|
||||
}
|
||||
}
|
||||
+77
@@ -0,0 +1,77 @@
|
||||
package com.renkang.emergency.manager;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.jeecg.bean.request.ListUser;
|
||||
import org.jeecg.common.constant.CacheConstant;
|
||||
import org.jeecg.common.system.api.ISysBaseAPI;
|
||||
import org.jeecg.common.system.vo.DictModel;
|
||||
import org.jeecg.common.system.vo.LoginUserNew;
|
||||
import org.jeecg.modules.system.entity.SysUser;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.cache.annotation.Cacheable;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author Junqiang Zhu
|
||||
* @date 2023-04-26 13:25
|
||||
*/
|
||||
@Component
|
||||
public class EmergencyCloudManager {
|
||||
|
||||
private final Logger logger = LoggerFactory.getLogger(EmergencyCloudManager.class);
|
||||
@Autowired
|
||||
private ISysBaseAPI sysBaseAPI;
|
||||
|
||||
@Cacheable(value = CacheConstant.SYS_DICT_CACHE, key = "#code", unless = "#result == null || #result.size() == 0")
|
||||
public List<DictModel> getDictItems(String code) {
|
||||
return sysBaseAPI.getDictItems(code);
|
||||
}
|
||||
|
||||
public Map<String, LoginUserNew> listUser(List<String> userIds) {
|
||||
ListUser listUser = new ListUser();
|
||||
listUser.setUserIds(userIds);
|
||||
|
||||
Map<String, LoginUserNew> map = new HashMap<>();
|
||||
|
||||
List<LoginUserNew> list = null;
|
||||
try {
|
||||
// TODO 微服务调用会发送post请求 暂时将 listUserByIds修改为post
|
||||
list = sysBaseAPI.listUserByIds(listUser);
|
||||
} catch (Exception e) {
|
||||
logger.error("微服务调用失败(system listUserByIds)");
|
||||
}
|
||||
if (CollectionUtils.isEmpty(list)) {
|
||||
return map;
|
||||
}
|
||||
list.forEach(loginUserNew -> map.put(loginUserNew.getId(), loginUserNew));
|
||||
|
||||
return map;
|
||||
}
|
||||
|
||||
public boolean checkExistUser(String username) {
|
||||
List<String> strings = sysBaseAPI.checkExistUser(null, username, null, null);
|
||||
return CollUtil.isNotEmpty(strings);
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户分页数据
|
||||
*
|
||||
* @param filter 条件
|
||||
* @param pageNo 页码
|
||||
* @param pageSize 条数
|
||||
* @return page
|
||||
*/
|
||||
public Page<SysUser> pageUser(SysUser filter, int pageNo, int pageSize, List<String> managerCodes) {
|
||||
return sysBaseAPI.pageUser(filter, pageNo, pageSize, managerCodes);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+145
@@ -0,0 +1,145 @@
|
||||
package com.renkang.emergency.manager;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.renkang.emergency.entity.EmergencyCenter;
|
||||
import com.renkang.emergency.entity.EmergencyCenterAdmin;
|
||||
import com.renkang.emergency.entity.EmergencyProfessionUser;
|
||||
import com.renkang.emergency.mapper.EmergencyCenterAdminMapper;
|
||||
import com.renkang.emergency.mapper.EmergencyCenterMapper;
|
||||
import com.renkang.emergency.mapper.EmergencyProfessionUserMapper;
|
||||
import org.jeecg.global.GlobalUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author Junqiang Zhu
|
||||
* @since 2024-09-19 13:08
|
||||
*/
|
||||
@Component
|
||||
public class PermissionManager {
|
||||
|
||||
@Autowired
|
||||
private EmergencyCenterAdminMapper emergencyCenterAdminMapper;
|
||||
@Autowired
|
||||
private EmergencyCenterMapper emergencyCenterMapper;
|
||||
@Autowired
|
||||
private EmergencyProfessionUserMapper emergencyProfessionUserMapper;
|
||||
|
||||
public String ifCenterAdminReturnCenterId() {
|
||||
String userId = GlobalUtils.getLoginUser().getId();
|
||||
LambdaQueryWrapper<EmergencyCenterAdmin> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(EmergencyCenterAdmin::getUserId, userId);
|
||||
List<EmergencyCenterAdmin> admins = emergencyCenterAdminMapper.selectList(queryWrapper);
|
||||
if (CollUtil.isEmpty(admins)) {
|
||||
return null;
|
||||
}
|
||||
String centerId = admins.get(0).getCenterId();
|
||||
if (StrUtil.isBlank(centerId)) {
|
||||
return "";
|
||||
}
|
||||
return centerId;
|
||||
}
|
||||
|
||||
/**
|
||||
* 如果是操作或者专业人员返回中心id
|
||||
*
|
||||
* @return id
|
||||
*/
|
||||
public String ifOpOrMajReturnCenterId() {
|
||||
String userId = GlobalUtils.getLoginUser().getId();
|
||||
LambdaQueryWrapper<EmergencyCenterAdmin> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(EmergencyCenterAdmin::getUserId, userId);
|
||||
EmergencyProfessionUser user = emergencyProfessionUserMapper.selectById(userId);
|
||||
if (user == null) {
|
||||
return null;
|
||||
}
|
||||
return user.getCenterId();
|
||||
}
|
||||
|
||||
public LambdaQueryWrapper<EmergencyCenter> getManagerCenterQueryWrapper(String orgCode) {
|
||||
String centerId = ifCenterAdminReturnCenterId();
|
||||
String opCenterId = ifOpOrMajReturnCenterId();
|
||||
List<String> managedCodes = GlobalUtils.getManagedCodes(orgCode);
|
||||
LambdaQueryWrapper<EmergencyCenter> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.orderByDesc(EmergencyCenter::getCreateTime);
|
||||
|
||||
ArrayList<String> centerIds = new ArrayList<>();
|
||||
if (StrUtil.isNotBlank(centerId)) {
|
||||
centerIds.add(centerId);
|
||||
}
|
||||
if (StrUtil.isNotBlank(opCenterId)) {
|
||||
centerIds.add(opCenterId);
|
||||
}
|
||||
if (CollUtil.isNotEmpty(centerIds)) {
|
||||
queryWrapper.in(EmergencyCenter::getId, centerIds.stream().distinct().collect(Collectors.toList()));
|
||||
}
|
||||
|
||||
// 权限过滤
|
||||
if (CollUtil.isNotEmpty(managedCodes)) {
|
||||
if (!managedCodes.contains("A99")) {
|
||||
queryWrapper.or(andWrapper -> {
|
||||
for (int i = 0; i < managedCodes.size(); i++) {
|
||||
if (i != 0) {
|
||||
andWrapper.or();
|
||||
}
|
||||
andWrapper.likeRight(EmergencyCenter::getOrgCode, managedCodes.get(i));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
public List<String> loginUserCenterIds(String centerId) {
|
||||
LambdaQueryWrapper<EmergencyCenter> managerCenterQueryWrapper = getManagerCenterQueryWrapper(null);
|
||||
managerCenterQueryWrapper.select(EmergencyCenter::getId);
|
||||
List<EmergencyCenter> emergencyCenters = emergencyCenterMapper.selectList(managerCenterQueryWrapper);
|
||||
if (CollUtil.isEmpty(emergencyCenters)) {
|
||||
return Collections.singletonList("999");
|
||||
}
|
||||
|
||||
if (StrUtil.isBlank(centerId)) {
|
||||
return emergencyCenters.stream().map(EmergencyCenter::getId).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
List<String> centerIds = emergencyCenters.stream()
|
||||
.map(EmergencyCenter::getId)
|
||||
.filter(f -> f.equals(centerId))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
if (CollUtil.isEmpty(centerIds)) {
|
||||
return Collections.singletonList("999");
|
||||
}
|
||||
|
||||
return centerIds;
|
||||
}
|
||||
|
||||
private List<String> loginUserManagerDepartCenter() {
|
||||
List<String> managedCodes = GlobalUtils.getManagedCodes(null);
|
||||
if (CollUtil.isEmpty(managedCodes)) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
LambdaQueryWrapper<EmergencyCenter> queryWrapper = new LambdaQueryWrapper<>();
|
||||
// 权限过滤
|
||||
if (CollUtil.isNotEmpty(managedCodes)) {
|
||||
queryWrapper.and(andWrapper -> {
|
||||
for (int i = 0; i < managedCodes.size(); i++) {
|
||||
if (i != 0) {
|
||||
andWrapper.or();
|
||||
}
|
||||
andWrapper.likeRight(EmergencyCenter::getOrgCode, managedCodes.get(i));
|
||||
}
|
||||
});
|
||||
}
|
||||
List<EmergencyCenter> emergencyCenters = emergencyCenterMapper.selectList(queryWrapper);
|
||||
return emergencyCenters.stream().map(EmergencyCenter::getId).collect(Collectors.toList());
|
||||
}
|
||||
}
|
||||
+172
@@ -0,0 +1,172 @@
|
||||
package com.renkang.emergency.manager;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.renkang.emergency.bean.common.ResourceExt;
|
||||
import com.renkang.emergency.constant.EmergencyConstants;
|
||||
import com.renkang.emergency.entity.Resource;
|
||||
import com.renkang.emergency.mapper.ResourceMapper;
|
||||
import com.renkang.emergency.util.ResourceUtils;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.jeecg.common.constant.CommonConstant;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.geo.*;
|
||||
import org.springframework.data.redis.connection.RedisGeoCommands;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author Jiang Shunzhi
|
||||
* @date 2022/12/8
|
||||
*/
|
||||
@Component
|
||||
public class ResourceManager {
|
||||
|
||||
@Autowired
|
||||
private EmergencyCacheManager emergencyCacheManager;
|
||||
@Autowired
|
||||
private ResourceMapper resourceMapper;
|
||||
@javax.annotation.Resource
|
||||
private RedisTemplate<Object, Object> redisTemplate;
|
||||
|
||||
private static ResourceExt convert(Resource resource) {
|
||||
if (Objects.isNull(resource)) {
|
||||
return null;
|
||||
}
|
||||
ResourceExt resourceExt = new ResourceExt();
|
||||
BeanUtil.copyProperties(resource, resourceExt);
|
||||
return resourceExt;
|
||||
}
|
||||
|
||||
@PostConstruct
|
||||
public void init() {
|
||||
LambdaQueryWrapper<Resource> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(Resource::getStatus, CommonConstant.STATUS_1)
|
||||
.eq(Resource::getDelFlag, CommonConstant.DEL_FLAG_0);
|
||||
List<Resource> resources = resourceMapper.selectList(queryWrapper);
|
||||
|
||||
// 过滤数据
|
||||
resources = resources.stream().filter(this::filter).collect(Collectors.toList());
|
||||
|
||||
// 缓存所有
|
||||
resources.forEach(this::putGeoAll);
|
||||
// 按照类型缓存
|
||||
resources.forEach(this::putGeo);
|
||||
}
|
||||
|
||||
private boolean filter(Resource resource) {
|
||||
if (resource == null || resource.getLatitude() == null || resource.getLongitude() == null) {
|
||||
return false;
|
||||
}
|
||||
if (resource.getLatitude().compareTo(BigDecimal.ZERO) == 0 || resource.getLongitude().compareTo(BigDecimal.ZERO) == 0) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public void addOne(Resource resource) {
|
||||
Point point = new Point(resource.getLongitude().doubleValue(), resource.getLatitude().doubleValue());
|
||||
redisTemplate.opsForGeo()
|
||||
.add(ResourceUtils.getTypeString(resource.getType()), point, resource.getId());
|
||||
putGeoAll(resource);
|
||||
}
|
||||
|
||||
public void delOne(Resource resource) {
|
||||
String key = ResourceUtils.getTypeString(resource.getType());
|
||||
redisTemplate.opsForGeo().remove(key, resource.getId());
|
||||
redisTemplate.opsForGeo().remove(ResourceUtils.getTypeString(EmergencyConstants.RESOURCE_ALL), resource.getId());
|
||||
// 删除缓存
|
||||
emergencyCacheManager.deleteCache(resource.getId());
|
||||
}
|
||||
|
||||
public void delBatch(List<Resource> list) {
|
||||
if (CollectionUtils.isEmpty(list)) {
|
||||
return;
|
||||
}
|
||||
for (Resource resource : list) {
|
||||
delOne(resource);
|
||||
}
|
||||
}
|
||||
|
||||
public void editOne(Resource resource) {
|
||||
if (StrUtil.isBlank(resource.getId())) {
|
||||
return;
|
||||
}
|
||||
// 先删除
|
||||
redisTemplate.opsForGeo().remove(ResourceUtils.getTypeString(resource.getType()), resource.getId());
|
||||
redisTemplate.opsForGeo().remove(ResourceUtils.getTypeString(EmergencyConstants.RESOURCE_ALL), resource.getId());
|
||||
// 再添加
|
||||
addOne(resource);
|
||||
// 删除旧缓存
|
||||
emergencyCacheManager.deleteCache(resource.getId());
|
||||
}
|
||||
|
||||
public void putGeo(Resource resource) {
|
||||
Point point = new Point(resource.getLongitude().doubleValue(), resource.getLatitude().doubleValue());
|
||||
redisTemplate.opsForGeo()
|
||||
.add(ResourceUtils.getTypeString(resource.getType()), point, resource.getId());
|
||||
}
|
||||
|
||||
public void putGeoAll(Resource resource) {
|
||||
Point point = new Point(resource.getLongitude().doubleValue(), resource.getLatitude().doubleValue());
|
||||
redisTemplate.opsForGeo()
|
||||
.add(ResourceUtils.getTypeString(EmergencyConstants.RESOURCE_ALL), point, resource.getId());
|
||||
}
|
||||
|
||||
public void removeGeo(Resource resource) {
|
||||
redisTemplate.opsForGeo()
|
||||
.remove(ResourceUtils.getTypeString(resource.getType()), resource.getId());
|
||||
}
|
||||
|
||||
|
||||
// public List<HealthMedicalResourcePage> getByIds(List<Long> ids) {
|
||||
// return ids.stream()
|
||||
// .map(self::getPageById)
|
||||
// .collect(Collectors.toList());
|
||||
// }
|
||||
|
||||
public List<ResourceExt> geoSearch(Point point, double distance, String type) {
|
||||
String key = ResourceUtils.getTypeString(type);
|
||||
Distance dist = new Distance(distance, Metrics.KILOMETERS);
|
||||
Circle circle = new Circle(point, dist);
|
||||
// 查询在距离内的点
|
||||
GeoResults<RedisGeoCommands.GeoLocation<Object>> members = redisTemplate.opsForGeo()
|
||||
.radius(key, circle);
|
||||
|
||||
List<ResourceExt> resources = new ArrayList<>();
|
||||
|
||||
if (ObjectUtils.isNotEmpty(members)) {
|
||||
for (GeoResult<RedisGeoCommands.GeoLocation<Object>> member : members) {
|
||||
String id = (String) member.getContent().getName();
|
||||
|
||||
LambdaQueryWrapper<Resource> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
lambdaQueryWrapper.eq(Resource::getId,id);
|
||||
lambdaQueryWrapper.ne(Resource::getType,"3");
|
||||
Resource resource = resourceMapper.selectOne(lambdaQueryWrapper);
|
||||
if(resource == null){
|
||||
continue;
|
||||
}
|
||||
ResourceExt resourceExt = convert(resource);
|
||||
// 查询的对象不为空
|
||||
if (ObjectUtils.isNotEmpty(resourceExt)) {
|
||||
Point geoPoint = new Point(resourceExt.getLongitude().doubleValue(), resourceExt.getLatitude().doubleValue());
|
||||
resourceExt.setDistance(ResourceUtils.geoDistance(point, geoPoint));
|
||||
resources.add(resourceExt);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return resources;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+75
@@ -0,0 +1,75 @@
|
||||
package com.renkang.emergency.manager;
|
||||
|
||||
import org.jeecg.common.api.dto.YcMedicalCenterFakerData;
|
||||
import org.jeecg.common.api.dto.YcUserHealthFakerData;
|
||||
import org.jeecg.common.constant.FakerDataConstant;
|
||||
import org.jeecg.common.util.RedisUtil;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Junqiang Zhu
|
||||
* @since 2024-05-15 09:56
|
||||
*/
|
||||
@Component
|
||||
public class YcInitManager {
|
||||
|
||||
@Autowired
|
||||
private RedisUtil redisUtil;
|
||||
|
||||
@PostConstruct
|
||||
public void init() {
|
||||
// 一线医疗点数据
|
||||
medicalCenterData();
|
||||
// 员工健康数据
|
||||
userHealthData();
|
||||
}
|
||||
|
||||
private void userHealthData() {
|
||||
Object o = redisUtil.get(FakerDataConstant.YC_USER_HEALTH);
|
||||
if (o != null) {
|
||||
return;
|
||||
}
|
||||
YcUserHealthFakerData data = new YcUserHealthFakerData();
|
||||
data.setBigIll(82);
|
||||
data.setHighRisk(786);
|
||||
data.setSlowIll(832);
|
||||
data.setFocusErr(2625);
|
||||
data.setHealth(1778);
|
||||
redisUtil.set(FakerDataConstant.YC_USER_HEALTH, data);
|
||||
}
|
||||
|
||||
private void medicalCenterData() {
|
||||
Object data = redisUtil.get(FakerDataConstant.YC_MEDICAL_CENTER);
|
||||
if (data != null) {
|
||||
return;
|
||||
}
|
||||
// 数据来源与旧大屏假数据
|
||||
List<YcMedicalCenterFakerData> list = new ArrayList<>();
|
||||
list.add(get("顺宁健康服务中心", 6, 28, 16, 1));
|
||||
list.add(get("大水坑健康服务中心", 3, 7, 11, 2));
|
||||
list.add(get("盘古梁医务室", 8, 4, 24, 3));
|
||||
list.add(get("郝坨梁医务室", 6, 12, 12, 4));
|
||||
list.add(get("五里湾二区医务室", 2, 9, 21, 5));
|
||||
list.add(get("桐寨医务室", 4, 12, 17, 6));
|
||||
list.add(get("新寨医务室", 3, 8, 15, 7));
|
||||
list.add(get("油房庄医务室", 4, 18, 14, 8));
|
||||
|
||||
redisUtil.set(FakerDataConstant.YC_MEDICAL_CENTER, list);
|
||||
}
|
||||
|
||||
private YcMedicalCenterFakerData get(String name, int high, int slow, int tour, int order) {
|
||||
YcMedicalCenterFakerData data = new YcMedicalCenterFakerData();
|
||||
data.setName(name);
|
||||
data.setHigh(high);
|
||||
data.setSlow(slow);
|
||||
data.setTour(tour);
|
||||
data.setOrder(order);
|
||||
return data;
|
||||
}
|
||||
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
package com.renkang.emergency.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.renkang.emergency.entity.AedLatest;
|
||||
|
||||
/**
|
||||
* @Description: aed_latest
|
||||
* @Author: jeecg-boot
|
||||
* @Date: 2023-12-12
|
||||
* @Version: V1.0
|
||||
*/
|
||||
public interface AedLatestMapper extends BaseMapper<AedLatest> {
|
||||
|
||||
}
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
package com.renkang.emergency.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.renkang.emergency.entity.Aed;
|
||||
|
||||
/**
|
||||
* @author stan
|
||||
* @date 2023-11-30
|
||||
*/
|
||||
public interface AedMapper extends BaseMapper<Aed> {
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user