From 768070aead4700de4c3df76e45ae9b5bda24e392 Mon Sep 17 00:00:00 2001 From: xjm Date: Tue, 5 Mar 2024 13:36:31 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9A=E6=97=B6=E7=BB=9F=E8=AE=A1=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/cowr/common/utils/ImageUtil.java | 6 +-- .../order/orderend/OrderEndService.java | 42 +++++++++++++----- .../order/ordertemp/OrderTempService.java | 9 ++-- .../src/main/resources/tpl_bill_full.xlsx | Bin 12306 -> 12366 bytes .../order/ordertemp/OrderTempController.java | 16 +++++++ .../system/sysuser/SysuserController.java | 4 +- 6 files changed, 59 insertions(+), 18 deletions(-) diff --git a/ssjygl-xsx-common/src/main/java/com/cowr/common/utils/ImageUtil.java b/ssjygl-xsx-common/src/main/java/com/cowr/common/utils/ImageUtil.java index bfab5fe..f29324a 100644 --- a/ssjygl-xsx-common/src/main/java/com/cowr/common/utils/ImageUtil.java +++ b/ssjygl-xsx-common/src/main/java/com/cowr/common/utils/ImageUtil.java @@ -8,7 +8,6 @@ import com.google.zxing.qrcode.QRCodeWriter; import com.jfinal.kit.Base64Kit; import com.jfinal.log.Log; import net.coobird.thumbnailator.Thumbnails; -import sun.misc.BASE64Decoder; import java.io.*; import java.util.Base64; @@ -40,11 +39,12 @@ public class ImageUtil { if (imgStr == null) // 图像数据为空 return false; - BASE64Decoder decoder = new BASE64Decoder(); +// BASE64Decoder decoder = new BASE64Decoder(); OutputStream out = null; try { // Base64解码 - byte[] bytes = decoder.decodeBuffer(imgStr); +// byte[] bytes = decoder.decodeBuffer(imgStr); + byte[] bytes = Base64.getDecoder().decode(imgStr); for (int i = 0; i < bytes.length; ++i) { if (bytes[i] < 0) {// 调整异常数据 bytes[i] += 256; diff --git a/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/order/orderend/OrderEndService.java b/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/order/orderend/OrderEndService.java index 6ac48f0..a8e0a9b 100644 --- a/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/order/orderend/OrderEndService.java +++ b/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/order/orderend/OrderEndService.java @@ -61,12 +61,23 @@ public class OrderEndService extends BaseService { } - public List getOrderEndByTm(String tm) { + public List getOrderEndByTm(String tm,String customerId) { + List paraList = new ArrayList<>(); String sql = "SELECT * FROM ORDER_END \n" + - "WHERE DATE = ? \n"; + "WHERE 1 = 1 \n"; - return OrderEnd.dao.find(sql,tm); + if (!StringUtils.isEmpty(tm)){ + sql += " AND DATE = ? \n"; + paraList.add(tm); + } + + if (!StringUtils.isEmpty(customerId)){ + sql += " AND CUSTOMER_ID = ? \n"; + paraList.add(customerId); + } + + return OrderEnd.dao.find(sql,paraList.toArray()); } public void initialize(){ @@ -82,22 +93,28 @@ public class OrderEndService extends BaseService { public void syncOrderTemp(String tm){ try { - processing(tm); + queryList(tm,null); }catch (Exception e){ log.error("同步数据异常 %s %s", e.getMessage(),e); } } - public void processing(String tm){ + + + public void queryList(String tm,String customerId) { // 获取历史数据 - List tempList = OrderTempService.me.getOrderTempGroupBy(tm); + List tempList = OrderTempService.me.getOrderTempGroupBy(tm,customerId); - if (CollectionUtils.isEmpty(tempList)){ + if (CollectionUtils.isEmpty(tempList)) { log.info("数据结果为空"); - return; + throw new IllegalArgumentException("数据结果为空"); } + processing(tm,customerId,tempList); + } + + public void processing(String tm,String customerId,List tempList){ List orderEnds = tempList.stream() .map(data -> { @@ -111,8 +128,13 @@ public class OrderEndService extends BaseService { List deletes = new ArrayList<>(); // 如果当前时间类型已存在 就更新 - if (!StringUtils.isEmpty(tm)){ - List lists = getOrderEndByTm(tm); + List lists = null; + if (StringUtils.isEmpty(tm) || StringUtils.isEmpty(customerId)){ + + lists = getOrderEndByTm(tm,customerId); + } + + if (CollectionUtils.isNotEmpty(lists)){ if (CollectionUtils.isNotEmpty(lists)){ Map> map = lists.stream() diff --git a/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/order/ordertemp/OrderTempService.java b/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/order/ordertemp/OrderTempService.java index 210e66c..f62d1e8 100644 --- a/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/order/ordertemp/OrderTempService.java +++ b/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/order/ordertemp/OrderTempService.java @@ -454,17 +454,20 @@ public class OrderTempService extends BaseService { * @tm %Y-%M-%D * @return 销售订单数据 */ - public List getOrderTempGroupBy(String tm) { + public List getOrderTempGroupBy(String tm,String customerId) { List paraList = new ArrayList<>(); String findSql = ""; + if (customerId != null) { + findSql = " AND CUSTOMER_ID = ? \n"; + paraList.add(customerId); + } if (tm != null) { findSql = " AND CREATE_TIME BETWEEN ? AND ? \n"; paraList.add(tm + STM_SUFFIX); paraList.add(tm + ETM_SUFFIX); - } - else{ + } else{ findSql = " AND CREATE_TIME < ? \n"; paraList.add(LocalDate.now() + STM_SUFFIX); } diff --git a/ssjygl-xsx-local/src/main/resources/tpl_bill_full.xlsx b/ssjygl-xsx-local/src/main/resources/tpl_bill_full.xlsx index 82849e26a1c12d640c5c3882f4a72bdb6952ee7c..5ba066f4bd2fedbcd8bef042e18a020c34038ae3 100644 GIT binary patch delta 4977 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