diff --git a/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/entity/OrderFullInfoEntity.java b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/entity/OrderFullInfoEntity.java new file mode 100644 index 000000000..2b132e281 --- /dev/null +++ b/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; + +} diff --git a/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/entity/OrderInfoEntity.java b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/entity/OrderInfoEntity.java index 430769915..c4e4eb96b 100644 --- a/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/entity/OrderInfoEntity.java +++ b/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; diff --git a/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/job/FactoryJob.java b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/job/FactoryJob.java new file mode 100644 index 000000000..48360803b --- /dev/null +++ b/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 orderFull(String param) throws Exception { + // 查询出未齐套的主单号 + List orderInfoEntityList = orderInfoService.findNotFullOrder(); + if (CollUtil.isNotEmpty(orderInfoEntityList)) { + // 根据 tenantCode 和 orderType 分组 + Map> collect = orderInfoEntityList.stream().filter(orderInfoEntity -> { + return StrUtil.isNotEmpty(orderInfoEntity.getTenantCode()); + }).collect(Collectors.groupingBy(OrderInfoEntity::getTenantCode)); + if (CollUtil.isNotEmpty(collect)) { + // 查询出未齐套的记录 + orderFullInfoService.deleteAll(); + for (Map.Entry> stringListEntry : collect.entrySet()) { + String tenantCode = stringListEntry.getKey(); + List value = stringListEntry.getValue(); + FactoryAuthVO authVO = deliveryNoteService.findFactoryAuthByTenantCode(tenantCode); + if (ObjectUtil.isNotEmpty(authVO)) { + if (CollUtil.isNotEmpty(value)) { + // 按不同订单类型查询齐套 + Map> collect1 = value.stream().collect(Collectors.groupingBy(OrderInfoEntity::getOrderType)); + for (Map.Entry> listEntry : collect1.entrySet()) { + String orderType = listEntry.getKey(); + List 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 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 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; + } + +} diff --git a/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/mapper/OrderFullInfoMapper.java b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/mapper/OrderFullInfoMapper.java new file mode 100644 index 000000000..8a398c753 --- /dev/null +++ b/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 { + + void deleteAll(); + +} diff --git a/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/mapper/OrderFullInfoMapper.xml b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/mapper/OrderFullInfoMapper.xml new file mode 100644 index 000000000..404b1b6c1 --- /dev/null +++ b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/mapper/OrderFullInfoMapper.xml @@ -0,0 +1,8 @@ + + + + + + DELETE FROM sfy_order_full_info + + diff --git a/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/mapper/OrderInfoMapper.java b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/mapper/OrderInfoMapper.java index b7b77ed7a..90fd73ba4 100644 --- a/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/mapper/OrderInfoMapper.java +++ b/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 { + List findNotFullOrder(); + } diff --git a/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/mapper/OrderInfoMapper.xml b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/mapper/OrderInfoMapper.xml index b9764e73b..cede7e153 100644 --- a/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/mapper/OrderInfoMapper.xml +++ b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/mapper/OrderInfoMapper.xml @@ -2,4 +2,9 @@ + diff --git a/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/pros/PushProperties.java b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/pros/PushProperties.java index 95db582a2..7d745374c 100644 --- a/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/pros/PushProperties.java +++ b/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; diff --git a/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/service/OrderFullInfoService.java b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/service/OrderFullInfoService.java new file mode 100644 index 000000000..7175aa17c --- /dev/null +++ b/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 { + + void deleteAll(); + +} diff --git a/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/service/OrderInfoService.java b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/service/OrderInfoService.java index 3d4200d47..d44dc3fff 100644 --- a/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/service/OrderInfoService.java +++ b/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 { + List findNotFullOrder(); + } diff --git a/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/service/impl/FactoryDataServiceImpl.java b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/service/impl/FactoryDataServiceImpl.java index b8bfd17f5..60ff3d75d 100644 --- a/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/service/impl/FactoryDataServiceImpl.java +++ b/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); diff --git a/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/service/impl/OrderFullInfoServiceImpl.java b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/service/impl/OrderFullInfoServiceImpl.java new file mode 100644 index 000000000..a70a6f058 --- /dev/null +++ b/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 implements OrderFullInfoService { + + @Override + public void deleteAll() { + baseMapper.deleteAll(); + } +} diff --git a/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/service/impl/OrderInfoServiceImpl.java b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/service/impl/OrderInfoServiceImpl.java index 2a4f7eed5..97defd371 100644 --- a/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/service/impl/OrderInfoServiceImpl.java +++ b/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 implements OrderInfoService { + @Override + public List findNotFullOrder() { + return baseMapper.findNotFullOrder(); + } }