|
@@ -0,0 +1,197 @@
|
|
|
+package com.management.platform.controller;
|
|
|
+
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
+import com.management.platform.entity.ProviderInfo;
|
|
|
+import com.management.platform.entity.Project;
|
|
|
+import com.management.platform.entity.User;
|
|
|
+import com.management.platform.mapper.ProviderInfoMapper;
|
|
|
+import com.management.platform.mapper.ProjectMapper;
|
|
|
+import com.management.platform.mapper.ProviderInfoMapper;
|
|
|
+import com.management.platform.mapper.UserMapper;
|
|
|
+import com.management.platform.service.ProviderInfoService;
|
|
|
+import com.management.platform.service.ProviderInfoService;
|
|
|
+import com.management.platform.util.HttpRespMsg;
|
|
|
+import org.springframework.util.StringUtils;
|
|
|
+import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
+
|
|
|
+import org.springframework.web.bind.annotation.RequestParam;
|
|
|
+import org.springframework.web.bind.annotation.RestController;
|
|
|
+import org.springframework.web.multipart.MultipartFile;
|
|
|
+
|
|
|
+import javax.annotation.Resource;
|
|
|
+import javax.servlet.http.HttpServletRequest;
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+/**
|
|
|
+ * <p>
|
|
|
+ * 前端控制器
|
|
|
+ * </p>
|
|
|
+ *
|
|
|
+ * @author Seyason
|
|
|
+ * @since 2022-07-07
|
|
|
+ */
|
|
|
+@RestController
|
|
|
+@RequestMapping("/provider-info")
|
|
|
+public class ProviderInfoController {
|
|
|
+ @Resource
|
|
|
+ private HttpServletRequest request;
|
|
|
+ @Resource
|
|
|
+ UserMapper userMapper;
|
|
|
+ @Resource
|
|
|
+ ProjectMapper projectMapper;
|
|
|
+ @Resource
|
|
|
+ ProviderInfoMapper providerInfoMapper;
|
|
|
+ @Resource
|
|
|
+ ProviderInfoService providerInfoService;
|
|
|
+
|
|
|
+ @RequestMapping("/addOrMod")
|
|
|
+ public HttpRespMsg addOrMod(ProviderInfo info) {
|
|
|
+ HttpRespMsg msg = new HttpRespMsg();
|
|
|
+ String token = request.getHeader("TOKEN");
|
|
|
+ User user = userMapper.selectById(token);
|
|
|
+ List<ProviderInfo> providerInfoMapperAll = providerInfoMapper.selectList(new QueryWrapper<ProviderInfo>().select("id, provider_name,provider_code").eq("company_id", user.getCompanyId()).orderByDesc("id"));
|
|
|
+ List<String> nameList=new ArrayList<>();
|
|
|
+ List<String> codeList=new ArrayList<>();
|
|
|
+ providerInfoMapperAll.forEach(cu->{
|
|
|
+ nameList.add(cu.getProviderName());
|
|
|
+ if(cu.getProviderCode()!=null){
|
|
|
+ codeList.add(cu.getProviderCode());
|
|
|
+ }
|
|
|
+ });
|
|
|
+ if (info.getId() == null) {
|
|
|
+ if(nameList.contains(info.getProviderName())){
|
|
|
+ msg.setError("客户名称已存在");
|
|
|
+ return msg;
|
|
|
+ }
|
|
|
+ if(codeList.contains(info.getProviderCode())){
|
|
|
+ msg.setError("客户编号已存在");
|
|
|
+ return msg;
|
|
|
+ }
|
|
|
+ info.setCompanyId(user.getCompanyId());
|
|
|
+ providerInfoMapper.insert(info);
|
|
|
+ } else {
|
|
|
+ ProviderInfo customerInfo = providerInfoMapper.selectById(info.getId());
|
|
|
+ nameList.remove(customerInfo.getProviderName());
|
|
|
+ codeList.remove(customerInfo.getProviderCode());
|
|
|
+ if(nameList.contains(info.getProviderName())){
|
|
|
+ msg.setError("客户名称已存在");
|
|
|
+ return msg;
|
|
|
+ }
|
|
|
+ if(codeList.contains(info.getProviderCode())){
|
|
|
+ msg.setError("客户编号已存在");
|
|
|
+ return msg;
|
|
|
+ }
|
|
|
+ info.setCompanyId(user.getCompanyId());
|
|
|
+ providerInfoMapper.updateById(info);
|
|
|
+ //更新项目表中的客户名称
|
|
|
+ Project p = new Project();
|
|
|
+ p.setCustomerName(info.getProviderName());
|
|
|
+ projectMapper.update(p, new QueryWrapper<Project>().eq("customer_id", info.getId()));
|
|
|
+ }
|
|
|
+ return msg;
|
|
|
+ }
|
|
|
+
|
|
|
+ @RequestMapping("/delete")
|
|
|
+ public HttpRespMsg delete(Integer id) {
|
|
|
+ HttpRespMsg msg = new HttpRespMsg();
|
|
|
+ String token = request.getHeader("TOKEN");
|
|
|
+ User user = userMapper.selectById(token);
|
|
|
+ ProviderInfo providerInfo = providerInfoMapper.selectById(id);
|
|
|
+ List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().select("id, project_name, provider_ids, provider_names").like("provider_ids", id+"").like("provider_names", providerInfo.getProviderName()));
|
|
|
+ if (projectList.size() > 0) {
|
|
|
+ String containProjectNames = projectList.stream().filter(p->{
|
|
|
+ String[] split = p.getProviderIds().split(",");
|
|
|
+ boolean containId = Arrays.stream(split).anyMatch(s->s.equals(id+""));
|
|
|
+ return containId;
|
|
|
+ }).map(Project::getProjectName).collect(Collectors.joining(","));
|
|
|
+ if (!StringUtils.isEmpty(containProjectNames)) {
|
|
|
+ msg.setError("无法删除,以下项目已关联此供应商:"+containProjectNames);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ int r = providerInfoMapper.delete(new QueryWrapper<ProviderInfo>().eq("id", id).eq("company_id", user.getCompanyId()));
|
|
|
+ if (r <= 0) {
|
|
|
+ msg.setError("无权删除");
|
|
|
+ }
|
|
|
+ return msg;
|
|
|
+ }
|
|
|
+ @RequestMapping("/batchDelete")
|
|
|
+ public HttpRespMsg batchDelete(String batchIds) {
|
|
|
+ HttpRespMsg msg = new HttpRespMsg();
|
|
|
+ if(!StringUtils.isEmpty(batchIds)){
|
|
|
+ String[] split = batchIds.split(",");
|
|
|
+ List<String> list = Arrays.asList(split);
|
|
|
+ String token = request.getHeader("TOKEN");
|
|
|
+ User user = userMapper.selectById(token);
|
|
|
+
|
|
|
+ List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().select("id, project_name, provider_ids, provider_names").eq("company_id", user.getCompanyId()));
|
|
|
+ if(projectList.size()>0){
|
|
|
+ String str = null;
|
|
|
+ for (String providerId: list) {
|
|
|
+ String names = projectList.stream().filter(p->{
|
|
|
+ String[] hasIds = p.getProviderIds().split(",");
|
|
|
+ boolean containId = Arrays.stream(hasIds).anyMatch(s->s.equals(providerId+""));
|
|
|
+ return containId;
|
|
|
+ }).map(Project::getProjectName).collect(Collectors.joining(","));
|
|
|
+ if (!StringUtils.isEmpty(names)) {
|
|
|
+ str = providerInfoMapper.selectById(Integer.valueOf(providerId)).getProviderName()+"已被以下项目关联:"+ names;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (str != null) {
|
|
|
+ msg.setError(str);
|
|
|
+ return msg;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ int r = providerInfoMapper.delete(new QueryWrapper<ProviderInfo>().eq("id", list.get(0)).eq("company_id", user.getCompanyId()));
|
|
|
+ if (r <= 0) {
|
|
|
+ msg.setError("无权删除");
|
|
|
+ return msg;
|
|
|
+ }
|
|
|
+ providerInfoMapper.deleteBatchIds(list);
|
|
|
+ }
|
|
|
+ return msg;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @RequestMapping("/list")
|
|
|
+ public HttpRespMsg list(@RequestParam Integer pageIndex, @RequestParam Integer pageSize, String keyword) {
|
|
|
+ HttpRespMsg msg = new HttpRespMsg();
|
|
|
+ String token = request.getHeader("TOKEN");
|
|
|
+ User user = userMapper.selectById(token);
|
|
|
+ QueryWrapper<ProviderInfo> queryWrapper = new QueryWrapper<ProviderInfo>().eq("company_id", user.getCompanyId()).orderByDesc("id");
|
|
|
+ if (!StringUtils.isEmpty(keyword)) {
|
|
|
+ queryWrapper.like("provider_name", keyword);
|
|
|
+ }
|
|
|
+ IPage<ProviderInfo> projectIPage = providerInfoMapper.selectPage(new Page<>(pageIndex, pageSize),
|
|
|
+ queryWrapper);
|
|
|
+ List<ProviderInfo> list = projectIPage.getRecords();
|
|
|
+ Long total = projectIPage.getTotal();
|
|
|
+ Map<String, Object> map = new HashMap<>();
|
|
|
+ map.put("records", list);
|
|
|
+ map.put("total", total);
|
|
|
+ msg.data = map;
|
|
|
+ return msg;
|
|
|
+ }
|
|
|
+
|
|
|
+ @RequestMapping("/getAll")
|
|
|
+ public HttpRespMsg getAll() {
|
|
|
+ HttpRespMsg msg = new HttpRespMsg();
|
|
|
+ String token = request.getHeader("TOKEN");
|
|
|
+ User user = userMapper.selectById(token);
|
|
|
+ List<ProviderInfo> all = providerInfoMapper.selectList(new QueryWrapper<ProviderInfo>().select("id, provider_name,provider_code").eq("company_id", user.getCompanyId()).orderByDesc("id"));
|
|
|
+ msg.data = all;
|
|
|
+ return msg;
|
|
|
+ }
|
|
|
+
|
|
|
+ @RequestMapping("/importData")
|
|
|
+ public HttpRespMsg importData(HttpServletRequest request, MultipartFile file){
|
|
|
+ return providerInfoService.importData(request,file);
|
|
|
+ }
|
|
|
+
|
|
|
+}
|
|
|
+
|