HydomcAssetServiceImpl.java 8.0 KB

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