Browse Source

订单完成,待测

master
Yen 3 years ago
parent
commit
353f5c4cc3
  1. 25
      src/main/java/com/qs/cost/common/conf/MainServerProperties.java
  2. 20
      src/main/java/com/qs/cost/common/utils/DateUtil.java
  3. 29
      src/main/java/com/qs/cost/module/controller/LzOrderController.java
  4. 3
      src/main/java/com/qs/cost/module/domain/GetListEntity.java
  5. 173
      src/main/java/com/qs/cost/module/domain/dto/U8API4SaleOrder.java
  6. 87
      src/main/java/com/qs/cost/module/service/JiaJinService.java
  7. 7
      src/main/resources/application-dev.yml

25
src/main/java/com/qs/cost/common/conf/MainServerProperties.java

@ -0,0 +1,25 @@
package com.qs.cost.common.conf;
import lombok.Getter;
import lombok.Setter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
/**
* @author YenHex
* @since 2022/7/7
*/
@Getter
@Setter
@Component
@ConfigurationProperties(prefix = "server.timetable")
public class MainServerProperties {
private String host;
private String book;
private String year;
}

20
src/main/java/com/qs/cost/common/utils/DateUtil.java

@ -2,6 +2,9 @@ package com.qs.cost.common.utils;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.util.Calendar; import java.util.Calendar;
import java.util.Date; import java.util.Date;
@ -28,6 +31,23 @@ public class DateUtil {
public static final String FORMAT_SIMPLE_MONTH = "yyyy-MM"; public static final String FORMAT_SIMPLE_MONTH = "yyyy-MM";
public static final String FORMAT_SIMPLE_YEAR = "yyyy"; public static final String FORMAT_SIMPLE_YEAR = "yyyy";
/**
* LocalDateTime转为日期
*
* @param localDateTime LocalDateTime
* @return 日期
*/
public static Date localDateTimeToDate(final LocalDateTime localDateTime) {
if (null == localDateTime) {
return null;
}
final ZoneId zoneId = ZoneId.systemDefault();
final ZonedDateTime zdt = localDateTime.atZone(zoneId);
final Date date = Date.from(zdt.toInstant());
return date;
}
/** /**
* 转换格式 * 转换格式
* @param dateStr * @param dateStr

29
src/main/java/com/qs/cost/module/controller/LzOrderController.java

@ -0,0 +1,29 @@
package com.qs.cost.module.controller;
import com.qs.cost.common.dto.R;
import com.qs.cost.common.dto.u8.U8CallbackVo;
import com.qs.cost.module.service.JiaJinService;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author YenHex
* @since 2022/7/7
*/
@AllArgsConstructor
@RestController
@RequestMapping("/lzOrder")
public class LzOrderController {
private final JiaJinService jiaJinService;
@PostMapping("/callback")
public R callback(@RequestBody U8CallbackVo requestVo){
jiaJinService.callback(requestVo);
return R.ok();
}
}

3
src/main/java/com/qs/cost/module/domain/GetListEntity.java

@ -51,6 +51,9 @@ public class GetListEntity {
@JsonProperty("SellingPrice") @JsonProperty("SellingPrice")
private BigDecimal salePrice; private BigDecimal salePrice;
@JsonProperty("TaxPercent")
private BigDecimal taxRate;
} }
@Data @Data

173
src/main/java/com/qs/cost/module/domain/dto/U8API4SaleOrder.java

@ -0,0 +1,173 @@
package com.qs.cost.module.domain.dto;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* @Author: YenHex
* @Date: 2021/3/11
* @Version: 1.0
**/
@Getter
@Setter
@Builder
@JsonAutoDetect(fieldVisibility= JsonAutoDetect.Visibility.ANY,getterVisibility= JsonAutoDetect.Visibility.NONE)
public class U8API4SaleOrder {
@JsonProperty("AddType")
private int addType;
/**
* 单据号
*/
@JsonProperty("cSOCode")
private String code;
/**
* 订单日期
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonProperty("dDate")
private Date orderDate;
/**
* 业务类型
*/
@JsonProperty("cBusType")
private String bizType;
/**
* 销售类型
*/
@JsonProperty("cSTCode")
private String saleType;
/**
* 客户编码
*/
@JsonProperty("cCusCode")
private String cusCode;
/**
* 币种
*/
@JsonProperty("cexch_name")
private String currencyType;
/**
* 部门编号
*/
@JsonProperty("cDepCode")
private String depCode;
/**
* 制单人
*/
@JsonProperty("cMaker")
private String createUser;
/**
* 预发货日期
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonProperty("dPreDateBT")
private Date preShipmentsDate;
/**
* 预完工日期
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonProperty("dPreMoDateBT")
private Date preFinishedDate;
/**
* 税率
*/
@JsonProperty("iTaxRate")
private BigDecimal taxRate;
/**
* 备注
*/
@JsonProperty("cMemo")
private String remark;
/**
* 备注(底部)
*/
@JsonProperty("cDefine11")
private String remarkFoot;
/**
* 存货商品列表
*/
@JsonProperty("Details")
private List<OrderDetail> details;
@Getter
@Setter
@JsonAutoDetect(fieldVisibility= JsonAutoDetect.Visibility.ANY,getterVisibility= JsonAutoDetect.Visibility.NONE)
public static class OrderDetail{
/**
* 存货编码
*/
@JsonProperty("cInvCode")
private String InvCode;
/**
* 数量
*/
@JsonProperty("iQuantity")
private Long quantity;
/**
* 含税单价
*/
@JsonProperty("iTaxUnitPrice")
private BigDecimal hasRatePrice;
/**
* 价税合计
*/
@JsonProperty("iSum")
private BigDecimal hasRateSumPrice;
/**
* 备注
*/
@JsonProperty(value="cMemo")
private String remark;
/**
* 税率
*/
@JsonProperty(value="iTaxRate")
private BigDecimal taxRate;
/**
* 预发货日期
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
// @JsonProperty(value="dPreDate")
@JsonProperty("dreleasedate")
private Date preShipmentsDate;
/**
* 预完工日期
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonProperty(value="dPreMoDate")
private Date preFinishedDate;
}
}

87
src/main/java/com/qs/cost/module/service/JiaJinService.java

@ -1,36 +1,43 @@
package com.qs.cost.module.service; package com.qs.cost.module.service;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qs.cost.common.conf.MainServerProperties;
import com.qs.cost.common.consts.ApiUrlConst; import com.qs.cost.common.consts.ApiUrlConst;
import com.qs.cost.common.dto.u8.U8CallbackVo; import com.qs.cost.common.dto.u8.U8CallbackVo;
import com.qs.cost.common.dto.HttpResult; import com.qs.cost.common.dto.HttpResult;
import com.qs.cost.common.dto.R; import com.qs.cost.common.dto.R;
import com.qs.cost.common.dto.u8.U8RequestBo;
import com.qs.cost.common.utils.*; import com.qs.cost.common.utils.*;
import com.qs.cost.module.domain.GetListEntity; import com.qs.cost.module.domain.GetListEntity;
import com.qs.cost.module.domain.LzOrder; import com.qs.cost.module.domain.LzOrder;
import com.qs.cost.module.domain.LzResponseLog; import com.qs.cost.module.domain.LzResponseLog;
import com.qs.cost.module.domain.dto.U8API4SaleOrder;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.Calendar; import java.util.*;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.List;
/** /**
* @author YenHex * @author YenHex
* @since 2022/7/6 * @since 2022/7/6
*/ */
@Slf4j @Slf4j
@Service
@AllArgsConstructor
public class JiaJinService { public class JiaJinService {
@Autowired LzResponseLogService responseLogService; private final LzResponseLogService responseLogService;
@Autowired LzOrderService lzOrderService; private final LzOrderService lzOrderService;
private final MainServerProperties mainServerProperties;
/** /**
@ -114,9 +121,60 @@ public class JiaJinService {
lqw.eq(LzOrder::getStatus,0); lqw.eq(LzOrder::getStatus,0);
lqw.eq(LzOrder::getCheckStatus,0); lqw.eq(LzOrder::getCheckStatus,0);
List<LzOrder> orders = lzOrderService.list(lqw); List<LzOrder> orders = lzOrderService.list(lqw);
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
Date now = new Date();
for (LzOrder order : orders) { for (LzOrder order : orders) {
//TODO 发起U8服务中台 String host = mainServerProperties.getHost();
String year = mainServerProperties.getYear();
String book = mainServerProperties.getBook();
//封装jsonBody
List<U8API4SaleOrder.OrderDetail> details = new ArrayList<>();
String itemJson = order.getItems();
List<GetListEntity.ItemEntity> items = JsonUtil.jsonToList(itemJson,GetListEntity.ItemEntity.class);
BigDecimal rate = BigDecimal.ONE;
for (GetListEntity.ItemEntity item : items) {
U8API4SaleOrder.OrderDetail orderDetail = new U8API4SaleOrder.OrderDetail();
//拿子项税率
rate = item.getTaxRate();
orderDetail.setInvCode(item.getInvCode());
orderDetail.setTaxRate(item.getTaxRate());
orderDetail.setQuantity(new Long(item.getQty()));
orderDetail.setHasRatePrice(item.getSalePrice());
orderDetail.setHasRateSumPrice(item.getSaleAmount());
orderDetail.setPreShipmentsDate(now);
orderDetail.setPreFinishedDate(now);
}
U8API4SaleOrder api4SaleOrder = U8API4SaleOrder.builder()
.addType(0)
.code(order.getOrderNo())
.orderDate(DateUtil.localDateTimeToDate(order.getOrderCreateTime()))
.bizType("普通销售")
.saleType("01")
//TODO 客户编码未定
.cusCode("")
.currencyType("人民币")
.depCode(order.getSaleDept())
.createUser(order.getSaleMan())
.preShipmentsDate(now)
.preFinishedDate(now)
.taxRate(rate)
.remark("")
.remarkFoot("")
.details(details)
.build();
String jsonBody = JsonUtil.objectToJson(Arrays.asList(api4SaleOrder));
//发起U8服务中台
U8RequestBo requestBo = new U8RequestBo();
requestBo.setPk(order.getOrderNo());
requestBo.setCmd("XSDDAdd");
requestBo.setYear(year);
requestBo.setBook(book);
requestBo.setJsonBody(jsonBody);
requestBo.setKeyId("");
requestBo.setSettingRetryTimes(2);
requestBo.setCallbackState(1);
requestBo.setCallbackHost( host + "/lzOrder/callback");
order.setStatus(1); order.setStatus(1);
order.setUpdateTime(LocalDateTime.now()); order.setUpdateTime(LocalDateTime.now());
} }
@ -127,15 +185,16 @@ public class JiaJinService {
* U8中台回调接口 * U8中台回调接口
* @return * @return
*/ */
@PostMapping("/orderCallBack")
public R<?> callback(@RequestBody U8CallbackVo requestVo){ public R<?> callback(@RequestBody U8CallbackVo requestVo){
//TODO 解析VO
//接收U8请求
String orderNo = requestVo.getId(); String orderNo = requestVo.getId();
LambdaQueryWrapper<LzOrder> lqw = new LambdaQueryWrapper<>(); LambdaQueryWrapper<LzOrder> lqw = new LambdaQueryWrapper<>();
lqw.eq(LzOrder::getOrderNo,orderNo); lqw.eq(LzOrder::getOrderNo,orderNo);
LzOrder lzOrder = lzOrderService.getOne(lqw,false); LzOrder lzOrder = lzOrderService.getOne(lqw,false);
//解析返回结果
lzOrder.setStatus(2);
String response = requestVo.getRespContext();
JSONObject jsonObject = JSONObject.parseObject(response);
if(jsonObject.getString("code").equals("200")){
//发送量子App更新订单状态 //发送量子App更新订单状态
String params = "orderNos="+orderNo; String params = "orderNos="+orderNo;
String signParam = ApiUrlConst.lzyunli + params + ApiUrlConst.lzyunli; String signParam = ApiUrlConst.lzyunli + params + ApiUrlConst.lzyunli;
@ -145,12 +204,14 @@ public class JiaJinService {
paramMap.put("orderNos",orderNo); paramMap.put("orderNos",orderNo);
paramMap.put("sign",sign); paramMap.put("sign",sign);
HttpResult httpResult = HttpUtil.post(url,paramMap); HttpResult httpResult = HttpUtil.post(url,paramMap);
lzOrder.setCallBackStatus(2);
if(httpResult.getCode()==200){ if(httpResult.getCode()==200){
if(httpResult.getData().contains("true")){ if(httpResult.getData().contains("true")){
lzOrder.setCheckStatus(1); lzOrder.setCheckStatus(1);
} }
} }
}else {
lzOrder.setStatus(3);
}
lzOrderService.updateById(lzOrder); lzOrderService.updateById(lzOrder);
return R.ok(); return R.ok();
} }

7
src/main/resources/application-dev.yml

@ -1,7 +1,12 @@
#服务配置 #服务配置
server: server:
secret-key: 7c0b22847a4abf282399bdfca150c6b6ca8e67d171e7f948
port: 7701 port: 7701
#本服务访问根地址,用于读取
host: '127.0.0.1:7001'
#帐套
book: 999
#年份
year: 2020
#SpringBoot相关 #SpringBoot相关
spring: spring:
#数据源 #数据源

Loading…
Cancel
Save