Commit da6656c1 by wuchao

增加双属地管理

parent bef36eac
package com.scpyun.platform.jilinsscgsdp.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.scpyun.base.bean.Page;
import com.scpyun.base.core.annotation.Api;
import com.scpyun.base.core.annotation.ApiOperation;
import com.scpyun.base.core.exception.CustomException;
import com.scpyun.base.core.utils.StringUtils;
import com.scpyun.base.db.service.CommonService;
import com.scpyun.platform.jilinsscgsdp.utils.DataScopeUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
@Api("双属地管理")
@Service("keyPersonRatingDual")
public class KeyPersonRatingDualServiceImpl {
@Autowired
private CommonService commonService;
private static final String SUCCESS = "success";
private static final String NAMESPACE = "com.scpyun.platform.standard.jilinsscgsdp.keyPersonRatingDual.";
@ApiOperation(value = "推送tab列表", desc = "查询我辖区内发起的推送记录")
public Page<Map<String, Object>> selectPushList(Page<Map<String, Object>> page) {
page.setParams(DataScopeUtil.resetUser(page.getParams()));
Map<String, Object> params = normalizePageParams(page);
OperatorContext operator = resolveOperator(params.get("_user"));
ensureArea(operator);
params.put("operator_area_id", operator.getAreaId());
params.put("push_type", "0");
params.put("sys_type", resolveCategory(params));
page.setParams(params);
return commonService.findPage(NAMESPACE + "selectPushList", page);
}
@ApiOperation(value = "虎丘当前登录人信息", desc = "查询当前登录人信息")
public Map<String, Object> selectCurrentUserInfo(Map<String, Object> map) {
return DataScopeUtil.resetUser(map);
}
@ApiOperation(value = "转发tab列表", desc = "查询我辖区内发起的转发记录")
public Page<Map<String, Object>> selectForwardList(Page<Map<String, Object>> page) {
page.setParams(DataScopeUtil.resetUser(page.getParams()));
Map<String, Object> params = normalizePageParams(page);
OperatorContext operator = resolveOperator(params.get("_user"));
ensureArea(operator);
params.put("operator_area_id", operator.getAreaId());
params.put("push_type", "1");
params.put("sys_type", resolveCategory(params));
page.setParams(params);
return commonService.findPage(NAMESPACE + "selectForwardList", page);
}
@ApiOperation(value = "待接收列表", desc = "查询推送/转发给我辖区的记录")
public Page<Map<String, Object>> selectPendingList(Page<Map<String, Object>> page) {
page.setParams(DataScopeUtil.resetUser(page.getParams()));
Map<String, Object> params = normalizePageParams(page);
OperatorContext operator = resolveOperator(params.get("_user"));
ensureArea(operator);
params.put("operator_area_id", operator.getAreaId());
params.put("sys_type", resolveCategory(params));
page.setParams(params);
return commonService.findPage(NAMESPACE + "selectPendingList", page);
}
@ApiOperation(value = "接收中人员列表", desc = "查询当前归属于我辖区的人员(D2)")
public Page<Map<String, Object>> selectReceivingList(Page<Map<String, Object>> page) {
page.setParams(DataScopeUtil.resetUser(page.getParams()));
Map<String, Object> params = normalizePageParams(page);
OperatorContext operator = resolveOperator(params.get("_user"));
ensureArea(operator);
params.put("operator_area_id", operator.getAreaId());
params.put("sys_type", resolveCategory(params));
page.setParams(params);
return commonService.findPage(NAMESPACE + "selectReceivingList", page);
}
@ApiOperation(value = "被接收人员列表", desc = "查询我辖区发出的并被其他区域接收的人员")
public Page<Map<String, Object>> selectBeReceivedList(Page<Map<String, Object>> page) {
page.setParams(DataScopeUtil.resetUser(page.getParams()));
Map<String, Object> params = normalizePageParams(page);
OperatorContext operator = resolveOperator(params.get("_user"));
ensureArea(operator);
params.put("operator_area_id", operator.getAreaId());
params.put("sys_type", resolveCategory(params));
page.setParams(params);
return commonService.findPage(NAMESPACE + "selectBeReceivedList", page);
}
@ApiOperation(value = "推送人员选择列表", desc = "查询本辖区可推送的重点人员")
public Page<Map<String, Object>> selectBelongPersonList(Page<Map<String, Object>> page) {
page.setParams(DataScopeUtil.resetUser(page.getParams()));
Map<String, Object> params = normalizePageParams(page);
OperatorContext operator = resolveOperator(params.get("_user"));
ensureArea(operator);
params.put("operator_area_id", operator.getAreaId());
params.put("sys_type", resolveCategory(params));
page.setParams(params);
return commonService.findPage(NAMESPACE + "selectBelongPersonList", page);
}
@ApiOperation(value = "推送/转发详情", desc = "根据记录ID获取完整信息")
public Map<String, Object> getDualDetail(Map<String, Object> map) {
map = DataScopeUtil.resetUser(map);
Map<String, Object> params = normalizeParams(map);
if (StringUtils.isEmpty(StringUtils.toString(params.get("id")))) {
throw new CustomException("记录ID不可为空");
}
Map<String, Object> detail = commonService.getObject(NAMESPACE + "getDualDetail", params);
if (detail == null) {
throw new CustomException("未查询到记录");
}
return detail;
}
@ApiOperation(value = "发起推送/转发", desc = "推送tab及转发操作共用")
public String savePush(Map<String, Object> map) {
map = DataScopeUtil.resetUser(map);
Map<String, Object> params = normalizeParams(map);
OperatorContext operator = resolveOperator(params.get("_user"));
ensureArea(operator);
String keyPersonId = StringUtils.toString(params.get("key_person_id"));
String sysType = resolveCategory(params);
String pushType = StringUtils.isEmpty(StringUtils.toString(params.get("push_type"))) ? "0" : StringUtils.toString(params.get("push_type"));
String targetAreaId = StringUtils.toString(params.get("recvie_area_id"));
String targetStreetId = StringUtils.toString(params.get("recvie_street_id"));
if (StringUtils.isEmpty(keyPersonId)) {
throw new CustomException("请选择重点人员");
}
if (StringUtils.isEmpty(targetAreaId)) {
throw new CustomException("请选择推送区县");
}
if (StringUtils.isEmpty(targetStreetId)) {
throw new CustomException("请选择推送街道");
}
if (operator.getAreaId().equals(targetAreaId)) {
throw new CustomException("不可推送至本区域");
}
params.put("key_person_id", keyPersonId);
params.put("sys_type", sysType);
Map<String, Object> record = new HashMap<>();
Map<String, Object> personBase = commonService.getObject(NAMESPACE + "getPersonBase", params);
if (personBase == null) {
throw new CustomException("未查询到重点人员");
}
Map<String, Object> dualCtx = commonService.getObject(NAMESPACE + "getDualContextByKeyPersonId", params);
Object pendingObj = commonService.getObject(NAMESPACE + "countPendingPush", params);
String pendingStr = StringUtils.toString(pendingObj);
int pendingCount = StringUtils.isEmpty(pendingStr) ? 0 : Integer.parseInt(pendingStr);
if (pendingCount > 0) {
throw new CustomException("当前人员已有待接收记录,请勿重复发起");
}
Date now = new Date();
record.put("id", UUID.randomUUID().toString().replace("-", ""));
record.put("key_person_id", keyPersonId);
record.put("sys_type", sysType);
record.put("push_type", pushType);
record.put("push_status", "1");
record.put("push_reason", params.get("push_reason"));
record.put("push_time", now);
record.put("push_user", operator.getUserId());
record.put("create_user", operator.getUserId());
record.put("create_time", now);
record.put("update_user", operator.getUserId());
record.put("update_time", now);
record.put("recvie_region", StringUtils.toString(params.get("recvie_region")));
record.put("recvie_city_id", params.get("recvie_city_id"));
record.put("recvie_area_id", targetAreaId);
record.put("recvie_street_id", targetStreetId);
record.put("recvie_community_id", params.get("recvie_community_id"));
if ("0".equals(pushType)) {
// 首次推送,取人员所属区域作为归属&推送方
if (dualCtx != null) {
throw new CustomException("该人员已在外部归属,无法再次推送");
}
String belongRegion = StringUtils.toString(personBase.get("region"));
record.put("belong_region", belongRegion);
record.put("belong_city_id", personBase.get("city_id"));
record.put("belong_area_id", personBase.get("area_id"));
record.put("belong_street_id", personBase.get("street_id"));
record.put("belong_community_id", personBase.get("community_id"));
record.put("belong_user_id", operator.getUserId());
record.put("push_region", belongRegion);
record.put("push_city_id", personBase.get("city_id"));
record.put("push_area_id", personBase.get("area_id"));
record.put("push_street_id", personBase.get("street_id"));
record.put("push_community_id", personBase.get("community_id"));
} else {
if (dualCtx == null) {
throw new CustomException("当前人员不在双属地列表,无法转发");
}
if (!operator.getAreaId().equals(StringUtils.toString(dualCtx.get("area_id")))) {
throw new CustomException("仅当前接收区域可转发");
}
if (targetAreaId.equals(StringUtils.toString(dualCtx.get("belong_area_id")))) {
throw new CustomException("转发不可回归归属地,请使用退回操作");
}
String belongRegion = StringUtils.toString(dualCtx.get("belong_region"));
record.put("belong_region", belongRegion);
record.put("belong_city_id", dualCtx.get("belong_city_id"));
record.put("belong_area_id", dualCtx.get("belong_area_id"));
record.put("belong_street_id", dualCtx.get("belong_street_id"));
record.put("belong_community_id", dualCtx.get("belong_community_id"));
String belongUser = StringUtils.toString(dualCtx.get("belong_user_id"));
record.put("belong_user_id", StringUtils.isEmpty(belongUser) ? operator.getUserId() : belongUser);
record.put("push_region", dualCtx.get("region"));
record.put("push_city_id", dualCtx.get("city_id"));
record.put("push_area_id", dualCtx.get("area_id"));
record.put("push_street_id", dualCtx.get("street_id"));
record.put("push_community_id", dualCtx.get("community_id"));
}
if (commonService.insert(NAMESPACE + "insertDualRecord", record) != 1) {
throw new CustomException("保存推送失败");
}
if ("1".equals(pushType) && dualCtx != null) {
Map<String, Object> turnParams = new HashMap<>();
turnParams.put("id", dualCtx.get("id"));
turnParams.put("turn_status", "1");
turnParams.put("update_user", operator.getUserId());
turnParams.put("update_time", now);
commonService.update(NAMESPACE + "updateDualPersonTurnStatus", turnParams);
}
return SUCCESS;
}
@ApiOperation(value = "撤回推送/转发", desc = "仅待接收状态可撤回")
public String revokePush(Map<String, Object> map) {
map = DataScopeUtil.resetUser(map);
Map<String, Object> params = normalizeParams(map);
OperatorContext operator = resolveOperator(params.get("_user"));
ensureArea(operator);
String id = StringUtils.toString(params.get("id"));
if (StringUtils.isEmpty(id)) {
throw new CustomException("记录ID不可为空");
}
Map<String, Object> record = commonService.getObject(NAMESPACE + "getDualRecordById", params);
if (record == null) {
throw new CustomException("未查询到记录");
}
if (!"1".equals(StringUtils.toString(record.get("push_status")))) {
throw new CustomException("仅待接收状态可撤回");
}
if (!operator.getAreaId().equals(StringUtils.toString(record.get("push_area_id")))) {
throw new CustomException("无权撤回他区记录");
}
Map<String, Object> update = new HashMap<>();
update.put("id", id);
update.put("update_user", operator.getUserId());
update.put("update_time", new Date());
if (commonService.update(NAMESPACE + "revokeDualRecord", update) != 1) {
throw new CustomException("撤回失败");
}
if ("1".equals(StringUtils.toString(record.get("push_type")))) {
Map<String, Object> turnParams = new HashMap<>();
turnParams.put("key_person_id", record.get("key_person_id"));
turnParams.put("turn_status", "0");
turnParams.put("update_user", operator.getUserId());
turnParams.put("update_time", new Date());
commonService.update(NAMESPACE + "resetDualPersonTurnStatus", turnParams);
}
return SUCCESS;
}
@ApiOperation(value = "同意接收", desc = "待接收tab操作")
public String acceptPush(Map<String, Object> map) {
map = DataScopeUtil.resetUser(map);
Map<String, Object> params = normalizeParams(map);
OperatorContext operator = resolveOperator(params.get("_user"));
ensureArea(operator);
String id = StringUtils.toString(params.get("id"));
if (StringUtils.isEmpty(id)) {
throw new CustomException("记录ID不可为空");
}
String communityId = StringUtils.toString(params.get("recvie_community_id"));
if (StringUtils.isEmpty(communityId)) {
throw new CustomException("请选择社区信息");
}
Map<String, Object> record = commonService.getObject(NAMESPACE + "getDualRecordById", params);
if (record == null) {
throw new CustomException("未查询到记录");
}
if (!"1".equals(StringUtils.toString(record.get("push_status")))) {
throw new CustomException("当前状态不可接收");
}
if (!operator.getAreaId().equals(StringUtils.toString(record.get("recvie_area_id")))) {
throw new CustomException("仅目标区域可接收");
}
Date now = new Date();
Map<String, Object> update = new HashMap<>();
update.put("id", id);
update.put("recvie_community_id", communityId);
update.put("audit_user", operator.getUserId());
update.put("audit_time", now);
update.put("recvie_time", now);
update.put("update_user", operator.getUserId());
update.put("update_time", now);
if (commonService.update(NAMESPACE + "acceptDualRecord", update) != 1) {
throw new CustomException("接收失败");
}
Map<String, Object> ctx = new HashMap<>();
ctx.put("key_person_id", record.get("key_person_id"));
Map<String, Object> dualCtx = commonService.getObject(NAMESPACE + "getDualContextByKeyPersonId", ctx);
Map<String, Object> personUpsert = new HashMap<>();
if (dualCtx == null) {
personUpsert.put("id", UUID.randomUUID().toString().replace("-", ""));
personUpsert.put("create_user", operator.getUserId());
personUpsert.put("create_time", now);
personUpsert.put("key_person_id", record.get("key_person_id"));
personUpsert.put("sys_type", record.get("sys_type"));
} else {
personUpsert.put("id", dualCtx.get("id"));
personUpsert.put("update_user", operator.getUserId());
personUpsert.put("update_time", now);
}
personUpsert.put("dual_id", id);
personUpsert.put("region", record.get("recvie_region"));
personUpsert.put("city_id", record.get("recvie_city_id"));
personUpsert.put("area_id", record.get("recvie_area_id"));
personUpsert.put("street_id", record.get("recvie_street_id"));
personUpsert.put("community_id", communityId);
personUpsert.put("turn_status", "0");
if (dualCtx == null) {
if (commonService.insert(NAMESPACE + "insertDualPerson", personUpsert) != 1) {
throw new CustomException("写入归属表失败");
}
} else {
if (commonService.update(NAMESPACE + "updateDualPerson", personUpsert) != 1) {
throw new CustomException("更新归属表失败");
}
}
return SUCCESS;
}
@ApiOperation(value = "拒绝接收", desc = "待接收tab操作")
public String rejectPush(Map<String, Object> map) {
map = DataScopeUtil.resetUser(map);
Map<String, Object> params = normalizeParams(map);
OperatorContext operator = resolveOperator(params.get("_user"));
ensureArea(operator);
String id = StringUtils.toString(params.get("id"));
if (StringUtils.isEmpty(id)) {
throw new CustomException("记录ID不可为空");
}
String reason = StringUtils.toString(params.get("reject_reason"));
if (StringUtils.isEmpty(reason)) {
throw new CustomException("请填写拒绝原因");
}
Map<String, Object> record = commonService.getObject(NAMESPACE + "getDualRecordById", params);
if (record == null) {
throw new CustomException("未查询到记录");
}
if (!"1".equals(StringUtils.toString(record.get("push_status")))) {
throw new CustomException("当前状态不可拒绝");
}
if (!operator.getAreaId().equals(StringUtils.toString(record.get("recvie_area_id")))) {
throw new CustomException("仅目标区域可拒绝");
}
Date now = new Date();
Map<String, Object> update = new HashMap<>();
update.put("id", id);
update.put("reject_reason", reason);
update.put("audit_user", operator.getUserId());
update.put("audit_time", now);
update.put("update_user", operator.getUserId());
update.put("update_time", now);
if (commonService.update(NAMESPACE + "rejectDualRecord", update) != 1) {
throw new CustomException("拒绝失败");
}
if ("1".equals(StringUtils.toString(record.get("push_type")))) {
Map<String, Object> turnParams = new HashMap<>();
turnParams.put("key_person_id", record.get("key_person_id"));
turnParams.put("turn_status", "0");
turnParams.put("update_user", operator.getUserId());
turnParams.put("update_time", now);
commonService.update(NAMESPACE + "resetDualPersonTurnStatus", turnParams);
}
return SUCCESS;
}
@ApiOperation(value = "退回人员", desc = "接收中tab退回归属地")
public String returnPerson(Map<String, Object> map) {
map = DataScopeUtil.resetUser(map);
Map<String, Object> params = normalizeParams(map);
OperatorContext operator = resolveOperator(params.get("_user"));
ensureArea(operator);
String dualPersonId = StringUtils.toString(params.get("dual_person_id"));
if (StringUtils.isEmpty(dualPersonId)) {
throw new CustomException("缺少归属记录ID");
}
Map<String, Object> dualPerson = commonService.getObject(NAMESPACE + "getDualPersonById", params);
if (dualPerson == null) {
throw new CustomException("未找到归属记录");
}
if (!operator.getAreaId().equals(StringUtils.toString(dualPerson.get("area_id")))) {
throw new CustomException("仅当前接收区域可退回");
}
String dualId = StringUtils.toString(dualPerson.get("dual_id"));
if (StringUtils.isEmpty(dualId)) {
throw new CustomException("归属数据异常,缺少推送记录");
}
Date now = new Date();
Map<String, Object> update = new HashMap<>();
update.put("id", dualId);
update.put("return_reason", params.get("return_reason"));
update.put("return_user", operator.getUserId());
update.put("return_time", now);
update.put("update_user", operator.getUserId());
update.put("update_time", now);
if (commonService.update(NAMESPACE + "returnDualRecord", update) != 1) {
throw new CustomException("退回失败");
}
if (commonService.delete(NAMESPACE + "deleteDualPerson", dualPerson) != 1) {
throw new CustomException("删除归属记录失败");
}
return SUCCESS;
}
private Map<String, Object> normalizePageParams(Page<Map<String, Object>> page) {
Map<String, Object> params = page.getParams() == null ? new HashMap<>() : new HashMap<>(page.getParams());
Object inner = params.get("params");
if (inner instanceof Map) {
@SuppressWarnings("unchecked")
Map<String, Object> innerParams = (Map<String, Object>) inner;
Map<String, Object> merged = new HashMap<>(params);
merged.remove("params");
merged.putAll(innerParams);
params = merged;
}
page.setParams(params);
return params;
}
private Map<String, Object> normalizeParams(Map<String, Object> map) {
return map == null ? new HashMap<>() : new HashMap<>(map);
}
private OperatorContext resolveOperator(Object userObj) {
if (userObj == null) {
throw new CustomException("未获取到登录信息");
}
JSONObject json = JSONObject.parseObject(JSONObject.toJSONString(userObj));
Map<String, String> pos = DataScopeUtil.getPosition(userObj);
OperatorContext ctx = new OperatorContext();
ctx.setUserId(json.getString("id"));
if (pos != null) {
ctx.setAreaId(pos.get("area_id"));
}
return ctx;
}
private void ensureArea(OperatorContext operator) {
if (operator == null || StringUtils.isEmpty(operator.getAreaId())) {
throw new CustomException("未定位到所属区县,无法执行操作");
}
}
private String resolveCategory(Map<String, Object> params) {
Object sysType = params.get("sys_type");
if (sysType == null) {
sysType = params.get("rating_dict_type");
}
if (sysType == null) {
sysType = params.get("category");
}
if (sysType == null) {
throw new CustomException("缺少重点人员类别");
}
String value = StringUtils.toString(sysType);
params.put("sys_type", value);
return value;
}
private static class OperatorContext {
private String userId;
private String areaId;
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getAreaId() {
return areaId;
}
public void setAreaId(String areaId) {
this.areaId = areaId;
}
}
}
......@@ -25,6 +25,7 @@ public class KeyPersonVisitRecordServiceImpl {
@ApiOperation(value = "回访记录列表", desc = "回访记录列表(含数据范围、排序)")
public Page<Map<String, Object>> findVisitRecordList(Page<Map<String, Object>> page) {
Map<String, Object> params = page.getParams() == null ? new HashMap<>() : page.getParams();
// 兼容前端入参 { params:{...}, pageNo, pageSize },有些网关会再包一层 params
Object inner = params.get("params");
......
......@@ -108,6 +108,26 @@ public class DataScopeUtil {
return false;
}
public static Map<String, Object> resetUser(Map<String, Object> map) {
Object _user = map.get("_user");
Map queryMap = new HashMap();
JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(_user));
String company_id = user.getString("company_id");
if (company_id.length() == 12) {
user.put("area_id", company_id);
map.put("_user", user);
return map;
}
queryMap.put("id", company_id);
Map<String, Object> result = commonService.getObject(namespace + "selectOfficeById", queryMap);
String id = result.get("id").toString();
String area_id = result.get("area_id").toString();
user.put("area_id", area_id);
map.put("_user", user);
return map;
}
public static CommonService getCommonService() {
return commonService;
......
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//oos.juyouhx.com//DTD Mapper 3.0//EN" "http://oss.juyouhx.com/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.scpyun.platform.standard.jilinsscgsdp.keyPersonRatingDual" name="双属地管理">
<sql id="personUnion">
SELECT
id,
sys_type,
name,
CAST(AES_DECRYPT(FROM_BASE64(card_no),'*#id#') AS CHAR) AS card_no,
city_id,
area_id,
street_id,
community_id
FROM jl_key_person
UNION ALL
SELECT
id,
sys_type,
name,
CAST(AES_DECRYPT(FROM_BASE64(card_no),'*#id#') AS CHAR) AS card_no,
city_id,
area_id,
street_id,
community_id
FROM jl_key_person_minor
</sql>
<!-- 推送tab列表(push_type=0) -->
<select id="selectPushList" parameterType="page" resultType="map">
SELECT
dualRecord.id,
dualRecord.key_person_id,
dualRecord.sys_type,
dualRecord.push_status,
dualRecord.push_reason,
dualRecord.push_type,
dualRecord.push_time,
dualRecord.push_user,
dualRecord.recvie_region,
dualRecord.recvie_city_id,
dualRecord.recvie_area_id,
dualRecord.recvie_street_id,
dualRecord.recvie_community_id,
person.name,
person.card_no,
recCity.name AS recvie_city_name,
recArea.name AS recvie_area_name,
recStreet.name AS recvie_street_name,
recCommunity.name AS recvie_community_name,
pushUser.name AS push_user_name,
auditUser.name AS audit_user_name,
returnUser.name AS return_user_name
FROM jl_key_person_rating_dual dualRecord
LEFT JOIN (
<include refid="personUnion"/>
) person ON person.id = dualRecord.key_person_id
LEFT JOIN sys_office recCity ON recCity.id = dualRecord.recvie_city_id
LEFT JOIN sys_office recArea ON recArea.id = dualRecord.recvie_area_id
LEFT JOIN sys_office recStreet ON recStreet.id = dualRecord.recvie_street_id
LEFT JOIN sys_office recCommunity ON recCommunity.id = dualRecord.recvie_community_id
LEFT JOIN sys_user pushUser ON pushUser.id = dualRecord.push_user
LEFT JOIN sys_user auditUser ON auditUser.id = dualRecord.audit_user
LEFT JOIN sys_user returnUser ON returnUser.id = dualRecord.return_user
<where>
AND dualRecord.sys_type = #{params.sys_type}
AND dualRecord.push_type = '0'
AND dualRecord.push_area_id = #{params.operator_area_id}
<if test="params.name != null and params.name != ''">
AND person.name LIKE CONCAT('%', #{params.name}, '%')
</if>
<if test="params.card_no != null and params.card_no != ''">
AND person.card_no = #{params.card_no}
</if>
<if test="params.city_id != null and params.city_id != ''">
AND dualRecord.recvie_city_id = #{params.city_id}
</if>
<if test="params.area_id != null and params.area_id != ''">
AND dualRecord.recvie_area_id = #{params.area_id}
</if>
<if test="params.street_id != null and params.street_id != ''">
AND dualRecord.recvie_street_id = #{params.street_id}
</if>
<if test="params.community_id != null and params.community_id != ''">
AND dualRecord.recvie_community_id = #{params.community_id}
</if>
<if test="params.push_status != null and params.push_status != ''">
AND dualRecord.push_status = #{params.push_status}
</if>
<!-- 数据范围 -->
<if test="params.scope_grade != null and params.scope_grade != ''">
<choose>
<when test='params.scope_grade == "3"'>
AND person.city_id = #{params._user.area_id}
</when>
<when test='params.scope_grade == "4"'>
AND person.area_id = #{params._user.area_id}
</when>
<when test='params.scope_grade == "5"'>
AND person.street_id = #{params._user.area_id}
</when>
<when test='params.scope_grade == "6"'>
AND person.community_id = #{params._user.area_id}
</when>
</choose>
</if>
</where>
ORDER BY dualRecord.create_time DESC
</select>
<!-- 转发tab列表(push_type=1) -->
<select id="selectForwardList" parameterType="page" resultType="map">
SELECT
dualRecord.id,
dualRecord.key_person_id,
dualRecord.sys_type,
dualRecord.push_status,
dualRecord.push_reason,
dualRecord.push_type,
dualRecord.push_time,
dualRecord.push_user,
dualRecord.recvie_region,
dualRecord.recvie_city_id,
dualRecord.recvie_area_id,
dualRecord.recvie_street_id,
dualRecord.recvie_community_id,
dualRecord.audit_time,
person.name,
person.card_no,
recCity.name AS recvie_city_name,
recArea.name AS recvie_area_name,
recStreet.name AS recvie_street_name,
recCommunity.name AS recvie_community_name,
pushUser.name AS push_user_name,
auditUser.name AS audit_user_name
FROM jl_key_person_rating_dual dualRecord
LEFT JOIN (
<include refid="personUnion"/>
) person ON person.id = dualRecord.key_person_id
LEFT JOIN sys_office recCity ON recCity.id = dualRecord.recvie_city_id
LEFT JOIN sys_office recArea ON recArea.id = dualRecord.recvie_area_id
LEFT JOIN sys_office recStreet ON recStreet.id = dualRecord.recvie_street_id
LEFT JOIN sys_office recCommunity ON recCommunity.id = dualRecord.recvie_community_id
LEFT JOIN sys_user pushUser ON pushUser.id = dualRecord.push_user
LEFT JOIN sys_user auditUser ON auditUser.id = dualRecord.audit_user
<where>
AND dualRecord.sys_type = #{params.sys_type}
AND dualRecord.push_type = '1'
AND dualRecord.push_area_id = #{params.operator_area_id}
<if test="params.name != null and params.name != ''">
AND person.name LIKE CONCAT('%', #{params.name}, '%')
</if>
<if test="params.card_no != null and params.card_no != ''">
AND person.card_no = #{params.card_no}
</if>
<if test="params.city_id != null and params.city_id != ''">
AND dualRecord.recvie_city_id = #{params.city_id}
</if>
<if test="params.area_id != null and params.area_id != ''">
AND dualRecord.recvie_area_id = #{params.area_id}
</if>
<if test="params.street_id != null and params.street_id != ''">
AND dualRecord.recvie_street_id = #{params.street_id}
</if>
<if test="params.community_id != null and params.community_id != ''">
AND dualRecord.recvie_community_id = #{params.community_id}
</if>
<if test="params.push_status != null and params.push_status != ''">
AND dualRecord.push_status = #{params.push_status}
</if>
<!-- 数据范围 -->
<if test="params.scope_grade != null and params.scope_grade != ''">
<choose>
<when test='params.scope_grade == "3"'>
AND person.city_id = #{params._user.area_id}
</when>
<when test='params.scope_grade == "4"'>
AND person.area_id = #{params._user.area_id}
</when>
<when test='params.scope_grade == "5"'>
AND person.street_id = #{params._user.area_id}
</when>
<when test='params.scope_grade == "6"'>
AND person.community_id = #{params._user.area_id}
</when>
</choose>
</if>
</where>
ORDER BY dualRecord.create_time DESC
</select>
<!-- 待接收tab -->
<select id="selectPendingList" parameterType="page" resultType="map">
SELECT
dualRecord.id,
dualRecord.key_person_id,
dualRecord.sys_type,
dualRecord.push_status,
dualRecord.push_reason,
dualRecord.reject_reason,
dualRecord.push_type,
dualRecord.push_time,
dualRecord.audit_time,
dualRecord.recvie_region,
dualRecord.recvie_city_id,
dualRecord.recvie_area_id,
dualRecord.recvie_street_id,
dualRecord.recvie_community_id,
pushCity.name AS push_city_name,
pushArea.name AS push_area_name,
pushStreet.name AS push_street_name,
pushCommunity.name AS push_community_name,
person.name,
person.card_no,
pushUser.name AS push_user_name,
auditUser.name AS audit_user_name
FROM jl_key_person_rating_dual dualRecord
LEFT JOIN (
<include refid="personUnion"/>
) person ON person.id = dualRecord.key_person_id
LEFT JOIN sys_office pushCity ON pushCity.id = dualRecord.push_city_id
LEFT JOIN sys_office pushArea ON pushArea.id = dualRecord.push_area_id
LEFT JOIN sys_office pushStreet ON pushStreet.id = dualRecord.push_street_id
LEFT JOIN sys_office pushCommunity ON pushCommunity.id = dualRecord.push_community_id
LEFT JOIN sys_user pushUser ON pushUser.id = dualRecord.push_user
LEFT JOIN sys_user auditUser ON auditUser.id = dualRecord.audit_user
<where>
AND dualRecord.sys_type = #{params.sys_type}
AND dualRecord.recvie_area_id = #{params.operator_area_id}
<if test="params.name != null and params.name != ''">
AND person.name LIKE CONCAT('%', #{params.name}, '%')
</if>
<if test="params.card_no != null and params.card_no != ''">
AND person.card_no = #{params.card_no}
</if>
<if test="params.city_id != null and params.city_id != ''">
AND dualRecord.push_city_id = #{params.city_id}
</if>
<if test="params.area_id != null and params.area_id != ''">
AND dualRecord.push_area_id = #{params.area_id}
</if>
<if test="params.street_id != null and params.street_id != ''">
AND dualRecord.push_street_id = #{params.street_id}
</if>
<if test="params.community_id != null and params.community_id != ''">
AND dualRecord.push_community_id = #{params.community_id}
</if>
<if test="params.push_status != null and params.push_status != ''">
AND dualRecord.push_status = #{params.push_status}
</if>
<!-- 数据范围 -->
<if test="params.scope_grade != null and params.scope_grade != ''">
<choose>
<when test='params.scope_grade == "3"'>
AND person.city_id = #{params._user.area_id}
</when>
<when test='params.scope_grade == "4"'>
AND person.area_id = #{params._user.area_id}
</when>
<when test='params.scope_grade == "5"'>
AND person.street_id = #{params._user.area_id}
</when>
<when test='params.scope_grade == "6"'>
AND person.community_id = #{params._user.area_id}
</when>
</choose>
</if>
</where>
ORDER BY dualRecord.create_time DESC
</select>
<!-- 接收中人员tab(D2当前归属为我) -->
<select id="selectReceivingList" parameterType="page" resultType="map">
SELECT
dp.id AS dual_person_id,
dp.key_person_id,
dp.sys_type,
dp.turn_status,
dp.dual_id,
dp.region,
dp.city_id,
dp.area_id,
dp.street_id,
dp.community_id,
person.name,
person.card_no,
city.name AS city_name,
area.name AS area_name,
street.name AS street_name,
community.name AS community_name,
dualRecord.belong_city_id,
dualRecord.belong_area_id,
dualRecord.belong_street_id,
dualRecord.belong_community_id,
belongCity.name AS belong_city_name,
belongArea.name AS belong_area_name,
belongStreet.name AS belong_street_name,
belongCommunity.name AS belong_community_name,
dualRecord.push_reason,
dualRecord.push_status,
dualRecord.push_type
FROM jl_key_person_rating_dual_person dp
LEFT JOIN jl_key_person_rating_dual dualRecord ON dualRecord.id = dp.dual_id
LEFT JOIN (
<include refid="personUnion"/>
) person ON person.id = dp.key_person_id
LEFT JOIN sys_office city ON city.id = dp.city_id
LEFT JOIN sys_office area ON area.id = dp.area_id
LEFT JOIN sys_office street ON street.id = dp.street_id
LEFT JOIN sys_office community ON community.id = dp.community_id
LEFT JOIN sys_office belongCity ON belongCity.id = dualRecord.belong_city_id
LEFT JOIN sys_office belongArea ON belongArea.id = dualRecord.belong_area_id
LEFT JOIN sys_office belongStreet ON belongStreet.id = dualRecord.belong_street_id
LEFT JOIN sys_office belongCommunity ON belongCommunity.id = dualRecord.belong_community_id
<where>
AND dp.area_id = #{params.operator_area_id}
AND dp.sys_type = #{params.sys_type}
<if test="params.name != null and params.name != ''">
AND person.name LIKE CONCAT('%', #{params.name}, '%')
</if>
<if test="params.card_no != null and params.card_no != ''">
AND person.card_no = #{params.card_no}
</if>
<if test="params.city_id != null and params.city_id != ''">
AND dp.city_id = #{params.city_id}
</if>
<if test="params.area_id != null and params.area_id != ''">
AND dp.area_id = #{params.area_id}
</if>
<if test="params.street_id != null and params.street_id != ''">
AND dp.street_id = #{params.street_id}
</if>
<if test="params.community_id != null and params.community_id != ''">
AND dp.community_id = #{params.community_id}
</if>
<if test="params.turn_status != null and params.turn_status != ''">
AND dp.turn_status = #{params.turn_status}
</if>
<!-- 数据范围 -->
<if test="params.scope_grade != null and params.scope_grade != ''">
<choose>
<when test='params.scope_grade == "3"'>
AND dp.city_id = #{params._user.area_id}
</when>
<when test='params.scope_grade == "4"'>
AND dp.area_id = #{params._user.area_id}
</when>
<when test='params.scope_grade == "5"'>
AND dp.street_id = #{params._user.area_id}
</when>
<when test='params.scope_grade == "6"'>
AND dp.community_id = #{params._user.area_id}
</when>
</choose>
</if>
</where>
ORDER BY dp.update_time DESC, dp.create_time DESC
</select>
<!-- 被接收人员tab(我辖区发出的,当前在他区) -->
<select id="selectBeReceivedList" parameterType="page" resultType="map">
SELECT
dp.key_person_id,
dp.sys_type,
dp.dual_id,
person.name,
person.card_no,
city.name AS recvie_city_name,
area.name AS recvie_area_name,
street.name AS recvie_street_name,
community.name AS recvie_community_name
FROM jl_key_person_rating_dual_person dp
INNER JOIN jl_key_person_rating_dual dualRecord ON dualRecord.id = dp.dual_id
LEFT JOIN (
<include refid="personUnion"/>
) person ON person.id = dp.key_person_id
LEFT JOIN sys_office city ON city.id = dp.city_id
LEFT JOIN sys_office area ON area.id = dp.area_id
LEFT JOIN sys_office street ON street.id = dp.street_id
LEFT JOIN sys_office community ON community.id = dp.community_id
<where>
AND dualRecord.belong_area_id = #{params.operator_area_id}
AND dp.sys_type = #{params.sys_type}
<if test="params.name != null and params.name != ''">
AND person.name LIKE CONCAT('%', #{params.name}, '%')
</if>
<if test="params.card_no != null and params.card_no != ''">
AND person.card_no = #{params.card_no}
</if>
<if test="params.city_id != null and params.city_id != ''">
AND dp.city_id = #{params.city_id}
</if>
<if test="params.area_id != null and params.area_id != ''">
AND dp.area_id = #{params.area_id}
</if>
<if test="params.street_id != null and params.street_id != ''">
AND dp.street_id = #{params.street_id}
</if>
<if test="params.community_id != null and params.community_id != ''">
AND dp.community_id = #{params.community_id}
</if>
<!-- 数据范围 -->
<if test="params.scope_grade != null and params.scope_grade != ''">
<choose>
<when test='params.scope_grade == "3"'>
AND dp.city_id = #{params._user.area_id}
</when>
<when test='params.scope_grade == "4"'>
AND dp.area_id = #{params._user.area_id}
</when>
<when test='params.scope_grade == "5"'>
AND dp.street_id = #{params._user.area_id}
</when>
<when test='params.scope_grade == "6"'>
AND dp.community_id = #{params._user.area_id}
</when>
</choose>
</if>
</where>
ORDER BY dp.update_time DESC, dp.create_time DESC
</select>
<!-- 推送人员选择 -->
<select id="selectBelongPersonList" parameterType="page" resultType="map">
SELECT
p.id AS key_person_id,
p.name,
CAST(AES_DECRYPT(FROM_BASE64(p.card_no),'*#id#') AS CHAR) AS card_no,
p.city_id,
p.area_id,
p.street_id,
p.community_id,
p.sys_type,
city.name AS city_name,
area.name AS area_name,
street.name AS street_name,
community.name AS community_name
FROM
<choose>
<when test='params.sys_type == "6"'>
jl_key_person_minor p
</when>
<otherwise>
jl_key_person p
</otherwise>
</choose>
LEFT JOIN sys_office city ON city.id = p.city_id
LEFT JOIN sys_office area ON area.id = p.area_id
LEFT JOIN sys_office street ON street.id = p.street_id
LEFT JOIN sys_office community ON community.id = p.community_id
<where>
AND p.area_id = #{params.operator_area_id}
<if test="params.name != null and params.name != ''">
AND p.name LIKE CONCAT('%', #{params.name}, '%')
</if>
<if test="params.card_no != null and params.card_no != ''">
AND p.card_no = TO_BASE64(AES_ENCRYPT(#{params.card_no},'*#id#'))
</if>
<if test="params.street_id != null and params.street_id != ''">
AND p.street_id = #{params.street_id}
</if>
<if test="params.community_id != null and params.community_id != ''">
AND p.community_id = #{params.community_id}
</if>
AND NOT EXISTS (
SELECT 1 FROM jl_key_person_rating_dual dualRecord
WHERE dualRecord.key_person_id = p.id
AND dualRecord.push_status = '1'
)
AND NOT EXISTS (
SELECT 1 FROM jl_key_person_rating_dual_person dp
WHERE dp.key_person_id = p.id
)
<!-- 数据范围 -->
<if test="params.scope_grade != null and params.scope_grade != ''">
<choose>
<when test='params.scope_grade == "3"'>
AND p.city_id = #{params._user.area_id}
</when>
<when test='params.scope_grade == "4"'>
AND p.area_id = #{params._user.area_id}
</when>
<when test='params.scope_grade == "5"'>
AND p.street_id = #{params._user.area_id}
</when>
<when test='params.scope_grade == "6"'>
AND p.community_id = #{params._user.area_id}
</when>
</choose>
</if>
</where>
ORDER BY p.create_date DESC
</select>
<select id="getDualDetail" parameterType="map" resultType="map">
SELECT
dualRecord.*,
person.name AS person_name,
person.card_no,
pushCity.name AS push_city_name,
pushArea.name AS push_area_name,
pushStreet.name AS push_street_name,
pushCommunity.name AS push_community_name,
recCity.name AS recvie_city_name,
recArea.name AS recvie_area_name,
recStreet.name AS recvie_street_name,
recCommunity.name AS recvie_community_name,
belongCity.name AS belong_city_name,
belongArea.name AS belong_area_name,
belongStreet.name AS belong_street_name,
belongCommunity.name AS belong_community_name,
pushUser.name AS push_user_name,
auditUser.name AS audit_user_name,
returnUser.name AS return_user_name
FROM jl_key_person_rating_dual dualRecord
LEFT JOIN (
<include refid="personUnion"/>
) person ON person.id = dualRecord.key_person_id
LEFT JOIN sys_office pushCity ON pushCity.id = dualRecord.push_city_id
LEFT JOIN sys_office pushArea ON pushArea.id = dualRecord.push_area_id
LEFT JOIN sys_office pushStreet ON pushStreet.id = dualRecord.push_street_id
LEFT JOIN sys_office pushCommunity ON pushCommunity.id = dualRecord.push_community_id
LEFT JOIN sys_office recCity ON recCity.id = dualRecord.recvie_city_id
LEFT JOIN sys_office recArea ON recArea.id = dualRecord.recvie_area_id
LEFT JOIN sys_office recStreet ON recStreet.id = dualRecord.recvie_street_id
LEFT JOIN sys_office recCommunity ON recCommunity.id = dualRecord.recvie_community_id
LEFT JOIN sys_office belongCity ON belongCity.id = dualRecord.belong_city_id
LEFT JOIN sys_office belongArea ON belongArea.id = dualRecord.belong_area_id
LEFT JOIN sys_office belongStreet ON belongStreet.id = dualRecord.belong_street_id
LEFT JOIN sys_office belongCommunity ON belongCommunity.id = dualRecord.belong_community_id
LEFT JOIN sys_user pushUser ON pushUser.id = dualRecord.push_user
LEFT JOIN sys_user auditUser ON auditUser.id = dualRecord.audit_user
LEFT JOIN sys_user returnUser ON returnUser.id = dualRecord.return_user
WHERE dualRecord.id = #{id}
</select>
<select id="getDualRecordById" parameterType="map" resultType="map">
SELECT *
FROM jl_key_person_rating_dual
WHERE id = #{id}
</select>
<select id="getDualPersonById" parameterType="map" resultType="map">
SELECT *
FROM jl_key_person_rating_dual_person
WHERE id = #{dual_person_id}
</select>
<select id="getPersonBase" parameterType="map" resultType="map">
SELECT
id,
sys_type,
region,
city_id,
area_id,
street_id,
community_id
FROM
<choose>
<when test='sys_type == "6"'>
jl_key_person_minor
</when>
<otherwise>
jl_key_person
</otherwise>
</choose>
WHERE id = #{key_person_id}
</select>
<select id="getDualContextByKeyPersonId" parameterType="map" resultType="map">
SELECT
dp.*,
dualRecord.belong_region,
dualRecord.belong_city_id,
dualRecord.belong_area_id,
dualRecord.belong_street_id,
dualRecord.belong_community_id,
dualRecord.belong_user_id
FROM jl_key_person_rating_dual_person dp
LEFT JOIN jl_key_person_rating_dual dualRecord ON dualRecord.id = dp.dual_id
WHERE dp.key_person_id = #{key_person_id}
ORDER BY dp.update_time DESC, dp.create_time DESC
LIMIT 1
</select>
<select id="countPendingPush" parameterType="map" resultType="string">
SELECT COUNT(1) FROM jl_key_person_rating_dual
WHERE key_person_id = #{key_person_id}
AND push_status = '1'
</select>
<insert id="insertDualRecord" parameterType="map">
INSERT INTO jl_key_person_rating_dual(
id,
key_person_id,
sys_type,
belong_user_id,
belong_region,
belong_city_id,
belong_area_id,
belong_street_id,
belong_community_id,
push_region,
push_city_id,
push_area_id,
push_street_id,
push_community_id,
recvie_region,
recvie_city_id,
recvie_area_id,
recvie_street_id,
recvie_community_id,
push_status,
push_reason,
push_type,
push_time,
push_user,
create_user,
create_time,
update_user,
update_time
) VALUES (
#{id},
#{key_person_id},
#{sys_type},
#{belong_user_id},
#{belong_region},
#{belong_city_id},
#{belong_area_id},
#{belong_street_id},
#{belong_community_id},
#{push_region},
#{push_city_id},
#{push_area_id},
#{push_street_id},
#{push_community_id},
#{recvie_region},
#{recvie_city_id},
#{recvie_area_id},
#{recvie_street_id},
#{recvie_community_id},
#{push_status},
#{push_reason},
#{push_type},
#{push_time},
#{push_user},
#{create_user},
#{create_time},
#{update_user},
#{update_time}
)
</insert>
<update id="revokeDualRecord" parameterType="map">
UPDATE jl_key_person_rating_dual
SET push_status = '0',
update_user = #{update_user},
update_time = #{update_time}
WHERE id = #{id}
AND push_status = '1'
</update>
<update id="acceptDualRecord" parameterType="map">
UPDATE jl_key_person_rating_dual
SET push_status = '2',
recvie_community_id = #{recvie_community_id},
audit_user = #{audit_user},
audit_time = #{audit_time},
update_user = #{update_user},
update_time = #{update_time}
WHERE id = #{id}
</update>
<update id="rejectDualRecord" parameterType="map">
UPDATE jl_key_person_rating_dual
SET push_status = '3',
reject_reason = #{reject_reason},
audit_user = #{audit_user},
audit_time = #{audit_time},
update_user = #{update_user},
update_time = #{update_time}
WHERE id = #{id}
</update>
<update id="returnDualRecord" parameterType="map">
UPDATE jl_key_person_rating_dual
SET push_status = '4',
return_reason = #{return_reason},
return_user = #{return_user},
return_time = #{return_time},
update_user = #{update_user},
update_time = #{update_time}
WHERE id = #{id}
</update>
<insert id="insertDualPerson" parameterType="map">
INSERT INTO jl_key_person_rating_dual_person(
id,
key_person_id,
sys_type,
dual_id,
region,
city_id,
area_id,
street_id,
community_id,
turn_status,
create_user,
create_time
) VALUES (
#{id},
#{key_person_id},
#{sys_type},
#{dual_id},
#{region},
#{city_id},
#{area_id},
#{street_id},
#{community_id},
#{turn_status},
#{create_user},
#{create_time}
)
</insert>
<update id="updateDualPerson" parameterType="map">
UPDATE jl_key_person_rating_dual_person
SET dual_id = #{dual_id},
region = #{region},
city_id = #{city_id},
area_id = #{area_id},
street_id = #{street_id},
community_id = #{community_id},
turn_status = #{turn_status},
update_user = #{update_user},
update_time = #{update_time}
WHERE id = #{id}
</update>
<update id="updateDualPersonTurnStatus" parameterType="map">
UPDATE jl_key_person_rating_dual_person
SET turn_status = #{turn_status},
update_user = #{update_user},
update_time = #{update_time}
WHERE id = #{id}
</update>
<update id="resetDualPersonTurnStatus" parameterType="map">
UPDATE jl_key_person_rating_dual_person
SET turn_status = #{turn_status},
update_user = #{update_user},
update_time = #{update_time}
WHERE key_person_id = #{key_person_id}
</update>
<delete id="deleteDualPerson" parameterType="map">
DELETE FROM jl_key_person_rating_dual_person
WHERE id = #{id}
</delete>
</mapper>
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论