feat(支持与O1系统进行数据同步):
							parent
							
								
									c6d32fdfe1
								
							
						
					
					
						commit
						8d081a3adc
					
				@ -0,0 +1,40 @@
 | 
				
			|||||||
 | 
					package com.currency.appengine.domain;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import lombok.AllArgsConstructor;
 | 
				
			||||||
 | 
					import lombok.Builder;
 | 
				
			||||||
 | 
					import lombok.Data;
 | 
				
			||||||
 | 
					import lombok.NoArgsConstructor;
 | 
				
			||||||
 | 
					import lombok.ToString;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * 同步供应商数据VO
 | 
				
			||||||
 | 
					 * @author zk
 | 
				
			||||||
 | 
					 * @date 2024/9/30
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					@Data
 | 
				
			||||||
 | 
					@AllArgsConstructor
 | 
				
			||||||
 | 
					@NoArgsConstructor
 | 
				
			||||||
 | 
					@ToString
 | 
				
			||||||
 | 
					@Builder
 | 
				
			||||||
 | 
					public class AysnSupplier {
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 供应商名称
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private String name;
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 手机号
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private String phone;
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 邮箱
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private String email;
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 统一社会信用代码
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private String creditCode;
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 地址
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private String address;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,75 @@
 | 
				
			|||||||
 | 
					package com.currency.appengine.domain;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import lombok.AllArgsConstructor;
 | 
				
			||||||
 | 
					import lombok.Builder;
 | 
				
			||||||
 | 
					import lombok.Data;
 | 
				
			||||||
 | 
					import lombok.NoArgsConstructor;
 | 
				
			||||||
 | 
					import lombok.ToString;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * 供应商请求信息
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @author zk
 | 
				
			||||||
 | 
					 * @date 2024/10/23
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					@Data
 | 
				
			||||||
 | 
					@AllArgsConstructor
 | 
				
			||||||
 | 
					@NoArgsConstructor
 | 
				
			||||||
 | 
					@Builder
 | 
				
			||||||
 | 
					@ToString
 | 
				
			||||||
 | 
					public class SupplierReq {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private Long id;
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 联系人
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private String contactPerson;
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 联系方式
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private String contactPhone;
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 供应商编码
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private String supplierCode;
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 供应商名称
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private String supplierName;
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 是否自动编码
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private Boolean isAuto;
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 是否含税
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private Integer isTaxIncluded;
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 备注
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private String remarks;
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 结算货币类型
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private String settlementCurrency;
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 状态
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private Integer status;
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 税率
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private String tax;
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 创建人
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private String createBy;
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 创建人id
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private String userId;
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 地址
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private String address;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,31 @@
 | 
				
			|||||||
 | 
					package com.currency.appengine.mapper.system;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.currency.appengine.domain.CustomerReq;
 | 
				
			||||||
 | 
					import com.currency.appengine.domain.SupplierReq;
 | 
				
			||||||
 | 
					import org.apache.ibatis.annotations.Insert;
 | 
				
			||||||
 | 
					import org.apache.ibatis.annotations.Options;
 | 
				
			||||||
 | 
					import org.apache.ibatis.annotations.Select;
 | 
				
			||||||
 | 
					import org.apache.ibatis.annotations.Update;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @author zk
 | 
				
			||||||
 | 
					 * @date 2024/10/23
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					public interface SupplierMapper {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Insert(
 | 
				
			||||||
 | 
					            "insert into mini_supplier_info(address,create_by, contact_person, contact_phone, supplier_name, is_tax_included, remarks, settlement_currency, status, tax) values(#{address},#{createBy}, #{contactPerson}, #{contactPhone}, #{supplierName}, #{isTaxIncluded}, #{remarks}, #{settlementCurrency}, #{status}, #{tax});"
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					    @Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id")
 | 
				
			||||||
 | 
					    int insertSupplier(SupplierReq supplierReq);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Select(
 | 
				
			||||||
 | 
					            "SELECT user_name FROM sys_user WHERE user_id = #{userId}"
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					    String selectUserById(String userId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Update(
 | 
				
			||||||
 | 
					            "update mini_supplier_info set supplier_code = #{supplierCode} where id = #{id}"
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					    void updateCodeById(SupplierReq supplierReq);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,19 @@
 | 
				
			|||||||
 | 
					package com.currency.appengine.service.system;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.currency.appengine.domain.CustomerReq;
 | 
				
			||||||
 | 
					import com.currency.appengine.domain.SupplierReq;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @author zk
 | 
				
			||||||
 | 
					 * @date 2024/10/25
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					public interface SupplierService {
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 添加供应商信息
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    int addSupplier(SupplierReq supplierReq);
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 同步供应商信息
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    int AsynSupplier(SupplierReq supplierReq);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,113 @@
 | 
				
			|||||||
 | 
					package com.currency.appengine.service.system.imp;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import cn.hutool.core.bean.BeanUtil;
 | 
				
			||||||
 | 
					import cn.hutool.core.io.IORuntimeException;
 | 
				
			||||||
 | 
					import cn.hutool.extra.spring.SpringUtil;
 | 
				
			||||||
 | 
					import cn.hutool.http.HttpRequest;
 | 
				
			||||||
 | 
					import cn.hutool.http.HttpResponse;
 | 
				
			||||||
 | 
					import cn.hutool.json.JSONUtil;
 | 
				
			||||||
 | 
					import com.currency.appengine.domain.AysnCustomer;
 | 
				
			||||||
 | 
					import com.currency.appengine.domain.AysnSupplier;
 | 
				
			||||||
 | 
					import com.currency.appengine.domain.CustomerReq;
 | 
				
			||||||
 | 
					import com.currency.appengine.domain.SupplierReq;
 | 
				
			||||||
 | 
					import com.currency.appengine.mapper.system.SupplierMapper;
 | 
				
			||||||
 | 
					import com.currency.appengine.service.common.CommonServices;
 | 
				
			||||||
 | 
					import com.currency.appengine.service.system.SupplierService;
 | 
				
			||||||
 | 
					import com.currency.appengine.utils.SignUtil;
 | 
				
			||||||
 | 
					import java.util.HashMap;
 | 
				
			||||||
 | 
					import java.util.Map;
 | 
				
			||||||
 | 
					import lombok.extern.slf4j.Slf4j;
 | 
				
			||||||
 | 
					import org.springframework.beans.factory.annotation.Autowired;
 | 
				
			||||||
 | 
					import org.springframework.stereotype.Service;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @author zk
 | 
				
			||||||
 | 
					 * @date 2024/10/23
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					@Slf4j
 | 
				
			||||||
 | 
					@Service
 | 
				
			||||||
 | 
					public class SupplierServiceImpl implements SupplierService {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Autowired
 | 
				
			||||||
 | 
					    private SupplierMapper supplierMapper;
 | 
				
			||||||
 | 
					    @Autowired
 | 
				
			||||||
 | 
					    private CommonServices commonServices;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 添加供应商信息
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public int addSupplier(SupplierReq supplierReq) {
 | 
				
			||||||
 | 
					        if (Boolean.TRUE.equals(supplierReq.getIsAuto())){
 | 
				
			||||||
 | 
					            supplierReq.setSupplierCode(commonServices.getCode("SupplierCode", null));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        String user = supplierMapper.selectUserById(supplierReq.getUserId());
 | 
				
			||||||
 | 
					        supplierReq.setCreateBy(user);
 | 
				
			||||||
 | 
					        int i = supplierMapper.insertSupplier(supplierReq);
 | 
				
			||||||
 | 
					        supplierReq.setSupplierCode(String.valueOf(supplierReq.getId()));
 | 
				
			||||||
 | 
					        supplierMapper.updateCodeById(supplierReq);
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					            aysnO1(supplierReq);
 | 
				
			||||||
 | 
					        } catch (Exception e) {
 | 
				
			||||||
 | 
					            log.warn("同步客户信息异常", e);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return i;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 同步客户信息
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param customerReq
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public int AsynSupplier(SupplierReq supplierReq) {
 | 
				
			||||||
 | 
					        int i = supplierMapper.insertSupplier(supplierReq);
 | 
				
			||||||
 | 
					        supplierReq.setSupplierCode(String.valueOf(supplierReq.getId()));
 | 
				
			||||||
 | 
					        supplierMapper.updateCodeById(supplierReq);
 | 
				
			||||||
 | 
					        return i;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 同步供应商信息到其他系统
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param supplierCompany 供应商信息
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private void aysnO1(SupplierReq supplierCompany) {
 | 
				
			||||||
 | 
					        String property = SpringUtil.getProperty("o1.sync.enabled");
 | 
				
			||||||
 | 
					        Boolean res = Boolean.valueOf(property);
 | 
				
			||||||
 | 
					        if (Boolean.TRUE.equals(res)) {
 | 
				
			||||||
 | 
					            String accessKey = SpringUtil.getProperty("o1.sync.access-key");
 | 
				
			||||||
 | 
					            String secretKey = SpringUtil.getProperty("o1.sync.secret-key");
 | 
				
			||||||
 | 
					            String url = SpringUtil.getProperty("o1.sync.create-url.supplier");
 | 
				
			||||||
 | 
					            Map<String, String> map = new HashMap<>();
 | 
				
			||||||
 | 
					            AysnSupplier supplier = AysnSupplier.builder().address(supplierCompany.getAddress())
 | 
				
			||||||
 | 
					                                                .name(supplierCompany.getSupplierName())
 | 
				
			||||||
 | 
					                                                .phone(supplierCompany.getContactPhone())
 | 
				
			||||||
 | 
					                                                .build();
 | 
				
			||||||
 | 
					//            customer.setCreateTime(crmCustomer.getCreateTime().getTime());
 | 
				
			||||||
 | 
					            Map<String, Object> toMap = BeanUtil.beanToMap(supplier,false,true);
 | 
				
			||||||
 | 
					            long timestamp = System.currentTimeMillis();
 | 
				
			||||||
 | 
					            map.put("time-stamp", String.valueOf(timestamp));
 | 
				
			||||||
 | 
					            map.put("access-key", accessKey);
 | 
				
			||||||
 | 
					            map.put("tenant-id", "1");
 | 
				
			||||||
 | 
					            toMap.put("time-stamp", String.valueOf(timestamp));
 | 
				
			||||||
 | 
					            toMap.put("access-key", accessKey);
 | 
				
			||||||
 | 
					            String sign = SignUtil.getSign(toMap, secretKey);
 | 
				
			||||||
 | 
					            map.put("sign", sign);
 | 
				
			||||||
 | 
					            HttpResponse response = null;
 | 
				
			||||||
 | 
					            try {
 | 
				
			||||||
 | 
					                response = HttpRequest.post(url)
 | 
				
			||||||
 | 
					                                      .addHeaders(map)
 | 
				
			||||||
 | 
					                                      .body(JSONUtil.toJsonStr(supplier))
 | 
				
			||||||
 | 
					                                      .execute();
 | 
				
			||||||
 | 
					            } catch (Exception e) {
 | 
				
			||||||
 | 
					                log.warn("同步失败", e);
 | 
				
			||||||
 | 
					                return;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            String body = response.body();
 | 
				
			||||||
 | 
					            if (response.isOk()){
 | 
				
			||||||
 | 
					                log.info("请求成功");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
					Loading…
					
					
				
		Reference in New Issue