FengChaoYu vor 3 Monaten
Ursprung
Commit
ad85f4cdf4

+ 2 - 1
src/main/java/com/zfire/mall/manager/commonmapper/CustomerFrontOrderMapper.java

@@ -14,8 +14,9 @@ import java.util.List;
 public interface CustomerFrontOrderMapper {
 
 
-
+    @SqlParser(filter = true)
     void updateToc();
 
+    @SqlParser(filter = true)
     void updateReturnToc();
 }

+ 10 - 0
src/main/java/com/zfire/mall/manager/commonmapper/HomeOrderMapper.java

@@ -0,0 +1,10 @@
+package com.zfire.mall.manager.commonmapper;
+
+import cn.hutool.core.date.DateTime;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface HomeOrderMapper {
+
+    void syncGCJProjectNo(DateTime beforeDate, DateTime curDate);
+}

+ 3 - 0
src/main/java/com/zfire/mall/manager/constant/Constant.java

@@ -174,6 +174,9 @@ public class Constant {
     public static final String JIAXIAN_SCAN_BAR_CODE = "SCAN_BAR_CODE";
     //仓储出库物料条码
     public static final String JIAXIAN_OUT_SCAN_BAR_CODE = "OUT_SCAN_BAR_CODE";
+
+    //仓储出库商家物料条码
+    public static final String JIAXIAN_OUT_MERCHANT_SCAN_BAR_CODE = "MERCHANT_SCAN_BAR_CODE";
     //商家结算费用账单
     public static final String JIAXIAN_COST_BILL = "COST_BILL";
 

+ 71 - 47
src/main/java/com/zfire/mall/manager/logic/k3/K3Logic.java

@@ -28,6 +28,8 @@ import org.springframework.stereotype.Service;
 import javax.annotation.Resource;
 import java.lang.reflect.Field;
 import java.math.BigDecimal;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.time.Instant;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
@@ -115,7 +117,7 @@ public class K3Logic {
                         oo.remove(oo.size() - 1);
                     }
 
-                    T tObj = this.setKingDeeValue(objFields, oo.toArray(), cls);
+                    T tObj = this.setKingDeeValue(objFields, oo.toArray(), cls,requestApiBean.getFormId());
                     if (tObj != null)
                         list.add(tObj);
                 }
@@ -227,6 +229,7 @@ public class K3Logic {
         return null;
     }
 
+
     /**
      * 通过java反射机制赋值
      *
@@ -236,13 +239,14 @@ public class K3Logic {
      * @param <T>
      * @return
      */
-    public <T> T setKingDeeValue(String[] fileds, Object attrs[], Class cls) {
+    public <T> T setKingDeeValue(String[] fileds, Object attrs[], Class cls,String formId) {
         if (fileds.length == 0 || fileds.length != attrs.length) {
             return null;
         }
         try {
             Object obj = cls.newInstance();
             for (int i = 0; i < fileds.length; i++) {
+                String field = fileds[i];
                 Field declaredField = cls.getDeclaredField(fileds[i]);
                 declaredField.setAccessible(true);
                 if (attrs[i] == null) {
@@ -251,7 +255,7 @@ public class K3Logic {
                 }
                 if (attrs[i] instanceof Date) {
                     declaredField.set(obj, attrs[i]);
-                } else if (ReUtil.contains("^([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]|[0-9][1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8])))T", attrs[i].toString())) {
+                } else if (ReUtil.contains("^([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]|[0-9][1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-9])))T", attrs[i].toString())) {
                     // UTC时间(世界协调时间,UTC + 00:00)转北京(北京,UTC + 8:00)时间
                     Date date = this.k3TimeConvert(attrs[i].toString());
                     declaredField.set(obj, date);
@@ -260,10 +264,24 @@ public class K3Logic {
                 } else if (attrs[i] instanceof Boolean) {
                     declaredField.set(obj, attrs[i]);
                 } else {
-                    if (attrs[i] == null)
+                    if (attrs[i] == null) {
                         declaredField.set(obj, attrs[i]);
-                    else
-                        declaredField.set(obj, attrs[i].toString());
+                    }else{
+                        //兼容金蝶收款单FApproveDate字段突然变成字符串了(对应examineTime字段)
+                        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.sss");
+                        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
+                        if(formId != null && formId.equals(KingDeeCons.WALLET_SKD)) {
+                            if(field.equals("examineTime")) {
+                                declaredField.set(obj, sdf.parse(attrs[i].toString()));
+                            }else if(field.equals("theTime")){
+                                declaredField.set(obj, sdf2.parse(attrs[i].toString()));
+                            }else{
+                                declaredField.set(obj, attrs[i].toString());
+                            }
+                        }else{
+                            declaredField.set(obj, attrs[i].toString());
+                        }
+                    }
                 }
             }
             //同步时间 sync_time
@@ -278,6 +296,12 @@ public class K3Logic {
         }
     }
 
+//    public static void main(String[] args) throws ParseException {
+//        String s = "2024-02-29T08:55:47.03";
+//        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.sss");
+//        log.info(DateUtil.formatDateTime(sdf.parse(s)));
+//    }
+
     public RequestApiBean getInstance(String orgId, String orgNumber, String formId, String startTime, String
             endTime) {
 
@@ -348,47 +372,47 @@ public class K3Logic {
     }
 
 
-    public <T> List<T> allNoLockSync(RequestApiBean requestApiBean, String type, String[] objFields, Class cls) throws
-            Exception {
-        //检查是否允许同步
-        String taskId = this.checkDistNoLockExec(requestApiBean, type);
-
-        // 登录金蝶
-        if (!KingDeeInvokeHelper.Login(KingDeeUser.getDB(), KingDeeUser.getACCOUNT(), KingDeeUser.getPASSWORD(), KingDeeUser.getLANG())) {
-            return null;
-        }
-        // 结果集
-        List<T> list = new ArrayList<>();
-
-        final int pageSize = 1000;
-        boolean exists = true;
-        while (exists) {
-            // 返回结果
-            log.info("【对接金蝶】request:{}", requestApiBean);
-            String result = KingDeeInvokeHelper.ExecuteBillQuery(null, JSONObject.toJSONString(requestApiBean));
-            if (result.equals("[]")) {
-                this.updateSyncTask(taskId,requestApiBean.getNotTime());
-                return null;
-            }
-//            log.info("【对接金蝶】response:{}", requestApiBean);
-            Object[] resultList = JSON.parseArray(result).toArray();
-//            this.setKingDeeValue(objFields, resultList, KingDeeMaterial.class);
-            for (Object o : resultList) {
-                JSONArray oo = (JSONArray) o;
-                T tObj = this.setKingDeeValue(objFields, oo.toArray(), cls);
-                list.add(tObj);
-            }
-            //判断是否需要多次请求,金蝶默认1次只能拿1000条数据
-            if (resultList.length == (requestApiBean.getTopRowCount() - requestApiBean.getStartRow())) {
-                requestApiBean.setTopRowCount(requestApiBean.getTopRowCount() + pageSize);
-                requestApiBean.setStartRow(requestApiBean.getStartRow() + pageSize);
-            } else {
-                exists = false;
-            }
-        }
-
-        return list;
-    }
+//    public <T> List<T> allNoLockSync(RequestApiBean requestApiBean, String type, String[] objFields, Class cls) throws
+//            Exception {
+//        //检查是否允许同步
+//        String taskId = this.checkDistNoLockExec(requestApiBean, type);
+//
+//        // 登录金蝶
+//        if (!KingDeeInvokeHelper.Login(KingDeeUser.getDB(), KingDeeUser.getACCOUNT(), KingDeeUser.getPASSWORD(), KingDeeUser.getLANG())) {
+//            return null;
+//        }
+//        // 结果集
+//        List<T> list = new ArrayList<>();
+//
+//        final int pageSize = 1000;
+//        boolean exists = true;
+//        while (exists) {
+//            // 返回结果
+//            log.info("【对接金蝶】request:{}", requestApiBean);
+//            String result = KingDeeInvokeHelper.ExecuteBillQuery(null, JSONObject.toJSONString(requestApiBean));
+//            if (result.equals("[]")) {
+//                this.updateSyncTask(taskId,requestApiBean.getNotTime());
+//                return null;
+//            }
+////            log.info("【对接金蝶】response:{}", requestApiBean);
+//            Object[] resultList = JSON.parseArray(result).toArray();
+////            this.setKingDeeValue(objFields, resultList, KingDeeMaterial.class);
+//            for (Object o : resultList) {
+//                JSONArray oo = (JSONArray) o;
+//                T tObj = this.setKingDeeValue(objFields, oo.toArray(), cls);
+//                list.add(tObj);
+//            }
+//            //判断是否需要多次请求,金蝶默认1次只能拿1000条数据
+//            if (resultList.length == (requestApiBean.getTopRowCount() - requestApiBean.getStartRow())) {
+//                requestApiBean.setTopRowCount(requestApiBean.getTopRowCount() + pageSize);
+//                requestApiBean.setStartRow(requestApiBean.getStartRow() + pageSize);
+//            } else {
+//                exists = false;
+//            }
+//        }
+//
+//        return list;
+//    }
 
     private Date k3TimeConvert(String timeStr){
         if(StringUtils.isEmpty(timeStr)){

+ 53 - 0
src/main/java/com/zfire/mall/manager/schedule/HomeOrderSchedule.java

@@ -0,0 +1,53 @@
+package com.zfire.mall.manager.schedule;
+
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.zfire.mall.manager.commonmapper.HomeOrderMapper;
+import com.zfire.mall.manager.commonmapper.LoginOrderMapper;
+import com.zfire.mall.manager.plus.entity.*;
+import com.zfire.mall.manager.plus.service.*;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.*;
+import java.util.stream.Collectors;
+
+@Component
+@Slf4j
+public class HomeOrderSchedule {
+
+    @Resource
+    EnginOrderService enginOrderService;
+    @Resource
+    HomeOrderMapper homeOrderMapper;
+    @Value("${spring.profiles.active}")
+    private String profiles;
+
+
+    @Scheduled(cron = "0 0 3 1/1 * ? ")
+    @Transactional(rollbackFor = Exception.class)
+    public void syncGCJProjectNoTask() {
+        if(!profiles.equals("prd")){
+            return;
+        }
+        DateTime curDate = DateUtil.date();
+        DateTime beforeDate = DateUtil.offsetMonth(curDate, -12);
+//        List<EnginOrder> orders = enginOrderService.lambdaQuery()
+//                .eq(EnginOrder::getEnginOrderType, "HOME")
+//                .eq(EnginOrder::getExamineStatus, "OK")
+//                .between(EnginOrder::getCreateTime, beforeDate, curDate)
+//                .list();
+
+        homeOrderMapper.syncGCJProjectNo(beforeDate, curDate);
+
+
+    }
+}

+ 39 - 2
src/main/java/com/zfire/mall/manager/schedule/JiaXianSyncSchedule.java

@@ -250,8 +250,6 @@ public class JiaXianSyncSchedule {
             if (CollectionUtils.isEmpty(wmsScanBarCode))
                 return;
 
-            customerCodeService.saveOrUpdateBatch(wmsScanBarCode);
-
             CallBackItemDTO callBackItemDTO = new CallBackItemDTO();
             callBackItemDTO.setCallBackType(Constant.JIAXIAN_OUT_SCAN_BAR_CODE);
 
@@ -261,7 +259,11 @@ public class JiaXianSyncSchedule {
                 callBackItemList.setItemId(Convert.toInt(customerCode.getId()));
                 callBackItemList.setStatus("OK");
                 callBackItemLists.add(callBackItemList);
+                customerCode.setId(customerCode.getId() + "DACANG");
             }
+
+             customerCodeService.saveOrUpdateBatch(wmsScanBarCode);
+
             callBackItemDTO.setCallBackItemList(callBackItemLists);
             jiaXianUtils.callBackDaCangSyncStatus(callBackItemDTO);
 
@@ -270,6 +272,41 @@ public class JiaXianSyncSchedule {
 
     }
 
+    /**
+     * 60秒同步商家条件
+     */
+    @Scheduled(fixedDelay = 10 * 1000)
+    public void automaticGetShangJiaWMSScanBarCode() throws Exception {
+
+
+
+        List<CustomerCode> wmsScanBarCode = jiaXianUtils.getWMSScanShangJiaBarCode();
+
+        if (CollectionUtils.isEmpty(wmsScanBarCode))
+            return;
+
+
+
+        CallBackItemDTO callBackItemDTO = new CallBackItemDTO();
+        callBackItemDTO.setCallBackType(Constant.JIAXIAN_OUT_MERCHANT_SCAN_BAR_CODE);
+
+        List<CallBackItemList> callBackItemLists = new ArrayList<>();
+        for (CustomerCode customerCode : wmsScanBarCode) {
+            CallBackItemList callBackItemList = new CallBackItemList();
+            callBackItemList.setItemId(Convert.toInt(customerCode.getId()));
+            callBackItemList.setStatus("OK");
+            callBackItemLists.add(callBackItemList);
+            customerCode.setId(customerCode.getId() + "SHANGJIA");
+        }
+        customerCodeService.saveOrUpdateBatch(wmsScanBarCode);
+        callBackItemDTO.setCallBackItemList(callBackItemLists);
+        jiaXianUtils.callBackSyncStatus(callBackItemDTO);
+
+
+
+
+    }
+
 
     /**
      * 60秒同步异常工单

+ 17 - 0
src/main/java/com/zfire/mall/manager/schedule/K3Schedule.java

@@ -1,8 +1,10 @@
 package com.zfire.mall.manager.schedule;
 
+import cn.hutool.http.HttpUtil;
 import com.zfire.mall.manager.logic.k3.*;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
@@ -46,10 +48,25 @@ public class K3Schedule {
     @Autowired
     K3StockLogic stockLogic;
 
+
+    @Value("${supply.stock.sync.start}")
+    private String stockStart;
+
+
     final static String orgId = "1";
     final static String orgNum = "100";
 
     /**
+     * 同步库存期初
+     * @throws Exception
+     */
+    @Scheduled(fixedDelay = 60 * 1000*5)
+    public void sync() throws Exception {
+        HttpUtil.get(stockStart);
+
+    }
+
+    /**
      * 同步基础资料
      * @throws Exception
      */

+ 1 - 1
src/main/java/com/zfire/mall/manager/schedule/StockCostSyncSchedule.java

@@ -47,7 +47,7 @@ public class StockCostSyncSchedule {
 
 
 
-    @Scheduled(cron =  "0 0 3 * * ?")
+    @Scheduled(cron =  "0 0 23 * * ?")
     public void CHUFA() {
         HttpUtil.get(fullCostUrl);
     }

+ 46 - 18
src/main/java/com/zfire/mall/manager/schedule/StockInSchedule.java

@@ -139,17 +139,19 @@ public class StockInSchedule {
     /**
      * 超过多少天自动生成预留单库存充足
      */
-    @Scheduled(fixedDelay = 60 * 1000 * 60 * 8)
+    @Scheduled(fixedDelay = 60 * 1000 * 60 * 12)
     public void automaticReserved() throws Exception {
         // 更新超过时间的订单生成预留单,物料库存充足
-        HttpUtil.get(automaticReservedUrl);
+
+        String s = HttpUtil.get(automaticReservedUrl);
+        log.info("预留单执行"+s);
     }
 
     /**
      * 更新发票
      *
      */
-    @Scheduled(fixedDelay = 300 * 1000)
+    @Scheduled(fixedDelay = 600 * 1000)
     public void syncRe() throws Exception {
         Date date = new Date();
         Date offset = DateUtil.offset(date, DateField.MONTH, -1);
@@ -168,6 +170,10 @@ public class StockInSchedule {
         String[] fields = new String[]{"id", "billNo", "fivNumber","comment","invoiceDate"};
         List<ReceiptInvoiceAdded> objects = k3Logic.allSync(request, fields, ReceiptInvoiceAdded.class);
 
+        int size = objects.size();
+        if (size> 3000)
+          objects = objects.subList(size - 3000, size);
+
 
         // 销售普通发票
         RequestApiBean requestOne = k3Logic.getInstance(orgId, orgNum, KingDeeCons.IV_SALESOC, format, formatEnd);
@@ -180,6 +186,10 @@ public class StockInSchedule {
         List<ReceiptInvoiceOrdinary> objectsOne = k3Logic.allSync(requestOne, fieldsOne, ReceiptInvoiceOrdinary.class);
 
 
+        int sizeOne = objectsOne.size();
+        if (sizeOne> 3000)
+            objectsOne = objectsOne.subList(sizeOne - 3000, sizeOne);
+
         if (CollectionUtil.isNotEmpty(objects)) {
             receiptInvoiceAddedService.saveOrUpdateBatch(objects);
         }
@@ -194,22 +204,27 @@ public class StockInSchedule {
                     String[] split = object.getComment().split(",");
                     for (String orderId : split) {
                         SalesOrder salesOrder = salesOrderService.getById(orderId);
+
                         if (salesOrder == null) {
                             continue;
                         }
+                        log.info("同步发票打印工单:"+salesOrder.getId());
+                        SalesOrder salesOrder1 = new SalesOrder();
+                        salesOrder1.setId(salesOrder.getId());
                         if (StringUtils.isNotEmpty(salesOrder.getBillReceipt()) && !salesOrder.getBillReceipt().contains(object.getFivNumber())) {
-                            salesOrder.setBillReceipt(salesOrder.getBillReceipt() + "/" + object.getFivNumber());
-                            salesOrder.setBillDate(object.getInvoiceDate());
+                            salesOrder1.setBillReceipt(salesOrder.getBillReceipt() + "/" + object.getFivNumber());
+                            salesOrder1.setBillDate(object.getInvoiceDate());
                         }
 
                         if (StringUtils.isEmpty(salesOrder.getBillReceipt())) {
-                            salesOrder.setBillReceipt(object.getFivNumber());
-                            salesOrder.setBillDate(object.getInvoiceDate());
+                            salesOrder1.setBillReceipt(object.getFivNumber());
+                            salesOrder1.setBillDate(object.getInvoiceDate());
                         }
 
-                        salesOrder.updateById();
+                        salesOrder1.updateById();
                     }
                 }
+
             }
         }
 
@@ -222,16 +237,19 @@ public class StockInSchedule {
                         if (salesOrder == null) {
                             continue;
                         }
+                        SalesOrder salesOrder1 = new SalesOrder();
+                        salesOrder1.setId(salesOrder.getId());
+                        log.info("同步发票打印工单:"+salesOrder.getId());
                         if (StringUtils.isNotEmpty(salesOrder.getBillReceipt()) && !salesOrder.getBillReceipt().contains(object.getFivNumber())) {
-                            salesOrder.setBillReceipt(salesOrder.getBillReceipt() + "/" + object.getFivNumber());
-                            salesOrder.setBillDate(object.getInvoiceDate());
+                            salesOrder1.setBillReceipt(salesOrder.getBillReceipt() + "/" + object.getFivNumber());
+                            salesOrder1.setBillDate(object.getInvoiceDate());
                         }
 
                         if (StringUtils.isEmpty(salesOrder.getBillReceipt())) {
-                            salesOrder.setBillReceipt(object.getFivNumber());
-                            salesOrder.setBillDate(object.getInvoiceDate());
+                            salesOrder1.setBillReceipt(object.getFivNumber());
+                            salesOrder1.setBillDate(object.getInvoiceDate());
                         }
-                        salesOrder.updateById();
+                        salesOrder1.updateById();
                     }
                 }
             }
@@ -440,9 +458,10 @@ public class StockInSchedule {
 
         if (!org.springframework.util.CollectionUtils.isEmpty(objects)) {
             kingDeeTransferService.saveOrUpdateBatch(objects);
+            return allOutInSyncOrder(orgId,orgNumber,startTime,endTime);
         }
 
-        return allOutInSyncOrder(orgId,orgNumber,startTime,endTime);
+        return new ArrayList<>();
     }
 
 
@@ -679,9 +698,11 @@ public class StockInSchedule {
         List<KingDeeOtherStockOut> objects = k3Logic.allSync(request, fields, KingDeeOtherStockOut.class);
         if (!org.springframework.util.CollectionUtils.isEmpty(objects)) {
             kingDeeOtherStockOutService.saveOrUpdateBatch(objects);
+
+            return allSyncOtherOutOrder(orgId,orgNumber,startTime,endTime);
         }
 
-        return allSyncOtherOutOrder(orgId,orgNumber,startTime,endTime);
+        return new ArrayList<>();
     }
 
 
@@ -938,9 +959,12 @@ public class StockInSchedule {
         List<KingDeeOtherStockIn> objects = k3Logic.allSync(request, fields, KingDeeOtherStockIn.class);
         if (!org.springframework.util.CollectionUtils.isEmpty(objects)) {
             kingDeeOtherStockInService.saveOrUpdateBatch(objects);
+
+            return allSyncOrderOtherIn(orgId,orgNumber,startTime,endTime);
         }
 
-        return allSyncOrderOtherIn(orgId,orgNumber,startTime,endTime);
+        return new ArrayList<>();
+
     }
 
 
@@ -1070,9 +1094,10 @@ public class StockInSchedule {
         List<KingDeePurchaseStockOut> objects = k3Logic.allSync(request, fields, KingDeePurchaseStockOut.class);
         if (!org.springframework.util.CollectionUtils.isEmpty(objects)) {
             kingDeePurchaseStockOutService.saveOrUpdateBatch(objects);
+            return allSyncOutOrder(orgId,orgNumber,startTime,endTime);
         }
 
-        return allSyncOutOrder(orgId,orgNumber,startTime,endTime);
+        return new ArrayList<>();
     }
 
 
@@ -1331,9 +1356,12 @@ public class StockInSchedule {
         List<KingDeePurchaseStockIn> objects = k3Logic.allSync(request, fields, KingDeePurchaseStockIn.class);
         if (!org.springframework.util.CollectionUtils.isEmpty(objects)) {
             kingDeePurchaseStockInService.saveOrUpdateBatch(objects);
+
+            return allSyncOrder(orgId, orgNumber, startTime, endTime);
         }
 
-        return allSyncOrder(orgId,orgNumber,startTime,endTime);
+
+        return new ArrayList<>();
     }
 
 

+ 206 - 0
src/main/java/com/zfire/mall/manager/schedule/TradeOrder2Schedule.java

@@ -0,0 +1,206 @@
+package com.zfire.mall.manager.schedule;
+
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.zfire.mall.manager.bean.trade.TradeLoginCountBean;
+import com.zfire.mall.manager.commonmapper.LoginOrderMapper;
+import com.zfire.mall.manager.enums.OrderTypeEnum;
+import com.zfire.mall.manager.plus.entity.*;
+import com.zfire.mall.manager.plus.service.*;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.*;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+@Component
+@Slf4j
+public class TradeOrder2Schedule {
+
+    @Resource
+    TradeLoginOrderService tradeLoginOrderService;
+    @Resource
+    NoticeRecordService noticeRecordService;
+    @Resource
+    AdminUserService adminUserService;
+    @Resource
+    AdminUserWebsitRelaService adminUserWebsitRelaService;
+
+    @Scheduled(cron = "0 0 1 1/1 * ? ")
+//    @Scheduled(initialDelay = 5000, fixedDelay = 100 * 1000)
+    @Transactional(rollbackFor = Exception.class)
+    public void sendOrderUpdateSysNoticeTask() {
+        int pageNum = 1;
+        int pageSize = 500;
+        int handleCount = 0;
+
+        log.info("家装提醒更新开始-------------------------------------");
+        List<AdminUser> adminUserList = adminUserService.lambdaQuery()
+                .eq(AdminUser::getStatus, 1)
+                .isNotNull(AdminUser::getCustomerId)
+                .list();
+
+        Map<String, List<AdminUser>> userMap = adminUserList.stream().collect(Collectors.groupingBy(AdminUser::getCustomerId));
+
+        for (int i = 0; i < 100; i++) {
+            IPage<TradeLoginOrder> page = tradeLoginOrderService.lambdaQuery()
+                    .select(TradeLoginOrder::getId, TradeLoginOrder::getProjectNo, TradeLoginOrder::getCustomerId,
+                            TradeLoginOrder::getCustomerNumber, TradeLoginOrder::getCustomerName,
+                            TradeLoginOrder::getSubmitTime, TradeLoginOrder::getConfirmTime, TradeLoginOrder::getUpdateTime)
+                    .eq(TradeLoginOrder::getIsSpan, false)
+                    .eq(TradeLoginOrder::getOrderType, "HOME")
+                    .eq(TradeLoginOrder::getOrderStatus, "OK")
+                    .eq(TradeLoginOrder::getLoginStatus, "OK")
+                    .eq(TradeLoginOrder::getStatus, "ING")
+                    .orderByAsc(TradeLoginOrder::getCustomerId)
+                    .page(new Page<>(pageNum, pageSize));
+            if (CollectionUtil.isEmpty(page.getRecords())) {
+                break;
+            }
+
+            List<TradeLoginOrder> orderList = page.getRecords();
+            List<NoticeRecord> noticeRecordList = new ArrayList<>();
+
+            for (TradeLoginOrder order : orderList) {
+                // 格式为日期
+                String formatDate = DateUtil.formatDate(order.getUpdateTime());
+                DateTime tipsDay = DateUtil.offsetDay(DateUtil.parseDate(formatDate), 5);
+                Date curDay = DateUtil.date();
+                if (curDay.getTime() >= tipsDay.getTime()) {
+                    List<AdminUser> adminUsers = userMap.get(order.getCustomerId());
+                    if (CollectionUtil.isEmpty(adminUsers)) {
+                        continue;
+                    }
+                    for (AdminUser adminUser : adminUsers) {
+                        AdminUserWebsitRela rela = adminUserWebsitRelaService.lambdaQuery()
+                                .eq(AdminUserWebsitRela::getAdminUserId, adminUser.getAdminUserId())
+                                .last("limit 1")
+                                .one();
+                        NoticeRecord noticeRecord = new NoticeRecord();
+                        noticeRecord.setId(IdWorker.getIdStr());
+                        noticeRecord.setNoticeId(order.getId());
+                        noticeRecord.setTitle(order.getProjectNo() + "更新提醒");
+                        noticeRecord.setContent("家装" + order.getProjectNo() + "编号, 请更新跟进状态");
+                        noticeRecord.setType("提醒更新");
+                        noticeRecord.setSource("商用工程家装登录单");
+                        noticeRecord.setIssueNickName("系统");
+                        noticeRecord.setIssueTime(DateUtil.date());
+                        noticeRecord.setAdminWebsitId(Objects.nonNull(rela) ? rela.getAdminWebsitId() : null);
+                        noticeRecord.setAdminCompanyId(adminUser.getAdminCompanyId());
+                        noticeRecord.setAdminCompanyName(adminUser.getAdminCompanyName());
+                        noticeRecord.setAdminUserId(adminUser.getAdminUserId());
+                        noticeRecord.setAdminNickName(adminUser.getNickName());
+                        noticeRecordList.add(noticeRecord);
+                    }
+                }
+            }
+
+
+            if (CollectionUtil.isNotEmpty(noticeRecordList)) {
+                noticeRecordService.lambdaUpdate()
+                        .in(NoticeRecord::getNoticeId, noticeRecordList.stream().map(NoticeRecord::getId).collect(Collectors.toList()))
+                        .eq(NoticeRecord::getIssueNickName, "系统")
+                        .remove();
+                noticeRecordService.saveBatch(noticeRecordList);
+            }
+            pageNum++;
+            handleCount = handleCount + noticeRecordList.size();
+        }
+        log.info("已向" + handleCount + "个经销商发送提醒");
+        log.info("家装提醒更新结束-------------------------------------");
+    }
+
+    @Scheduled(cron = "0 0 2 1/1 * ? ")
+//    @Scheduled(initialDelay = 5000, fixedDelay = 100 * 1000)
+    @Transactional(rollbackFor = Exception.class)
+    public void sendOrderUpdateSysNoticeTask2() {
+        int pageNum = 1;
+        int pageSize = 500;
+        int handleCount = 0;
+
+        log.info("工装提醒更新开始-------------------------------------");
+        List<AdminUser> adminUserList = adminUserService.lambdaQuery()
+                .eq(AdminUser::getStatus, 1)
+                .isNotNull(AdminUser::getCustomerId)
+                .list();
+
+        Map<String, List<AdminUser>> userMap = adminUserList.stream().collect(Collectors.groupingBy(AdminUser::getCustomerId));
+
+        for (int i = 0; i < 100; i++) {
+            IPage<TradeLoginOrder> page = tradeLoginOrderService.lambdaQuery()
+                    .select(TradeLoginOrder::getId, TradeLoginOrder::getProjectNo, TradeLoginOrder::getCustomerId,
+                            TradeLoginOrder::getCustomerNumber, TradeLoginOrder::getCustomerName,
+                            TradeLoginOrder::getSubmitTime, TradeLoginOrder::getConfirmTime, TradeLoginOrder::getUpdateTime)
+                    .eq(TradeLoginOrder::getIsSpan, false)
+                    .eq(TradeLoginOrder::getOrderType, "WORK")
+                    .eq(TradeLoginOrder::getOrderStatus, "OK")
+                    .eq(TradeLoginOrder::getLoginStatus, "OK")
+                    .eq(TradeLoginOrder::getStatus, "ING")
+                    .orderByAsc(TradeLoginOrder::getCustomerId)
+                    .page(new Page<>(pageNum, pageSize));
+            if (CollectionUtil.isEmpty(page.getRecords())) {
+                break;
+            }
+
+            List<TradeLoginOrder> orderList = page.getRecords();
+            List<NoticeRecord> noticeRecordList = new ArrayList<>();
+
+            for (TradeLoginOrder order : orderList) {
+                // 格式为日期
+                String formatDate = DateUtil.formatDate(order.getUpdateTime());
+                DateTime tipsDay = DateUtil.offsetDay(DateUtil.parseDate(formatDate), 90);
+                Date curDay = DateUtil.date();
+                if (curDay.getTime() >= tipsDay.getTime()) {
+                    List<AdminUser> adminUsers = userMap.get(order.getCustomerId());
+                    if (CollectionUtil.isEmpty(adminUsers)) {
+                        continue;
+                    }
+                    for (AdminUser adminUser : adminUsers) {
+                        AdminUserWebsitRela rela = adminUserWebsitRelaService.lambdaQuery()
+                                .eq(AdminUserWebsitRela::getAdminUserId, adminUser.getAdminUserId())
+                                .last("limit 1")
+                                .one();
+                        NoticeRecord noticeRecord = new NoticeRecord();
+                        noticeRecord.setId(IdWorker.getIdStr());
+                        noticeRecord.setNoticeId(order.getId());
+                        noticeRecord.setTitle(order.getProjectNo() + "更新提醒");
+                        noticeRecord.setContent("工装" + order.getProjectNo() + "编号, 请更新跟进状态");
+                        noticeRecord.setType("提醒更新");
+                        noticeRecord.setSource("商用工程工装登录单");
+                        noticeRecord.setIssueNickName("系统");
+                        noticeRecord.setIssueTime(DateUtil.date());
+                        noticeRecord.setAdminWebsitId(Objects.nonNull(rela) ? rela.getAdminWebsitId() : null);
+                        noticeRecord.setAdminCompanyId(adminUser.getAdminCompanyId());
+                        noticeRecord.setAdminCompanyName(adminUser.getAdminCompanyName());
+                        noticeRecord.setAdminUserId(adminUser.getAdminUserId());
+                        noticeRecord.setAdminNickName(adminUser.getNickName());
+                        noticeRecordList.add(noticeRecord);
+                    }
+                }
+            }
+
+
+            if (CollectionUtil.isNotEmpty(noticeRecordList)) {
+                noticeRecordService.lambdaUpdate()
+                        .in(NoticeRecord::getNoticeId, noticeRecordList.stream().map(NoticeRecord::getId).collect(Collectors.toList()))
+                        .eq(NoticeRecord::getIssueNickName, "系统")
+                        .remove();
+                noticeRecordService.saveBatch(noticeRecordList);
+            }
+            pageNum++;
+            handleCount = handleCount + noticeRecordList.size();
+        }
+        log.info("已向" + handleCount + "个经销商发送提醒");
+        log.info("工装提醒更新结束-------------------------------------");
+    }
+}

+ 41 - 1
src/main/java/com/zfire/mall/manager/utils/JiaXianUtils.java

@@ -355,7 +355,6 @@ public class JiaXianUtils {
 
         List<CustomerCode> customerCodes = JSONUtil.toList(data, CustomerCode.class);
         for (CustomerCode customerCode : customerCodes) {
-            customerCode.setId(customerCode.getId()+"DACANG");
             customerCode.setConsignerTimeV2(customerCode.getConsignerTime() != null?DateUtil.date(Convert.toLong(customerCode.getConsignerTime())*1000):null);
             customerCode.setDeliveryTimeV2(customerCode.getDeliveryTime()!=null?DateUtil.date(Convert.toLong(customerCode.getDeliveryTime())):null);
             customerCode.setType("DACANG");
@@ -368,6 +367,47 @@ public class JiaXianUtils {
     }
 
     /**
+     * 同步商家仓条码
+     *
+     * @param
+     *
+     */
+    public  List<CustomerCode> getWMSScanShangJiaBarCode() throws ApiException {
+        String body = HttpRequest.post(jiaxianUrl+"/saleEndApi/getWMSMerchantBarCode")
+                .header("key", jiaxianKey)
+                .header("sign", getSign())
+                .execute().body();
+
+        Map<String,Object> smsRsp = JSON.parseObject(body);
+        //获取数据
+        String codeRes = smsRsp.get("code").toString();
+        if(!codeRes.equals("200")) {
+            log.error("失败同步,data:{}",smsRsp.get("message").toString());
+            throw new RemoteServiceException("同步失败");
+        }
+        String data = smsRsp.get("data").toString();
+
+        List<CustomerCode> customerCodes = JSONUtil.toList(data, CustomerCode.class);
+
+
+        for (CustomerCode customerCode : customerCodes) {
+            if (!StringUtils.isEmpty(customerCode.getConsignerTime()))
+                customerCode.setConsignerTimeV2(DateUtil.date(Convert.toLong(customerCode.getConsignerTime())));
+            if (!StringUtils.isEmpty(customerCode.getDeliveryTime()))
+                customerCode.setDeliveryTimeV2(DateUtil.date(Convert.toLong(customerCode.getDeliveryTime())));
+
+            customerCode.setType("SHANGJIA");
+        }
+
+
+        if (CollectionUtils.isEmpty(customerCodes))
+            return null;
+
+        return customerCodes;
+
+    }
+
+    /**
      * 同步接口返回同步结果
      *
      * @param

+ 1 - 1
src/main/resources/bootstrap-dev.properties

@@ -9,7 +9,7 @@ spring.devtools.add-properties=true
 spring.datasource.druid.db-type=mysql
 spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
-spring.datasource.url=jdbc:mysql://121.43.111.127:3306/gj_supply_dev?verifyServerCertificate=false&useSSL=false&requireSSL=false&useUnicode=true&characterEncoding=UTF-8&characterSetResults=utf8&rewriteBatchedStatements=true&serverTimezone=Asia/Shanghai
+spring.datasource.url=jdbc:mysql://121.43.111.127:3306/gj_supply_dev2?verifyServerCertificate=false&useSSL=false&requireSSL=false&useUnicode=true&characterEncoding=UTF-8&characterSetResults=utf8&rewriteBatchedStatements=true&serverTimezone=Asia/Shanghai
 spring.datasource.username=root
 spring.datasource.password=xch!eCdvc124@
 spring.datasource.druid.connection-init-sqls=set names utf8mb4

+ 1 - 1
src/main/resources/bootstrap-test.properties

@@ -20,7 +20,7 @@ spring.devtools.add-properties=true
 spring.datasource.druid.db-type=mysql
 spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
-spring.datasource.url=jdbc:mysql://121.43.111.127:3306/gj_supply_dev?verifyServerCertificate=false&useSSL=false&requireSSL=false&useUnicode=true&characterEncoding=UTF-8&characterSetResults=utf8&serverTimezone=Asia/Shanghai
+spring.datasource.url=jdbc:mysql://121.43.111.127:3306/gj_supply_dev2?verifyServerCertificate=false&useSSL=false&requireSSL=false&useUnicode=true&characterEncoding=UTF-8&characterSetResults=utf8&serverTimezone=Asia/Shanghai
 spring.datasource.username=root
 spring.datasource.password=xch!eCdvc124@
 spring.datasource.druid.connection-init-sqls=set names utf8mb4

+ 1 - 1
src/main/resources/generator-dev.properties

@@ -1,5 +1,5 @@
 java.package=com.zfire.mall.manager
-jdbc.url=jdbc:mysql://121.43.111.127:3306/gj_supply_dev?verifyServerCertificate=false&useSSL=false&requireSSL=false&useUnicode=true&characterEncoding=UTF-8&characterSetResults=utf8
+jdbc.url=jdbc:mysql://121.43.111.127:3306/gj_supply_dev2?verifyServerCertificate=false&useSSL=false&requireSSL=false&useUnicode=true&characterEncoding=UTF-8&characterSetResults=utf8
 jdbc.username=root
 jdbc.pwd=xch!eCdvc124@
 

+ 1 - 1
src/main/resources/generator-test.properties

@@ -1,5 +1,5 @@
 java.package=com.zfire.mall.manager
-jdbc.url=jdbc:mysql://121.43.111.127:3306/gj_supply_dev?verifyServerCertificate=false&useSSL=false&requireSSL=false&useUnicode=true&characterEncoding=UTF-8&characterSetResults=utf8
+jdbc.url=jdbc:mysql://121.43.111.127:3306/gj_supply_dev2?verifyServerCertificate=false&useSSL=false&requireSSL=false&useUnicode=true&characterEncoding=UTF-8&characterSetResults=utf8
 jdbc.username=root
 jdbc.pwd=xch!eCdvc124@
 

+ 0 - 13
src/main/resources/logback.xml

@@ -48,16 +48,6 @@
     </appender>
 
 
-    <!--日志归集-->
-        <!--<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">-->
-            <!--<destination>116.62.158.92:5044</destination>-->
-            <!--&lt;!&ndash; encoder必须配置,有多种可选 &ndash;&gt;-->
-            <!--<encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" >-->
-                <!--<customFields>{"server_name":"supply-service"}</customFields>-->
-            <!--</encoder>-->
-        <!--</appender>-->
-
-
     <logger name="com.ibatis" level="INFO" />
     <logger name="com.ibatis.common.jdbc.SimpleDataSource" level="INFO" />
     <logger name="com.ibatis.common.jdbc.ScriptRunner" level="INFO" />
@@ -73,9 +63,6 @@
         <appender-ref ref="INFO_FILE" />
         <appender-ref ref="ERROR_FILE" />
         <appender-ref ref="STDOUT" />
-        <!--<springProfile name="test,prd">-->
-            <!--<appender-ref ref="LOGSTASH" />-->
-        <!--</springProfile>-->
     </root>
 
 </configuration>