From 6a80d0d2b393e36034c8ffef92fcaf06a1f0c552 Mon Sep 17 00:00:00 2001 From: k94314517 <8417338+k94314517@user.noreply.gitee.com> Date: 星期五, 16 八月 2024 09:23:03 +0800 Subject: [PATCH] 代码初始化 --- server/system_service/src/main/java/com/doumee/core/utils/Constants.java | 20 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformJob.java | 13 server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/JobDetailDTO.java | 30 + server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformJobService.java | 21 + server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/SignInDTO.java | 39 ++ server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformBooksService.java | 36 ++ server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java | 1 server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/PlatformBooksApplyDTO.java | 64 ++++ server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/RevokeDTO.java | 24 + server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java | 12 server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/PlatformBooksCheckNumDTO.java | 29 + server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/DriverPlatformController.java | 118 +++++++ server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java | 30 + server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java | 154 +++++++++ server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformBooksServiceImpl.java | 207 ++++++++++++ server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformBooks.java | 64 +++ server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java | 2 server/system_service/src/main/java/com/doumee/core/utils/PositionUtil.java | 43 ++ server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/DriverHomeVO.java | 22 + 19 files changed, 916 insertions(+), 13 deletions(-) diff --git a/server/system_service/src/main/java/com/doumee/core/utils/Constants.java b/server/system_service/src/main/java/com/doumee/core/utils/Constants.java index 8646006..90cea78 100644 --- a/server/system_service/src/main/java/com/doumee/core/utils/Constants.java +++ b/server/system_service/src/main/java/com/doumee/core/utils/Constants.java @@ -38,6 +38,13 @@ public static final String HK_PUSH_URL = "HK_PUSH_URL"; public static final String HK_ROOTORG_CODE ="HK_ROOTORG_CODE" ; public static final String HK_ROOTORG_NAME ="HK_ROOTORG_NAME" ; + public static final String PLATFORM ="PLATFORM" ; + public static final String RESERVATION_TOTAL_NUM ="RESERVATION_TOTAL_NUM" ; + public static final String SIGN_IN_PLACE_LAT ="SIGN_IN_PLACE_LAT" ; + public static final String SIGN_IN_PLACE_LNT ="SIGN_IN_PLACE_LNT" ; + public static final String SIGN_IN_PLACE_DISTANCE ="SIGN_IN_PLACE_DISTANCE" ; + public static final String SIGN_IN_QRCODE ="SIGN_IN_QRCODE" ; + //琚嫓璁夸汉淇℃伅鏍¢獙鏂瑰紡锛�0鎵嬫満鍙峰崟鐙牎楠� 1鎵嬫満鍙峰拰濮撳悕缁勫悎鏍¢獙锛� public static final String BEVISITED_USER_VALID = "BEVISITED_USER_VALID"; @@ -173,6 +180,8 @@ int wxczh = 3; int sgscxh = 4; } + + public static Date getBirthdyByCardNo(String idCard){ if(idCard ==null || idCard.length()<14){ return null; @@ -715,15 +724,14 @@ * 0寰呯‘璁� 1寰呯鍒� 2绛夊緟鍙彿 3鍏ュ洯绛夊緟 4宸插彨鍙� 5浣滀笟涓� 6浣滀笟瀹屾垚 7杞Щ涓� 8寮傚父鎸傝捣 9宸叉巿鏉冪鍥� 10宸茬鍥� 11 宸茶繃鍙� */ public enum PlatformJobStatus { - WAIT_CONFIRM(0, "寰呯‘璁�","" ), - WART_SIGNIN(1, "寰呯鍒�","寰呯鍒�" ), - WAIT_CALL(2, "绛夊緟鍙彿","绛夊緟鍙彿"), - IN_WAIT(3, "鍏ュ洯绛夊緟","鍏ュ洯绛夊緟" ), + WAIT_CONFIRM(0, "寰呯‘璁�","寰呯‘璁�" ), + WART_SIGN_IN(1, "寰呯鍒�","寰呯鍒�" ), + WAIT_CALL(2, "宸茬鍒�","宸茬鍒�"), //绛夊緟鍙彿鍏ュ洯 + IN_WAIT(3, "鍏ュ洯绛夊緟","鍏ュ洯绛夊緟" ),//宸插叆鍥� 鏈彨鍙疯繘鍏ユ湀鍙� CALLED(4, "宸插彨鍙�","宸插彨鍙�" ), WORKING(5, "浣滀笟涓�","浣滀笟涓�" ), - //缁繚閫氱煡 DONE(6, "浣滀笟瀹屾垚 ","浣滀笟瀹屾垚 " ), - TRANSFERING(7, "杞Щ涓�","7杞Щ涓�" ), + TRANSFERING(7, "杞Щ涓�","杞Щ涓�" ), EXCEPTION(8, "寮傚父鎸傝捣","寮傚父鎸傝捣" ), AUTHED_LEAVE(9, "宸叉巿鏉冪鍥�","宸叉巿鏉冪鍥�" ), LEAVED(10, "宸茬鍥� ","宸茬鍥� " ), diff --git a/server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java b/server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java index 7f25314..11635cf 100644 --- a/server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java +++ b/server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java @@ -3194,6 +3194,18 @@ } + /** + * 鑾峰彇X澶╁悗鐨勬棩鏈� + * @param date + * @param beforDays 鏄庡ぉ -1 鏄ㄥぉ 1 + * @return + */ + public static String getBeforDay(Date date,Integer beforDays){ + ZonedDateTime zonedDateTime = date.toInstant().atZone(ZoneId.systemDefault()); + // 杞崲涓簀ava.time.LocalDate,璁$畻x澶╃殑鏃ユ湡 + LocalDate dateBeforeDay = zonedDateTime.toLocalDate().minusDays(beforDays); + return dateBeforeDay.toString(); + } } \ No newline at end of file diff --git a/server/system_service/src/main/java/com/doumee/core/utils/PositionUtil.java b/server/system_service/src/main/java/com/doumee/core/utils/PositionUtil.java new file mode 100644 index 0000000..8cf28fc --- /dev/null +++ b/server/system_service/src/main/java/com/doumee/core/utils/PositionUtil.java @@ -0,0 +1,43 @@ +package com.doumee.core.utils; + +/** + * Created by IntelliJ IDEA. + * + * @Author : Rk + * @create 2024/8/14 17:22 + */ +public class PositionUtil { + + /** + * 璧ら亾鍗婂緞锛堝崟浣嶏細绫筹級 + */ + private static final double EQUATOR_RADIUS = 6378137; + + /** + * 鏂规硶涓�锛氾紙鍙嶄綑寮﹁绠楁柟寮忥級 + * + * @param longitude1 绗竴涓偣鐨勭粡搴� + * @param latitude1 绗竴涓偣鐨勭含搴� + * @param longitude2 绗簩涓偣鐨勭粡搴� + * @param latitude2 绗簩涓偣鐨勭含搴� + * @return 杩斿洖璺濈锛屽崟浣峬 + */ + public static double getDistance(double longitude1, double latitude1, double longitude2, double latitude2) { + // 绾害 + double lat1 = Math.toRadians(latitude1); + double lat2 = Math.toRadians(latitude2); + // 缁忓害 + double lon1 = Math.toRadians(longitude1); + double lon2 = Math.toRadians(longitude2); + // 绾害涔嬪樊 + double a = lat1 - lat2; + // 缁忓害涔嬪樊 + double b = lon1 - lon2; + // 璁$畻涓ょ偣璺濈鐨勫叕寮� + double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(lat1) * Math.cos(lat2) * Math.pow(Math.sin(b / 2), 2))); + // 寮ч暱涔樿丹閬撳崐寰�, 杩斿洖鍗曚綅: 绫� + s = s * EQUATOR_RADIUS; + return s; + } + +} diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/DriverPlatformController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/DriverPlatformController.java new file mode 100644 index 0000000..9be7635 --- /dev/null +++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/DriverPlatformController.java @@ -0,0 +1,118 @@ +package com.doumee.cloud.web; + +import com.doumee.api.BaseController; +import com.doumee.config.annotation.LoginNoRequired; +import com.doumee.config.annotation.LoginRequired; +import com.doumee.core.annotation.trace.Trace; +import com.doumee.core.model.ApiResponse; +import com.doumee.core.model.PageData; +import com.doumee.core.model.PageWrap; +import com.doumee.core.utils.Constants; +import com.doumee.core.utils.DateUtil; +import com.doumee.dao.business.model.PlatformBooks; +import com.doumee.dao.business.model.PlatformJob; +import com.doumee.dao.business.model.Visits; +import com.doumee.dao.web.reqeust.*; +import com.doumee.dao.web.response.DriverHomeVO; +import com.doumee.dao.web.response.MemberVO; +import com.doumee.dao.web.response.VisitRecordVO; +import com.doumee.service.business.*; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * Created by IntelliJ IDEA. + * + * @Author : Rk + * @create 2023/12/28 14:31 + */ + +@Api(tags = "銆愬叕浼楀彿銆戠墿娴佽溅鍙告満涓氬姟") +@Trace(exclude = true) +@RestController +@RequestMapping(Constants.CLOUD_SERVICE_URL_INDEX+"/web/driverPlatform") +@Slf4j +@LoginNoRequired +public class DriverPlatformController extends BaseController { + + @Autowired + private VisitsService visitsService; + + @Autowired + private PlatformJobService platformJobService; + + @Autowired + private PlatformBooksService platformBooksService; + + @ApiOperation("鍙告満棣栭〉淇℃伅") + @GetMapping("/driverHome") + public ApiResponse<DriverHomeVO> driverHome (@RequestHeader(Constants.HEADER_USER_TOKEN) String token) { + DriverHomeVO driverHomeVO = platformJobService.getDriverHome(getLoginUser(token).getMemberId()); + return ApiResponse.success(driverHomeVO); + } + + + @ApiOperation("鏌ヨ鍙绾﹂噺") + @PostMapping("/checkSurplusNum") + public ApiResponse<BigDecimal> checkSurplusNum (@RequestBody PlatformBooksCheckNumDTO platformBooksCheckNumDTO , @RequestHeader(Constants.HEADER_USER_TOKEN) String token) { + return ApiResponse.success(platformBooksService.checkNum(platformBooksCheckNumDTO)); + } + + @ApiOperation("鐗╂祦杞﹂绾�") + @PostMapping("/checkSurplusNum") + public ApiResponse<Integer> checkSurplusNum (@RequestBody PlatformBooksApplyDTO platformBooksApplyDTO , @RequestHeader(Constants.HEADER_USER_TOKEN) String token) { + platformBooksApplyDTO.setUserId(getLoginUser(token).getMemberId()); + return ApiResponse.success(platformBooksService.apply(platformBooksApplyDTO)); + } + + @ApiOperation("鐗╂祦杞﹂绾﹁褰�") + @PostMapping("/page") + public ApiResponse<PageData<PlatformBooks>> findPage (@RequestBody PageWrap<PlatformBooks> pageWrap, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) { + pageWrap.getModel().setQueryDate(DateUtil.getBeforDay(new Date(),30)); + return ApiResponse.success(platformBooksService.findPage(pageWrap)); + } + + @ApiOperation("鐗╂祦杞﹂绾﹁鎯�") + @GetMapping("/getDetail") + public ApiResponse<PlatformBooks> getDetail (@RequestParam Integer id, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) { + PlatformBooks platformBooks = platformBooksService.getDetail(id,getLoginUser(token).getMemberId()); + return ApiResponse.success(platformBooks); + } + + @ApiOperation("鐗╂祦杞﹂绾︽挙閿�") + @PostMapping("/revoke") + public ApiResponse revoke (@RequestBody RevokeDTO revokeDTO, @RequestHeader(Constants.HEADER_USER_TOKEN) String token){ + platformBooksService.revoke(revokeDTO,getLoginUser(token)); + return ApiResponse.success("鎿嶄綔鎴愬姛"); + } + + + /******************************************************浠诲姟鎺ュ彛************************************************************************/ + + @ApiOperation("浠诲姟绛惧埌") + @PostMapping("/signIn") + public ApiResponse signIn (@RequestBody SignInDTO signInDTO, @RequestHeader(Constants.HEADER_USER_TOKEN) String token){ + signInDTO.setLoginUserInfo(getLoginUser(token)); + platformJobService.signIn(signInDTO); + return ApiResponse.success("鎿嶄綔鎴愬姛"); + } + + @ApiOperation("浠诲姟璇︽儏") + @PostMapping("/jobDetail") + public ApiResponse<PlatformJob> jobDetail (@RequestBody JobDetailDTO jobDetailDTO, @RequestHeader(Constants.HEADER_USER_TOKEN) String token){ + return ApiResponse.success(platformJobService.getDetail(jobDetailDTO)); + } + + + + + + +} diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformBooks.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformBooks.java index 482fbd7..cea4575 100644 --- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformBooks.java +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformBooks.java @@ -1,6 +1,9 @@ package com.doumee.dao.business.model; +import com.baomidou.mybatisplus.annotation.TableField; import com.doumee.core.annotation.excel.ExcelColumn; +import com.doumee.core.utils.Constants; +import com.doumee.dao.business.vo.ApproveDataVO; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.baomidou.mybatisplus.annotation.IdType; @@ -56,7 +59,7 @@ @ExcelColumn(name="澶囨敞") private String remark; - @ApiModelProperty(value = "鐘舵�� 0寰呭鎵� 1瀹℃壒涓� 2瀹℃壒閫氳繃 3瀹℃壒涓嶉�氳繃", example = "1") + @ApiModelProperty(value = "鐘舵�� 0寰呭鎵� 1瀹℃壒涓� 2瀹℃壒閫氳繃 3瀹℃壒涓嶉�氳繃 4宸插彇娑�", example = "1") @ExcelColumn(name="鐘舵�� 0寰呭鎵� 1瀹℃壒涓� 2瀹℃壒閫氳繃 3瀹℃壒涓嶉�氳繃") private Integer status; @@ -99,6 +102,63 @@ @ApiModelProperty(value = "鍙告満鎵嬫満鍙�") @ExcelColumn(name="鍙告満鎵嬫満鍙�") - private String drivierPhone; + private String driverPhone; + + @ApiModelProperty(value = "鍑嗚繍璇佺収鐗�") + @ExcelColumn(name="鍑嗚繍璇佺収鐗�") + private String transportImg; + + @ApiModelProperty(value = "鍏ュ洯鍘熷洜") + @ExcelColumn(name="鍏ュ洯鍘熷洜") + private String inReason; + + @ApiModelProperty(value = "鍏ュ洯鍘熷洜涓婚敭") + @ExcelColumn(name="鍏ュ洯鍘熷洜涓婚敭") + private Integer reasonId; + + @ApiModelProperty(value = "鍙栨秷鏃堕棿") + @ExcelColumn(name="鍙栨秷鏃堕棿") + private Date cancelTime; + + @ApiModelProperty(value = "鍙栨秷浜�") + @ExcelColumn(name="鍙栨秷浜�") + private Integer cancelUser; + + @ApiModelProperty(value = "鍙栨秷澶囨敞") + @ExcelColumn(name="鍙栨秷澶囨敞") + private String cancelInfo; + + @ApiModelProperty(value = "鐢熸垚浠诲姟涓婚敭 platform_job:id") + @ExcelColumn(name="鍏ュ洯鍘熷洜涓婚敭") + private Integer jobId; + + @ApiModelProperty(value = "鏌ヨ鏃ユ湡 鐢ㄦ埛寰俊绔煡璇�") + @TableField(exist = false) + private String queryDate; + + @ApiModelProperty(value = "瀹℃壒淇℃伅鏁版嵁") + @TableField(exist = false) + private ApproveDataVO approveDateVO; + + public PlatformJob toPlatformJob(){ + PlatformJob platformJob = new PlatformJob(); + platformJob.setCreateDate(new Date()); + platformJob.setIsdeleted(Constants.ZERO); + platformJob.setStatus(Constants.ZERO); + platformJob.setDriverId(this.getDriverId()); + platformJob.setDriverName(this.getDriverName()); + platformJob.setDrivierPhone(this.getDriverPhone()); + platformJob.setCarCodeBack(this.getCarCodeBack()); + platformJob.setCarCodeFront(this.getCarCodeFront()); + platformJob.setContractNum(this.getContractNum()); + platformJob.setReason(this.getInReason()); + platformJob.setArriveDate(this.getArriveDate()); + platformJob.setInType(this.getInType()); + platformJob.setTotalNum(this.getTotalNum()); + return platformJob; + } + + + } diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformJob.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformJob.java index 3958bb0..e2cd5a2 100644 --- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformJob.java +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformJob.java @@ -1,5 +1,6 @@ package com.doumee.dao.business.model; +import com.baomidou.mybatisplus.annotation.TableField; import com.doumee.core.annotation.excel.ExcelColumn; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -263,4 +264,16 @@ @ExcelColumn(name="鎬昏繍杈撻噺") private BigDecimal totalNum; + @ApiModelProperty(value = "鍓嶆柟鎺掗槦鏁伴噺", example = "1") + @TableField(exist = false) + private Long lineUpNum; + + @ApiModelProperty(value = "浣滀笟鏈堝彴鍚嶇О") + @TableField(exist = false) + private String platformName ; + + @ApiModelProperty(value = "璺濈绛惧埌鐐硅窛绂�") + @TableField(exist = false) + private BigDecimal getDistance; + } diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/JobDetailDTO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/JobDetailDTO.java new file mode 100644 index 0000000..d34974c --- /dev/null +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/JobDetailDTO.java @@ -0,0 +1,30 @@ +package com.doumee.dao.web.reqeust; + +import com.doumee.core.model.LoginUserInfo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Created by IntelliJ IDEA. + * + * @Author : Rk + * @create 2023/12/7 11:19 + */ +@Data +@Api(tags = "浠诲姟璇︽儏璇锋眰绫�" ) +public class JobDetailDTO { + + @ApiModelProperty(value = "浠诲姟涓婚敭") + private Integer jobId; + + @ApiModelProperty(value = "绾害") + private Double lat; + + @ApiModelProperty(value = "缁忓害") + private Double lnt; + + @ApiModelProperty(value = "鐢ㄦ埛", hidden = true) + private LoginUserInfo loginUserInfo; + +} diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/PlatformBooksApplyDTO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/PlatformBooksApplyDTO.java new file mode 100644 index 0000000..6273b5f --- /dev/null +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/PlatformBooksApplyDTO.java @@ -0,0 +1,64 @@ +package com.doumee.dao.web.reqeust; + +import com.doumee.core.annotation.excel.ExcelColumn; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * Created by IntelliJ IDEA. + * + * @Author : Rk + * @create 2023/12/7 11:19 + */ +@Data +@Api(tags = "鍏ュ洯棰勭害鐢宠淇℃伅" ) +public class PlatformBooksApplyDTO { + + @ApiModelProperty(value = "鍚堝悓鍙�") + private String contractNum; + + @ApiModelProperty(value = "棰勮鍒板満鏃堕棿") + private Date arriveDate; + + @ApiModelProperty(value = "鍏ュ簱绫诲瀷 0鏁存墭鐩� 1浠剁儫", example = "1") + private Integer inType; + + @ApiModelProperty(value = "鎬昏繍杈撻噺", example = "1") + private BigDecimal totalNum; + + @ApiModelProperty(value = "鍓嶈溅鐗屽彿") + private String carCodeFront; + + @ApiModelProperty(value = "鍚庤溅鐗屽彿") + private String carCodeBack; + + @ApiModelProperty(value = "鍙告満缂栫爜", example = "1") + private Integer driverId; + + @ApiModelProperty(value = "鍙告満濮撳悕") + private String driverName; + + @ApiModelProperty(value = "杞︾墝鍙�") + private String plateNum; + + @ApiModelProperty(value = "鍙告満鎵嬫満鍙�") + private String driverPhone; + + @ApiModelProperty(value = "鍑嗚繍璇佺収鐗�") + private String transportImg; + + @ApiModelProperty(value = "鍏ュ洯鍘熷洜") + private String inReason; + + @ApiModelProperty(value = "鍏ュ洯鍘熷洜涓婚敭") + private Integer reasonId; + + @ApiModelProperty(value = "鐢ㄦ埛涓婚敭", hidden = true) + private Integer userId; + +} diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/PlatformBooksCheckNumDTO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/PlatformBooksCheckNumDTO.java new file mode 100644 index 0000000..5d9f0ea --- /dev/null +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/PlatformBooksCheckNumDTO.java @@ -0,0 +1,29 @@ +package com.doumee.dao.web.reqeust; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * Created by IntelliJ IDEA. + * + * @Author : Rk + * @create 2023/12/7 11:19 + */ +@Data +@Api(tags = "鍏ュ洯棰勭害鐢宠淇℃伅楠岃瘉鍙敤鏁伴噺" ) +public class PlatformBooksCheckNumDTO { + + @ApiModelProperty(value = "棰勮鍒板満鏃堕棿") + private Date arriveDate; + + @ApiModelProperty(value = "鍏ュ洯鍘熷洜涓婚敭") + private Integer reasonId; + + @ApiModelProperty(value = "鎬昏繍杈撻噺", example = "1") + private BigDecimal totalNum; + +} diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/RevokeDTO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/RevokeDTO.java new file mode 100644 index 0000000..24920eb --- /dev/null +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/RevokeDTO.java @@ -0,0 +1,24 @@ +package com.doumee.dao.web.reqeust; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * Created by IntelliJ IDEA. + * + * @Author : Rk + * @create 2024/8/15 10:49 + */ +@Data +public class RevokeDTO { + + @ApiModelProperty(value = "璁板綍涓婚敭") + private Integer id; + + @ApiModelProperty(value = "鎻忚堪") + private String info; + + +} diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/SignInDTO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/SignInDTO.java new file mode 100644 index 0000000..3ce2b1c --- /dev/null +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/SignInDTO.java @@ -0,0 +1,39 @@ +package com.doumee.dao.web.reqeust; + +import com.doumee.core.model.LoginUserInfo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * Created by IntelliJ IDEA. + * + * @Author : Rk + * @create 2023/12/7 11:19 + */ +@Data +@Api(tags = "鍏ュ洯绛惧埌" ) +public class SignInDTO { + + @ApiModelProperty(value = "浠诲姟涓婚敭") + private Integer jobId; + + @ApiModelProperty(value = "绛惧埌绫诲瀷锛� 0=app绛惧埌 1=鎵爜绛惧埌") + private Integer signType; + + @ApiModelProperty(value = "绛惧埌浜岀淮鐮佸��") + private String qrCodeKey; + + @ApiModelProperty(value = "绾害") + private Double lat; + + @ApiModelProperty(value = "缁忓害") + private Double lnt; + + @ApiModelProperty(value = "鐢ㄦ埛", hidden = true) + private LoginUserInfo loginUserInfo; + +} diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/DriverHomeVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/DriverHomeVO.java new file mode 100644 index 0000000..e677f12 --- /dev/null +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/DriverHomeVO.java @@ -0,0 +1,22 @@ +package com.doumee.dao.web.response; + +import com.doumee.dao.business.model.PlatformBooks; +import com.doumee.dao.business.model.PlatformJob; +import com.doumee.dao.system.model.Multifile; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("鍙告満棣栭〉") +public class DriverHomeVO { + + @ApiModelProperty(value = "杞挱鍥�") + private List<Multifile> multifileList; + + @ApiModelProperty(value = "鏈堝彴浠诲姟鍒楄〃") + private List<PlatformJob> platformJobList; + +} diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformBooksService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformBooksService.java index baaf67e..8931030 100644 --- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformBooksService.java +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformBooksService.java @@ -1,8 +1,14 @@ package com.doumee.service.business; +import com.doumee.core.model.LoginUserInfo; import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; import com.doumee.dao.business.model.PlatformBooks; +import com.doumee.dao.web.reqeust.PlatformBooksApplyDTO; +import com.doumee.dao.web.reqeust.PlatformBooksCheckNumDTO; +import com.doumee.dao.web.reqeust.RevokeDTO; + +import java.math.BigDecimal; import java.util.List; /** @@ -94,4 +100,34 @@ * @return long */ long count(PlatformBooks platformBooks); + + /** + * 鏌ヨ褰撴棩鍙绾︽暟閲� + * @param platformBooksCheckNumDTO + * @return + */ + BigDecimal checkNum(PlatformBooksCheckNumDTO platformBooksCheckNumDTO); + + /** + * 鐗╂祦杞﹂绾� + * @param platformBooksApplyDTO + */ + Integer apply(PlatformBooksApplyDTO platformBooksApplyDTO); + + + /** + * 棰勭害璇︽儏 + * @param id + * @return + */ + PlatformBooks getDetail(Integer id,Integer memberId); + + + /** + * 鍙栨秷鐗╂祦杞﹂绾� + * @param revokeDTO + * @param loginUserInfo + */ + void revoke(RevokeDTO revokeDTO, LoginUserInfo loginUserInfo); + } diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformJobService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformJobService.java index cef117e..8d88a16 100644 --- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformJobService.java +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformJobService.java @@ -3,6 +3,10 @@ import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; import com.doumee.dao.business.model.PlatformJob; +import com.doumee.dao.web.reqeust.JobDetailDTO; +import com.doumee.dao.web.reqeust.SignInDTO; +import com.doumee.dao.web.response.DriverHomeVO; + import java.util.List; /** @@ -94,4 +98,21 @@ * @return long */ long count(PlatformJob platformJob); + + DriverHomeVO getDriverHome(Integer memberId); + + /** + * 璺濈绛惧埌 + * @param signInDTO + */ + void signIn(SignInDTO signInDTO); + + /** + * 浠诲姟璇︽儏 + * @param jobDetailDTO + * @return + */ + PlatformJob getDetail(JobDetailDTO jobDetailDTO); + + } diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java index 1af24c0..4742664 100644 --- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java @@ -89,6 +89,12 @@ private CarUseBookJoinMapper carUseBookJoinMapper; @Autowired private NoticesJoinMapper noticesJoinMapper; + @Autowired + private PlatformBooksMapper platformBooksMapper; + @Autowired + private PlatformJobMapper platformJobMapper; + @Autowired + private PlatformLogMapper platformLogMapper; @@ -1340,7 +1346,29 @@ Constants.approveObjectType.unCityUseCar)){ this.updDriver(approveDTO,approve,true); }else if(approveDTO.getObjType().equals(Constants.approveObjectType.logisticsCarUse)){ - //TODO 鐗╂祦杞﹂绾� + //鐗╂祦杞﹂绾� + PlatformBooks platformBooks = platformBooksMapper.selectById(approveDTO.getObjId()); + if(Objects.isNull(platformBooks)){ + throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌鐗╂祦杞﹂绾﹁褰�"); + } + platformBooks.setStatus(approveDTO.getStatus()); + platformBooks.setEditDate(new Date()); + platformBooks.setEditor(approveDTO.getLoginUserInfo().getMemberId()); + + //鐢熸垚浠诲姟璁板綍 + PlatformJob platformJob = platformBooks.toPlatformJob(); + platformJobMapper.insert(platformJob); + platformBooks.setJobId(platformJob.getId()); + platformBooksMapper.updateById(platformBooks); + //鐢熸垚浠诲姟鎿嶄綔璁板綍 + PlatformLog platformLog = new PlatformLog(); + platformLog.setCreateDate(new Date()); + platformLog.setJobId(platformJob.getId()); + platformLog.setIsdeleted(Constants.ZERO); + platformLog.setObjType(Constants.ZERO); + platformLog.setObjId(platformJob.getId().toString()); + platformLog.setAfterContent(JSONObject.toJSONString(platformJob)); + platformLogMapper.insert(platformLog); }else{ throw new BusinessException(ResponseStatus.BAD_REQUEST); diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java index 398ac8f..23a6c33 100644 --- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java @@ -2004,6 +2004,7 @@ systemUser.setSalt(salt); systemUser.setPassword(member.getPassward()); systemUser.setStatus(Constants.ZERO); + systemUser.setSource(Constants.TWO); systemUserMapper.insert(systemUser); } diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformBooksServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformBooksServiceImpl.java index d1cc8d5..a155825 100644 --- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformBooksServiceImpl.java +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformBooksServiceImpl.java @@ -1,20 +1,44 @@ package com.doumee.service.business.impl; +import cn.emay.sdk.util.StringUtil; +import com.alibaba.nacos.shaded.org.checkerframework.checker.units.qual.A; +import com.doumee.biz.system.SystemDictDataBiz; +import com.doumee.core.constants.ResponseStatus; +import com.doumee.core.exception.BusinessException; +import com.doumee.core.model.LoginUserInfo; import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; +import com.doumee.core.utils.Constants; +import com.doumee.core.utils.DateUtil; import com.doumee.core.utils.Utils; +import com.doumee.dao.business.ApproveTemplMapper; +import com.doumee.dao.business.MemberMapper; import com.doumee.dao.business.PlatformBooksMapper; -import com.doumee.dao.business.model.PlatformBooks; +import com.doumee.dao.business.PlatformReasonMapper; +import com.doumee.dao.business.join.ApproveJoinMapper; +import com.doumee.dao.business.model.*; +import com.doumee.dao.business.vo.ApproveDataVO; +import com.doumee.dao.web.reqeust.PlatformBooksApplyDTO; +import com.doumee.dao.web.reqeust.PlatformBooksCheckNumDTO; +import com.doumee.dao.web.reqeust.RevokeDTO; +import com.doumee.service.business.ApproveService; import com.doumee.service.business.PlatformBooksService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.commons.lang3.StringUtils; +import org.apache.tomcat.util.bcel.Const; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; +import java.math.BigDecimal; +import java.util.Date; import java.util.List; +import java.util.Objects; /** * 鏈堝彴鍏ュ洯棰勭害淇℃伅琛⊿ervice瀹炵幇 @@ -27,8 +51,29 @@ @Autowired private PlatformBooksMapper platformBooksMapper; + @Autowired + private ApproveTemplMapper approveTemplMapper; + + @Autowired + private PlatformReasonMapper platformReasonMapper; + + @Autowired + private SystemDictDataBiz systemDictDataBiz; + + @Autowired + private ApproveService approveService; + + @Autowired + private MemberMapper memberMapper; + + @Autowired + private ApproveJoinMapper approveJoinMapper; + + @Override public Integer create(PlatformBooks platformBooks) { + + platformBooksMapper.insert(platformBooks); return platformBooks.getId(); } @@ -83,7 +128,7 @@ QueryWrapper<PlatformBooks> wrapper = new QueryWrapper<>(platformBooks); return platformBooksMapper.selectList(wrapper); } - + @Override public PageData<PlatformBooks> findPage(PageWrap<PlatformBooks> pageWrap) { IPage<PlatformBooks> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); @@ -111,7 +156,8 @@ .eq(pageWrap.getModel().getDriverId() != null, PlatformBooks::getDriverId, pageWrap.getModel().getDriverId()) .eq(pageWrap.getModel().getDriverName() != null, PlatformBooks::getDriverName, pageWrap.getModel().getDriverName()) .eq(pageWrap.getModel().getPlateNum() != null, PlatformBooks::getPlateNum, pageWrap.getModel().getPlateNum()) - .eq(pageWrap.getModel().getDrivierPhone() != null, PlatformBooks::getDrivierPhone, pageWrap.getModel().getDrivierPhone()) + .eq(pageWrap.getModel().getDriverPhone() != null, PlatformBooks::getDriverPhone, pageWrap.getModel().getDriverPhone()) + .ge(pageWrap.getModel().getQueryDate() != null, PlatformBooks::getCreateDate, pageWrap.getModel().getQueryDate()) ; for(PageWrap.SortData sortData: pageWrap.getSorts()) { if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) { @@ -128,4 +174,159 @@ QueryWrapper<PlatformBooks> wrapper = new QueryWrapper<>(platformBooks); return platformBooksMapper.selectCount(wrapper); } + + + @Override + public BigDecimal checkNum(PlatformBooksCheckNumDTO platformBooksCheckNumDTO){ + if(Objects.isNull(platformBooksCheckNumDTO) + || Objects.isNull(platformBooksCheckNumDTO.getTotalNum()) + || Objects.isNull(platformBooksCheckNumDTO.getReasonId()) + || Objects.isNull(platformBooksCheckNumDTO.getArriveDate())){ + return BigDecimal.ZERO; + } + //鏌ヨ姣忔棩閰嶇疆鐨勬�婚绾﹂噺 + PlatformReason platformReason = platformReasonMapper.selectById(platformBooksCheckNumDTO.getReasonId()); + if(Objects.isNull(platformReason)|| Constants.equalsInteger(platformReason.getIsdeleted(),Constants.ZERO)){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鍏ュ洯鍘熷洜淇℃伅寮傚父,璇峰埛鏂伴噸璇�"); + } + List<PlatformBooks> platformBooksList = platformBooksMapper.selectList(new QueryWrapper<PlatformBooks>().lambda() + .eq(PlatformBooks::getReasonId,platformBooksCheckNumDTO.getReasonId()) + .ne(PlatformBooks::getStatus,Constants.THREE) + .like(PlatformBooks::getCreateDate, DateUtil.getDate(platformBooksCheckNumDTO.getArriveDate(),"yyyy-MM-dd")) + ); + if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(platformBooksList)){ + BigDecimal countNum = platformBooksList.stream().map(m->m.getTotalNum()).reduce(BigDecimal.ZERO,BigDecimal::add); + if(countNum.compareTo(platformReason.getLimitNum())>=Constants.ZERO){ + return BigDecimal.ZERO; + } + return platformReason.getLimitNum().subtract(countNum); + } + return platformReason.getLimitNum(); + } + + + @Override + @Transactional(rollbackFor = {BusinessException.class,Exception.class}) + public Integer apply(PlatformBooksApplyDTO platformBooksApplyDTO){ + if(Objects.isNull(platformBooksApplyDTO) + || StringUtils.isBlank(platformBooksApplyDTO.getContractNum()) + || Objects.isNull(platformBooksApplyDTO.getArriveDate()) + || Objects.isNull(platformBooksApplyDTO.getInType()) + || Objects.isNull(platformBooksApplyDTO.getTotalNum()) + || StringUtils.isBlank(platformBooksApplyDTO.getCarCodeFront()) + || StringUtils.isBlank(platformBooksApplyDTO.getCarCodeBack()) + || Objects.isNull(platformBooksApplyDTO.getDriverId()) + || StringUtils.isBlank(platformBooksApplyDTO.getDriverPhone()) + || StringUtils.isBlank(platformBooksApplyDTO.getDriverName()) + || StringUtils.isBlank(platformBooksApplyDTO.getTransportImg()) + || Objects.isNull(platformBooksApplyDTO.getReasonId()) + || StringUtils.isBlank(platformBooksApplyDTO.getInReason()) + ){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); + } + PlatformReason platformReason = platformReasonMapper.selectById(platformBooksApplyDTO.getReasonId()); + if(Objects.isNull(platformReason)|| Constants.equalsInteger(platformReason.getIsdeleted(),Constants.ZERO)){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鍏ュ洯鍘熷洜淇℃伅寮傚父,璇峰埛鏂伴噸璇�"); + } + ApproveTempl approveTempl = approveTemplMapper.selectOne(new QueryWrapper<ApproveTempl>().lambda() + .eq(ApproveTempl::getIsdeleted,Constants.ZERO) + .eq(ApproveTempl::getObjId,platformReason.getId()) + .last(" limit 1") + ); + if(Objects.isNull(approveTempl)){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏈厤缃鎵规祦,璇疯仈绯荤鐞嗗憳"); + } + + if(Constants.equalsInteger(platformBooksApplyDTO.getUserId(),platformBooksApplyDTO.getDriverId())){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"浜哄憳淇℃伅鍖归厤閿欒"); + } + if(Objects.nonNull(platformReason.getLimitNum())&&platformReason.getLimitNum().compareTo(platformBooksApplyDTO.getTotalNum())>0){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瓒呭嚭鍏ュ洯鐢宠绾胯川閲�"); + } + PlatformBooks platformBooks = new PlatformBooks(); + BeanUtils.copyProperties(platformBooksApplyDTO,platformBooks); + platformBooks.setCreateDate(new Date()); + platformBooks.setIsdeleted(Constants.ZERO); + platformBooks.setStatus(Constants.ZERO); + platformBooks.setDriverId(platformBooksApplyDTO.getUserId()); + platformBooksMapper.insert(platformBooks); + + //鍒涘缓瀹℃壒娴佷俊鎭� + approveService.createApproveFlow(5,platformBooks.getId(),platformBooks.getDriverId()); + return platformBooks.getId(); + } + + + @Override + public PlatformBooks getDetail(Integer id,Integer memberId){ + PlatformBooks model = platformBooksMapper.selectById(id); + if(Objects.isNull(model)){ + throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌棰勭害璁板綍"); + } + ApproveDataVO approveDataVO = approveService.arrangeApprovedData(id, + 5, + memberId); + model.setApproveDateVO(approveDataVO); + List<Approve> approveList = approveDataVO.getApproveList(); + if(Constants.equalsInteger(model.getStatus(),Constants.FOUR)){ + String path = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode() + +systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode(); + Member member = memberMapper.selectById(model.getDriverId()); + + Approve approve = new Approve(); + approve.setApproveType(Constants.ZERO); + approve.setCreateDate(model.getCancelTime()); + approve.setTitle("鎾ら攢浜�"); + approve.setStatusInfo("宸叉挙閿�"); + approve.setStatus(Constants.FOUR); + approve.setType(Constants.ZERO); + if(member!=null) { + approve.setMemberName(member.getName()); + if (StringUtils.isNotBlank(member.getFaceImg())) { + approve.setFaceImg(path + member.getFaceImg()); + } + } + approve.setCheckInfo(model.getCancelInfo()); + approve.setCheckDate(model.getCancelTime()); + approveList.add(approve); + } + return model; + } + + + + @Override + public void revoke(RevokeDTO revokeDTO, LoginUserInfo loginUserInfo){ + if(Objects.isNull(revokeDTO) + || Objects.isNull(revokeDTO.getId()) + || StringUtils.isBlank(revokeDTO.getInfo()) + ){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); + } + PlatformBooks model = platformBooksMapper.selectById(revokeDTO.getId()); + if(Objects.isNull(model)){ + throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌棰勭害璁板綍"); + } + if(!(Constants.equalsInteger(model.getStatus(),Constants.ZERO)||Constants.equalsInteger(model.getStatus(),Constants.ONE))){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"涓氬姟鐘舵�佸凡娴佽浆,鏃犳硶杩涜璇ユ搷浣�"); + } + model.setCancelUser(loginUserInfo.getId()); + model.setCancelInfo(revokeDTO.getInfo()); + model.setCancelTime(new Date()); + model.setStatus(Constants.FOUR); + platformBooksMapper.updateById(model); + //澶勭悊瀹℃壒璁板綍 + approveJoinMapper.update(null,new UpdateWrapper<Approve>() + .lambda() + .set(Approve::getIsdeleted,Constants.ONE) + .set(Approve::getStatus,Constants.FOUR) + .set(Approve::getCheckInfo,"鐗╂祦杞﹂绾︾敵璇峰彇娑�") + .in(Approve::getStatus,Constants.ZERO,Constants.ONE) + .eq(Approve::getObjType,Constants.approveObjectType.logisticsCarUse) + .eq(Approve::getObjId,revokeDTO.getId()) + ); + } + + + } diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java index 38cfd43..84fb6c9 100644 --- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java @@ -1,20 +1,39 @@ package com.doumee.service.business.impl; +import cn.hutool.crypto.asymmetric.Sign; +import com.doumee.biz.system.SystemDictDataBiz; +import com.doumee.core.constants.ResponseStatus; +import com.doumee.core.exception.BusinessException; +import com.doumee.core.model.LoginUserInfo; import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; +import com.doumee.core.utils.Constants; +import com.doumee.core.utils.DateUtil; +import com.doumee.core.utils.PositionUtil; import com.doumee.core.utils.Utils; import com.doumee.dao.business.PlatformJobMapper; +import com.doumee.dao.business.PlatformMapper; +import com.doumee.dao.business.model.Platform; +import com.doumee.dao.business.model.PlatformBooks; import com.doumee.dao.business.model.PlatformJob; +import com.doumee.dao.web.reqeust.JobDetailDTO; +import com.doumee.dao.web.reqeust.SignInDTO; +import com.doumee.dao.web.response.DriverHomeVO; import com.doumee.service.business.PlatformJobService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; +import java.math.BigDecimal; +import java.util.Date; import java.util.List; +import java.util.Objects; /** * 鏈堝彴璋冨害浣滀笟淇℃伅琛⊿ervice瀹炵幇 @@ -26,6 +45,13 @@ @Autowired private PlatformJobMapper platformJobMapper; + + @Autowired + private SystemDictDataBiz systemDictDataBiz; + + @Autowired + private PlatformMapper platformMapper; + @Override public Integer create(PlatformJob platformJob) { @@ -178,4 +204,132 @@ QueryWrapper<PlatformJob> wrapper = new QueryWrapper<>(platformJob); return platformJobMapper.selectCount(wrapper); } + + //TODO + @Override + public DriverHomeVO getDriverHome(Integer memberId){ + DriverHomeVO driverHomeVO = new DriverHomeVO(); + //TODO 杞挱鍥� + + List<PlatformJob> platformJobList = platformJobMapper.selectList(new QueryWrapper<PlatformJob>() + .lambda() + .eq(PlatformJob::getDriverId,memberId) +// .like(PlatformJob::get) + .orderByDesc(PlatformJob::getId)); + driverHomeVO.setPlatformJobList(platformJobList); + + + return driverHomeVO; + } + + + /** + * 璺濈绛惧埌 + * @param signInDTO + */ + @Override + @Transactional(rollbackFor = {BusinessException.class,Exception.class}) + public void signIn(SignInDTO signInDTO){ + if(Objects.isNull(signInDTO) + || Objects.isNull(signInDTO.getSignType()) + || Objects.isNull(signInDTO.getJobId())){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); + } + PlatformJob platformJob = platformJobMapper.selectById(signInDTO.getJobId()); + if(Objects.isNull(platformJob)){ + throw new BusinessException(ResponseStatus.DATA_EMPTY); + } + if(!Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.WART_SIGN_IN.getKey())){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"涓氬姟鐘舵�佸凡娴佽浆锛岃鍒锋柊鏌ョ湅"); + } + if(Constants.equalsInteger(signInDTO.getSignType(),Constants.ZERO)){ + this.distanceSignIn(signInDTO,platformJob); + }else if(Constants.equalsInteger(signInDTO.getSignType(),Constants.ONE)){ + this.sceneSignIn(signInDTO); + } + platformJob.setSignDate(new Date()); + platformJob.setSingType(Constants.ZERO); + platformJob.setStatus(Constants.PlatformJobStatus.WAIT_CALL.getKey()); + platformJobMapper.updateById(platformJob); + } + + + public void distanceSignIn(SignInDTO signInDTO , PlatformJob platformJob){ + if(Objects.isNull(signInDTO.getLat()) + || Objects.isNull(signInDTO.getLnt())){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"缁忕含搴︿俊鎭紓甯�"); + } + //鑾峰彇绛惧埌鐐圭殑缁忕含搴� + Double lat = Double.parseDouble(systemDictDataBiz.queryByCode(Constants.PLATFORM,Constants.SIGN_IN_PLACE_LAT).getCode()); + Double lnt = Double.parseDouble(systemDictDataBiz.queryByCode(Constants.PLATFORM,Constants.SIGN_IN_PLACE_LNT).getCode()); + BigDecimal distance = new BigDecimal(systemDictDataBiz.queryByCode(Constants.PLATFORM,Constants.SIGN_IN_PLACE_DISTANCE).getCode()); + //鑾峰彇2涓偣鐨勮窛绂籜绫� + Double getDistanceDouble = PositionUtil.getDistance(signInDTO.getLnt(),signInDTO.getLat(),lnt,lat); + //杞崲km + BigDecimal getDistance = BigDecimal.valueOf(getDistanceDouble).divide(new BigDecimal(1000),2,BigDecimal.ROUND_HALF_UP); + if(distance.compareTo(getDistance)<Constants.ZERO){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瓒呭嚭鍙鍒拌窛绂伙紝鍙鍒拌窛绂籟"+distance+"]鍏噷]"); + } + platformJob.setSignDistance(BigDecimal.valueOf(getDistanceDouble)); + } + + public void sceneSignIn(SignInDTO signInDTO){ + if( StringUtils.isNotBlank(signInDTO.getQrCodeKey())){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); + } + if(!signInDTO.getQrCodeKey().equals(systemDictDataBiz.queryByCode(Constants.PLATFORM,Constants.SIGN_IN_QRCODE).getCode())){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"浜岀淮鐮佸凡杩囨湡,璇峰埛鏂伴噸璇�"); + } + } + + + @Override + public PlatformJob getDetail(JobDetailDTO jobDetailDTO){ + if(Objects.isNull(jobDetailDTO) + || Objects.isNull(jobDetailDTO.getJobId())){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); + } + PlatformJob platformJob = platformJobMapper.selectById(jobDetailDTO.getJobId()); + if(Objects.isNull(platformJob)){ + throw new BusinessException(ResponseStatus.DATA_EMPTY); + } + if(Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.WART_SIGN_IN.getKey())){ + //寰呯鍒� 璁$畻璺濈 + if(Objects.nonNull(jobDetailDTO.getLnt())&&Objects.nonNull(jobDetailDTO.getLat())){ + //鑾峰彇绛惧埌鐐圭殑缁忕含搴� + Double lat = Double.parseDouble(systemDictDataBiz.queryByCode(Constants.PLATFORM,Constants.SIGN_IN_PLACE_LAT).getCode()); + Double lnt = Double.parseDouble(systemDictDataBiz.queryByCode(Constants.PLATFORM,Constants.SIGN_IN_PLACE_LNT).getCode()); + //鑾峰彇2涓偣鐨勮窛绂籜绫� + Double getDistanceDouble = PositionUtil.getDistance(jobDetailDTO.getLnt(),jobDetailDTO.getLat(),lnt,lat); + //杞崲km + BigDecimal getDistance = BigDecimal.valueOf(getDistanceDouble).divide(new BigDecimal(1000),2,BigDecimal.ROUND_HALF_UP); + platformJob.setGetDistance(getDistance); + } + }else if( Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.WAIT_CALL.getKey()) + || Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.IN_WAIT.getKey()) + ){//鏌ヨ鎺掗槦鎯呭喌 + Long lineUpNum = platformJobMapper.selectCount(new QueryWrapper<PlatformJob>().lambda() + .eq(PlatformJob::getIsdeleted,Constants.ZERO) + .in(PlatformJob::getStatus,Constants.PlatformJobStatus.WAIT_CALL.getKey() + ,Constants.PlatformJobStatus.IN_WAIT.getKey() + ,Constants.PlatformJobStatus.TRANSFERING.getKey()) + .gt(PlatformJob::getSignDate,platformJob.getSignDate()) + .like(PlatformJob::getArriveDate,DateUtil.getDate(platformJob.getArriveDate(),"yyyy-MM-dd"))); + platformJob.setLineUpNum(lineUpNum); + }else if(Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.WORKING.getKey())){ + //浣滀笟鏈堝彴淇℃伅 + Platform platform = platformMapper.selectById(platformJob.getPlatformId()); + if(Objects.nonNull(platform)){ + platformJob.setPlatformName(platform.getName()); + } + } + return platformJob; + } + + + + + + + } diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java index af5ee41..6cb1dbd 100644 --- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java @@ -246,7 +246,7 @@ initWithVisitInfo(visits); updateProblemLog(visits,problemLog,member); //鍒涘缓瀹℃壒璁板綍 -// createApprove(visits,visitMember); + createApprove(visits,visitMember); return visits.getId(); } -- Gitblit v1.9.3