Commit 767fdec0c333389c1ac1c63831f60fc140a68651
1 parent
4280fcf0
蓝斯二期
Showing
7 changed files
with
85 additions
and
20 deletions
Bsth-admin/src/main/java/com/ruoyi/in/domain/SignIn.java
| ... | ... | @@ -98,6 +98,9 @@ public class SignIn extends BaseEntity { |
| 98 | 98 | @ApiModelProperty("异常类型") |
| 99 | 99 | private Integer exType; |
| 100 | 100 | |
| 101 | + @ApiModelProperty("异常类型") | |
| 102 | + private Integer exType1; | |
| 103 | + | |
| 101 | 104 | /***排班信息ID*/ |
| 102 | 105 | @Excel(name = "排班信息ID") |
| 103 | 106 | private java.lang.Long schedulingId; | ... | ... |
Bsth-admin/src/main/java/com/ruoyi/in/service/SignInServiceV1.java
| ... | ... | @@ -15,4 +15,6 @@ public interface SignInServiceV1 extends IService<SignInV1> { |
| 15 | 15 | AjaxResult addSignInOffice(SignIn signIn); |
| 16 | 16 | |
| 17 | 17 | CalDriverScheduling findSchedulingByDateTime(String job, Date date,Integer type); |
| 18 | + | |
| 19 | + boolean updateImage(SignInV1 signIn); | |
| 18 | 20 | } | ... | ... |
Bsth-admin/src/main/java/com/ruoyi/in/service/impl/SignInServiceV1Impl.java
| ... | ... | @@ -2,6 +2,7 @@ package com.ruoyi.in.service.impl; |
| 2 | 2 | |
| 3 | 3 | import cn.hutool.core.convert.Convert; |
| 4 | 4 | import com.alibaba.fastjson2.JSON; |
| 5 | +import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper; | |
| 5 | 6 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| 6 | 7 | import com.ruoyi.common.ConstDriverProperties; |
| 7 | 8 | import com.ruoyi.common.ConstSignInConstSignInProperties; |
| ... | ... | @@ -29,6 +30,7 @@ import com.ruoyi.in.domain.SignIn; |
| 29 | 30 | import com.ruoyi.in.domain.SignInV1; |
| 30 | 31 | import com.ruoyi.in.mapper.SignInMapper; |
| 31 | 32 | import com.ruoyi.in.mapper.SignInMapperV1; |
| 33 | +import com.ruoyi.in.service.ISignInService; | |
| 32 | 34 | import com.ruoyi.in.service.SignInServiceV1; |
| 33 | 35 | import com.ruoyi.scheduling.domain.DriverSchedulingV1; |
| 34 | 36 | import com.ruoyi.scheduling.service.SchedulingServiceV1; |
| ... | ... | @@ -84,6 +86,8 @@ public class SignInServiceV1Impl extends ServiceImpl<SignInMapperV1, SignInV1> i |
| 84 | 86 | private UploadUtil uploadUtil; |
| 85 | 87 | @Autowired |
| 86 | 88 | private LinggangSignInResourceService signInResourceService; |
| 89 | + @Autowired | |
| 90 | + private ISignInService signInService; | |
| 87 | 91 | |
| 88 | 92 | private static final FastDateFormat HHMM = FastDateFormat.getInstance("HH:mm"); |
| 89 | 93 | |
| ... | ... | @@ -228,7 +232,6 @@ public class SignInServiceV1Impl extends ServiceImpl<SignInMapperV1, SignInV1> i |
| 228 | 232 | signInV1.setSignIn(signIn); |
| 229 | 233 | |
| 230 | 234 | |
| 231 | - | |
| 232 | 235 | return saveData(signIn, scheduling, calDriverScheduling, driver, signInV1); |
| 233 | 236 | } |
| 234 | 237 | |
| ... | ... | @@ -245,16 +248,29 @@ public class SignInServiceV1Impl extends ServiceImpl<SignInMapperV1, SignInV1> i |
| 245 | 248 | } |
| 246 | 249 | } |
| 247 | 250 | |
| 251 | + @Override | |
| 252 | + public boolean updateImage(SignInV1 signIn) { | |
| 253 | + LambdaUpdateChainWrapper<SignIn> wrapper = new LambdaUpdateChainWrapper<>(signInMapper); | |
| 254 | + wrapper.set(SignIn::getImage, signIn.getImage()).eq(SignIn::getId, signIn.getId()); | |
| 255 | + | |
| 256 | + return wrapper.update(); | |
| 257 | + } | |
| 258 | + | |
| 248 | 259 | private AjaxResult saveData(SignIn signIn, DriverScheduling scheduling, CalDriverScheduling calDriverScheduling, Driver driver, SignInV1 signInV1) { |
| 249 | 260 | String videoContent = signIn.getImage(); |
| 250 | 261 | signIn.setImage(null); |
| 262 | + | |
| 263 | + signIn.setExType1(signIn.getExType()); | |
| 264 | + Integer type = Objects.isNull(signIn.getExType()) ? 0 : signIn.getExType() > 0 ? 1 : 0; | |
| 265 | + signIn.setExType(type); | |
| 266 | + | |
| 251 | 267 | signInMapper.insertSignIn(signIn); |
| 252 | 268 | |
| 253 | 269 | if (org.apache.commons.lang3.StringUtils.isNotEmpty(signIn.getImage())) { |
| 254 | 270 | |
| 255 | 271 | signIn.setImage(null); |
| 256 | 272 | } |
| 257 | - if(org.apache.commons.lang3.StringUtils.isNotEmpty(videoContent)){ | |
| 273 | + if (org.apache.commons.lang3.StringUtils.isNotEmpty(videoContent)) { | |
| 258 | 274 | StringBuilder builder = new StringBuilder(); |
| 259 | 275 | builder.append("sign"); |
| 260 | 276 | builder.append(File.separator); |
| ... | ... | @@ -282,7 +298,7 @@ public class SignInServiceV1Impl extends ServiceImpl<SignInMapperV1, SignInV1> i |
| 282 | 298 | signInV1.setId(signInV1.getId()); |
| 283 | 299 | // 更新考勤 |
| 284 | 300 | if (Objects.nonNull(calDriverScheduling)) { |
| 285 | - schedulingService.computedSignInBySignIn(scheduling, calDriverScheduling.getIndex(), signIn, true); | |
| 301 | + schedulingService.computedSignInBySignIn(scheduling, calDriverScheduling.getIndex(), signIn, true, signInService); | |
| 286 | 302 | } |
| 287 | 303 | |
| 288 | 304 | if (TempCache.checkJobCodeExist(signIn.getJobCode())) { | ... | ... |
Bsth-admin/src/main/java/com/ruoyi/service/BigViewServiceV1.java
| ... | ... | @@ -32,6 +32,13 @@ public interface BigViewServiceV1 { |
| 32 | 32 | AjaxResult getAjaxResultByDriverSignInfo(SignIn signIn, SignInV1 signInV1, DriverScheduling driverScheduling); |
| 33 | 33 | |
| 34 | 34 | /*** |
| 35 | + * 是否正常 | |
| 36 | + * @param signIn | |
| 37 | + * @return | |
| 38 | + */ | |
| 39 | + boolean isNormal(SignIn signIn); | |
| 40 | + | |
| 41 | + /*** | |
| 35 | 42 | * 是否是早签 |
| 36 | 43 | * @author liujun |
| 37 | 44 | * @date 2024/9/25 14:51 | ... | ... |
Bsth-admin/src/main/java/com/ruoyi/service/SchedulingService.java
| ... | ... | @@ -8,6 +8,7 @@ import com.ruoyi.domain.scheduling.LinggangScheduling; |
| 8 | 8 | import com.ruoyi.driver.mapper.DriverSchedulingMapper; |
| 9 | 9 | import com.ruoyi.in.domain.SignIn; |
| 10 | 10 | import com.ruoyi.in.mapper.SignInMapper; |
| 11 | +import com.ruoyi.in.service.ISignInService; | |
| 11 | 12 | import com.ruoyi.in.service.impl.SignInServiceImpl; |
| 12 | 13 | import com.ruoyi.pojo.DriverSignInRecommendation; |
| 13 | 14 | import com.ruoyi.pojo.GlobalIndex; |
| ... | ... | @@ -138,7 +139,7 @@ public class SchedulingService { |
| 138 | 139 | * |
| 139 | 140 | * @param signIn |
| 140 | 141 | */ |
| 141 | - public void computedSignInBySignIn(DriverScheduling driverScheduling, int index, SignIn signIn, boolean isNew) { | |
| 142 | + public void computedSignInBySignIn(DriverScheduling driverScheduling, int index, SignIn signIn, boolean isNew, ISignInService signInService) { | |
| 142 | 143 | // 无排班不记录不在考勤表不更新 |
| 143 | 144 | if (Objects.isNull(driverScheduling)) { |
| 144 | 145 | return; |
| ... | ... | @@ -147,22 +148,41 @@ public class SchedulingService { |
| 147 | 148 | // 更新最新的签到记录判断是否需要更新考勤 |
| 148 | 149 | // 记录为空直接插入记录 |
| 149 | 150 | if (Objects.isNull(driverScheduling.getSignInId())) { |
| 150 | - schedulingMapper.updateRoster(driverScheduling, signIn.getId(), signIn.getExType(), signIn.getCreateTime(), remark, signIn.getType(), signIn.getAlcoholFlag(), signIn.getAlcoholIntake()); | |
| 151 | - // 更新缓存 | |
| 152 | - nowSchedulingCache.updateCacheByJobCode(remark, ConstDateUtil.formatDate(driverScheduling.getScheduleDate()), index, signIn, isNew, driverScheduling); | |
| 153 | - } | |
| 154 | - // 之前的无效 | |
| 155 | - else if (!SIGN_NO_EX_NUM.equals(driverScheduling.getExType())) { | |
| 156 | - schedulingMapper.updateRoster(driverScheduling, signIn.getId(), signIn.getExType(), signIn.getCreateTime(), remark, signIn.getType(), signIn.getAlcoholFlag(), signIn.getAlcoholIntake()); | |
| 157 | - nowSchedulingCache.updateCacheByJobCode(remark, ConstDateUtil.formatDate(driverScheduling.getScheduleDate()), index, signIn, isNew, driverScheduling); | |
| 158 | - } | |
| 159 | - // 之前的有效 | |
| 160 | - else { | |
| 161 | - handlerRecord(driverScheduling, signIn, index, isNew); | |
| 151 | + changeScheduling(driverScheduling,signIn,remark,index,isNew); | |
| 152 | + }else{ | |
| 153 | + SignIn sourceSign = signInService.selectSignInById(driverScheduling.getSignInId()); | |
| 154 | + if(Objects.isNull(sourceSign)){ | |
| 155 | + changeScheduling(driverScheduling,signIn,remark,index,isNew); | |
| 156 | + }else if(bigViewServiceV1.isEarly(sourceSign) && bigViewServiceV1.isNormal(signIn)){ | |
| 157 | + //第一次是早签,第二次正常签到,覆盖原来的数据。 | |
| 158 | + changeScheduling(driverScheduling,signIn,remark,index,isNew); | |
| 159 | + }else if(bigViewServiceV1.isNormal(sourceSign) && bigViewServiceV1.isSignStatusWineEnum(signIn)){ | |
| 160 | + //第一次正常签到,第二次酒驾,覆盖原来的数据。 | |
| 161 | + changeScheduling(driverScheduling,signIn,remark,index,isNew); | |
| 162 | + }else if(!bigViewServiceV1.isEarly(sourceSign) && !bigViewServiceV1.isSignStatusDelayEnum(sourceSign) && | |
| 163 | + !bigViewServiceV1.isSignStatusWineEnum(sourceSign) && bigViewServiceV1.isSignStatusWineEnum(signIn)){ | |
| 164 | + //第一次正常签到,第二次酒驾,覆盖原来的数据。 | |
| 165 | + changeScheduling(driverScheduling,signIn,remark,index,isNew); | |
| 166 | + }else if(!bigViewServiceV1.isEarly(sourceSign) && !bigViewServiceV1.isSignStatusDelayEnum(sourceSign) && | |
| 167 | + bigViewServiceV1.isSignStatusWineEnum(sourceSign) && bigViewServiceV1.isNormal(signIn)){ | |
| 168 | + //第一次在签到时间范围内签到且酒驾,第二次正常,覆盖原来的数据。 | |
| 169 | + changeScheduling(driverScheduling,signIn,remark,index,isNew); | |
| 170 | + }else if(bigViewServiceV1.isSignStatusDelayEnum(sourceSign) && bigViewServiceV1.isSignStatusWineEnum(sourceSign) ){ | |
| 171 | + //第一次迟到签到且酒驾,第二次测试覆盖原来的数据。 | |
| 172 | + changeScheduling(driverScheduling,signIn,remark,index,isNew); | |
| 173 | + }else{ | |
| 174 | + handlerRecord(driverScheduling, signIn, index, isNew); | |
| 175 | + } | |
| 162 | 176 | } |
| 163 | 177 | |
| 164 | 178 | } |
| 165 | 179 | |
| 180 | + private void changeScheduling(DriverScheduling driverScheduling,SignIn signIn,String remark,Integer index,boolean isNew){ | |
| 181 | + schedulingMapper.updateRoster(driverScheduling, signIn.getId(), signIn.getExType(), signIn.getCreateTime(), remark, signIn.getType(), signIn.getAlcoholFlag(), signIn.getAlcoholIntake()); | |
| 182 | + // 更新缓存 | |
| 183 | + nowSchedulingCache.updateCacheByJobCode(remark, ConstDateUtil.formatDate(driverScheduling.getScheduleDate()), index, signIn, isNew, driverScheduling); | |
| 184 | + } | |
| 185 | + | |
| 166 | 186 | private String getRemark(DriverScheduling scheduling, SignIn signIn) { |
| 167 | 187 | StringBuilder sb = new StringBuilder(); |
| 168 | 188 | if (bigViewServiceV1.isEarly(signIn)) { | ... | ... |
Bsth-admin/src/main/java/com/ruoyi/service/impl/BigViewServiceV1Impl.java
| ... | ... | @@ -119,27 +119,32 @@ public class BigViewServiceV1Impl implements BigViewServiceV1 { |
| 119 | 119 | return null; |
| 120 | 120 | } |
| 121 | 121 | |
| 122 | + @Override | |
| 123 | + public boolean isNormal(SignIn signIn) { | |
| 124 | + return Objects.nonNull(signIn) && Objects.equals(signIn.getExType1(), 0); | |
| 125 | + } | |
| 126 | + | |
| 122 | 127 | |
| 123 | 128 | @Override |
| 124 | 129 | public boolean isEarly(SignIn signIn) { |
| 125 | - return Objects.nonNull(signIn) && signIn.getExType() >= 20 && signIn.getExType() < 30; | |
| 130 | + return Objects.nonNull(signIn) && signIn.getExType1() >= 20 && signIn.getExType1() < 30; | |
| 126 | 131 | } |
| 127 | 132 | |
| 128 | 133 | |
| 129 | 134 | @Override |
| 130 | 135 | public boolean isSignStatusWineEnum(SignIn signIn) { |
| 131 | - return Objects.nonNull(signIn) && (Objects.equals(3, signIn.getExType()) || Objects.equals(23, signIn.getExType()) || Objects.equals(33, signIn.getExType())); | |
| 136 | + return Objects.nonNull(signIn) && Objects.nonNull(signIn.getExType1()) && signIn.getExType1() % 10 == 3; | |
| 132 | 137 | } |
| 133 | 138 | |
| 134 | 139 | |
| 135 | 140 | @Override |
| 136 | 141 | public boolean isSignStatusDelayEnum(SignIn signIn) { |
| 137 | - return Objects.nonNull(signIn) && Objects.nonNull(signIn.getExType()) && signIn.getExType() >= 30 && signIn.getExType() < 40; | |
| 142 | + return Objects.nonNull(signIn) && Objects.nonNull(signIn.getExType1()) && signIn.getExType1() >= 30 && signIn.getExType1() < 40; | |
| 138 | 143 | } |
| 139 | 144 | |
| 140 | 145 | @Override |
| 141 | 146 | public boolean isSignStatusZoneEnum(SignIn signIn) { |
| 142 | - return Objects.nonNull(signIn) && Objects.nonNull(signIn.getExType()) && signIn.getExType() % 10 == 3; | |
| 147 | + return !isSignStatusWineEnum(signIn); | |
| 143 | 148 | } |
| 144 | 149 | |
| 145 | 150 | @Override | ... | ... |
Bsth-admin/src/main/java/com/ruoyi/service/impl/sign/in/resource/LinggangSignInResourceServiceImpl.java
| ... | ... | @@ -9,8 +9,13 @@ import com.ruoyi.common.core.domain.ResponseResult; |
| 9 | 9 | import com.ruoyi.domain.OrderEntity; |
| 10 | 10 | import com.ruoyi.domain.sign.in.resource.LinggangSignInResource; |
| 11 | 11 | import com.ruoyi.exception.InterruptException; |
| 12 | +import com.ruoyi.in.domain.SignIn; | |
| 13 | +import com.ruoyi.in.domain.SignInV1; | |
| 14 | +import com.ruoyi.in.service.ISignInService; | |
| 15 | +import com.ruoyi.in.service.SignInServiceV1; | |
| 12 | 16 | import com.ruoyi.mapper.sign.in.resource.LinggangSignInResourceMapper; |
| 13 | 17 | import com.ruoyi.service.sign.in.resource.LinggangSignInResourceService; |
| 18 | +import com.ruoyi.utils.SpringApplicationUtil; | |
| 14 | 19 | import com.ruoyi.utils.UploadUtil; |
| 15 | 20 | import lombok.extern.slf4j.Slf4j; |
| 16 | 21 | import org.apache.commons.collections4.CollectionUtils; |
| ... | ... | @@ -154,6 +159,13 @@ public class LinggangSignInResourceServiceImpl extends ServiceImpl<LinggangSignI |
| 154 | 159 | if (!result.isSuccess() && Objects.equals(result.getData(), Boolean.FALSE)) { |
| 155 | 160 | throw new InterruptException("图片上传失败,请检查服务器"); |
| 156 | 161 | } |
| 162 | + | |
| 163 | + SignInServiceV1 signInServiceV1 = SpringApplicationUtil.getBean(SignInServiceV1.class); | |
| 164 | + SignInV1 signInV1 = new SignInV1(); | |
| 165 | + signInV1.setImage(en.getPath()); | |
| 166 | + signInV1.setId(en.getSignId()); | |
| 167 | + | |
| 168 | + signInServiceV1.updateImage(signInV1); | |
| 157 | 169 | }); |
| 158 | 170 | } |
| 159 | 171 | ... | ... |