自动化立体仓库 - WMS系统
#
LSH
2023-10-21 b2dc2d7385afbe3efcf5146cb477935783433295
#
11个文件已修改
4个文件已添加
593 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/mapper/OrderMapper.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/OrderService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/kingdee/ReviewOrderSyncScheduler.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/kingdee/SaveOrderSyncScheduler.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/kingdee/SubmitOrderSyncScheduler.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/kingdee/handler/ReviewOrderSyncHandler.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/kingdee/handler/SaveOrderSyncHandler.java 133 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/kingdee/handler/SubmitOrderSyncHandler.java 133 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/erp/kingdee/enums/KingDeeUtilType.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/OrderMapper.xml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/layuiadmin/json/console/prograss.js 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/layuiadmin/json/console/top-card.js 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/layuiadmin/json/console/top-search.js 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/OrderMapper.java
@@ -15,6 +15,7 @@
    int updateSettle(@Param("orderId")Long orderId, @Param("settle")Long settle, @Param("userId")Long userId);
    List<Order> selectComplete();
    List<Order> selectComplete8();
    int addToLogTable(Order order);
src/main/java/com/zy/asrs/service/OrderService.java
@@ -23,6 +23,7 @@
    void remove(Long orderId);
    List<Order> selectComplete();
    List<Order> selectComplete8();
    boolean addToLogTable(Order order);
src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
@@ -166,6 +166,11 @@
    }
    @Override
    public List<Order> selectComplete8() {
        return this.baseMapper.selectComplete8();
    }
    @Override
    public boolean addToLogTable(Order order) {
        return this.baseMapper.addToLogTable(order) > 0;
    }
src/main/java/com/zy/asrs/task/kingdee/ReviewOrderSyncScheduler.java
@@ -15,7 +15,7 @@
import java.util.List;
/**
 * Created by vincent on 2020/7/7
 * Created by vincent on 2023/10/21
 */
@Slf4j
@Component
@@ -25,18 +25,9 @@
    private ReviewOrderSyncHandler reviewOrderSyncHandler;
    @Autowired
    private OrderService orderService;
    @Autowired
    private ApiLogService apiLogService;
    @Value("${erp.switch.ReviewOrderSwitch}")
    private boolean ReviewOrderSwitch;
//    @Scheduled(cron = "0 0 1 * * ? ")
    public void clearApiLog(){
        try {
            apiLogService.clearWeekBefore();
        } catch (Exception e) {
            log.error("第三方接口日志自动清除失败(范围:一周之前", e);
        }
    }
    @Scheduled(cron = "0/3 * * * * ? ")
    @Async("orderThreadPool")
@@ -48,7 +39,7 @@
        for (Order order : orders) {
            ReturnT<String> result = reviewOrderSyncHandler.start(order);
            if (!result.isSuccess()) {
                log.error("单据[orderNo={}]上报erp失败", order.getOrderNo());
                log.error("单据[orderNo={}]向erp审核失败", order.getOrderNo());
            }
        }
    }
src/main/java/com/zy/asrs/task/kingdee/SaveOrderSyncScheduler.java
New file
@@ -0,0 +1,47 @@
package com.zy.asrs.task.kingdee;
import com.zy.asrs.entity.Order;
import com.zy.asrs.service.OrderService;
import com.zy.asrs.task.core.ReturnT;
import com.zy.asrs.task.kingdee.handler.SubmitOrderSyncHandler;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.List;
/**
 * Created by Monkey D. Luffy on 2023.10.21
 */
@Slf4j
@Component
public class SaveOrderSyncScheduler {
    @Autowired
    private SubmitOrderSyncHandler submitOrderSyncHandler;
    @Autowired
    private OrderService orderService;
    @Value("${erp.switch.ReviewOrderSwitch}")
    private boolean ReviewOrderSwitch;
//    @Scheduled(cron = "0/3 * * * * ? ")
    @Async("orderThreadPool")
    public void completeAndReport(){
        if (1==1) return;
        if(!ReviewOrderSwitch){
            return;
        }
        List<Order> orders = orderService.selectComplete8();
        for (Order order : orders) {
            ReturnT<String> result = submitOrderSyncHandler.start(order);
            if (!result.isSuccess()) {
                log.error("单据[orderNo={}]提交至erp失败", order.getOrderNo());
            }
        }
    }
}
src/main/java/com/zy/asrs/task/kingdee/SubmitOrderSyncScheduler.java
New file
@@ -0,0 +1,49 @@
package com.zy.asrs.task.kingdee;
import com.zy.asrs.entity.Order;
import com.zy.asrs.service.ApiLogService;
import com.zy.asrs.service.OrderService;
import com.zy.asrs.task.core.ReturnT;
import com.zy.asrs.task.kingdee.handler.ReviewOrderSyncHandler;
import com.zy.asrs.task.kingdee.handler.SaveOrderSyncHandler;
import com.zy.asrs.task.kingdee.handler.SubmitOrderSyncHandler;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.List;
/**
 * Created by Monkey D. Luffy on 2023.10.21
 */
@Slf4j
@Component
public class SubmitOrderSyncScheduler {
    @Autowired
    private SaveOrderSyncHandler saveOrderSyncHandler;
    @Autowired
    private OrderService orderService;
    @Value("${erp.switch.ReviewOrderSwitch}")
    private boolean ReviewOrderSwitch;
    @Scheduled(cron = "0/3 * * * * ? ")
    @Async("orderThreadPool")
    public void completeAndReport(){
        if(!ReviewOrderSwitch){
            return;
        }
        List<Order> orders = orderService.selectComplete8();
        for (Order order : orders) {
            ReturnT<String> result = saveOrderSyncHandler.start(order);
            if (!result.isSuccess()) {
                log.error("单据[orderNo={}]保存至erp失败", order.getOrderNo());
            }
        }
    }
}
src/main/java/com/zy/asrs/task/kingdee/handler/ReviewOrderSyncHandler.java
@@ -32,9 +32,9 @@
    //端口
    private String URL;
    @Value("${erp.address.outaddress}")
    @Value("${erp.address.outaddressAudit}")
    //审核地址
    private String outaddress;
    private String outaddressAudit;
    @Autowired
    private OrderService orderService;
@@ -72,17 +72,17 @@
            response = new HttpHandler.Builder()
                    .setHeaders(headers)
                    .setUri(URL)
                    .setPath(outaddress)
                    .setPath(outaddressAudit)
                    .setJson(add)
                    .build()
                    .doPost();
            JSONObject data = JSON.parseObject(response);
            Object IsSuccess = findValueByKey(JSON.parseObject(response), "IsSuccess");
            String bool=IsSuccess.toString();
            //上报完成订单4转6
            //审核完成原订单4转8  8.审核完成
            if(bool.equals("true")){
                success = true;
                order.setSettle(6L);
                order.setSettle(8L);
                orderService.update(order,new EntityWrapper<Order>().eq("order_no",order.getOrderNo()));
            }
        } catch (Exception e) {
@@ -94,7 +94,7 @@
                // 保存接口日志
                apiLogService.save(
                        "审核",
                        URL+ outaddress,
                        URL+ outaddressAudit,
                        null,
                        "127.0.0.1",
                        add,
src/main/java/com/zy/asrs/task/kingdee/handler/SaveOrderSyncHandler.java
New file
@@ -0,0 +1,133 @@
package com.zy.asrs.task.kingdee.handler;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.zy.asrs.entity.DocType;
import com.zy.asrs.entity.Order;
import com.zy.asrs.service.ApiLogService;
import com.zy.asrs.service.DocTypeService;
import com.zy.asrs.service.OrderService;
import com.zy.asrs.task.AbstractHandler;
import com.zy.asrs.task.core.ReturnT;
import com.zy.common.utils.HttpHandler;
import com.zy.erp.kingdee.enums.KingDeeUtilType;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.HashMap;
import java.util.Set;
/**
 * Created by Monkey D. Luffy on 2023.10.21
 */
@Slf4j
@Service
public class SaveOrderSyncHandler extends AbstractHandler<String> {
    @Value("${erp.address.URL}")
    //端口
    private String URL;
    @Value("${erp.address.outaddressSave}")
    //审核地址
    private String outaddressSave;
    @Autowired
    private OrderService orderService;
    @Autowired
    private ApiLogService apiLogService;
    @Autowired
    private DocTypeService docTypeService;
    @Autowired
    private LoginAuthenticationHandler loginAuthenticationHandler;
    @Transactional
    public ReturnT<String> start(Order order) {
        //登录金蝶r
        ReturnT<String> start = loginAuthenticationHandler.start();
        DocType docType = docTypeService.selectById(order.getDocType());
        if (null == docType) {
            return SUCCESS;
        }
        KingDeeUtilType kingDeeUtilType = KingDeeUtilType.get(docType.getDocName());
        //条件拼接
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("Numbers",order.getOrderNo());
        JSONObject jsonObject1 = new JSONObject();
        jsonObject1.put("data", jsonObject);
        jsonObject1.put("FormId",kingDeeUtilType.correspondingFormId);
        String add = jsonObject1.toJSONString();
        //上报
        String response = "";
        boolean success = false;
        try {
            //获取Cookie值
            HashMap<String, Object> headers = new HashMap<>();
            headers.put("Cookie", start.getContent());
            response = new HttpHandler.Builder()
                    .setHeaders(headers)
                    .setUri(URL)
                    .setPath(outaddressSave)
                    .setJson(add)
                    .build()
                    .doPost();
            JSONObject data = JSON.parseObject(response);
            Object IsSuccess = findValueByKey(JSON.parseObject(response), "IsSuccess");
            String bool=IsSuccess.toString();
            //保存完成原订单8转6
            if(bool.equals("true")){
                success = true;
                order.setSettle(6L);
                orderService.update(order,new EntityWrapper<Order>().eq("order_no",order.getOrderNo()));
            }
        } catch (Exception e) {
            log.error("fail", e);
//            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
            return FAIL.setMsg(e.getMessage());
        } finally {
            try {
                // 保存接口日志
                apiLogService.save(
                        "保存",
                        URL+ outaddressSave,
                        null,
                        "127.0.0.1",
                        add,
                        response,
                        success
                );
            } catch (Exception e) {
                log.error("", e);
            }
        }
        return SUCCESS;
    }
    public static Object findValueByKey(JSONObject json, String key) {
        Set<String> keySet = json.keySet();
        for (String k : keySet) {
            Object v = json.get(k);
            if (k.equals(key)) {
                return v;
            } else if (v instanceof JSONArray) {
                int size = ((JSONArray) v).size();
                for (int i = 0; i <= size - 1; i++) {
                    Object result = findValueByKey((JSONObject) ((JSONArray) v).get(i), key);
                    if (result != null){
                        return result;
                    }
                }
            } else if (v instanceof JSONObject){
                Object result = findValueByKey((JSONObject) v, key);
                if (result != null){
                    return result;
                }
            }
        }
        return null;
    }
}
src/main/java/com/zy/asrs/task/kingdee/handler/SubmitOrderSyncHandler.java
New file
@@ -0,0 +1,133 @@
package com.zy.asrs.task.kingdee.handler;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.zy.asrs.entity.DocType;
import com.zy.asrs.entity.Order;
import com.zy.asrs.service.ApiLogService;
import com.zy.asrs.service.DocTypeService;
import com.zy.asrs.service.OrderService;
import com.zy.asrs.task.AbstractHandler;
import com.zy.asrs.task.core.ReturnT;
import com.zy.common.utils.HttpHandler;
import com.zy.erp.kingdee.enums.KingDeeUtilType;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.HashMap;
import java.util.Set;
/**
 * Created by Monkey D. Luffy on 2023.10.21
 */
@Slf4j
@Service
public class SubmitOrderSyncHandler extends AbstractHandler<String> {
    @Value("${erp.address.URL}")
    //端口
    private String URL;
    @Value("${erp.address.outaddressSubmit}")
    //审核地址
    private String outaddressSubmit;
    @Autowired
    private OrderService orderService;
    @Autowired
    private ApiLogService apiLogService;
    @Autowired
    private DocTypeService docTypeService;
    @Autowired
    private LoginAuthenticationHandler loginAuthenticationHandler;
    @Transactional
    public ReturnT<String> start(Order order) {
        //登录金蝶r
        ReturnT<String> start = loginAuthenticationHandler.start();
        DocType docType = docTypeService.selectById(order.getDocType());
        if (null == docType) {
            return SUCCESS;
        }
        KingDeeUtilType kingDeeUtilType = KingDeeUtilType.get(docType.getDocName());
        //条件拼接
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("Numbers",order.getOrderNo());
        JSONObject jsonObject1 = new JSONObject();
        jsonObject1.put("data", jsonObject);
        jsonObject1.put("FormId",kingDeeUtilType.correspondingFormId);
        String add = jsonObject1.toJSONString();
        //上报
        String response = "";
        boolean success = false;
        try {
            //获取Cookie值
            HashMap<String, Object> headers = new HashMap<>();
            headers.put("Cookie", start.getContent());
            response = new HttpHandler.Builder()
                    .setHeaders(headers)
                    .setUri(URL)
                    .setPath(outaddressSubmit)
                    .setJson(add)
                    .build()
                    .doPost();
            JSONObject data = JSON.parseObject(response);
            Object IsSuccess = findValueByKey(JSON.parseObject(response), "IsSuccess");
            String bool=IsSuccess.toString();
            //审核完成原订单8转6
            if(bool.equals("true")){
                success = true;
                order.setSettle(6L);
                orderService.update(order,new EntityWrapper<Order>().eq("order_no",order.getOrderNo()));
            }
        } catch (Exception e) {
            log.error("fail", e);
//            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
            return FAIL.setMsg(e.getMessage());
        } finally {
            try {
                // 保存接口日志
                apiLogService.save(
                        "提交",
                        URL+ outaddressSubmit,
                        null,
                        "127.0.0.1",
                        add,
                        response,
                        success
                );
            } catch (Exception e) {
                log.error("", e);
            }
        }
        return SUCCESS;
    }
    public static Object findValueByKey(JSONObject json, String key) {
        Set<String> keySet = json.keySet();
        for (String k : keySet) {
            Object v = json.get(k);
            if (k.equals(key)) {
                return v;
            } else if (v instanceof JSONArray) {
                int size = ((JSONArray) v).size();
                for (int i = 0; i <= size - 1; i++) {
                    Object result = findValueByKey((JSONObject) ((JSONArray) v).get(i), key);
                    if (result != null){
                        return result;
                    }
                }
            } else if (v instanceof JSONObject){
                Object result = findValueByKey((JSONObject) v, key);
                if (result != null){
                    return result;
                }
            }
        }
        return null;
    }
}
src/main/java/com/zy/erp/kingdee/enums/KingDeeUtilType.java
@@ -3,25 +3,25 @@
public enum KingDeeUtilType {
    BD_MATERIAL(0, "物料档案","BD_MATERIAL","","","",1),
//    STK_InStock(1, "采购入库单","STK_InStock","FRealQty","","",1),
//    PUR_MRB(2, "采购退料","PUR_MRB","FRMREALQTY","","",1),
//    PRD_PickMtrl(3, "生产领料","PRD_PickMtrl","FActualQty","","",1),
//    PRD_ReturnMtrl(4, "生产退料","PRD_ReturnMtrl","FQty","","",1),
//    PRD_FeedMtrl(5, "生产补料","PRD_FeedMtrl","FActualQty","","",1),
//    PUR_MRB(2, "采购退料单","PUR_MRB","FRMREALQTY","","",1),
//    PRD_PickMtrl(3, "生产领料单","PRD_PickMtrl","FActualQty","","",1),
//    PRD_ReturnMtrl(4, "生产退料单","PRD_ReturnMtrl","FQty","","",1),
//    PRD_FeedMtrl(5, "生产补料单","PRD_FeedMtrl","FActualQty","","",1),
//    STK_TransferDirect(6, "直接调拨单","STK_TransferDirect","","FQty","",1),
//    STK_StockCountGain(7, "盘盈单","STK_StockCountGain","FGainQty","","",1),
//    STK_StockCountLoss(8, "盘亏单","STK_StockCountLoss","FLossQty","","",1),
//    STK_MisDelivery(9, "其他出库单","STK_MisDelivery","FQty","","",1),
//    SP_PickMtrl(10, "简单生产领料","SP_PickMtrl","FActualQty","","",1),
//    SP_ReturnMtrl(11, "简单生产退料","SP_ReturnMtrl","FQty","","",1),
//    SP_PickMtrl(10, "简单生产领料单","SP_PickMtrl","FActualQty","","",1),
//    SP_ReturnMtrl(11, "简单生产退料单","SP_ReturnMtrl","FQty","","",1),
//    SAL_OUTSTOCK(12, "销售出库单","SAL_OUTSTOCK","FRealQty","","",1),
//    SAL_RETURNSTOCK(13, "销售退货","SAL_RETURNSTOCK","FRealQty","","",1),
//    SAL_RETURNSTOCK(13, "销售退货单","SAL_RETURNSTOCK","FRealQty","","",1),
    SAL_DELIVERYNOTICE(14, "发货通知单","SAL_DELIVERYNOTICE","","销售出库单","SAL_OUTSTOCK",0),
    STK_MISCELLANEOUS(15, "其他入库单","STK_MISCELLANEOUS","","其他入库单","STK_MISCELLANEOUS",1),
//    BD_Supplier(16, "供应商","BD_Supplier","","","",1),
    PUR_ReceiveBill(17, "收料通知单","PUR_ReceiveBill","","采购入库单","STK_InStock",1),
    PRD_MORPT(18, "生产汇报单","PRD_MORPT","","生产入库单","PRD_INSTOCK",1),
//    PRD_INSTOCK(19, "生产入库单","PRD_INSTOCK","","","",1),
    SAL_RETURNNOTICE(20, "退货通知单","SAL_RETURNNOTICE","","退货入库单","null",1),
    SAL_RETURNNOTICE(20, "退货通知单","SAL_RETURNNOTICE","","销售退货单","SAL_RETURNSTOCK",1),
    STK_OutStockApply(21, "出库申请单","STK_OutStockApply","","其他出库单","STK_MisDelivery",0),
    ;
    public Integer id;
src/main/resources/application.yml
@@ -66,8 +66,11 @@
erp:
  #  开关
  switch:
    InboundOrderSwitch: true
    #获取单据开关
    InboundOrderSwitch: false
    #登录接口开关
    LoginAuthenticationSwitch: false
    #上报、审核单据开关
    ReviewOrderSwitch: false
  #  地址
  address:
@@ -76,8 +79,12 @@
    loginaddress: K3CLOUD/Kingdee.BOS.WebApi.ServicesStub.AuthService.ValidateUser.common.kdsvc
    #单据,商品档案地址
    inaddress: K3CLOUD/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.ExecuteBillQuery.common.kdsvc
    #结果上报(保存)单地址
    outaddressSave: K3CLOUD/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Save.common.kdsvc
    #结果上报(提交)单地址
    outaddressSubmit: K3Cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Submit.common.kdsvc
    #结果上报(审核)单地址
    outaddress: K3CLOUD/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Audit.common.kdsvc
    outaddressAudit: K3CLOUD/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Audit.common.kdsvc
  #  登录账号管理
  login :
    acctID: "647e849ab6fa0f"
src/main/resources/mapper/OrderMapper.xml
@@ -62,6 +62,15 @@
        order by create_time asc
    </select>
    <select id="selectComplete8" resultMap="BaseResultMap">
        select top 5 *
        from man_order
        where 1=1
        and settle = 8
        and status = 1
        order by create_time asc
    </select>
    <insert id="addToLogTable">
        INSERT INTO man_order_log SELECT * FROM man_order WHERE id = #{id}
    </insert>
src/main/webapp/static/layuiadmin/json/console/prograss.js
@@ -1,36 +1 @@
{
  "code": 0
  ,"msg": ""
  ,"count": "100"
  ,"data": [{
    "prograss": "开会"
    ,"time": "一小时"
    ,"complete": "已完成"
    ,"LAY_CHECKED": true
  },{
    "prograss": "项目开发"
    ,"time": "两小时"
    ,"complete": "进行中"
    ,"LAY_CHECKED": true
  },{
    "prograss": "陪吃饭"
    ,"time": "一小时"
    ,"complete": "未完成"
  },{
    "prograss": "修改小bug"
    ,"time": "半小时"
    ,"complete": "未完成"
  },{
    "prograss": "修改大bug"
    ,"time": "两小时"
    ,"complete": "未完成"
  },{
    "prograss": "修改小bug"
    ,"time": "半小时"
    ,"complete": "未完成"
  },{
    "prograss": "修改大bug"
    ,"time": "两小时"
    ,"complete": "未完成"
  }]
}
{"code":0,"msg":"","count":"100","data":[{"prograss":"开会","time":"一小时","complete":"已完成","LAY_CHECKED":true},{"prograss":"项目开发","time":"两小时","complete":"进行中","LAY_CHECKED":true},{"prograss":"陪吃饭","time":"一小时","complete":"未完成"},{"prograss":"修改小bug","time":"半小时","complete":"未完成"},{"prograss":"修改大bug","time":"两小时","complete":"未完成"},{"prograss":"修改小bug","time":"半小时","complete":"未完成"},{"prograss":"修改大bug","time":"两小时","complete":"未完成"}]}
src/main/webapp/static/layuiadmin/json/console/top-card.js
@@ -1,76 +1 @@
{
  "code": 0
  ,"msg": ""
  ,"count": "100"
  ,"data": [{
    "id": 111
    ,"title": "社区开始接受 “赞助商广告” 投放"
    ,"username": "贤心"
    ,"channel": "公告"
    ,"href": "http://fly.layui.com/jie/15697/"
    ,"crt": 61632
  },{
    "id": 222
    ,"title": "layui 一周年"
    ,"username": "猫吃"
    ,"channel": "讨论"
    ,"href": "http://fly.layui.com/jie/16622/"
    ,"crt": 61632
  },{
    "id": 333
    ,"title": "四个月的前端"
    ,"username": "fd"
    ,"channel": "分享"
    ,"href": "http://fly.layui.com/jie/16651/"
    ,"crt": 61632
  },{
    "id": 333
    ,"title": "如何评价LayUI和他的作者闲心"
    ,"username": "纸飞机"
    ,"channel": "提问"
    ,"href": "http://fly.layui.com/jie/9352/"
    ,"crt": 61632
  },{
    "id": 333
    ,"title": "如何评价LayUI和他的作者闲心"
    ,"username": "纸飞机"
    ,"channel": "提问"
    ,"href": "http://fly.layui.com/jie/9352/"
    ,"crt": 61632
  },{
    "id": 333
    ,"title": "如何评价LayUI和他的作者闲心"
    ,"username": "纸飞机"
    ,"channel": "提问"
    ,"href": "http://fly.layui.com/jie/9352/"
    ,"crt": 61632
  },{
    "id": 333
    ,"title": "如何评价LayUI和他的作者闲心"
    ,"username": "纸飞机"
    ,"channel": "提问"
    ,"href": "http://fly.layui.com/jie/9352/"
    ,"crt": 61632
  },{
    "id": 333
    ,"title": "如何评价LayUI和他的作者闲心"
    ,"username": "纸飞机"
    ,"channel": "提问"
    ,"href": "http://fly.layui.com/jie/9352/"
    ,"crt": 61632
  },{
    "id": 333
    ,"title": "如何评价LayUI和他的作者闲心"
    ,"username": "纸飞机"
    ,"channel": "提问"
    ,"href": "http://fly.layui.com/jie/9352/"
    ,"crt": 61632
  },{
    "id": 333
    ,"title": "如何评价LayUI和他的作者闲心"
    ,"username": "纸飞机"
    ,"channel": "提问"
    ,"href": "http://fly.layui.com/jie/9352/"
    ,"crt": 61632
  }]
}
{"code":0,"msg":"","count":"100","data":[{"id":111,"title":"社区开始接受 “赞助商广告” 投放","username":"贤心","channel":"公告","href":"http://fly.layui.com/jie/15697/","crt":61632},{"id":222,"title":"layui 一周年","username":"猫吃","channel":"讨论","href":"http://fly.layui.com/jie/16622/","crt":61632},{"id":333,"title":"四个月的前端","username":"fd","channel":"分享","href":"http://fly.layui.com/jie/16651/","crt":61632},{"id":333,"title":"如何评价LayUI和他的作者闲心","username":"纸飞机","channel":"提问","href":"http://fly.layui.com/jie/9352/","crt":61632},{"id":333,"title":"如何评价LayUI和他的作者闲心","username":"纸飞机","channel":"提问","href":"http://fly.layui.com/jie/9352/","crt":61632},{"id":333,"title":"如何评价LayUI和他的作者闲心","username":"纸飞机","channel":"提问","href":"http://fly.layui.com/jie/9352/","crt":61632},{"id":333,"title":"如何评价LayUI和他的作者闲心","username":"纸飞机","channel":"提问","href":"http://fly.layui.com/jie/9352/","crt":61632},{"id":333,"title":"如何评价LayUI和他的作者闲心","username":"纸飞机","channel":"提问","href":"http://fly.layui.com/jie/9352/","crt":61632},{"id":333,"title":"如何评价LayUI和他的作者闲心","username":"纸飞机","channel":"提问","href":"http://fly.layui.com/jie/9352/","crt":61632},{"id":333,"title":"如何评价LayUI和他的作者闲心","username":"纸飞机","channel":"提问","href":"http://fly.layui.com/jie/9352/","crt":61632}]}
src/main/webapp/static/layuiadmin/json/console/top-search.js
@@ -1,46 +1 @@
{
  "code": 0
  ,"msg": ""
  ,"count": "100"
  ,"data": [{
    "keywords": "贤心是男是女"
    ,"frequency": 8520
    ,"userNums": 2216
  },{
    "keywords": "Java程序员能找到女朋友吗"
    ,"frequency": 666
    ,"userNums": 333
  },{
    "keywords": "此表格是静态模拟数据"
    ,"frequency": 666
    ,"userNums": 333
  },{
    "keywords": "layui官方教程"
    ,"frequency": 666
    ,"userNums": 333
  },{
    "keywords": "layui官方教程"
    ,"frequency": 666
    ,"userNums": 333
  },{
    "keywords": "layui官方教程"
    ,"frequency": 666
    ,"userNums": 333
  },{
    "keywords": "layui官方教程"
    ,"frequency": 666
    ,"userNums": 333
  },{
    "keywords": "layui官方教程"
    ,"frequency": 666
    ,"userNums": 333
  },{
    "keywords": "layui官方教程"
    ,"frequency": 666
    ,"userNums": 333
  },{
    "keywords": "layui官方教程"
    ,"frequency": 666
    ,"userNums": 333
  }]
}
{"code":0,"msg":"","count":"100","data":[{"keywords":"贤心是男是女","frequency":8520,"userNums":2216},{"keywords":"Java程序员能找到女朋友吗","frequency":666,"userNums":333},{"keywords":"此表格是静态模拟数据","frequency":666,"userNums":333},{"keywords":"layui官方教程","frequency":666,"userNums":333},{"keywords":"layui官方教程","frequency":666,"userNums":333},{"keywords":"layui官方教程","frequency":666,"userNums":333},{"keywords":"layui官方教程","frequency":666,"userNums":333},{"keywords":"layui官方教程","frequency":666,"userNums":333},{"keywords":"layui官方教程","frequency":666,"userNums":333},{"keywords":"layui官方教程","frequency":666,"userNums":333}]}