用户注册、新增订单、售后反馈同步给mes接口开发

main
zangzhipeng 3 months ago
parent 259ebe4ecd
commit 6e5a2f32e7
  1. 21
      src/main/java/org/springblade/business/quality/controller/QualityController.java
  2. 55
      src/main/java/org/springblade/business/quality/pojo/dto/QualityRequest.java
  3. 6
      src/main/java/org/springblade/business/quality/service/IQualityService.java
  4. 89
      src/main/java/org/springblade/business/quality/service/impl/QualityServiceImpl.java
  5. 13
      src/main/java/org/springblade/business/salesOrder/pojo/entity/BodyItem.java
  6. 22
      src/main/java/org/springblade/business/salesOrder/pojo/entity/Head.java
  7. 17
      src/main/java/org/springblade/business/salesOrder/pojo/entity/OrderRequest.java
  8. 12
      src/main/java/org/springblade/business/salesOrder/pojo/entity/SalesOrderRequest.java
  9. 51
      src/main/java/org/springblade/business/salesOrder/service/impl/SalesOrderServiceImpl.java
  10. 15
      src/main/java/org/springblade/modules/system/controller/UserController.java
  11. 74
      src/main/java/org/springblade/modules/system/pojo/dto/UserDTO.java
  12. 71
      src/main/java/org/springblade/modules/system/pojo/entity/CustomerRequest.java
  13. 3
      src/main/java/org/springblade/modules/system/service/IUserService.java
  14. 48
      src/main/java/org/springblade/modules/system/service/impl/UserServiceImpl.java

@ -129,25 +129,8 @@ public class QualityController extends BladeController {
@ApiOperationSupport(order = 4)
@Operation(summary = "新增", description = "传入quality")
public R save(@Valid @RequestBody QualityDTO quality) {
quality.setErpOrderCode("ASC0" + CommonUtil.getSalesOrderCode());
quality.setHandleStatus("1");
// 获取图片集合
List<Attach> attachList = quality.getAttachList();
String picIds = "";
if (CollectionUtils.isNotEmpty(attachList)) {
// 保存图片信息
attachService.saveBatch(attachList);
// 图片id拼接赋值
StringBuilder sb = new StringBuilder();
attachList.forEach(attach -> sb.append(attach.getId()).append(","));
picIds = !sb.isEmpty() ? sb.substring(0, sb.length() - 1) : "";
}
quality.setPicIds(picIds);
boolean save = qualityService.save(quality);
if (save) {
// 将售后订单同步给mes
}
return R.status(save);
return R.status(qualityService.saveAndPush(quality));
}
/**

@ -0,0 +1,55 @@
package org.springblade.business.quality.pojo.dto;
import lombok.Data;
/**
* @author panFeng
*/
@Data
public class QualityRequest {
/**
* 接口类型
* 新增:Add
* 修改:Modify
* 删除Delete
*/
private String MethodName;
/**
* 客诉编号
*/
private String ComplaintCode;
/**
* 客户名称
*/
private String CustomerName;
/**
* 联系方式
*/
private String ContactInformation;
/**
* 投诉时间
*/
private String ComplaintTime;
/**
* 客户订单
*/
private String ProductBarCode;
/**
* 投诉内容
*/
private String Description;
/**
* 投诉类型
*/
private String ComplaintType;
/**
* 备注
*/
private String Remark;
/**
* 售后图片
*/
private String PictureUrl;
}

@ -28,6 +28,7 @@ package org.springblade.business.quality.service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.business.quality.excel.QualityExcel;
import org.springblade.business.quality.pojo.dto.QualityDTO;
import org.springblade.business.quality.pojo.entity.QualityEntity;
import org.springblade.business.quality.pojo.vo.QualityVO;
import org.springblade.business.quality.pojo.vo.StatiscsVO;
@ -65,4 +66,9 @@ public interface IQualityService extends BaseService<QualityEntity> {
List<StatiscsVO> countByHandleStatus();
List<StatiscsVO> countByHandleType();
/**
* 新增数据
*/
boolean saveAndPush(QualityDTO quality);
}

@ -1,21 +1,40 @@
package org.springblade.business.quality.service.impl;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.business.quality.excel.QualityExcel;
import org.springblade.business.quality.mapper.QualityMapper;
import org.springblade.business.quality.pojo.dto.QualityDTO;
import org.springblade.business.quality.pojo.dto.QualityRequest;
import org.springblade.business.quality.pojo.entity.QualityEntity;
import org.springblade.business.quality.pojo.vo.QualityVO;
import org.springblade.business.quality.pojo.vo.StatiscsVO;
import org.springblade.business.quality.service.IQualityService;
import org.springblade.business.salesOrder.pojo.entity.SalesOrderRequest;
import org.springblade.common.cache.DictCache;
import org.springblade.common.enums.DictEnum;
import org.springblade.common.utils.CommonUtil;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.modules.resource.pojo.entity.Attach;
import org.springblade.modules.resource.service.IAttachService;
import org.springblade.modules.system.pojo.entity.ApiResponse;
import org.springblade.modules.system.pojo.entity.Dict;
import org.springblade.modules.system.service.IDictService;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import org.springframework.web.client.RestTemplate;
import java.text.SimpleDateFormat;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
@ -24,9 +43,15 @@ import java.util.stream.Collectors;
* @author litao
* @since 2025-07-16
*/
@Slf4j
@Service
@AllArgsConstructor
public class QualityServiceImpl extends BaseServiceImpl<QualityMapper, QualityEntity> implements IQualityService {
private IAttachService attachService;
private final IDictService dictService;
@Override
public IPage<QualityVO> selectQualityPage(IPage<QualityVO> page, QualityVO quality) {
return page.setRecords(baseMapper.selectQualityPage(page, quality));
@ -112,4 +137,64 @@ public class QualityServiceImpl extends BaseServiceImpl<QualityMapper, QualityEn
}).collect(Collectors.toList());
}
@Override
public boolean saveAndPush(QualityDTO quality) {
quality.setErpOrderCode("ASC0" + CommonUtil.getSalesOrderCode());
quality.setHandleStatus("1");
// 获取图片集合
List<Attach> attachList = quality.getAttachList();
String picIds = "";
String picLinks = "";
if (CollectionUtils.isNotEmpty(attachList)) {
// 保存图片信息
attachService.saveBatch(attachList);
// 图片id拼接赋值
StringBuilder sb = new StringBuilder();
StringBuilder pl = new StringBuilder();
attachList.forEach(attach ->
{
sb.append(attach.getId()).append(",");
pl.append(attach.getLink()).append(",");
});
picIds = !sb.isEmpty() ? sb.substring(0, sb.length() - 1) : "";
picLinks = !pl.isEmpty() ? pl.substring(0, pl.length() - 1) : "";
}
quality.setPicIds(picIds);
boolean save = this.save(quality);
if (save) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
// 将销售订单同步给mes
String url = "http://118.253.182.64:8001/AfterSalesComplaint/SyncAfterSalesOrder";
RestTemplate restTemplate = new RestTemplate();
QualityRequest request = new QualityRequest();
request.setMethodName("Add");
request.setComplaintCode(quality.getErpOrderCode());
request.setCustomerName(quality.getCustomerName());
request.setContactInformation(quality.getContactPhone());
request.setComplaintTime(formatter.format(quality.getFeedbackTime() == null ? new Date() : quality.getFeedbackTime()));
request.setProductBarCode(quality.getSoCode());
request.setDescription(quality.getProblemDescription());
// 投诉类型
LambdaQueryWrapper<Dict> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(Dict::getCode, "problem_type").eq(Dict::getDictKey, quality.getProblemType());
request.setComplaintType(dictService.getOne(wrapper).getDictValue());
request.setRemark(quality.getRemark());
request.setPictureUrl(picLinks);
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<SalesOrderRequest> entity = new HttpEntity(request, headers);
ResponseEntity<ApiResponse> response = restTemplate.postForEntity(url, entity, ApiResponse.class);
log.info("同步销售订单结果:{}", response);
ApiResponse body = response.getBody();
save = Objects.requireNonNull(body).isState();
}
return save;
}
}

@ -0,0 +1,13 @@
package org.springblade.business.salesOrder.pojo.entity;
import lombok.Data;
// 商品明细类
@Data
public class BodyItem {
private String ProductCode;
private Integer Quantity;
private Double UnitPrice;
private Double TotalPrice;
private String Remark;
}

@ -0,0 +1,22 @@
package org.springblade.business.salesOrder.pojo.entity;
import lombok.Data;
// 头部信息类
@Data
public class Head {
private String MethodName;
private String ErpOrderCode;
private String OrderTime;
private String SalespersonID;
private String CustomerName;
private String PaymentTerms;
private String DeliveryDate;
private String TransportationMethod;
private String TransportationAddress;
private String Discounts;
private String Remark;
private String PaymentAmount;
private String OrderAmount;
}

@ -0,0 +1,17 @@
package org.springblade.business.salesOrder.pojo.entity;
import lombok.Data;
import java.util.List;
// 顶层请求类
@Data
public class OrderRequest {
private Head head;
private List<BodyItem> body;
}

@ -16,25 +16,25 @@ public class SalesOrderRequest {
* 修改:Modify
* 删除Delete
*/
private String methodName;
private String MethodName;
/**
* 订单编号
*/
private String erpOrderCode;
private String ErpOrderCode;
/**
* 客户编号
*/
private String customerCode;
private String CustomerCode;
/**
* 交货日期
*/
private String deliveryDate;
private String DeliveryDate;
/**
* 运输地址
*/
private String transportationAddress;
private String TransportationAddress;
/**
* 订单详情
*/
private List<OrderDetails> orderDetail;
private List<OrderDetails> OrderDetail;
}

@ -1,22 +1,20 @@
package org.springblade.business.salesOrder.service.impl;
import com.qiniu.util.Auth;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.springblade.business.salesOrder.mapper.SalesOrderMapper;
import org.springblade.business.salesOrder.pojo.dto.SalesOrderDTO;
import org.springblade.business.salesOrder.pojo.entity.OrderDetails;
import org.springblade.business.salesOrder.pojo.entity.SalesOrder;
import org.springblade.business.salesOrder.pojo.entity.SalesOrderDetail;
import org.springblade.business.salesOrder.pojo.entity.SalesOrderRequest;
import org.springblade.business.salesOrder.pojo.entity.*;
import org.springblade.business.salesOrder.service.ISalesOrderDetailService;
import org.springblade.business.salesOrder.service.ISalesOrderService;
import org.springblade.common.utils.CommonUtil;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.modules.system.pojo.entity.ApiResponse;
import org.springblade.modules.system.pojo.entity.CustomerRequest;
import org.springblade.modules.system.pojo.entity.User;
import org.springblade.modules.system.service.IUserService;
import org.springframework.http.HttpEntity;
@ -26,9 +24,7 @@ import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.client.RestTemplate;
import java.text.SimpleDateFormat;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
@ -39,6 +35,7 @@ import java.util.Objects;
* @author litao
* @since 2025-07-16
*/
@Slf4j
@Service
@AllArgsConstructor
public class SalesOrderServiceImpl extends BaseServiceImpl<SalesOrderMapper, SalesOrder> implements ISalesOrderService {
@ -61,32 +58,44 @@ public class SalesOrderServiceImpl extends BaseServiceImpl<SalesOrderMapper, Sal
if (save) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
// 将销售订单同步给mes
String url = "http://118.253.182.64:8001/AfterSalesComplaint/SyncAfterSalesOrder";
String url = "http://118.253.182.64:8001/CrmOrder/SyncCrmOrder";
RestTemplate restTemplate = new RestTemplate();
SalesOrderRequest request = new SalesOrderRequest();
request.setMethodName("Add");
request.setErpOrderCode(salesOrder.getCode());
request.setCustomerCode(AuthUtil.getUserAccount());
request.setDeliveryDate(formatter.format(salesOrder.getDeliveryDate()));
request.setTransportationAddress(salesOrder.getTransportationAddress());
OrderRequest orderRequest = new OrderRequest();
Head head = new Head();
List<BodyItem> orderDetailsList = new ArrayList<>();
head.setMethodName("Add");
head.setErpOrderCode(salesOrder.getCode());
// String userAccount = AuthUtil.getUserAccount();
// LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
// wrapper.eq(User::getAccount, userAccount);
// User one = userService.getOne(wrapper);
// String name = one.getName();
// head.setCustomerName(name);
head.setCustomerName("测试公司_01");
head.setDeliveryDate(formatter.format(salesOrder.getDeliveryDate()));
head.setTransportationAddress(salesOrder.getTransportationAddress());
List<SalesOrderDetail> detailList = salesOrder.getDetailList();
if (CollectionUtils.isNotEmpty(detailList)) {
List<OrderDetails> orderDetailsList = new ArrayList<>();
for (SalesOrderDetail salesOrderDetail : detailList) {
OrderDetails orderDetails = new OrderDetails();
BodyItem orderDetails = new BodyItem();
orderDetails.setProductCode(salesOrderDetail.getCommodityCode());
orderDetails.setQuantity(salesOrderDetail.getCommodityCount());
orderDetailsList.add(orderDetails);
}
request.setOrderDetail(orderDetailsList);
orderRequest.setBody(orderDetailsList);
}
orderRequest.setHead(head);
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<SalesOrderRequest> entity = new HttpEntity<>(request, headers);
HttpEntity<OrderRequest> entity = new HttpEntity<>(orderRequest, headers);
ResponseEntity<ApiResponse> response = restTemplate.postForEntity(url, entity, ApiResponse.class);
log.info(String.valueOf(response.getBody()));
ApiResponse body = response.getBody();
save = Objects.requireNonNull(body).isState();

@ -53,6 +53,7 @@ import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.StringPool;
import org.springblade.modules.system.excel.UserExcel;
import org.springblade.modules.system.excel.UserImporter;
import org.springblade.modules.system.pojo.dto.UserDTO;
import org.springblade.modules.system.pojo.entity.User;
import org.springblade.modules.system.pojo.vo.UserVO;
import org.springblade.modules.system.service.IUserService;
@ -372,12 +373,12 @@ public class UserController {
* 用户注册
*/
@PostMapping("/register-user")
public R registerUser(@RequestBody User user) {
user.setUserType(1);
user.setCode("CCI0" + CommonUtil.getSalesOrderCode());
user.setRoleId("1945392838767751170");
user.setDeptId("1123598813738675201");
user.setPostId("1123598817738675208");
return R.status(userService.registerUserApp(user));
public R registerUser(@RequestBody UserDTO userDTO) {
userDTO.setUserType(1);
userDTO.setCode("CCI0" + CommonUtil.getSalesOrderCode());
userDTO.setRoleId("1945392838767751170");
userDTO.setDeptId("1123598813738675201");
userDTO.setPostId("1123598817738675208");
return R.status(userService.registerUserApp(userDTO));
}
}

@ -0,0 +1,74 @@
package org.springblade.modules.system.pojo.dto;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.modules.system.pojo.entity.User;
/**
* @description: 用户信息
* @author Zangzhipeng
* @date 2025/9/6 9:02
* @version 1.0
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class UserDTO extends User {
// 联系人职位
@JsonProperty("ContactTitle")
private String contactTitle;
// 公司名称
@JsonProperty("CompanyName")
private String companyName;
// 公司地址
@JsonProperty("City")
private String city;
// 公司电话
@JsonProperty("Province")
private String province;
// 公司邮编
@JsonProperty("PostalCode")
private String postalCode;
// 国家
@JsonProperty("Country")
private String country;
// 邮箱
@JsonProperty("EmailAddress")
private String emailAddress;
// 电话
@JsonProperty("PhoneCode")
private String phoneCode;
// 传真
@JsonProperty("FaxCode")
private String faxCode;
// 网站
@JsonProperty("Website")
private String website;
// 行业
@JsonProperty("Industry")
private String industry;
// 账户状态
@JsonProperty("AccountStatus")
private String accountStatus;
// 备注
@JsonProperty("Remark")
private String remark;
// 客户分级
@JsonProperty("CustomerGrade")
private String customerGrade;
}

@ -1,5 +1,6 @@
package org.springblade.modules.system.pojo.entity;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
/**
@ -13,29 +14,85 @@ public class CustomerRequest {
* 修改:Modify
* 删除Delete
*/
private String methodName;
private String MethodName;
/**
* 客户名称
*/
private String customerName;
private String CustomerName;
/**
* 联系人姓名
*/
private String contactName;
private String ContactName;
/**
* 公司地址
*/
private String companyAddress;
private String CompanyAddress;
/**
* 手机号码
*/
private String mobileNumber;
private String MobileNumber;
/**
* 客户账号
*/
private String customerAccount;
private String CustomerAccount;
/**
* 客户密码
*/
private String customerPassWord;
private String CustomerPassWord;
// 联系人职位
@JsonProperty("ContactTitle")
private String ContactTitle;
// 公司名称
@JsonProperty("CompanyName")
private String CompanyName;
// 公司地址
@JsonProperty("City")
private String City;
// 公司电话
@JsonProperty("Province")
private String Province;
// 公司邮编
@JsonProperty("PostalCode")
private String PostalCode;
// 国家
@JsonProperty("Country")
private String Country;
// 邮箱
@JsonProperty("EmailAddress")
private String EmailAddress;
// 电话
@JsonProperty("PhoneCode")
private String PhoneCode;
// 传真
@JsonProperty("FaxCode")
private String FaxCode;
// 网站
@JsonProperty("Website")
private String Website;
// 行业
@JsonProperty("Industry")
private String Industry;
// 账户状态
@JsonProperty("AccountStatus")
private String AccountStatus;
// 备注
@JsonProperty("Remark")
private String Remark;
// 客户分级
@JsonProperty("CustomerGrade")
private String CustomerGrade;
}

@ -31,6 +31,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
import org.springblade.core.mp.support.Query;
import org.springblade.modules.auth.provider.UserType;
import org.springblade.modules.system.pojo.dto.UserDTO;
import org.springblade.modules.system.pojo.entity.User;
import org.springblade.modules.system.pojo.entity.UserInfo;
import org.springblade.modules.system.pojo.entity.UserOauth;
@ -299,5 +300,5 @@ public interface IUserService extends BaseService<User> {
*/
List<UserVO> leaderList(String tenantId, String realName);
boolean registerUserApp(User user);
boolean registerUserApp(UserDTO userDTO);
}

@ -52,6 +52,7 @@ import org.springblade.core.tool.utils.*;
import org.springblade.modules.auth.provider.UserType;
import org.springblade.modules.system.excel.UserExcel;
import org.springblade.modules.system.mapper.UserMapper;
import org.springblade.modules.system.pojo.dto.UserDTO;
import org.springblade.modules.system.pojo.entity.*;
import org.springblade.modules.system.pojo.vo.UserVO;
import org.springblade.modules.system.service.IRoleService;
@ -67,10 +68,8 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.client.RestTemplate;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.*;
import java.util.function.Consumer;
import static org.springblade.common.constant.CommonConstant.DEFAULT_PARAM_PASSWORD;
import static org.springblade.core.cache.constant.CacheConstant.USER_CACHE;
@ -600,22 +599,41 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, User> implement
}
@Override
public boolean registerUserApp(User user) {
String password = user.getPassword();
boolean submit = this.submit(user);
public boolean registerUserApp(UserDTO userDTO) {
String password = userDTO.getPassword();
boolean submit = this.submit(userDTO);
CustomerRequest request = null;
RestTemplate restTemplate = null;
String url = null;
if (submit) {
// 将用户信息同步给mes
String url = "http://118.253.182.64:8001/CrmCustomer/SyncCustomer";
RestTemplate restTemplate = new RestTemplate();
CustomerRequest request = new CustomerRequest();
url = "http://118.253.182.64:8001/CrmCustomer/SyncCustomer";
restTemplate = new RestTemplate();
request = new CustomerRequest();
request.setMethodName("Add");
request.setCustomerName(user.getName());
request.setContactName(user.getRealName());
request.setCompanyAddress(user.getAvatar());
request.setMobileNumber(user.getPhone());
request.setCustomerAccount(user.getAccount());
request.setCustomerName(userDTO.getName());
request.setContactName(userDTO.getRealName());
request.setCompanyAddress(userDTO.getAvatar());
request.setMobileNumber(userDTO.getPhone());
request.setCustomerAccount(userDTO.getAccount());
request.setCustomerPassWord(password);
// 非必填项判断
Optional.ofNullable(userDTO.getContactTitle()).ifPresent(request::setContactTitle);
Optional.ofNullable(userDTO.getCompanyName()).ifPresent(request::setCompanyName);
Optional.ofNullable(userDTO.getCity()).ifPresent(request::setCity);
Optional.ofNullable(userDTO.getProvince()).ifPresent(request::setProvince);
Optional.ofNullable(userDTO.getPostalCode()).ifPresent(request::setPostalCode);
Optional.ofNullable(userDTO.getCountry()).ifPresent(request::setCountry);
Optional.ofNullable(userDTO.getEmailAddress()).ifPresent(request::setEmailAddress);
Optional.ofNullable(userDTO.getPhoneCode()).ifPresent(request::setPhoneCode);
Optional.ofNullable(userDTO.getFaxCode()).ifPresent(request::setFaxCode);
Optional.ofNullable(userDTO.getWebsite()).ifPresent(request::setWebsite);
Optional.ofNullable(userDTO.getIndustry()).ifPresent(request::setIndustry);
Optional.ofNullable(userDTO.getAccountStatus()).ifPresent(request::setAccountStatus);
Optional.ofNullable(userDTO.getRemark()).ifPresent(request::setRemark);
Optional.ofNullable(userDTO.getCustomerGrade()).ifPresent(request::setCustomerGrade);
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);

Loading…
Cancel
Save