Commit 8d48f7ae authored by suhuiguang's avatar suhuiguang

1.同步

parent 8570ff18
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.jpa.domain.support.AuditingEntityListener;
import javax.persistence.*;
import java.io.Serializable;
import java.util.Date;
/**
* <pre>
......@@ -39,8 +32,7 @@ public class BasicEntity /*extends Resource*/ implements Serializable{
private Date createDate = new Date();
@Id
@GeneratedValue(strategy=GenerationType.AUTO,generator = "myid")
@GenericGenerator(name = "myid", strategy = "com.yeejoin.amos.fas.config.ManulInsertGenerator")
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name = "ID",nullable=false,unique=true)
public long getId() {
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;
import com.alibaba.fastjson.JSONObject;
import com.yeejoin.amos.fas.business.action.model.FireEquimentDataRo;
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.FmeaBindParam;
import com.yeejoin.amos.fas.business.service.intfc.IRiskFactorService;
......@@ -726,10 +727,10 @@ public class RiskSourceController extends BaseController {
@Permission
@ApiOperation(value = "同步风险区域",notes = "创建或者更新,对站调用")
@PostMapping("/syn/region")
public CommonResponse synRegion(@RequestBody List<RiskSource> list){
public CommonResponse synRegion(@RequestBody RiskSourceSynBo synBo){
ReginParams reginParams = getSelectedOrgInfo();
String compCode = getOrgCode(reginParams);
return CommonResponseUtil.success(riskSourceService.synRegion(getUserId(),compCode,list));
return CommonResponseUtil.success(riskSourceService.synRegion(getUserId(),compCode,synBo));
}
@Permission
......
......@@ -61,6 +61,7 @@ import org.springframework.util.StringUtils;
import org.typroject.tyboot.component.cache.Redis;
import org.typroject.tyboot.component.cache.enumeration.CacheType;
import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.foundation.utils.Bean;
import javax.annotation.PostConstruct;
import javax.servlet.http.HttpServletRequest;
......@@ -324,27 +325,46 @@ public class RiskSourceServiceImpl implements IRiskSourceService {
}
@Override
public List<RiskSource> synRegion(String userId, String compCode, List<RiskSource> list) {
List<RiskSource> entrys = new ArrayList<>();
list.forEach(r->{
r.setOrgCode(compCode);
r.setIsRegion(RiskSourceRegionEum.TRUE.getCode());
Optional<RiskSource> op = iRiskSourceDao.findBySourceId(r.getId());
if(op.isPresent()){
//有就更新,业务只能调整上级
RiskSource riskSource = op.get();
riskSource.setParentId(r.getParentId());
entrys.add(riskSource);
} else {
//无则插入,TODO 注意:id使用了调用接口方的id,这样代码修改量较小
r.setCreateDate(new Date());
r.setIsIndoor(Boolean.FALSE);
r.setSourceId(r.getId());
r.setCreateBy(userId);
entrys.add(r);
}
});
return iRiskSourceDao.saveAll(entrys);
@Transactional
public RiskSource synRegion(String userId, String orgCode, RiskSourceSynBo synBo) {
Optional<RiskSource> op = iRiskSourceDao.findBySourceId(synBo.getId());
RiskSource riskSource;
//1.同步上级
if(op.isPresent()){
//有就更新,业务只能调整上级
riskSource = op.get();
riskSource.setParentId(synBo.getParentId());
riskSource = iRiskSourceDao.save(riskSource);
} else {
//无则插入
riskSource = new RiskSource();
Bean.copyExistPropertis(synBo,riskSource);
fillBasicParams(userId, orgCode, synBo.getId(), riskSource);
riskSource = iRiskSourceDao.save(riskSource);
}
//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;
}
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
......
......@@ -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.bo.BindRegionBo;
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.CommonPageInfoParam;
import com.yeejoin.amos.fas.business.param.FmeaBindParam;
......@@ -199,10 +200,10 @@ public interface IRiskSourceService {
* 同步创建/更新区域
* @param code userId
* @param compCode 公司编号
* @param list 同步数据支持多个
* @return List<RiskSource>
* @param synBo 同步数据支持树结构同步
* @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