diff --git a/mhd-user-center/src/main/java/com/mhd/user/application/service/UserShipperApplicationService.java b/mhd-user-center/src/main/java/com/mhd/user/application/service/UserShipperApplicationService.java index 4c4d02309..9036a0e75 100644 --- a/mhd-user-center/src/main/java/com/mhd/user/application/service/UserShipperApplicationService.java +++ b/mhd-user-center/src/main/java/com/mhd/user/application/service/UserShipperApplicationService.java @@ -3,7 +3,9 @@ package com.mhd.user.application.service; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.http.HttpRequest; import com.alibaba.fastjson.JSONArray; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.google.common.base.Strings; import com.mhd.common.core.constant.NoticeConstants; import com.mhd.common.core.domain.dto.AccountCashWalletDto; @@ -1511,4 +1513,104 @@ public class UserShipperApplicationService { String account = "MDM_" + code; return account.length() > 20 ? account.substring(0, 20) : account; } + + /** + * 批量查询赊销额度 + * 第一步:调用UAP登录接口获取token(只调一次) + * 第二步:遍历customerNcCodeList,逐个查询赊销额度 + * 第三步:查询成功后更新货主的额度同步时间(limitTime)并保存 + * + * @param userShipperDTO 包含 customerNcCodeList(客户编码列表)和 organizationId(组织ID) + * @return 每个客户编码的查询结果 + */ + public AjaxResult querySaleCreditLimit(UserShipperDTO userShipperDTO) { + List customerNcCodeList = userShipperDTO.getCustomerNcCodeList(); + if (CollUtil.isEmpty(customerNcCodeList)) { + return AjaxResult.error("客户编码列表不能为空"); + } + + try { + // 第一步:调用UAP登录接口获取token(批量共用一个token) + String loginUrl = "http://10.0.0.212/uapws/rest/user/login"; + com.alibaba.fastjson.JSONObject loginParam = new com.alibaba.fastjson.JSONObject(); + loginParam.put("usercode", "MDM"); + loginParam.put("pwd", "MDM1234!@#$"); + log.info("调用UAP登录接口,请求参数:{}", loginParam.toJSONString()); + + String loginResult = HttpRequest.post(loginUrl) + .header("Content-Type", "application/json") + .body(loginParam.toJSONString()) + .execute() + .body(); + log.info("UAP登录接口返回:{}", loginResult); + + if (StringUtils.isEmpty(loginResult)) { + return AjaxResult.error("UAP登录接口返回为空"); + } + com.alibaba.fastjson.JSONObject loginJson = com.alibaba.fastjson.JSONObject.parseObject(loginResult); + String uapToken = loginJson.getString("uap_token"); + String uapUsercode = loginJson.getString("uap_usercode"); + String uapDataSource = loginJson.getString("uap_dataSource"); + + if (StringUtils.isEmpty(uapToken)) { + return AjaxResult.error("UAP登录失败,未获取到token"); + } + + // 第二步:遍历每个customerNcCode,逐个查询赊销额度 + String queryUrl = "http://10.0.0.212/uapws/rest/api/salecredit/querysalecreditlimit"; + com.alibaba.fastjson.JSONObject allResults = new com.alibaba.fastjson.JSONObject(); + + for (String custcode : customerNcCodeList) { + if (StringUtils.isEmpty(custcode)) { + continue; + } + UserShipperEntity userShipperEntity = userShipperMapper.selectOne(new LambdaQueryWrapper() + .eq(UserShipperEntity::getCustomerNcCode, custcode)); + String orgcode = userShipperMapper.getOrgNcCode(userShipperEntity.getOrganizationId()); + if (StringUtils.isEmpty(orgcode)) { + return AjaxResult.error("组织NC编码不能为空"); + } + try { + com.alibaba.fastjson.JSONObject queryParam = new com.alibaba.fastjson.JSONObject(); + queryParam.put("custcode", custcode); + queryParam.put("orgcode", orgcode); + log.info("调用赊销额度查询接口,custcode={},orgcode={}", custcode, orgcode); + + String queryResult = HttpRequest.post(queryUrl) + .header("Content-Type", "application/json") + .header("uap_token", uapToken) + .header("uap_usercode", uapUsercode) + .header("uap_dataSource", uapDataSource) + .header("token", "94B3992EAD9747D3598CC6F7775F6239B5DC3B526DF7DE0091CB8B2D") + .body(queryParam.toJSONString()) + .execute() + .body(); + log.info("赊销额度查询接口返回,custcode={},result={}", custcode, queryResult); + + if (StringUtils.isNotEmpty(queryResult)) { + com.alibaba.fastjson.JSONObject resultJson = com.alibaba.fastjson.JSONObject.parseObject(queryResult); + allResults.put(custcode, resultJson); + + // 第三步:查询成功,更新货主的额度同步时间(limitTime) + + if (userShipperEntity != null) { + userShipperEntity.setLimitTime(new Date()); + userShipperMapper.updateById(userShipperEntity); + log.info("更新货主额度同步时间成功,custcode={},shipperId={}", custcode, userShipperEntity.getShipperId()); + } else { + log.warn("未找到对应货主,custcode={},organizationId={}", custcode, userShipperDTO.getOrganizationId()); + } + } else { + log.warn("赊销额度查询返回为空,custcode={}", custcode); + } + } catch (Exception e) { + log.error("查询赊销额度异常,custcode={}", custcode, e); + } + } + return AjaxResult.success(allResults); + } catch (Exception e) { + log.error("批量查询赊销额度异常", e); + return AjaxResult.error("批量查询赊销额度失败:" + e.getMessage()); + } + } } \ No newline at end of file diff --git a/mhd-user-center/src/main/java/com/mhd/user/domain/userAggregate/entity/UserShipperEntity.java b/mhd-user-center/src/main/java/com/mhd/user/domain/userAggregate/entity/UserShipperEntity.java index 8ff833a70..bd8e574b4 100644 --- a/mhd-user-center/src/main/java/com/mhd/user/domain/userAggregate/entity/UserShipperEntity.java +++ b/mhd-user-center/src/main/java/com/mhd/user/domain/userAggregate/entity/UserShipperEntity.java @@ -277,5 +277,9 @@ public class UserShipperEntity extends BaseVOEntity { private Long pushBy; @ApiModelProperty(name = "推送人姓名") private String pushByName; + @ApiModelProperty(name = "额度同步时间") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date limitTime; } \ No newline at end of file diff --git a/mhd-user-center/src/main/java/com/mhd/user/domain/userAggregate/repository/mapper/UserShipperMapper.java b/mhd-user-center/src/main/java/com/mhd/user/domain/userAggregate/repository/mapper/UserShipperMapper.java index 2970a1dbc..940d9010c 100644 --- a/mhd-user-center/src/main/java/com/mhd/user/domain/userAggregate/repository/mapper/UserShipperMapper.java +++ b/mhd-user-center/src/main/java/com/mhd/user/domain/userAggregate/repository/mapper/UserShipperMapper.java @@ -51,4 +51,6 @@ public interface UserShipperMapper extends BaseMapper { UserShipperPo findByCustomerNcCodeAndCompanyName(@Param("customerNcCode") String customerNcCode, @Param("companyName") String companyName, @Param("organizationId") Long organizationId); + + String getOrgNcCode(Long organizationId); } \ No newline at end of file diff --git a/mhd-user-center/src/main/java/com/mhd/user/interfaces/dto/addDTO/UserShipperDTO.java b/mhd-user-center/src/main/java/com/mhd/user/interfaces/dto/addDTO/UserShipperDTO.java index bf3310276..25e4a691a 100644 --- a/mhd-user-center/src/main/java/com/mhd/user/interfaces/dto/addDTO/UserShipperDTO.java +++ b/mhd-user-center/src/main/java/com/mhd/user/interfaces/dto/addDTO/UserShipperDTO.java @@ -197,6 +197,12 @@ public class UserShipperDTO extends UserDTO { @ApiModelProperty("客户nc编码") private String customerNcCode; + @ApiModelProperty("客户nc编码列表") + private List customerNcCodeList; + + @ApiModelProperty("组织ID") + private Long organizationId; + @ApiModelProperty("结算币种") private String settlementCurrency; diff --git a/mhd-user-center/src/main/java/com/mhd/user/interfaces/facade/UserShipperAPI.java b/mhd-user-center/src/main/java/com/mhd/user/interfaces/facade/UserShipperAPI.java index 51aaca364..8c2a4b2db 100644 --- a/mhd-user-center/src/main/java/com/mhd/user/interfaces/facade/UserShipperAPI.java +++ b/mhd-user-center/src/main/java/com/mhd/user/interfaces/facade/UserShipperAPI.java @@ -88,6 +88,18 @@ public class UserShipperAPI extends BaseController { return toAjax(userShipperApplicationService.authShipper(userShipperDO)); } + /** + * 查询赊销额度 + * @param userShipperDTO 包含 customerNcCode(客户编码)和 orgcode(组织编码) + * @return 赊销额度查询结果 + */ + @ApiOperation("查询赊销额度") + @PostMapping("/querySaleCreditLimit") + public AjaxResult querySaleCreditLimit(@RequestBody UserShipperDTO userShipperDTO) { + return userShipperApplicationService.querySaleCreditLimit(userShipperDTO); + } + + @Log(title = "托运人管理-查询", description ="查询托运人列表",businessType = BusinessType.INQUIRE) @ApiOperation("查询托运人列表") @GetMapping("/userShipperList") diff --git a/mhd-user-center/src/main/resources/mapper/UserShipperMapper.xml b/mhd-user-center/src/main/resources/mapper/UserShipperMapper.xml index aecb52637..9d662b07b 100644 --- a/mhd-user-center/src/main/resources/mapper/UserShipperMapper.xml +++ b/mhd-user-center/src/main/resources/mapper/UserShipperMapper.xml @@ -615,6 +615,9 @@ AND a.organization_id = #{organizationId} LIMIT 1 + \ No newline at end of file