diff --git a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/UserServiceFeign.java b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/UserServiceFeign.java index 4612f7199..3536ea139 100644 --- a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/UserServiceFeign.java +++ b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/UserServiceFeign.java @@ -11,6 +11,7 @@ import com.mhd.common.core.domain.todo.StatisticalMattersDo; import com.mhd.common.core.web.domain.AjaxResult; import com.mhd.common.core.web.page.TableDataInfo; import com.mhd.system.api.domain.UserDTO; +import com.mhd.system.api.domain.UserShipperFeignDTO; import com.mhd.system.api.domain.UserShipperQueryDTO; import com.mhd.system.api.domain.UserUpdateDTO; import com.mhd.system.api.factory.RemoteUserFeignFallbackFactory; @@ -218,4 +219,8 @@ public interface UserServiceFeign { @PostMapping("/userShipperApi/getCustomerNcCodeBatch") AjaxResult getCustomerNcCodeBatch(@RequestBody List shipperIdList); + + @ApiOperation("查询赊销额度") + @PostMapping("/userShipperApi/querySaleCreditLimitFeign") + public AjaxResult querySaleCreditLimitFeign(@RequestBody UserShipperFeignDTO userShipperDTO); } \ No newline at end of file diff --git a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/UserShipperEntityFeign.java b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/UserShipperEntityFeign.java new file mode 100644 index 000000000..a4d485ec5 --- /dev/null +++ b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/UserShipperEntityFeign.java @@ -0,0 +1,293 @@ +package com.mhd.system.api.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; + +@Data +public class UserShipperEntityFeign extends BaseVOEntity { + + private static final long serialVersionUID = 1L; + + @TableId(type = IdType.AUTO) + @ApiModelProperty(name = "用户主表ID") + private Long shipperId; + + @ApiModelProperty(name = "用户主表ID") + private Long userId; + + @ApiModelProperty(name = "上级货主表ID") + private Long parentShipperId; + + @ApiModelProperty(name = "货主类型:0-无状态,1-个人,2-企业,3-个体工商户,4-企业员工") + private Integer shipperType; + + @ApiModelProperty(name = "货主类别:1-普通客户 2-月结客户") + private Integer shipperCategory; + + @ApiModelProperty(name = "企业名称") + private String shipperEnterpriseName; + + @ApiModelProperty(name = "企业统一社会信用代码") + private String shipperEnterpriseSocialCreditCode; + + @ApiModelProperty(name = "企业注册电话") + private String shipperEnterprisePhone; + + @ApiModelProperty(name = "企业注册地址") + private String shipperEnterpriseAddress; + + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @ApiModelProperty(name = "企业营业期限起") + private Date shipperEnterpriseLicenseDateFrom; + + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @ApiModelProperty(name = "企业营业期限止") + private Date shipperEnterpriseLicenseDateTo; + + @ApiModelProperty(name = "纳税人资质") + private String shipperEnterpriseTaxpayer; + + @ApiModelProperty(name = "企业营业执照是否长期:0-无状态,1-是,2-否") + private Integer shipperEnterpriseLicenseLong; + + @ApiModelProperty(name = "营业执照照片") + private String shipperEnterpriseLicenseFrontUrl; + + @ApiModelProperty(name = "是否法人:0-无状态,1-是,2-否") + private Integer shipperCorp; + + /** + * 法人姓名 + */ + @ApiModelProperty(name = "法人姓名") + private String shipperCorpName; + + /** 企业法人姓名 */ + @ApiModelProperty("企业法人姓名") + @Excel(name = "企业法人姓名") + private String shipperCorpLegalName; + + @ApiModelProperty(name = "法人身份证号") + private String shipperCorpIdcardNumber; + + @ApiModelProperty(name = "法人身份证号加密") + private String shipperCorpIdcardNumberDes; + + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @ApiModelProperty(name = "法人身份证有效期自") + private Date shipperCorpIdcardDateFrom; + + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @ApiModelProperty(name = "法人身份证有效期止") + private Date shipperCorpIdcardDateTo; + + @ApiModelProperty(name = "法人身份证是否长期:0-无状态,1-是,2-否") + private Integer shipperCorpIdcardLong; + + @ApiModelProperty(name = "法人身份证正面照片") + private String shipperCorpIdcardFrontUrl; + + @ApiModelProperty(name = "法人身份证反面照片") + private String shipperCorpIdcardBackUrl; + + @ApiModelProperty(name = "法人身份证手持照片") + private String shipperCorpIdcardInhandUrl; + + @ApiModelProperty(name = "托运人个体货主认证状态:0-无状态,1-未认证,2-正在审核,3-认证通过,4-认证失败,5-认证失效") + private Integer shipperFill; + @ApiModelProperty(name = "托运人个人认证时间") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date shipperFillTime; + @ApiModelProperty(name = "托运人个体货主审核人员id") + private Long shipperFillAuthId; + @ApiModelProperty(name = "托运人个体货主审核人员") + private String shipperFillAuthName; + @ApiModelProperty(name = "托运人个体货主审核原因") + private String shipperFillRemark; + + @ApiModelProperty(name = "托运人发货企业认证状态:0-无状态,1-未认证,2-正在审核,3-认证通过,4-认证失败,5-认证失效") + private Integer shipperEnterpriseFill; + @ApiModelProperty(name = "托运人发货企业认证时间") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date shipperEnterpriseFillTime; + @ApiModelProperty(name = "托运人发货企业审核人员id") + private Long shipperEnterpriselAuthId; + @ApiModelProperty(name = "托运人发货企业审核人员") + private String shipperEnterpriselAuthName; + @ApiModelProperty(name = "托运人发货企业审核原因") + private String shipperEnterpriseFillRemark; + @ApiModelProperty(name = "纳税人识别号") + private String taxpayerNumber; + @ApiModelProperty(name = "托运人发货企业审核原因") + private String taxpayerQualification; + @ApiModelProperty(name = "营业执照过期日期") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date businessLicenseDate; + @ApiModelProperty(value = "所在地区省市县名称") + private String area; + @ApiModelProperty(name = "所在地区县区编码") + private String areaId; + @ApiModelProperty(name = "详细地址") + private String detailAddress; + @ApiModelProperty(name = "行业") + private String trade; + @ApiModelProperty(name = "经营范围") + private String businessScope; + @ApiModelProperty(name = "营业期限") + private String businessTerm; + @ApiModelProperty(name = "注册地址") + private String regAddress; + @ApiModelProperty(name = "注册资本") + private String capital; + @ApiModelProperty(name = "成立日期") + private String establishDate; + + @ApiModelProperty(name = "账号标识,创建后账号在e签宝平台中的唯一标识(认证授权ID-保留最新)") + private String companyAccountId ; + @ApiModelProperty(name = "用户电子签章(机构认证授权长连接)") + private String companyTemplateSeal; + + @ApiModelProperty(name = "月结标识 1-是 2-否") + private Integer monthlySettlementFlag; + @ApiModelProperty(name = "货源单自动审核(1-是 2-否)") + private Integer isAutoAuditOrder; + + @ApiModelProperty(name = "回单原件标记(1-需要,2-不需要)") + private Integer originalReceiptFlag; + + @ApiModelProperty(name = "运费节点(0-无要求,1-确认回单,2-纸质回单)") + private Integer freightNode; + + @ApiModelProperty(name = "e签宝授权认证状态(0-未授权,1-授权中,2-授权完成,3-授权失败)") + private Integer esignAuthStatus; + + @ApiModelProperty(name = "e签宝跨企业授权状态(0-未授权,1-授权中,2-授权完成,3-授权失败)") + private Integer esignEnterpriseStatus; + + @ApiModelProperty(name = "e签宝跨企业授权业务流程编号") + private String esignSealAuthId; + + @ApiModelProperty(value = "授权额度") + private BigDecimal authorizedQuota; + + @ApiModelProperty(value = "结算天数") + private Integer settlementDay; + + @ApiModelProperty(value = "已使用额度") + private BigDecimal authorizedUsedAmount; + + private String remark; + + @ApiModelProperty(name = "数据来源:1-接口同步 2-人工新增") + private Integer dataSource; + + @ApiModelProperty(name = "客户nc编码") + private String customerNcCode; + + @ApiModelProperty("结算币种") + private String settlementCurrency; + + @ApiModelProperty("职务/角色权限字符,控制器中定义的权限字符,如:@PreAuthorize(`@ss.hasRole('admin')`)") + private String roleCode; + + @ApiModelProperty("货主/供应商/客户编码") + private String userMemberCode; + + @ApiModelProperty("货主/供应商/客户名称") + private String userNameShipper; + + @ApiModelProperty("联系人") + private String emergencyContactName; + + @ApiModelProperty("联系电话") + private String emergencyContactPhone; + + @ApiModelProperty("省市区编码,6位") + private Long userAreaCountyId; + + @ApiModelProperty("省事区名称") + private String userAreaName; + + @ApiModelProperty("详细地址") + private String userAreaAddress; + + @ApiModelProperty("法人代表") + private String legalRepresentative; + + @ApiModelProperty("统一编码") + private String unifiedCode; + + @ApiModelProperty("注册电话") + private String registeredPhone; + + @ApiModelProperty("注册地址") + private String registeredAddress; + + @ApiModelProperty("传真") + private String fax; + + @ApiModelProperty("付款银行") + private String paymentBank; + + @ApiModelProperty("付款账户") + private String paymentAccount; + + @ApiModelProperty("发票抬头") + private String invoiceTitle; + + @ApiModelProperty("税号") + private String taxNumber; + + @ApiModelProperty(name = "邮箱") + private String userEmail; + + @ApiModelProperty(name = "备注") + private String userRemark; + + @ApiModelProperty(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty(name = "组织名称") + private String organizationName; + + @ApiModelProperty(name = "推送状态 1-未推送 2-推送中 3-推送成功 4-推送失败") + private Integer pushStatus; + @ApiModelProperty(name = "推送时间") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date pushTime; + @ApiModelProperty(name = "推送人") + 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; + + @ApiModelProperty(name = "信用余额") + private BigDecimal creditAmount; + + @ApiModelProperty("协议数量") + private Integer agreementCount; + + @ApiModelProperty(name = "是否校验信用") + private String isCheckCredit; + +} \ No newline at end of file diff --git a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/UserShipperFeignDTO.java b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/UserShipperFeignDTO.java new file mode 100644 index 000000000..a6cc0fb50 --- /dev/null +++ b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/UserShipperFeignDTO.java @@ -0,0 +1,270 @@ +package com.mhd.system.api.domain; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.annotation.fieldsetvalue.NeedSetValue; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +@Data +public class UserShipperFeignDTO extends UserDTO { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(name = "角色表ID集合") + private List roleIds; + + @ApiModelProperty(name = "货主表ID") + private Long shipperId; + + @ApiModelProperty(name = "用户主表ID") + private Long userId; + + @ApiModelProperty(name = "上级货主表ID") + private Long parentShipperId; + + @ApiModelProperty(name = "货主类型:0-无状态,1-个人,2-企业") + private Integer shipperType; + + @ApiModelProperty(name = "货主类别:1-普通客户 2-月结客户") + private Integer shipperCategory; + + @ApiModelProperty(name = "企业名称") + private String shipperEnterpriseName; + + @ApiModelProperty(name = "企业统一社会信用代码") + private String shipperEnterpriseSocialCreditCode; + + @ApiModelProperty(name = "企业注册电话") + private String shipperEnterprisePhone; + + @ApiModelProperty(name = "企业注册地址") + private String shipperEnterpriseAddress; + + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @ApiModelProperty(name = "企业营业期限起") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date shipperEnterpriseLicenseDateFrom; + + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @ApiModelProperty(name = "企业营业期限止") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date shipperEnterpriseLicenseDateTo; + + @ApiModelProperty(name = "企业营业执照是否长期:0-无状态,1-是,2-否") + private Integer shipperEnterpriseLicenseLong; + + @ApiModelProperty(name = "纳税人资质") + private String shipperEnterpriseTaxpayer; + + @ApiModelProperty(name = "营业执照照片") + @NeedSetValue + private String shipperEnterpriseLicenseFrontUrl; + + @ApiModelProperty(name = "是否法人:0-无状态,1-是,2-否") + private Integer shipperCorp; + + /** + * 法人姓名 + */ + @ApiModelProperty(name = "法人姓名") + private String shipperCorpName; + /** 企业法人姓名 */ + @ApiModelProperty("企业法人姓名") + @Excel(name = "企业法人姓名") + private String shipperCorpLegalName; + + @ApiModelProperty(name = "法人身份证号") + private String shipperCorpIdcardNumber; + + @ApiModelProperty(name = "法人身份证号加密") + private String shipperCorpIdcardNumberDes; + + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @ApiModelProperty(name = "法人身份证有效期自") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date shipperCorpIdcardDateFrom; + + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @ApiModelProperty(name = "法人身份证有效期止") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date shipperCorpIdcardDateTo; + + @ApiModelProperty(name = "法人身份证是否长期:0-无状态,1-是,2-否") + private Integer shipperCorpIdcardLong; + + @ApiModelProperty(name = "法人身份证正面照片") + @NeedSetValue + private String shipperCorpIdcardFrontUrl; + + @ApiModelProperty(name = "法人身份证反面照片") + @NeedSetValue + private String shipperCorpIdcardBackUrl; + + @ApiModelProperty(name = "法人身份证手持照片") + @NeedSetValue + private String shipperCorpIdcardInhandUrl; + + @ApiModelProperty(name = "货主审核状态:0-无状态,1-未认证,2-待审核,3-已通过,4-已驳回") + private Integer shipperAuthStatus; + @ApiModelProperty(name = "货主审核人用户姓名") + private String shipperAuthByUsername; + @ApiModelProperty(name = "货主审核时间") + private Date shipperAuthTime; + @ApiModelProperty(name = "货主审核原因") + private String shipperStatusRemark; + + + @ApiModelProperty(value = "创建时间") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTimeFrom; + @ApiModelProperty(value = "创建时间") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTimeTo; + + @ApiModelProperty(name = "审核角色:1-个人托运人,2-企业托运人") + private Integer authType; + + @ApiModelProperty(name = "新增托运人步骤(1-用户注册,2-提交认证资料,3-认证结果)") + private Integer stepFlag; + + @ApiModelProperty(name = "纳税人识别号") + private String taxpayerNumber; + @ApiModelProperty(name = "托运人发货企业审核原因") + private String taxpayerQualification; + @ApiModelProperty(name = "营业执照过期日期") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date businessLicenseDate; + @ApiModelProperty(value = "所在地区省市县名称") + private String area; + @ApiModelProperty(name = "所在地区县区编码") + private String areaId; + @ApiModelProperty(name = "详细地址") + private String detailAddress; + @ApiModelProperty(name = "行业") + private String trade; + @ApiModelProperty(name = "经营范围") + private String businessScope; + @ApiModelProperty(name = "营业期限") + private String businessTerm; + @ApiModelProperty(name = "注册地址") + private String regAddress; + @ApiModelProperty(name = "注册资本") + private String capital; + @ApiModelProperty(name = "成立日期") + private String establishDate; + @ApiModelProperty(name = "账号标识,创建后账号在e签宝平台中的唯一标识") + private String companyAccountId ; + @ApiModelProperty(name = "用户电子签章") + private String companyTemplateSeal; + + @ApiModelProperty(name = "月结标识 1-是 2-否") + private Integer monthlySettlementFlag; + @ApiModelProperty(name = "总授信额度") + private BigDecimal totalLimit; + @ApiModelProperty(name = "货源单自动审核(1-是 2-否)") + private Integer isAutoAuditOrder; + + @ApiModelProperty(name = "托运人个体货主认证状态:0-无状态,1-未认证,2-正在审核,3-认证通过,4-认证失败,5-认证失效") + private Integer shipperFill; + + @ApiModelProperty(name = "托运人发货企业认证状态:0-无状态,1-未认证,2-正在审核,3-认证通过,4-认证失败,5-认证失效") + private Integer shipperEnterpriseFill; + + @ApiModelProperty(name = "回单原件标记(1-需要,2-不需要)") + private Integer originalReceiptFlag; + + @ApiModelProperty(name = "运费节点(0-无要求,1-确认回单,2-纸质回单)") + private Integer freightNode; + + @ApiModelProperty(name = "用户主表ID集合") + private List userIdList; + + @ApiModelProperty(name = "备注信息") + private String remark; + + @ApiModelProperty(name = "数据来源:1-接口同步 2-人工新增") + private Integer dataSource; + + @ApiModelProperty("客户nc编码") + private String customerNcCode; + + @ApiModelProperty("客户nc编码列表") + private List customerNcCodeList; + + @ApiModelProperty("组织ID") + private Long organizationId; + + @ApiModelProperty("结算币种") + private String settlementCurrency; + + + @ApiModelProperty("货主/供应商/客户编码") + private String userMemberCode; + + @ApiModelProperty("货主/供应商/客户名称") + private String userNameShipper; + + @ApiModelProperty("法人代表") + private String legalRepresentative; + + @ApiModelProperty("统一编码") + private String unifiedCode; + + @ApiModelProperty("注册电话") + private String registeredPhone; + + @ApiModelProperty("注册地址") + private String registeredAddress; + + @ApiModelProperty(name = "邮箱") + private String userEmail; + + @ApiModelProperty("传真") + private String fax; + + @ApiModelProperty("付款银行") + private String paymentBank; + + @ApiModelProperty("付款账户") + private String paymentAccount; + + @ApiModelProperty("发票抬头") + private String invoiceTitle; + + @ApiModelProperty("税号") + private String taxNumber; + + + + @ApiModelProperty(value = "更新时间起") + private String updateTimeFrom; + + @ApiModelProperty(value = "更新时间止") + private String updateTimeTo; + + @ApiModelProperty(value = "推送时间起") + private String pushTimeFrom; + + @ApiModelProperty(value = "推送时间止") + private String pushTimeTo; + + @ApiModelProperty(value = "推送状态") + private Integer pushStatus; + + @ApiModelProperty(name = "登录账号(2-20位)") + private String userAccount; + + @ApiModelProperty(name = "登录密码(6-20位)") + private String userPassword; + @ApiModelProperty(name = "是否校验信用") + private String isCheckCredit; +} \ No newline at end of file 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 88f5dcc87..b83a922a7 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 @@ -26,6 +26,8 @@ import com.mhd.common.core.service.jPush.AsyncJPushApplicationService; import com.mhd.common.core.utils.StringUtils; import com.mhd.system.api.FinanceServiceFeign; import com.mhd.system.api.WlhyServiceFeign; +import com.mhd.system.api.domain.UserShipperEntityFeign; +import com.mhd.system.api.domain.UserShipperFeignDTO; import com.mhd.system.api.event.object.ShipperNameChangedEvent; import com.mhd.system.api.service.webSocket.AsyncWebSocketApplicationService; import com.mhd.user.domain.businessPartnerPushLog.entity.BusinessPartnerPushLog; @@ -1676,4 +1678,140 @@ public class UserShipperApplicationService { return AjaxResult.error("批量查询赊销额度失败:" + e.getMessage()); } } + + public AjaxResult querySaleCreditLimitFeign(UserShipperFeignDTO 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 (UserShipperEntityFeign userShipperEntity : customerNcCodeList) { + if (StringUtils.isEmpty(userShipperEntity.getCustomerNcCode())) { + continue; + } + UserShipperEntity userShipperEntity1 = userShipperMapper.selectOne(new LambdaQueryWrapper() + .eq(UserShipperEntity::getCustomerNcCode, userShipperEntity.getCustomerNcCode()) + .eq(UserShipperEntity::getUserId, userShipperEntity.getUserId())); + String orgcode = userShipperMapper.getOrgNcCode(userShipperEntity1.getOrganizationId()); + if (StringUtils.isEmpty(orgcode)) { + return AjaxResult.error("组织NC编码不能为空"); + } + try { + com.alibaba.fastjson.JSONObject queryParam = new com.alibaba.fastjson.JSONObject(); + queryParam.put("custcode", userShipperEntity.getCustomerNcCode()); + queryParam.put("orgcode", orgcode); + log.info("调用赊销额度查询接口,custcode={},orgcode={}", userShipperEntity.getCustomerNcCode(), 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={}", userShipperEntity.getCustomerNcCode(), queryResult); + + if (StringUtils.isNotEmpty(queryResult)) { + com.alibaba.fastjson.JSONObject resultJson = com.alibaba.fastjson.JSONObject.parseObject(queryResult); + allResults.put(userShipperEntity.getCustomerNcCode(), resultJson); + + // 第三步:查询成功,更新货主的额度同步时间(limitTime) + + if (userShipperEntity1 != null) { + // 根据查询结果同步数据 + com.alibaba.fastjson.JSONObject dataJson = resultJson.getJSONObject("data"); + if (dataJson != null) { + // 同步额度数据(limitdatas) + com.alibaba.fastjson.JSONArray limitdatas = dataJson.getJSONArray("limitdatas"); + if (limitdatas != null && !limitdatas.isEmpty()) { + com.alibaba.fastjson.JSONObject limitData = limitdatas.getJSONObject(0); + userShipperEntity1.setLimitTime(new Date()); + userShipperEntity1.setAuthorizedQuota(limitData.getBigDecimal("nlimitmny")); + userShipperEntity1.setAuthorizedUsedAmount(limitData.getBigDecimal("nengrossmny")); + userShipperEntity1.setSettlementCurrency(limitData.getString("currencycode")); + userShipperEntity1.setCreditAmount(limitData.getBigDecimal("nbalancemny")); + userShipperMapper.updateById(userShipperEntity1); + log.info("更新货主额度同步成功,custcode={},shipperId={}", userShipperEntity1.getCustomerNcCode(), userShipperEntity1.getShipperId()); + } else { + log.info("赊销额度查询无limitdatas返回,跳过额度更新,custcode={}", userShipperEntity1.getCustomerNcCode()); + } + + // 同步协议明细(agreedaydatas),与limitdatas独立 + com.alibaba.fastjson.JSONArray agreedaydatas = dataJson.getJSONArray("agreedaydatas"); + if (agreedaydatas != null && !agreedaydatas.isEmpty()) { + // 先删除该货主已有的协议明细,避免重复 + agreementDetailsMapper.delete(new LambdaQueryWrapper() + .eq(AgreementDetails::getShipperId, userShipperEntity1.getShipperId())); + int i; + for (i = 0; i < agreedaydatas.size(); i++) { + com.alibaba.fastjson.JSONObject agreeItem = agreedaydatas.getJSONObject(i); + AgreementDetails agreementDetails = new AgreementDetails(); + agreementDetails.setShipperId(userShipperEntity1.getShipperId()); + agreementDetails.setOrgcode(agreeItem.getString("orgcode")); + agreementDetails.setCode(agreeItem.getString("code")); + agreementDetails.setPday(agreeItem.getString("pday")); + agreementDetails.setPname(agreeItem.getString("pname")); + agreementDetails.setPtypename(agreeItem.getString("ptypename")); + agreementDetails.setPcode(agreeItem.getString("pcode")); + agreementDetails.setPtype(agreeItem.getString("ptype")); + agreementDetailsMapper.insert(agreementDetails); + } + userShipperEntity1.setAgreementCount(i); + userShipperMapper.updateById(userShipperEntity1); + log.info("同步协议明细成功,custcode={},shipperId={},共{}条", userShipperEntity1.getCustomerNcCode(), userShipperEntity1.getShipperId(), agreedaydatas.size()); + } else { + log.info("赊销额度查询无agreedaydatas返回,跳过协议明细同步,custcode={}", userShipperEntity1.getCustomerNcCode()); + } + } else { + log.info("赊销额度查询无data返回,跳过更新,custcode={}", userShipperEntity1.getCustomerNcCode()); + } + } else { + log.warn("未找到对应货主,custcode={},organizationId={}", userShipperEntity1.getCustomerNcCode(), userShipperDTO.getOrganizationId()); + } + } else { + log.warn("赊销额度查询返回为空,custcode={}", userShipperEntity1.getCustomerNcCode()); + } + } catch (Exception e) { + log.error("查询赊销额度异常,custcode={}", userShipperEntity1.getCustomerNcCode(), 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/interfaces/facade/UserShipperAPI.java b/mhd-user-center/src/main/java/com/mhd/user/interfaces/facade/UserShipperAPI.java index 8c2a4b2db..82c801b75 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 @@ -5,6 +5,7 @@ import com.mhd.common.core.domain.entity.R; import com.mhd.common.core.utils.bean.BeanUtils; import com.mhd.common.log.annotation.Log; import com.mhd.common.log.enums.BusinessType; +import com.mhd.system.api.domain.UserShipperFeignDTO; import com.mhd.user.application.service.UserApplicationService; import com.mhd.user.application.service.UserShipperApplicationService; import com.mhd.user.domain.userAggregate.repository.todo.*; @@ -99,6 +100,17 @@ public class UserShipperAPI extends BaseController { return userShipperApplicationService.querySaleCreditLimit(userShipperDTO); } + /** + * 查询赊销额度 + * @param userShipperDTO 包含 customerNcCode(客户编码)和 orgcode(组织编码) + * @return 赊销额度查询结果 + */ + @ApiOperation("查询赊销额度") + @PostMapping("/querySaleCreditLimitFeign") + public AjaxResult querySaleCreditLimitFeign(@RequestBody UserShipperFeignDTO userShipperDTO) { + return userShipperApplicationService.querySaleCreditLimitFeign(userShipperDTO); + } + @Log(title = "托运人管理-查询", description ="查询托运人列表",businessType = BusinessType.INQUIRE) @ApiOperation("查询托运人列表") @@ -330,4 +342,4 @@ public class UserShipperAPI extends BaseController { } return AjaxResult.success(resultMap); } -} +} \ No newline at end of file diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/repository/mapper/ReservationStockInOrderMapper.java b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/repository/mapper/ReservationStockInOrderMapper.java index c01e3ec65..2fbb11196 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/repository/mapper/ReservationStockInOrderMapper.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/repository/mapper/ReservationStockInOrderMapper.java @@ -49,4 +49,10 @@ public interface ReservationStockInOrderMapper extends BaseMapper userShipperEntityFeigns = new ArrayList<>(); + UserShipperEntityFeign userShipperEntityFeign = new UserShipperEntityFeign(); + userShipperEntityFeign.setUserId(userPo.getUserId()); + userShipperEntityFeign.setCustomerNcCode(customerNcCode); + userShipperEntityFeigns.add(userShipperEntityFeign); + userShipperFeignDTO.setCustomerNcCodeList(userShipperEntityFeigns); + AjaxResult ajaxResult1 = userServiceFeign.querySaleCreditLimitFeign(userShipperFeignDTO); + if (!"200".equals(String.valueOf(ajaxResult1.get("code")))){ + throw new ServiceException("获取货主信用额度失败"); + } else { + BigDecimal creditAmount = reservationStockInOrderMapper.getCreditAmount(userPo.getUserId()); + if (creditAmount != null && creditAmount.compareTo(BigDecimal.ZERO) > 0) { + }else{ + throw new ServiceException("货主信用额度小于0,不允许下单!"); + } + } + } return; } diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockOutOrder/service/ReservationStockOutOrderApplicationService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockOutOrder/service/ReservationStockOutOrderApplicationService.java index 0098c9a18..885770cc8 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockOutOrder/service/ReservationStockOutOrderApplicationService.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockOutOrder/service/ReservationStockOutOrderApplicationService.java @@ -896,6 +896,27 @@ public class ReservationStockOutOrderApplicationService { // stockOutOrderDO.setCustomerId(userPo.getUserId()); stockOutOrderDO.setCustomerCode(userPo.getUserMemberCode()); // stockOutOrderDO.setCustomerName(userPo.getUserName()); + String isCheckCredit = reservationStockInOrderMapper.getIsCheckCredit(userPo.getUserId()); + String customerNcCode = reservationStockInOrderMapper.getCustomerNcCode(userPo.getUserId()); + if(isCheckCredit != null&&"1".equals(isCheckCredit)){ + UserShipperFeignDTO userShipperFeignDTO = new UserShipperFeignDTO(); + List userShipperEntityFeigns = new ArrayList<>(); + UserShipperEntityFeign userShipperEntityFeign = new UserShipperEntityFeign(); + userShipperEntityFeign.setUserId(userPo.getUserId()); + userShipperEntityFeign.setCustomerNcCode(customerNcCode); + userShipperEntityFeigns.add(userShipperEntityFeign); + userShipperFeignDTO.setCustomerNcCodeList(userShipperEntityFeigns); + AjaxResult ajaxResult1 = userServiceFeign.querySaleCreditLimitFeign(userShipperFeignDTO); + if (!"200".equals(String.valueOf(ajaxResult1.get("code")))){ + throw new ServiceException("获取货主信用额度失败"); + } else { + BigDecimal creditAmount = reservationStockInOrderMapper.getCreditAmount(userPo.getUserId()); + if (creditAmount != null && creditAmount.compareTo(BigDecimal.ZERO) > 0) { + }else{ + throw new ServiceException("货主信用额度小于0,不允许下单!"); + } + } + } } } diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/reserveStockInOrder/service/ReserveStockInOrderApplicationService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/reserveStockInOrder/service/ReserveStockInOrderApplicationService.java index c6a221390..900443138 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/reserveStockInOrder/service/ReserveStockInOrderApplicationService.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/reserveStockInOrder/service/ReserveStockInOrderApplicationService.java @@ -13,6 +13,7 @@ import com.mhd.common.core.web.domain.AjaxResult; import com.mhd.common.security.utils.SecurityUtils; import com.mhd.oms.domain.reservationMaterialInventory.repository.mapper.ReservationMaterialInventoryMapper; import com.mhd.oms.domain.reservationMaterialInventory.repository.todo.MaterialBaseInfo; +import com.mhd.oms.domain.reservationStockInOrder.repository.mapper.ReservationStockInOrderMapper; import com.mhd.oms.domain.reservationStockInOrder.repository.po.MaterialBaseInfoPO; import com.mhd.oms.domain.reserveInMaterialDetail.entity.ReserveInMaterialDetail; import com.mhd.oms.domain.reserveInMaterialDetail.repository.po.ReserveInMaterialDetailPO; @@ -27,10 +28,7 @@ import com.mhd.oms.domain.reserveStockInOrder.repository.vo.ReservedInventory; import com.mhd.system.api.SystemServiceFeign; import com.mhd.system.api.UserServiceFeign; import com.mhd.system.api.WmsServiceFeign; -import com.mhd.system.api.domain.InMaterialDetailTZPD; -import com.mhd.system.api.domain.StockInOrderTZPD; -import com.mhd.system.api.domain.SysDictData; -import com.mhd.system.api.domain.WarehouseFeignPO; +import com.mhd.system.api.domain.*; import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO; import com.mhd.system.api.domain.cache.SystemServiceCacheUtil; import com.mhd.system.api.model.LoginUser; @@ -70,6 +68,8 @@ public class ReserveStockInOrderApplicationService { private SystemServiceFeign systemServiceFeign; @Autowired private WmsServiceFeign wmsServiceFeign; + @Autowired + private ReservationStockInOrderMapper reservationStockInOrderMapper; // @Autowired // private IMaterialBaseInfoService materialBaseInfoService; @@ -1842,6 +1842,27 @@ public class ReserveStockInOrderApplicationService { stockInOrderDO.setShipperId(userPo.getUserId()); stockInOrderDO.setShipperCode(userPo.getUserMemberCode()); stockInOrderDO.setShipperName(userPo.getUserName()); + String isCheckCredit = reservationStockInOrderMapper.getIsCheckCredit(userPo.getUserId()); + String customerNcCode = reservationStockInOrderMapper.getCustomerNcCode(userPo.getUserId()); + if(isCheckCredit != null&&"1".equals(isCheckCredit)){ + UserShipperFeignDTO userShipperFeignDTO = new UserShipperFeignDTO(); + List userShipperEntityFeigns = new ArrayList<>(); + UserShipperEntityFeign userShipperEntityFeign = new UserShipperEntityFeign(); + userShipperEntityFeign.setUserId(userPo.getUserId()); + userShipperEntityFeign.setCustomerNcCode(customerNcCode); + userShipperEntityFeigns.add(userShipperEntityFeign); + userShipperFeignDTO.setCustomerNcCodeList(userShipperEntityFeigns); + AjaxResult ajaxResult1 = userServiceFeign.querySaleCreditLimitFeign(userShipperFeignDTO); + if (!"200".equals(String.valueOf(ajaxResult1.get("code")))){ + throw new ServiceException("获取货主信用额度失败"); + } else { + BigDecimal creditAmount = reservationStockInOrderMapper.getCreditAmount(userPo.getUserId()); + if (creditAmount != null && creditAmount.compareTo(BigDecimal.ZERO) > 0) { + }else{ + throw new ServiceException("货主信用额度小于0,不允许下单!"); + } + } + } return; } diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/reserveStockOutOrder/service/ReserveStockOutOrderApplicationService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/reserveStockOutOrder/service/ReserveStockOutOrderApplicationService.java index 0069b5e5a..cc4295398 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/reserveStockOutOrder/service/ReserveStockOutOrderApplicationService.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/reserveStockOutOrder/service/ReserveStockOutOrderApplicationService.java @@ -16,6 +16,7 @@ import com.mhd.common.security.utils.SecurityUtils; import com.mhd.oms.domain.reservationInMaterialDetail.repository.todo.InventoryAdjustmentRecordPO; import com.mhd.oms.domain.reservationMaterialInventory.entity.ReservationMaterialInventory; import com.mhd.oms.domain.reservationMaterialInventory.repository.mapper.ReservationMaterialInventoryMapper; +import com.mhd.oms.domain.reservationStockInOrder.repository.mapper.ReservationStockInOrderMapper; import com.mhd.oms.domain.reservationStockInOrder.repository.po.MaterialBaseInfoPO; import com.mhd.oms.domain.reserveInMaterialDetail.repository.facade.IReserveInMaterialDetailService; import com.mhd.oms.domain.reserveInMaterialDetail.repository.todo.ReserveInMaterialDetailDO; @@ -80,6 +81,8 @@ public class ReserveStockOutOrderApplicationService { private IReserveInMaterialDetailService reservationInMaterialDetailService; @Autowired private IReserveOutMaterialDetailService outMaterialDetailService; + @Autowired + private ReservationStockInOrderMapper reservationStockInOrderMapper; // @Autowired // private IPickingMaterialDetailService pickingMaterialDetailService; @@ -903,6 +906,27 @@ public class ReserveStockOutOrderApplicationService { // stockOutOrderDO.setCustomerId(userPo.getUserId()); stockOutOrderDO.setCustomerCode(userPo.getUserMemberCode()); // stockOutOrderDO.setCustomerName(userPo.getUserName()); + String isCheckCredit = reservationStockInOrderMapper.getIsCheckCredit(userPo.getUserId()); + String customerNcCode = reservationStockInOrderMapper.getCustomerNcCode(userPo.getUserId()); + if(isCheckCredit != null&&"1".equals(isCheckCredit)){ + UserShipperFeignDTO userShipperFeignDTO = new UserShipperFeignDTO(); + List userShipperEntityFeigns = new ArrayList<>(); + UserShipperEntityFeign userShipperEntityFeign = new UserShipperEntityFeign(); + userShipperEntityFeign.setUserId(userPo.getUserId()); + userShipperEntityFeign.setCustomerNcCode(customerNcCode); + userShipperEntityFeigns.add(userShipperEntityFeign); + userShipperFeignDTO.setCustomerNcCodeList(userShipperEntityFeigns); + AjaxResult ajaxResult1 = userServiceFeign.querySaleCreditLimitFeign(userShipperFeignDTO); + if (!"200".equals(String.valueOf(ajaxResult1.get("code")))){ + throw new ServiceException("获取货主信用额度失败"); + } else { + BigDecimal creditAmount = reservationStockInOrderMapper.getCreditAmount(userPo.getUserId()); + if (creditAmount != null && creditAmount.compareTo(BigDecimal.ZERO) > 0) { + }else{ + throw new ServiceException("货主信用额度小于0,不允许下单!"); + } + } + } } } diff --git a/mhd_oms/src/main/resources/mapper/reservationStockInOrder/ReservationStockInOrderMapper.xml b/mhd_oms/src/main/resources/mapper/reservationStockInOrder/ReservationStockInOrderMapper.xml index de7c0715f..948753d7f 100644 --- a/mhd_oms/src/main/resources/mapper/reservationStockInOrder/ReservationStockInOrderMapper.xml +++ b/mhd_oms/src/main/resources/mapper/reservationStockInOrder/ReservationStockInOrderMapper.xml @@ -605,4 +605,16 @@ update "NGWL_TEST_WMS".stock_out_order set return_quantity = #{quantity} where out_order_number = #{orderNumber} + + + + + + \ No newline at end of file