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, "已离å ","已离å " ), 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()); // 转æ¢ä¸ºjava.time.LocalDate,计ç®xå¤©çæ¥æ LocalDate dateBeforeDay = zonedDateTime.toLocalDate().minusDays(beforDays); return dateBeforeDay.toString(); } } 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 è¿åè·ç¦»ï¼åä½m */ 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; } } 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)); } } 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; } } 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; } 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; } 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; } 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; } 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; } 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; } 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; } 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); } 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); } 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); 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); } 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; /** * æå°å ¥åé¢çº¦ä¿¡æ¯è¡¨Serviceå®ç° @@ -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()) ); } } 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; /** * æå°è°åº¦ä½ä¸ä¿¡æ¯è¡¨Serviceå®ç° @@ -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个ç¹çè·ç¦»Xç±³ 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个ç¹çè·ç¦»Xç±³ 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; } } 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(); }