diff --git a/src/main/java/com/peanut/modules/book/controller/BuyOrderController.java b/src/main/java/com/peanut/modules/book/controller/BuyOrderController.java index 8ebfa534..38a31c7f 100644 --- a/src/main/java/com/peanut/modules/book/controller/BuyOrderController.java +++ b/src/main/java/com/peanut/modules/book/controller/BuyOrderController.java @@ -637,6 +637,12 @@ public class BuyOrderController { } + @RequestMapping("/mytest") + public R mytest() throws IOException { + String mytest = buyOrderService.mytest(); + return R.ok().put("url",mytest); + } + /** * 获取商品实际价格 * diff --git a/src/main/java/com/peanut/modules/book/controller/ExpressController.java b/src/main/java/com/peanut/modules/book/controller/ExpressController.java index fd17b25b..f5a2ed7b 100644 --- a/src/main/java/com/peanut/modules/book/controller/ExpressController.java +++ b/src/main/java/com/peanut/modules/book/controller/ExpressController.java @@ -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 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 expressOrderPage = expressOrderService.getBaseMapper().selectPage(new Page<>(expressPrintDto.getPage(), expressPrintDto.getLimit()), wrapper); + return R.ok().put("page",expressOrderPage); + } + /** * 获取快递面单列表 * diff --git a/src/main/java/com/peanut/modules/book/entity/ExpressOrder.java b/src/main/java/com/peanut/modules/book/entity/ExpressOrder.java index 4f54c7da..dc3365dd 100644 --- a/src/main/java/com/peanut/modules/book/entity/ExpressOrder.java +++ b/src/main/java/com/peanut/modules/book/entity/ExpressOrder.java @@ -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; /** * 面单模板 */ diff --git a/src/main/java/com/peanut/modules/book/service/BuyOrderService.java b/src/main/java/com/peanut/modules/book/service/BuyOrderService.java index 6c18ffb6..3aa6b729 100644 --- a/src/main/java/com/peanut/modules/book/service/BuyOrderService.java +++ b/src/main/java/com/peanut/modules/book/service/BuyOrderService.java @@ -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 { Map decomposeShipment(BuyOrderListRequestVo requestVo); - + String mytest() throws IOException; } \ No newline at end of file diff --git a/src/main/java/com/peanut/modules/book/service/impl/BuyOrderServiceImpl.java b/src/main/java/com/peanut/modules/book/service/impl/BuyOrderServiceImpl.java index 87b23ac7..bb9b929a 100644 --- a/src/main/java/com/peanut/modules/book/service/impl/BuyOrderServiceImpl.java +++ b/src/main/java/com/peanut/modules/book/service/impl/BuyOrderServiceImpl.java @@ -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 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 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 impl Integer orderId = buyOrderProductList.get(0).getOrderId(); BuyOrder buyOrder = getById(orderId); + +// System.out.println(buyOrder); + QueryWrapper 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 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 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 buyOrderQueryWrapper = new QueryWrapper<>(); @@ -466,6 +495,27 @@ public class BuyOrderServiceImpl extends ServiceImpl 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().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); + } + /** * 设置订单信息 * diff --git a/src/main/java/com/peanut/modules/book/service/impl/ExpressOrderServiceImpl.java b/src/main/java/com/peanut/modules/book/service/impl/ExpressOrderServiceImpl.java index cd771f3f..b384310e 100644 --- a/src/main/java/com/peanut/modules/book/service/impl/ExpressOrderServiceImpl.java +++ b/src/main/java/com/peanut/modules/book/service/impl/ExpressOrderServiceImpl.java @@ -43,7 +43,7 @@ public class ExpressOrderServiceImpl extends ServiceImpl params = new HashMap<>(); @@ -91,9 +92,9 @@ public class ExpressOrderServiceImpl extends ServiceImpl