package com.panzhihua.service_jinhui_community.service.impl;
|
|
import com.alibaba.fastjson.JSON;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
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.google.common.collect.Lists;
|
import com.panzhihua.common.model.dtos.community.ComActWorkGuideDTO;
|
import com.panzhihua.common.model.dtos.community.PageActWorkGuideDTO;
|
import com.panzhihua.common.model.vos.R;
|
import com.panzhihua.common.model.vos.community.ComActWorkGuideAppletsVO;
|
import com.panzhihua.common.model.vos.community.ComActWorkGuideDetailAppletsVO;
|
import com.panzhihua.common.model.vos.community.ComActWorkGuideMaterialVO;
|
import com.panzhihua.common.model.vos.community.ComActWorkGuideVO;
|
import com.panzhihua.common.model.vos.community.questnaire.QuestnaiteSubSelectionVO;
|
import com.panzhihua.common.model.vos.community.questnaire.QuestnaiteSubVO;
|
import com.panzhihua.common.utlis.StringUtils;
|
import com.panzhihua.service_jinhui_community.dao.*;
|
import com.panzhihua.service_jinhui_community.entity.*;
|
import com.panzhihua.service_jinhui_community.model.dos.ComActDO;
|
import com.panzhihua.service_jinhui_community.service.JinhuiComActWorkGuideService;
|
import org.springframework.beans.BeanUtils;
|
import org.springframework.stereotype.Service;
|
|
import javax.annotation.Resource;
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
import java.util.stream.Collectors;
|
|
/**
|
* @auther llming
|
* @describe 办事指南
|
*/
|
@Service
|
public class JinhuiComActWorkGuideServiceImpl extends ServiceImpl<JinhuiComActWorkGuideDAO, JinhuiComActWorkGuide>
|
implements JinhuiComActWorkGuideService {
|
static String AK = "W3x8DhCWKc2UFIwYgclpRBdL6BeGLLQt"; // 百度地图密钥
|
|
@Resource
|
JinhuiComActWorkGuideMaterialDao workGuideMaterialDAO;
|
@Resource
|
private JinhuiComActWorkGuideClassifyDao comActWorkGuideClassifyDAO;
|
@Resource
|
ComActDAO comActDAO;
|
|
@Resource
|
private JinhuiComActQuestnaireSubDao questnaireSubDao;
|
|
@Resource
|
private JinhuiComActQuestnaireSubSelectionServiceImpl questnaireSubSelectionService;
|
|
@Override
|
public R addWorkGuide(ComActWorkGuideDTO workGuideDTO, String userId)
|
{
|
JinhuiComActWorkGuide comActWorkGuideDO = new JinhuiComActWorkGuide();
|
BeanUtils.copyProperties(workGuideDTO, comActWorkGuideDO);
|
comActWorkGuideDO.setCreateBy(userId);
|
comActWorkGuideDO.setCreateAt(new Date());
|
|
// 统计该调查问卷填报题目数量
|
int count = 0;
|
List<QuestnaiteSubVO> questnaiteSubVOS =null;
|
if(!StringUtils.isEmpty(workGuideDTO.getJsonObject()))
|
{
|
questnaiteSubVOS= JSON.parseArray(workGuideDTO.getJsonObject(), QuestnaiteSubVO.class);
|
if (questnaiteSubVOS!=null) {
|
count = questnaiteSubVOS.size();
|
}
|
}
|
|
comActWorkGuideDO.setCount(count);
|
|
// 保存办事指南材料
|
comActWorkGuideDO.getMaterials().forEach(material -> {
|
JinhuiComActWorkGuideMaterial workGuideMaterialDO = new JinhuiComActWorkGuideMaterial();
|
workGuideMaterialDO.setMaterialName(material.getMaterialName());
|
workGuideMaterialDO.setWorkGuideId(comActWorkGuideDO.getId());
|
workGuideMaterialDAO.insert(workGuideMaterialDO);
|
});
|
|
|
int quesCount = this.baseMapper.insert(comActWorkGuideDO);
|
if (quesCount != 1) {
|
return R.fail("创建失败");
|
}
|
|
|
if (questnaiteSubVOS!=null) {
|
questnaiteSubVOS.forEach(sub -> {
|
JinhuiComActQuestnaireSub comActQuestnaireSubDO = new JinhuiComActQuestnaireSub();
|
comActQuestnaireSubDO.setType(sub.getType()+"");
|
comActQuestnaireSubDO.setContent(sub.getLabel());
|
comActQuestnaireSubDO.setSort(sub.getSort()+"");
|
comActQuestnaireSubDO.setQueId(comActWorkGuideDO.getId());
|
comActQuestnaireSubDO.setCreateBy(userId);
|
comActQuestnaireSubDO.setKey(sub.getKey());
|
questnaireSubDao.insert(comActQuestnaireSubDO);
|
ArrayList<JinhuiComActQuestnaireSubSelection> subSelectionList = Lists.newArrayList();
|
if (sub.getOptions() != null && !sub.getOptions().isEmpty()) {
|
List<QuestnaiteSubSelectionVO> subOptions = sub.getOptions();
|
for (int i = 0; i < subOptions.size(); i++) {
|
QuestnaiteSubSelectionVO subSelect = subOptions.get(i);
|
JinhuiComActQuestnaireSubSelection subSelectionDO = new JinhuiComActQuestnaireSubSelection();
|
subSelectionDO.setQueSubId(comActQuestnaireSubDO.getId()+"");
|
if (subSelect.getType().equals(1)) {
|
// 添加选项名称
|
subSelectionDO.setOptionName(subSelect.getOptionName());
|
} else {
|
subSelectionDO.setOptionName(String.valueOf(Character.toChars('A' + i)));
|
}
|
subSelectionDO.setContent(subSelect.getLabel());
|
subSelectionDO.setQueId(comActWorkGuideDO.getId());
|
subSelectionDO.setCreateBy(userId);
|
subSelectionDO.setType(subSelect.getType()+"");
|
subSelectionDO.setKey(subSelect.getKey());
|
subSelectionDO.setUrl(subSelect.getUrl());
|
subSelectionList.add(subSelectionDO);
|
}
|
}
|
questnaireSubSelectionService.saveBatch(subSelectionList);
|
});
|
}
|
|
return R.ok();
|
}
|
|
@Override
|
public R editWorkGuide(ComActWorkGuideDTO workGuideDTO, String userId) {
|
if (workGuideDTO.getId() == 0L) {
|
return R.fail("Id有误!");
|
}
|
JinhuiComActWorkGuide workGuideDO = this.baseMapper.selectById(workGuideDTO.getId());
|
if (workGuideDO == null) {
|
return R.fail("Id有误!");
|
}
|
BeanUtils.copyProperties(workGuideDTO, workGuideDO);
|
workGuideDO.setUpdateBy(userId+"");
|
workGuideDO.setUpdateAt(new Date());
|
|
if (workGuideDTO.getMaterials().size() == 0) {// 若编辑材料为null,执行删除操作
|
workGuideMaterialDAO.delete(new LambdaQueryWrapper<JinhuiComActWorkGuideMaterial>()
|
.eq(JinhuiComActWorkGuideMaterial::getWorkGuideId, workGuideDTO.getId()));
|
} else {// 若材料不为空,但是少了数据条数,也要执行删除
|
List<JinhuiComActWorkGuideMaterial> workGuideMaterialDOS =
|
workGuideMaterialDAO.selectList(new LambdaQueryWrapper<JinhuiComActWorkGuideMaterial>()
|
.eq(JinhuiComActWorkGuideMaterial::getWorkGuideId, workGuideDTO.getId()));
|
// 1、筛选vo里面和db里,需要删除的材料数据
|
List<Long> voMaterialIds =
|
workGuideDTO.getMaterials().stream().filter(materialVo -> materialVo.getId() != null)
|
.map(ComActWorkGuideMaterialVO::getId).collect(Collectors.toList());
|
List<Long> deleteMaterialIds = workGuideMaterialDOS.stream()
|
.filter(workGuideMaterialDO -> !voMaterialIds.contains(workGuideMaterialDO.getId()))
|
.map(JinhuiComActWorkGuideMaterial::getId).collect(Collectors.toList());
|
if (deleteMaterialIds.size() != 0) {
|
workGuideMaterialDAO.deleteBatchIds(deleteMaterialIds);
|
}
|
workGuideDTO.getMaterials().forEach(materialsVO -> {
|
if (materialsVO.getId() != null && materialsVO.getId() != 0L) {
|
JinhuiComActWorkGuideMaterial workGuideMaterialDO1 = workGuideMaterialDOS.stream()
|
.filter(workGuideMaterialDO -> workGuideMaterialDO.getId().equals(materialsVO.getId()))
|
.findFirst().orElse(null);
|
if (workGuideMaterialDO1 != null) {// 2、如果db有,执行编辑
|
workGuideMaterialDO1.setMaterialName(materialsVO.getMaterialName());
|
workGuideMaterialDAO.updateById(workGuideMaterialDO1);
|
}
|
} else {// 3、如果db没有,执行新增
|
JinhuiComActWorkGuideMaterial newWorkGuideMaterialDO = new JinhuiComActWorkGuideMaterial();
|
newWorkGuideMaterialDO.setMaterialName(materialsVO.getMaterialName());
|
newWorkGuideMaterialDO.setWorkGuideId(workGuideDO.getId());
|
workGuideMaterialDAO.insert(newWorkGuideMaterialDO);
|
}
|
});
|
}
|
|
// 统计该调查问卷填报题目数量
|
int count = 0;
|
List<QuestnaiteSubVO> questnaiteSubVOS = JSON.parseArray(workGuideDO.getJsonObject(), QuestnaiteSubVO.class);
|
if (questnaiteSubVOS!=null && questnaiteSubVOS.size()>0 ) {
|
count = questnaiteSubVOS.size();
|
}
|
workGuideDO.setCount(count);
|
workGuideDO.setJsonObject(workGuideDO.getJsonObject());
|
this.baseMapper.updateById(workGuideDO);
|
// 删除原调查问卷题目以及选项,重新进行新增
|
baseMapper.deleteQuesSubAll(workGuideDO.getId());
|
baseMapper.deleteQuesSubAll2(workGuideDO.getId());
|
// 重新新增题目以及题目选项
|
if (questnaiteSubVOS!=null && questnaiteSubVOS.size()>0 ) {
|
questnaiteSubVOS.forEach(sub -> {
|
JinhuiComActQuestnaireSub comActQuestnaireSubDO = new JinhuiComActQuestnaireSub();
|
comActQuestnaireSubDO.setType(sub.getType()+"");
|
comActQuestnaireSubDO.setContent(sub.getLabel());
|
comActQuestnaireSubDO.setSort(sub.getSort()+"");
|
comActQuestnaireSubDO.setKey(sub.getKey());
|
comActQuestnaireSubDO.setQueId(workGuideDO.getId());
|
comActQuestnaireSubDO.setCreateBy(userId);
|
questnaireSubDao.insert(comActQuestnaireSubDO);
|
ArrayList<JinhuiComActQuestnaireSubSelection> subSelectionList = Lists.newArrayList();
|
if (sub.getOptions() != null && !sub.getOptions().isEmpty()) {
|
List<QuestnaiteSubSelectionVO> subOptions = sub.getOptions();
|
for (int i = 0; i < subOptions.size(); i++) {
|
QuestnaiteSubSelectionVO subSelect = subOptions.get(i);
|
JinhuiComActQuestnaireSubSelection subSelectionDO = new JinhuiComActQuestnaireSubSelection();
|
subSelectionDO.setQueSubId(comActQuestnaireSubDO.getId()+"");
|
if (subSelect.getType().equals(1)) {
|
// 添加选项名称
|
subSelectionDO.setOptionName(subSelect.getOptionName());
|
} else {
|
subSelectionDO.setOptionName(String.valueOf(Character.toChars('A' + i)));
|
}
|
subSelectionDO.setKey(subSelect.getKey());
|
subSelectionDO.setContent(subSelect.getLabel());
|
subSelectionDO.setQueId(workGuideDO.getId());
|
subSelectionDO.setCreateBy(userId);
|
subSelectionDO.setType(subSelect.getType()+"");
|
subSelectionList.add(subSelectionDO);
|
}
|
}
|
questnaireSubSelectionService.saveBatch(subSelectionList);
|
});
|
}
|
|
|
|
|
return R.ok();
|
}
|
|
@Override
|
public R detailWorkGuide(String workGuideId, String communityId) {
|
JinhuiComActWorkGuide workGuideDO = this.baseMapper.selectById(workGuideId);
|
if (workGuideDO == null) {
|
return R.fail("Id有误!");
|
}
|
ComActWorkGuideVO vo = new ComActWorkGuideVO();
|
BeanUtils.copyProperties(workGuideDO, vo);
|
|
if(!StringUtils.isEmpty(communityId))
|
{
|
ComActDO comActDO = comActDAO.selectById(communityId);
|
if (comActDO != null) {
|
vo.setAddress(comActDO.getAddress());
|
vo.setPhone(comActDO.getContactsPhone());
|
vo.setLon(comActDO.getLng());
|
vo.setLat(comActDO.getLat());
|
}
|
|
List<JinhuiComActWorkGuideMaterial> workGuideMaterialDOS =
|
workGuideMaterialDAO.selectList(new LambdaQueryWrapper<JinhuiComActWorkGuideMaterial>()
|
.eq(JinhuiComActWorkGuideMaterial::getWorkGuideId, workGuideId));
|
workGuideMaterialDOS.forEach(workGuideMaterialDO -> {
|
ComActWorkGuideMaterialVO workGuideMaterialVO = new ComActWorkGuideMaterialVO();
|
workGuideMaterialVO.setId(workGuideMaterialDO.getId());
|
workGuideMaterialVO.setMaterialName(workGuideMaterialDO.getMaterialName());
|
vo.getMaterials().add(workGuideMaterialVO);
|
});
|
}
|
return R.ok(vo);
|
}
|
|
@Override
|
public R pageWorkGuide(PageActWorkGuideDTO pageActWorkGuideDTO) {
|
Page page = new Page<>();
|
Long pageNum = pageActWorkGuideDTO.getPageNum();
|
Long pageSize = pageActWorkGuideDTO.getPageSize();
|
if (null == pageNum || 0 == pageNum) {
|
pageNum = 1l;
|
}
|
if (null == pageSize || 0 == pageSize) {
|
pageSize = 10l;
|
}
|
page.setSize(pageSize);
|
page.setCurrent(pageNum);
|
IPage<ComActWorkGuideVO> iPage = this.baseMapper.pageWorkGuide(page, pageActWorkGuideDTO);
|
if (!iPage.getRecords().isEmpty()) {
|
iPage.getRecords().forEach(comActWorkGuideVO -> {
|
JinhuiComActWorkGuideClassify comActWorkGuideClassifyDO = comActWorkGuideClassifyDAO.selectById(comActWorkGuideVO.getClassify());
|
if (comActWorkGuideClassifyDO != null) {
|
comActWorkGuideVO.setClassifyName(comActWorkGuideClassifyDO.getClassifyName());
|
}
|
});
|
}
|
return R.ok(iPage);
|
}
|
|
@Override
|
public R delectWorkGuide(String workGuideId) {
|
this.baseMapper.deleteById(workGuideId);
|
workGuideMaterialDAO.delete(new LambdaQueryWrapper<JinhuiComActWorkGuideMaterial>()
|
.eq(JinhuiComActWorkGuideMaterial::getWorkGuideId, workGuideId));
|
return R.ok();
|
}
|
|
/**
|
* 办事指南列表-按分类查询
|
* @param pageActWorkGuideDTO 请求参数
|
* @return 办事指南分类列表
|
*/
|
@Override
|
public R listWorkGuide(PageActWorkGuideDTO pageActWorkGuideDTO){
|
//结果数据集合
|
List<ComActWorkGuideAppletsVO> resultList = new ArrayList<>();
|
|
List<ComActWorkGuideAppletsVO> workGuideClassifyList = comActWorkGuideClassifyDAO.listWorkGuideClassify(pageActWorkGuideDTO.getAreaCode());
|
//通过办事指南分类查询分类下办事指南
|
workGuideClassifyList.forEach(workGuideClassify -> {
|
List<ComActWorkGuideDetailAppletsVO> workGuideList =
|
this.baseMapper.getWorkGuideListByClassifyId(workGuideClassify.getId()+"","10");
|
if(workGuideList != null && workGuideList.size() > 0){
|
workGuideClassify.setGuideDetailList(workGuideList);
|
//分类下办事指南数据大于0加入到结果集中向小程序展示
|
resultList.add(workGuideClassify);
|
}
|
});
|
return R.ok(resultList);
|
}
|
|
/**
|
* 根据办事指南分类id查询办事指南列表
|
* @param classifyId 办事指南分类id
|
* @return 办事指南列表数据
|
*/
|
@Override
|
public R listWorkGuideByClassifyId(String classifyId){
|
return R.ok(this.baseMapper.getWorkGuideListByClassifyId(classifyId,null));
|
}
|
}
|