diff --git a/klp-ui/src/views/crm/components/CoilTable.vue b/klp-ui/src/views/crm/components/CoilTable.vue
index 2b7eb6ffc..134399869 100644
--- a/klp-ui/src/views/crm/components/CoilTable.vue
+++ b/klp-ui/src/views/crm/components/CoilTable.vue
@@ -220,7 +220,6 @@ export default {
this.labelRender.visible = true;
this.labelRender.data = {
...row,
- itemName: itemName,
updateTime: row.updateTime?.split(' ')[0] || '',
};
},
diff --git a/klp-ui/src/views/wms/anneal/performance/report.vue b/klp-ui/src/views/wms/anneal/performance/report.vue
index 1e1499b5f..08c43731f 100644
--- a/klp-ui/src/views/wms/anneal/performance/report.vue
+++ b/klp-ui/src/views/wms/anneal/performance/report.vue
@@ -21,9 +21,12 @@
-
+
+
+
+
查询
重置
@@ -56,6 +59,7 @@
+
@@ -100,9 +104,12 @@ export default {
queryParams: {
startTime,
endTime,
+ currentCoilNo: undefined,
targetFurnaceId: undefined,
planNo: undefined,
enterCoilNo: undefined,
+ warehouseId: undefined,
+ coilWarehouseId: undefined,
},
summary: {},
detailList: [],
@@ -142,7 +149,6 @@ export default {
}
}) || []
}).flat();
- console.log(this.detailList);
this.loading = false;
}).catch(() => {
this.loading = false;
diff --git a/klp-ui/src/views/wms/hrm/attendance/sync.vue b/klp-ui/src/views/wms/hrm/attendance/sync.vue
index 821b4a853..48630a642 100644
--- a/klp-ui/src/views/wms/hrm/attendance/sync.vue
+++ b/klp-ui/src/views/wms/hrm/attendance/sync.vue
@@ -86,7 +86,7 @@
- {{ parseTime(scope.row.checktime, '{y}-{m}-{d}') }}
+ {{ parseTime(scope.row.checktime, '{y}-{m}-{d} {h}:{i}:{s}') }}
diff --git a/klp-wms/src/main/java/com/klp/domain/bo/WmsAnnealPerformanceBo.java b/klp-wms/src/main/java/com/klp/domain/bo/WmsAnnealPerformanceBo.java
index f2e94362d..b57d97a30 100644
--- a/klp-wms/src/main/java/com/klp/domain/bo/WmsAnnealPerformanceBo.java
+++ b/klp-wms/src/main/java/com/klp/domain/bo/WmsAnnealPerformanceBo.java
@@ -35,6 +35,9 @@ public class WmsAnnealPerformanceBo {
// 当前钢卷号
private String currentCoilNo;
- // 逻辑库区id
+ // 逻辑库区id(出炉时的逻辑库区,对应wms_furnace_plan_coil.logic_warehouse_id)
private Long warehouseId;
+
+ // 钢卷所在库区id(钢卷本身的逻辑库区,对应wms_material_coil.warehouse_id)
+ private Long coilWarehouseId;
}
diff --git a/klp-wms/src/main/java/com/klp/service/impl/AttendanceRecordsServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/AttendanceRecordsServiceImpl.java
index 9d1f074f1..af9a5b4c9 100644
--- a/klp-wms/src/main/java/com/klp/service/impl/AttendanceRecordsServiceImpl.java
+++ b/klp-wms/src/main/java/com/klp/service/impl/AttendanceRecordsServiceImpl.java
@@ -15,6 +15,8 @@ import com.klp.domain.bo.AttendanceRecordsBo;
import com.klp.domain.vo.AttendanceRecordsVo;
import com.klp.domain.AttendanceRecords;
import com.klp.mapper.AttendanceRecordsMapper;
+import com.klp.mapper.WmsEmployeeInfoMapper;
+import com.klp.domain.WmsEmployeeInfo;
import com.klp.service.IAttendanceRecordsService;
import javax.servlet.http.HttpServletResponse;
@@ -35,6 +37,7 @@ public class AttendanceRecordsServiceImpl implements IAttendanceRecordsService {
private static final Logger log = LoggerFactory.getLogger(AttendanceRecordsServiceImpl.class);
private final AttendanceRecordsMapper baseMapper;
+ private final WmsEmployeeInfoMapper wmsEmployeeInfoMapper;
@Override
public AttendanceRecordsVo queryById(Integer id) {
@@ -134,6 +137,23 @@ public class AttendanceRecordsServiceImpl implements IAttendanceRecordsService {
lqw.orderByAsc(AttendanceRecords::getPin).orderByAsc(AttendanceRecords::getChecktime);
List records = baseMapper.selectList(lqw);
+ // 从 wms_employee_info 获取正确的部门(打卡机里的部门可能不准)
+ Set names = records.stream()
+ .map(AttendanceRecords::getEname)
+ .filter(StringUtils::isNotBlank)
+ .collect(Collectors.toSet());
+ final Map nameDeptMap = new HashMap<>();
+ if (!names.isEmpty()) {
+ List empList = wmsEmployeeInfoMapper.selectList(
+ Wrappers.lambdaQuery()
+ .select(WmsEmployeeInfo::getName, WmsEmployeeInfo::getDept)
+ .in(WmsEmployeeInfo::getName, names)
+ );
+ empList.stream()
+ .filter(e -> StringUtils.isNotBlank(e.getName()) && StringUtils.isNotBlank(e.getDept()))
+ .forEach(e -> nameDeptMap.put(e.getName(), e.getDept()));
+ }
+
// 3. 按员工分组,再按日期分组
// key: pin, value: 员工信息 + 按天分组的打卡记录
LinkedHashMap employeeMap = new LinkedHashMap<>();
@@ -145,7 +165,7 @@ public class AttendanceRecordsServiceImpl implements IAttendanceRecordsService {
EmployeeAttendance e = new EmployeeAttendance();
e.pin = r.getPin();
e.ename = r.getEname();
- e.deptname = r.getDeptname();
+ e.deptname = nameDeptMap.getOrDefault(r.getEname(), r.getDeptname());
e.dailyRecords = new TreeMap<>();
return e;
});
diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsAnnealPerformanceServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsAnnealPerformanceServiceImpl.java
index e1fcaa204..59917f106 100644
--- a/klp-wms/src/main/java/com/klp/service/impl/WmsAnnealPerformanceServiceImpl.java
+++ b/klp-wms/src/main/java/com/klp/service/impl/WmsAnnealPerformanceServiceImpl.java
@@ -118,7 +118,16 @@ public class WmsAnnealPerformanceServiceImpl implements IWmsAnnealPerformanceSer
continue;
}
- // 为每个钢卷设置逻辑库区ID、层级和钢卷信息
+ // 设置出炉时的逻辑库区到detail级别(取第一个非空的logicWarehouseId)
+ for (WmsFurnacePlanCoil planCoil : planCoils) {
+ if (planCoil.getLogicWarehouseId() != null) {
+ detail.setLogicWarehouseId(planCoil.getLogicWarehouseId());
+ detail.setLogicWarehouseName(logicWarehouseNameMap.get(planCoil.getLogicWarehouseId()));
+ break;
+ }
+ }
+
+ // 为每个钢卷设置炉火层级和钢卷信息(不覆盖钢卷本身的逻辑库区)
List coilVos = new ArrayList<>();
for (WmsFurnacePlanCoil planCoil : planCoils) {
Long coilId = planCoil.getCoilId();
@@ -132,11 +141,8 @@ public class WmsAnnealPerformanceServiceImpl implements IWmsAnnealPerformanceSer
coilVo.setCoilId(coilId);
}
- // 设置逻辑库区ID和层级(每个钢卷可能不同)
- if (planCoil.getLogicWarehouseId() != null) {
- coilVo.setWarehouseId(planCoil.getLogicWarehouseId());
- coilVo.setWarehouseName(logicWarehouseNameMap.get(planCoil.getLogicWarehouseId()));
- }
+ // 保持钢卷本身的warehouseId/warehouseName不变,不覆盖
+
// 设置炉火层级
coilVo.setFurnaceLevel(planCoil.getFurnaceLevel());
@@ -153,9 +159,10 @@ public class WmsAnnealPerformanceServiceImpl implements IWmsAnnealPerformanceSer
continue; // 跳过不匹配的钢卷
}
}
- if (bo.getWarehouseId() != null) {
+ // 钢卷本身的逻辑库区筛选(coilVo.warehouseId保持不变)
+ if (bo.getCoilWarehouseId() != null) {
if (coilVo.getWarehouseId() == null ||
- !coilVo.getWarehouseId().equals(bo.getWarehouseId())) {
+ !coilVo.getWarehouseId().equals(bo.getCoilWarehouseId())) {
continue; // 跳过不匹配的钢卷
}
}
@@ -178,8 +185,11 @@ public class WmsAnnealPerformanceServiceImpl implements IWmsAnnealPerformanceSer
// 移除没有钢卷的计划
details.removeIf(detail -> detail.getCoils() == null || detail.getCoils().isEmpty());
- // 如果传入了enterCoilNo筛选条件,重新计算统计信息
- if (bo.getEnterCoilNo() != null && !bo.getEnterCoilNo().isEmpty()) {
+ // 如果传入了筛选条件,重新计算统计信息
+ if ((bo.getEnterCoilNo() != null && !bo.getEnterCoilNo().isEmpty())
+ || (bo.getCurrentCoilNo() != null && !bo.getCurrentCoilNo().isEmpty())
+ || bo.getWarehouseId() != null
+ || bo.getCoilWarehouseId() != null) {
summary.setPlanCount(filteredPlanCount);
summary.setCoilCount(filteredCoilCount);
summary.setTotalWeight(filteredTotalWeight);
diff --git a/klp-wms/src/main/resources/mapper/WmsAnnealPerformanceMapper.xml b/klp-wms/src/main/resources/mapper/WmsAnnealPerformanceMapper.xml
index fea6bdbf7..7f9831ef7 100644
--- a/klp-wms/src/main/resources/mapper/WmsAnnealPerformanceMapper.xml
+++ b/klp-wms/src/main/resources/mapper/WmsAnnealPerformanceMapper.xml
@@ -20,12 +20,17 @@
AND mc.enter_coil_no LIKE CONCAT('%', #{enterCoilNo}, '%')
-
+
AND mc.current_coil_no LIKE CONCAT('%', #{currentCoilNo}, '%')
+
- AND mc.warehouse_id = #{warehouseId}
+ AND pc.logic_warehouse_id = #{warehouseId}
+
+
+
+ AND mc.warehouse_id = #{coilWarehouseId}
@@ -49,7 +54,7 @@
p.end_time AS endTime
FROM wms_furnace_plan p
LEFT JOIN wms_furnace f ON f.furnace_id = p.target_furnace_id
-
+
INNER JOIN wms_furnace_plan_coil pc ON pc.plan_id = p.plan_id AND pc.del_flag = 0
INNER JOIN wms_material_coil mc ON mc.coil_id = pc.coil_id AND mc.del_flag = 0