Browse Source

添加次数限制流程

mssql
Yen 3 years ago
parent
commit
5106415afc
  1. 37
      src/main/java/com/qs/serve/modules/qms/controller/api/QmsSubmitApiController.java
  2. 5
      src/main/java/com/qs/serve/modules/qms/entity/QmsFormSubmit.java
  3. 10
      src/main/java/com/qs/serve/modules/qms/entity/QmsGroup.java
  4. 4
      src/main/java/com/qs/serve/modules/qms/entity/bo/QmsGroupBo.java
  5. 11
      src/main/java/com/qs/serve/modules/qms/mapper/QmsGroupScopeMapper.java
  6. 9
      src/main/java/com/qs/serve/modules/qms/service/QmsFormSubmitService.java
  7. 8
      src/main/java/com/qs/serve/modules/qms/service/QmsGroupScopeService.java
  8. 19
      src/main/java/com/qs/serve/modules/qms/service/impl/QmsFormSubmitServiceImpl.java
  9. 9
      src/main/java/com/qs/serve/modules/qms/service/impl/QmsGroupScopeServiceImpl.java
  10. 3
      src/main/java/com/qs/serve/modules/wx/service/impl/WxUserServiceImpl.java
  11. 70
      src/main/resources/mapper/qms/QmsGroupScopeMapper.xml
  12. 3
      src/main/resources/mapper/sys/SysUserMapper.xml

37
src/main/java/com/qs/serve/modules/qms/controller/api/QmsSubmitApiController.java

@ -17,6 +17,7 @@ import com.qs.serve.modules.qms.entity.QmsGroup;
import com.qs.serve.modules.qms.entity.QmsGroupScope;
import com.qs.serve.modules.qms.entity.bo.QmsSubmitBo;
import com.qs.serve.modules.qms.mapper.QmsGroupMapper;
import com.qs.serve.modules.qms.mapper.QmsGroupScopeMapper;
import com.qs.serve.modules.qms.service.QmsFormService;
import com.qs.serve.modules.qms.service.QmsFormSubmitService;
import com.qs.serve.modules.qms.service.QmsGroupScopeService;
@ -47,11 +48,10 @@ import java.util.List;
public class QmsSubmitApiController {
private QmsFormSubmitService qmsFormSubmitService;
private SysUserService userService;
private QmsGroupScopeService qmsGroupScopeService;
private QmsGroupScopeMapper qmsGroupScopeMapper;
private QmsGroupService qmsGroupService;
private WxUserService wxUserService;
private QmsFormService qmsFormService;
/**
* 我的代办已办列表
@ -59,30 +59,34 @@ public class QmsSubmitApiController {
* @return
*/
@GetMapping("/myGroupList")
public R<?> todoPage(String finished){
public R<?> todoPage(Integer finished){
WxUser wxUser = wxUserService.getCurrentWxUser();
if(wxUser.getSysUserId()==null||wxUser.getSysUserId().equals("0")){
return R.byEmptyList();
}
String userId = wxUser.getSysUserId();
// LambdaQueryWrapper<QmsGroupScope> lqw = new LambdaQueryWrapper<>();
// lqw.in(QmsGroupScope::getScopeType,1,3,4);
// lqw.eq(QmsGroupScope::getScopeValue,userId);
// lqw.orderByDesc(QmsGroupScope::getCreateTime);
// if(StringUtils.hasText(finished)){
// //查询是否已完成
// lqw.eq(QmsGroupScope::getFinished,finished);
// }else {
// //查询所有
// lqw.ne(QmsGroupScope::getFinished,-1);
// }
// PageUtil.startPage();
// List<QmsGroupScope> groupScopes = qmsGroupScopeService.list(lqw);
PageUtil.startPage();
LambdaQueryWrapper<QmsGroupScope> lqw = new LambdaQueryWrapper<>();
lqw.in(QmsGroupScope::getScopeType,1,3,4);
lqw.eq(QmsGroupScope::getScopeValue,userId);
lqw.orderByDesc(QmsGroupScope::getCreateTime);
if(StringUtils.hasText(finished)){
lqw.eq(QmsGroupScope::getFinished,finished);
}else {
lqw.ne(QmsGroupScope::getFinished,-1);
}
PageUtil.startPage();
List<QmsGroupScope> groupScopes = qmsGroupScopeService.list(lqw);
List<QmsGroupScope> groupScopes = qmsGroupScopeMapper.listScope(finished,userId);
List<QmsGroup> result = new ArrayList<>();
for (QmsGroupScope groupScope : groupScopes) {
QmsGroup qmsGroup = qmsGroupService.getById(groupScope.getGroupId());
if(qmsGroup==null){
continue;
}
//当 finished==0 and groupFinished ==1 表示人数达标,已过期
qmsGroup.setFinished(groupScope.getFinished());
result.add(qmsGroup);
}
@ -131,12 +135,15 @@ public class QmsSubmitApiController {
String userId = wxUserService.getCurrentWxUser().getSysUserId();
lqw.eq(QmsFormSubmit::getGroupId,groupId);
lqw.eq(QmsFormSubmit::getUserId,userId);
QmsGroup qmsGroup = qmsGroupService.getById(groupId);
QmsFormSubmit formSubmit = qmsFormSubmitService.getOne(lqw,false);
QmsGroupScope groupScope = qmsGroupScopeService.getByGroupAndUid(groupId,userId);
if(formSubmit==null){
QmsGroup qmsGroup = qmsGroupService.getById(groupId);
formSubmit = CopierUtil.copy(qmsGroup,new QmsFormSubmit());
formSubmit.setTitle(qmsGroup.getName());
}
formSubmit.setGroupFinished(qmsGroup.getGroupFinished());
formSubmit.setFinished(groupScope.getFinished());
return R.ok(formSubmit);
}

5
src/main/java/com/qs/serve/modules/qms/entity/QmsFormSubmit.java

@ -102,5 +102,10 @@ public class QmsFormSubmit implements Serializable {
@JsonProperty
private Boolean delFlag;
@TableField(exist = false)
private Integer groupFinished;
@TableField(exist = false)
private Integer finished;
}

10
src/main/java/com/qs/serve/modules/qms/entity/QmsGroup.java

@ -62,6 +62,16 @@ public class QmsGroup implements Serializable {
@TableField(fill = FieldFill.INSERT)
private LocalDateTime publishTime;
/**
* (最少提交人数)标识是否完成
*/
private Integer groupFinished;
/**
* 最少提交人数
*/
private Integer limitSubmit;
/** 表单版本 */
private Integer version;

4
src/main/java/com/qs/serve/modules/qms/entity/bo/QmsGroupBo.java

@ -35,4 +35,8 @@ public class QmsGroupBo {
/** 使用范围值 */
private String[] scopeValue;
/**
* 最少提交人数,0表示不限制
*/
private Integer limitSubmit;
}

11
src/main/java/com/qs/serve/modules/qms/mapper/QmsGroupScopeMapper.java

@ -2,6 +2,9 @@ package com.qs.serve.modules.qms.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qs.serve.modules.qms.entity.QmsGroupScope;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* Mapper
@ -10,5 +13,13 @@ import com.qs.serve.modules.qms.entity.QmsGroupScope;
*/
public interface QmsGroupScopeMapper extends BaseMapper<QmsGroupScope> {
/**
* 代办已办列表
* @param finished
* @param userId
* @return
*/
List<QmsGroupScope> listScope(@Param("finished") Integer finished,@Param("userId") String userId);
}

9
src/main/java/com/qs/serve/modules/qms/service/QmsFormSubmitService.java

@ -17,5 +17,14 @@ public interface QmsFormSubmitService extends IService<QmsFormSubmit> {
*/
void submit(QmsSubmitBo param);
/**
* 统计完成的数量
* @param groupId
* @return
*/
long countGroupFinished(String groupId);
}

8
src/main/java/com/qs/serve/modules/qms/service/QmsGroupScopeService.java

@ -18,6 +18,14 @@ public interface QmsGroupScopeService extends IService<QmsGroupScope> {
QmsGroupScope getByGroupAndUid(String groupId,String userId);
void removeByGroupId(String groupId);
void saveByBo(String groupId,QmsGroupBo groupBo);
/**
* 发布
* @param groupId
*/
void publish(String groupId);
boolean isFinished(String groupId);
}

19
src/main/java/com/qs/serve/modules/qms/service/impl/QmsFormSubmitServiceImpl.java

@ -49,6 +49,9 @@ public class QmsFormSubmitServiceImpl extends ServiceImpl<QmsFormSubmitMapper,Qm
if(qmsGroup.getPublishState().equals(0)){
Assert.throwEx("问卷未发布,无法提交");
}
if(qmsGroup.getGroupFinished().equals(1)){
Assert.throwEx("问卷已结束");
}
QmsForm form = qmsFormService.getById(qmsGroup.getFormId());
LambdaQueryWrapper<QmsFormSubmit> lqw = new LambdaQueryWrapper<>();
lqw.eq(QmsFormSubmit::getGroupId,param.getGroupId());
@ -83,7 +86,23 @@ public class QmsFormSubmitServiceImpl extends ServiceImpl<QmsFormSubmitMapper,Qm
QmsGroupScope qmsGroupScope = qmsGroupScopeService.getByGroupAndUid(param.getGroupId(),wxUser.getSysUserId());
qmsGroupScope.setFinished(1);
qmsGroupScopeService.updateById(qmsGroupScope);
long count = this.countGroupFinished(qmsGroup.getId());
//判断是否人数限制
boolean isFinished1 = qmsGroup.getLimitSubmit()>0 && qmsGroup.getLimitSubmit() <= count;
boolean isFinished2 = qmsGroupScopeService.isFinished(qmsGroup.getId());
if(isFinished1||isFinished2){
QmsGroup qgParam = new QmsGroup();
qgParam.setId(qmsGroup.getId());
qgParam.setGroupFinished(1);
qmsGroupService.updateById(qgParam);
}
}
@Override
public long countGroupFinished(String groupId) {
LambdaQueryWrapper<QmsFormSubmit> lqw = new LambdaQueryWrapper<>();
lqw.eq(QmsFormSubmit::getGroupId,groupId);
return this.count(lqw);
}
}

9
src/main/java/com/qs/serve/modules/qms/service/impl/QmsGroupScopeServiceImpl.java

@ -144,5 +144,14 @@ public class QmsGroupScopeServiceImpl extends ServiceImpl<QmsGroupScopeMapper,Qm
}
this.saveBatch(list);
}
@Override
public boolean isFinished(String groupId) {
LambdaQueryWrapper<QmsGroupScope> lqw = new LambdaQueryWrapper<>();
lqw.in(QmsGroupScope::getScopeType,1,3,4);
lqw.eq(QmsGroupScope::getGroupId,groupId);
lqw.eq(QmsGroupScope::getFinished,0);
return this.count(lqw)<1L;
}
}

3
src/main/java/com/qs/serve/modules/wx/service/impl/WxUserServiceImpl.java

@ -93,6 +93,9 @@ public class WxUserServiceImpl extends ServiceImpl<WxUserMapper, WxUser> impleme
if(wxUser==null){
Assert.throwEx(HttpCode.LOGIN_ERR);
}
if(wxUser.getId().equals("1")){
return wxUser;
}
String appId = AuthContextUtils.getAppId();
try {
WxMpService wxMpService = wxMpConfig.wxMpService().switchoverTo(appId);

70
src/main/resources/mapper/qms/QmsGroupScopeMapper.xml

@ -0,0 +1,70 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.qs.serve.modules.qms.mapper.QmsGroupScopeMapper">
<resultMap id="qmsGroupScopeMap" type="com.qs.serve.modules.qms.entity.QmsGroupScope" >
<result property="id" column="id"/>
<result property="groupId" column="group_id"/>
<result property="scopeType" column="scope_type"/>
<result property="scopeValue" column="scope_value"/>
<result property="finished" column="finished"/>
<result property="delFlag" column="del_flag"/>
<result property="createTime" column="create_time"/>
<result property="createBy" column="create_by"/>
<result property="updateTime" column="update_time"/>
<result property="updateBy" column="update_by"/>
</resultMap>
<sql id="qmsGroupScopeSql">
qms_group_scope.`id`,
qms_group_scope.`group_id`,
qms_group_scope.`scope_type`,
qms_group_scope.`scope_value`,
qms_group_scope.`finished`,
qms_group_scope.`del_flag`,
qms_group_scope.`tenant_id`,
qms_group_scope.`create_time`,
qms_group_scope.`create_by`,
qms_group_scope.`update_time`,
qms_group_scope.`update_by` </sql>
<select id="selectQmsGroupScopeList" parameterType="com.qs.serve.modules.qms.entity.QmsGroupScope" resultMap="qmsGroupScopeMap">
SELECT <include refid="qmsGroupScopeSql"/> FROM `qms_group_scope` `qms_group_scope`
<where>
<if test="query.id != null"> and `qms_group_scope`.`id` = #{query.id}</if>
<if test="query.groupId != null"> and `qms_group_scope`.`group_id` = #{query.groupId}</if>
<if test="query.scopeType != null"> and `qms_group_scope`.`scope_type` = #{query.scopeType}</if>
<if test="query.scopeValue != null and query.scopeValue != ''"> and `qms_group_scope`.`scope_value` = #{query.scopeValue}</if>
<if test="query.finished != null"> and `qms_group_scope`.`finished` = #{query.finished}</if>
<if test="query.delFlag != null"> and `qms_group_scope`.`del_flag` = #{query.delFlag}</if>
<if test="query.tenantId != null and query.tenantId != ''"> and `qms_group_scope`.`tenant_id` = #{query.tenantId}</if>
<if test="query.createTime != null"> and `qms_group_scope`.`create_time` = #{query.createTime}</if>
<if test="query.createBy != null and query.createBy != ''"> and `qms_group_scope`.`create_by` = #{query.createBy}</if>
<if test="query.updateTime != null"> and `qms_group_scope`.`update_time` = #{query.updateTime}</if>
<if test="query.updateBy != null and query.updateBy != ''"> and `qms_group_scope`.`update_by` = #{query.updateBy}</if>
</where>
</select>
<select id="listScope" resultType="com.qs.serve.modules.qms.entity.QmsGroupScope">
SELECT <include refid="qmsGroupScopeSql"/>
FROM `qms_group_scope` `qms_group_scope`
left join `qms_group` `qms_group` on `qms_group`.`id` = `qms_group_scope`.`group_id`
<where>
`qms_group_scope`.`scope_type` in (1,3,4)
and `qms_group_scope`.`scope_value` = #{userId}
and `qms_group_scope`.`del_flag` = '0'
and `qms_group`.`del_flag` = '0'
<if test="finished == null"> and `qms_group_scope`.`finished` != -1 </if>
<if test="finished != null and finished == 0 ">
and `qms_group_scope`.`finished` = '0' and `qms_group`.`group_finished` = '0'
</if>
<if test="finished != null and finished == 1 ">
and (`qms_group_scope`.`finished` = '1' or `qms_group`.`group_finished` = '1')
</if>
</where>
order by `qms_group_scope`.`create_time` desc
</select>
</mapper>

3
src/main/resources/mapper/sys/SysUserMapper.xml

@ -70,9 +70,6 @@
<if test="query.loginEnable != null"> and sys_user.login_enable = #{query.loginEnable}</if>
<if test="query.servingState != null"> and sys_user.serving_state = #{query.servingState}</if>
<if test="query.identityNo != null and query.identityNo != ''"> and sys_user.identity_no = #{query.identityNo}</if>
<if test="query.enterDate != null"> and sys_user.enter_date = #{query.enterDate}</if>
<if test="query.formalDate != null"> and sys_user.formal_date = #{query.formalDate}</if>
<if test="query.formalStatus != null"> and sys_user.formal_status = #{query.formalStatus}</if>
<if test="query.remark != null and query.remark != ''"> and sys_user.remark = #{query.remark}</if>
<if test="query.createTime != null"> and sys_user.create_time = #{query.createTime}</if>
<if test="query.createBy != null and query.createBy != ''"> and sys_user.create_by = #{query.createBy}</if>

Loading…
Cancel
Save