package com.moral.api.service.impl;
|
|
|
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.util.ObjectUtils;
|
import org.springframework.web.context.request.RequestContextHolder;
|
import org.springframework.web.context.request.ServletRequestAttributes;
|
|
import java.util.ArrayList;
|
import java.util.Arrays;
|
import java.util.Date;
|
import java.util.HashMap;
|
import java.util.LinkedHashMap;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.Objects;
|
import java.util.function.Predicate;
|
|
import javax.servlet.http.HttpServletRequest;
|
|
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONObject;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.fasterxml.jackson.datatype.jsr310.ser.YearSerializer;
|
import com.moral.api.entity.ResponsibilityUnit;
|
import com.moral.api.entity.SysArea;
|
import com.moral.api.mapper.ResponsibilityUnitMapper;
|
import com.moral.api.pojo.dto.responsibilityUnit.ResponsibilityUnitQuery;
|
import com.moral.api.pojo.redisBean.AccountInfoDTO;
|
import com.moral.api.service.ResponsibilityUnitService;
|
import com.moral.api.service.SysAreaService;
|
import com.moral.constant.Constants;
|
import com.moral.util.TokenUtils;
|
|
@Service
|
public class ResponsibilityUnitServiceImpl extends ServiceImpl<ResponsibilityUnitMapper, ResponsibilityUnit> implements ResponsibilityUnitService {
|
|
|
@Autowired
|
private ResponsibilityUnitMapper responsibilityUnitMapper;
|
@Autowired
|
private SysAreaService sysAreaService;
|
|
|
/**
|
* 新增表单
|
* @param responsibilityUnit
|
* @return
|
*/
|
@Override
|
public Integer insert(ResponsibilityUnit responsibilityUnit) {
|
HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
|
String token = request.getHeader("token");
|
AccountInfoDTO accountInfoDTO = (AccountInfoDTO) TokenUtils.getUserInfoByToken(token);
|
QueryWrapper<ResponsibilityUnit> wrapper = new QueryWrapper<>();
|
wrapper.eq("unit_name",responsibilityUnit.getUnitName());
|
|
List<ResponsibilityUnit> units = responsibilityUnitMapper.selectList(wrapper);
|
if (ObjectUtils.isEmpty(units)){
|
responsibilityUnit.setIsDel(Constants.NOT_DELETE);
|
responsibilityUnit.setCreateTime(new Date());
|
responsibilityUnit.setIsInvalid(0);
|
responsibilityUnit.setCreateId(accountInfoDTO.getAccount().getId());
|
responsibilityUnit.setCreateName(accountInfoDTO.getAccount().getUserName());
|
responsibilityUnit.setCreateTime(new Date());
|
responsibilityUnit.setUpdateId(accountInfoDTO.getAccount().getId());
|
responsibilityUnit.setUpdateName(accountInfoDTO.getAccount().getUserName());
|
responsibilityUnit.setUpdateTime(new Date());
|
responsibilityUnit.setValue(JSONArray.toJSONString(responsibilityUnit.getParentCodeList()));
|
responsibilityUnitMapper.insert(responsibilityUnit);
|
return 200;
|
}
|
return -1;
|
}
|
|
/**
|
* 查询表单
|
* @param parameters
|
* @return
|
*/
|
@Override
|
public Map<String, Object> selectUnit(Map<String, Object> parameters) {
|
QueryWrapper<ResponsibilityUnit> wrapper = new QueryWrapper<>();
|
wrapper.eq("is_del",Constants.NOT_DELETE);
|
// wrapper.eq("is_invalid",0);
|
int page = Integer.parseInt(parameters.get("page").toString());
|
int size = Integer.parseInt(parameters.get("size").toString());
|
Object unitId = parameters.get("unitId");
|
// Object parentName1 = parameters.get("parentCode");
|
// Object areaName1 = parameters.get("areaCode");
|
//名称模糊查询
|
if (!ObjectUtils.isEmpty(parameters.get("name"))){
|
wrapper.like("unit_name",parameters.get("name").toString());
|
}
|
/* //上级区域查询
|
if (!ObjectUtils.isEmpty(parentName1)){
|
wrapper.eq("parent_code",Integer.parseInt(parentName1.toString()));
|
}*/
|
//所属区域查询
|
if (!ObjectUtils.isEmpty(unitId)){
|
// List<String> list = Arrays.asList(unitId.toString().split(","));
|
wrapper.eq("unit_id",unitId.toString());
|
}
|
Page<ResponsibilityUnit> pageList = new Page<>(page, size);
|
Page<ResponsibilityUnit> responsibilityUnitPage = responsibilityUnitMapper.selectPage(pageList, wrapper);
|
for (ResponsibilityUnit record : responsibilityUnitPage.getRecords()) {
|
Integer areaCode = record.getAreaCode();
|
SysArea sysArea= sysAreaService.select(areaCode);
|
Integer parentCode = record.getParentCode();
|
SysArea parentArea = sysAreaService.select(parentCode);
|
if (ObjectUtils.isEmpty(sysArea) || ObjectUtils.isEmpty(parentArea)){
|
continue;
|
}
|
record.setAreaName(sysArea.getAreaName());
|
record.setParentName(parentArea.getAreaName());
|
record.setParentCodeList(JSONObject.parseObject(record.getValue(),List.class));
|
}
|
Map<String, Object> result = new LinkedHashMap<>();
|
result.put("total", pageList.getTotal());
|
result.put("totalPage", pageList.getPages());
|
result.put("current", pageList.getCurrent());
|
result.put("pageSize", pageList.getSize());
|
result.put("item", responsibilityUnitPage.getRecords());
|
// responsibilityUnitPage.getOrders()
|
return result;
|
}
|
|
|
/**
|
* 修改表单
|
* @param responsibilityUnit
|
* @return
|
*/
|
@Override
|
public Integer updateUnit(ResponsibilityUnit responsibilityUnit) {
|
QueryWrapper<ResponsibilityUnit> wrapper = new QueryWrapper<>();
|
wrapper.eq("unit_name",responsibilityUnit.getUnitName());
|
wrapper.eq("area_code",responsibilityUnit.getAreaCode());
|
ResponsibilityUnit responsibilityUnit2 = responsibilityUnitMapper.selectOne(wrapper);
|
if (ObjectUtils.isEmpty(responsibilityUnit2)){
|
AccountInfoDTO account = getAccount();
|
responsibilityUnit.setUpdateId(account.getAccount().getId());
|
responsibilityUnit.setUpdateName(account.getAccount().getUserName());
|
responsibilityUnit.setUpdateTime(new Date());
|
responsibilityUnit.setValue(JSONArray.toJSONString(responsibilityUnit.getParentCodeList()));
|
// responsibilityUnit.setParentCodeList(JSONObject.parseObject(responsibilityUnit.getValue(),List.class));
|
responsibilityUnitMapper.updateById(responsibilityUnit);
|
return 200;
|
}
|
return -1;
|
}
|
|
|
/**
|
* 修改状态
|
*
|
*/
|
@Override
|
public void updateState(Integer unitId) {
|
ResponsibilityUnit responsibilityUnit = responsibilityUnitMapper.selectById(unitId);
|
responsibilityUnit.setState(Constants.NOT_DELETE);
|
AccountInfoDTO account = getAccount();
|
responsibilityUnit.setUpdateId(account.getAccount().getId());
|
responsibilityUnit.setUpdateName(account.getAccount().getUserName());
|
responsibilityUnit.setUpdateTime(new Date());
|
responsibilityUnitMapper.updateById(responsibilityUnit);
|
}
|
|
|
/**
|
* 是否作废
|
* @param unitId
|
* @param code
|
*/
|
@Override
|
public void updateInvalid(Integer unitId, String code) {
|
ResponsibilityUnit responsibilityUnit = responsibilityUnitMapper.selectById(unitId);
|
|
responsibilityUnit.setIsInvalid(1);
|
if (!ObjectUtils.isEmpty(code)){
|
responsibilityUnit.setInvalidReason(code);
|
}
|
AccountInfoDTO account = getAccount();
|
responsibilityUnit.setUpdateId(account.getAccount().getId());
|
responsibilityUnit.setUpdateName(account.getAccount().getUserName());
|
responsibilityUnit.setUpdateTime(new Date());
|
responsibilityUnitMapper.updateById(responsibilityUnit);
|
|
}
|
|
@Override
|
public List<ResponsibilityUnitQuery> unitQuery() {
|
List<ResponsibilityUnit> responsibilityUnits = responsibilityUnitMapper.selectList(null);
|
ArrayList<ResponsibilityUnitQuery> sysAreas = new ArrayList<>();
|
for (ResponsibilityUnit responsibilityUnit : responsibilityUnits) {
|
ResponsibilityUnitQuery responsibilityUnitQuery = new ResponsibilityUnitQuery();
|
BeanUtils.copyProperties(responsibilityUnit,responsibilityUnitQuery);
|
sysAreas.add(responsibilityUnitQuery);
|
}
|
Map<Integer, Integer> areaMap1 = new HashMap<>();
|
Map<Integer, ResponsibilityUnitQuery> areaMap = new HashMap<>();
|
for (ResponsibilityUnitQuery responsibilityUnitQuery : sysAreas) {
|
if (responsibilityUnitQuery.getUnitName().equals("市大气办")){
|
areaMap1.put(responsibilityUnitQuery.getAreaCode(), responsibilityUnitQuery.getUnitId());
|
responsibilityUnitQuery.setUnitId(responsibilityUnitQuery.getAreaCode());
|
responsibilityUnitQuery.setUnitName("江苏省——盐城市");
|
}
|
if (responsibilityUnitQuery.getUnitName().equals("海城监控中心")){
|
areaMap1.put(responsibilityUnitQuery.getAreaCode(),responsibilityUnitQuery.getUnitId());
|
responsibilityUnitQuery.setUnitId(responsibilityUnitQuery.getAreaCode());
|
responsibilityUnitQuery.setUnitName("辽宁省——海城市");
|
}
|
areaMap.put(responsibilityUnitQuery.getAreaCode(), responsibilityUnitQuery);
|
responsibilityUnitQuery.setChildren(new ArrayList<>());//初始化children集合
|
}
|
//遍历所有城市,判断是否有父城市,如果有则添加到父城市中。
|
for (int i = 0; i < sysAreas.size(); i++) {
|
ResponsibilityUnitQuery responsibilityUnitQuery = sysAreas.get(i);
|
Integer parentCode = responsibilityUnitQuery.getParentCode();
|
ResponsibilityUnitQuery parentArea = areaMap.get(parentCode);
|
|
if (responsibilityUnitQuery.getAreaCode().equals(210381)|| responsibilityUnitQuery.getAreaCode().equals(320900)){
|
Integer integer = areaMap1.get(responsibilityUnitQuery.getAreaCode());
|
ResponsibilityUnitQuery rsUnitQuery = new ResponsibilityUnitQuery();
|
rsUnitQuery.setUnitId(integer);
|
rsUnitQuery.setParentCode(responsibilityUnitQuery.getParentCode());
|
if (responsibilityUnitQuery.getAreaCode().equals(210381)){
|
rsUnitQuery.setUnitName("海城监控中心");
|
}else {
|
rsUnitQuery.setUnitName("市大气办");
|
}
|
rsUnitQuery.setAreaCode(responsibilityUnitQuery.getAreaCode());
|
rsUnitQuery.setChildren(new ArrayList<>());
|
List<ResponsibilityUnitQuery> children = responsibilityUnitQuery.getChildren();
|
children.add(rsUnitQuery);
|
responsibilityUnitQuery.setChildren(children);
|
}
|
if (ObjectUtils.isEmpty(parentArea)){
|
continue;
|
}
|
List<ResponsibilityUnitQuery> children = parentArea.getChildren();
|
children.add(responsibilityUnitQuery);
|
sysAreas.remove(responsibilityUnitQuery);
|
i--;
|
}
|
return sysAreas;
|
|
}
|
|
|
/**
|
* 获取用户信息
|
* @return
|
*/
|
private AccountInfoDTO getAccount(){
|
HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
|
String token = request.getHeader("token");
|
AccountInfoDTO accountInfoDTO = (AccountInfoDTO) TokenUtils.getUserInfoByToken(token);
|
return accountInfoDTO;
|
}
|
}
|