Просмотр исходного кода

Merge remote-tracking branch 'origin/dev' into dev

yzc 2 лет назад
Родитель
Сommit
ab590dfc02
32 измененных файлов с 921 добавлено и 80 удалено
  1. 6 0
      sckw-auth/pom.xml
  2. 62 0
      sckw-auth/src/main/java/com/sckw/auth/controller/AuthController.java
  3. 42 0
      sckw-auth/src/main/java/com/sckw/auth/model/vo/req/LoginBase.java
  4. 101 0
      sckw-auth/src/main/java/com/sckw/auth/model/vo/res/LoginResVo1.java
  5. 22 0
      sckw-auth/src/main/java/com/sckw/auth/service/IAuthService.java
  6. 162 8
      sckw-auth/src/main/java/com/sckw/auth/service/impl/AuthServiceImpl.java
  7. 15 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/enums/EntTypeEnum.java
  8. 44 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/enums/LoginMethodEnum.java
  9. 3 1
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/page/PageRes.java
  10. 22 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/EncryUtil.java
  11. 47 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/web/model/LoginEntInfo.java
  12. 8 0
      sckw-modules-api/sckw-system-api/src/main/java/com/sckw/system/api/RemoteSystemService.java
  13. 60 0
      sckw-modules-api/sckw-system-api/src/main/java/com/sckw/system/api/model/dto/req/REnterpriseVo.java
  14. 21 3
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/service/KwfTruckService.java
  15. 9 1
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/controller/KwpLedgerLogisticsController.java
  16. 9 3
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/controller/KwpLedgerTradeController.java
  17. 24 0
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/dto/LedgerCarrierDto.java
  18. 1 0
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/dto/LedgerTradeDto.java
  19. 52 0
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/dto/OrderDto.java
  20. 3 4
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/req/LedgerConfirmReq.java
  21. 3 4
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/req/LedgerSuccessReq.java
  22. 8 1
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/res/LedgerLogisticsDetailVo.java
  23. 11 3
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/res/LedgerTradeDetailVo.java
  24. 1 1
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/AbsLedger.java
  25. 21 4
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerLogisticsService.java
  26. 108 44
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerTradeService.java
  27. 1 0
      sckw-modules/sckw-payment/src/main/resources/mapper/KwpLedgerLogisticsMapper.xml
  28. 1 0
      sckw-modules/sckw-payment/src/main/resources/mapper/KwpLedgerTradeMapper.xml
  29. 11 1
      sckw-modules/sckw-system/src/main/java/com/sckw/system/dubbo/RemoteBaseService.java
  30. 11 2
      sckw-modules/sckw-system/src/main/java/com/sckw/system/dubbo/RemoteSystemServiceImpl.java
  31. 29 0
      sckw-modules/sckw-system/src/main/java/com/sckw/system/service/KwsEnterpriseService.java
  32. 3 0
      sckw-modules/sckw-system/src/main/resources/mapper/KwsUserDao.xml

+ 6 - 0
sckw-auth/pom.xml

@@ -47,11 +47,17 @@
             <groupId>com.sckw</groupId>
             <artifactId>sckw-system-api</artifactId>
         </dependency>
+
         <dependency>
             <groupId>com.sckw</groupId>
             <artifactId>sckw-message-api</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>com.sckw</groupId>
+            <artifactId>sckw-fleet-api</artifactId>
+        </dependency>
+
     </dependencies>
     <build>
         <plugins>

+ 62 - 0
sckw-auth/src/main/java/com/sckw/auth/controller/AuthController.java

@@ -3,6 +3,10 @@ package com.sckw.auth.controller;
 import com.sckw.auth.model.vo.req.*;
 import com.sckw.auth.service.IAuthService;
 import com.sckw.core.exception.SystemException;
+import com.sckw.core.model.enums.LoginMethodEnum;
+import com.sckw.core.model.enums.SystemTypeEnum;
+import com.sckw.core.utils.RegularUtils;
+import com.sckw.core.utils.StringUtils;
 import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.response.HttpResult;
 import jakarta.validation.Valid;
@@ -21,6 +25,64 @@ public class AuthController {
     @Autowired
     private IAuthService authService;
 
+    @PostMapping("/login1")
+    public HttpResult login(@RequestHeader(name = "System-Type") int systemType,
+                            @RequestHeader(name = "Client-Type") String clientType,
+                            @RequestBody @Valid LoginBase loginBase) {
+        loginBase.setSystemType(systemType);
+        loginBase.setClientType(clientType);
+        loginBase.setLoginMethod(LoginMethodEnum.ORDINARY.getValue());
+
+        /**参数校验**/
+        HttpResult result = checkParams(loginBase);
+        if (result.getCode() != HttpStatus.SUCCESS_CODE) {
+            return result;
+        }
+
+        /**运营端/企业端登录(PC/APP)**/
+        if (loginBase.getSystemType() == SystemTypeEnum.MANAGE.getCode()
+                || loginBase.getSystemType() == SystemTypeEnum.COMPANY.getCode()) {
+
+        }
+
+        /**司机端**/
+        if (loginBase.getSystemType() == SystemTypeEnum.DRIVER.getCode()) {
+            return authService.driverAuth(loginBase);
+        }
+
+        return HttpResult.error(HttpStatus.PARAMETERS_MISSING_CODE, HttpStatus.GLOBAL_EXCEPTION_MESSAGE);
+    }
+
+    /**
+     * @param
+     * @return
+     * @description 登录参数校验
+     * @author zk
+     * @date 2020/6/14 18:14
+     **/
+    public HttpResult checkParams(LoginBase params) {
+        if (StringUtils.isBlank(params.getSystemType())) {
+            return HttpResult.error(HttpStatus.PARAMETERS_MISSING_CODE, "应用服务类型不能为空!");
+        }
+        if (StringUtils.isBlank(params.getClientType())) {
+            return HttpResult.error(HttpStatus.PARAMETERS_MISSING_CODE, "客户端类型不能为空!");
+        }
+        if (StringUtils.isBlank(params.getAccount())) {
+            return HttpResult.error(HttpStatus.PARAMETERS_MISSING_CODE, "请输入您的账号!");
+        }
+        if (params.getLoginMethod() == LoginMethodEnum.SMS.getValue() && !RegularUtils.matchs(RegularUtils.PHONE_REG, params.getAccount())) {
+            return HttpResult.error(HttpStatus.PARAMETERS_PATTERN_ERROR_CODE, "手机号格式不正确,请检查并重新输入!");
+        }
+        if (params.getLoginMethod() == LoginMethodEnum.SMS.getValue() && StringUtils.isBlank(params.getCaptcha())) {
+            return HttpResult.error(HttpStatus.PARAMETERS_MISSING_CODE, "请输入您的验证码!");
+        }
+        if (params.getLoginMethod() == LoginMethodEnum.ORDINARY.getValue() && StringUtils.isBlank(params.getPassword())) {
+            return HttpResult.error(HttpStatus.PARAMETERS_MISSING_CODE, "请输入您的密码!");
+        }
+        return HttpResult.ok();
+    }
+    /**--------------------------------------------------------------------------------------------------------------**/
+
     /**
      * @param reqVo 登录入参
      * @return HttpResult

+ 42 - 0
sckw-auth/src/main/java/com/sckw/auth/model/vo/req/LoginBase.java

@@ -0,0 +1,42 @@
+package com.sckw.auth.model.vo.req;
+
+import lombok.Data;
+
+/**
+ * @author zk
+ * @description 登录信息
+ * @date 2020/06/12 09:06:14
+ */
+@Data
+public class LoginBase {
+
+    /**
+     * 账号
+     */
+    private String account;
+
+    /**
+     * 密码
+     */
+    private String password;
+
+    /**
+     * 验证码
+     */
+    private String captcha;
+
+    /**
+     * 系统类型(1 运营管理中心/2 运营管理中心/3 司机应用/4 官网)
+     */
+    private int systemType;
+
+    /**
+     * 客户端类型(ios 苹果设备/android 安卓设备/pc 浏览器/pc-background 管理系统)
+     */
+    private String clientType;
+
+    /**
+     * 登录方式1 账号密码登录/2账号短信登录/3单账号登录
+     */
+    private int loginMethod;
+}

+ 101 - 0
sckw-auth/src/main/java/com/sckw/auth/model/vo/res/LoginResVo1.java

@@ -0,0 +1,101 @@
+package com.sckw.auth.model.vo.res;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.sckw.core.utils.LongToStringUtils;
+import com.sckw.system.api.model.dto.res.KwsRoleResDto;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author zk
+ * @desc TODO
+ * @date 2023/8/10 0010
+ */
+@Data
+public class LoginResVo1 implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 8977846403689927853L;
+
+    /**
+     * 用户id
+     */
+    @JsonSerialize(using = LongToStringUtils.class)
+    private long id;
+
+    /**
+     * 账号
+     */
+    private String account;
+
+    /**
+     * 姓名
+     */
+    private String name;
+
+    /**
+     * 电话
+     */
+    private String phone;
+
+    /**
+     * 头像
+     */
+    private String photo;
+
+    /**
+     * 是否是企业管理(0是 1否)
+     */
+    private Integer isMain;
+
+    /**
+     * 状态
+     */
+    private Integer status;
+
+    /**
+     * 企业Id
+     */
+    @JsonSerialize(using = LongToStringUtils.class)
+    private Long entId;
+
+    /**
+     * 企业名称
+     */
+    private String firmName;
+
+    /**
+     * 资料审批状态(0未审批、1通过、2未通过、3审批中)
+     */
+    private Integer approval;
+
+    /**
+     * 企业类型(名称)
+     */
+    private String entTypeNames;
+
+    /**
+     * 推送设备id
+     */
+    private String clientId;
+
+    /**
+     * 设备类型
+     */
+    private String clientType;
+
+    /**
+     * 系统类型(1运营端、2企业开户、3司机端)
+     */
+    private Integer systemType;
+
+    /**
+     * 设备类型
+     */
+    private String token;
+
+}

+ 22 - 0
sckw-auth/src/main/java/com/sckw/auth/service/IAuthService.java

@@ -3,6 +3,7 @@ package com.sckw.auth.service;
 import com.sckw.auth.model.vo.req.*;
 import com.sckw.auth.model.vo.res.LoginResVo;
 import com.sckw.core.exception.SystemException;
+import com.sckw.core.web.response.HttpResult;
 
 /**
  *
@@ -56,4 +57,25 @@ public interface IAuthService {
      * @return String
      */
     String getRegisterSms(GetRegisterSmsReqVo reqVo);
+
+    /**
+     * 司机端登录
+     * @param loginBase
+     * @return
+     */
+    HttpResult driverAuth(LoginBase loginBase);
+
+    /**
+     * 企业端登录
+     * @param loginBase
+     * @return
+     */
+    HttpResult entAuth(LoginBase loginBase);
+
+    /**
+     * 运营端
+     * @param loginBase
+     * @return
+     */
+    HttpResult operateAuth(LoginBase loginBase);
 }

+ 162 - 8
sckw-auth/src/main/java/com/sckw/auth/service/impl/AuthServiceImpl.java

@@ -6,25 +6,25 @@ import com.sckw.auth.model.vo.req.*;
 import com.sckw.auth.model.vo.res.DeptInfoResVo;
 import com.sckw.auth.model.vo.res.EntInfoResVo;
 import com.sckw.auth.model.vo.res.LoginResVo;
+import com.sckw.auth.model.vo.res.LoginResVo1;
 import com.sckw.auth.util.AsyncFactory;
+import com.sckw.core.model.enums.ClientTypeEnum;
 import com.sckw.core.model.enums.SystemTypeEnum;
-import com.sckw.core.utils.StringUtils;
+import com.sckw.core.utils.*;
 import com.sckw.core.web.model.EntCertificateInfo;
 import com.sckw.core.web.model.LoginEntInfo;
 import com.sckw.core.web.model.LoginUserInfo;
+import com.sckw.core.web.response.HttpResult;
+import com.sckw.fleet.api.RemoteFleetService;
+import com.sckw.fleet.api.model.vo.RDriverDetailVo;
 import com.sckw.message.api.dubbo.SmsInfoService;
-import com.sckw.system.api.model.dto.req.ForgetPasswordReqDto;
-import com.sckw.system.api.model.dto.req.UpdatePasswordReqDto;
-import com.sckw.system.api.model.dto.req.UserLoginReqDto;
+import com.sckw.system.api.RemoteSystemService;
+import com.sckw.system.api.model.dto.req.*;
 import com.sckw.system.api.model.dto.res.KwsRoleResDto;
 import com.sckw.core.exception.SystemException;
 import com.sckw.core.model.constant.Global;
-import com.sckw.core.utils.BeanUtils;
-import com.sckw.core.utils.CollectionUtils;
-import com.sckw.core.utils.EncryUtil;
 import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.redis.utils.RedissonUtils;
-import com.sckw.system.api.model.dto.req.RegisterReqDto;
 import com.sckw.system.api.model.dto.res.*;
 import com.sckw.auth.service.IAuthService;
 import com.sckw.system.api.RemoteUserService;
@@ -47,9 +47,14 @@ public class AuthServiceImpl implements IAuthService {
     @DubboReference(version = "2.0.0", group = "design", check = false)
     private RemoteUserService remoteUserService;
 
+    @DubboReference(version = "2.0.0", group = "design", check = false)
+    private RemoteSystemService systemService;
+
     @DubboReference(version = "2.0.0", group = "design", check = false)
     private SmsInfoService smsInfoService;
 
+    @DubboReference(version = "1.0.0", group = "design", check = false)
+    private RemoteFleetService fleetService;
 
     @Override
     public LoginResVo login(LoginReqVo reqDto) throws SystemException {
@@ -353,4 +358,153 @@ public class AuthServiceImpl implements IAuthService {
 
     }
 
+    /**-------------------------------------------------------------------------------------------------------------->**/
+    @Override
+    public HttpResult driverAuth(LoginBase loginBase) {
+        /**查询用户信息**/
+        RDriverDetailVo driver = fleetService.findDriver(loginBase.getAccount());
+        /**信息校验**/
+        if (driver == null) {
+            return HttpResult.error(HttpStatus.QUERY_FAIL_CODE, "账号不存在,请检查并重新输入!");
+        }
+        if (!PasswordUtils.validatePassword(loginBase.getPassword(), driver.getPassword())) {
+            return HttpResult.error(HttpStatus.CODE_10301, "密码不正确,请检查并重新输入!");
+        }
+        if (driver.getStatus() == Global.YES) {
+            return HttpResult.error(HttpStatus.CODE_10301, "您的账号已冻结,如需帮助,请致电平台客服:400-803-6377!");
+        }
+        //企业信息
+        REnterpriseVo enterprise = systemService.queryEntDetails(driver.getEntId());
+
+        /**生成token**/
+        String token = EncryUtil.encryV1(Global.PRI_KEY, String.valueOf(driver.getId()));
+        if (StringUtils.isBlank(token)) {
+            return HttpResult.error(HttpStatus.CODE_10301, "生成密钥失败,请联系系统管理员!");
+        }
+
+        /**缓存司机/企业信息**/
+        AsyncFactory.execute(new AsyncProcess1(loginBase, driver, enterprise));
+
+        /**数据组装**/
+        LoginResVo1 loginRes = new LoginResVo1();
+        loginRes.setAccount(loginBase.getAccount());
+        loginRes.setFirmName(enterprise.getFirmName());
+        loginRes.setApproval(enterprise.getApproval());
+        loginRes.setEntTypeNames(enterprise.getEntTypeNames());
+        loginRes.setClientType(loginBase.getClientType());
+        loginRes.setSystemType(loginBase.getSystemType());
+        loginRes.setToken(token);
+        return HttpResult.ok(loginRes);
+    }
+
+    @Override
+    public HttpResult entAuth(LoginBase loginBase) {
+        /**查询用户信息**/
+        KwsUserResDto user = findUser(loginBase);
+        /**信息校验**/
+        if (user == null) {
+            return HttpResult.error(HttpStatus.QUERY_FAIL_CODE, "账号不存在,请检查并重新输入!");
+        }
+        if (!PasswordUtils.validatePassword(loginBase.getPassword(), user.getPassword())) {
+            return HttpResult.error(HttpStatus.CODE_10301, "密码不正确,请检查并重新输入!");
+        }
+        if (user.getStatus() == Global.YES) {
+            return HttpResult.error(HttpStatus.CODE_10301, "您的账号已冻结,如需帮助,请致电平台客服:400-803-6377!");
+        }
+        //企业信息
+        REnterpriseVo enterprise = systemService.queryEntDetails(null);
+
+        /**生成token**/
+        String token = EncryUtil.encryV1(Global.PRI_KEY, String.valueOf(user.getId()));
+        if (StringUtils.isBlank(token)) {
+            return HttpResult.error(HttpStatus.CODE_10301, "生成密钥失败,请联系系统管理员!");
+        }
+
+        /**缓存司机/企业信息**/
+        AsyncFactory.execute(new AsyncProcess1(loginBase, null, enterprise));
+
+        /**数据组装**/
+        LoginResVo1 loginRes = new LoginResVo1();
+        loginRes.setAccount(loginBase.getAccount());
+        loginRes.setFirmName(enterprise.getFirmName());
+        loginRes.setApproval(enterprise.getApproval());
+        loginRes.setEntTypeNames(enterprise.getEntTypeNames());
+        loginRes.setClientType(loginBase.getClientType());
+        loginRes.setSystemType(loginBase.getSystemType());
+        loginRes.setToken(token);
+        return HttpResult.ok(loginRes);
+    }
+
+    @Override
+    public HttpResult operateAuth(LoginBase loginBase) {
+
+        return null;
+    }
+
+
+    private KwsUserResDto findUser(LoginBase loginBase) throws SystemException {
+        List<KwsUserResDto> kwsUsers = remoteUserService.checkUserBase(loginBase.getAccount(), loginBase.getSystemType());
+        return kwsUsers == null || kwsUsers.size() == Global.NUMERICAL_ZERO ? null : kwsUsers.get(0);
+    }
+
+    static class AsyncProcess1 implements Runnable {
+        private final LoginBase loginBase;
+
+        private final RDriverDetailVo driver;
+
+        private final REnterpriseVo enterprise;
+
+        public AsyncProcess1(LoginBase loginBase, RDriverDetailVo driver, REnterpriseVo enterprise) {
+            this.loginBase = loginBase;
+            this.driver = driver;
+            this.enterprise = enterprise;
+        }
+
+        @Override
+        public void run() {
+            //用户信息
+            SaveDriverToCache(loginBase, driver);
+
+            //企业信息
+            SaveEntToCache(enterprise);
+        }
+
+        /**
+         * @param ent 企业信息
+         * @desc: 缓存存企业信息
+         * @author: czh
+         * @date: 2023/7/3
+         */
+        private void SaveEntToCache(REnterpriseVo ent) {
+            if (ent == null) {
+                return;
+            }
+            LoginEntInfo loginEntInfo = new LoginEntInfo();
+            BeanUtils.copyProperties(ent, loginEntInfo);
+            String key = Global.REDIS_ENTERPRISE_PREFIX + ent.getId();
+            RedissonUtils.putString(key, JSON.toJSONString(loginEntInfo), Global.PC_TOKEN_EXPIRE);
+        }
+
+        /**
+         * @param loginBase 登录信息
+         * @param driver 司机信息
+         * @desc: 缓存用户业信息
+         * @author: czh
+         * @date: 2023/7/3
+         */
+        private void SaveDriverToCache(LoginBase loginBase, RDriverDetailVo driver) {
+            //存用户登录信息
+            LoginUserInfo loginUserInfo = new LoginUserInfo();
+            loginUserInfo.setId(driver.getId());
+            loginUserInfo.setSystemType(SystemTypeEnum.DRIVER.getCode());
+            loginUserInfo.setAccount(driver.getPhone());
+            loginUserInfo.setUserName(driver.getName());
+            loginUserInfo.setPhone(driver.getPhone());
+            loginUserInfo.setStatus(driver.getStatus());
+            loginUserInfo.setEntId(enterprise != null ? enterprise.getId() : null);
+            loginUserInfo.setEntName(enterprise != null ? enterprise.getFirmName() : null);
+            String key = Global.getFullUserLoginKey(loginUserInfo.getSystemType(), loginUserInfo.getId(), loginBase.getClientType());
+            RedissonUtils.putString(key, JSON.toJSONString(loginUserInfo), Global.PC_TOKEN_EXPIRE);
+        }
+    }
 }

+ 15 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/enums/EntTypeEnum.java

@@ -1,7 +1,11 @@
 package com.sckw.core.model.enums;
 
+import com.sckw.core.model.constant.Global;
 import lombok.Getter;
 
+import java.util.ArrayList;
+import java.util.List;
+
 /**
  * @author czh
  * @desc 企业类型枚举
@@ -36,4 +40,15 @@ public enum EntTypeEnum {
         }
         return null;
     }
+
+    public static String getNames(String entTypes) {
+        List entNames = new ArrayList();
+        EntTypeEnum [] entTypeEnums = EntTypeEnum.values();
+        for (EntTypeEnum entTypeEnum:entTypeEnums) {
+            if (entTypes.contains(String.valueOf(entTypeEnum.getCode()))) {
+                entNames.add(entTypeEnum.getName());
+            }
+        }
+        return String.join(Global.COMMA, entNames);
+    }
 }

+ 44 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/enums/LoginMethodEnum.java

@@ -0,0 +1,44 @@
+package com.sckw.core.model.enums;
+
+/**
+ * @Description 登录类型枚举
+ * @Author zk
+ * @Date 2020/06/15
+ */
+public enum LoginMethodEnum {
+    ORDINARY(1, "账号密码登录"),
+    SMS(2,  "短信登录"),
+    ACCOUNT(3,  "账号登录");
+
+    private int value;
+
+    private String name;
+
+    /**
+     * @description 构造方法
+     * @author zk
+     * @date 2020/6/08 11:28
+     * @param value 键 name 值
+     * @return
+     **/
+    private LoginMethodEnum(int value, String name){
+        this.name = name;
+        this.value = value;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public void setValue(int value) {
+        this.value = value;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+}

+ 3 - 1
sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/page/PageRes.java

@@ -1,6 +1,7 @@
 package com.sckw.core.model.page;
 
 import com.github.pagehelper.PageInfo;
+import com.sckw.core.utils.CollectionUtils;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -51,7 +52,7 @@ public class PageRes<T> {
         this.pageSize = pageInfo.getPageSize();
         this.size = pageInfo.getTotal();
         this.pages = pageInfo.getPages();
-        this.list = pageInfo.getList();
+        this.list = CollectionUtils.isEmpty(pageInfo.getList()) ? new ArrayList<>() : pageInfo.getList();
     }
 
     public PageRes(PageInfo<T> pageInfo, List<T> list) {
@@ -73,6 +74,7 @@ public class PageRes<T> {
 
     /**
      * 构建返回数据
+     *
      * @param pagInfo pageHelper的分页对象
      * @param list    实际返回的数据集
      * @return

+ 22 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/EncryUtil.java

@@ -78,6 +78,28 @@ public class EncryUtil {
     }
 
 
+    /**
+     * 加密
+     * @param appSecret 私钥
+     * @param orginStr 原始加密参数
+     * @author dengyinghui
+     * #date 2019/02/27
+     * @return
+     */
+    public static String encryV1(String appSecret, String orginStr){
+        try {
+            Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
+            Key key = new SecretKeySpec(toByteArray(appSecret), "AES");
+            cipher.init(Cipher.ENCRYPT_MODE, key);
+            byte[] encodeResult = cipher.doFinal(orginStr.getBytes());
+            return Hex.toHexString(encodeResult);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
+
+
     /**
      *  字节数组转成16进制表示格式的字符串
      * @author dengyinghui

+ 47 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/web/model/LoginEntInfo.java

@@ -85,4 +85,51 @@ public class LoginEntInfo {
      * 资质
      */
     private List<EntCertificateInfo> certificateInfo;
+
+
+//    /**
+//     * 企业编号
+//     */
+//    private Long id;
+//
+//    /**
+//     * 企业名称
+//     */
+//    private String firmName;
+//
+//    /**
+//     * 注册时间
+//     */
+//    private Date regTime;
+//
+//    /**
+//     * 资料审批状态(0未审批、1通过、2未通过、3审批中)
+//     */
+//    private Integer approval;
+//
+//    /**
+//     * 企业类型(值)
+//     */
+//    private String entTypes;
+
+    /**
+     * 企业类型(名称)
+     */
+    private String entTypeNames;
+
+    /**
+     * 企业联系人(企业管理员)
+     */
+    private Long mainId;
+
+    /**
+     * 企业联系人(企业管理员)
+     */
+    private String mainName;
+
+    /**
+     * 联系电话(企业管理员)
+     */
+    private String mainPhone;
+
 }

+ 8 - 0
sckw-modules-api/sckw-system-api/src/main/java/com/sckw/system/api/RemoteSystemService.java

@@ -1,5 +1,6 @@
 package com.sckw.system.api;
 
+import com.sckw.system.api.model.dto.req.REnterpriseVo;
 import com.sckw.system.api.model.dto.res.*;
 
 import java.util.List;
@@ -182,4 +183,11 @@ public interface RemoteSystemService {
      */
     UserCacheResDto queryManagerInfoByEntId(Long entId);
 
+    /**
+     * @param entId 企业ID
+     * @desc 企业详情(企业登录/司机登录)
+     * @author zk
+     * @date 2023/8/10
+     **/
+    REnterpriseVo queryEntDetails(Long entId);
 }

+ 60 - 0
sckw-modules-api/sckw-system-api/src/main/java/com/sckw/system/api/model/dto/req/REnterpriseVo.java

@@ -0,0 +1,60 @@
+package com.sckw.system.api.model.dto.req;
+
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author zk
+ * @desc TODO
+ * @date 2023/8/10 0010
+ */
+@Data
+public class REnterpriseVo {
+
+    /**
+     * 企业编号
+     */
+    private Long id;
+
+    /**
+     * 企业名称
+     */
+    private String firmName;
+
+    /**
+     * 注册时间
+     */
+    private Date regTime;
+
+    /**
+     * 资料审批状态(0未审批、1通过、2未通过、3审批中)
+     */
+    private Integer approval;
+
+    /**
+     * 企业类型(值)
+     */
+    private String entTypes;
+
+    /**
+     * 企业类型(名称)
+     */
+    private String entTypeNames;
+
+    /**
+     * 企业联系人(企业管理员)
+     */
+    private Long mainId;
+
+    /**
+     * 企业联系人(企业管理员)
+     */
+    private String mainName;
+
+    /**
+     * 联系电话(企业管理员)
+     */
+    private String mainPhone;
+
+}

+ 21 - 3
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/service/KwfTruckService.java

@@ -311,7 +311,7 @@ public class KwfTruckService {
     public HttpResult truckEdit(KwfTruck params) {
         if (StringUtils.isBlank(params.getId())) {
             /**唯一性交易**/
-            List<Map<String, Object>> trucks = truckDao.findList(new HashMap(){{ put("truckNo", params.getTruckNo()); }});
+            List<KwfTruck> trucks = truckDao.findTruck(new HashMap(){{ put("truckNo", params.getTruckNo()); }});
             if (!CollectionUtils.isEmpty(trucks)) {
                 return HttpResult.error("车牌号已存在!");
             }
@@ -324,9 +324,9 @@ public class KwfTruckService {
             return count > 0 ? HttpResult.ok() : HttpResult.error("车辆信息新增失败!");
         } else {
             /**唯一性交易**/
-            List<Map<String, Object>> trucks = truckDao.findList(new HashMap(){{ put("truckNo", params.getTruckNo()); }});
+            List<KwfTruck> trucks = truckDao.findTruck(new HashMap(){{ put("truckNo", params.getTruckNo()); }});
             //校验list中对象key值是否存在与value不一致的情况
-            boolean bool = CollectionUtils.listByKeyValueV1(trucks, "id", String.valueOf(params.getId()));
+            boolean bool = listByKeyValue(trucks, params.getId());
             if (bool) {
                 return HttpResult.error("车牌号已存在!");
             }
@@ -508,4 +508,22 @@ public class KwfTruckService {
         truck.setStatus(Global.NUMERICAL_ONE);
         truckDao.updateById(truck);
     }
+
+    /**
+     * 校验list中对象key值是否存在与value不一致的情况
+     * @param list 数据集
+     * @param value 匹配值
+     * @return
+     */
+    public static boolean listByKeyValue(List<KwfTruck> list, Long value) {
+        if (CollectionUtils.isEmpty(list)) {
+            return false;
+        }
+        for (KwfTruck truck:list) {
+            if (value != null && !truck.getId().equals(value)) {
+                return true;
+            }
+        }
+        return false;
+    }
 }

+ 9 - 1
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/controller/KwpLedgerLogisticsController.java

@@ -1,8 +1,10 @@
 package com.sckw.payment.controller;
 
 import com.sckw.core.model.page.PageRes;
+import com.sckw.core.model.vo.TableTop;
 import com.sckw.core.web.response.HttpResult;
 import com.sckw.excel.utils.ExcelUtil;
+import com.sckw.payment.model.constant.LedgerEnum;
 import com.sckw.payment.model.constant.LogisticsUnitType;
 import com.sckw.payment.model.dto.ILedger;
 import com.sckw.payment.model.vo.req.*;
@@ -17,6 +19,7 @@ import org.springframework.util.CollectionUtils;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -141,7 +144,12 @@ public class KwpLedgerLogisticsController {
     public HttpResult shipperCount(@RequestBody @Valid LogisticsReq logisticsReq) {
         logisticsReq.setUnitType(LogisticsUnitType.CARRIER);
         logisticsReq.setUnitTypeTwo(LogisticsUnitType.SHIPPER);
-        return HttpResult.ok(kwpLedgerLogisticsService.orderCount(logisticsReq));
+        List<TableTop> tableTops = kwpLedgerLogisticsService.orderCount(logisticsReq);
+        List<Integer> re = new ArrayList<>() {{
+            add(LedgerEnum.SAVE.getStatus());
+            add(LedgerEnum.REVOCATION.getStatus());
+        }};
+        return HttpResult.ok(tableTops.stream().filter(a -> !re.contains(a.getValue())).collect(Collectors.toList()));
     }
 
     /**

+ 9 - 3
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/controller/KwpLedgerTradeController.java

@@ -1,14 +1,15 @@
 package com.sckw.payment.controller;
 
 import com.sckw.core.model.page.PageRes;
+import com.sckw.core.model.vo.TableTop;
 import com.sckw.core.web.response.HttpResult;
 import com.sckw.excel.utils.ExcelUtil;
+import com.sckw.payment.model.constant.LedgerEnum;
 import com.sckw.payment.model.constant.TradeUnitType;
 import com.sckw.payment.model.dto.ILedger;
 import com.sckw.payment.model.vo.req.*;
 import com.sckw.payment.model.vo.res.LedgerTradeVo;
 import com.sckw.payment.service.KwpLedgerTradeService;
-import io.seata.spring.annotation.GlobalTransactional;
 import jakarta.annotation.Resource;
 import jakarta.servlet.http.HttpServletResponse;
 import jakarta.validation.Valid;
@@ -18,6 +19,7 @@ import org.springframework.util.CollectionUtils;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -154,7 +156,12 @@ public class KwpLedgerTradeController {
     public HttpResult purchaseCount(@RequestBody @Valid TradeReq tradeReq) {
         tradeReq.setUnitType(TradeUnitType.SELL);
         tradeReq.setUnitTypeTwo(TradeUnitType.PURCHASE);
-        return HttpResult.ok(kwpLedgerTradeService.orderCount(tradeReq));
+        List<TableTop> tableTops = kwpLedgerTradeService.orderCount(tradeReq);
+        List<Integer> re = new ArrayList<>() {{
+            add(LedgerEnum.SAVE.getStatus());
+            add(LedgerEnum.REVOCATION.getStatus());
+        }};
+        return HttpResult.ok(tableTops.stream().filter(a -> !re.contains(a.getValue())).collect(Collectors.toList()));
     }
 
     /**
@@ -222,7 +229,6 @@ public class KwpLedgerTradeController {
      * @return
      */
     @PostMapping("success")
-    @GlobalTransactional(name = "default_tx_group", rollbackFor = Exception.class)
     public HttpResult orderSuccess(@RequestBody @Valid LedgerSuccessReq ledgerReq) {
         return HttpResult.ok(kwpLedgerTradeService.orderSuccess(ledgerReq));
     }

+ 24 - 0
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/dto/LedgerCarrierDto.java

@@ -87,7 +87,15 @@ public class LedgerCarrierDto implements ILedger {
      * 已收款/元
      */
     private BigDecimal actualPrice;
+    /**
+     * 对账审核人电话
+     */
+    private String auditPhone;
 
+    /**
+     * 对账审核人名称
+     */
+    private String auditUser;
     /**
      * 对账清单凭证
      */
@@ -161,6 +169,22 @@ public class LedgerCarrierDto implements ILedger {
         this.entId = entId;
     }
 
+    public String getAuditPhone() {
+        return auditPhone;
+    }
+
+    public void setAuditPhone(String auditPhone) {
+        this.auditPhone = auditPhone;
+    }
+
+    public String getAuditUser() {
+        return auditUser;
+    }
+
+    public void setAuditUser(String auditUser) {
+        this.auditUser = auditUser;
+    }
+
     public Long getCheckEntId() {
         return checkEntId;
     }

+ 1 - 0
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/dto/LedgerTradeDto.java

@@ -20,6 +20,7 @@ public class LedgerTradeDto implements ILedger {
      * 主键
      */
     private Long id;
+    private Long purchaseEntId;
     /**
      * 贸易对账单编号
      */

+ 52 - 0
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/dto/OrderDto.java

@@ -0,0 +1,52 @@
+package com.sckw.payment.model.dto;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+
+@Data
+public class OrderDto {
+    private Long id;
+    private Long entId;
+    private String trading;
+    private String tradingLabel;
+    private Long torderId;
+    private String tOrderNo;
+    private String contractNo;
+    private Long goodsId;
+    private String remark;
+    private String source;
+    private String sourceLabel;
+    private String consignmentStatus;
+    private String unloadDetailAddressInfo;
+    private BigDecimal price;
+    private String contractName;
+    private LocalDate startTime;
+    private LocalDate endTime;
+    private Long procureEntId;
+    private String goodsName;
+    private String unloadName;
+    private BigDecimal unitPrice;
+    private BigDecimal amount;
+    private Long createBy;
+    private String createByName;
+    private String pickupTypeLabel;
+    private String contractSigningWay;
+    private BigDecimal actualAmount;
+    private String deliveryType;
+    private String deliveryTypeLabel;
+    private Long supplyEntId;
+    private String pickupType;
+    private String statusLabel;
+    private String goodsSpec;
+    private String loadName;
+    private String supplyFirmName;
+    private String createTime;
+    private String procureFirmName;
+    private String loadDetailAddressInfo;
+    private Long contractId;
+    private BigDecimal entrustAmount;
+    private String projectName;
+    private Integer status;
+}

+ 3 - 4
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/req/LedgerConfirmReq.java

@@ -1,7 +1,6 @@
 package com.sckw.payment.model.vo.req;
 
 import com.sckw.core.model.base.IdsList;
-import jakarta.validation.constraints.NotBlank;
 import jakarta.validation.constraints.NotNull;
 import jakarta.validation.constraints.Size;
 import lombok.Getter;
@@ -21,15 +20,15 @@ public class LedgerConfirmReq implements IdsList {
     /**
      * 对账审核人
      */
-    @NotBlank(message = "对账审核人不能为空")
+//    @NotBlank(message = "对账审核人不能为空")
     @Size(max = 25, message = "对账审核人不能超过25个字符")
     private String auditUser;
     /**
      * 对账审核人联系方式
      */
-    @NotBlank(message = "对账审核人联系方式为空")
+//    @NotBlank(message = "对账审核人联系方式为空")
     @Size(max = 11, message = "对账审核人联系方式不能超过11个字符")
     private String auditPhone;
-    @NotBlank(message = "对账清单凭证不能为空")
+//    @NotBlank(message = "对账清单凭证不能为空")
     private String url;
 }

+ 3 - 4
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/req/LedgerSuccessReq.java

@@ -2,7 +2,6 @@ package com.sckw.payment.model.vo.req;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.sckw.core.model.base.IdsList;
-import jakarta.validation.constraints.NotBlank;
 import jakarta.validation.constraints.NotNull;
 import jakarta.validation.constraints.Size;
 import lombok.Getter;
@@ -21,15 +20,15 @@ import java.time.LocalDate;
 public class LedgerSuccessReq implements IdsList {
     @NotNull(message = "物流对账单id不能为空")
     private String id;
-    @NotBlank(message = "财务联系人不能为空")
+//    @NotBlank(message = "财务联系人不能为空")
     @Size(max = 25, message = "财务联系人不能超过25个字符")
     private String successUser;
 
-    @NotNull(message = "预计收款日期不能为空")
+//    @NotNull(message = "预计收款日期不能为空")
     @JsonFormat(pattern = "yyyy-MM-dd")
     private LocalDate receiptTime;
 
-    @NotBlank(message = "财务联系电话不能为空")
+//    @NotBlank(message = "财务联系电话不能为空")
     @Size(max = 11, message = "财务联系电话不能超过11个字符")
     private String successPhone;
 

+ 8 - 1
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/res/LedgerLogisticsDetailVo.java

@@ -7,6 +7,7 @@ import lombok.Setter;
 
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -20,18 +21,24 @@ import java.util.List;
 public class LedgerLogisticsDetailVo {
     private Long id;
     private String lLedgerNo;
+    private Long checkEntId;
     private String name;
     private String firmName;
     private String trading;
+    private String tradingLabel;
+
     private Integer taxRate;
+    private String taxRateLabel;
+
     private BigDecimal totalPrice;
+    private BigDecimal settlePrice;
     private BigDecimal actualPrice;
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private LocalDateTime startTime;
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private LocalDateTime endTime;
 
-    private List<LogisticsOrderVO> orderList;
+    private List<LogisticsOrderVO> orderList = new ArrayList<>();
     private String remark;
 
 

+ 11 - 3
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/res/LedgerTradeDetailVo.java

@@ -1,7 +1,7 @@
 package com.sckw.payment.model.vo.res;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
-import com.sckw.order.api.model.OrderDetailRes;
+import com.sckw.payment.model.dto.OrderDto;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -19,19 +19,27 @@ import java.util.List;
 @Setter
 public class LedgerTradeDetailVo {
     private Long id;
+    //客户企业id
+    private Long purchaseEntId;
+    //客户企业名称
+    private String firmName;
     private String tLedgerNo;
     private String name;
-    private String firmName;
+
     private String trading;
+    private String tradingLabel;
+
     private Integer taxRate;
+    private String taxRateLabel;
     private BigDecimal totalPrice;
+    private BigDecimal settlePrice;
     private BigDecimal actualPrice;
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private LocalDateTime startTime;
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private LocalDateTime endTime;
 
-    private List<OrderDetailRes> orderList;
+    private List<OrderDto> orderList;
     private String remark;
 
 }

+ 1 - 1
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/AbsLedger.java

@@ -74,7 +74,7 @@ public abstract class AbsLedger {
      * @param status 订单状态
      */
     public void deleteCheck(Integer status) {
-        List<Integer> objects = Lists.newArrayList(LedgerEnum.BACK.getStatus(), LedgerEnum.REVOCATION.getStatus());
+        List<Integer> objects = Lists.newArrayList(LedgerEnum.SAVE.getStatus(), LedgerEnum.BACK.getStatus(), LedgerEnum.REVOCATION.getStatus());
         if (Objects.nonNull(status) && !objects.contains(status)) {
             throw new BusinessException("只有【已保存】、【已撤回】和【已退回】的单据才支持删除!");
         }

+ 21 - 4
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerLogisticsService.java

@@ -197,7 +197,7 @@ public class KwpLedgerLogisticsService extends AbsLedger {
         kwpLedgerLogistics.setOrderCount(logisticsSendReq.getIdList().size());
         kwpLedgerLogistics.setUrl(Global.EMPTY_STRING);
         kwpLedgerLogistics.setGenerateTime(logisticsSendReq.getGenerateTime());
-        kwpLedgerLogistics.setRemark(Global.EMPTY_STRING);
+        kwpLedgerLogistics.setRemark(logisticsSendReq.getRemark());
         kwpLedgerLogistics.setStatus(logisticsSendReq.getStatus());
         kwpLedgerLogistics.setDelFlag(Global.UN_DELETED);
         //id为空,新增对账单
@@ -424,7 +424,12 @@ public class KwpLedgerLogisticsService extends AbsLedger {
 
         successCheck(kwpLedgerLogistics.getStatus());
         //更新对账单状态
-        kwpLedgerLogistics.setReceiptTime(LocalDateTime.of(ledgerReq.getReceiptTime(), LocalTime.MIN));
+        LocalDateTime receiptTime = null;
+
+        if (Objects.nonNull(ledgerReq.getReceiptTime())) {
+            receiptTime = LocalDateTime.of(ledgerReq.getReceiptTime(), LocalTime.MIN);
+            kwpLedgerLogistics.setReceiptTime(receiptTime);
+        }
         kwpLedgerLogistics.setStatus(LedgerEnum.SUCCESS.getStatus());
         kwpLedgerLogistics.setUpdateBy(LoginUserHolder.getUserId());
         kwpLedgerLogistics.setUpdateTime(LocalDateTime.now());
@@ -443,7 +448,7 @@ public class KwpLedgerLogisticsService extends AbsLedger {
         kwpSettlementLogistics.setAuditPhone(kwpLedgerLogistics.getAuditPhone());
         kwpSettlementLogistics.setSuccessUser(ledgerReq.getSuccessUser());
         kwpSettlementLogistics.setSuccessPhone(ledgerReq.getSuccessPhone());
-        kwpSettlementLogistics.setReceiptTime(LocalDateTime.of(ledgerReq.getReceiptTime(), LocalTime.MIN));
+        kwpSettlementLogistics.setReceiptTime(receiptTime);
         kwpSettlementLogistics.setStatus(SettlementEnum.WAITING_PAYMENT.getStatus());//1-待结算
         kwpSettlementLogistics.setCreateBy(LoginUserHolder.getUserId());
         kwpSettlementLogistics.setCreateTime(LocalDateTime.now());
@@ -542,13 +547,21 @@ public class KwpLedgerLogisticsService extends AbsLedger {
         /*获取物流对账单关联的物流订单*/
         List<KwpLedgerLogisticsOrder> kwpLedgerLogisticsOrders = logisticsOrderService.queryList(ledgerLogisticsDto.getId());
         LedgerLogisticsDetailVo ledgerLogisticsDetailVo = new LedgerLogisticsDetailVo();
+        SysDictResDto trading = remoteSystemService.queryDictByTypeAndValue(DictTypeEnum.TRADE_TYPE.getType(), ledgerLogisticsDto.getTrading());
+        SysDictResDto taxRate = remoteSystemService.queryDictByTypeAndValue(DictTypeEnum.TRADE_TYPE.getType(), String.valueOf(ledgerLogisticsDto.getTaxRate()));
+
         ledgerLogisticsDetailVo.setId(ledgerLogisticsDto.getId());
+        ledgerLogisticsDetailVo.setCheckEntId(ledgerLogisticsDto.getCheckEntId());
         ledgerLogisticsDetailVo.setLLedgerNo(ledgerLogisticsDto.getLLedgerNo());
         ledgerLogisticsDetailVo.setName(ledgerLogisticsDto.getName());
         ledgerLogisticsDetailVo.setFirmName(ledgerLogisticsDto.getFirmName());
         ledgerLogisticsDetailVo.setTrading(ledgerLogisticsDto.getTrading());
+        ledgerLogisticsDetailVo.setTradingLabel(Objects.nonNull(trading) ? trading.getLabel() : "");
+
         ledgerLogisticsDetailVo.setTaxRate(ledgerLogisticsDto.getTaxRate());
+        ledgerLogisticsDetailVo.setTaxRateLabel(Objects.nonNull(taxRate) ? taxRate.getLabel() : "");
         ledgerLogisticsDetailVo.setTotalPrice(ledgerLogisticsDto.getTotalPrice());
+        ledgerLogisticsDetailVo.setSettlePrice(ledgerLogisticsDto.getSettlePrice());
         ledgerLogisticsDetailVo.setActualPrice(ledgerLogisticsDto.getActualPrice());
         ledgerLogisticsDetailVo.setStartTime(ledgerLogisticsDto.getStartTime());
         ledgerLogisticsDetailVo.setEndTime(ledgerLogisticsDto.getEndTime());
@@ -556,7 +569,11 @@ public class KwpLedgerLogisticsService extends AbsLedger {
         /*查询物流订单详情*/
         if (!CollectionUtils.isEmpty(kwpLedgerLogisticsOrders)) {
             List<LogisticsOrderVO> acceptCarriageOrderList = transportDubboService.getAcceptCarriageOrderList(kwpLedgerLogisticsOrders.stream().map(a -> Long.toString(a.getLOrderId())).collect(Collectors.toList()));
-            ledgerLogisticsDetailVo.setOrderList(acceptCarriageOrderList);
+            if (CollectionUtils.isEmpty(acceptCarriageOrderList)) {
+                ledgerLogisticsDetailVo.setOrderList(new ArrayList<>());
+            } else {
+                ledgerLogisticsDetailVo.setOrderList(acceptCarriageOrderList);
+            }
         }
         return ledgerLogisticsDetailVo;
     }

+ 108 - 44
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerTradeService.java

@@ -1,6 +1,6 @@
 package com.sckw.payment.service;
 
-import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson2.JSONObject;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.sckw.core.common.enums.NumberConstant;
@@ -10,29 +10,23 @@ import com.sckw.core.exception.BusinessException;
 import com.sckw.core.model.constant.Global;
 import com.sckw.core.model.page.PageRes;
 import com.sckw.core.model.vo.TableTop;
-import com.sckw.core.utils.CollectionUtils;
-import com.sckw.core.utils.IdWorker;
-import com.sckw.core.utils.OrderGenerateUtils;
-import com.sckw.core.utils.StringTimeUtil;
+import com.sckw.core.utils.*;
 import com.sckw.core.web.context.LoginUserHolder;
 import com.sckw.order.api.dubbo.TradeOrderInfoService;
-import com.sckw.order.api.model.OrderDetailRes;
-import com.sckw.order.api.model.UpdateOrderStatusParam;
+import com.sckw.order.api.model.*;
 import com.sckw.payment.dao.KwpLedgerTradeMapper;
 import com.sckw.payment.model.*;
 import com.sckw.payment.model.constant.LedgerEnum;
 import com.sckw.payment.model.constant.LedgerTrackEnum;
 import com.sckw.payment.model.constant.SettlementEnum;
 import com.sckw.payment.model.constant.TradeUnitType;
-import com.sckw.payment.model.dto.ILedger;
-import com.sckw.payment.model.dto.LedgerPurchaseDto;
-import com.sckw.payment.model.dto.LedgerSellDto;
-import com.sckw.payment.model.dto.LedgerTradeDto;
+import com.sckw.payment.model.dto.*;
 import com.sckw.payment.model.vo.req.*;
 import com.sckw.payment.model.vo.res.LedgerTradeDetailVo;
 import com.sckw.system.api.RemoteSystemService;
 import com.sckw.system.api.model.dto.res.EntCacheResDto;
 import com.sckw.system.api.model.dto.res.SysDictResDto;
+import io.seata.spring.annotation.GlobalTransactional;
 import jakarta.annotation.Resource;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
@@ -186,7 +180,7 @@ public class KwpLedgerTradeService extends AbsLedger {
         kwpLedgerTrade.setReceiptTime(null);
         kwpLedgerTrade.setOrderCount(tradeSendReq.getIdList().size());
         kwpLedgerTrade.setUrl(Global.EMPTY_STRING);
-        kwpLedgerTrade.setRemark(Global.EMPTY_STRING);
+        kwpLedgerTrade.setRemark(tradeSendReq.getRemark());
         kwpLedgerTrade.setStatus(tradeSendReq.getStatus());
 
         kwpLedgerTrade.setDelFlag(Global.UN_DELETED);
@@ -208,7 +202,7 @@ public class KwpLedgerTradeService extends AbsLedger {
 
         /*保存贸易订单关联数据*/
         List<Long> ids = tradeSendReq.getIdList();
-        //todo-xcq 校验当前订单是否已存在绑定的对账单
+        //校验当前订单是否已存在绑定的对账单
         tradeOrderService.check(ids);
         List<OrderDetailRes> resList = new ArrayList<>();
         for (Long id : ids) {
@@ -218,6 +212,16 @@ public class KwpLedgerTradeService extends AbsLedger {
             }
             resList.add(orderDetailById);
         }
+        for (Long id : ids) {
+            //dubbo 更新关联订单状态为已绑定
+            UpdateAssociateStatementParam updateAssociateStatementParam = new UpdateAssociateStatementParam();
+            updateAssociateStatementParam.setTOrderId(id);
+            updateAssociateStatementParam.setAssociateStatement(1);
+            updateAssociateStatementParam.setUpdateBy(LoginUserHolder.getUserId());
+            updateAssociateStatementParam.setUpdateByName(LoginUserHolder.getUserName());
+            tradeOrderInfoService.updateAssociateStatement(updateAssociateStatementParam);
+        }
+
         List<KwpLedgerTradeOrder> collect = resList.stream().map(a -> {
             KwpLedgerTradeOrder kwpLedgerTradeOrder = new KwpLedgerTradeOrder();
             kwpLedgerTradeOrder.setId(new IdWorker(NumberConstant.ONE).nextId());
@@ -235,7 +239,7 @@ public class KwpLedgerTradeService extends AbsLedger {
         }).collect(Collectors.toList());
         tradeOrderService.saveList(collect);
         /*保存企业单位相关信息*/
-        //todo-xcq dubbo拿取采购客户单位的信息
+        // dubbo拿取采购客户单位的信息
         Long purchaseEntId = Long.parseLong(tradeSendReq.getPurchaseEntId());
         Map<Long, EntCacheResDto> entMap = remoteSystemService.queryEntTreeByIds(Collections.singletonList(purchaseEntId));
         EntCacheResDto entCacheResDto = entMap.get(purchaseEntId);
@@ -345,13 +349,29 @@ public class KwpLedgerTradeService extends AbsLedger {
      */
     @Transactional(rollbackFor = Exception.class)
     public String remove(Long id) {
+        log.info("删除贸易对账单:{}", id);
         KwpLedgerTrade kwpLedgerTrade = tradeMapper.selectById(id);
         orderCheck(kwpLedgerTrade);
         deleteCheck(kwpLedgerTrade.getStatus());
+
+        List<KwpLedgerTradeOrder> kwpLedgerTradeOrders = tradeOrderService.queryList(id);
+        if (CollectionUtils.isEmpty(kwpLedgerTradeOrders)) {
+            throw new BusinessException("未找到关联订单!");
+        }
         kwpLedgerTrade.setDelFlag(Global.DELETED);
         kwpLedgerTrade.setUpdateBy(LoginUserHolder.getUserId());
         kwpLedgerTrade.setUpdateTime(LocalDateTime.now());
         tradeMapper.updateById(kwpLedgerTrade);
+        //更新贸易订单状态为未绑定对账单
+        for (KwpLedgerTradeOrder kwpLedgerTradeOrder : kwpLedgerTradeOrders) {
+            UpdateAssociateStatementParam updateAssociateStatementParam = new UpdateAssociateStatementParam();
+            updateAssociateStatementParam.setTOrderId(kwpLedgerTradeOrder.getTOrderId());
+            updateAssociateStatementParam.setAssociateStatement(0);
+            updateAssociateStatementParam.setUpdateBy(LoginUserHolder.getUserId());
+            updateAssociateStatementParam.setUpdateByName(LoginUserHolder.getUserName());
+            tradeOrderInfoService.updateAssociateStatement(updateAssociateStatementParam);
+        }
+        //记录操作记录
         tradeTrackService.saveTrack(kwpLedgerTrade.getId(), Global.EMPTY_STRING, LedgerTrackEnum.DELETE);
         return "删除成功";
     }
@@ -364,6 +384,7 @@ public class KwpLedgerTradeService extends AbsLedger {
      */
     @Transactional(rollbackFor = Exception.class)
     public String backOrder(Long id) {
+        log.info("撤回贸易对账单:{}", id);
         KwpLedgerTrade kwpLedgerTrade = tradeMapper.selectById(id);
         orderCheck(kwpLedgerTrade);
         revokeCheck(kwpLedgerTrade.getStatus());
@@ -397,6 +418,7 @@ public class KwpLedgerTradeService extends AbsLedger {
      */
     @Transactional(rollbackFor = Exception.class)
     public String doBack(LedgerReq ledgerReq) {
+        log.info("驳回贸易对账单:{}", JSONObject.toJSONString(ledgerReq));
         KwpLedgerTrade kwpLedgerTrade = tradeMapper.selectById(ledgerReq.getIdLong());
         orderCheck(kwpLedgerTrade);
         backCheck(kwpLedgerTrade.getStatus());
@@ -416,6 +438,7 @@ public class KwpLedgerTradeService extends AbsLedger {
      */
     @Transactional(rollbackFor = Exception.class)
     public String confirmOrder(LedgerConfirmReq confirmReq) {
+        log.info("贸易对账单对账确认:{}", JSONObject.toJSONString(confirmReq));
         KwpLedgerTrade kwpLedgerTrade = tradeMapper.selectById(confirmReq.getIdLong());
         orderCheck(kwpLedgerTrade);
         confirmCheck(kwpLedgerTrade.getStatus());
@@ -436,7 +459,9 @@ public class KwpLedgerTradeService extends AbsLedger {
      * @param ledgerReq 对账完成参数
      * @return
      */
+    @GlobalTransactional(name = "default_tx_group", rollbackFor = Exception.class)
     public String orderSuccess(LedgerSuccessReq ledgerReq) {
+        log.info("贸易对账单对账完成:{}", JSONObject.toJSONString(ledgerReq));
         Long id = ledgerReq.getIdLong();
         //校验对账单状态
         KwpLedgerTrade kwpLedgerTrade = tradeMapper.selectById(id);
@@ -448,7 +473,11 @@ public class KwpLedgerTradeService extends AbsLedger {
             throw new BusinessException("未找到关联的贸易订单");
         }
         //更新对账单
-        kwpLedgerTrade.setReceiptTime(LocalDateTime.of(ledgerReq.getReceiptTime(), LocalTime.MIN));
+        LocalDateTime receiptTime = null;
+        if (Objects.nonNull(ledgerReq.getReceiptTime())) {
+            receiptTime = LocalDateTime.of(ledgerReq.getReceiptTime(), LocalTime.MIN);
+            kwpLedgerTrade.setReceiptTime(receiptTime);
+        }
         kwpLedgerTrade.setStatus(LedgerEnum.SUCCESS.getStatus());
         kwpLedgerTrade.setUpdateTime(LocalDateTime.now());
         tradeMapper.updateById(kwpLedgerTrade);
@@ -466,7 +495,7 @@ public class KwpLedgerTradeService extends AbsLedger {
         kwpSettlementTrade.setAuditPhone(kwpLedgerTrade.getAuditPhone());
         kwpSettlementTrade.setSuccessUser(ledgerReq.getSuccessUser());
         kwpSettlementTrade.setSuccessPhone(ledgerReq.getSuccessPhone());
-        kwpSettlementTrade.setReceiptTime(LocalDateTime.of(ledgerReq.getReceiptTime(), LocalTime.MIN));
+        kwpSettlementTrade.setReceiptTime(receiptTime);
         kwpSettlementTrade.setStatus(SettlementEnum.WAITING_PAYMENT.getStatus());//1-待结算
         kwpSettlementTrade.setCreateBy(LoginUserHolder.getUserId());
         kwpSettlementTrade.setCreateTime(LocalDateTime.now());
@@ -554,31 +583,87 @@ public class KwpLedgerTradeService extends AbsLedger {
         orderCheck(ledgerTradeDto);
         updateCheck(ledgerTradeDto.getStatus());
         //查询对账单关联的订单
+        return getDetail(ledgerTradeDto);
+    }
+
+    private LedgerTradeDetailVo getDetail(LedgerTradeDto ledgerTradeDto) {
         List<KwpLedgerTradeOrder> kwpLedgerTradeOrders = tradeOrderService.queryList(ledgerTradeDto.getId());
         LedgerTradeDetailVo ledgerTradeDetailVo = new LedgerTradeDetailVo();
         ledgerTradeDetailVo.setId(ledgerTradeDto.getId());
+        ledgerTradeDetailVo.setPurchaseEntId(ledgerTradeDto.getPurchaseEntId());
         ledgerTradeDetailVo.setTLedgerNo(ledgerTradeDto.getTLedgerNo());
         ledgerTradeDetailVo.setName(ledgerTradeDto.getName());
         ledgerTradeDetailVo.setFirmName(ledgerTradeDto.getFirmName());
+        SysDictResDto trading = remoteSystemService.queryDictByTypeAndValue(DictTypeEnum.TRADE_TYPE.getType(), ledgerTradeDto.getTrading());
         ledgerTradeDetailVo.setTrading(ledgerTradeDto.getTrading());
+        ledgerTradeDetailVo.setTradingLabel(Objects.nonNull(trading) ? trading.getLabel() : "");//
+        SysDictResDto taxRate = remoteSystemService.queryDictByTypeAndValue(DictTypeEnum.TAX_RATE.getType(), String.valueOf(ledgerTradeDto.getTaxRate()));
         ledgerTradeDetailVo.setTaxRate(ledgerTradeDto.getTaxRate());
+        ledgerTradeDetailVo.setTaxRateLabel(Objects.nonNull(taxRate) ? taxRate.getLabel() : "");//
         ledgerTradeDetailVo.setTotalPrice(ledgerTradeDto.getTotalPrice());
+        ledgerTradeDetailVo.setSettlePrice(ledgerTradeDto.getSettlePrice());
         ledgerTradeDetailVo.setActualPrice(ledgerTradeDto.getActualPrice());
         ledgerTradeDetailVo.setStartTime(ledgerTradeDto.getStartTime());
         ledgerTradeDetailVo.setEndTime(ledgerTradeDto.getEndTime());
         ledgerTradeDetailVo.setRemark(ledgerTradeDto.getRemark());
         List<Long> collect = kwpLedgerTradeOrders.stream().map(KwpLedgerTradeOrder::getTOrderId).toList();
-        List<OrderDetailRes> detailRes = new ArrayList<>();
+        List<OrderDto> detailRes = new ArrayList<>();
         OrderDetailRes orderDetailById;
         //查询贸易订单详情
         for (Long aLong : collect) {
             orderDetailById = tradeOrderInfoService.getOrderDetailById(aLong);
-            detailRes.add(orderDetailById);
+            detailRes.add(changeOrder(orderDetailById));
         }
         ledgerTradeDetailVo.setOrderList(detailRes);
         return ledgerTradeDetailVo;
     }
 
+    private OrderDto changeOrder(OrderDetailRes orderDetailRes) {
+        OrderDto orderDto = new OrderDto();
+        BeanUtils.copyProperties(orderDetailRes, orderDto);
+        List<UnitInfoDetailRes> unitInfo = orderDetailRes.getUnitInfo();
+        if (!CollectionUtils.isEmpty(unitInfo)) {
+            for (UnitInfoDetailRes unitInfoDetailRes : unitInfo) {
+                if (StringUtils.equals(unitInfoDetailRes.getUnitType(), "1")) {
+                    orderDto.setSupplyEntId(unitInfoDetailRes.getEntId());
+                    orderDto.setSupplyFirmName(unitInfoDetailRes.getFirmName());
+                }
+                if (StringUtils.equals(unitInfoDetailRes.getUnitType(), "2")) {
+                    orderDto.setProcureEntId(unitInfoDetailRes.getEntId());
+                    orderDto.setProcureFirmName(unitInfoDetailRes.getFirmName());
+                }
+            }
+        }
+        ContractInfo contractInfo = orderDetailRes.getContractInfo();
+        if (Objects.nonNull(contractInfo)) {
+            orderDto.setContractId(contractInfo.getContractId());
+            orderDto.setContractNo(contractInfo.getContractNo());
+            orderDto.setContractName(contractInfo.getContractName());
+            orderDto.setContractSigningWay(contractInfo.getContractSigningWay());
+        }
+        GoodsInfoDetailRes goodsInfo = orderDetailRes.getGoodsInfo();
+        if (Objects.nonNull(goodsInfo)) {
+            orderDto.setGoodsId(goodsInfo.getGoodsId());
+            orderDto.setGoodsSpec(goodsInfo.getSpec());
+            orderDto.setGoodsName(goodsInfo.getName());
+        }
+        List<AddressInfoDetail> addressInfo = orderDetailRes.getAddressInfo();
+        if (!CollectionUtils.isEmpty(addressInfo)) {
+            for (AddressInfoDetail addressInfoDetail : addressInfo) {
+                if (StringUtils.equals(addressInfoDetail.getAddressType(), "1")) {
+                    orderDto.setLoadName(addressInfoDetail.getName());
+                    orderDto.setLoadDetailAddressInfo(addressInfoDetail.getDetailAddress());
+                }
+                if (StringUtils.equals(addressInfoDetail.getAddressType(), "2")) {
+                    orderDto.setUnloadName(addressInfoDetail.getName());
+                    orderDto.setUnloadDetailAddressInfo(addressInfoDetail.getDetailAddress());
+                }
+            }
+        }
+        orderDto.setTorderId(orderDetailRes.getId());
+        return orderDto;
+    }
+
     /**
      * 查询对账单详情
      *
@@ -590,42 +675,21 @@ public class KwpLedgerTradeService extends AbsLedger {
         LedgerTradeDto ledgerTradeDto = tradeMapper.selectId(id, unitType);
         orderCheck(ledgerTradeDto);
         //查询对账单关联的贸易订单
-        List<KwpLedgerTradeOrder> kwpLedgerTradeOrders = tradeOrderService.queryList(ledgerTradeDto.getId());
-        LedgerTradeDetailVo ledgerTradeDetailVo = new LedgerTradeDetailVo();
-        ledgerTradeDetailVo.setId(ledgerTradeDto.getId());
-        ledgerTradeDetailVo.setTLedgerNo(ledgerTradeDto.getTLedgerNo());
-        ledgerTradeDetailVo.setName(ledgerTradeDto.getName());
-        ledgerTradeDetailVo.setFirmName(ledgerTradeDto.getFirmName());
-        ledgerTradeDetailVo.setTrading(ledgerTradeDto.getTrading());
-        ledgerTradeDetailVo.setTaxRate(ledgerTradeDto.getTaxRate());
-        ledgerTradeDetailVo.setTotalPrice(ledgerTradeDto.getTotalPrice());
-        ledgerTradeDetailVo.setActualPrice(ledgerTradeDto.getActualPrice());
-        ledgerTradeDetailVo.setStartTime(ledgerTradeDto.getStartTime());
-        ledgerTradeDetailVo.setEndTime(ledgerTradeDto.getEndTime());
-        ledgerTradeDetailVo.setRemark(ledgerTradeDto.getRemark());
-        List<Long> collect = kwpLedgerTradeOrders.stream().map(KwpLedgerTradeOrder::getTOrderId).toList();
-        List<OrderDetailRes> detailRes = new ArrayList<>();
-        OrderDetailRes orderDetailById;
-        for (Long aLong : collect) {
-            orderDetailById = tradeOrderInfoService.getOrderDetailById(aLong);
-            detailRes.add(orderDetailById);
-        }
-        ledgerTradeDetailVo.setOrderList(detailRes);
-        return ledgerTradeDetailVo;
+        return getDetail(ledgerTradeDto);
     }
 
-    public PageRes<OrderDetailRes> orderList(LedgerListReq ledgerListReq) {
+    public PageRes<OrderDto> orderList(LedgerListReq ledgerListReq) {
         PageHelper.startPage(ledgerListReq.getPage(), ledgerListReq.getPageSize());
         List<KwpLedgerTradeOrder> kwpLedgerLogisticsOrders = tradeOrderService.queryList(ledgerListReq.getIdLong());
         if (CollectionUtils.isEmpty(kwpLedgerLogisticsOrders)) {
             return new PageRes<>();
         }
         PageInfo<KwpLedgerTradeOrder> pageInfo = new PageInfo<>(kwpLedgerLogisticsOrders);
-        List<OrderDetailRes> list = new ArrayList<>();
+        List<OrderDto> detailRes = new ArrayList<>();
         for (KwpLedgerTradeOrder kwpLedgerLogisticsOrder : kwpLedgerLogisticsOrders) {
             OrderDetailRes orderDetailById = tradeOrderInfoService.getOrderDetailById(kwpLedgerLogisticsOrder.getTOrderId());
-            list.add(orderDetailById);
+            detailRes.add(changeOrder(orderDetailById));
         }
-        return PageRes.build(pageInfo, list);
+        return PageRes.build(pageInfo, detailRes);
     }
 }

+ 1 - 0
sckw-modules/sckw-payment/src/main/resources/mapper/KwpLedgerLogisticsMapper.xml

@@ -77,6 +77,7 @@
         kll.receipt_time  receiptTime,
         kll.remark,
         kll.status,
+        kllu.top_ent_id   checkEntId,
         kllu.contacts,
         kllu.phone,
         kllu.firm_name    firmName,

+ 1 - 0
sckw-modules/sckw-payment/src/main/resources/mapper/KwpLedgerTradeMapper.xml

@@ -319,6 +319,7 @@
                klt.remark,
                klt.status,
                kltu.contacts,
+               kltu.top_ent_id purchaseEntId,
                kltu.phone,
                kltu.firm_name    firmName,
                klt.order_count   orderCount

+ 11 - 1
sckw-modules/sckw-system/src/main/java/com/sckw/system/dubbo/RemoteBaseService.java

@@ -3,12 +3,12 @@ package com.sckw.system.dubbo;
 import com.sckw.core.model.constant.Global;
 import com.sckw.core.utils.BeanUtils;
 import com.sckw.core.utils.CollectionUtils;
+import com.sckw.system.api.model.dto.req.REnterpriseVo;
 import com.sckw.system.api.model.dto.res.*;
 import com.sckw.system.api.model.pojo.DeptInfoPojo;
 import com.sckw.system.dao.KwsEntDeptDao;
 import com.sckw.system.dao.KwsEntTypeDao;
 import com.sckw.system.model.*;
-import com.sckw.system.model.pojo.FindEntDeptInfoPojo;
 import com.sckw.system.model.vo.res.CertificateResVo;
 import com.sckw.system.model.vo.res.KwsDeptResVo;
 import com.sckw.system.service.KwsDeptService;
@@ -164,4 +164,14 @@ public class RemoteBaseService {
     public List<KwsUserResDto> getUserByName(String name) {
         return kwsUserService.getUserByName(name);
     }
+
+    /**
+     * @param entId 企业ID
+     * @desc 企业详情(企业登录/司机登录)
+     * @author zk
+     * @date 2023/8/10
+     **/
+    public REnterpriseVo queryEntDetails(Long entId) {
+        return kwsEnterpriseService.queryEntDetails(entId);
+    }
 }

+ 11 - 2
sckw-modules/sckw-system/src/main/java/com/sckw/system/dubbo/RemoteSystemServiceImpl.java

@@ -1,6 +1,5 @@
 package com.sckw.system.dubbo;
 
-
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
@@ -10,6 +9,7 @@ import com.sckw.core.utils.CollectionUtils;
 import com.sckw.core.utils.StringUtils;
 import com.sckw.redis.utils.RedissonUtils;
 import com.sckw.system.api.RemoteSystemService;
+import com.sckw.system.api.model.dto.req.REnterpriseVo;
 import com.sckw.system.api.model.dto.res.*;
 import com.sckw.system.api.model.pojo.DeptInfoPojo;
 import com.sckw.system.dao.SysDictDao;
@@ -19,7 +19,6 @@ import com.sckw.system.service.KwsUserService;
 import com.sckw.system.service.SysAreaService;
 import org.apache.dubbo.config.annotation.DubboService;
 import org.springframework.beans.factory.annotation.Autowired;
-
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -575,5 +574,15 @@ public class RemoteSystemServiceImpl implements RemoteSystemService {
         return result;
     }
 
+    /**
+     * @param entId 企业ID
+     * @desc 企业详情(企业登录/司机登录)
+     * @author zk
+     * @date 2023/8/10
+     *
+     * @return*/
+    public REnterpriseVo queryEntDetails(Long entId) {
+        return remoteBaseService.queryEntDetails(entId);
+    }
 
 }

+ 29 - 0
sckw-modules/sckw-system/src/main/java/com/sckw/system/service/KwsEnterpriseService.java

@@ -11,8 +11,10 @@ import com.sckw.core.utils.*;
 import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.context.LoginUserHolder;
 import com.sckw.core.web.model.EntCertificateInfo;
+import com.sckw.system.api.model.dto.req.REnterpriseVo;
 import com.sckw.system.api.model.dto.req.RegisterReqDto;
 import com.sckw.system.api.model.dto.res.EntCacheResDto;
+import com.sckw.system.api.model.dto.res.EntTypeResDto;
 import com.sckw.system.api.model.dto.res.RegisterResDto;
 import com.sckw.system.dao.*;
 import com.sckw.system.dubbo.RemoteSystemServiceImpl;
@@ -873,4 +875,31 @@ public class KwsEnterpriseService {
 
         return String.join(Global.COMMA, cooperateTypeList.stream().distinct().map(String::valueOf).toList());
     }
+
+    /**
+     * @param entId 企业ID
+     * @desc 企业详情(企业登录/司机登录)
+     * @author zk
+     * @date 2023/8/10
+     **/
+    public REnterpriseVo queryEntDetails(Long entId) {
+        REnterpriseVo enterpriseVo = new REnterpriseVo();
+        //企业信息
+        KwsEnterprise enterprise = kwsEnterpriseDao.selectByKey(entId);
+        BeanUtils.copyPropertiesValue(enterprise, enterpriseVo);
+
+        //企业类型
+        List<KwsEntType> entTypes = kwsEntTypeDao.findListByEntId(entId);
+        enterpriseVo.setEntTypes(entTypes != null ? String.join(Global.COMMA, entTypes.stream().map(KwsEntType::getType).map(String::valueOf).distinct().toList()) : null);
+        enterpriseVo.setEntTypeNames(enterpriseVo.getEntTypes() != null ?EntTypeEnum.getNames(enterpriseVo.getEntTypes()) : null);
+
+        Map<String, Object> queryParams = new HashMap(){{put("isMain", Global.YES); put("entId", entId); put("systemType", SystemTypeEnum.COMPANY.getCode());}};
+        List<KwsUserResVo> users = kwsUserService.findPage(queryParams);
+        KwsUserResVo user = users != null && users.size() > 0 ? users.get(Global.NUMERICAL_ZERO) : null;
+        enterpriseVo.setMainId(user != null ? user.getId() : null);
+        enterpriseVo.setMainName(user != null ? user.getName() : null);
+        enterpriseVo.setMainPhone(user != null ? user.getPhone() : null);
+        return enterpriseVo;
+    }
+
 }

+ 3 - 0
sckw-modules/sckw-system/src/main/resources/mapper/KwsUserDao.xml

@@ -252,6 +252,9 @@
     <if test="email != null and email != ''">
       and su.email = #{email, jdbcType=VARCHAR}
     </if>
+    <if test="isMain != null and isMain != ''">
+      and su.is_main = #{isMain, jdbcType=INTEGER}
+    </if>
     <if test="deptId != null and deptId != ''">
       and c.id = #{deptId, jdbcType=VARCHAR}
     </if>