Commit 767fdec0c333389c1ac1c63831f60fc140a68651

Authored by liujun001
1 parent 4280fcf0

蓝斯二期

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&lt;SignInMapperV1, SignInV1&gt; 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&lt;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  
... ...