Commit 31d8ea4f authored by yangshuxing's avatar yangshuxing

小程序提交成绩版本

parent 5dce0a94
......@@ -294,6 +294,10 @@
<artifactId>geexek-utils</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
</dependencies>
<repositories>
......
......@@ -31,7 +31,7 @@ import org.springframework.web.servlet.config.annotation.EnableWebMvc;
@MapperScan(basePackages = "com.dlbridge.jadp.plugins.cmpt.dao.mapper")
@EnableAspectJAutoProxy(proxyTargetClass = true)
@EnableScheduling
@EnableFeignClients(clients = {NewsService.class})
@EnableFeignClients(basePackages="com.dlbridge.feign")
@EnableEurekaClient
@EnableDiscoveryClient
@EnableCircuitBreaker
......
......@@ -39,7 +39,6 @@ public class SecurityInterceptor extends JService implements HandlerInterceptor
if (handler instanceof HandlerMethod) {
HandlerMethod handlerMethod = (HandlerMethod) handler;
Method method = handlerMethod.getMethod();
System.out.println(method.getName());
PageView annotation = method.getAnnotation(PageView.class);
if (annotation != null) {
......
......@@ -11,7 +11,7 @@ public class FeignConfig {
//自定义重试次数
@Bean
public Retryer feignRetryer() {
Retryer retryer = new Retryer.Default(100, 1000, 0);
Retryer retryer = new Retryer.Default(10000, 30000, 0);
return retryer;
}
......
package com.dlbridge.jadp.plugins.cmpt.bean;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.models.auth.In;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;
/**
* 赛事成绩收集信息字段
......@@ -13,15 +15,18 @@ import lombok.ToString;
@Getter
@Setter
@ToString
@Accessors(chain = true)
public class CmptScoreField {
@ApiModelProperty(value = "字段信息ID")
private int id;
private Integer id;
@ApiModelProperty(value = "赛事ID")
private int cmptId;
private Integer cmptId;
@ApiModelProperty(value = "字段信息名字")
private int fieldName;
private String fieldName;
@ApiModelProperty(value = "字段信息类型")
private int fieldType=1;
private Integer fieldType=1;
@ApiModelProperty(value = "字段信息序号")
private int filedIndex;
private Integer filedIndex;
private Integer isDelete;
}
......@@ -13,13 +13,16 @@ import lombok.ToString;
@ToString
public class CmptScoreFieldValue {
@ApiModelProperty(value = "赛事规则值的自增长ID")
private int id;
private int id;
private String markNo;
@ApiModelProperty(value = "赛事规则值的字段ID")
private int scoreFieldId;
private int scoreFieldId;
@ApiModelProperty(value = "赛事规则值的字段名字,冗余值")
private String scoreFieldName;
private String scoreFieldName;
@ApiModelProperty(value = "赛事规则值的字段的存储值")
private String scoreFieldValue;
private String scoreFieldValue;
@ApiModelProperty(value = "赛事规则值的字段对应的赛事ID")
private int cmptId;
private int cmptId;
private int ruleId;
}
package com.dlbridge.jadp.plugins.cmpt.bean;
import com.dlbridge.jadp.plugins.cmpt.utils.date.DateDeserializers;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
......@@ -13,13 +15,16 @@ import java.util.Date;
@ToString
public class CmptScoreRule {
@ApiModelProperty(value = "赛事规则的ID")
private int id;
private int id;
@ApiModelProperty(value = "赛事规则的序号")
private int index;
private int index;
@ApiModelProperty(value = "赛事规则的对应的赛事Id")
private int cmpt_id;
private int cmptId;
@ApiModelProperty(value = "赛事规则的赛事开始时间")
private Date start_time;
@JsonDeserialize(using = DateDeserializers.ISO8601Long.class)
private Date startTime;
@ApiModelProperty(value = "赛事规则的赛事结束时间")
private Date end_time;
@JsonDeserialize(using = DateDeserializers.ISO8601Long.class)
private Date endTime;
}
package com.dlbridge.jadp.plugins.cmpt.bean;
import lombok.Data;
import lombok.experimental.Accessors;
@Data
@Accessors(chain = true)
public class CmptScoreRuleBean extends CmptScoreRule{
private boolean isUploaded;
}
package com.dlbridge.jadp.plugins.cmpt.bean;
import lombok.Data;
import java.util.List;
@Data
public class CmptSettingTemplate {
private int cmptId;
List<SettingTemplate> settingTemplates;
List<SettingTemplate> restSettingTemplates;
}
......@@ -32,5 +32,7 @@ public class EnrollInfo {
@ApiModelProperty(value = "救援人员电话")
private String remark;
private String gender;
}
......@@ -3,6 +3,7 @@ package com.dlbridge.jadp.plugins.cmpt.bean;
import com.dlbridge.jadp.common.utils.excel.annotation.ExcelField;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;
import java.util.Date;
......@@ -10,6 +11,7 @@ import java.util.Date;
@Getter
@Setter
@Accessors(chain = true)
@ToString
public class EnrollUser {
private int cmpt_id;
......
package com.dlbridge.jadp.plugins.cmpt.bean;
import lombok.Data;
import lombok.experimental.Accessors;
@Data
@Accessors(chain = true)
public class RoadStatistic {
private String enrollCount;
private String roadName;
private String roadId;
}
package com.dlbridge.jadp.plugins.cmpt.bean;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import java.util.List;
@Data
public class ScoreExcelBean {
@JsonIgnore
private int id;
// 分段ID
private int ruleId;
private int duration;
private String date;
private List<CmptScoreFieldValue> fieldValues;
}
package com.dlbridge.jadp.plugins.cmpt.bean;
import lombok.Data;
import lombok.experimental.Accessors;
@Data
@Accessors(chain = true)
public class ScoreRuleMap {
// 规则Id
private Integer ruleId;
// 单点成绩id
private Integer scoreItemId;
// 用户名单id
private String markNo;
}
package com.dlbridge.jadp.plugins.cmpt.bean;
import lombok.Data;
@Data
public class SettingTemplate {
private String uuid;
private String name;
private int type;
private int visibility;
private int status;
private String style;
private int seq;
}
package com.dlbridge.jadp.plugins.cmpt.bean;
import lombok.Data;
import java.util.List;
@Data
public class UserScore {
//报名iD
private String markNo;
//报名iD
private Integer cmptId;
private Integer indexId;
List<CmptScoreFieldValue> fields;
Score score;
}
package com.dlbridge.jadp.plugins.cmpt.bean;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import java.util.List;
public class UserScoreExcelBean {
@JsonIgnore
private int enroll_id;
// 用户基本信息
private EnrollUser user;
private long totalDuration;
private String durationStr;
private int rankNo;
private boolean isDone;
List<ScoreExcelBean> scores;
@JsonIgnore
private boolean hasDuration;
@JsonIgnore
private boolean noDuration;
public int getEnroll_id() {
return enroll_id;
}
public void setEnroll_id(int enroll_id) {
this.enroll_id = enroll_id;
}
public EnrollUser getUser() {
return user;
}
public void setUser(EnrollUser user) {
this.user = user;
}
public long getTotalDuration() {
return totalDuration;
}
public void setTotalDuration(long totalDuration) {
this.totalDuration = totalDuration;
}
public String getDurationStr() {
return durationStr;
}
public void setDurationStr(String durationStr) {
this.durationStr = durationStr;
}
public int getRankNo() {
return rankNo;
}
public void setRankNo(int rankNo) {
this.rankNo = rankNo;
}
public List<ScoreExcelBean> getScores() {
return scores;
}
public void setScores(List<ScoreExcelBean> scores) {
this.scores = scores;
}
public boolean isHasDuration() {
return this.totalDuration > 0;
}
public void setHasDuration(boolean hasDuration) {
this.hasDuration = hasDuration;
}
public boolean isNoDuration() {
return this.totalDuration <= 0;
}
public boolean isDone() {
return isDone;
}
public void setDone(boolean done) {
isDone = done;
}
public void setNoDuration(boolean noDuration) {
this.noDuration = noDuration;
}
@Override
public String toString() {
return "UserScoreExcelBean{" +
"enroll_id=" + enroll_id +
", user=" + user +
", totalDuration=" + totalDuration +
", durationStr='" + durationStr + '\'' +
", rankNo=" + rankNo +
", scores=" + scores +
", hasDuration=" + hasDuration +
", noDuration=" + noDuration +
'}';
}
}
......@@ -2,16 +2,31 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dlbridge.jadp.plugins.cmpt.dao.mapper.CmptScoreFieldMapper">
<select id="getCmptScoreFieldsByCmptId" resultType="CmptScoreField">
select id,cmpt_id as cmptId,field_name as fieldName,field_type as fieldType,field_index as fieldIndex from gk_cmpt_score_field where cmpt_id=#{cmptId} order by index
<select id="getCmptScoreFieldByCmptId" resultType="CmptScoreField">
select id,cmpt_id as cmptId,field_name as fieldName,field_type as fieldType,field_index as filedIndex
from gk_cmpt_score_field
where cmpt_id=#{cmptId} and is_delete=0 order by field_index
</select>
<insert id="insert">
INSERT INTO gk_cmpt_score_field (cmpt_id,field_name,field_type,field_index) VALUES(#cmptId,#fieldName,#fieldType,#fieldIndex)
<insert id="save" keyColumn="id" keyProperty="id" useGeneratedKeys="true">
INSERT INTO gk_cmpt_score_field (cmpt_id,field_name,field_type,field_index,insert_time)
VALUES(#{cmptId},#{fieldName},#{fieldType},#{filedIndex},now())
</insert>
<update id="update">
UPDATE gk_cmpt_score_field set cmpt_id=#{cmptId},field_name=#{fieldName},field_type=#{fieldType},field_index=#{fieldIndex} where id=#{id}
UPDATE gk_cmpt_score_field
<set>
<if test="fieldName != null">
field_name=#{fieldName},
</if>
<if test="isDelete != null">
is_delete=#{isDelete},
</if>
<if test="true">
update_time = now()
</if>
</set>
where id=#{id}
</update>
</mapper>
\ No newline at end of file
package com.dlbridge.jadp.plugins.cmpt.dao.mapper;
import com.dlbridge.jadp.plugins.cmpt.bean.CmptScoreFieldValue;
import org.apache.ibatis.annotations.Param;
import java.util.List;
......@@ -20,12 +21,17 @@ public interface CmptScoreFieldValueMapper {
* 对赛事成绩收集信息进行存储
* @param cmptScoreFieldValue
*/
public void save(CmptScoreFieldValue cmptScoreFieldValue);
public void save(@Param("cmpt") CmptScoreFieldValue cmptScoreFieldValue);
/**
* 对赛事成绩收集信息进行更新
* @param cmptScoreFieldValue
*/
public void update(CmptScoreFieldValue cmptScoreFieldValue);
public void update(@Param("cmpt") CmptScoreFieldValue cmptScoreFieldValue);
List<CmptScoreFieldValue> getCmptScoreFieldValueByCmptIdAndMarkNo(@Param("cmptId") Integer cmptId,@Param("markNo") String markNo);
List<CmptScoreFieldValue> getCmptScoreFieldValueByRuleIdAndMarkNo(@Param("ruleId") Integer ruleId,@Param("markNo") String markNo);
void deleteFieldValueByRuleIdAndMarkNo(@Param("ruleId")Integer ruleId,@Param("markNo") String markNo);
}
......@@ -2,16 +2,41 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dlbridge.jadp.plugins.cmpt.dao.mapper.CmptScoreFieldValueMapper">
<select id="getCmptScoreFieldValuesByCmptId" resultType="CmptScoreFieldValue">
select id,scoreFieldId,scoreFieldName,scoreFieldValue,cmptId from gk_cmpt_score_field_value where cmptId=#{cmptId} order by id
<select id="getCmptScoreFieldValueByCmptId" resultType="CmptScoreFieldValue">
select id,scoreFieldId,scoreFieldName,scoreFieldValue,cmptId
from gk_cmpt_score_field_value
where cmptId=#{cmptId} and isDelete=0 order by id
</select>
<insert id="insert">
INNER JOIN gk_cmpt_score_field_value(scoreFieldId,scoreFieldName,scoreFieldValue,cmptId) VALUES(#scoreFieldId,#scoreFieldName,#scoreFieldValue,#cmptId)
<insert id="save">
insert into gk_cmpt_score_field_value(scoreFieldId,scoreFieldName,scoreFieldValue,cmptId,rule_id,markNo,insertTime)
VALUES(#{cmpt.scoreFieldId},#{cmpt.scoreFieldName},#{cmpt.scoreFieldValue},#{cmpt.cmptId},#{cmpt.ruleId},#{cmpt.markNo},now())
</insert>
<update id="update">
UPDATE gk_cmpt_score_field_value set cmptId=#{cmptId},scoreFieldName=#{scoreFieldName},scoreFieldValue=#{scoreFieldValue} where scoreFieldId=#{scoreFieldId}
UPDATE gk_cmpt_score_field_value set
scoreFieldName=#{cmpt.scoreFieldName},
scoreFieldValue=#{cmpt.scoreFieldValue},
updateTime = now()
where scoreFieldId=#{cmpt.scoreFieldId}
</update>
<select id="getCmptScoreFieldValueByCmptIdAndMarkNo" resultType="CmptScoreFieldValue">
select a.field_name scoreFieldName,a.id scoreFieldId, b.scoreFieldValue,a.cmpt_id cmptId
from gk_cmpt_score_field a
left join gk_cmpt_score_field_value b
on a.id = b.scoreFieldId and b.markNo=#{markNo} and b.isDelete=0
where a.cmpt_id=#{cmptId} and a.is_delete=0 order by a.id
</select>
<select id="getCmptScoreFieldValueByRuleIdAndMarkNo" resultType="CmptScoreFieldValue">
select a.id,a.scoreFieldId,b.field_name scoreFieldName,a.scoreFieldValue,a.cmptId
from gk_cmpt_score_field b
left join gk_cmpt_score_field_value a on a.scoreFieldId=b.id and markNo=#{markNo} and a.isDelete=0
where rule_id=#{ruleId} and b.is_delete=0 order by id
</select>
<update id="deleteFieldValueByRuleIdAndMarkNo">
update gk_cmpt_score_field_value set isDelete=1 where rule_id =#{ruleId} and markNo=#{markNo}
</update>
</mapper>
\ No newline at end of file
package com.dlbridge.jadp.plugins.cmpt.dao.mapper;
import com.dlbridge.jadp.plugins.cmpt.bean.CmptScoreRule;
import com.dlbridge.jadp.plugins.cmpt.bean.ScoreRuleMap;
import com.dlbridge.jadp.plugins.cmpt.bean.UserScoreExcelBean;
import org.apache.ibatis.annotations.Param;
import java.util.List;
......@@ -20,12 +23,31 @@ public interface CmptScoreRuleMapper {
* 对赛事规则进行存储
* @param cmptScoreRule
*/
public void save(CmptScoreRule cmptScoreRule);
public void save(@Param("cmptScoreRule") CmptScoreRule cmptScoreRule);
/**
* 对赛事规则进行更新
* @param cmptScoreRule
*/
public void update(CmptScoreRule cmptScoreRule);
public void update(@Param("cmptScoreRule") CmptScoreRule cmptScoreRule);
CmptScoreRule getCmptScoreRulesByCmptIdAndIndex(@Param("cmptId") Integer cmptId,@Param("indexId") Integer indexId);
int saveScoreRuleMap(@Param("scoreRuleMap") ScoreRuleMap scoreRuleMap);
Integer getCmptScoreRulesMapBymarkNoAndRuleId(@Param("markNo") String markNo,@Param("ruleId") Integer ruleId);
CmptScoreRule getCmptScoreRulesById(int id);
void delete(int id);
void deleteScoreMap(@Param("markNo") String markNo,@Param("scoreItemId") Integer scoreItemId);
List<ScoreRuleMap> getAllRuleAndScoreItemByMarkNoAndCmptId(Integer cmptId, String markNo);
int getRoadStatistic(@Param("cmptId") Integer cmptId,@Param("roadId") String roadId,@Param("ruleId") int ruleId);
List<UserScoreExcelBean> getRoadStatisticByCmptIdAndRoadId(@Param("cmptId") Integer cmptId,@Param("roadId") String roadId);
Integer getCmptScoreRulesMapByMarkNoAndScoreId(@Param("markNo") String markNo,@Param("scoreItemId") Integer scoreItemId);
}
<?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.dlbridge.jadp.plugins.cmpt.dao.mapper.CmptScoreFieldValueMapper">
<mapper namespace="com.dlbridge.jadp.plugins.cmpt.dao.mapper.CmptScoreRuleMapper">
<select id="getCmptScoreRuleByCmptId" resultType="CmptScoreRule">
select id,index,cmpt_id as cmptId,start_time as startTime,end_time as endTime from gk_cmpt_score_rule where cmpt_id=#{cmptId} order by index
select id,`index`,cmpt_id as cmptId,start_time as startTime,end_time as endTime
from gk_cmpt_score_rule where cmpt_id=#{cmptId} order by `index`
</select>
<insert id="insert">
insert into gk_cmpt_score_rule(id,cmptid,start_time,end_time) VALUES(#id,#cmptId,#startTime,#endTime)
<insert id="save" useGeneratedKeys="true" keyProperty="id" keyColumn="id">
insert into gk_cmpt_score_rule(cmpt_id,`index`,start_time,end_time)
VALUES(#{cmptScoreRule.cmptId},#{cmptScoreRule.index},#{cmptScoreRule.startTime},#{cmptScoreRule.endTime})
</insert>
<update id="update">
UPDATE gk_cmpt_score_rule SET
cmptid = #{cmptId},
index=#{index},
start_time = #{startTime},
end_time = #{endTime}
WHERE id = #{id}
cmpt_id = #{cmptScoreRule.cmptId},
`index`=#{cmptScoreRule.index},
start_time = #{cmptScoreRule.startTime},
end_time = #{cmptScoreRule.endTime},
update_time = now()
WHERE id = #{cmptScoreRule.id}
</update>
<select id="getCmptScoreRulesByCmptIdAndIndex" resultType="CmptScoreRule">
select id,`index`,cmpt_id as cmptId,
start_time as startTime,
end_time as endTime
from gk_cmpt_score_rule
where cmpt_id=#{cmptId} and `index` = #{indexId}
limit 1
</select>
<insert id="saveScoreRuleMap">
insert into gk_cmpt_score_rule_map(
rule_id,
score_item_id,
mark_no
) values (
#{scoreRuleMap.ruleId},
#{scoreRuleMap.scoreItemId},
#{scoreRuleMap.markNo}
)
</insert>
<select id="getCmptScoreRulesMapBymarkNoAndRuleId" resultType="java.lang.Integer">
select score_item_id scoreItemId
from gk_cmpt_score_rule_map
where mark_no=#{markNo} and rule_id=#{ruleId}
</select>
<delete id="delete">
delete from gk_cmpt_score_rule where id = #{id}
</delete>
<select id="getCmptScoreRulesById" resultType="CmptScoreRule">
select id,`index`,cmpt_id as cmptId,start_time as startTime,end_time as endTime
from gk_cmpt_score_rule where id=#{id}
</select>
<delete id="deleteScoreMap">
delete from gk_cmpt_score_rule_map
where score_item_id=#{scoreItemId} and mark_no=#{markNo}
</delete>
<select id="getAllRuleAndScoreItemByMarkNoAndCmptId" resultType="com.dlbridge.jadp.plugins.cmpt.bean.ScoreRuleMap">
select a.id ruleId, b.score_item_id scoreItemId
from gk_cmpt_score_rule a
left join gk_cmpt_score_rule_map b on a.id=b.rule_id and b.mark_no=#{markNo}
where a.cmpt_id=#{cmptId}
</select>
<select id="getRoadStatistic" resultType="int">
select count(1)
from gksite.gk_cmpt_score_rule rule
inner join gksite.gk_cmpt_score_rule_map rulemap on rule.id = rulemap.rule_id
inner join geexekscore.cmpt_subsection_score score on rulemap.score_item_id = score.id
inner join geerunner.cmpt_enroll enroll on rule.cmpt_id=enroll.cmpt_id and rulemap.mark_no=enroll.nick_id and enroll.del_flg=0
where rule.cmpt_id=#{cmptId} and rule.id=#{ruleId}
and enroll.cmpt_item=#{roadId}
</select>
<resultMap id="userMap" type="com.dlbridge.jadp.plugins.cmpt.bean.UserScoreExcelBean">
<id column="user_enroll_id" property="enroll_id"></id>
<association property="user" columnPrefix="user_" javaType="com.dlbridge.jadp.plugins.cmpt.bean.EnrollUser">
<id column="enroll_id" property="enroll_id"></id>
<result column="markNo" property="markNo"></result>
<result column="itemName" property="item_name"></result>
<result column="sex" property="sex"></result>
<result column="memberName" property="member_name"></result>
</association>
<collection property="scores" columnPrefix="score_" ofType="com.dlbridge.jadp.plugins.cmpt.bean.ScoreExcelBean">
<id column="scoreId" property="id"></id>
<result column="date" property="date"></result>
<result column="ruleId" property="ruleId"></result>
<result column="duration" property="duration"></result>
<collection property="fieldValues" columnPrefix="field_" ofType="com.dlbridge.jadp.plugins.cmpt.bean.CmptScoreFieldValue">
<id column="fvid" property="id"></id>
<result column="scoreFieldName" property="scoreFieldName"></result>
<result column="scoreFieldValue" property="scoreFieldValue"></result>
</collection>
</collection>
</resultMap>
<select id="getRoadStatisticByCmptIdAndRoadId" resultMap="userMap">
select enroll.enroll_id user_enroll_id,enroll.member_name user_memberName,enroll.sex user_sex,item.item_name user_itemName,
enroll.nick_id user_markNo,rulemap.rule_id score_ruleId,
score.id score_scoreId,score.subsectionscore score_duration,score.subsectionTime score_date,
fv.id score_field_fvid, fv.scoreFieldValue score_field_scoreFieldValue,fv.scoreFieldName score_field_scoreFieldName
from geerunner.cmpt_enroll enroll
left join gksite.gk_cmpt_score_rule rule on rule.cmpt_id=enroll.cmpt_id
LEFT join gksite.gk_cmpt_score_rule_map rulemap on rule.id = rulemap.rule_id and enroll.nick_id=rulemap.mark_no
left join geexekscore.cmpt_subsection_score score on rulemap.score_item_id = score.id
left join geerunner.cmpt_item item on item.item_id = enroll.cmpt_item
left join gksite.gk_cmpt_score_field_value fv on fv.rule_id=rule.id and fv.markNo=enroll.nick_id
where enroll.cmpt_id=#{cmptId}
and enroll.cmpt_item=#{roadId} and enroll.del_flg=0
</select>
<select id="getCmptScoreRulesMapByMarkNoAndScoreId" resultType="java.lang.Integer">
select rule_id
from gk_cmpt_score_rule_map
where mark_no =#{markNo} and score_item_id=#{scoreItemId}
</select>
</mapper>
\ No newline at end of file
......@@ -3,7 +3,9 @@ package com.dlbridge.jadp.plugins.cmpt.dao.mapper;
import java.util.List;
import java.util.Map;
import com.dlbridge.jadp.plugins.cmpt.bean.CmptSettingTemplate;
import com.dlbridge.jadp.plugins.cmpt.bean.Func;
import com.dlbridge.jadp.plugins.cmpt.bean.SettingTemplate;
import org.apache.ibatis.annotations.Param;
import com.dlbridge.jadp.plugins.cmpt.dao.model.CmptSetting;
......@@ -32,4 +34,10 @@ public interface CmptSettingMapper {
CmptSetting getCmptSettingById(String id);
Integer getCommonEnrollCmptId(int cmptId);
List<SettingTemplate> queryAllSettingTemplate();
List<CmptSettingTemplate> queryAllCmptSetting();
void insert(CmptSetting setting);
}
......@@ -59,11 +59,9 @@
type,
status,
visibility,
style,
seq,
create_by,
create_date,
update_by,
update_date,
del_flag
) VALUES (
#{id},
......@@ -72,12 +70,10 @@
#{type},
#{status},
#{visibility},
#{style},
#{seq},
#{createBy},
#{createDate},
#{updateBy},
#{updateDate},
#{delFlag}
now(),
0
)
</insert>
......@@ -145,4 +141,23 @@
<select id="getCommonEnrollCmptId" resultType="java.lang.Integer">
select gcmptid from common.neucmpt where gtcmptid=#{cmptId}
</select>
<select id="queryAllSettingTemplate" resultType="com.dlbridge.jadp.plugins.cmpt.bean.SettingTemplate">
select * from gk_cmptsetting_template
</select>
<resultMap id="cmptSettingMap" type="com.dlbridge.jadp.plugins.cmpt.bean.CmptSettingTemplate">
<id column="cmptid" property="cmptId"></id>
<collection property="settingTemplates" columnPrefix="cmpt_" ofType="com.dlbridge.jadp.plugins.cmpt.bean.SettingTemplate">
<id column="cmptid" property="cmptId"></id>
<result column="name" property="name"></result>
<result column="type" property="type"></result>
</collection>
</resultMap>
<select id="queryAllCmptSetting" resultMap="cmptSettingMap">
select cmptid,name cmpt_name,type cmpt_type
from gk_cmptsetting
</select>
</mapper>
\ No newline at end of file
......@@ -7,6 +7,7 @@ import com.dlbridge.jadp.common.persistence.JaapRecord;
import java.util.List;
public class CmptSetting extends JaapRecord<CmptSetting> {
private static final long serialVersionUID = 1L;
......@@ -88,4 +89,6 @@ public class CmptSetting extends JaapRecord<CmptSetting> {
public void setStatus(int status) {
this.status = status;
}
}
......@@ -8,6 +8,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Collections;
import java.util.List;
/**
......@@ -25,7 +26,7 @@ public class CmptScoreFieldService {
*/
public int saveOrUpdate(List<CmptScoreField> cmptScoreFields){
for(CmptScoreField cmptScoreField:cmptScoreFields){
if(cmptScoreField.getId()==0){
if(cmptScoreField.getId() == null){
cmptScoreFieldMapper.save(cmptScoreField);
}else{
cmptScoreFieldMapper.update(cmptScoreField);
......@@ -40,8 +41,10 @@ public class CmptScoreFieldService {
* @return
*/
public List<CmptScoreField> getCmptScoreFieldByCmptId(int cmptId){
List<CmptScoreField> cmptScoreFieldList=null;
cmptScoreFieldList=cmptScoreFieldMapper.getCmptScoreFieldByCmptId(cmptId);
return cmptScoreFieldList;
return cmptScoreFieldMapper.getCmptScoreFieldByCmptId(cmptId);
}
public void saveOrUpdate(CmptScoreField cmptScoreField) {
saveOrUpdate(Collections.singletonList(cmptScoreField));
}
}
......@@ -39,9 +39,18 @@ public class CmptScoreFieldValueService {
* @return
*/
public List<CmptScoreFieldValue> getCmptScoreFieldValueByCmptId(int cmptId){
List<CmptScoreFieldValue> cmptScoreFieldValueList=null;
cmptScoreFieldValueList=cmptScoreFieldValueMapper.getCmptScoreFieldValueByCmptId(cmptId);
return cmptScoreFieldValueList;
return cmptScoreFieldValueMapper.getCmptScoreFieldValueByCmptId(cmptId);
}
public List<CmptScoreFieldValue> getCmptScoreFieldValueByCmptIdAndMarkNo(Integer cmptId, String markNo) {
return cmptScoreFieldValueMapper.getCmptScoreFieldValueByCmptIdAndMarkNo(cmptId,markNo);
}
public List<CmptScoreFieldValue> getCmptScoreFieldValueByRuleIdAndMarkNo(Integer ruleId, String markNo) {
return cmptScoreFieldValueMapper.getCmptScoreFieldValueByRuleIdAndMarkNo(ruleId,markNo);
}
public void deleteFieldValueByRuleIdAndMarkNo(Integer ruleId, String markNo) {
cmptScoreFieldValueMapper.deleteFieldValueByRuleIdAndMarkNo(ruleId,markNo);
}
}
package com.dlbridge.jadp.plugins.cmpt.service;
import com.dlbridge.jadp.plugins.cmpt.bean.CmptScoreRule;
import com.dlbridge.jadp.plugins.cmpt.bean.ScoreRuleMap;
import com.dlbridge.jadp.plugins.cmpt.bean.UserScoreExcelBean;
import com.dlbridge.jadp.plugins.cmpt.dao.mapper.CmptScoreRuleMapper;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
......@@ -37,8 +39,46 @@ public class CmptScoreRuleService {
* @return
*/
public List<CmptScoreRule> getCmptScoreRulesByCmptId(int cmptId){
List<CmptScoreRule> cmptScoreRuleList=null;
cmptScoreRuleList=cmptScoreRuleMapper.getCmptScoreRuleByCmptId(cmptId);
return cmptScoreRuleList;
return cmptScoreRuleMapper.getCmptScoreRuleByCmptId(cmptId);
}
public CmptScoreRule getCmptScoreRulesByCmptIdAndIndex(Integer cmptId, Integer indexId) {
return cmptScoreRuleMapper.getCmptScoreRulesByCmptIdAndIndex(cmptId,indexId);
}
public int saveScoreRuleMap(ScoreRuleMap scoreRuleMap) {
return cmptScoreRuleMapper.saveScoreRuleMap(scoreRuleMap);
}
public Integer getCmptScoreRulesMapByMarkNoAndRuleId(String markNo, Integer ruleid) {
return cmptScoreRuleMapper.getCmptScoreRulesMapBymarkNoAndRuleId(markNo,ruleid);
}
public CmptScoreRule getCmptScoreRulesById(int id) {
return cmptScoreRuleMapper.getCmptScoreRulesById(id);
}
public void delete(int id) {
cmptScoreRuleMapper.delete(id);
}
public void deleteScoreMap(String markNo, Integer scoreItemId) {
cmptScoreRuleMapper.deleteScoreMap(markNo,scoreItemId);
}
public List<ScoreRuleMap> getAllRuleAndScoreItemByMarkNoAndCmptId(Integer cmptId, String markNo) {
return cmptScoreRuleMapper.getAllRuleAndScoreItemByMarkNoAndCmptId(cmptId,markNo);
}
public int getRoadStatistic(Integer cmptId, String roadId, int ruleId) {
return cmptScoreRuleMapper.getRoadStatistic(cmptId,roadId,ruleId);
}
public List<UserScoreExcelBean> getRoadStatisticByCmptIdAndRoadId(Integer cmptId, String roadId) {
return cmptScoreRuleMapper.getRoadStatisticByCmptIdAndRoadId(cmptId,roadId);
}
public Integer getCmptScoreRulesMapByMarkNoAndScoreId(String markNo, Integer scoreItemId) {
return cmptScoreRuleMapper.getCmptScoreRulesMapByMarkNoAndScoreId(markNo,scoreItemId);
}
}
......@@ -3,7 +3,9 @@ package com.dlbridge.jadp.plugins.cmpt.service;
import java.util.List;
import java.util.Map;
import com.dlbridge.jadp.plugins.cmpt.bean.CmptSettingTemplate;
import com.dlbridge.jadp.plugins.cmpt.bean.Func;
import com.dlbridge.jadp.plugins.cmpt.bean.SettingTemplate;
import com.dlbridge.jadp.plugins.cmpt.dao.mapper.CmptSettingMapper;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
......@@ -44,7 +46,8 @@ public class CmptSettingService {
cmptSettingMapper.updateById(cmptSetting);
}
public void save(CmptSetting cmptSetting1) {
public void save(CmptSetting setting) {
cmptSettingMapper.insert(setting);
}
public List<Func> queryFuncs(int cmpId) {
......@@ -56,7 +59,6 @@ public class CmptSettingService {
for (int i = 0; i < split.length; i++) {
cmptSettingMapper.updateSettingOrder(split[i], i + 1);
}
}
public List<Func> queryAllFuncs(int cmpId) {
......@@ -70,4 +72,14 @@ public class CmptSettingService {
public Integer getCommonEnrollCmptId(int cmptId) {
return cmptSettingMapper.getCommonEnrollCmptId(cmptId);
}
public List<SettingTemplate> queryAllSettingTemplate() {
return cmptSettingMapper.queryAllSettingTemplate();
}
public List<CmptSettingTemplate> queryAllCmptSetting() {
return cmptSettingMapper.queryAllCmptSetting();
}
}
......@@ -130,6 +130,7 @@ public class RemoteService {
info.setEnrollId(content.getString("enrollId"));
info.setPhone(content.getString("phone"));
info.setRemark(content.getString("remark"));
info.setGender("0".equals(content.getString("gender")) ? "男":"女");
return info;
} else {
return null;
......@@ -195,6 +196,7 @@ public class RemoteService {
info.setUserName(content.getString("name"));
info.setEnrollId(content.getString("enrollId"));
info.setPhone(content.getString("phone"));
info.setGender("0".equals(content.getString("gender")) ? "男":"女");
return info;
} else {
return null;
......@@ -274,4 +276,40 @@ public class RemoteService {
return null;
}
}
public List<RoadStatistic> getRoadsStatistic(Integer cmptId) {
ResponseEntity<String> forEntity = restTemplate.getForEntity(timerURL + "getCmptItemList.do?cmptId="+ cmptId + "&checkCountFlg=1", String.class);
if (forEntity.getStatusCode() == HttpStatus.OK) {
List<RoadStatistic> users = new ArrayList<>();
String resultString = forEntity.getBody();
log.info("报名的信息:" + resultString);
JSONObject object = JSONObject.parseObject(resultString);
JSONArray result = object.getJSONArray("content");
if (result == null || result.isEmpty()) return null;
for (int i = 0; i < result.size(); i++) {
RoadStatistic user = new RoadStatistic();
JSONObject o = (JSONObject) result.get(i);
String enrollCount = o.getString("enrollCount");
String roadName = o.getString("roadName");
String roadId = o.getString("roadId");
user.setEnrollCount(enrollCount).setRoadId(roadId).setRoadName(roadName);
users.add(user);
}
return users;
} else {
return null;
}
}
public String checkCert(String cmptId, String keyword) {
ResponseEntity<String> forEntity = restTemplate.getForEntity(timerURL + "checkCert.do?cmptId="+ cmptId + "&keyword="+keyword, String.class);
if (forEntity.getStatusCode() == HttpStatus.OK) {
return forEntity.getBody();
}else{
return null;
}
}
}
package com.dlbridge.jadp.plugins.cmpt.utils.date; import com.fasterxml.jackson.core.JsonParser;import com.fasterxml.jackson.core.JsonProcessingException;import com.fasterxml.jackson.databind.DeserializationContext;import com.fasterxml.jackson.databind.JsonDeserializer;import org.apache.log4j.Logger; import java.io.IOException;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date; /** * DateSerializers2 for Jackson2 * * @author Erich * * */public class DateDeserializers { private static Logger logger = Logger.getLogger(DateDeserializers.class); private static final SimpleDateFormat date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); /** * yyyy-MM-dd HH:mm:ss * */ public static final class ISO8601Long extends JsonDeserializer<Date> { @Override public Date deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException { try { return date.parse(jp.getValueAsString()); } catch (ParseException e) { logger.error(e.getMessage(),e); return null; } } } }
\ No newline at end of file
package com.dlbridge.jadp.plugins.cmpt.utils.date; import com.fasterxml.jackson.core.JsonGenerator;import com.fasterxml.jackson.core.JsonProcessingException;import com.fasterxml.jackson.databind.JsonSerializer;import com.fasterxml.jackson.databind.SerializerProvider;import org.apache.commons.lang3.time.DateFormatUtils; import java.io.IOException;import java.util.Date; /** * DateSerializers2 for Jackson2 * * */public class DateSerializers { /** * yyyy-MM-dd HH:mm:ss * */ public static final class ISO8601Long extends JsonSerializer<Date> { @Override public void serialize(Date value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException { DateSerializers.serialize(jgen, value, "yyyy-MM-dd HH:mm:ss"); } } /** * yyyy-MM-dd * */ public static final class ISO8601Short extends JsonSerializer<Date> { @Override public void serialize(Date value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException { DateSerializers.serialize(jgen, value, "yyyy-MM-dd"); } } /** * LongString to ISO8601Long * * @author Erich * */ public static final class LongStringToISO8601Long extends JsonSerializer<String> { @Override public void serialize(String value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException { Date date = null; if (value != null) {//long string date = new Date(Long.parseLong(value)); } DateSerializers.serialize(jgen, date, "yyyy-MM-dd HH:mm:ss"); } } /** * serialize * * @param jgen * @param value * @param format * @throws IOException */ private static void serialize(JsonGenerator jgen, Date value, String format) throws IOException { if (value == null) { jgen.writeNull(); } else { jgen.writeString(DateFormatUtils.format(value, format)); } } }
\ No newline at end of file
package com.dlbridge.jadp.plugins.cmpt.utils.date;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang3.math.NumberUtils;
import org.apache.commons.lang3.time.DateUtils;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
public class DateUtil extends org.apache.commons.lang3.time.DateUtils {
public static final String DEFAULT_PATTERN = "yyyy-MM-dd HH:mm:ss";
public static final String SHORT_PATTERN = "yyyy-MM-dd";
private static final TimeZone GMT = TimeZone.getTimeZone("GMT");
private DateUtil() {
}
public static String formatDate(long date){
int hour = (int) (date / 3600);
int min = (int) (date/ 60 % 60);
int ms = (int) (date % 60 % 60);
return String.format("%02d",hour)+":"+String.format("%02d",min)+":"+String.format("%02d",ms);
}
public static TimeZone getGMTTimeZone() {
return GMT;
}
public static String dateString(Date date) {
return format("yyyyMMdd", date);
}
public static String dateString() {
return dateString(new Date());
}
private static TimeZone getDefaultTimeZone() {
return null;
}
public static Date parseE(String dateText) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat();
TimeZone timeZone = getDefaultTimeZone();
if (timeZone != null) {
sdf.setTimeZone(timeZone);
}
return sdf.parse(dateText);
}
public static Date parse(String format, String dateText) throws ParseException {
if(StringUtils.isBlank(dateText)){
return DateUtils.addYears(new Date(), 20);
}
SimpleDateFormat sdf = new SimpleDateFormat(format);
TimeZone timeZone = getDefaultTimeZone();
if (timeZone != null) {
sdf.setTimeZone(timeZone);
}
return sdf.parse(dateText);
}
public static String format(Date date) {
SimpleDateFormat sdf = new SimpleDateFormat();
TimeZone timeZone = getDefaultTimeZone();
if (timeZone != null) {
sdf.setTimeZone(timeZone);
}
return sdf.format(date);
}
public static String format(String format, Date date) {
SimpleDateFormat sdf = new SimpleDateFormat(format);
TimeZone timeZone = getDefaultTimeZone();
if (timeZone != null) {
sdf.setTimeZone(timeZone);
}
return sdf.format(date);
}
/**
* @param startTime
* @param end
* @return
*/
public static boolean isBetweenTwoDates(Date startTime, Date end) {
Date current = new Date();
if(startTime.after(current)){
return false;
}
if(end.before(current)){
return false;
}
return true;
}
public static long dateStrToMs70(String dateStr){
try{
SimpleDateFormat sdf = new SimpleDateFormat(DEFAULT_PATTERN);
return sdf.parse(dateStr).getTime();
}catch(Exception e){
return System.currentTimeMillis();
}
}
/**
* 把时间时分秒变成固定00:00:00
*/
public static String dateHourBegin(String dateStr){
try{
SimpleDateFormat sdf = new SimpleDateFormat(SHORT_PATTERN);
Date testDate = sdf.parse(dateStr);
String hourbegin = sdf.format(testDate)+" 00:00:00";
return hourbegin;
}catch(Exception e){
return dateStr;
}
}
/**
* 把时间时分秒变成固定23:59:59
*/
public static String dateHourEnd(String dateStr){
try{
SimpleDateFormat sdf = new SimpleDateFormat(SHORT_PATTERN);
Date testDate = sdf.parse(dateStr);
String hourend = sdf.format(testDate)+" 23:59:59";
return hourend;
}catch(Exception e){
return dateStr;
}
}
/**
* 计算两个时间相差的天数
*/
public static int DifDays(Date date1, Date date2){
int days = 0;
if(null !=date1 && null !=date2){
days = (int) ((date2.getTime() - date1.getTime()) / (1000*3600*24));
}
return days;
}
/**
* 计算当前时间的年份 以及当前年的月份有几天
*/
public static Integer getMonthDays(Integer month){
Calendar cal = Calendar.getInstance();
Integer year = cal.get(Calendar.YEAR);
cal.set(Calendar.YEAR,year);
cal.set(Calendar.MONTH, month - 1);//Java月份才0开始算
Integer dateOfMonth = cal.getActualMaximum(Calendar.DATE);
return dateOfMonth;
}
/**
* 字符串转Date
* @param str
* @param pattern
* @return
*/
public static Date converDate(String str, String pattern) {
if (StringUtils.isBlank(pattern)) {
pattern = DEFAULT_PATTERN;
}
DateFormat df = new SimpleDateFormat(pattern);
if ((str == null) || (str.equals(""))) {
return new Date();
}
try {
return df.parse(str);
} catch (Exception e) {
e.printStackTrace();
}
return new Date();
}
/**
* 与系统当前时间比较
* 若小返回1
* @return
* @throws ParseException
*/
public static int compareNowDate(String dateStr) throws ParseException {
SimpleDateFormat formatt = new SimpleDateFormat("yyyy-MM-dd HH:mm");
Date date = new Date();
if(!StringUtils.isBlank(dateStr) && formatt.parse(dateStr).getTime()<date.getTime()){
return 1;
}
else{
return 0;
}
}
/**
* 倒计时(返回end到start距离的X天X小时X分钟)
* endDateStr < startDateStr 时返回0-0-0
* @param startDateStr 空白为系统时间
* @param endDateStr 空白为系统时间
* @return x-x-x
* @throws ParseException
*/
public static String getCountDownDay(String startDateStr, String endDateStr) throws ParseException {
Date stDate = new Date();
Date edDate = new Date();
SimpleDateFormat formatt = new SimpleDateFormat(DEFAULT_PATTERN);
if (!StringUtils.isBlank(startDateStr)) {
stDate = formatt.parse(startDateStr);
}
if (!StringUtils.isBlank(endDateStr)) {
edDate = formatt.parse(endDateStr);
}
if (edDate.getTime() < stDate.getTime()) return "0-0-0";
long ms = edDate.getTime() - stDate.getTime();
int day = (int) ( ms / 1000 / 60 / 60 / 24 );
int hour = (int) ( ms / 1000 / 60 / 60 % 24 );
int minute = (int) ( ms / 1000 / 60 % 60 );
return day +"-"+ hour +"-"+ minute;
}
/**
* 支持负数,支持大于24小时
* @param timespan hh:mm:ss.SSS/hh:mm:ss
* @return 毫秒数
*/
public static long timespanToMs(String timespan){
int sign = 1;
if (timespan.indexOf('.')==-1){
timespan = timespan+".000";
}
if (timespan.indexOf('-')==0){
timespan = timespan.substring(1);
sign = -1;
}
SimpleDateFormat sdf=new SimpleDateFormat("HH:mm:ss.SSS");
Date d = null;
try {
sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
d = sdf.parse(timespan);
} catch (ParseException e) {
e.printStackTrace();
return 0;
}
return d.getTime()*sign;
}
/**
* 1970至今ms转yyyy-MM-dd HH:mm:ss
* @param ms70 1970至今ms
* @return yyyy-MM-dd HH:mm:ss
*/
public static String ms70ToDateTimeStr(long ms70) {
return ms70ToDateTimeStr(ms70, DEFAULT_PATTERN);
}
/**
* 1970至今ms转pattern,如果.SSS为.000则自动隐藏
* @param ms70
* @param pattern
* @return
*/
public static String ms70ToDateTimeStr(long ms70, String pattern){
String str = "";
Date date = new Date(ms70);
DateFormat dateFormat = new SimpleDateFormat(pattern);
str = dateFormat.format(date);
if (str.contains(".000")){
str = str.replace(".000", "");
}
return str;
}
//根据日期获取星期
public static String getWeek(Date date){
String[] weeks = {"周日","周一","周二","周三","周四","周五","周六"};
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int week_index = cal.get(Calendar.DAY_OF_WEEK) - 1;
if(week_index<0){
week_index = 0;
}
return weeks[week_index];
}
public static boolean isValidDate(String str, boolean checkBirthday){
if(StringUtils.isBlank(str) || str.split("-").length != 3){
return false;
}
String[] dates = str.split("-");
for(String s : dates){
if(!NumberUtils.isDigits(s)) return false;
}
if(checkBirthday){
if(NumberUtils.toInt(dates[0], 9999) > Calendar.getInstance().get(Calendar.YEAR))return false;
if(NumberUtils.toInt(dates[0], 9999) < 1900) return false;
}
if(NumberUtils.toInt(dates[1], 99) > 12)return false;
if(NumberUtils.toInt(dates[2], 99) > 31)return false;
try{
Date date = DateUtils.parseDate(str, "yyyy-MM-dd");
DateFormat formater = new SimpleDateFormat("yyyy-MM-dd");
formater.format(date);
}catch (Exception e) {
return false;
}
return true;
}
/**
* 测试
* @param args
* @throws ParseException
*/
public static void main(String[] args) throws ParseException {
System.out.println(formatDate(7531));
}
}
......@@ -64,8 +64,8 @@ public class GpxParserUtil {
place = new PlaceMark();
String placeName = elm.elementText("name");
place.setName(placeName);
String longitude = elm.attribute(0).getText().trim();
String latitude = elm.attribute(1).getText().trim();
String latitude = elm.attribute(0).getText().trim();
String longitude = elm.attribute(1).getText().trim();
String altitude = elm.elementText("ele");
altitude = altitude == null || altitude.trim().length() == 0 ? "0" : altitude.trim();
place.setLongitude(Double.parseDouble(longitude));
......
......@@ -5,8 +5,14 @@ import com.dlbridge.jadp.plugins.cmpt.bean.CmptScoreRule;
import com.dlbridge.jadp.plugins.cmpt.service.CmptScoreFieldService;
import com.dlbridge.jadp.plugins.cmpt.service.CmptScoreRuleService;
import com.neusoft.www.utils.web.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import io.swagger.annotations.ApiSort;
import io.swagger.models.auth.In;
import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
......@@ -15,8 +21,10 @@ import javax.annotation.Resource;
import java.util.List;
@Controller
@RequestMapping(value = "/gk/cmptScoreField/")
@RequestMapping(value = "/api/cmptScoreField/")
@Log4j2
@Api(value = "提交成绩", tags = "提交成绩")
@ApiSort(1)
public class CmptScoreFieldController {
@Resource
......@@ -33,14 +41,32 @@ public class CmptScoreFieldController {
return Result.success().setContent(cmptScoreFields);
}
@RequestMapping("saveOrUpdate")
@ResponseBody
private Result saveOrUpdate(CmptScoreField cmptScoreField){
cmptScoreFieldService.saveOrUpdate(cmptScoreField);
return Result.success().setContent(cmptScoreField);
}
@RequestMapping("del/{id}")
@ResponseBody
private Result del(@PathVariable("id") Integer id){
cmptScoreFieldService.saveOrUpdate(new CmptScoreField().setId(id).setIsDelete(1));
return Result.success();
}
/**
* 根据赛事Id获取赛事规则信息
* @param cmptId
* @return
*/
@ResponseBody
@RequestMapping("getCmptScoreFieldByCmptId")
private Result getCmptScoreFieldByCmptId(int cmptId){
@RequestMapping("getCmptScoreField/{cmptId}")
@ApiResponses({
@ApiResponse(code = 200, message = "成功"),
@ApiResponse(code = -1, message = "失败"),
@ApiResponse(code = 200, message = "成功", response = Result.class)})
private Result getCmptScoreFieldByCmptId(@PathVariable("cmptId") int cmptId){
List<CmptScoreField> cmptScoreField=cmptScoreFieldService.getCmptScoreFieldByCmptId(cmptId);
return Result.success().setContent(cmptScoreField);
}
......
......@@ -15,7 +15,7 @@ import javax.annotation.Resource;
import java.util.List;
@Controller
@RequestMapping(value = "/gk/cmptScoreFieldValue/")
@RequestMapping(value = "/api/cmptScoreFieldValue/")
@Log4j2
public class CmptScoreFieldValueController {
......
package com.dlbridge.jadp.plugins.cmpt.web;
import com.dlbridge.feign.ScoreService;
import com.dlbridge.feign.bean.ScoreItem;
import com.dlbridge.jadp.plugins.cmpt.bean.CmptScoreRule;
import com.dlbridge.jadp.plugins.cmpt.bean.CmptScoreRuleBean;
import com.dlbridge.jadp.plugins.cmpt.service.CmptScoreRuleService;
import com.neusoft.www.utils.web.Result;
import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@Controller
@RequestMapping(value = "/gk/cmptScoreRule/")
@RequestMapping(value = "/api/cmptScoreRule")
@Log4j2
public class CmptScoreRuleController {
@Resource
CmptScoreRuleService cmptScoreRuleService;
@Resource
ScoreService scoreService;
/**
* 更新赛事规则信息
* @param cmptScoreRules
......@@ -28,7 +37,7 @@ public class CmptScoreRuleController {
*/
@RequestMapping("saveCmptScoreRule")
@ResponseBody
private Result updateCmptScoreRule(@RequestBody List<CmptScoreRule> cmptScoreRules){
private Result saveCmptScoreRule(@RequestBody List<CmptScoreRule> cmptScoreRules){
cmptScoreRuleService.saveOrUpdate(cmptScoreRules);
return Result.success().setContent(cmptScoreRules);
}
......@@ -39,35 +48,71 @@ public class CmptScoreRuleController {
* @param cmptId
* @return
*/
@RequestMapping("getCmptScoreRuleByCmptId")
@RequestMapping("getCmptScoreRule/{cmptId}")
@ResponseBody
private Result getCmptScoreRuleByCmptId(int cmptId){
List<CmptScoreRule> cmptScoreRules=cmptScoreRuleService.getCmptScoreRulesByCmptId(cmptId);
return Result.success().setContent(cmptScoreRules);
private Result getCmptScoreRule(@PathVariable("cmptId") int cmptId, HttpServletRequest request) {
String markNo = request.getParameter("markNo");
List<CmptScoreRule> cmptScoreRules = cmptScoreRuleService.getCmptScoreRulesByCmptId(cmptId);
List<CmptScoreRuleBean> beans = new ArrayList<>(cmptScoreRules.size());
for(CmptScoreRule rule : cmptScoreRules){
CmptScoreRuleBean bean = new CmptScoreRuleBean();
bean.setCmptId(rule.getCmptId());
bean.setStartTime(rule.getStartTime());
bean.setEndTime(rule.getEndTime());
bean.setIndex(rule.getIndex());
Integer scoreItemId = cmptScoreRuleService.getCmptScoreRulesMapByMarkNoAndRuleId(markNo, rule.getId());
if(scoreItemId != null){
Result<ScoreItem> scoreItem = scoreService.getScoreItem(scoreItemId);
if(scoreItem.isStatus() && scoreItem.getContent() != null){
bean.setUploaded(true);
}else{
bean.setUploaded(false);
}
}else{
bean.setUploaded(false);
}
beans.add(bean);
}
return Result.success().setContent(beans);
}
/**
* 根据赛事Id获取赛事规则是单条还是多条
* @param cmptId
* @return
*/
private Result isCmptScoreRuleSingleByCmptId(int cmptId){
List<CmptScoreRule> cmptScoreRules=cmptScoreRuleService.getCmptScoreRulesByCmptId(cmptId);
boolean isCmptScoreRuleSingle=false;
int cmptScoreRuleSingle=0;
if(cmptScoreRules.size()==1){
isCmptScoreRuleSingle=true;
cmptScoreRuleSingle=cmptScoreRules.size();
}else{
isCmptScoreRuleSingle=false;
cmptScoreRuleSingle=cmptScoreRules.size();
@ResponseBody
@RequestMapping("isCmptScoreRuleSingle/{cmptId}")
private Result isCmptScoreRuleSingle(@PathVariable("cmptId") int cmptId) {
List<CmptScoreRule> cmptScoreRules = cmptScoreRuleService.getCmptScoreRulesByCmptId(cmptId);
boolean isCmptScoreRuleSingle = false;
if (cmptScoreRules.size() == 1) {
isCmptScoreRuleSingle = true;
} else {
isCmptScoreRuleSingle = false;
}
HashMap<String,Object> result=new HashMap<String,Object>();
result.put("isCmptScoreRuleSingle",isCmptScoreRuleSingle);
result.put("cmptScoreRuleSingle",cmptScoreRuleSingle);
HashMap<String, Object> result = new HashMap<String, Object>();
result.put("isCmptScoreRuleSingle", isCmptScoreRuleSingle);
result.put("cmptScoreRuleSingle", cmptScoreRules);
return Result.success().setContent(result);
}
/**
* 根据赛事Id获取赛事规则是单条还是多条
* @param cmptId
* @return
*/
@ResponseBody
@RequestMapping("del/{id}")
private Result del(@PathVariable("id") int id) {
CmptScoreRule rule = cmptScoreRuleService.getCmptScoreRulesById(id);
log.info("删除的规则:"+rule);
cmptScoreRuleService.delete(id);
return Result.success();
}
}
package com.dlbridge.jadp.plugins.cmpt.web;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import com.dlbridge.jadp.common.interceptor.PageView;
import com.dlbridge.jadp.plugins.cmpt.bean.CmptSettingTemplate;
import com.dlbridge.jadp.plugins.cmpt.bean.FuncSetting;
import com.dlbridge.jadp.plugins.cmpt.bean.Road;
import com.dlbridge.jadp.plugins.cmpt.bean.SettingTemplate;
import com.dlbridge.jadp.plugins.cmpt.dao.model.Manual;
import com.dlbridge.jadp.plugins.cmpt.service.*;
import com.neusoft.www.utils.web.RequestParamHelper;
......@@ -80,6 +85,50 @@ public class CmptSettingController {
return mv;
}
/**
* 去功能管理页面
*
* @return
*/
@RequestMapping(value = "updateSetting")
@ResponseBody
public String updateSetting() {
List<SettingTemplate> templates = cmptSettingService.queryAllSettingTemplate();
List<CmptSettingTemplate> cmptSettingTemplates = cmptSettingService.queryAllCmptSetting();
List<CmptSettingTemplate> needTemplate = new ArrayList<>();
cmptSettingTemplates.forEach(setting -> {
List<SettingTemplate> collect = templates.stream().filter(item -> !setting.getSettingTemplates().stream()
.map(st -> st.getType()).collect(Collectors.toList()).contains(item.getType())).collect(Collectors.toList());
if(collect.size() > 0){
CmptSettingTemplate template = new CmptSettingTemplate();
template.setCmptId(setting.getCmptId());
template.setRestSettingTemplates(collect);
needTemplate.add(template);
}
});
needTemplate.forEach(item -> {
item.getRestSettingTemplates().forEach(it->{
CmptSetting setting = new CmptSetting();
setting.setCmptId(item.getCmptId()+"");
setting.setId(UUID.randomUUID().toString().replace("-",""));
setting.setName(it.getName()+"");
setting.setSeq(it.getSeq()+"");
setting.setStatus(it.getStatus());
setting.setStyle(it.getStyle());
setting.setType(it.getType());
setting.setVisibility(it.getVisibility()+"");
System.out.println("补齐菜单:"+setting);
cmptSettingService.save(setting);
});
});
return "ok";
}
/**
* 修改赛事活动启用状态
*/
......@@ -124,6 +173,8 @@ public class CmptSettingController {
count = equipmentService.queryEquipments(cmptId).size();
} else if (type == 11) { // 赛事报名
count = remoteService.getEnrollCmptAuditStatus(cmptId + "");
}else if (type == 12) { // 赛事报名
count = remoteService.getCmptEnrollCount(cmptId);
} else {
return Result.success();
}
......
package com.dlbridge.jadp.plugins.cmpt.web;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.dlbridge.feign.NewsService;
import com.dlbridge.feign.ScoreService;
import com.dlbridge.feign.bean.ScoreItem;
import com.dlbridge.jadp.common.service.JService;
import com.dlbridge.jadp.common.utils.DateUtils;
import com.dlbridge.jadp.job.CountJob;
import com.dlbridge.jadp.plugins.cmpt.bean.*;
import com.dlbridge.jadp.plugins.cmpt.bean.Contact;
......@@ -17,11 +21,9 @@ import com.google.gson.Gson;
import com.dlbridge.feign.bean.News;
import com.neusoft.www.utils.web.Result;
import io.swagger.annotations.*;
import lombok.extern.log4j.Log4j;
import lombok.extern.log4j.Log4j2;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.bouncycastle.ocsp.Req;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.domain.Pageable;
import org.springframework.data.redis.core.HashOperations;
......@@ -33,13 +35,12 @@ import org.springframework.web.client.RestTemplate;
import springfox.documentation.annotations.ApiIgnore;
import javax.annotation.Resource;
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServletRequest;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.*;
......@@ -51,6 +52,8 @@ import java.util.*;
public class MicroApiController {
private static final String SIGNING_CODE = "1";
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
@Resource
private RestTemplate restTemplate;
......@@ -81,6 +84,15 @@ public class MicroApiController {
@Resource
RemoteService remoteService;
@Resource
private ScoreService scoreService;
@Resource
private CmptScoreFieldValueService cmptScoreFieldValueService;
@Resource
CmptScoreRuleService cmptScoreRuleService;
@Value("${geexek.user.url}")
private String geexekURL;
......@@ -798,4 +810,135 @@ public class MicroApiController {
return Result.success();
}
/**
* 微信手机信息绑定赛事
*
* @return
*/
@PostMapping(value = "/uploadScore")
@ApiResponses({
@ApiResponse(code = 200, message = "成功"),
@ApiResponse(code = -1, message = "失败"),
@ApiResponse(code = 200, message = "成功", response = Result.class)})
@ApiOperation(value = "上传成绩", notes = "上传成绩", response = Result.class, tags = "上传成绩")
public Result uploadScore(HttpServletRequest request) throws IOException {
String contentType = request.getContentType();
//1.获取字符流
BufferedReader br = request.getReader();
//2.读取数据
String line = null;
StringBuilder sb = new StringBuilder();
while((line = br.readLine()) != null){
sb.append(line);
}
log.info("contentType:"+contentType+",body:"+sb.toString());
UserScore score = JSONObject.parseObject(sb.toString(), UserScore.class);
log.info(score);
CmptScoreRule rule = cmptScoreRuleService.getCmptScoreRulesByCmptIdAndIndex(score.getCmptId(),score.getIndexId());
if(rule == null) return Result.fail().setMsg("未找到规则");
Integer scoreId = cmptScoreRuleService.getCmptScoreRulesMapByMarkNoAndRuleId(score.getMarkNo(), rule.getId());
if(scoreId != null){
return Result.fail().setMsg("已经上传过成绩!");
}
ScoreItem scoreItem = new ScoreItem()
.setSubsectionscore(score.getScore().getDuration())
.setSubsectionTime(score.getScore().getDate())
.setCmptId(score.getCmptId())
.setCmptScoreId(1);
String date = score.getScore().getDate()+" 12:00:00";
Date date1 = DateUtils.parseDate(date);
Date endTime = rule.getEndTime();
Date startTime = rule.getStartTime();
if(date1.before(startTime) || date1.after(endTime)){
return Result.fail().setMsg("上传的时间不符合设定的时间范围,需上传时间范围:"+format.format(startTime)+"~"+format.format(endTime));
}
// 保存成绩
Result<ScoreItem> scoreItemResult = scoreService.saveItem(scoreItem);
log.info(scoreItemResult);
if(!scoreItemResult.isStatus()){
log.info("调用失败");
return Result.fail().setMsg("feign fail");
}
// 保存成绩和用户关系
cmptScoreRuleService.saveScoreRuleMap(new ScoreRuleMap()
.setMarkNo(score.getMarkNo())
.setRuleId(rule.getId())
.setScoreItemId(scoreItemResult.getContent().getId()));
for(CmptScoreFieldValue value : score.getFields()){
value.setCmptId(score.getCmptId());
value.setMarkNo(score.getMarkNo());
value.setRuleId(rule.getId());
}
// 保存设置附加项
cmptScoreFieldValueService.saveOrUpdate(score.getFields());
return Result.success().setContent(score);
}
@GetMapping(value = "/getScore")
@ApiResponses({
@ApiResponse(code = 200, message = "成功"),
@ApiResponse(code = -1, message = "失败"),
@ApiResponse(code = 200, message = "成功", response = Result.class)})
@ApiOperation(value = "上传成绩", notes = "上传成绩", response = Result.class, tags = "上传成绩")
public Result getScore(UserScore score) {
CmptScoreRule rule = cmptScoreRuleService.getCmptScoreRulesByCmptIdAndIndex(score.getCmptId(),score.getIndexId());
if(rule == null) return Result.fail().setContent("未找到匹配的规则");
EnrollInfo userInfo = remoteService.getUserInfoByMarkNo(score.getMarkNo(), score.getCmptId());
log.info("用户信息:"+userInfo);
Map<String,Object> result = new HashMap<>();
result.put("user",userInfo);
Integer scoreItemId = cmptScoreRuleService.getCmptScoreRulesMapByMarkNoAndRuleId(userInfo.getMarkNo(),rule.getId());
if(scoreItemId != null){
Result<ScoreItem> scoreItem = scoreService.getScoreItem(scoreItemId);
ScoreItem content = scoreItem.getContent();
result.put("score",new Score().setDate(content.getSubsectionTime().substring(0,10)).setDuration(content.getSubsectionscore()));
}
List<CmptScoreFieldValue> list= cmptScoreFieldValueService.getCmptScoreFieldValueByCmptIdAndMarkNo(score.getCmptId(),score.getMarkNo());
result.put("items",list);
return Result.success().setContent(result);
}
@GetMapping(value = "/checkCert.do")
@ApiResponses({
@ApiResponse(code = 200, message = "成功"),
@ApiResponse(code = -1, message = "失败"),
@ApiResponse(code = 200, message = "成功", response = Result.class)})
@ApiOperation(value = "上传成绩", notes = "上传成绩", response = Result.class, tags = "上传成绩")
public Result getScore(HttpServletRequest request) {
String cmptId = request.getParameter("cmptId");
String keyword = request.getParameter("keyword");
String result = remoteService.checkCert(cmptId,keyword);
if(request != null){
JSONObject obj = JSONObject.parseObject(result);
Integer status = obj.getIntValue("status");
if(status != null){
if(status == 0){
return Result.success().setMsg(obj.getString("message"));
}else if(status == 101){
return Result.fail().setMsg("您尚未完赛,无法查看完赛证书");
}else if(status == 102){
return Result.fail().setMsg("证书未发布,无法查看完赛证书");
}else{
return Result.fail().setMsg(obj.getString("message"));
}
}
return Result.fail().setMsg(obj.getString("message"));
}else{
return Result.fail().setMsg("网络异常");
}
}
}
package com.dlbridge.jadp.plugins.cmpt.web;
import com.dlbridge.feign.ScoreService;
import com.dlbridge.feign.bean.ScoreItem;
import com.dlbridge.jadp.common.interceptor.PageView;
import com.dlbridge.jadp.common.utils.Encodes;
import com.dlbridge.jadp.common.utils.excel.ExportExcel;
import com.dlbridge.jadp.plugins.cmpt.bean.*;
import com.dlbridge.jadp.plugins.cmpt.dao.model.Cmpt;
import com.dlbridge.jadp.plugins.cmpt.service.*;
import com.dlbridge.jadp.plugins.cmpt.utils.date.DateUtil;
import com.neusoft.www.utils.web.Result;
import lombok.extern.log4j.Log4j2;
import org.apache.commons.lang3.time.DateUtils;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.util.CellRangeAddress;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import springfox.documentation.annotations.ApiIgnore;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URLEncoder;
import java.text.ParseException;
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong;
import java.util.stream.Collectors;
@Controller
@Log4j2
@RequestMapping("gk/score/")
@ApiIgnore
public class ScoreController {
@Resource
private CmptService cmptService;
@Resource
private CmptScoreFieldService cmptScoreFieldService;
@Resource
private CmptScoreFieldValueService cmptScoreFieldValueService;
@Resource
private CmptScoreRuleService ruleService;
@Resource
private ScoreService scoreService;
@Resource
CmptScoreRuleService cmptScoreRuleService;
@Resource
RemoteService remoteService;
@RequestMapping("index/{cmptId}")
@PageView
public ModelAndView index(@PathVariable("cmptId") Integer cmptId, ModelAndView mv) {
Cmpt cmpt = cmptService.queryCmptBycmptId(cmptId);
List<CmptScoreField> fields = cmptScoreFieldService.getCmptScoreFieldByCmptId(cmptId);
List<CmptScoreRule> rules = ruleService.getCmptScoreRulesByCmptId(cmptId);
long startTime = new Date().getTime();
try {
startTime = DateUtils.parseDate( cmpt.getStartTime(),"yyyy-MM-dd HH:mm:ss").getTime();
} catch (ParseException e) {
log.info(e.getMessage(),e);
}
if(startTime <= new Date().getTime()){
mv.addObject("isClose",true);
}else{
mv.addObject("isClose",false);
}
mv.addObject("rules",rules);
mv.addObject("fields",fields);
mv.setViewName("cmpt/score");
mv.addObject("cmpt", cmpt);
return mv;
}
@RequestMapping("getScore/{cmptId}/{markNo}")
@ResponseBody
public Result getScore(@PathVariable("cmptId") Integer cmptId,
@PathVariable("markNo") String markNo) {
Map<String,Object> result = new HashMap<>();
List<CmptScoreRule> rules = ruleService.getCmptScoreRulesByCmptId(cmptId);
List<Score> scores = new ArrayList<>();
long duration = 0;
String date = "";
for(CmptScoreRule rule : rules){
Integer scoreItemId = cmptScoreRuleService.getCmptScoreRulesMapByMarkNoAndRuleId(markNo,rule.getId());
if(scoreItemId == null) continue;
Result<ScoreItem> scoreItem = scoreService.getScoreItem(scoreItemId);
ScoreItem content = scoreItem.getContent();
if(content == null) continue;
Score score = new Score()
.setDate(content.getSubsectionTime().substring(0,10))
.setDuration(content.getSubsectionscore())
.setDurationStr(DateUtil.formatDate(content.getSubsectionscore()))
.setId(content.getId());
scores.add(score);
duration += content.getSubsectionscore();
date = score.getDate();
}
EnrollInfo userInfo = remoteService.getUserInfoByMarkNo(markNo, cmptId);
result.put("user",userInfo);
result.put("scores",scores);
result.put("date",date);
result.put("total",DateUtil.formatDate(duration));
return Result.success().setContent(result);
}
@RequestMapping("charts/{cmptId}")
@ResponseBody
public Result charts(@PathVariable("cmptId") Integer cmptId) {
// 获取所有组别的报名情况
List<RoadStatistic> roadsStatistic = remoteService.getRoadsStatistic(cmptId);
// 获取分组
List<CmptScoreRule> rules = ruleService.getCmptScoreRulesByCmptId(cmptId);
List<EnrollUser> allEnrollUser = remoteService.getAllEnrollUser(cmptId);
Map<Integer,List<EnrollUser>> roadUsers = new HashMap<>(roadsStatistic.size());
roadsStatistic.forEach( road -> {
roadUsers.put(Integer.valueOf(road.getRoadId()),new ArrayList<EnrollUser>());
});
allEnrollUser.forEach(user -> {
// 分拣用户到不同的组别中
if(roadUsers.get(user.getItem_id()) != null){
roadUsers.get(user.getItem_id()).add(user);
}else{
List<EnrollUser> users = new ArrayList<>();
users.add(user);
roadUsers.put(user.getItem_id(),users);
}
});
// key roadId
Map<Integer,Map<Integer, Integer>> result = new HashMap<>();
for(Integer key : roadUsers.keySet()){
// key ruleId value score++;
Map<Integer, Integer> ruleMap = new HashMap<>();
List<EnrollUser> enrollUsers = roadUsers.get(key);
rules.forEach(rule -> {
ruleMap.put(rule.getId(),0);
enrollUsers.forEach(user -> {
Integer scoreId = cmptScoreRuleService.getCmptScoreRulesMapByMarkNoAndRuleId(user.getMarkNo(), rule.getId());
if(scoreId != null){// 标识有成绩
Integer integer = ruleMap.get(rule.getId());
if(integer == null){
ruleMap.put(rule.getId(),1);
}else{
ruleMap.put(rule.getId(),++integer);
}
}
});
});
result.put(key,ruleMap);
}
Map<Integer, List<Integer>> counts = new HashMap<>();
for(Integer key : result.keySet()){
Map<Integer, Integer> ruleMap = result.get(key);
for(Integer k : ruleMap.keySet()){
List<Integer> integers = counts.get(k);
if(integers != null){
integers.add(ruleMap.get(k));
}else{
List<Integer> list = new ArrayList<>();
list.add(ruleMap.get(k));
counts.put(k,list);
}
}
}
Map<String,Object> response = new HashMap<>();
response.put("roads",roadsStatistic);
response.put("statics",result);
response.put("counts",counts);
return Result.success().setContent(response);
}
@RequestMapping("chartsV2/{cmptId}")
@ResponseBody
public Result chartsV2(@PathVariable("cmptId") Integer cmptId) {
// 获取所有组别的报名情况
List<RoadStatistic> roadsStatistic = remoteService.getRoadsStatistic(cmptId);
// 获取分组
List<CmptScoreRule> rules = ruleService.getCmptScoreRulesByCmptId(cmptId);
Map<Integer, List<Integer>> counts = new HashMap<>();
rules.forEach(rule -> {
if(counts.get(rule.getId()) == null){
counts.put(rule.getId(),new ArrayList<>());
}
roadsStatistic.forEach(road -> {
int count = cmptScoreRuleService.getRoadStatistic(cmptId,road.getRoadId(),rule.getId());
counts.get(rule.getId()).add(count);
});
});
Map<String,Object> response = new HashMap<>();
response.put("roads",roadsStatistic);
response.put("counts",counts);
return Result.success().setContent(response);
}
@RequestMapping("delScore/{markNo}/{scoreItemId}")
@ResponseBody
public Result charts(@PathVariable("markNo") String markNo,
@PathVariable("scoreItemId") Integer scoreItemId,
HttpServletResponse response) {
Integer ruleId = cmptScoreRuleService.getCmptScoreRulesMapByMarkNoAndScoreId(markNo,scoreItemId);
scoreService.deleteScoreItem(scoreItemId);
cmptScoreRuleService.deleteScoreMap(markNo,scoreItemId);
if(ruleId != null){
cmptScoreFieldValueService.deleteFieldValueByRuleIdAndMarkNo(ruleId,markNo);
}
return Result.success();
}
@RequestMapping("export/{cmptId}")
public void export(@PathVariable("cmptId") Integer cmptId,HttpServletResponse response) throws IOException {
long start = System.currentTimeMillis();
response.setContentType("application/octet-stream; charset=utf-8");
response.setHeader("Content-Disposition", "attachment; filename="+URLEncoder.encode("名单.xls","UTF-8"));
// 获取所有组别的报名情况
List<RoadStatistic> roadsStatistic = remoteService.getRoadsStatistic(cmptId);
List<CmptScoreField> fields = cmptScoreFieldService.getCmptScoreFieldByCmptId(cmptId);
List<CmptScoreRule> rules = cmptScoreRuleService.getCmptScoreRulesByCmptId(cmptId);
Workbook book = new HSSFWorkbook();
roadsStatistic.forEach(road -> {
// 项目的人员名单
List<UserScoreExcelBean> users = cmptScoreRuleService.getRoadStatisticByCmptIdAndRoadId(cmptId,road.getRoadId());
// 计算 总成绩 以及 总排名
users.forEach(user -> {
long total = user.getScores().stream().mapToLong(ScoreExcelBean::getDuration).sum();
// 判断是否完赛
if(user.getScores().size() == rules.size()){
user.setDone(true);
}else{
user.setDone(false);
}
user.setTotalDuration(total);
user.setDurationStr(DateUtil.formatDate(total));
});
// 一条成绩没有的
List<UserScoreExcelBean> noneScoreList = users.stream().filter(UserScoreExcelBean::isNoDuration).collect(Collectors.toList());
// 有成绩
List<UserScoreExcelBean> scoreList = users.stream().filter(UserScoreExcelBean::isHasDuration).collect(Collectors.toList());
// 有全部成绩 - 完赛
List<UserScoreExcelBean> doneScoreList = scoreList.stream().filter(UserScoreExcelBean::isDone).collect(Collectors.toList());
// 部分成绩 -- 未完赛
List<UserScoreExcelBean> unDoneScoreList = scoreList.stream().filter(item -> {
return !doneScoreList.contains(item);
}).collect(Collectors.toList());
//排序
Collections.sort(doneScoreList, new Comparator<UserScoreExcelBean>() {
@Override
public int compare(UserScoreExcelBean first, UserScoreExcelBean second) {
return (int) (first.getTotalDuration()-second.getTotalDuration());
}
});
// 设置排名 可能有同时同分
AtomicInteger rankNo= new AtomicInteger(0);
AtomicLong lastDuration = new AtomicLong();
doneScoreList.forEach(score -> {
if(Long.compare(lastDuration.get(),score.getTotalDuration()) != 0){
score.setRankNo(rankNo.incrementAndGet());
lastDuration.set(score.getTotalDuration());
}else{
score.setRankNo(rankNo.get());
}
});
doneScoreList.addAll(unDoneScoreList);
// 每一个表格 项目
Sheet sheet = book.createSheet(road.getRoadName());
//设置列头
Row row = sheet.createRow(0);
row.createCell(0).setCellValue("姓名");
row.createCell(1).setCellValue("性别");
row.createCell(2).setCellValue("参赛项目");
row.createCell(3).setCellValue("参赛号码");
row.createCell(4).setCellValue("合计用时");
row.createCell(5).setCellValue("合计排名");
row.createCell(6).setCellValue("分段成绩");
row.createCell(7).setCellValue("完成时间");
row.createCell(8).setCellValue("用时");
for(int m=0;m < fields.size();m++){
row.createCell(9+m).setCellValue(fields.get(m).getFieldName());
}
int startNum = 1;
for(int i=0; i < doneScoreList.size();i++){
UserScoreExcelBean userScoreExcelBean = doneScoreList.get(i);
// 用户信息
EnrollUser user = userScoreExcelBean.getUser();
// 成绩
List<ScoreExcelBean> scores = userScoreExcelBean.getScores();
int rollNum = startNum + rules.size()-1;
AtomicInteger seq = new AtomicInteger(1);
for(int j = startNum;j < rollNum+1; j++){
Row sub = sheet.createRow(j);
// 获取规则对应的成绩
CmptScoreRule cmptScoreRule = rules.get(seq.get() - 1);
Optional<ScoreExcelBean> first = scores.stream().filter(scoreExcelBean -> {
return scoreExcelBean.getRuleId() == cmptScoreRule.getId();
}).findFirst();
int finalJ = j;
int sq = seq.getAndIncrement();
first.ifPresent(scoreExcelBean -> {
sub.createCell(6).setCellValue("第"+sq+"次成绩");
sub.createCell(7).setCellValue(scoreExcelBean.getDate());
sub.createCell(8).setCellValue(DateUtil.formatDate(scoreExcelBean.getDuration()));
List<CmptScoreFieldValue> fieldValues = scoreExcelBean.getFieldValues();
for(int m=0;m < fieldValues.size();m++){
sub.createCell(9+m).setCellValue(fieldValues.get(m).getScoreFieldValue());
}
});
}
Row workRow = sheet.getRow(startNum);
workRow.createCell(0).setCellValue(user.getMember_name());
workRow.createCell(1).setCellValue("0".equals(user.getSex()) ? "男":"女");
workRow.createCell(2).setCellValue(user.getItem_name());
workRow.createCell(3).setCellValue(user.getMarkNo());
workRow.createCell(4).setCellValue(doneScoreList.get(i).getDurationStr());
workRow.createCell(5).setCellValue(doneScoreList.get(i).getRankNo());
if(rules.size() > 1){
sheet.addMergedRegion(new CellRangeAddress(startNum,rollNum,0,0));
sheet.addMergedRegion(new CellRangeAddress(startNum,rollNum,1,1));
sheet.addMergedRegion(new CellRangeAddress(startNum,rollNum,2,2));
sheet.addMergedRegion(new CellRangeAddress(startNum,rollNum,3,3));
sheet.addMergedRegion(new CellRangeAddress(startNum,rollNum,4,4));
sheet.addMergedRegion(new CellRangeAddress(startNum,rollNum,5,5));
}
startNum = ++rollNum;
}
for(int i=0; i < noneScoreList.size();i++){
EnrollUser user = noneScoreList.get(i).getUser();
Row workRow = sheet.createRow(sheet.getLastRowNum()+1);
workRow.createCell(0).setCellValue(user.getMember_name());
workRow.createCell(1).setCellValue("0".equals(user.getSex()) ? "男":"女");
workRow.createCell(2).setCellValue(user.getItem_name());
workRow.createCell(3).setCellValue(user.getMarkNo());
workRow.createCell(4).setCellValue(noneScoreList.get(i).getDurationStr());
workRow.createCell(5).setCellValue(noneScoreList.get(i).getRankNo());
}
});
log.info("生成excel完成,耗时:"+(System.currentTimeMillis()-start)+"ms.");
book.write(response.getOutputStream());
}
}
......@@ -53,6 +53,7 @@ weixin.micro.appid=wx96ce27826f39cdb3
weixin.micro.secret=11bfc4902e7c992b57a2cdcfeded623f
geexek.user.url=http://test.geexek.com.cn/
geexek.cmpt.url=http://testtimerbackend.geexek.cn/
geexek.shamus.url=http://shamus.geexek.com.cn/
timer.url=http://testtimer.geexek.cn/
server.url=http://testzs.geexek.com.cn/
......@@ -70,11 +71,11 @@ spring.application.name=micro-gksite
eureka.client.service-url.defaultZone=http://eureka.geexek.com.cn/eureka/
eureka.client.instance.instance-id=gksite
#feign调用连接超时时间
feign.client.config.default.connect-timeout=1000
feign.client.config.default.connect-timeout=30000
#feign调用读取超时时间
feign.client.config.default.readTimeout=1000
feign.client.config.default.readTimeout=30000
#feign调用的log 等级
feign.client.config.default.loggerLevel=basic
feign.client.config.default.loggerLevel=full
feign.okhttp.enabled=true
feign.hystrix.enabled=true
#feign.compression.request.enabled=true
......
......@@ -93,7 +93,11 @@
line-height: 90px;
text-align: left;
}
.opt-text {
font-size: 14px;
color: rgba(153, 153, 153, 1);
height: 20px;
}
.del, .edit {
display: inline-block;
......@@ -103,11 +107,7 @@
margin-right: 8px;
}
.opt-text {
font-size: 14px;
color: rgba(153, 153, 153, 1);
height: 20px;
}
.icon-edit {
width: 16px;
......
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %>
<%@ include file="/WEB-INF/views/include/taglib.jsp" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!doctype html>
<html>
<head>
<title>提交成绩</title>
<!-- Bootstrap CSS-->
<link rel="stylesheet" href="${ctxStatic}/newdermon/vendor/bootstrap/css/bootstrap.min.css">
<!-- Font Awesome CSS-->
<link rel="stylesheet" href="${ctxStatic}/newdermon/vendor/font-awesome/css/font-awesome.min.css">
<!-- Fontastic Custom icon font-->
<link rel="stylesheet" href="${ctxStatic}/newdermon/css/fontastic.css">
<!-- Google fonts - Poppins -->
<link rel="stylesheet" href="${ctxStatic}/newdermon/css/font-css.css">
<!-- theme stylesheet-->
<link rel="stylesheet" href="${ctxStatic}/newdermon/css/style.default.css" id="theme-stylesheet">
<!-- Custom stylesheet - for your changes-->
<link rel="stylesheet" href="${ctxStatic}/newdermon/css/custom.css">
<link rel="stylesheet" href="${ctxStatic}/newdermon/css/juery-ui-1.12.css">
<!-- Favicon-->
<link rel="shortcut icon" href="img/favicon.ico">
<link rel="stylesheet" href="${ctxStatic}/newdermon/css/custom.css">
<link rel="stylesheet" href="${ctxStatic}/newdermon/css/main.css">
<link rel="stylesheet" href="${ctxStatic}/cmpt/setting.css">
<link rel="stylesheet" href="${ctxStatic}/leaflet/css/leaflet.css?v=<%=System.currentTimeMillis()%>"/>
<link rel="stylesheet" href="${ctxStatic}/leaflet/css/leaflet_label.css"/>
<link rel="stylesheet" href="${ctxStatic}/cmpt/road.css"/>
<link rel="stylesheet" href="${ctxStatic}/cmpt/road-new.css"/>
<script src="${ctxStatic}/My97DatePicker/WdatePicker.js" type="text/javascript"></script>
<script src="${ctxStatic}/newdermon/vendor/jquery/jquery.min.js"></script>
<script src="${ctxStatic}/newdermon/js/jquery-ui.js"></script>
<script src="http://cdn.highcharts.com.cn/highcharts/8.0.4/highcharts.js"></script>
<script type="text/javascript" charset="utf-8" src="${ctxStatic}/layer/layer.js"></script>
<link rel="stylesheet" href="${ctxStatic}/layer/skin/layer.css">
<link rel="stylesheet" href="/static/cmpt/score.css?<%=System.currentTimeMillis()%>">
</head>
<body>
<jsp:include page="../common/header.jsp"></jsp:include>
<div class="page-content d-flex align-items-stretch main-body">
<jsp:include page="../common/menu.jsp"></jsp:include>
<div class="rght">
<div class="title-new">
<span class="title">提交成绩</span>
<div style="line-height: 22px">
<span class="road-notice"></span>
<span class="road-notice-txt">此功能仅适用于自助赛事的成绩提交,比赛开始后不可修改</span>
</div>
</div>
<div class="section">
<h3 class="title">上传次数</h3>
<div>
<label for="" class="tip">比赛期间上传成绩次数</label>
<input type="number" class="count-input" placeholder="请填写上传次数" value="${fn:length(rules)}">
</div>
<div id="rule-section" style="margin-bottom: 15px">
<c:forEach var="item" items="${rules}" varStatus="vs">
<div class="rule-item" data-id="${item.id}">
<label for="">第${vs.index+1}次上传成绩的起止时间</label>
<div class="input-group">
<input type="text" ${isClose ? 'disabled':''} class="time-input" readonly name="start"
onclick="WdatePicker({dateFmt:'yyyy-MM-dd'})"
value="<fmt:formatDate value='${item.startTime}' pattern='yyyy-MM-dd'></fmt:formatDate>" >
<span class="down-arrow"></span>
</div>
<div class="line"></div>
<div class="input-group">
<input type="text" ${isClose ? 'disabled':''} class="time-input" readonly name="end"
onclick="WdatePicker({dateFmt:'yyyy-MM-dd'})"
value="<fmt:formatDate value='${item.endTime}' pattern='yyyy-MM-dd'></fmt:formatDate>">
<span class="down-arrow"></span>
</div>
</div>
</c:forEach>
<div class="clear"></div>
</div>
<c:if test="${!isClose}">
<div style="text-align: center;" >
<span class="save-btn">保存</span>
<div class="clear"></div>
</div>
</c:if>
</div>
<div class="section">
<h3 class="title">已上传成绩统计</h3>
<span class="export">名单导出</span>
<div id="container"></div>
</div>
<div class="section" >
<div style="display: flex;justify-content: space-between">
<h3 class="title">成绩管理</h3>
<div class="search-group">
<input type="text" class="search" placeholder="请输入号码牌">
<span id="search" class="search-btn">查询</span>
</div>
</div>
<table id="data" style="width: 100%;display: none">
<colgroup>
<col width="18%">
<col width="18%">
<col width="10%">
<col width="20%">
<col width="12%">
<col width="25%">
</colgroup>
<thead>
<tr>
<th>姓名</th>
<th>项目</th>
<th>参赛号</th>
<th>完赛时间</th>
<th>成绩</th>
<th style="text-align: right"></th>
</tr>
</thead>
<tbody id="score-body">
</tbody>
</table>
</div>
<div class="section">
<h3 class="title">成绩照片</h3>
<div style="line-height: 22px">
<span class="road-notice"></span>
<span class="road-notice-txt">每一个照片均为必填项,请谨慎添加;最多可添加5个照片项目</span>
</div>
<div class="add-btn">
<span>+</span>
<span>添加照片项</span>
</div>
</div>
<div style="margin-top: -10px;margin-bottom: 50px">
<table style="width: 100%" class="rule-field">
<colgroup>
<col width="90%">
<col width="10%">
</colgroup>
<thead>
<tr>
<th style="padding-left: 25px">照片</th>
<th style="padding-left: 36px">操作</th>
</tr>
</thead>
<tbody>
<c:forEach var="item" items="${fields}">
<tr data-id="${item.id}" data-index="${item.filedIndex}">
<td class="name">${item.fieldName}</td>
<td style="text-align: right">
<div>
<div class="opt edit.opt">
<span class="icon-edit"></span><span class="edit">编辑</span>
</div>
<div class="opt del">
<span class="icon-del"></span><span class="del">删除</span>
</div>
</div>
</td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
</div>
</div>
<script src="${ctxStatic}/newdermon/vendor/popper.js/umd/popper.min.js"></script>
<script src="${ctxStatic}/js/qikoo.js"></script>
<script src="${ctxStatic}/js/score.js?<%=System.currentTimeMillis()%>"></script>
</body>
<div class="mask">
<div class="dialog">
<h3>照片名称</h3>
<input type="text" placeholder="请输入照片名称,最多10个字">
<div style=" margin: 70px 0px 0px 0px;text-align: right;">
<span class="btn cancel" style="margin-right: 30px">取消</span>
<span class="btn sure">保存</span>
</div>
</div>
</div>
<div class="rule-item template" style="display: none">
<label for="">第1次上传成绩的起止时间</label>
<div class="input-group">
<input type="text" class="time-input" readonly name="start" onclick="WdatePicker({dateFmt:'yyyy-MM-dd'})" value="${ cmpt.startTime}">
<span class="down-arrow"></span>
</div>
<div class="line"></div>
<div class="input-group">
<input type="text" class="time-input" readonly name="end" onclick="WdatePicker({dateFmt:'yyyy-MM-dd'})" value="${ cmpt.startTime}">
<span class="down-arrow"></span>
</div>
</div>
</html>
......@@ -142,11 +142,19 @@
<span class="menu-txt">赛事广告</span>
</a>
</li>
<li class="score menu-item">
<a href="/gk/score/index/${cmpt.cmptId}?uId=${uId}&cId=${cId}&timestamp=${timestamp}&sign=${sign}">
<span class="menuico left-arrow"></span>
<span class="menu-txt">提交成绩</span>
</a>
</li>
</ul>
</ul>
</nav>
<script>
var classes = ['cmptSetting', 'nameList', 'manual', 'contact', 'route', 'road', 'equip', 'photo', 'news','banner'];
var classes = ['cmptSetting', 'nameList', 'manual', 'contact',
'route', 'road', 'equip', 'photo', 'news',
'banner','score'];
let url = document.location.href;
var done = false;
for (var i in classes) {
......
.section{
width: 910px;
background: white;
padding: 20px 25px;
margin: 10px 0px;
position: relative;
}
.title{
font-size: 24px;
color: #333;
font-weight: normal;
margin-bottom: 0px;
height: 50px;
line-height: 50px;
}
.count-input{
width: 670px;
height: 50px;
}
input{
background: rgba(247,247,247,1);
border-radius: 4px;
border: 1px solid rgba(229,229,229,1);
padding-left: 10px;
}
.tip{
font-size: 16px;
color: #333;
margin-right: 10px;;
}
.rule-item{
border-radius: 4px;
border: 1px solid rgba(229,229,229,1);
display: flex;
justify-content: space-between;
align-items: center;
height: 50px;
width: 670px;
float: right;
margin-right: 17px;
padding: 0px 10px;
margin-top: 10px;
}
.search-group{
position: relative;
}
.search{
width:317px;
height:50px;
background:rgba(247,247,247,1);
border-radius:4px;
border:1px solid rgba(229,229,229,1);
}
.clear{
clear: both;
}
.search-btn{
position: absolute;
right: 0px;
line-height: 50px;
height: 50px;
display: inline-block;
width: 60px;
text-align: center;
background: #ce3939;
color: white;
font-size: 16px;
border-radius: 0px 4px 4px 0pc;
cursor: pointer;
}
thead tr th{
font-size: 16px;
color:#999;
height: 50px;
line-height: 50px;
font-weight: normal;
}
tbody tr td{
font-size: 20px;
color:#333;
font-weight: 400;
}
.add-btn{
width: 146px;
height: 40px;
background: rgba(206,57,57,1);
border-radius: 4px;
color: white;
position: absolute;
right: 24px;
top: 24px;
justify-content: center;
display: flex;
align-items: center;
cursor: pointer;
}
.rule-field{
background: white;
}
.rule-field tr{
height: 60px;
line-height: 60px;
}
.rule-field tbody tr td:first-child{
padding-left: 25px;
}
.rule-field tbody tr td:nth-child(2n){
padding-right: 25px;
}
.rule-field tbody tr:nth-child(odd){
background:rgba(247,247,247,1);
}
.del, .edit {
height: 40px;
line-height: 40px;;
font-size: 14px;
margin-right: 0px;
}
.edit{
color: #ce3939;
}
#score-body tr{
height: 60px;
}
.opt{
display: flex;
width: 104px;
height: 60px;
align-items: center;
cursor: pointer;
justify-content: center;
}
.rule-field .opt{
height: 40px;
}
.icon-edit {
width: 16px;
height: 18px;
background-image: url(/static/images/icons-edit.png);
transform: none;
display: inline-block;
background-position: center;
background-size: 100%;
background-repeat: no-repeat;
margin-right: 8px;
}
.icon-del {
width: 16px;
height: 16px;
background-image: url("/static/images/icon-delete.png");
display: inline-block;
background-position: center;
background-size: 100%;
background-repeat: no-repeat;
margin-right: 8px;
margin-top: -9px;
}
.line-tr{
background: rgba(247,247,247,1);
height: 60px;
border-bottom: 2px rgba(229,229,229,1) solid;
}
.line-tr:last-child{
border-bottom: none;
}
label{
margin-bottom: 0px;
}
.save-btn{
color: white;
background: #ce3939;
display: inline-block;
font-size: 18px;
border-radius: 4px;
line-height: 40px;
text-align: center;
cursor: pointer;
width: 146px;
height: 40px;
background: rgba(206,57,57,1);
border-radius: 4px;
float: right;
margin-right: 16px;
}
.input-group{
position: relative;
width: 156px;
}
.time-input{
width: 156px;
height: 38px;
cursor: pointer;
}
.down-arrow{
width: 18px;
height: 10px;
display: inline-block;
background: url(/static/images/down_arrow.png);
background-position: center;
background-repeat: no-repeat;
position: absolute;
top: 15px;
right: 10px;
background-size: contain;
}
.line{
width: 100px;
height: 1px;
background: #E5E5E5;
margin: 0px 10px;
}
.export{
width: 146px;
height: 40px;
background: #ce3939;
text-align: center;
font-size: 18px;
color: white;
position: absolute;
line-height: 40px;
right: 30px;
top: 30px;
border-radius: 4px;
cursor: pointer;
}
.mask{
width: 100%;
height: 100%;
position: fixed;
left: 0px;
top: 0px;
background: rgba(0,0,0,0.3);
z-index: 99;
display: none;
}
.dialog{
padding: 30px 40px;
height: 300px;
width: 680px;
top: 100px;
left: 50%;
margin-left: -340px;
z-index: 100;
position: absolute;
background: white;
}
.dialog h3{
width:138px;
height:30px;
font-size:22px;
font-weight:400;
color:rgba(206,57,57,1);
line-height:30px;
}
.dialog input{
width:610px;
height:50px;
background:rgba(247,247,247,1);
border-radius:4px;
border:1px solid rgba(229,229,229,1);
}
.btn{
color: white;
cursor: pointer;
font-size: 20px;
}
.cancel{
width:146px;
height:42px;
background:rgba(148,148,148,1);
border-radius:4px;
}
.sure{
width:146px;
height:42px;
background:rgba(206,57,57,1);
border-radius:4px;
}
\ No newline at end of file
......@@ -62,6 +62,8 @@ $(function () {
layer.alert("要启用此功能,需要先上传比赛路线");
} else if (type == 11) {
layer.alert("要启用此功能,需要先联系管理员通过赛事审核");
} else if (type == 12){
layer.alert("要启用此功能,请先在计时管理页面完成名单导入");
}
} else {
if (type == 2 || type == 5) {
......
$(document).ready(function () {
$('#search').click(function () {
var param = $('.search').val();
if(!param){
layer.alert('请输入内容查询');
return ;
}
$.ajax({
url : "/gk/score/getScore/"+getCId()+"/"+param,
success:function (data) {
var result = data.content;
$('#score-body').empty();
if(result.scores.length > 0){
$('#data').fadeIn();
$('#score-body').append('<tr>' +
'<td>' + result.user.userName + '</td>' +
'<td>' + result.user.roadName + '</td>' +
'<td>' + result.user.markNo + '</td>' +
'<td>' + result.date + '</td>' +
'<td>' + result.total + '</td>' +
'<td></td>' +
'<td></td>' +
'</tr>');
$.each(result.scores,function (i,e) {
$('#score-body').append(" <tr class='line-tr' data-id='"+e.id+"'>\n" +
" <td></td>\n" +
" <td></td>\n" +
" <td></td>\n" +
" <td>"+e.date+"</td>\n" +
" <td>"+e.durationStr+"</td>\n" +
" <td style='text-align: center'>第"+(i+1)+"次</td>\n" +
" <td style='justify-content: center;display: flex;'>" +
" <div class='opt' style='justify-content: center;'>" +
" <span class=\"icon-del\">" +
" </span><span style='font-size: 18px'>删除</span></div> </td>\n" +
" </tr> ")
})
}else{
$('#data').fadeOut();
layer.msg("未查询到结果!");
}
}
})
});
$('.cancel').click(function () {
$('.mask').fadeOut();
$('.dialog').removeAttr('data-id');
})
$('.sure').click(function () {
var name = $('.dialog input').val();
if(!name){
layer.alert("请输入名称!");
return ;
}
if(name.length > 10){
layer.alert("不能超过十个字符!");
return ;
}
var id = $('.dialog').attr('data-id');
var param ={id:id,fieldName:name,cmptId:getCId(),fieldType:1};
if(!id){
var index = $('.rule-field tbody tr:last').attr('data-index') == undefined ? 0 :$('.rule-field tbody tr:last').attr('data-index');
param.filedIndex = Number(index)+1;
}
var tr = $('tr[data-id='+id+']');
$.ajax({
url : "/api/cmptScoreField/saveOrUpdate",
type: 'post',
data: param,
success:function (data) {
if(data.status){
if(id){
layer.msg('更新成功!')
tr.find('.name').text(name);
}else{
layer.msg('添加成功!');
$('.rule-field tbody').append(' <tr data-id="'+data.content.id+'" data-index="'+data.content.filedIndex+'">' +
' <td class="name">'+data.content.fieldName+'</td>\n' +
' <td style="text-align: right">\n' +
' <div>\n' +
' <div class="opt edit.opt">\n' +
' <span class="icon-edit"></span><span class="edit">编辑</span>\n' +
' </div>\n' +
' <div class="opt del">\n' +
' <span class="icon-del"></span><span >删除</span>\n' +
' </div>\n' +
' </div>\n' +
' </td>')
}
}else{
layer.msg('操作失败!')
}
}
})
$('.mask').fadeOut();
$('.dialog').removeAttr('data-id');
})
$('.add-btn').click(function () {
$('.dialog').removeAttr('data-id');
$('.dialog input').val('');
$('.mask').fadeIn();
})
$('.rule-field').on('click','.edit',function () {
var tr =$(this).parents('tr');
var name = tr.find('.name').text();
var id = tr.attr('data-id');
$('.mask').fadeIn();
$('.dialog input').val(name);
$('.dialog').attr('data-id',id)
});
$('.rule-field').on('click','.del',function () {
var tr =$(this).parents('tr');
var id = tr.attr('data-id');
qikoo.dialog.confirm('确认要删除?',
function () {
$.ajax({
url: '/api/cmptScoreField/del/' + id,
type: 'get',
success: function (data) {
if (data.status) {
tr.remove();
layer.msg("删除成功!")
} else {
layer.msg("操作失败!")
}
}
})
}, function () {
});
});
$('.count-input').keyup(function () {
var value = $(this).val();
if(value > 10){
layer.msg('最多只能设置9次!');
return ;
}
if(value <= 0){
layer.msg('请输入大于0的数字!');
return ;
}
var rules = $('#rule-section .rule-item');
if(value > rules.length){
for(var i=0;i<value-rules.length;i++){
var item = null;
if($('#rule-section .rule-item').length == 0){
item = $('.template').clone().clone().show();
item.removeClass("template")
}else{
item = $('#rule-section .rule-item').last().clone().clone();
}
var number = item.find('label').text().replace(/[^0-9]/ig,"");
item.removeAttr('data-id')
item.find('label').text('第'+($('#rule-section .rule-item').length+1)+"次上传成绩的起止时间")
$('#rule-section').append(item);
$('#rule-section').append($('#rule-section .clear'));
}
}else{
for(var i=value;i < rules.length;i++){
var id = $('#rule-section .rule-item:eq('+i+')').attr('data-id');
console.log(id)
delItem(id)
$('#rule-section .rule-item:eq('+i+')').hide();
}
$('#rule-section .rule-item:hidden').remove();
}
});
$('.save-btn').click(function () {
var rules = $('#rule-section .rule-item');
var flag = true;
var param = new Array();
$.each(rules,function (i,e) {
var obj = {};
var startTime = $(e).find('input[name="start"]').val();
var endTime = $(e).find('input[name="end"]').val();
if(!startTime || !endTime){
layer.alert("请设置完整的时间");
flag = false;
return false;
}
var id = $(e).attr('data-id');
obj.startTime =startTime + " 00:00:00";
obj.endTime = endTime+ " 23:59:59";
obj.id = id;
obj.index = i;
obj.cmptId = getCId()
param.push(obj)
});
if(flag){ // 设置保存
$.ajax({
url : '/api/cmptScoreRule/saveCmptScoreRule',
data:JSON.stringify(param),
contentType:'application/json',
type:'post',
success:function (data) {
if(data.status){
layer.msg("保存成功!");
}
}
})
}
});
$('#score-body').on('click','.opt',function () {
var tr = $(this).parents('tr');
var id = tr.attr('data-id');
var markNO = tr.find('td:eq(2)').text();
if(id){
qikoo.dialog.confirm('确认要删除?',
function () {
$.ajax({
url : '/gk/score/delScore/'+markNO+'/'+id,
type:'post',
success:function (data) {
if(data.status){
tr.remove()
layer.msg('删除成功!');
}else{
layer.msg('操作失败!');
}
console.log(data);
}
}, function () {
});
})
}
});
getCharts();
$('.export').click(function () {
window.open(window.location.origin+"/gk/score/export/"+getCId())
})
});
function getCharts() {
$.ajax({
url : '/gk/score/chartsV2/'+getCId(),
success:function (data) {
var roads = data.content.roads;
var roadNames = [];
var numbers = [];
$.each(roads,function (i,e) {
roadNames.push(e.roadName);
numbers.push(Number(e.enrollCount));
})
var statics = data.content.counts;
var series = [];
var pointPlacement = -0.3
var values = Object.values(statics);
var idx=0;
var index = 0
for(var i in values){
var total = {
name: '总量',
color: 'rgba(234,234,234,1)',
data: numbers,
pointPadding: 0.4,
pointPlacement: pointPlacement,
showInLegend:false,
};
if(index > 0){
total.yAxis = 1;
}
total.pointPlacement=pointPlacement;
series.push(total);
var p = {
name: '第'+(++idx)+'次',
data: values[i],
color:'rgba(206,57,57,1)',
pointPadding: 0.4,
pointPlacement: pointPlacement,
yAxis: 1
}
i++;
series.push(p);
pointPlacement += 0.2
}
console.log(JSON.stringify(series))
drawChart(roadNames,series)
}
})
}
function delItem(param) {
$.ajax({
url : '/api/cmptScoreRule/del/'+param,
contentType:'application/json',
type:'post',
success:function (data) {
console.log(data);
}
})
}
function drawChart(roads,series) {
var chart = Highcharts.chart('container', {
chart: {
type: 'column'
},
title: {
text: ''
},
xAxis: {
categories: roads
},
yAxis: [{
title: {
text: ''
},opposite: true
}, { min: 0,
title: {
text: '打卡次数'
}
}],
legend: {
shadow: false
},
tooltip: {
shared: true
},
plotOptions: {
column: {
grouping: false,
shadow: false,
borderWidth: 0
}
},
series: series
});
}
\ No newline at end of file
import org.bouncycastle.crypto.digests.MD5Digest;
package com.dlbridge.jadp;
import com.dlbridge.feign.ScoreService;
import com.dlbridge.jadp.plugins.cmpt.bean.CmptSettingTemplate;
import com.dlbridge.jadp.plugins.cmpt.bean.RoadStatistic;
import com.dlbridge.jadp.plugins.cmpt.bean.SettingTemplate;
import com.dlbridge.jadp.plugins.cmpt.bean.UserScoreExcelBean;
import com.dlbridge.jadp.plugins.cmpt.dao.model.CmptSetting;
import com.dlbridge.jadp.plugins.cmpt.service.*;
import com.dlbridge.jadp.plugins.cmpt.web.MicroApiController;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.ResponseEntity;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.util.DigestUtils;
import org.springframework.web.client.RestTemplate;
import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
//@SpringBootTest
@RunWith(SpringRunner.class)
@SpringBootTest
public class ContextTest {
@Resource
private CmptService cmptService;
@Resource
private CmptScoreFieldService cmptScoreFieldService;
@Resource
private CmptScoreFieldValueService cmptScoreFieldValueService;
@Resource
private CmptScoreRuleService ruleService;
@Resource
private ScoreService scoreService;
@Resource
CmptScoreRuleService cmptScoreRuleService;
@Resource
RemoteService remoteService;
@Resource
private CmptSettingService cmptSettingService;
@Test
public void testHttp(){
RestTemplate restTemplate = new RestTemplate();
......@@ -54,4 +87,52 @@ public class ContextTest {
System.out.println(stringResponseEntity.getBody());
}
@Test
public void test1(){
// 获取所有组别的报名情况
List<RoadStatistic> roadsStatistic = remoteService.getRoadsStatistic(11843);
roadsStatistic.forEach(road -> {
List<UserScoreExcelBean> excelsBean = cmptScoreRuleService.getRoadStatisticByCmptIdAndRoadId(11843,road.getRoadId());
System.out.println(excelsBean);
});
}
@Test
public void test(){
List<SettingTemplate> templates = cmptSettingService.queryAllSettingTemplate();
List<CmptSettingTemplate> cmptSettingTemplates = cmptSettingService.queryAllCmptSetting();
List<CmptSettingTemplate> needTemplate = new ArrayList<>();
cmptSettingTemplates.forEach(setting -> {
List<SettingTemplate> collect = templates.stream().filter(item -> !setting.getSettingTemplates().stream()
.map(st -> st.getType()).collect(Collectors.toList()).contains(item.getType())).collect(Collectors.toList());
if(collect.size() > 0){
CmptSettingTemplate template = new CmptSettingTemplate();
template.setCmptId(setting.getCmptId());
template.setRestSettingTemplates(collect);
needTemplate.add(template);
}
});
needTemplate.forEach(item -> {
item.getRestSettingTemplates().forEach(it->{
CmptSetting setting = new CmptSetting();
setting.setCmptId(item.getCmptId()+"");
setting.setId(UUID.randomUUID().toString().replace("-",""));
setting.setName(it.getType()+"");
setting.setSeq(it.getSeq()+"");
setting.setStatus(it.getStatus());
setting.setStyle(it.getStyle());
setting.setType(it.getType());
setting.setVisibility(it.getVisibility()+"");
System.out.println("补齐菜单:"+setting);
cmptSettingService.save(setting);
});
});
}
}
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