diff --git a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/enums/DeviceOperate.java b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/enums/DeviceOperate.java new file mode 100644 index 0000000..e27d8da --- /dev/null +++ b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/enums/DeviceOperate.java @@ -0,0 +1,27 @@ +package com.njcn.csdevice.enums; + +import lombok.Getter; + +/** + * Description: + * Date: 2023/8/7 19:27【需求编号】 + * + * @author clam + * @version V1.0.0 + */ + +public interface DeviceOperate { + String QUERY = "查询出厂设备"; + String UPDATESTATUSBYNDID="根据网关id调整设备接入状态"; + String ADD = "新增出厂设备"; + + String DELETE = "删除出厂设备"; + + String UPDATE = "修改出厂设备"; + + String SHARE ="设备扫码分享"; + String TRANSFER ="设备转移"; + + String DELETE_1 ="设备删除"; + String CANCELSHARE ="取消分享"; +} diff --git a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/param/CsEdDataAddParm.java b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/param/CsEdDataAddParm.java index 73b0894..742cd60 100644 --- a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/param/CsEdDataAddParm.java +++ b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/param/CsEdDataAddParm.java @@ -68,7 +68,7 @@ public class CsEdDataAddParm { * 版本类型 */ @ApiModelProperty(value = "版本类型") - @NotBlank(message="版本类型不能为空!") +// @NotBlank(message="版本类型不能为空!") private String versionType; @ApiModelProperty(value = "crc信息") diff --git a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/param/EngineerIdParam.java b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/param/EngineerIdParam.java new file mode 100644 index 0000000..f17b1a6 --- /dev/null +++ b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/param/EngineerIdParam.java @@ -0,0 +1,19 @@ +package com.njcn.csdevice.pojo.param; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +import java.util.List; + +/** + * Description: + * Date: 2023/8/7 15:24【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Data +@ApiModel(value = "关注工程集合,app端需用对象包") +public class EngineerIdParam { + private List engineerIds; +} diff --git a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/po/CsLogsPO.java b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/po/CsLogsPO.java new file mode 100644 index 0000000..bc47dd4 --- /dev/null +++ b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/po/CsLogsPO.java @@ -0,0 +1,106 @@ +package com.njcn.csdevice.pojo.po; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.njcn.db.bo.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + +import java.time.LocalDateTime; +import java.util.Date; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +/** + * + * Description: + * Date: 2023/8/7 14:02【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Data +@TableName(value = "cs_logs") +public class CsLogsPO { + @TableId(value = "id", type = IdType.ASSIGN_UUID) + private String id; + + + /** + * 用户名称 + */ + @TableField(value = "user_name") + private String userName; + + /** + * 操作 + */ + @TableField(value = "operate") + private String operate; + + /** + * 结果(0:失败 1:成功) + */ + @TableField(value = "`result`") + private Integer result; + + /** + * 失败原因 + */ + @TableField(value = "fail_reason") + private String failReason; + + /** + * 登录名称 + */ + @TableField(value = "login_name") + private String loginName; + + /** + * 创建用户 + */ + @TableField(fill = FieldFill.INSERT, insertStrategy = FieldStrategy.IGNORED) + private String createBy; + + + /** + * 创建时间 + */ + @TableField(fill = FieldFill.INSERT, insertStrategy = FieldStrategy.IGNORED) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTime; + + /** + * 更新用户 + */ + @TableField(fill = FieldFill.INSERT_UPDATE, insertStrategy = FieldStrategy.IGNORED) + private String updateBy; + + /** + * 更新时间 + */ + @TableField(fill = FieldFill.INSERT_UPDATE, insertStrategy = FieldStrategy.IGNORED) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime updateTime; + + public static final String COL_ID = "id"; + + public static final String COL_USER_NAME = "user_name"; + + public static final String COL_OPERATE = "operate"; + + public static final String COL_RESULT = "result"; + + public static final String COL_FAIL_REASON = "fail_reason"; + + public static final String COL_CREATE_BY = "create_by"; + + public static final String COL_CREATE_TIME = "create_time"; + + public static final String COL_UPDATE_BY = "update_by"; + + public static final String COL_UPDATE_TIME = "update_time"; + + public static final String COL_LOGIN_NAME = "login_name"; +} \ No newline at end of file diff --git a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/vo/CsMarketDataVO.java b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/vo/CsMarketDataVO.java index 3f9d4da..2f69ca1 100644 --- a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/vo/CsMarketDataVO.java +++ b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/vo/CsMarketDataVO.java @@ -31,4 +31,7 @@ public class CsMarketDataVO { private String engineerId; private String engineerName; + /* + * 0未选择,1已选择*/ + private String isSelect; } \ No newline at end of file diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/equipment/CsLogController.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/equipment/CsLogController.java new file mode 100644 index 0000000..2138bfc --- /dev/null +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/equipment/CsLogController.java @@ -0,0 +1,70 @@ +package com.njcn.csdevice.controller.equipment; + +import com.njcn.common.pojo.annotation.OperateInfo; +import com.njcn.common.pojo.constant.OperateType; +import com.njcn.common.pojo.dto.DeviceLogDTO; +import com.njcn.common.pojo.dto.LogInfoDTO; +import com.njcn.common.pojo.enums.common.LogEnum; +import com.njcn.common.pojo.enums.response.CommonResponseEnum; +import com.njcn.common.pojo.response.HttpResult; +import com.njcn.common.utils.HttpResultUtil; +import com.njcn.csdevice.pojo.param.CsMarketDataParam; +import com.njcn.csdevice.pojo.po.CsLogsPO; +import com.njcn.csdevice.service.impl.CsLogsPOService; +import com.njcn.web.controller.BaseController; +import com.njcn.web.utils.RequestUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * Description: + * Date: 2023/8/7 14:21【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@RestController +@Slf4j +@Api(tags = "日志管理") +@AllArgsConstructor +@RequestMapping("/cslog") +public class CsLogController extends BaseController { + private final CsLogsPOService csLogsPOService; + + + + /** + * 插入审计日志 + */ + @OperateInfo(info = LogEnum.SYSTEM_COMMON, operateType = OperateType.ADD) + @PostMapping("/add") + @ApiOperation("插入设备日志") + @ApiImplicitParam(name = "deviceLogDTO", value = "插入日志参数", required = true) + public HttpResult addUserLog(@RequestBody DeviceLogDTO deviceLogDTO) { + String methodDescribe = getMethodDescribe("addUserLog"); + csLogsPOService.addLog(deviceLogDTO); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); + } + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/queryLog") + @ApiOperation("查询日志") + @ApiImplicitParam(name = "csMarketDataParams", value = "新增营销数据参数", required = true) + public HttpResult> queryLog(){ + String username = RequestUtil.getUsername(); + String methodDescribe = getMethodDescribe("queryLog"); + List list = csLogsPOService.lambdaQuery().eq(CsLogsPO::getUserName, username).list(); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe); + } + + + +} diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/equipment/DeviceUserController.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/equipment/DeviceUserController.java index 651c970..90fcc04 100644 --- a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/equipment/DeviceUserController.java +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/equipment/DeviceUserController.java @@ -5,9 +5,11 @@ import com.njcn.common.pojo.enums.common.LogEnum; import com.njcn.common.pojo.enums.response.CommonResponseEnum; import com.njcn.common.pojo.response.HttpResult; import com.njcn.common.utils.HttpResultUtil; +import com.njcn.csdevice.enums.DeviceOperate; import com.njcn.csdevice.pojo.po.CsDeviceUserPO; import com.njcn.csdevice.pojo.vo.DevCountVO; import com.njcn.csdevice.service.CsDeviceUserPOService; +import com.njcn.web.advice.DeviceLog; import com.njcn.web.controller.BaseController; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; @@ -46,6 +48,7 @@ public class DeviceUserController extends BaseController { @PostMapping("/share") @ApiOperation("设备扫码分享") @ApiImplicitParam(name = "ids", value = "设备id集合", required = true) + @DeviceLog(operateType = DeviceOperate.SHARE) public HttpResult share(@RequestParam("ids") List ids){ String methodDescribe = getMethodDescribe("share"); @@ -84,6 +87,7 @@ public class DeviceUserController extends BaseController { @PostMapping("/transfer") @ApiOperation("设备转移(直接扫码不用申请)") @ApiImplicitParam(name = "ids", value = "设备Id集合", required = true) + @DeviceLog(operateType = DeviceOperate.TRANSFER) public HttpResult transfer(@RequestParam("ids") List ids){ String methodDescribe = getMethodDescribe("transfer"); @@ -95,6 +99,7 @@ public class DeviceUserController extends BaseController { @PostMapping("/delete") @ApiOperation("设备删除") @ApiImplicitParam(name = "eid", value = "设备Id", required = true) + @DeviceLog(operateType = DeviceOperate.DELETE_1) public HttpResult delete(@RequestParam("eid") String eid){ String methodDescribe = getMethodDescribe("delete"); @@ -106,6 +111,7 @@ public class DeviceUserController extends BaseController { @PostMapping("/cancelShare") @ApiOperation("取消分享") @ApiImplicitParam(name = "eid", value = "设备Id", required = true) + @DeviceLog(operateType = DeviceOperate.CANCELSHARE) public HttpResult cancelShare(@RequestParam("eid") String eid){ String methodDescribe = getMethodDescribe("cancelShare"); diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/equipment/EquipmentDeliveryController.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/equipment/EquipmentDeliveryController.java index 92a8763..4449aa3 100644 --- a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/equipment/EquipmentDeliveryController.java +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/equipment/EquipmentDeliveryController.java @@ -7,6 +7,7 @@ import com.njcn.common.pojo.enums.common.LogEnum; import com.njcn.common.pojo.enums.response.CommonResponseEnum; import com.njcn.common.pojo.response.HttpResult; import com.njcn.common.utils.HttpResultUtil; +import com.njcn.csdevice.enums.DeviceOperate; import com.njcn.csdevice.pojo.dto.CsEquipmentDeliveryDTO; import com.njcn.csdevice.pojo.param.CsEquipmentDeliveryAddParm; import com.njcn.csdevice.pojo.param.CsEquipmentDeliveryAuditParm; @@ -18,6 +19,7 @@ import com.njcn.csdevice.pojo.vo.DeviceManagerVO; import com.njcn.csdevice.pojo.vo.ProjectEquipmentVO; import com.njcn.csdevice.service.CsEquipmentDeliveryService; import com.njcn.csdevice.service.IMqttUserService; +import com.njcn.web.advice.DeviceLog; import com.njcn.web.controller.BaseController; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; @@ -55,6 +57,7 @@ public class EquipmentDeliveryController extends BaseController { @PostMapping("/addEquipmentDelivery") @ApiOperation("新增出厂设备") @ApiImplicitParam(name = "csEquipmentDeliveryAddParm", value = "新增项目参数", required = true) + @DeviceLog(operateType = DeviceOperate.ADD) public HttpResult addEquipmentDelivery(@RequestBody @Validated CsEquipmentDeliveryAddParm csEquipmentDeliveryAddParm){ String methodDescribe = getMethodDescribe("addEquipmentDelivery"); Boolean flag = csEquipmentDeliveryService.save (csEquipmentDeliveryAddParm); @@ -69,6 +72,7 @@ public class EquipmentDeliveryController extends BaseController { @OperateInfo(info = LogEnum.BUSINESS_COMMON) @PostMapping("/AuditEquipmentDelivery") @ApiOperation("删除出厂设备") + @DeviceLog(operateType = DeviceOperate.DELETE) public HttpResult AuditEquipmentDelivery(@RequestParam("id")String id ){ String methodDescribe = getMethodDescribe("AuditEquipmentDelivery"); Boolean flag = csEquipmentDeliveryService.AuditEquipmentDelivery(id); @@ -78,6 +82,7 @@ public class EquipmentDeliveryController extends BaseController { @OperateInfo(info = LogEnum.BUSINESS_COMMON) @PostMapping("/updateEquipmentDelivery") @ApiOperation("修改出厂设备") + @DeviceLog(operateType = DeviceOperate.UPDATE) @ApiImplicitParam(name = "csEquipmentDeliveryAuditParm", value = "新增项目参数", required = true) public HttpResult updateEquipmentDelivery(@RequestBody @Validated CsEquipmentDeliveryAuditParm csEquipmentDeliveryAuditParm ){ String methodDescribe = getMethodDescribe("updateEquipmentDelivery"); @@ -91,6 +96,7 @@ public class EquipmentDeliveryController extends BaseController { @PostMapping("/queryEquipmentByndid") @ApiOperation("通过ndid查询出厂设备") @ApiImplicitParam(name = "ndid", value = "网关识别码", required = true) + @DeviceLog(operateType = DeviceOperate.QUERY) public HttpResult queryEquipmentByndid(@RequestParam("ndid")String ndid){ String methodDescribe = getMethodDescribe("queryEquipmentByndid"); @@ -101,6 +107,7 @@ public class EquipmentDeliveryController extends BaseController { @OperateInfo(info = LogEnum.BUSINESS_COMMON) @PostMapping("/queryEquipmentByProject") @ApiOperation("通过项目查询出厂设备") + @DeviceLog(operateType = DeviceOperate.QUERY) @ApiImplicitParam(name = "projectEquipmentQueryParm", value = "项目信息", required = true) public HttpResult> queryEquipmentByProject(@RequestBody ProjectEquipmentQueryParm projectEquipmentQueryParm){ String methodDescribe = getMethodDescribe("queryEquipmentByProject"); @@ -115,6 +122,7 @@ public class EquipmentDeliveryController extends BaseController { @ApiImplicitParam(name = "nDId", value = "网关id", required = true), @ApiImplicitParam(name = "status", value = "状态", required = true) }) + @DeviceLog(operateType = DeviceOperate.UPDATESTATUSBYNDID) public HttpResult updateStatusBynDid(@RequestParam("nDId") String nDid,@RequestParam("status") Integer status){ String methodDescribe = getMethodDescribe("updateStatusBynDid"); csEquipmentDeliveryService.updateStatusBynDid(nDid,status); @@ -124,6 +132,7 @@ public class EquipmentDeliveryController extends BaseController { @PostMapping("/queryEquipmentById") @ApiOperation("设备查询通过id获取") @ApiImplicitParam(name = "ids", value = "设备id集合", required = true) + @DeviceLog(operateType = DeviceOperate.QUERY) public HttpResult> queryEquipmentById(@RequestParam List ids){ String methodDescribe = getMethodDescribe("queryEquipmentById"); List csEquipmentDeliveryPOS = csEquipmentDeliveryService.listByIds(ids); @@ -139,6 +148,7 @@ public class EquipmentDeliveryController extends BaseController { @PostMapping("/list") @ApiOperation("出厂设备列表") @ApiImplicitParam(name = "param", value = "查询参数", required = true) + @DeviceLog(operateType = DeviceOperate.QUERY) public HttpResult> list(@RequestBody CsEquipmentDeliveryQueryParm param){ String methodDescribe = getMethodDescribe("list"); Page page = csEquipmentDeliveryService.list(param); @@ -153,6 +163,7 @@ public class EquipmentDeliveryController extends BaseController { @ApiImplicitParam(name = "type", value = "类型", required = true), @ApiImplicitParam(name = "lineId", value = "监测点id", required = false) }) + @DeviceLog(operateType = DeviceOperate.QUERY) public HttpResult getDeviceData(@RequestParam String deviceId,@RequestParam String type,@RequestParam String lineId){ String methodDescribe = getMethodDescribe("getDeviceData"); DeviceManagerVO vo = csEquipmentDeliveryService.getDeviceData(deviceId,type,lineId); diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/project/CsMarketDataController.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/project/CsMarketDataController.java index ae6a26c..9846e01 100644 --- a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/project/CsMarketDataController.java +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/project/CsMarketDataController.java @@ -6,12 +6,14 @@ import com.njcn.common.pojo.enums.response.CommonResponseEnum; import com.njcn.common.pojo.response.HttpResult; import com.njcn.common.utils.HttpResultUtil; import com.njcn.csdevice.pojo.param.CsMarketDataParam; +import com.njcn.csdevice.pojo.param.EngineerIdParam; import com.njcn.csdevice.pojo.po.CsLedger; import com.njcn.csdevice.pojo.vo.CsLedgerVO; import com.njcn.csdevice.pojo.vo.CsMarketDataVO; import com.njcn.csdevice.service.CsLinePOService; import com.njcn.csdevice.service.CsMarketDataService; import com.njcn.web.controller.BaseController; +import com.njcn.web.utils.RequestUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; @@ -31,7 +33,7 @@ import java.util.List; */ @RestController @Slf4j -@Api(tags = "营销数据配置") +@Api(tags = "营销,工程数据配置") @AllArgsConstructor @RequestMapping("/csMarketData") public class CsMarketDataController extends BaseController { @@ -39,7 +41,7 @@ public class CsMarketDataController extends BaseController { @OperateInfo(info = LogEnum.BUSINESS_COMMON) @PostMapping("/add") - @ApiOperation("新增营销数据") + @ApiOperation("新增营销,工程数据") @ApiImplicitParam(name = "csMarketDataParams", value = "新增营销数据参数", required = true) public HttpResult add( @RequestBody List csMarketDataParams){ String methodDescribe = getMethodDescribe("add"); @@ -47,10 +49,20 @@ public class CsMarketDataController extends BaseController { Boolean flag = csMarketDataService.add(csMarketDataParams); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, flag, methodDescribe); } + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/follow") + @ApiOperation("工程人员新增关注") + @ApiImplicitParam(name = "engineerIdParams", value = "新增营销数据参数", required = true) + public HttpResult follow( @RequestBody EngineerIdParam engineerIdParams){ + String methodDescribe = getMethodDescribe("follow"); + + Boolean flag = csMarketDataService.follow(engineerIdParams); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, flag, methodDescribe); + } @OperateInfo(info = LogEnum.BUSINESS_COMMON) @PostMapping("/remove") - @ApiOperation("移除营销数据") + @ApiOperation("移除营销,工程数据") // @ApiImplicitParam(name = "ids", value = "删除id集合", required = true) public HttpResult remove(@RequestParam("ids") List ids){ String methodDescribe = getMethodDescribe("remove"); @@ -60,7 +72,7 @@ public class CsMarketDataController extends BaseController { } @OperateInfo(info = LogEnum.BUSINESS_COMMON) @PostMapping("/queryByUseId") - @ApiOperation("查询营销数据") + @ApiOperation("查询营销,工程数据") public HttpResult> queryByUseId(@RequestParam("userId")String userId){ String methodDescribe = getMethodDescribe("queryByUseId"); @@ -70,11 +82,21 @@ public class CsMarketDataController extends BaseController { @OperateInfo(info = LogEnum.BUSINESS_COMMON) @PostMapping("/queryEnginnerByUseId") - @ApiOperation("查询营销人员未选择的工程") + @ApiOperation("查询营销,工程人员未选择的工程") public HttpResult> queryEnginnerByUseId(@RequestParam("userId")String userId){ String methodDescribe = getMethodDescribe("queryByUseId"); List list = csMarketDataService.queryEnginnerByUseId(userId); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe); } + + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/queryAllEnginner") + @ApiOperation("查询营销,工程人员工程") + public HttpResult> queryAllEnginner(){ + String methodDescribe = getMethodDescribe("queryAllEnginner"); + String userId = RequestUtil.getUserIndex(); + List list = csMarketDataService.queryAllEnginner(userId); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe); + } } diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/handler/MqttMessageHandler.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/handler/MqttMessageHandler.java new file mode 100644 index 0000000..ea7d0d4 --- /dev/null +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/handler/MqttMessageHandler.java @@ -0,0 +1,50 @@ +package com.njcn.csdevice.handler; + + +import com.github.tocrhz.mqtt.annotation.MqttSubscribe; + +import com.github.tocrhz.mqtt.annotation.Payload; +import com.github.tocrhz.mqtt.publisher.MqttPublisher; +import com.njcn.common.pojo.dto.DeviceLogDTO; +import com.njcn.common.utils.PubUtils; +import com.njcn.csdevice.service.impl.CsLogsPOService; + +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Component; + +import java.nio.charset.StandardCharsets; +import java.text.DecimalFormat; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +/** + * @author xuyang + * @version 1.0.0 + * @date 2023年06月10日 09:41 + */ +@Slf4j +@Component +@AllArgsConstructor +public class MqttMessageHandler { + + + private final CsLogsPOService csLogsPOService; + + /** + * 插入devicelog + */ + @MqttSubscribe(value = "/deviceLog") + public void responseRtData(String topic, MqttMessage message, @Payload String payload) { + DeviceLogDTO deviceLogDTO = PubUtils.json2obj(new String(message.getPayload(), StandardCharsets.UTF_8),DeviceLogDTO.class); + csLogsPOService.addLog(deviceLogDTO); + } + + +} diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/mapper/CsLogsPOMapper.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/mapper/CsLogsPOMapper.java new file mode 100644 index 0000000..f0678db --- /dev/null +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/mapper/CsLogsPOMapper.java @@ -0,0 +1,15 @@ +package com.njcn.csdevice.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.njcn.csdevice.pojo.po.CsLogsPO; + +/** + * + * Description: + * Date: 2023/8/7 14:02【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +public interface CsLogsPOMapper extends BaseMapper { +} \ No newline at end of file diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/mapper/mapping/CsLogsPOMapper.xml b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/mapper/mapping/CsLogsPOMapper.xml new file mode 100644 index 0000000..80c396c --- /dev/null +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/mapper/mapping/CsLogsPOMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + id, user_name, operate, `result`, fail_reason, create_by, create_time, update_by, + update_time, login_name + + \ No newline at end of file diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/CsLogsPOServiceImpl.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/CsLogsPOServiceImpl.java new file mode 100644 index 0000000..7dfd351 --- /dev/null +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/CsLogsPOServiceImpl.java @@ -0,0 +1,35 @@ +package com.njcn.csdevice.service; + +import com.njcn.common.pojo.dto.DeviceLogDTO; +import com.njcn.web.utils.RequestUtil; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.util.List; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.njcn.csdevice.mapper.CsLogsPOMapper; +import com.njcn.csdevice.pojo.po.CsLogsPO; +import com.njcn.csdevice.service.impl.CsLogsPOService; +import org.springframework.transaction.annotation.Transactional; + +/** + * + * Description: + * Date: 2023/8/7 14:02【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Service +public class CsLogsPOServiceImpl extends ServiceImpl implements CsLogsPOService{ + + @Override +// @Transactional(rollbackFor = {Exception.class}) + public void addLog(DeviceLogDTO deviceLogDTO) { + CsLogsPO csPO = new CsLogsPO(); + BeanUtils.copyProperties(deviceLogDTO,csPO); + csPO.setCreateBy(deviceLogDTO.getUserIndex()); + csPO.setUpdateBy(deviceLogDTO.getUserIndex()); + this.save(csPO); + } +} diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/CsMarketDataService.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/CsMarketDataService.java index 92a3daf..34768bf 100644 --- a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/CsMarketDataService.java +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/CsMarketDataService.java @@ -2,6 +2,7 @@ package com.njcn.csdevice.service; import com.baomidou.mybatisplus.extension.service.IService; import com.njcn.csdevice.pojo.param.CsMarketDataParam; +import com.njcn.csdevice.pojo.param.EngineerIdParam; import com.njcn.csdevice.pojo.po.CsLedger; import com.njcn.csdevice.pojo.po.CsLineTopologyTemplate; import com.njcn.csdevice.pojo.po.CsMarketData; @@ -26,4 +27,7 @@ public interface CsMarketDataService extends IService { List queryEnginnerByUseId(String userId); + List queryAllEnginner(String userId); + + Boolean follow(EngineerIdParam engineerIdParams); } diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsDeviceUserPOServiceImpl.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsDeviceUserPOServiceImpl.java index 5ba878e..4d22473 100644 --- a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsDeviceUserPOServiceImpl.java +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsDeviceUserPOServiceImpl.java @@ -12,9 +12,11 @@ import com.njcn.csdevice.enums.AlgorithmResponseEnum; import com.njcn.csdevice.mapper.CsDeviceUserPOMapper; import com.njcn.csdevice.mapper.CsEquipmentDeliveryMapper; import com.njcn.csdevice.mapper.CsLedgerMapper; +import com.njcn.csdevice.mapper.CsMarketDataMapper; import com.njcn.csdevice.pojo.po.CsDeviceUserPO; import com.njcn.csdevice.pojo.po.CsEquipmentDeliveryPO; import com.njcn.csdevice.pojo.po.CsLedger; +import com.njcn.csdevice.pojo.po.CsMarketData; import com.njcn.csdevice.pojo.vo.CsLedgerVO; import com.njcn.csdevice.pojo.vo.DevCountVO; import com.njcn.csdevice.service.CsDeviceUserPOService; @@ -55,6 +57,7 @@ public class CsDeviceUserPOServiceImpl extends ServiceImplsub_user_id").set(CsDeviceUserPO::getPrimaryUserId,userIndex).update(); }); + //工程人员接受到移交设备,默认把工程加入关注列表 + + String role = RequestUtil.getUserRole(); + List strings = JSONArray.parseArray(role, String.class); + if(CollectionUtils.isEmpty(strings)){ + throw new BusinessException(AlgorithmResponseEnum.UNKNOW_ROLE); + } + List list = iCsLedgerService.lambdaQuery().in(CsLedger::getId, ids).list(); + String[] split = list.get(0).getPids().split(","); + role=strings.get(0); + if(Objects.equals(role, AppRoleEnum.ENGINEERING_USER.getCode())){ + CsMarketData csMarketData = new CsMarketData(); + csMarketData.setEngineerId(split[1]); + csMarketData.setUserId(RequestUtil.getUserIndex()); + QueryWrapper queryWrap = new QueryWrapper<>(); + queryWrap.setEntity(csMarketData); + List csMarketData1 = csMarketDataMapper.selectList(queryWrap); + if(CollectionUtils.isEmpty(csMarketData1)){ + csMarketDataMapper.insert(csMarketData); + } + + } diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsEngineeringServiceImpl.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsEngineeringServiceImpl.java index 7d83fae..79d2c15 100644 --- a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsEngineeringServiceImpl.java +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsEngineeringServiceImpl.java @@ -70,8 +70,14 @@ public class CsEngineeringServiceImpl extends ServiceImpl list = this.lambdaQuery().eq(CsEngineeringPO::getName, csEngineeringAddParm.getName()).eq(CsEngineeringPO::getStatus, "1").list(); + if(list.size()>1){ + throw new BusinessException("工程名重复"); + + } CsLedger csLedger1 = new CsLedger(); csLedger1.setId(csEngineeringPO.getId()); csLedger1.setPid("0"); @@ -128,6 +134,11 @@ public class CsEngineeringServiceImpl extends ServiceImpl list = this.lambdaQuery().eq(CsEngineeringPO::getName, csEngineeringAuditParm.getName()).eq(CsEngineeringPO::getStatus, "1").list(); + if(list.size()>1){ + throw new BusinessException("工程名重复"); + + } return b; } diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsLogsPOService.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsLogsPOService.java new file mode 100644 index 0000000..fb91149 --- /dev/null +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsLogsPOService.java @@ -0,0 +1,18 @@ +package com.njcn.csdevice.service.impl; + +import com.njcn.common.pojo.dto.DeviceLogDTO; +import com.njcn.csdevice.pojo.po.CsLogsPO; +import com.baomidou.mybatisplus.extension.service.IService; + /** + * + * Description: + * Date: 2023/8/7 14:02【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +public interface CsLogsPOService extends IService{ + + + void addLog(DeviceLogDTO deviceLogDTO); + } diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsMarketDataServiceImpl.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsMarketDataServiceImpl.java index 302415a..904beef 100644 --- a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsMarketDataServiceImpl.java +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsMarketDataServiceImpl.java @@ -3,15 +3,18 @@ package com.njcn.csdevice.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.njcn.csdevice.mapper.CsEngineeringMapper; import com.njcn.csdevice.pojo.param.CsMarketDataParam; +import com.njcn.csdevice.pojo.param.EngineerIdParam; import com.njcn.csdevice.pojo.po.CsEngineeringPO; import com.njcn.csdevice.pojo.po.CsLedger; import com.njcn.csdevice.pojo.vo.CsMarketDataVO; import com.njcn.csdevice.service.CsMarketDataService; import com.njcn.csdevice.service.ICsLedgerService; +import com.njcn.web.utils.RequestUtil; import lombok.AllArgsConstructor; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @@ -72,4 +75,44 @@ public class CsMarketDataServiceImpl extends ServiceImpl queryAllEnginner(String userId) { + List result = new ArrayList<>(); + List list = csLedgerService.lambdaQuery().eq(CsLedger::getState, 1).eq(CsLedger::getLevel, 0).list(); + List csMarketDataVOS = this.queryByUseId(userId); + List collect = csMarketDataVOS.stream().map(CsMarketDataVO::getEngineerId).collect(Collectors.toList()); + List collect1 = list.stream().filter(temp -> !collect.contains(temp.getId())).collect(Collectors.toList()); + csMarketDataVOS.forEach(temp->{ + temp.setIsSelect("1"); + result.add(temp); + }); + collect1.forEach(temp->{ + CsMarketDataVO vo= new CsMarketDataVO(); + vo.setEngineerName(temp.getName()); + vo.setEngineerId(temp.getId()); + vo.setIsSelect("0"); + result.add(vo); + }); + + return result; + } + + @Override + @Transactional(rollbackFor = {Exception.class}) + public Boolean follow(EngineerIdParam engineerIdParams) { + String userIndex = RequestUtil.getUserIndex(); + QueryWrapper queryWrap = new QueryWrapper<>(); + queryWrap.eq("user_id",userIndex); + this.remove(queryWrap); + List csMarketData = new ArrayList<>(); + engineerIdParams.getEngineerIds().forEach(temp->{ + CsMarketData cs = new CsMarketData(); + cs.setEngineerId(temp); + cs.setUserId(userIndex); + csMarketData.add(cs); + }); + this.saveBatch(csMarketData,20); + return true; + } }