|
@@ -17,6 +17,7 @@ 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.dto.CommandMqtt;
|
|
|
import com.xy.dto.DeviceAnnualFeeDto;
|
|
|
import com.xy.dto.MqttUserDto;
|
|
|
import com.xy.dto.be.MercDto;
|
|
@@ -44,10 +45,7 @@ import javax.servlet.http.HttpServletResponse;
|
|
|
import java.io.InputStream;
|
|
|
import java.io.OutputStream;
|
|
|
import java.time.LocalDateTime;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.HashMap;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
+import java.util.*;
|
|
|
|
|
|
import static com.xy.utils.PlusBeans.toIPage;
|
|
|
import static com.xy.utils.PlusBeans.toPageBean;
|
|
@@ -83,6 +81,8 @@ public class DeviceAnnualFeeServiceImpl extends ServiceImpl<DeviceAnnualFeeMappe
|
|
|
|
|
|
private MercService mercService;
|
|
|
|
|
|
+ private MqttService mqttService;
|
|
|
+
|
|
|
@PostMapping("check")
|
|
|
@ApiOperation("检查")
|
|
|
public R<String> check(@RequestBody @Validated DeviceAnnualFeeDto.Check check) {
|
|
@@ -140,7 +140,7 @@ public class DeviceAnnualFeeServiceImpl extends ServiceImpl<DeviceAnnualFeeMappe
|
|
|
if (sysDictRedis == null) {
|
|
|
return R.fail("code未配置商家");
|
|
|
}
|
|
|
- page.setMercId(Long.valueOf(sysDictRedis.getValue()));
|
|
|
+ page.setMercId(Long.valueOf(sysDictRedis.getValue())).setRegisterStatus(true);
|
|
|
return page(page);
|
|
|
}
|
|
|
|
|
@@ -292,6 +292,8 @@ public class DeviceAnnualFeeServiceImpl extends ServiceImpl<DeviceAnnualFeeMappe
|
|
|
//发送请求
|
|
|
FunctionUtils.ParamsNoResult<Map<Long, JSONObject>> sendPost = jsonObjects -> {
|
|
|
LocalDateTime now = LocalDateTime.now();
|
|
|
+ Map<String, SysDictRedis> map = SysDictUtils.get("mqtt_cmd_templet_task");
|
|
|
+ String value = map.get("env").getValue();
|
|
|
ThreadPoolUtils.Execute execute = ThreadPoolUtils.excPoll(DeviceThreadPoolConfig.DEVICE_COMMON_POLL, deviceIds.size());
|
|
|
//多线程逐条发送,发送集合担心参数体过大
|
|
|
deviceIds.forEach(deviceId -> execute.execute(() -> {
|
|
@@ -300,14 +302,24 @@ public class DeviceAnnualFeeServiceImpl extends ServiceImpl<DeviceAnnualFeeMappe
|
|
|
return;
|
|
|
}
|
|
|
SysDictRedis sysDictRedis = stringSysDictRedisMap.get(String.valueOf(deviceAnnualFee.getMercId()));
|
|
|
- String url = JSONUtil.parseObj(sysDictRedis.getValue()).getStr("device_send_url");
|
|
|
+ JSONObject obj = JSONUtil.parseObj(sysDictRedis.getValue());
|
|
|
+ String url = obj.getStr("domain");
|
|
|
JSONObject jsonObject = jsonObjects.get(deviceId);
|
|
|
- JSONObject result = send(url, jsonObject, "发送设备数据到商家平台");
|
|
|
+ JSONObject result = send(url + "/device/device-annual-fee/receiveDeviceInfo", jsonObject, "发送设备数据到商家平台");
|
|
|
//修改设备年费注册信息
|
|
|
if (result.getInt("code") == 200) {
|
|
|
deviceAnnualFee.setRegisterStatus(true)
|
|
|
.setRegisterTime(now);
|
|
|
updateById(deviceAnnualFee);
|
|
|
+ //发送环境切换指令
|
|
|
+ JSONObject env = JSONUtil.parseObj(value);
|
|
|
+ JSONObject data = env.getJSONObject("data")
|
|
|
+ .set("env", obj.getStr("env"));
|
|
|
+ env.set("data", data);
|
|
|
+ CommandMqtt commandMqtt = new CommandMqtt()
|
|
|
+ .setDeviceId(deviceId)
|
|
|
+ .setTemplet(env);
|
|
|
+ mqttService.senCommand(Collections.singletonList(commandMqtt));
|
|
|
}
|
|
|
})
|
|
|
.error(e -> log.error("", e))
|
|
@@ -351,6 +363,8 @@ public class DeviceAnnualFeeServiceImpl extends ServiceImpl<DeviceAnnualFeeMappe
|
|
|
if (byId != null) {
|
|
|
return;
|
|
|
}
|
|
|
+ MercDto.Vo merc = mercService.obj(new MercDto.Vo().setId(deviceInfo.getMercId())).getData();
|
|
|
+ deviceInfo.setMercName(merc.getName());
|
|
|
deviceInfoService.save(deviceInfo);
|
|
|
};
|
|
|
//设备系统信息
|
|
@@ -421,6 +435,50 @@ public class DeviceAnnualFeeServiceImpl extends ServiceImpl<DeviceAnnualFeeMappe
|
|
|
});
|
|
|
}
|
|
|
|
|
|
+ @PostMapping("evn")
|
|
|
+ @ApiOperation("切换环境")
|
|
|
+ public R evn(@RequestBody @Validated DeviceAnnualFeeDto.Evn evn) {
|
|
|
+ DeviceInfo deviceInfo = deviceInfoService.getById(evn.getDeviceId());
|
|
|
+ Map<String, SysDictRedis> stringSysDictRedisMap = SysDictUtils.get("merc_device_annual_fee");
|
|
|
+ SysDictRedis sysDictRedis = stringSysDictRedisMap.get(String.valueOf(deviceInfo.getMercId()));
|
|
|
+ JSONObject obj = JSONUtil.parseObj(sysDictRedis.getValue());
|
|
|
+ //切换到商家系统
|
|
|
+ if (evn.getType() == 2) {
|
|
|
+ Map<String, SysDictRedis> map = SysDictUtils.get("mqtt_cmd_templet_task");
|
|
|
+ //发送环境切换指令
|
|
|
+ JSONObject env = JSONUtil.parseObj(map.get("env").getValue());
|
|
|
+ JSONObject data = env.getJSONObject("data")
|
|
|
+ .set("env", obj.getStr("env"));
|
|
|
+ env.set("data", data);
|
|
|
+ CommandMqtt commandMqtt = new CommandMqtt()
|
|
|
+ .setDeviceId(evn.getDeviceId())
|
|
|
+ .setTemplet(env);
|
|
|
+ mqttService.senCommand(Collections.singletonList(commandMqtt));
|
|
|
+ }
|
|
|
+ //切换到兴元系统
|
|
|
+ if (evn.getType() == 1) {
|
|
|
+ String url = obj.getStr("domain");
|
|
|
+ HttpUtils.send(url + "/device/device-annual-fee/evnXy", new JSONObject().set("deviceId", deviceInfo.getDeviceId()), "切换到兴元系统");
|
|
|
+ }
|
|
|
+ return R.ok();
|
|
|
+ }
|
|
|
+
|
|
|
+ @PostMapping("evnXy")
|
|
|
+ @ApiOperation("切换环境到兴元(无token)")
|
|
|
+ public R evnXy(@RequestBody DeviceAnnualFeeDto.Evn evn) {
|
|
|
+ //发送环境切换指令
|
|
|
+ Map<String, SysDictRedis> map = SysDictUtils.get("mqtt_cmd_templet_task");
|
|
|
+ JSONObject env = JSONUtil.parseObj(map.get("env").getValue());
|
|
|
+ JSONObject data = env.getJSONObject("data")
|
|
|
+ .set("env", "prod");
|
|
|
+ env.set("data", data);
|
|
|
+ CommandMqtt commandMqtt = new CommandMqtt()
|
|
|
+ .setDeviceId(evn.getDeviceId())
|
|
|
+ .setTemplet(env);
|
|
|
+ mqttService.senCommand(Collections.singletonList(commandMqtt));
|
|
|
+ return R.ok();
|
|
|
+ }
|
|
|
+
|
|
|
private JSONObject send(String url, JSONObject params, String msg) {
|
|
|
return send(url, params, msg, 5000);
|
|
|
}
|