feat: 评审会列表接口

This commit is contained in:
2023-09-08 14:07:45 +08:00
parent 5c4fccdd9c
commit 7cbeed6fa8
9 changed files with 281 additions and 13 deletions
@@ -0,0 +1,54 @@
package com.jero.modules.laws.enterprise.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jero.common.api.vo.Result;
import com.jero.common.aspect.annotation.AutoLog;
import com.jero.common.system.base.controller.JeroController;
import com.jero.modules.laws.enterprise.entity.EnterpriseStandardDeclare;
import com.jero.modules.laws.enterprise.entity.EnterpriseStandardReviewMeetingRecord;
import com.jero.modules.laws.enterprise.entity.dto.ESQueryCommonDTO;
import com.jero.modules.laws.enterprise.entity.vo.EnterpriseStandardDeclareVo;
import com.jero.modules.laws.enterprise.entity.vo.EnterpriseStandardReviewMeetingVo;
import com.jero.modules.laws.enterprise.service.EnterpriseStandardDeclareService;
import com.jero.modules.laws.enterprise.service.EnterpriseStandardReviewMeetingRecordService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
* @Description: 企标宣贯
* @Author: jero-boot
* @Date: 2022-02-12
* @Version: V1.0
*/
@Api(tags="企标评审会")
@RestController
@RequestMapping("/enterprise/reviewMeeting")
@Slf4j
public class EnterpriseStandardReviewMeetingController extends JeroController<EnterpriseStandardReviewMeetingRecord, EnterpriseStandardReviewMeetingRecordService> {
@Resource
private EnterpriseStandardReviewMeetingRecordService esReviewMeetingService;
/**
* 分页列表查询
*
* @return
*/
@AutoLog(value = "企标评审会-分页列表查询")
@ApiOperation(value="企标评审会-分页列表查询", notes="企标评审会-分页列表查询")
@GetMapping(value = "/page")
public Result<?> queryPageList(ESQueryCommonDTO esReviewMeeting,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize) {
IPage<EnterpriseStandardReviewMeetingVo> pageList= esReviewMeetingService.queryPageList(esReviewMeeting, pageNo, pageSize);
return Result.OK(pageList);
}
}
@@ -58,6 +58,10 @@ public class EnterpriseStandardReviewMeetingRecord implements Serializable {
@ApiModelProperty(value = "所属部门")
private String orgCode;
/**企标Id*/
@ApiModelProperty(value = "企标Id")
private String standardId;
/**企标编号*/
@ApiModelProperty(value = "企标编号")
private String standardNo;
@@ -68,10 +72,6 @@ public class EnterpriseStandardReviewMeetingRecord implements Serializable {
@ApiModelProperty(value = "评审日期")
private Date reviewDate;
/**平均总分*/
@ApiModelProperty(value = "平均总分")
private String avgScore;
/**是否为优质标准*/
@ApiModelProperty(value = "是否为优质标准")
private String qualityFlag;
@@ -60,7 +60,7 @@ public class EnterpriseStandardRmrEvaluateDetail implements Serializable {
/**企标编号*/
@ApiModelProperty(value = "企标编号")
private String standardNo;
private String reviewMeetingId;
/**评分项目*/
@ApiModelProperty(value = "评分项目")
@@ -70,6 +70,10 @@ public class EnterpriseStandardRmrEvaluateDetail implements Serializable {
@ApiModelProperty(value = "评分分值")
private String evaluateScore;
/**评分人id*/
@ApiModelProperty(value = "评分人id")
private String adjudicatorId;
/**扣分理由*/
@ApiModelProperty(value = "扣分理由")
private String deductionScoreReason;
@@ -0,0 +1,53 @@
package com.jero.modules.laws.enterprise.entity.vo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
* @author: Mzaxd
* @Date: 2023/9/7 16:38
*/
@Data
public class EnterpriseStandardReviewMeetingVo {
/**主键ID*/
@ApiModelProperty(value = "主键ID")
private String id;
/**企标编号*/
@ApiModelProperty(value = "企标编号-对应计划的新企标编号")
private String standardNo;
/**企标编号*/
@ApiModelProperty(value = "企标编号")
private String standardName;
@ApiModelProperty(value = "主起草人")
private String mainDraftingUser;
@ApiModelProperty(value = "主起草单位")
private String mainDraftingUnit;
/**评审日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "评审日期")
private Date reviewDate;
@ApiModelProperty(value = "评审人")
private String reviewUsers;
@ApiModelProperty(value = "评审人")
private String avgScore;
/**是否为优质标准*/
@ApiModelProperty(value = "是否为优质标准")
private String qualityFlag;
}
@@ -1,7 +1,11 @@
package com.jero.modules.laws.enterprise.mapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jero.modules.laws.enterprise.entity.EnterpriseStandardReviewMeetingRecord;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.jero.modules.laws.enterprise.entity.dto.ESQueryCommonDTO;
import com.jero.modules.laws.enterprise.entity.vo.EnterpriseStandardReviewMeetingVo;
import org.apache.ibatis.annotations.Param;
/**
* @author ThinkBook
@@ -11,6 +15,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
*/
public interface EnterpriseStandardReviewMeetingRecordMapper extends BaseMapper<EnterpriseStandardReviewMeetingRecord> {
IPage<EnterpriseStandardReviewMeetingVo> page(IPage<EnterpriseStandardReviewMeetingVo> page, @Param("param") ESQueryCommonDTO esReviewMeeting);
}
@@ -13,14 +13,73 @@
<result property="orgCode" column="org_code" jdbcType="VARCHAR"/>
<result property="standardNo" column="standard_no" jdbcType="VARCHAR"/>
<result property="reviewDate" column="review_date" jdbcType="TIMESTAMP"/>
<result property="avgScore" column="avg_score" jdbcType="VARCHAR"/>
<result property="qualityFlag" column="quality_flag" jdbcType="VARCHAR"/>
</resultMap>
<sql id="Base_Column_List">
id,create_by,create_time,
update_by,update_time,org_code,
standard_no,review_date,avg_score,
quality_flag
</sql>
<select id="page" resultType="com.jero.modules.laws.enterprise.entity.vo.EnterpriseStandardReviewMeetingVo">
SELECT
rmr.id,
esp.standardNo,
esp.standardName,
esp.mainDraftingUser,
esp.mainDraftingUnit,
rmr.review_date AS reviewDate,
rmr.quality_flag AS qualityFlag,
(score.avg_score_item1 + score.avg_score_item2 + score.avg_score_item3 +
score.avg_score_item4 + score.avg_score_item5 + score.avg_score_item6) / 6.0 AS avgScore,
GROUP_CONCAT(DISTINCT CONCAT(u.username, '', u.work_no, '') ORDER BY u.username ASC SEPARATOR '') AS reviewUsers
FROM
`laws_enterprise_standard_review_meeting_record` AS rmr
LEFT JOIN
(
SELECT
esp.id,
esp.new_en_standard_no AS standardNo,
esp.new_en_standard_name AS standardName,
u.username AS mainDraftingUser,
d.depart_name AS mainDraftingUnit
FROM
laws_enterprise_standard_plan AS esp
LEFT JOIN sys_user AS u ON u.id = esp.main_drafting_user
LEFT JOIN sys_user_depart AS ud ON ud.user_id = u.id
LEFT JOIN sys_depart AS d ON d.id = ud.dep_id
) AS esp ON esp.id = rmr.standard_id
LEFT JOIN
(
SELECT
d.review_meeting_id,
ROUND(COALESCE(AVG(CASE WHEN d.evaluate_item = '1' THEN CAST(d.evaluate_score AS DECIMAL(10, 2)) ELSE NULL END), 0), 2) AS avg_score_item1,
ROUND(COALESCE(AVG(CASE WHEN d.evaluate_item = '2' THEN CAST(d.evaluate_score AS DECIMAL(10, 2)) ELSE NULL END), 0), 2) AS avg_score_item2,
ROUND(COALESCE(AVG(CASE WHEN d.evaluate_item = '3' THEN CAST(d.evaluate_score AS DECIMAL(10, 2)) ELSE NULL END), 0), 2) AS avg_score_item3,
ROUND(COALESCE(AVG(CASE WHEN d.evaluate_item = '4' THEN CAST(d.evaluate_score AS DECIMAL(10, 2)) ELSE NULL END), 0), 2) AS avg_score_item4,
ROUND(COALESCE(AVG(CASE WHEN d.evaluate_item = '5' THEN CAST(d.evaluate_score AS DECIMAL(10, 2)) ELSE NULL END), 0), 2) AS avg_score_item5,
ROUND(COALESCE(AVG(CASE WHEN d.evaluate_item = '6' THEN CAST(d.evaluate_score AS DECIMAL(10, 2)) ELSE NULL END), 0), 2) AS avg_score_item6
FROM
laws_enterprise_standard_review_meeting_record r
LEFT JOIN
laws_enterprise_standard_rmr_evaluate_detail d ON r.id = d.review_meeting_id
GROUP BY
r.id
) AS score ON score.review_meeting_id = rmr.id
LEFT JOIN laws_enterprise_standard_rmr_evaluate_detail detail ON detail.review_meeting_id = rmr.id
LEFT JOIN sys_user u ON u.id = detail.adjudicator_id
Where 1 = 1
<!--企标编号判断-->
<if test="param.standardNo != null and param.standardNo != ''">
AND esp.standardNo LIKE CONCAT('%',#{param.standardNo},'%')
</if>
<!--企标名称判断-->
<if test="param.standardName != null and param.standardName != ''">
AND esp.standardName LIKE CONCAT('%',#{param.standardName},'%')
</if>
<!--评审日期判断-->
<if test="param.reviewStartDate != null and param.reviewEndDate != null">
AND rmr.review_date BETWEEN #{param.declareStartDate} AND #{param.declareEndDate}
</if>
GROUP BY rmr.id, esp.standardNo, esp.standardName, esp.mainDraftingUser, esp.mainDraftingUnit, rmr.review_date, rmr.quality_flag, score.avg_score_item1, score.avg_score_item2, score.avg_score_item3, score.avg_score_item4, score.avg_score_item5, score.avg_score_item6
ORDER BY
avgScore DESC,
score.avg_score_item2 DESC,
score.avg_score_item4 DESC;
</select>
</mapper>
@@ -1,7 +1,10 @@
package com.jero.modules.laws.enterprise.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jero.modules.laws.enterprise.entity.EnterpriseStandardReviewMeetingRecord;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jero.modules.laws.enterprise.entity.dto.ESQueryCommonDTO;
import com.jero.modules.laws.enterprise.entity.vo.EnterpriseStandardReviewMeetingVo;
/**
* @author ThinkBook
@@ -10,4 +13,12 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
public interface EnterpriseStandardReviewMeetingRecordService extends IService<EnterpriseStandardReviewMeetingRecord> {
/**
* 列表接口
* @param esReviewMeeting
* @param pageNo
* @param pageSize
* @return
*/
IPage<EnterpriseStandardReviewMeetingVo> queryPageList(ESQueryCommonDTO esReviewMeeting, Integer pageNo, Integer pageSize);
}
@@ -1,11 +1,22 @@
package com.jero.modules.laws.enterprise.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.common.system.api.ISysBaseAPI;
import com.jero.common.system.vo.DictModel;
import com.jero.modules.laws.enterprise.entity.EnterpriseStandardReviewMeetingRecord;
import com.jero.modules.laws.enterprise.entity.dto.ESQueryCommonDTO;
import com.jero.modules.laws.enterprise.entity.vo.EnterpriseStandardReviewMeetingVo;
import com.jero.modules.laws.enterprise.service.EnterpriseStandardReviewMeetingRecordService;
import com.jero.modules.laws.enterprise.mapper.EnterpriseStandardReviewMeetingRecordMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author ThinkBook
* @description 针对表【laws_enterprise_standard_review_meeting_record】的数据库操作Service实现
@@ -15,6 +26,33 @@ import org.springframework.stereotype.Service;
public class EnterpriseStandardReviewMeetingRecordServiceImpl extends ServiceImpl<EnterpriseStandardReviewMeetingRecordMapper, EnterpriseStandardReviewMeetingRecord>
implements EnterpriseStandardReviewMeetingRecordService {
@Resource
private ISysBaseAPI sysBaseAPI;
@Resource
private EnterpriseStandardReviewMeetingRecordMapper esReviewMeetingMapper;
@Override
public IPage<EnterpriseStandardReviewMeetingVo> queryPageList(ESQueryCommonDTO esReviewMeeting, Integer pageNo, Integer pageSize) {
IPage<EnterpriseStandardReviewMeetingVo> page = new Page<>(pageNo, pageSize);
esReviewMeetingMapper.page(page, esReviewMeeting);
this.transReviewMeetingVo(page.getRecords());
return page;
}
// 转换列表中的状态值为中文
private void transReviewMeetingVo(List<EnterpriseStandardReviewMeetingVo> list) {
if (list.isEmpty()) {
return;
}
List<DictModel> ynDictModelList = sysBaseAPI.getDictItems("yn");
list.forEach(e -> {
List<DictModel> collect = ynDictModelList.stream().filter(e1 -> e1.getValue().equals(e.getQualityFlag())).collect(Collectors.toList());
if (!collect.isEmpty()) {
e.setQualityFlag(collect.get(0).getText());
}
});
}
}
@@ -3,6 +3,10 @@ package com.jero.modules.standard.enterprise;
import com.github.javafaker.Faker;
import com.jero.JeroSystemSingleApplication;
import com.jero.modules.laws.enterprise.entity.EnterpriseStandard;
import com.jero.modules.laws.enterprise.entity.EnterpriseStandardPlan;
import com.jero.modules.laws.enterprise.entity.EnterpriseStandardRmrEvaluateDetail;
import com.jero.modules.laws.enterprise.service.EnterpriseStandardPlanService;
import com.jero.modules.laws.enterprise.service.EnterpriseStandardRmrEvaluateDetailService;
import com.jero.modules.laws.enterprise.service.EnterpriseStandardService;
import jdk.nashorn.internal.ir.annotations.Reference;
import org.junit.Test;
@@ -27,6 +31,12 @@ public class EnterpriseStandardTest {
@Resource
private EnterpriseStandardService enterpriseStandardService;
@Resource
private EnterpriseStandardRmrEvaluateDetailService enterpriseStandardRmrEvaluateDetailService;
@Resource
private EnterpriseStandardPlanService enterpriseStandardPlanService;
private static final Faker faker = new Faker();
private static final Random random = new Random();
@@ -61,11 +71,45 @@ public class EnterpriseStandardTest {
return enterpriseStandard;
}
public static EnterpriseStandardPlan generateRandomEnterpriseStandardPlan() {
EnterpriseStandardPlan enterpriseStandardPlan = new EnterpriseStandardPlan();
enterpriseStandardPlan.setDelFlag(faker.bool().bool() ? 1 : 0);
enterpriseStandardPlan.setMainDraftingUser(faker.name().fullName());
enterpriseStandardPlan.setMainDraftingUnit(faker.company().name());
enterpriseStandardPlan.setMainDraftingUnitResponsiblePerson(faker.name().fullName());
// ... continue with more fields as needed
enterpriseStandardPlan.setReleaseDate(faker.date().past(1, TimeUnit.SECONDS));
return enterpriseStandardPlan;
}
@Test
public void insertRandomES() {
EnterpriseStandard randomData = generateRandomEnterpriseStandard();
enterpriseStandardService.save(randomData);
System.out.println(randomData);
}
@Test
public void insertRandomESRmrDetail() {
for (int i = 0; i < 6; i++) {
EnterpriseStandardRmrEvaluateDetail random = new EnterpriseStandardRmrEvaluateDetail();
random.setEvaluateItem(String.valueOf(i + 1));
random.setDeductionScoreReason("");
enterpriseStandardRmrEvaluateDetailService.save(random);
}
}
@Test
public void insertRandomESP() {
for (int i = 0; i < 1; i++) {
EnterpriseStandardPlan random = generateRandomEnterpriseStandardPlan();
enterpriseStandardPlanService.save(random);
}
}
}