feat: 迁移国内标准法规部分2 创建国内标准法规

This commit is contained in:
super_liu
2021-06-03 13:39:40 +08:00
parent 4cc558befc
commit 4caa481d31
36 changed files with 2181 additions and 31 deletions
@@ -140,4 +140,18 @@ public class SarStandardsInfoController extends BaseController<SarStandardsInfo>
return Result.success(getPageInfo(page.getPager(), rows));
}
@ApiOperation(value = "|SarStandardsInfoEO|新增")
@PostMapping("/addarStandardsInfo")
//401问题2021-03-31暂时注释掉 liuhuiwen
// @RequiresPermissions("lawss:sarStandardsInfo:create")
public ResponseMessage<SarStandardsInfo> create(@RequestBody SarStandardsInfo sarStandardsInfoEO) throws Exception {
if (StringUtils.isBlank(sarStandardsInfoEO.getMenuId()) && "INLAND".equals(sarStandardsInfoEO.getStandType())) {
sarStandardsInfoEO.setMenuId("64df1d5522bb49c09af2");
} else if (StringUtils.isBlank(sarStandardsInfoEO.getMenuId()) && "FOREIGN".equals(sarStandardsInfoEO.getStandType())) {
sarStandardsInfoEO.setMenuId("22179d54d4e640098e29");
}
sarStandardsInfoEOService.createSarStandardsInfo(sarStandardsInfoEO);
return Result.success("0", "添加成功", sarStandardsInfoEO);
}
}
@@ -22,6 +22,8 @@ public interface SarStandardsInfoDao extends BaseMapper<SarStandardsInfo> {
int getSarStandardsInfoCount(SarStandardsInfoEOPage page);
int insertSelective(SarStandardsInfo page);
SarStandardsInfo selectByPrimaryKeyAndModifyTime(SarStandardsInfo page);
List<SarStandardsInfo> selectStandardsByStandnumber(SarStandardsInfo sarStandardsInfoEO);
@@ -124,56 +124,56 @@ public class SarStandardsInfo extends BaseEntity {
// 以下为非表中字段
@Transient
@TableField(exist = false)
private String collectId; // 收藏表ID
@Transient
@TableField(exist = false)
private String countryShow; //国家地区显示名称
@Transient
@TableField(exist = false)
private String standSortShow; // 标准类别显示名称
@Transient
@TableField(exist = false)
private String standStateShow; // 标准状态显示名称
@Transient
@TableField(exist = false)
private String standNatureShow; // 标准性质显示名称
@Transient
@TableField(exist = false)
private String sychronId; // 同步数据ID
@Transient
@TableField(exist = false)
private List<DicTypeEO> dicTypeList = new ArrayList(); // 记录标准涉及到的所有数据字典数据
@Transient
@TableField(exist = false)
private Map<String, Object> attrInfoMap = new LinkedHashMap<>(); //属性表字段与值
@Transient
@TableField(exist = false)
private String sarStandAttrEOStr; //新增修改时属性表信息
@Transient
@TableField(exist = false)
private String menuId; //目录ID
@Transient
@TableField(exist = false)
private int upReplaceNumFlag; //记录是否修改了替代文件号
@Transient
@TableField(exist = false)
private int upNumFlag; //记录是否修改了文件号
@Transient
@TableField(exist = false)
private String fileIds; //全部文件ID
@Transient
@TableField(exist = false)
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
private Date newCarPutTime;
@Transient
@TableField(exist = false)
private List<SarStandItems> itemsList = new ArrayList<>();
@Transient
@TableField(exist = false)
private String relateStand;//对应其他标准
@Transient
@TableField(exist = false)
private String accessCountry;//纳入清单的国家
@Transient
@TableField(exist = false)
private String processNum;//流程编号
@Transient
@TableField(exist = false)
private String textStatus;//文本状态
// 在库里的标准节点类型(工作组)
@Transient
@TableField(exist = false)
private String menuType;
@Transient
@TableField(exist = false)
private String allPutTime;
@Transient
@TableField(exist = false)
private String jspg;
@Transient
@TableField(exist = false)
private String CHJL;
@Transient
@TableField(exist = false)
private String putTime2;
}
@@ -22,7 +22,7 @@ public interface ISarStandardsInfoService extends IService<SarStandardsInfo> {
List<SarStandardsInfo> getSarStandardsInfoPage(SarStandardsInfoEOPage page) throws Exception;
// void createSarStandardsInfo(SarStandardsInfo sarStandardsInfoEO) throws Exception;
void createSarStandardsInfo(SarStandardsInfo sarStandardsInfoEO) throws Exception;
//
// int updateSarStandardsInfo(SarStandardsInfo sarStandardsInfoEO) throws Exception;
//
@@ -3,26 +3,44 @@ package com.adc.da.slrs.sarStandardsInfo.service.impl;
import com.adc.da.att.entity.AttFileEO;
import com.adc.da.att.service.IAttFileEOService;
import com.adc.da.common.*;
import com.adc.da.person.entity.PersonMsgEO;
import com.adc.da.person.service.IPersonCollectEOService;
import com.adc.da.slrs.sarStandAttrInfo.dao.SarStandAttrInfoDao;
import com.adc.da.slrs.sarStandFile.dao.SarStandFileDao;
import com.adc.da.slrs.sarStandFile.entity.SarStandFile;
import com.adc.da.slrs.sarStandItems.dao.SarStandItemsDao;
import com.adc.da.slrs.sarStandItems.entity.SarStandItems;
import com.adc.da.slrs.sarStandMenu.dao.SarStandMenuDao;
import com.adc.da.slrs.sarStandMenu.entity.SarStandMenu;
import com.adc.da.slrs.sarStandPutTime.dao.SarStandPutTimeDao;
import com.adc.da.slrs.sarStandPutTime.entity.SarStandPutTime;
import com.adc.da.slrs.sarStandVal.dao.SarStandValDao;
import com.adc.da.slrs.sarStandVal.entity.SarStandVal;
import com.adc.da.slrs.sarStandardsInfo.entity.*;
import com.adc.da.slrs.sarMenu.service.ISarMenuService;
import com.adc.da.slrs.sarStandardsInfo.dao.SarStandardsInfoDao;
import com.adc.da.slrs.sarStandardsInfo.service.ISarStandardsInfoService;
import com.adc.da.slrs.sarUpdLog.service.ISarUpdLogService;
import com.adc.da.slrs.sysInfo.service.SysInfoEOService;
import com.adc.da.sys.common.SelectionResult;
import com.adc.da.sys.constant.ValueStateEnum;
import com.adc.da.sys.dao.DicTypeEODao;
import com.adc.da.util.LoginUserUtil;
import com.adc.da.util.UUIDUtils;
import com.adc.da.utils.util.*;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import net.sf.json.JSONObject;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import java.sql.Clob;
import java.text.SimpleDateFormat;
import java.util.*;
/**
@@ -34,6 +52,7 @@ import java.util.*;
* @since 2021-05-31
*/
@Service
@Transactional(value = "transactionManager", readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
public class SarStandardsInfoServiceImpl extends ServiceImpl<SarStandardsInfoDao, SarStandardsInfo> implements ISarStandardsInfoService {
private static final Logger logger = LoggerFactory.getLogger(SarStandardsInfoServiceImpl.class);
@@ -50,9 +69,24 @@ public class SarStandardsInfoServiceImpl extends ServiceImpl<SarStandardsInfoDao
@Autowired
private IPersonCollectEOService personCollectEOService;
@Autowired
private ISarUpdLogService sarUpdLogEOService;
@Autowired
private SarStandFileDao sarStandFileEODao;
@Autowired
private SarStandValDao sarStandValEODao;
@Autowired
private SarStandPutTimeDao sarStandPutTimeEODao;
@Autowired
private SarStandAttrInfoDao sarStandAttrInfoEODao;
@Autowired
private SarStandMenuDao sarStandMenuEODao;
@Autowired
private IAttFileEOService attFileEOService;
@@ -231,4 +265,553 @@ public class SarStandardsInfoServiceImpl extends ServiceImpl<SarStandardsInfoDao
}
}
}
/***
* @Description: 新增标准
* @Author: yangxuenan
* @Date: 2020/9/8 9:15
* @Param: [sarStandardsInfoEO]
* @Return: void
*/
public void createSarStandardsInfo(SarStandardsInfo sarStandardsInfoEO) throws Exception {
// 处理基础表信息
sarStandardsInfoEO.setId(UUIDUtils.randomUUID20());
sarStandardsInfoEO.setCreationUser(LoginUserUtil.getUserId());
sarStandardsInfoEO.setValidFlag("0");
sarStandardsInfoEO.setCreationTime(new Date());
sarStandardsInfoEO.setModifyTime(new Date());
//根据新建标准所在目录,确定此处是否需要在标准目录关联表中插入数据
if (StringUtils.isNotEmpty(sarStandardsInfoEO.getMenuId())) {
SarStandMenu sarStandMenuEO = new SarStandMenu();
sarStandMenuEO.setStandId(sarStandardsInfoEO.getId());
sarStandMenuEO.setMenuId(sarStandardsInfoEO.getMenuId());
sarStandMenuEO.setValidFlag(ValueStateEnum.VALUE_TRUE.getValue());
sarStandMenuEO.setId(UUIDUtils.randomUUID20());
sarStandMenuEODao.insert(sarStandMenuEO);
}
// 根据其他字段,生成标准状态
updateStandState(sarStandardsInfoEO,null);
int insertResult = dao.insertSelective(sarStandardsInfoEO);
if (insertResult > 0) {
// 修改属性表数据
sarStandAttrInfoEODao.deleteStandAttrByStandId(sarStandardsInfoEO.getId());
//编写预警信息
// writeWarnings(sarStandardsInfoEO);
updateCiteStand(sarStandardsInfoEO,null,"DTBJH","BDTBZBH");
updateCiteStand(sarStandardsInfoEO,null,"YYBJ","BYYBJ");
updateRelateStand(sarStandardsInfoEO,"CBBH");
// 根据代替标准号修改被代替的标准的状态 修改为已修订状态
replaseStandState(sarStandardsInfoEO);
// 处理属性表信息
if (StringUtils.isNotBlank(sarStandardsInfoEO.getSarStandAttrEOStr())) {
createStandAttrInfo(sarStandardsInfoEO);
}
// 增加关联事件
String number = sarStandardsInfoEO.getStandSort() + " " + sarStandardsInfoEO.getStandNumber();
if (StringUtils.isNotBlank(sarStandardsInfoEO.getStandYear())) {
number += "-" + sarStandardsInfoEO.getStandYear();
}
String content = "新增" + number + " 《" + sarStandardsInfoEO.getStandName() + "》";
sarUpdLogEOService.createBaseLog(sarStandardsInfoEO.getId(),sarStandardsInfoEO.getStandType()+"_STAND",content);
// if(elasflag) {
// // 消息队列
// createStandMQService.sendStandMQ(sarStandardsInfoEO,"add");
// }
}
}
/***
* @Description: 新增属性表数据
* @Author: yangxuenan
* @Date: 2020/9/8 9:53
* @Param: [sarStandardsInfoEO]
* @Return: void
*/
public void createStandAttrInfo (SarStandardsInfo sarStandardsInfoEO) throws Exception {
String sarStandAttrEOStr = sarStandardsInfoEO.getSarStandAttrEOStr();
String mustFields = FieldConvertUtil.mustFields;
String mustValues = FieldConvertUtil.mustValues(sarStandardsInfoEO.getId());
// 将字符串转为map进行解析
Map<String,String> sarStandAttrMap = JSONObject.fromObject(sarStandAttrEOStr);
StringBuilder fieldsBuilder = new StringBuilder();
StringBuilder valuesBuilder = new StringBuilder();
Map<String,String> selectionMap = new HashMap<>();
Map<String,String> fileMap = new HashMap<>();
Map<String,String> multiTimeMap = new HashMap<>();
String fileIds = "";
for (Map.Entry<String,String> entry : sarStandAttrMap.entrySet()) {
String attrKey = entry.getKey();
String attrValue = String.valueOf(entry.getValue());
if (InitStandAttrUtil.queryFieldList != null && !InitStandAttrUtil.queryFieldList.isEmpty()) {
if (InitStandAttrUtil.queryFieldList.contains(attrKey)) {
fieldsBuilder.append("," + attrKey);
if ("YYBJ".equals(attrKey)) {
sarStandardsInfoEO.setCiteStand(attrValue);
} else if ("CBBH".equals(attrKey)) {
sarStandardsInfoEO.setRelateStand(attrValue);
} else if ("DTBJH".equals(attrKey)) {
sarStandardsInfoEO.setReplaceStandNum(attrValue);
}
// 多选项,文件类型需要单独处理 向子表添加数据
if (InitStandAttrUtil.selectionFieldList.contains(attrKey)) {
selectionMap.put(attrKey,attrValue);
} else if (InitStandAttrUtil.fileFieldList.contains(attrKey)) {
fileMap.put(attrKey,attrValue);
fileIds += attrValue + ",";
if(attrKey.equals("XXZLXX")){
// this.saveMsgDynamicInfo(attrValue,sarStandardsInfoEO.getStandName(),sarStandardsInfoEO.getId(),sarStandardsInfoEO.getStandSort()+" "+sarStandardsInfoEO.getStandNumber()+"-"+sarStandardsInfoEO.getStandYear());
}
} else if (InitStandAttrUtil.multiTimeFieldList.contains(attrKey)) {
multiTimeMap.put(attrKey,attrValue);
}
// 不同类型存储数据需单独处理值
if (InitStandAttrUtil.numFieldList.contains(attrKey)) {
if (StringUtils.isBlank(attrValue)) {
attrValue = "null";
}
} else if (InitStandAttrUtil.timeFieldList.contains(attrKey)) {
attrValue = FieldConvertUtil.changeTimeValue(attrValue);
} else {
attrValue = "'" + attrValue + "'";
}
valuesBuilder.append("," + attrValue);
sarStandardsInfoEO.setFileIds(fileIds);
}
}
}
String insertField = mustFields + fieldsBuilder.toString();
String insertValue = mustValues + valuesBuilder.toString();
int insertRes = sarStandAttrInfoEODao.insertStandAttr(insertField,insertValue);
if (insertRes > 0) {
// 多选项处理
createStandVal(sarStandardsInfoEO.getId(),selectionMap);
// 文件处理
createStandFile(sarStandardsInfoEO.getId(),fileMap);
// 多时间处理
createStandPutTime(sarStandardsInfoEO.getId(),multiTimeMap);
}
}
/***
* @Description: 多选项处理
* @Author: yangxuenan
* @Date: 2020/9/8 14:37
* @Param: [sarStandardsInfoEO, selectionMap]
* @Return: void
*/
public void createStandVal (String standId,Map<String,String> selectionMap) {
if (selectionMap != null && selectionMap.size() > 0) {
List<SarStandVal> standValList = new ArrayList<>();
for (Map.Entry<String,String> entry : selectionMap.entrySet()) {
String value = entry.getValue();
String field = entry.getKey();
if (StringUtils.isNotBlank(value)) {
String[] valArr = value.trim().split(",");
for (String val : valArr) {
SarStandVal sarStandValEO = new SarStandVal();
sarStandValEO.setValidFlag(ValueStateEnum.VALUE_TRUE.getValue());
sarStandValEO.setCreationTime(new Date());
sarStandValEO.setModifyTime(new Date());
sarStandValEO.setStandId(standId);
sarStandValEO.setId(UUIDUtils.randomUUID20());
sarStandValEO.setPropertyType(field);
sarStandValEO.setPropertyVal(val);
standValList.add(sarStandValEO);
}
}
}
if (standValList != null && !standValList.isEmpty()) {
sarStandValEODao.insertForeach(standValList);
}
}
}
/***
* @Description: 文件处理
* @Author: yangxuenan
* @Date: 2020/9/8 15:01
* @Param: [standId, fileMap]
* @Return: void
*/
public void createStandFile (String standId,Map<String,String> fileMap) throws Exception {
if (fileMap != null && fileMap.size() > 0) {
List<SarStandFile> standFileList = new ArrayList<>();
for (Map.Entry<String,String> entry : fileMap.entrySet()) {
String value = entry.getValue();
String field = entry.getKey();
if (StringUtils.isNotBlank(value)) {
List<AttFileEO> fileList = attFileEOService.getMultiFileInfos(value);
if (fileList != null && !fileList.isEmpty()) {
createStandFileAppend(standId,field,fileList,standFileList);
}
}
}
if (standFileList != null && !standFileList.isEmpty()) {
sarStandFileEODao.insertForeach(standFileList);
}
}
}
public void createStandFileAppend (String standId,String field,List<AttFileEO> fileList,List<SarStandFile> standFileList) throws Exception {
for (AttFileEO fileInfo : fileList) {
SarStandFile sarStandFileEO = new SarStandFile();
sarStandFileEO.setCreationUser(LoginUserUtil.getUserId());
sarStandFileEO.setCreationTime(new Date());
sarStandFileEO.setModifyTime(new Date());
sarStandFileEO.setValidFlag("0");
sarStandFileEO.setStandId(standId); //标准ID
sarStandFileEO.setUseModel(UseModuleEnum.SOURCE_FILE.getValue()); //文件使用模式
sarStandFileEO.setId(UUIDUtils.randomUUID20());
sarStandFileEO.setAttId(fileInfo.getId()); //文件ID
sarStandFileEO.setStandFileClassify(field); //文件分类
sarStandFileEO.setFileName(fileInfo.getOldFileName());
sarStandFileEO.setFileSuffix(fileInfo.getFileSuffix());
sarStandFileEO.setOriAttId(fileInfo.getId());
standFileList.add(sarStandFileEO);
//文档转换
if ("pdf".equals(fileInfo.getFileSuffix()) || "PDF".equals(fileInfo.getFileSuffix())) {
SarStandFile newFileEO = new SarStandFile();
newFileEO.setCreationUser(LoginUserUtil.getUserId());
newFileEO.setCreationTime(new Date());
newFileEO.setModifyTime(new Date());
newFileEO.setValidFlag("0");
newFileEO.setStandId(standId); //标准ID
newFileEO.setId(UUIDUtils.randomUUID20());
newFileEO.setAttId(fileInfo.getId()); //文件ID
newFileEO.setStandFileClassify(field); //文件分类
newFileEO.setFileName(fileInfo.getOldFileName());
newFileEO.setFileSuffix(fileInfo.getFileSuffix());
newFileEO.setUseModel(UseModuleEnum.WEB_FILE.getValue()); //文件使用模式 //文件名称@@@@@@@需要修改
newFileEO.setOriAttId(fileInfo.getId());
standFileList.add(newFileEO);
} else {
// String filePath = fileInfo.getFilePath() + fileInfo.getFileName();
// ConvertMqEO convert = new ConvertMqEO();
// convert.setLawsId(standId);
// convert.setAttId(fileInfo.getId());
// convert.setFilePath(filePath);
// convert.setAddOrUp("0");
// convert.setFileSuffix(fileInfo.getFileSuffix());
// convert.setStandFileClassify(field);
// convert.setConvertType(SarTypeEnum.STAND.getValue());
// convert.setOriAttId(fileInfo.getId());
// convertMq.sendMQ(convert);
}
}
}
public void createStandPutTime(String standId,Map<String,String> multiTimeMap) throws Exception{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
if (multiTimeMap != null && multiTimeMap.size() > 0) {
List<SarStandPutTime> standTimeList = new ArrayList<>();
for (Map.Entry<String, String> entry : multiTimeMap.entrySet()) {
String value = entry.getValue();
String field = entry.getKey();
if (StringUtils.isNotBlank(value)) {
String[] valArr = value.trim().split(",");
int i=0;
for (String val : valArr) {
if ("N/A".equals(val) && "TBD".equals(val) && "已实施".equals(val)) {
i++;
Date date = sdf.parse(val);
SarStandPutTime sarStandPutTimeEO = new SarStandPutTime();
sarStandPutTimeEO.setId(UUIDUtils.randomUUID20());
sarStandPutTimeEO.setStandId(standId);
sarStandPutTimeEO.setTimeType(field);
sarStandPutTimeEO.setCreationTime(new Date());
// sarStandPutTimeEO.setOrderNum(Integer.valueOf(i));
sarStandPutTimeEO.setTimeName(field);
sarStandPutTimeEO.setPutTime(date);
standTimeList.add(sarStandPutTimeEO);
}
}
}
}
// 批量新增
if (standTimeList != null && !standTimeList.isEmpty()) {
sarStandPutTimeEODao.insertForeach(standTimeList);
}
}
}
// 新增修改标准过程中,根据代替标准号,修改被代替标准号对应的标准
public void updateCiteStand(SarStandardsInfo sarStandardsInfoEO,SarStandardsInfo beforeSarStandardsInfo,String upField,String beUpedField) throws Exception {
// 记录要被代替标准号的数据
// SarStandardsInfoEO chageEO= new SarStandardsInfoEO();
SarStandardsInfo sarStandardsSelectEO = new SarStandardsInfo();
String addStrandNumber = "";
String beforeStrandNumber = "";
if(StringUtils.isNotEmpty(sarStandardsInfoEO.getStandYear())){
addStrandNumber = sarStandardsInfoEO.getStandSort()+" " +sarStandardsInfoEO.getStandNumber()+"-"+sarStandardsInfoEO.getStandYear();
} else {
addStrandNumber = sarStandardsInfoEO.getStandSort()+" " +sarStandardsInfoEO.getStandNumber();
}
if(beforeSarStandardsInfo!= null ) {
if (StringUtils.isNotEmpty(beforeSarStandardsInfo.getStandYear())) {
beforeStrandNumber = beforeSarStandardsInfo.getStandSort() + " " + beforeSarStandardsInfo.getStandNumber() + "-" + beforeSarStandardsInfo.getStandYear();
} else {
beforeStrandNumber = beforeSarStandardsInfo.getStandSort() + " " + beforeSarStandardsInfo.getStandNumber();
}
}
// 以“,”分隔查看之前是否有 ,如果有不修改,如果没有,追加修改
String newCiteStand = "";
if ("YYBJ".equals(upField)) {
newCiteStand = sarStandardsInfoEO.getCiteStand();
} else if ("CBBH".equals(upField)) {
newCiteStand = sarStandardsInfoEO.getRelateStand();
} else if ("DTBJH".equals(upField)) {
newCiteStand = sarStandardsInfoEO.getReplaceStandNum();
}
if(StringUtils.isNotEmpty(newCiteStand) && newCiteStand.split(",").length>0){
// 主要逻辑处理新增的
String nowEOrepNums[] = newCiteStand.split(",");
for (String citeStand: nowEOrepNums){
sarStandardsSelectEO.setStandNumber(citeStand);
if (StringUtils.isNotBlank(sarStandardsSelectEO.getStandNumber())){
String sort = "";
if (sarStandardsSelectEO.getStandNumber().length()>3) {
sort = sarStandardsSelectEO.getStandNumber().substring(0, 3);
}
if ("ECE".equals(sort)) {
int length = sarStandardsSelectEO.getStandNumber().length();
String number = sarStandardsSelectEO.getStandNumber().substring(3,length);
sarStandardsSelectEO.setStandNumber("UN(ECE)" + number);
}
}
List<SarStandardsInfo> result = dao.selectStandardsByStandnumber(sarStandardsSelectEO);
if (result != null && result.size()>0){
String standId = result.get(0).getId();
String field = beUpedField;
String citedStand = sarStandAttrInfoEODao.selectFieldValByStandId(field,result.get(0).getId());
String changeCitedStand = "";
if(StringUtils.isNotBlank(citedStand)){
String[] beforeReplacedStandNumStr = citedStand.split(",");
if (Arrays.asList(beforeReplacedStandNumStr).contains(addStrandNumber)){
continue;
} else {
changeCitedStand = citedStand+","+ addStrandNumber;
}
} else {
changeCitedStand = addStrandNumber;
}
sarStandAttrInfoEODao.updateStandInfo(standId,field,changeCitedStand);
}
}
// 如果id不为空,说明是修改,有逻辑删除的执行以下语句,存在之前是三项,现在修改成两项的情况
if (null != beforeSarStandardsInfo){
String oldCiteStand = String.valueOf(beforeSarStandardsInfo.getAttrInfoMap().get(upField));
if(StringUtils.isNotEmpty(oldCiteStand)) {
String [] beforeEOrepNums = oldCiteStand.split(",");
for (String beforeStr:beforeEOrepNums){
// 如果再旧的中包含,在新的中没有,需要删除
if (!Arrays.asList(nowEOrepNums).contains(beforeStr)){
sarStandardsSelectEO.setStandNumber(beforeStr);
List<SarStandardsInfo> result = dao.selectStandardsByStandnumber(sarStandardsSelectEO);
if (result != null && result.size()>0){
String standId = result.get(0).getId();
String field = beUpedField;
String citedStand = sarStandAttrInfoEODao.selectFieldValByStandId(field,result.get(0).getId());
String changeCitedStand = "";
if(StringUtils.isNotBlank(citedStand)){
String[] beforerepalced = citedStand.split(",");
ArrayList beforlist = new ArrayList<>(Arrays.asList(beforerepalced));
if (beforlist.contains(beforeStrandNumber)){
beforlist.remove(beforeStrandNumber);
changeCitedStand = StringUtils.join(beforlist.toArray(), ",");
} else {
continue;
}
sarStandAttrInfoEODao.updateStandInfo(standId,field,changeCitedStand);
}
}
}
}
}
}
} else {
// 如果为空,判断是否为修改
if (null != beforeSarStandardsInfo){
String oldCiteStand = String.valueOf(beforeSarStandardsInfo.getAttrInfoMap().get("YYBJ"));
if(StringUtils.isNotEmpty(oldCiteStand)) {
String [] beforeEOrepNums = oldCiteStand.split(",");
for (String beforeStr:beforeEOrepNums){
// 如果再旧的中包含,在新的中没有,需要删除,相关数据取第一条是因为标准号是唯一的
sarStandardsSelectEO.setStandNumber(beforeStr);
List<SarStandardsInfo> result = dao.selectStandardsByStandnumber(sarStandardsSelectEO);
if (result != null && result.size()>0){
String standId = result.get(0).getId();
String field = "BYYBJ";
String citedStand = sarStandAttrInfoEODao.selectFieldValByStandId(field,result.get(0).getId());
String changeCitedStand = "";
if(StringUtils.isNotBlank(citedStand)){
String[] beforerepalced = citedStand.split(",");
ArrayList beforlist = new ArrayList<>(Arrays.asList(beforerepalced));
if (beforlist.contains(beforeStrandNumber)){
beforlist.remove(beforeStrandNumber);
changeCitedStand = StringUtils.join(beforlist.toArray(), ",");
} else {
continue;
}
sarStandAttrInfoEODao.updateStandInfo(standId,field,changeCitedStand);
}
}
}
}
}
}
}
public void updateRelateStand(SarStandardsInfo sarStandardsInfoEO,String upField){
String addStandNumber = "";
if(StringUtils.isNotEmpty(sarStandardsInfoEO.getStandYear())){
addStandNumber = sarStandardsInfoEO.getStandSort()+" " +sarStandardsInfoEO.getStandNumber()+"-"+sarStandardsInfoEO.getStandYear();
} else {
addStandNumber = sarStandardsInfoEO.getStandSort()+" " +sarStandardsInfoEO.getStandNumber();
}
if (StringUtils.isNotBlank(addStandNumber)) {
String relateStand = "";
if ("CBBH".equals(upField)) {
relateStand = sarStandardsInfoEO.getRelateStand();
}
List<String> newStandIdList = new ArrayList<>();
if (StringUtils.isNotBlank(relateStand)) {
List<String> newRealteStandList = Arrays.asList(relateStand.split(","));
for (String newRelate : newRealteStandList) {
SarStandardsInfo selectEO = new SarStandardsInfo();
selectEO.setStandNumber(newRelate);
List<SarStandardsInfo> result = dao.selectStandardsByStandnumber(selectEO);
// 新增关联
if (result != null && result.size()>0) {
String standId = result.get(0).getId();
newStandIdList.add(standId);
String relatedStand = sarStandAttrInfoEODao.selectFieldValByStandId(upField,standId);
String changeStand = "";
if(StringUtils.isNotBlank(relatedStand)){
List beforelist = new ArrayList<>(Arrays.asList(relatedStand.split(",")));
if (!beforelist.contains(addStandNumber)){
beforelist.add(addStandNumber);
changeStand = StringUtils.join(beforelist.toArray(), ",");
sarStandAttrInfoEODao.updateStandInfo(standId,upField,changeStand);
} else {
continue;
}
} else {
sarStandAttrInfoEODao.updateStandInfo(standId,upField,addStandNumber);
}
}
}
}
//查询对应当前标准的数据,删除关联
if (newStandIdList == null || newStandIdList.size() < 1) {
newStandIdList = null;
}
List<SelectionResult> resultList = sarStandAttrInfoEODao.selectFieldValByContainsVal(upField,addStandNumber,newStandIdList);
if (resultList != null && !resultList.isEmpty()) {
for (SelectionResult result : resultList) {
String relatedStand = result.getLabel();
List beforlist = new ArrayList<>(Arrays.asList(relatedStand.split(",")));
beforlist.remove(addStandNumber);
if (beforlist != null && !beforlist.isEmpty()) {
relatedStand = StringUtils.join(beforlist.toArray(), ",");
} else {
relatedStand = "";
}
sarStandAttrInfoEODao.updateStandInfo(result.getValue(),upField,relatedStand);
}
}
}
}
/**
* 代替标准号修改状态
* @param sarStandardsInfoEO
*/
public void replaseStandState(SarStandardsInfo sarStandardsInfoEO) throws Exception {
String newCiteStand = sarStandardsInfoEO.getReplaceStandNum();
if(StringUtils.isNotBlank(newCiteStand)){
String nowEOrepNums[] = newCiteStand.split(",");
for (String citeStand: nowEOrepNums){
SarStandardsInfo sarStandardsSelectEO =new SarStandardsInfo();
sarStandardsSelectEO.setStandNumber(citeStand);
List<SarStandardsInfo> result = dao.selectStandardsByStandnumber(sarStandardsSelectEO);
if (result != null && !result.isEmpty()){
SarStandardsInfo replaseStand = result.get(0);
String standState = replaseStand.getStandState();
String oldStandState = standState;
String oldStandStateShow = SarStandStateEnum.getLableByVal(oldStandState);
if(!SarStandStateEnum.N5KLTFLNRC.getValue().equals(standState)|| !SarStandStateEnum.TOVOID.getValue().equals(standState)){
replaseStand.setStandState(SarStandStateEnum.N5KLTFLNRC.getValue());
dao.updateById(replaseStand);
//更新log日志
sarUpdLogEOService.createBaseLog(replaseStand.getId(),replaseStand.getStandType()+"_STAND","入库流程当前标准因被新标准代替修改标准状态的值从《"+oldStandStateShow+"》为《\"已修订\"》");
}
}
}
}
}
public void updateStandState (SarStandardsInfo sarStandardsInfoEO,String oldState) {
String resultState = "";
String newState = sarStandardsInfoEO.getStandState();
String standNum = "";
List<String> selectList = InitStandAttrUtil.standStateList;
if (org.apache.commons.lang.StringUtils.isNotBlank(sarStandardsInfoEO.getStandYear())) {
standNum = sarStandardsInfoEO.getStandSort() + " " + sarStandardsInfoEO.getStandNumber() + "-" + sarStandardsInfoEO.getStandYear();
} else {
standNum = sarStandardsInfoEO.getStandSort() + " " + sarStandardsInfoEO.getStandNumber();
}
// 根据数据信息判断当前应该状态
if (!SarStandStateEnum.ZTXXYX.getValue().equals(newState)) {
// 查询当前标准被代替信息
List<String> countRep = dao.countReplaceMsg(standNum);
int countFB = 0;
int countQT = 0;
if (countRep != null && !countRep.isEmpty()) {
for (String state : countRep) {
if (SarStandStateEnum.FJNVYX9Q7J.getValue().equals(state)) {
countFB ++;
break;
} else if (selectList.indexOf(state) < selectList.indexOf(SarStandStateEnum.FJNVYX9Q7J.getValue())) {
countQT ++;
}
}
}
if (countFB > 0) {
// newState = SarStandStateEnum.TOVOID.getValue();
} else if (countQT > 0) {
newState = SarStandStateEnum.ZTJJSS.getValue();
} else {
// 查询各个文件稿状态
Map<String,String> sarStandAttrMap = JSONObject.fromObject(sarStandardsInfoEO.getSarStandAttrEOStr());
if (sarStandAttrMap != null && !sarStandAttrMap.isEmpty()) {
if (StringUtils.isNotBlank(sarStandAttrMap.get("FBGBJBD"))) {
newState = SarStandStateEnum.FJNVYX9Q7J.getValue();
} else if (StringUtils.isNotBlank(sarStandAttrMap.get("SSG"))) {
newState = SarStandStateEnum.SUBMIT.getValue();
} else if (StringUtils.isNotBlank(sarStandAttrMap.get("BPG"))) {
newState = SarStandStateEnum.RADYSUBMIT.getValue();
} else if (StringUtils.isNotBlank(sarStandAttrMap.get("ZQYJG"))) {
newState = SarStandStateEnum.ADVICE.getValue();
} else if (StringUtils.isNotBlank(sarStandAttrMap.get("CA"))) {
newState = SarStandStateEnum.DRAFT.getValue();
}
}
}
}
// 与旧状态对比,判断是否修改
if (StringUtils.isNotBlank(oldState)) {
int newIndex = selectList.indexOf(newState);
int endIndex = selectList.indexOf(oldState);
if (newIndex < endIndex) {
resultState = oldState;
} else {
resultState = newState;
}
} else {
resultState = newState;
}
sarStandardsInfoEO.setStandState(resultState);
}
}