Commit 7d057927fcefe595de78ec3fe170dc810c8618ab
1 parent
7022fa14
feat: 增加注册列表显示
Showing
13 changed files
with
150 additions
and
14 deletions
ruoyi-admin/src/main/java/com/ruoyi/common/global/GlobalDriverInfoCache.java
| 1 | package com.ruoyi.common.global; | 1 | package com.ruoyi.common.global; |
| 2 | 2 | ||
| 3 | import com.ruoyi.in.domain.SignIn; | 3 | import com.ruoyi.in.domain.SignIn; |
| 4 | +import com.ruoyi.pojo.domain.SignInExpand; | ||
| 5 | +import com.ruoyi.utils.ConstDateUtil; | ||
| 4 | import org.springframework.stereotype.Component; | 6 | import org.springframework.stereotype.Component; |
| 5 | 7 | ||
| 6 | import java.security.Principal; | 8 | import java.security.Principal; |
| @@ -12,18 +14,42 @@ import java.util.concurrent.ConcurrentHashMap; | @@ -12,18 +14,42 @@ import java.util.concurrent.ConcurrentHashMap; | ||
| 12 | */ | 14 | */ |
| 13 | @Component | 15 | @Component |
| 14 | public class GlobalDriverInfoCache { | 16 | public class GlobalDriverInfoCache { |
| 15 | - private final ConcurrentHashMap<String, List<SignIn>> userCurrentMap = new ConcurrentHashMap(); | 17 | + /** |
| 18 | + * 上午签到汇总 | ||
| 19 | + */ | ||
| 20 | + private final ConcurrentHashMap<String, List<SignInExpand>> morningUserSignInMap = new ConcurrentHashMap(); | ||
| 21 | + /** | ||
| 22 | + * 下午签到汇总 | ||
| 23 | + */ | ||
| 24 | + private final ConcurrentHashMap<String, List<SignInExpand>> afternoonUserSignInMap = new ConcurrentHashMap(); | ||
| 16 | 25 | ||
| 17 | /** | 26 | /** |
| 18 | - * 驾驶员签到 | 27 | + * 驾驶员签到成功 |
| 28 | + * | ||
| 19 | * @param signIn | 29 | * @param signIn |
| 20 | */ | 30 | */ |
| 21 | - public void putDriver(SignIn signIn) { | ||
| 22 | - if (Objects.isNull(userCurrentMap.get(signIn.getJobCode()))) { | ||
| 23 | - userCurrentMap.put(signIn.getJobCode(), new ArrayList<>(Arrays.asList(signIn))); | ||
| 24 | - } else { | ||
| 25 | - userCurrentMap.get(signIn.getJobCode()).add(signIn); | 31 | + public void putDriverSignInSuccess(SignIn signIn) { |
| 32 | + ConcurrentHashMap<String, List<SignInExpand>> userCurrentMap = null; | ||
| 33 | + int hour = Integer.parseInt(ConstDateUtil.formatDate("HH")); | ||
| 34 | + if (hour >= 0 && hour < 12) { | ||
| 35 | + userCurrentMap = morningUserSignInMap; | ||
| 36 | + if (Objects.isNull(userCurrentMap.get(signIn.getJobCode()))) { | ||
| 37 | + SignInExpand signInExpand = new SignInExpand(); | ||
| 38 | + signInExpand.setJobCode(signIn.getJobCode()); | ||
| 39 | + signInExpand.setMorningSignInIds(signInExpand.getMorningSignInIds() + signIn.getId() + ","); | ||
| 40 | + userCurrentMap.put(signIn.getJobCode(), new ArrayList<>(Arrays.asList(signInExpand))); | ||
| 41 | + } else { | ||
| 42 | + userCurrentMap.get(signIn.getJobCode()).add(null); | ||
| 43 | + } | ||
| 44 | + }else { | ||
| 45 | + userCurrentMap = afternoonUserSignInMap; | ||
| 26 | } | 46 | } |
| 47 | + /** | ||
| 48 | + * 存在判断 上下午只保留一条作为正式的签到结果 | ||
| 49 | + * 上午签到 -》 成功 | 下午签到 -》异常,成功 | ||
| 50 | + * 上午签到 -》 异常,异常 | 下午签到 -》 成功 | ||
| 51 | + */ | ||
| 52 | + | ||
| 27 | } | 53 | } |
| 28 | 54 | ||
| 29 | 55 |
ruoyi-admin/src/main/java/com/ruoyi/driver/mapper/DriverMapper.java
| @@ -100,4 +100,6 @@ public interface DriverMapper | @@ -100,4 +100,6 @@ public interface DriverMapper | ||
| 100 | Driver getDriverInfoByJobCode(@Param("jobCode")String jobCode); | 100 | Driver getDriverInfoByJobCode(@Param("jobCode")String jobCode); |
| 101 | 101 | ||
| 102 | Integer insertDriverFace(@Param("deviceId") String deviceId, @Param("jobCodes")List<String> jobCodes); | 102 | Integer insertDriverFace(@Param("deviceId") String deviceId, @Param("jobCodes")List<String> jobCodes); |
| 103 | + | ||
| 104 | + void updateDriverByComputed(@Param("count")Integer count); | ||
| 103 | } | 105 | } |
ruoyi-admin/src/main/java/com/ruoyi/driver/service/IDriverService.java
| @@ -89,4 +89,6 @@ public interface IDriverService | @@ -89,4 +89,6 @@ public interface IDriverService | ||
| 89 | 89 | ||
| 90 | 90 | ||
| 91 | AjaxResult faceRegistrationFeedback(String deviceId, List<String> jobCode); | 91 | AjaxResult faceRegistrationFeedback(String deviceId, List<String> jobCode); |
| 92 | + | ||
| 93 | + void updateDriverByComputed(); | ||
| 92 | } | 94 | } |
ruoyi-admin/src/main/java/com/ruoyi/driver/service/impl/DriverServiceImpl.java
| @@ -4,6 +4,7 @@ import java.io.File; | @@ -4,6 +4,7 @@ import java.io.File; | ||
| 4 | import java.io.IOException; | 4 | import java.io.IOException; |
| 5 | import java.nio.file.Paths; | 5 | import java.nio.file.Paths; |
| 6 | import java.util.*; | 6 | import java.util.*; |
| 7 | +import java.util.stream.Collectors; | ||
| 7 | 8 | ||
| 8 | import com.ruoyi.common.config.RuoYiConfig; | 9 | import com.ruoyi.common.config.RuoYiConfig; |
| 9 | import com.ruoyi.common.core.domain.AjaxResult; | 10 | import com.ruoyi.common.core.domain.AjaxResult; |
| @@ -12,13 +13,16 @@ import com.ruoyi.common.exception.file.InvalidExtensionException; | @@ -12,13 +13,16 @@ import com.ruoyi.common.exception.file.InvalidExtensionException; | ||
| 12 | import com.ruoyi.common.utils.file.FileUploadUtils; | 13 | import com.ruoyi.common.utils.file.FileUploadUtils; |
| 13 | import com.ruoyi.common.utils.file.FileUtils; | 14 | import com.ruoyi.common.utils.file.FileUtils; |
| 14 | import com.ruoyi.common.utils.file.MimeTypeUtils; | 15 | import com.ruoyi.common.utils.file.MimeTypeUtils; |
| 16 | +import com.ruoyi.equipment.mapper.EquipmentMapper; | ||
| 15 | import com.ruoyi.framework.config.ServerConfig; | 17 | import com.ruoyi.framework.config.ServerConfig; |
| 16 | import com.ruoyi.job.DriverJob; | 18 | import com.ruoyi.job.DriverJob; |
| 19 | +import com.ruoyi.pojo.domain.EquipmentDriverExpand; | ||
| 17 | import com.ruoyi.pojo.response.ResponseScheduling; | 20 | import com.ruoyi.pojo.response.ResponseScheduling; |
| 18 | import com.ruoyi.service.ThreadJobService; | 21 | import com.ruoyi.service.ThreadJobService; |
| 19 | import com.ruoyi.utils.ConstDateUtil; | 22 | import com.ruoyi.utils.ConstDateUtil; |
| 20 | import com.ruoyi.utils.ListUtils; | 23 | import com.ruoyi.utils.ListUtils; |
| 21 | import org.apache.commons.io.FilenameUtils; | 24 | import org.apache.commons.io.FilenameUtils; |
| 25 | +import org.apache.tomcat.util.buf.StringUtils; | ||
| 22 | import org.springframework.beans.factory.annotation.Autowired; | 26 | import org.springframework.beans.factory.annotation.Autowired; |
| 23 | import org.springframework.beans.factory.annotation.Value; | 27 | import org.springframework.beans.factory.annotation.Value; |
| 24 | import org.springframework.stereotype.Service; | 28 | import org.springframework.stereotype.Service; |
| @@ -41,6 +45,8 @@ import static com.ruoyi.common.redispre.GlobalRedisPreName.DRIVER_SCHEDULING_PRE | @@ -41,6 +45,8 @@ import static com.ruoyi.common.redispre.GlobalRedisPreName.DRIVER_SCHEDULING_PRE | ||
| 41 | @Service | 45 | @Service |
| 42 | public class DriverServiceImpl implements IDriverService { | 46 | public class DriverServiceImpl implements IDriverService { |
| 43 | 47 | ||
| 48 | + @Autowired | ||
| 49 | + private EquipmentMapper equipmentMapper; | ||
| 44 | @Value("${api.url.getSchedulingInfo}") | 50 | @Value("${api.url.getSchedulingInfo}") |
| 45 | private String schedulingInfoUrl; | 51 | private String schedulingInfoUrl; |
| 46 | @Value("${api.config.password}") | 52 | @Value("${api.config.password}") |
| @@ -82,7 +88,14 @@ public class DriverServiceImpl implements IDriverService { | @@ -82,7 +88,14 @@ public class DriverServiceImpl implements IDriverService { | ||
| 82 | */ | 88 | */ |
| 83 | @Override | 89 | @Override |
| 84 | public List<Driver> selectDriverList(Driver driver) { | 90 | public List<Driver> selectDriverList(Driver driver) { |
| 85 | - return driverMapper.selectDriverList(driver); | 91 | + List<Driver> drivers = driverMapper.selectDriverList(driver); |
| 92 | + List<EquipmentDriverExpand> list = equipmentMapper.querySignListByJobCode(drivers); | ||
| 93 | + for (Driver item : drivers) { | ||
| 94 | + // 查询对应工号的注册设备号 然后用,拼接展示在前端 | ||
| 95 | + List<String> collect = list.stream().filter(todo -> item.getJobCode().equals(todo.getJobCode())).map(EquipmentDriverExpand::getDeviceId).collect(Collectors.toList()); | ||
| 96 | + item.setSignInEquipment(StringUtils.join(collect)); | ||
| 97 | + } | ||
| 98 | + return drivers; | ||
| 86 | } | 99 | } |
| 87 | 100 | ||
| 88 | /** | 101 | /** |
| @@ -242,6 +255,13 @@ public class DriverServiceImpl implements IDriverService { | @@ -242,6 +255,13 @@ public class DriverServiceImpl implements IDriverService { | ||
| 242 | return AjaxResult.success("注册成功"); | 255 | return AjaxResult.success("注册成功"); |
| 243 | } | 256 | } |
| 244 | 257 | ||
| 258 | + @Override | ||
| 259 | + public void updateDriverByComputed() { | ||
| 260 | + Integer count = equipmentMapper.count(); | ||
| 261 | + // 更新人脸认证状态 | ||
| 262 | + driverMapper.updateDriverByComputed(count); | ||
| 263 | + } | ||
| 264 | + | ||
| 245 | private File getLocationFile(String jobCode) { | 265 | private File getLocationFile(String jobCode) { |
| 246 | String image = driverMapper.getDriverImageByJobCode(jobCode); | 266 | String image = driverMapper.getDriverImageByJobCode(jobCode); |
| 247 | 267 |
ruoyi-admin/src/main/java/com/ruoyi/equipment/mapper/EquipmentMapper.java
| 1 | package com.ruoyi.equipment.mapper; | 1 | package com.ruoyi.equipment.mapper; |
| 2 | 2 | ||
| 3 | import java.util.List; | 3 | import java.util.List; |
| 4 | + | ||
| 5 | +import com.ruoyi.driver.domain.Driver; | ||
| 4 | import com.ruoyi.equipment.domain.Equipment; | 6 | import com.ruoyi.equipment.domain.Equipment; |
| 7 | +import com.ruoyi.pojo.domain.EquipmentDriverExpand; | ||
| 5 | import org.apache.ibatis.annotations.Param; | 8 | import org.apache.ibatis.annotations.Param; |
| 6 | 9 | ||
| 7 | /** | 10 | /** |
| @@ -61,4 +64,8 @@ public interface EquipmentMapper | @@ -61,4 +64,8 @@ public interface EquipmentMapper | ||
| 61 | public int deleteEquipmentByIds(Long[] ids); | 64 | public int deleteEquipmentByIds(Long[] ids); |
| 62 | 65 | ||
| 63 | Equipment selectEquipmentByDeviceId(@Param("deviceId") String deviceId); | 66 | Equipment selectEquipmentByDeviceId(@Param("deviceId") String deviceId); |
| 67 | + | ||
| 68 | + Integer count(); | ||
| 69 | + | ||
| 70 | + List<EquipmentDriverExpand> querySignListByJobCode(@Param("drivers") List<Driver> drivers); | ||
| 64 | } | 71 | } |
ruoyi-admin/src/main/java/com/ruoyi/in/service/impl/SignInServiceImpl.java
| @@ -144,6 +144,7 @@ public class SignInServiceImpl implements ISignInService { | @@ -144,6 +144,7 @@ public class SignInServiceImpl implements ISignInService { | ||
| 144 | 144 | ||
| 145 | @Override | 145 | @Override |
| 146 | public AjaxResult addSignIn(SignIn signIn) throws IOException { | 146 | public AjaxResult addSignIn(SignIn signIn) throws IOException { |
| 147 | + // 查询员工信息 | ||
| 147 | Driver driver = driverMapper.getDriverInfoByJobCode(signIn.getJobCode()); | 148 | Driver driver = driverMapper.getDriverInfoByJobCode(signIn.getJobCode()); |
| 148 | // 查询地址 | 149 | // 查询地址 |
| 149 | Equipment equipment = equipmentMapper.selectEquipmentByDeviceId(signIn.getDeviceId()); | 150 | Equipment equipment = equipmentMapper.selectEquipmentByDeviceId(signIn.getDeviceId()); |
ruoyi-admin/src/main/java/com/ruoyi/job/DriverJob.java
| @@ -154,7 +154,7 @@ public class DriverJob implements InitializingBean { | @@ -154,7 +154,7 @@ public class DriverJob implements InitializingBean { | ||
| 154 | ImageUrlResultResponseVo vo = JSON.parseObject(s, ImageUrlResultResponseVo.class); | 154 | ImageUrlResultResponseVo vo = JSON.parseObject(s, ImageUrlResultResponseVo.class); |
| 155 | result = vo.getResult(); | 155 | result = vo.getResult(); |
| 156 | // 可能需要重新获取token | 156 | // 可能需要重新获取token |
| 157 | - }catch (Exception e){ | 157 | + } catch (Exception e) { |
| 158 | String token = DriverJob.getToken(TOKEN_URL).getAccessToken(); | 158 | String token = DriverJob.getToken(TOKEN_URL).getAccessToken(); |
| 159 | header.put("x-acs-dingtalk-access-token", token); | 159 | header.put("x-acs-dingtalk-access-token", token); |
| 160 | String s = HttpUtils.doGet(url, param, header); | 160 | String s = HttpUtils.doGet(url, param, header); |
| @@ -166,7 +166,7 @@ public class DriverJob implements InitializingBean { | @@ -166,7 +166,7 @@ public class DriverJob implements InitializingBean { | ||
| 166 | 166 | ||
| 167 | /** | 167 | /** |
| 168 | * 获取排班任务请求 | 168 | * 获取排班任务请求 |
| 169 | - * 12小时执行一次 | 169 | + * 24小时执行一次 |
| 170 | */ | 170 | */ |
| 171 | public void getSchedulingInfo() { | 171 | public void getSchedulingInfo() { |
| 172 | // 获取排班请求 | 172 | // 获取排班请求 |
| @@ -181,6 +181,13 @@ public class DriverJob implements InitializingBean { | @@ -181,6 +181,13 @@ public class DriverJob implements InitializingBean { | ||
| 181 | saveSchedulingToRedis(getSchedulingInfoUrl, ConstDateUtil.formatDate("yyyyMMdd")); | 181 | saveSchedulingToRedis(getSchedulingInfoUrl, ConstDateUtil.formatDate("yyyyMMdd")); |
| 182 | } | 182 | } |
| 183 | 183 | ||
| 184 | + /** | ||
| 185 | + * 计算是否全部设备完成了对应的用户人脸注册 | ||
| 186 | + */ | ||
| 187 | + public void computedFaceSignIn() { | ||
| 188 | + DRIVER_SERVICE.updateDriverByComputed(); | ||
| 189 | + } | ||
| 190 | + | ||
| 184 | public Map<String, List<ResponseScheduling>> saveSchedulingToRedis(String getSchedulingInfoUrl, String dateKey) { | 191 | public Map<String, List<ResponseScheduling>> saveSchedulingToRedis(String getSchedulingInfoUrl, String dateKey) { |
| 185 | List<ResponseScheduling> originSchedulingList = RESTTEMPLATE.exchange( | 192 | List<ResponseScheduling> originSchedulingList = RESTTEMPLATE.exchange( |
| 186 | getSchedulingInfoUrl, | 193 | getSchedulingInfoUrl, |
ruoyi-admin/src/main/java/com/ruoyi/pojo/domain/EquipmentDriverExpand.java
0 → 100644
ruoyi-admin/src/main/java/com/ruoyi/pojo/domain/SignInExpand.java
0 → 100644
| 1 | +package com.ruoyi.pojo.domain; | ||
| 2 | + | ||
| 3 | +import lombok.Data; | ||
| 4 | +import org.springframework.format.annotation.DateTimeFormat; | ||
| 5 | + | ||
| 6 | +import java.util.Date; | ||
| 7 | + | ||
| 8 | +/** | ||
| 9 | + * 签到扩展表 | ||
| 10 | + * @author guzijian | ||
| 11 | + */ | ||
| 12 | +@Data | ||
| 13 | +public class SignInExpand { | ||
| 14 | + private Integer id; | ||
| 15 | + private String jobCode; | ||
| 16 | + /** | ||
| 17 | + * 上午签到集合 1,2 | ||
| 18 | + */ | ||
| 19 | + private String morningSignInIds; | ||
| 20 | + /** | ||
| 21 | + * 下午签到集合 1,2 | ||
| 22 | + */ | ||
| 23 | + private String afternoonSignInIds; | ||
| 24 | + @DateTimeFormat(pattern = "yyyy-MM-dd") | ||
| 25 | + private Date dated; | ||
| 26 | +} |
ruoyi-admin/src/main/resources/application-druid-dev.yml
| @@ -7,7 +7,7 @@ spring: | @@ -7,7 +7,7 @@ spring: | ||
| 7 | # 主库数据源 | 7 | # 主库数据源 |
| 8 | master: | 8 | master: |
| 9 | # 测试地址 | 9 | # 测试地址 |
| 10 | - url: jdbc:mysql://localhost:3306/all-in-one?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&useAffectedRows=true | 10 | + url: jdbc:mysql://localhost:3306/all-in-one?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&useAffectedRows=true&allowMultiQueries=true |
| 11 | username: root | 11 | username: root |
| 12 | password: guzijian | 12 | password: guzijian |
| 13 | # 从库数据源 | 13 | # 从库数据源 |
ruoyi-admin/src/main/resources/application-druid-uat.yml
| @@ -7,7 +7,7 @@ spring: | @@ -7,7 +7,7 @@ spring: | ||
| 7 | # 主库数据源 | 7 | # 主库数据源 |
| 8 | master: | 8 | master: |
| 9 | # 测试地址 | 9 | # 测试地址 |
| 10 | - url: jdbc:mysql://1.14.107.94:3306/all-in-one?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 | 10 | + url: jdbc:mysql://localhost:3306/all-in-one?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&useAffectedRows=true&allowMultiQueries=true |
| 11 | username: root | 11 | username: root |
| 12 | password: guzijian | 12 | password: guzijian |
| 13 | # 从库数据源 | 13 | # 从库数据源 |
ruoyi-admin/src/main/resources/mapper/driver/DriverMapper.xml
| @@ -166,7 +166,8 @@ | @@ -166,7 +166,8 @@ | ||
| 166 | <if test="lineName != null">line_name,</if> | 166 | <if test="lineName != null">line_name,</if> |
| 167 | <if test="lineCode != null">line_code,</if> | 167 | <if test="lineCode != null">line_code,</if> |
| 168 | <if test="faceSignIn != null">face_sign_in,</if> | 168 | <if test="faceSignIn != null">face_sign_in,</if> |
| 169 | - <if test="image != null">image</if> | 169 | + <if test="image != null">image,</if> |
| 170 | + <if test="updateTime != null">update_time</if> | ||
| 170 | </trim> | 171 | </trim> |
| 171 | <trim prefix="values (" suffix=")" suffixOverrides=","> | 172 | <trim prefix="values (" suffix=")" suffixOverrides=","> |
| 172 | <if test="jobCode != null and jobCode != ''">#{jobCode},</if> | 173 | <if test="jobCode != null and jobCode != ''">#{jobCode},</if> |
| @@ -186,7 +187,8 @@ | @@ -186,7 +187,8 @@ | ||
| 186 | <if test="lineName != null">#{lineName},</if> | 187 | <if test="lineName != null">#{lineName},</if> |
| 187 | <if test="lineCode != null">#{lineCode},</if> | 188 | <if test="lineCode != null">#{lineCode},</if> |
| 188 | <if test="faceSignIn != null">#{faceSignIn},</if> | 189 | <if test="faceSignIn != null">#{faceSignIn},</if> |
| 189 | - <if test="image != null">#{image}</if> | 190 | + <if test="image != null">#{image},</if> |
| 191 | + <if test="updateTime != null">#{updateTime}</if> | ||
| 190 | </trim> | 192 | </trim> |
| 191 | on duplicate key update | 193 | on duplicate key update |
| 192 | job_code = values(job_code) | 194 | job_code = values(job_code) |
| @@ -217,6 +219,22 @@ | @@ -217,6 +219,22 @@ | ||
| 217 | </trim> | 219 | </trim> |
| 218 | where id = #{id} | 220 | where id = #{id} |
| 219 | </update> | 221 | </update> |
| 222 | + <update id="updateDriverByComputed"> | ||
| 223 | + update driver set face_sign_in = 0 | ||
| 224 | + WHERE job_code in ( | ||
| 225 | + SELECT job_code | ||
| 226 | + FROM driver_face_device_id | ||
| 227 | + GROUP BY job_code | ||
| 228 | + HAVING COUNT(*) = #{count} | ||
| 229 | + ); | ||
| 230 | + update driver set face_sign_in = 2 | ||
| 231 | + WHERE job_code in ( | ||
| 232 | + SELECT job_code | ||
| 233 | + FROM driver_face_device_id | ||
| 234 | + GROUP BY job_code | ||
| 235 | + HAVING COUNT(*) != #{count} | ||
| 236 | + ); | ||
| 237 | + </update> | ||
| 220 | <insert id="saveDriverScheduling"> | 238 | <insert id="saveDriverScheduling"> |
| 221 | INSERT INTO driver_scheduling ( | 239 | INSERT INTO driver_scheduling ( |
| 222 | id, scheduleDate, lineName, lineCode, lpName, | 240 | id, scheduleDate, lineName, lineCode, lpName, |
ruoyi-admin/src/main/resources/mapper/equipment/EquipmentMapper.xml
| @@ -46,6 +46,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" | @@ -46,6 +46,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" | ||
| 46 | <include refid="selectEquipmentVo"></include> | 46 | <include refid="selectEquipmentVo"></include> |
| 47 | where device_id = #{deviceId} | 47 | where device_id = #{deviceId} |
| 48 | </select> | 48 | </select> |
| 49 | + <select id="count" resultType="java.lang.Integer"> | ||
| 50 | + select count(*) from equipment | ||
| 51 | + where status = 1 | ||
| 52 | + </select> | ||
| 53 | + <select id="querySignListByJobCode" resultType="com.ruoyi.pojo.domain.EquipmentDriverExpand"> | ||
| 54 | + select * from driver_face_device_id | ||
| 55 | + where job_code in | ||
| 56 | + <foreach collection="drivers" item="item" open="(" separator="," close=")"> | ||
| 57 | + #{item.jobCode} | ||
| 58 | + </foreach> | ||
| 59 | + </select> | ||
| 49 | 60 | ||
| 50 | 61 | ||
| 51 | <insert id="insertEquipment" parameterType="Equipment" useGeneratedKeys="true" keyProperty="id"> | 62 | <insert id="insertEquipment" parameterType="Equipment" useGeneratedKeys="true" keyProperty="id"> |