Commit 8d48f7ae authored by suhuiguang's avatar suhuiguang

1.同步

parent 8570ff18
package com.yeejoin.amos.fas.dao.entity; package com.yeejoin.amos.fas.dao.entity;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.EntityListeners;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.MappedSuperclass;
import org.hibernate.annotations.GenericGenerator;
import org.springframework.data.annotation.CreatedDate; import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener; import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.*;
import java.io.Serializable;
import java.util.Date;
/** /**
* <pre> * <pre>
...@@ -39,8 +32,7 @@ public class BasicEntity /*extends Resource*/ implements Serializable{ ...@@ -39,8 +32,7 @@ public class BasicEntity /*extends Resource*/ implements Serializable{
private Date createDate = new Date(); private Date createDate = new Date();
@Id @Id
@GeneratedValue(strategy=GenerationType.AUTO,generator = "myid") @GeneratedValue(strategy=GenerationType.IDENTITY)
@GenericGenerator(name = "myid", strategy = "com.yeejoin.amos.fas.config.ManulInsertGenerator")
@Column(name = "ID",nullable=false,unique=true) @Column(name = "ID",nullable=false,unique=true)
public long getId() { public long getId() {
return id; return id;
......
package com.yeejoin.amos.fas.business.bo;
import lombok.Data;
import java.util.List;
@Data
public class RiskSourceSynBo {
/**
* 源id
*/
private Long id;
/**
* 编号
*/
private String code;
/**
* 名称
*/
private String name;
/**
* 上级id
*/
private Long parentId;
/**
* 子节点
*/
List<RiskSourceSynBo> children;
}
...@@ -3,6 +3,7 @@ package com.yeejoin.amos.fas.business.controller; ...@@ -3,6 +3,7 @@ package com.yeejoin.amos.fas.business.controller;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.yeejoin.amos.fas.business.action.model.FireEquimentDataRo; import com.yeejoin.amos.fas.business.action.model.FireEquimentDataRo;
import com.yeejoin.amos.fas.business.action.model.ProtalDataRo; import com.yeejoin.amos.fas.business.action.model.ProtalDataRo;
import com.yeejoin.amos.fas.business.bo.RiskSourceSynBo;
import com.yeejoin.amos.fas.business.param.AlarmParam; import com.yeejoin.amos.fas.business.param.AlarmParam;
import com.yeejoin.amos.fas.business.param.FmeaBindParam; import com.yeejoin.amos.fas.business.param.FmeaBindParam;
import com.yeejoin.amos.fas.business.service.intfc.IRiskFactorService; import com.yeejoin.amos.fas.business.service.intfc.IRiskFactorService;
...@@ -726,10 +727,10 @@ public class RiskSourceController extends BaseController { ...@@ -726,10 +727,10 @@ public class RiskSourceController extends BaseController {
@Permission @Permission
@ApiOperation(value = "同步风险区域",notes = "创建或者更新,对站调用") @ApiOperation(value = "同步风险区域",notes = "创建或者更新,对站调用")
@PostMapping("/syn/region") @PostMapping("/syn/region")
public CommonResponse synRegion(@RequestBody List<RiskSource> list){ public CommonResponse synRegion(@RequestBody RiskSourceSynBo synBo){
ReginParams reginParams = getSelectedOrgInfo(); ReginParams reginParams = getSelectedOrgInfo();
String compCode = getOrgCode(reginParams); String compCode = getOrgCode(reginParams);
return CommonResponseUtil.success(riskSourceService.synRegion(getUserId(),compCode,list)); return CommonResponseUtil.success(riskSourceService.synRegion(getUserId(),compCode,synBo));
} }
@Permission @Permission
......
...@@ -61,6 +61,7 @@ import org.springframework.util.StringUtils; ...@@ -61,6 +61,7 @@ import org.springframework.util.StringUtils;
import org.typroject.tyboot.component.cache.Redis; import org.typroject.tyboot.component.cache.Redis;
import org.typroject.tyboot.component.cache.enumeration.CacheType; import org.typroject.tyboot.component.cache.enumeration.CacheType;
import org.typroject.tyboot.core.foundation.context.RequestContext; import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.foundation.utils.Bean;
import javax.annotation.PostConstruct; import javax.annotation.PostConstruct;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
...@@ -324,27 +325,46 @@ public class RiskSourceServiceImpl implements IRiskSourceService { ...@@ -324,27 +325,46 @@ public class RiskSourceServiceImpl implements IRiskSourceService {
} }
@Override @Override
public List<RiskSource> synRegion(String userId, String compCode, List<RiskSource> list) { @Transactional
List<RiskSource> entrys = new ArrayList<>(); public RiskSource synRegion(String userId, String orgCode, RiskSourceSynBo synBo) {
list.forEach(r->{ Optional<RiskSource> op = iRiskSourceDao.findBySourceId(synBo.getId());
r.setOrgCode(compCode); RiskSource riskSource;
r.setIsRegion(RiskSourceRegionEum.TRUE.getCode()); //1.同步上级
Optional<RiskSource> op = iRiskSourceDao.findBySourceId(r.getId());
if(op.isPresent()){ if(op.isPresent()){
//有就更新,业务只能调整上级 //有就更新,业务只能调整上级
RiskSource riskSource = op.get(); riskSource = op.get();
riskSource.setParentId(r.getParentId()); riskSource.setParentId(synBo.getParentId());
entrys.add(riskSource); riskSource = iRiskSourceDao.save(riskSource);
} else { } else {
//无则插入,TODO 注意:id使用了调用接口方的id,这样代码修改量较小 //无则插入
r.setCreateDate(new Date()); riskSource = new RiskSource();
r.setIsIndoor(Boolean.FALSE); Bean.copyExistPropertis(synBo,riskSource);
r.setSourceId(r.getId()); fillBasicParams(userId, orgCode, synBo.getId(), riskSource);
r.setCreateBy(userId); riskSource = iRiskSourceDao.save(riskSource);
entrys.add(r); }
//2.同步下级(只有一级)
if(!CollectionUtils.isEmpty(synBo.getChildren())){
RiskSource finalRiskSource = riskSource;
List<RiskSource> children = synBo.getChildren().stream().map(s->{
RiskSource t = new RiskSource();
Bean.copyExistPropertis(s,t);
fillBasicParams(userId, orgCode, s.getId(), t);
t.setParentId(finalRiskSource.getId());
return t;
}).collect(Collectors.toList());
iRiskSourceDao.saveAll(children);
} }
}); return riskSource;
return iRiskSourceDao.saveAll(entrys); }
private void fillBasicParams(String userId, String orgCode, Long sourceId, RiskSource riskSource) {
riskSource.setCreateDate(new Date());
riskSource.setCreateBy(userId);
riskSource.setOrgCode(orgCode);
riskSource.setIsRegion(RiskSourceRegionEum.TRUE.getCode());
riskSource.setStatus("NORMAL");
riskSource.setIsIndoor(Boolean.FALSE);
riskSource.setSourceId(sourceId);
} }
@Override @Override
......
...@@ -5,6 +5,7 @@ import com.yeejoin.amos.fas.business.action.model.FireEquimentDataRo; ...@@ -5,6 +5,7 @@ import com.yeejoin.amos.fas.business.action.model.FireEquimentDataRo;
import com.yeejoin.amos.fas.business.action.model.ProtalDataRo; import com.yeejoin.amos.fas.business.action.model.ProtalDataRo;
import com.yeejoin.amos.fas.business.bo.BindRegionBo; import com.yeejoin.amos.fas.business.bo.BindRegionBo;
import com.yeejoin.amos.fas.business.bo.JpushMsgBo; import com.yeejoin.amos.fas.business.bo.JpushMsgBo;
import com.yeejoin.amos.fas.business.bo.RiskSourceSynBo;
import com.yeejoin.amos.fas.business.param.AlarmParam; import com.yeejoin.amos.fas.business.param.AlarmParam;
import com.yeejoin.amos.fas.business.param.CommonPageInfoParam; import com.yeejoin.amos.fas.business.param.CommonPageInfoParam;
import com.yeejoin.amos.fas.business.param.FmeaBindParam; import com.yeejoin.amos.fas.business.param.FmeaBindParam;
...@@ -199,10 +200,10 @@ public interface IRiskSourceService { ...@@ -199,10 +200,10 @@ public interface IRiskSourceService {
* 同步创建/更新区域 * 同步创建/更新区域
* @param code userId * @param code userId
* @param compCode 公司编号 * @param compCode 公司编号
* @param list 同步数据支持多个 * @param synBo 同步数据支持树结构同步
* @return List<RiskSource> * @return RiskSource
*/ */
List<RiskSource> synRegion(String code, String compCode, List<RiskSource> list); RiskSource synRegion(String code, String compCode, RiskSourceSynBo synBo);
/** /**
* 解除绑定关系 * 解除绑定关系
......
package com.yeejoin.amos.fas.config;
import org.hibernate.HibernateException;
import org.hibernate.engine.spi.SharedSessionContractImplementor;
import org.hibernate.id.IdentityGenerator;
import java.io.Serializable;
/**
* 自定义的主键生成策略,如果填写了主键id,如果数据库中没有这条记录,则新增指定id的记录;否则更新记录
*
* 如果不填写主键id,则利用数据库本身的自增策略指定id
*/
public class ManulInsertGenerator extends IdentityGenerator {
@Override
public Serializable generate(SharedSessionContractImplementor s, Object obj) throws HibernateException {
Serializable id = s.getEntityPersister(null, obj).getClassMetadata().getIdentifier(obj, s);
if (id != null && Long.parseLong(id.toString()) > 0) {
return id;
} else {
return super.generate(s, obj);
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment