HydomcAssetServiceImpl.java 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. package com.persagy.transfer.service.impl;
  2. import java.util.Date;
  3. import org.springframework.stereotype.Service;
  4. import org.springframework.transaction.annotation.Transactional;
  5. import com.alibaba.fastjson.JSONObject;
  6. import com.baomidou.dynamic.datasource.annotation.DS;
  7. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  8. import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
  9. import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
  10. import com.persagy.common.utils.DateUtil;
  11. import com.persagy.common.utils.StringUtil;
  12. import com.persagy.db.service.impl.SuperServiceImpl;
  13. import com.persagy.transfer.constant.DictType;
  14. import com.persagy.transfer.constant.InfosKeyConstant;
  15. import com.persagy.transfer.constant.SwitchConstant;
  16. import com.persagy.transfer.mapper.HydomcAssetMapper;
  17. import com.persagy.transfer.pojo.dto.HydomcAsset;
  18. import com.persagy.transfer.pojo.dto.RwdObjectWd;
  19. import com.persagy.transfer.service.IHydomcAssetService;
  20. import com.persagy.transfer.utils.StringTool;
  21. import cn.hutool.core.util.StrUtil;
  22. import lombok.extern.slf4j.Slf4j;
  23. /**
  24. * 设备信息主表
  25. *
  26. * @version 1.0.0
  27. * @company persagy
  28. * @author zhangqiankun
  29. * @date 2021-09-16 10:45:41
  30. */
  31. @Slf4j
  32. @Service
  33. @DS(value = SwitchConstant.DS_MASTER_2)
  34. public class HydomcAssetServiceImpl extends SuperServiceImpl<HydomcAssetMapper, HydomcAsset> implements IHydomcAssetService {
  35. @Override
  36. public HydomcAsset getHydomcAssetByPKey(String sbybm) {
  37. LambdaQueryWrapper<HydomcAsset> queryHydomcAssetWrapper = new HydomcAsset.BuilderQueryWrapper().sbybmEq(sbybm).builder();
  38. return this.baseMapper.selectOne(queryHydomcAssetWrapper);
  39. }
  40. @Override
  41. @Transactional
  42. public boolean saveHydomcAsset(RwdObjectWd rwdObjectWd, JSONObject infos, String wdProjectId, String classstructureid, String sbybm) {
  43. String equipmentName = StringTool.object2String(infos.get(InfosKeyConstant.EQUIPMENT_NAME));
  44. if (StrUtil.isBlank(equipmentName)) {
  45. log.warn("万达设备名称为空,不进行同步,本方对象ID:{}", rwdObjectWd.getId());
  46. return false;
  47. }
  48. int valid = rwdObjectWd.getValid() == null ? 0 : rwdObjectWd.getValid();
  49. Date updateTime = rwdObjectWd.getUpdateTime() == null ? DateUtil.date().toJdkDate() : rwdObjectWd.getUpdateTime();
  50. String updateUser = StrUtil.isBlank(rwdObjectWd.getUpdateUser()) ? SwitchConstant.USER_ID : rwdObjectWd.getUpdateUser();
  51. log.info("设备数据同步至万达数据库,本方对象ID:{},设备状态:{},万达项目ID:{}, 设备分类ID:{}", rwdObjectWd.getId(), valid, wdProjectId, classstructureid);
  52. Integer result = null;
  53. HydomcAsset hydomcAsset = this.getHydomcAssetByPKey(sbybm);
  54. if (hydomcAsset == null) {
  55. hydomcAsset = this.buildHydomcAsset(infos, wdProjectId, classstructureid, updateUser, valid, updateTime);
  56. result = this.baseMapper.insert(hydomcAsset);
  57. return SqlHelper.retBool(result);
  58. }
  59. // 数据更新时间 增量字段
  60. LambdaUpdateWrapper<HydomcAsset> updateWrapper = new HydomcAsset.BuilderUpdateWrapper().sbybmEq(sbybm).builder();
  61. if (valid == 0) {
  62. updateWrapper.set(HydomcAsset::getStatus, SwitchConstant.SCRAP); // 设备状态 运行中/报废 默认都为运行中
  63. updateWrapper.set(HydomcAsset::getDatastatus, SwitchConstant.IS_DELETE); // 数据状态 update/delete 当数据状态为delete时,设备状态需改为报废
  64. updateWrapper.set(HydomcAsset::getChangedate, updateTime); // 数据更新时间 增量字段
  65. result = this.baseMapper.update(null, updateWrapper);
  66. } else {
  67. hydomcAsset = this.buildHydomcAsset(infos, wdProjectId, classstructureid, updateUser, valid, updateTime);
  68. hydomcAsset.setSbybm(sbybm);
  69. result = this.baseMapper.update(hydomcAsset, updateWrapper);
  70. }
  71. return SqlHelper.retBool(result);
  72. }
  73. @Override
  74. public HydomcAsset buildHydomcAsset(JSONObject infos, String wdProjectId, String classstructureid, String updateUser, int valid, Date updateTime) {
  75. String sfhysy = DictType.getCodeDesc(InfosKeyConstant.WISDOM_CLOUD_USE, StringTool.object2String(infos.get(InfosKeyConstant.WISDOM_CLOUD_USE)));
  76. sfhysy = StringUtil.isBlank(sfhysy) ? "是" : sfhysy;
  77. String sfzld = DictType.getCodeDesc(InfosKeyConstant.MAIN_STORE, StringTool.object2String(infos.get(InfosKeyConstant.MAIN_STORE)));
  78. sfzld = StringUtil.isBlank(sfzld) ? "否" : sfzld;
  79. HydomcAsset hydomcAsset = HydomcAsset.builder().siteid(wdProjectId) // 项目唯一id,可采用租赁系统广场id,同步后不可更改
  80. // 主键 无其他主键可采用设备编码为主键,但要确保唯一(工程信息化设备原码)
  81. .sbybm(StringTool.object2String(infos.get(InfosKeyConstant.EQUIPMENT_CODE)))
  82. // 详细设备安装位置,格式:楼体-楼层-区域 没有key 后续补充
  83. .wzqy(StringTool.object2String(infos.get(InfosKeyConstant.EQUIPMENT_INSTALL_AREA)))
  84. // 设备服务区域 设备/系统服务范围
  85. .fwqy(StringTool.object2String(infos.get(InfosKeyConstant.EQUIPMENT_SERVICE_ZONE)))
  86. // 设备名称
  87. .description(StringTool.object2String(infos.get(InfosKeyConstant.EQUIPMENT_NAME)))
  88. // 厂商设备型号
  89. .sbxh(StringTool.object2String(infos.get(InfosKeyConstant.EQUIPMENT_MODEL)))
  90. // 设备分类名称
  91. .classstructureid(classstructureid)
  92. // 设备状态 运行中/报废 默认都为运行中
  93. .status(DictType.getCodeDesc(InfosKeyConstant.EQUIPMENT_STATUS, StringTool.object2String(infos.get(InfosKeyConstant.EQUIPMENT_STATUS))))
  94. // 设备序号 同类设备的序号,即第几台设备:第几台电梯
  95. .sbxhh(StringTool.object2String(infos.get(InfosKeyConstant.EQUIPMENT_IDX)))
  96. // 厂家设备序列号
  97. .cjsbxh(StringTool.object2String(infos.get(InfosKeyConstant.SERIAL_NUM)))
  98. // 生产商公司供方管理系统编码code
  99. .manufacturer(StringTool.object2String(infos.get(InfosKeyConstant.MANUFACTURER)))
  100. // 供应商公司供方管理系统编码code
  101. .vendor(StringTool.object2String(infos.get(InfosKeyConstant.SUPPLIER)))
  102. // 服务商公司供方管理系统编码code
  103. .fws(StringTool.object2String(infos.get(InfosKeyConstant.MAINTAINER)))
  104. // 采购金额 填写人民币元
  105. .purchaseprice(StringTool.object2Double(infos.get(InfosKeyConstant.PURCHASE_PRICE)))
  106. // 折旧/使用年限 按年填写 如3年半则填写 3.5
  107. .zjsynx(StringTool.object2Double(infos.get(InfosKeyConstant.SERVICE_LIFE)))
  108. // 生产日期/出厂日期 年/月/日
  109. .scrq(StringTool.object2SqlDate(infos.get(InfosKeyConstant.PRODUCT_DATE)))
  110. // 采购日期
  111. .cgrq(StringTool.object2SqlDate(infos.get(InfosKeyConstant.PURCHASE_DATE)))
  112. // 安装日期
  113. .azdate(StringTool.object2SqlDate(infos.get(InfosKeyConstant.INSTALL_DATE)))
  114. // 启用日期
  115. .installdate(StringTool.object2SqlDate(infos.get(InfosKeyConstant.ENABLE_DATE)))
  116. // 质保开始日期
  117. .zbksrq(StringTool.object2SqlDate(infos.get(InfosKeyConstant.WARRANTY_START_DATE)))
  118. // 质保结束日期
  119. .zbjsrq(StringTool.object2SqlDate(infos.get(InfosKeyConstant.WARRANTY_END_DATE)))
  120. // 中修周期 单位为月
  121. .zxzq(StringTool.object2Integer(infos.get(InfosKeyConstant.MEDIUM_REPAIR_CYCLE)))
  122. // 大修周期 单位为月
  123. .dxzq(StringTool.object2Integer(infos.get(InfosKeyConstant.OVERHAUL_CYCLE)))
  124. // 物业类型 自持/销售/合作方
  125. .wylx(DictType.getCodeDesc(InfosKeyConstant.PROPERTY_TYPE, StringTool.object2String(infos.get(InfosKeyConstant.PROPERTY_TYPE))))
  126. // 设备管理归属
  127. .sbglgs(DictType.getCodeDesc(InfosKeyConstant.EQUIPMENT_MANAGE_OWNERSHIP, StringTool.object2String(infos.get(InfosKeyConstant.EQUIPMENT_MANAGE_OWNERSHIP))))
  128. // 慧云设备编码
  129. .hysbbm(StringTool.object2String(infos.get(InfosKeyConstant.WISDOM_CLOUD_LOCAL_CODE)))
  130. // 是否慧云使用 是/否 缺省为 是
  131. .sfhysy(sfhysy)
  132. // 是否是主力店 缺省为 否
  133. .sfzld(sfzld)
  134. // 备注 wD_beizhu
  135. .mark(StringTool.object2String(infos.get(InfosKeyConstant.REMARK)))
  136. // 数据状态 update/delete 当数据状态为delete时,设备状态需改为报废
  137. .datastatus(valid == 0 ? SwitchConstant.IS_DELETE : SwitchConstant.IS_UPDATE)
  138. // 数据更新时间 增量字段
  139. .changedate(updateTime)
  140. // 更新人员
  141. .ctx(updateUser)
  142. .build();
  143. if (valid == 0) {
  144. hydomcAsset.setStatus(SwitchConstant.SCRAP);
  145. }
  146. return hydomcAsset;
  147. }
  148. }