Commit 9a36750d authored by tangwei's avatar tangwei

Merge branch 'developer' of http://172.16.10.76/moa/amos-boot-biz into developer

parents eb086901 e9ff571e
......@@ -30,7 +30,6 @@ import org.typroject.tyboot.core.foundation.utils.Bean;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import javax.servlet.http.HttpServletRequest;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
......@@ -107,10 +106,10 @@ public class ControllerAop {
CompanyBo company = new CompanyBo();
DepartmentBo department = new DepartmentBo();
RoleBo role = new RoleBo();
CompanyModel companyM = user.getCompanys().get(0);
CompanyModel companyM = user.getCompanys() != null ? user.getCompanys().get(0) : null ;
Bean.copyExistPropertis(companyM, company);
Map<Long, List<DepartmentModel>> mapDepartments = user.getCompanyDepartments();
DepartmentModel departmentM = mapDepartments.get(companyM.getSequenceNbr()).get(0);
DepartmentModel departmentM = companyM != null ? mapDepartments.get(companyM.getSequenceNbr()).get(0) : null ;
Bean.copyExistPropertis(departmentM, department);
Map<Long, List<RoleModel>> roles = user.getOrgRoles();
Long sequenceNbr;
......@@ -121,7 +120,7 @@ public class ControllerAop {
}
RoleModel roleM = null;
if (sequenceNbr == null) {
roleM = roles.get(companyM.getSequenceNbr()).get(0);
roleM = companyM != null ?roles.get(companyM.getSequenceNbr()).get(0) : null;
} else {
roleM = roles.get(sequenceNbr).get(0);
}
......
package com.yeejoin.amos.boot.biz.common.enums;
import lombok.AllArgsConstructor;
@AllArgsConstructor
public enum WorkFlowEnum {
BUSINESSKEY("businessKey","自动生成的ID"),
processDefinitionKey("processDefinitionKey","流程定义的KEY"),
制定计划内容("制定计划+内容","流程节点的特殊值"),
现场确认("现场确认","流程节点的特殊值"),
CONDITION("condition",""),
DATA("data","data"),
ID("id","id"),
CHECKFLAG("checkFlag","自定义是否具有执行权限的标识符"),
TASKID("taskId","可执行任务的主键"),
GROUP("group","角色组"),
GROUPID("groupId","角色组的key"),
GROUPNAME("groupName","角色组的key"),
NAME("name","任务节点的key"),
ASSIGN("assign","角色执行人key");
private String code;//对应菜单组件名称
private String desc;//描述
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
}
......@@ -191,6 +191,16 @@ public interface WorkflowFeignService {
* @return
* @throws ParseException
*/
@RequestMapping(value = "/activitiHistory/processes/historytasks/getGroupNamelist/{processInstanceId}",method = RequestMethod.GET)
JSONObject getHistoricIdentityLinksForProcessInstance(@PathVariable("processInstanceId") String processInstanceId) throws ParseException;
@RequestMapping(value = "/activitiHistory/processes/historytasks/getGroupNamelist/{taskId}",method = RequestMethod.GET)
JSONObject getHistoricIdentityLinksForTask(@PathVariable("taskId") String taskId) throws ParseException;
/**
*获取指定流程定义下所有的历史流程任务任务执行信息 --获取historytask表数据
* @param processInstanceId
* @return
* @throws ParseException
*/
@RequestMapping(value = "/activitiHistory/processes/historytasks/getHistoricTaskForProcessInstanceId/{processInstanceId}",method = RequestMethod.GET)
JSONObject getHistoricTaskForProcessInstanceId(@PathVariable("processInstanceId") String processInstanceId) throws ParseException;
}
......@@ -68,14 +68,25 @@ public class FireExpertsDto extends BaseDto {
private String politicalOutlook;
// @ExplicitConstraint(indexNum = 9, sourceClass = RoleNameExplicitConstraint.class, method = "getAdministrativeDivisions") //固定下拉内容
@ExcelProperty(value = "现居住地", index = 9)
@ExplicitConstraint(indexNum = 9,sourceClass = CommonExplicitConstraint.class,method ="getCitys")
@ApiModelProperty(value = "现居住地")
@ExcelProperty(value = "现居住地", index = 9)
private String residence;
@ExcelProperty(value = "居住地详情", index = 10)
@ExcelProperty(value = "籍贯/户口所在地详细地址", index = 17)
@ApiModelProperty(value = "籍贯/户口所在地详细地址")
private String nativePlaceVal;
@ExplicitConstraint(indexNum =10,sourceClass = CommonExplicitConstraint.class,method ="getCitys")
@ExcelProperty(value = "现居住地", index = 10)
@ApiModelProperty(value = "居住地详情")
private String residenceDetails;
@ExcelProperty(value = "现居住地详细地址", index = 18)
@ApiModelProperty(value = "现居住地详细地址")
private String residenceDetailVal;
@ExcelProperty(value = "办公电话", index = 11)
@ApiModelProperty(value = "办公电话")
private String officePhone;
......
......@@ -106,4 +106,10 @@ public class FireExperts extends BaseEntity {
@ApiModelProperty(value = "出生日期")
private Date birthdayTime;
@ApiModelProperty(value = "现居住地详细地址")
private String residenceDetailVal;
@ApiModelProperty(value = "户籍所在地详细地址")
private String nativePlaceVal;
}
......@@ -128,10 +128,16 @@
<if test="alertSourceCode!= null ">
and alert_source_code = #{alertSourceCode}
</if>
<if test="data != null and lift == 'ascend'">
<if test="data == 'address' and data != null and lift == 'ascend'">
order by CONVERT(address USING 'gbk') ASC limit #{current},#{size}
</if>
<if test="data == 'address' and data != null and lift == 'descend'">
order by CONVERT(address USING 'gbk') DESC limit #{current},#{size}
</if>
<if test="data != null and data != 'address' and lift == 'ascend'">
order by #{data} ASC limit #{current},#{size}
</if>
<if test="data != null and lift == 'descend'">
<if test="data != null and data != 'address' and lift == 'descend'">
order by #{data} DESC limit #{current},#{size}
</if>
<if test="data == null ">
......
......@@ -11,8 +11,9 @@ public enum CheckTypeSuEnum {
/**
* 检查类型枚举
*/
SUPERVISED("日常检查", "1", "supervised"),
DAILY("专项检查", "2", "daily");
DAILY("日常检查", "1", "daily"),
SPECIAL_RQ("燃气专项", "2", "special"),
SPECIAL_GW("高温专项", "3", "special");
/**
* 名字
......@@ -37,7 +38,8 @@ public enum CheckTypeSuEnum {
public static List<Map<String, Object>> getEnumList() {
return Arrays.stream(CheckTypeSuEnum.values()).map(e -> {
Map<String, Object> map = new HashMap<>();
map.put(e.getCode(), e.getName());
map.put("code", e.getCode());
map.put("name", e.getName());
return map;
}).collect(Collectors.toList());
}
......
package com.yeejoin.amos.supervision.common.enums;
import java.util.*;
import java.util.stream.Collectors;
/**
* @author DELL
*/
public enum DangerCheckTypeLevelEnum {
DEPARTMENT("单位级", "1", "department"),
COMPANY("公司级", "2", "company"),
EXTERNAL("外部消防单位", "3", "external"),
OTHER("其他", "4", "external");
/**
* 名称,描述
*/
private String name;
/**
* 编码
*/
private String code;
/**
* 执行控制条件
*/
private String condition;
DangerCheckTypeLevelEnum(String name, String code, String condition) {
this.name = name;
this.code = code;
this.condition = condition;
}
/**
* 获取枚举
* @param code 编号
* @return DangerCheckTypeLevelEnum
* @throws Exception
*/
public static DangerCheckTypeLevelEnum getEumByCode(String code) throws Exception {
Optional<DangerCheckTypeLevelEnum> op = Arrays.stream(DangerCheckTypeLevelEnum.values()).filter(e->e.code.equals(code)).findFirst();
return op.orElseThrow(()->new Exception("不存在"));
}
public static List<Map<String, Object>> getEnumList() {
return Arrays.stream(DangerCheckTypeLevelEnum.values()).map(e -> {
Map<String, Object> map = new HashMap<>();
map.put("code", e.getCode());
map.put("name", e.getName());
return map;
}).collect(Collectors.toList());
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCode() {
return code;
}
public void setCondition(String condition) {
this.condition = condition;
}
public String getCondition() {
return condition;
}
}
package com.yeejoin.amos.supervision.common.enums;
/**
* @author DELL
*/
public enum DangerHandleTypeEnum {
SUPERVISION("防火监督检查", "2"),
SELF("自行检查", "1");
/**
* 名称,描述
*/
private String name;
/**
* 编码
*/
private String code;
DangerHandleTypeEnum(String name, String code) {
this.name = name;
this.code = code;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
}
package com.yeejoin.amos.supervision.common.enums;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author DELL
*/
public enum WorkFlowBranchEnum {
DAILY("日常检查", "company", "daily", "daily"),
SPECIAL_C("专项检查", "company", "special", "special"),
SPECIAL_E("专项检查", "external", "special", "special"),
SUPERVISED_DW("单位级审核", "department", "special-daily", "supervised");
/**
* 名称,描述
*/
private String name;
/**
* 隐患类型级别
*/
private String dangerCheckTypeLevel;
/**
* 计划检查类型
*/
private String checkType;
/**
* 工作流分支
*/
private String workFlowBranch;
public String getName() {
return name;
}
public String getDangerCheckTypeLevel() {
return dangerCheckTypeLevel;
}
public String getCheckType() {
return checkType;
}
public String getWorkFlowBranch() {
return workFlowBranch;
}
WorkFlowBranchEnum(String name, String dangerCheckTypeLevel, String checkType, String workFlowBranch) {
this.name = name;
this.dangerCheckTypeLevel = dangerCheckTypeLevel;
this.checkType = checkType;
this.workFlowBranch = workFlowBranch;
}
public static List<Map<String,String>> getEnumList() {
List<Map<String,String>> list = new ArrayList<>();
for(WorkFlowBranchEnum e : WorkFlowBranchEnum.values()) {
Map<String, String> map = new HashMap<String, String>();
map.put("dangerCheckTypeLevel", e.getDangerCheckTypeLevel());
map.put("name", e.getName());
map.put("checkType", e.getCheckType());
map.put("workFlowBranch", e.getWorkFlowBranch());
list.add(map);
}
return list;
}
}
package com.yeejoin.amos.supervision.core.common.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.io.Serializable;
......@@ -56,6 +57,7 @@ public class DangerDto implements Serializable {
/**
* 整改期限
*/
@JsonFormat(pattern = "yyyy-MM-dd")
private Date reformLimitDate;
......
......@@ -56,7 +56,7 @@ public class PlanAuditLog extends BasicEntity {
@Column(name = "excute_user_name")
private String excuteUserName;
/**
* 执行状态(1:不通过;2:通过)
* 执行状态(1:不通过;0:通过)
*/
@Column(name = "excute_state")
private Integer excuteState;
......
package com.yeejoin.amos.boot.module.tzs.api.dto;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.yeejoin.amos.boot.biz.common.dto.BaseDto;
......@@ -75,4 +76,8 @@ public class DispatchTaskDto extends BaseDto {
@ApiModelProperty(value = "警情类型code")
private String alertCode;
@ApiModelProperty(value = "救援完成时间")
private Date saveTime;
}
package com.yeejoin.amos.boot.module.tzs.api.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Map;
/**
* 微信公众号模板dto
*/
@Data
@ApiModel(value="WechatMessageDto", description="微信公众号模板消息dto类")
public class WechatMessageDto {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "模板id")
private String templateId;
@ApiModelProperty(value = "跳转地址")
private String url;
@ApiModelProperty(value = "数据")
private Map<String, String> data;
}
package com.yeejoin.amos.boot.module.tzs.api.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* 微信公众号任务id 和经纬度接受dto类
*
* @author system_generator
* @date 2021-09-22
*/
@Data
@ApiModel(value="WechatTaskLatLonDto", description="微信公众号任务id 和经纬度接受dto类")
public class WechatTaskLatLonDto {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "任务id")
private Long taskId;
@ApiModelProperty(value = "经度")
private String longitude;
@ApiModelProperty(value = "纬度")
private String latitude;
}
......@@ -124,4 +124,11 @@ public class DispatchTask extends BaseEntity {
@TableField("task_status")
private String taskStatus;
/**
* 救援完成时间
*/
@TableField("save_time")
private Date saveTime;
}
......@@ -2,6 +2,7 @@ package com.yeejoin.amos.boot.module.tzs.api.service;
import com.alibaba.fastjson.JSONObject;
import com.yeejoin.amos.boot.module.tzs.api.dto.WechatMessageDto;
/**
* 微信公众号服务类
......@@ -26,4 +27,11 @@ public interface IWechatService {
* @return
*/
JSONObject getUserInfo(String openId);
/**
* 发送微信模板消息
* @param openId
* @return
*/
JSONObject sendWechatModelMessage(String openId, WechatMessageDto wechatMessageDto);
}
......@@ -4,6 +4,7 @@ import java.util.List;
import com.yeejoin.amos.boot.module.common.api.entity.FailureMaintain;
import com.yeejoin.amos.boot.module.common.biz.service.impl.SourceFileServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
......@@ -62,7 +63,7 @@ public class FailureMaintainController extends BaseController {
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "GET",value = "维修列表记录查询", notes = "维修列表记录查询")
@GetMapping(value = "/list/{faultId}")
public ResponseModel<List<FailureMaintain>> findByFaultIDFotList(@PathVariable long faultId) {
public ResponseModel<List<FailureMaintainDto>> findByFaultIDFotList(@PathVariable long faultId) {
return ResponseHelper.buildResponse(failureMaintainServiceImpl.findByfaultId(faultId));
}
......
......@@ -92,6 +92,14 @@ public class OrgUsrController extends BaseController {
return ResponseHelper.buildResponse("-1");
}
}
//bug 2882 判断是否为部门 如果部门底下有人员不可直接删除 chenzhao 2021-09-27 start
if(tempOrg.getBizOrgType().equals("DEPARTMENT")) {
List<OrgUsr> tempList = iOrgUsrService.list(new LambdaQueryWrapper<OrgUsr>().eq(OrgUsr::getParentId,id).eq(OrgUsr::getIsDelete,false));
if(tempList.size() > 0) {
return ResponseHelper.buildResponse("-1");
}
}
//bug 2882 判断是否为部门 如果部门底下有人员不可直接删除 chenzhao 2021-09-27 end
// iOrgUsrService.update(new UpdateWrapper<OrgUsr>().eq("sequence_nbr", id).set("is_delete", CommonConstant.IS_DELETE_01));
/*bug 2812 一次删除多条数据 传入类型修改为string 问题解决 2021-09-09 陈召 开始*/
iOrgUsrService.update(new UpdateWrapper<OrgUsr>().eq("sequence_nbr", String.valueOf(id)).set("is_delete", CommonConstant.IS_DELETE_01));
......@@ -422,9 +430,9 @@ public class OrgUsrController extends BaseController {
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@RequestMapping(value = "/getLoginUserDetails/{userId}", method = RequestMethod.GET)
@RequestMapping(value = {"/getLoginUserDetails/{userId}", "/getLoginUserDetails"}, method = RequestMethod.GET)
@ApiOperation(httpMethod = "GET", value = "获取登陆人绑定的人员关系", notes = "获取登陆人绑定的人员关系")
public ResponseModel<List<Map<String, Object>>> getLoginUserDetails(@PathVariable String userId) {
public ResponseModel<List<Map<String, Object>>> getLoginUserDetails(@PathVariable(required=false) String userId) {
AgencyUserModel user = getUserInfo();
String userIds = userId;
if (StringUtils.isEmpty(userIds)) {
......
package com.yeejoin.amos.boot.module.common.biz.service.impl;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
......@@ -7,9 +8,11 @@ import java.util.List;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.yeejoin.amos.boot.module.common.api.entity.OrgUsr;
import com.yeejoin.amos.boot.module.common.api.entity.SourceFile;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -175,10 +178,19 @@ public class FailureMaintainServiceImpl extends BaseService<FailureMaintainDto,
/**
* 根据FaultId查询
*/
public List<FailureMaintain> findByfaultId(Long faultId) {
public List<FailureMaintainDto> findByfaultId(Long faultId) {
LambdaQueryWrapper<FailureMaintain> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(FailureMaintain::getFaultId, faultId).orderByDesc(FailureMaintain::getMaintainTime);
return baseMapper.selectList(lambdaQueryWrapper);
List<FailureMaintain> failureMaintains = baseMapper.selectList(lambdaQueryWrapper);
List<FailureMaintainDto> failureMaintainDtos = new ArrayList<>();
for (FailureMaintain failureMaintain : failureMaintains) {
FailureMaintainDto failureMaintainDto = new FailureMaintainDto();
BeanUtils.copyProperties(failureMaintain,failureMaintainDto);
List<SourceFile> attachment = sourceFileServiceImpl.findBySourceId(failureMaintain.getSequenceNbr());
failureMaintainDto.setAttachment(attachment);
failureMaintainDtos.add(failureMaintainDto);
}
return failureMaintainDtos;
}
/**
......
......@@ -705,6 +705,13 @@ public class OrgUsrServiceImpl extends BaseService<OrgUsrDto, OrgUsr, OrgUsrMapp
OrgUsr orgUsr = getById(id);
// 动态表单数据
List<FormValue> formValue = getFormValue(id);
//bug 2580 返回值改为具体名称 chenzhao 2021-09-27 start
for (FormValue value : formValue) {
if (value.getValueName() != null && !value.getValueName() .equals(" ")){
value.setValue(value.getValueName());
}
}
//bug 2580 返回值改为具体名称 chenzhao 2021-09-27 end
OrgUsrFormDto orgUsrFormVo = new OrgUsrFormDto();
orgUsrFormVo.setDynamicFormAlert(formValue);
BeanUtils.copyProperties(orgUsr, orgUsrFormVo);
......
......@@ -14,6 +14,7 @@ import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.annotation.Order;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Component;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.ResponseBody;
......@@ -36,7 +37,6 @@ public class PersonIdentifyAspect {
@Autowired
JCSFeignClient jcsFeignClient;
final int HTTP_OK_STATUS = 200;
@Before(value = "@annotation(com.yeejoin.amos.maintenance.core.framework.PersonIdentify) && @annotation(permission)")
public void personIdentity(JoinPoint joinPoint, PersonIdentify permission) throws PermissionException {
......@@ -45,7 +45,7 @@ public class PersonIdentifyAspect {
//调用jcs,进行人员身份判断,是维保公司人员还是业主单位人员
String userId = reginParam.getUserModel().getUserId();
FeignClientResult responseModel = jcsFeignClient.getUserUnit(userId);
if (ObjectUtils.isEmpty(responseModel.getResult()) || responseModel.getStatus() != HTTP_OK_STATUS) {
if (ObjectUtils.isEmpty(responseModel.getResult()) || responseModel.getStatus() != HttpStatus.OK.value()) {
throw new RuntimeException(responseModel.getDevMessage());
}
ReginParams.PersonIdentity personIdentity = (ReginParams.PersonIdentity) Bean.mapToBean((Map<String, Object>) responseModel.getResult(), ReginParams.PersonIdentity.class);
......
......@@ -208,8 +208,8 @@ public class PlanTaskController extends AbstractBaseController {
@RequestMapping(value = "/queryOmission", method = RequestMethod.GET, produces = "application/json;charset=UTF-8")
public CommonResponse pushCarData() {
try {
RequestAttributes reqs = RequestContextHolder.getRequestAttributes();
RequestContextHolder.setRequestAttributes(reqs, true);
RequestAttributes reqs = RequestContextHolder.getRequestAttributes();
RequestContextHolder.setRequestAttributes(reqs, true);
planTaskService.taskExecution(null);
return CommonResponseUtil.success();
} catch (Exception e) {
......@@ -250,19 +250,14 @@ public class PlanTaskController extends AbstractBaseController {
@ApiOperation(value = "根据点查询用户权限所有巡检执行计划(<font color='blue'>手机app</font>)", notes = "根据点查询用户权限所有巡检执行计划(<font color='blue'>手机app</font>)")
@RequestMapping(value = "/queryPlanTaskBySerial", produces = "application/json;charset=UTF-8", method = RequestMethod.GET)
public CommonResponse qryPlanTaskByPoint(
@ApiParam(value = "数据类型", required = false) @RequestParam(required = true) int dataType,
@ApiParam(value = "巡检点编号", required = true) @RequestParam(required = true) String serial,
@ApiParam(value = "参数", required = false) @RequestParam(required = false) Long planTaskId) {
@ApiParam(value = "数据类型") @RequestParam int dataType,
@ApiParam(value = "巡检点编号", required = true) @RequestParam(value = "serial") String pointNo,
@ApiParam(value = "参数") @RequestParam(required = false) Long planTaskId) {
try {
HashMap<String, Object> params = new HashMap<String, Object>();
//LoginUserParam loginParam = CurUserCompanyCache.getInstance().getCurCompany(getUserId(), getToken());
ReginParams reginParams = getSelectedOrgInfo();
String loginOrgCode = getOrgCode(reginParams);
/* if (ObjectUtils.isEmpty(loginParam)) {
return CommonResponseUtil.failure("公司选择失效");
}*/
params.put("orgCode", loginOrgCode);
String pointNo = serial;
params.put("pointNo", pointNo);
Point point = pointService.queryPointByPointNo(params);
// 1.通用校验
......
......@@ -971,22 +971,17 @@ public class PointServiceImpl implements IPointService {
@Override
public Point queryPointByPointNo(HashMap<String, Object> params) {
return iPointDao.findOne(new Specification<Point>() {
@Override
public Predicate toPredicate(Root<Point> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
List<Predicate> predicate = new ArrayList<>();
if (!ObjectUtils.isEmpty(params.get("pointNo"))) {
predicate.add(cb.equal(root.get("pointNo").as(String.class), params.get("pointNo")));
}
if (!ObjectUtils.isEmpty(params.get("orgCode"))) {
predicate.add(cb.equal(root.get("orgCode").as(String.class), params.get("orgCode").toString()));
}
Predicate[] pre = new Predicate[predicate.size()];
return query.where(predicate.toArray(pre)).getRestriction();
return iPointDao.findOne((Specification<Point>) (root, query, cb) -> {
List<Predicate> predicate = new ArrayList<>();
if (!ObjectUtils.isEmpty(params.get("pointNo"))) {
predicate.add(cb.equal(root.get("pointNo").as(String.class), params.get("pointNo")));
}
if (!ObjectUtils.isEmpty(params.get("orgCode"))) {
predicate.add(cb.equal(root.get("orgCode").as(String.class), params.get("orgCode").toString()));
}
}).get();
Predicate[] pre = new Predicate[predicate.size()];
return query.where(predicate.toArray(pre)).getRestriction();
}).orElse(null);
}
@Override
......
......@@ -6,6 +6,7 @@ import com.yeejoin.amos.supervision.business.dto.HiddenDangerImportDto;
import com.yeejoin.amos.supervision.business.service.intfc.IHiddenDangerService;
import com.yeejoin.amos.supervision.business.util.FileHelper;
import com.yeejoin.amos.supervision.core.common.dto.DangerDto;
import com.yeejoin.amos.supervision.core.framework.PersonIdentify;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
......@@ -79,13 +80,14 @@ public class HiddenDangerController extends AbstractBaseController {
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PersonIdentify
@ApiOperation(value = "导入隐患", notes = "导入隐患")
@RequestMapping(value = "/import", produces = "application/json;charset=UTF-8", method = RequestMethod.POST)
public ResponseModel importDanger(
@RequestParam(value = "planId") Long planId,
@ApiParam(value = "导入数据文件", required = true) @RequestBody MultipartFile file) {
List<HiddenDangerImportDto> list = FileHelper.importExcel(file, 0, 1, HiddenDangerImportDto.class);
iHiddenDangerService.importDanger(planId, list);
iHiddenDangerService.importDanger(getSelectedOrgInfo(),planId, list);
return ResponseHelper.buildResponse("导入成功");
}
......
......@@ -2,8 +2,6 @@ package com.yeejoin.amos.supervision.business.controller;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.supervision.business.service.intfc.IPlanAuditService;
import com.yeejoin.amos.supervision.business.util.CommonResponse;
import com.yeejoin.amos.supervision.business.util.CommonResponseUtil;
import com.yeejoin.amos.supervision.core.framework.PersonIdentify;
import com.yeejoin.amos.supervision.dao.entity.PlanAuditLog;
import io.swagger.annotations.Api;
......@@ -15,6 +13,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.typroject.tyboot.core.foundation.enumeration.UserType;
import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
@RestController
@RequestMapping(value = "/api/planAudit")
......@@ -30,17 +30,19 @@ public class PlanAuditController extends AbstractBaseController {
@PersonIdentify
@ApiOperation(value = "计划工作流审核", notes = "计划工作流审核")
@RequestMapping(value = "/auditWorkFlow", produces = "application/json;charset=UTF-8", method = RequestMethod.POST)
public CommonResponse auditWorkFlow(
public ResponseModel auditWorkFlow(
@ApiParam(value = "工作流流水实例", required = true) @RequestBody PlanAuditLog planAuditLog,
@ApiParam(value = "工作流流水实例", required = true) @RequestBody Integer status,
@ApiParam(value = "当前计划状态", required = true) @RequestParam Integer status,
@ApiParam(value = "执行控制条件", required = true) @RequestParam String condition) {
try {
ReginParams reginParams = getSelectedOrgInfo();
return CommonResponseUtil.success(planAuditService.auditWorkFlow(planAuditLog, status, condition, reginParams));
} catch (Exception e) {
log.error(e.getMessage(), e);
return CommonResponseUtil.failure("计划工作流审核失败!");
}
ReginParams reginParams = getSelectedOrgInfo();
return ResponseHelper.buildResponse(planAuditService.auditWorkFlow(planAuditLog, status, condition, reginParams));
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(value = "指定计划的执行日志")
@GetMapping(value = "/{planId}/timeLine")
public ResponseModel timeLineLog(@PathVariable Long planId) {
return ResponseHelper.buildResponse(planAuditService.listByPlanId(planId));
}
}
......@@ -4,6 +4,8 @@ import java.util.HashMap;
import java.util.List;
import com.yeejoin.amos.feign.privilege.model.AgencyUserModel;
import com.yeejoin.amos.supervision.common.enums.CheckTypeSuEnum;
import com.yeejoin.amos.supervision.common.enums.DangerCheckTypeLevelEnum;
import com.yeejoin.amos.supervision.common.enums.PlanStatusEnum;
import com.yeejoin.amos.supervision.core.common.request.AddPlanRequest;
import com.yeejoin.amos.supervision.core.common.response.PlanPointRespone;
......@@ -227,4 +229,17 @@ public class PlanController extends AbstractBaseController {
return ResponseHelper.buildResponse(PlanStatusEnum.getEnumList());
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "GET", value = "计划检查类型", notes = "计划检查类型")
@RequestMapping(value = "/checkTypeSuEnum/list", method = RequestMethod.GET)
public ResponseModel getCheckTypeSuEnumList() {
return ResponseHelper.buildResponse(CheckTypeSuEnum.getEnumList());
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "GET", value = "检查级别", notes = "检查级别")
@RequestMapping(value = "/checkTypeLevelEnum/list", method = RequestMethod.GET)
public ResponseModel getCheckTypeLevelEnumList() {
return ResponseHelper.buildResponse(DangerCheckTypeLevelEnum.getEnumList());
}
}
......@@ -811,8 +811,9 @@ public class PointController extends AbstractBaseController {
@GetMapping(value = "/detail/item", produces = "application/json;charset=UTF-8")
public ResponseModel queryItemDetailByPointId(
@ApiParam(value = "路线id", required = true) @RequestParam(name = "routeId") Long routeId,
@ApiParam(value = "巡检点id", required = true) @RequestParam(name = "pointId") Long id) {
return ResponseHelper.buildResponse(iPointService.queryItemDetailByPointId(id, routeId));
@ApiParam(value = "巡检点id", required = true) @RequestParam(name = "pointId") Long id,
@ApiParam(value = "计划id", required = true) @RequestParam(name = "planId") Long planId) {
return ResponseHelper.buildResponse(iPointService.queryItemDetailByPointId(id, routeId, planId));
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
......
package com.yeejoin.amos.supervision.business.dao.repository;
import com.yeejoin.amos.supervision.dao.entity.HiddenDanger;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
......@@ -21,4 +24,21 @@ public interface IHiddenDangerDao extends BaseDao<HiddenDanger, Long> {
* @return List<HiddenDanger>
*/
List<HiddenDanger> findByLatentDangerIdIn(List<Long> ids);
/**
* 根据ids删除
* @param ids
*/
@Modifying
@Transactional
@Query(value="DELETE FROM p_hidden_danger WHERE latent_danger_id IN (?1)", nativeQuery = true)
void deleteByDangerIdIn(List<Long> ids);
/**
* 根据计划id获取列表
* @param planId 计划id
* @return 隐患关系列表
*/
List<HiddenDanger> findByPlanId(Long planId);
}
package com.yeejoin.amos.supervision.business.dao.repository;
import com.yeejoin.amos.supervision.dao.entity.PlanAuditLog;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository("planAuditLogDao")
public interface IPlanAuditLogDao extends BaseDao<PlanAuditLog, Long> {
/**
* 指定计划的审核日志
* @param planId 计划id
* @param sort 排序条件
* @return List<PlanAuditLog>
*/
List<PlanAuditLog> findAllByPlanId(Long planId, Sort sort);
}
\ No newline at end of file
......@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.toolkit.Sequence;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.base.Joiner;
import com.google.common.collect.Lists;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.boot.biz.common.excel.DataSources;
import com.yeejoin.amos.boot.biz.common.excel.ExcelUtil;
import com.yeejoin.amos.component.feign.model.FeignClientResult;
......@@ -22,7 +23,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.foundation.utils.Bean;
import org.typroject.tyboot.core.restful.exception.instance.DataNotFound;
......@@ -60,7 +60,7 @@ public class HiddenDangerServiceImpl implements IHiddenDangerService {
//1.查询指定计划和公司的关联隐患数据
List<HiddenDangerDto> hiddenDangers = hiddenDangerMapper.listByCondition(planId, pointId);
List<Long> dangerIds = Lists.transform(hiddenDangers, HiddenDangerDto::getLatentDangerId);
String dangerIdsStr = Joiner.on(",").join(dangerIds);
String dangerIdsStr = "".equals(Joiner.on(",").join(dangerIds)) ? "-1" : Joiner.on(",").join(dangerIds);
//2.调用隐患模块查询关联隐患的具体数据(业务系统直落关系,具体隐患数据再隐患服务进行储存)
Map<String, Object> param = new HashMap<>();
param.put("dangerIds", dangerIdsStr);
......@@ -114,7 +114,7 @@ public class HiddenDangerServiceImpl implements IHiddenDangerService {
public IPage pageList(Page page, String planId, Long pointId, String level, String status) {
List<HiddenDangerDto> dangers = hiddenDangerMapper.listByCondition(planId, pointId);
List<Long> dangerIds = Lists.transform(dangers, HiddenDangerDto::getLatentDangerId);
String dangerIdsStr = Joiner.on(",").join(dangerIds);
String dangerIdsStr = "".equals(Joiner.on(",").join(dangerIds)) ? "-1" : Joiner.on(",").join(dangerIds);
Map<String, Object> param = buildRequestBody(page, level, status, dangerIdsStr);
FeignClientResult<Page<DangerDto>> feignClientResult = feignClient.pageList(param);
Page<DangerDto> dangerDtoIPage = feignClientResult.getResult();
......@@ -142,8 +142,9 @@ public class HiddenDangerServiceImpl implements IHiddenDangerService {
}
@Override
public void importDanger(Long planId, List<HiddenDangerImportDto> list) {
public void importDanger(ReginParams reginParams, Long planId, List<HiddenDangerImportDto> list) {
//1.调用创建隐患
ReginParams.PersonIdentity personIdentity = reginParams.getPersonIdentity();
List<DangerDto> dtoList = list.stream().map(s -> {
String[] dangerArray = s.getDangerLevelName().split("@");
String[] reformTypeArray = s.getReformTypeName().split("@");
......@@ -164,7 +165,7 @@ public class HiddenDangerServiceImpl implements IHiddenDangerService {
//2.保存隐患关系表
List<HiddenDanger> hiddenDangers = dangerDbs.stream().map(d -> {
HiddenDanger hiddenDanger = new HiddenDanger();
hiddenDanger.setCreateBy(RequestContext.getExeUserId());
hiddenDanger.setCreateBy(personIdentity.getPersonSeq());
hiddenDanger.setPlanId(planId);
hiddenDanger.setLatentDangerId(d.getId());
hiddenDanger.setCheckInputId(d.getBizId());
......
......@@ -2,7 +2,6 @@ package com.yeejoin.amos.supervision.business.service.impl;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.boot.biz.common.service.IWorkflowExcuteService;
import com.yeejoin.amos.boot.biz.common.workflow.feign.WorkflowFeignService;
import com.yeejoin.amos.supervision.business.dao.repository.IPlanAuditDao;
import com.yeejoin.amos.supervision.business.dao.repository.IPlanAuditLogDao;
import com.yeejoin.amos.supervision.business.dao.repository.IPlanDao;
......@@ -12,9 +11,12 @@ import com.yeejoin.amos.supervision.dao.entity.PlanAudit;
import com.yeejoin.amos.supervision.dao.entity.PlanAuditLog;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@Service("planAuditService")
......@@ -30,9 +32,6 @@ public class PlanAuditServiceImpl implements IPlanAuditService {
private IPlanAuditLogDao planAuditLogDao;
@Autowired
private WorkflowFeignService workflowFeignService;
@Autowired
private IPlanDao planDao;
@Override
......@@ -51,9 +50,9 @@ public class PlanAuditServiceImpl implements IPlanAuditService {
workflowExcuteService.setTaskAssign(instanceId, personIdentity.getPersonSeq());
if (b) {
PlanStatusEnum statusEnum = PlanStatusEnum.getEnum(status);
planDao.updatePlanStatus(statusEnum.getNextStatus(), planAuditLog.getPlanAuditId());
planDao.updatePlanStatus(statusEnum != null ? statusEnum.getNextStatus() : PlanStatusEnum.DRAFT.getValue(), planAuditLog.getPlanId());
} else {
planDao.updatePlanStatus(PlanStatusEnum.DRAFT.getValue(), planAuditLog.getPlanAuditId());
planDao.updatePlanStatus(PlanStatusEnum.DRAFT.getValue(), planAuditLog.getPlanId());
}
planAuditLog.setPlanId(planAudit.getPlanId());
planAuditLog.setPlanAuditId(planAudit.getId());
......@@ -70,6 +69,15 @@ public class PlanAuditServiceImpl implements IPlanAuditService {
return Boolean.FALSE;
}
@Override
public List<PlanAuditLog> listByPlanId(Long planId) {
Sort.Order idOrder = new Sort.Order(Sort.Direction.ASC, "createDate");
List<Sort.Order> orders = new ArrayList<Sort.Order>();
orders.add(idOrder);
Sort sort = Sort.by(orders);
return planAuditLogDao.findAllByPlanId(planId, sort);
}
// @Override
// @Transactional
// public Boolean auditWorkFlow(PlanAuditLog planAuditLog, String condition, ReginParams reginParams) {
......
......@@ -12,7 +12,9 @@ import com.yeejoin.amos.supervision.business.dao.repository.*;
import com.yeejoin.amos.supervision.business.param.PlanInfoPageParam;
import com.yeejoin.amos.supervision.business.service.intfc.IPlanService;
import com.yeejoin.amos.supervision.common.enums.CheckTypeSuEnum;
import com.yeejoin.amos.supervision.common.enums.DangerCheckTypeLevelEnum;
import com.yeejoin.amos.supervision.common.enums.PlanStatusEnum;
import com.yeejoin.amos.supervision.common.enums.WorkFlowBranchEnum;
import com.yeejoin.amos.supervision.core.common.request.AddPlanRequest;
import com.yeejoin.amos.supervision.core.common.response.PlanPointRespone;
import com.yeejoin.amos.supervision.core.util.DateUtil;
......@@ -150,13 +152,15 @@ public class PlanServiceImpl implements IPlanService {
Integer status = param.getStatus();
if (status != null && status == 1) {
CheckTypeSuEnum checkTypeSuEnum = CheckTypeSuEnum.getEumByCode(param.getCheckTypeId());
DangerCheckTypeLevelEnum levelEnum = DangerCheckTypeLevelEnum.getEumByCode(param.getCheckLevel());
String branch = workFlowExcuteBranch(levelEnum.getCondition(), checkTypeSuEnum.getCondition());
try {
String processInstanceId;
PlanAudit audit = planAuditDao.findByPlanId(param.getId());
if (audit != null) {
//执行一步
processInstanceId = audit.getProcessInstanceId();
workflowExcuteService.excuteTask(processInstanceId, checkTypeSuEnum.getCondition());
workflowExcuteService.excuteTask(processInstanceId, branch);
//更新时间
audit.setUpdateDate(new Date());
planAuditDao.save(audit);
......@@ -164,7 +168,7 @@ public class PlanServiceImpl implements IPlanService {
insertAuditLog(reginParams, param, personIdentity, audit);
} else {
//启动
processInstanceId = workflowExcuteService.startAndComplete(processDefinitionKey, checkTypeSuEnum.getCondition());
processInstanceId = workflowExcuteService.startAndComplete(processDefinitionKey, branch);
audit = new PlanAudit();
audit.setPlanId(param.getId());
audit.setBusinessKey(String.valueOf(sequence.nextId()));
......@@ -195,6 +199,24 @@ public class PlanServiceImpl implements IPlanService {
}
/**
* 判断走哪一种工作流WorkFlowBranchEnum
*/
public String workFlowExcuteBranch (String dangerCheckTypeLevel, String checkType) {
String branch = "";
List<Map<String, String>> enumList = WorkFlowBranchEnum.getEnumList();
if (!ObjectUtils.isEmpty(enumList)){
List<Map<String, String>> list = enumList.stream().filter(map ->
(dangerCheckTypeLevel.equals(map.get("dangerCheckTypeLevel")) && map.get("checkType").contains(checkType)
)).collect(Collectors.toList());
if (!ObjectUtils.isEmpty(list)) {
branch = list.get(0).get("workFlowBranch");
}
}
return branch;
}
/**
* 默认新增路线
*/
public Route save(AddPlanRequest addPlanRequest) {
......
......@@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.toolkit.Sequence;
import com.google.common.base.Joiner;
import com.google.common.collect.Lists;
import com.yeejoin.amos.component.feign.model.FeignClientResult;
import com.yeejoin.amos.feign.privilege.model.AgencyUserModel;
import com.yeejoin.amos.safety.common.cache.PointStatusCache;
import com.yeejoin.amos.supervision.business.constants.XJConstant;
......@@ -17,12 +18,14 @@ import com.yeejoin.amos.supervision.business.dto.FormValue;
import com.yeejoin.amos.supervision.business.dto.OrgUsrFormDto;
import com.yeejoin.amos.supervision.business.dto.PointDto;
import com.yeejoin.amos.supervision.business.entity.mybatis.CheckPtListBo;
import com.yeejoin.amos.supervision.business.feign.DangerFeignClient;
import com.yeejoin.amos.supervision.business.feign.EquipFeign;
import com.yeejoin.amos.supervision.business.param.*;
import com.yeejoin.amos.supervision.business.service.intfc.IPointService;
import com.yeejoin.amos.supervision.business.util.DaoCriteria;
import com.yeejoin.amos.supervision.business.vo.*;
import com.yeejoin.amos.supervision.common.enums.PointStatusEnum;
import com.yeejoin.amos.supervision.core.common.dto.DangerDto;
import com.yeejoin.amos.supervision.core.common.request.CommonPageable;
import com.yeejoin.amos.supervision.core.common.response.PointResponse;
import com.yeejoin.amos.supervision.core.util.StringUtil;
......@@ -102,6 +105,14 @@ public class PointServiceImpl implements IPointService {
@Value("${file.url}")
private String fileUrl;
@Autowired
private IHiddenDangerDao hiddenDangerDao;
@Autowired
private DangerFeignClient dangerFeignClient;
private final int HTTP_OK_STATUS = 200;
@Override
@Transactional
public Point addPoint(PointParam pointParam) {
......@@ -249,8 +260,9 @@ public class PointServiceImpl implements IPointService {
iPointClassifyDao.deleteByPointId(idList); // 物理删除点的分类
List<PointInputItem> pointInputItem = iPointInputItemDao.findAllById(idList);
List<Long> pointInputItemIds = Lists.transform(pointInputItem, PointInputItem::getId);
if (pointInputItemIds.size() > 0)
if (pointInputItemIds.size() > 0) {
iPointInputItemDao.deleteFmeaRelationByPointInputItemIds(pointInputItemIds);//物理删除fmea关联巡检点项
}
iPointInputItemDao.deleteByPointId(idList); // 物理删除p_point_inputitem表对应行
iPointPhotoDao.deleteByPointId(idList); // 物理删除点的图片信息
// iRoutePointDao.delRoutePointByPointId(idList); //
......@@ -1183,13 +1195,39 @@ public class PointServiceImpl implements IPointService {
}
@Override
public List<Map<String, Object>> queryItemDetailByPointId(Long id, Long routeId) {
public List<Map<String, Object>> queryItemDetailByPointId(Long id, Long routeId, Long planId) {
// 获取所有检查项
List<Map<String, Object>> list = pointMapper.queryItemsByPointId(id, routeId);
Map<Long, List<DangerDto>> collect = new HashMap<>();
// 根据计划id获取隐患关系
List<HiddenDanger> hiddenDangerList = hiddenDangerDao.findByPlanId(planId);
if (!ObjectUtils.isEmpty(hiddenDangerList)) {
String ids = Joiner.on(",").join(hiddenDangerList.stream().map(HiddenDanger::getLatentDangerId).collect(Collectors.toList()));
Map<String, String> map = new HashMap<>();
map.put("ids", ids);
FeignClientResult<List<DangerDto>> listFeignClientResult = dangerFeignClient.listAll(map);
if (ObjectUtils.isEmpty(listFeignClientResult.getResult()) || listFeignClientResult.getStatus() != HTTP_OK_STATUS) {
throw new RuntimeException(listFeignClientResult.getDevMessage());
}
List<DangerDto> dangerDtoList = listFeignClientResult.getResult();
if (!ObjectUtils.isEmpty(dangerDtoList)) {
collect = dangerDtoList.stream().collect(Collectors.groupingBy(DangerDto::getBizId, Collectors.toList()));
}
}
if (0 < list.size()) {
for (Map<String, Object> map : list) {
if (map.containsKey("picJson") && !ObjectUtils.isEmpty(map.get("picJson"))) {
map.put("remark", fileUrl + map.get("remark"));
}
if (map.containsKey("inputId") && !ObjectUtils.isEmpty(map.get("inputId"))) {
String inputId = map.get("inputId").toString();
if (!"0".equals(inputId) && !ObjectUtils.isEmpty(collect)) {
List<DangerDto> dangerDtoList = collect.get(Long.parseLong(inputId));
map.put("dangerList", dangerDtoList);
}
}
}
}
return list;
......
......@@ -2,6 +2,7 @@ package com.yeejoin.amos.supervision.business.service.intfc;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.supervision.business.dto.HiddenDangerExportDataDto;
import com.yeejoin.amos.supervision.business.dto.HiddenDangerImportDto;
import com.yeejoin.amos.supervision.core.common.dto.DangerDto;
......@@ -56,10 +57,11 @@ public interface IHiddenDangerService {
/**
* 导入
* @param selectedOrgInfo 用户信息
* @param planId 计划id
* @param list 数据
*/
void importDanger(Long planId, List<HiddenDangerImportDto> list);
void importDanger(ReginParams selectedOrgInfo, Long planId, List<HiddenDangerImportDto> list);
/**
* 下载模板
......
......@@ -3,6 +3,15 @@ package com.yeejoin.amos.supervision.business.service.intfc;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.supervision.dao.entity.PlanAuditLog;
import java.util.List;
public interface IPlanAuditService {
Boolean auditWorkFlow(PlanAuditLog planAuditLog, Integer status, String condition, ReginParams reginParams);
/**
* 查询指定计划的审批日志
* @param planId 计划id
* @return List<PlanAuditLog>
*/
List<PlanAuditLog> listByPlanId(Long planId);
}
......@@ -327,7 +327,7 @@ public interface IPointService {
*/
void delPointByPointNo(Long id);
List<Map<String, Object>> queryItemDetailByPointId(Long id, Long routeId);
List<Map<String, Object>> queryItemDetailByPointId(Long id, Long routeId, Long planId);
List<Map<String, Object>> getPlanExecuteTeams();
......
......@@ -11,7 +11,7 @@ import java.lang.annotation.*;
public @interface PersonIdentify {
/**
* 是否进行人员校验
* @return
* @return boolean
*/
boolean isNeedIdentity() default true;
}
......
......@@ -14,11 +14,11 @@ import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.annotation.Order;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Component;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.ResponseBody;
import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.foundation.utils.Bean;
import java.util.List;
import java.util.Map;
......@@ -37,8 +37,6 @@ public class PersonIdentifyAspect {
@Autowired
JCSFeignClient jcsFeignClient;
final int HTTP_OK_STATUS = 200;
@Before(value = "@annotation(com.yeejoin.amos.supervision.core.framework.PersonIdentify) && @annotation(permission)")
public void personIdentity(JoinPoint joinPoint, PersonIdentify permission) throws PermissionException {
ReginParams reginParam = JSON.parseObject(redisUtils.get(RedisKey.buildReginKey(RequestContext.getExeUserId(), RequestContext.getToken())).toString(), ReginParams.class);
......@@ -46,15 +44,15 @@ public class PersonIdentifyAspect {
//调用jcs,进行人员身份判断,是维保公司人员还是业主单位人员
String userId = reginParam.getUserModel().getUserId();
FeignClientResult responseModel = jcsFeignClient.getUserUnit(userId);
if (ObjectUtils.isEmpty(responseModel.getResult()) || responseModel.getStatus() != HTTP_OK_STATUS) {
if (ObjectUtils.isEmpty(responseModel.getResult()) || responseModel.getStatus() != HttpStatus.OK.value()) {
throw new RuntimeException(responseModel.getDevMessage());
}
List result = (List)responseModel.getResult();
List result = (List) responseModel.getResult();
ReginParams.PersonIdentity personIdentity = new ReginParams.PersonIdentity();
if (!ObjectUtils.isEmpty(result)) {
Map map = (Map)result.get(0);
Map other = (Map)map.get("DEPARTMENT");
Map person = (Map)map.get("PERSON");
Map map = (Map) result.get(0);
Map other = (Map) map.get("DEPARTMENT");
Map person = (Map) map.get("PERSON");
if (!ObjectUtils.isEmpty(person)) {
personIdentity.setPersonSeq((String) person.get("sequenceNbr"));
personIdentity.setPersonName((String) person.get("recUserName"));
......
......@@ -6,15 +6,21 @@ import com.yeejoin.amos.boot.biz.common.controller.BaseController;
import com.yeejoin.amos.boot.biz.common.utils.DateUtils;
import com.yeejoin.amos.boot.biz.common.utils.RedisKey;
import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
import com.yeejoin.amos.boot.module.tzs.api.dto.AlertCalledFormDto;
import com.yeejoin.amos.boot.module.tzs.api.dto.WechatAccessDto;
import com.yeejoin.amos.boot.module.tzs.api.dto.WechatMessageDto;
import com.yeejoin.amos.boot.module.tzs.api.dto.WechatMyTaskDto;
import com.yeejoin.amos.boot.module.tzs.api.dto.WechatMyTaskListDto;
import com.yeejoin.amos.boot.module.tzs.api.dto.WechatRelationDto;
import com.yeejoin.amos.boot.module.tzs.api.dto.WechatTaskLatLonDto;
import com.yeejoin.amos.boot.module.tzs.api.entity.AlertFormValue;
import com.yeejoin.amos.boot.module.tzs.api.entity.DispatchTask;
import com.yeejoin.amos.boot.module.tzs.api.entity.WechatRelation;
import com.yeejoin.amos.boot.module.tzs.api.service.IDispatchTaskService;
import com.yeejoin.amos.boot.module.tzs.api.service.IWechatService;
import com.yeejoin.amos.boot.module.tzs.biz.service.impl.AlertCalledServiceImpl;
import com.yeejoin.amos.boot.module.tzs.biz.service.impl.AlertFormValueServiceImpl;
import com.yeejoin.amos.boot.module.tzs.biz.service.impl.DispatchTaskServiceImpl;
import com.yeejoin.amos.boot.module.tzs.biz.service.impl.WechatRelationServiceImpl;
import com.yeejoin.amos.boot.module.tzs.biz.utils.HttpUtils;
import com.yeejoin.amos.component.feign.model.FeignClientResult;
......@@ -88,9 +94,13 @@ public class WechatController extends BaseController {
IDispatchTaskService dispatchTaskService;
@Autowired
private AlertFormValueServiceImpl iAlertFormValueService;
AlertFormValueServiceImpl iAlertFormValueService;
@Autowired
DispatchTaskServiceImpl dispatchTaskServiceImpl;
@Autowired
AlertCalledServiceImpl iAlertCalledService;
/**
* 获取微信回调信息返回验证是否通过
......@@ -334,15 +344,14 @@ public class WechatController extends BaseController {
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@PostMapping(value = "/returnDistance")
@ApiOperation(httpMethod = "POST", value = "根据任务id 经纬度 返回现在距离任务距离", notes = "根据任务id 经纬度 返回现在距离任务距离")
public ResponseModel<String> returnDistance(@ApiParam(value = "任务id", required = true) @RequestParam(name = "taskId") Long taskId,
@ApiParam(value = "经度", required = true) @RequestParam(name = "longitude") String longitude,
@ApiParam(value = "纬度", required = true) @RequestParam(name = "latitude") String latitude) {
if (ValidationUtil.isEmpty(taskId)
|| ValidationUtil.isEmpty(longitude)
|| ValidationUtil.isEmpty(latitude)){
public ResponseModel<String> returnDistance(@RequestBody WechatTaskLatLonDto dto ) {
if (ValidationUtil.isEmpty(dto)
|| ValidationUtil.isEmpty(dto.getTaskId())
|| ValidationUtil.isEmpty(dto.getLatitude())
|| ValidationUtil.isEmpty(dto.getLongitude())){
throw new BadRequest("参数校验失败.");
}
String distance = dispatchTaskService.returnDistanceByTaskId(taskId,longitude,latitude);
String distance = dispatchTaskService.returnDistanceByTaskId(dto.getTaskId(),dto.getLongitude(),dto.getLatitude());
return ResponseHelper.buildResponse(distance);
}
......@@ -464,9 +473,9 @@ public class WechatController extends BaseController {
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@PostMapping(value = "/taskArrive")
@ApiOperation(httpMethod = "POST", value = "点击到达触发事件", notes = "点击到达触发事件")
public ResponseModel<WechatMyTaskDto> taskArrive(@RequestParam Long taskId) {
@GetMapping(value = "/taskArrive/{taskId}")
@ApiOperation(httpMethod = "GET", value = "点击到达触发事件", notes = "点击到达触发事件")
public ResponseModel<WechatMyTaskDto> taskArrive(@PathVariable Long taskId) {
if (ValidationUtil.isEmpty(taskId)){
throw new BadRequest("参数校验失败.");
}
......@@ -580,9 +589,9 @@ public class WechatController extends BaseController {
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@PostMapping(value = "/saveFinish")
@ApiOperation(httpMethod = "POST", value = "点击救援完成触发事件", notes = "点击救援完成触发事件")
public ResponseModel<WechatMyTaskDto> saveFinish(@RequestParam Long taskId) {
@GetMapping(value = "/saveFinish/{taskId}")
@ApiOperation(httpMethod = "GET", value = "点击救援完成触发事件", notes = "点击救援完成触发事件")
public ResponseModel<WechatMyTaskDto> saveFinish(@PathVariable Long taskId) {
if (ValidationUtil.isEmpty(taskId)){
throw new BadRequest("参数校验失败.");
}
......@@ -749,4 +758,35 @@ public class WechatController extends BaseController {
}
return ResponseHelper.buildResponse(urlString);
}
/**
* 测试模板消息
*
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@GetMapping(value = "/testDispatch/{taskId}")
@ApiOperation(httpMethod = "GET", value = "测试模板消息", notes = "测试模板消息")
public ResponseModel<JSONObject> testDispatch(@PathVariable Long taskId) {
DispatchTask task = dispatchTaskServiceImpl.getById(taskId);
String tel = task.getResponseUserTel();
tel = "15353367807";
// 获取openId
WechatRelation relation = wechatRelationServiceImpl.getOne(new LambdaQueryWrapper<WechatRelation>().eq(WechatRelation::getPhone,tel));
if(relation == null ) {
throw new BadRequest("该用户未在系统中注册,无法发送模板消息"); // 接口迁移到服务中时改成日志形式;
}
WechatMessageDto test = new WechatMessageDto();
Map<String, String> data = new HashMap<>();
data.put("dispatchTime", DateUtils.date2LongStr(task.getDispatchTime()));
AlertCalledFormDto dto = iAlertCalledService.selectAlertCalledByIdNoCache(task.getAlertId());
data.put("address",dto.getAlertCalledDto().getAddress());
test.setUrl("www.baidu.com");
test.setTemplateId("SLjmNJoCNLC3FBcYzWzR-u3el0kqXf8WMTmzw8dAQm4");
test.setData(data);
JSONObject result = wechatService.sendWechatModelMessage(relation.getOpenId(),test);
return ResponseHelper.buildResponse(result);
}
}
......@@ -209,7 +209,7 @@ public class DispatchTaskServiceImpl extends BaseService<DispatchTaskDto,Dispatc
set(DispatchPaper::getSaveOrgName,task.getResponseOrgName()).
eq(DispatchPaper::getSequenceNbr,task.getPaperId()));
// 如果存在救援过程表更新救援过程表中信息
if(task.getIsSaveTask()) {
if(task.getIsSaveTask() != null && task.getIsSaveTask()) {
rescueProcessServiceImpl.update(new LambdaUpdateWrapper<RescueProcess>().
set(RescueProcess::getArriveTime,now).
set(RescueProcess::getArriveStatus,true).
......@@ -243,6 +243,8 @@ public class DispatchTaskServiceImpl extends BaseService<DispatchTaskDto,Dispatc
set(RescueProcess::getRescueFeedbackType,"主动反馈").
set(RescueProcess::getRescueFeedbackCode,"856").
eq(RescueProcess::getAlertId,task.getAlertId()));
task.setSaveTime(now);
this.updateById(task);
}
// 更新到达日志
repairConsultServiceImpl.saveRepairConsultByAlertIdType( task.getAlertId(),"JC",taskId,null);
......@@ -263,12 +265,13 @@ public class DispatchTaskServiceImpl extends BaseService<DispatchTaskDto,Dispatc
// 更新反馈信息
DispatchTask task = this.getById(wechatDispatchFeedbackDto.getTaskId());
DispatchPaper dispatchPaper = dispatchPaperServiceImpl.getById(task.getPaperId());
Date now = new Date();
// 反馈方式
dispatchPaper.setFeedbackCode("856");
dispatchPaper.setFeedbackType("主动反馈");
// 反馈时间
dispatchPaper.setFeedbackFinishTime(new Date());
dispatchPaper.setFeedbackTime(new Date());
dispatchPaper.setFeedbackFinishTime(now);
dispatchPaper.setFeedbackTime(now);
// 反馈人信息
dispatchPaper.setFeedbackUid(task.getResponseUserId() + "");
dispatchPaper.setFeedbackUname(task.getResponseUserName());
......
package com.yeejoin.amos.boot.module.tzs.biz.service.impl;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yeejoin.amos.boot.biz.common.utils.RedisKey;
import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
import com.yeejoin.amos.boot.module.tzs.api.dto.WechatMessageDto;
import com.yeejoin.amos.boot.module.tzs.api.service.IWechatService;
import com.yeejoin.amos.boot.module.tzs.biz.utils.HttpUtils;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -113,4 +115,35 @@ public class WechatServiceImpl implements IWechatService {
}
}
@Override
public JSONObject sendWechatModelMessage(String openId, WechatMessageDto wechatMessageDto) {
String accessToken = this.getAccessToken();
String modelMessageUrl = wechatUrl + "/cgi-bin/message/template/send?access_token=" + accessToken;
JSONObject messageBody = new JSONObject();
messageBody.put("touser",openId);
messageBody.put("template_id",wechatMessageDto.getTemplateId());
if(wechatMessageDto.getUrl() != null) {
messageBody.put("url",wechatMessageDto.getUrl());
}
JSONObject data = new JSONObject();
Map<String, String> datas = wechatMessageDto.getData();
for(Map.Entry<String, String> temp : datas.entrySet()) {
JSONObject tempObj = new JSONObject();
tempObj.put("value",temp.getValue());
data.put(temp.getKey(),tempObj);
}
messageBody.put("data",data);
System.out.println(messageBody.toJSONString());
String responseStr = HttpUtils.doPost(modelMessageUrl, messageBody.toJSONString());
JSONObject response = null;
try {
response = JSONObject.parseObject(responseStr);
} catch (Exception e) {
throw new BadRequest("发送模板消息出错:" + e.getMessage());
}
return response;
}
}
\ No newline at end of file
......@@ -1546,4 +1546,32 @@
update cb_data_dictionary set type_desc = null where sequence_nbr = 1188 ;
</sql>
</changeSet>
<changeSet id="2021-09-272" author="chenzhao">
<preConditions onFail="MARK_RAN">
<tableExists tableName="cb_data_dictionary"/>
</preConditions>
<comment>删除无用数据</comment>
<sql>
update cb_data_dictionary set parent = null where sequence_nbr = 1237 ;
update cb_data_dictionary set parent = null where sequence_nbr = 1238 ;
update cb_data_dictionary set parent = null where sequence_nbr = 1239 ;
update cb_data_dictionary set parent = null where sequence_nbr = 1240 ;
update cb_data_dictionary set parent = null where sequence_nbr = 1241 ;
</sql>
</changeSet>
<changeSet author="chenzhao" id="2021-09-27-cz-1">
<preConditions onFail="MARK_RAN">
<tableExists tableName="cb_fire_experts"/>
</preConditions>
<comment>BUG 2928 表中新增两个字段用来保存详细地址值 </comment>
<sql>
ALTER TABLE `cb_fire_experts` add native_place_val varchar(255) COMMENT '户籍所在地详细地址';
ALTER TABLE `cb_fire_experts` add residence_detail_val varchar(255) COMMENT '现居住地详细地址';
</sql>
</changeSet>
</databaseChangeLog>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment