Browse Source

小程序订单追踪相关接口

何力凯 1 month ago
parent
commit
aaebf1a593

+ 39 - 7
zkqy-admin/src/main/java/com/zkqy/web/controller/api/ApiMobilePageDesignDataJavaInterfaceController.java

@@ -4,6 +4,8 @@ import cn.hutool.core.bean.BeanUtil;
 import com.zkqy.common.core.controller.BaseController;
 import com.zkqy.common.core.domain.AjaxResult;
 import com.zkqy.common.utils.StringUtils;
+import com.zkqy.system.entity.ProcedureList;
+import com.zkqy.system.entity.vo.RingScanInformationLogVo;
 import com.zkqy.system.entity.vo.apiMobileVo.*;
 import com.zkqy.system.service.IApiMobilePageJavaInterFaceService;
 import com.zkqy.system.service.IMobilePageDesignDataService;
@@ -21,6 +23,7 @@ import java.math.RoundingMode;
 import java.time.YearMonth;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 移动端需要提供可选的java接口
@@ -161,9 +164,23 @@ public class ApiMobilePageDesignDataJavaInterfaceController extends BaseControll
         );
         // 默认设置一个填充字段,防止后台获取 columns报错,实际上无意义
         List<BgfxhzVo> list = iApiMobilePageJavaInterFaceService.bgfxHz(beginTime,endTime);
+        List<ProcedureList> procedureList = iApiMobilePageJavaInterFaceService.selectProcedureListList();
+        //重新封装返回结果 排序
+        List<BgfxhzVo> orderList = new ArrayList<>();
+        procedureList.forEach(procedure -> {
+            List<BgfxhzVo> collect = list.stream().filter(object -> object.getProcessName().equals(procedure.getProcedurName())).collect(Collectors.toList());
+            if (collect.isEmpty()){
+                BgfxhzVo bgfxhzVo = new BgfxhzVo();
+                bgfxhzVo.setProcessName(procedure.getProcedurName());
+                bgfxhzVo.setFinishCount(0);
+                orderList.add(bgfxhzVo);
+            }else{
+                orderList.addAll(collect);
+            }
+        });
         //封装对象返回格式 result
         List<Map<String, Object>> result = new ArrayList<>();
-        list.forEach(object -> {
+        orderList.forEach(object -> {
             result.add(BeanUtil.beanToMap(object));
         });
         MobileJavaInterFaceDataListVo mobileJavaInterFaceDataVo = new MobileJavaInterFaceDataListVo(result,columns);
@@ -336,13 +353,28 @@ public class ApiMobilePageDesignDataJavaInterfaceController extends BaseControll
     }
 
     /**
-     * 慢sql测试 学习使用
+     * 订单追踪
      */
-    @GetMapping(value = "/slow")
-    @ApiOperation(value = "报工分析-图表")
-    public AjaxResult slow(){
-        List<Map<String, Object>>  map = iApiMobilePageJavaInterFaceService.slow();
-        return AjaxResult.success(map);
+    @GetMapping(value = "/orderTracking")
+    @ApiOperation(value = "订单追踪")
+    public AjaxResult orderTracking(String orderNumber){
+        List<MobileJavaInterFaceColumnVo> columns = Arrays.asList(
+                new MobileJavaInterFaceColumnVo("orderNumber", "订单号"),
+                new MobileJavaInterFaceColumnVo("totalQuantity", "任务数量"),
+                new MobileJavaInterFaceColumnVo("count", "完成数量"),
+                new MobileJavaInterFaceColumnVo("status", "工序完成情况"),
+                new MobileJavaInterFaceColumnVo("scanningTime", "扫描时间"),
+                new MobileJavaInterFaceColumnVo("modelNumber", "型号"),
+                new MobileJavaInterFaceColumnVo("specification", "规格型号")
+        );
+        //1.根据订单号获取扫描信息
+        List<RingScanInformationLogVo> list = iApiMobilePageJavaInterFaceService.selectRingScanInformationLog2(orderNumber);
+        //封装对象返回格式 result
+        HashMap<String, Object> resMap = new HashMap<>();
+        resMap.put("result",list);
+        resMap.put("columns",columns);
+        resMap.put("total",0l);
+        return AjaxResult.success(resMap);
     }
 
 }

+ 5 - 1
zkqy-framework/src/main/java/com/zkqy/framework/aspectj/SqlInterceptor.java

@@ -85,7 +85,11 @@ public class SqlInterceptor implements Interceptor {
         if (SecurityUtils.getDatabaseType().equals("mysql")) {
             if (sql.contains("{DBNAME}.")) {
                 return sql.replace("{DBNAME}.", "`" + SecurityUtils.getDatabaseName() + "`.");
-            } else {
+                //取消了个点,有些时候会有这种情况
+            } else if (sql.contains("{DBNAME}")){
+                return sql.replace("{DBNAME}", " `" + SecurityUtils.getDatabaseName() + "`");
+            }else{
+
                 if (sql.contains("information_schema")) return sql;  // 执行当前sql不需要选择数据源
                 StringBuilder sb = new StringBuilder(sql);
                 if (sb.indexOf(" from ") != -1) {

+ 10 - 0
zkqy-system/src/main/java/com/zkqy/system/entity/MobilePageDesignData.java

@@ -43,6 +43,8 @@ public class MobilePageDesignData extends BaseEntity
     @Excel(name = "html数据")
     private String htmlData;
 
+    private String htmlUrl;
+
     @Excel(name = "节点数存储字段")
     private String multipleTreeParam;
 
@@ -248,4 +250,12 @@ public class MobilePageDesignData extends BaseEntity
     public void setTableId(Long tableId) {
         this.tableId = tableId;
     }
+
+    public String getHtmlUrl() {
+        return htmlUrl;
+    }
+
+    public void setHtmlUrl(String htmlUrl) {
+        this.htmlUrl = htmlUrl;
+    }
 }

+ 160 - 0
zkqy-system/src/main/java/com/zkqy/system/entity/ProcedureList.java

@@ -0,0 +1,160 @@
+package com.zkqy.system.entity;
+
+import com.zkqy.common.annotation.Excel;
+import com.zkqy.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.StringJoiner;
+
+
+/**
+ * 工序列表对象 procedure_list
+ * 
+ * @author ruoyi
+ * @date 2024-11-14
+ */
+public class ProcedureList extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    private Long id;
+
+    /** 工序编号 */
+    @Excel(name = "工序编号")
+    private String procedureNumber;
+
+    private  String  elpname;
+
+    public String getElpname() {
+        return elpname;
+    }
+
+    public void setElpname(String elpname) {
+        this.elpname = elpname;
+    }
+
+    /** 工序名称 */
+    @Excel(name = "工序名称")
+    private String procedurName;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    private String remarks;
+
+    /** 创建者id  */
+    @Excel(name = "创建者id ")
+    private Long createById;
+
+    /** 更新者id */
+    @Excel(name = "更新者id")
+    private Long updateById;
+
+    /** 删除标志(0代表存在 1代表删除) */
+    private String delFlag;
+
+    /** 绑定状态 */
+    private  String  bindingStatus;
+
+    public String getBindingStatus() {
+        return bindingStatus;
+    }
+
+    public void setBindingStatus(String bindingStatus) {
+        this.bindingStatus = bindingStatus;
+    }
+
+    /**
+     * 工序排序
+     */
+    private  String  sort;
+
+    public String getSort() {
+        return sort;
+    }
+
+    public void setSort(String sort) {
+        this.sort = sort;
+    }
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setProcedureNumber(String procedureNumber) 
+    {
+        this.procedureNumber = procedureNumber;
+    }
+
+    public String getProcedureNumber() 
+    {
+        return procedureNumber;
+    }
+    public void setProcedurName(String procedurName) 
+    {
+        this.procedurName = procedurName;
+    }
+
+    public String getProcedurName() 
+    {
+        return procedurName;
+    }
+    public void setRemarks(String remarks) 
+    {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks() 
+    {
+        return remarks;
+    }
+    public void setCreateById(Long createById) 
+    {
+        this.createById = createById;
+    }
+
+    public Long getCreateById() 
+    {
+        return createById;
+    }
+    public void setUpdateById(Long updateById) 
+    {
+        this.updateById = updateById;
+    }
+
+    public Long getUpdateById() 
+    {
+        return updateById;
+    }
+    public void setDelFlag(String delFlag) 
+    {
+        this.delFlag = delFlag;
+    }
+
+    public String getDelFlag() 
+    {
+        return delFlag;
+    }
+
+    @Override
+    public String toString() {
+        return new StringJoiner(", ", ProcedureList.class.getSimpleName() + "[", "]")
+                .add("id=" + id)
+                .add("procedureNumber='" + procedureNumber + "'")
+                .add("elpname='" + elpname + "'")
+                .add("procedurName='" + procedurName + "'")
+                .add("remarks='" + remarks + "'")
+                .add("createById=" + createById)
+                .add("updateById=" + updateById)
+                .add("delFlag='" + delFlag + "'")
+                .add("bindingStatus='" + bindingStatus + "'")
+                .add("sort='" + sort + "'")
+                .toString();
+    }
+}

+ 214 - 0
zkqy-system/src/main/java/com/zkqy/system/entity/RingScanInformationFirst.java

@@ -0,0 +1,214 @@
+package com.zkqy.system.entity;
+
+import com.zkqy.common.annotation.Excel;
+import com.zkqy.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+
+/**
+ * 第一次扫描信息记录对象 ring_scan_information_first
+ * 
+ * @author ruoyi
+ * @date 2024-11-15
+ */
+public class RingScanInformationFirst extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+
+    /** 主键 */
+    private Long id;
+
+    //单据创建时间
+    private  String creationtimeString;
+
+    /** 主键 */
+    private String he;
+
+
+    @Excel(name = "时间筛选",dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private List<String> createTimeString;
+
+    public String getHe() {
+        return he;
+    }
+
+    public void setHe(String he) {
+        this.he = he;
+    }
+
+    /** 订单号 */
+    @Excel(name = "订单号")
+    private String orderNumber;
+
+    /** 1、包装 2、检验 */
+    @Excel(name = "包装或者检验")
+    private  String packingOrInspection;
+
+    /** 生产订单的总数 */
+    @Excel(name = "生产订单的总数")
+    private  String  productionOrderTotalQuantity;
+
+
+    @Excel(name = "入库的总数")
+    private  String  rks;
+
+
+
+    /** 订单号 */
+    @Excel(name = "总数量")
+    private String totalQuantity;
+
+    /** 生产订单号 */
+    @Excel(name = "生产订单号")
+    private String productionOrderNumber;
+
+    /** 0:进行中,已完成 */
+    @Excel(name = "0:进行中,1已完成")
+    private String status;
+
+    /** 开始时间 */
+    @Excel(name = "开始时间")
+    private LocalDateTime startTime;
+
+    /** 结束时间 */
+    @Excel(name = "结束时间")
+    private LocalDateTime endTime;
+
+    /** 包装数量 */
+    @Excel(name = "包装数量")
+    private String packingQuantity;
+
+    /** 检验数量 */
+    @Excel(name = "检验数量")
+    private String inspectionQuantity;
+
+    public LocalDateTime getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(LocalDateTime startTime) {
+        this.startTime = startTime;
+    }
+
+    public LocalDateTime getEndTime() {
+        return endTime;
+    }
+
+    public void setEndTime(LocalDateTime endTime) {
+        this.endTime = endTime;
+    }
+
+    public String getTotalQuantity() {
+        return totalQuantity;
+    }
+    public String getRks() {
+        return rks;
+    }
+
+    public void setRks(String rks) {
+        this.rks = rks;
+    }
+
+    public String getProductionOrderTotalQuantity() {
+        return productionOrderTotalQuantity;
+    }
+
+    public void setProductionOrderTotalQuantity(String productionOrderTotalQuantity) {
+        this.productionOrderTotalQuantity = productionOrderTotalQuantity;
+    }
+
+    public String getPackingOrInspection() {
+        return packingOrInspection;
+    }
+
+    public void setPackingOrInspection(String packingOrInspection) {
+        this.packingOrInspection = packingOrInspection;
+    }
+    public void setTotalQuantity(String totalQuantity) {
+        this.totalQuantity = totalQuantity;
+    }
+    public String getPackingQuantity() {
+        return packingQuantity;
+    }
+
+    public void setPackingQuantity(String packingQuantity) {
+        this.packingQuantity = packingQuantity;
+    }
+
+    public String getInspectionQuantity() {
+        return inspectionQuantity;
+    }
+
+    public void setInspectionQuantity(String inspectionQuantity) {
+        this.inspectionQuantity = inspectionQuantity;
+    }
+
+
+
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setOrderNumber(String orderNumber) 
+    {
+        this.orderNumber = orderNumber;
+    }
+
+    public String getOrderNumber() 
+    {
+        return orderNumber;
+    }
+    public void setProductionOrderNumber(String productionOrderNumber) 
+    {
+        this.productionOrderNumber = productionOrderNumber;
+    }
+    public String getCreationtimeString() {
+        return creationtimeString;
+    }
+
+    public void setCreationtimeString(String creationtimeString) {
+        this.creationtimeString = creationtimeString;
+    }
+
+    public List<String> getCreateTimeString() {
+        return createTimeString;
+    }
+
+    public void setCreateTimeString(List<String> createTimeString) {
+        this.createTimeString = createTimeString;
+    }
+    public String getProductionOrderNumber() 
+    {
+        return productionOrderNumber;
+    }
+    public void setStatus(String status) 
+    {
+        this.status = status;
+    }
+
+    public String getStatus() 
+    {
+        return status;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("orderNumber", getOrderNumber())
+            .append("productionOrderNumber", getProductionOrderNumber())
+            .append("status", getStatus())
+            .toString();
+    }
+}

+ 0 - 23
zkqy-system/src/main/java/com/zkqy/system/entity/dto/ApiMobilePageDesignDataMutiQueryDto.java

@@ -1,23 +0,0 @@
-package com.zkqy.system.entity.dto;
-
-
-public class ApiMobilePageDesignDataMutiQueryDto {
-    private Long pageId;
-    private String queryMap;
-
-    public Long getPageId() {
-        return pageId;
-    }
-
-    public void setPageId(Long pageId) {
-        this.pageId = pageId;
-    }
-
-    public String getQueryMap() {
-        return queryMap;
-    }
-
-    public void setQueryMap(String queryMap) {
-        this.queryMap = queryMap;
-    }
-}

+ 165 - 0
zkqy-system/src/main/java/com/zkqy/system/entity/vo/RingScanInformationLogVo.java

@@ -0,0 +1,165 @@
+package com.zkqy.system.entity.vo;
+
+import java.util.List;
+
+public class RingScanInformationLogVo {
+
+    private   String  id;
+
+    private  String  count;
+
+    private  String  processName;
+
+    private  String   nativeNumbering;
+
+    private  String   scanningTime;
+    private  String   orderNumber;
+
+    private  String   totalQuantity;
+
+    private  String productionOrderNumber;
+    private  String productionOrderTotalQuantity;
+
+    private  String   sort;
+
+    private  String   status;
+
+    private  String   startTime;
+
+    private  String  endTime;
+
+    private  String  modelNumber;
+
+    private  String  specification;
+
+    private List<RingScanInformationLogVo> children;
+
+
+    public String getModelNumber() {
+        return modelNumber;
+    }
+
+    public void setModelNumber(String modelNumber) {
+        this.modelNumber = modelNumber;
+    }
+
+    public String getSpecification() {
+        return specification;
+    }
+
+    public void setSpecification(String specification) {
+        this.specification = specification;
+    }
+
+    public String getProductionOrderNumber() {
+        return productionOrderNumber;
+    }
+
+    public void setProductionOrderNumber(String productionOrderNumber) {
+        this.productionOrderNumber = productionOrderNumber;
+    }
+
+    public String getProductionOrderTotalQuantity() {
+        return productionOrderTotalQuantity;
+    }
+
+    public void setProductionOrderTotalQuantity(String productionOrderTotalQuantity) {
+        this.productionOrderTotalQuantity = productionOrderTotalQuantity;
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getTotalQuantity() {
+        return totalQuantity;
+    }
+
+    public void setTotalQuantity(String totalQuantity) {
+        this.totalQuantity = totalQuantity;
+    }
+
+    public String getOrderNumber() {
+        return orderNumber;
+    }
+
+    public void setOrderNumber(String orderNumber) {
+        this.orderNumber = orderNumber;
+    }
+
+    public String getCount() {
+        return count;
+    }
+
+    public void setCount(String count) {
+        this.count = count;
+    }
+
+    public String getProcessName() {
+        return processName;
+    }
+
+    public void setProcessName(String processName) {
+        this.processName = processName;
+    }
+
+    public String getNativeNumbering() {
+        return nativeNumbering;
+    }
+
+    public void setNativeNumbering(String nativeNumbering) {
+        this.nativeNumbering = nativeNumbering;
+    }
+
+    public String getScanningTime() {
+        return scanningTime;
+    }
+
+    public void setScanningTime(String scanningTime) {
+        this.scanningTime = scanningTime;
+    }
+
+    public String getSort() {
+        return sort;
+    }
+
+    public void setSort(String sort) {
+        this.sort = sort;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    public String getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(String startTime) {
+        this.startTime = startTime;
+    }
+
+    public String getEndTime() {
+        return endTime;
+    }
+
+    public void setEndTime(String endTime) {
+        this.endTime = endTime;
+    }
+
+    public List<RingScanInformationLogVo> getChildren() {
+        return children;
+    }
+
+    public void setChildren(List<RingScanInformationLogVo> children) {
+        this.children = children;
+    }
+}

+ 11 - 2
zkqy-system/src/main/java/com/zkqy/system/mapper/ApiMobilePageJavaInterfaceMapper.java

@@ -1,10 +1,12 @@
 package com.zkqy.system.mapper;
 
+import com.zkqy.system.entity.ProcedureList;
+import com.zkqy.system.entity.RingScanInformationFirst;
+import com.zkqy.system.entity.vo.RingScanInformationLogVo;
 import com.zkqy.system.entity.vo.apiMobileVo.*;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
-import java.util.Map;
 
 /**
  * 移动端建模页java接口Mapper接口
@@ -44,6 +46,13 @@ public interface ApiMobilePageJavaInterfaceMapper
 
     List<WorkReportAnalysisChartVo> workReportAnalysisChartMonth(@Param("beginTime") String beginTime, @Param("endTime") String endTime);
 
-    void slow();
+    List<RingScanInformationLogVo> selectRingScanInformationLog(List<String> list);
 
+    List<RingScanInformationLogVo> selectRingScanInformationLog2(List<String> list);
+
+    String selectNewestOrderNumber();
+
+    List<ProcedureList> selectProcedureListList();
+
+    List<RingScanInformationFirst> selectRingScanInformationFirstList(String orderNumber);
 }

+ 5 - 1
zkqy-system/src/main/java/com/zkqy/system/service/IApiMobilePageJavaInterFaceService.java

@@ -1,5 +1,7 @@
 package com.zkqy.system.service;
 
+import com.zkqy.system.entity.ProcedureList;
+import com.zkqy.system.entity.vo.RingScanInformationLogVo;
 import com.zkqy.system.entity.vo.apiMobileVo.*;
 import org.springframework.stereotype.Service;
 
@@ -68,6 +70,8 @@ public interface IApiMobilePageJavaInterFaceService {
 
     String[] formatDate2chart(String timeValue);
 
-    List<Map<String, Object>> slow();
+    List<RingScanInformationLogVo> selectRingScanInformationLog2(String orderNumber);
+
+    List<ProcedureList> selectProcedureListList();
 
 }

+ 56 - 6
zkqy-system/src/main/java/com/zkqy/system/service/impl/ApiMobilePageJavaInterFaceServiceImpl.java

@@ -1,5 +1,9 @@
 package com.zkqy.system.service.impl;
 
+import com.zkqy.common.utils.StringUtils;
+import com.zkqy.system.entity.ProcedureList;
+import com.zkqy.system.entity.RingScanInformationFirst;
+import com.zkqy.system.entity.vo.RingScanInformationLogVo;
 import com.zkqy.system.entity.vo.apiMobileVo.*;
 import com.zkqy.system.mapper.ApiMobilePageJavaInterfaceMapper;
 import com.zkqy.system.service.IApiMobilePageJavaInterFaceService;
@@ -7,10 +11,7 @@ import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 import java.math.RoundingMode;
-import java.time.LocalDate;
-import java.time.YearMonth;
 import java.util.*;
-import java.util.function.Consumer;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
@@ -133,9 +134,58 @@ public class ApiMobilePageJavaInterFaceServiceImpl implements IApiMobilePageJava
     }
 
     @Override
-    public List<Map<String, Object>> slow() {
-        apiMobilePageJavaInterfaceMapper.slow();
-        return null;
+    public List<RingScanInformationLogVo> selectRingScanInformationLog2(String orderNumber) {
+        // 如果没有数据,默认找一条最新的数据
+        if (StringUtils.isBlank(orderNumber)){
+            orderNumber = "NQY251951";
+        }
+        List<RingScanInformationFirst> ringScanInformationFirsts = apiMobilePageJavaInterfaceMapper.selectRingScanInformationFirstList(orderNumber);
+        List<String> listOrder = ringScanInformationFirsts.parallelStream().map(RingScanInformationFirst::getOrderNumber).collect(Collectors.toList());
+        // 订单
+        List<RingScanInformationLogVo> orderList;
+        if (!listOrder.isEmpty()){
+            orderList = apiMobilePageJavaInterfaceMapper.selectRingScanInformationLog(listOrder);
+        } else {
+            orderList = new ArrayList<>();
+        }
+        // 生产订单
+        List<String> listProduct = ringScanInformationFirsts.parallelStream().map(RingScanInformationFirst::getProductionOrderNumber).collect(Collectors.toList());
+        List<RingScanInformationLogVo> productList = new ArrayList<>();
+        if (!listProduct.isEmpty()){
+            productList = apiMobilePageJavaInterfaceMapper.selectRingScanInformationLog2(listProduct);
+        }
+        for (RingScanInformationLogVo scanInformationLogVo : orderList) {
+            List<RingScanInformationLogVo> collect = productList.stream().filter(product -> product.getProcessName().equals(scanInformationLogVo.getProcessName())).collect(Collectors.toList());
+            scanInformationLogVo.setChildren(collect);
+        }
+        List<ProcedureList> procedureList = apiMobilePageJavaInterfaceMapper.selectProcedureListList();
+        //过滤掉名称为包装和浸漆的两项
+        procedureList = procedureList.stream().filter(procedure -> !procedure.getProcedurName().equals("包装") && !procedure.getProcedurName().equals("浸漆")).collect(Collectors.toList());
+        List<RingScanInformationLogVo> resList = new ArrayList<>();
+        // 最后填充空数据 + 排序
+        // 订单数量和订单号全部通用,填充到默认值里面
+        RingScanInformationLogVo normalVo = orderList.get(0);
+        String totalQuantityNormal = normalVo.getTotalQuantity();
+        String orderNumberNormal = normalVo.getOrderNumber();
+        procedureList.forEach(procedure -> {
+            List<RingScanInformationLogVo> collect = orderList.stream().filter(order -> order.getProcessName().equals(procedure.getProcedurName())).collect(Collectors.toList());
+            if (collect.isEmpty()){
+                RingScanInformationLogVo ringScanInformationLogVo = new RingScanInformationLogVo();
+                ringScanInformationLogVo.setProcessName(procedure.getProcedurName());
+                ringScanInformationLogVo.setChildren(new ArrayList<>());
+                ringScanInformationLogVo.setTotalQuantity(totalQuantityNormal);
+                ringScanInformationLogVo.setOrderNumber(orderNumberNormal);
+                resList.add(ringScanInformationLogVo);
+            }else{
+                resList.addAll(collect);
+            }
+        });
+        return resList;
+    }
+
+    @Override
+    public List<ProcedureList> selectProcedureListList() {
+        return apiMobilePageJavaInterfaceMapper.selectProcedureListList();
     }
 
     public static String detectDateFormatWithRegex(String dateStr) {

+ 1 - 0
zkqy-system/src/main/resources/mapper/dragmapper/DragTreeMapper.xml

@@ -82,6 +82,7 @@
             <if test="treeTableKey!=null">tree_table_key,</if>
             <if test="treeShowLabel!=null">tree_show_label,</if>
             <if test="treeTableJoinTableCondition!=null">tree_table_join_table_condition,</if>
+            <if test="treeTableJoinTablePrimaryKey!=null">tree_table_join_table_primary_key,</if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="menuId != null">#{menuId},</if>

+ 152 - 2
zkqy-system/src/main/resources/mapper/mobile/ApiMobilePageJavaInterfaceMapper.xml

@@ -191,8 +191,158 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         ORDER BY
             timeValue
     </select>
-    <select id="slow">
-        SELECT *, SLEEP(0.5) FROM {DBNAME}.ring_scan_information limit 10
+    <select id="selectRingScanInformationLog" resultType="com.zkqy.system.entity.vo.RingScanInformationLogVo">
+        SELECT
+        count(sub.count) as `count`,
+        sub.process_name,
+        sub.order_number,
+        sub.scanning_time,
+        sub.production_order_number,
+        sub.sort,
+        rsif.`status`,
+        rsif.start_time,
+        rsif.end_time,
+        rsif.total_quantity,
+        rsif.production_order_total_quantity
+        FROM
+        (
+        SELECT
+        rsi.process_name,
+        rsi.native_numbering,
+        rsi.order_number,
+        COUNT( rsi.process_name ) AS count,
+        rsi.production_order_number,
+        MAX( rsi.scanning_time ) AS scanning_time,
+        pl.sort
+        FROM
+        fjqydb.ring_scan_information AS rsi
+        LEFT JOIN fjqydb.procedure_list AS pl ON pl.procedur_name = rsi.process_name
+        WHERE
+        rsi.execution_mark = '1'
+        <if test="list != null and list.size()>0">
+            and rsi.order_number IN
+            <foreach item="id" collection="list" open="(" separator="," close=")">
+                #{id}
+            </foreach>
+        </if>
+        GROUP BY
+        rsi.order_number,rsi.process_name,rsi.native_numbering
+        ) AS sub
+        LEFT JOIN fjqydb.ring_scan_information_first AS rsif ON ( sub.production_order_number = rsif.production_order_number )
+
+        <where>
+            <if test="list != null and list.size()>0">
+                sub.order_number IN
+                <foreach item="id" collection="list" open="(" separator="," close=")">
+                    #{id}
+                </foreach>
+            </if>
+        </where>
+        GROUP BY
+        sub.order_number,
+        sub.process_name
+        ORDER BY
+        sub.sort,
+        rsif.start_time desc
+    </select>
+    <select id="selectRingScanInformationLog2" resultType="com.zkqy.system.entity.vo.RingScanInformationLogVo">
+        SELECT
+        sub.process_name,
+        sub.order_number,
+        sub.scanning_time,
+        sub.production_order_number,
+        sub.sort,
+        sub.`status`,
+        sub.start_time,
+        sub.end_time,
+        sub.total_quantity,
+        sub.production_order_total_quantity,
+        sub.modelNumber AS modelNumber,
+        sub.specification AS specification,
+        COUNT(sub.process_name)  as `count`
+        FROM
+        (
+        SELECT
+        rsi.process_name,
+        rsi.native_numbering,
+        rsi.order_number,
+        rsi.production_order_number,
+        MAX( rsi.scanning_time ) AS scanning_time,
+        pl.sort,
+        rsif.`status`,
+        rsif.start_time,
+        rsif.end_time,
+        rsif.total_quantity,
+        rsif.production_order_total_quantity,
+        ptd.model_number AS modelNumber,
+        ptd.specification AS specification
+        FROM
+        fjqydb.ring_scan_information AS rsi
+        LEFT JOIN fjqydb.procedure_list AS pl ON pl.procedur_name = rsi.process_name
+        LEFT JOIN fjqydb.ring_scan_information_first AS rsif ON ( rsi.production_order_number = rsif.production_order_number )
+        LEFT JOIN fjqydb.plan_task_details AS ptd ON ptd.demand_document = rsi.production_order_number
+        <where>
+            <if test="list != null and list.size()>0">
+                rsif.production_order_number IN
+                <foreach item="id" collection="list" open="(" separator="," close=")">
+                    #{id}
+                </foreach>
+            </if>
+            <if test="list == null or list.size() == 0">
+                rsi.production_order_number = 'X'
+            </if>
+            and rsi.execution_mark = '1'
+        </where>
+        GROUP BY
+        rsi.production_order_number,
+        rsi.process_name,
+        rsi.native_numbering
+        ) AS sub
+        GROUP BY
+        sub.production_order_number,
+        sub.process_name
+        ORDER BY
+        sub.start_time DESC,
+        sub.sort
+    </select>
+    <select id="selectNewestOrderNumber" resultType="java.lang.String">
+        SELECT
+            order_number
+        FROM
+            {DBNAME}.ring_scan_information
+        WHERE
+            execution_mark = '1'
+        ORDER BY
+            scanning_time DESC
+        LIMIT 1
+    </select>
+    <select id="selectProcedureListList" resultType="com.zkqy.system.entity.ProcedureList">
+        select
+            pl.id,
+            pl.procedure_number,
+            pl.procedur_name,
+            pl.remarks,
+            pl.sort,
+            CASE
+                WHEN ple.erp_job_name IS NULL THEN
+                    '未绑定' ELSE '已绑定'
+                END AS binding_status
+            FROM
+                fjqydb.procedure_list AS pl
+                    LEFT JOIN fjqydb.procedure_list_erp AS ple ON ple.erp_job_name = pl.id
+            GROUP BY
+                pl.procedur_name
+            order by pl.sort
+    </select>
+    <select id="selectRingScanInformationFirstList"
+            resultType="com.zkqy.system.entity.RingScanInformationFirst">
+        select id, order_number, production_order_number, status,start_time,end_time,packing_quantity,inspection_quantity,total_quantity,
+        packing_or_inspection,production_order_total_quantity,rks
+        from fjqydb.ring_scan_information_first
+       <where>
+           <if test="orderNumber != null  and orderNumber != ''"> and (order_number = #{orderNumber} or production_order_number = #{orderNumber})</if>
+       </where>
+        order by start_time desc
     </select>
 
 </mapper>

+ 6 - 1
zkqy-system/src/main/resources/mapper/mobile/MobilePageDesignDataMapper.xml

@@ -12,6 +12,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="pageLink"    column="page_link"    />
         <result property="componentData"    column="component_data"    />
         <result property="htmlData"    column="html_data"    />
+        <result property="htmlUrl"    column="html_url"    />
         <result property="multipleTreeParam"    column="multiple_tree_param"    />
         <result property="tableId"    column="table_id"    />
         <result property="remark"    column="remark"    />
@@ -30,7 +31,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </resultMap>
 
     <sql id="selectMobilePageDesignDataVo">
-        select id, name, page_json, page_options, page_link,component_data,html_data,multiple_tree_param,table_id, remark, create_by_id, create_by, create_time, update_by_id, update_by, update_time, del_flag, data_approval_status, process_key, task_process_key, task_node_key from {DBNAME}.mobile_page_design_data
+        select id, name, page_json, page_options, page_link,component_data,html_data,html_url,multiple_tree_param,table_id, remark, create_by_id, create_by, create_time, update_by_id, update_by, update_time, del_flag, data_approval_status, process_key, task_process_key, task_node_key from {DBNAME}.mobile_page_design_data
     </sql>
 
     <select id="selectMobilePageDesignDataList" parameterType="com.zkqy.system.entity.MobilePageDesignData" resultMap="MobilePageDesignDataResult">
@@ -42,6 +43,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="pageLink != null  and pageLink != ''"> and page_link = #{pageLink}</if>
             <if test="componentData != null  and componentData != ''"> and component_data = #{componentData}</if>
             <if test="htmlData != null  and htmlData != ''"> and html_data = #{htmlData}</if>
+            <if test="htmlUrl != null  and htmlUrl != ''"> and html_url = #{htmlUrl}</if>
             <if test="multipleTreeParam != null  and multipleTreeParam != ''"> and multiple_tree_param = #{multipleTreeParam}</if>
             <if test="tableId != null  and tableId != ''"> and table_id = #{tableId}</if>
             <if test="createById != null "> and create_by_id = #{createById}</if>
@@ -68,6 +70,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="pageLink != null">page_link,</if>
             <if test="componentData != null">component_data,</if>
             <if test="htmlData != null">html_data,</if>
+            <if test="htmlUrl != null">html_url,</if>
             <if test="multipleTreeParam != null">multiple_tree_param,</if>
             <if test="remark != null">remark,</if>
             <if test="createById != null">create_by_id,</if>
@@ -89,6 +92,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="pageLink != null">#{pageLink},</if>
             <if test="componentData != null">#{componentData},</if>
             <if test="htmlData != null">#{htmlData},</if>
+            <if test="htmlUrl != null">#{htmlUrl},</if>
             <if test="multipleTreeParam != null">#{multipleTreeParam},</if>
             <if test="remark != null">#{remark},</if>
             <if test="createById != null">#{createById},</if>
@@ -117,6 +121,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="pageLink != null">page_link = #{pageLink},</if>
             <if test="componentData != null">component_data = #{componentData},</if>
             <if test="htmlData != null">html_data = #{htmlData},</if>
+            <if test="htmlUrl != null">html_url = #{htmlUrl},</if>
             <if test="multipleTreeParam != null">multiple_tree_param = #{multipleTreeParam},</if>
             <if test="remark != null">remark = #{remark},</if>
             <if test="createById != null">create_by_id = #{createById},</if>