From f59ddd32c8b27b7f57b2a31c10e4e7e24c25a552 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=96=B9=E4=BA=AE?= Date: Fri, 26 Dec 2025 17:09:00 +0800 Subject: [PATCH] =?UTF-8?q?=E9=BB=91=E5=90=8D=E5=8D=95=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=E6=97=B6=E9=97=B4=E9=97=AE=E9=A2=98=20=E6=9C=AA=E6=89=93?= =?UTF-8?q?=E5=8D=A1=E5=8F=AF=E7=9B=B4=E6=8E=A5=E7=A6=BB=E5=9C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bonus/bmw/mapper/PmWorkerExitMapper.java | 2 ++ .../impl/BmWorkerBlackServiceImpl.java | 26 +++++++++++++++++++ .../service/impl/PmWorkerExitServiceImpl.java | 8 ++++-- .../resources/mapper/bmw/KqCmdTaskMapper.xml | 4 +-- .../mapper/bmw/PmWorkerExitMapper.xml | 13 ++++++++++ 5 files changed, 49 insertions(+), 4 deletions(-) diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/mapper/PmWorkerExitMapper.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/mapper/PmWorkerExitMapper.java index 1c1a33c..bd60b24 100644 --- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/mapper/PmWorkerExitMapper.java +++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/mapper/PmWorkerExitMapper.java @@ -60,4 +60,6 @@ public interface PmWorkerExitMapper { List selectWorkListByProId(PmWorkerDto o); List getWorkerListByPhone(PmWorkerDto o); + + int selectAttByEinTimeAfter(@Param("workerId") Integer workerId,@Param("proId") Integer proId); } diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/BmWorkerBlackServiceImpl.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/BmWorkerBlackServiceImpl.java index c8140d4..86ed0f4 100644 --- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/BmWorkerBlackServiceImpl.java +++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/BmWorkerBlackServiceImpl.java @@ -21,9 +21,12 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import javax.validation.Validator; import java.time.LocalDate; +import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeFormatterBuilder; import java.time.format.DateTimeParseException; import java.util.List; +import java.util.Locale; @Service public class BmWorkerBlackServiceImpl implements BmWorkerBlackService{ @@ -104,6 +107,8 @@ public class BmWorkerBlackServiceImpl implements BmWorkerBlackService{ continue; } try { + worker.setStartTime(convertToString(worker.getStartTime())); + worker.setEndTime(convertToString(worker.getEndTime())); // 验证是否存在这个用户 // 添加员工时,判断员工编号是否已存在 BmWorkerBlack w = mapper.getWorkerBlackByNumber(worker.getIdNumber()); @@ -185,5 +190,26 @@ public class BmWorkerBlackServiceImpl implements BmWorkerBlackService{ } + public static String convertToString(String dateStr) { + if (dateStr == null || dateStr.trim().isEmpty()) { + return null; // 或返回空字符串 "" + } + if (!dateStr.contains("CST")) { + return dateStr; + } + // 将 CST 替换为明确的时区偏移(中国标准时间 = UTC+8) + String fixed = dateStr.replace("CST", "GMT+08:00"); + // 构建解析格式(注意:必须用英文 Locale) + DateTimeFormatter formatter = new DateTimeFormatterBuilder() + .parseCaseInsensitive() + .appendPattern("EEE MMM dd HH:mm:ss ") + .appendZoneOrOffsetId() + .appendPattern(" yyyy") + .toFormatter(Locale.ENGLISH); + // 解析为 ZonedDateTime + ZonedDateTime zdt = ZonedDateTime.parse(fixed, formatter); + // 提取 LocalDate 并格式化为 "yyyy-MM-dd" + return zdt.toLocalDate().toString(); // toString() 默认就是 "2023-01-01" + } } diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/PmWorkerExitServiceImpl.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/PmWorkerExitServiceImpl.java index e88dec2..e6ccfb8 100644 --- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/PmWorkerExitServiceImpl.java +++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/PmWorkerExitServiceImpl.java @@ -60,7 +60,9 @@ public class PmWorkerExitServiceImpl implements PmWorkerExitService { Boolean isShangHai = mapper.getProLocationByProId(record.getProId()); //查询合同工资卡是否齐全 List list = mapper.getContractIdAndWageCard(record.getWorkerId(),record.getProId()); - if(Integer.parseInt(list.get(0).getValue())>0 && Integer.parseInt(list.get(1).getValue())>0){ + //没打过卡可以直接离场 20251226 + int x = mapper.selectAttByEinTimeAfter(record.getWorkerId(),record.getProId()); + if(x ==0 || (Integer.parseInt(list.get(0).getValue())>0 && Integer.parseInt(list.get(1).getValue())>0)){ contractService.deleteByWorkerId(record.getWorkerId(),record.getProId()); //查询是不是上海内最后一个在场工程(一定要放在删除实时在场前查) int number = mapper.getEinProNum(record.getWorkerId()); @@ -124,7 +126,9 @@ public class PmWorkerExitServiceImpl implements PmWorkerExitService { for (PmWorkerDto bean : list) { //查询合同工资卡是否齐全 List listData = mapper.getContractIdAndWageCard(bean.getWorkerId(),bean.getProId()); - if("1".equals(listData.get(0).getValue()) && "1".equals(listData.get(1).getValue())) { + //没打过卡可以直接离场 20251226 + int x = mapper.selectAttByEinTimeAfter(bean.getWorkerId(),bean.getProId()); + if(x==0 || ("1".equals(listData.get(0).getValue()) && "1".equals(listData.get(1).getValue()))) { //查询是否上海外 Boolean isShangHai = mapper.getProLocationByProId(bean.getProId()); int i = contractService.deleteByWorkerId(bean.getWorkerId(),bean.getProId()); diff --git a/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/KqCmdTaskMapper.xml b/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/KqCmdTaskMapper.xml index 7250028..7efda76 100644 --- a/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/KqCmdTaskMapper.xml +++ b/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/KqCmdTaskMapper.xml @@ -27,7 +27,7 @@ kul.user_phone as userPhoto, kul.dev_code as devCode,kul.update_time updateTime from kq_user_list kul - left join pm_worker pw on pw.id=kul.user_id + LEFT JOIN pm_worker pw ON pw.id = kul.user_id and pw.name = kul.user_name where kul.dev_code = #{deviceCode} @@ -43,7 +43,7 @@ and kul.user_id=#{userId} - order by CAST(kul.user_id AS SIGNED) asc + order by CAST(kul.user_id AS SIGNED) asc + +