/*
|
* Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
|
*
|
* Redistribution and use in source and binary forms, with or without
|
* modification, are permitted provided that the following conditions are met:
|
*
|
* Redistributions of source code must retain the above copyright notice,
|
* this list of conditions and the following disclaimer.
|
* Redistributions in binary form must reproduce the above copyright
|
* notice, this list of conditions and the following disclaimer in the
|
* documentation and/or other materials provided with the distribution.
|
* Neither the name of the dreamlu.net developer nor the names of its
|
* contributors may be used to endorse or promote products derived from
|
* this software without specific prior written permission.
|
* Author: Chill 庄骞 (smallchill@163.com)
|
*/
|
package com.vci.ubcs.code.service.impl;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.vci.ubcs.code.entity.CodeClstempattrEntity;
|
import com.vci.ubcs.code.entity.CodePhaseattrEntity;
|
import com.vci.ubcs.code.entity.CodeTempphaseEntity;
|
import com.vci.ubcs.code.mapper.CodePhaseattrMapper;
|
import com.vci.ubcs.code.mapper.CodeTempphaseMapper;
|
import com.vci.ubcs.code.service.ICodeTempphaseService;
|
import com.vci.ubcs.code.vo.CodeTempphaseVO;
|
import com.vci.ubcs.starter.web.util.VciBaseUtil;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.util.CollectionUtils;
|
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.stream.Collectors;
|
|
/**
|
* 编码库定义-模板阶段 服务实现类
|
*
|
* @author yuxc
|
* @since 2023-04-20
|
*/
|
@Service
|
public class CodeTempphaseServiceImpl extends ServiceImpl<CodeTempphaseMapper, CodeTempphaseEntity> implements ICodeTempphaseService {
|
|
|
@Autowired(required = false)
|
private CodePhaseattrMapper codePhaseattrMapper;
|
@Autowired(required = false)
|
private CodePhaseattrServiceImpl codePhaseattrServiceImpl;
|
|
@Override
|
public IPage<CodeTempphaseVO> selectCodeTempphasePage(IPage<CodeTempphaseVO> page, CodeTempphaseVO CodeTempphase) {
|
return page.setRecords(baseMapper.selectCodeTempphasePage(page, CodeTempphase));
|
}
|
|
/**
|
* 模板删除的时候触发
|
*
|
* @param templateOid 模板的主键
|
* @return 受影响的数据
|
*/
|
@Override
|
public int codeTemplateDeleteTrigger(String templateOid) {
|
int updateCount = 0;
|
Map<String,Object> condition = new HashMap<>(1);
|
condition.put("codeclassifytemplateoid",templateOid);
|
List<CodeTempphaseEntity> codeTempphaseEntities = baseMapper.selectByMap(condition);
|
if(!CollectionUtils.isEmpty(codeTempphaseEntities)) {
|
updateCount += baseMapper.deleteBatchIds(codeTempphaseEntities.stream().map(CodeTempphaseEntity::getOid).collect(Collectors.toList()));
|
// batchCBO.copyFromOther(codeTemplatePhaseMapper.batchDeleteByOids(templatePhaseDOS.stream().map(CodeTemplatePhaseDO::getOid).collect(Collectors.toList())));
|
// conditionMap.put("codePhaseOid", QueryOptionConstant.IN + "(select oid from " + getPhaseTable() + " where codeClassifyTemplateOid='" + classifyTemplateOid + "')");
|
List<CodePhaseattrEntity> phaseAttrDOS = codePhaseattrMapper.selectByPhasea(templateOid);
|
if(!CollectionUtils.isEmpty(phaseAttrDOS)){
|
updateCount += codePhaseattrMapper.deleteBatchIds(phaseAttrDOS.stream().map(CodePhaseattrEntity::getOid).collect(Collectors.toList()));
|
}
|
}
|
return updateCount;
|
}
|
/**
|
* 模板修改触发功能
|
* @param attrDOList 属性的数据对象
|
* @return 受影响的数据
|
*/
|
@Override
|
public List<CodeClstempattrEntity> codeTemplateAttrModifyTrigger(List<CodeClstempattrEntity> attrDOList){
|
//属性修改的时候,需要同步修改对应属性的名称
|
// BatchCBO batchCBO = new BatchCBO();
|
List<CodePhaseattrEntity> phaseAttrDOS =codePhaseattrMapper.listLinkAttrDOByTemplateAttrDOS(VciBaseUtil.toInSql(attrDOList.stream()
|
.map(CodeClstempattrEntity::getId).collect(Collectors.toList()).toArray(new String[0])),attrDOList.get(0).getClassifytemplateoid());
|
if(!CollectionUtils.isEmpty(phaseAttrDOS)){
|
//说明有属性,我们去替换一下
|
Map<String, CodeClstempattrEntity> attrDOMap = attrDOList.stream().collect(Collectors.toMap(s -> s.getId(), t -> t));
|
phaseAttrDOS.stream().forEach(phaseAttrDO->{
|
if(attrDOMap.containsKey(phaseAttrDO.getId())){
|
CodeClstempattrEntity attrDO = attrDOMap.get(phaseAttrDO.getId());
|
phaseAttrDO.setId(attrDO.getId());
|
phaseAttrDO.setName(attrDO.getName());
|
phaseAttrDO.setAttributegroup(attrDO.getAttributegroup());
|
}
|
});
|
// codePhaseattrMapper.
|
codePhaseattrServiceImpl.saveBatch(phaseAttrDOS);
|
// BatchCBO updateCBO =
|
// codePhaseAttrMapper.batchUpdate(phaseAttrDOS);
|
// batchCBO.copyFromOther(updateCBO);
|
}
|
return attrDOList;
|
}
|
|
}
|