ycl-platform/src/main/java/com/ycl/bo/casePool/CurrentSitVo.java
New file @@ -0,0 +1,34 @@ package com.ycl.bo.casePool; import com.ycl.entity.caseHandler.ArrivalSituation; import com.ycl.entity.caseHandler.Investigation; import com.ycl.entity.caseHandler.Writ; import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** * <p> * 现场情况 类 * </p> * * @author mg * @since 2022-09-29 */ @Data public class CurrentSitVo { /** * 到达现场情况 */ @ApiModelProperty(value = "到达现场情况",dataType = "ArrivalSituation") private ArrivalSituation arrivalSituation; /** * 调查取证 */ @ApiModelProperty(value = "调查取证",dataType = "Investigation") private Investigation investigation; /** * 告知违法 */ @ApiModelProperty(value = "告知违法",dataType = "Writ") private Writ writ; } ycl-platform/src/main/java/com/ycl/bo/casePool/FilesPictureVo.java
New file @@ -0,0 +1,12 @@ package com.ycl.bo.casePool; /** * <p> * 案卷图片 类 * </p> * * @author mg * @since 2022-09-29 */ public class FilesPictureVo { } ycl-platform/src/main/java/com/ycl/bo/casePool/HandlePassVo.java
New file @@ -0,0 +1,25 @@ package com.ycl.bo.casePool; import com.ycl.entity.caseHandler.WorkflowConfigStep; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; /** * <p> * 办理经过类 * </p> * * @author mg * @since 2022-09-29 */ @Data public class HandlePassVo { /** * 流程环节列表 */ @ApiModelProperty(value = "流程环节列表",dataType = "ArrivalSituation") private List<WorkflowConfigStep> workflowConfigSteps; } ycl-platform/src/main/java/com/ycl/bo/casePool/ProblemProVo.java
New file @@ -0,0 +1,24 @@ package com.ycl.bo.casePool; import com.ycl.entity.caseHandler.WorkflowConfigStep; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; /** * <p> * 问题处理 类 * </p> * * @author mg * @since 2022-09-29 */ @Data public class ProblemProVo { /** * 流程环节列表 */ @ApiModelProperty(value = "流程环节列表",dataType = "ArrivalSituation") private List<WorkflowConfigStep> workflowConfigSteps; } ycl-platform/src/main/java/com/ycl/controller/caseHandler/BaseCaseController.java
@@ -172,4 +172,23 @@ baseCaseService.save(baseCase); return CommonResult.success(baseCaseService.saveIllegalBuildingCase(illegalBuildingParam, baseCase.getId())); } @ApiOperation(value = "案件详情") @GetMapping("/baseCaseDetail/{code}") @ApiImplicitParams({ @ApiImplicitParam(name = "code", value = "事件编号") }) public CommonResult baseCaseDetail(@PathVariable(value = "code") String code) { return CommonResult.success(baseCaseService.baseCaseDetail(code)); } @ApiOperation("人工路径案件图片展示") @GetMapping("/hand_work_case_images") @ApiImplicitParams({ @ApiImplicitParam(name = "type", value = "01 违规,02 违建", dataType = "Integer") }) public CommonResult queryCaseImages(@RequestParam Integer id,@RequestParam Integer type){ return CommonResult.success(baseCaseService.listCaseImages(id,type)); } } ycl-platform/src/main/java/com/ycl/dto/caseHandler/DispatchInfoParam.java
@@ -1,6 +1,7 @@ package com.ycl.dto.caseHandler; import com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** @@ -16,41 +17,49 @@ * 执法人员 */ @JsonProperty("lawEnforcer") @ApiModelProperty(value = "执法人员",dataType = "Integer") private Integer lawEnforcer; /** * 执法人员姓名 */ @JsonProperty("lawEnforcerName") @ApiModelProperty(value = "执法人员姓名",dataType = "String") private String lawEnforcerName; /** * 执法车 */ @JsonProperty("enforcementCar") @ApiModelProperty(value = "执法车",dataType = "Integer") private Integer enforcementCar; /** * 执法队伍 */ @JsonProperty("enforcementTeam") @ApiModelProperty(value = "执法队伍",dataType = "String") private String enforcementTeam; /** * 联系方式 */ @JsonProperty("contactWay") @ApiModelProperty(value = "联系方式",dataType = "String") private String contactWay; /** * 距离 */ @JsonProperty("distance") @ApiModelProperty(value = "距离",dataType = "Integer") private Integer distance; /** * 处置日期 */ @JsonProperty("disposeDate") @ApiModelProperty(value = "处置日期",dataType = "String") private String disposeDate; /** * 派遣意见 */ @JsonProperty("dispatchOpinion") @ApiModelProperty(value = "派遣意见",dataType = "String") private String dispatchOpinion; } ycl-platform/src/main/java/com/ycl/dto/casePool/IllegalBuildingParam.java
@@ -11,14 +11,14 @@ /** * 问题类别(1-违规 2-违建) */ @ApiModelProperty(value = "问题类别(1-违规 2-违建", dataType = "Integer") @ApiModelProperty(value = "问题类别(1-违规 2-违建") @NotNull(message = "不允许问题类型为空") private Integer category; /** * 违建类别 */ @ApiModelProperty(value = "违建类别", dataType = "Integer") @ApiModelProperty(value = "违建类别") @NotBlank(message = "不允许违建类别为空") private Integer categoryId; @@ -26,7 +26,7 @@ /** * 所属社区 */ @ApiModelProperty(value = "所属社区", dataType = "Integer") @ApiModelProperty(value = "所属社区") @NotBlank(message = "不允许所属社区为空") private Integer communityId; @@ -35,84 +35,84 @@ /** * 报警点位 事发地点 */ @ApiModelProperty(value = "事发地点", dataType = "String") @ApiModelProperty(value = "事发地点") @NotBlank(message = "不允许事发地点为空") private String site; /** * 当事人姓名 */ @ApiModelProperty(value = "当事人姓名", dataType = "String") @ApiModelProperty(value = "当事人姓名") @NotBlank(message = "不允许当事人姓名为空") private String partyName; /** * 当事人身份证号码 */ @ApiModelProperty(value = "当事人身份证号码", dataType = "String") @ApiModelProperty(value = "当事人身份证号码") @NotBlank(message = "不允许当事人身份证号码为空") private String partyIdCard; /** * 当事人联系电话 */ @ApiModelProperty(value = "事发地点", dataType = "String") @ApiModelProperty(value = "事发地点") @NotBlank(message = "不允许事发地点为空") private String partyPhone; /** * 身份证正面 */ @ApiModelProperty(value = "身份证正面", dataType = "String") @ApiModelProperty(value = "身份证正面") @NotBlank(message = "不允许身份证正面为空") private String positive; /** * 身份证反面 */ @ApiModelProperty(value = "身份证反面", dataType = "String") @ApiModelProperty(value = "身份证反面") @NotBlank(message = "不允许身份证反面为空") private String negative; /** * 违建具体位置 */ @ApiModelProperty(value = "违建具体位置", dataType = "String") @ApiModelProperty(value = "违建具体位置") @NotBlank(message = "不允许违建具体位置为空") private String position; /** * 违建长 */ @ApiModelProperty(value = "违建长", dataType = "String") @ApiModelProperty(value = "违建长") @NotBlank(message = "不允许违建长为空") private Float buildingLength; /** * 违建宽 */ @ApiModelProperty(value = "违建宽", dataType = "String") @ApiModelProperty(value = "违建宽") @NotBlank(message = "不允许违建宽为空") private Float buildingWidth; /** * 违建高 */ @ApiModelProperty(value = "违建高", dataType = "String") @ApiModelProperty(value = "违建高") @NotBlank(message = "不允许违建高为空") private Float buildingHigh; /** * 违建面积 */ @ApiModelProperty(value = "违建面积", dataType = "String") @ApiModelProperty(value = "违建面积") @NotBlank(message = "不允许违建面积为空") private Float buildingArea; /** * 违建材料 */ @ApiModelProperty(value = "违建材料", dataType = "String") @ApiModelProperty(value = "违建材料") @NotBlank(message = "不允许违建材料为空") private String materials; } ycl-platform/src/main/java/com/ycl/dto/casePool/ViolationParam.java
@@ -11,35 +11,35 @@ /** * 问题类别(1-违规 2-违建) */ @ApiModelProperty(value = "问题类别(1-违规 2-违建", dataType = "Integer") @ApiModelProperty(value = "问题类别(1-违规 2-违建") @NotNull(message = "不允许问题类型为空") private Integer category; /** * 大类 */ @ApiModelProperty(value = "大类", dataType = "Integer") @ApiModelProperty(value = "大类") @NotNull(message = "不允许大类为空") private Integer categoryId; /** * 小类 */ @ApiModelProperty(value = "小类", dataType = "Integer") @ApiModelProperty(value = "小类") @NotNull(message = "不允许小类为空") private Integer typeId; /** * 所属街道 */ @ApiModelProperty(value = "所属街道", dataType = "Integer") @ApiModelProperty(value = "所属街道") @NotNull(message = "不允许所属街道为空") private Integer streetId; /** * 所属社区 */ @ApiModelProperty(value = "所属社区", dataType = "Integer") @ApiModelProperty(value = "所属社区") @NotBlank(message = "不允许所属社区为空") private Integer communityId; @@ -47,7 +47,7 @@ /** * 案由 */ @ApiModelProperty(value = "案由", dataType = "String") @ApiModelProperty(value = "案由") @NotBlank(message = "不允许案由为空") private String actionCause; @@ -55,50 +55,50 @@ /** * 报警点位 事发地点 */ @ApiModelProperty(value = "事发地点", dataType = "String") @ApiModelProperty(value = "事发地点") @NotBlank(message = "不允许事发地点为空") private String site; /** * 是否关联商铺 */ @ApiModelProperty(value = "是否关联商铺", dataType = "Boolean") @ApiModelProperty(value = "是否关联商铺(0否1是)") private Integer linkShop; /** * 关联商铺名称 */ @ApiModelProperty(value = "关联商铺名称", dataType = "String") @ApiModelProperty(value = "关联商铺名称") private String shopName; /** * 车牌号 */ @ApiModelProperty(value = "车牌号", dataType = "String") @ApiModelProperty(value = "车牌号") private String carNumber; /** * 问题描述 */ @ApiModelProperty(value = "问题描述", dataType = "String") @ApiModelProperty(value = "问题描述") @NotBlank(message = "不允许问题描述为空") private String description; /** * 反映人 */ @ApiModelProperty(value = "反映人", dataType = "String") @ApiModelProperty(value = "反映人") private String informant; /** * 反映人联系方式 */ @ApiModelProperty(value = "反映人联系方式", dataType = "String") @ApiModelProperty(value = "反映人联系方式") private String informantPhoneCode; /** * 身份证号码 */ @ApiModelProperty(value = "身份证号码", dataType = "String") @ApiModelProperty(value = "身份证号码") private String informantIdCard; } ycl-platform/src/main/java/com/ycl/entity/caseHandler/BaseCaseDetail.java
New file @@ -0,0 +1,50 @@ package com.ycl.entity.caseHandler; import com.ycl.bo.casePool.CurrentSitVo; import com.ycl.bo.casePool.FilesPictureVo; import com.ycl.bo.casePool.HandlePassVo; import com.ycl.bo.casePool.ProblemProVo; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; /** * <p> * 案件详情类 * </p> * * @author mg * @since 2022-09-29 */ @Data public class BaseCaseDetail implements Serializable { private static final long serialVersionUID = 1L; /** * 案件基本信息 */ @ApiModelProperty(value = "案件基本信息",dataType = "BaseCase") private BaseCase baseCase; /** * 办理经过 */ @ApiModelProperty(value = "办理经过",dataType = "HandlePassVo") private HandlePassVo handlePassVo; /** * 案卷图片 */ @ApiModelProperty(value = "案卷图片",dataType = "FilesPictureVo") private FilesPictureVo filesPictureVo; /** * 问题处理 */ @ApiModelProperty(value = "问题处理",dataType = "ProblemProVo") private ProblemProVo problemProVo; /** * 现场处理 */ @ApiModelProperty(value = "现场处理",dataType = "CurrentSitVo") private CurrentSitVo currentSitVo; } ycl-platform/src/main/java/com/ycl/entity/caseHandler/DispatchInfo.java
@@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import java.io.Serializable; import java.util.Date; /** @@ -20,7 +22,7 @@ @Data @EqualsAndHashCode(callSuper = false) @TableName("ums_dispatch_info") public class DispatchInfo { public class DispatchInfo implements Serializable { private static final long serialVersionUID = 1L; @@ -28,62 +30,74 @@ * id */ @TableId(value = "id", type = IdType.AUTO) @ApiModelProperty(value = "id",dataType = "Integer") private Integer id; /** * 处置流程记录Id */ @TableField("dispose_record_id") @ApiModelProperty(value = "处置流程记录Id",dataType = "Integer") private Integer disposeRecordId; /** * 执法人员 */ @TableField("law_enforcer") @ApiModelProperty(value = "执法人员",dataType = "Integer") private Integer lawEnforcer; /** * 执法人员姓名 */ @TableField("law_enforcer_name") @ApiModelProperty(value = "执法人员姓名",dataType = "String") private String lawEnforcerName; /** * 执法车 */ @TableField("enforcement_car") @ApiModelProperty(value = "执法车",dataType = "Integer") private Integer enforcementCar; /** * 执法队伍 */ @TableField("enforcement_team") @ApiModelProperty(value = "执法队伍",dataType = "String") private String enforcementTeam; /** * 联系方式 */ @TableField("contact_way") @ApiModelProperty(value = "联系方式",dataType = "String") private String contactWay; /** * 距离 */ @TableField("distance") @ApiModelProperty(value = "距离",dataType = "Integer") private Integer distance; /** * 处置日期 */ @TableField("dispose_date") @ApiModelProperty(value = "处置日期",dataType = "Date") private Date disposeDate; /** * 派遣意见 */ @TableField("dispatch_opinion") @ApiModelProperty(value = "派遣意见",dataType = "String") private String dispatchOpinion; /** * 创建人 */ @TableField("create_user") @ApiModelProperty(value = "创建人",dataType = "Integer") private Integer createUser; /** * 创建时间 */ @TableField("create_time") @ApiModelProperty(value = "创建时间",dataType = "Date") private Date createTime; } ycl-platform/src/main/java/com/ycl/entity/caseHandler/DisposeRecord.java
@@ -83,4 +83,16 @@ private LocalDateTime createTime; /** * 结果 */ @TableField("result") private String result; /** * 限制时限 */ @TableField("limit_time") private LocalDateTime limitTime; } ycl-platform/src/main/java/com/ycl/entity/caseHandler/WorkflowConfigStep.java
New file @@ -0,0 +1,59 @@ package com.ycl.entity.caseHandler; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import java.io.Serializable; /** * <p> * 处置流程环节配置 类 * </p> * * @author mg * @since 2022-09-29 */ @Data @EqualsAndHashCode(callSuper = false) @TableName("ums_workflow_config_step") public class WorkflowConfigStep implements Serializable { private static final long serialVersionUID = 1L; /** * id */ @TableId(value = "id", type = IdType.AUTO) @ApiModelProperty(value = "id",dataType = "Integer") private Integer id; /** * 处置流程配置id */ @TableField(value = "workflow_config_id ") @ApiModelProperty(value = "处置流程配置id",dataType = "Integer") private Integer workflowConfigId ; /** * 环节名称 */ @TableField("name") @ApiModelProperty(value = "环节名称",dataType = "String") private String name; /** * 对应角色id */ @TableField(value = "role_id ") @ApiModelProperty(value = "对应角色id",dataType = "Integer") private Integer roleId ; /** * 序号 */ @TableField(value = "seq ") @ApiModelProperty(value = "序号",dataType = "Integer") private Integer seq ; } ycl-platform/src/main/java/com/ycl/mapper/caseHandler/WorkflowConfigStepMapper.java
New file @@ -0,0 +1,15 @@ package com.ycl.mapper.caseHandler; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ycl.entity.caseHandler.WorkflowConfigStep; /** * <p> * 处置流程环节配置表 Mapper 接口 * </p> * * @author mg * @since 2022-09-29 */ public interface WorkflowConfigStepMapper extends BaseMapper<WorkflowConfigStep> { } ycl-platform/src/main/java/com/ycl/service/caseHandler/IBaseCaseService.java
@@ -1,10 +1,13 @@ package com.ycl.service.caseHandler; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.ycl.dto.casePool.IllegalBuildingParam; import com.ycl.dto.casePool.ViolationParam; import com.ycl.entity.caseHandler.BaseCase; import com.baomidou.mybatisplus.extension.service.IService; import com.ycl.entity.caseHandler.BaseCaseDetail; import java.util.ArrayList; /** * <p> @@ -41,4 +44,8 @@ * @date 2022-09-28 17:45 */ String processEvent(Integer caseId); BaseCaseDetail baseCaseDetail(String code); ArrayList<String> listCaseImages(Integer id, Integer type); } ycl-platform/src/main/java/com/ycl/service/caseHandler/impl/BaseCaseServiceImpl.java
@@ -1,22 +1,19 @@ package com.ycl.service.caseHandler.impl; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ycl.bo.casePool.CasePoolIllegalBuildingDO; import com.ycl.bo.casePool.CasePoolViolationDO; import com.ycl.bo.casePool.*; import com.ycl.dto.casePool.IllegalBuildingParam; import com.ycl.dto.casePool.ViolationParam; import com.ycl.entity.caseHandler.BaseCase; import com.ycl.entity.caseHandler.IllegalBuilding; import com.ycl.entity.caseHandler.Violations; import com.ycl.entity.caseHandler.*; import com.ycl.entity.video.VideoAlarmReport; import com.ycl.mapper.caseHandler.BaseCaseMapper; import com.ycl.mapper.caseHandler.IllegalBuildingMapper; import com.ycl.mapper.caseHandler.ViolationsMapper; import com.ycl.mapper.caseHandler.*; import com.ycl.mapper.dict.DataDictionaryMapper; import com.ycl.remote.dto.*; import com.ycl.remote.service.CityPlatformService; import com.ycl.remote.dto.EventAddParamDto; import com.ycl.remote.dto.EventProcessParamDto; import com.ycl.service.caseHandler.IBaseCaseService; import com.ycl.service.caseHandler.IViolationsService; import com.ycl.service.video.IVideoAlarmReportService; @@ -31,6 +28,7 @@ import java.time.Instant; import java.time.LocalDateTime; import java.time.ZoneOffset; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @@ -75,6 +73,19 @@ ViolationsMapper violationsMapper; @Resource IllegalBuildingMapper illegalBuildingMapper; @Resource ArrivalSituationMapper arrivalSituationMapper; @Resource InvestigationMapper investigationMapper; @Resource WritMapper writMapper; @Resource WorkflowConfigStepMapper workflowConfigStepMapper; @Resource WorkflowConfigMapper workflowConfigMapper; @Override public String uploadEvent(Integer caseId) { @@ -192,4 +203,84 @@ Integer value = 1; return illegalBuildingMapper.insert(illegalBuilding) == value ? true : false; } @Override public BaseCaseDetail baseCaseDetail(String code) { BaseCaseDetail bcd = new BaseCaseDetail(); //1.查询案件基本信息 QueryWrapper<BaseCase> wrapper = new QueryWrapper<>(); wrapper.lambda().eq(BaseCase::getCode, code); BaseCase baseCase = baseCaseMapper.selectOne(wrapper); bcd.setBaseCase(baseCase); //2.查询办理经过信息 //2.1查询处置流程配置 HandlePassVo handlePassVo = new HandlePassVo(); QueryWrapper<WorkflowConfig> wrapperWc = new QueryWrapper<>(); wrapperWc.lambda().eq(WorkflowConfig::getCode, "ddlc").or().eq(WorkflowConfig::getCode, "wtcllc"); List<WorkflowConfig> wcs = workflowConfigMapper.selectList(wrapperWc); Integer ddlcId=0,wtcllcId=0; for (WorkflowConfig wc : wcs) { if ("ddlc".equals(wc.getCode())) { ddlcId = wc.getId(); } if ("wtcllc".equals(wc.getCode())) { wtcllcId = wc.getId(); } } //2.2查询处置流程环节配置 QueryWrapper<WorkflowConfigStep> wrapperWcs = new QueryWrapper<>(); wrapperWcs.lambda().eq(WorkflowConfigStep::getWorkflowConfigId, ddlcId); List<WorkflowConfigStep> listWcs = workflowConfigStepMapper.selectList(wrapperWcs); //2.3设置调度流程 handlePassVo.setWorkflowConfigSteps(listWcs); bcd.setHandlePassVo(handlePassVo); //3.查询案卷图片信息 //4.查询问题处理信息 ProblemProVo problemProVo = new ProblemProVo(); //4.2查询处置流程环节配置 QueryWrapper<WorkflowConfigStep> wrapperWcsPp = new QueryWrapper<>(); wrapperWcsPp.lambda().eq(WorkflowConfigStep::getWorkflowConfigId, wtcllcId); List<WorkflowConfigStep> listWcsPp = workflowConfigStepMapper.selectList(wrapperWcsPp); //4.3设置调度流程 problemProVo.setWorkflowConfigSteps(listWcsPp); bcd.setProblemProVo(problemProVo); //5.查询现场情况信息 CurrentSitVo currentSitVo = new CurrentSitVo(); QueryWrapper<ArrivalSituation> wrapperAs = new QueryWrapper<>(); //设置到达现场情况 ArrivalSituation as = arrivalSituationMapper.selectOne(wrapperAs); currentSitVo.setArrivalSituation(as); //设置调查取证 QueryWrapper<Investigation> wrapperI = new QueryWrapper<>(); wrapperI.lambda().eq(Investigation::getBaseCaseId, baseCase.getId()); Investigation investigation = investigationMapper.selectOne(wrapperI); currentSitVo.setInvestigation(investigation); //设置告知违法 QueryWrapper<Writ> wrapperW = new QueryWrapper<>(); wrapperW.lambda().eq(Writ::getBaseCaseId, baseCase.getId()); Writ writ = writMapper.selectOne(wrapperW); currentSitVo.setWrit(writ); bcd.setCurrentSitVo(currentSitVo); return bcd; } @Override public ArrayList<String> listCaseImages(Integer id, Integer type) { Integer illegalBuildingType = 02; ArrayList<String> caseImages = new ArrayList<>(); caseImages.add(investigationMapper .selectOne(new LambdaQueryWrapper<Investigation>() .eq(Investigation::getBaseCaseId, id)).getPic()); caseImages.add(arrivalSituationMapper .selectOne(new LambdaQueryWrapper<ArrivalSituation>() .eq(ArrivalSituation::getBaseCaseId, id)).getSituationPic()); if (type == illegalBuildingType) { Writ writ = writMapper.selectOne(new LambdaQueryWrapper<Writ>().eq(Writ::getBaseCaseId, id)); caseImages.add(writ.getWritPic()); caseImages.add(writ.getOriginalPic()); caseImages.add(writ.getOtherPic()); caseImages.add(writ.getRectifiedPic()); } return caseImages; } }