package com.doumee.service.business.impl;
|
|
import com.doumee.core.annotation.excel.ExcelImporter;
|
import com.doumee.core.constants.ResponseStatus;
|
import com.doumee.core.exception.BusinessException;
|
import com.doumee.core.model.LoginUserInfo;
|
import com.doumee.core.model.PageData;
|
import com.doumee.core.model.PageWrap;
|
import com.doumee.core.utils.Constants;
|
import com.doumee.core.utils.Utils;
|
import com.doumee.dao.business.CmmDataMapper;
|
import com.doumee.dao.business.CmmMapper;
|
import com.doumee.dao.business.model.*;
|
import com.doumee.dao.business.vo.bs.*;
|
import com.doumee.service.business.AreasService;
|
import com.doumee.service.business.CmmService;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import org.apache.commons.lang3.StringUtils;
|
import org.apache.shiro.SecurityUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.util.CollectionUtils;
|
import org.springframework.web.multipart.MultipartFile;
|
|
import java.lang.reflect.Field;
|
import java.math.BigDecimal;
|
import java.math.RoundingMode;
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
import java.util.UUID;
|
|
/**
|
* 企业能力成熟度数据信息Service实现
|
* @author 江蹄蹄
|
* @date 2023/10/24 15:57
|
*/
|
@Service
|
public class CmmServiceImpl implements CmmService {
|
|
@Autowired
|
private CmmMapper cmmMapper;
|
@Autowired
|
private AreasService areasService;
|
@Autowired
|
private CmmDataMapper cmmDataMapper;
|
|
@Override
|
public String create(Cmm cmm) {
|
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
if(StringUtils.isBlank(cmm.getAreaname())
|
||StringUtils.isBlank(cmm.getDiagnoseType())
|
||StringUtils.isBlank(cmm.getName())
|
||StringUtils.isBlank(cmm.getData8())//总得分
|
||StringUtils.isBlank(cmm.getLevel()) //成熟度等级
|
|| cmm.getRevenue() == null
|
||StringUtils.isBlank(cmm.getIndustry())){
|
}
|
Cmm m = new Cmm();
|
m.setIsdeleted(Constants.ZERO);
|
m.setName(cmm.getName());
|
if(findOne(m) != null){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起, 企业名称重复!");
|
}
|
cmm.setId(UUID.randomUUID().toString());
|
cmm.setIsdeleted(Constants.ZERO);
|
cmm.setEditor(user.getId());
|
cmm.setEditDate(new Date());
|
cmm.setCreator(cmm.getEditor());
|
cmm.setCreateDate(cmm.getEditDate());
|
cmmMapper.insert(cmm);
|
List<CmmData> cmmDataList = initDataModelByParam(cmm);
|
if(cmmDataList!=null && cmmDataList.size()>0){
|
cmmMapper.insertDataBatch(cmmDataList);
|
}
|
return cmm.getId();
|
}
|
|
@Override
|
public void deleteById(String id) {
|
cmmMapper.deleteById(id);
|
}
|
|
@Override
|
public void delete(Cmm cmm) {
|
UpdateWrapper<Cmm> deleteWrapper = new UpdateWrapper<>(cmm);
|
cmmMapper.delete(deleteWrapper);
|
}
|
|
@Override
|
public void deleteByIdInBatch(List<String> ids) {
|
if (CollectionUtils.isEmpty(ids)) {
|
return;
|
}
|
cmmMapper.deleteBatchIds(ids);
|
}
|
|
@Override
|
public void updateById(Cmm cmm) {
|
if(StringUtils.isBlank(cmm.getAreaname())
|
||StringUtils.isBlank(cmm.getId())
|
||StringUtils.isBlank(cmm.getDiagnoseType())
|
||StringUtils.isBlank(cmm.getName())
|
||StringUtils.isBlank(cmm.getData8())//总得分
|
||StringUtils.isBlank(cmm.getLevel()) //成熟度等级
|
|| cmm.getRevenue() == null
|
||StringUtils.isBlank(cmm.getIndustry())){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起, 数据不完整,请检查确认修改后重试!");
|
}
|
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
Cmm model = cmmMapper.selectById(cmm.getId());
|
if(model == null){
|
throw new BusinessException(ResponseStatus.DATA_EMPTY);
|
}
|
if(cmm.getAreaId()!=null){
|
Areas areas = areasService.findById(cmm.getAreaId(), Constants.TWO);
|
if(areas == null){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起, 区域信息不存在!");
|
}
|
cmm.setAreaname(areas.getName());
|
}
|
cmm.setIsdeleted(Constants.ZERO);
|
cmm.setEditor(user.getId());
|
cmm.setEditDate(new Date());
|
cmm.setCreator(cmm.getEditor());
|
cmm.setCreateDate(cmm.getEditDate());
|
// cmmMapper.updateById(cmm);
|
|
List<CmmData> cmmDataList = initDataModelByParam(cmm);
|
UpdateWrapper<CmmData> updateWrapper = new UpdateWrapper<>();
|
updateWrapper.lambda().eq(CmmData::getCmmId, cmm.getId());
|
cmmDataMapper.delete(updateWrapper);
|
if(cmmDataList!=null && cmmDataList.size()>0){
|
cmmMapper.insertDataBatch(cmmDataList);
|
}
|
|
cmmMapper.updateById(cmm);
|
}
|
|
@Override
|
public void updateByIdInBatch(List<Cmm> cmms) {
|
if (CollectionUtils.isEmpty(cmms)) {
|
return;
|
}
|
for (Cmm cmm: cmms) {
|
this.updateById(cmm);
|
}
|
}
|
|
@Override
|
public Cmm findById(String id) {
|
Cmm model =cmmMapper.selectById(id);
|
if(model!=null){
|
model.setRevenueStr(Constants.formatBigdecimal(model.getRevenue()).intValue()+"");
|
initCmmModelByData(model );
|
if(model.getAreaId() != null){
|
Areas area = areasService.findById(model.getAreaId(),Constants.TWO);
|
if(area!=null){
|
model.setCityName(area.getCityName());
|
model.setCityId(area.getCityId());
|
}
|
}
|
}
|
return model;
|
}
|
|
@Override
|
public Cmm findOne(Cmm cmm) {
|
QueryWrapper<Cmm> wrapper = new QueryWrapper<>(cmm);
|
return cmmMapper.selectOne(wrapper.last(" limit 1"));
|
}
|
|
@Override
|
public List<Cmm> findList(Cmm cmm) {
|
QueryWrapper<Cmm> wrapper = new QueryWrapper<>(cmm);
|
return cmmMapper.selectList(wrapper);
|
}
|
|
@Override
|
public PageData<Cmm> findPage(PageWrap<Cmm> pageWrap) {
|
IPage<Cmm> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
|
QueryWrapper<Cmm> queryWrapper = new QueryWrapper<>();
|
Utils.MP.blankToNull(pageWrap.getModel());
|
if (pageWrap.getModel().getId() != null) {
|
queryWrapper.lambda().eq(Cmm::getId, pageWrap.getModel().getId());
|
}
|
if (pageWrap.getModel().getCreator() != null) {
|
queryWrapper.lambda().eq(Cmm::getCreator, pageWrap.getModel().getCreator());
|
}
|
if (pageWrap.getModel().getCreateDate() != null) {
|
queryWrapper.lambda().ge(Cmm::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()));
|
queryWrapper.lambda().le(Cmm::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()));
|
}
|
if (pageWrap.getModel().getEditor() != null) {
|
queryWrapper.lambda().eq(Cmm::getEditor, pageWrap.getModel().getEditor());
|
}
|
if (pageWrap.getModel().getEditDate() != null) {
|
queryWrapper.lambda().ge(Cmm::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()));
|
queryWrapper.lambda().le(Cmm::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()));
|
}
|
if (pageWrap.getModel().getIsdeleted() != null) {
|
queryWrapper.lambda().eq(Cmm::getIsdeleted, pageWrap.getModel().getIsdeleted());
|
}
|
if (pageWrap.getModel().getRemark() != null) {
|
queryWrapper.lambda().eq(Cmm::getRemark, pageWrap.getModel().getRemark());
|
}
|
if (pageWrap.getModel().getName() != null) {
|
queryWrapper.lambda().like(Cmm::getName, pageWrap.getModel().getName());
|
}
|
if (pageWrap.getModel().getServeOrg() != null) {
|
queryWrapper.lambda().eq(Cmm::getServeOrg, pageWrap.getModel().getServeOrg());
|
}
|
if (pageWrap.getModel().getIndustry() != null) {
|
queryWrapper.lambda().eq(Cmm::getIndustry, pageWrap.getModel().getIndustry());
|
}
|
if (pageWrap.getModel().getAreaId() != null) {
|
queryWrapper.lambda().eq(Cmm::getAreaId, pageWrap.getModel().getAreaId());
|
}
|
if (pageWrap.getModel().getAreaname() != null) {
|
queryWrapper.lambda().eq(Cmm::getAreaname, pageWrap.getModel().getAreaname());
|
}
|
if (pageWrap.getModel().getRevenue() != null) {
|
queryWrapper.lambda().eq(Cmm::getRevenue, pageWrap.getModel().getRevenue());
|
}
|
if (pageWrap.getModel().getDiagnoseType() != null) {
|
queryWrapper.lambda().eq(Cmm::getDiagnoseType, pageWrap.getModel().getDiagnoseType());
|
}
|
if (pageWrap.getModel().getLevel() != null) {
|
queryWrapper.lambda().eq(Cmm::getLevel, pageWrap.getModel().getLevel());
|
}
|
for(PageWrap.SortData sortData: pageWrap.getSorts()) {
|
if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
|
queryWrapper.orderByDesc(sortData.getProperty());
|
} else {
|
queryWrapper.orderByAsc(sortData.getProperty());
|
}
|
}
|
queryWrapper.lambda().orderByDesc(Cmm::getCreateDate);
|
queryWrapper.lambda().orderByAsc(Cmm::getRemark);
|
IPage<Cmm> result = cmmMapper.selectPage(page, queryWrapper);
|
if(result.getRecords()!=null ){
|
int num =1;
|
for(Cmm model : result.getRecords()){
|
model.setRevenueStr(Constants.formatBigdecimal(model.getRevenue()).intValue()+"");
|
model.setRemark(num+"");
|
initCmmModelByData(model );
|
|
if(model.getAreaId() != null){
|
Areas area = areasService.findById(model.getAreaId(),Constants.TWO);
|
if(area!=null){
|
model.setCityName(area.getCityName());
|
model.setCityId(area.getCityId());
|
}
|
}
|
num++;
|
}
|
}
|
return PageData.from(result);
|
}
|
|
private void initCmmModelByData(Cmm model ) {
|
//查询数据行数据信息
|
CmmData d = new CmmData();
|
d.setIsdeleted(Constants.ZERO);
|
d.setCmmId(model.getId());
|
List<CmmData> dataList = cmmDataMapper.selectList(new QueryWrapper<>(d));
|
if(dataList!=null){
|
for(CmmData data : dataList){
|
try {
|
Field field = model.getClass().getDeclaredField("data"+data.getType());
|
if(field!=null){
|
field.setAccessible(true);
|
field.set(model,Constants.formatBigdecimal(data.getVal()).doubleValue()+"");
|
}
|
} catch (Exception e) {
|
throw new RuntimeException(e);
|
}
|
|
}
|
}
|
}
|
|
@Override
|
public CmmNumVo levelCount(Cmm cmm) {
|
CmmNumVo result = new CmmNumVo();
|
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
validUserType(user);
|
if(Constants.formatIntegerNum(user.getType()) == Constants.UserType.AREA.getKey()){
|
//如果是县区用户,只能查看当前县区下的数据
|
if(user.getAreaId() == null){
|
return result;
|
}
|
cmm.setAreaId(user.getAreaId());
|
}
|
QueryWrapper<Cmm> wrapper = new QueryWrapper<>(cmm);
|
wrapper.select("level as level,count(id) as num");
|
wrapper.lambda().eq(cmm.getAreaId() != null, Cmm::getAreaId, cmm.getAreaId());
|
wrapper.lambda().eq(cmm.getIndustry() != null, Cmm::getIndustry, cmm.getIndustry());
|
wrapper.lambda().eq( Cmm::getIsdeleted, Constants.ZERO);
|
wrapper.lambda().groupBy(Cmm::getLevel);
|
List<Cmm> list= cmmMapper.selectList(wrapper);
|
if(list !=null){
|
for(Cmm m : list){
|
result.setCompanyNum(result.getCompanyNum()+ Constants.formatIntegerNum(m.getNum()));
|
if(StringUtils.equals(m.getLevel(), "一级")){
|
result.setOneNum(result.getOneNum()+ Constants.formatIntegerNum(m.getNum()));
|
}else if(StringUtils.equals(m.getLevel(), "二级")){
|
result.setTwoNum(result.getTwoNum()+ Constants.formatIntegerNum(m.getNum()));
|
}else if(StringUtils.equals(m.getLevel(), "三级")){
|
result.setThreeNum(result.getThreeNum()+ Constants.formatIntegerNum(m.getNum()));
|
}else if(StringUtils.equals(m.getLevel(), "四级")){
|
result.setFourNum(result.getFourNum()+ Constants.formatIntegerNum(m.getNum()));
|
}else{//未达标
|
result.setZeroNum(result.getZeroNum()+ Constants.formatIntegerNum(m.getNum()));
|
}
|
}
|
}
|
return result;
|
}
|
@Override
|
public List<CmmIndustryVo> industryDataCount(Cmm cmm){
|
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
validUserType(user);
|
if(Constants.formatIntegerNum(user.getType()) == Constants.UserType.AREA.getKey()){
|
//如果是县区用户,只能查看当前县区下的数据
|
if(user.getAreaId() == null){
|
return new ArrayList<>();
|
}
|
cmm.setAreaId(user.getAreaId());
|
}
|
if(cmm.getType() == null || cmm.getType()<0 || cmm.getType()>8){
|
cmm.setType(8);//默认总得分
|
}
|
List<CmmIndustryVo> result= cmmMapper.industryDataCount(cmm);
|
if(result !=null){
|
for (CmmIndustryVo m : result){
|
cmm.setIndustry(m.getIndustry());
|
m.setLevel(levelCount(cmm));
|
}
|
}
|
return result;
|
}
|
@Override
|
public List<CmmAreaVo> areasDataCount(Cmm cmm) {
|
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
if (!(Constants.formatIntegerNum(user.getType()) == Constants.UserType.SJ.getKey()
|
||Constants.formatIntegerNum(user.getType()) == Constants.UserType.SD_ADMIN.getKey()
|
||Constants.formatIntegerNum(user.getType()) == Constants.UserType.SD_CHILD.getKey()
|
||Constants.formatIntegerNum(user.getType()) == Constants.UserType.SYSTEM.getKey()
|
||Constants.formatIntegerNum(user.getType()) == Constants.UserType.SJ_CHILD.getKey()
|
)){
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED);
|
}
|
|
List<CmmAreaVo> result= cmmMapper.dataCountByAreas(cmm);
|
return result;
|
}
|
@Override
|
public List<CmmAreaLevelVo> areasLevelDataCount(Cmm cmm) {
|
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
if (!(Constants.formatIntegerNum(user.getType()) == Constants.UserType.SJ.getKey()
|
||Constants.formatIntegerNum(user.getType()) == Constants.UserType.SD_ADMIN.getKey()
|
||Constants.formatIntegerNum(user.getType()) == Constants.UserType.SD_CHILD.getKey()
|
||Constants.formatIntegerNum(user.getType()) == Constants.UserType.SJ_CHILD.getKey()
|
||Constants.formatIntegerNum(user.getType()) == Constants.UserType.SYSTEM.getKey()
|
)){
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED);
|
}
|
|
List<Cmm> list= cmmMapper.dataCountByAreasLevel(cmm);
|
List<CmmAreaLevelVo> result = new ArrayList<>();
|
if(list!=null){
|
for(Cmm model: list ){
|
CmmAreaLevelVo t = getFromListByAreaId(model.getAreaId(),result);
|
if(t == null){
|
//如果没加入过
|
t = new CmmAreaLevelVo();
|
t.setAreaId(model.getAreaId());
|
t.setAreaname(model.getAreaname());
|
for(Cmm mm: list ){
|
//先统计企业总数量
|
if(Constants.formatIntegerNum(t.getAreaId()) ==Constants.formatIntegerNum(mm.getAreaId())){
|
t.setCompanyNum(t.getCompanyNum()+Constants.formatIntegerNum(mm.getNum()));
|
}
|
}
|
|
t.setLevel(initAreaLevelModel(t.getAreaId(),t.getCompanyNum(),list));
|
result.add(t);
|
}
|
}
|
}
|
return result;
|
}
|
|
private CmmRateVo initAreaLevelModel(Integer areaId,int total,List<Cmm> list) {
|
|
|
CmmRateVo result = new CmmRateVo();
|
result.setOneRate(new BigDecimal(0.00));
|
result.setTwoRate(new BigDecimal(0.00));
|
result.setThreeRate(new BigDecimal(0.00));
|
result.setFourRate(new BigDecimal(0.00));
|
result.setZeroRate(new BigDecimal(0.00));
|
if(total > 0){
|
for(Cmm m: list ){
|
//再次循环获取各个等级的数据
|
if(Constants.formatIntegerNum(areaId) == Constants.formatIntegerNum(m.getAreaId())){
|
if(StringUtils.equals(m.getLevel(), "一级")){
|
result.setOneRate(new BigDecimal(Constants.formatIntegerNum(m.getNum())).multiply(new BigDecimal(100)).divide(new BigDecimal(total), 2, RoundingMode.FLOOR) );
|
}else if(StringUtils.equals(m.getLevel(), "二级")){
|
result.setTwoRate(new BigDecimal(Constants.formatIntegerNum(m.getNum())).multiply(new BigDecimal(100)).divide(new BigDecimal(total), 2, RoundingMode.FLOOR) );
|
}else if(StringUtils.equals(m.getLevel(), "三级")){
|
result.setThreeRate(new BigDecimal(Constants.formatIntegerNum(m.getNum())).multiply(new BigDecimal(100)).divide(new BigDecimal(total), 2, RoundingMode.FLOOR) );
|
}else if(StringUtils.equals(m.getLevel(), "四级")){
|
result.setFourRate(new BigDecimal(Constants.formatIntegerNum(m.getNum())).multiply(new BigDecimal(100)).divide(new BigDecimal(total), 2, RoundingMode.FLOOR) );
|
}else{//未达标
|
result.setZeroRate(new BigDecimal(Constants.formatIntegerNum(m.getNum())).multiply(new BigDecimal(100)).divide(new BigDecimal(total), 2, RoundingMode.FLOOR) );
|
}
|
}
|
}
|
|
}
|
return result;
|
}
|
|
private CmmAreaLevelVo getFromListByAreaId(Integer areaId, List<CmmAreaLevelVo> result ) {
|
if(result !=null){
|
for(CmmAreaLevelVo model :result){
|
if(Constants.formatIntegerNum(areaId) ==Constants.formatIntegerNum(model.getAreaId())){
|
|
return model;
|
}
|
}
|
}
|
return null;
|
}
|
|
@Override
|
public List<CmmAreaVo> parentAreaCount(Cmm cmm) {
|
List<CmmAreaVo> result =getAreaCountList(0,7,cmm);
|
return result;
|
}
|
@Override
|
public List<CmmAreaVo> industryAreaDataCount(Cmm cmm) {
|
if(cmm.getIndustryList() == null || cmm.getIndustryList().size()==0){
|
//行业数据不能为空
|
return new ArrayList<>();
|
}
|
List<CmmAreaVo> result =getAreaCountList(0,7,cmm);
|
return result;
|
}
|
|
@Override
|
public List<BigDecimal> industryNdDataCount(Cmm cmm) {
|
if(cmm.getIndustryList() == null || cmm.getIndustryList().size()==0){
|
//行业数据不能为空
|
return new ArrayList<>();
|
}
|
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
validUserType(user);
|
if(Constants.formatIntegerNum(user.getType()) == Constants.UserType.AREA.getKey()){
|
//如果是县区用户,只能查看当前县区下的数据
|
if(user.getAreaId() == null){
|
return new ArrayList<>();
|
}
|
cmm.setAreaId(user.getAreaId());
|
}
|
if(cmm.getType() == null || cmm.getType()<0 || cmm.getType()>8){
|
cmm.setType(8);//默认总得分
|
}
|
List<BigDecimal> result= cmmMapper.selectScoreByType(cmm);
|
return result;
|
}
|
@Override
|
public List<BigDecimal> ndDataCount(Cmm cmm) {
|
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
validUserType(user);
|
if(Constants.formatIntegerNum(user.getType()) == Constants.UserType.AREA.getKey()){
|
//如果是县区用户,只能查看当前县区下的数据
|
if(user.getAreaId() == null){
|
return new ArrayList<>();
|
}
|
cmm.setAreaId(user.getAreaId());
|
}
|
if(cmm.getType() == null || cmm.getType()<0 || cmm.getType()>8){
|
cmm.setType(8);//默认总得分
|
}
|
List<BigDecimal> result= cmmMapper.selectScoreByType(cmm);
|
return result;
|
}
|
@Override
|
public List<CmmAreaVo> childAreaCount(Cmm cmm) {
|
|
List<CmmAreaVo> result =getAreaCountList(9,28,cmm);
|
return result;
|
}
|
|
private List<CmmAreaVo> getAreaCountList(int start, int end, Cmm cmm) {
|
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
validUserType(user);
|
if(Constants.formatIntegerNum(user.getType()) == Constants.UserType.AREA.getKey()){
|
//如果是县区用户,只能查看当前县区下的数据
|
if(user.getAreaId() == null){
|
return new ArrayList<>();
|
}
|
cmm.setAreaId(user.getAreaId());
|
}
|
cmm.setTypeList(new ArrayList<>());
|
// 0人员 1技术 2资源 3设计4生产 5物流 6销售 7服务
|
for(int i=start;i<=end;i++){
|
cmm.getTypeList().add(i);
|
}
|
List<CmmAreaVo> list= cmmMapper.areaDataCount(cmm);
|
List<CmmAreaVo> result = new ArrayList<>();
|
for(int i=start;i<=end;i++){
|
CmmAreaVo t = getFromListByType(i,list);
|
if(t ==null){
|
t = new CmmAreaVo();
|
}
|
t.setLabelName(getLableNameByType(i));
|
t.setAvgScore(Constants.formatBigdecimal(t.getAvgScore()));
|
t.setMaxScore(Constants.formatBigdecimal(t.getMaxScore()));
|
t.setMinScore(Constants.formatBigdecimal(t.getMinScore()));
|
result.add(t);
|
}
|
|
return result;
|
}
|
|
|
private CmmAreaVo getFromListByType(int i, List<CmmAreaVo> list) {
|
if(list!=null){
|
for(CmmAreaVo model :list){
|
if(i == Constants.formatIntegerNum(model.getType())){
|
return model;
|
}
|
}
|
}
|
return null;
|
}
|
|
/**
|
* '数据类型 0人员 1技术 2资源 3设计4生产 5物流 6销售 7服务 8总得分 9组织战略 10人员技能 11数据 12集成 14信息安全
|
* 14装备 15网络 16产品设计 17工艺设计 18采购 19计划与调度 20生产作业 21设备管理 22安全与环保 23仓储与配送 24能源管理
|
* 25物流(子域) 26销售(子域) 27客户服务 28产品服务 ',
|
* @param type
|
* @return
|
*/
|
public static String getLableNameByType(int type){
|
String[] lables = new String[]{"人员","技术","资源","设计","生产","物流","销售","服务","总得分","组织战略","人员技能","数据","集成","信息安全",
|
"装备","网络","产品设计","工艺设计","采购","计划与调度","生产作业","设备管理","安全与环保","仓储与配送","能源管理","物流","销售","客户服务","产品服务"};
|
if(type < lables.length){
|
return lables[type];
|
}
|
return null;
|
}
|
private void validUserType(LoginUserInfo user) {
|
if (!(Constants.formatIntegerNum(user.getType()) == Constants.UserType.AREA.getKey()
|
||Constants.formatIntegerNum(user.getType()) == Constants.UserType.SJ.getKey()
|
||Constants.formatIntegerNum(user.getType()) == Constants.UserType.SD_ADMIN.getKey()
|
||Constants.formatIntegerNum(user.getType()) == Constants.UserType.SJ_CHILD.getKey()
|
||Constants.formatIntegerNum(user.getType()) == Constants.UserType.SD_CHILD.getKey()
|
||Constants.formatIntegerNum(user.getType()) == Constants.UserType.SYSTEM.getKey()
|
)){
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED);
|
}
|
}
|
|
@Override
|
public long count(Cmm cmm) {
|
QueryWrapper<Cmm> wrapper = new QueryWrapper<>(cmm);
|
return cmmMapper.selectCount(wrapper);
|
}
|
|
@Transactional(rollbackFor = {Exception.class, BusinessException.class})
|
@Override
|
public Integer importBatch(MultipartFile file){
|
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
ExcelImporter ie = null;
|
List<Cmm> dataList =null;
|
try {
|
ie = new ExcelImporter(file,2,0);
|
dataList = ie.getDataList(Cmm.class,null);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
if(dataList == null || dataList.size() ==0){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,录入数据为空!");
|
}
|
List<Cmm> addList = new ArrayList<>();
|
List<String> updateIdList = new ArrayList<>();
|
List<Cmm> updateList = new ArrayList<>();
|
List<CmmData> cmmDataList = new ArrayList<>();
|
for(int i=0;i<dataList.size();i++){
|
Cmm cmm = dataList.get(i);
|
if(StringUtils.isBlank(cmm.getAreaname())
|
||StringUtils.isBlank(cmm.getDiagnoseType())
|
||StringUtils.isBlank(cmm.getName())
|
||StringUtils.isBlank(cmm.getData8())//总得分
|
||StringUtils.isBlank(cmm.getLevel()) //成熟度等级
|
||StringUtils.isBlank(cmm.getRevenueStr())
|
||StringUtils.isBlank(cmm.getIndustry())){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,第【"+(i+4)+"】行数据不完整,请检查确认修改后重试!");
|
}
|
BigDecimal val = getDecimalByStr(cmm.getRevenueStr());
|
if(val == null){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,第【"+(i+4)+"】行数据【"+cmm.getRevenueStr()+"】不正确,请检查确认修改后重试!");
|
}
|
//营业收入
|
cmm.setRevenue(val);
|
Integer cityId = 340200;//匹配芜湖市
|
Areas areas = areasService.findByNameAndParentId(cmm.getAreaname(), Constants.TWO,cityId);
|
if(areas ==null){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,第【"+(i+4)+"】行区域【"+cmm.getAreaname()+"】不存在,请检查确认修改后重试!");
|
}
|
cmm.setAreaId(areas.getId());
|
Cmm param = new Cmm();
|
param.setName(cmm.getName());
|
param =findOne(param);
|
if(param == null){
|
//新增
|
cmm.setId(UUID.randomUUID().toString());
|
cmm.setCreator(user.getId());
|
cmm.setCreateDate(new Date());
|
cmm.setEditor(user.getId());
|
cmm.setEditDate(new Date());
|
cmm.setIsdeleted(Constants.ZERO);
|
addList.add(cmm);
|
}else {
|
//修改
|
cmm.setEditor(user.getId());
|
cmm.setEditDate(new Date());
|
cmm.setId(param.getId());
|
updateIdList.add(param.getId());
|
updateList.add(cmm);
|
}
|
//生成数据行集合
|
cmmDataList.addAll(initDataModelByParam(cmm));
|
}
|
if(addList.size()>0){
|
cmmMapper.insertBatch(addList);
|
}
|
if(updateList.size()>0){
|
if(updateIdList.size()>0){
|
//删除原有的数据信息
|
UpdateWrapper<CmmData> updateWrapper = new UpdateWrapper<>();
|
updateWrapper.lambda().in(CmmData::getCmmId, updateIdList);
|
cmmDataMapper.delete(updateWrapper);
|
}
|
//遍历更新所有新数据
|
for(Cmm cmm:updateList){
|
cmmMapper.updateById(cmm);
|
}
|
}
|
if(cmmDataList.size()>0){
|
//批量插入数据行集合
|
cmmMapper.insertDataBatch(cmmDataList);
|
}
|
return 0;
|
|
}
|
|
private List<CmmData> initDataModelByParam(Cmm cmm) {
|
List<CmmData> dataList = new ArrayList<>();
|
for (int i=0;i<=28;i++){
|
dataListAddModel(i,dataList,cmm);
|
}
|
// dataListAddModel(1,cmm.getData1(),dataList,cmm);
|
// dataListAddModel(2,cmm.getData2(),dataList,cmm);
|
// dataListAddModel(3,cmm.getData3(),dataList,cmm);
|
// dataListAddModel(4,cmm.getData4(),dataList,cmm);
|
// dataListAddModel(5,cmm.getData5(),dataList,cmm);
|
// dataListAddModel(6,cmm.getData6(),dataList,cmm);
|
// dataListAddModel(7,cmm.getData7(),dataList,cmm);
|
// dataListAddModel(8,cmm.getData8(),dataList,cmm);
|
// dataListAddModel(9,cmm.getData9(),dataList,cmm);
|
// dataListAddModel(10,cmm.getData10(),dataList,cmm);
|
// dataListAddModel(11,cmm.getData11(),dataList,cmm);
|
// dataListAddModel(12,cmm.getData12(),dataList,cmm);
|
// dataListAddModel(13,cmm.getData13(),dataList,cmm);
|
// dataListAddModel(14,cmm.getData14(),dataList,cmm);
|
// dataListAddModel(15,cmm.getData15(),dataList,cmm);
|
// dataListAddModel(16,cmm.getData16(),dataList,cmm);
|
// dataListAddModel(17,cmm.getData17(),dataList,cmm);
|
// dataListAddModel(18,cmm.getData18(),dataList,cmm);
|
// dataListAddModel(19,cmm.getData19(),dataList,cmm);
|
// dataListAddModel(20,cmm.getData20(),dataList,cmm);
|
// dataListAddModel(21,cmm.getData21(),dataList,cmm);
|
// dataListAddModel(22,cmm.getData22(),dataList,cmm);
|
// dataListAddModel(23,cmm.getData23(),dataList,cmm);
|
// dataListAddModel(24,cmm.getData24(),dataList,cmm);
|
// dataListAddModel(25,cmm.getData25(),dataList,cmm);
|
// dataListAddModel(26,cmm.getData26(),dataList,cmm);
|
// dataListAddModel(27,cmm.getData27(),dataList,cmm);
|
// dataListAddModel(28,cmm.getData28(),dataList,cmm);
|
return dataList;
|
}
|
|
private BigDecimal getDecimalByStr(String str){
|
BigDecimal val = null;
|
try {
|
val = BigDecimal.valueOf(Double.parseDouble(str));
|
}catch (Exception e){
|
|
}
|
return val;
|
}
|
private void dataListAddModel(int i, String data0, List<CmmData> dataList,Cmm cmm) {
|
BigDecimal val = null;
|
try {
|
val = BigDecimal.valueOf(Double.parseDouble(data0));
|
}catch (Exception e){
|
|
}
|
if(val!=null){
|
CmmData model = new CmmData();
|
model.setId(UUID.randomUUID().toString());
|
model.setIsdeleted(Constants.ZERO);
|
model.setCmmId(cmm.getId());
|
model.setCreator(cmm.getEditor());
|
model.setCreateDate(new Date());
|
model.setType(i);
|
model.setVal(val);
|
dataList.add(model);
|
}
|
}
|
private void dataListAddModel(int i, List<CmmData> dataList,Cmm cmm) {
|
BigDecimal val = null;
|
String data0 = null;
|
|
try {
|
Field field = cmm.getClass().getDeclaredField("data"+i);
|
if(field!=null){
|
field.setAccessible(true);
|
data0 = (String) field.get(cmm);
|
}
|
val = BigDecimal.valueOf(Double.parseDouble(data0));
|
}catch (Exception e){
|
// e.printStackTrace();
|
|
}
|
if(val!=null){
|
CmmData model = new CmmData();
|
model.setId(UUID.randomUUID().toString());
|
model.setIsdeleted(Constants.ZERO);
|
model.setCmmId(cmm.getId());
|
model.setCreator(cmm.getEditor());
|
model.setCreateDate(new Date());
|
model.setType(i);
|
model.setVal(val);
|
dataList.add(model);
|
}
|
}
|
}
|