From 2c2413760b6467bf62402dba7338bd3bbcbd7341 Mon Sep 17 00:00:00 2001 From: huang <1532065656@qq.com> Date: 星期二, 20 五月 2025 14:20:38 +0800 Subject: [PATCH] 添加产量报表功能页面 --- JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/TaskingLogServiceImpl.java | 185 +++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 182 insertions(+), 3 deletions(-) diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/TaskingLogServiceImpl.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/TaskingLogServiceImpl.java index fbdfe0d..242a9f5 100644 --- a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/TaskingLogServiceImpl.java +++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/TaskingLogServiceImpl.java @@ -3,8 +3,10 @@ import cn.smallbun.screw.core.util.CollectionUtils; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.yulichang.base.MPJBaseServiceImpl; +import com.mes.md.entity.KBBTJPDrawingBP; import com.mes.md.entity.KBBTProgramsOperationLogBP; import com.mes.md.entity.TaskingLog; +import com.mes.md.mapper.KBBTJPDrawingBPMapper; import com.mes.md.mapper.KBBTProgramsOperationLogBPMapper; import com.mes.md.mapper.TaskingLogMapper; import com.mes.md.service.TaskingLogService; @@ -12,9 +14,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; +import java.text.SimpleDateFormat; +import java.util.*; import java.util.stream.Collectors; /** @@ -31,12 +32,190 @@ @Autowired KBBTProgramsOperationLogBPMapper kBBTProgramsOperationLogBPMapper; + @Autowired + KBBTJPDrawingBPMapper kBBTJPDrawingBPMapper; + + @Override + public List<Map> selectMechanicalReport(int dayCount, Date startDate, Date endDate, String taskType, String operationRecord, String lineType) { + try { + // 鏋勫缓鏌ヨ鏉′欢 + QueryWrapper<TaskingLog> taskingWrapper = new QueryWrapper<>(); + + // 娣诲姞瀹屽伐鐘舵�佽繃婊� + taskingWrapper.eq("work_state", "瀹屽伐"); + + // 鏃堕棿鑼冨洿澶勭悊 + if (startDate != null && endDate != null) { + taskingWrapper.ge("operation_record_time", startDate) + .le("operation_record_time", endDate); + } else if (dayCount > 0) { + // 濡傛灉娌℃湁鏃堕棿鑼冨洿锛屼娇鐢ㄩ粯璁ょ殑dayCount + Calendar cal = Calendar.getInstance(); + cal.setTime(new Date()); + cal.set(Calendar.HOUR_OF_DAY, 0); + cal.set(Calendar.MINUTE, 0); + cal.set(Calendar.SECOND, 0); + cal.set(Calendar.MILLISECOND, 0); + cal.add(Calendar.DATE, 1 - dayCount); + Date defaultStartDate = cal.getTime(); + Date defaultEndDate = new Date(); + + taskingWrapper.ge("operation_record_time", defaultStartDate) + .le("operation_record_time", defaultEndDate); + } + + // 娣诲姞鍙�夋潯浠� + if (taskType != null && !taskType.isEmpty()) { + taskingWrapper.eq("task_type", taskType); + } + if (operationRecord != null && !operationRecord.isEmpty()) { + taskingWrapper.like("operation_record", operationRecord); + } + if (lineType != null && !lineType.isEmpty()) { + taskingWrapper.apply("operation_record REGEXP '.*[^0-9]" + lineType + "$'"); + } + + // 鎸夋椂闂存帓搴� + taskingWrapper.orderByDesc("operation_record_time"); + + // 鎵ц鏌ヨ + List<Map<String, Object>> taskingList = baseMapper.selectMaps(taskingWrapper); + + // 鐩存帴杩斿洖鏌ヨ缁撴灉 + return new ArrayList<>(taskingList); + } catch (Exception e) { + log.error("鏌ヨ寮傚父", e); + throw e; + } + } public List<TaskingLog> findTaskingLog(){ return new ArrayList<TaskingLog>(); } /** + * 鏌ヨ dayCount 澶� 瀹屽伐鏁伴噺-鍒嗙嚎璺� + */ + @Override + public List<Map> selectTaskingLog(int dayCount) { + Calendar cal = Calendar.getInstance(); + //璁剧疆褰撳墠鏃堕棿 + cal.setTime(new Date()); + cal.set(Calendar.HOUR_OF_DAY, 0); + cal.set(Calendar.MINUTE, 0); + cal.set(Calendar.SECOND, 0); + cal.set(Calendar.MILLISECOND, 0); + cal.add(Calendar.DATE, 1-dayCount); + Date startDate = cal.getTime(); + + QueryWrapper<KBBTJPDrawingBP> queryWrapper = new QueryWrapper<>(); + queryWrapper.select("CAST(PlanDate AS DATE) AS CreateDate,isNull(sum(task_quantity),0) as task_quantity_sum") + .gt("PlanDate",startDate).groupBy("CAST(PlanDate AS DATE)") + .orderByAsc("CAST(PlanDate AS DATE)"); + List<Map> list=kBBTJPDrawingBPMapper.selectMaps((QueryWrapper)queryWrapper); + + List<Map<String, Object>> listTasking1 = baseMapper.selectMaps(new QueryWrapper<TaskingLog>() + .select("task_type, operation_record, operation_mode, DATE_FORMAT(operation_record_time, '%Y-%m-%d') as operation_record_time, count(*) as count") + .eq("task_type", "瀹氬埗") + .eq("operation_record", "鏃嬭浆1") + .eq("operation_mode", "缁撴潫") + .gt("operation_record_time", startDate) + .groupBy("task_type", "operation_record", "operation_mode", "DATE_FORMAT(operation_record_time, '%Y-%m-%d')") + .orderByAsc("DATE_FORMAT(operation_record_time, '%Y-%m-%d')")); + List<Map<String, Object>> listTasking2 = baseMapper.selectMaps(new QueryWrapper<TaskingLog>() + .select("task_type,operation_record,operation_mode,DATE_FORMAT(operation_record_time, '%Y-%m-%d') as operation_record_time,count(1) as count") + .eq("task_type", "瀹氬埗") + .eq("operation_record", "鏃嬭浆2") + .eq("operation_mode", "缁撴潫") + .gt("operation_record_time", startDate) + .groupBy("task_type", "operation_record", "operation_mode", "DATE_FORMAT(operation_record_time, '%Y-%m-%d')") + .orderByAsc("DATE_FORMAT(operation_record_time, '%Y-%m-%d')")); + + //鏍囧噯涓婄墖璁板綍 + List<Map<String, Object>> loadTaskingList1 = baseMapper.selectMaps(new QueryWrapper<TaskingLog>() + .select("task_type, operation_record, operation_mode, DATE_FORMAT(operation_record_time, '%Y-%m-%d') as operation_record_time, count(*) as count") + .eq("task_type", "鏍囧噯") + .eq("operation_record", "涓婄墖1") + .eq("operation_mode", "缁撴潫") + .gt("operation_record_time", startDate) + .groupBy("task_type", "operation_record", "operation_mode", "DATE_FORMAT(operation_record_time, '%Y-%m-%d')") + .orderByAsc("DATE_FORMAT(operation_record_time, '%Y-%m-%d')")); + List<Map<String, Object>> loadTaskingList2 = baseMapper.selectMaps(new QueryWrapper<TaskingLog>() + .select("task_type, operation_record, operation_mode, DATE_FORMAT(operation_record_time, '%Y-%m-%d') as operation_record_time, count(*) as count") + .eq("task_type", "鏍囧噯") + .eq("operation_record", "涓婄墖2") + .eq("operation_mode", "缁撴潫") + .gt("operation_record_time", startDate) + .groupBy("task_type", "operation_record", "operation_mode", "DATE_FORMAT(operation_record_time, '%Y-%m-%d')") + .orderByAsc("DATE_FORMAT(operation_record_time, '%Y-%m-%d')")); + + // 瀛樺偍姣忔潯绾胯矾鐨勬暟鎹� + Map<String, Map<String, Integer>> lineDataMap = new HashMap<>(); + lineDataMap.put("line1", new HashMap<>()); + lineDataMap.put("line2", new HashMap<>()); + + // 澶勭悊绗竴鏉$嚎璺暟鎹� + // 澶勭悊鏃嬭浆1缁撴潫璁板綍 + for (Map<String, Object> map : listTasking1) { + String date = map.get("operation_record_time").toString(); + int count = Integer.parseInt(map.get("count").toString()); + Map<String, Integer> line1Map = lineDataMap.get("line1"); + line1Map.put(date, line1Map.getOrDefault(date, 0) + count); + } + // 澶勭悊绾胯矾1涓婄墖璁板綍 + for (Map<String, Object> map : loadTaskingList1) { + String date = map.get("operation_record_time").toString(); + int count = Integer.parseInt(map.get("count").toString()); + Map<String, Integer> line1Map = lineDataMap.get("line1"); + line1Map.put(date, line1Map.getOrDefault(date, 0) + count); + } + + // 澶勭悊绗簩鏉$嚎璺暟鎹� + // 澶勭悊鏃嬭浆2缁撴潫璁板綍 + for (Map<String, Object> map : listTasking2) { + String date = map.get("operation_record_time").toString(); + int count = Integer.parseInt(map.get("count").toString()); + Map<String, Integer> line2Map = lineDataMap.get("line2"); + line2Map.put(date, line2Map.getOrDefault(date, 0) + count); + } + // 澶勭悊绾胯矾2涓婄墖璁板綍 + for (Map<String, Object> map : loadTaskingList2) { + String date = map.get("operation_record_time").toString(); + int count = Integer.parseInt(map.get("count").toString()); + Map<String, Integer> line2Map = lineDataMap.get("line2"); + line2Map.put(date, line2Map.getOrDefault(date, 0) + count); + } + + + //log.info("瀹㈡埛琛ㄨ鍒掗噺锛歿},{},{}",list,listTasking1,listTasking2); + List<Map> Result=new ArrayList<>(); + for (int i=0;i<dayCount;i++){ + Date thisdate=cal.getTime(); + cal.add(Calendar.DATE, 1); + Map thisMap=new HashMap<>(); + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + String dateString = sdf.format(thisdate); + thisMap.put("date",dateString); + + // 鑾峰彇涓�绾挎暟鎹� + thisMap.put("line1", lineDataMap.get("line1").getOrDefault(dateString, 0)); + + // 鑾峰彇浜岀嚎鏁版嵁 + thisMap.put("line2", lineDataMap.get("line2").getOrDefault(dateString, 0)); + + if (list.size()>0 && list.get(0).get("CreateDate").toString().equals(dateString)){ + thisMap.put("plan",list.get(0).get("task_quantity_sum")); + list.remove(0); + }else{ + thisMap.put("plan",0); + } + Result.add(thisMap); + } + + return Result; + } + /** * 鍥炰紶鎶ュ伐鏁版嵁+ 璁惧鐜荤拑杩囩墖璁板綍缁� 涔濈墽 */ @Override -- Gitblit v1.8.0