123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262 |
- package com.persagy.transfer.service.impl;
- import com.alibaba.fastjson.JSONObject;
- import com.baomidou.dynamic.datasource.annotation.DS;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
- import com.persagy.transfer.constant.InfosKeyConstant;
- import com.persagy.transfer.constant.SwitchConstant;
- import com.persagy.transfer.mapper.HydomcAssetMapper;
- import com.persagy.transfer.mapper.HydomcAssetspecMapper;
- import com.persagy.transfer.mapper.MasterTwoMapper;
- import com.persagy.transfer.pojo.dto.HydomcAsset;
- import com.persagy.transfer.pojo.dto.HydomcAssetspec;
- import com.persagy.transfer.pojo.dto.WdfacilityRelPersagy;
- import com.persagy.transfer.service.IWdDbService;
- import com.persagy.transfer.utils.StringTool;
- import lombok.extern.slf4j.Slf4j;
- import org.apache.commons.lang3.StringUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import java.util.Date;
- import java.util.List;
- /**
- * @description: 万达数据源业务处理
- * @author: YangWanYi
- * @create: 2021-09-16 20:19
- **/
- @Service
- @DS(value = SwitchConstant.DS_MASTER_2)
- @Slf4j
- public class WdDbServiceImpl implements IWdDbService {
- @Autowired
- private MasterTwoMapper masterTwoMapper;
- @Autowired
- private HydomcAssetMapper hydomcAssetMapper;
- @Autowired
- private HydomcAssetspecMapper hydomcAssetspecMapper;
- @Override
- @DS(value = SwitchConstant.DS_MASTER_2)
- public Object getDataByMasterTwo() {
- return this.masterTwoMapper.queryTwo();
- }
- /**
- * @param infosObj 博锐尚格项目表的debugs字段值
- * @param wdProjectId 博锐尚格项目ID映射的万达项目ID
- * @param hydomcAsset 万达设备信息对象
- * @param valid 项目数据对象状态:1有效,0无效
- * @param updateTime 项目最后更新时间
- * @param classstrucrureid 万达设备分类ID
- * @param updateUser 更新人
- * @author YangWanYi
- * @describe 万达设备信息对象数据同步
- * @date 2021/9/16 16:00
- */
- @DS(value = SwitchConstant.DS_MASTER_2)
- public void sycnHydomcAsset(JSONObject infosObj, String wdProjectId, HydomcAsset hydomcAsset, Integer valid, java.util.Date updateTime, String classstrucrureid, String updateUser) {
- log.debug("准备同步万达设备信息对象数据");
- // 根据万达设备信息表的主键查询数据是否存在
- hydomcAsset = this.getHydomcAssetByPKey(StringTool.object2String(infosObj.get(InfosKeyConstant.EQUIPMENT_CODE)));
- if (hydomcAsset == null) {
- log.debug("万达数据库没有这条数据,准备新增");
- hydomcAsset = new HydomcAsset(); // 万达设备信息主表实体
- hydomcAsset.setSbybm(StringTool.object2String(infosObj.get(InfosKeyConstant.EQUIPMENT_CODE))); // 主键 无其他主键可采用设备编码为主键,但要确保唯一(工程信息化设备原码)
- hydomcAsset.setDescription(StringTool.object2String(infosObj.get(InfosKeyConstant.EQUIPMENT_NAME))); // 设备名称
- hydomcAsset.setWzqy(StringTool.object2String(infosObj.get(InfosKeyConstant.EQUIPMENT_INSTALL_AREA))); // 详细设备安装位置,格式:楼体-楼层-区域
- hydomcAsset.setFwqy(StringTool.object2String(infosObj.get(InfosKeyConstant.EQUIPMENT_SERVICE_ZONE))); // 设备服务区域 设备/系统服务范围
- hydomcAsset.setSbxh(StringTool.object2String(infosObj.get(InfosKeyConstant.EQUIPMENT_MODEL))); // 厂商设备型号
- hydomcAsset.setClassstructureid(classstrucrureid); // 对接设备分类id,同步后不可更改
- hydomcAsset.setStatus(valid == 0 ? SwitchConstant.SCRAP : SwitchConstant.RUNNING); // 设备状态 运行中/报废 默认都为运行中
- hydomcAsset.setSbxhh(StringTool.object2String(infosObj.get(InfosKeyConstant.EQUIPMENT_IDX))); // 设备序号 同类设备的序号,即第几台设备:第几台电梯
- hydomcAsset.setCjsbxh(StringTool.object2String(infosObj.get(InfosKeyConstant.SERIAL_NUM))); // 厂家设备序列号
- hydomcAsset.setManufacturer(StringTool.object2String(infosObj.get(InfosKeyConstant.MANUFACTURER))); // 生产商公司供方管理系统编码code
- hydomcAsset.setVendor(StringTool.object2String(infosObj.get(InfosKeyConstant.SUPPLIER))); // 供应商公司供方管理系统编码code
- hydomcAsset.setFws(StringTool.object2String(infosObj.get(InfosKeyConstant.MAINTAINER))); // 服务商公司供方管理系统编码code
- hydomcAsset.setPurchaseprice(Double.valueOf(StringTool.object2String(infosObj.get(InfosKeyConstant.PURCHASE_PRICE)))); // 采购金额 填写人民币元
- hydomcAsset.setZjsynx(StringTool.object2Double(infosObj.get(InfosKeyConstant.SERVICE_LIFE))); // 折旧/使用年限 按年填写 如3年半则填写 3.5
- hydomcAsset.setScrq(StringTool.object2DateTime(infosObj.get(InfosKeyConstant.PRODUCT_DATE))); // 生产日期/出厂日期 年/月/日
- hydomcAsset.setCgrq(StringTool.object2DateTime(infosObj.get(InfosKeyConstant.PURCHASE_DATE))); // 采购日期
- hydomcAsset.setAzdate(StringTool.object2DateTime(infosObj.get(InfosKeyConstant.INSTALL_DATE))); // 安装日期
- hydomcAsset.setInstalldate(StringTool.object2DateTime(infosObj.get(InfosKeyConstant.ENABLE_DATE))); // 启用日期
- hydomcAsset.setZbksrq(StringTool.object2DateTime(infosObj.get(InfosKeyConstant.WARRANTY_START_DATE))); // 质保开始日期
- hydomcAsset.setZbjsrq(StringTool.object2DateTime(infosObj.get(InfosKeyConstant.WARRANTY_END_DATE))); // 质保结束日期
- hydomcAsset.setZxzq(StringTool.object2Integer(infosObj.get(InfosKeyConstant.MEDIUM_REPAIR_CYCLE))); // 中修周期 单位为月
- hydomcAsset.setDxzq(StringTool.object2Integer(infosObj.get(InfosKeyConstant.OVERHAUL_CYCLE))); // 大修周期 单位为月
- hydomcAsset.setWylx(StringTool.object2String(infosObj.get(InfosKeyConstant.PROPERTY_TYPE))); // 物业类型 自持/销售/合作方
- hydomcAsset.setSbglgs(StringTool.object2String(infosObj.get(InfosKeyConstant.EQUIPMENT_MANAGE_OWNERSHIP))); // 设备管理归属 商管/百货/大歌星/超市/影院/大酒楼/其他
- hydomcAsset.setHysbbm(StringTool.object2String(infosObj.get(InfosKeyConstant.WISDOM_CLOUD_LOCAL_CODE))); // 慧云设备编码
- hydomcAsset.setSfhysy(StringTool.object2String(infosObj.get(InfosKeyConstant.WISDOM_CLOUD_USE))); // 是否慧云使用 是/否 缺省为 是
- hydomcAsset.setSfzld(StringTool.object2String(infosObj.get(InfosKeyConstant.MAIN_STORE))); // 是否是主力店 缺省为 否
- hydomcAsset.setMark(StringTool.object2String(infosObj.get(InfosKeyConstant.REMARK))); // 备注 wD_beizhu
- hydomcAsset.setSiteid(wdProjectId); // 项目唯一id,可采用租赁系统广场id,同步后不可更改
- hydomcAsset.setDatastatus(valid == 0 ? SwitchConstant.IS_DELETE : SwitchConstant.IS_UPDATE); // 数据状态 update/delete 当数据状态为delete时,设备状态需改为报废
- hydomcAsset.setChangedate(updateTime); // 数据更新时间 增量字段
- // 新增一个ctx字段 变更人员的万信账号
- hydomcAsset.setCtx(updateUser);
- this.hydomcAssetMapper.insert(hydomcAsset);
- } else {
- UpdateWrapper<HydomcAsset> updateWrapper = new UpdateWrapper<>();
- // 数据更新时间 增量字段
- if (valid == 0) {
- log.debug("万达数据库已经存在该条数据,且博锐尚格这条数据状态为无效,因此直接更新万达这条数据状态为delete即可");
- updateWrapper.set("status", SwitchConstant.SCRAP); // 设备状态 运行中/报废 默认都为运行中
- updateWrapper.set("datastatus", SwitchConstant.IS_DELETE); // 数据状态 update/delete 当数据状态为delete时,设备状态需改为报废
- } else {
- log.debug("万达数据库已经存在该条数据,但博锐尚格这条数据状态为有效,因此需要更新所有字段");
- updateWrapper.set("sbybm", StringTool.object2String(infosObj.get(InfosKeyConstant.EQUIPMENT_CODE))); // 主键 无其他主键可采用设备编码为主键,但要确保唯一(工程信息化设备原码)
- updateWrapper.set("description", StringTool.object2String(infosObj.get(InfosKeyConstant.EQUIPMENT_NAME))); // 设备名称
- updateWrapper.set("wzqy", StringTool.object2String(infosObj.get(InfosKeyConstant.EQUIPMENT_INSTALL_AREA))); // 详细设备安装位置,格式:楼体-楼层-区域
- updateWrapper.set("fwqy", StringTool.object2String(infosObj.get(InfosKeyConstant.EQUIPMENT_SERVICE_ZONE))); // 设备服务区域 设备/系统服务范围
- updateWrapper.set("sbxh", StringTool.object2String(infosObj.get(InfosKeyConstant.EQUIPMENT_MODEL))); // 厂商设备型号
- updateWrapper.set("classstructureid", classstrucrureid); // 对接设备分类id,同步后不可更改
- updateWrapper.set("status", SwitchConstant.RUNNING); // 设备状态 运行中/报废 默认都为运行中
- updateWrapper.set("sbxhh", StringTool.object2String(infosObj.get(InfosKeyConstant.EQUIPMENT_IDX))); // 设备序号 同类设备的序号,即第几台设备:第几台电梯
- updateWrapper.set("cjsbxh", StringTool.object2String(infosObj.get(InfosKeyConstant.SERIAL_NUM))); // 厂家设备序列号
- updateWrapper.set("manufacturer", StringTool.object2String(infosObj.get(InfosKeyConstant.MANUFACTURER))); // 生产商公司供方管理系统编码code
- updateWrapper.set("vendor", StringTool.object2String(infosObj.get(InfosKeyConstant.SUPPLIER))); // 供应商公司供方管理系统编码code
- updateWrapper.set("fws", StringTool.object2String(infosObj.get(InfosKeyConstant.MAINTAINER))); // 服务商公司供方管理系统编码code
- updateWrapper.set("purchaseprice", StringTool.object2Double(Double.valueOf(StringTool.object2String(infosObj.get(InfosKeyConstant.PURCHASE_PRICE))))); // 采购金额 填写人民币元
- updateWrapper.set("zjsynx", StringTool.object2Double(infosObj.get(InfosKeyConstant.SERVICE_LIFE))); // 折旧/使用年限 按年填写 如3年半则填写 3.5
- updateWrapper.set("scrq", StringTool.object2DateTime(infosObj.get(InfosKeyConstant.PRODUCT_DATE))); // 生产日期/出厂日期 年/月/日
- updateWrapper.set("cgrq", StringTool.object2DateTime(infosObj.get(InfosKeyConstant.PURCHASE_DATE))); // 采购日期
- updateWrapper.set("azdate", StringTool.object2DateTime(infosObj.get(InfosKeyConstant.INSTALL_DATE))); // 安装日期
- updateWrapper.set("installdate", StringTool.object2DateTime(infosObj.get(InfosKeyConstant.ENABLE_DATE))); // 启用日期
- updateWrapper.set("zbksrq", StringTool.object2DateTime(infosObj.get(InfosKeyConstant.WARRANTY_START_DATE))); // 质保开始日期
- updateWrapper.set("zbjsrq", StringTool.object2DateTime(infosObj.get(InfosKeyConstant.WARRANTY_END_DATE))); // 质保结束日期
- updateWrapper.set("zxzq", StringTool.object2Integer(infosObj.get(InfosKeyConstant.MEDIUM_REPAIR_CYCLE))); // 中修周期 单位为月
- updateWrapper.set("dxzq", StringTool.object2Integer(infosObj.get(InfosKeyConstant.OVERHAUL_CYCLE))); // 大修周期 单位为月
- updateWrapper.set("wylx", StringTool.object2String(infosObj.get(InfosKeyConstant.PROPERTY_TYPE))); // 物业类型 自持/销售/合作方
- updateWrapper.set("sbglgs", StringTool.object2String(infosObj.get(InfosKeyConstant.EQUIPMENT_MANAGE_OWNERSHIP))); // 设备管理归属 商管/百货/大歌星/超市/影院/大酒楼/其他
- updateWrapper.set("hysbbm", StringTool.object2String(infosObj.get(InfosKeyConstant.WISDOM_CLOUD_LOCAL_CODE))); // 慧云设备编码
- updateWrapper.set("sfhysy", StringTool.object2String(infosObj.get(InfosKeyConstant.WISDOM_CLOUD_USE))); // 是否慧云使用 是/否 缺省为 是
- updateWrapper.set("sfzld", StringTool.object2String(infosObj.get(InfosKeyConstant.MAIN_STORE))); // 是否是主力店 缺省为 否
- updateWrapper.set("mark", StringTool.object2String(infosObj.get(InfosKeyConstant.REMARK))); // 备注 wD_beizhu
- updateWrapper.set("siteid", wdProjectId); // 项目唯一id,可采用租赁系统广场id,同步后不可更改
- updateWrapper.set("datastatus", SwitchConstant.IS_UPDATE); // 数据状态 update/delete 当数据状态为delete时,设备状态需改为报废
- }
- updateWrapper.set("ctx", updateUser); // 新增一个ctx字段 变更人员的万信账号
- updateWrapper.set("changedate", updateTime); // 数据更新时间 增量字段
- this.hydomcAssetMapper.update(hydomcAsset, updateWrapper);
- }
- }
- /**
- * @param wdfacilityRelList 筛选后的万达设备参数信息表与博锐尚格信息点的映射表数据
- * @param wdProjectid 万达项目ID(广场ID)
- * @param infosObj 博锐尚格项目表的debugs字段值
- * @param updateTime 项目最后更新时间
- * @author YangWanYi
- * @describe 同步万达设备参数对象数据
- * @date 2021/9/16 18:56
- */
- @DS(value = SwitchConstant.DS_MASTER_2)
- public void sycnHydomcAssetspec(List<WdfacilityRelPersagy> wdfacilityRelList, String wdProjectid, JSONObject infosObj, java.util.Date updateTime) {
- log.debug("准备同步万达设备参数对象数据");
- HydomcAssetspec hydomcAssetspec;
- for (WdfacilityRelPersagy wdfacilityRelPersagy : wdfacilityRelList) {
- // 根据万达设备信息表的SITEID、SBYBM、ASSETATTRID查询数据是否存在
- hydomcAssetspec = this.getHydomcAssetspec(wdProjectid, StringTool.object2String(infosObj.get(InfosKeyConstant.EQUIPMENT_CODE)), wdfacilityRelPersagy.getAssetattrid());
- if (hydomcAssetspec == null) {
- log.debug("万达表hydomc_assetspec没有这条数据,准备新增");
- hydomcAssetspec = this.handleHydomcAssetspec(new HydomcAssetspec(), wdProjectid, infosObj, wdfacilityRelPersagy, updateTime);
- this.hydomcAssetspecMapper.insert(hydomcAssetspec);
- } else {
- // key为wdfacility_rel_persagy的code值从debugs取 有值update 无值(空、空字符串)就是delete
- if (StringUtils.isBlank(StringTool.object2String(infosObj.get(wdfacilityRelPersagy.getCode())))) {
- log.debug("万达表hydomc_assetspec有这条数据,但code没有值,只需要更新数据状态为delete即可");
- hydomcAssetspec.setDatastatus(SwitchConstant.IS_DELETE); // 数据状态 update/delete
- hydomcAssetspec.setChangedate(updateTime); // 数据更新时间 增量字段
- } else {
- log.debug("万达表hydomc_assetspec有这条数据,code有值,需要更新所有字段");
- hydomcAssetspec = this.handleHydomcAssetspec(hydomcAssetspec, wdProjectid, infosObj, wdfacilityRelPersagy, updateTime);
- }
- this.hydomcAssetspecMapper.updateById(hydomcAssetspec);
- }
- }
- }
- /**
- * @param hydomcAssetspec 设备参数信息对象
- * @param wdProjectid 广场ID(万达项目ID)
- * @param infosObj 博锐尚格项目表debugs字段数据
- * @param wdfacilityRelPersagy 万达设备参数信息表与博锐尚格信息点的映射表
- * @param changedate 数据更新时间
- * @return com.persagy.transfer.pojo.dto.HydomcAssetspec
- * @author YangWanYi
- * @describe 处理设备参数信息对象字段映射
- * @date 2021/9/17 10:55
- */
- public HydomcAssetspec handleHydomcAssetspec(HydomcAssetspec hydomcAssetspec, String wdProjectid, JSONObject infosObj, WdfacilityRelPersagy wdfacilityRelPersagy, Date changedate) {
- hydomcAssetspec.setSiteid(wdProjectid); // 广场id 关联设备信息 Pj4403070003
- hydomcAssetspec.setSbybm(StringTool.object2String(infosObj.get(InfosKeyConstant.EQUIPMENT_CODE))); // 设备编码 关联设备信息 wD_gongchengxinxihua
- hydomcAssetspec.setClassstructureid(StringTool.object2String(infosObj.get(InfosKeyConstant.EQUIPMENT_SORT))); // 设备分类id 1507
- // 根据Datatype判断设置设备参数数字值还是设备参数文本值 key为wdfacility_rel_persagy的code值从debugs取
- final String IS_NUMBER = "数字";
- final String IS_LETTER = "字母";
- if (IS_NUMBER.equals(wdfacilityRelPersagy.getDatatype())) { // 是数字
- log.debug("dataType是数字");
- hydomcAssetspec.setNumvalue(StringTool.object2Double(infosObj.get(wdfacilityRelPersagy.getCode()))); // 设备参数数字值 (取自debugs)
- } else if (IS_LETTER.equals(wdfacilityRelPersagy.getDatatype())) { // 是字母
- log.debug("dataType是字母");
- hydomcAssetspec.setAlnvalue(StringTool.object2String(infosObj.get(wdfacilityRelPersagy.getCode()))); // 设备参数文本值 (取自debugs)
- }
- // key为wdfacility_rel_persagy的code值从debugs取 有值update 无值(空、空字符串)就是delete
- if (StringUtils.isBlank(StringTool.object2String(infosObj.get(wdfacilityRelPersagy.getCode())))) {
- log.debug("code没有值,数据状态设置为delete");
- hydomcAssetspec.setDatastatus(SwitchConstant.IS_DELETE); // 数据状态 update/delete
- } else {
- log.debug("code有值,数据状态设置为update");
- hydomcAssetspec.setDatastatus(SwitchConstant.IS_UPDATE); // 数据状态 update/delete
- }
- hydomcAssetspec.setClassqc(wdfacilityRelPersagy.getClassqc()); // 设备分类名称 电梯系统/扶梯/人行步道 (取自中间表wdfacility_rel_persagy)
- hydomcAssetspec.setAssetattrid(wdfacilityRelPersagy.getAssetattrid()); // 主键 设备参数id 1106 (取自中间表wdfacility_rel_persagy)
- hydomcAssetspec.setCsdesc(wdfacilityRelPersagy.getCsdesc()); // 设备参数名称 (取自中间表wdfacility_rel_persagy)
- hydomcAssetspec.setDatatype(wdfacilityRelPersagy.getDatatype()); // 设备参数类型 (取自中间表wdfacility_rel_persagy)
- hydomcAssetspec.setMeasureunitid(wdfacilityRelPersagy.getMeasureunitid()); // 设备参数单位编码 (取自中间表wdfacility_rel_persagy)
- hydomcAssetspec.setCsjldw(wdfacilityRelPersagy.getCsjldw()); // 设备参数单位名称 (取自中间表wdfacility_rel_persagy)
- hydomcAssetspec.setChangedate(changedate); // 数据更新时间 增量字段
- return hydomcAssetspec;
- }
- /**
- * @param siteId 关联的设备信息字段 广场ID 即万达项目ID
- * @param sbybm 关联的设备信息字段 设备编码
- * @param assetAttrId 设备分类ID
- * @return com.persagy.transfer.pojo.dto.HydomcAssetspec
- * @author YangWanYi
- * @describe 根据SITEID、SBYBM、ASSETATTRID查询万达设备信息表数据
- * @date 2021/9/17 10:13
- */
- @Override
- @DS(value = SwitchConstant.DS_MASTER_2)
- public HydomcAssetspec getHydomcAssetspec(String siteId, String sbybm, String assetAttrId) {
- LambdaQueryWrapper<HydomcAssetspec> queryHydomcAssetWrapper = new HydomcAssetspec.BuilderQueryWrapper().builder();
- queryHydomcAssetWrapper.eq(HydomcAssetspec::getSiteid, siteId);
- queryHydomcAssetWrapper.eq(HydomcAssetspec::getSbybm, sbybm);
- queryHydomcAssetWrapper.eq(HydomcAssetspec::getAssetattrid, assetAttrId);
- return this.hydomcAssetspecMapper.selectOne(queryHydomcAssetWrapper);
- }
- /**
- * @param primaryKey 万达设备信息主表主键
- * @return com.persagy.transfer.pojo.dto.HydomcAsset
- * @author YangWanYi
- * @describe 根据主键获取万达设备信息
- * @date 2021/9/16 15:31
- */
- @DS(value = SwitchConstant.DS_MASTER_2)
- public HydomcAsset getHydomcAssetByPKey(String primaryKey) {
- LambdaQueryWrapper<HydomcAsset> queryHydomcAssetWrapper = new HydomcAsset.BuilderQueryWrapper().builder();
- queryHydomcAssetWrapper.eq(HydomcAsset::getSbybm, primaryKey);
- return this.hydomcAssetMapper.selectOne(queryHydomcAssetWrapper);
- }
- }
|