@ -24,6 +24,7 @@ import com.elink.esua.epdc.commons.mybatis.service.impl.BaseServiceImpl;
import com.elink.esua.epdc.commons.tools.constant.FieldConstant ;
import com.elink.esua.epdc.commons.tools.constant.NumConstant ;
import com.elink.esua.epdc.commons.tools.constant.OrganizationTypeConstant ;
import com.elink.esua.epdc.commons.tools.convert.DateConverter ;
import com.elink.esua.epdc.commons.tools.enums.InterfaceLogBusinessTypeEnum ;
import com.elink.esua.epdc.commons.tools.enums.YesOrNoEnum ;
import com.elink.esua.epdc.commons.tools.exception.RenException ;
@ -44,15 +45,20 @@ import com.elink.esua.epdc.constant.*;
import com.elink.esua.epdc.constants.MenuCodeConstant ;
import com.elink.esua.epdc.dto.* ;
import com.elink.esua.epdc.dto.epdc.form.EpdcInformationFormDTO ;
import com.elink.esua.epdc.dto.events.BatchHandleImagesDTO ;
import com.elink.esua.epdc.dto.events.EpdcEventsCommentsDTO ;
import com.elink.esua.epdc.dto.events.EventRelationshipIdDTO ;
import com.elink.esua.epdc.dto.events.form.GroupFormDTO ;
import com.elink.esua.epdc.dto.events.result.EventAppDetailResultDTO ;
import com.elink.esua.epdc.dto.form.SmsNoticeFormDTO ;
import com.elink.esua.epdc.dto.issue.result.EditProgressResultDTO ;
import com.elink.esua.epdc.dto.issue.result.IssueProgressResultDTO ;
import com.elink.esua.epdc.dto.item.* ;
import com.elink.esua.epdc.dto.item.form.* ;
import com.elink.esua.epdc.dto.item.result.* ;
import com.elink.esua.epdc.enums.ItemGridPlatformHandleStatusEnum ;
import com.elink.esua.epdc.enums.ItemHandleCategoryEnum ;
import com.elink.esua.epdc.constant.ProcessProgressConstant ;
import com.elink.esua.epdc.gird.shibei.api.ShiBeiCityGridApi ;
import com.elink.esua.epdc.gird.shibei.constant.CommonConstants ;
import com.elink.esua.epdc.gird.shibei.contants.ApiConstants ;
@ -66,6 +72,7 @@ import com.elink.esua.epdc.gird.shibei.util.XstreamUtil;
import com.elink.esua.epdc.modules.async.IssueOverseeResultsTask ;
import com.elink.esua.epdc.modules.async.NewsTask ;
import com.elink.esua.epdc.modules.events.dao.ImgDao ;
import com.elink.esua.epdc.modules.events.entity.EpdcEventsEntity ;
import com.elink.esua.epdc.modules.events.entity.ImgEntity ;
import com.elink.esua.epdc.modules.events.service.EpdcEventsService ;
import com.elink.esua.epdc.modules.events.service.ImgService ;
@ -74,6 +81,9 @@ import com.elink.esua.epdc.modules.feign.ContentSecurityFeignClient;
import com.elink.esua.epdc.modules.feign.UserFeignClient ;
import com.elink.esua.epdc.modules.interfacelog.entity.InterfaceLogEntity ;
import com.elink.esua.epdc.modules.interfacelog.service.InterfaceLogService ;
import com.elink.esua.epdc.modules.issue.entity.IssueEntity ;
import com.elink.esua.epdc.modules.issue.entity.IssueHandleEntity ;
import com.elink.esua.epdc.modules.issue.service.IssueHandleService ;
import com.elink.esua.epdc.modules.issue.service.IssueService ;
import com.elink.esua.epdc.modules.item.dao.GridPlatformHandleLogDao ;
import com.elink.esua.epdc.modules.item.dao.ItemDao ;
@ -168,6 +178,9 @@ public class ItemServiceImpl extends BaseServiceImpl<ItemDao, ItemEntity> implem
@Autowired
private ContentSecurityFeignClient contentSecurityFeign ;
@Autowired
private IssueHandleService issueHandleService ;
@Override
public PageData < ItemDTO > page ( Map < String , Object > params ) {
IPage < ItemEntity > page = baseDao . selectPage (
@ -1592,4 +1605,208 @@ public class ItemServiceImpl extends BaseServiceImpl<ItemDao, ItemEntity> implem
return new Result ( ) ;
}
@Override
public List < EditProgressResultDTO > getProcessProgress ( String id ) {
// 获取项目基本信息
ItemEntity entity = this . selectById ( id ) ;
// 获取项目处理进度
List < EditProgressResultDTO > result = baseDao . selectListOfEditItemHandleProgressByWork ( id ) ;
// 项目处理表中第一条数据(创建时间,升序),为 议题转项目
this . firstDataHandleType ( result , ProcessProgressConstant . ISSUE_PROJECT ) ;
// 获取项目评价满意度
if ( null ! = entity . getEvaluationTime ( ) ) {
EditProgressResultDTO itemEvaluation = this . packageItemEvaluation ( entity ) ;
// PC 前端,el-rate 组件,是从1开始计数。所以这里 +1 方便显示。
itemEvaluation . setEvaluationScore ( itemEvaluation . getEvaluationScore ( ) + NumConstant . ONE ) ;
result . add ( itemEvaluation ) ;
result . sort ( Comparator . comparing ( EditProgressResultDTO : : getCreatedTime ) . reversed ( ) ) ;
}
// 获取议题处理进度
List < EditProgressResultDTO > issueList = issueService . listEditIssueProgress ( entity . getIssueId ( ) ) ;
// 议题处理表中第一条数据(创建时间,升序),为 事件审核通过,即转议题
this . firstDataHandleType ( issueList , ProcessProgressConstant . EVENT_ISSUE ) ;
result . addAll ( issueList ) ;
// 事件信息
EditProgressResultDTO eventInfo = this . packageEventInfo ( entity . getEventId ( ) ) ;
result . add ( eventInfo ) ;
return result ;
}
private EditProgressResultDTO packageItemEvaluation ( ItemEntity entity ) {
EditProgressResultDTO result = new EditProgressResultDTO ( ) ;
result . setHandleType ( ProcessProgressConstant . PROJECT_EVALUATION ) ;
result . setCreatedTime ( entity . getEvaluationTime ( ) ) ;
result . setAdvice ( entity . getEvaluationContent ( ) ) ;
result . setEvaluationScore ( entity . getEvaluationScore ( ) ) ;
result . setState ( entity . getItemState ( ) ) ;
return result ;
}
private void firstDataHandleType ( List < EditProgressResultDTO > list , String typeName ) {
for ( int i = NumConstant . ZERO ; i < list . size ( ) ; i + + ) {
if ( i = = list . size ( ) - NumConstant . ONE ) {
list . get ( i ) . setHandleType ( typeName ) ;
}
}
}
/ * *
* 组装事件信息
*
* @param eventId
* @return com . elink . esua . epdc . dto . issue . result . EditProgressResultDTO
* @Author zhangyong
* @Date 17 : 09 2022 - 01 - 10
* * /
private EditProgressResultDTO packageEventInfo ( String eventId ) {
EditProgressResultDTO result = new EditProgressResultDTO ( ) ;
Result < EventAppDetailResultDTO > event = issueService . getEventDetail ( eventId ) ;
DateConverter converter = new DateConverter ( ) ;
result . setCreatedTime ( converter . parseDate ( event . getData ( ) . getDistributeTime ( ) , DateUtils . DATE_TIME_PATTERN ) ) ;
result . setAdvice ( event . getData ( ) . getAdvice ( ) ) ;
result . setEventContent ( event . getData ( ) . getContent ( ) ) ;
result . setHandleType ( ProcessProgressConstant . EVENT ) ;
result . setEventId ( eventId ) ;
return result ;
}
/ * *
* 组装要新增的图片信息
*
* @param referenceId , imgType , images
* @return com . elink . esua . epdc . dto . events . BatchHandleImagesDTO
* @Author zhangyong
* @Date 15 : 41 2022 - 01 - 12
* * /
private BatchHandleImagesDTO packageImagesInfo ( String referenceId , String imgType , List < ImagesDTO > images ) {
BatchHandleImagesDTO result = new BatchHandleImagesDTO ( ) ;
result . setReferenceId ( referenceId ) ;
result . setImgType ( imgType ) ;
List < String > urls = new ArrayList < > ( ) ;
for ( ImagesDTO image : images ) {
urls . add ( image . getUrl ( ) ) ;
}
result . setImages ( urls ) ;
return result ;
}
@Override
@Transactional ( rollbackFor = Exception . class )
public Result editProcessProgressList ( List < EditProgressResultDTO > formDto ) {
if ( null = = formDto | | NumConstant . ZERO = = formDto . size ( ) ) {
return new Result ( ) ;
}
EditProgressResultDTO projectEvaluation = null ;
List < ItemHandleProcessEntity > itemHandleProcessEntities = new ArrayList < > ( ) ;
List < IssueHandleEntity > issueHandleEntities = new ArrayList < > ( ) ;
EpdcEventsEntity eventEntity = new EpdcEventsEntity ( ) ;
// 图片批量处理
List < BatchHandleImagesDTO > batchHandleImages = new ArrayList < > ( ) ;
List < ItemDeptEntity > itemDeptEntities = new ArrayList < > ( ) ;
Date issueToProjectTime = null ;
Date eventToIssueTime = null ;
Date distributeTime = null ;
String eventId = "" ;
for ( EditProgressResultDTO dto : formDto ) {
// 0、如果是 项目满意度评价,需要修改 epdc_item 表中评价相关字段
if ( ProcessProgressConstant . PROJECT_EVALUATION . equals ( dto . getHandleType ( ) ) ) {
projectEvaluation = dto ;
} else if ( ProcessProgressConstant . PROJECT . equals ( dto . getHandleType ( ) ) | | ProcessProgressConstant . ISSUE_PROJECT . equals ( dto . getHandleType ( ) ) ) {
// 1、组装 项目处理进展表 信息
ItemHandleProcessEntity entity = new ItemHandleProcessEntity ( ) ;
entity . setCreatedTime ( dto . getCreatedTime ( ) ) ;
entity . setHandleAdvice ( dto . getAdvice ( ) ) ;
entity . setOutHandleAdvice ( dto . getOutAdvice ( ) ) ;
entity . setId ( dto . getId ( ) ) ;
itemHandleProcessEntities . add ( entity ) ;
if ( ProcessProgressConstant . ISSUE_PROJECT . equals ( dto . getHandleType ( ) ) ) {
issueToProjectTime = dto . getCreatedTime ( ) ;
}
// 组装 项目图片 信息
batchHandleImages . add ( this . packageImagesInfo ( dto . getId ( ) , ImageConstant . TYPE_IMAGE_ITEM_HANDLE , dto . getImages ( ) ) ) ;
batchHandleImages . add ( this . packageImagesInfo ( dto . getId ( ) , ImageConstant . TYPE_IMAGE_ITEM_OUT_HANDLE , dto . getOutImages ( ) ) ) ;
// 如果是吹哨,还要处理 项目部门关系表
if ( NumConstant . ZERO = = dto . getState ( ) & & null ! = dto . getItemDeptDTOS ( ) & & dto . getItemDeptDTOS ( ) . size ( ) > NumConstant . ZERO ) {
ItemDeptEntity itemDeptEntity = new ItemDeptEntity ( ) ;
itemDeptEntity . setId ( dto . getItemDeptDTOS ( ) . get ( NumConstant . ZERO ) . getId ( ) ) ;
itemDeptEntity . setCreatedTime ( dto . getCreatedTime ( ) ) ;
itemDeptEntities . add ( ( itemDeptEntity ) ) ;
}
} else if ( ProcessProgressConstant . ISSUE . equals ( dto . getHandleType ( ) ) | | ProcessProgressConstant . EVENT_ISSUE . equals ( dto . getHandleType ( ) ) ) {
// 2、组装 议题处理进展 信息
IssueHandleEntity entity = new IssueHandleEntity ( ) ;
entity . setCreatedTime ( dto . getCreatedTime ( ) ) ;
entity . setAdvice ( dto . getAdvice ( ) ) ;
entity . setId ( dto . getId ( ) ) ;
issueHandleEntities . add ( entity ) ;
if ( ProcessProgressConstant . EVENT_ISSUE . equals ( dto . getHandleType ( ) ) ) {
eventToIssueTime = dto . getCreatedTime ( ) ;
}
// 组装 议题图片 信息
batchHandleImages . add ( this . packageImagesInfo ( dto . getId ( ) , ImageConstant . TYPE_IMAGE_BIZ_ISSUE_HANDLE , dto . getImages ( ) ) ) ;
} else if ( ProcessProgressConstant . EVENT . equals ( dto . getHandleType ( ) ) ) {
// 3、组装 事件表 信息
eventEntity . setCreatedTime ( dto . getCreatedTime ( ) ) ;
eventEntity . setAdvice ( dto . getAdvice ( ) ) ;
eventEntity . setId ( dto . getEventId ( ) ) ;
distributeTime = dto . getCreatedTime ( ) ;
eventId = dto . getEventId ( ) ;
}
}
EventRelationshipIdDTO relationshipId = epdcEventsService . getEventRelationshipId ( eventId ) ;
if ( null = = issueToProjectTime | | null = = eventToIssueTime | | null = = distributeTime ) {
return new Result ( ) . error ( "编辑失败,请联系管理员!" ) ;
}
// 4、处理图片
imgService . modifyBatchImagesByReferenceIdAndImgType ( batchHandleImages ) ;
for ( BatchHandleImagesDTO insertImage : batchHandleImages ) {
imgService . saveImages ( insertImage . getImages ( ) , insertImage . getReferenceId ( ) , insertImage . getImgType ( ) ) ;
}
// 5、处理项目相关表
itemHandleProcessService . updateBatchById ( itemHandleProcessEntities ) ;
if ( NumConstant . ZERO < itemDeptEntities . size ( ) ) {
itemDeptService . updateBatchById ( itemDeptEntities ) ;
}
ItemEntity itemEntity = new ItemEntity ( ) ;
itemEntity . setCreatedTime ( issueToProjectTime ) ;
itemEntity . setLastHandleTime ( formDto . get ( NumConstant . ZERO ) . getCreatedTime ( ) ) ;
itemEntity . setDistributeTime ( distributeTime ) ;
itemEntity . setId ( relationshipId . getItemId ( ) ) ;
if ( null ! = projectEvaluation ) {
if ( NumConstant . TEN = = formDto . get ( NumConstant . ZERO ) . getState ( ) ) {
// 如果最后一条记录项目状态为 已结案 且 存在满意度评价,则说明最后一条记录为 满意度评价
// 此时最后一次处理时间为 取第二条记录
itemEntity . setLastHandleTime ( formDto . get ( NumConstant . ONE ) . getCreatedTime ( ) ) ;
}
itemEntity . setEvaluationContent ( projectEvaluation . getAdvice ( ) ) ;
itemEntity . setEvaluationTime ( projectEvaluation . getCreatedTime ( ) ) ;
// 为了方便 PC 前端,el-rate 组件显示。所以返回 EvaluationScore 时,在原有基础上 +1 了,此时存入数据库需要 -1。
itemEntity . setEvaluationScore ( projectEvaluation . getEvaluationScore ( ) - NumConstant . ONE ) ;
}
baseDao . updateById ( itemEntity ) ;
// 6、处理议题相关表
issueHandleService . updateBatchById ( issueHandleEntities ) ;
IssueEntity issueEntity = new IssueEntity ( ) ;
issueEntity . setCreatedTime ( eventToIssueTime ) ;
issueEntity . setDistributeTime ( distributeTime ) ;
issueEntity . setId ( relationshipId . getIssueId ( ) ) ;
issueService . updateById ( issueEntity ) ;
// 7、处理事件表
epdcEventsService . updateById ( eventEntity ) ;
return new Result ( ) ;
}
}