Commit 571122e9 by wangweidong

Merge remote-tracking branch 'origin/master'

parents c367193c d91db76f
......@@ -8,7 +8,9 @@ import com.patzn.cloud.service.hmhj.entity.Entrust;
import com.patzn.cloud.service.hmhj.enums.*;
import com.patzn.cloud.service.hmhj.vo.EntrustVO;
import com.patzn.cloud.service.lims.hmhj.service.impl.UserInfoServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.plugins.Page;
......@@ -22,6 +24,7 @@ import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import java.util.Date;
import java.util.List;
/**
......@@ -481,8 +484,10 @@ public class EntrustController extends ServiceController {
@PostMapping("/page_entrust_test_data")
public RestResult<Page<EntrustVO>> getPageTaskTestData(EntrustVO entrust) {
entrust.setItemStatus(EntrustSampleItemStatusEnum.TEST);
// 过滤当前人为检测人的委托数据
entrust.setTesterId(getAccount().getUserId());
// 过滤当前人为检测人的委托数据 - 节点数据不为空,且为检测时,只查询当前人信息
if(StringUtils.isNotBlank(entrust.getSource()) && EntrustFlowEnum.TEST.getName().equalsIgnoreCase(entrust.getSource())) {
entrust.setTesterId(getAccount().getUserId());
}
// 获取当前用户分组
entrust.setGroupNameList(userInfoService.getCurGroupNameList());
return success(entrustService.pageEntrustByItemData(getPage(), entrust));
......
......@@ -597,4 +597,10 @@ public class EntrustSampleItemController extends ServiceController {
return success(entrustSampleItemService.getTesterWorkloadStatusQuery(queryDTO));
}
@ApiOperation("项目不写入报告")
@PostMapping("/notWriteToReport")
public RestResult<Boolean> notWriteToReport(@RequestParam("ids") List<Long> ids) {
return success(entrustSampleItemService.notWriteToReport(ids));
}
}
......@@ -80,7 +80,7 @@ public class EntrustSamplePrepareController extends ServiceController {
@ApiOperation("样品接收提交")
@PostMapping("/submit_sample_receive")
public RestResult<Boolean> submitSampleReceive(@RequestParam("ids")Long[] ids) {
return success(entrustSamplePrepareService.submitSampleReceive(ids,getAccount()));
return success(entrustSamplePrepareService.submitSampleReceive(ids,null,getAccount()));
}
......
package com.patzn.cloud.service.lims.hmhj.controller;
import com.baomidou.mybatisplus.plugins.Page;
import com.patzn.cloud.commons.api.RestConstants;
import com.patzn.cloud.commons.api.RestResult;
import com.patzn.cloud.commons.controller.ServiceController;
import com.patzn.cloud.service.hmhj.entity.Questionnaire;
import com.patzn.cloud.service.hmhj.vo.QuestionnaireVO;
import com.patzn.cloud.service.lims.hmhj.service.IQuestionnaireService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* 满意度调查表 前端控制器
*
* @author meazty
* @since 2021-07-11
*/
@Api(tags = "满意度调查表")
@RestController
@RequestMapping("/v1/questionnaire")
public class QuestionnaireController extends ServiceController {
@Autowired
private IQuestionnaireService questionnaireService;
@ApiOperation("分页列表")
@ApiImplicitParams({
@ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class),
@ApiImplicitParam(name = RestConstants.PAGE_ROWS, value = "每页条数", required = true, paramType = "query", dataTypeClass = Integer.class),
})
@PostMapping("/page")
public RestResult<Page<Questionnaire>> getPage(QuestionnaireVO questionnaire) {
return success(questionnaireService.page(getPage(), questionnaire));
}
@ApiOperation("查询 id 信息")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "主键", required = true, paramType = "path", dataTypeClass = Long.class),
})
@GetMapping("/{id}")
public RestResult<Questionnaire> get(@PathVariable("id") Long id) {
return success(questionnaireService.getById(id));
}
@ApiOperation("根据 id 修改信息")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "主键", required = true, paramType = "path", dataTypeClass = Long.class),
})
@PutMapping("/{id}")
public RestResult<Boolean> edit(@PathVariable("id") Long id, Questionnaire questionnaire) {
questionnaire.setId(id);
return success(questionnaireService.updateById(questionnaire));
}
@ApiOperation("添加")
@PostMapping("/")
public RestResult<Boolean> add(Questionnaire questionnaire) {
return success(questionnaireService.save(questionnaire));
}
@ApiOperation("添加或修改调查表")
@PostMapping("/addOrUpdate")
public RestResult<Boolean> addQuestionnaire(Questionnaire questionnaire) {
return success(questionnaireService.saveOrUpdate(questionnaire, getAccount()));
}
@ApiOperation("根据 ids 删除")
@ApiImplicitParams({
@ApiImplicitParam(name = "ids", value = "主键列表", required = true, paramType = "query", allowMultiple = true, dataTypeClass = Long.class),
})
@DeleteMapping("/")
public RestResult<Boolean> delete(@RequestParam("ids") List<Long> ids) {
return success(questionnaireService.deleteByIds(ids));
}
@ApiOperation("提交满意度调查")
@PostMapping("/submit")
public RestResult<Boolean> submit(@RequestParam("id") Long id) {
return success(questionnaireService.submitQuestionnaire(id, getAccount()));
}
@ApiOperation("导出Excel")
@GetMapping("/export")
public void export(@RequestParam("ids") Long[] ids, HttpServletResponse response) {
questionnaireService.exportExcel(ids, response, getAccount());
}
@ApiOperation("导出统计Excel")
@GetMapping("/exportStatusExcel")
public void exportStatusExcel(@RequestParam("ids") Long[] ids, HttpServletResponse response) {
questionnaireService.exportStatusExcel(ids, response, getAccount());
}
}
package com.patzn.cloud.service.lims.hmhj.handler;
import com.patzn.cloud.service.hmhj.entity.Questionnaire;
import com.patzn.poibox.excel.AbstractExeclExportHandler;
import com.patzn.poibox.excel.IExcelTemplate;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class QuestionnaireExportHandler extends AbstractExeclExportHandler {
private List<Questionnaire> questionnaires = null;
public QuestionnaireExportHandler(List<Questionnaire> equipList) {
this.questionnaires = equipList;
}
@Override
public IExcelTemplate exportTemplate() {
return new IExcelTemplate() {
@Override
public String tplname() {
return "QuestionnaireTpl";
}
@Override
public String outname() {
return "客户满意度调查表";
}
};
}
@Override
protected Map<String, Object> renderData() {
Map<String, Object> objMap = new HashMap<>(1);
objMap.put("questionnaires", questionnaires);
return objMap;
}
}
\ No newline at end of file
......@@ -29,4 +29,6 @@ public interface EntrustMapper extends BatchMapper<Entrust> {
List<EntrustVO> selectEntrustProgressList(RowBounds rowBounds, @Param("vo")EntrustVO entrust);
List<EntrustVO> selectVOListByItem(Page<EntrustVO> page, @Param("vo") EntrustVO entrust);
List<EntrustVO> selectEntrustVOHisList(Page<EntrustVO> page,@Param("vo") EntrustVO entrust);
}
......@@ -9,7 +9,7 @@ import java.util.List;
/**
* <p>
* Mapper 接口
* Mapper 接口
* </p>
*
* @author wwd
......@@ -18,4 +18,6 @@ import java.util.List;
public interface EntrustSampleItemIndexMapper extends BatchMapper<EntrustSampleItemIndex> {
List<EntrustSampleItemIndexVO> listVOByExpIds(@Param("expIds") List<Long> expIdsList);
List<EntrustSampleItemIndexVO> listBySampleIds(@Param("sampleIds") List<Long> sampleIdList);
}
......@@ -2,17 +2,18 @@ package com.patzn.cloud.service.lims.hmhj.mapper;
import com.baomidou.mybatisplus.annotations.SqlParser;
import com.baomidou.mybatisplus.plugins.Page;
import com.patzn.cloud.commons.mapper.BatchMapper;
import com.patzn.cloud.service.hmhj.dto.QueryDTO;
import com.patzn.cloud.service.hmhj.entity.EntrustSampleItem;
import com.patzn.cloud.commons.mapper.BatchMapper;
import com.patzn.cloud.service.hmhj.vo.EntrustSampleCalcResultVO;
import com.patzn.cloud.service.hmhj.vo.EntrustSampleItemVO;
import com.patzn.cloud.service.hmhj.vo.TesterWorkloadStatsVO;
import com.patzn.cloud.service.lims.base.entity.LmsUserRelGroup;
import com.patzn.cloud.service.lims.base.vo.LmsUserRelGroupVO;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.session.RowBounds;
import java.util.List;
import java.util.Map;
/**
* <p>
......@@ -53,5 +54,8 @@ public interface EntrustSampleItemMapper extends BatchMapper<EntrustSampleItem>
List<TesterWorkloadStatsVO> selectTesterWorkloadStatus(@Param("vo") QueryDTO queryDTO);
@SqlParser(filter = true)
List<LmsUserRelGroupVO> selectAllPersonWorkload(RowBounds rowBounds, @Param("rel") LmsUserRelGroup lmsUserRelGroup);
List<EntrustSampleCalcResultVO> selectSampleCalcResult(@Param("vo") QueryDTO queryDTO);
}
package com.patzn.cloud.service.lims.hmhj.mapper;
import com.patzn.cloud.commons.mapper.BatchMapper;
import com.patzn.cloud.service.hmhj.entity.Questionnaire;
import com.patzn.cloud.service.hmhj.vo.QuestionnaireStatsVO;
import org.apache.ibatis.annotations.Param;
/**
* <p>
* 满意度调查表 Mapper 接口
* </p>
*
* @author meazty
* @since 2021-07-11
*/
public interface QuestionnaireMapper extends BatchMapper<Questionnaire> {
QuestionnaireStatsVO selectStatsList(@Param("ids") Long[] ids);
}
......@@ -26,4 +26,5 @@ public interface IEntrustSampleItemIndexService extends IBaseService<EntrustSamp
List<EntrustSampleItemIndex> listBySampleIds(List<Long> sampleIds);
List<EntrustSampleItemIndexVO> listVOBySampleIds(List<Long> sampleIds);
}
......@@ -83,5 +83,9 @@ public interface IEntrustSampleItemService extends IBaseService<EntrustSampleIte
List<TesterWorkloadStatsVO> getTesterWorkloadStatusQuery(QueryDTO queryDTO);
Page<LmsUserRelGroupVO> selectAllPersonWorkload(Page<LmsUserRelGroupVO> page,LmsUserRelGroup rel);
List<EntrustSampleCalcResultVO> getSampleCalcResult(QueryDTO queryDTO);
Boolean notWriteToReport(List<Long> ids);
}
......@@ -25,7 +25,7 @@ public interface IEntrustSamplePrepareService extends IBaseService<EntrustSample
boolean makeEnd(SamplePrepareDTO dto, Account account);
boolean submitSampleReceive(Long[] ids, Account account);
boolean submitSampleReceive(Long[] ids,String receiveType, Account account);
boolean addOrUpdateToSetStatus(Long[] sampleIds, EntrustSamplePrepareStatusEnum statusEnum);
......
......@@ -82,5 +82,7 @@ public interface IEntrustSampleService extends IBaseService<EntrustSample> {
boolean addTestItemInInput(EntrustSampleADDDTO dto, Account account);
boolean scanReceive(String sampleCode, Account account);
boolean makeSingleReport(Long sampleId, Long[] itemIds, Long templateId, Account account);
}
package com.patzn.cloud.service.lims.hmhj.service;
import com.baomidou.mybatisplus.plugins.Page;
import com.patzn.cloud.commons.controller.Account;
import com.patzn.cloud.commons.service.IBaseService;
import com.patzn.cloud.service.hmhj.entity.Questionnaire;
import com.patzn.cloud.service.hmhj.vo.QuestionnaireVO;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* 满意度调查表 服务类
*
* @author meazty
* @since 2021-07-11
*/
public interface IQuestionnaireService extends IBaseService<Questionnaire> {
Page<Questionnaire> page(Page<Questionnaire> page, QuestionnaireVO questionnaireVO);
boolean saveOrUpdate(Questionnaire questionnaire, Account account);
boolean removeByIds(List<Long> ids);
boolean submitQuestionnaire(Long id, Account account);
void exportExcel(Long[] ids, HttpServletResponse response, Account account);
void exportStatusExcel(Long[] ids, HttpServletResponse response, Account account);
boolean deleteByIds(List<Long> ids);
}
......@@ -18,7 +18,7 @@ import org.springframework.web.multipart.MultipartFile;
import java.util.List;
/**
* 服务实现类
* 服务实现类
*
* @author wwd
* @since 2021-02-26
......@@ -31,8 +31,12 @@ public class EntrustReportTemplateServiceImpl extends BaseServiceImpl<EntrustRep
@Override
public Page<EntrustReportTemplate> page(Page<EntrustReportTemplate> page, EntrustReportTemplate entrustReportTemplate) {
String name = entrustReportTemplate.getName();
entrustReportTemplate.setName(null);
Wrapper wrapper = new EntityWrapper<>(entrustReportTemplate);
if (StringUtils.isNotBlank(name)) {
wrapper.like("name", name);
}
return this.page(page, wrapper);
}
......@@ -42,10 +46,10 @@ public class EntrustReportTemplateServiceImpl extends BaseServiceImpl<EntrustRep
}
@Override
public boolean uploadTemplate(MultipartFile file, String name,String classType, String remark) {
RestAssert.fail(StringUtils.isBlank(name),"模板名称不能为空");
RestAssert.fail(StringUtils.isBlank(classType),"模板类别不能为空");
RestAssert.fail(StringUtils.isBlank(remark),"模板名称说明不能为空");
public boolean uploadTemplate(MultipartFile file, String name, String classType, String remark) {
RestAssert.fail(StringUtils.isBlank(name), "模板名称不能为空");
RestAssert.fail(StringUtils.isBlank(classType), "模板类别不能为空");
RestAssert.fail(StringUtils.isBlank(remark), "模板名称说明不能为空");
String fileName = file.getOriginalFilename();
RestAssert.fail(StringUtils.isBlank(fileName), "请上传文件");
EntrustReportTemplate attachment = new EntrustReportTemplate();
......
......@@ -21,7 +21,7 @@ import java.util.List;
import java.util.stream.Collectors;
/**
* 服务实现类
* 服务实现类
*
* @author wwd
* @since 2021-06-15
......@@ -53,41 +53,33 @@ public class EntrustSampleItemIndexServiceImpl extends BaseServiceImpl<EntrustSa
@Override
public List<EntrustSampleItemIndex> listBySampleId(Long id) {
List<EntrustSampleItem> itemList = entrustSampleItemService.list(Condition.create().eq("entrust_sample_id",id));
if (CollectionUtils.isEmpty(itemList)){
List<EntrustSampleItem> itemList = entrustSampleItemService.list(Condition.create().eq("entrust_sample_id", id));
if (CollectionUtils.isEmpty(itemList)) {
return null;
}
List<Long> itemIds= itemList.stream().map(s->{
List<Long> itemIds = itemList.stream().map(s -> {
return s.getId();
}).collect(Collectors.toList());
return list(Condition.create().in("entrust_sample_item_id",itemIds));
return list(Condition.create().in("entrust_sample_item_id", itemIds));
}
@Override
public List<EntrustSampleItemIndex> listBySampleIds(List<Long> sampleIds) {
List<EntrustSampleItem> itemList = entrustSampleItemService.list(Condition.create().in("entrust_sample_id",sampleIds));
if (CollectionUtils.isEmpty(itemList)){
List<EntrustSampleItem> itemList = entrustSampleItemService.list(Condition.create().in("entrust_sample_id", sampleIds));
if (CollectionUtils.isEmpty(itemList)) {
return null;
}
List<Long> itemIds= itemList.stream().map(s->{
List<Long> itemIds = itemList.stream().map(s -> {
return s.getId();
}).collect(Collectors.toList());
return list(Condition.create().in("entrust_sample_item_id",itemIds));
return list(Condition.create().in("entrust_sample_item_id", itemIds));
}
@Override
public List<EntrustSampleItemIndexVO> listVOBySampleIds(List<Long> sampleIds) {
List<EntrustSampleItem> itemList = entrustSampleItemService.list(Condition.create().setSqlSelect("id").in("entrust_sample_id",sampleIds));
if (CollectionUtils.isEmpty(itemList)){
if (CollectionUtils.isEmpty(sampleIds)) {
return null;
}
List<Long> itemIds= new ArrayList<>(itemList.size());
for (EntrustSampleItem itemVO : itemList) {
itemIds.add(itemVO.getId());
}
return baseMapper.listVOByExpIds(itemIds);
return baseMapper.listBySampleIds(sampleIds);
}
}
......@@ -208,11 +208,11 @@ public class EntrustSamplePrepareServiceImpl extends BaseServiceImpl<EntrustSamp
@Transactional(rollbackFor = Exception.class)
@Override
public boolean submitSampleReceive(Long[] ids, Account account) {
public boolean submitSampleReceive(Long[] ids, String receiveType, Account account) {
RestAssert.fail(ArrayUtils.isEmpty(ids), "请选择检测样品");
List<EntrustSamplePrepare> prepareList = super.list(Condition.create().in("id", ids));
RestAssert.fail(CollectionUtils.isEmpty(prepareList), "请选择检测样品");
// receiveType : 接收方式,手动或者扫码接收
List<Long> sampleIdsList = new ArrayList<>();
for (EntrustSamplePrepare prepare : prepareList) {
if (null != prepare.getEntrustSampleId() && null != prepare.getGroupId()) {
......
......@@ -653,34 +653,10 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust>
@Override
public Page<EntrustVO> pageEntrustByItemHis(Page<EntrustVO> page, EntrustVO entrust) {
if (CollectionUtils.isEmpty(entrust.getItemStatusEnumList())) {
return page;
}
List<EntrustSampleItem> itemList = entrustSampleItemService.list(Condition.create().in("status", entrust.getItemStatusEnumList()));
if (CollectionUtils.isEmpty(itemList)) {
return page;
}
List<Long> sampleIdsList = itemList.stream().map(i -> {
return i.getEntrustSampleId();
}).collect(Collectors.toList());
if (CollectionUtils.isEmpty(sampleIdsList)) {
return page;
}
List<EntrustSample> sampleList = entrustSampleService.list(Condition.create().in("id", sampleIdsList));
if (CollectionUtils.isEmpty(sampleList)) {
return page;
}
List<Long> ids = sampleList.stream().map(s -> {
return s.getEntrustId();
}).collect(Collectors.toList());
if (CollectionUtils.isEmpty(ids)) {
return page;
}
entrust.setIdsList(ids);
return page.setRecords(baseMapper.selectVOList(page, entrust));
if (CollectionUtils.isEmpty(entrust.getItemStatusEnumList())) {
return page;
}
return page.setRecords(baseMapper.selectEntrustVOHisList(page, entrust));
}
@Override
......
......@@ -5,6 +5,7 @@ import com.patzn.cloud.service.hmhj.entity.Material;
import com.patzn.cloud.service.lims.hmhj.mapper.MaterialMapper;
import com.patzn.cloud.service.lims.hmhj.service.IMaterialService;
import com.patzn.cloud.commons.service.impl.BaseServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
......@@ -23,8 +24,20 @@ public class MaterialServiceImpl extends BaseServiceImpl<MaterialMapper, Materia
@Override
public Page<Material> page(Page<Material> page, Material material) {
String name = material.getName();
String code = material.getCode();
String supplier = material.getSupplier();
material.setCode(null).setName(null).setSupplier(null);
Wrapper wrapper = new EntityWrapper<>(material);
if (StringUtils.isNotBlank(name)) {
wrapper.like("name", name);
}
if (StringUtils.isNotBlank(code)) {
wrapper.like("code", code);
}
if (StringUtils.isNotBlank(supplier)) {
wrapper.like("supplier", supplier);
}
return this.page(page, wrapper);
}
......
package com.patzn.cloud.service.lims.hmhj.service.impl;
import com.baomidou.mybatisplus.mapper.Condition;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.toolkit.ArrayUtils;
import com.baomidou.mybatisplus.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.toolkit.StringUtils;
import com.patzn.cloud.commons.api.RestAssert;
import com.patzn.cloud.commons.controller.Account;
import com.patzn.cloud.commons.service.impl.BaseServiceImpl;
import com.patzn.cloud.commons.toolkit.DateUtils;
import com.patzn.cloud.feign.base.client.SysUserClient;
import com.patzn.cloud.feign.lims.base.client.LmsBaseDictClient;
import com.patzn.cloud.service.base.vo.SysUserOrgVO;
import com.patzn.cloud.service.hmhj.entity.Questionnaire;
import com.patzn.cloud.service.hmhj.vo.QuestionnaireStatsVO;
import com.patzn.cloud.service.hmhj.vo.QuestionnaireVO;
import com.patzn.cloud.service.lims.base.entity.LmsBaseDict;
import com.patzn.cloud.service.lims.common.service.IExportService;
import com.patzn.cloud.service.lims.hmhj.handler.QuestionnaireExportHandler;
import com.patzn.cloud.service.lims.hmhj.mapper.QuestionnaireMapper;
import com.patzn.cloud.service.lims.hmhj.service.IQuestionnaireService;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletResponse;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
/**
* 满意度调查表 服务实现类
*
* @author meazty
* @since 2021-07-11
*/
@Service
public class QuestionnaireServiceImpl extends BaseServiceImpl<QuestionnaireMapper, Questionnaire> implements IQuestionnaireService {
private static final String DICT_TYPE = "满意度间隔时间";
@Autowired
private LmsBaseDictClient lmsBaseDictClient;
@Autowired
private SysUserClient sysUserClient;
@Autowired
private IExportService exportService;
@Transactional(rollbackFor = Exception.class)
@Override
public boolean saveOrUpdate(Questionnaire questionnaire, Account account) {
calcScore(questionnaire);
List<SysUserOrgVO> list = sysUserClient.getUserOrg(Arrays.asList(account.getUserId())).serviceData();
SysUserOrgVO sysUserOrgVO = list.get(0);
questionnaire.setOrgName(sysUserOrgVO.getOrgName());
questionnaire.setLid(account.getUserId());
if (null != questionnaire.getStatus() && 1 == questionnaire.getStatus().intValue()) {
questionnaire.setSubmitTime(new Date());
questionnaire.setCreator(account.getUserName());
submitHandler(questionnaire, account);
}
if (null == questionnaire.getId()) {
return save(questionnaire);
}
return updateById(questionnaire);
}
@Override
public Page<Questionnaire> page(Page<Questionnaire> page, QuestionnaireVO questionnaireVO) {
Wrapper wrapper = new EntityWrapper<>(new Questionnaire());
if (StringUtils.isNotEmpty(questionnaireVO.getCreator())) {
wrapper.like("creator", questionnaireVO.getCreator());
}
if (null != questionnaireVO.getTimeS()) {
wrapper.ge("submit_time", questionnaireVO.getTimeS());
}
if (null != questionnaireVO.getTimeE()) {
wrapper.le("submit_time", questionnaireVO.getTimeE());
}
if (null != questionnaireVO.getStatus()) {
wrapper.eq("status", questionnaireVO.getStatus());
}
wrapper.orderBy("ctime", false);
return this.page(page, wrapper);
}
@Override
public boolean removeByIds(List<Long> ids) {
return baseMapper.deleteBatchIds(ids) > 0;
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean submitQuestionnaire(Long id, Account account) {
RestAssert.fail(null == id, "满意度调查表不能为空");
Questionnaire questionnaire = getById(id);
RestAssert.fail(null == questionnaire, "满意度调查表不能为空");
calcScore(questionnaire);
questionnaire.setSubmitTime(new Date());
submitHandler(questionnaire, account);
questionnaire.setStatus(1);
questionnaire.setCreator(account.getUserName());
return updateById(questionnaire);
}
private void submitHandler(Questionnaire questionnaire, Account account) {
LmsBaseDict baseDict = lmsBaseDictClient.getByType(DICT_TYPE, account.getCompanyId()).getData();
RestAssert.fail(null == baseDict, "未配置满意度调查间隔时间,请先配置默认间隔时间");
Integer seqDays = Integer.parseInt(baseDict.getCode());
// 提交时间与当前时间比较,若提交时间满足 + seqDays > new Date(),那么可以继续提交
RestAssert.fail(DateUtils.dateAddDays(questionnaire.getSubmitTime(), seqDays).after(new Date()), String.format("未满 %d 个月,无法继续提交满意度调查表。", seqDays / 30));
}
private void calcScore(Questionnaire questionnaire) {
RestAssert.fail(null == questionnaire.getAccuracy() || null == questionnaire.getClarity()
|| null == questionnaire.getCoordination() || null == questionnaire.getServiceAttitude()
|| null == questionnaire.getTimeliness(), "满意度调查表分数不能为空");
BigDecimal accuracy = questionnaire.getAccuracy();
BigDecimal clarity = questionnaire.getClarity();
BigDecimal coordination = questionnaire.getCoordination();
BigDecimal serviceAttitude = questionnaire.getServiceAttitude();
BigDecimal timeliness = questionnaire.getTimeliness();
BigDecimal score = accuracy.add(clarity).add(coordination).add(serviceAttitude).add(timeliness);
questionnaire.setScore(score);
}
@Override
public void exportExcel(Long[] ids, HttpServletResponse response, Account account) {
RestAssert.fail(ArrayUtils.isEmpty(ids), "请选择要导出的调查表");
List<Questionnaire> questionnaireList = getBatchIds(Arrays.asList(ids));
RestAssert.fail(CollectionUtils.isEmpty(questionnaireList), "请选择要导出的调查表");
new QuestionnaireExportHandler(questionnaireList).generater(response);
}
@Override
public void exportStatusExcel(Long[] ids, HttpServletResponse response, Account account) {
RestAssert.fail(ArrayUtils.isEmpty(ids), "请选择要导出的调查表");
QuestionnaireStatsVO questionnaireVO = baseMapper.selectStatsList(ids);
RestAssert.fail(null == questionnaireVO, "请选择要导出的调查表");
XSSFWorkbook xssfWorkbook = exportService.getXSSFWorkbook("QuestionnaireStatsExport.xlsx");
XSSFSheet sheet = xssfWorkbook.getSheetAt(0);
Integer numTotal = questionnaireVO.getNumTotal();
for (int i = 1; i < 7; i++) {
XSSFRow row = sheet.getRow(i);
double sumValue = 0.0, avgValue = 0.0;
switch (i) {
case 1:
sumValue = questionnaireVO.getFwtdSum();
avgValue = questionnaireVO.getFwtdAvg();
break;
case 2:
sumValue = questionnaireVO.getXtgtSum();
avgValue = questionnaireVO.getXtgtAvg();
break;
case 3:
sumValue = questionnaireVO.getRjsxSum();
avgValue = questionnaireVO.getRjsxAvg();
break;
case 4:
sumValue = questionnaireVO.getRzqxSum();
avgValue = questionnaireVO.getRzqxAvg();
break;
case 5:
sumValue = questionnaireVO.getQxzjSum();
avgValue = questionnaireVO.getQxzjAvg();
break;
case 6:
sumValue = questionnaireVO.getSumTotal();
avgValue = questionnaireVO.getAvgTotal();
break;
}
row.getCell(1).setCellValue(sumValue);
row.getCell(2).setCellValue(numTotal);
row.getCell(3).setCellValue(avgValue);
}
String fileName = null;
try {
fileName = java.net.URLEncoder.encode("客户满意度调查表", "UTF-8");
} catch (UnsupportedEncodingException e) {
fileName = "questionnaireExcel";
}
exportService.downloadXlsx(response, fileName + ".xlsx", xssfWorkbook);
}
@Override
public boolean deleteByIds(List<Long> ids) {
List list = list(Condition.create().in("id", ids).eq("status", 1).eq("deleted", 0));
RestAssert.fail(CollectionUtils.isNotEmpty(list), "已提交的调查表不能删除!");
return removeByIds(ids);
}
}
......@@ -58,6 +58,44 @@
order by entrust_time desc
</select>
<!--查询委托历史数据-->
<select id="selectEntrustVOHisList" resultType="com.patzn.cloud.service.hmhj.vo.EntrustVO">
SELECT * FROM entrust e WHERE e.deleted = 0
<if test="null!=vo.itemStatusEnumList">
AND exists (
select 1 from entrust_sample s,entrust_sample_item i where s.deleted = 0 and i.deleted = 0
and s.id = i.entrust_sample_id and e.id = s.entrust_id
and i.status IN
<foreach collection="vo.itemStatusEnumList" index="itemStats" item="id" open="(" separator="," close=")">
#{itemStats}
</foreach>
)
</if>
<if test="null!=vo.client">
AND e.client LIKE CONCAT('%',#{vo.client},'%')
</if>
<if test="null!=vo.code">
AND e.code LIKE CONCAT('%',#{vo.code},'%')
</if>
<if test="null!=vo.testSide">
AND e.test_side LIKE CONCAT('%',#{vo.testSide},'%')
</if>
<if test="null!=vo.statusList">
AND e.status IN
<foreach collection="vo.statusList" index="index" item="status" open="(" separator="," close=")">
#{status}
</foreach>
</if>
<if test="null!=vo.groupNameList">
AND e.test_side IN
<foreach collection="vo.groupNameList" index="index" item="groupName" open="(" separator="," close=")">
#{groupName}
</foreach>
</if>
order by entrust_time desc
</select>
<select id="selectVOListByItem" resultType="com.patzn.cloud.service.hmhj.vo.EntrustVO">
SELECT distinct e.* FROM
entrust e,entrust_sample s,entrust_sample_item i
......
......@@ -16,4 +16,22 @@
#{id}
</foreach>
</select>
<select id="listBySampleIds" resultType="com.patzn.cloud.service.hmhj.vo.EntrustSampleItemIndexVO">
select
ii.*,
i.name "item_name",
i.id "item_id",
s.id "sample_id",
s.code "sample_code",
s.entrust_id
from entrust_sample_item_index ii
join entrust_sample_item i on ii.entrust_sample_item_id = i.id
JOIN entrust_sample s ON i.entrust_sample_id = s.id
WHERE ii.deleted =0 AND i.deleted = 0 AND s.deleted = 0
AND s.id IN
<foreach collection="sampleIds" index="index" item="sampleId" open="(" separator="," close=")">
#{sampleId}
</foreach>
</select>
</mapper>
......@@ -51,7 +51,8 @@
group_id,
tester,
tester_id,
test_time
test_time,
in_report
FROM
entrust_sample_item
WHERE
......@@ -92,7 +93,7 @@
)
SELECT i.*,s.name AS "sampleName",e.test_side "testSide",COALESCE(s.third_code,s.code) AS "sampleCode",l.record_id,r.object_key AS "recordObjectKey",
s.compliance_test,s.sample_from,sample_shape,s.second_code,s.third_code
s.compliance_test,s.sample_from,sample_shape,s.second_code,s.third_code,i.in_report
FROM i
JOIN entrust_sample s ON i.entrust_sample_id = s.id
LEFT JOIN ( SELECT id,item_id,record_id FROM item_rel_original_record WHERE deleted = 0 ) l ON i.id = l.item_id
......@@ -118,7 +119,8 @@
standard,
test_value,
group_name,
group_id
group_id,
in_report
FROM
entrust_sample_item
WHERE
......@@ -159,7 +161,7 @@
)
SELECT i.*,s.name AS "sampleName",s.code AS "sampleCode",e.test_side "testSide",l.record_id,r.object_key AS "recordObjectKey",
s.compliance_test,s.second_code,s.third_code
s.compliance_test,s.second_code,s.third_code,i.in_report
FROM i
JOIN entrust_sample s ON i.entrust_sample_id = s.id
JOIN (select t.id,t.code,t.test_side from entrust t where t.deleted = 0 ) e on s.entrust_id = e.id
......@@ -180,6 +182,8 @@
JOIN entrust_sample s ON i.entrust_sample_id = s.ID
WHERE i.deleted = 0 AND s.deleted = 0
-- 查询在报告中体现的
AND i.in_report = 1
AND i.entrust_sample_id IN
<foreach collection="ids" index="index" item="sampleId" open="(" separator="," close=")">
#{sampleId}
......@@ -462,4 +466,29 @@
t.sum_compare,
t.sum_value
</select>
<!-- 所有人员检测任务量查询 -->
<select id="selectAllPersonWorkload" resultType="com.patzn.cloud.service.lims.base.vo.LmsUserRelGroupVO">
select
ug.user_id,
ug.group_id,
ug.realname,
sum(case when i.status = 50 then 1 else 0 end ) "tested",
sum(case when i.status = 20 and coalesce(ii.fill_num,0) > 0 then 1 else 0 end ) "total",
sum(case when i.status = 20 and coalesce(ii.fill_num,0) = 0 then 1 else 0 end ) "notTesting"
from v_lms_user_group ug
left join entrust_sample_item i on ug.user_id = i.tester_Id
left join (
select ii.entrust_sample_item_id,count(1) "fill_num" from entrust_sample_item_index ii
where ii.deleted = 0 group by ii.entrust_sample_item_id
) ii on ii.entrust_sample_item_id = i.id
where 1 = 1
<if test="rel.realname != null">
and ug.realname like concat('%',#{rel.realname},'%')
</if>
<if test="rel.groupId != null">
and ug.group_id = #{rel.groupId}
</if>
GROUP BY ug.user_id,ug.group_id,ug.realname
</select>
</mapper>
......@@ -27,41 +27,56 @@
<if test="null!=vo.entrustId">
AND s.entrust_id = #{vo.entrustId}
</if>
</select>
<select id="selectVOList" resultType="com.patzn.cloud.service.hmhj.vo.EntrustSampleVO">
SELECT
s.*
FROM entrust_sample s WHERE deleted = 0
<if test="null != vo.entrustId">
AND s.entrust_id = #{vo.entrustId}
</if>
SELECT * FROM entrust_sample WHERE deleted = 0
<if test="null!=vo.entrustId">
AND entrust_id = #{vo.entrustId}
<if test="null != vo.status">
AND s.status = #{vo.status}
</if>
<if test="null!=vo.status">
AND status = #{vo.status}
<if test="null != vo.code">
AND s.code LIKE CONCAT('%',#{vo.code},'%')
</if>
<if test="null!=vo.code">
AND code LIKE CONCAT('%',#{vo.code},'%')
<if test="null != vo.notStatus">
AND s.status != #{vo.notStatus}
</if>
<if test="null!=vo.notStatus">
AND status != #{vo.notStatus}
<if test="null != vo.itemStatus">
AND exists (
select 1 from entrust_sample_item i where i.deleted = 0
and i.entrust_sample_id = s.id
and i.status = #{vo.itemStatus}
)
</if>
<if test="null != vo.itemStatusList">
AND exists (
select 1 from entrust_sample_item i where i.deleted = 0
and i.entrust_sample_id = s.id
and i.status IN
<foreach collection="vo.itemStatusList" index="index" item="itemStatus" open="(" separator="," close=")">
#{itemStatus}
</foreach>
)
</if>
<if test="null!=vo.ids">
AND id IN
AND s.id IN
<foreach collection="vo.ids" index="index" item="sampleId" open="(" separator="," close=")">
#{sampleId}
</foreach>
</if>
order by order_by asc, code ,ctime desc
order by s.order_by asc, s.code ,s.ctime desc
</select>
<select id="selectMinStatusByEntrustIds" resultType="com.patzn.cloud.service.hmhj.vo.EntrustSampleVO">
WITH summary AS (
......
<?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.patzn.cloud.service.lims.hmhj.mapper.QuestionnaireMapper">
<select id="selectStatsList" resultType="com.patzn.cloud.service.hmhj.vo.QuestionnaireStatsVO">
select
sum(q.service_attitude) "fwtd_sum",
sum(q.coordination) "xtgt_sum",
sum(q.timeliness) "rjsx_sum",
sum(q.accuracy) "rzqx_sum",
sum(q.clarity) "qxzj_sum",
sum(q.score) "sum_total",
count(distinct q.service_attitude) "num_total",
round(cast((sum(q.service_attitude) / count(distinct q.service_attitude)) as numeric),1) "fwtd_avg",
round(cast((sum(q.coordination) / count(distinct q.service_attitude)) as numeric),1) "xtgt_avg",
round(cast((sum(q.timeliness) / count(distinct q.service_attitude))as numeric),1) "rjsx_avg",
round(cast((sum(q.accuracy) / count(distinct q.service_attitude))as numeric),1) "rzqx_avg",
round(cast((sum(q.clarity) / count(distinct q.service_attitude))as numeric),1) "qxzj_avg",
round(cast((sum(q.score) / count(distinct q.service_attitude))as numeric),1) "avg_total"
from questionnaire q where q.deleted = 0
<if test="null != ids">
AND id IN
<foreach collection="ids" index="index" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</if>
</select>
</mapper>
--ghx
--ghx
ALTER TABLE "public"."entrust_sample"
ADD COLUMN "modified" int2 DEFAULT 0;
COMMENT ON COLUMN "public"."entrust_sample"."modified" IS '是否被更改【0-未修改,1-被修改】';
ALTER TABLE "public"."entrust_sample_item"
ADD COLUMN "in_report" int2 DEFAULT 1;
COMMENT ON COLUMN "public"."entrust_sample_item"."in_report" IS '是否在报告中显示(0否1是)';
\ No newline at end of file
DROP TABLE IF EXISTS "public"."questionnaire";
DROP TABLE IF EXISTS "public"."questionnaire";
CREATE TABLE "public"."questionnaire" (
"id" int8 NOT NULL,
"service_attitude" numeric(3,1) DEFAULT 0.0,
"coordination" numeric(3,1) DEFAULT 0.0,
"timeliness" numeric(3,1) DEFAULT 0.0,
"accuracy" numeric(3,1) DEFAULT 0.0,
"clarity" numeric(3,1) DEFAULT 0.0,
"advice" varchar(512) COLLATE "pg_catalog"."default",
"status" int2 DEFAULT 0,
"score" numeric(10,1) DEFAULT 0.0,
"creator" varchar(64) COLLATE "pg_catalog"."default",
"org_name" varchar(64) COLLATE "pg_catalog"."default",
"company_id" int8,
"uid" int8,
"ctime" timestamp(0) DEFAULT NULL::timestamp without time zone,
"lid" int8,
"ltime" timestamp(0) DEFAULT NULL::timestamp without time zone,
"deleted" int2 DEFAULT 0,
"submit_time" timestamp(6)
)
;
COMMENT ON COLUMN "public"."questionnaire"."service_attitude" IS '服务态度';
COMMENT ON COLUMN "public"."questionnaire"."coordination" IS '协调沟通';
COMMENT ON COLUMN "public"."questionnaire"."timeliness" IS '报告及时性';
COMMENT ON COLUMN "public"."questionnaire"."accuracy" IS '报告准确性';
COMMENT ON COLUMN "public"."questionnaire"."clarity" IS '清晰度和整洁度';
COMMENT ON COLUMN "public"."questionnaire"."advice" IS '建议和意见';
COMMENT ON COLUMN "public"."questionnaire"."status" IS '状态【0:草稿,1:已提交】';
COMMENT ON COLUMN "public"."questionnaire"."score" IS '总分';
COMMENT ON COLUMN "public"."questionnaire"."creator" IS '提交人,创建人';
COMMENT ON COLUMN "public"."questionnaire"."org_name" IS '责任单位名称';
COMMENT ON COLUMN "public"."questionnaire"."company_id" IS '企业ID';
COMMENT ON COLUMN "public"."questionnaire"."uid" IS '创建者ID';
COMMENT ON COLUMN "public"."questionnaire"."ctime" IS '创建时间';
COMMENT ON COLUMN "public"."questionnaire"."lid" IS '最后修改人ID';
COMMENT ON COLUMN "public"."questionnaire"."ltime" IS '最后修改时间';
COMMENT ON COLUMN "public"."questionnaire"."deleted" IS '总分';
COMMENT ON COLUMN "public"."questionnaire"."submit_time" IS '提交时间';
COMMENT ON TABLE "public"."questionnaire" IS '满意度调查表';
-- ----------------------------
-- Primary Key structure for table questionnaire
-- ----------------------------
ALTER TABLE "public"."questionnaire" ADD CONSTRAINT "questionnaire_pkey" PRIMARY KEY ("id");
\ No newline at end of file
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