package com.moral.api.service.impl; 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.Date; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Objects; 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.moral.api.entity.ResponsibilityUnit; import com.moral.api.entity.SysArea; import com.moral.api.mapper.ResponsibilityUnitMapper; 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 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 wrapper = new QueryWrapper<>(); wrapper.eq("unit_name",responsibilityUnit.getUnitName()); List 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 selectUnit(Map parameters) { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("is_del",Constants.NOT_DELETE); int page = Integer.parseInt(parameters.get("page").toString()); int size = Integer.parseInt(parameters.get("size").toString()); 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(areaName1)){ wrapper.eq("parent_code",Integer.parseInt(areaName1.toString())); } Page pageList = new Page<>(page, size); Page 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 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 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); } /** * 获取用户信息 * @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; } }