发货相关更新
This commit is contained in:
@@ -637,6 +637,12 @@ public class BuyOrderController {
|
||||
|
||||
}
|
||||
|
||||
@RequestMapping("/mytest")
|
||||
public R mytest() throws IOException {
|
||||
String mytest = buyOrderService.mytest();
|
||||
return R.ok().put("url",mytest);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取商品实际价格
|
||||
*
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.peanut.modules.book.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
@@ -8,6 +9,7 @@ import com.peanut.modules.book.entity.ExpressCompany;
|
||||
import com.peanut.modules.book.entity.ExpressOrder;
|
||||
import com.peanut.modules.book.service.ExpressCompanyService;
|
||||
import com.peanut.modules.book.service.ExpressOrderService;
|
||||
import com.peanut.modules.book.to.ExpressPrintDto;
|
||||
import com.peanut.modules.book.vo.ExpressCompanyVo;
|
||||
import com.peanut.modules.book.vo.response.PrintTemplateVo;
|
||||
import io.swagger.models.auth.In;
|
||||
@@ -45,6 +47,26 @@ public class ExpressController {
|
||||
return R.ok().put("result", expressCompanyList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取面单列表
|
||||
* @param expressPrintDto
|
||||
* @return
|
||||
*/
|
||||
@RequestMapping("/getExpressPrints")
|
||||
public R getExpressPrints(@RequestBody ExpressPrintDto expressPrintDto){
|
||||
LambdaQueryWrapper<ExpressOrder> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(expressPrintDto.getExpressOrderSn()!=null,ExpressOrder::getExpressOrderSn,expressPrintDto.getExpressOrderSn());
|
||||
if(expressPrintDto.getDate()!=null){
|
||||
String startDate = expressPrintDto.getDate()+" 00:00:00";
|
||||
String endDate = expressPrintDto.getDate()+" 23:59:59";
|
||||
wrapper.between(ExpressOrder::getCreateTime,startDate,endDate);
|
||||
}
|
||||
wrapper.eq(expressPrintDto.getType()!=0,ExpressOrder::getTemplatePrinted,expressPrintDto.getType()==1?1:0);
|
||||
wrapper.orderByDesc(ExpressOrder::getCreateTime);
|
||||
Page<ExpressOrder> expressOrderPage = expressOrderService.getBaseMapper().selectPage(new Page<>(expressPrintDto.getPage(), expressPrintDto.getLimit()), wrapper);
|
||||
return R.ok().put("page",expressOrderPage);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取快递面单列表
|
||||
*
|
||||
|
||||
@@ -27,7 +27,7 @@ public class ExpressOrder {
|
||||
/**
|
||||
* 订单Sn
|
||||
*/
|
||||
// private String orderSn;
|
||||
private String orderSn;
|
||||
/**
|
||||
* 省份
|
||||
*/
|
||||
@@ -85,6 +85,10 @@ public class ExpressOrder {
|
||||
* 快递单号
|
||||
*/
|
||||
private String expressOrderSn;
|
||||
/**
|
||||
* 是否已打印0未打印1已打印
|
||||
*/
|
||||
private Integer templatePrinted;
|
||||
/**
|
||||
* 面单模板
|
||||
*/
|
||||
|
||||
@@ -10,6 +10,8 @@ import com.peanut.modules.book.vo.UserOrderVo;
|
||||
import com.peanut.modules.book.vo.request.BuyOrderListRequestVo;
|
||||
import com.peanut.modules.book.vo.response.BuyOrderResponseVo;
|
||||
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@@ -57,5 +59,5 @@ public interface BuyOrderService extends IService<BuyOrder> {
|
||||
|
||||
Map<String, Object> decomposeShipment(BuyOrderListRequestVo requestVo);
|
||||
|
||||
|
||||
String mytest() throws IOException;
|
||||
}
|
||||
@@ -21,12 +21,18 @@ import com.peanut.modules.book.vo.ExpressOrderResponseVo;
|
||||
import com.peanut.modules.book.vo.UserOrderVo;
|
||||
import com.peanut.modules.book.vo.request.BuyOrderListRequestVo;
|
||||
import com.peanut.modules.book.vo.response.*;
|
||||
import com.peanut.modules.oss.service.OssService;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.FileReader;
|
||||
import java.io.IOException;
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.security.Timestamp;
|
||||
@@ -65,6 +71,8 @@ public class BuyOrderServiceImpl extends ServiceImpl<BuyOrderDao, BuyOrder> impl
|
||||
private CityService cityService;
|
||||
@Autowired
|
||||
private ExpressOrderDao expressOrderDao;
|
||||
@Autowired
|
||||
private OssService ossService;
|
||||
|
||||
protected Logger logger = LoggerFactory.getLogger(BuyOrderServiceImpl.class);
|
||||
|
||||
@@ -398,11 +406,11 @@ public class BuyOrderServiceImpl extends ServiceImpl<BuyOrderDao, BuyOrder> impl
|
||||
ExpressCommodity commodity = new ExpressCommodity();
|
||||
commodity.setGoodsName(product.getProductName());
|
||||
commodity.setGoodsquantity(buyOrderProduct.getQuantity());
|
||||
commodity.setGoodsWeight(product.getWeight().doubleValue());
|
||||
commodity.setGoodsWeight((product.getWeight().doubleValue())/1000);
|
||||
totalWeight = totalWeight.add(
|
||||
BigDecimal.valueOf(product.getWeight().doubleValue()).multiply(new BigDecimal(buyOrderProduct.getQuantity()))
|
||||
BigDecimal.valueOf(product.getWeight().doubleValue()).multiply(new BigDecimal(buyOrderProduct.getQuantity())).divide(BigDecimal.valueOf(1000),2,RoundingMode.HALF_UP)
|
||||
);
|
||||
totalWeight = totalWeight.setScale(0, RoundingMode.UP);//对数值做增量舍
|
||||
// totalWeight = totalWeight.setScale(0, RoundingMode.UP);//对数值做增量舍,单位是g
|
||||
commodityList.add(commodity);
|
||||
}
|
||||
|
||||
@@ -410,17 +418,23 @@ public class BuyOrderServiceImpl extends ServiceImpl<BuyOrderDao, BuyOrder> impl
|
||||
Integer orderId = buyOrderProductList.get(0).getOrderId();
|
||||
|
||||
BuyOrder buyOrder = getById(orderId);
|
||||
|
||||
// System.out.println(buyOrder);
|
||||
|
||||
QueryWrapper<County> countyQueryWrapper = new QueryWrapper<>();
|
||||
countyQueryWrapper.eq("county_name", buyOrder.getDistrict());
|
||||
County county = countyService.getOne(countyQueryWrapper);
|
||||
|
||||
|
||||
// 计算快递费用
|
||||
BigDecimal expressFee = expressFeeService.calculateExpressFee(expressCompanyCode, totalWeight, county.getRegionCode());
|
||||
|
||||
ExpressOrder expressOrder = new ExpressOrder();
|
||||
expressOrder.setExpressFee(expressFee);
|
||||
expressOrder.setCreateTime(new Date());
|
||||
expressOrder.setTotalWeight(totalWeight);
|
||||
expressOrder.setCommodity(commodityList);
|
||||
// expressOrder.setOrderSn(buyOrder.getOrderSn());
|
||||
expressOrder.setOrderSn(getOrderByOS(buyOrder.getOrderSn()));
|
||||
expressOrder.setExpressCompanyCode(expressCompanyCode);
|
||||
expressOrder.setConsigneeName(buyOrder.getShippingUser());
|
||||
expressOrder.setConsigneeMobile(buyOrder.getUserPhone());
|
||||
@@ -431,7 +445,9 @@ public class BuyOrderServiceImpl extends ServiceImpl<BuyOrderDao, BuyOrder> impl
|
||||
// 生成快递面单
|
||||
ExpressOrderResponseVo response = expressOrderService.placeExpressOrder(expressOrder);
|
||||
String expressOrderSn = response.getOrder().getLogisticCode();
|
||||
String printTemplate = response.getPrintTemplate();
|
||||
// String printTemplate = response.getPrintTemplate();
|
||||
String printTemplate = pushHtmlToOss(response.getPrintTemplate(),expressOrderSn+".html");
|
||||
|
||||
expressOrder.setExpressOrderSn(expressOrderSn);
|
||||
expressOrder.setPrintTemplate(printTemplate);
|
||||
expressOrderDao.insert(expressOrder);
|
||||
@@ -458,6 +474,19 @@ public class BuyOrderServiceImpl extends ServiceImpl<BuyOrderDao, BuyOrder> impl
|
||||
updateBatchById(buyOrderList);
|
||||
}
|
||||
|
||||
public String mytest() throws IOException {
|
||||
String html = "";
|
||||
File file = new File("D:/1.html");
|
||||
FileReader fileReader = new FileReader(file);
|
||||
char[] charArray = new char[(int) file.length()];
|
||||
fileReader.read(charArray);
|
||||
String content = new String(charArray);
|
||||
fileReader.close();
|
||||
String name="test1.html";
|
||||
String s = pushHtmlToOss(content, name);
|
||||
return s;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BuyOrderResponseVo orderDetail(String orderSn) {
|
||||
QueryWrapper<BuyOrder> buyOrderQueryWrapper = new QueryWrapper<>();
|
||||
@@ -466,6 +495,27 @@ public class BuyOrderServiceImpl extends ServiceImpl<BuyOrderDao, BuyOrder> impl
|
||||
return setBuyOrderInfo(buyOrder);
|
||||
}
|
||||
|
||||
|
||||
private String getOrderByOS(String order){
|
||||
char salt;
|
||||
if(order.indexOf('_')==-1){//没有组装过
|
||||
order = order+"_A";
|
||||
salt = 'A';
|
||||
}else {
|
||||
salt = order.charAt(order.length()-1);
|
||||
}
|
||||
ExpressOrder one = expressOrderService.getOne(new LambdaQueryWrapper<ExpressOrder>().eq(ExpressOrder::getOrderSn, order));
|
||||
if(one==null){
|
||||
return order;
|
||||
}else{
|
||||
return getOrderByOS(order.substring(0,order.indexOf('_'))+'_'+(char)(salt+1));
|
||||
}
|
||||
}
|
||||
|
||||
private String pushHtmlToOss(String html,String name){
|
||||
return ossService.uploadHtml(html,name);
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置订单信息
|
||||
*
|
||||
|
||||
@@ -43,7 +43,7 @@ public class ExpressOrderServiceImpl extends ServiceImpl<ExpressOrderDao, Expres
|
||||
public ExpressOrderResponseVo placeExpressOrder(ExpressOrder expressOrder) {
|
||||
ExpressOrderRequestVo orderRequestVo = new ExpressOrderRequestVo();
|
||||
// 订单号
|
||||
// orderRequestVo.setOrderCode(expressOrder.getOrderSn());
|
||||
orderRequestVo.setOrderCode(expressOrder.getOrderSn());
|
||||
orderRequestVo.setIsReturnPrintTemplate(1);
|
||||
orderRequestVo.setShipperCode(expressOrder.getExpressCompanyCode());
|
||||
orderRequestVo.setPayType(3);
|
||||
@@ -54,7 +54,7 @@ public class ExpressOrderServiceImpl extends ServiceImpl<ExpressOrderDao, Expres
|
||||
orderRequestVo.setCustomerName(Constants.EXPRESS_YD_CUSTOMER_NAME);
|
||||
orderRequestVo.setCustomerPwd(Constants.EXPRESS_YD_CUSTOMER_PWD);
|
||||
}
|
||||
orderRequestVo.setExpType(1);
|
||||
orderRequestVo.setExpType(2);//1特快2标快
|
||||
orderRequestVo.setCost(expressOrder.getExpressFee().doubleValue());
|
||||
// 发货人
|
||||
ExpressUserInfoVo sender = new ExpressUserInfoVo();
|
||||
@@ -77,6 +77,7 @@ public class ExpressOrderServiceImpl extends ServiceImpl<ExpressOrderDao, Expres
|
||||
orderRequestVo.setCommodity(expressOrder.getCommodity());
|
||||
orderRequestVo.setWeight(expressOrder.getTotalWeight().doubleValue());
|
||||
orderRequestVo.setRemark(expressOrder.getRemark());
|
||||
orderRequestVo.setTemplateSize("130");
|
||||
String requestData = JSONObject.toJSONString(orderRequestVo);
|
||||
|
||||
Map<String, String> params = new HashMap<>();
|
||||
@@ -91,9 +92,9 @@ public class ExpressOrderServiceImpl extends ServiceImpl<ExpressOrderDao, Expres
|
||||
log.error(e.getMessage());
|
||||
}
|
||||
params.put("DataType", "2");
|
||||
|
||||
String response = HttpClientUtils.kdSendPost(Constants.EXPRESS_PLACE_ORDER_URL, params);
|
||||
return JSONObject.parseObject(response, ExpressOrderResponseVo.class);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
package com.peanut.modules.book.to;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class ExpressPrintDto {
|
||||
|
||||
/**
|
||||
* 时间2023-10-10
|
||||
*/
|
||||
private String date;
|
||||
|
||||
/**
|
||||
* 快递订单号
|
||||
*/
|
||||
private String expressOrderSn;
|
||||
|
||||
/**
|
||||
* 类型,0不限1已打印2未打印
|
||||
*/
|
||||
private Integer type;
|
||||
|
||||
private Integer limit;
|
||||
|
||||
private Integer page;
|
||||
}
|
||||
@@ -82,5 +82,10 @@ public class ExpressOrderRequestVo {
|
||||
* 快递客户密码
|
||||
*/
|
||||
private String CustomerPwd;
|
||||
|
||||
/**
|
||||
* 面单规格
|
||||
*/
|
||||
private String TemplateSize;
|
||||
}
|
||||
|
||||
|
||||
@@ -5,4 +5,6 @@ import org.springframework.web.multipart.MultipartFile;
|
||||
public interface OssService {
|
||||
//上传头像到oss
|
||||
String uploadFileAvatar(MultipartFile file);
|
||||
|
||||
String uploadHtml(String html,String name);
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ import org.joda.time.DateTime;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.InputStream;
|
||||
import java.util.UUID;
|
||||
|
||||
@@ -65,4 +66,56 @@ public class OssServiceImpl implements OssService {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String uploadHtml(String html, String name) {
|
||||
// 工具类获取值
|
||||
String endpoint = ConstantPropertiesUtils.END_POIND;
|
||||
String accessKeyId = ConstantPropertiesUtils.ACCESS_KEY_ID;
|
||||
String accessKeySecret = ConstantPropertiesUtils.ACCESS_KEY_SECRET;
|
||||
String bucketName = ConstantPropertiesUtils.BUCKET_NAME;
|
||||
|
||||
try {
|
||||
// 创建OSS实例。
|
||||
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
|
||||
|
||||
|
||||
//获取上传文件输入流
|
||||
// InputStream inputStream = file.getInputStream();
|
||||
//获取文件名称
|
||||
// String fileName = file.getOriginalFilename();
|
||||
//1 在文件名称里面添加随机唯一的值
|
||||
// String uuid = UUID.randomUUID().toString().replaceAll("-","");
|
||||
// yuy76t5rew01.jpg
|
||||
// fileName = uuid+fileName;
|
||||
InputStream inputStream = new ByteArrayInputStream(html.getBytes());
|
||||
String fileName = name;
|
||||
//2 把文件按照日期进行分类
|
||||
//获取当前日期
|
||||
// 2019/11/12
|
||||
String datePath = new DateTime().toString("yyyy/MM/dd");
|
||||
//拼接
|
||||
// 2019/11/12/ewtqr313401.jpg
|
||||
fileName = datePath+"/"+fileName;
|
||||
|
||||
//调用oss方法实现上传
|
||||
//第一个参数 Bucket名称
|
||||
//第二个参数 上传到oss文件路径和文件名称 aa/bb/1.jpg
|
||||
//第三个参数 上传文件输入流
|
||||
ossClient.putObject(bucketName,fileName , inputStream);
|
||||
|
||||
// 关闭OSSClient。
|
||||
ossClient.shutdown();
|
||||
|
||||
//把上传之后文件路径返回
|
||||
//需要把上传到阿里云oss路径手动拼接出来
|
||||
// https://edu-guli-1010.oss-cn-beijing.aliyuncs.com/01.jpg
|
||||
String url = "https://"+bucketName+"."+endpoint+"/"+fileName;
|
||||
|
||||
return url;
|
||||
}catch(Exception e) {
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user