package com.doumee.service.business.impl;
|
|
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 com.doumee.biz.system.SystemDictDataBiz;
|
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.Constants.ProjectRecord;
|
import com.doumee.core.utils.Constants.UserType;
|
import com.doumee.core.utils.DateUtil;
|
import com.doumee.core.utils.Utils;
|
import com.doumee.dao.business.*;
|
import com.doumee.dao.business.model.*;
|
import com.doumee.dao.business.vo.bs.*;
|
import com.doumee.dao.business.vo.bs.ServiceCompanyStatisticsVO;
|
import com.doumee.dao.system.SystemUserMapper;
|
import com.doumee.dao.system.dto.ExpertReportDTO;
|
import com.doumee.dao.system.dto.MultiFileDTO;
|
import com.doumee.dao.system.model.SystemRoleMenu;
|
import com.doumee.dao.system.model.SystemUser;
|
import com.doumee.dao.system.vo.CompanyDeclaresVo;
|
import com.doumee.service.business.*;
|
import com.doumee.service.system.SystemUserService;
|
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
import org.apache.commons.collections4.MapUtils;
|
import org.apache.commons.lang3.StringUtils;
|
import org.apache.shiro.SecurityUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.context.annotation.Lazy;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.util.CollectionUtils;
|
|
import java.math.BigDecimal;
|
import java.math.RoundingMode;
|
import java.util.*;
|
import java.util.stream.Collectors;
|
|
/**
|
* 企业项目报名信息表Service实现
|
*
|
* @author 江蹄蹄
|
* @date 2023/02/15 08:55
|
*/
|
@Service
|
public class DeclaresServiceImpl implements DeclaresService {
|
|
@Autowired
|
private DeclaresMapper declaresMapper;
|
|
@Autowired
|
private ProjectMapper projectMapper;
|
|
|
@Lazy
|
@Autowired
|
private MultifileService multifileService;
|
|
@Autowired
|
private DeclareAnswerService declareAnswerService;
|
@Autowired
|
private DeclaresJoinMapper declaresJoinMapper;
|
@Autowired
|
private AreasService areasService;
|
|
@Autowired
|
private DeclareHistoryMapper declareHistoryMapper;
|
|
@Autowired
|
private DeclareAnswerMapper declareAnswerMapper;
|
|
|
@Autowired
|
DeclareJoinMapper declareJoinMapper;
|
@Autowired
|
DeclareServiceJoinMapper declareServiceJoinMapper;
|
@Autowired
|
ProjectLabelMapper projectLabelMapper;
|
|
@Autowired
|
CompanyMapper companyMapper;
|
|
@Lazy
|
@Autowired
|
private ProjectService projectService;
|
|
@Autowired
|
DeclareExpertMapper declareExpertMapper;
|
@Autowired
|
@Lazy
|
DeclareScoreService declareScoreService;
|
@Autowired
|
ProjectScoreMapper projectScoreMapper;
|
@Autowired
|
DeclareScoreMapper declareScoreMapper;
|
|
@Autowired
|
DeclareExpertJoinMapper declareExpertJoinMapper;
|
|
@Autowired
|
MultifileMapper multifileMapper;
|
|
@Autowired
|
SystemUserService systemUserService;
|
|
@Autowired
|
private ProjectSoService projectSoService;
|
|
|
@Autowired
|
private DeclareHistoryService declareHistoryService;
|
|
@Autowired
|
private SystemUserMapper systemUserMapper;
|
|
@Autowired
|
private CompanyService companyService;
|
|
@Autowired
|
private DeclareExpertService declareExpertService;
|
|
@Autowired
|
private ProjectRatioMapper projectRatioMapper;
|
|
|
@Autowired
|
private DeclareServiceMapper declareServiceMapper;
|
|
|
@Autowired
|
private CompanyEconomicsService companyEconomicsService;
|
|
@Autowired
|
private SystemDictDataBiz systemDictDataBiz;
|
|
|
@Override
|
@Transactional(rollbackFor = {BusinessException.class, Exception.class})
|
public Integer create(Declares declares) {
|
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
if(UserType.COMPANY.getKey() != Constants.formatIntegerNum(user.getType())){
|
//只有企业才能进行该操作
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "对不起,只有企业才能进行该操作!");
|
}
|
if((Constants.equalsInteger(declares.getStatus(),Constants.ONE)) && (StringUtils.isBlank(declares.getLinkname())
|
||StringUtils.isBlank(declares.getLinkphone()))){
|
//项目如果有问卷信息,则必须填写问卷
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,请按要求填写申报信息!");
|
}
|
//项目信息
|
Project project = declares.getProjectId() == null ? null : projectService.findById(declares.getProjectId());
|
if(!(Objects.nonNull(project) && Constants.formatIntegerNum(project.getStatus()) == Constants.ONE)){
|
//项目不存在或者项目状态不是进行
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "项目信息异常,不支持报名");
|
}
|
//报名信息(是否存在报名信息)
|
Declares querydec = findByProjectAndCom(project.getId(),user.getCompanyId());
|
//数据有效性校验
|
isCreateParamValid(querydec,declares,project,user);
|
//处理主表申报记录并生成操作历史数据
|
dealRecordAndHistory(declares,querydec, user,project) ;
|
//处理附件数据
|
dealBatchMultiFiles(declares,querydec);
|
//更新答题记录关联申报记录
|
updateAnswerRecord(declares,user.getId());
|
|
return declares.getId();
|
}
|
@Override
|
public Integer updateDiagnoseType(Declares declares) {
|
if(declares.getId() == null || declares.getDiagnoseTypeId() == null){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST);
|
}
|
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
if(UserType.SD_ADMIN.getKey() != Constants.formatIntegerNum(user.getType())
|
&& UserType.SD_CHILD.getKey() != Constants.formatIntegerNum(user.getType())){
|
//只有企业才能进行该操作
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "对不起,只有综合服务单位才能进行该操作!");
|
}
|
Declares model = declareJoinMapper.selectById(declares.getId());
|
if(model ==null){
|
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "报名信息不存在!");
|
}
|
ProjectLabel pd = new ProjectLabel();
|
pd.setProjectId(model.getProjectId());
|
pd.setIsdeleted(Constants.ZERO);
|
pd.setId(declares.getDiagnoseTypeId());
|
pd = projectLabelMapper.selectOne(new QueryWrapper<>(pd).last("limit 1"));
|
if(pd == null){
|
//只有企业才能进行该操作
|
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "项目诊断类型信息不存在");
|
}
|
model = new Declares();
|
model.setId(declares.getId());
|
model.setDiagnoseTypeId(declares.getDiagnoseTypeId());
|
model.setEditor(user.getId());
|
model.setEditDate(new Date());
|
declaresMapper.updateById(model);
|
return declares.getId();
|
}
|
|
/**
|
* 处理主表申报记录和操作历史数据
|
* @param declares
|
* @param querydec
|
* @param user
|
* @param project
|
*/
|
private void dealRecordAndHistory(Declares declares,Declares querydec, LoginUserInfo user,Project project) {
|
DeclareHistory declareHistory= new DeclareHistory();
|
// declareHistory.setStatus(querydec==null?null:querydec.getStatus());
|
Date date =new Date();
|
declareHistory.setCheckor(user.getId());
|
declareHistory.setCreator(user.getId());
|
declareHistory.setCheckDate(date);
|
declareHistory.setCreateDate(date);
|
declareHistory.setIsdeleted(Constants.ZERO);
|
String hisContent;
|
if (declares.getStatus() == Constants.ONE) {
|
//如果是提交操作
|
if (project.getAreaCheck() == Constants.ZERO) {
|
//经过县区审核
|
declareHistory.setStatus(Constants.DeclareStatus.CHECK_WAIT.getKey());
|
} else {
|
//不经过县区审核
|
declareHistory.setStatus(Constants.DeclareStatus.CHECK_PASS.getKey());
|
}
|
//历史为提交记录
|
declareHistory.setType(ProjectRecord.COM_SUBMIT.getKey());
|
hisContent = ProjectRecord.COM_SUBMIT.getNoteinfo();
|
} else {
|
//如果是保存操作
|
declareHistory.setType(ProjectRecord.COM_EDITING.getKey());
|
declareHistory.setStatus(Constants.DeclareStatus.EDITING.getKey());
|
//历史为保存记录
|
hisContent = ProjectRecord.COM_EDITING.getNoteinfo();
|
}
|
declareHistory.setCheckInfo(hisContent.replace("${param2}", UserType.getName(user.getType()))
|
.replace("${param3}",StringUtils.defaultString(user.getUsername(),""))
|
.replace("${param4}",Constants.DeclareStatus.getNoteinfo(declareHistory.getStatus())));
|
declares.setCheckDate(declareHistory.getCheckDate());
|
declares.setCheckInfo(declareHistory.getCheckInfo());
|
declares.setCheckType(declareHistory.getType());
|
declares.setStatus(declareHistory.getStatus());
|
if (querydec != null) {
|
//如果不是第一次操作,更新主表数据
|
declares.setEditor(user.getId());
|
declares.setEditDate(date);
|
declares.setId(querydec.getId());
|
declaresMapper.updateById(declares);
|
}else {
|
//如果是第一次操作
|
declares.setIsdeleted(Constants.ZERO);
|
declares.setCreateDate(date);
|
declares.setCreator(user.getId());
|
declares.setCompanyId(user.getCompanyId());
|
declaresMapper.insert(declares);
|
}
|
//插入历史记录
|
|
if (declares.getStatus() == Constants.ZERO) {
|
//保存做更新操作
|
DeclareHistory queryhis= new DeclareHistory();
|
queryhis.setIsdeleted(Constants.ZERO);
|
queryhis.setDeclareId(declares.getId());
|
queryhis.setStatus(declareHistory.getStatus());
|
DeclareHistory hisResult= declareHistoryMapper.selectOne(new QueryWrapper<>(queryhis)
|
.last("limit 1")
|
);
|
if(hisResult!=null){
|
declareHistory.setEditor(user.getId());
|
declareHistory.setEditDate(new Date());
|
declareHistory.setId(hisResult.getId());
|
declareHistory.setDeclareId(declares.getId());
|
declareHistoryMapper.updateById(declareHistory);
|
}else{
|
declareHistory.setDeclareId(declares.getId());
|
declareHistoryMapper.insert(declareHistory);
|
}
|
}else{
|
declareHistory.setDeclareId(declares.getId());
|
declareHistoryMapper.insert(declareHistory);
|
}
|
}
|
|
/**
|
* 批量插入文件数据
|
* @param declares
|
* @param querydec
|
*/
|
private void dealBatchMultiFiles(Declares declares,
|
Declares querydec) {
|
if(querydec!=null){
|
//删除原有的申报文件信息
|
Multifile multifile = new Multifile();
|
multifile.setObjId(declares.getId());
|
multifile.setObjType(Constants.MultiFile.BUSINESS_DECLARE.getKey());
|
multifileService.delete(multifile);
|
}
|
//新增文件信息
|
if(declares.getFileList()!=null ){
|
declares.getFileList().forEach(i -> {
|
if(StringUtils.isEmpty(i.getFileurl())){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), ResponseStatus.BAD_REQUEST.getMessage());
|
}
|
Multifile multifile = new Multifile();
|
multifile.setIsdeleted(Constants.ZERO);
|
multifile.setCreateDate(new Date());
|
multifile.setObjId(declares.getId());
|
multifile.setName(i.getName());
|
multifile.setType(Constants.TWO);
|
multifile.setObjType(Constants.MultiFile.BUSINESS_DECLARE.getKey());
|
multifile.setFileurl(i.getFileurl());
|
multifileService.create(multifile);
|
});
|
}
|
}
|
|
/**
|
* 更新答题记录关联申报记录
|
*/
|
|
private void updateAnswerRecord(Declares declares, Integer userid) {
|
if(declares.getAnswerId()!=null){
|
//如果有答题,更新项目问卷答题记录
|
DeclareAnswer declareAnswer = new DeclareAnswer();
|
declareAnswer.setEditDate(new Date());
|
declareAnswer.setEditor(userid);
|
declareAnswer.setId(declares.getAnswerId());
|
declareAnswer.setDeclareId(declares.getId());
|
declareAnswerMapper.updateById(declareAnswer);
|
}
|
}
|
|
private Declares findByProjectAndCom(Integer projectId, Integer companyId) {
|
Declares dp = new Declares();
|
dp.setCompanyId(companyId);
|
dp.setProjectId(projectId);
|
dp.setIsdeleted(Constants.ZERO);
|
Declares querydec = declaresMapper.selectOne(new QueryWrapper<>(dp).last("limit 1") );
|
return querydec;
|
}
|
|
/**
|
* 数据有效性校验 参数,及报名状态是否满足
|
* @param querydec
|
* @param declares
|
* @param project
|
* @param user
|
*/
|
private void isCreateParamValid(Declares querydec, Declares declares,Project project, LoginUserInfo user) {
|
if((Constants.equalsInteger(declares.getStatus(),Constants.ONE)) && (project.getLabelCount() >0 && declares.getDiagnoseTypeId() ==null)){
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "对不起,请选择诊断类型!");
|
}
|
if(project.getQuestionnaireId() != null
|
&& declares.getAnswerId() == null
|
&& Constants.equalsInteger(declares.getStatus(),Constants.ONE)){
|
//项目如果有问卷信息,则必须填写问卷
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,该项目必须进行问卷填写哦!");
|
}
|
|
if(Objects.nonNull(querydec)
|
&& !(Constants.equalsInteger(querydec.getStatus(),Constants.DeclareStatus.EDITING.getKey())
|
||Constants.equalsInteger(querydec.getStatus(),Constants.DeclareStatus.CHECK_EDIT.getKey()))){
|
//如果存在报名记录,判断报名记录状态,只有三种状态可操作性
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "状态已变更不允许提交");
|
}
|
//判断企业报名是报名还是提交,报名时参数不做判断,提交时参数做判断
|
if (Objects.isNull(declares.getStatus())){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,请按照报名提交要求填写数据!");
|
}
|
|
Company company=new Company();
|
company.setId(user.getCompanyId());
|
if(!companyService.judgeImproveIsFinish(company)){
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"提交失败!请先完善企业资料!");
|
}
|
if(declares.getAnswerId()!=null){
|
//答题记录有效性
|
DeclareAnswer declareAnswer = declareAnswerMapper.selectById(declares.getAnswerId()) ;
|
if(declareAnswer == null
|
|| !Constants.equalsInteger(declareAnswer.getQuestionnaireId(),project.getQuestionnaireId())
|
|| !Constants.equalsInteger(declareAnswer.getCompanyId(),user.getCompanyId())){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,问卷填写数据有误,请尝试返回刷新重试!");
|
}
|
}
|
}
|
|
@Override
|
public void deleteById(Integer id) {
|
declaresMapper.deleteById(id);
|
}
|
|
@Override
|
public void delete(Declares declares) {
|
UpdateWrapper<Declares> deleteWrapper = new UpdateWrapper<>(declares);
|
declaresMapper.delete(deleteWrapper);
|
}
|
|
@Override
|
public void deleteByIdInBatch(List<Integer> ids) {
|
if (CollectionUtils.isEmpty(ids)) {
|
return;
|
}
|
declaresMapper.deleteBatchIds(ids);
|
}
|
|
@Override
|
public void updateById(Declares declares) {
|
declaresMapper.updateById(declares);
|
}
|
|
/**
|
* 如果系统配置开启企业服务机构双选,针对【审核通过】及【服务机构拒绝】状态的报名信息,企业支持选择服务机构;选择后,状态流转为【待服务机构确认】
|
*
|
* @param declares
|
* @throws BusinessException
|
*/
|
@Override
|
public void chooseService(Declares declares) throws BusinessException {
|
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
if (declares.getId() == null || declares.getSoId() == null) {
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), ResponseStatus.BAD_REQUEST.getMessage());
|
}
|
|
MPJLambdaWrapper<Declares> wrapper = new MPJLambdaWrapper<>();
|
wrapper.selectAll(Declares.class);
|
wrapper.selectAs(Project::getSodType, Declares::getSodType);
|
wrapper.leftJoin(Project.class, Project::getId, Declares::getProjectId);
|
wrapper.eq(Project::getIsdeleted, Constants.ZERO);
|
wrapper.eq(Declares::getIsdeleted, Constants.ZERO);
|
wrapper.eq(Declares::getId, declares.getId());
|
Declares querydec = declareJoinMapper.selectJoinOne(Declares.class, wrapper);
|
|
ProjectSo projectSo = projectSoService.belongToService(querydec,declares.getSoId());
|
|
chooseServiceJudge( declares, querydec, user, projectSo );
|
|
DeclareHistory history = new DeclareHistory();
|
history.setType(ProjectRecord.COM_SELECT_SO.getKey());
|
history.setStatus(Constants.DeclareStatus.WAIT_SO_COMFIRM.getKey());
|
history.setCheckor(user.getId());
|
history.setCheckDate(new Date());
|
history.setCheckInfo(ProjectRecord.COM_SELECT_SO.getNoteinfo().replace("${param2}", UserType.getName(user.getType()))
|
.replace("${param3}", StringUtils.defaultString(user.getUsername(), ""))
|
.replace("${param5}", StringUtils.defaultString(projectSo.getCompanyName(), ""))
|
.replace("${param4}", Constants.DeclareStatus.getNoteinfo(history.getStatus())));
|
|
querydec.setEditor(user.getId());
|
querydec.setEditDate(new Date());
|
querydec.setStatus(history.getStatus());
|
querydec.setCheckType(history.getType());
|
querydec.setSoId(declares.getSoId());
|
querydec.setCheckInfo(history.getCheckInfo());
|
querydec.setCheckor(history.getCheckor());
|
querydec.setCheckDate(history.getCheckDate());
|
declaresMapper.updateById(querydec);
|
|
//插入历史记录表
|
history.setDeclareId(querydec.getId());
|
history.setCreator(user.getId());
|
history.setDeclareId(querydec.getId());
|
declareHistoryService.create(history);
|
}
|
|
/**
|
* 企业报名详情选择服务机构保存数据校验
|
* @param declares
|
* @param querydec
|
* @param user
|
*/
|
public void chooseServiceJudge(Declares declares, Declares querydec,LoginUserInfo user,ProjectSo projectSo ){
|
if (!Constants.equalsInteger(user.getType(), UserType.COMPANY.getKey())) {
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"非企业用用户禁止操作");
|
}
|
|
if (Objects.isNull(querydec)) {
|
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), ResponseStatus.DATA_EMPTY.getMessage());
|
}
|
if (!Constants.equalsInteger(user.getCompanyId(), querydec.getCompanyId())) {
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), ResponseStatus.NOT_ALLOWED.getMessage());
|
}
|
if (Objects.isNull(projectSo)) {
|
throw new BusinessException(ResponseStatus.DATA_ERRO.getCode(), "项目没有关联该服务机构,不允许操作");
|
}
|
if (!Constants.equalsInteger(querydec.getSodType(), Constants.ZERO)) {
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "项目未开启双选不允许选择");
|
}
|
if (!(Constants.equalsInteger(querydec.getStatus(), Constants.DeclareStatus.CHECK_PASS.getKey()) || Constants.equalsInteger(querydec.getStatus(), Constants.DeclareStatus.SO_BACK.getKey()))) {
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "状态已流转,不允许操作");
|
}
|
|
|
}
|
|
@Override
|
public void updateByIdInBatch(List<Declares> declaress) {
|
if (CollectionUtils.isEmpty(declaress)) {
|
return;
|
}
|
for (Declares declares : declaress) {
|
this.updateById(declares);
|
}
|
}
|
|
@Override
|
public Declares findById(Integer id) {
|
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
|
Declares queryDec = declareJoinMapper.selectById(id);
|
String path = systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+ systemDictDataBiz.queryByCode(Constants.OSS,Constants.PROJECT_FILE).getCode();
|
Multifile mufQuery = new Multifile();
|
mufQuery.setIsdeleted(Constants.ZERO);
|
mufQuery.setObjId(id);
|
mufQuery.setObjType(Constants.MultiFile.BUSINESS_DECLARE.getKey());
|
// mufQuery.setType(Constants.ZERO);
|
List<Multifile> fileList = multifileService.findList(mufQuery);
|
for(Multifile fl:fileList){
|
fl.setFileurlfull(path+fl.getFileurl());
|
}
|
queryDec.setFileServiceList(fileList);
|
|
//查看问卷详情
|
DeclareAnswer queryRes = new DeclareAnswer();
|
queryRes.setIsdeleted(Constants.ZERO);
|
queryRes.setId(queryDec.getAnswerId());
|
DeclareAnswer dasRes = declareAnswerService.findOne(queryRes);
|
queryDec.setDeclareAnswer(dasRes);
|
return queryDec;
|
}
|
|
@Override
|
public Declares findByProjectId(Integer projectId) {
|
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
MPJLambdaWrapper<Declares> wrapper = new MPJLambdaWrapper<>();
|
wrapper.selectAll(Declares.class);
|
// wrapper.select("( select dh.REMARK from declare_history dh where dh.status=t.status and dh.DECLARE_ID=t.id and dh.ISDELETED=0 order by dh.CREATE_DATE desc limit 1) as historyRemark ");
|
wrapper.eq(Declares::getProjectId,projectId);
|
wrapper.eq(Declares::getIsdeleted,Constants.ZERO);
|
wrapper.eq(Declares::getCompanyId,user.getCompanyId());
|
wrapper.selectAs(DeclareAnswer::getQuestionnaireId,Declares::getQuestionnaireId);
|
wrapper.selectAs(DeclareAnswer::getScore,Declares::getExamScore);
|
wrapper.selectAs(ProjectLabel::getName,Declares::getDiagnoseType);
|
|
wrapper.leftJoin(DeclareAnswer.class,DeclareAnswer::getId,Declares::getAnswerId);
|
wrapper.leftJoin(ProjectLabel.class,ProjectLabel::getId,Declares::getDiagnoseTypeId);
|
wrapper.selectAs(ProjectLabel::getRatio,Declares::getDiagnoseTypeRatio);
|
|
Declares queryDec = declareJoinMapper.selectJoinOne(Declares.class, wrapper);
|
if(queryDec == null){
|
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对不起,无申报记录!");
|
}
|
String path = systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+ systemDictDataBiz.queryByCode(Constants.OSS,Constants.PROJECT_FILE).getCode();
|
|
Multifile mufQuery = new Multifile();
|
mufQuery.setIsdeleted(Constants.ZERO);
|
mufQuery.setObjId(queryDec.getId());
|
mufQuery.setObjType(Constants.MultiFile.BUSINESS_DECLARE.getKey());
|
mufQuery.setType(Constants.TWO);
|
List<Multifile> fileList = multifileService.findList(mufQuery);
|
for(Multifile fl:fileList){
|
fl.setFileurlfull(path+fl.getFileurl());
|
}
|
queryDec.setFileServiceList(fileList);
|
|
//查看问卷详情
|
// DeclareAnswer queryRes = new DeclareAnswer();
|
// queryRes.setIsdeleted(Constants.ZERO);
|
// queryRes.setId(queryDec.getAnswerId());
|
if (Objects.nonNull(queryDec.getAnswerId())){
|
DeclareAnswer dasRes = declareAnswerMapper.selectById(queryDec.getAnswerId());
|
queryDec.setDeclareAnswer(dasRes);
|
}
|
return queryDec;
|
}
|
|
@Override
|
public Declares findOne(Declares declares) {
|
QueryWrapper<Declares> wrapper = new QueryWrapper<>(declares);
|
return declaresMapper.selectOne(wrapper);
|
}
|
|
@Override
|
public List<Declares> findList(Declares declares) {
|
QueryWrapper<Declares> wrapper = new QueryWrapper<>(declares);
|
return declaresMapper.selectList(wrapper);
|
}
|
|
@Override
|
public PageData<Declares> findPage(PageWrap<Declares> pageWrap) {
|
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
|
Declares declares = pageWrap.getModel();
|
IPage<Company> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
|
MPJLambdaWrapper<Declares> queryWrapper = new MPJLambdaWrapper<>();
|
Utils.MP.blankToNull(pageWrap.getModel());
|
|
if (Constants.formatIntegerNum(user.getType()) == UserType.AREA.getKey()) {
|
//县区角色 查看企业用户,除保存之外的所有数据
|
queryWrapper.eq(user.getAreaId() != null, Company::getAreaId, user.getAreaId())
|
.eq(Company::getType, Constants.CompanyType.BUSINESS_COMPANYTYPE.getValue());
|
|
} else if (Constants.formatIntegerNum(user.getType()) == UserType.SJ.getKey()) {
|
//市经信局/ 查看当前市局所有的企业
|
queryWrapper.eq(Project::getSjId, user.getId());
|
} else if (Constants.formatIntegerNum(user.getType()) == UserType.SJ_CHILD.getKey()) {
|
//市经信局子账号/ 查看当前市局所有的企业
|
queryWrapper.eq(Project::getSjId, user.getParentId());
|
queryWrapper.exists("SELECT t1.id FROM project_permisson t1 WHERE t1.PROJECT_ID = t.project_id and t1.isdeleted=0 AND t1.OBJ_ID = "+user.getId());
|
}else if (Constants.formatIntegerNum(user.getType()) == UserType.SD_ADMIN.getKey()) {
|
//综合服务单位 查看当前所有的企业
|
// queryWrapper.eq(user.getCityId() != null, Company::getCityId, user.getCityId());
|
queryWrapper.exists(" select d.id from project_so d where d.type=1 and d.isdeleted=0 and d.project_id=t.project_id and d.company_id="+user.getCompanyId());
|
// queryWrapper.eq(Declares::getSdUserId, user.getId());//查询子账号的数据
|
} else if (Constants.formatIntegerNum(user.getType()) == UserType.SD_CHILD.getKey()) {
|
//综合服务单位子账号
|
// queryWrapper.eq(user.getCityId() != null, Company::getCityId, user.getCityId());
|
queryWrapper.exists(" select d.id from project_so d where d.type=1 and d.isdeleted=0 and d.project_id=t.project_id and d.company_id="+user.getCompanyId());
|
queryWrapper.eq(Declares::getSdUserId, user.getId());//查询子账号的数据
|
}else if(Constants.formatIntegerNum(user.getType()) == UserType.EXPERT.getKey()){
|
//专家
|
queryWrapper.exists("select de.id from declare_expert de where de.isdeleted=0 and de.expert_id="+user.getId()+" and t.id=de.declare_id"+(declares.getExpertStatus()!=null?" and de.status="+ declares.getExpertStatus():""));
|
}else if(Constants.formatIntegerNum(user.getType()) == UserType.SO_ADMIN.getKey()){
|
//服务机构管理员 人员
|
queryWrapper.eq(Declares::getSoId, user.getCompanyId());
|
}else if(Constants.formatIntegerNum(user.getType()) == UserType.SO_CHILD.getKey()){
|
//服务机构管子管理 人员
|
queryWrapper.eq(Declares::getSoUserId, user.getId());//查询子账号的数据
|
}
|
queryWrapper.selectAll(Declares.class);
|
queryWrapper.selectAs(Company::getName,Declares::getCompanyName);
|
queryWrapper.selectAs(Company::getAreaId,Declares::getAreaId);
|
queryWrapper.selectAs(Company::getCityId,Declares::getCityId);
|
queryWrapper.selectAs(Company::getCreditCode,Declares::getCreditCode);
|
queryWrapper.selectAs(Project::getName,Declares::getProjectName);
|
queryWrapper.selectAs(Project::getSodType,Declares::getSodType);
|
queryWrapper.selectAs(Project::getEdType,Declares::getEdType);
|
queryWrapper.selectAs(Project::getAreaCheck,Declares::getAreaCheck);
|
queryWrapper.selectAs(ProjectLabel::getName,Declares::getDiagnoseType);
|
queryWrapper.selectAs(ProjectLabel::getRatio,Declares::getDiagnoseTypeRatio);
|
queryWrapper.leftJoin(ProjectLabel.class,ProjectLabel::getId,Declares::getDiagnoseTypeId);
|
// queryWrapper.select("a.name as areaName");
|
queryWrapper.selectAs(DeclareAnswer::getScore,Declares::getDAScore);
|
queryWrapper.select("(select ps.PRICE from project_so ps where ps.PROJECT_ID = t.project_id and ps.isdeleted=0 and ps.COMPANY_ID=t.SO_ID limit 1) as servicePrice");
|
queryWrapper.select("(select ps.score from declare_expert ps where ps.declare_id = t.id and ps.isdeleted=0 limit 1) as expertScore");
|
queryWrapper.select("s.REALNAME as realName,s2.REALNAME as realServiceName");
|
// queryWrapper.select("ce.INCOME ,ce.ASSETS,ce.RATIO,ce.DEVELOP,ce.PROFIT,ce.TAXES,EMPLOYEE");
|
// queryWrapper.select("de.SCORE as expertScore ,s1.REALNAME as realZJName");
|
// queryWrapper.select("(select ls.NAME from labels ls where ls.id = c.INDUSTRY_ID and c.isdeleted=0 and c.TYPE=1 ) as indusrtyName");//行业
|
// queryWrapper.select("( select dh.REMARK from declare_history dh where dh.status=t.status and dh.DECLARE_ID=t.id and dh.ISDELETED=0 order by dh.CREATE_DATE desc limit 1) as historyRemark ");
|
queryWrapper.selectAs(Company::getAreaId,Declares::getAreaId);
|
queryWrapper.selectAs(Labels::getName,Declares::getIndusrtyName);
|
queryWrapper.leftJoin(Company.class,Company::getId,Declares::getCompanyId);//查询企业名称
|
queryWrapper.leftJoin(Labels.class,Labels::getId,Company::getIndustryId);//查询行业信息
|
queryWrapper.leftJoin(Project.class,Project::getId,Declares::getProjectId);//查询项目信息
|
queryWrapper.leftJoin(DeclareAnswer.class,DeclareAnswer::getId,Declares::getAnswerId);//查询答题信息
|
// queryWrapper.leftJoin("areas a on a.id = c.AREA_ID");//查询城市
|
queryWrapper.leftJoin("company so on so.id=t.so_id");
|
queryWrapper.select("so.name as serviceName");
|
/* queryWrapper.select("(select ps.price from project_so ps where ps.isdeleted=0 and ps.project_id=t.project_id and ps.COMPANY_ID=so.id limit 1) as servicePrice");*/
|
// queryWrapper.leftJoin(Company.class, Company::getId, Declares::getSoId
|
// , ext -> ext.selectAs(Company::getName, Declares::getServiceName)
|
// );//查询服务机构名称
|
// queryWrapper.leftJoin("declare_expert de on de.DECLARE_ID = t.id and de.ISDELETED=0 ");//查询城市
|
// queryWrapper.leftJoin("system_user s1 on s1.id = de.EXPERT_ID and s1.DELETED=0");//查询专家姓名
|
queryWrapper.leftJoin("system_user s on s.id = t.SD_USER_ID and s.DELETED=0");//查询分配单位子账号
|
queryWrapper.leftJoin("system_user s2 on s2.id = t.SO_USER_ID and s2.DELETED=0");//查询服务机构子账号
|
// queryWrapper.leftJoin("company_economics ce on ce.COMPANY_ID = c.id and ce.ISDELETED=0 and ce.YEARS=year(now())-1");//查询经济指标
|
queryWrapper.eq(declares.getProjectId() !=null,Declares::getProjectId, declares.getProjectId()).eq(Declares::getIsdeleted, Constants.ZERO);
|
queryWrapper.notIn(Declares::getStatus, Arrays.asList(Constants.DeclareStatus.EDITING.getKey()));
|
queryWrapper.eq(Declares::getIsdeleted, Constants.ZERO);
|
|
queryWrapper.like(StringUtils.isNotBlank(declares.getProjectName()), Project::getName, declares.getProjectName());
|
queryWrapper.like(StringUtils.isNotBlank(declares.getCompanyName()), Company::getName, declares.getCompanyName());
|
queryWrapper.eq(declares.getStatus() != null, Declares::getStatus, declares.getStatus());
|
queryWrapper.orderByDesc(Declares::getCreateDate);
|
queryWrapper.eq(pageWrap.getModel().getSoId()!=null,Declares::getSoId,pageWrap.getModel().getSoId());
|
|
IPage<Declares> result = declaresJoinMapper.selectJoinPage(page, Declares.class, queryWrapper);
|
|
if(result!=null&&result.getRecords().size()>0){
|
for(int i=0;i<result.getRecords().size();i++){
|
Declares ds=result.getRecords().get(i);
|
// 查询服务价格
|
queryScoreRatio(ds);
|
if(ds.getAreaId() != null){
|
Areas area = areasService.findById(ds.getAreaId(),Constants.TWO);
|
if(area!=null){
|
ds.setAreaName(area.getName());
|
ds.setCityName(area.getCityName()+ds.getAreaName());
|
}
|
}else if(ds.getCityId() != null){
|
Areas area = areasService.findById(ds.getCityId(),Constants.ONE);
|
if(area!=null){
|
ds.setCityName(area.getName());
|
}
|
}
|
|
//查询经济指标
|
queryeconomy(ds);
|
}
|
}
|
return PageData.from(result);
|
|
|
}
|
|
@Override
|
public PageData<CompanyDeclaresVo> findCompanyDeclaresVoPage(PageWrap<Declares> pageWrap) {
|
|
IPage<Declares> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
|
|
Declares model = pageWrap.getModel();
|
MPJLambdaWrapper<Declares> wrapper = new MPJLambdaWrapper<>();
|
wrapper.leftJoin(Company.class, Company::getId, Declares::getCompanyId)
|
.innerJoin(DeclareExpert.class, DeclareExpert::getDeclareId, Declares::getId)
|
.leftJoin(DeclareAnswer.class, DeclareAnswer::getId, Declares::getAnswerId)
|
.leftJoin(Labels.class,Labels::getId,Declares::getDiagnoseTypeId)
|
.like(!StringUtils.isEmpty(model.getCompanyName().trim()),
|
Company::getName,
|
pageWrap.getModel().getCompanyName().trim())
|
.eq(DeclareExpert::getStatus, model.getExpertStatus())
|
.eq(Declares::getProjectId, model.getProjectId())
|
.selectAll(Declares.class)
|
.selectAs(Company::getName, Declares::getCompanyName)
|
.selectAs(Company::getAddress, Declares::getCityName)
|
.selectAs(DeclareExpert::getScore, Declares::getExpertScore)
|
.selectAs(DeclareExpert::getStatus, Declares::getExpertStatus)
|
.selectAs(DeclareAnswer::getScore, Declares::getExamScore)
|
.selectAs(Labels::getName,Declares::getDiagnoseType);
|
|
IPage<Declares> declaresIPage = declareJoinMapper.selectJoinPage(page, Declares.class, wrapper);
|
List<Declares> records = declaresIPage.getRecords();
|
|
if (!CollectionUtils.isEmpty(records)) {
|
List<Integer> projectIds = records.stream().map(s -> s.getProjectId()).distinct().collect(Collectors.toList());
|
// List<Integer> answerIds = records.stream().map(s -> s.getAnswerId()).distinct().collect(Collectors.toList());
|
List<Integer> soIds = records.stream().map(s -> s.getSoId()).distinct().collect(Collectors.toList());
|
QueryWrapper<Project> projectWrapper = new QueryWrapper<>();
|
projectWrapper.lambda().in(Project::getId, projectIds);
|
List<Project> projects = projectMapper.selectList(projectWrapper);
|
Map<Integer, String> collect = projects.stream().collect(Collectors.toMap(s -> s.getId(), s -> s.getName()));
|
// QueryWrapper<DeclareAnswer> answerWrapper = new QueryWrapper<>();
|
// answerWrapper.lambda().in(DeclareAnswer::getId,answerIds);
|
// List<DeclareAnswer> declareAnswers = declareAnswerMapper.selectList(answerWrapper);
|
// Map<Integer, BigDecimal> answerMap = declareAnswers.stream().collect(Collectors.toMap(s -> s.getId(), s -> s.getScore()));
|
|
QueryWrapper<Company> companyWrapper = new QueryWrapper<>();
|
companyWrapper.lambda().in(Company::getId, soIds);
|
List<Company> companies = companyMapper.selectList(companyWrapper);
|
Map<Integer, String> companyMap = companies.stream().collect(Collectors.toMap(s -> s.getId(), s -> s.getName()));
|
|
List<CompanyDeclaresVo> objectStream = records.stream().map(s -> {
|
CompanyDeclaresVo vo = new CompanyDeclaresVo();
|
vo.setCompanyId(s.getCompanyId());
|
vo.setCompanyName(s.getCompanyName());
|
vo.setAddress(s.getCityName());
|
vo.setExamScore(s.getExamScore());
|
vo.setProjectId(s.getProjectId());
|
vo.setProjectName(collect.getOrDefault(s.getProjectId(), ""));
|
vo.setServiceCompanyId(s.getSoId());
|
vo.setServiceCompanyName(companyMap.getOrDefault(s.getSoId(), ""));
|
vo.setExpertScore(s.getExpertScore());
|
vo.setDeclaresExpertStatus(s.getExpertStatus());
|
return vo;
|
}).collect(Collectors.toList());
|
return PageData.from(declaresIPage, objectStream);
|
}
|
return PageData.from(declaresIPage, null);
|
}
|
|
@Transactional(rollbackFor = {BusinessException.class, Exception.class})
|
@Override
|
public void checkExpertDeclares(ExpertReportDTO expertReportDTO) {
|
|
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
if (UserType.EXPERT.getKey() != user.getType()){
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED);
|
}
|
Date date = new Date();
|
|
//TODO 连接查询
|
//查询最新的一条数据
|
|
|
MPJLambdaWrapper<DeclareExpert> wrapper = new MPJLambdaWrapper<>();
|
wrapper.leftJoin(Declares.class,Declares::getId,DeclareExpert::getDeclareId)
|
.eq(DeclareExpert::getDeclareId, expertReportDTO.getDeclareId())
|
.eq(DeclareExpert::getExpertId,user.getId())
|
.eq(DeclareExpert::getIsdeleted,Constants.ZERO)
|
.orderByDesc(DeclareExpert::getCreateDate)
|
.last("limit 1")
|
.selectAll(DeclareExpert.class)
|
.selectAs(Declares::getStatus,DeclareExpert::getDeclareStatus);
|
DeclareExpert declareExpert = declareExpertJoinMapper.selectOne(wrapper);
|
declareExpert = Optional.ofNullable(declareExpert)
|
.filter(s -> Constants.ZERO == Constants.formatIntegerNum(s.getStatus()))
|
.filter(s->Constants.DeclareStatus.SELECT_EXPERT.getKey() == Constants.formatIntegerNum(s.getDeclareStatus()))
|
.orElseThrow(() -> new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"当前项目重分配给其他专家,不能进行当前操作"));
|
|
// Declares declare = findById(expertReportDTO.getDeclareId());
|
// declare = Optional.ofNullable(declare)
|
// .filter(s -> Constants.DeclareStatus.SELECT_EXPERT.getKey() == Constants.formatIntegerNum(s.getStatus()))
|
// .orElseThrow(() -> new BusinessException(ResponseStatus.NOT_ALLOWED));
|
|
DeclareExpert updateExpert = new DeclareExpert();
|
updateExpert.setId(declareExpert.getId());
|
updateExpert.setScore(expertReportDTO.getExpertScore());
|
updateExpert.setScoreDate(date);
|
updateExpert.setStatus(Constants.ONE);
|
updateExpert.setEditor(user.getId());
|
updateExpert.setEditDate(date);
|
declareExpertMapper.updateById(updateExpert);
|
|
DeclareHistory history = new DeclareHistory();
|
history.setCreator(user.getId());
|
history.setCreateDate(date);
|
history.setEditor(user.getId());
|
history.setEditDate(date);
|
history.setDeclareId(declareExpert.getDeclareId());
|
history.setType(Constants.DeclareHistoryType.EXPERT_SCORE.getKey());
|
|
// 1,时间 2 角色 3 realName 4 时间;
|
|
// Map<String, String> map = new HashMap<>();
|
// map.put("param1", DateUtil.getPlusTime2(new Date()));
|
// map.put("param2", "专家");
|
// map.put("param3", user.getRealname());
|
// map.put("param4", "已完成");
|
|
String replace = ProjectRecord.EXPERT_SCORE.getNoteinfo().replace("${param2}", UserType.EXPERT.getName())
|
.replace("${param3}", StringUtils.defaultString(user.getUsername(), ""))
|
.replace("${param4}", Constants.DeclareStatus.DONE.getName());
|
// String contentWithData = ProjectRecord.getContentWithData(ProjectRecord.EXPERT_SCORE, map);
|
history.setCheckInfo(replace);
|
history.setCheckor(user.getId());
|
history.setCheckDate(date);
|
history.setStatus(declareExpert.getDeclareStatus());
|
history.setIsdeleted(Constants.ZERO);
|
declareHistoryMapper.insert(history);
|
|
|
Declares declares = new Declares();
|
declares.setId(declareExpert.getDeclareId());
|
declares.setEditor(user.getId());
|
declares.setEditDate(date);
|
declares.setCheckDate(date);
|
declares.setCheckInfo(replace);
|
declares.setStatus(Constants.DeclareCheckType.DONE.getKey());
|
declares.setCheckType(Constants.DeclareCheckType.DONE.getKey());
|
declares.setCheckor(user.getId());
|
updateById(declares);
|
|
if (!CollectionUtils.isEmpty(expertReportDTO.getMultiFileDTOs())) {
|
DeclareExpert finalDeclareExpert = declareExpert;
|
expertReportDTO.getMultiFileDTOs().forEach(s->{
|
Multifile multifile = new Multifile();
|
multifile.setCreator(user.getId());
|
multifile.setCreateDate(date);
|
multifile.setEditor(user.getId());
|
multifile.setEditDate(date);
|
multifile.setName(s.getName());
|
multifile.setIsdeleted(Constants.ZERO);
|
multifile.setInfo(multifile.getInfo());
|
multifile.setObjId(finalDeclareExpert.getId());
|
multifile.setType(Constants.TWO);
|
multifile.setObjType(Constants.MultiFile.BUSINESS_EXPERT.getKey());
|
multifile.setFileurl(s.getFileurl());
|
multifileMapper.insert(multifile);
|
});
|
|
}
|
|
}
|
|
@Override
|
public long count(Declares declares) {
|
QueryWrapper<Declares> wrapper = new QueryWrapper<>(declares);
|
return declaresMapper.selectCount(wrapper);
|
}
|
|
|
@Override
|
public PageData<Declares> getPageByProjectId(PageWrap<Declares> pageWrap) {
|
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
if(pageWrap.getModel().getProjectId() == null){
|
pageWrap.getModel().setProjectId(-1);
|
}
|
Declares declares = pageWrap.getModel();
|
IPage<Company> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
|
MPJLambdaWrapper<Declares> queryWrapper = new MPJLambdaWrapper<>();
|
Utils.MP.blankToNull(pageWrap.getModel());
|
|
if (Constants.formatIntegerNum(user.getType()) == UserType.AREA.getKey()) {
|
//县区角色 查看企业用户,除保存之外的所有数据
|
queryWrapper.eq(user.getAreaId() != null, Company::getAreaId, user.getAreaId())
|
.eq(Company::getType, Constants.CompanyType.BUSINESS_COMPANYTYPE.getValue());
|
} else if (Constants.formatIntegerNum(user.getType()) == UserType.SJ.getKey()) {
|
//市经信局// 查看当前市局所有的企业
|
//存在已经报名的企业修改地区导致无法查询到
|
// queryWrapper.eq(user.getCityId() != null, Company::getCityId, user.getCityId());
|
|
}else if (Constants.formatIntegerNum(user.getType()) == UserType.SJ_CHILD.getKey()) {
|
//市局子账号
|
|
} else if (Constants.formatIntegerNum(user.getType()) == UserType.SD_ADMIN.getKey()) {
|
//综合服务单位 查看当前所有的企业
|
//存在已经报名的企业修改地区导致无法查询到
|
// queryWrapper.eq(user.getCityId() != null, Company::getCityId, user.getCityId());
|
} else if (Constants.formatIntegerNum(user.getType()) == UserType.SD_CHILD.getKey()) {
|
//综合服务单位子账号
|
// queryWrapper.eq(user.getCityId() != null, Company::getCityId, user.getCityId());
|
queryWrapper.eq(Declares::getSdUserId, user.getId());//查询子账号的数据
|
}else if(Constants.formatIntegerNum(user.getType()) == UserType.EXPERT.getKey()){
|
//专家
|
queryWrapper.exists("select de.id from declare_expert de where de.isdeleted=0 and de.expert_id="+user.getId()+" and t.id=de.declare_id"+(declares.getExpertStatus()!=null?" and de.status="+ declares.getExpertStatus():""));
|
}else if(Constants.formatIntegerNum(user.getType()) == UserType.SO_ADMIN.getKey()){
|
//服务机构管理员 人员
|
queryWrapper.eq(Declares::getSoId, user.getCompanyId());
|
}else if(Constants.formatIntegerNum(user.getType()) == UserType.SO_CHILD.getKey()){
|
//服务机构管 子管理 人员
|
queryWrapper.eq(Declares::getSoId, user.getCompanyId());
|
queryWrapper.eq(Declares::getSoUserId, user.getId());//查询子账号的数据
|
}
|
queryWrapper.selectAll(Declares.class);
|
queryWrapper.selectAs(Company::getName,Declares::getCompanyName);
|
queryWrapper.selectAs(Company::getAreaId,Declares::getAreaId);
|
queryWrapper.selectAs(Company::getCityId,Declares::getCityId);
|
queryWrapper.selectAs(Company::getCreditCode,Declares::getCreditCode);
|
queryWrapper.selectAs(Project::getName,Declares::getProjectName);
|
queryWrapper.selectAs(Project::getSodType,Declares::getSodType);
|
queryWrapper.selectAs(Project::getEdType,Declares::getEdType);
|
queryWrapper.selectAs(Project::getAreaCheck,Declares::getAreaCheck);
|
queryWrapper.selectAs(ProjectLabel::getName,Declares::getDiagnoseType);
|
queryWrapper.selectAs(ProjectLabel::getRatio,Declares::getDiagnoseTypeRatio);
|
// queryWrapper.select("a.name as areaName");
|
queryWrapper.selectAs(DeclareAnswer::getScore,Declares::getDAScore);
|
queryWrapper.select("(select ps.PRICE from project_so ps where ps.PROJECT_ID = t.project_id and ps.TYPE = 0 and ps.isdeleted=0 and ps.COMPANY_ID=t.SO_ID limit 1) as servicePrice");
|
queryWrapper.select("(select ps.score from declare_expert ps where ps.declare_id = t.id and ps.isdeleted=0 limit 1) as expertScore");
|
queryWrapper.select("(select count(id) from project_score psc where psc.PROJECT_ID = PROJECT_ID ) as countProjectScore ");
|
queryWrapper.select("s.REALNAME as realName,s2.REALNAME as realServiceName");
|
// queryWrapper.select("ce.INCOME ,ce.ASSETS,ce.RATIO,ce.DEVELOP,ce.PROFIT,ce.TAXES,EMPLOYEE");
|
// queryWrapper.select("de.SCORE as expertScore ,s1.REALNAME as realZJName");
|
// queryWrapper.select("(select ls.NAME from labels ls where ls.id = c.INDUSTRY_ID and c.isdeleted=0 and c.TYPE=1 ) as indusrtyName");//行业
|
// queryWrapper.select("( select dh.REMARK from declare_history dh where dh.status=t.status and dh.DECLARE_ID=t.id and dh.ISDELETED=0 order by dh.CREATE_DATE desc limit 1) as historyRemark ");
|
queryWrapper.selectAs(Company::getAreaId,Declares::getAreaId);
|
queryWrapper.selectAs(Labels::getName,Declares::getIndusrtyName);
|
queryWrapper.leftJoin(Company.class,Company::getId,Declares::getCompanyId);//查询企业名称
|
queryWrapper.leftJoin(Labels.class,Labels::getId,Company::getIndustryId);//查询企业名称
|
queryWrapper.leftJoin(Project.class,Project::getId,Declares::getProjectId);//查询项目信息
|
queryWrapper.leftJoin(ProjectLabel.class,ProjectLabel::getId,Declares::getDiagnoseTypeId);
|
// queryWrapper.leftJoin(Areas.class,Areas::getId,Project::getCityId);//查询项目信息
|
queryWrapper.leftJoin(DeclareAnswer.class,DeclareAnswer::getId,Declares::getAnswerId);//查询项目信息
|
// queryWrapper.leftJoin("areas a on a.id = c.AREA_ID");//查询城市
|
queryWrapper.leftJoin("company so on so.id=t.so_id");
|
queryWrapper.select("so.name as serviceName");
|
/* queryWrapper.select("(select ps.price from project_so ps where ps.isdeleted=0 and ps.project_id=t.project_id and ps.COMPANY_ID=so.id limit 1) as servicePrice");*/
|
// queryWrapper.leftJoin(Company.class, Company::getId, Declares::getSoId
|
// , ext -> ext.selectAs(Company::getName, Declares::getServiceName)
|
// );//查询服务机构名称
|
// queryWrapper.leftJoin("declare_expert de on de.DECLARE_ID = t.id and de.ISDELETED=0 ");//查询城市
|
// queryWrapper.leftJoin("system_user s1 on s1.id = de.EXPERT_ID and s1.DELETED=0");//查询专家姓名
|
queryWrapper.leftJoin("system_user s on s.id = t.SD_USER_ID and s.DELETED=0");//查询分配单位子账号
|
queryWrapper.leftJoin("system_user s2 on s2.id = t.SO_USER_ID and s2.DELETED=0");//查询服务机构子账号
|
// queryWrapper.leftJoin("company_economics ce on ce.COMPANY_ID = c.id and ce.ISDELETED=0 and ce.YEARS=year(now())-1");//查询经济指标
|
queryWrapper.eq(Declares::getProjectId, declares.getProjectId()).eq(Declares::getIsdeleted, Constants.ZERO);
|
queryWrapper.notIn(Declares::getStatus, Arrays.asList(Constants.DeclareStatus.EDITING.getKey()));
|
queryWrapper.eq(Declares::getIsdeleted, Constants.ZERO);
|
|
queryWrapper.like(StringUtils.isNotBlank(declares.getCompanyName()), Company::getName, declares.getCompanyName());
|
queryWrapper.eq(declares.getStatus() != null, Declares::getStatus, declares.getStatus());
|
// queryWrapper.eq(declares.getProvinceId() != null, Areas::getParentId,declares.getProvinceId());
|
queryWrapper.eq(declares.getSoId() != null, Declares::getSoId, declares.getSoId());
|
// queryWrapper.eq(declares.getCityId() != null, "so.CITY_ID", declares.getCityId());
|
// queryWrapper.eq(declares.getAreaId() != null, "so.AREA_ID", declares.getAreaId());
|
queryWrapper.eq(declares.getCityId() != null, Company::getCityId, declares.getCityId());
|
queryWrapper.eq(declares.getAreaId() != null, Company::getAreaId, declares.getAreaId());
|
queryWrapper.orderByDesc(Declares::getCreateDate);
|
|
IPage<Declares> result = declaresJoinMapper.selectJoinPage(page, Declares.class, queryWrapper);
|
if(result!=null && result.getRecords().size()>0){
|
List<Integer> collect = result.getRecords().stream().map(s -> s.getId()).collect(Collectors.toList());
|
ProjectScore ps = new ProjectScore();
|
ps.setIsdeleted(Constants.ZERO);
|
ps.setProjectId(declares.getProjectId() );
|
//查询项目角色评分配置信息
|
List<ProjectScore> psList = projectScoreMapper.selectList(new QueryWrapper<>(ps));
|
|
Map<Integer, List<Multifile>> objFileUrl = multifileService.getOBJFileUrl(collect, Constants.MultiFile.BUSINESS_DECLARE.getKey());
|
for(int i=0;i<result.getRecords().size();i++){
|
Declares ds=result.getRecords().get(i);
|
List<Multifile> multifiles = objFileUrl.get(ds.getId());
|
ds.setFileServiceList(multifiles);
|
if(ds.getAreaId() != null){
|
Areas area = areasService.findById(ds.getAreaId(),Constants.TWO);
|
if(area!=null){
|
ds.setAreaName(area.getName());
|
ds.setCityName(area.getCityName()+ds.getAreaName());
|
}
|
}else if(ds.getCityId() != null){
|
Areas area = areasService.findById(ds.getCityId(),Constants.ONE);
|
if(area!=null){
|
ds.setCityName(area.getName());
|
}
|
}
|
// 查询服务价格
|
queryScoreRatio(psList,ds);
|
}
|
}
|
|
return PageData.from(result);
|
}
|
@Override
|
public List<BsSoSortDataVo> bsSoSortData(Declares param) {
|
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
if(param.getProjectId() == null){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST);
|
}
|
validUserType(user);
|
List<BsSoSortDataVo> result = new ArrayList<>();
|
if(Constants.formatIntegerNum(user.getType()) == Constants.UserType.AREA.getKey()){
|
//如果是县区用户,只能查看当前县区下的数据
|
if(user.getAreaId() == null){
|
return result;
|
}
|
param.setAreaId(user.getAreaId());
|
}
|
MPJLambdaWrapper<Declares> queryWrapper = new MPJLambdaWrapper<>();
|
queryWrapper.leftJoin(Company.class, Company::getId, Declares::getSoId);
|
queryWrapper.leftJoin(Company.class, Company::getId, Declares::getCompanyId);
|
queryWrapper.eq(Declares::getIsdeleted, Constants.ZERO);
|
queryWrapper.eq(Declares::getProjectId, param.getProjectId());
|
queryWrapper.isNotNull(Declares::getSoId);
|
queryWrapper.apply(param.getAreaId()!=null,"t2.area_id =" +param.getAreaId());
|
queryWrapper.groupBy(Declares::getSoId);
|
queryWrapper.select("t.so_id as id,t1.name as name,count(DISTINCT ( t.company_id )) as num," +
|
"(select count(DISTINCT ( c.company_id )) from declares c where c.project_id="+param.getProjectId()+" and t1.id=c.SO_ID and c.`STATUS` in (9,10,11,13)) as doneNum");
|
List<BsSoSortDataVo> list = declareJoinMapper.selectJoinList(BsSoSortDataVo.class, queryWrapper);
|
if(list !=null){
|
for(BsSoSortDataVo model:list){
|
model.setRate(new BigDecimal(0.00));
|
if(model.getNum()>0){
|
model.setRate((new BigDecimal(model.getDoneNum()*100 ).divide(new BigDecimal(model.getNum()),2, RoundingMode.FLOOR)));
|
}
|
}
|
}
|
Collections .sort( list,new BsSoSortDataVo());
|
return list;
|
}
|
@Override
|
public List<BsIndustryTimesVo> bsIndustryTimesData(Declares param){
|
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
if(param.getProjectId() == null){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST);
|
}
|
validUserType(user);
|
if(Constants.formatIntegerNum(user.getType()) == Constants.UserType.AREA.getKey()){
|
//如果是县区用户,只能查看当前县区下的数据
|
if(user.getAreaId() == null){
|
return new ArrayList<>();
|
}
|
param.setAreaId(user.getAreaId());
|
}
|
MPJLambdaWrapper<Declares> queryWrapper = new MPJLambdaWrapper<>();
|
queryWrapper.leftJoin(Company.class, Company::getId, Declares::getSoId);
|
queryWrapper.leftJoin(Company.class, Company::getId, Declares::getCompanyId);
|
queryWrapper.leftJoin(ProjectLabel.class, ProjectLabel::getId, Declares::getDiagnoseTypeId);
|
queryWrapper.eq(Declares::getIsdeleted, Constants.ZERO);
|
queryWrapper.ne(Declares::getStatus, Constants.ZERO);
|
queryWrapper.eq(Declares::getProjectId, param.getProjectId());
|
queryWrapper.apply(param.getAreaId()!=null,"t2.area_id =" +param.getAreaId());
|
queryWrapper.groupBy(Declares::getDiagnoseTypeId);
|
queryWrapper.select("count(t.id) as num,t3.name");
|
List<BsIndustryTimesVo> list = declareJoinMapper.selectJoinList(BsIndustryTimesVo.class, queryWrapper);
|
return list;
|
}
|
@Override
|
public List<BsIComNumAndIncomeVo> bsComNumAndIncomceData(Declares param){
|
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
if(param.getProjectId() == null){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST);
|
}
|
validUserType(user);
|
if(Constants.formatIntegerNum(user.getType()) == Constants.UserType.AREA.getKey()){
|
//如果是县区用户,只能查看当前县区下的数据
|
if(user.getAreaId() == null){
|
return new ArrayList<>();
|
}
|
param.setAreaId(user.getAreaId());
|
}
|
MPJLambdaWrapper<Declares> queryWrapper = new MPJLambdaWrapper<>();
|
queryWrapper.leftJoin(Company.class, Company::getId, Declares::getCompanyId);
|
queryWrapper.leftJoin(Labels.class, Labels::getId, Company::getIndustryId);
|
queryWrapper.eq(Declares::getIsdeleted, Constants.ZERO);
|
queryWrapper.eq(param.getDiagnoseTypeId()!=null,Declares::getDiagnoseTypeId, param.getDiagnoseTypeId());
|
queryWrapper.eq(Declares::getProjectId, param.getProjectId());
|
queryWrapper.apply(param.getAreaId()!=null,"t1.area_id =" +param.getAreaId());
|
queryWrapper.groupBy(Company::getIndustryId);
|
queryWrapper.orderByAsc(Labels::getSortnum );
|
queryWrapper.select("count(t.id) as num,t2.name" +
|
",(select sum(c.income) from company_economics c left join company c1 on c.COMPANY_ID =c1.id where c.isdeleted=0 " +
|
"and exists(select c2.id from declares c2 where c2.company_id=c1.id and c2.project_id="+param.getProjectId()
|
+(param.getDiagnoseTypeId()!=null?" and c2.diagnose_type_id="+param.getDiagnoseTypeId():"")
|
+(param.getAreaId()!=null?" and c1.area_id ="+param.getAreaId():"")
|
+") and c1.industry_id =t1.industry_id and c.YEARS="+(DateUtil.getCurrentYear()-1)+") as income");
|
List<BsIComNumAndIncomeVo> list = declareJoinMapper.selectJoinList(BsIComNumAndIncomeVo.class, queryWrapper);
|
return list;
|
}
|
@Override
|
public PageData<BsSoDetailNumVo> bsSoDetailNumData(PageWrap<Declares> pageWrap) {
|
|
IPage<Company> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
|
Utils.MP.blankToNull(pageWrap.getModel());
|
Declares param = pageWrap.getModel();
|
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
if(param.getProjectId() == null){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST);
|
}
|
|
validUserType(user);
|
List<BsSoDetailNumVo> result = new ArrayList<>();
|
if(Constants.formatIntegerNum(user.getType()) == Constants.UserType.AREA.getKey()){
|
//如果是县区用户,只能查看当前县区下的数据
|
if(user.getAreaId() == null){
|
return new PageData<>(0,0);
|
}
|
param.setAreaId(user.getAreaId());
|
}
|
QueryWrapper<Company> queryWrapper = new QueryWrapper<>();
|
queryWrapper.lambda().eq(Company::getType, Constants.CompanyType.SERVICE_COMPANYTYPE.getValue() );
|
queryWrapper.lambda().eq(Company::getIsdeleted, Constants.ZERO);
|
queryWrapper.select("*,(select count(c.id) from declares c where c.so_id=company.id and c.isdeleted=0 and c.project_id="+param.getProjectId() +") as num," +
|
"(select count(c.id) from declares c where c.status in (9,10,11,13) and c.so_id=company.id and c.isdeleted=0 and c.project_id="+param.getProjectId() +") as doneNum,"+
|
" (select count(c.id) from declares c where c.status=8 and c.so_id=company.id and c.isdeleted=0 and c.project_id="+param.getProjectId() +") as ingNum");
|
queryWrapper.lambda().exists("select b.id from declares b left join company c on b.company_id=c.id where b.project_id="+param.getProjectId() +
|
" and b.so_id=company.id and b.isdeleted=0"+(param.getAreaId()!=null?" and c.area_id="+param.getAreaId():""));
|
//查询服务机构
|
|
PageData<Company> pageList = PageData.from(companyMapper.selectPage(page, queryWrapper));
|
List<Company> soList =pageList.getRecords();
|
if(soList !=null){
|
//查询评分系数
|
ProjectRatio projectRatio=new ProjectRatio();
|
projectRatio.setProjectId(param.getProjectId());
|
projectRatio.setIsdeleted(Constants.ZERO);
|
List<ProjectRatio> paList= projectRatioMapper.selectList(new QueryWrapper<>(projectRatio)
|
.orderByAsc("MAX_NUM")
|
);
|
ProjectScore ps = new ProjectScore();
|
ps.setIsdeleted(Constants.ZERO);
|
ps.setProjectId(param.getProjectId());
|
//查询全部配置信息
|
List<ProjectScore> psList = projectScoreMapper.selectList(new QueryWrapper<>(ps));
|
DeclareScore ds = new DeclareScore();
|
ds.setIsdeleted(Constants.ZERO);
|
ds.setStatus(Constants.ONE);//提交数据
|
MPJLambdaWrapper<Declares> queryWrapper1 = new MPJLambdaWrapper<>();
|
queryWrapper1.selectAll(Declares.class);
|
queryWrapper1.leftJoin(Company.class, Company::getId, Declares::getCompanyId);
|
queryWrapper1.eq(Declares::getIsdeleted, Constants.ZERO);
|
queryWrapper1.eq(Declares::getProjectId, param.getProjectId());
|
queryWrapper1.eq(param.getSoId()!=null,Declares::getSoId, param.getSoId());
|
queryWrapper1.selectAs(ProjectLabel::getName,Declares::getDiagnoseType);
|
queryWrapper1.selectAs(ProjectLabel::getRatio,Declares::getDiagnoseTypeRatio);
|
queryWrapper1.leftJoin(ProjectLabel.class,ProjectLabel::getId,Declares::getDiagnoseTypeId);
|
queryWrapper1.select("(select ps.PRICE from project_so ps where ps.PROJECT_ID = t.project_id and ps.isdeleted=0 and ps.COMPANY_ID=t.SO_ID limit 1) as servicePrice");
|
queryWrapper1.eq(param.getDiagnoseType()!=null,Declares::getDiagnoseTypeId, param.getDiagnoseTypeId());
|
queryWrapper1.apply(param.getAreaId()!=null,"t1.area_id =" +param.getAreaId());
|
//查询全部申报数据
|
List<Declares> alllist = declareJoinMapper.selectJoinList(Declares.class, queryWrapper1);
|
//查询全部配置信息
|
List<DeclareScore> dsList = declareScoreMapper.selectList(new QueryWrapper<>(ds).exists("select c.id from declares c where c.project_id="+param.getProjectId()+ " limit 1") );
|
for(Company so :soList){
|
BsSoDetailNumVo t = new BsSoDetailNumVo();
|
t.setName(so.getName());
|
t.setNum(so.getNum());
|
t.setIngNum(so.getIngNum());
|
t.setDoneNum(so.getDoneNum());
|
t.setRate(new BigDecimal(0));
|
if(t.getNum()>0){
|
t.setRate(new BigDecimal(t.getDoneNum()*100).divide(new BigDecimal(t.getNum()),2,RoundingMode.FLOOR));
|
}
|
param.setSoId(so.getId());
|
//诊断报告等级分析数据
|
t.setLevelNumInfo(bsScoreLevelNumDataForDetail(param,paList,psList,dsList,alllist));
|
//服务次数分析数据
|
t.setServerTimesInfo(bsServerTimesData(param));
|
//总服务费用计算
|
int total = 0;
|
if(t.getLevelNumInfo()!=null){
|
for(BsScoreLevelNumVo mm : t.getLevelNumInfo()){
|
total += mm.getNum();
|
t.setPrice(Constants.formatBigdecimal(t.getPrice()).add(Constants.formatBigdecimal(mm.getTotalPrice())));
|
}
|
}
|
/*if(total < t.getNum()){
|
BsScoreLevelNumVo mm = new BsScoreLevelNumVo();
|
mm.setName("暂无等级");
|
mm.setNum(t.getNum()-total);
|
mm.setTotalPrice(new BigDecimal(0));
|
mm.setId(-1);
|
if(t.getLevelNumInfo() == null){
|
t.setLevelNumInfo(new ArrayList<>());
|
}
|
t.getLevelNumInfo().add(mm);
|
}*/
|
result.add(t);
|
}
|
}
|
PageData<BsSoDetailNumVo> pageList1 = new PageData<>(pageList.getPageCount(),pageList.getPageCount());
|
pageList1.setPage(pageList.getPage());
|
pageList1.setTotal(pageList.getTotal());
|
pageList1.setCapacity(pageList.getCapacity());
|
pageList1.setRecords(result);
|
return pageList1;
|
}
|
@Override
|
public List<BsAreaComNumVo> bsAreaComNumData(Declares param){
|
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
if(param.getProjectId() == null){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST);
|
}
|
validUserType(user);
|
if(Constants.formatIntegerNum(user.getType()) == Constants.UserType.AREA.getKey()){
|
//如果是县区用户,只能查看当前县区下的数据
|
if(user.getAreaId() == null){
|
return new ArrayList<>();
|
}
|
param.setAreaId(user.getAreaId());
|
}
|
MPJLambdaWrapper<Declares> queryWrapper = new MPJLambdaWrapper<>();
|
queryWrapper.leftJoin(Company.class, Company::getId, Declares::getCompanyId);
|
queryWrapper.leftJoin(Areas.class, Areas::getId, Company::getAreaId);
|
queryWrapper.eq(Declares::getIsdeleted, Constants.ZERO);
|
queryWrapper.ne(Declares::getStatus, Constants.ZERO);
|
queryWrapper.eq(Declares::getProjectId, param.getProjectId());
|
queryWrapper.eq(param.getDiagnoseType()!=null,Declares::getDiagnoseTypeId, param.getDiagnoseTypeId());
|
queryWrapper.apply(param.getAreaId()!=null,"t1.area_id =" +param.getAreaId());
|
queryWrapper.groupBy(Company::getAreaId );
|
queryWrapper.select("count(t.id) as num,t2.name,t2.code as areaCode" +
|
",(select count(c.id) from declares c left join company c1 on c.COMPANY_ID =c1.id " +
|
"where c.status in(9,10,11,13) and c.isdeleted=0 and c1.area_id =t1.area_id and c.project_id="+param.getProjectId()+" ) as doneNum");
|
List<BsAreaComNumVo> list = declareJoinMapper.selectJoinList(BsAreaComNumVo.class, queryWrapper);
|
return list;
|
}
|
@Override
|
public List<BsScoreLevelNumVo> bsScoreLevelNumData(Declares param){
|
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
if(param.getProjectId() == null){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST);
|
}
|
validUserType(user);
|
if(Constants.formatIntegerNum(user.getType()) == Constants.UserType.AREA.getKey()){
|
//如果是县区用户,只能查看当前县区下的数据
|
if(user.getAreaId() == null){
|
return new ArrayList<>();
|
}
|
param.setAreaId(user.getAreaId());
|
}
|
//查询评分系数
|
ProjectRatio projectRatio=new ProjectRatio();
|
projectRatio.setProjectId(param.getProjectId());
|
projectRatio.setIsdeleted(Constants.ZERO);
|
List<ProjectRatio> paList= projectRatioMapper.selectList(new QueryWrapper<>(projectRatio)
|
.orderByAsc("MAX_NUM")
|
);
|
/*if(paList == null || paList.size() ==0){
|
return new ArrayList<>();
|
}*/
|
ProjectScore ps = new ProjectScore();
|
ps.setIsdeleted(Constants.ZERO);
|
ps.setProjectId(param.getProjectId());
|
//查询全部配置信息
|
List<ProjectScore> psList = projectScoreMapper.selectList(new QueryWrapper<>(ps));
|
/* if(psList == null || psList.size() ==0){
|
return new ArrayList<>();
|
}*/
|
DeclareScore ds = new DeclareScore();
|
ds.setIsdeleted(Constants.ZERO);
|
ds.setStatus(Constants.ONE);//提交数据
|
//查询全部配置信息
|
List<DeclareScore> dsList = declareScoreMapper.selectList(new QueryWrapper<>(ds).exists("select c.id from declares c where c.project_id="+param.getProjectId()+ " limit 1") );
|
/* if(dsList == null || dsList.size() ==0){
|
return new ArrayList<>();
|
}*/
|
List<Integer> statusList = new ArrayList<>();
|
MPJLambdaWrapper<Declares> queryWrapper = new MPJLambdaWrapper<>();
|
queryWrapper.selectAll(Declares.class);
|
queryWrapper.leftJoin(Company.class, Company::getId, Declares::getCompanyId);
|
queryWrapper.eq(Declares::getIsdeleted, Constants.ZERO);
|
queryWrapper.eq(Declares::getProjectId, param.getProjectId());
|
queryWrapper.eq(param.getSoId()!=null,Declares::getSoId, param.getSoId());
|
|
queryWrapper.eq(param.getDiagnoseTypeId()!=null,Declares::getDiagnoseTypeId, param.getDiagnoseTypeId());
|
queryWrapper.apply(param.getAreaId()!=null,"t1.area_id =" +param.getAreaId());
|
//查询全部申报数据
|
List<Declares> list = declareJoinMapper.selectJoinList(Declares.class, queryWrapper);
|
List<BsScoreLevelNumVo> result = new ArrayList<>();
|
if(list == null){
|
return result;
|
}
|
for(Declares model:list){
|
ProjectRatio pa= queryScoreLevel(paList,model,dsList,psList);
|
if(pa !=null){
|
BsScoreLevelNumVo t = getFromListByPaid(pa.getId(),result);
|
if(t == null){
|
t = new BsScoreLevelNumVo();
|
t.setNum(1);
|
t.setName(pa.getName());
|
t.setId(pa.getId());
|
if(param.getSoId()!=null){
|
t.setTotalPrice(model.getServicePrice2());
|
}
|
result.add(t);
|
}else {
|
if(param.getSoId()!=null){
|
t.setTotalPrice(t.getTotalPrice().add(model.getServicePrice2()));
|
}
|
t.setNum(t.getNum()+1);
|
}
|
}
|
}
|
|
return result;
|
}
|
public List<BsScoreLevelNumVo> bsScoreLevelNumDataForDetail(Declares param, List<ProjectRatio> paList
|
, List<ProjectScore> psList , List<DeclareScore> dsList, List<Declares> alllist ){
|
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
if(param.getProjectId() == null){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST);
|
}
|
validUserType(user);
|
if(Constants.formatIntegerNum(user.getType()) == Constants.UserType.AREA.getKey()){
|
//如果是县区用户,只能查看当前县区下的数据
|
if(user.getAreaId() == null){
|
return new ArrayList<>();
|
}
|
param.setAreaId(user.getAreaId());
|
}
|
|
List<Declares> list = getFromAllListBySoid(param.getSoId(),alllist);
|
|
List<BsScoreLevelNumVo> result = new ArrayList<>();
|
if(list == null){
|
return result;
|
}
|
for(Declares model:list){
|
ProjectRatio pa= queryScoreLevel(paList,model,dsList,psList);
|
if(pa !=null){
|
BsScoreLevelNumVo t = getFromListByPaid(pa.getId(),result);
|
if(t == null){
|
t = new BsScoreLevelNumVo();
|
t.setNum(1);
|
t.setName(pa.getName());
|
t.setId(pa.getId());
|
if(param.getSoId()!=null){
|
t.setTotalPrice(model.getServicePrice2());
|
}
|
result.add(t);
|
}else {
|
if(param.getSoId()!=null){
|
t.setTotalPrice(t.getTotalPrice().add(model.getServicePrice2()));
|
}
|
t.setNum(t.getNum()+1);
|
}
|
}
|
}
|
|
return result;
|
}
|
|
private List<Declares> getFromAllListBySoid(Integer soId, List<Declares> alllist) {
|
List<Declares> list = new ArrayList<>();
|
if(alllist!=null){
|
for(Declares d :alllist){
|
if(soId!=null && d.getSoId()!=null && soId.equals(d.getSoId())){
|
list.add(d);
|
}
|
}
|
}
|
return list;
|
}
|
|
private BsScoreLevelNumVo getFromListByPaid(Integer id, List<BsScoreLevelNumVo> result) {
|
for(BsScoreLevelNumVo m : result){
|
if(Constants.equalsInteger(id,m.getId())){
|
return m;
|
}
|
}
|
return null;
|
}
|
|
/**
|
* 查询服务价格
|
*/
|
public ProjectRatio queryScoreLevel( List<ProjectRatio> paList,Declares declares,List<DeclareScore> scoreList,List<ProjectScore> psList){
|
declares.setServicePrice2(new BigDecimal(0));
|
if( paList!=null &&paList.size()>0 && scoreList!=null &&scoreList.size()>0 && psList!=null && psList.size()>0) {
|
BigDecimal score = declareScoreService.getDeclareScoreAll(declares.getProjectId(),declares.getId(),scoreList,psList);
|
if(score!=null ) {
|
//查询项目评分系数
|
for(ProjectRatio pa:paList){
|
int flag= score.compareTo(pa.getMaxNum());
|
if(!Constants.equalsInteger(flag,1)){
|
BigDecimal servicePrice2=Constants.formatBigdecimal(declares.getServicePrice()).multiply(Constants.formatBigdecimal(declares.getDiagnoseTypeRatio())).multiply(Constants.formatBigdecimal(pa.getRatio()).divide(new BigDecimal(100*100)));
|
declares.setServicePrice2(servicePrice2.setScale(2, BigDecimal.ROUND_HALF_UP));
|
return pa;
|
}
|
}
|
}
|
}
|
ProjectRatio pa = new ProjectRatio();
|
pa.setId(-1);
|
pa.setName("暂无等级");
|
pa.setRatio(new BigDecimal(0));
|
return pa;
|
}
|
@Override
|
public BsServerTimesVo bsServerTimesData(Declares param){
|
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
if(param.getProjectId() == null){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST);
|
}
|
validUserType(user);
|
BsServerTimesVo result = new BsServerTimesVo();
|
if(Constants.formatIntegerNum(user.getType()) == Constants.UserType.AREA.getKey()){
|
//如果是县区用户,只能查看当前县区下的数据
|
if(user.getAreaId() == null){
|
return result;
|
}
|
param.setAreaId(user.getAreaId());
|
}
|
MPJLambdaWrapper<DeclareService> queryWrapper = new MPJLambdaWrapper<>();
|
queryWrapper.leftJoin(Declares.class, Declares::getId, DeclareService::getDeclareId);
|
queryWrapper.leftJoin(Company.class, Company::getId, Declares::getSoId);
|
queryWrapper.leftJoin(Company.class, Company::getId, Declares::getCompanyId);
|
queryWrapper.eq(DeclareService::getIsdeleted, Constants.ZERO);
|
queryWrapper.eq(Declares::getIsdeleted, Constants.ZERO);
|
queryWrapper.eq(DeclareService::getType, Constants.ZERO);
|
queryWrapper.eq(DeclareService::getStatus, Constants.ONE);
|
queryWrapper.apply(param.getAreaId()!=null,"t3.area_id =" +param.getAreaId());
|
queryWrapper.eq(Declares::getProjectId, param.getProjectId());
|
// queryWrapper.eq(param.getAreaId()!=null,Company::getAreaId, param.getAreaId());
|
queryWrapper.eq(param.getSoId()!=null,Declares::getSoId, param.getSoId());
|
queryWrapper.groupBy(DeclareService::getDeclareId);
|
queryWrapper.select("count(t.id)");
|
List<Integer> list = declareServiceJoinMapper.selectJoinList(Integer.class, queryWrapper);
|
if(list !=null){
|
for(Integer model:list){
|
if(Constants.formatIntegerNum(model )>0){
|
result.setNum(result.getNum()+1);
|
if(model == 1){
|
result.setOneNum(result.getOneNum()+1);
|
}else if(model == 2){
|
result.setTwoNum(result.getTwoNum()+1);
|
}else if(model == 3){
|
result.setThreeNum(result.getThreeNum()+1);
|
}else if(model == 4){
|
result.setFourNum(result.getFourNum()+1);
|
}else{
|
result.setFiveNum(result.getFiveNum()+1);
|
}
|
}
|
}
|
}
|
return result;
|
}
|
@Override
|
public BsIncomeNumVo bsIncomeNumData(Declares param){
|
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
if(param.getProjectId() == null){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST);
|
}
|
validUserType(user);
|
if(Constants.formatIntegerNum(user.getType()) == Constants.UserType.AREA.getKey()){
|
//如果是县区用户,只能查看当前县区下的数据
|
if(user.getAreaId() == null){
|
return new BsIncomeNumVo();
|
}
|
param.setAreaId(user.getAreaId());
|
}
|
int year = DateUtil.getCurrentYear() -1;//上一年
|
MPJLambdaWrapper<Declares> queryWrapper = new MPJLambdaWrapper<>();
|
queryWrapper.leftJoin(Company.class, Company::getId, Declares::getCompanyId);
|
queryWrapper.eq(Declares::getIsdeleted, Constants.ZERO);
|
queryWrapper.eq(Company::getIsdeleted, Constants.ZERO);
|
queryWrapper.apply(param.getAreaId()!=null,"t1.area_id =" +param.getAreaId());
|
queryWrapper.eq(Declares::getProjectId, param.getProjectId());
|
queryWrapper.eq(param.getAreaId()!=null,Company::getAreaId, param.getAreaId());
|
queryWrapper.select("(select c.INCOME from company_economics c where c.isdeleted=0 and c.COMPANY_ID =t1.id and c.YEARS="+year+" limit 1)");
|
List<BigDecimal> list = declareJoinMapper.selectJoinList(BigDecimal.class, queryWrapper);
|
//统计维度:2千万-5千万,5千万-1亿, 1亿-5亿, 5亿-10亿, 10亿以上,左包含
|
BsIncomeNumVo result = new BsIncomeNumVo();
|
if(list !=null){
|
for(BigDecimal model:list){
|
if(Constants.formatBigdecimal(model ).compareTo(new BigDecimal(1000 * 2 ))>=0){
|
result.setNum(result.getNum()+1);
|
if(Constants.formatBigdecimal(model ).compareTo(new BigDecimal(1000 *100))>=0){
|
//10亿及以上
|
result.setFiveNum(result.getFiveNum()+1);
|
}else if(Constants.formatBigdecimal(model ).compareTo(new BigDecimal(1000*50 ))>=0){
|
//5亿-10亿
|
result.setFourNum(result.getFourNum()+1);
|
}else if(Constants.formatBigdecimal(model ).compareTo(new BigDecimal(1000*10 ))>=0){
|
// 1亿-5亿
|
result.setThreeNum(result.getThreeNum()+1);
|
}else if(Constants.formatBigdecimal(model ).compareTo(new BigDecimal(1000*5 ))>=0){
|
//5千万-1亿
|
result.setTwoNum(result.getTwoNum()+1);
|
}else{
|
result.setOneNum(result.getOneNum()+1);
|
}
|
}else{
|
result.setZeroNum(result.getZeroNum()+1);
|
}
|
}
|
}
|
return result;
|
}
|
|
|
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.SJ_CHILD.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()
|
)){
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED);
|
}
|
}
|
@Override
|
public List<Declares> exportExcelForProject(PageWrap<Declares> pageWrap) {
|
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
|
Declares declares = pageWrap.getModel();
|
IPage<Company> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
|
MPJLambdaWrapper<Declares> queryWrapper = new MPJLambdaWrapper<>();
|
Utils.MP.blankToNull(pageWrap.getModel());
|
|
|
if (Constants.formatIntegerNum(user.getType()) == UserType.AREA.getKey()) {
|
//县区角色 查看企业用户,除保存之外的所有数据
|
queryWrapper.eq(user.getAreaId() != null, Company::getAreaId, user.getAreaId())
|
.eq(Company::getType, Constants.CompanyType.BUSINESS_COMPANYTYPE.getValue());
|
|
} else if (Constants.formatIntegerNum(user.getType()) == UserType.SJ.getKey()) {
|
//市经信局/ 查看当前市局所有的企业
|
//存在已经报名的企业修改地区导致无法查询到
|
// queryWrapper.eq(user.getCityId() != null, Company::getCityId, user.getCityId());
|
|
} else if (Constants.formatIntegerNum(user.getType()) == UserType.SD_ADMIN.getKey()) {
|
//综合服务单位 查看当前所有的企业
|
//存在已经报名的企业修改地区导致无法查询到
|
// queryWrapper.eq(user.getCityId() != null, Company::getCityId, user.getCityId());
|
} else if (Constants.formatIntegerNum(user.getType()) == UserType.SD_CHILD.getKey()) {
|
//综合服务单位子账号
|
// queryWrapper.eq(user.getCityId() != null, Company::getCityId, user.getCityId());
|
queryWrapper.eq(Declares::getSdUserId, user.getId());//查询子账号的数据
|
}else if(Constants.formatIntegerNum(user.getType()) == UserType.EXPERT.getKey()){
|
//专家
|
queryWrapper.exists("select de.id from declare_expert de where de.isdeleted=0 and de.expert_id="+user.getId()+" and t.id=de.declare_id"+(declares.getExpertStatus()!=null?" and de.status="+ declares.getExpertStatus():""));
|
}else if(Constants.formatIntegerNum(user.getType()) == UserType.SO_ADMIN.getKey()){
|
//服务机构管理员 人员
|
queryWrapper.eq(Declares::getSoId, user.getCompanyId());
|
}else if(Constants.formatIntegerNum(user.getType()) == UserType.SO_CHILD.getKey()){
|
//服务机构管 子管理 人员
|
queryWrapper.eq(Declares::getSoId, user.getCompanyId());
|
queryWrapper.eq(Declares::getSoUserId, user.getId());//查询子账号的数据
|
}
|
queryWrapper.selectAll(Declares.class);
|
queryWrapper.selectAs(Company::getName,Declares::getCompanyName);
|
queryWrapper.selectAs(Company::getAreaId,Declares::getAreaId);
|
queryWrapper.selectAs(Company::getCityId,Declares::getCityId);
|
queryWrapper.selectAs(Company::getCreditCode,Declares::getCreditCode);
|
queryWrapper.selectAs(Project::getName,Declares::getProjectName);
|
queryWrapper.selectAs(Project::getSodType,Declares::getSodType);
|
queryWrapper.selectAs(Project::getEdType,Declares::getEdType);
|
queryWrapper.selectAs(Project::getAreaCheck,Declares::getAreaCheck);
|
queryWrapper.selectAs(ProjectLabel::getName,Declares::getDiagnoseType);
|
queryWrapper.selectAs(ProjectLabel::getRatio,Declares::getDiagnoseTypeRatio);
|
queryWrapper.selectAs(DeclareAnswer::getScore,Declares::getDAScore);
|
queryWrapper.select("(select ps.PRICE from project_so ps where ps.PROJECT_ID = t.project_id and ps.isdeleted=0 and ps.COMPANY_ID=t.SO_ID limit 1) as servicePrice");
|
queryWrapper.select("(select ps.score from declare_expert ps where ps.declare_id = t.id and ps.isdeleted=0 limit 1) as expertScore");
|
queryWrapper.select("s.REALNAME as realName,s2.REALNAME as realServiceName");
|
queryWrapper.select("t3.name as labelName");
|
queryWrapper.select("s.REALNAME as realName,s2.REALNAME as realServiceName");
|
if(pageWrap.getModel().getQueryFlag()==Constants.ONE){
|
//查询前一年营业收入和利润总额
|
queryWrapper.select("(select concat(ce.income,'&&',ce.profit) from company_economics ce where ce.years="+DateUtil.getYear(DateUtil.addDaysToDate(new Date(),-365))+" and ce.isdeleted=0 and ce.company_id =t.company_id limit 1)as economics ");
|
}
|
queryWrapper.selectAs(Company::getAreaId,Declares::getAreaId);
|
queryWrapper.selectAs(Labels::getName,Declares::getIndusrtyName);
|
queryWrapper.leftJoin(Company.class,Company::getId,Declares::getCompanyId);//查询企业名称
|
queryWrapper.leftJoin(Labels.class,Labels::getId,Company::getIndustryId);//查询企业名称
|
queryWrapper.leftJoin(Labels.class,Labels::getId,Company::getLabelId);//查询企业规模
|
queryWrapper.leftJoin(Project.class,Project::getId,Declares::getProjectId);//查询项目信息
|
queryWrapper.leftJoin(ProjectLabel.class,ProjectLabel::getId,Declares::getDiagnoseTypeId);
|
queryWrapper.leftJoin(DeclareAnswer.class,DeclareAnswer::getId,Declares::getAnswerId);//查询项目信息
|
queryWrapper.leftJoin("company so on so.id=t.so_id");
|
queryWrapper.select("so.name as serviceName");
|
|
queryWrapper.leftJoin("system_user s on s.id = t.SD_USER_ID and s.DELETED=0");//查询分配单位子账号
|
queryWrapper.leftJoin("system_user s2 on s2.id = t.SO_USER_ID and s2.DELETED=0");//查询服务机构子账号
|
// queryWrapper.leftJoin("company_economics ce on ce.COMPANY_ID = c.id and ce.ISDELETED=0 and ce.YEARS=year(now())-1");//查询经济指标
|
queryWrapper.eq(Declares::getProjectId, declares.getProjectId()).eq(Declares::getIsdeleted, Constants.ZERO);
|
queryWrapper.notIn(Declares::getStatus, Arrays.asList(Constants.DeclareStatus.EDITING.getKey()));
|
queryWrapper.eq(Declares::getIsdeleted, Constants.ZERO);
|
|
queryWrapper.like(StringUtils.isNotBlank(declares.getCompanyName()), Company::getName, declares.getCompanyName());
|
queryWrapper.eq(declares.getStatus() != null, Declares::getStatus, declares.getStatus());
|
queryWrapper.eq(declares.getSoId() != null, Declares::getSoId, declares.getSoId());
|
queryWrapper.eq(declares.getCityId() != null, Company::getCityId, declares.getCityId());
|
queryWrapper.eq(declares.getAreaId() != null, Company::getAreaId, declares.getAreaId());
|
queryWrapper.orderByDesc(Declares::getCreateDate);
|
|
IPage<Declares> result = declaresJoinMapper.selectJoinPage(page, Declares.class, queryWrapper);
|
|
|
if(result!=null && result.getRecords().size()>0){
|
List<Integer> collect = result.getRecords().stream().map(s -> s.getId()).collect(Collectors.toList());
|
Map<Integer, List<Multifile>> objFileUrl = multifileService.getOBJFileUrl(collect, Constants.MultiFile.BUSINESS_DECLARE.getKey());
|
for(int i=0;i<result.getRecords().size();i++){
|
|
Declares ds=result.getRecords().get(i);
|
pageWrap.getModel().setProjectName(ds.getProjectName());
|
List<Multifile> multifiles = objFileUrl.get(ds.getId());
|
ds.setFileServiceList(multifiles);
|
if(ds.getAreaId() != null){
|
Areas area = areasService.findById(ds.getAreaId(),Constants.TWO);
|
if(area!=null){
|
ds.setAreaName(area.getName());
|
ds.setCityName(area.getCityName()+ds.getAreaName());
|
}
|
}else if(ds.getCityId() != null){
|
Areas area = areasService.findById(ds.getCityId(),Constants.ONE);
|
if(area!=null){
|
ds.setCityName(area.getName());
|
}
|
}
|
// 查询服务价格
|
queryScoreRatio(ds);
|
|
}
|
}
|
|
return result.getRecords();
|
}
|
|
|
/**
|
* 查询服务价格
|
* @param declares
|
*/
|
public void queryScoreRatio( List<ProjectScore> psList,Declares declares){
|
//查询专家姓名和评分
|
DeclareExpert declareExpert=new DeclareExpert();
|
declareExpert.setIsdeleted(Constants.ZERO);
|
declareExpert.setDeclareId(declares.getId());
|
DeclareExpert det= declareExpertMapper.selectOne(new QueryWrapper<>(declareExpert)
|
.select("declare_expert.SCORE ,(select s.REALNAME from system_user s where s.id = declare_expert.EXPERT_ID and s.DELETED=0) as realZJName ")
|
.eq("ISDELETED",0)
|
.last("limit 1")
|
);
|
if(Objects.nonNull(det)){
|
declares.setRealZJName(det.getRealZJName());
|
declares.setExpertScore(det.getScore());
|
}
|
declares.setRoleScore(declareScoreService.getDeclareScoreByList(psList,declares.getId()));
|
if( declares.getRoleScore() !=null) {
|
//查询项目评分系数
|
ProjectRatio projectRatio=new ProjectRatio();
|
projectRatio.setProjectId(declares.getProjectId());
|
projectRatio.setIsdeleted(Constants.ZERO);
|
List<ProjectRatio> paList= projectRatioMapper.selectList(new QueryWrapper<>(projectRatio)
|
.orderByAsc("MAX_NUM")
|
);
|
declares.setServicePrice2(new BigDecimal(0));
|
for(ProjectRatio pa:paList){
|
int flag= declares.getRoleScore().compareTo(pa.getMaxNum());
|
if(!Constants.equalsInteger(flag,1)){
|
if(Objects.nonNull(pa.getRatio()) && Objects.nonNull(declares.getServicePrice())){
|
declares.setLevelName(pa.getName());
|
BigDecimal servicePrice2=declares.getServicePrice().multiply(Constants.formatBigdecimal4Float(declares.getDiagnoseTypeRatio())).multiply(pa.getRatio().divide(new BigDecimal(100*100)));
|
declares.setServicePrice2(servicePrice2.setScale(2, BigDecimal.ROUND_HALF_UP));
|
}
|
break;
|
}
|
}
|
}
|
}
|
|
/**
|
* 查询服务价格
|
* @param declares
|
*/
|
public void queryScoreRatio( Declares declares){
|
//查询专家姓名和评分
|
DeclareExpert declareExpert=new DeclareExpert();
|
declareExpert.setIsdeleted(Constants.ZERO);
|
declareExpert.setDeclareId(declares.getId());
|
DeclareExpert det= declareExpertMapper.selectOne(new QueryWrapper<>(declareExpert)
|
.select("declare_expert.SCORE ,(select s.REALNAME from system_user s where s.id = declare_expert.EXPERT_ID and s.DELETED=0) as realZJName ")
|
.eq("ISDELETED",0)
|
.last("limit 1")
|
);
|
if(Objects.nonNull(det)){
|
declares.setRealZJName(det.getRealZJName());
|
declares.setExpertScore(det.getScore());
|
}
|
declares.setRoleScore(declareScoreService.getDeclareScore(declares.getProjectId(),declares.getId()));
|
// if(Constants.equalsInteger(Constants.DeclareStatus.DONE.getKey(), declares.getStatus())&&det!=null&&Objects.nonNull(det.getScore())){
|
if( declares.getRoleScore() !=null) {
|
//查询项目评分系数
|
ProjectRatio projectRatio=new ProjectRatio();
|
projectRatio.setProjectId(declares.getProjectId());
|
projectRatio.setIsdeleted(Constants.ZERO);
|
List<ProjectRatio> paList= projectRatioMapper.selectList(new QueryWrapper<>(projectRatio)
|
.orderByAsc("MAX_NUM")
|
);
|
declares.setServicePrice2(new BigDecimal(0));
|
for(ProjectRatio pa:paList){
|
int flag= declares.getRoleScore().compareTo(pa.getMaxNum());
|
if(!Constants.equalsInteger(flag,1)){
|
if(Objects.nonNull(pa.getRatio()) && (Objects.nonNull(declares.getServicePrice()))){
|
declares.setLevelName(pa.getName());
|
BigDecimal servicePrice2=declares.getServicePrice().multiply(Constants.formatBigdecimal(declares.getDiagnoseTypeRatio())).multiply(pa.getRatio().divide(new BigDecimal(100*100)));
|
declares.setServicePrice2(servicePrice2.setScale(2, BigDecimal.ROUND_HALF_UP));
|
}
|
break;
|
}
|
}
|
}
|
}
|
/**
|
* 查询服务价格
|
* @param declares
|
*/
|
public void queryScoreRatioOld(Declares declares){
|
//查询专家姓名和评分
|
DeclareExpert declareExpert=new DeclareExpert();
|
declareExpert.setIsdeleted(Constants.ZERO);
|
declareExpert.setDeclareId(declares.getId());
|
DeclareExpert det= declareExpertMapper.selectOne(new QueryWrapper<>(declareExpert)
|
.select("declare_expert.SCORE ,(select s.REALNAME from system_user s where s.id = declare_expert.EXPERT_ID and s.DELETED=0) as realZJName ")
|
.eq("ISDELETED",0)
|
.last("limit 1")
|
);
|
if(Objects.nonNull(det)){
|
declares.setRealZJName(det.getRealZJName());
|
declares.setExpertScore(det.getScore());
|
}
|
if(Constants.equalsInteger(Constants.DeclareStatus.DONE.getKey(), declares.getStatus())&&det!=null&&Objects.nonNull(det.getScore())){
|
//查询项目评分系数
|
ProjectRatio projectRatio=new ProjectRatio();
|
projectRatio.setProjectId(declares.getProjectId());
|
projectRatio.setIsdeleted(Constants.ZERO);
|
List<ProjectRatio> paList= projectRatioMapper.selectList(new QueryWrapper<>(projectRatio)
|
.orderByAsc("MAX_NUM")
|
);
|
declares.setServicePrice2(new BigDecimal(0));
|
for(ProjectRatio pa:paList){
|
int flag= det.getScore().compareTo(pa.getMaxNum());
|
if(!Constants.equalsInteger(flag,1)){
|
if(Objects.nonNull(pa.getRatio())){
|
BigDecimal servicePrice2=declares.getServicePrice().multiply(pa.getRatio().divide(new BigDecimal(100)));
|
declares.setServicePrice2(servicePrice2.setScale(2, BigDecimal.ROUND_HALF_UP));
|
}
|
break;
|
}
|
}
|
}
|
}
|
|
|
/**
|
* 县区企业审核按钮
|
*
|
* @param declares 实体对象
|
*/
|
@Override
|
@Transactional(rollbackFor = {BusinessException.class,Exception.class})
|
public void areaToExamine(Declares declares) throws BusinessException {
|
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
if (!Constants.equalsInteger(user.getType(), UserType.AREA.getKey())) {
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "非县区用户,不允许操作");
|
}
|
if (declares.getId() == null || declares.getStatus() == null) {
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), ResponseStatus.BAD_REQUEST.getMessage());
|
}
|
MPJLambdaWrapper<Declares> wrapper = new MPJLambdaWrapper<>();
|
wrapper.selectAll(Declares.class);
|
wrapper.selectAs(Project::getSodType, Declares::getSodType);
|
wrapper.selectAs(Project::getAreaCheck, Declares::getAreaCheck);
|
wrapper.leftJoin(Project.class, Project::getId, Declares::getProjectId);
|
wrapper.eq(Project::getIsdeleted, Constants.ZERO);
|
wrapper.eq(Declares::getIsdeleted, Constants.ZERO);
|
wrapper.eq(Declares::getId, declares.getId());
|
Declares querydec = declareJoinMapper.selectJoinOne(Declares.class, wrapper);
|
|
DeclareHistory history = new DeclareHistory();
|
areaToExamineJudge(querydec,history ,declares,user);
|
|
querydec.setEditor(user.getId());
|
querydec.setEditDate(new Date());
|
querydec.setStatus(history.getStatus());
|
querydec.setCheckType(history.getType());
|
querydec.setCheckInfo(history.getCheckInfo());
|
//記錄最近一次县区审核理由
|
querydec.setCheckor(history.getCheckor());
|
querydec.setRemark(declares.getRemark());
|
querydec.setCheckDate(history.getCheckDate());
|
declaresMapper.updateById(querydec);
|
|
//插入历史记录表
|
history.setDeclareId(querydec.getId());
|
history.setCreator(user.getId());
|
declareHistoryService.create(history);
|
}
|
|
/**
|
* 县区审核校验
|
*/
|
public void areaToExamineJudge(Declares querydec,DeclareHistory history,Declares declares,LoginUserInfo user){
|
|
if (Objects.isNull(querydec)) {
|
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), ResponseStatus.DATA_EMPTY.getMessage());
|
}
|
|
if (!Constants.equalsInteger(querydec.getStatus(), Constants.DeclareStatus.CHECK_WAIT.getKey())) {
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "无权限审核");
|
}
|
if (!Constants.equalsInteger(querydec.getAreaCheck(), Constants.ZERO)) {
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "未开通县区审核,禁止操作");
|
}
|
|
history.setCheckor(user.getId());
|
history.setCheckDate(new Date());
|
String hisContent;
|
if (Constants.equalsInteger(declares.getStatus(), Constants.DeclareStatus.CHECK_PASS.getKey())) {
|
//审核通过
|
history.setStatus(Constants.DeclareStatus.CHECK_PASS.getKey());
|
history.setType(ProjectRecord.XQ_CHECK_PASS.getKey());
|
hisContent = ProjectRecord.XQ_CHECK_PASS.getNoteinfo().replace("${param2}", UserType.getName(user.getType()))
|
.replace("${param3}", StringUtils.defaultString(user.getUsername(), ""))
|
.replace("${param5}", StringUtils.defaultString(declares.getRemark(), ""))
|
.replace("${param4}", Constants.DeclareStatus.getNoteinfo(history.getStatus()));
|
} else if (Constants.equalsInteger(declares.getStatus(), Constants.DeclareStatus.CHECK_EDIT.getKey())) {
|
//审核退回
|
history.setStatus(Constants.DeclareStatus.CHECK_EDIT.getKey());
|
history.setType(ProjectRecord.XQ_CHECK_EDIT.getKey());
|
hisContent = ProjectRecord.XQ_CHECK_EDIT.getNoteinfo().replace("${param2}", UserType.getName(user.getType()))
|
.replace("${param3}", StringUtils.defaultString(user.getUsername(), ""))
|
.replace("${param5}", StringUtils.defaultString(declares.getRemark(), ""))
|
.replace("${param4}", Constants.DeclareStatus.getNoteinfo(history.getStatus()));
|
} else if (Constants.equalsInteger(declares.getStatus(), Constants.DeclareStatus.CHECK_BACK.getKey())) {
|
//审核驳回
|
history.setStatus(Constants.DeclareStatus.CHECK_BACK.getKey());
|
history.setType(ProjectRecord.XQ_CHECK_BACK.getKey());
|
hisContent = ProjectRecord.XQ_CHECK_BACK.getNoteinfo().replace("${param2}", UserType.getName(user.getType()))
|
.replace("${param3}", StringUtils.defaultString(user.getUsername(), ""))
|
.replace("${param5}", StringUtils.defaultString(declares.getRemark(), ""));
|
} else {
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), ResponseStatus.BAD_REQUEST.getMessage());
|
}
|
|
if (!Constants.equalsInteger(declares.getStatus(), Constants.DeclareStatus.CHECK_PASS.getKey())) {
|
if(StringUtils.isEmpty(declares.getRemark())){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "审核说明不能为空");
|
}
|
}else{
|
|
}
|
history.setRemark(declares.getRemark());
|
history.setCheckInfo(hisContent);
|
// declares.setRemark(null);
|
}
|
|
|
|
|
|
|
/**
|
* 分配服务机构保存
|
*
|
* @param declares 实体对象
|
*/
|
@Override
|
public void distributionServiceSave(Declares declares) throws BusinessException {
|
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
|
if (declares.getId() == null || declares.getSoId() == null) {
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), ResponseStatus.BAD_REQUEST.getMessage());
|
}
|
|
MPJLambdaWrapper<Declares> wrapper = new MPJLambdaWrapper<>();
|
wrapper.selectAll(Declares.class);
|
wrapper.selectAs(Project::getSodType, Declares::getSodType);
|
wrapper.selectAs(Company::getCityId,Declares::getCityId);
|
wrapper.leftJoin(Project.class, Project::getId, Declares::getProjectId);
|
wrapper.leftJoin(Company.class, Company::getId, Declares::getCompanyId);
|
wrapper.eq(Project::getIsdeleted, Constants.ZERO);
|
wrapper.eq(Declares::getIsdeleted, Constants.ZERO);
|
wrapper.eq(Declares::getId, declares.getId());
|
Declares querydec = declareJoinMapper.selectJoinOne(Declares.class, wrapper);
|
|
DeclareHistory history = new DeclareHistory();
|
distributionServiceJudge(declares,querydec,history,user);
|
|
|
querydec.setEditor(user.getId());
|
querydec.setEditDate(new Date());
|
querydec.setStatus(history.getStatus());
|
querydec.setCheckType(history.getType());
|
querydec.setCheckInfo(history.getCheckInfo());
|
querydec.setCheckor(history.getCheckor());
|
querydec.setCheckDate(history.getCheckDate());
|
querydec.setSoId(declares.getSoId());
|
declaresMapper.updateById(querydec);
|
|
//插入历史记录表
|
history.setDeclareId(querydec.getId());
|
history.setCreator(user.getId());
|
declareHistoryService.create(history);
|
}
|
|
|
/**
|
* 分配服务机构保存数据校验
|
* @param declares
|
* @param querydec
|
* @param history
|
* @param user
|
*/
|
public void distributionServiceJudge(Declares declares,Declares querydec, DeclareHistory history ,LoginUserInfo user){
|
if(Objects.isNull(querydec)){
|
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), ResponseStatus.DATA_EMPTY.getMessage());
|
}
|
if (!(Constants.equalsInteger(user.getType(), UserType.SJ.getKey())
|
||Constants.equalsInteger(user.getType(), UserType.SJ_CHILD.getKey())
|
|| Constants.equalsInteger(user.getType(), UserType.SD_ADMIN.getKey())
|
|| Constants.equalsInteger(user.getType(), UserType.SD_CHILD.getKey()))) {
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "非市局/综合服务单位人员禁止分配");
|
}
|
|
if(Constants.equalsInteger(querydec.getSodType(),Constants.ZERO)){
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,当前用户无权限分配服务机构,禁止该操作!");
|
}
|
/* if(Constants.equalsInteger(declares.getCityId(),user.getCityId())){
|
//如果项目不是本城市的,不能操作非本市的企业报名数据
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,该企业非管辖范围内数据,不能进行当前操作!");
|
}*/
|
if (!(
|
Constants.equalsInteger(querydec.getStatus(), Constants.DeclareStatus.CHECK_PASS.getKey())
|
|| Constants.equalsInteger(querydec.getStatus(), Constants.DeclareStatus.SELECTED_SO.getKey())
|
|| Constants.equalsInteger(querydec.getStatus(), Constants.DeclareStatus.SERVING.getKey())
|
||Constants.equalsInteger(querydec.getStatus(), Constants.DeclareStatus.SO_BACK.getKey())
|
)) {
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "状态已流转,不允许操作");
|
}
|
ProjectSo projectSo = projectSoService.belongToService(querydec, declares.getSoId());
|
if (Objects.isNull(projectSo)) {
|
throw new BusinessException(ResponseStatus.DATA_ERRO.getCode(), "项目没有关联该服务机构,不允许操作");
|
}
|
|
if(Constants.equalsInteger(user.getType(), UserType.SJ.getKey())){
|
if(!Constants.equalsInteger(querydec.getSodType(), Constants.ONE)){
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "市局用户无权限分配服务机构");
|
}
|
}
|
if((Constants.equalsInteger(user.getType(), UserType.SD_ADMIN.getKey())||Constants.equalsInteger(user.getType(), UserType.SD_CHILD.getKey()))){
|
if(!Constants.equalsInteger(querydec.getSodType(), Constants.TWO)){
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "综合服务单位无权限分配服务机构");
|
}
|
}
|
|
if( Constants.equalsInteger(querydec.getStatus(), Constants.DeclareStatus.SERVING.getKey())
|
||Constants.equalsInteger(querydec.getStatus(), Constants.DeclareStatus.SELECTED_SO.getKey())){
|
//诊断中再次分配服务商,删除之前服务商上传的数据
|
DeclareService queryDS=new DeclareService();
|
queryDS.setType(Constants.ZERO);
|
queryDS.setDeclareId(querydec.getId());
|
queryDS.setIsdeleted(Constants.ZERO);
|
|
DeclareService updateDS=new DeclareService();
|
updateDS.setIsdeleted(Constants.ONE);
|
declareServiceMapper.update(updateDS,new UpdateWrapper<>(queryDS));
|
}
|
|
history.setCheckor(user.getId());
|
history.setCheckDate(new Date());
|
history.setStatus(Constants.DeclareStatus.SELECTED_SO.getKey());
|
|
String hisContent = "";
|
if (Constants.equalsInteger(user.getType(), UserType.SJ.getKey())) {
|
//市局用户
|
if (querydec.getSoId() != null) {
|
hisContent = ProjectRecord.SJ_RESELECT_SO.getNoteinfo();
|
history.setType(ProjectRecord.SJ_RESELECT_SO.getKey());
|
} else {
|
hisContent = ProjectRecord.SJ_SELECT_SO.getNoteinfo();
|
history.setType(ProjectRecord.SJ_SELECT_SO.getKey());
|
}
|
} else if (Constants.equalsInteger(user.getType(), UserType.SD_ADMIN.getKey())
|
|| Constants.equalsInteger(user.getType(), UserType.SD_CHILD.getKey())) {
|
//综合服务单位管理员 综合服务单位子账号
|
if (querydec.getSoId() != null) {
|
hisContent = ProjectRecord.SD_RESELECT_SO.getNoteinfo();
|
history.setType(ProjectRecord.SD_RESELECT_SO.getKey());
|
} else {
|
hisContent = ProjectRecord.SD_SELECT_SO.getNoteinfo();
|
history.setType(ProjectRecord.SD_SELECT_SO.getKey());
|
}
|
}
|
|
history.setCheckInfo(hisContent.replace("${param2}", UserType.getName(user.getType()))
|
.replace("${param3}", StringUtils.defaultString(user.getUsername(), ""))
|
.replace("${param5}", StringUtils.defaultString(projectSo.getCompanyName(), ""))
|
.replace("${param4}", Constants.DeclareStatus.getNoteinfo(history.getStatus())));
|
|
}
|
|
|
/**
|
* 分配给子账号
|
*
|
* @param declares 实体对象
|
*/
|
@Override
|
public void distributionChildAccount(Declares declares) throws BusinessException {
|
|
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
if (declares.getProjectId() == null) {
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), ResponseStatus.BAD_REQUEST.getMessage());
|
}
|
//判断当前登陆用户是否可操作改项目的申报记录
|
|
|
if (UserType.SD_ADMIN.getKey() == user.getType()){
|
distributionSDChildAccount(declares, user);
|
} else if (UserType.SO_ADMIN.getKey() == user.getType()){
|
distributionSOChildAccount(declares, user);
|
}
|
|
}
|
|
/**
|
*
|
* 服务机构分配子账号
|
* @param declares
|
*/
|
private void distributionSOChildAccount(Declares declares,LoginUserInfo user){
|
if (declares.getIds() == null || declares.getSoUserId() == null){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"请按要求选择提交内容!");
|
}
|
|
if(!Constants.equalsInteger(user.getType(), UserType.SO_ADMIN.getKey())){
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,只有服务机构管理员才能进行该操作!");
|
}
|
|
if (StringUtils.isEmpty(declares.getIds())) {
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,用户为空");
|
}
|
List<Integer> ids = Arrays.stream(declares.getIds().split(","))
|
.map(s->Integer.valueOf(s))
|
.collect(Collectors.toList());
|
Declares query = new Declares();
|
query.setSoId(user.getCompanyId());
|
query.setProjectId(declares.getProjectId());
|
List<Declares> declaresList = findList(query);
|
List<Integer> collect = declaresList.stream().map(s -> s.getId()).collect(Collectors.toList());
|
if (!collect.containsAll(ids)){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST);
|
}
|
// 已分配服务机构 诊断中
|
boolean safeStatus = declaresList.stream()
|
.filter(s -> ids.contains(s.getId()))
|
.anyMatch(s -> !Arrays.asList(
|
Constants.DeclareStatus.SELECTED_SO.getKey(),Constants.DeclareStatus.SERVING.getKey()
|
,Constants.DeclareStatus.BACK_SERVER_ING.getKey()
|
).contains(s.getStatus()));
|
if (safeStatus){
|
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"存在不允许分配子账号状态");
|
}
|
if (declares.getSoUserId() != null) {
|
//当前分配服务机构子账号(关联system_user表)"
|
Declares update = new Declares();
|
update.setEditDate(new Date());
|
update.setEditor(user.getId());
|
update.setSoUserId(declares.getSoUserId());
|
UpdateWrapper<Declares> updateWrapper = new UpdateWrapper<>();
|
updateWrapper.lambda()
|
.in(Declares::getId,ids)
|
.eq(Declares::getSoId,user.getCompanyId())
|
.in(Declares::getStatus,Arrays.asList(Constants.DeclareStatus.SELECTED_SO.getKey(),
|
Constants.DeclareStatus.SERVING.getKey(),Constants.DeclareStatus.BACK_SERVER_ING.getKey()));
|
declaresMapper.update(update,updateWrapper);
|
}
|
|
}
|
|
|
/**
|
*
|
* 综合服务单位分配子账号
|
* @param declares
|
*/
|
public void distributionSDChildAccount(Declares declares,LoginUserInfo user){
|
|
if (declares.getProjectId() == null || declares.getSdUserId() == null || declares.getSoId() == null){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"请按要求选择提交内容!");
|
}
|
|
// QueryWrapper<Project> wrapper = new QueryWrapper<>();
|
// wrapper.lambda().eq(Project::getCityId,user.getCityId());
|
ProjectSo so = new ProjectSo();
|
so.setType(Constants.ONE);
|
so.setProjectId(declares.getProjectId());
|
so.setCompanyId(user.getCompanyId());
|
ProjectSo projectSos = projectSoService.findOne(so);
|
if (Objects.isNull(projectSos)){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"无权限操作当前项目");
|
}
|
ProjectSo projectSo = new ProjectSo();
|
projectSo.setProjectId(declares.getProjectId());
|
projectSo.setCompanyId(declares.getSoId());
|
List<ProjectSo> list = projectSoService.findList(projectSo);
|
|
if (CollectionUtils.isEmpty(list)){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"请按要求选择提交内容!");
|
}
|
if (Objects.isNull(user)){
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"当前无权限");
|
}
|
if(!Constants.equalsInteger(user.getType(), UserType.SD_ADMIN.getKey())){
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,只有综合服务单位管理员才能进行该操作!");
|
}
|
|
SystemUser systemUser = new SystemUser();
|
systemUser.setCompanyId(user.getCompanyId());
|
systemUser.setId(declares.getSdUserId());
|
systemUser.setType(UserType.SD_CHILD.getKey());
|
systemUser.setDeleted(Boolean.FALSE);
|
SystemUser one = systemUserService.findOne(systemUser);
|
if (Objects.isNull(one)){
|
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对不起,该子账号信息不存在!");
|
}
|
|
ProjectSo update = new ProjectSo();
|
update.setId(projectSos.getId());
|
update.setSdChildId(declares.getSdUserId());
|
projectSoService.updateById(update);
|
Declares updateDeclares = new Declares();
|
updateDeclares.setEditor(user.getId());
|
updateDeclares.setEditDate(new Date());
|
updateDeclares.setSdUserId(one.getId());
|
QueryWrapper<Declares> updateWrapper = new QueryWrapper<>();
|
updateWrapper.lambda()
|
.eq(Declares::getProjectId,declares.getProjectId())
|
.eq(Declares::getSoId,declares.getSoId())
|
.in(Declares::getStatus,Arrays.asList(Constants.DeclareStatus.SELECTED_SO.getKey(),
|
Constants.DeclareStatus.SERVING.getKey(),Constants.DeclareStatus.BACK_SERVER_ING.getKey()));
|
declaresMapper.update(updateDeclares,updateWrapper);
|
|
}
|
|
|
|
|
/**
|
* 综合服务单位分配给子账号
|
*
|
* @param declares 实体对象
|
*/
|
|
@Transactional(rollbackFor = {BusinessException.class,Exception.class})
|
@Override
|
public void distriZHChildAccount(Declares declares) throws BusinessException {
|
|
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
if (!Constants.equalsInteger(user.getType(), UserType.SD_ADMIN.getKey())) {
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "非综合服务单位管理员,不允许操作");
|
}
|
|
|
distriChildJudge(declares ,user);
|
|
DeclareHistory history = new DeclareHistory();
|
history.setCheckor(user.getId());
|
history.setCheckDate(new Date());
|
history.setStatus(Constants.DeclareStatus.SELECTED_SO.getKey());
|
|
Arrays.stream(declares.getIds().split(",")).forEach(id -> {
|
Declares update = new Declares();
|
Declares querydc = declaresMapper.selectById(id);
|
String hisContent;
|
if (querydc.getSoId() != null) {
|
history.setType(ProjectRecord.SD_RESELECT_SO.getKey());
|
hisContent = ProjectRecord.SD_RESELECT_SO.getNoteinfo();
|
} else {
|
history.setType(ProjectRecord.SD_SELECT_SO.getKey());
|
hisContent = ProjectRecord.SD_SELECT_SO.getNoteinfo();
|
}
|
history.setCheckInfo(hisContent.replace("${param2}", UserType.getName(user.getType()))
|
.replace("${param3}", StringUtils.defaultString(user.getUsername(), ""))
|
.replace("${param4}", Constants.DeclareStatus.getNoteinfo(history.getStatus())));
|
|
update.setEditDate(new Date());
|
update.setEditor(user.getId());
|
update.setId(Integer.valueOf(id));
|
update.setSdUserId(declares.getSdUserId());
|
update.setSoId(declares.getSoId());
|
update.setStatus(history.getStatus());
|
update.setCheckType(history.getType());
|
update.setCheckInfo(history.getCheckInfo());
|
update.setCheckor(history.getCheckor());
|
update.setCheckDate(history.getCheckDate());
|
declaresMapper.updateById(update);
|
|
//插入历史记录表
|
history.setDeclareId(update.getId());
|
history.setCreator(user.getId());
|
declareHistoryService.create(history);
|
});
|
}
|
|
/**
|
* 服务机构分配给子账号
|
*
|
* @param declares 实体对象
|
*/
|
@Transactional(rollbackFor = {BusinessException.class,Exception.class})
|
@Override
|
public void distriServiceChildAccount(Declares declares) throws BusinessException {
|
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
if (!Constants.equalsInteger(user.getType(), UserType.SO_ADMIN.getKey())) {
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "非服务机构管理员,禁止操作");
|
}
|
if (StringUtils.isEmpty(declares.getIds()) || declares.getProjectId() == null || declares.getSoUserId() == null) {
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), ResponseStatus.BAD_REQUEST.getMessage());
|
}
|
|
SystemUser systemUser = systemUserMapper.selectById(declares.getSoUserId());
|
if (systemUser == null || !Constants.equalsInteger(systemUser.getType(), UserType.SO_CHILD.getKey())||!Constants.equalsInteger(user.getCityId(), systemUser.getCityId())) {
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "用户非服务机构子账号/非管辖范围内数据,禁止分配");
|
}
|
|
Arrays.stream(declares.getIds().split(",")).forEach(id -> {
|
Declares update = new Declares();
|
update.setEditDate(new Date());
|
update.setEditor(user.getId());
|
update.setId(Integer.valueOf(id));
|
update.setSdUserId(declares.getSoUserId());
|
declaresMapper.updateById(update);
|
});
|
|
}
|
|
/**
|
* 综合服务单位分配账号 数据校验
|
*/
|
public void distriChildJudge(Declares declares,LoginUserInfo user) {
|
if (declares.getSdUserId() == null || declares.getSoId() == null || StringUtils.isEmpty(declares.getIds()) || declares.getProjectId() == null) {
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), ResponseStatus.BAD_REQUEST.getMessage());
|
}
|
SystemUser systemUser = systemUserMapper.selectById(declares.getSdUserId());
|
if (systemUser == null || !Constants.equalsInteger(systemUser.getType(), UserType.SD_CHILD.getKey())||!Constants.equalsInteger(user.getCityId(), systemUser.getCityId())) {
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "用户非综合单位子管理员/非管辖范围内数据,禁止分配");
|
}
|
|
ProjectSo projectSo = projectSoService.belongToService(declares,declares.getSoId());
|
if (Objects.isNull(projectSo)) {
|
throw new BusinessException(ResponseStatus.DATA_ERRO.getCode(), "项目没有关联该服务机构,不允许操作");
|
}
|
|
String[] arr = declares.getIds().split(",");
|
for (int i = 0; i < arr.length; i++) {
|
|
MPJLambdaWrapper<Declares> wrapper = new MPJLambdaWrapper<>();
|
wrapper.selectAll(Declares.class);
|
wrapper.selectAs(Company::getName, Declares::getCompanyName);
|
wrapper.leftJoin(Company.class, Company::getId, Declares::getCompanyId);
|
wrapper.eq(Company::getIsdeleted, Constants.ZERO);
|
wrapper.eq(Declares::getIsdeleted, Constants.ZERO);
|
wrapper.eq(Declares::getId, arr[0]);
|
Declares querydec = declareJoinMapper.selectJoinOne(Declares.class, wrapper);
|
if (!Constants.equalsInteger(querydec.getStatus(), Constants.DeclareStatus.CHECK_PASS.getKey())
|
|| !Constants.equalsInteger(querydec.getStatus(), Constants.DeclareStatus.SELECTED_SO.getKey())) {
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), querydec.getCompanyName() + ":状态已流转,不允许操作");
|
}
|
}
|
}
|
|
|
|
/**
|
* 服务机构确认/拒绝服务
|
*
|
* @param declares 实体对象
|
*/
|
@Override
|
public void confirmService(Declares declares) throws BusinessException {
|
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
if (declares.getId()==null||declares.getStatus()==null) {
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), ResponseStatus.BAD_REQUEST.getMessage());
|
}
|
|
MPJLambdaWrapper<Declares> wrapper = new MPJLambdaWrapper<>();
|
wrapper.selectAll(Declares.class);
|
wrapper.selectAs(Project::getSodType, Declares::getSodType);
|
wrapper.leftJoin(Project.class, Project::getId, Declares::getProjectId);
|
wrapper.eq(Project::getIsdeleted, Constants.ZERO);
|
wrapper.eq(Declares::getIsdeleted, Constants.ZERO);
|
wrapper.eq(Declares::getId, declares.getId());
|
Declares querydc = declareJoinMapper.selectJoinOne(Declares.class, wrapper);
|
|
DeclareHistory history = new DeclareHistory();
|
confirmServiceJudge(declares, user, querydc , history );
|
|
querydc.setEditDate(new Date());
|
querydc.setEditor(user.getId());
|
querydc.setId(declares.getId());
|
querydc.setSdUserId(declares.getSdUserId());
|
querydc.setSoId(declares.getSoId());
|
querydc.setStatus(history.getStatus());
|
querydc.setCheckType(history.getType());
|
querydc.setCheckInfo(history.getCheckInfo());
|
querydc.setCheckor(history.getCheckor());
|
querydc.setCheckDate(history.getCheckDate());
|
declaresMapper.updateById(querydc);
|
|
//插入历史记录表
|
history.setDeclareId(declares.getId());
|
history.setCreator(user.getId());
|
declareHistoryService.create(history);
|
}
|
|
/**
|
* 服务机构确认/拒绝服务 数据校验
|
* @param declares
|
* @param user
|
* @param querydc
|
* @param history
|
*/
|
public void confirmServiceJudge(Declares declares,LoginUserInfo user,Declares querydc, DeclareHistory history ){
|
|
if(Objects.isNull(querydc)){
|
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), ResponseStatus.DATA_EMPTY.getMessage());
|
}
|
if(Constants.equalsInteger(declares.getStatus(),Constants.DeclareStatus.SO_BACK.getKey())){
|
if(StringUtils.isEmpty(declares.getRemark())){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), ResponseStatus.BAD_REQUEST.getMessage());
|
}
|
}
|
|
if (!Constants.equalsInteger(querydc.getStatus(), Constants.DeclareStatus.WAIT_SO_COMFIRM.getKey())) {
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "流程已中转,无法确认/拒绝服务");
|
}
|
if (!(Constants.formatIntegerNum(user.getType()) == UserType.SO_ADMIN.getKey()
|
|| Constants.formatIntegerNum(user.getType()) == UserType.SO_CHILD.getKey()
|
) ){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "无权限操作");
|
}
|
|
if(!(Constants.equalsInteger(querydc.getSoId(),user.getCompanyId())
|
||Constants.equalsInteger(querydc.getSoUserId(),user.getId()))){
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,非权限内数据,不能进行当前操作!");
|
}
|
|
// if(!Constants.equalsInteger(querydc.getSodType(),Constants.ZERO)){
|
// throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"未开启双选,禁止操作!");
|
// }
|
|
|
String hisContent="";
|
if (Constants.equalsInteger(declares.getStatus(), Constants.DeclareStatus.SELECTED_SO.getKey())) {
|
history.setStatus(Constants.DeclareStatus.SELECTED_SO.getKey());
|
history.setType(ProjectRecord.SO_PASS.getKey());
|
history.setRemark(declares.getRemark());
|
hisContent= ProjectRecord.SO_PASS.getNoteinfo();
|
} else {
|
//拒绝服务原因checkinfo
|
if (StringUtils.isBlank(declares.getRemark())) {
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "请填写拒绝原因");
|
}
|
history.setStatus(Constants.DeclareStatus.SO_BACK.getKey());
|
history.setType(ProjectRecord.SO_BACK.getKey());
|
history.setRemark(declares.getRemark());
|
hisContent= ProjectRecord.SO_BACK.getNoteinfo();
|
}
|
|
history.setCheckInfo(hisContent.replace("${param2}", UserType.getName(user.getType()))
|
.replace("${param3}", StringUtils.defaultString(user.getUsername(), ""))
|
.replace("${param4}", Constants.DeclareStatus.getNoteinfo(history.getStatus())));
|
|
history.setCheckor(user.getId());
|
history.setCheckDate(new Date());
|
|
}
|
|
public void saveDeclareHistory(DeclareHistory declareHistory){
|
//审核记录表
|
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
declareHistory.setCreateDate(new Date());
|
declareHistory.setCreator(user.getId());
|
declareHistory.setIsdeleted(Constants.ZERO);
|
declareHistory.setCheckInfo(declareHistory.getCheckInfo());
|
declareHistory.setDeclareId(declareHistory.getId());
|
declareHistory.setCheckDate(new Date());
|
declareHistory.setCheckor(user.getId());
|
declareHistory.setType(declareHistory.getStatus());
|
declareHistory.setStatus(declareHistory.getStatus());
|
declareHistoryMapper.insert(declareHistory);
|
}
|
|
|
|
|
@Override
|
public List<Declares> exportExcel(PageWrap<Declares> pageWrap) {
|
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
|
Declares declares = pageWrap.getModel();
|
MPJLambdaWrapper<Declares> queryWrapper = new MPJLambdaWrapper<>();
|
Utils.MP.blankToNull(pageWrap.getModel());
|
if (Constants.formatIntegerNum(user.getType()) == UserType.AREA.getKey()) {
|
//县区角色 查看企业用户,除保存之外的所有数据
|
queryWrapper.eq(user.getAreaId() != null, Company::getAreaId, user.getAreaId())
|
.eq(Company::getType, Constants.CompanyType.BUSINESS_COMPANYTYPE.getValue());
|
|
} else if (Constants.formatIntegerNum(user.getType()) == UserType.SJ.getKey()) {
|
//市经信局/ 查看当前市局所有的企业
|
queryWrapper.eq(user.getCityId() != null, Company::getCityId, user.getCityId());
|
|
} else if (Constants.formatIntegerNum(user.getType()) == UserType.SD_ADMIN.getKey()) {
|
//综合服务单位 查看当前所有的企业
|
queryWrapper.eq(user.getCityId() != null, Company::getCityId, user.getCityId());
|
} else if (Constants.formatIntegerNum(user.getType()) == UserType.SD_CHILD.getKey()) {
|
//综合服务单位子账号
|
queryWrapper.eq(user.getCityId() != null, Company::getCityId, user.getCityId());
|
queryWrapper.eq(Declares::getSdUserId, user.getId());//查询子账号的数据
|
}else if(Constants.formatIntegerNum(user.getType()) == UserType.EXPERT.getKey()){
|
//专家
|
queryWrapper.exists("select de.id from declare_expert de where de.isdeleted=0 and de.expert_id="+user.getId()+" and t.id=de.declare_id"+(declares.getExpertStatus()!=null?" and de.status="+ declares.getExpertStatus():""));
|
}else if(Constants.formatIntegerNum(user.getType()) == UserType.SO_ADMIN.getKey()){
|
//服务机构管理员 人员
|
queryWrapper.eq(Declares::getSoId, user.getCompanyId());
|
}else if(Constants.formatIntegerNum(user.getType()) == UserType.SO_CHILD.getKey()){
|
//服务机构管子管理 人员
|
queryWrapper.eq(Declares::getSoUserId, user.getId());//查询子账号的数据
|
}
|
queryWrapper.selectAll(Declares.class);
|
queryWrapper.selectAs(Company::getName,Declares::getCompanyName);
|
queryWrapper.selectAs(Company::getAreaId,Declares::getAreaId);
|
queryWrapper.selectAs(Company::getCityId,Declares::getCityId);
|
queryWrapper.selectAs(Company::getCreditCode,Declares::getCreditCode);
|
queryWrapper.selectAs(Project::getName,Declares::getProjectName);
|
queryWrapper.selectAs(Project::getSodType,Declares::getSodType);
|
queryWrapper.selectAs(Project::getEdType,Declares::getEdType);
|
queryWrapper.selectAs(Project::getAreaCheck,Declares::getAreaCheck);
|
queryWrapper.selectAs(DeclareAnswer::getScore,Declares::getDAScore);
|
queryWrapper.select("(select ps.PRICE from project_so ps where ps.PROJECT_ID = t.project_id and ps.isdeleted=0 and ps.COMPANY_ID=t.SO_ID limit 1) as servicePrice");
|
queryWrapper.select("(select ps.score from declare_expert ps where ps.declare_id = t.id and ps.isdeleted=0 limit 1) as expertScore");
|
queryWrapper.select("s.REALNAME as realName,s2.REALNAME as realServiceName");
|
queryWrapper.selectAs(Company::getAreaId,Declares::getAreaId);
|
queryWrapper.selectAs(Labels::getName,Declares::getIndusrtyName);
|
queryWrapper.leftJoin(Company.class,Company::getId,Declares::getCompanyId);//查询企业名称
|
queryWrapper.leftJoin(Labels.class,Labels::getId,Company::getIndustryId);//查询企业名称
|
queryWrapper.leftJoin(Project.class,Project::getId,Declares::getProjectId);//查询项目信息
|
queryWrapper.leftJoin(DeclareAnswer.class,DeclareAnswer::getId,Declares::getAnswerId);//查询项目信息
|
queryWrapper.leftJoin("company so on so.id=t.so_id");
|
queryWrapper.select("so.name as serviceName");
|
queryWrapper.leftJoin("system_user s on s.id = t.SD_USER_ID and s.DELETED=0");//查询分配单位子账号
|
queryWrapper.leftJoin("system_user s2 on s2.id = t.SO_USER_ID and s2.DELETED=0");//查询服务机构子账号
|
queryWrapper.eq(Objects.nonNull(declares.getProjectId()),Declares::getProjectId, declares.getProjectId()).eq(Declares::getIsdeleted, Constants.ZERO);
|
queryWrapper.notIn(Declares::getStatus, Arrays.asList(Constants.DeclareStatus.EDITING.getKey()));
|
queryWrapper.eq(Declares::getIsdeleted, Constants.ZERO);
|
|
queryWrapper.like(StringUtils.isNotBlank(declares.getProjectName()), Project::getName, declares.getProjectName());
|
queryWrapper.like(StringUtils.isNotBlank(declares.getCompanyName()), Company::getName, declares.getCompanyName());
|
queryWrapper.eq(declares.getStatus() != null, Declares::getStatus, declares.getStatus());
|
queryWrapper.eq(declares.getSoId() != null, Declares::getSoId, declares.getSoId());
|
queryWrapper.eq(declares.getCityId() != null, "so.CITY_ID", declares.getCityId());
|
queryWrapper.eq(declares.getAreaId() != null, "so.AREA_ID", declares.getAreaId());
|
queryWrapper.orderByDesc(Declares::getCreateDate);
|
|
List<Declares> result = declaresJoinMapper.selectJoinList( Declares.class, queryWrapper);
|
|
if(result!=null && result.size() > 0){
|
for(int i=0;i<result.size();i++){
|
Declares ds=result.get(i);
|
pageWrap.getModel().setProjectName(ds.getProjectName());
|
// 查询服务价格
|
queryScoreRatio(ds);
|
if(ds.getAreaId() != null){
|
Areas area = areasService.findById(ds.getAreaId(),Constants.TWO);
|
if(area!=null){
|
ds.setAreaName(area.getCityName() + area.getName());
|
ds.setCityName(area.getCityName() + area.getName());
|
}
|
}else if(ds.getCityId() != null){
|
Areas area = areasService.findById(ds.getCityId(),Constants.ONE);
|
if(area!=null){
|
ds.setCityName(area.getName());
|
}
|
}
|
|
//查询经济指标
|
queryeconomy(ds);
|
}
|
}
|
return result;
|
}
|
|
public void queryeconomy(Declares ds){
|
CompanyEconomics ce=new CompanyEconomics();
|
ce.setIsdeleted(Constants.ZERO);
|
ce.setCompanyId(ds.getCompanyId());
|
Calendar cal = Calendar.getInstance();
|
Integer year = cal.get(Calendar.YEAR)-1;
|
ce.setYears(year);
|
CompanyEconomics result= companyEconomicsService.findOne(ce);
|
if(Objects.nonNull(result)){
|
ds.setIncome(result.getIncome());
|
ds.setAssets(result.getAssets());
|
ds.setRatio(result.getRatio());
|
ds.setDevelop(result.getDevelop());
|
ds.setProfit(result.getProfit());
|
ds.setTaxes(result.getTaxes());
|
ds.setEmployee(result.getEmployee());
|
}
|
|
//查询专家姓名和评分
|
DeclareExpert declareExpert=new DeclareExpert();
|
declareExpert.setDeclareId(ds.getId());
|
DeclareExpert resultde= declareExpertMapper.selectOne(new QueryWrapper<>(declareExpert)
|
.select("* ,(select s.REALNAME from system_user s where s.id = declare_expert.EXPERT_ID and s.DELETED=0) as realZJName ")
|
.eq("ISDELETED",0)
|
.last("limit 1")
|
);
|
if(Objects.nonNull(resultde)){
|
ds.setRealZJName(resultde.getRealZJName());//专家姓名
|
ds.setExpertScore(resultde.getScore());
|
}
|
}
|
|
@Override
|
public PageData<ServiceCompanyStatisticsVO> findServiceCompanyStatisticsVOPage(PageWrap pageWrap) {
|
|
IPage page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
|
QueryWrapper<Declares> wrapper = new QueryWrapper<>();
|
wrapper.select("SO_ID as soId," +
|
"(select NAME from company where company.id=declares.SO_ID) as companyName," +
|
"count(id) as companyNum," +
|
"sum(IF(STATUS = 7, 1, 0)) as hasDiagnosisNum," +
|
"sum(IF(STATUS > 7, 1, 0)) as finishNum ")
|
.lambda()
|
.isNotNull(Declares::getSoId)
|
.ge(Declares::getStatus,7)
|
.groupBy(Declares::getSoId);
|
|
IPage iPage = declaresMapper.selectMapsPage(page, wrapper);
|
|
List<Integer> soId1 = (List<Integer>) iPage.getRecords().stream()
|
.map(s -> MapUtils.getInteger((Map<String, Object>) s, "soId"))
|
.collect(Collectors.toList());
|
iPage.getRecords().forEach(s->{
|
Map<String,Object> map = (Map<String, Object>) s;
|
Integer soId = MapUtils.getInteger(map, "soId");
|
ServiceCompanyStatisticsVO vo = new ServiceCompanyStatisticsVO();
|
vo.setCompanyNum(MapUtils.getInteger(map, "companyNum"));
|
vo.setCompanyName(MapUtils.getInteger(map, "companyName"));
|
vo.setSoId(MapUtils.getInteger(map, "soId"));
|
vo.setHasDiagnosisNum(MapUtils.getInteger(map, "hasDiagnosisNum"));
|
vo.setFinishNum(MapUtils.getInteger(map, "finishNum"));
|
BigDecimal divide = new BigDecimal(MapUtils.getInteger(map, "finishNum"))
|
.divide(new BigDecimal(MapUtils.getInteger(map, "companyNum")), 2, RoundingMode.HALF_UP);
|
vo.setFinishRate(divide);
|
|
MPJLambdaWrapper<DeclareService> declareServiceQuery = new MPJLambdaWrapper<>();
|
declareServiceQuery.select("DECLARE_ID,count(id) as num");
|
declareServiceQuery
|
.leftJoin(DeclareService.class,DeclareService::getDeclareId,Declares::getId)
|
.eq(Declares::getSoId,soId)
|
.eq(DeclareService::getIsdeleted,Constants.ZERO)
|
.ne(DeclareService::getStatus,Constants.ZERO)
|
.groupBy(DeclareService::getDeclareId);
|
List<Map<String, Object>> maps =
|
declareServiceMapper.selectMaps(declareServiceQuery);
|
Map<Integer, Long> num = maps.stream()
|
.map(m -> MapUtils.getInteger(m, "num"))
|
.collect(Collectors.groupingBy(m -> m, Collectors.counting()));
|
List<ServiceCompanyStatisticsVO.DiagnosisNum> collect1 = num.entrySet().stream().map(m -> {
|
ServiceCompanyStatisticsVO.DiagnosisNum diagnosisNum = new ServiceCompanyStatisticsVO.DiagnosisNum();
|
diagnosisNum.setTitle(m.getKey().toString());
|
diagnosisNum.setNum(m.getValue().intValue());
|
return diagnosisNum;
|
}).collect(Collectors.toList());
|
vo.setDiagnosisNumList(collect1);
|
// vo.setDiagnosisTotalMany();
|
|
// vo.setDiagnosisReportNumList();
|
});
|
return null;
|
}
|
}
|