Commit e06ec2e9 authored by yht15023815643's avatar yht15023815643

Merge branch 'dev20230707' of http://192.168.60.201/root/dsk-operate-sys into dev20230707

parents e47f5a90 8414a28f
...@@ -2,7 +2,7 @@ package com.dsk.web.controller.business; ...@@ -2,7 +2,7 @@ package com.dsk.web.controller.business;
import com.dsk.common.core.controller.BaseController; import com.dsk.common.core.controller.BaseController;
import com.dsk.common.core.domain.AjaxResult; import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.core.domain.entity.BusinessBacklog; import com.dsk.system.domain.business.BusinessBacklog;
import com.dsk.common.core.page.TableDataInfo; import com.dsk.common.core.page.TableDataInfo;
import com.dsk.system.service.IBusinessBacklogService; import com.dsk.system.service.IBusinessBacklogService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
...@@ -11,8 +11,6 @@ import lombok.extern.slf4j.Slf4j; ...@@ -11,8 +11,6 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List;
/** /**
* 项目工作待办Controller * 项目工作待办Controller
* *
...@@ -36,8 +34,7 @@ public class BusinessBacklogController extends BaseController ...@@ -36,8 +34,7 @@ public class BusinessBacklogController extends BaseController
public TableDataInfo list(BusinessBacklog businessBacklog) public TableDataInfo list(BusinessBacklog businessBacklog)
{ {
startPage(); startPage();
List<BusinessBacklog> list = businessBacklogService.selectBusinessBacklogList(businessBacklog); return getDataTable(businessBacklogService.selectBusinessBacklogList(businessBacklog));
return getDataTable(list);
} }
/** /**
...@@ -63,6 +60,15 @@ public class BusinessBacklogController extends BaseController ...@@ -63,6 +60,15 @@ public class BusinessBacklogController extends BaseController
return toAjax(businessBacklogService.updateBusinessBacklog(businessBacklog)); return toAjax(businessBacklogService.updateBusinessBacklog(businessBacklog));
} }
/**
* 获取项目工作代办逾期数量
*/
@GetMapping("/overdue/count/{businessId}")
public AjaxResult overdueCount(@PathVariable Integer businessId)
{
return AjaxResult.success(businessBacklogService.overdueCount(businessId));
}
// /** // /**
// * 导出项目工作待办列表 // * 导出项目工作待办列表
// */ // */
......
package com.dsk.web.controller.customer;
import com.dsk.common.annotation.RepeatSubmit;
import com.dsk.common.core.controller.BaseController;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.system.domain.customer.ContactInfo;
import com.dsk.system.domain.customer.dto.ContactInfoSearchDto;
import com.dsk.system.service.IContactInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
* 联系人(ContactInfo)表控制层
*
* @author makejava
* @since 2023-07-25 17:18:00
*/
@RestController
@RequestMapping("/contact/info")
public class ContactInfoController extends BaseController {
/**
* 服务对象
*/
@Autowired
private IContactInfoService baseService;
/**
* 联系人列表
*/
// @PreAuthorize("@ss.hasPermi('contact:list')")
@GetMapping("/list")
public TableDataInfo selectPageList(ContactInfoSearchDto dto){
startPage();
return getDataTable(baseService.selectList(dto));
}
/**
* 联系人详情
*/
// @PreAuthorize("@ss.hasPermi('contact:info')")
@GetMapping("/{id}")
public AjaxResult info(@PathVariable Long id){
return AjaxResult.success(baseService.selectById(id));
}
/**
* 添加用户联系人
*/
// @PreAuthorize("@ss.hasPermi('contact:add')")
@PostMapping()
@RepeatSubmit()
public AjaxResult add(@RequestBody ContactInfo baen){
return AjaxResult.success(baseService.insert(baen));
}
/**
* 编辑用户联系人
*/
// @PreAuthorize("@ss.hasPermi('contact:edit')")
@PutMapping()
@RepeatSubmit()
public AjaxResult edit(@RequestBody ContactInfo baen){
return AjaxResult.success(baseService.update(baen));
}
/**
* 删除用户联系人
*/
// @PreAuthorize("@ss.hasPermi('contact:del')")
@DeleteMapping("/{id}")
@RepeatSubmit()
public AjaxResult del(@PathVariable("id") Long id){
return AjaxResult.success(baseService.deleteById(id));
}
}
...@@ -14,8 +14,8 @@ import com.dsk.common.utils.poi.ExcelUtil; ...@@ -14,8 +14,8 @@ import com.dsk.common.utils.poi.ExcelUtil;
import com.dsk.system.domain.customer.Customer; import com.dsk.system.domain.customer.Customer;
import com.dsk.system.domain.customer.dto.CustomerBusinessSearchDto; import com.dsk.system.domain.customer.dto.CustomerBusinessSearchDto;
import com.dsk.system.domain.customer.dto.CustomerSearchDto; import com.dsk.system.domain.customer.dto.CustomerSearchDto;
import com.dsk.system.searchService.BusinessOpportunityRadarService;
import com.dsk.system.service.ICustomerService; import com.dsk.system.service.ICustomerService;
import com.dsk.web.controller.search.service.BusinessOpportunityRadarService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
...@@ -39,8 +39,8 @@ public class CustomerController extends BaseController { ...@@ -39,8 +39,8 @@ public class CustomerController extends BaseController {
@Autowired @Autowired
private ICustomerService baseService; private ICustomerService baseService;
@Autowired // @Autowired
private BusinessOpportunityRadarService opportunityRadarService; // private BusinessOpportunityRadarService opportunityRadarService;
/** /**
* 查询客户列表 * 查询客户列表
...@@ -68,7 +68,6 @@ public class CustomerController extends BaseController { ...@@ -68,7 +68,6 @@ public class CustomerController extends BaseController {
@PostMapping() @PostMapping()
@RepeatSubmit @RepeatSubmit
public AjaxResult add(@RequestBody Customer customer) { public AjaxResult add(@RequestBody Customer customer) {
dealWithcustomerData(customer);
return toAjax(baseService.add(customer)); return toAjax(baseService.add(customer));
} }
...@@ -80,7 +79,6 @@ public class CustomerController extends BaseController { ...@@ -80,7 +79,6 @@ public class CustomerController extends BaseController {
@RepeatSubmit @RepeatSubmit
public AjaxResult claim(@RequestBody Customer customer) { public AjaxResult claim(@RequestBody Customer customer) {
if (ObjectUtils.isEmpty(customer.getUipId())) throw new BeanException("城投uipId不能为空"); if (ObjectUtils.isEmpty(customer.getUipId())) throw new BeanException("城投uipId不能为空");
dealWithcustomerData(customer);
boolean add = baseService.add(customer); boolean add = baseService.add(customer);
if (add) { if (add) {
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
...@@ -90,43 +88,6 @@ public class CustomerController extends BaseController { ...@@ -90,43 +88,6 @@ public class CustomerController extends BaseController {
return AjaxResult.error(); return AjaxResult.error();
} }
private void dealWithcustomerData(Customer customer) {
if (ObjectUtils.isEmpty(customer.getCompanyName())) throw new BeanException("企业名称不能为空");
if (ObjectUtils.isEmpty(customer.getCompanyId())) {
try {
Map<String, Object> map = opportunityRadarService.enterpriseByName(customer.getCompanyName());
if (!ObjectUtils.isEmpty(map.get("data"))) {
customer.setCompanyId(MapUtil.getInt(BeanUtil.beanToMap(map.get("data")), "jskEid"));
if (ObjectUtils.isEmpty(customer.getLegalPerson())) {
customer.setLegalPerson(MapUtil.getStr(map, "legalPerson"));
}
if (ObjectUtils.isEmpty(customer.getRegisterCapital())) {
customer.setRegisterCapital(MapUtil.getStr(map, "registeredCapitalStr"));
}
if (ObjectUtils.isEmpty(customer.getProvinceId())) {
customer.setProvinceId(MapUtil.getInt(map, "provinceId"));
}
if (ObjectUtils.isEmpty(customer.getCityId())) {
customer.setCityId(MapUtil.getInt(map, "cityId"));
}
if (ObjectUtils.isEmpty(customer.getDistrictId())) {
customer.setDistrictId(MapUtil.getInt(map, "countyId"));
}
if (ObjectUtils.isEmpty(customer.getRegisterAddress())) {
customer.setRegisterAddress(MapUtil.getStr(map, "domicile"));
}
if (ObjectUtils.isEmpty(customer.getCreditCode())) {
customer.setCreditCode(MapUtil.getStr(map, "creditCode"));
}
}
} catch (Exception e) {
logger.debug("获取企业id错误!error:{}", e.getMessage());
}
}
}
/** /**
* 编辑客户 * 编辑客户
*/ */
...@@ -167,21 +128,21 @@ public class CustomerController extends BaseController { ...@@ -167,21 +128,21 @@ public class CustomerController extends BaseController {
continue; continue;
} }
try { try {
Map<String, Object> map = opportunityRadarService.enterpriseByName(customer.getCompanyName()); // Map<String, Object> map = opportunityRadarService.enterpriseByName(customer.getCompanyName());
if (ObjectUtils.isEmpty(map)) { // if (ObjectUtils.isEmpty(map)) {
throw new HttpException("远程调用匹配接口失败!"); // throw new HttpException("远程调用匹配接口失败!");
} // }
Map<String, Object> obj = BeanUtil.beanToMap(map.get("data")); // Map<String, Object> obj = BeanUtil.beanToMap(map.get("data"));
if (!ObjectUtils.isEmpty(obj)) { // if (!ObjectUtils.isEmpty(obj)) {
customer.setCompanyId(MapUtil.getInt(obj, "jskEid")); // customer.setCompanyId(MapUtil.getInt(obj, "jskEid"));
customer.setLegalPerson(MapUtil.getStr(obj, "legalPerson")); // customer.setLegalPerson(MapUtil.getStr(obj, "legalPerson"));
customer.setRegisterCapital(MapUtil.getStr(obj, "registeredCapitalStr")); // customer.setRegisterCapital(MapUtil.getStr(obj, "registeredCapitalStr"));
customer.setProvinceId(MapUtil.getInt(obj, "provinceId")); // customer.setProvinceId(MapUtil.getInt(obj, "provinceId"));
customer.setCityId(MapUtil.getInt(obj, "cityId")); // customer.setCityId(MapUtil.getInt(obj, "cityId"));
customer.setDistrictId(MapUtil.getInt(obj, "countyId")); // customer.setDistrictId(MapUtil.getInt(obj, "countyId"));
customer.setRegisterAddress(MapUtil.getStr(obj, "domicile")); // customer.setRegisterAddress(MapUtil.getStr(obj, "domicile"));
customer.setCreditCode(MapUtil.getStr(obj, "creditCode")); // customer.setCreditCode(MapUtil.getStr(obj, "creditCode"));
} // }
baseService.add(customer); baseService.add(customer);
successCount++; successCount++;
} catch (Exception e) { } catch (Exception e) {
......
...@@ -3,9 +3,7 @@ package com.dsk.web.controller.search.controller; ...@@ -3,9 +3,7 @@ package com.dsk.web.controller.search.controller;
import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONObject;
import com.dsk.common.core.domain.AjaxResult; import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.dtos.ComposeQueryDto; import com.dsk.common.dtos.ComposeQueryDto;
import com.dsk.common.dtos.Page; import com.dsk.system.searchService.BusinessOpportunityRadarService;
import com.dsk.web.controller.search.service.BusinessOpportunityRadarService;
import com.dsk.web.controller.search.service.MarketAnalysisService;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
......
...@@ -4,7 +4,7 @@ import cn.hutool.json.JSONUtil; ...@@ -4,7 +4,7 @@ import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONObject;
import com.dsk.common.core.domain.AjaxResult; import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.dtos.ComposeQueryDto; import com.dsk.common.dtos.ComposeQueryDto;
import com.dsk.web.controller.search.service.BusinessOpportunityRadarService; import com.dsk.system.searchService.BusinessOpportunityRadarService;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
......
...@@ -4,8 +4,7 @@ import com.alibaba.fastjson2.JSONObject; ...@@ -4,8 +4,7 @@ import com.alibaba.fastjson2.JSONObject;
import com.dsk.common.core.controller.BaseController; import com.dsk.common.core.controller.BaseController;
import com.dsk.common.core.domain.AjaxResult; import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.core.page.TableDataInfo; import com.dsk.common.core.page.TableDataInfo;
import com.dsk.common.dtos.ComposeQueryDto; import com.dsk.system.searchService.MarketAnalysisService;
import com.dsk.web.controller.search.service.MarketAnalysisService;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
......
package com.dsk.web.controller.search.service; //package com.dsk.web.controller.search.service;
//
import com.alibaba.fastjson2.JSONObject; //import com.alibaba.fastjson2.JSONObject;
import com.dsk.common.core.domain.AjaxResult; //import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.dtos.ComposeQueryDto; //import com.dsk.common.dtos.ComposeQueryDto;
//
/** ///**
* @Author liujie // * @Author liujie
* @ClassName MarketAnalysisService // * @ClassName MarketAnalysisService
* @Date 2023/5/15 16:39 // * @Date 2023/5/15 16:39
**/ // **/
public interface BusinessOpportunityRadarService { //public interface BusinessOpportunityRadarService {
//
//
AjaxResult jskBidNewsPage(JSONObject object); // AjaxResult jskBidNewsPage(JSONObject object);
//
AjaxResult jskBidTenderPage(JSONObject object); // AjaxResult jskBidTenderPage(JSONObject object);
//
AjaxResult jskBidPage(JSONObject object); // AjaxResult jskBidPage(JSONObject object);
//
AjaxResult landMarketPage( JSONObject object); // AjaxResult landMarketPage( JSONObject object);
//
AjaxResult establishmentPage(JSONObject object); // AjaxResult establishmentPage(JSONObject object);
//
AjaxResult enterpriseIndex(JSONObject object); // AjaxResult enterpriseIndex(JSONObject object);
//
AjaxResult enterpriseByName(String keyword); // AjaxResult enterpriseByName(String keyword);
//
AjaxResult enterprisePage(JSONObject object); // AjaxResult enterprisePage(JSONObject object);
//
AjaxResult bondProjectPage( JSONObject object); // AjaxResult bondProjectPage( JSONObject object);
//
AjaxResult jskBidPlanPage( JSONObject object); // AjaxResult jskBidPlanPage( JSONObject object);
//
AjaxResult getCapitalSourceSelect(); // AjaxResult getCapitalSourceSelect();
//
AjaxResult keywordList(); // AjaxResult keywordList();
//
AjaxResult bidSourceList( JSONObject object); // AjaxResult bidSourceList( JSONObject object);
//
} //}
package com.dsk.web.controller.search.service; //package com.dsk.web.controller.search.service;
//
import com.alibaba.fastjson2.JSONObject; //import com.alibaba.fastjson2.JSONObject;
import com.dsk.common.core.domain.AjaxResult; //import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.dtos.ComposeQueryDto; //import com.dsk.common.dtos.ComposeQueryDto;
//
/** ///**
* @Author liujie // * @Author liujie
* @ClassName MarketAnalysisService // * @ClassName MarketAnalysisService
* @Date 2023/5/15 16:39 // * @Date 2023/5/15 16:39
**/ // **/
public interface MarketAnalysisService { //public interface MarketAnalysisService {
//
AjaxResult areaGroupByProvince(); // AjaxResult areaGroupByProvince();
//
AjaxResult certGroupByMajorAndLevel(); // AjaxResult certGroupByMajorAndLevel();
//
AjaxResult certGroupByMajorProvinceLevel(); // AjaxResult certGroupByMajorProvinceLevel();
//
AjaxResult countGroupByProvince(JSONObject object); // AjaxResult countGroupByProvince(JSONObject object);
//
AjaxResult countGroupByMonth(JSONObject object); // AjaxResult countGroupByMonth(JSONObject object);
//
AjaxResult bidMoneyGroupByProjectType(JSONObject object); // AjaxResult bidMoneyGroupByProjectType(JSONObject object);
//
AjaxResult bidGroupCountByProjectType(JSONObject object); // AjaxResult bidGroupCountByProjectType(JSONObject object);
} //}
package com.dsk.web.controller.search.service.impl; //package com.dsk.web.controller.search.service.impl;
//
import cn.hutool.core.bean.BeanUtil; //import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson2.JSONObject; //import com.alibaba.fastjson2.JSONObject;
import com.dsk.common.core.domain.AjaxResult; //import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.dtos.ComposeQueryDto; //import com.dsk.common.dtos.ComposeQueryDto;
import com.dsk.common.utils.DskOpenApiUtil; //import com.dsk.common.utils.DskOpenApiUtil;
import com.dsk.web.controller.search.service.BusinessOpportunityRadarService; //import com.dsk.web.controller.search.service.BusinessOpportunityRadarService;
import com.dsk.web.controller.search.service.MarketAnalysisService; //import com.dsk.web.controller.search.service.MarketAnalysisService;
import org.springframework.beans.factory.annotation.Autowired; //import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; //import org.springframework.stereotype.Service;
//
import java.util.HashMap; //import java.util.HashMap;
import java.util.Map; //import java.util.Map;
//
/** ///**
* @Author liujie // * @Author liujie
* @ClassName MarketAnalysisServiceImpl // * @ClassName MarketAnalysisServiceImpl
* @Date 2023/5/15 16:40 // * @Date 2023/5/15 16:40
**/ // **/
@Service //@Service
public class BusinessOpportunityRadarServiceImpl implements BusinessOpportunityRadarService { //public class BusinessOpportunityRadarServiceImpl implements BusinessOpportunityRadarService {
//
@Autowired // @Autowired
private DskOpenApiUtil dskOpenApiUtil; // private DskOpenApiUtil dskOpenApiUtil;
//
//
@Override // @Override
public AjaxResult jskBidNewsPage(JSONObject object) { // public AjaxResult jskBidNewsPage(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/jskBid/news/page", object); // Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/jskBid/news/page", object);
return BeanUtil.toBean(map, AjaxResult.class); // return BeanUtil.toBean(map, AjaxResult.class);
} // }
//
//
@Override // @Override
public AjaxResult jskBidTenderPage(JSONObject object) { // public AjaxResult jskBidTenderPage(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/jskBidTender/page", object); // Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/jskBidTender/page", object);
return BeanUtil.toBean(map, AjaxResult.class); // return BeanUtil.toBean(map, AjaxResult.class);
} // }
//
@Override // @Override
public AjaxResult establishmentPage(JSONObject object) { // public AjaxResult establishmentPage(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/establishment/page", object); // Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/establishment/page", object);
return BeanUtil.toBean(map, AjaxResult.class); // return BeanUtil.toBean(map, AjaxResult.class);
} // }
//
@Override // @Override
public AjaxResult jskBidPage(JSONObject object) { // public AjaxResult jskBidPage(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/jskBid/page",object); // Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/jskBid/page",object);
return BeanUtil.toBean(map, AjaxResult.class); // return BeanUtil.toBean(map, AjaxResult.class);
} // }
//
@Override // @Override
public AjaxResult landMarketPage(JSONObject object) { // public AjaxResult landMarketPage(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/landMarket/page", object); // Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/landMarket/page", object);
return BeanUtil.toBean(map, AjaxResult.class); // return BeanUtil.toBean(map, AjaxResult.class);
} // }
//
@Override // @Override
public AjaxResult enterpriseIndex(JSONObject object) { // public AjaxResult enterpriseIndex(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/enterprice/index", object); // Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/enterprice/index", object);
return BeanUtil.toBean(map, AjaxResult.class); // return BeanUtil.toBean(map, AjaxResult.class);
} // }
//
@Override // @Override
public AjaxResult enterprisePage(JSONObject object) { // public AjaxResult enterprisePage(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/enterprice/page",object); // Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/enterprice/page",object);
return BeanUtil.toBean(map, AjaxResult.class); // return BeanUtil.toBean(map, AjaxResult.class);
} // }
//
//
@Override // @Override
public AjaxResult enterpriseByName(String keyword){ // public AjaxResult enterpriseByName(String keyword){
Map<String,Object> params = new HashMap<>(); // Map<String,Object> params = new HashMap<>();
params.put("keyword",keyword); // params.put("keyword",keyword);
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/enterprice/findByName", params); // Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/enterprice/findByName", params);
return BeanUtil.toBean(map, AjaxResult.class); // return BeanUtil.toBean(map, AjaxResult.class);
} // }
//
@Override // @Override
public AjaxResult bondProjectPage(JSONObject object) { // public AjaxResult bondProjectPage(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/bondProject/page", object); // Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/bondProject/page", object);
return BeanUtil.toBean(map, AjaxResult.class); // return BeanUtil.toBean(map, AjaxResult.class);
} // }
//
@Override // @Override
public AjaxResult jskBidPlanPage(JSONObject object) { // public AjaxResult jskBidPlanPage(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/jskBidPlan/page",object); // Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/jskBidPlan/page",object);
return BeanUtil.toBean(map, AjaxResult.class); // return BeanUtil.toBean(map, AjaxResult.class);
} // }
//
@Override // @Override
public AjaxResult getCapitalSourceSelect() { // public AjaxResult getCapitalSourceSelect() {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/jskBidPlan/getCapitalSourceSelect", null); // Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/jskBidPlan/getCapitalSourceSelect", null);
return BeanUtil.toBean(map, AjaxResult.class); // return BeanUtil.toBean(map, AjaxResult.class);
} // }
//
@Override // @Override
public AjaxResult keywordList() { // public AjaxResult keywordList() {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/project/keywordList", null); // Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/project/keywordList", null);
return BeanUtil.toBean(map, AjaxResult.class); // return BeanUtil.toBean(map, AjaxResult.class);
} // }
//
@Override // @Override
public AjaxResult bidSourceList(JSONObject object) { // public AjaxResult bidSourceList(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/jskBid/source",object); // Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/jskBid/source",object);
return BeanUtil.toBean(map, AjaxResult.class); // return BeanUtil.toBean(map, AjaxResult.class);
} // }
} //}
package com.dsk.web.controller.search.service.impl; //package com.dsk.web.controller.search.service.impl;
//
import cn.hutool.core.bean.BeanUtil; //import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson2.JSONObject; //import com.alibaba.fastjson2.JSONObject;
import com.dsk.common.core.domain.AjaxResult; //import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.core.domain.R; //import com.dsk.common.core.domain.R;
import com.dsk.common.dtos.ComposeQueryDto; //import com.dsk.common.dtos.ComposeQueryDto;
import com.dsk.common.utils.DskOpenApiUtil; //import com.dsk.common.utils.DskOpenApiUtil;
import com.dsk.common.utils.http.HttpUtils; //import com.dsk.common.utils.http.HttpUtils;
import com.dsk.web.controller.search.service.MarketAnalysisService; //import com.dsk.web.controller.search.service.MarketAnalysisService;
import org.springframework.beans.factory.annotation.Autowired; //import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; //import org.springframework.stereotype.Service;
//
import java.util.Map; //import java.util.Map;
//
/** ///**
* @Author liujie // * @Author liujie
* @ClassName MarketAnalysisServiceImpl // * @ClassName MarketAnalysisServiceImpl
* @Date 2023/5/15 16:40 // * @Date 2023/5/15 16:40
**/ // **/
@Service //@Service
public class MarketAnalysisServiceImpl implements MarketAnalysisService { //public class MarketAnalysisServiceImpl implements MarketAnalysisService {
//
@Autowired // @Autowired
private DskOpenApiUtil dskOpenApiUtil; // private DskOpenApiUtil dskOpenApiUtil;
@Override // @Override
public AjaxResult areaGroupByProvince() { // public AjaxResult areaGroupByProvince() {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/areaGroupByProvince", null); // Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/areaGroupByProvince", null);
return BeanUtil.toBean(map, AjaxResult.class); // return BeanUtil.toBean(map, AjaxResult.class);
} // }
//
@Override // @Override
public AjaxResult certGroupByMajorAndLevel() { // public AjaxResult certGroupByMajorAndLevel() {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/certGroupByMajorAndLevel", null); // Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/certGroupByMajorAndLevel", null);
return BeanUtil.toBean(map, AjaxResult.class); // return BeanUtil.toBean(map, AjaxResult.class);
} // }
//
//
@Override // @Override
public AjaxResult certGroupByMajorProvinceLevel() { // public AjaxResult certGroupByMajorProvinceLevel() {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/certGroupByMajorProvinceLevel", null); // Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/certGroupByMajorProvinceLevel", null);
return BeanUtil.toBean(map, AjaxResult.class); // return BeanUtil.toBean(map, AjaxResult.class);
} // }
//
//
@Override // @Override
public AjaxResult bidMoneyGroupByProjectType(JSONObject object) { // public AjaxResult bidMoneyGroupByProjectType(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/bidMoneyGroupByProjectType", object); // Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/bidMoneyGroupByProjectType", object);
return BeanUtil.toBean(map, AjaxResult.class); // return BeanUtil.toBean(map, AjaxResult.class);
} // }
//
@Override // @Override
public AjaxResult bidGroupCountByProjectType(JSONObject object) { // public AjaxResult bidGroupCountByProjectType(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/bidGroupCountByProjectType", object); // Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/bidGroupCountByProjectType", object);
return BeanUtil.toBean(map, AjaxResult.class); // return BeanUtil.toBean(map, AjaxResult.class);
} // }
//
@Override // @Override
public AjaxResult countGroupByProvince(JSONObject object) { // public AjaxResult countGroupByProvince(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/countGroupByProvince", object); // Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/countGroupByProvince", object);
return BeanUtil.toBean(map, AjaxResult.class); // return BeanUtil.toBean(map, AjaxResult.class);
} // }
//
@Override // @Override
public AjaxResult countGroupByMonth(JSONObject object) { // public AjaxResult countGroupByMonth(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/countGroupByMonth", object); // Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/countGroupByMonth", object);
return BeanUtil.toBean(map, AjaxResult.class); // return BeanUtil.toBean(map, AjaxResult.class);
} // }
} //}
...@@ -194,11 +194,11 @@ xss: ...@@ -194,11 +194,11 @@ xss:
dsk: dsk:
open: open:
endPoint: 120.27.13.145:8865 # endPoint: 120.27.13.145:8865
accessKeyId: aec7b3ff2y2q8x6t49a7e2c463ce21912
accessKeySecret: ee8a53c7ea04eb3ac311406c8f56f95b
protocol: http
# endPoint: openapi.jiansheku.com
# accessKeyId: aec7b3ff2y2q8x6t49a7e2c463ce21912 # accessKeyId: aec7b3ff2y2q8x6t49a7e2c463ce21912
# accessKeySecret: ee8a53c7ea04eb3ac311406c8f56f95b # accessKeySecret: ee8a53c7ea04eb3ac311406c8f56f95b
# protocol: https # protocol: http
endPoint: openapi.jiansheku.com
accessKeyId: aec7b3ff2y2q8x6t49a7e2c463ce21912
accessKeySecret: ee8a53c7ea04eb3ac311406c8f56f95b
protocol: https
spring: spring:
profiles: profiles:
active: pre active: test
# MyBatisPlus配置 # MyBatisPlus配置
# https://baomidou.com/config/ # https://baomidou.com/config/
......
package com.dsk.common.core.domain.entity; package com.dsk.common.core.domain.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.dsk.common.annotation.Excel; import com.dsk.common.annotation.Excel;
import com.dsk.common.core.domain.BaseEntity; import com.dsk.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle; import org.apache.commons.lang3.builder.ToStringStyle;
...@@ -11,11 +17,16 @@ import org.apache.commons.lang3.builder.ToStringStyle; ...@@ -11,11 +17,16 @@ import org.apache.commons.lang3.builder.ToStringStyle;
* @author lxl * @author lxl
* @date 2023-05-17 * @date 2023-05-17
*/ */
@Data
@NoArgsConstructor
@Accessors(chain = true)
@TableName("business_user")
public class BusinessUser extends BaseEntity public class BusinessUser extends BaseEntity
{ {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** $column.columnComment */ /** $column.columnComment */
@TableId(value = "id",type = IdType.INPUT)
private Integer id; private Integer id;
/** 项目id(business_info表id) */ /** 项目id(business_info表id) */
...@@ -24,76 +35,17 @@ public class BusinessUser extends BaseEntity ...@@ -24,76 +35,17 @@ public class BusinessUser extends BaseEntity
/** 部门id */ /** 部门id */
@Excel(name = "部门id") @Excel(name = "部门id")
private Integer deptId; private Long deptId;
/** 用户id */ /** 用户id */
@Excel(name = "用户id") @Excel(name = "用户id")
private Integer userId; private Long userId;
/** 是否创建人(1 是,0 否) */ /** 是否创建人(1 是,0 否) */
@Excel(name = "是否创建人(1 是,0 否)") @Excel(name = "是否创建人(1 是,0 否)")
private Integer isFounder; private Integer isFounder;
public void setId(Integer id) public BusinessUser(Integer businessId, Long deptId, Long userId, Integer isFounder) {
{
this.id = id;
}
public Integer getId()
{
return id;
}
public void setBusinessId(Integer businessId)
{
this.businessId = businessId;
}
public Integer getBusinessId()
{
return businessId;
}
public void setDeptId(Integer deptId)
{
this.deptId = deptId;
}
public Integer getDeptId()
{
return deptId;
}
public void setUserId(Integer userId)
{
this.userId = userId;
}
public Integer getUserId()
{
return userId;
}
public void setIsFounder(Integer isFounder)
{
this.isFounder = isFounder;
}
public Integer getIsFounder()
{
return isFounder;
}
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("businessId", getBusinessId())
.append("deptId",getDeptId() )
.append("userId", getUserId())
.append("isFounder", getIsFounder())
.append("createTime", getCreateTime())
.append("updateTime", getUpdateTime())
.toString();
}
public BusinessUser(Integer businessId, Integer deptId, Integer userId, Integer isFounder) {
this.businessId = businessId; this.businessId = businessId;
this.deptId = deptId; this.deptId = deptId;
this.userId = userId; this.userId = userId;
......
...@@ -5,9 +5,7 @@ import lombok.EqualsAndHashCode; ...@@ -5,9 +5,7 @@ import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.ToString; import lombok.ToString;
import javax.validation.constraints.AssertFalse;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.util.List;
@Data @Data
@ToString @ToString
...@@ -25,6 +23,11 @@ public class EnterpriseProjectApprovalProjectPageBody extends BasePage { ...@@ -25,6 +23,11 @@ public class EnterpriseProjectApprovalProjectPageBody extends BasePage {
*/ */
private String keys; private String keys;
/**
* 是否为民介0(否),1(是)
*/
private String isProject;
/* /*
* 1金额倒序,2金额正序,3计划开工时间倒序,4计划开工时间正序,13计划完工时间倒序,14计划完工时间正序 * 1金额倒序,2金额正序,3计划开工时间倒序,4计划开工时间正序,13计划完工时间倒序,14计划完工时间正序
......
...@@ -158,6 +158,15 @@ export function addXGQY(param) { ...@@ -158,6 +158,15 @@ export function addXGQY(param) {
}) })
} }
//编辑相关企业
export function saveXGQY(param) {
return request({
url: '/business/company/edit',
method: 'POST',
data:param
})
}
//删除相关企业 //删除相关企业
export function delXGQY(param) { export function delXGQY(param) {
return request({ return request({
......
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
box-shadow: 0px 0px 8px 0px rgba(0,0,0,0.12); box-shadow: 0px 0px 8px 0px rgba(0,0,0,0.12);
border-radius: 2px; border-radius: 2px;
position: absolute; position: absolute;
z-index: 3; z-index: 20;
text-align: center; text-align: center;
.words{ .words{
padding: 24px 0; padding: 24px 0;
...@@ -459,10 +459,10 @@ ...@@ -459,10 +459,10 @@
opacity: 0.8; opacity: 0.8;
padding: 0; padding: 0;
} }
.el-input{ .el-input,.el-textarea{
display: inline-block; display: inline-block;
width: 240px; width: 240px;
.el-input__inner{ .el-input__inner,.el-textarea__inner{
width: 100%; width: 100%;
height: 32px; height: 32px;
border-radius: 0px; border-radius: 0px;
...@@ -471,6 +471,11 @@ ...@@ -471,6 +471,11 @@
border-color: #0081FF; border-color: #0081FF;
} }
} }
.el-textarea__inner{
height: 90px;
font-family: inherit;
color: #000;
}
.el-input__suffix{ .el-input__suffix{
height: 32px; height: 32px;
} }
...@@ -500,9 +505,15 @@ ...@@ -500,9 +505,15 @@
width: 80px; width: 80px;
} }
} }
.row.i{
.el-form-item__label{
line-height: 18px;
text-align: left;
}
}
} }
.popform.i{ .popform.i{
.el-input{ .el-input,.el-textarea{
width: 335px; width: 335px;
} }
} }
...@@ -907,6 +918,9 @@ ...@@ -907,6 +918,9 @@
.xz{ .xz{
opacity: 0.8; opacity: 0.8;
} }
.xg{
//color: #FF3C3C;
}
.sc{ .sc{
color: #FF3C3C; color: #FF3C3C;
} }
......
...@@ -13,8 +13,8 @@ ...@@ -13,8 +13,8 @@
mode="vertical" mode="vertical"
> >
<sidebar-item <sidebar-item
v-for="(route, index) in sidebarRouters" v-for="(route, index) in hidechildren"
:key="route.path + index" :key="route.path + index"
:is-collapse="isCollapse" :is-collapse="isCollapse"
:active-menu="activeMenu" :active-menu="activeMenu"
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
:base-path="route.path" :base-path="route.path"
:class="route.fixed&&route.fixed.isFixed?'sideFoot':''" :class="route.fixed&&route.fixed.isFixed?'sideFoot':''"
:style="route.fixed&&route.fixed.isFixed?{'bottom': route.fixed.number*50+'px'}: bottomMenu&&index==routes.length-bottomMenu-2?{'padding-bottom': bottomMenu*50+'px'}:''" :style="route.fixed&&route.fixed.isFixed?{'bottom': route.fixed.number*50+'px'}: bottomMenu&&index==routes.length-bottomMenu-2?{'padding-bottom': bottomMenu*50+'px'}:''"
/> />
</el-menu> </el-menu>
</el-scrollbar> </el-scrollbar>
...@@ -39,7 +39,7 @@ import SidebarItem from "./SidebarItem"; ...@@ -39,7 +39,7 @@ import SidebarItem from "./SidebarItem";
import variables from "@/assets/styles/variables.scss"; import variables from "@/assets/styles/variables.scss";
export default { export default {
components: { SidebarItem, Logo }, components: { SidebarItem, Logo },
data() { data() {
return { return {
...@@ -49,6 +49,18 @@ export default { ...@@ -49,6 +49,18 @@ export default {
computed: { computed: {
...mapState(["settings"]), ...mapState(["settings"]),
...mapGetters(["sidebarRouters", "sidebar"]), ...mapGetters(["sidebarRouters", "sidebar"]),
hidechildren(){
return this.sidebarRouters.map(item=>{
if(item.children?.length){
item.children = item.children.filter(i=>{
if (typeof (i.hidden) == 'boolean' && i.hidden == false || i.path == "index"){
return i
}
})
}
return item
})
},
activeMenu() { activeMenu() {
const route = this.$route; const route = this.$route;
const { meta, path } = route; const { meta, path } = route;
......
...@@ -390,8 +390,8 @@ export default { ...@@ -390,8 +390,8 @@ export default {
height: 17px; height: 17px;
justify-content: center; justify-content: center;
width: 36px; width: 36px;
right: -46px; right: -130px;
bottom: 10px; bottom: 0px;
cursor: pointer; cursor: pointer;
text-align: center; text-align: center;
&:hover{ &:hover{
......
...@@ -104,7 +104,7 @@ ...@@ -104,7 +104,7 @@
label="注册资本金(万元)" label="注册资本金(万元)"
width="140"> width="140">
<template slot-scope="scope"> <template slot-scope="scope">
{{scope.row.registerCapital || '--'}} <span v-if="scope.row.registerCapital && scope.row.registerCapital>0">{{scope.row.registerCapital}}</span><span v-else>--</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
...@@ -313,9 +313,18 @@ ...@@ -313,9 +313,18 @@
} }
}, },
created() { created() {
this.getCustomerList() this.$watch(
this.getDictType() () => this.$route.params,
this.prvinceTree() () => {
this.getCustomerList()
this.getDictType()
this.prvinceTree()
this.searchParam.companyName=''
},
// 组件创建完后获取数据,
// 此时 data 已经被 observed 了
{ immediate: true }
)
}, },
methods:{ methods:{
sq1(item,sq){ sq1(item,sq){
......
...@@ -93,7 +93,7 @@ ...@@ -93,7 +93,7 @@
label="注册资本金(万元)" label="注册资本金(万元)"
width="140"> width="140">
<template slot-scope="scope"> <template slot-scope="scope">
{{scope.row.registerCapital || '--'}} <span v-if="scope.row.registerCapital && scope.row.registerCapital>0">{{scope.row.registerCapital}}</span><span v-else>--</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
...@@ -243,8 +243,13 @@ export default { ...@@ -243,8 +243,13 @@ export default {
} }
}, },
created() { created() {
this.getCustomerList() this.$watch(
this.getDictType() () => this.$route.params,
() => {
this.getCustomerList()
this.getDictType()
this.searchParam.companyName = ''
},{ immediate: true })
}, },
methods:{ methods:{
sq1(item,sq){ sq1(item,sq){
......
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
<img class="icon_img" src="@/assets/images/project/icon_3.png"> <img class="icon_img" src="@/assets/images/project/icon_3.png">
</div> </div>
<div class="icons"> <div class="icons">
<div class="name">今日进客户</div> <div class="name">今日进客户</div>
<div class="count">30</div> <div class="count">30</div>
<img class="icon_img" src="@/assets/images/project/icon_4.png"> <img class="icon_img" src="@/assets/images/project/icon_4.png">
</div> </div>
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
</div> </div>
</div> </div>
<div class="flex"> <div class="flex">
<el-card class="box-card noborder left" style="position: relative"> <el-card class="box-card noborder left" style="position: relative;padding-bottom: 0">
<div class="cardtitles">客户级别</div> <div class="cardtitles">客户级别</div>
<div class="chartsum"> <div class="chartsum">
<div class="sum">23家</div> <div class="sum">23家</div>
...@@ -67,7 +67,7 @@ ...@@ -67,7 +67,7 @@
</el-card> </el-card>
<el-card class="box-card noborder right"> <el-card class="box-card noborder right" style="padding-bottom: 0">
<div class="cardtitles">客户跟进动态 <div class="cardtitles">客户跟进动态
<div class="labels"> <div class="labels">
<div :class="{'on':datatype==1}" @click="getDT(1)">周</div> <div :class="{'on':datatype==1}" @click="getDT(1)">周</div>
...@@ -259,11 +259,11 @@ ...@@ -259,11 +259,11 @@
{ {
name: '', name: '',
type: 'bar', type: 'bar',
barWidth: '12px', barWidth: '18px',
data: [100, 152, 200, 334, 390, 330, 220,256,178], data: [100, 152, 200, 334, 390, 330, 220,256,178],
itemStyle:{ itemStyle:{
normal: { normal: {
barBorderRadius: [4, 4, 0, 0], barBorderRadius: [9, 9, 0, 0],
color: '#165DFF' color: '#165DFF'
} }
} }
...@@ -316,11 +316,11 @@ ...@@ -316,11 +316,11 @@
{ {
name: '', name: '',
type: 'bar', type: 'bar',
barWidth: '12px', barWidth: '18px',
data: [110, 112, 190, 234, 310, 350, 220,276,198], data: [110, 112, 190, 234, 310, 350, 220,276,198],
itemStyle:{ itemStyle:{
normal:{ normal:{
barBorderRadius:[4,4,0,0], barBorderRadius:[9,9,0,0],
color:'#14C9C9' color:'#14C9C9'
}, },
} }
...@@ -367,7 +367,7 @@ ...@@ -367,7 +367,7 @@
left:'8%', left:'8%',
top:'8%', top:'8%',
right:'5%', right:'5%',
bottom:'10%', bottom:'42px',
}, },
tooltip:{ tooltip:{
axisPointer:{ //悬浮于圆点展示标签 axisPointer:{ //悬浮于圆点展示标签
......
...@@ -107,7 +107,7 @@ export default { ...@@ -107,7 +107,7 @@ export default {
{title: '商务信息', pathName: 'business'}, {title: '商务信息', pathName: 'business'},
{title: '招标偏好', pathName: 'preference'}, {title: '招标偏好', pathName: 'preference'},
{title: '合作情况', pathName: 'cooperate'}, {title: '合作情况', pathName: 'cooperate'},
{title: '决策链条', pathName: 'decisionMaking'}, {title: '联系人', pathName: 'decisionMaking'},
{title: '跟进记录', pathName: 'gjjl'} {title: '跟进记录', pathName: 'gjjl'}
], ],
defaultRoute: [], defaultRoute: [],
......
...@@ -266,6 +266,17 @@ export default { ...@@ -266,6 +266,17 @@ export default {
this.ifEmpty = true this.ifEmpty = true
} }
this.tableData = res.rows this.tableData = res.rows
this.tableData.forEach(item=>{
let investmentAmount = item.investmentAmount
if(investmentAmount){
investmentAmount = parseFloat(investmentAmount)
if(investmentAmount<=0){
item.investmentAmount = null
}
}else{
item.investmentAmount = null
}
})
this.tableDataTotal = res.total this.tableDataTotal = res.total
this.tableLoading = false this.tableLoading = false
} }
......
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
<!-- 弹窗添加联系人 --> <!-- 弹窗添加联系人 -->
<el-dialog <el-dialog
class="popups1" class="popups"
:visible.sync="dialogVisible" :visible.sync="dialogVisible"
:before-close="cancel" :before-close="cancel"
width="464px"> width="464px">
...@@ -41,25 +41,28 @@ ...@@ -41,25 +41,28 @@
<img src="@/assets/images/economies/icon.png"> <img src="@/assets/images/economies/icon.png">
<span>{{ companyInfo && companyInfo.companyName || customerInfo.companyName }}</span> <span>{{ companyInfo && companyInfo.companyName || customerInfo.companyName }}</span>
</div> </div>
<el-form :model="addRorm" :rules="addRules" ref="addRorm" class="popform" label-width="90px"> <el-form :model="addRorm" :rules="addRules" ref="addRorm" class="popform" label-width="137px">
<el-form-item label="姓名:" prop="name"> <el-form-item label="联系人姓名:" prop="name" class="row">
<el-input v-model="addRorm.name" placeholder="请输入"></el-input> <el-input v-model="addRorm.name" placeholder="请输入"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="角色:" prop="role"> <el-form-item label="联系人性别:" class="row">
<el-radio-group v-model="addRorm.sex">
<el-radio label=1></el-radio>
<el-radio label=0></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="联系人角色:" prop="role" class="row">
<el-input v-model="addRorm.role" placeholder="请输入"></el-input> <el-input v-model="addRorm.role" placeholder="请输入"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="职位:" prop="workUnit"> <el-form-item label="关联企业:" class="row">
<el-input v-model="addRorm.workUnit" placeholder="请输入"></el-input> <el-input type="text" v-model="addRorm.office" placeholder="请输入"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="公司/机关:" prop="position"> <el-form-item label="联系人职位:" prop="workUnit" class="row">
<el-input v-model="addRorm.position" placeholder="请输入"></el-input> <el-input v-model="addRorm.position" placeholder="请输入"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="联系方式:" prop="contactInformation"> <el-form-item label="联系方式:" prop="contactInformation" class="row">
<el-input v-model="addRorm.contactInformation" placeholder="请输入"></el-input> <el-input v-model="addRorm.contactInformation" placeholder="请输入"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="备注:" prop="remark">
<el-input v-model="addRorm.remark" placeholder="请输入"></el-input>
</el-form-item>
<div class="popbot"> <div class="popbot">
<div class="btn btn_cancel h32" @click="cancel">返回</div> <div class="btn btn_cancel h32" @click="cancel">返回</div>
<div class="btn btn_primary h32" @click="add">保存</div> <div class="btn btn_primary h32" @click="add">保存</div>
...@@ -93,20 +96,21 @@ export default { ...@@ -93,20 +96,21 @@ export default {
forData: [ forData: [
{label: '姓名', prop: 'name', width: '124'}, {label: '姓名', prop: 'name', width: '124'},
{label: '角色', prop: 'role', width: '110'}, {label: '角色', prop: 'role', width: '110'},
{label: '公司/机关', prop: 'position', width: '268'}, // {label: '公司/机关', prop: 'position', width: '268'},
{label: '职位', prop: 'workUnit', width: '110'}, {label: '职位', prop: 'position', width: '110'},
{label: '联系方式', prop: 'contactInformation', width: '105'}, {label: '联系方式', prop: 'contactInformation', width: '105'},
{label: '内部维护人', prop: 'updateBy', width: '100'}, {label: '内部维护人', prop: 'updateBy', width: '100'},
{label: '备注', prop: 'remark'}, {label: '来源', prop: 'remark'},
], ],
addRorm: { addRorm: {
customerId:this.customerIds, customerId:this.customerIds,
name:'', name:'',
role:'', role:'',
workUnit:'', sex:"1",
position:'', position:'',
// position:'',
contactInformation:'', contactInformation:'',
remark:'', // remark:'',
}, },
addRules:{ addRules:{
name: [ name: [
...@@ -151,7 +155,9 @@ export default { ...@@ -151,7 +155,9 @@ export default {
add(){ add(){
this.$refs.addRorm.validate((valid) => { this.$refs.addRorm.validate((valid) => {
if (valid) { if (valid) {
addChain(this.addRorm).then((res) => { let param = JSON.parse(JSON.stringify(this.addRorm))
param.sex = parseInt(param.sex)
addChain(param).then((res) => {
if(res.data){ if(res.data){
this.$message({ this.$message({
message: '新增成功', message: '新增成功',
...@@ -263,59 +269,59 @@ export default { ...@@ -263,59 +269,59 @@ export default {
margin-top: 10px; margin-top: 10px;
} }
// 弹窗 // 弹窗
.popups1{ /*.popups1{*/
.poptitle { /*.poptitle {*/
line-height: 48px; /*line-height: 48px;*/
border-bottom: 1px solid #E1E1E1; /*border-bottom: 1px solid #E1E1E1;*/
height: 48px; /*height: 48px;*/
position: absolute; /*position: absolute;*/
top: 0; /*top: 0;*/
left: 0; /*left: 0;*/
width: 100%; /*width: 100%;*/
img { /*img {*/
width: 17px; /*width: 17px;*/
margin: 16px; /*margin: 16px;*/
float: left; /*float: left;*/
} /*}*/
span { /*span {*/
font-weight: bold; /*font-weight: bold;*/
font-size: 16px; /*font-size: 16px;*/
color: #232323; /*color: #232323;*/
font-family: Microsoft YaHei-Bold, Microsoft YaHei; /*font-family: Microsoft YaHei-Bold, Microsoft YaHei;*/
width: 385px; /*width: 385px;*/
display: block; /*display: block;*/
overflow: hidden; /*overflow: hidden;*/
white-space: nowrap; /*white-space: nowrap;*/
text-overflow: ellipsis; /*text-overflow: ellipsis;*/
} /*}*/
} /*}*/
::v-deep .el-dialog__body{ /*::v-deep .el-dialog__body{*/
padding: 24px 24px 18px; /*padding: 24px 24px 18px;*/
} /*}*/
.popform { /*.popform {*/
padding-top: 14px; /*padding-top: 14px;*/
::v-deep .el-form-item__label{ /*::v-deep .el-form-item__label{*/
padding:0; /*padding:0;*/
} /*}*/
.row { /*.row {*/
padding-bottom: 16px; /*padding-bottom: 16px;*/
.left { /*.left {*/
width: 137px; /*width: 137px;*/
display: inline-block; /*display: inline-block;*/
text-align: right; /*text-align: right;*/
opacity: 0.8; /*opacity: 0.8;*/
} /*}*/
::v-deep .el-input { /*::v-deep .el-input {*/
display: inline-block; /*display: inline-block;*/
width: 240px; /*width: 240px;*/
} /*}*/
} /*}*/
.popbot { /*.popbot {*/
text-align: right; /*text-align: right;*/
padding-top: 8px; /*padding-top: 8px;*/
} /*}*/
} /*}*/
} /*}*/
} }
::v-deep .el-table__fixed::before, ::v-deep .el-table__fixed-right::before{ ::v-deep .el-table__fixed::before, ::v-deep .el-table__fixed-right::before{
background-color:unset; background-color:unset;
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
</el-tabs> </el-tabs>
<div class="flex-box clue-box"> <div class="flex-box clue-box">
<div class="clue-echarts" v-if="viewData.length>0"><div id="echartsClue" style="width: 100%;height:300px; margin: 0 auto;"></div></div> <div class="clue-echarts" v-if="viewData.length>0"><div id="echartsClue" style="width: 100%;height:300px; margin: 0 auto;"></div></div>
<div class="table-item" v-if="viewData.length>0"> <div class="table-item" v-if="viewData.length>0">
<el-table <el-table
v-if="viewData.length>0" v-if="viewData.length>0"
......
...@@ -283,6 +283,20 @@ export default { ...@@ -283,6 +283,20 @@ export default {
} }
::v-deep .table-item{ ::v-deep .table-item{
.el-table{ .el-table{
overflow:visible;
.el-table__body-wrapper{
overflow:visible;
}
.el-table__body{
tr:first-child{
position: sticky;
top:56px;
z-index: 9;
}
}
td.el-table__cell{
border-bottom: 0;
}
.el-table__body-wrapper{ .el-table__body-wrapper{
tr{ tr{
&:first-child{ &:first-child{
......
...@@ -114,14 +114,23 @@ export default { ...@@ -114,14 +114,23 @@ export default {
} }
bidMoneyGroupByProjectType(params).then(res => { bidMoneyGroupByProjectType(params).then(res => {
if(res.data.length > 0){ if(res.data.length > 0){
let list=res.data[1].type let list=[]
for (let i=0; i<res.data[0].type.length; i++){ if(res.data.length > 1){
for (let j=0; j<list.length; j++){ list=res.data[1].type
if(res.data[0].type[i].projectType === list[j].projectType){ for (let i=0; i<res.data[0].type.length; i++){
list[j].lastMoney=res.data[0].type[i].money; for (let j=0; j<list.length; j++){
list[j].lastRate=res.data[0].type[i].rate; if(res.data[0].type[i].projectType === list[j].projectType){
list[j].lastMoney=res.data[0].type[i].money;
list[j].lastRate=res.data[0].type[i].rate;
}
} }
} }
}else {
list=res.data[0].type
for (let i=0; i<list.length; i++){
list[i].lastMoney=0;
list[i].lastRate=0;
}
} }
for(let i=0; i<list.length; i++){ for(let i=0; i<list.length; i++){
list[i].money=list[i].money ? Number(list[i].money).toFixed(2) : '-'; list[i].money=list[i].money ? Number(list[i].money).toFixed(2) : '-';
...@@ -189,6 +198,8 @@ export default { ...@@ -189,6 +198,8 @@ export default {
//鼠标悬停时显示的样式 //鼠标悬停时显示的样式
tooltip: { tooltip: {
extraCssText:'width:120px!important;', extraCssText:'width:120px!important;',
backgroundColor:"rgba(255, 255, 255, 0.8)",
borderWidth:'0',
formatter: function (params){ formatter: function (params){
var result = '' var result = ''
result+='<p style="color: rgba(35,35,35,0.8);padding: 0;margin: 0;">'+ params.name +'</p>' result+='<p style="color: rgba(35,35,35,0.8);padding: 0;margin: 0;">'+ params.name +'</p>'
......
...@@ -384,13 +384,18 @@ export default { ...@@ -384,13 +384,18 @@ export default {
.el-input__suffix{ .el-input__suffix{
margin-top: -1px; margin-top: -1px;
} }
.el-input__inner:focus{
border-color: #e0e0e0;
}
.el-input-group__append{ .el-input-group__append{
width: 59px; width: 60px;
padding: 0;
text-align: center;
background: #F5F5F5; background: #F5F5F5;
color:#0081FF; color:#0081FF;
border-left: 0; border-left: 0;
padding: 0; border-radius: 0;
text-align: center; border-right: 0;
} }
} }
.total{ .total{
......
<template> <template>
<div class="app-container qyzx"> <div class="app-container qyzx">
<Region v-if="province" :province="province" :dataQuery="dataQuery" @addressListbtn="addressListbtn"></Region> <Region v-if="province" :province="province" :dataQuery="dataQuery" @addressListbtn="addressListbtn"></Region>
<div class="content"> <skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<div v-if="!isSkeleton" class="content">
<div class="common-title">专项债项目</div> <div class="common-title">专项债项目</div>
<div class="content-box" v-if="!state"> <div class="content-box" v-if="!state">
<div class="box-left"> <div class="box-left">
...@@ -14,7 +15,7 @@ ...@@ -14,7 +15,7 @@
border border
:summary-method="getSummaries" :summary-method="getSummaries"
show-summary show-summary
height="400" max-height="400"
fit fit
@sort-change="sortChange" @sort-change="sortChange"
highlight-current-row highlight-current-row
...@@ -34,7 +35,7 @@ ...@@ -34,7 +35,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="content"> <div v-if="!isSkeleton" class="content">
<div class="common-title flex-box"> <div class="common-title flex-box">
<div class="flex-box">项目明细</div> <div class="flex-box">项目明细</div>
<div class="flex-box query-ability"> <div class="flex-box query-ability">
...@@ -44,7 +45,6 @@ ...@@ -44,7 +45,6 @@
</div> </div>
<div class="table-item"> <div class="table-item">
<el-table <el-table
v-loading="tableLoading"
:data="listData" :data="listData"
element-loading-text="Loading" element-loading-text="Loading"
@sort-change="sortChange1" @sort-change="sortChange1"
...@@ -85,10 +85,11 @@ ...@@ -85,10 +85,11 @@
import * as echarts from 'echarts'; import * as echarts from 'echarts';
import { statistics,projectsPage,location } from '@/api/macro/macro' import { statistics,projectsPage,location } from '@/api/macro/macro'
import Region from '../component/region' import Region from '../component/region'
import skeleton from '../component/skeleton'
export default { export default {
name: 'Financing', name: 'Financing',
components: { components: {
Region Region,skeleton
}, },
data() { data() {
return { return {
...@@ -96,7 +97,6 @@ export default { ...@@ -96,7 +97,6 @@ export default {
tableParams:{}, tableParams:{},
tableData:[], tableData:[],
listData:[], listData:[],
tableLoading: false,
pageIndex: 1, pageIndex: 1,
pageSize: 10, pageSize: 10,
tableDataTotal: 0, tableDataTotal: 0,
...@@ -106,6 +106,7 @@ export default { ...@@ -106,6 +106,7 @@ export default {
province:'', province:'',
provinceId:[], provinceId:[],
state:false, state:false,
isSkeleton:true
} }
}, },
created() { created() {
...@@ -157,7 +158,7 @@ export default { ...@@ -157,7 +158,7 @@ export default {
}, },
methods: { methods: {
getData(){ getData(){
this.tableLoading = true this.isSkeleton = true
let params={ pageNum: this.pageIndex, pageSize: this.pageSize} let params={ pageNum: this.pageIndex, pageSize: this.pageSize}
if(this.tableParams.field){ if(this.tableParams.field){
params.field=this.tableParams.field params.field=this.tableParams.field
...@@ -175,14 +176,10 @@ export default { ...@@ -175,14 +176,10 @@ export default {
params.areaId=this.provinceId[2] params.areaId=this.provinceId[2]
} }
projectsPage(params).then(res => { projectsPage(params).then(res => {
this.tableLoading = false this.isSkeleton = false
this.listData=res.data.list; this.listData=res.data.list;
this.tableDataTotal = res.data.totalCount this.tableDataTotal = res.data.totalCount
}) })
// 延迟关闭加载效果
// setTimeout(() => {
// this.tableLoading = false
// }, 200)
}, },
getStatistics(){ getStatistics(){
let params={}; let params={};
......
...@@ -53,7 +53,7 @@ export default { ...@@ -53,7 +53,7 @@ export default {
}, },
{ {
prop: 'gdpGrowth', prop: 'gdpGrowth',
label: 'GDP增速', label: 'GDP增速(%)',
}, },
{ {
prop: 'gdpPerCapita', prop: 'gdpPerCapita',
......
...@@ -15,14 +15,14 @@ ...@@ -15,14 +15,14 @@
<div class="main2"> <div class="main2">
<div class="flex-box query-box head"> <div class="flex-box query-box head">
<span>{{value}}全国招标总数<span class="number"> {{totalCount}} </span>万个</span> <span>{{value}}全国招标总数<span class="number"> {{totalCount}} </span>万个</span>
<div class="select-popper" style="position: relative;"> <div class="select-popper" style="position: relative;margin-right:0;">
<el-dropdown <el-dropdown
@command="handleDate" @command="handleDate"
trigger="click" trigger="click"
ref="punishDateShowPopper" ref="punishDateShowPopper"
:hide-on-click="false" :hide-on-click="false"
> >
<span class="el-dropdown-link" :class="punishDateValue ? 'color_text' : ''">{{punishDateValue}}<i class="el-icon-caret-bottom"></i></span> <span class="el-dropdown-link" :class="punishDateValue ? 'color_text' : ''">{{punishDateValue}}<i class="el-icon-arrow-down" style="color:#313131;"></i></span>
<div> <div>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
<el-dropdown-item <el-dropdown-item
...@@ -625,5 +625,10 @@ export default { ...@@ -625,5 +625,10 @@ export default {
} }
} }
} }
::v-deep .el-input--medium{
.el-input__icon{
line-height: 32px;
}
}
} }
</style> </style>
...@@ -831,6 +831,9 @@ export default { ...@@ -831,6 +831,9 @@ export default {
border-radius: 4px; border-radius: 4px;
.search{ .search{
margin-top: 22px; margin-top: 22px;
::v-deep .el-radio{
margin-right: 16px;
}
.search-box{ .search-box{
display: inline-block; display: inline-block;
margin-right: 32px; margin-right: 32px;
...@@ -918,7 +921,7 @@ export default { ...@@ -918,7 +921,7 @@ export default {
height: 32px; height: 32px;
line-height: 32px; line-height: 32px;
font-size: 12px; font-size: 12px;
padding-left: 6px; padding-left: 8px;
border-right: 0; border-right: 0;
} }
.el-input__suffix{ .el-input__suffix{
...@@ -931,6 +934,8 @@ export default { ...@@ -931,6 +934,8 @@ export default {
background: #F5F5F5; background: #F5F5F5;
color:#0081FF; color:#0081FF;
border-left: 0; border-left: 0;
border-radius: 0;
border-right: 0;
} }
/*}*/ /*}*/
} }
......
...@@ -253,7 +253,6 @@ export default { ...@@ -253,7 +253,6 @@ export default {
weekdata1.length = time weekdata1.length = time
weekdata2.length = time weekdata2.length = time
weekdata3.length = time weekdata3.length = time
console.log(time)
for(var i=0;i<7;i++){ for(var i=0;i<7;i++){
if(i > time){ if(i > time){
weekdata1.push('') weekdata1.push('')
...@@ -304,8 +303,6 @@ export default { ...@@ -304,8 +303,6 @@ export default {
default: default:
break; break;
} }
console.log(datas)
console.log(labels)
this.initDT(datas,labels) this.initDT(datas,labels)
}, },
resizeEcharts (){ resizeEcharts (){
...@@ -350,8 +347,8 @@ export default { ...@@ -350,8 +347,8 @@ export default {
// trigger: 'axis' // trigger: 'axis'
}, },
legend: { legend: {
right: '20px', right: '155px',
top:"30px", top:"2px",
data: ['成交金额', '储备项目', '跟进动态'], data: ['成交金额', '储备项目', '跟进动态'],
itemHeight: 8, // 修改icon图形大小 itemHeight: 8, // 修改icon图形大小
itemGap: 20 itemGap: 20
......
...@@ -12,10 +12,13 @@ ...@@ -12,10 +12,13 @@
</div> </div>
<el-form class="popform j" :model="queryParam" :rules="rules" ref="ruleForm" label-width="130px"> <el-form class="popform j" :model="queryParam" :rules="rules" ref="ruleForm" label-width="130px">
<el-form-item label="项目名称:" class="row" prop="projectName"> <el-form-item label="项目名称:" class="row" prop="projectName">
<el-input type="text" placeholder="请输入" v-model="queryParam.projectName"></el-input> <el-input type="text" placeholder="请输入" v-model="queryParam.projectName" @input="getProject"></el-input>
<div class="resultlist" v-if="proList.length>0" id="box1">
<div v-for="(item,index) in proList" @click="selProject(item)"><span v-html="item"></span></div>
</div>
</el-form-item> </el-form-item>
<el-form-item label="业主单位:" class="row" prop="ownerCompany"> <el-form-item label="业主单位:" class="row" prop="ownerCompany">
<el-input type="text" placeholder="请输入" v-model="queryParam.ownerCompany" @input="getCompany"></el-input> <el-input type="text" placeholder="请输入" v-model="queryParam.ownerCompany" @input="getCompany" :οnkeyup="queryParam.ownerCompany=queryParam.ownerCompany.replace(/^\s+|\s+$/g,'')"></el-input>
<div class="resultlist" v-if="showlist" id="box"> <div class="resultlist" v-if="showlist" id="box">
<div v-for="(item,index) in companData" @click="selCompany(item)"><span v-html="item.name"></span></div> <div v-for="(item,index) in companData" @click="selCompany(item)"><span v-html="item.name"></span></div>
</div> </div>
...@@ -56,6 +59,7 @@ ...@@ -56,6 +59,7 @@
<script> <script>
import {getEnterprise,getDictType,} from '@/api/main' import {getEnterprise,getDictType,} from '@/api/main'
import {addProject} from '@/api/project/project' import {addProject} from '@/api/project/project'
import {queryProject} from '@/api/detail/party-a/cooperate'
export default { export default {
name: 'addProject', name: 'addProject',
data(){ data(){
...@@ -90,6 +94,7 @@ ...@@ -90,6 +94,7 @@
projectStage:[],//项目阶段 projectStage:[],//项目阶段
projectType:[],//项目类型 projectType:[],//项目类型
projectCategory:[],//项目类别 projectCategory:[],//项目类别
proList:[],//项目列表
} }
}, },
mounted(){ mounted(){
...@@ -110,6 +115,7 @@ ...@@ -110,6 +115,7 @@
}, },
methods:{ methods:{
toradar(){ toradar(){
this.resetForm()
this.$router.push({path:'/radar'}) this.$router.push({path:'/radar'})
}, },
handleALL(event){ handleALL(event){
...@@ -119,6 +125,12 @@ ...@@ -119,6 +125,12 @@
this.showlist = false this.showlist = false
} }
} }
var two = document.getElementById("box1");
if(two){
if(!two.contains(event.target)){
this.proList = []
}
}
}, },
//获取建设库客户 //获取建设库客户
getCompany(value){ getCompany(value){
...@@ -139,19 +151,40 @@ ...@@ -139,19 +151,40 @@
}) })
} }
}, },
//获取项目名称
getProject(value){
// if (value.length>=2){
// let param = {
// projectName:value,
// }
// queryProject(JSON.stringify(param)).then(result=>{
// if(result.code != 200){
// this.proList = []
// return false
// }
// this.proList = result.data
// })
// }
},
selCompany(item){ selCompany(item){
this.queryParam.companyId = item.jskEid this.queryParam.companyId = item.jskEid
this.queryParam.ownerCompany = item.name.replace(/<[^>]+>/g, '') this.queryParam.ownerCompany = item.name.replace(/<[^>]+>/g, '')
this.showlist = false this.showlist = false
}, },
selProject(item){
// this.queryParam.companyId = item.jskEid
// this.queryParam.ownerCompany = item.name.replace(/<[^>]+>/g, '')
this.proList = []
},
//添加客户 //添加客户
submitForm(formName) { submitForm(formName) {
this.queryParam.userId = this.$store.state.user.userId this.queryParam.userId = this.$store.state.user.userId
if(this.queryParam.investmentAmount!="")
this.queryParam.investmentAmount = parseFloat(this.queryParam.investmentAmount)
this.$refs[formName].validate((valid) => { this.$refs[formName].validate((valid) => {
if (valid) { if (valid) {
addProject(this.queryParam).then(result=>{ let param = JSON.parse(JSON.stringify(this.queryParam))
if(param.investmentAmount!="")
param.investmentAmount = parseFloat(param.investmentAmount)
addProject(param).then(result=>{
if(result.code == 200){ if(result.code == 200){
this.$message.success('添加成功!') this.$message.success('添加成功!')
this.resetForm('ruleForm') this.resetForm('ruleForm')
......
...@@ -15,39 +15,51 @@ ...@@ -15,39 +15,51 @@
</div> </div>
<div class="wr_bot"> <div class="wr_bot">
<div class="times"><img src="@/assets/images/project/ico_4.png"> <div class="times"><img src="@/assets/images/project/ico_4.png">
<el-date-picker value-format="yyyy-MM-dd" <el-date-picker value-format="yyyy-MM-dd HH:mm:ss"
v-model="queryParam.finishTime" v-model="queryParam.dueTime"
type="date" type="datetime"
placeholder="完成时间"> placeholder="截止时间">
</el-date-picker> </el-date-picker>
</div> </div>
<div class="sels"> <div class="sels">
<img src="@/assets/images/project/ico_2.png"> <img src="@/assets/images/project/ico_2.png">
<el-input v-model="queryParam.target" placeholder="拜访对象" style="width: 100px;"> <el-input v-model="queryParam.target" placeholder="拜访对象" maxlength="500" style="width: 100px;">
</el-input> </el-input>
</div> </div>
<div class="btn btn_primary h32 wc" @click="add" :class="{'btn_disabled':queryParam.task == ''}">完成</div> <div class="wc">
<div class="btn btn_primary h32 " @click="add" :class="{'btn_disabled':queryParam.task == ''}">完成</div>
<div class="btn btn_primary h32" style="border: 1px solid #D3D3D3;background: #ffffff;color:rgba(35,35,35,0.8);" @click="cancel" :class="{'btn_disabled':queryParam.task == ''}">取消</div>
</div>
</div> </div>
</div> </div>
</div> </div>
<skeleton v-if="isSkeleton" style="padding-top: 16px"></skeleton> <skeleton v-if="isSkeleton" style="padding-top: 16px"></skeleton>
<div v-else> <div class="tabList" v-else>
<div class="tasktitle"><strong>我的任务</strong><span @click="getYQ">{{yqnum}}条已逾期</span><!--<span class="on">4条已逾期</span>--></div> <el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane label="进行中任务" name="first"></el-tab-pane>
<el-tab-pane label="已完成任务" name="second"></el-tab-pane>
<el-tab-pane :label="yqnum" name="third"></el-tab-pane>
</el-tabs>
<div class="tasklist" v-for="(item,index) in datalist.rows"> <div class="tasklist" v-for="(item,index) in datalist.rows">
<div class="task_name">{{item.task}}</div> <div class="task_name">{{item.task}}</div>
<div class="task_con"><span>发起时间:{{item.createTime}}</span><span v-if="item.target">关联客户:<font class="wordprimary">{{item.target}}</font></span><span v-if="item.finishTime">完成时间:{{item.finishTime}}</span></div> <div class="task_con"><span>发起时间:{{item.createTime}}</span><span v-if="item.target">关联客户:<font class="wordprimary">{{item.target}}</font></span><span v-if="item.finishTime">完成时间:{{item.finishTime}}</span></div>
<div class="select" :class="{'on':item.state == 2}"> <div class="select" :class="{'on':item.state == 1}">
<div class="select-popper"> <div class="select-popper">
<span> <span>
{{item.state == 2?"已完成":"未完成"}} {{item.state == 1?"已完成":"进行中"}}
<i class="el-icon-caret-bottom"></i> <i class="el-icon-caret-bottom"></i>
</span> </span>
<el-select v-if="isDisableds == false" placeholder="请选择" v-model="item.state" class="select-multiple" @change="changes(item.id,$event)"> <el-select v-if="isDisableds == false" placeholder="请选择" v-model="item.state" class="select-multiple" @change="changes(item.id,$event)">
<el-option label="未完成" value="1"></el-option> <el-option label="进行中" value="0"></el-option>
<el-option label="已完成" value="2"></el-option> <el-option label="已完成" value="1"></el-option>
</el-select> </el-select>
</div></div> </div></div>
</div> </div>
<!--<div class="tasktitle"><strong>已完成</strong></div>-->
<!---->
<!--<div class="tasktitle"><strong>进行中</strong><span @click="getYQ">{{yqnum}}条已逾期</span>&lt;!&ndash;<span class="on">4条已逾期</span>&ndash;&gt;</div>-->
<div class="tables" v-if="datalist.total>searchPram.pageSize"> <div class="tables" v-if="datalist.total>searchPram.pageSize">
<div class="bottems"> <div class="bottems">
...@@ -85,6 +97,7 @@ ...@@ -85,6 +97,7 @@
}, },
data(){ data(){
return{ return{
activeName:'first',
isEdit:false, isEdit:false,
value:'', value:'',
status:0, status:0,
...@@ -92,22 +105,33 @@ ...@@ -92,22 +105,33 @@
businessId:this.detailId ? this.detailId : parseInt(this.$route.query.id),//项目详情id businessId:this.detailId ? this.detailId : parseInt(this.$route.query.id),//项目详情id
target:'', target:'',
task:'', task:'',
finishTime:'', dueTime:'',
}, },
searchPram:{ searchPram:{
businessId:this.detailId ? this.detailId : parseInt(this.$route.query.id), businessId:this.detailId ? this.detailId : parseInt(this.$route.query.id),
pageSize:20, pageSize:20,
pageNum:1, pageNum:1,
state:null,
}, },
datalist:[], datalist:[],
yqnum:0,//已逾期数量 yqnum:'',//已逾期数量
isDisableds:this.isDisabled, isDisableds:this.isDisabled,
isSkeleton:true, isSkeleton:true,
} }
}, },
created(){ created(){
this.getList() this.getList()
let params={
...this.searchPram,
state:2,
// cancelHttp: true
}
getGZDB(params).then(result=>{
this.datalist = result.code == 200?result:[]
console.log(this.datalist.rows)
if(this.datalist){
this.yqnum = `已逾期 ${this.datalist.rows.length} 条`;
}
})
}, },
methods:{ methods:{
getEdit(){ getEdit(){
...@@ -115,37 +139,46 @@ ...@@ -115,37 +139,46 @@
this.value = "" this.value = ""
}, },
add(){ add(){
if(this.queryParam.task == '' || this.queryParam.finishTime == '') // if(this.queryParam.task == '' || this.queryParam.dueTime == '')
if(this.queryParam.task == '')
return this.$message.warning('时间和内容需填写完整!') return this.$message.warning('时间和内容需填写完整!')
addGZDB(this.queryParam).then(result=>{ addGZDB(this.queryParam).then(result=>{
if(result.code == 200){ if(result.code == 200){
this.$message.success("添加成功!") this.$message.success("添加成功!")
this.getList() this.getList()
this.queryParam.target = '' this.queryParam.target = ''
this.queryParam.task = '' this.queryParam.task = ''
this.queryParam.finishTime = '' this.queryParam.dueTime = ''
}else{ }else{
this.$message.error(result.msg) this.$message.error(result.msg)
} }
}) })
},
cancel(){
this.isEdit = false;
this.queryParam.target = ''
this.queryParam.task = ''
this.queryParam.dueTime = ''
}, },
getList(){ getList(){
this.isSkeleton = true this.isSkeleton = true
getGZDB(this.searchPram).then(result=>{ let params={
...this.searchPram,
state:this.activeName === 'first'? 0 : this.activeName === 'second'? 1 : 2,
// cancelHttp: true
}
getGZDB(params).then(result=>{
this.isSkeleton = false this.isSkeleton = false
this.datalist = result.code == 200?result:[] this.datalist = result.code == 200?result:[]
let num = 0
this.datalist.rows.forEach(item=>{
if(item.state == 0)
num++;
})
this.yqnum = num
}) })
}, },
handleCurrentChange(val){ handleCurrentChange(val){
this.searchPram.pageNum = val this.searchPram.pageNum = val
this.getList() this.getList()
}, },
handleClick(){
this.getList()
},
changes(id,state){ changes(id,state){
let param={ let param={
id:id, id:id,
...@@ -162,7 +195,7 @@ ...@@ -162,7 +195,7 @@
}, },
getYQ(){ getYQ(){
let state = this.searchPram.state let state = this.searchPram.state
this.searchPram.state = state == 0?null:0 this.searchPram.state = state == 2?null:2
this.handleCurrentChange(1) this.handleCurrentChange(1)
}, },
} }
...@@ -170,6 +203,31 @@ ...@@ -170,6 +203,31 @@
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.records{
.tasklist{
.select{
background: #FFEBEB;
color: #FF3C3C;
.select-popper{
color: #FF3C3C;
}
}
}
}
.tabList{
margin-top: 18px;
::v-deep .el-tabs{
.el-tabs__header{
margin: 0;
}
.el-tabs__active-bar{
height: 1px;
}
.el-tabs__nav-wrap::after{
height: 1px;
}
}
}
.wc{ .wc{
position: absolute; position: absolute;
right: 0; right: 0;
......
...@@ -106,8 +106,8 @@ ...@@ -106,8 +106,8 @@
<img src="@/assets/images/economies/icon.png"> <img src="@/assets/images/economies/icon.png">
<span>{{projectname}}</span> <span>{{projectname}}</span>
</div> </div>
<el-form class="popform" label-width="137px"> <el-form class="popform" :model="queryParam" ref="ruleForm" label-width="137px" :rules="rules" >
<el-form-item label="联系人姓名:" class="row"> <el-form-item label="联系人姓名:" class="row" prop="name">
<el-input type="text" v-model="queryParam.name" placeholder="请输入"></el-input> <el-input type="text" v-model="queryParam.name" placeholder="请输入"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="联系人性别:" class="row"> <el-form-item label="联系人性别:" class="row">
...@@ -157,6 +157,9 @@ ...@@ -157,6 +157,9 @@
}, },
data(){ data(){
return{ return{
rules:{
name:[{ required: true, message: '请输入非空格字符!', trigger: 'blur' },],
},
dialogVisible:false, dialogVisible:false,
isnew:true,//是否新增 isnew:true,//是否新增
textarea:"", textarea:"",
...@@ -200,26 +203,40 @@ ...@@ -200,26 +203,40 @@
}) })
}, },
save(){ save(){
let param = JSON.parse(JSON.stringify(this.queryParam)) this.$refs['ruleForm'].validate((valid) => {
param.sex = parseInt(param.sex) if (valid) {
if(this.isnew == false){ let param = JSON.parse(JSON.stringify(this.queryParam))
editLXR(param).then(result=>{ param.sex = parseInt(param.sex)
if(result.code == 200){ if (!this.queryParam.phone) {
this.$message.success('保存成功!') this.$message.error('请输入电话号码')
this.getList() return false
this.dialogVisible = false
} }
}) var regPartton = /1[3-9]+\d{9}/;
} var regPartton1 = /0\d{2,3}-\d{7,8}|\(?0\d{2,3}[)-]?\d{7,8}|\(?0\d{2,3}[)-]*\d{7,8}/;
if(this.isnew == true){ if (!regPartton.test(this.queryParam.phone) && !regPartton1.test(this.queryParam.phone)) {
addLXR(param).then(result=>{ this.$message.error("请输入正确的电话");
if(result.code == 200){ return false
this.$message.success('新增成功!')
this.getList()
this.dialogVisible = false
} }
}) if (this.isnew == false) {
} editLXR(param).then(result => {
if (result.code == 200) {
this.$message.success('保存成功!')
this.getList()
this.dialogVisible = false
}
})
}
if (this.isnew == true) {
addLXR(param).then(result => {
if (result.code == 200) {
this.$message.success('新增成功!')
this.getList()
this.dialogVisible = false
}
})
}
}
})
}, },
//翻页 //翻页
handleCurrentChange(val) { handleCurrentChange(val) {
......
...@@ -64,7 +64,7 @@ ...@@ -64,7 +64,7 @@
</div> </div>
</div> </div>
<div class="con i"> <div class="con i">
<span>建设单位 :</span> <span>业主单位 :</span>
<div class="inputxt" id="inputxt3" :style="{width:rig1}"> <div class="inputxt" id="inputxt3" :style="{width:rig1}">
<div class="flex" v-if="nowedit == 3 && isDisabled == false"> <div class="flex" v-if="nowedit == 3 && isDisabled == false">
<el-input placeholder="待添加" v-model="xmsldata.constructionUnit"></el-input> <el-input placeholder="待添加" v-model="xmsldata.constructionUnit"></el-input>
...@@ -93,7 +93,7 @@ ...@@ -93,7 +93,7 @@
</div> </div>
</div> </div>
<div class="con i"> <div class="con i">
<span>建设单位负责人 :</span> <span>业主单位负责人 :</span>
<div class="inputxt" id="inputxt5"> <div class="inputxt" id="inputxt5">
<div class="flex" v-if="nowedit == 5 && isDisabled == false"> <div class="flex" v-if="nowedit == 5 && isDisabled == false">
<el-input placeholder="待添加" v-model="xmsldata.constructionPrincipal"></el-input> <el-input placeholder="待添加" v-model="xmsldata.constructionPrincipal"></el-input>
...@@ -121,7 +121,7 @@ ...@@ -121,7 +121,7 @@
</div> </div>
</div> </div>
<div class="con i"> <div class="con i">
<span>建设单位联系电话 :</span> <span>业主单位联系电话 :</span>
<div class="inputxt" id="inputxt7"> <div class="inputxt" id="inputxt7">
<div class="flex" v-if="nowedit == 7 && isDisabled == false"> <div class="flex" v-if="nowedit == 7 && isDisabled == false">
<el-input placeholder="待添加" v-model="xmsldata.constructionPhone"></el-input> <el-input placeholder="待添加" v-model="xmsldata.constructionPhone"></el-input>
......
...@@ -129,7 +129,7 @@ ...@@ -129,7 +129,7 @@
<span>项目类型:</span> <span>项目类型:</span>
<span>{{item.projectType}}</span> <span>{{item.projectType}}</span>
</div> </div>
<div class="det-con" v-if="item.investmentAmount"> <div class="det-con" v-if="item.investmentAmount&&item.investmentAmount>0">
<span>投资估算(万元):</span> <span>投资估算(万元):</span>
<span>{{item.investmentAmount}}</span> <span>{{item.investmentAmount}}</span>
</div> </div>
...@@ -139,7 +139,7 @@ ...@@ -139,7 +139,7 @@
</div> </div>
<div class="det-con" v-if="item.ownerCompany "> <div class="det-con" v-if="item.ownerCompany ">
<span>业主单位:</span> <span>业主单位:</span>
<span class="wordprimary">{{item.ownerCompany}}</span> <span class="wordprimary" @click="toEnterprise(item)">{{item.ownerCompany}}</span>
</div> </div>
</div> </div>
<el-divider v-if="index != datalist.length-1"></el-divider> <el-divider v-if="index != datalist.length-1"></el-divider>
...@@ -185,11 +185,13 @@ ...@@ -185,11 +185,13 @@
import addproject from './component/addProject' import addproject from './component/addProject'
import batchimport from './component/batchImport' import batchimport from './component/batchImport'
import skeleton from './component/skeleton' import skeleton from './component/skeleton'
import {encodeStr} from "@/assets/js/common.js"
export default { export default {
name: 'ProjectList', name: 'ProjectList',
components:{addproject,batchimport,skeleton}, components:{addproject,batchimport,skeleton},
data() { data() {
return { return {
encodeStr,
types:'project', types:'project',
props:{multiple: true}, props:{multiple: true},
activeName:'first', activeName:'first',
...@@ -387,6 +389,13 @@ export default { ...@@ -387,6 +389,13 @@ export default {
toDetail(id,tag){ toDetail(id,tag){
this.$router.push({ path: '/project/projectList/detail', query: {id:id,tag:tag} }); this.$router.push({ path: '/project/projectList/detail', query: {id:id,tag:tag} });
}, },
toEnterprise(item){
if(item.ownerCompanyUipId){
this.$router.push({ path: '/enterprise/'+this.encodeStr(item.ownerCompanyUipId)});
}else{
this.$router.push({ path: '/company/'+this.encodeStr(item.ownerCompanyCid)});
}
},
handleClick(){ handleClick(){
this.reset() this.reset()
}, },
......
...@@ -18,7 +18,7 @@ public class BusinessAddDto { ...@@ -18,7 +18,7 @@ public class BusinessAddDto {
/** /**
* 用户id * 用户id
*/ */
private Integer userId; private Long userId;
/** /**
* 项目类型 * 项目类型
......
package com.dsk.common.core.domain.entity; package com.dsk.system.domain.business;
import java.util.Date; import java.util.Date;
import com.dsk.common.core.domain.BaseEntity; import com.dsk.common.core.domain.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.dsk.common.annotation.Excel; import com.dsk.common.annotation.Excel;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle; import org.apache.commons.lang3.builder.ToStringStyle;
...@@ -14,6 +15,7 @@ import org.apache.commons.lang3.builder.ToStringStyle; ...@@ -14,6 +15,7 @@ import org.apache.commons.lang3.builder.ToStringStyle;
* @author lxl * @author lxl
* @date 2023-05-17 * @date 2023-05-17
*/ */
@Data
public class BusinessBacklog extends BaseEntity public class BusinessBacklog extends BaseEntity
{ {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
...@@ -34,82 +36,17 @@ public class BusinessBacklog extends BaseEntity ...@@ -34,82 +36,17 @@ public class BusinessBacklog extends BaseEntity
private String task; private String task;
/** 完成时间 */ /** 完成时间 */
@JsonFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "完成时间", width = 30, dateFormat = "yyyy-MM-dd") @Excel(name = "完成时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date finishTime; private Date finishTime;
/** 完成时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "到期时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date dueTime;
/** 状态(2已完成,1进行中,0逾期) */ /** 状态(2已完成,1进行中,0逾期) */
@Excel(name = "状态(2已完成,1进行中,0逾期)") @Excel(name = "状态 0:进行中 1:已到期")
private Integer state; private Integer state;
public void setId(Integer id)
{
this.id = id;
}
public Integer getId()
{
return id;
}
public void setBusinessId(Integer businessId)
{
this.businessId = businessId;
}
public Integer getBusinessId()
{
return businessId;
}
public void setTarget(String target)
{
this.target = target;
}
public String getTarget()
{
return target;
}
public void setTask(String task)
{
this.task = task;
}
public String getTask()
{
return task;
}
public void setFinishTime(Date finishTime)
{
this.finishTime = finishTime;
}
public Date getFinishTime()
{
return finishTime;
}
public void setState(Integer state)
{
this.state = state;
}
public Integer getState()
{
return state;
}
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("businessId", getBusinessId())
.append("target", getTarget())
.append("task", getTask())
.append("finishTime", getFinishTime())
.append("state", getState())
.append("createTime", getCreateTime())
.append("updateTime", getUpdateTime())
.toString();
}
} }
package com.dsk.system.domain.business.vo;
import com.dsk.common.annotation.Excel;
import com.dsk.common.core.domain.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
/**
* 项目工作待办对象 business_backlog
*
* @author lxl
* @date 2023-05-17
*/
@Data
public class BusinessBacklogListVo {
private static final long serialVersionUID = 1L;
/** $column.columnComment */
private Integer id;
/** 项目id */
private Integer businessId;
/** 关联客户 */
private String target;
/** 待办工作内容 */
private String task;
/** 完成时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "完成时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date finishTime;
/** 完成时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "到期时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date dueTime;
/** 状态(2已完成,1进行中,0逾期) */
@Excel(name = "状态 0:进行中 1:已到期 2:已逾期")
private Integer state;
}
package com.dsk.system.domain.customer;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
* 用户联系人(CustomerContact)实体类
*
* @author makejava
* @since 2023-07-25 17:18:00
*/
@Data
@NoArgsConstructor
@Accessors(chain = true)
@TableName("contact_info")
public class ContactInfo implements Serializable {
private static final long serialVersionUID = -22461377492423075L;
@TableId(value = "id",type = IdType.AUTO)
private Long id;
/**
* 客户id
*/
private String customerId;
/**
* 项目id
*/
private Integer projectId;
/**
* 姓名
*/
private String name;
/**
* 性别
*/
private String sex;
/**
* 角色
*/
private String role;
/**
* 职位
*/
private String position;
/**
* 联系方式
*/
private String contactInformation;
/**
* 企业id
*/
private Integer companyId;
/**
* 城投企业id
*/
private String uipId;
/**
* 企业名称
*/
private String companyName;
/**
* 备注
*/
private String remark;
private String createBy;
private Date createTime;
private String updateBy;
private Long updateId;
private Date updateTime;
}
package com.dsk.system.domain.customer.dto;
import lombok.Data;
import java.io.Serializable;
/**
* @author lcl
* @create 2023/5/16
*/
@Data
public class ContactInfoSearchDto implements Serializable {
/**
* 项目id
*/
private Integer projectId;
/**
* 企业名称
*/
private String companyName;
/**
* 客户id
*/
private String customerId;
}
...@@ -10,10 +10,22 @@ import java.io.Serializable; ...@@ -10,10 +10,22 @@ import java.io.Serializable;
*/ */
@Data @Data
public class CustomerSearchDto implements Serializable { public class CustomerSearchDto implements Serializable {
/**
* 企业id
*/
private Integer companyId;
/**
* 城投企业id
*/
private String uipId;
/** /**
* 企业名称 * 企业名称
*/ */
private String companyName; private String companyName;
/**
* 客户id
*/
private String customerId;
/** /**
* 用户id * 用户id
*/ */
......
package com.dsk.system.domain.customer.vo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
* 用户联系人(CustomerContact)实体类
*
* @author makejava
* @since 2023-07-25 17:18:00
*/
@Data
public class ContactInfoListVo implements Serializable {
private static final long serialVersionUID = -22461377492423075L;
private Long id;
/**
* 客户id
*/
private String customerId;
/**
* 项目id
*/
private Integer projectId;
/**
* 项目名称
*/
private String projectName;
/**
* 姓名
*/
private String name;
/**
* 性别
*/
private String sex;
/**
* 角色
*/
private String role;
/**
* 职位
*/
private String position;
/**
* 联系方式
*/
private String contactInformation;
/**
* 企业id
*/
private Integer companyId;
/**
* 城投企业id
*/
private String uipId;
/**
* 企业名称
*/
private String companyName;
/**
* 更新人
*/
private String updateBy;
}
package com.dsk.system.mapper; package com.dsk.system.mapper;
import com.dsk.common.core.domain.entity.BusinessBacklog; import com.dsk.system.domain.business.BusinessBacklog;
import com.dsk.system.domain.business.vo.BusinessBacklogListVo;
import java.util.List; import java.util.List;
/** /**
* 项目工作待办Mapper接口 * 项目工作待办Mapper接口
* *
* @author lxl * @author lxl
* @date 2023-05-17 * @date 2023-05-17
*/ */
public interface BusinessBacklogMapper public interface BusinessBacklogMapper
{ {
/** /**
* 查询项目工作待办 * 查询项目工作待办
* *
* @param id 项目工作待办主键 * @param id 项目工作待办主键
* @return 项目工作待办 * @return 项目工作待办
*/ */
...@@ -22,15 +23,15 @@ public interface BusinessBacklogMapper ...@@ -22,15 +23,15 @@ public interface BusinessBacklogMapper
/** /**
* 查询项目工作待办列表 * 查询项目工作待办列表
* *
* @param businessBacklog 项目工作待办 * @param businessBacklog 项目工作待办
* @return 项目工作待办集合 * @return 项目工作待办集合
*/ */
public List<BusinessBacklog> selectBusinessBacklogList(BusinessBacklog businessBacklog); public List<BusinessBacklogListVo> selectBusinessBacklogList(BusinessBacklog businessBacklog);
/** /**
* 新增项目工作待办 * 新增项目工作待办
* *
* @param businessBacklog 项目工作待办 * @param businessBacklog 项目工作待办
* @return 结果 * @return 结果
*/ */
...@@ -38,7 +39,7 @@ public interface BusinessBacklogMapper ...@@ -38,7 +39,7 @@ public interface BusinessBacklogMapper
/** /**
* 修改项目工作待办 * 修改项目工作待办
* *
* @param businessBacklog 项目工作待办 * @param businessBacklog 项目工作待办
* @return 结果 * @return 结果
*/ */
...@@ -46,7 +47,7 @@ public interface BusinessBacklogMapper ...@@ -46,7 +47,7 @@ public interface BusinessBacklogMapper
/** /**
* 删除项目工作待办 * 删除项目工作待办
* *
* @param id 项目工作待办主键 * @param id 项目工作待办主键
* @return 结果 * @return 结果
*/ */
...@@ -54,15 +55,12 @@ public interface BusinessBacklogMapper ...@@ -54,15 +55,12 @@ public interface BusinessBacklogMapper
/** /**
* 批量删除项目工作待办 * 批量删除项目工作待办
* *
* @param ids 需要删除的数据主键集合 * @param ids 需要删除的数据主键集合
* @return 结果 * @return 结果
*/ */
public int deleteBusinessBacklogByIds(Long[] ids); public int deleteBusinessBacklogByIds(Long[] ids);
/** Integer overdueCount(Integer businessId);
* 修改工作待办逾期状态
* @return
*/
int updateBacklogState();
} }
...@@ -14,7 +14,7 @@ import java.util.List; ...@@ -14,7 +14,7 @@ import java.util.List;
/** /**
* 项目详情Mapper接口 * 项目详情Mapper接口
* *
* @author lxl * @author lxl
* @date 2023-05-17 * @date 2023-05-17
*/ */
...@@ -23,7 +23,7 @@ public interface BusinessInfoMapper extends BaseMapper<BusinessInfo> ...@@ -23,7 +23,7 @@ public interface BusinessInfoMapper extends BaseMapper<BusinessInfo>
{ {
/** /**
* 查询项目详情 * 查询项目详情
* *
* @param id 项目详情主键 * @param id 项目详情主键
* @return 项目详情 * @return 项目详情
*/ */
...@@ -45,7 +45,7 @@ public interface BusinessInfoMapper extends BaseMapper<BusinessInfo> ...@@ -45,7 +45,7 @@ public interface BusinessInfoMapper extends BaseMapper<BusinessInfo>
/** /**
* 查询项目详情列表 * 查询项目详情列表
* *
* @param dto 项目详情 * @param dto 项目详情
* @return 项目详情集合 * @return 项目详情集合
*/ */
...@@ -53,7 +53,7 @@ public interface BusinessInfoMapper extends BaseMapper<BusinessInfo> ...@@ -53,7 +53,7 @@ public interface BusinessInfoMapper extends BaseMapper<BusinessInfo>
/** /**
* 新增项目详情 * 新增项目详情
* *
* @param businessInfo 项目详情 * @param businessInfo 项目详情
* @return 结果 * @return 结果
*/ */
...@@ -96,7 +96,7 @@ public interface BusinessInfoMapper extends BaseMapper<BusinessInfo> ...@@ -96,7 +96,7 @@ public interface BusinessInfoMapper extends BaseMapper<BusinessInfo>
* @param userId * @param userId
* @return * @return
*/ */
int isRepetitionProjectName(@Param("projectName") String projectName,@Param("userId") Integer userId); int isRepetitionProjectName(@Param("projectName") String projectName,@Param("userId") Long userId);
int selectCountByStatusAndCustomerId(@Param("status") Integer status,@Param("customerId") String customerId); int selectCountByStatusAndCustomerId(@Param("status") Integer status,@Param("customerId") String customerId);
......
package com.dsk.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsk.system.domain.customer.ContactInfo;
import com.dsk.system.domain.customer.dto.ContactInfoSearchDto;
import com.dsk.system.domain.customer.vo.ContactInfoListVo;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* 用户联系人(CustomerContact)表数据库访问层
*
* @author makejava
* @since 2023-07-25 17:18:05
*/
@Mapper
public interface ContactInfoMapper extends BaseMapper<ContactInfo> {
List<ContactInfoListVo> selectPageList(ContactInfoSearchDto dto);
}
package com.dsk.system.searchService;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson2.JSONObject;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.utils.DskOpenApiUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map;
/**
* @Author liujie
* @ClassName MarketAnalysisServiceImpl
* @Date 2023/5/15 16:40
**/
@Service
public class BusinessOpportunityRadarService {
@Autowired
private DskOpenApiUtil dskOpenApiUtil;
public AjaxResult jskBidNewsPage(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/jskBid/news/page", object);
return BeanUtil.toBean(map, AjaxResult.class);
}
public AjaxResult jskBidTenderPage(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/jskBidTender/page", object);
return BeanUtil.toBean(map, AjaxResult.class);
}
public AjaxResult establishmentPage(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/establishment/page", object);
return BeanUtil.toBean(map, AjaxResult.class);
}
public AjaxResult jskBidPage(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/jskBid/page", object);
return BeanUtil.toBean(map, AjaxResult.class);
}
public AjaxResult landMarketPage(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/landMarket/page", object);
return BeanUtil.toBean(map, AjaxResult.class);
}
public AjaxResult enterpriseIndex(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/enterprice/index", object);
return BeanUtil.toBean(map, AjaxResult.class);
}
public AjaxResult enterprisePage(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/enterprice/page", object);
return BeanUtil.toBean(map, AjaxResult.class);
}
public AjaxResult enterpriseByName(String keyword) {
Map<String, Object> params = new HashMap<>();
params.put("keyword", keyword);
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/enterprice/findByName", params);
return BeanUtil.toBean(map, AjaxResult.class);
}
public AjaxResult bondProjectPage(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/bondProject/page", object);
return BeanUtil.toBean(map, AjaxResult.class);
}
public AjaxResult jskBidPlanPage(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/jskBidPlan/page", object);
return BeanUtil.toBean(map, AjaxResult.class);
}
public AjaxResult getCapitalSourceSelect() {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/jskBidPlan/getCapitalSourceSelect", null);
return BeanUtil.toBean(map, AjaxResult.class);
}
public AjaxResult keywordList() {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/project/keywordList", null);
return BeanUtil.toBean(map, AjaxResult.class);
}
public AjaxResult bidSourceList(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/jskBid/source", object);
return BeanUtil.toBean(map, AjaxResult.class);
}
}
package com.dsk.system.searchService;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson2.JSONObject;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.utils.DskOpenApiUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Map;
/**
* @Author liujie
* @ClassName MarketAnalysisServiceImpl
* @Date 2023/5/15 16:40
**/
@Service
public class MarketAnalysisService {
@Autowired
private DskOpenApiUtil dskOpenApiUtil;
public AjaxResult areaGroupByProvince() {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/areaGroupByProvince", null);
return BeanUtil.toBean(map, AjaxResult.class);
}
public AjaxResult certGroupByMajorAndLevel() {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/certGroupByMajorAndLevel", null);
return BeanUtil.toBean(map, AjaxResult.class);
}
public AjaxResult certGroupByMajorProvinceLevel() {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/certGroupByMajorProvinceLevel", null);
return BeanUtil.toBean(map, AjaxResult.class);
}
public AjaxResult bidMoneyGroupByProjectType(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/bidMoneyGroupByProjectType", object);
return BeanUtil.toBean(map, AjaxResult.class);
}
public AjaxResult bidGroupCountByProjectType(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/bidGroupCountByProjectType", object);
return BeanUtil.toBean(map, AjaxResult.class);
}
public AjaxResult countGroupByProvince(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/countGroupByProvince", object);
return BeanUtil.toBean(map, AjaxResult.class);
}
public AjaxResult countGroupByMonth(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/countGroupByMonth", object);
return BeanUtil.toBean(map, AjaxResult.class);
}
}
package com.dsk.system.service; package com.dsk.system.service;
import com.dsk.common.core.domain.entity.BusinessBacklog; import com.dsk.system.domain.business.BusinessBacklog;
import com.dsk.system.domain.business.vo.BusinessBacklogListVo;
import java.util.List; import java.util.List;
/** /**
* 项目工作待办Service接口 * 项目工作待办Service接口
* *
* @author llx * @author llx
* @date 2023-05-17 * @date 2023-05-17
*/ */
public interface IBusinessBacklogService public interface IBusinessBacklogService
{ {
/** /**
* 查询项目工作待办 * 查询项目工作待办
* *
* @param id 项目工作待办主键 * @param id 项目工作待办主键
* @return 项目工作待办 * @return 项目工作待办
*/ */
...@@ -22,15 +23,15 @@ public interface IBusinessBacklogService ...@@ -22,15 +23,15 @@ public interface IBusinessBacklogService
/** /**
* 查询项目工作待办列表 * 查询项目工作待办列表
* *
* @param businessBacklog 项目工作待办 * @param businessBacklog 项目工作待办
* @return 项目工作待办集合 * @return 项目工作待办集合
*/ */
public List<BusinessBacklog> selectBusinessBacklogList(BusinessBacklog businessBacklog); public List<BusinessBacklogListVo> selectBusinessBacklogList(BusinessBacklog businessBacklog);
/** /**
* 新增项目工作待办 * 新增项目工作待办
* *
* @param businessBacklog 项目工作待办 * @param businessBacklog 项目工作待办
* @return 结果 * @return 结果
*/ */
...@@ -38,7 +39,7 @@ public interface IBusinessBacklogService ...@@ -38,7 +39,7 @@ public interface IBusinessBacklogService
/** /**
* 修改项目工作待办 * 修改项目工作待办
* *
* @param businessBacklog 项目工作待办 * @param businessBacklog 项目工作待办
* @return 结果 * @return 结果
*/ */
...@@ -46,7 +47,7 @@ public interface IBusinessBacklogService ...@@ -46,7 +47,7 @@ public interface IBusinessBacklogService
/** /**
* 批量删除项目工作待办 * 批量删除项目工作待办
* *
* @param ids 需要删除的项目工作待办主键集合 * @param ids 需要删除的项目工作待办主键集合
* @return 结果 * @return 结果
*/ */
...@@ -54,9 +55,12 @@ public interface IBusinessBacklogService ...@@ -54,9 +55,12 @@ public interface IBusinessBacklogService
/** /**
* 删除项目工作待办信息 * 删除项目工作待办信息
* *
* @param id 项目工作待办主键 * @param id 项目工作待办主键
* @return 结果 * @return 结果
*/ */
public int deleteBusinessBacklogById(Long id); public int deleteBusinessBacklogById(Long id);
Integer overdueCount(Integer businessId);
} }
package com.dsk.system.service;
import com.dsk.system.domain.customer.ContactInfo;
import com.dsk.system.domain.customer.dto.ContactInfoSearchDto;
import com.dsk.system.domain.customer.vo.ContactInfoListVo;
import java.util.List;
/**
* 用户联系人(CustomerContact)表服务接口
*
* @author makejava
* @since 2023-07-25 17:18:05
*/
public interface IContactInfoService {
/**
* 查询数据列表
*/
List<ContactInfoListVo> selectList(ContactInfoSearchDto dto);
/**
* 通过ID查询单条数据
*
* @param id 主键
* @return 实例对象
*/
ContactInfo selectById(Long id);
/**
* 新增数据
*
* @param bean 实例对象
* @return 实例对象
*/
boolean insert(ContactInfo bean);
/**
* 修改数据
*
* @param bean 实例对象
* @return 实例对象
*/
boolean update(ContactInfo bean);
/**
* 通过主键删除数据
*
* @param id 主键
* @return 是否成功
*/
boolean deleteById(Long id);
}
...@@ -39,4 +39,6 @@ public interface ICustomerService { ...@@ -39,4 +39,6 @@ public interface ICustomerService {
boolean historyClaim(String companyName); boolean historyClaim(String companyName);
Customer selectByCompanyNameAndUserId(String companyName);
} }
package com.dsk.system.service.impl; package com.dsk.system.service.impl;
import com.dsk.common.core.domain.entity.BusinessBacklog; import cn.hutool.core.bean.BeanException;
import cn.hutool.core.util.ObjectUtil;
import com.dsk.system.domain.business.BusinessBacklog;
import com.dsk.common.exception.base.BaseException; import com.dsk.common.exception.base.BaseException;
import com.dsk.common.utils.DateUtils; import com.dsk.common.utils.DateUtils;
import com.dsk.system.domain.business.vo.BusinessBacklogListVo;
import com.dsk.system.mapper.BusinessBacklogMapper; import com.dsk.system.mapper.BusinessBacklogMapper;
import com.dsk.system.service.IBusinessBacklogService; import com.dsk.system.service.IBusinessBacklogService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
...@@ -22,9 +25,8 @@ import java.util.List; ...@@ -22,9 +25,8 @@ import java.util.List;
*/ */
@Service @Service
@Slf4j @Slf4j
public class BusinessBacklogServiceImpl implements IBusinessBacklogService public class BusinessBacklogServiceImpl implements IBusinessBacklogService {
{ @Resource
@Autowired
private BusinessBacklogMapper businessBacklogMapper; private BusinessBacklogMapper businessBacklogMapper;
/** /**
...@@ -34,8 +36,7 @@ public class BusinessBacklogServiceImpl implements IBusinessBacklogService ...@@ -34,8 +36,7 @@ public class BusinessBacklogServiceImpl implements IBusinessBacklogService
* @return 项目工作待办 * @return 项目工作待办
*/ */
@Override @Override
public BusinessBacklog selectBusinessBacklogById(Integer id) public BusinessBacklog selectBusinessBacklogById(Integer id) {
{
return businessBacklogMapper.selectBusinessBacklogById(id); return businessBacklogMapper.selectBusinessBacklogById(id);
} }
...@@ -46,8 +47,10 @@ public class BusinessBacklogServiceImpl implements IBusinessBacklogService ...@@ -46,8 +47,10 @@ public class BusinessBacklogServiceImpl implements IBusinessBacklogService
* @return 项目工作待办 * @return 项目工作待办
*/ */
@Override @Override
public List<BusinessBacklog> selectBusinessBacklogList(BusinessBacklog businessBacklog) public List<BusinessBacklogListVo> selectBusinessBacklogList(BusinessBacklog businessBacklog) {
{ if (ObjectUtil.isEmpty(businessBacklog.getBusinessId())) {
throw new BeanException("项目id不能为空!");
}
return businessBacklogMapper.selectBusinessBacklogList(businessBacklog); return businessBacklogMapper.selectBusinessBacklogList(businessBacklog);
} }
...@@ -59,12 +62,8 @@ public class BusinessBacklogServiceImpl implements IBusinessBacklogService ...@@ -59,12 +62,8 @@ public class BusinessBacklogServiceImpl implements IBusinessBacklogService
*/ */
@Override @Override
@Transactional @Transactional
public int insertBusinessBacklog(BusinessBacklog businessBacklog) public int insertBusinessBacklog(BusinessBacklog businessBacklog) {
{ if (businessBacklog.getDueTime().before(new Date())) throw new BaseException("到期时间必须大于当前时间");
if(businessBacklog.getFinishTime().before(new Date())) throw new BaseException("完成时间必须大于当前时间");
businessBacklog.setCreateTime(DateUtils.getNowDate());
//新增记录,状态默认 进行中
businessBacklog.setState(1);
return businessBacklogMapper.insertBusinessBacklog(businessBacklog); return businessBacklogMapper.insertBusinessBacklog(businessBacklog);
} }
...@@ -76,16 +75,23 @@ public class BusinessBacklogServiceImpl implements IBusinessBacklogService ...@@ -76,16 +75,23 @@ public class BusinessBacklogServiceImpl implements IBusinessBacklogService
*/ */
@Override @Override
@Transactional @Transactional
public int updateBusinessBacklog(BusinessBacklog businessBacklog) public int updateBusinessBacklog(BusinessBacklog businessBacklog) {
{ if (ObjectUtil.isEmpty(businessBacklog.getId())) {
//从完成状态修改到为完成,判断是否已逾期 throw new BeanException("id不能为空!");
BusinessBacklog backlog = selectBusinessBacklogById(businessBacklog.getId()); }
if (businessBacklog.getState() == 1 && backlog.getState() == 2 && backlog.getFinishTime().before(new Date())) { if (ObjectUtil.isEmpty(businessBacklog.getState())) {
businessBacklog.setState(0); throw new BeanException("状态不能为空!");
businessBacklog.setUpdateTime(new Date()); }
return businessBacklogMapper.updateBusinessBacklog(businessBacklog); switch (businessBacklog.getState()) {
case 0:
businessBacklog.setFinishTime(null);
break;
case 1:
businessBacklog.setFinishTime(new Date());
break;
default:
throw new BeanException("状态参数错误!");
} }
businessBacklog.setUpdateTime(new Date());
return businessBacklogMapper.updateBusinessBacklog(businessBacklog); return businessBacklogMapper.updateBusinessBacklog(businessBacklog);
} }
...@@ -96,8 +102,7 @@ public class BusinessBacklogServiceImpl implements IBusinessBacklogService ...@@ -96,8 +102,7 @@ public class BusinessBacklogServiceImpl implements IBusinessBacklogService
* @return 结果 * @return 结果
*/ */
@Override @Override
public int deleteBusinessBacklogByIds(Long[] ids) public int deleteBusinessBacklogByIds(Long[] ids) {
{
return businessBacklogMapper.deleteBusinessBacklogByIds(ids); return businessBacklogMapper.deleteBusinessBacklogByIds(ids);
} }
...@@ -108,17 +113,12 @@ public class BusinessBacklogServiceImpl implements IBusinessBacklogService ...@@ -108,17 +113,12 @@ public class BusinessBacklogServiceImpl implements IBusinessBacklogService
* @return 结果 * @return 结果
*/ */
@Override @Override
public int deleteBusinessBacklogById(Long id) public int deleteBusinessBacklogById(Long id) {
{
return businessBacklogMapper.deleteBusinessBacklogById(id); return businessBacklogMapper.deleteBusinessBacklogById(id);
} }
/** @Override
* 定时修改工作待办逾期状态 public Integer overdueCount(Integer businessId) {
*/ return businessBacklogMapper.overdueCount(businessId);
@Scheduled(cron = "0 0 0 * * ?")//每天凌晨0点执行一次
public void judgeOverdue() {
int updateBacklogState = businessBacklogMapper.updateBacklogState();
if (updateBacklogState > 1) log.info("定时修改工作待办逾期状态");
} }
} }
package com.dsk.system.service.impl;
import cn.hutool.core.bean.BeanException;
import com.dsk.common.core.domain.model.LoginUser;
import com.dsk.common.utils.SecurityUtils;
import com.dsk.system.domain.customer.ContactInfo;
import com.dsk.system.domain.customer.dto.ContactInfoSearchDto;
import com.dsk.system.domain.customer.vo.ContactInfoListVo;
import com.dsk.system.mapper.ContactInfoMapper;
import com.dsk.system.service.IContactInfoService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import javax.annotation.Resource;
import java.util.List;
/**
* 用户联系人(CustomerContact)表服务实现类
*
* @author makejava
* @since 2023-07-25 17:18:04
*/
@Slf4j
@Service
public class ContactInfoServiceImpl implements IContactInfoService {
@Resource
private ContactInfoMapper baseMapper;
@Override
public List<ContactInfoListVo> selectList(ContactInfoSearchDto dto) {
return baseMapper.selectPageList(dto);
}
@Override
public ContactInfo selectById(Long id) {
return baseMapper.selectById(id);
}
@Override
public boolean insert(ContactInfo bean) {
verifyParameter(bean);
return baseMapper.insert(bean) > 0;
}
@Override
public boolean update(ContactInfo bean) {
if (ObjectUtils.isEmpty(bean.getId())) throw new BeanException("id不能为空!");
verifyParameter(bean);
return baseMapper.updateById(bean) > 0;
}
@Override
public boolean deleteById(Long id) {
return baseMapper.deleteById(id) > 0;
}
/**
* 参数验证
*/
private void verifyParameter(ContactInfo bean) {
// if (ObjectUtils.isEmpty(bean.getCustomerId())) throw new BeanException("客户id不能为空!");
LoginUser loginUser = SecurityUtils.getLoginUser();
bean.setCreateBy(loginUser.getUser().getNickName());
bean.setUpdateId(loginUser.getUserId());
bean.setUpdateBy(loginUser.getUser().getNickName());
}
}
...@@ -15,6 +15,7 @@ import com.dsk.system.domain.customer.vo.*; ...@@ -15,6 +15,7 @@ import com.dsk.system.domain.customer.vo.*;
import com.dsk.system.dskService.EnterpriseService; import com.dsk.system.dskService.EnterpriseService;
import com.dsk.system.mapper.CustomerMapper; import com.dsk.system.mapper.CustomerMapper;
import com.dsk.system.mapper.CustomerUserMapper; import com.dsk.system.mapper.CustomerUserMapper;
import com.dsk.system.searchService.BusinessOpportunityRadarService;
import com.dsk.system.service.IBusinessInfoService; import com.dsk.system.service.IBusinessInfoService;
import com.dsk.system.service.ICustomerService; import com.dsk.system.service.ICustomerService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -25,6 +26,7 @@ import org.springframework.util.ObjectUtils; ...@@ -25,6 +26,7 @@ import org.springframework.util.ObjectUtils;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 客户信息表(Customer)表服务实现类 * 客户信息表(Customer)表服务实现类
...@@ -44,6 +46,8 @@ public class CustomerServiceImpl implements ICustomerService { ...@@ -44,6 +46,8 @@ public class CustomerServiceImpl implements ICustomerService {
private IBusinessInfoService businessInfoService; private IBusinessInfoService businessInfoService;
@Autowired @Autowired
private EnterpriseService enterpriseService; private EnterpriseService enterpriseService;
@Autowired
private BusinessOpportunityRadarService opportunityRadarService;
@Override @Override
public List<CustomerListVo> selectList(CustomerSearchDto dto) { public List<CustomerListVo> selectList(CustomerSearchDto dto) {
...@@ -65,6 +69,7 @@ public class CustomerServiceImpl implements ICustomerService { ...@@ -65,6 +69,7 @@ public class CustomerServiceImpl implements ICustomerService {
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public boolean add(Customer customer) { public boolean add(Customer customer) {
dealWithcustomerData(customer);
if (ObjectUtils.isEmpty(customer.getUipId())) { if (ObjectUtils.isEmpty(customer.getUipId())) {
try { try {
R res = enterpriseService.getUipId(customer.getCompanyName()); R res = enterpriseService.getUipId(customer.getCompanyName());
...@@ -153,6 +158,11 @@ public class CustomerServiceImpl implements ICustomerService { ...@@ -153,6 +158,11 @@ public class CustomerServiceImpl implements ICustomerService {
return updateClaimStatus(companyName, 0); return updateClaimStatus(companyName, 0);
} }
@Override
public Customer selectByCompanyNameAndUserId(String companyName) {
return baseMapper.selectByCompanyNameAndUserId(companyName, SecurityUtils.getUserId());
}
//修改客户认领状态 //修改客户认领状态
private boolean updateClaimStatus(String companyName, Integer status) { private boolean updateClaimStatus(String companyName, Integer status) {
Customer cus = baseMapper.selectByCompanyNameAndUserId(companyName, SecurityUtils.getUserId()); Customer cus = baseMapper.selectByCompanyNameAndUserId(companyName, SecurityUtils.getUserId());
...@@ -167,5 +177,39 @@ public class CustomerServiceImpl implements ICustomerService { ...@@ -167,5 +177,39 @@ public class CustomerServiceImpl implements ICustomerService {
return customerUserMapper.updateById(customerUser) == 1; return customerUserMapper.updateById(customerUser) == 1;
} }
private void dealWithcustomerData(Customer customer) {
if (ObjectUtils.isEmpty(customer.getCompanyName())) throw new BeanException("企业名称不能为空");
if (ObjectUtils.isEmpty(customer.getCompanyId())) {
try {
Map<String, Object> map = opportunityRadarService.enterpriseByName(customer.getCompanyName());
if (!ObjectUtils.isEmpty(map.get("data"))) {
customer.setCompanyId(MapUtil.getInt(BeanUtil.beanToMap(map.get("data")), "jskEid"));
if (ObjectUtils.isEmpty(customer.getLegalPerson())) {
customer.setLegalPerson(MapUtil.getStr(map, "legalPerson"));
}
if (ObjectUtils.isEmpty(customer.getRegisterCapital())) {
customer.setRegisterCapital(MapUtil.getStr(map, "registeredCapitalStr"));
}
if (ObjectUtils.isEmpty(customer.getProvinceId())) {
customer.setProvinceId(MapUtil.getInt(map, "provinceId"));
}
if (ObjectUtils.isEmpty(customer.getCityId())) {
customer.setCityId(MapUtil.getInt(map, "cityId"));
}
if (ObjectUtils.isEmpty(customer.getDistrictId())) {
customer.setDistrictId(MapUtil.getInt(map, "countyId"));
}
if (ObjectUtils.isEmpty(customer.getRegisterAddress())) {
customer.setRegisterAddress(MapUtil.getStr(map, "domicile"));
}
if (ObjectUtils.isEmpty(customer.getCreditCode())) {
customer.setCreditCode(MapUtil.getStr(map, "creditCode"));
}
}
} catch (Exception e) {
log.debug("获取企业id错误!error:{}", e.getMessage());
}
}
}
} }
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dsk.system.mapper.BusinessBacklogMapper"> <mapper namespace="com.dsk.system.mapper.BusinessBacklogMapper">
<resultMap type="com.dsk.common.core.domain.entity.BusinessBacklog" id="BusinessBacklogResult"> <resultMap type="com.dsk.system.domain.business.BusinessBacklog" id="BusinessBacklogResult">
<result property="id" column="id"/> <result property="id" column="id"/>
<result property="businessId" column="business_id"/> <result property="businessId" column="business_id"/>
<result property="target" column="target"/> <result property="target" column="target"/>
...@@ -21,71 +21,48 @@ ...@@ -21,71 +21,48 @@
target, target,
task, task,
finish_time, finish_time,
state, due_time,
if(due_time &lt; now() and state = 0, 2 ,state) state,
create_time, create_time,
update_time update_time
from business_backlog from business_backlog
</sql> </sql>
<select id="selectBusinessBacklogList" parameterType="com.dsk.common.core.domain.entity.BusinessBacklog" <select id="selectBusinessBacklogList" parameterType="com.dsk.system.domain.business.vo.BusinessBacklogListVo"
resultMap="BusinessBacklogResult"> resultMap="BusinessBacklogResult">
<include refid="selectBusinessBacklogVo"/> <include refid="selectBusinessBacklogVo"/>
<where> where business_id = #{businessId}
<if test="businessId != null ">and business_id = #{businessId}</if> <if test="target != null and target != ''">and target = #{target}</if>
<if test="target != null and target != ''">and target = #{target}</if> <if test="task != null and task != ''">and task = #{task}</if>
<if test="task != null and task != ''">and task = #{task}</if> <if test="finishTime != null ">and finish_time = #{finishTime}</if>
<if test="finishTime != null ">and finish_time = #{finishTime}</if> <if test="state != null ">and state = #{state}</if>
<if test="state != null ">and state = #{state}</if>
</where>
ORDER BY create_time DESC ORDER BY create_time DESC
</select> </select>
<select id="selectBusinessBacklogById" parameterType="Long" resultMap="BusinessBacklogResult"> <select id="selectBusinessBacklogById" resultMap="BusinessBacklogResult">
<include refid="selectBusinessBacklogVo"/> <include refid="selectBusinessBacklogVo"/>
where id = #{id} where id = #{id}
</select> </select>
<insert id="insertBusinessBacklog" parameterType="com.dsk.common.core.domain.entity.BusinessBacklog" <insert id="insertBusinessBacklog" parameterType="com.dsk.system.domain.business.BusinessBacklog"
useGeneratedKeys="true" keyProperty="id"> useGeneratedKeys="true" keyProperty="id">
insert into business_backlog insert into business_backlog
<trim prefix="(" suffix=")" suffixOverrides=","> <trim prefix="(" suffix=")" suffixOverrides=",">
<if test="businessId != null">business_id,</if> <if test="businessId != null">business_id,</if>
<if test="target != null">target,</if> <if test="target != null">target,</if>
<if test="task != null">task,</if> <if test="task != null">task,</if>
<if test="finishTime != null">finish_time,</if> <if test="dueTime != null">due_time,</if>
<if test="state != null">state,</if>
<if test="createTime != null">create_time,</if>
<if test="updateTime != null">update_time,</if>
</trim> </trim>
<trim prefix="values (" suffix=")" suffixOverrides=","> <trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="businessId != null">#{businessId},</if> <if test="businessId != null">#{businessId},</if>
<if test="target != null">#{target},</if> <if test="target != null">#{target},</if>
<if test="task != null">#{task},</if> <if test="task != null">#{task},</if>
<if test="finishTime != null">#{finishTime},</if> <if test="dueTime != null">#{dueTime},</if>
<if test="state != null">#{state},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateTime != null">#{updateTime},</if>
</trim> </trim>
</insert> </insert>
<update id="updateBusinessBacklog" parameterType="com.dsk.common.core.domain.entity.BusinessBacklog"> <update id="updateBusinessBacklog" parameterType="com.dsk.system.domain.business.BusinessBacklog">
update business_backlog update business_backlog set finish_time = #{finishTime}, state = #{state} where id = #{id}
<trim prefix="SET" suffixOverrides=",">
<if test="businessId != null">business_id = #{businessId},</if>
<if test="target != null">target = #{target},</if>
<if test="task != null">task = #{task},</if>
<if test="finishTime != null">finish_time = #{finishTime},</if>
<if test="state != null">state = #{state},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
</trim>
where id = #{id}
</update>
<update id="updateBacklogState">
update business_backlog
set state = 0
where state = 1
and finish_time &lt; CURRENT_TIMESTAMP
</update> </update>
<delete id="deleteBusinessBacklogById" parameterType="Long"> <delete id="deleteBusinessBacklogById" parameterType="Long">
...@@ -100,4 +77,8 @@ ...@@ -100,4 +77,8 @@
#{id} #{id}
</foreach> </foreach>
</delete> </delete>
</mapper>
\ No newline at end of file <select id="overdueCount" resultType="java.lang.Integer">
select count(id) from business_backlog where business_id = #{businessId} and due_time &lt; now() and state = 0
</select>
</mapper>
...@@ -356,8 +356,6 @@ ...@@ -356,8 +356,6 @@
<if test="projectType != null">project_type = #{projectType},</if> <if test="projectType != null">project_type = #{projectType},</if>
<if test="projectCategory != null">project_category = #{projectCategory},</if> <if test="projectCategory != null">project_category = #{projectCategory},</if>
<if test="isPrivate != null">is_private = #{isPrivate},</if> <if test="isPrivate != null">is_private = #{isPrivate},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="status != null">status = #{status},</if> <if test="status != null">status = #{status},</if>
<if test="customerId != null">customer_id = #{customerId},</if> <if test="customerId != null">customer_id = #{customerId},</if>
<if test="evaluationBidWay != null">evaluation_bid_way = #{evaluationBidWay},</if> <if test="evaluationBidWay != null">evaluation_bid_way = #{evaluationBidWay},</if>
......
...@@ -70,8 +70,6 @@ ...@@ -70,8 +70,6 @@
<if test="companyRole != null">company_role,</if> <if test="companyRole != null">company_role,</if>
<if test="responsiblePerson != null">responsible_person,</if> <if test="responsiblePerson != null">responsible_person,</if>
<if test="phone != null">phone,</if> <if test="phone != null">phone,</if>
<if test="createTime != null">create_time,</if>
<if test="updateTime != null">update_time,</if>
<if test="companyType != null">company_type,</if> <if test="companyType != null">company_type,</if>
<if test="companyUipId != null">company_uip_id,</if> <if test="companyUipId != null">company_uip_id,</if>
</trim> </trim>
...@@ -83,8 +81,6 @@ ...@@ -83,8 +81,6 @@
<if test="companyRole != null">#{companyRole},</if> <if test="companyRole != null">#{companyRole},</if>
<if test="responsiblePerson != null">#{responsiblePerson},</if> <if test="responsiblePerson != null">#{responsiblePerson},</if>
<if test="phone != null">#{phone},</if> <if test="phone != null">#{phone},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateTime != null">#{updateTime},</if>
<if test="companyType != null">#{companyType},</if> <if test="companyType != null">#{companyType},</if>
<if test="companyUipId != null">#{companyUipId},</if> <if test="companyUipId != null">#{companyUipId},</if>
</trim> </trim>
...@@ -120,4 +116,4 @@ ...@@ -120,4 +116,4 @@
#{id} #{id}
</foreach> </foreach>
</delete> </delete>
</mapper> </mapper>
\ No newline at end of file
<?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.dsk.system.mapper.ContactInfoMapper">
<select id="selectPageList" resultType="com.dsk.system.domain.customer.vo.ContactInfoListVo">
select
cc.id, cc.customer_id, cc.project_id, bi.project_name, cc.name, cc.sex, cc.role,
cc.position, cc.contact_information, cc.company_id, cc.uip_id, cc.company_name,
cc.update_by
from contact_info cc
left join business_info bi on cc.project_id = bi.id
<where>
<if test="cc.customerId != null and cc.customerId !='' "> and (cc.customer_id = #{customerId} or cc.company_name =#{companyName})</if>
<if test="cc.projectId != null "> and cc.project_id = #{projectId} </if>
</where>
order by cc.create_time desc
</select>
</mapper>
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