|
@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.xy.annotation.Lock;
|
|
|
import com.xy.collections.list.JArrayList;
|
|
|
import com.xy.collections.list.JList;
|
|
|
+import com.xy.collections.map.JHashMap;
|
|
|
import com.xy.collections.map.JMap;
|
|
|
import com.xy.config.DeviceThreadPoolConfig;
|
|
|
import com.xy.device.EnumDeviceQrCode;
|
|
@@ -63,9 +64,11 @@ public class DeviceCreateIdsServiceImpl extends ServiceImpl<DeviceCreateIdsMappe
|
|
|
String month = String.valueOf(localDate.getMonthValue());
|
|
|
String yearMonth = year.substring(2) + (month.length() == 1 ? "0" + month : month);
|
|
|
String property = LambdaUtils.getProperty(DeviceCreateIds::getDeviceId);
|
|
|
- QueryWrapper<DeviceCreateIds> queryWrapper = new QueryWrapper<DeviceCreateIds>().select(String.format("max(%s) as %s", StringTools.humpToLine(property), property));
|
|
|
+ QueryWrapper<DeviceCreateIds> queryWrapper = new QueryWrapper<DeviceCreateIds>()
|
|
|
+ .select(String.format("max(%s) as %s", StringTools.humpToLine(property), property))
|
|
|
+ .eq(StringTools.humpToLine(LambdaUtils.getProperty(DeviceCreateIds::getIsCustom)), false);
|
|
|
DeviceCreateIds deviceCreateIds = getOne(queryWrapper);
|
|
|
- JList<DeviceCreateIds> deviceCreateIdss = new JArrayList<>(save.getNum());
|
|
|
+ JMap<Long, DeviceCreateIds> deviceCreateIdss = new JHashMap<>(save.getNum());
|
|
|
Long loginId = AuthorizeUtils.getLoginId(Long.class);
|
|
|
for (int i = 0; i < save.getNum(); i++) {
|
|
|
String tail = null;
|
|
@@ -87,13 +90,33 @@ public class DeviceCreateIdsServiceImpl extends ServiceImpl<DeviceCreateIdsMappe
|
|
|
.setDeviceId(deviceId)
|
|
|
.setCreateUserId(loginId)
|
|
|
.setCreateTime(LocalDateTime.now());
|
|
|
- deviceCreateIdss.add(deviceCreateIdsInfo);
|
|
|
+ deviceCreateIdss.put(deviceId, deviceCreateIdsInfo);
|
|
|
}
|
|
|
- JList<JList<DeviceCreateIds>> partition = deviceCreateIdss.partition(20);
|
|
|
+ //去重复
|
|
|
+ weight(deviceCreateIdss, save.getNum());
|
|
|
+ //添加
|
|
|
+ JList<DeviceCreateIds> value = deviceCreateIdss.toList().value();
|
|
|
+ JList<JList<DeviceCreateIds>> partition = value.partition(20);
|
|
|
ThreadPoolUtils.Execute execute = ThreadPoolUtils.excPoll(DeviceThreadPoolConfig.DEVICE_COMMON_POLL, partition.size());
|
|
|
partition.forEach(createIds -> execute.execute(() -> saveBatch(createIds)));
|
|
|
execute.end();
|
|
|
- return R.ok(deviceCreateIdss);
|
|
|
+ return R.ok(value);
|
|
|
+ }
|
|
|
+
|
|
|
+ @PostMapping("save")
|
|
|
+ @ApiOperation("添加自定义机器号")
|
|
|
+ @Lock("device-create-ids-save")
|
|
|
+ public R saveCustom(@RequestBody @Validated DeviceCreateIdsDto.SaveCustom saveCustom) {
|
|
|
+ DeviceCreateIds deviceCreateIds = getById(saveCustom.getDeviceId());
|
|
|
+ if (deviceCreateIds != null) {
|
|
|
+ return R.fail("机器号已存在");
|
|
|
+ }
|
|
|
+ DeviceCreateIds deviceCreateIdsInfo = copy(DeviceCreateIds.class, saveCustom)
|
|
|
+ .setCreateUserId(AuthorizeUtils.getLoginId(Long.class))
|
|
|
+ .setIsCustom(true)
|
|
|
+ .setCreateTime(LocalDateTime.now());
|
|
|
+ save(deviceCreateIdsInfo);
|
|
|
+ return R.ok();
|
|
|
}
|
|
|
|
|
|
@PostMapping("page")
|
|
@@ -163,4 +186,20 @@ public class DeviceCreateIdsServiceImpl extends ServiceImpl<DeviceCreateIdsMappe
|
|
|
}
|
|
|
QRCodeUtils.create(infos, 400, 400, "back1.png", list).download(list);
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ private void weight(JMap<Long, DeviceCreateIds> deviceCreateIdss, int num) {
|
|
|
+ List<DeviceCreateIds> list = list(new LambdaQueryWrapper<DeviceCreateIds>().in(DeviceCreateIds::getDeviceId, deviceCreateIdss.toList().key()));
|
|
|
+ if (Emptys.check(list)) {
|
|
|
+ list.forEach(deviceCreateIdsInfo -> {
|
|
|
+ //添加
|
|
|
+ DeviceCreateIds deviceCreateIdsOld = deviceCreateIdss.get(deviceCreateIdsInfo.getDeviceId());
|
|
|
+ Long deviceId = deviceCreateIdsOld.getDeviceId() + num;
|
|
|
+ deviceCreateIdss.put(deviceId, copy(DeviceCreateIds.class, deviceCreateIdsOld).setDeviceId(deviceId));
|
|
|
+ //删除
|
|
|
+ deviceCreateIdss.remove(deviceCreateIdsInfo.getDeviceId());
|
|
|
+ });
|
|
|
+ weight(deviceCreateIdss, num);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|