Browse Source

执法端-计划

dev-V1.0.1
庄锐波 5 months ago
parent
commit
a25366e407
  1. 52
      script/sql/zfjd-refactoring-v1/013-计划任务表设计.sql
  2. 109
      script/sql/zfjd-refactoring-v1/1003-查询-计划预约字典翻译.sql
  3. 9
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/EfcodeCpReserve.java
  4. 2
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EfcodeCpPlanServiceImpl.java
  5. 16
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EfcodeCpReserveServiceImpl.java
  6. 9
      zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/EfcodeCpReserveMapper.xml

52
script/sql/zfjd-refactoring-v1/013-计划任务表设计.sql

@ -81,6 +81,7 @@ CREATE TABLE `efcode_cp_reserve`
`plan_group_id` varchar(50) NOT NULL COMMENT '计划分组ID:相同的表示预约同一个计划',
`reserve_time` datetime NOT NULL COMMENT '预约时间',
`op_status` tinyint NOT NULL COMMENT '操作状态' DEFAULT 3 COMMENT '操作状态:1=同意,2=拒绝,3=待确认,4=超期取消',
`op_order` int NOT NULL COMMENT '联合时用户的操作顺序',
`op_time` datetime NULL COMMENT '联合时用户的操作时间',
@ -88,7 +89,10 @@ CREATE TABLE `efcode_cp_reserve`
`op_set_date` datetime NOT NULL COMMENT '联合时用户选择的操作时间',
`op_set_time` tinyint NOT NULL COMMENT '执行时段:1=上午,2=下午,3=其他',
`res_from` tinyint NOT NULL COMMENT '来自' COMMENT '来自:系统匹配=1,手动匹配=0',
`res_from` tinyint NOT NULL COMMENT '来自:系统匹配=1,手动匹配=0',
`sender_id` varchar(50) NULL DEFAULT '' COMMENT '发送者用户ID',
`receiver_id` varchar(50) NULL DEFAULT '' COMMENT '接收者用户ID',
`create_by` varchar(64) DEFAULT '' COMMENT '创建者',
`create_dept` varchar(64) DEFAULT NULL COMMENT '创建人部门',
`update_by` varchar(64) DEFAULT '' COMMENT '更新者',
@ -201,26 +205,26 @@ CREATE TABLE `efcode_cp_log`
/*初始化数据*/
/*INSERT INTO `efcode_cp_setting` (`id`, `setting_name`, `setting_value`, `remark`, `create_by`, `create_dept`)
VALUES ('CP_SETTING_SUBMIT_DEADLINE', '下阶段计划提交最晚时间', '26', '每月几号前需提交下阶段计划<=', '0', '0'),
('CP_SETTING_AUTO_MATCH_START', '系统自动推荐匹配开始时间', '27', '系统自动推荐匹配的开始时间(号)=', '0', '0'),
('CP_SETTING_RESERVE_CANCEL_DURATION', '预约自动取消时长', '7', '发起预约后,如果多长时间没有处理,则自动取消',
'0', '0'),
('CP_SETTING_MANUAL_MATCH_DAYS', '手工匹配距计划开始天数', '3', '手工匹配距离计划开始的天数>=', '0', '0'),
('CP_MAX_UNION_UNIT', '单次联合单位最大数量', '3', '单次联合单位最大数量<=3', '0', '0'),
('CP_MAX_INNER_UNIT_AC_PERSON_NUM', '单位内部单次计划最多参与人数', '3', '单位内部单次计划最多参与人数<=3', '0',
'0');*/
/*创建计划任务*/
/*INSERT INTO sys_job (job_name, job_group, invoke_target, cron_expression, misfire_policy, concurrent, status, create_by,
create_time, remark)
VALUES ('计划自动匹配预约',
'DEFAULT',
'cpPlanAutoMatchJob.execute()',
'0 0 2 * * ?',
'3',
'1',
'0',
'admin',
NOW(),
'每天凌晨2点扫描待预约计划并自动匹配生成预约记录');*/
-- INSERT INTO `efcode_cp_setting` (`id`, `setting_name`, `setting_value`, `remark`, `create_by`, `create_dept`)
-- VALUES ('CP_SETTING_SUBMIT_DEADLINE', '下阶段计划提交最晚时间', '26', '每月几号前需提交下阶段计划<=', '0', '0'),
-- ('CP_SETTING_AUTO_MATCH_START', '系统自动推荐匹配开始时间', '27', '系统自动推荐匹配的开始时间(号)=', '0', '0'),
-- ('CP_SETTING_RESERVE_CANCEL_DURATION', '预约自动取消时长', '7', '发起预约后,如果多长时间没有处理,则自动取消',
-- '0', '0'),
-- ('CP_SETTING_MANUAL_MATCH_DAYS', '手工匹配距计划开始天数', '3', '手工匹配距离计划开始的天数>=', '0', '0'),
-- ('CP_MAX_UNION_UNIT', '单次联合单位最大数量', '3', '单次联合单位最大数量<=3', '0', '0'),
-- ('CP_MAX_INNER_UNIT_AC_PERSON_NUM', '单位内部单次计划最多参与人数', '3', '单位内部单次计划最多参与人数<=3', '0',
-- '0');
--
-- /*创建计划任务*/
-- INSERT INTO sys_job (job_name, job_group, invoke_target, cron_expression, misfire_policy, concurrent, status, create_by,
-- create_time, remark)
-- VALUES ('计划自动匹配预约',
-- 'DEFAULT',
-- 'cpPlanAutoMatchJob.execute()',
-- '0 0 2 * * ?',
-- '3',
-- '1',
-- '0',
-- 'admin',
-- NOW(),
-- '每天凌晨2点扫描待预约计划并自动匹配生成预约记录');

109
script/sql/zfjd-refactoring-v1/1003-查询-计划预约字典翻译.sql

@ -0,0 +1,109 @@
-- ============================================================
-- 查询 efcode_cp_plan (字典值转描述)
-- ============================================================
SELECT
p.id AS 计划ID,
p.plan_date AS 计划执行日期,
CASE p.plan_type
WHEN 1 THEN '日常计划'
WHEN 2 THEN '专项计划'
ELSE CONCAT('未知(', p.plan_type, ')')
END AS 计划类别,
CASE p.plan_time
WHEN 1 THEN '上午'
WHEN 2 THEN '下午'
WHEN 3 THEN '其他'
ELSE CONCAT('未知(', p.plan_time, ')')
END AS 执行时段,
p.plan_actual_date AS 实际执行日期,
CASE p.plan_actual_time
WHEN 1 THEN '上午'
WHEN 2 THEN '下午'
WHEN 3 THEN '其他'
ELSE CONCAT('未知(', p.plan_actual_time, ')')
END AS 实际执行时段,
p.enforce_content AS 执法事项,
p.enterprise_name AS 被检查企业,
p.enterprise_number AS 企业信用代码,
p.enforce_user_names AS 执法人员,
p.bureau_dept_name AS 执法单位,
CASE p.is_public
WHEN 1 THEN '是'
WHEN 0 THEN '否'
ELSE CONCAT('未知(', p.is_public, ')')
END AS 是否公开,
CASE p.is_union
WHEN 1 THEN '是'
WHEN 0 THEN '否'
ELSE CONCAT('未知(', p.is_union, ')')
END AS 是否联合执法,
p.union_bureau_dept_names AS 联合执法单位,
CASE p.reserve_status
WHEN 0 THEN '草稿'
WHEN 1 THEN '待预约(未发起联合)'
WHEN 2 THEN '预约中'
WHEN 3 THEN '预约完成'
WHEN 4 THEN '重新预约中'
WHEN 5 THEN '待预约(还有位置可加入)'
WHEN 6 THEN '待预约(人数已满)'
ELSE CONCAT('未知(', p.reserve_status, ')')
END AS 预约状态,
p.task_id AS 关联任务ID,
CASE p.system_reserved
WHEN 1 THEN '是'
WHEN 0 THEN '否'
ELSE CONCAT('未知(', p.system_reserved, ')')
END AS 已系统推荐预约,
CASE p.manual_reserved
WHEN 1 THEN '是'
WHEN 0 THEN '否'
ELSE CONCAT('未知(', p.manual_reserved, ')')
END AS 已手动预约,
CASE p.is_delete
WHEN 0 THEN '否'
WHEN 1 THEN '是'
ELSE CONCAT('未知(', p.is_delete, ')')
END AS 是否删除,
p.create_by AS 创建人_ID,
p.create_time AS 创建时间,
p.update_time AS 更新时间,
p.remark AS 备注
FROM efcode_cp_plan p
ORDER BY p.create_time DESC;
-- ============================================================
-- 查询 efcode_cp_reserve (字典值转描述)
-- ============================================================
SELECT
r.id AS 预约记录ID,
r.plan_id AS 计划ID,
r.plan_group_id AS 预约分组ID,
r.reserve_time AS 预约时间,
CASE r.op_status
WHEN 1 THEN '同意'
WHEN 2 THEN '拒绝'
WHEN 3 THEN '待确认'
WHEN 4 THEN '超期取消'
ELSE CONCAT('未知(', r.op_status, ')')
END AS 操作状态,
r.op_order AS 操作顺序,
r.op_time AS 操作时间,
r.op_message AS 操作留言,
r.op_set_date AS 协商执行日期,
CASE r.op_set_time
WHEN 1 THEN '上午'
WHEN 2 THEN '下午'
WHEN 3 THEN '其他'
ELSE CONCAT('未知(', r.op_set_time, ')')
END AS 协商执行时段,
CASE r.res_from
WHEN 1 THEN '系统匹配'
WHEN 0 THEN '手动匹配'
ELSE CONCAT('未知(', r.res_from, ')')
END AS 预约来源,
r.create_by AS 创建人_ID,
r.create_time AS 创建时间,
r.update_time AS 更新时间
FROM efcode_cp_reserve r
ORDER BY r.plan_group_id ASC, r.op_order ASC;

9
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/EfcodeCpReserve.java

@ -80,5 +80,14 @@ public class EfcodeCpReserve extends BaseEntity {
@TableField(value = "res_from")
private Long resFrom;
/**
* 发送者用户ID
*/
private String senderId;
/**
* 接收者用户ID
*/
private String receiverId;
}

2
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EfcodeCpPlanServiceImpl.java

@ -544,6 +544,8 @@ public class EfcodeCpPlanServiceImpl implements IEfcodeCpPlanService {
reserve.setOpSetDate(matchedPlan.getPlanDate());
reserve.setOpSetTime(matchedPlan.getPlanTime());
reserve.setResFrom(1L); // 系统匹配
reserve.setSenderId("from_system");
reserve.setReceiverId(String.valueOf(matchedPlan.getCreateBy()));
if (insertReserve) {
efcodeCpReserveMapper.insert(reserve);

16
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EfcodeCpReserveServiceImpl.java

@ -226,10 +226,12 @@ public class EfcodeCpReserveServiceImpl implements IEfcodeCpReserveService {
if (2 > maxUnionUnit) {
return R.fail("该计划的预约已经到达最大数量(" + maxUnionUnit + "),无法参与预约");
}
String senderIdStr = String.valueOf(currentUserId);
String receiverIdStr = String.valueOf(targetPlan.getCreateBy());
// 目标计划记录
insertReserveRecord(targetPlanId, planGroupId, "", targetPlan.getPlanDate(), targetPlan.getPlanTime(), 0L);
insertReserveRecord(targetPlanId, planGroupId, "", targetPlan.getPlanDate(), targetPlan.getPlanTime(), 0L, senderIdStr, receiverIdStr);
// 我的计划记录
insertReserveRecord(myPlan.getId(), planGroupId, opMessage, targetPlan.getPlanDate(), targetPlan.getPlanTime(), 0L);
insertReserveRecord(myPlan.getId(), planGroupId, opMessage, targetPlan.getPlanDate(), targetPlan.getPlanTime(), 0L, senderIdStr, receiverIdStr);
} else {
// 已存在:检查人数上限
long activeCount = countActiveReserves(planGroupId);
@ -242,7 +244,7 @@ public class EfcodeCpReserveServiceImpl implements IEfcodeCpReserveService {
return R.fail("您已经预约过该计划");
}
// 插入1条记录
insertReserveRecord(myPlan.getId(), planGroupId, opMessage, targetPlan.getPlanDate(), targetPlan.getPlanTime(), 0L);
insertReserveRecord(myPlan.getId(), planGroupId, opMessage, targetPlan.getPlanDate(), targetPlan.getPlanTime(), 0L, String.valueOf(currentUserId), String.valueOf(targetPlan.getCreateBy()));
}
// ===== 插入预约记录后:更新两个计划的 reserve_status =====
@ -320,8 +322,12 @@ public class EfcodeCpReserveServiceImpl implements IEfcodeCpReserveService {
/**
* 插入一条预约记录
*
* @param senderId 发送者用户ID
* @param receiverId 接收者用户ID
*/
private void insertReserveRecord(String planId, String planGroupId, String opMessage, Date opSetDate, Long opSetTime, Long resFrom) {
private void insertReserveRecord(String planId, String planGroupId, String opMessage, Date opSetDate, Long opSetTime, Long resFrom,
String senderId, String receiverId) {
EfcodeCpReserve record = new EfcodeCpReserve();
record.setPlanId(planId);
record.setPlanGroupId(planGroupId);
@ -332,6 +338,8 @@ public class EfcodeCpReserveServiceImpl implements IEfcodeCpReserveService {
record.setOpSetDate(opSetDate);
record.setOpSetTime(opSetTime);
record.setResFrom(resFrom);
record.setSenderId(senderId);
record.setReceiverId(receiverId);
baseMapper.insert(record);
}

9
zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/EfcodeCpReserveMapper.xml

@ -4,7 +4,7 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zdxt.enforcementcode.mapper.EfcodeCpReserveMapper">
<!-- 预约处理列表(手动预约 / 系统匹配):关联计划表获取计划详情 -->
<!-- 预约处理列表(手动预约 / 系统匹配):关联计划表获取计划详情,按接收者ID过滤 -->
<select id="selectReservePageList" resultType="com.zdxt.enforcementcode.domain.vo.EfcodeCpReserveVo">
SELECT
r.id,
@ -35,12 +35,9 @@
<if test="opStatus != null">
AND r.op_status = #{opStatus}
</if>
<!-- 当前用户权限:仅查看关联自己计划的预约记录 -->
<!-- 当前用户权限:仅查看以当前用户为接收者的预约记录 -->
<if test="currentUserId != null">
AND r.plan_id IN (
SELECT id FROM efcode_cp_plan
WHERE create_by = #{currentUserId} AND is_delete = 0
)
AND r.receiver_id = #{currentUserId}
</if>
</where>
ORDER BY r.reserve_time DESC

Loading…
Cancel
Save