Browse Source

feat(all): 索菲亚工厂

1 增加华之韵物流对接
fix-sign
zhaoqiaobo 2 months ago
parent
commit
ad0fc708ac
  1. 52
      blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/entity/OrderFullInfoEntity.java
  2. 4
      blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/entity/OrderInfoEntity.java
  3. 171
      blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/job/FactoryJob.java
  4. 18
      blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/mapper/OrderFullInfoMapper.java
  5. 8
      blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/mapper/OrderFullInfoMapper.xml
  6. 4
      blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/mapper/OrderInfoMapper.java
  7. 5
      blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/mapper/OrderInfoMapper.xml
  8. 4
      blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/pros/PushProperties.java
  9. 16
      blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/service/OrderFullInfoService.java
  10. 4
      blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/service/OrderInfoService.java
  11. 1
      blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/service/impl/FactoryDataServiceImpl.java
  12. 26
      blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/service/impl/OrderFullInfoServiceImpl.java
  13. 6
      blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/service/impl/OrderInfoServiceImpl.java

52
blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/entity/OrderFullInfoEntity.java

@ -0,0 +1,52 @@
package com.logpm.factorydata.suofeiya.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.mp.base.BaseEntity;
/**
* 索菲亚齐套信息表 实体类
*
* @author zhaoqiaobo
* @create 2024-04-26
*/
@Data
@TableName("sfy_order_full_info")
@ApiModel(value = "索菲亚齐套信息表", description = "索菲亚齐套信息表")
@EqualsAndHashCode(callSuper = true)
public class OrderFullInfoEntity extends BaseEntity {
@ApiModelProperty(name = "主单号", notes = "")
private String mainOrderNo;
@ApiModelProperty(name = "订单号")
private String orderNo;
@ApiModelProperty(name = "齐套标识 Y齐套 N未齐套")
private String fullSet;
@ApiModelProperty(name = "标签号")
private String paNo;
@ApiModelProperty(name = "物料编码")
private String itemCode;
@ApiModelProperty(name = "物料名称")
private String itemName;
@ApiModelProperty(name = "物料数量")
private String quantity;
@ApiModelProperty(name = "订单类型 (空为衣柜,”Z”为家品直发单)")
private String orderType;
@ApiModelProperty(name = "租户")
private String tenantCode;
@ApiModelProperty(name = "预留1", notes = "")
private String reserve1;
@ApiModelProperty(name = "预留2", notes = "")
private String reserve2;
@ApiModelProperty(name = "预留3", notes = "")
private String reserve3;
@ApiModelProperty(name = "预留4", notes = "")
private String reserve4;
@ApiModelProperty(name = "预留5", notes = "")
private String reserve5;
}

4
blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/entity/OrderInfoEntity.java

@ -41,6 +41,10 @@ public class OrderInfoEntity extends BaseEntity {
private String connectName;
@ApiModelProperty(name = "配送联系电话")
private String connectPhone;
@ApiModelProperty(name = "订单类型(空为衣柜,”Z”为家品直发单)")
private String orderType;
@ApiModelProperty(name = "主单号是否齐套 Y齐套 N未齐套")
private String orderFull;
@ApiModelProperty(name = "预留1", notes = "")
private String reserve1;

171
blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/job/FactoryJob.java

@ -0,0 +1,171 @@
package com.logpm.factorydata.suofeiya.job;
import cn.hutool.core.codec.Base64;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.digest.MD5;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.logpm.factorydata.suofeiya.entity.OrderFullInfoEntity;
import com.logpm.factorydata.suofeiya.entity.OrderInfoEntity;
import com.logpm.factorydata.suofeiya.pros.FactoryDataSuoFeiYaProperties;
import com.logpm.factorydata.suofeiya.service.DeliveryNoteService;
import com.logpm.factorydata.suofeiya.service.OrderFullInfoService;
import com.logpm.factorydata.suofeiya.service.OrderInfoService;
import com.logpm.factorydata.suofeiya.vo.FactoryAuthVO;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 工厂job
*
* @author zhaoqiaobo
* @create 2024-04-02
*/
@AllArgsConstructor
@Component
@Slf4j
public class FactoryJob {
private final OrderInfoService orderInfoService;
private final OrderFullInfoService orderFullInfoService;
private final DeliveryNoteService deliveryNoteService;
private final FactoryDataSuoFeiYaProperties dataSuoFeiYaProperties;
/**
* 获取齐套标识
*
* @param param
* @return
* @throws Exception
*/
@XxlJob("orderFull")
public ReturnT<String> orderFull(String param) throws Exception {
// 查询出未齐套的主单号
List<OrderInfoEntity> orderInfoEntityList = orderInfoService.findNotFullOrder();
if (CollUtil.isNotEmpty(orderInfoEntityList)) {
// 根据 tenantCode 和 orderType 分组
Map<String, List<OrderInfoEntity>> collect = orderInfoEntityList.stream().filter(orderInfoEntity -> {
return StrUtil.isNotEmpty(orderInfoEntity.getTenantCode());
}).collect(Collectors.groupingBy(OrderInfoEntity::getTenantCode));
if (CollUtil.isNotEmpty(collect)) {
// 查询出未齐套的记录
orderFullInfoService.deleteAll();
for (Map.Entry<String, List<OrderInfoEntity>> stringListEntry : collect.entrySet()) {
String tenantCode = stringListEntry.getKey();
List<OrderInfoEntity> value = stringListEntry.getValue();
FactoryAuthVO authVO = deliveryNoteService.findFactoryAuthByTenantCode(tenantCode);
if (ObjectUtil.isNotEmpty(authVO)) {
if (CollUtil.isNotEmpty(value)) {
// 按不同订单类型查询齐套
Map<String, List<OrderInfoEntity>> collect1 = value.stream().collect(Collectors.groupingBy(OrderInfoEntity::getOrderType));
for (Map.Entry<String, List<OrderInfoEntity>> listEntry : collect1.entrySet()) {
String orderType = listEntry.getKey();
List<OrderInfoEntity> list = listEntry.getValue();
Long time = DateUtil.current();
JSONObject jsons = new JSONObject();
if (StrUtil.isNotEmpty(orderType)) {
jsons.set("orderType", orderType);
}
jsons.set("mainOrderNo", list.stream().map(OrderInfoEntity::getMainOrderNo).collect(Collectors.toList()));
String s = sendFactory(authVO.getCompanyCode(), JSONUtil.toJsonStr(jsons), time, authVO.getAppKey(), dataSuoFeiYaProperties.getPush().getOrderFullUrl());
if (StrUtil.isNotEmpty(s)) {
JSONObject jsonObject = JSONUtil.parseObj(s);
if (StrUtil.equals(jsonObject.getStr("result_code"), "0000")) {
List<OrderFullInfoEntity> orderFullInfoEntities = new ArrayList<>();
// 推送成功
JSONArray fullSetInfos = jsonObject.getJSONArray("fullSetInfo");
if (CollUtil.isNotEmpty(fullSetInfos)) {
for (Object fullSetInfoObj : fullSetInfos) {
JSONObject fullSetInfo = JSONUtil.parseObj(fullSetInfoObj);
String mainOrderNo = fullSetInfo.getStr("mainOrderNo");
String fullSet = fullSetInfo.getStr("fullSet");
// 家品数据取 orderDetail 衣柜取 paNos
if ("Z".equals(orderType)) {
JSONArray orderDetails = fullSetInfo.getJSONArray("orderDetail");
if (CollUtil.isNotEmpty(orderDetails)) {
for (Object orderDetailObj : orderDetails) {
JSONObject orderDetail = JSONUtil.parseObj(orderDetailObj);
String orderNo = orderDetail.getStr("orderNo");
String itemCode = orderDetail.getStr("itemCode");
String itemName = orderDetail.getStr("itemName");
String quantity = orderDetail.getStr("quantity");
OrderFullInfoEntity entity = new OrderFullInfoEntity();
entity.setMainOrderNo(mainOrderNo);
entity.setOrderNo(orderNo);
entity.setItemCode(itemCode);
entity.setItemName(itemName);
entity.setQuantity(quantity);
entity.setFullSet(fullSet);
entity.setOrderType(orderType);
entity.setTenantCode(tenantCode);
orderFullInfoEntities.add(entity);
}
}
} else {
JSONArray paNos = fullSetInfo.getJSONArray("paNo");
if (CollUtil.isNotEmpty(paNos)) {
for (Object paNo : paNos) {
String str = Convert.toStr(paNo);
OrderFullInfoEntity entity = new OrderFullInfoEntity();
entity.setMainOrderNo(mainOrderNo);
entity.setPaNo(str);
entity.setFullSet(fullSet);
entity.setOrderType(orderType);
entity.setTenantCode(tenantCode);
orderFullInfoEntities.add(entity);
}
}
}
}
}
if (CollUtil.isNotEmpty(orderFullInfoEntities)) {
orderFullInfoService.saveBatch(orderFullInfoEntities);
}
}
}
}
}
}
}
}
}
return ReturnT.SUCCESS;
}
private String sendFactory(String companyCode, String jsonStr, Long time, String appKey, String paStatusUrl) {
try {
Map<String, Object> param = new HashMap<>();
param.put("companyCode", companyCode);
param.put("params", jsonStr);
param.put("timestamp", time);
// 加密
String digest = MD5.create().digestHex(jsonStr + appKey + time);
String encode = Base64.encode(digest);
param.put("digest", encode);
log.info("推送节点数据:{}", JSONUtil.toJsonStr(param));
String post = HttpUtil.post(dataSuoFeiYaProperties.getPush().getPushHost() + paStatusUrl, param);
log.info("推送结果:{}", post);
return post;
} catch (Exception e) {
e.printStackTrace();
log.error("推送节点数据错误:{}", e);
}
return null;
}
}

18
blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/mapper/OrderFullInfoMapper.java

@ -0,0 +1,18 @@
package com.logpm.factorydata.suofeiya.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.logpm.factorydata.suofeiya.entity.OrderFullInfoEntity;
import org.apache.ibatis.annotations.Mapper;
/**
* 索菲亚齐套信息表 mapper
*
* @author zqb
* @since 2024-03-26
*/
@Mapper
public interface OrderFullInfoMapper extends BaseMapper<OrderFullInfoEntity> {
void deleteAll();
}

8
blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/mapper/OrderFullInfoMapper.xml

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.logpm.factorydata.suofeiya.mapper.OrderFullInfoMapper">
<delete id="deleteAll">
DELETE FROM sfy_order_full_info
</delete>
</mapper>

4
blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/mapper/OrderInfoMapper.java

@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.logpm.factorydata.suofeiya.entity.OrderInfoEntity;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* 订单信息 mapper
*
@ -13,4 +15,6 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface OrderInfoMapper extends BaseMapper<OrderInfoEntity> {
List<OrderInfoEntity> findNotFullOrder();
}

5
blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/mapper/OrderInfoMapper.xml

@ -2,4 +2,9 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.logpm.factorydata.suofeiya.mapper.OrderInfoMapper">
<select id="findNotFullOrder" resultType="com.logpm.factorydata.suofeiya.entity.OrderInfoEntity">
select distinct main_order_no,order_type,tenant_code
from sfy_order_info
where order_full = 'N'
</select>
</mapper>

4
blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/pros/PushProperties.java

@ -25,6 +25,10 @@ public class PushProperties {
* 配送单计划接口 shipPlanUrl
*/
private String shipPlanUrl;
/**
* 齐套接口 orderFullUrl
*/
private String orderFullUrl;
/** 是否回传推送工厂 */
private Boolean pushEnable = true;

16
blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/service/OrderFullInfoService.java

@ -0,0 +1,16 @@
package com.logpm.factorydata.suofeiya.service;
import com.logpm.factorydata.suofeiya.entity.OrderFullInfoEntity;
import org.springblade.core.mp.base.BaseService;
/**
* 索菲亚齐套信息表 服务类
*
* @Author zqb
* @Date 2024/4/26
**/
public interface OrderFullInfoService extends BaseService<OrderFullInfoEntity> {
void deleteAll();
}

4
blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/service/OrderInfoService.java

@ -3,6 +3,8 @@ package com.logpm.factorydata.suofeiya.service;
import com.logpm.factorydata.suofeiya.entity.OrderInfoEntity;
import org.springblade.core.mp.base.BaseService;
import java.util.List;
/**
* 订单信息 服务类
*
@ -11,4 +13,6 @@ import org.springblade.core.mp.base.BaseService;
**/
public interface OrderInfoService extends BaseService<OrderInfoEntity> {
List<OrderInfoEntity> findNotFullOrder();
}

1
blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/service/impl/FactoryDataServiceImpl.java

@ -121,6 +121,7 @@ public class FactoryDataServiceImpl implements FactoryDataService {
orderInfoEntity.setLogId(ObjectUtil.isNotEmpty(logId) ? logId.toString() : null);
orderInfoEntity.setDeliveryNoteId(vo.getId().toString());
orderInfoEntity.setTenantCode(AuthUtil.getTenantId());
orderInfoEntity.setOrderType(vo.getOrderType());
infoEntities.add(orderInfoEntity);
}
orderInfoService.saveBatch(infoEntities);

26
blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/service/impl/OrderFullInfoServiceImpl.java

@ -0,0 +1,26 @@
package com.logpm.factorydata.suofeiya.service.impl;
import com.logpm.factorydata.suofeiya.entity.OrderFullInfoEntity;
import com.logpm.factorydata.suofeiya.mapper.OrderFullInfoMapper;
import com.logpm.factorydata.suofeiya.service.OrderFullInfoService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springframework.stereotype.Service;
/**
* 索菲亚齐套信息表 业务实现类
*
* @Author zqb
* @Date 2024/4/26
**/
@Slf4j
@Service
@AllArgsConstructor
public class OrderFullInfoServiceImpl extends BaseServiceImpl<OrderFullInfoMapper, OrderFullInfoEntity> implements OrderFullInfoService {
@Override
public void deleteAll() {
baseMapper.deleteAll();
}
}

6
blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/service/impl/OrderInfoServiceImpl.java

@ -8,6 +8,8 @@ import lombok.extern.slf4j.Slf4j;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* 订单信息 业务实现类
*
@ -19,4 +21,8 @@ import org.springframework.stereotype.Service;
@AllArgsConstructor
public class OrderInfoServiceImpl extends BaseServiceImpl<OrderInfoMapper, OrderInfoEntity> implements OrderInfoService {
@Override
public List<OrderInfoEntity> findNotFullOrder() {
return baseMapper.findNotFullOrder();
}
}

Loading…
Cancel
Save