1
0
Quellcode durchsuchen

1.修改运单打印信息

yangbo vor 4 Jahren
Ursprung
Commit
b3f910a40f

+ 119 - 108
kmall-admin/src/main/java/com/kmall/admin/service/impl/OrderServiceImpl.java

@@ -185,7 +185,6 @@ public class OrderServiceImpl implements OrderService {
     private KtoEccsService ktoEccsService;
 
 
-
     @Override
     public OrderEntity queryObject(Long id) {
         return orderDao.queryObject(id);
@@ -421,9 +420,9 @@ public class OrderServiceImpl implements OrderService {
 
 
             GoodsEntity goodsEntity = goodsService.queryObject(orderGoods.getGoodsId());
-            BigDecimal goodsTax = CalculateTax.calculateFinalTax(goodsEntity,orderGoods.getRetailPrice(),goodsService).setScale(3,RoundingMode.HALF_UP);
-            goodsTax = goodsTax.multiply(new BigDecimal(orderGoods.getNumber())).setScale(2,RoundingMode.HALF_UP);
-            taxTotal = taxTotal.add(goodsTax).setScale(2,RoundingMode.HALF_UP);
+            BigDecimal goodsTax = CalculateTax.calculateFinalTax(goodsEntity, orderGoods.getRetailPrice(), goodsService).setScale(3, RoundingMode.HALF_UP);
+            goodsTax = goodsTax.multiply(new BigDecimal(orderGoods.getNumber())).setScale(2, RoundingMode.HALF_UP);
+            taxTotal = taxTotal.add(goodsTax).setScale(2, RoundingMode.HALF_UP);
 
             Goods goods = new Goods(orderGoods.getGoodsName(),
                     orderGoods.getRetailPrice().toString(), // 含税价
@@ -482,13 +481,28 @@ public class OrderServiceImpl implements OrderService {
 //            }
         }
         TicketMailInfo mailInfo = new TicketMailInfo();
-        mailInfo.setExprNo(orderEntity.getShippingNo());
-        mailInfo.setExprLogoUrl("/statics/img/bestex_logo2.jpeg");
-        byte[] barCode128 = BarcodeUtil.generateBarCode128(orderEntity.getShippingNo(), null, null, true, false);
+        String exprNo = orderProcessRecordEntity.getLogisticsNo();
+        mailInfo.setExprNo(exprNo);
+        mailInfo.setExprLogoUrl("/statics/img/bestex_logo3.png");
+        byte[] barCode128 = BarcodeUtil.generateBarCode128(exprNo, null, null, true, false);
         String exprNoBase64Img = new String(Base64.getEncoder().encode(barCode128));
-//            FileOutputStream fos = new FileOutputStream(new File("C:\\Users\\Administrator\\Desktop\\aaaaaaa.png"));
-            BarcodeUtil.byte2image(barCode128, "C:\\Users\\Administrator\\Desktop\\aaaaaaa.png");
-            mailInfo.setShopTel("0752 - 2688660");
+        mailInfo.setShopTel("0752-2688660");
+
+        // 发货人
+        mailInfo.setSenderTel("0752-2688660");
+        mailInfo.setSenderName("CW澳洲大药房");
+        mailInfo.setSenderProvince("广东省");
+        mailInfo.setSenderCity("深圳市");
+        mailInfo.setSenderDistrict("南山区");
+        mailInfo.setSenderAddress("前海综合保税区W104");
+
+        // 收货人
+        mailInfo.setConsigneeMob(new StringBuilder(orderEntity.getMobile()).replace(3, 7, "****").toString());
+        mailInfo.setConsigneeName(new StringBuilder(orderEntity.getConsignee()).replace(1, 2, "*").toString());
+        mailInfo.setConsigneeProvince(orderEntity.getProvince());
+        mailInfo.setConsigneeCity(orderEntity.getCity());
+        mailInfo.setConsigneeDistrict(orderEntity.getDistrict());
+        mailInfo.setConsigneeAddress(orderEntity.getAddress());
 
         mailInfo.setExprNoBase64Img(exprNoBase64Img);
         return TicketPrintUtil.print(head, goodsList, cashInfo, cusListing, mailInfo);
@@ -773,21 +787,21 @@ public class OrderServiceImpl implements OrderService {
             ktoEccsEntity.setRequestData(JSON.toJSONString(orderGoodsEntity));
             ktoEccsEntity.setRequestType("04");
             ktoEccsEntity.setSendStatus("00");
-            if(user != null){
-                ktoEccsEntity.setCreaterSn(user.getUserId()+"");
-            }else{
+            if (user != null) {
+                ktoEccsEntity.setCreaterSn(user.getUserId() + "");
+            } else {
                 ktoEccsEntity.setCreaterSn("9999");
             }
             ktoEccsEntity.setCreateTime(new Date());
             ktoEccsEntities.add(ktoEccsEntity);
         }
-        if(ktoEccsEntities.size() > 0){
-            if(ktoEccsEntities.size() > 50){
+        if (ktoEccsEntities.size() > 0) {
+            if (ktoEccsEntities.size() > 50) {
                 List<List<KtoEccsEntity>> partition = Lists.partition(ktoEccsEntities, 50);
                 for (List<KtoEccsEntity> ktoEccs : partition) {
                     ktoEccsService.saveBatch(ktoEccs);
                 }
-            }else{
+            } else {
                 ktoEccsService.saveBatch(ktoEccsEntities);
             }
         }
@@ -868,7 +882,7 @@ public class OrderServiceImpl implements OrderService {
         if (goodsEntity != null) {
             goodsEntity.setGoodsNumber(stockNum + orderGoodsEntity.getNumber());
 //                        goodsEntity.setSellVolume(Integer.parseInt(goodsSellVolume.toString()));
-            if("oms退单成功,恢复库存".equals(changeReason)){
+            if ("oms退单成功,恢复库存".equals(changeReason)) {
                 goodsEntity.setToBeRestored(goodsEntity.getToBeRestored() - orderGoodsEntity.getNumber());
             }
             goodsDao.update(goodsEntity);
@@ -876,7 +890,7 @@ public class OrderServiceImpl implements OrderService {
 //            storeRelaEntity.setSellVolume(Integer.parseInt(sellVolume.toString()));
 //            productStoreRelaDao.update(storeRelaEntity);
             String username = "system";
-            if(user != null){
+            if (user != null) {
                 username = user.getUsername();
             }
 
@@ -912,14 +926,14 @@ public class OrderServiceImpl implements OrderService {
                                       OrderGoodsEntity orderGoodsEntity, BigDecimal sellVolume, String changeReason, SysUserEntity user) {
         storeRelaEntity.setSellVolume(Integer.parseInt(sellVolume.toString())); // 减退库存
         storeRelaEntity.setStockNum(stockNum + orderGoodsEntity.getNumber());//库存数量
-        if("oms退单成功,恢复库存".equals(changeReason)){
+        if ("oms退单成功,恢复库存".equals(changeReason)) {
             storeRelaEntity.setToBeRestored(storeRelaEntity.getToBeRestored() - orderGoodsEntity.getNumber());
         }
         productStoreRelaDao.update(storeRelaEntity);
 
 
         String username = "system";
-        if(user != null){
+        if (user != null) {
             username = user.getUsername();
         }
         StoreMngChangeEntity storeMngChangeEntity = new StoreMngChangeEntity();
@@ -1814,7 +1828,7 @@ public class OrderServiceImpl implements OrderService {
         Map<String, String> mapAddr = new HashMap<>();
         if (status == 0) {
             //省
-            String cmbProvince = (String)param.get("cmbProvince");
+            String cmbProvince = (String) param.get("cmbProvince");
             //市
             String cmbCity = (String) param.get("cmbCity");
             //区
@@ -1822,10 +1836,10 @@ public class OrderServiceImpl implements OrderService {
             //详细地址
             String addrUser = (String) param.get("addrUser");
 
-            mapAddr.put("cmbProvince",cmbProvince);
-            mapAddr.put("cmbCity",cmbCity);
-            mapAddr.put("cmbArea",cmbArea);
-            mapAddr.put("addrUser",addrUser);
+            mapAddr.put("cmbProvince", cmbProvince);
+            mapAddr.put("cmbCity", cmbCity);
+            mapAddr.put("cmbArea", cmbArea);
+            mapAddr.put("addrUser", addrUser);
         }
 
         try {
@@ -2084,9 +2098,6 @@ public class OrderServiceImpl implements OrderService {
             }
 
 
-
-
-
             // TODO 查询使用的优惠券,并减扣金额
             String couponSn = (String) userInfo.get("couponSn");
             // 获取当前时间
@@ -2118,7 +2129,7 @@ public class OrderServiceImpl implements OrderService {
             // 生成订单
             String merchOrderSn = "EMATO" + CommonUtil.generateOrderNumber();
 
-            OrderVo order = setOrderVo(goodsEntities, userEntity, storeId.longValue(), user.getMerchSn(), disCountAmount, totalTax,status,mapAddr);
+            OrderVo order = setOrderVo(goodsEntities, userEntity, storeId.longValue(), user.getMerchSn(), disCountAmount, totalTax, status, mapAddr);
             order.setStore_id(storeId.longValue());
 //            if(storeTopic != null){
 //                order.setActivity_id(storeTopic.getId().longValue());
@@ -2262,7 +2273,7 @@ public class OrderServiceImpl implements OrderService {
             resultObj.put("time", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
             resultObj.put("orderNo", order.getOrder_sn()); //
 
-            resultObj.put("phone",(String) userInfo.get("customPhone"));
+            resultObj.put("phone", (String) userInfo.get("customPhone"));
             // 通知WebSocket
             WebSocketServer.sendMessage(sessionId, order.getOrder_sn(), order.getStore_id()
                     + "");
@@ -2736,11 +2747,11 @@ public class OrderServiceImpl implements OrderService {
                 pickUpCodeService.update(pickUpCodeEntity);
 
                 // 判断该订单是否进入oms系统
-                if(!arrivedOms(order.getOrderSn())){
+                if (!arrivedOms(order.getOrderSn())) {
                     // oms无该订单,则直接退款
                     restoreInventory(order, "收银端退款");
                     orderRefund.setRestore(1);
-                } else{
+                } else {
                     // 如果oms有订单,统一进入锁库存情况
                     orderRefund.setRestore(0);
                     toBeRestoreInventory(order);
@@ -2794,11 +2805,11 @@ public class OrderServiceImpl implements OrderService {
             pickUpCodeEntity.setPickUpCodeStatus("3");
             pickUpCodeService.update(pickUpCodeEntity);
             // 判断该订单是否进入oms系统
-            if(!arrivedOms(order.getOrderSn())){
+            if (!arrivedOms(order.getOrderSn())) {
                 // oms无该订单,则直接退款
                 restoreInventory(order, "收银端退款");
                 orderRefund.setRestore(1);
-            } else{
+            } else {
                 // 如果oms有订单,统一进入锁库存情况
                 orderRefund.setRestore(0);
                 toBeRestoreInventory(order);
@@ -2822,19 +2833,19 @@ public class OrderServiceImpl implements OrderService {
             ProductStoreRelaEntity storeRelaEntity = productStoreRelaDao
                     .queryByGoodsIdAndStoreId(order.getStoreId().longValue(), orderGoodsEntity.getGoodsId().longValue());
             Integer toBeRestored = storeRelaEntity.getToBeRestored();
-            if(toBeRestored == null){
+            if (toBeRestored == null) {
                 toBeRestored = 0;
             }
             // 修改待退款的数量
-            storeRelaEntity.setToBeRestored(toBeRestored +restoreNumber);
+            storeRelaEntity.setToBeRestored(toBeRestored + restoreNumber);
 
             GoodsEntity goodsEntity = goodsDao.queryObject(orderGoodsEntity.getGoodsId());
 
             toBeRestored = goodsEntity.getToBeRestored();
-            if(toBeRestored == null){
+            if (toBeRestored == null) {
                 toBeRestored = 0;
             }
-            goodsEntity.setToBeRestored(toBeRestored+restoreNumber);
+            goodsEntity.setToBeRestored(toBeRestored + restoreNumber);
 
 
             productStoreRelaDao.update(storeRelaEntity);
@@ -2845,6 +2856,7 @@ public class OrderServiceImpl implements OrderService {
 
     /**
      * 查询oms系统是否有该订单
+     *
      * @param orderSn
      * @return
      */
@@ -2852,17 +2864,17 @@ public class OrderServiceImpl implements OrderService {
 
         Map<String, String> sParaTemp = new TreeMap<String, String>();
 //        sParaTemp.put("data","ZWCW2020122749351849");
-        sParaTemp.put("data",orderSn);
-        sParaTemp.put("merchId",omsMerchProperties.getMerchSn());
-        String timestamp = String.valueOf(System.currentTimeMillis()/1000);
+        sParaTemp.put("data", orderSn);
+        sParaTemp.put("merchId", omsMerchProperties.getMerchSn());
+        String timestamp = String.valueOf(System.currentTimeMillis() / 1000);
         sParaTemp.put("timestamp", timestamp);
         //生成要请求给oms秘钥
 //        String sign = OmsSign.sign(sParaTemp,cus.getWaybill().get("secret-key"));
         LOGGER.info("md5混淆码参数:" + omsMerchProperties.getMd5Salt());
-        String sign = OmsSign.sign(sParaTemp,omsMerchProperties.getMd5Salt());
+        String sign = OmsSign.sign(sParaTemp, omsMerchProperties.getMd5Salt());
         sParaTemp.put("sign", sign);
         //构建Request
-        String  url = omsMerchProperties.getQueryInveResponseUrl();
+        String url = omsMerchProperties.getQueryInveResponseUrl();
         Request request = com.kmall.admin.utils.oms.OkHttpUtils.buildRequest(url, JSON.toJSONString(sParaTemp));
         LOGGER.info("oms的请求报文:" + request);
         // 同步访问,返回结果字符串
@@ -2875,16 +2887,16 @@ public class OrderServiceImpl implements OrderService {
             e.printStackTrace();
         }
 
-        LOGGER.info("oms的响应报文"+responseString);
+        LOGGER.info("oms的响应报文" + responseString);
         //解析响应数据
         Gson gson = new Gson();
         ResponseMessage result = gson.fromJson(responseString, ResponseMessage.class);
-        if(result == null){
+        if (result == null) {
             String info = "解析响应数据Result失败";
             LOGGER.error("--- {}", info);
             throw new RuntimeException(info);
         }
-        if("oms无该订单".equals(result.getMsg())){
+        if ("oms无该订单".equals(result.getMsg())) {
             return false;
         }
 
@@ -2987,7 +2999,7 @@ public class OrderServiceImpl implements OrderService {
 //
 //        dBefore = calendar.getTime(); //得到前一天的时间
 
-        String defaultStartDate =  comparedDate + " 00:00:00";
+        String defaultStartDate = comparedDate + " 00:00:00";
 
 
         String defaultEndDate = comparedDate + " 23:59:59";
@@ -3008,11 +3020,11 @@ public class OrderServiceImpl implements OrderService {
     @Override
     public ExportExcelDto querySumAmount(String billDate, String storeId) {
         ExportExcelDto exportExcelDto = new ExportExcelDto();
-        ExportExcelDto totalAmount = orderDao.totalAmount(billDate,storeId);
-        ExportExcelDto refundCurrentAmount = orderDao.refundCurrentAmount(billDate,storeId);
-        ExportExcelDto refundPreviousAmount = orderDao.refundPreviousAmount(billDate,storeId);
-        ExportExcelDto currentTax = orderDao.currentTax(billDate,storeId);
-        ExportExcelDto refundPreviousTax = orderDao.refundPreviousTax(billDate,storeId);
+        ExportExcelDto totalAmount = orderDao.totalAmount(billDate, storeId);
+        ExportExcelDto refundCurrentAmount = orderDao.refundCurrentAmount(billDate, storeId);
+        ExportExcelDto refundPreviousAmount = orderDao.refundPreviousAmount(billDate, storeId);
+        ExportExcelDto currentTax = orderDao.currentTax(billDate, storeId);
+        ExportExcelDto refundPreviousTax = orderDao.refundPreviousTax(billDate, storeId);
 
         // 以下是直接从数据库中查出来的
         exportExcelDto.setTotalAmount(totalAmount.getTotalAmount()); // 总销售额
@@ -3026,71 +3038,71 @@ public class OrderServiceImpl implements OrderService {
 
         // 以下是通过计算的出来的
         // 销售净额
-        exportExcelDto.setNetAmount( new BigDecimal(exportExcelDto.getTotalAmount()).subtract(new BigDecimal(exportExcelDto.getRefundPreviousAmount())).setScale(2,RoundingMode.HALF_UP).toString() );
+        exportExcelDto.setNetAmount(new BigDecimal(exportExcelDto.getTotalAmount()).subtract(new BigDecimal(exportExcelDto.getRefundPreviousAmount())).setScale(2, RoundingMode.HALF_UP).toString());
         // 总税额
-        exportExcelDto.setTotalTax(new BigDecimal(exportExcelDto.getCurrentTax()).add(new BigDecimal(exportExcelDto.getPreviousTax())).setScale(2,RoundingMode.HALF_UP).toString());
+        exportExcelDto.setTotalTax(new BigDecimal(exportExcelDto.getCurrentTax()).add(new BigDecimal(exportExcelDto.getPreviousTax())).setScale(2, RoundingMode.HALF_UP).toString());
         // 税前总额
-        exportExcelDto.setPreTaxTotalAmount(new BigDecimal(exportExcelDto.getNetAmount()).subtract(new BigDecimal(exportExcelDto.getTotalTax())).setScale(2,RoundingMode.HALF_UP).toString());
+        exportExcelDto.setPreTaxTotalAmount(new BigDecimal(exportExcelDto.getNetAmount()).subtract(new BigDecimal(exportExcelDto.getTotalTax())).setScale(2, RoundingMode.HALF_UP).toString());
         // 成功单数
-        exportExcelDto.setSuccessNumber(new BigDecimal(exportExcelDto.getTotalCount()).subtract(new BigDecimal(exportExcelDto.getRefundPreviousCount())).setScale(2,RoundingMode.HALF_UP).toString());
+        exportExcelDto.setSuccessNumber(new BigDecimal(exportExcelDto.getTotalCount()).subtract(new BigDecimal(exportExcelDto.getRefundPreviousCount())).setScale(2, RoundingMode.HALF_UP).toString());
         // 退款总额
-        exportExcelDto.setRefundAmount(new BigDecimal(exportExcelDto.getRefundCurrentAmount()).add(new BigDecimal(exportExcelDto.getRefundPreviousAmount())).setScale(2,RoundingMode.HALF_UP).toString());
+        exportExcelDto.setRefundAmount(new BigDecimal(exportExcelDto.getRefundCurrentAmount()).add(new BigDecimal(exportExcelDto.getRefundPreviousAmount())).setScale(2, RoundingMode.HALF_UP).toString());
         // 退单单数
-        exportExcelDto.setRefundCount(new BigDecimal(exportExcelDto.getRefundCurrentCount()).add(new BigDecimal(exportExcelDto.getRefundPreviousCount())).setScale(2,RoundingMode.HALF_UP).toString());
+        exportExcelDto.setRefundCount(new BigDecimal(exportExcelDto.getRefundCurrentCount()).add(new BigDecimal(exportExcelDto.getRefundPreviousCount())).setScale(2, RoundingMode.HALF_UP).toString());
 
         return exportExcelDto;
     }
 
     @Override
-    public Map<String,List<OrderEntity>> querySaleOrderList(String billDate, String storeId) {
-        Map<String,List<OrderEntity>> result = new HashMap<>();
+    public Map<String, List<OrderEntity>> querySaleOrderList(String billDate, String storeId) {
+        Map<String, List<OrderEntity>> result = new HashMap<>();
         // 查询当天所有订单
-        List<OrderEntity> orderEntityList = orderDao.queryCurrentPreviousOrderList(billDate,storeId);
-        result.put("current",orderEntityList);
+        List<OrderEntity> orderEntityList = orderDao.queryCurrentPreviousOrderList(billDate, storeId);
+        result.put("current", orderEntityList);
         // 查询当天退前期订单
-        List<OrderEntity> refundPreviousOrderList = orderDao.queryRefundPreviousOrderList(billDate,storeId);
-        result.put("previous",refundPreviousOrderList);
+        List<OrderEntity> refundPreviousOrderList = orderDao.queryRefundPreviousOrderList(billDate, storeId);
+        result.put("previous", refundPreviousOrderList);
 
         return result;
     }
 
     @Override
     public Map<String, List<TaxDetailDto>> queryTaxDetailList(String billDate, String storeId) {
-        Map<String,List<TaxDetailDto>> result = new HashMap<>();
+        Map<String, List<TaxDetailDto>> result = new HashMap<>();
         // 查询当天所有订单税单
-        List<TaxDetailDto> taxDetailList = orderDao.queryCurrentTaxDetailList(billDate,storeId);
+        List<TaxDetailDto> taxDetailList = orderDao.queryCurrentTaxDetailList(billDate, storeId);
 
         // 计算税前价,增值税,消费税
         BigDecimal discountRate = new BigDecimal(0.7);
-        if(taxDetailList != null && taxDetailList.size() != 0){
+        if (taxDetailList != null && taxDetailList.size() != 0) {
             for (TaxDetailDto taxDetailDto : taxDetailList) {
                 // 获取实际支付价格
                 String postTaxPrice = taxDetailDto.getPostTaxPrice();
                 // 获取总税额
-                String  taxStr = taxDetailDto.getTax();
+                String taxStr = taxDetailDto.getTax();
                 // 税前金额
                 BigDecimal tax = new BigDecimal(taxStr);
                 BigDecimal pretaxPrice = new BigDecimal(postTaxPrice).subtract(tax).setScale(2, RoundingMode.HALF_UP);
                 // 计算综合税率
                 BigDecimal taxRate = tax.divide(pretaxPrice, 4, RoundingMode.HALF_UP);
                 // 消费税率
-                BigDecimal saleTaxRate = new BigDecimal(taxDetailDto.getSaleTaxRate()).divide(new BigDecimal(100),2,RoundingMode.HALF_UP);
+                BigDecimal saleTaxRate = new BigDecimal(taxDetailDto.getSaleTaxRate()).divide(new BigDecimal(100), 2, RoundingMode.HALF_UP);
                 // 综合税率
-                BigDecimal vatRate = new BigDecimal(taxDetailDto.getVatRate()).divide(new BigDecimal(100),2,RoundingMode.HALF_UP);
+                BigDecimal vatRate = new BigDecimal(taxDetailDto.getVatRate()).divide(new BigDecimal(100), 2, RoundingMode.HALF_UP);
 //              消费税 = (明细商品总价 / (1-消费税税率)) * 消费税税率
 //              增值税 = (明细商品总价 + 消费税) * 增值税税率
 //              订单该商品总税费 = (商品消费税 + 商品增值税)* 0.7
                 // 如果大于,要算消费税
                 BigDecimal saleTax = new BigDecimal(0);
                 BigDecimal vat = new BigDecimal(0);
-                if(taxRate.compareTo(new BigDecimal("0.23")) > 0){
+                if (taxRate.compareTo(new BigDecimal("0.23")) > 0) {
                     saleTax = pretaxPrice.divide(new BigDecimal(1).subtract(saleTaxRate), 2, RoundingMode.HALF_UP).multiply(saleTaxRate).
                             setScale(2, RoundingMode.HALF_UP);
                     vat = pretaxPrice.add(saleTax).multiply(vatRate).
                             multiply(discountRate).setScale(2, RoundingMode.HALF_UP);
-                    saleTax = saleTax.multiply(discountRate).setScale(2,RoundingMode.HALF_UP);
+                    saleTax = saleTax.multiply(discountRate).setScale(2, RoundingMode.HALF_UP);
 
-                }else{
+                } else {
                     // 不需要算消费税,增值税计算
                     vat = pretaxPrice.multiply(vatRate).multiply(discountRate).setScale(2, RoundingMode.HALF_UP);
                 }
@@ -3099,48 +3111,48 @@ public class OrderServiceImpl implements OrderService {
             }
         }
 
-        result.put("current",taxDetailList);
+        result.put("current", taxDetailList);
         // 查询当天退前期订单税单
-        List<TaxDetailDto> refundPrevioustaxDetailList = orderDao.queryRefundPreviousTaxDetailList(billDate,storeId);
+        List<TaxDetailDto> refundPrevioustaxDetailList = orderDao.queryRefundPreviousTaxDetailList(billDate, storeId);
 
         // 计算税前价,增值税,消费税
-        if(refundPrevioustaxDetailList != null && refundPrevioustaxDetailList.size() != 0){
+        if (refundPrevioustaxDetailList != null && refundPrevioustaxDetailList.size() != 0) {
             for (TaxDetailDto taxDetailDto : refundPrevioustaxDetailList) {
                 // 获取实际支付价格
                 String postTaxPrice = taxDetailDto.getPostTaxPrice();
                 // 获取总税额
-                String  taxStr = taxDetailDto.getPreTax();
+                String taxStr = taxDetailDto.getPreTax();
                 // 税前金额
                 BigDecimal tax = new BigDecimal(taxStr);
                 BigDecimal pretaxPrice = new BigDecimal(postTaxPrice).subtract(tax).setScale(2, RoundingMode.HALF_UP);
                 // 计算综合税率
                 BigDecimal taxRate = tax.divide(pretaxPrice, 4, RoundingMode.HALF_UP);
                 // 消费税率
-                BigDecimal saleTaxRate = new BigDecimal(taxDetailDto.getPreSaleTax()).divide(new BigDecimal(100),2,RoundingMode.HALF_UP);
+                BigDecimal saleTaxRate = new BigDecimal(taxDetailDto.getPreSaleTax()).divide(new BigDecimal(100), 2, RoundingMode.HALF_UP);
                 // 综合税率
-                BigDecimal vatRate = new BigDecimal(taxDetailDto.getPreVat()).divide(new BigDecimal(100),2,RoundingMode.HALF_UP);
+                BigDecimal vatRate = new BigDecimal(taxDetailDto.getPreVat()).divide(new BigDecimal(100), 2, RoundingMode.HALF_UP);
 //              消费税 = (明细商品总价 / (1-消费税税率)) * 消费税税率
 //              增值税 = (明细商品总价 + 消费税) * 增值税税率
 //              订单该商品总税费 = (商品消费税 + 商品增值税)* 0.7
                 // 如果大于,要算消费税
                 BigDecimal saleTax = new BigDecimal(0);
                 BigDecimal vat = new BigDecimal(0);
-                if(taxRate.compareTo(new BigDecimal("0.23")) > 0){
+                if (taxRate.compareTo(new BigDecimal("0.23")) > 0) {
                     saleTax = pretaxPrice.divide(new BigDecimal(1).subtract(saleTaxRate), 2, RoundingMode.HALF_UP).multiply(saleTaxRate).
                             multiply(discountRate).setScale(2, RoundingMode.HALF_UP);
                     vat = pretaxPrice.add(saleTax).multiply(vatRate).
                             multiply(discountRate).setScale(2, RoundingMode.HALF_UP);
 
-                }else{
+                } else {
                     // 不需要算消费税,增值税计算
                     vat = pretaxPrice.multiply(vatRate).multiply(discountRate).setScale(2, RoundingMode.HALF_UP);
                 }
-                taxDetailDto.setPreSaleTax(saleTax.compareTo(BigDecimal.ZERO)==0?saleTax.toString():"-"+saleTax.toString());
-                taxDetailDto.setPreVat(vat.compareTo(BigDecimal.ZERO)==0?vat.toString():"-"+vat.toString());
+                taxDetailDto.setPreSaleTax(saleTax.compareTo(BigDecimal.ZERO) == 0 ? saleTax.toString() : "-" + saleTax.toString());
+                taxDetailDto.setPreVat(vat.compareTo(BigDecimal.ZERO) == 0 ? vat.toString() : "-" + vat.toString());
             }
         }
 
-        result.put("previous",refundPrevioustaxDetailList);
+        result.put("previous", refundPrevioustaxDetailList);
 
         return result;
     }
@@ -3148,17 +3160,17 @@ public class OrderServiceImpl implements OrderService {
     @Override
     public List<String> queryInveResponse(String orderSn) throws IOException {
         Map<String, String> sParaTemp = new TreeMap<String, String>();
-        sParaTemp.put("data",orderSn);
-        sParaTemp.put("merchId",omsMerchProperties.getMerchSn());
-        String timestamp = String.valueOf(System.currentTimeMillis()/1000);
+        sParaTemp.put("data", orderSn);
+        sParaTemp.put("merchId", omsMerchProperties.getMerchSn());
+        String timestamp = String.valueOf(System.currentTimeMillis() / 1000);
         sParaTemp.put("timestamp", timestamp);
         //生成要请求给oms秘钥
 //        String sign = OmsSign.sign(sParaTemp,cus.getWaybill().get("secret-key"));
         LOGGER.info("md5混淆码参数:" + omsMerchProperties.getMd5Salt());
-        String sign = OmsSign.sign(sParaTemp,omsMerchProperties.getMd5Salt());
+        String sign = OmsSign.sign(sParaTemp, omsMerchProperties.getMd5Salt());
         sParaTemp.put("sign", sign);
         //构建Request
-        String  url = omsMerchProperties.getQueryInveResponseUrl();
+        String url = omsMerchProperties.getQueryInveResponseUrl();
         Request request = com.kmall.admin.utils.oms.OkHttpUtils.buildRequest(url, JSON.toJSONString(sParaTemp));
         LOGGER.info("oms的请求报文:" + request);
         // 同步访问,返回结果字符串
@@ -3172,11 +3184,11 @@ public class OrderServiceImpl implements OrderService {
             throw e;
         }
 
-        LOGGER.info("oms的响应报文"+responseString);
+        LOGGER.info("oms的响应报文" + responseString);
         //解析响应数据
         Gson gson = new Gson();
         ResponseMessage result = gson.fromJson(responseString, ResponseMessage.class);
-        if(result == null){
+        if (result == null) {
             String info = "解析响应数据Result失败";
             LOGGER.error("--- {}", info);
             throw new RuntimeException(info);
@@ -3185,9 +3197,9 @@ public class OrderServiceImpl implements OrderService {
         List rows = data.getRows();
         List<String> resultMessage = new LinkedList<>();
         for (Object row : rows) {
-            if(row instanceof ArrayList){
+            if (row instanceof ArrayList) {
                 for (Object o : ((ArrayList<?>) row)) {
-                    if(o instanceof LinkedTreeMap){
+                    if (o instanceof LinkedTreeMap) {
                         String cusReturnInfo = (String) ((LinkedTreeMap<?, ?>) o).get("cusReturnInfo");
                         resultMessage.add(cusReturnInfo);
                     }
@@ -3223,16 +3235,16 @@ public class OrderServiceImpl implements OrderService {
         // 查询该订单在库存是否已经释放过,避免重复恢复库存
         OrderEntity orderInfo = orderDao.queryObjectByOrderSn(orderSn);
         OrderRefundEntity orderRefundEntity = orderRefundService.queryObjectByOrderId(orderInfo.getId());
-        if(orderRefundEntity == null){
-            LOGGER.error("该订单无退款记录,订单号{}",orderSn);
-            throw new RuntimeException("该订单无退款记录,订单号:"+orderSn);
+        if (orderRefundEntity == null) {
+            LOGGER.error("该订单无退款记录,订单号{}", orderSn);
+            throw new RuntimeException("该订单无退款记录,订单号:" + orderSn);
         }
         Integer restore = orderRefundEntity.getRestore();
-        if(restore == 1){
-            LOGGER.error("该订单库存记录已恢复过,订单号{}",orderSn);
-            throw new RuntimeException("该订单库存记录已恢复过,订单号:"+orderSn);
+        if (restore == 1) {
+            LOGGER.error("该订单库存记录已恢复过,订单号{}", orderSn);
+            throw new RuntimeException("该订单库存记录已恢复过,订单号:" + orderSn);
         }
-        restoreInventory(orderInfo,"oms退单成功,恢复库存");
+        restoreInventory(orderInfo, "oms退单成功,恢复库存");
         orderRefundEntity.setRestore(1);
         orderRefundService.update(orderRefundEntity);
 
@@ -3330,12 +3342,13 @@ public class OrderServiceImpl implements OrderService {
 
         return orderInfo;
     }
+
     /**
      * 设置订单数据
      *
      * @return
      */
-    public OrderVo setOrderVo(List<GoodsEntity> goodsList, UserEntity loginUser, Long storeId, String merchSn, BigDecimal disCountAmount, BigDecimal totalTax,int status,Map mapAddr) {
+    public OrderVo setOrderVo(List<GoodsEntity> goodsList, UserEntity loginUser, Long storeId, String merchSn, BigDecimal disCountAmount, BigDecimal totalTax, int status, Map mapAddr) {
         OrderVo orderInfo = new OrderVo();
 
         BigDecimal goodsTotalPrice = new BigDecimal(0.00);
@@ -3375,9 +3388,9 @@ public class OrderServiceImpl implements OrderService {
         orderInfo.setMobile(loginUser.getMobile());
         orderInfo.setCountry("");
         //根据 前端的选择方式 1 是柜取 0 是 邮寄
-        if (status==0) {
+        if (status == 0) {
             //省
-            String cmbProvince = (String)mapAddr.get("cmbProvince");
+            String cmbProvince = (String) mapAddr.get("cmbProvince");
             //市
             String cmbCity = (String) mapAddr.get("cmbCity");
             //区
@@ -3388,7 +3401,7 @@ public class OrderServiceImpl implements OrderService {
             orderInfo.setCity(cmbCity);
             orderInfo.setDistrict(cmbArea);
             orderInfo.setAddress(addrUser);
-        }else {
+        } else {
             orderInfo.setProvince(storeEntity.getProvinceName());
             orderInfo.setCity(storeEntity.getCityName());
             orderInfo.setDistrict(storeEntity.getCountyName());
@@ -3464,8 +3477,6 @@ public class OrderServiceImpl implements OrderService {
         orderGoodsVo.setSku(goodsDto.getSku());
 
 
-
-
         BigDecimal number = new BigDecimal(Long.valueOf(goodsDto.getGoodsNumber()));
         BigDecimal goodsTotal = goodsDto.getRetailPrice().multiply(number);//单商品总价
         BigDecimal rate = goodsTotal.divide(orderInfo.getGoods_price(), 2, BigDecimal.ROUND_HALF_UP);//当前商品总价/订单总价(不含运费、不含优惠券)
@@ -3499,8 +3510,8 @@ public class OrderServiceImpl implements OrderService {
 
         // 计算税费
         GoodsEntity goodsEntity = goodsService.queryObject(goodsDto.getId().intValue());
-        BigDecimal goodsTax = CalculateTax.calculateFinalTax(goodsEntity,goodsDto.getStoreRetailPrice(),goodsService).setScale(3,RoundingMode.HALF_UP);
-        goodsTax = goodsTax.multiply(number).setScale(2,RoundingMode.HALF_UP);
+        BigDecimal goodsTax = CalculateTax.calculateFinalTax(goodsEntity, goodsDto.getStoreRetailPrice(), goodsService).setScale(3, RoundingMode.HALF_UP);
+        goodsTax = goodsTax.multiply(number).setScale(2, RoundingMode.HALF_UP);
         orderGoodsVo.setTaxPrice(goodsTax);
 
         return orderGoodsVo;

+ 66 - 50
kmall-admin/src/main/webapp/js/sale/sale.js

@@ -1451,28 +1451,29 @@ function getPrintContentOrder(ticket) {
     content += "</div>";
     content += "<div style=\"width: 100%;overflow:hidden;white-space: nowrap;\">--------------------------------------------------</div>";
     //海关清单信息
-    content += "<div style=\"width: 100%;\">";
-    content += "订单号:" + ticket.cusListing.orderId;
-    content += "</div>";
-    content += "<div style=\"width: 100%;\">";
-    content += "运单编号:" + ticket.cusListing.waybillId;
-    content += "</div>";
+    // content += "<div style=\"width: 100%;\">";
+    // content += "订单号:" + ticket.cusListing.orderId;
+    // content += "</div>";
+    // content += "<div style=\"width: 100%;\">";
+    // content += "运单编号:" + ticket.cusListing.waybillId;
+    // content += "</div>";
     content += "<div style=\"width: 100%;\">";
     content += "海关清单号:" + ticket.cusListing.invtNo;
     content += "</div>";
-    content += "<div style=\"width: 100%;\">";
-    content += "收货人:" + ticket.cusListing.consignee;
-    content += "</div>";
-    content += "<div style=\"width: 100%;\">";
-    content += "收货人电话:" + ticket.cusListing.consigneeTel;
-    content += "</div>";
-    content += "<div style=\"width: 100%;\">";
-    content += "始发地: 仓库地址 : 广东省深圳市南山区前海保税港区W104"  ;
-    content += "</div>";
-    content += "<div style=\"width: 100%;\">";
-    content += "交货地:" + ticket.cusListing.deliveryAddress;
-    content += "</div>";
+    // content += "<div style=\"width: 100%;\">";
+    // content += "收货人:" + ticket.cusListing.consignee;
+    // content += "</div>";
+    // content += "<div style=\"width: 100%;\">";
+    // content += "收货人电话:" + ticket.cusListing.consigneeTel;
+    // content += "</div>";
+    // content += "<div style=\"width: 100%;\">";
+    // content += "始发地: 仓库地址 : 广东省深圳市南山区前海保税港区W104"  ;
+    // content += "</div>";
+    // content += "<div style=\"width: 100%;\">";
+    // content += "交货地:" + ticket.cusListing.deliveryAddress;
+    // content += "</div>";
     content += "<div style=\"width: 100%;overflow:hidden;white-space: nowrap;\">--------------------------------------------------</div>";
+
     content += "<div style=\"width: 100%;text-align: center;\">";
     content += "购买跨境商品须知:"
     content += "</div>";
@@ -1520,59 +1521,74 @@ function getPrintContentOrder(ticket) {
     content += "<div style=\"width: 100%;overflow:hidden;white-space: nowrap;\">--------------------------------------------------</div>";
     // 面单打印
     content += `
-    <div style="width: 200px; height: 78px; overflow: hidden;">
-        <div style="width: 100%;height: 78px; border: 1px solid black;">
-            <img src='${ticket.ticketMailInfo.exprLogoUrl}' style='max-width:220px; position: relative; top: -36px; left: -2px;' />
+    <div style="width: 100%; height: 82px; border: 1px solid black;">
+        <div style="width: 100%;height: 78px; overflow: hidden">
+            <img src='${ticket.ticketMailInfo.exprLogoUrl}' style='max-width:180px;' />
         </div>
     </div>
 
     <!-- 面单条码 -->
     <div style="width: 100%;height: 98px; border-width: 0 1px 1px 1px; border-style: solid; border-color: black;">
         <div style="width: 200px; height: 78px; overflow: hidden;">
-            <img src='data:image/png;base64,${ticket.ticketMailInfo.exprNoBase64Img}' style='max-width:220px; position: relative; top: -36px; left: -2px;' />
-        </div>
-        <div style="width: 200px;text-align: center">
-            ${ticket.ticketMailInfo.exprNo}
+            <img src='data:image/png;base64,${ticket.ticketMailInfo.exprNoBase64Img}' style='max-width:199px;' />
         </div>
+    
     </div>
     <div style="width: 100%; border-width: 0 1px 1px 1px; border-style: solid; border-color: black;">
-        <div style="width: 65px; display: inline;">
-            收件人
-        </div>
-        <div style="width: 50px; display: inline;">
-            ${ticket.cusListing.consignee} ${ticket.cusListing.consigneeTel}
-        </div>
-        <div style="width: 100%">
-            ${ticket.cusListing.deliveryAddress}
+        <div style="padding: 5px 10px 5px 10px">
+            <div style="width: 65px; display: inline; font-weight: bolder;">
+                收件人
+            </div>
+            <div style="width: 100px; display: inline;">
+                <span style="font-weight: bold">${ticket.cusListing.consignee}</span> <span style="font-weight: bold">${ticket.cusListing.consigneeTel}</span>
+            </div>
+            <div style="width: 100%">
+                ${ticket.ticketMailInfo.consigneeProvince} ${ticket.ticketMailInfo.consigneeCity} ${ticket.ticketMailInfo.consigneeDistrict} ${ticket.ticketMailInfo.consigneeAddress}
+            </div>
         </div>
     </div>
     <div style="width: 100%; border-width: 0 1px 1px 1px; border-style: solid; border-color: black;">
-        <div style="width: 65px; display: inline;">
-            发件人
-        </div>
-        <div style="width: 50px; display: inline;">
-            ${ticket.ticketMailInfo.shopTel}
-        </div>
-        <div style="width: 100%">
-            仓库地址 : 广东省深圳市南山区前海保税港区W104
+        <div style="padding: 5px 10px 5px 10px">
+            <div style="width: 65px; display: inline; font-weight: bolder">
+                发件人
+            </div>
+            <div style="width: 100px; display: inline;">
+                <span style="font-weight: bold">${ticket.ticketMailInfo.shopTel}</span> <span style="font-weight: bold">CW澳洲大药房</span>
+            </div>
+            <div style="width: 100%">
+                仓库地址:${ticket.ticketMailInfo.senderProvince} ${ticket.ticketMailInfo.senderCity} ${ticket.ticketMailInfo.senderDistrict} ${ticket.ticketMailInfo.senderAddress}
+            </div>
         </div>
     </div>
-    <div
-        style="width: 100%; border-width: 0 1px 1px 1px; border-style: solid; border-color: black;">
-        <div style="text-align: left;width: 100%">
-            商品名称 数量
-        </div>
-    </div>`;
+    `;
+    let box = "<div style='width: 100%; position: relative;'>";
     for (var i = 0;i < ticket.goods.length; i++){
-        content += `
+        let topBorder = 0, bottomBorder = 0;
+        // if (i === 0) {
+        //     topBorder = "1px";
+        // }
+        if (i === ticket.goods.length - 1) {
+            bottomBorder = "1px";
+        }
+        let paddingBottom = "5px";
+        if (i === ticket.goods.length - 1) {
+            paddingBottom = "35px";
+        }
+        box += `
         <div
-            style="width: 100%; border-width: 0 1px 1px 1px; border-style: solid; border-color: black;">
-            <div style="text-align: left;width: 100%">
+            style="width: 100%; border-width: ${topBorder} 1px ${bottomBorder} 1px; border-style: solid; border-color: black; font-weight: bold;">
+            <div style="text-align: left;width: 70%; line-height: 1.5; padding: 5px 10px ${paddingBottom} 10px ">
                 ${ticket.goods[i].gname} *${ticket.goods[i].num}
             </div>
         </div>`;
 
+
     }
+
+    let markBox = `<div style="position: absolute; bottom: 5px; right: 5px; font-weight: bold; font-size: 10pt; color: #9b9b9b">已验视</div>`;
+    box += markBox;
+    box += "</div>";
+    content += box;
     return content;
 }
 

BIN
kmall-admin/src/main/webapp/statics/img/bestex_logo2.png


BIN
kmall-admin/src/main/webapp/statics/img/bestex_logo3.png


+ 140 - 0
kmall-common/src/main/java/com/kmall/common/utils/print/ticket/item/TicketMailInfo.java

@@ -24,6 +24,146 @@ public class TicketMailInfo implements Serializable {
      */
     private String shopTel;
 
+    private String senderName;
+
+    private String senderMob;
+
+    private String senderTel;
+
+    private String senderProvince;
+
+    private String senderCity;
+
+    private String senderDistrict;
+
+    private String senderAddress;
+
+    private String consigneeName;
+
+    private String consigneeMob;
+
+    private String consigneeTel;
+
+    private String consigneeProvince;
+
+    private String consigneeCity;
+
+    private String consigneeDistrict;
+
+    private String consigneeAddress;
+
+    public String getConsigneeName() {
+        return consigneeName;
+    }
+
+    public void setConsigneeName(String consigneeName) {
+        this.consigneeName = consigneeName;
+    }
+
+    public String getConsigneeMob() {
+        return consigneeMob;
+    }
+
+    public void setConsigneeMob(String consigneeMob) {
+        this.consigneeMob = consigneeMob;
+    }
+
+    public String getConsigneeTel() {
+        return consigneeTel;
+    }
+
+    public void setConsigneeTel(String consigneeTel) {
+        this.consigneeTel = consigneeTel;
+    }
+
+    public String getSenderName() {
+        return senderName;
+    }
+
+    public void setSenderName(String senderName) {
+        this.senderName = senderName;
+    }
+
+    public String getSenderMob() {
+        return senderMob;
+    }
+
+    public void setSenderMob(String senderMob) {
+        this.senderMob = senderMob;
+    }
+
+    public String getSenderTel() {
+        return senderTel;
+    }
+
+    public void setSenderTel(String senderTel) {
+        this.senderTel = senderTel;
+    }
+
+    public String getSenderProvince() {
+        return senderProvince;
+    }
+
+    public void setSenderProvince(String senderProvince) {
+        this.senderProvince = senderProvince;
+    }
+
+    public String getSenderCity() {
+        return senderCity;
+    }
+
+    public void setSenderCity(String senderCity) {
+        this.senderCity = senderCity;
+    }
+
+    public String getSenderDistrict() {
+        return senderDistrict;
+    }
+
+    public void setSenderDistrict(String senderDistrict) {
+        this.senderDistrict = senderDistrict;
+    }
+
+    public String getSenderAddress() {
+        return senderAddress;
+    }
+
+    public void setSenderAddress(String senderAddress) {
+        this.senderAddress = senderAddress;
+    }
+
+    public String getConsigneeProvince() {
+        return consigneeProvince;
+    }
+
+    public void setConsigneeProvince(String consigneeProvince) {
+        this.consigneeProvince = consigneeProvince;
+    }
+
+    public String getConsigneeCity() {
+        return consigneeCity;
+    }
+
+    public void setConsigneeCity(String consigneeCity) {
+        this.consigneeCity = consigneeCity;
+    }
+
+    public String getConsigneeDistrict() {
+        return consigneeDistrict;
+    }
+
+    public void setConsigneeDistrict(String consigneeDistrict) {
+        this.consigneeDistrict = consigneeDistrict;
+    }
+
+    public String getConsigneeAddress() {
+        return consigneeAddress;
+    }
+
+    public void setConsigneeAddress(String consigneeAddress) {
+        this.consigneeAddress = consigneeAddress;
+    }
+
     public String getShopTel() {
         return shopTel;
     }