发货相关更新

This commit is contained in:
wangjinlei
2023-10-31 11:17:19 +08:00
parent fd998c4db8
commit 890577d545
10 changed files with 181 additions and 10 deletions

View File

@@ -637,6 +637,12 @@ public class BuyOrderController {
}
@RequestMapping("/mytest")
public R mytest() throws IOException {
String mytest = buyOrderService.mytest();
return R.ok().put("url",mytest);
}
/**
* 获取商品实际价格
*

View File

@@ -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);
}
/**
* 获取快递面单列表
*

View File

@@ -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;
/**
* 面单模板
*/

View File

@@ -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;
}

View File

@@ -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);
}
/**
* 设置订单信息
*

View File

@@ -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

View File

@@ -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;
}

View File

@@ -82,5 +82,10 @@ public class ExpressOrderRequestVo {
* 快递客户密码
*/
private String CustomerPwd;
/**
* 面单规格
*/
private String TemplateSize;
}

View File

@@ -5,4 +5,6 @@ import org.springframework.web.multipart.MultipartFile;
public interface OssService {
//上传头像到oss
String uploadFileAvatar(MultipartFile file);
String uploadHtml(String html,String name);
}

View File

@@ -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;
}
}
}