lin 3 lat temu
rodzic
commit
d211d9d9ab

+ 2 - 0
zoniot-rmcp/zoniot-rmcp-api/src/main/java/com/zcxk/rmcp/api/dto/install/InstallPlanInputDto.java

@@ -15,6 +15,8 @@ import java.util.List;
 public class InstallPlanInputDto {
 
 
+    @ApiModelProperty(value="租户")
+    private String tenantId;
 
     @ApiModelProperty(value="计划名称")
     private String planName;

+ 46 - 0
zoniot-rmcp/zoniot-rmcp-api/src/main/java/com/zcxk/rmcp/api/dto/install/MeterSyncDto.java

@@ -0,0 +1,46 @@
+package com.zcxk.rmcp.api.dto.install;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+@ApiModel
+public class MeterSyncDto {
+    @ApiModelProperty("设备编号")
+    private String deviceNo;
+
+    @ApiModelProperty("地址")
+    private String locDesc;
+
+    @ApiModelProperty("客户id")
+    private Integer customerId;
+
+    @ApiModelProperty("水表电子号")
+    private String waterMeterNo;
+
+    @ApiModelProperty("水表档案号")
+    private String fileNo;
+
+    @ApiModelProperty("状态")
+    private Integer status;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建时间")
+    private LocalDateTime dateCreate;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新时间")
+    private LocalDateTime dateUpdate;
+
+    @ApiModelProperty("水表起度")
+    private String initialData;
+
+    @ApiModelProperty("设备型号  厂商/系列/型号")
+    private String deviceType;
+    @ApiModelProperty("计费系统档案号")
+    private String meterCode;
+}

+ 18 - 0
zoniot-rmcp/zoniot-rmcp-api/src/main/java/com/zcxk/rmcp/api/dto/install/MeterSyncInputDto.java

@@ -0,0 +1,18 @@
+package com.zcxk.rmcp.api.dto.install;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class MeterSyncInputDto {
+    @ApiModelProperty("创建日期 格式:yyyyMMdd")
+    private String createDate;
+
+    @ApiModelProperty(value="租户")
+    private String tenantId;
+
+    @ApiModelProperty("水表档案号")
+    private List<String> fileNo;
+}

+ 35 - 0
zoniot-rmcp/zoniot-rmcp-api/src/main/java/com/zcxk/rmcp/api/feign/SyncDataClient.java

@@ -0,0 +1,35 @@
+package com.zcxk.rmcp.api.feign;
+
+import com.zcxk.core.common.pojo.AjaxMessage;
+import com.zcxk.rmcp.api.dto.install.InstallPlanInputDto;
+import com.zcxk.rmcp.api.dto.install.MeterSyncDto;
+import com.zcxk.rmcp.api.dto.install.MeterSyncInputDto;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+ * @author linqingwei
+ * @date 2021-09-08 9:28
+ */
+@FeignClient(value = "zoniot-rmcp-web")
+public interface SyncDataClient {
+    @PostMapping("/syncData/syncPlan")
+    @ApiOperation(value = "同步计划")
+    public AjaxMessage syncPlan(
+            @RequestBody(required = true) @Valid InstallPlanInputDto installPlanInput
+    );
+
+    @ResponseBody
+    @PostMapping("/syncData/meterSync")
+    @ApiOperation(value = "水表同步接口")
+    public AjaxMessage<List<MeterSyncDto>> meterSync(
+             @RequestBody(required = true) MeterSyncInputDto meterSync
+    );
+}

+ 4 - 0
zoniot-rmcp/zoniot-rmcp-core/src/main/java/com/zcxk/rmcp/core/dao/DeviceMapper.java

@@ -3,6 +3,8 @@ package com.zcxk.rmcp.core.dao;
 
 import com.zcxk.core.common.pojo.UserCondition;
 import com.zcxk.rmcp.api.dto.device.DeviceQueryDto;
+import com.zcxk.rmcp.api.dto.install.MeterSyncDto;
+import com.zcxk.rmcp.api.dto.install.MeterSyncInputDto;
 import com.zcxk.rmcp.api.dto.readmeter.WaterMeterDto;
 import com.zcxk.rmcp.api.dto.install.InstallDeviceDto;
 import com.zcxk.rmcp.api.dto.measurementsettlement.MeasurementSettlementDto;
@@ -186,4 +188,6 @@ public interface DeviceMapper {
     List<WaterMeterDto> findWaterMeterListWithPage(@Param("startIndex") int startIndex, @Param("pageSize") int pageSize);
 
     List<DeviceVo> queryDeviceInfoList(@Param("deviceNo") String deviceNo, @Param("meterNo") String meterNo, @Param("userCondition") UserCondition userCondition);
+
+    List<MeterSyncDto> meterSync(@Param("meterSync") MeterSyncInputDto meterSync);
 }

+ 25 - 0
zoniot-rmcp/zoniot-rmcp-core/src/main/java/com/zcxk/rmcp/core/mapper/DeviceMapper.xml

@@ -807,4 +807,29 @@
     <include refid="permissionCondition"/>
     </where>
   </select>
+
+  <select id="meterSync" resultType="com.zcxk.rmcp.api.dto.install.MeterSyncDto">
+    select
+    rd.device_no,
+    rd.address as loc_desc,
+    rd.tenant_id,
+    rd.meter_no as water_meter_no,
+    rd.file_no as file_no,
+    ril.meter_code as meter_code,
+    rd.status,
+    rd.create_date,
+    rd.update_date,
+    ril.new_begin_degree as initial_data,
+    CONCAT_WS('/',sdm.name,sdt.product_name,sdt.product_model) as device_type
+    from rmcp_device rd
+    left join rmcp_install_list ril on(ril.device_id = rd.id)
+    left join rmcp_product sdt on(sdt.id = rd.product_id)
+    left join rmcp_manufacturer sdm on(sdm.id = sdt.manufacturer_id)
+    where rd.status = 1
+    and rd.tenant_id = #{meterSync.tenantId}
+    and rd.is_install=1
+    <if test="meterSync.createDate != null and meterSync.createDate != ''"> and DATE_FORMAT(rd.install_date, '%Y%m%d' ) = #{meterSync.createDate}</if>
+    and rd.file_no in
+    <foreach collection="meterSync.fileNo" item="item" open="(" separator="," close=")">#{item}</foreach>
+  </select>
 </mapper>

+ 1 - 1
zoniot-rmcp/zoniot-rmcp-web/src/main/java/com/zcxk/rmcp/web/config/ResourceServerConfig.java

@@ -22,7 +22,7 @@ public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
             .authorizeRequests()
             .antMatchers("/swagger-ui.html","/webjars/**", "/swagger-resources/**",
                     "/file/**","/meter/read/record/list/sync/data","/import/downloadFailFile",
-                   "/v2/**")
+                   "/v2/**","/syncData/**")
             .permitAll() //配置不需要身份认证的请求路径
             .anyRequest().authenticated() //其他所有访问路径都需要身份认证
             .and()

+ 4 - 0
zoniot-rmcp/zoniot-rmcp-web/src/main/java/com/zcxk/rmcp/web/controller/InstallPlanController.java

@@ -2,6 +2,8 @@ package com.zcxk.rmcp.web.controller;
 
 import com.zcxk.core.common.pojo.AjaxMessage;
 import com.zcxk.core.mysql.pageing.Pagination;
+import com.zcxk.core.oauth2.pojo.LoginUser;
+import com.zcxk.core.oauth2.util.UserUtil;
 import com.zcxk.rmcp.api.dto.install.InstallDetailDto;
 import com.zcxk.rmcp.api.dto.install.InstallInputDto;
 import com.zcxk.rmcp.api.dto.install.InstallPlanInputDto;
@@ -71,6 +73,8 @@ public class InstallPlanController {
     public AjaxMessage<Void> add(
             @ApiParam(value = "安装计划", required = true) @RequestBody(required = true) @Valid InstallPlanInputDto installPlanInput
     ) {
+        LoginUser loginUser = UserUtil.getCurrentUser();
+        installPlanInput.setTenantId(loginUser.getTenantId());
         installPlanService.add(installPlanInput);
         return AjaxMessage.success();
     }

+ 59 - 0
zoniot-rmcp/zoniot-rmcp-web/src/main/java/com/zcxk/rmcp/web/controller/SyncDataApi.java

@@ -0,0 +1,59 @@
+package com.zcxk.rmcp.web.controller;
+
+import com.zcxk.core.common.pojo.AjaxMessage;
+import com.zcxk.rmcp.api.dto.install.InstallPlanInputDto;
+import com.zcxk.rmcp.api.dto.install.MeterSyncDto;
+import com.zcxk.rmcp.api.dto.install.MeterSyncInputDto;
+import com.zcxk.rmcp.core.dao.DeviceMapper;
+import com.zcxk.rmcp.web.logAdvice.LogAnnotation;
+import com.zcxk.rmcp.web.service.install.InstallPlanService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+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.ResponseBody;
+
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+ * @author linqingwei
+ * @date 2021-09-07 14:12
+ */
+@Controller
+@ResponseBody
+@RequestMapping("/syncData")
+@Api(tags = "计费数据同步接口类")
+public class SyncDataApi {
+
+    @Autowired
+    private InstallPlanService installPlanService;
+    @Autowired
+    private DeviceMapper deviceMapper;
+
+    @ResponseBody
+    @PostMapping("syncPlan")
+    @ApiOperation(value = "同步计划")
+    public AjaxMessage syncPlan(
+            @ApiParam(value = "安装计划", required = true) @RequestBody(required = true) @Valid InstallPlanInputDto installPlanInput
+    ) {
+        installPlanService.add(installPlanInput);
+        return AjaxMessage.success();
+    }
+
+    @ResponseBody
+    @PostMapping("meterSync")
+    @ApiOperation(value = "水表同步接口")
+    public AjaxMessage<List<MeterSyncDto>> meterSync(
+            @ApiParam(value = "参数", required = true) @RequestBody(required = true) MeterSyncInputDto meterSync
+    ){
+        List<MeterSyncDto> list = deviceMapper.meterSync(meterSync);
+        return AjaxMessage.success(list);
+    }
+
+
+}

+ 2 - 2
zoniot-rmcp/zoniot-rmcp-web/src/main/java/com/zcxk/rmcp/web/service/install/impl/InstallPlanServiceImpl.java

@@ -113,7 +113,7 @@ public class InstallPlanServiceImpl implements InstallPlanService {
     @Transactional
     public void add(InstallPlanInputDto dto) {
         log.info("begin InstallPlanServiceImpl add  : " + JSON.toJSONString(dto));
-        LoginUser loginUser = UserUtil.getCurrentUser();
+
 
         //TransactionStatus transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition);
         Integer planId = null;
@@ -130,7 +130,7 @@ public class InstallPlanServiceImpl implements InstallPlanService {
             // 2、保存计划
             InstallPlan installPlan = new InstallPlan();
             BeanCopyUtils.copyProperties(dto, installPlan, InstallPlan.class);
-            installPlan.setTenantId(loginUser.getTenantId());
+            installPlan.setTenantId(dto.getTenantId());
             installPlan.setPlatformType(1);
             this.insertSelective(installPlan);