Parcourir la source

fix:报表查询优化

yingjian.wu il y a 2 mois
Parent
commit
36901451be

+ 30 - 16
src/main/java/com/qlm/controller/jinzai/NewReportController.java

@@ -12,6 +12,7 @@ import com.qlm.controller.common.CommonController;
 import com.qlm.controller.organize.ProductionLineController;
 import com.qlm.dto.ProdTaskUploadRecordDto;
 import com.qlm.dto.ProductionTotalVO;
+import com.qlm.tools.WxUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -51,12 +52,11 @@ public class NewReportController extends CommonController {
                 startTime = DateUtil.formatDateTime(start);
                 endTime = DateUtil.formatDateTime(end);
             }
-            String selectColumns = "select distinct task_no, d.factory_name,e.workshop_name, a.sku,c.item_name, produce_date, DATE_FORMAT(guo_time, '%Y-%m-%d') AS guo_date";
-            StringBuilder sql = new StringBuilder("from jinzai_upload_master a");
-            sql.append(" left join t_jz_device b on a.device_no = b.device_no");
-            sql.append(" left join t_jz_item c on a.sku = c.sku");
-            sql.append(" left join t_factory d on b.factory_id = d.id");
-            sql.append(" left join t_Workshop e on b.workshop_id = e.id");
+            String selectColumns = "select a.task_no,a.sku,d.factory_name,e.workshop_name,a.device_no,a.produce_date,COUNT(*) AS total_count,MAX(guo_time) as guo_time";
+            StringBuilder sql = new StringBuilder(" from jinzai_upload_master a");
+            sql.append(" LEFT JOIN t_jz_device b ON a.device_no = b.device_no");
+            sql.append(" LEFT JOIN t_factory d ON b.factory_id = d.id");
+            sql.append(" LEFT JOIN t_Workshop e ON b.workshop_id = e.id");
             sql.append(" where a.produce_date between '").append(startTime).append("' and '").append(endTime).append("'");
             List<Object> params = new ArrayList<>();
             if(factoryId != null){
@@ -67,7 +67,7 @@ public class NewReportController extends CommonController {
                 sql.append(" and b.workshop_id = ?");
                 params.add(workshopId);
             }
-            sql.append(" order by a.produce_date desc");
+            sql.append(" GROUP BY a.task_no, d.factory_name, e.workshop_name,a.sku, a.device_no, a.produce_date order by a.produce_date desc");
             Page<Record> paginate = Db.paginate(pageNumber, pageSize, selectColumns, sql.toString(), params.toArray());
             if(paginate  == null){
                 renderJson(new PageResult<>(0, pageNumber, pageSize, new ArrayList<>()));
@@ -174,18 +174,32 @@ public class NewReportController extends CommonController {
         productionTotalVO.setBatchNo(record.getStr("task_no"));
         productionTotalVO.setSku(record.getStr("sku"));
         productionTotalVO.setFactoryName(record.getStr("factory_name"));
-        productionTotalVO.setItemName(record.getStr("item_name"));
         productionTotalVO.setProduceDate(DateUtil.format(record.getDate("produce_date"), "yyyy-MM-dd"));
-        productionTotalVO.setGuoDate(record.getStr("guo_date"));
+        productionTotalVO.setGuoDate(DateUtil.format(record.getDate("guo_time"),"yyyy-MM-dd HH:mm:ss"));
         productionTotalVO.setWorkshopName(record.getStr("workshop_name"));
-        //根据taskNo 和 Sku  查询数量
-        Long quantity = Db.queryLong("select count(id) quantity from jinzai_upload_master where task_no = ? and sku = ?", record.getStr("task_no"), record.getStr("sku"));
-        if(quantity == null){
-            quantity = 0L;
+        productionTotalVO.setQuantity(WxUtil.getInt("total_count", record));
+        try {
+            StringBuilder itemNameSql = new StringBuilder("select c.* from t_jz_device a");
+            itemNameSql.append(" inner join t_line_product b on a.id = b.line_id");
+            itemNameSql.append(" inner join t_jz_item c on b.product_id = c.product_id");
+            itemNameSql.append(" where a.device_no = ? and c.sku = ?");
+            Record first = Db.findFirst(itemNameSql.toString(), record.getStr("device_no"), record.getStr("sku"));
+            String itemName = "";
+            if(first != null){
+                itemName = first.getStr("item_name");
+            }
+            productionTotalVO.setItemName(itemName);
+        }catch (Exception e){
+            logger.error("查询品相名称异常:", e);
         }
-        productionTotalVO.setQuantity(quantity.intValue());
-        productionTotalVO.setCreateTime(DateUtil.format(record.getDate("create_time"), "yyyy-MM-dd HH:mm:ss"));
-        productionTotalVO.setUpdateTime(DateUtil.format(record.getDate("update_time"), "yyyy-MM-dd HH:mm:ss"));
+        //根据taskNo 和 Sku  查询数量
+//        Long quantity = Db.queryLong("select count(id) quantity from jinzai_upload_master where task_no = ? and sku = ?", record.getStr("task_no"), record.getStr("sku"));
+//        if(quantity == null){
+//            quantity = 0L;
+//        }
+//        productionTotalVO.setQuantity(quantity.intValue());
+//        productionTotalVO.setCreateTime(DateUtil.format(record.getDate("create_time"), "yyyy-MM-dd HH:mm:ss"));
+//        productionTotalVO.setUpdateTime(DateUtil.format(record.getDate("update_time"), "yyyy-MM-dd HH:mm:ss"));
         return productionTotalVO;
     }
 }

+ 31 - 8
src/main/java/com/qlm/controller/jinzai/ProdBatchController.java

@@ -70,17 +70,21 @@ public class ProdBatchController extends CommonController {
                 whereSql.append(" and upload_time = ?");
                 params.add(createTime);
             }
-//            if(StrKit.notBlank(factoryId)){
-//                whereSql.append(" and factory_id = ?");
-//                params.add(factoryId);
-//            }
+            if(StrKit.notBlank(factoryId)){
+                whereSql.append(" and device_no in (select device_no from t_jz_device where factory_id = ?)");
+                params.add(factoryId);
+            }
             if(StrKit.notBlank(productName)){
                 whereSql.append(" and pinxiang like ?");
                 params.add("%" + productName + "%");
             }
-//            if(StrKit.notBlank(wmsStatus)){
-//                whereSql.append(" and wms_status = ?");
-//            }
+            if(StrKit.notBlank(wmsStatus)){
+                if("1".equals(wmsStatus)){
+                    whereSql.append(" and upload_time is not null");
+                }else if("2".equals(wmsStatus)){
+                    whereSql.append(" and upload_time is null");
+                }
+            }
             whereSql.append(" order by create_time desc");
             Page<Record> paginate = Db.paginate(pageNumber, pageSize, "select *", whereSql.toString(), params.toArray());
             if(paginate  == null){
@@ -88,9 +92,28 @@ public class ProdBatchController extends CommonController {
                 return;
             }
             List<Record> list = paginate.getList();
+
+            Map<String,Record> recordMap = new HashMap<>();
+            String sql = "select a.device_no, b.factory_name, c.workshop_name from t_jz_device a left join t_factory b on a.factory_id = b.id left join t_workshop c on a.workshop_id = c.id";
+            List<Record> records = Db.find(sql);
+            if(CollUtil.isNotEmpty(records)){
+                recordMap = records.stream().collect(Collectors.toMap(record -> record.getStr("device_no"), record -> record));
+            }
             List<ProdTaskUploadRecordDto> prodTaskUploadRecordDtoList = new ArrayList<>();
             for (Record record : list) {
-                prodTaskUploadRecordDtoList.add(convertRecordToDto(record));
+                ProdTaskUploadRecordDto prodTaskUploadRecordDto = convertRecordToDto(record);
+                String factoryName = "";
+                String workshopName = "";
+                if(recordMap.containsKey(record.getStr("device_no"))){
+                    Record recordDetail = recordMap.get(record.getStr("device_no"));
+                    if(recordDetail != null){
+                        factoryName = recordDetail.getStr("factory_name");
+                        workshopName = recordDetail.getStr("workshop_name");
+                    }
+                }
+                prodTaskUploadRecordDto.setFactoryName(factoryName);
+                prodTaskUploadRecordDto.setLineName(workshopName);
+                prodTaskUploadRecordDtoList.add(prodTaskUploadRecordDto);
             }
             renderJson(new PageResult<>(paginate.getTotalRow(), pageNumber, pageSize, prodTaskUploadRecordDtoList));
         }catch (Exception e){

+ 0 - 16
src/main/webapp/page/jinzai/productionStatisticsReport.jsp

@@ -454,22 +454,6 @@
                 title: '生产数量',
                 align: 'center',
                 sortable: true
-            }, {
-                field: 'createTime',
-                title: '创建时间',
-                align: 'center',
-                sortable: true,
-                formatter: function (value) {
-                    return value ? value : '-';
-                }
-            }, {
-                field: 'updateTime',
-                title: '更新时间',
-                align: 'center',
-                sortable: true,
-                formatter: function (value) {
-                    return value ? value : '-';
-                }
             }, {
                 field: 'action',
                 title: '操作',

+ 1 - 2
src/main/webapp/page/jinzai/production_task_upload.jsp

@@ -135,8 +135,7 @@
                                 <select id="wmsStatus" class="form-control" style="width: 120px; flex-shrink: 0; margin-right: 10px; margin-bottom: 5px;">
                                     <option value="">全部</option>
                                     <option value="1">成功</option>
-                                    <option value="2">失败</option>
-                                    <option value="3">重试中</option>
+                                    <option value="2">上传中</option>
                                 </select>
                                 <button type="button" id="searchBtn" class="btn btn-success"
                                         onclick="search();return false;" style="margin-right: 5px; margin-bottom: 5px;">