Browse Source

小组成就详情

组长解决话题积分
dev
zhaoqifeng 4 years ago
parent
commit
c49b7a8c46
  1. 1
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/EventEnum.java
  2. 11
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/DateUtils.java
  3. 4
      epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/impl/UserPointActionLogServiceImpl.java
  4. 2
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/constant/TopicConstant.java
  5. 17
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/form/GroupFormDTO.java
  6. 37
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/result/AchievementDetailResultDTO.java
  7. 13
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/controller/ResiGroupController.java
  8. 13
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/dao/ResiGroupMilestoneStatsDao.java
  9. 18
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/ResiGroupMilestoneStatsService.java
  10. 9
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/ResiGroupService.java
  11. 33
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupMilestoneStatsServiceImpl.java
  12. 59
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupServiceImpl.java
  13. 35
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicServiceImpl.java
  14. 15
      epmet-module/resi-group/resi-group-server/src/main/resources/mapper/group/ResiGroupMilestoneStatsDao.xml

1
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/EventEnum.java

@ -17,6 +17,7 @@ public enum EventEnum {
TOPIC_SHIFTED_TO_ISSUE("topic_to_issue","resi_group","话题被转为议题(小组中发布的话题被组长转为议题)"), TOPIC_SHIFTED_TO_ISSUE("topic_to_issue","resi_group","话题被转为议题(小组中发布的话题被组长转为议题)"),
SHIFT_TOPIC_TO_ISSUE("shift_topic_to_issue","resi_group","转话题为议题(将自建小组中话题转为议题)"), SHIFT_TOPIC_TO_ISSUE("shift_topic_to_issue","resi_group","转话题为议题(将自建小组中话题转为议题)"),
TOPIC_SHIFTED_TO_PROJECT("topic_to_project","resi_group","话题被转为项目"), TOPIC_SHIFTED_TO_PROJECT("topic_to_project","resi_group","话题被转为项目"),
LEADER_RESOLVE_TOPIC("leader_resolve_topic","resi_group","组长解决组内话题"),
; ;
private String eventClass; private String eventClass;

11
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/DateUtils.java

@ -558,6 +558,17 @@ public class DateUtils {
return format.format(timestamp * 1000); return format.format(timestamp * 1000);
} }
/**
* 日期格式转时间戳
* @author zhaoqifeng
* @date 2021/4/19 14:52
* @param date
* @return java.lang.Long
*/
public static Long dateToTimestamp(Date date) {
return date.getTime()/NumConstant.ONE_THOUSAND;
}
/** /**
* @return java.util.Date * @return java.util.Date
* @param minStr yyyy-MM-dd HH:mm字符串 * @param minStr yyyy-MM-dd HH:mm字符串

4
epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/impl/UserPointActionLogServiceImpl.java

@ -263,7 +263,9 @@ public class UserPointActionLogServiceImpl extends BaseServiceImpl<UserPointActi
if(ruleInfo.getUpLimit() > NumConstant.ZERO){ if(ruleInfo.getUpLimit() > NumConstant.ZERO){
//不按照sourceId查询,查询指定日期内的相关积分规则的总和 //不按照sourceId查询,查询指定日期内的相关积分规则的总和
Integer sum = baseDao.selectSumByEvent(event.getUserId(),eventCode,null,event.getCustomerId(),dateCheck,right); Integer sum = baseDao.selectSumByEvent(event.getUserId(),eventCode,null,event.getCustomerId(),dateCheck,right);
if(null == sum) sum = NumConstant.ZERO; if(null == sum) {
sum = NumConstant.ZERO;
}
if(StringUtils.equals(ModuleConstant.OPERATION_TYPE_PLUS,ruleInfo.getOperateType())){ if(StringUtils.equals(ModuleConstant.OPERATION_TYPE_PLUS,ruleInfo.getOperateType())){
if(ruleInfo.getPoint() < NumConstant.ZERO){ if(ruleInfo.getPoint() < NumConstant.ZERO){
//保证要加的积分是正数 //保证要加的积分是正数

2
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/constant/TopicConstant.java

@ -117,4 +117,6 @@ public interface TopicConstant {
* 字段 附件类型 大写 下划线 * 字段 附件类型 大写 下划线
*/ */
String FIELD_TOPIC_ATTACHMENT_TYPE = "ATTACHMENT_TYPE"; String FIELD_TOPIC_ATTACHMENT_TYPE = "ATTACHMENT_TYPE";
String RESOLVED = "resolved";
} }

17
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/form/GroupFormDTO.java

@ -0,0 +1,17 @@
package com.epmet.resi.group.dto.group.form;
import lombok.Data;
import java.io.Serializable;
/**
* @author zhaoqifeng
* @dscription
* @date 2021/4/19 15:57
*/
@Data
public class GroupFormDTO implements Serializable {
private static final long serialVersionUID = 5330629771935235995L;
private String groupId;
private String gridId;
}

37
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/result/AchievementDetailResultDTO.java

@ -0,0 +1,37 @@
package com.epmet.resi.group.dto.group.result;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.List;
/**
* @author zhaoqifeng
* @dscription
* @date 2021/4/19 14:19
*/
@NoArgsConstructor
@Data
public class AchievementDetailResultDTO implements Serializable {
private static final long serialVersionUID = 2426917315141725167L;
/**
* 小组创建时间
*/
private Long createdDate;
private List<AchievementBean> achievement;
@NoArgsConstructor
@Data
public static class AchievementBean {
/**
* 达成时间
*/
private Long completionDate;
/**
* 成就描述分拼在一起
*/
private String describe;
}
}

13
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/controller/ResiGroupController.java

@ -31,6 +31,7 @@ import com.epmet.resi.group.dto.group.form.*;
import com.epmet.resi.group.dto.group.result.*; import com.epmet.resi.group.dto.group.result.*;
import com.epmet.resi.group.dto.member.form.EditAuditSwitchFormDTO; import com.epmet.resi.group.dto.member.form.EditAuditSwitchFormDTO;
import com.epmet.resi.group.dto.member.form.ResiIdentityFormDTO; import com.epmet.resi.group.dto.member.form.ResiIdentityFormDTO;
import oracle.jdbc.proxy.annotation.Post;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
@ -502,4 +503,16 @@ public class ResiGroupController {
return new Result(); return new Result();
} }
/**
* 小组成就详情
* @author zhaoqifeng
* @date 2021/4/19 14:25
* @param formDTO
* @return com.epmet.commons.tools.utils.Result<com.epmet.resi.group.dto.group.result.AchievementDetailResultDTO>
*/
@PostMapping("achievementdetail")
public Result<AchievementDetailResultDTO> achievementDetail(@RequestBody GroupFormDTO formDTO) {
return new Result<AchievementDetailResultDTO>().ok(resiGroupService.achievementDetail(formDTO));
}
} }

13
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/dao/ResiGroupMilestoneStatsDao.java

@ -19,7 +19,11 @@ package com.epmet.modules.group.dao;
import com.epmet.commons.mybatis.dao.BaseDao; import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.modules.group.entity.ResiGroupMilestoneStatsEntity; import com.epmet.modules.group.entity.ResiGroupMilestoneStatsEntity;
import com.epmet.resi.group.dto.group.ResiGroupMilestoneStatsDTO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/** /**
* 小组成就统计表 * 小组成就统计表
@ -29,5 +33,12 @@ import org.apache.ibatis.annotations.Mapper;
*/ */
@Mapper @Mapper
public interface ResiGroupMilestoneStatsDao extends BaseDao<ResiGroupMilestoneStatsEntity> { public interface ResiGroupMilestoneStatsDao extends BaseDao<ResiGroupMilestoneStatsEntity> {
/**
* 获取未完成的成就
* @author zhaoqifeng
* @date 2021/4/19 15:52
* @param groupId
* @return java.util.List<com.epmet.resi.group.dto.group.ResiGroupMilestoneStatsDTO>
*/
List<ResiGroupMilestoneStatsDTO> selectUnAchieved(@Param("groupId") String groupId);
} }

18
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/ResiGroupMilestoneStatsService.java

@ -92,4 +92,22 @@ public interface ResiGroupMilestoneStatsService extends BaseService<ResiGroupMil
* @date 2021-04-19 * @date 2021-04-19
*/ */
void delete(String[] ids); void delete(String[] ids);
/**
* 已达成的成就
* @author zhaoqifeng
* @date 2021/4/19 15:15
* @param groupId
* @return java.util.List<com.epmet.resi.group.dto.group.ResiGroupMilestoneStatsDTO>
*/
List<ResiGroupMilestoneStatsDTO> getAchieved(String groupId);
/**
* 未达成的成就
* @author zhaoqifeng
* @date 2021/4/19 15:15
* @param groupId
* @return java.util.List<com.epmet.resi.group.dto.group.ResiGroupMilestoneStatsDTO>
*/
List<ResiGroupMilestoneStatsDTO> getUnAchieved(String groupId);
} }

9
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/ResiGroupService.java

@ -370,4 +370,13 @@ public interface ResiGroupService extends BaseService<ResiGroupEntity> {
* @return void * @return void
*/ */
void setVisitSwitch(ManageInitFormDTO formDTO); void setVisitSwitch(ManageInitFormDTO formDTO);
/**
* 小组成就详情
* @author zhaoqifeng
* @date 2021/4/19 14:25
* @param formDTO
* @return com.epmet.resi.group.dto.group.result.AchievementDetailResultDTO
*/
AchievementDetailResultDTO achievementDetail(GroupFormDTO formDTO);
} }

33
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupMilestoneStatsServiceImpl.java

@ -20,6 +20,7 @@ package com.epmet.modules.group.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.constant.FieldConstant; import com.epmet.commons.tools.constant.FieldConstant;
@ -98,4 +99,36 @@ public class ResiGroupMilestoneStatsServiceImpl extends BaseServiceImpl<ResiGrou
baseDao.deleteBatchIds(Arrays.asList(ids)); baseDao.deleteBatchIds(Arrays.asList(ids));
} }
/**
* 已达成的成就
*
* @param groupId
* @return java.util.List<com.epmet.resi.group.dto.group.ResiGroupMilestoneStatsDTO>
* @author zhaoqifeng
* @date 2021/4/19 15:15
*/
@Override
public List<ResiGroupMilestoneStatsDTO> getAchieved(String groupId) {
QueryWrapper<ResiGroupMilestoneStatsEntity> wrapper = new QueryWrapper<>();
wrapper.eq("GROUP_ID", groupId);
wrapper.eq("IS_ARRIVE", NumConstant.ONE);
wrapper.eq("DEL_FLAG", NumConstant.ZERO);
wrapper.orderByDesc("ARRIVE_TIME");
List<ResiGroupMilestoneStatsEntity> list = baseDao.selectList(wrapper);
return ConvertUtils.sourceToTarget(list, ResiGroupMilestoneStatsDTO.class);
}
/**
* 未达成的成就
*
* @param groupId
* @return java.util.List<com.epmet.resi.group.dto.group.ResiGroupMilestoneStatsDTO>
* @author zhaoqifeng
* @date 2021/4/19 15:15
*/
@Override
public List<ResiGroupMilestoneStatsDTO> getUnAchieved(String groupId) {
return baseDao.selectUnAchieved(groupId);
}
} }

59
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupServiceImpl.java

@ -51,10 +51,7 @@ import com.epmet.modules.group.entity.GroupEditSubmitRecordEntity;
import com.epmet.modules.group.entity.ResiGroupEntity; import com.epmet.modules.group.entity.ResiGroupEntity;
import com.epmet.modules.group.entity.ResiGroupOperationEntity; import com.epmet.modules.group.entity.ResiGroupOperationEntity;
import com.epmet.modules.group.redis.ResiGroupRedis; import com.epmet.modules.group.redis.ResiGroupRedis;
import com.epmet.modules.group.service.ResiGroupCodeService; import com.epmet.modules.group.service.*;
import com.epmet.modules.group.service.ResiGroupOperationService;
import com.epmet.modules.group.service.ResiGroupService;
import com.epmet.modules.group.service.ResiGroupStatisticalService;
import com.epmet.modules.member.dao.GroupMemeberOperationDao; import com.epmet.modules.member.dao.GroupMemeberOperationDao;
import com.epmet.modules.member.dao.ResiGroupMemberDao; import com.epmet.modules.member.dao.ResiGroupMemberDao;
import com.epmet.modules.member.redis.ResiGroupMemberRedis; import com.epmet.modules.member.redis.ResiGroupMemberRedis;
@ -73,6 +70,7 @@ import com.epmet.resi.group.dto.member.ResiGroupMemberDTO;
import com.epmet.resi.group.dto.member.ResiGroupMemberInfoRedisDTO; import com.epmet.resi.group.dto.member.ResiGroupMemberInfoRedisDTO;
import com.epmet.resi.group.dto.member.form.EditAuditSwitchFormDTO; import com.epmet.resi.group.dto.member.form.EditAuditSwitchFormDTO;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -82,7 +80,6 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.support.TransactionSynchronizationAdapter; import org.springframework.transaction.support.TransactionSynchronizationAdapter;
import org.springframework.transaction.support.TransactionSynchronizationManager; import org.springframework.transaction.support.TransactionSynchronizationManager;
import org.springframework.util.CollectionUtils;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
@ -159,6 +156,9 @@ public class ResiGroupServiceImpl extends BaseServiceImpl<ResiGroupDao, ResiGrou
@Autowired @Autowired
private ResiGroupCodeService resiGroupCodeService; private ResiGroupCodeService resiGroupCodeService;
@Autowired
private ResiGroupMilestoneStatsService resiGroupMilestoneStatsService;
@Override @Override
public PageData<ResiGroupDTO> page(Map<String, Object> params) { public PageData<ResiGroupDTO> page(Map<String, Object> params) {
IPage<ResiGroupEntity> page = baseDao.selectPage( IPage<ResiGroupEntity> page = baseDao.selectPage(
@ -943,7 +943,9 @@ public class ResiGroupServiceImpl extends BaseServiceImpl<ResiGroupDao, ResiGrou
**/ **/
@Override @Override
public List<String> getGroupIdByGridId(String gridId) { public List<String> getGroupIdByGridId(String gridId) {
if(StringUtils.isBlank(gridId)) return null; if(StringUtils.isBlank(gridId)) {
return null;
}
return baseDao.getGroupIdByGridId(gridId); return baseDao.getGroupIdByGridId(gridId);
} }
@ -956,8 +958,9 @@ public class ResiGroupServiceImpl extends BaseServiceImpl<ResiGroupDao, ResiGrou
**/ **/
@Override @Override
public Map<String, Set<String>> getGroupIdsByGridIdList(List<String> gridIdList) { public Map<String, Set<String>> getGroupIdsByGridIdList(List<String> gridIdList) {
if(null == gridIdList || gridIdList.size() < NumConstant.ONE) if(null == gridIdList || gridIdList.size() < NumConstant.ONE) {
return null; return null;
}
Map<String, Set<String>> result = new HashMap<>(); Map<String, Set<String>> result = new HashMap<>();
List<ResiGroupDTO> groups = new ArrayList<>(); List<ResiGroupDTO> groups = new ArrayList<>();
Map<String,List<ResiGroupDTO>> groupMap Map<String,List<ResiGroupDTO>> groupMap
@ -1166,6 +1169,46 @@ public class ResiGroupServiceImpl extends BaseServiceImpl<ResiGroupDao, ResiGrou
update(after); update(after);
} }
/**
* 小组成就详情
*
* @param formDTO
* @return com.epmet.resi.group.dto.group.result.AchievementDetailResultDTO
* @author zhaoqifeng
* @date 2021/4/19 14:25
*/
@Override
public AchievementDetailResultDTO achievementDetail(GroupFormDTO formDTO) {
AchievementDetailResultDTO resultDTO = new AchievementDetailResultDTO();
List<AchievementDetailResultDTO.AchievementBean> achievementList = new ArrayList<>();
//1.小组创建时间
ResiGroupEntity group = baseDao.selectById(formDTO.getGroupId());
resultDTO.setCreatedDate(DateUtils.dateToTimestamp(group.getCreatedTime()));
//2.即将完成的3个成就
List<ResiGroupMilestoneStatsDTO> unAchievedList = resiGroupMilestoneStatsService.getUnAchieved(formDTO.getGroupId());
if (CollectionUtils.isNotEmpty(unAchievedList)) {
unAchievedList.forEach(item -> {
AchievementDetailResultDTO.AchievementBean bean = new AchievementDetailResultDTO.AchievementBean();
String describe = item.getMileageName() + "(" + item.getCurrentValue().toString() + "/" + item.getTargetValue().toString() + ")";
bean.setDescribe(describe);
achievementList.add(bean);
});
}
//3.已完成的成就
List<ResiGroupMilestoneStatsDTO> achievedList = resiGroupMilestoneStatsService.getAchieved(formDTO.getGroupId());
if (CollectionUtils.isNotEmpty(achievedList)) {
achievedList.forEach(item -> {
AchievementDetailResultDTO.AchievementBean bean = new AchievementDetailResultDTO.AchievementBean();
bean.setDescribe(item.getMileageName());
bean.setCompletionDate(DateUtils.dateToTimestamp(item.getArriveTime()));
achievementList.add(bean);
});
}
resultDTO.setAchievement(achievementList);
return resultDTO;
}
@Override @Override
public GroupDetailResultDTO getGroupDetail(String groupId) { public GroupDetailResultDTO getGroupDetail(String groupId) {
GroupDetailResultDTO groupDetail = new GroupDetailResultDTO(); GroupDetailResultDTO groupDetail = new GroupDetailResultDTO();

35
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicServiceImpl.java

@ -704,6 +704,41 @@ public class ResiTopicServiceImpl extends BaseServiceImpl<ResiTopicDao, ResiTopi
operation.setCustomerId(loginUserUtil.getLoginUserCustomerId()); operation.setCustomerId(loginUserUtil.getLoginUserCustomerId());
resiTopicOperationDao.insertOne(operation); resiTopicOperationDao.insertOne(operation);
//2021.04.19组长解决话题积分
if (TopicConstant.RESOLVED.equals(closeFormDTO.getClosedStatus())) {
ResiGroupInfoRedisDTO groupCache = resiGroupRedis.get(topic.getGroupId());
//mq的事件类型
MqBaseMsgDTO mqBaseMsgDTO = new MqBaseMsgDTO();
mqBaseMsgDTO.setEventClass("resi_group");
//事件code 组长解决组内话题
mqBaseMsgDTO.setEventTag(EventEnum.LEADER_RESOLVE_TOPIC.getEventTag());
List<BasePointEventMsg> pointEventMsgList = new ArrayList<>();
BasePointEventMsg pointEventMsg = new BasePointEventMsg();
pointEventMsg.setCustomerId(tokenDto.getCustomerId());
pointEventMsg.setUserId(tokenDto.getUserId());
pointEventMsg.setActionFlag(MqConstant.PLUS);
pointEventMsg.setIsCommon(false);
pointEventMsg.setEventTag(EventEnum.LEADER_RESOLVE_TOPIC.getEventTag());
//将话题“某某某…” (前十个字后面省略号) 转为议题
String content = CharMatcher.WHITESPACE.trimFrom(topic.getTopicContent());
pointEventMsg.setRemark(groupCache.getGroupName() + "小组中发布的" +
(StringUtils.isBlank(content)
|| StringUtils.equals("语音话题", content) ? "语音话题" :
"话题\"" +
content
.substring(NumConstant.ZERO, content.length() < NumConstant.TEN ? content.length() : NumConstant.TEN)
+ (NumConstant.TEN > content.length() ? "\"" : "…\"")) +
"解决");
pointEventMsgList.add(pointEventMsg);
mqBaseMsgDTO.setMsg(JSON.toJSONString(pointEventMsgList));
if(!SendMqMsgUtils.sendMsg(mqBaseMsgDTO).success()){
log.error("组长解决话题事件发送失败,参数:{}",JSON.toJSONString(closeFormDTO));
}
}
return new Result(); return new Result();
} }

15
epmet-module/resi-group/resi-group-server/src/main/resources/mapper/group/ResiGroupMilestoneStatsDao.xml

@ -20,6 +20,21 @@
<result property="updatedBy" column="UPDATED_BY"/> <result property="updatedBy" column="UPDATED_BY"/>
<result property="updatedTime" column="UPDATED_TIME"/> <result property="updatedTime" column="UPDATED_TIME"/>
</resultMap> </resultMap>
<select id="selectUnAchieved" resultType="com.epmet.resi.group.dto.group.ResiGroupMilestoneStatsDTO">
SELECT
MILEAGE_ID,
MILEAGE_NAME,
CURRENT_VALUE,
TARGET_VALUE
FROM
resi_group_milestone_stats
WHERE DEL_FLAG = '0'
AND GROUP_ID = #{groupId}
AND IS_ARRIVE = 0
ORDER BY
CURRENT_VALUE / TARGET_VALUE ASC
LIMIT 3
</select>
</mapper> </mapper>
Loading…
Cancel
Save