Commit 33b71214 by 丁伟峰

技术员甘特图,从"工作区",移到"技术员"模块

1 parent a89acf66
...@@ -4,10 +4,14 @@ import com.dituhui.pea.common.BusinessException; ...@@ -4,10 +4,14 @@ import com.dituhui.pea.common.BusinessException;
import com.dituhui.pea.common.Result; import com.dituhui.pea.common.Result;
import com.dituhui.pea.order.dto.EngineerBusinessUpdateReqDTO; import com.dituhui.pea.order.dto.EngineerBusinessUpdateReqDTO;
import com.dituhui.pea.order.dto.EngineerSkillUpdateReqDTO; import com.dituhui.pea.order.dto.EngineerSkillUpdateReqDTO;
import com.dituhui.pea.order.dto.EngineersGanttReqDTO;
import com.dituhui.pea.order.service.EngineerService; import com.dituhui.pea.order.service.EngineerService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@Slf4j
@RestController @RestController
@RequestMapping("/pea-order") @RequestMapping("/pea-order")
public class EngineerController { public class EngineerController {
...@@ -111,4 +115,17 @@ public class EngineerController { ...@@ -111,4 +115,17 @@ public class EngineerController {
} }
return res; return res;
} }
@PostMapping(value = "/engineer/schedule/gantt")
public Result<?> getEngineersGanttList(@Validated @RequestBody EngineersGanttReqDTO reqDTO) {
// todo 待移到 controller的engineer中
log.info("getEngineersGanttList: {}", reqDTO);
Result<?> res = null;
try {
res = engineerService.getEngineersGanttList(reqDTO);
} catch (BusinessException e) {
return Result.failed(e.getMessage());
}
return res;
}
} }
...@@ -2,13 +2,14 @@ package com.dituhui.pea.order.controller; ...@@ -2,13 +2,14 @@ package com.dituhui.pea.order.controller;
import com.dituhui.pea.common.BusinessException; import com.dituhui.pea.common.BusinessException;
import com.dituhui.pea.common.Result; import com.dituhui.pea.common.Result;
import com.dituhui.pea.order.dto.EngineersGanttReqDTO;
import com.dituhui.pea.order.dto.OrderChangeListReqDTO; import com.dituhui.pea.order.dto.OrderChangeListReqDTO;
import com.dituhui.pea.order.service.WorkbenchService; import com.dituhui.pea.order.service.WorkbenchService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Slf4j @Slf4j
@RestController @RestController
...@@ -28,17 +29,4 @@ public class WorkbenchController { ...@@ -28,17 +29,4 @@ public class WorkbenchController {
} }
return res; return res;
} }
@PostMapping(value = "/engineer/schedule/gantt")
public Result<?> getEngineersGanttList(@Validated @RequestBody EngineersGanttReqDTO reqDTO) {
// todo 待移到 controller的engineer中
log.info("getEngineersGanttList: {}", reqDTO);
Result<?> res = null;
try {
res = workbenchService.getEngineersGanttList(reqDTO);
} catch (BusinessException e) {
return Result.failed(e.getMessage());
}
return res;
}
} }
package com.dituhui.pea.order.service; package com.dituhui.pea.order.service;
import com.dituhui.pea.common.Result; import com.dituhui.pea.common.Result;
import com.dituhui.pea.order.dto.EngineersGanttReqDTO;
import java.util.List; import java.util.List;
...@@ -21,4 +22,6 @@ public interface EngineerService { ...@@ -21,4 +22,6 @@ public interface EngineerService {
// 技术员业务属性配置修改 // 技术员业务属性配置修改
Result<?> engineerBusinessUpdate(String engineerCode, Integer maxNum, Integer maxMutine, String departure, String priority); Result<?> engineerBusinessUpdate(String engineerCode, Integer maxNum, Integer maxMutine, String departure, String priority);
Result<?> getEngineersGanttList(EngineersGanttReqDTO ganttReqDTO);
} }
...@@ -6,6 +6,4 @@ import com.dituhui.pea.order.dto.OrderChangeListReqDTO; ...@@ -6,6 +6,4 @@ import com.dituhui.pea.order.dto.OrderChangeListReqDTO;
public interface WorkbenchService { public interface WorkbenchService {
Result<?> getOrderChangeList(OrderChangeListReqDTO orderChangeListReqDTO); Result<?> getOrderChangeList(OrderChangeListReqDTO orderChangeListReqDTO);
Result<?> getEngineersGanttList(EngineersGanttReqDTO ganttReqDTO);
} }
...@@ -2,24 +2,16 @@ package com.dituhui.pea.order.service.impl; ...@@ -2,24 +2,16 @@ package com.dituhui.pea.order.service.impl;
import com.dituhui.pea.common.BusinessException; import com.dituhui.pea.common.BusinessException;
import com.dituhui.pea.common.Result; import com.dituhui.pea.common.Result;
import com.dituhui.pea.order.dao.EngineerBusinessMPDao; import com.dituhui.pea.order.dao.*;
import com.dituhui.pea.order.dao.EngineerInfoMPDao; import com.dituhui.pea.order.dto.*;
import com.dituhui.pea.order.dao.EngineerSkillMPDao; import com.dituhui.pea.order.entity.*;
import com.dituhui.pea.order.dao.OrgGroupMPDao;
import com.dituhui.pea.order.dto.EngineerBusinessListResp;
import com.dituhui.pea.order.dto.EngineerInfoListResp;
import com.dituhui.pea.order.dto.EngineerSkillListResp;
import com.dituhui.pea.order.entity.EngineerBusiness;
import com.dituhui.pea.order.entity.EngineerInfo;
import com.dituhui.pea.order.entity.EngineerSkill;
import com.dituhui.pea.order.entity.OrgGroup;
import com.dituhui.pea.order.service.EngineerService; import com.dituhui.pea.order.service.EngineerService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.slf4j.Logger; import lombok.extern.slf4j.Slf4j;
import org.slf4j.LoggerFactory; import org.apache.commons.lang3.StringUtils;
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 org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
...@@ -30,433 +22,520 @@ import java.time.format.DateTimeFormatter; ...@@ -30,433 +22,520 @@ import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Slf4j
@Service @Service
public class EngineerServiceImpl implements EngineerService { public class EngineerServiceImpl implements EngineerService {
private final Logger logger = LoggerFactory.getLogger(getClass()); @Autowired
private EngineerInfoMPDao engineerInfoMPDao;
@Autowired
private EngineerInfoMPDao engineerInfoMPDao; @Autowired
private EngineerSkillMPDao engineerSkillMPDao;
@Autowired
private EngineerSkillMPDao engineerSkillMPDao; @Autowired
private OrgGroupMPDao orgGroupMPDao;
@Autowired
private OrgGroupMPDao orgGroupMPDao; @Autowired
private EngineerBusinessMPDao engineerBusinessDao;
@Autowired
private EngineerBusinessMPDao engineerBusinessDao; @Autowired
private OrderRequestDao orderRequestDao;
@Transactional
@Override @Autowired
public Result<?> getEngineerInfoList(long page, long size) { private OrderAppointmentDao orderAppointmentDao;
// 查询工程师信息
IPage<EngineerInfo> pg = this.queryEngineerInfoIPage(page, size); @Autowired
private EngineerInfoDao engineerInfoDao;
List<EngineerInfo> records = pg.getRecords();
@Autowired
// 获取groupIds private CapacityEngineerStatDao capacityEngineerStatDao;
List<String> groupIds = records.stream().map(EngineerInfo::getGroupId).collect(Collectors.toList());
@Transactional
// 获取Map<groupId, groupName> @Override
HashMap<String, String> groupNames = this.queryGroupNames(groupIds); public Result<?> getEngineerInfoList(long page, long size) {
// 查询工程师信息
// 设置返回值 IPage<EngineerInfo> pg = this.queryEngineerInfoIPage(page, size);
EngineerInfoListResp res = new EngineerInfoListResp();
res.setContent(this.packEngineerInfos(records, groupNames)); List<EngineerInfo> records = pg.getRecords();
res.setTotal(pg.getTotal());
res.setPages(pg.getPages()); // 获取groupIds
res.setPageCurrent(pg.getCurrent()); List<String> groupIds = records.stream().map(EngineerInfo::getGroupId).collect(Collectors.toList());
res.setPageSize(pg.getSize());
// 获取Map<groupId, groupName>
return Result.success(res); HashMap<String, String> groupNames = this.queryGroupNames(groupIds);
}
// 设置返回值
@Override EngineerInfoListResp res = new EngineerInfoListResp();
public Result<?> getEngineerInfoDetail(String engineerCode) throws BusinessException { res.setContent(this.packEngineerInfos(records, groupNames));
// 获取技术员基础信息详情 res.setTotal(pg.getTotal());
res.setPages(pg.getPages());
// 获取技术员列表 res.setPageCurrent(pg.getCurrent());
List<EngineerInfo> records = this.queryEngineerInfos(engineerCode); res.setPageSize(pg.getSize());
if (records.isEmpty()) {
throw new BusinessException("技术员不存在"); return Result.success(res);
} }
List<String> groupIds = records.stream().map(EngineerInfo::getGroupId).collect(Collectors.toList()); @Override
HashMap<String, String> groupNames = this.queryGroupNames(groupIds); public Result<?> getEngineerInfoDetail(String engineerCode) throws BusinessException {
// 获取技术员基础信息详情
List<EngineerInfoListResp.EngineerInfo> items = this.packEngineerInfos(records, groupNames);
if (items.isEmpty()) { // 获取技术员列表
throw new BusinessException("技术员不存在"); List<EngineerInfo> records = this.queryEngineerInfos(engineerCode);
} if (records.isEmpty()) {
return Result.success(items.get(0)); throw new BusinessException("技术员不存在");
} }
@Transactional List<String> groupIds = records.stream().map(EngineerInfo::getGroupId).collect(Collectors.toList());
@Override HashMap<String, String> groupNames = this.queryGroupNames(groupIds);
public Result<?> getEngineerSkillList(long page, long size) {
// 获取技术员技能列表 List<EngineerInfoListResp.EngineerInfo> items = this.packEngineerInfos(records, groupNames);
IPage<EngineerInfo> pg = this.queryEngineerInfoIPage(page, size); if (items.isEmpty()) {
List<EngineerInfo> engineers = pg.getRecords(); throw new BusinessException("技术员不存在");
}
EngineerSkillListResp res = new EngineerSkillListResp(); return Result.success(items.get(0));
res.setTotal(pg.getTotal()); }
res.setPages(pg.getPages());
res.setPageCurrent(pg.getCurrent()); @Transactional
res.setPageSize(pg.getSize()); @Override
res.setContent(this.packEngineerSkills(engineers)); public Result<?> getEngineerSkillList(long page, long size) {
return Result.success(res); // 获取技术员技能列表
} IPage<EngineerInfo> pg = this.queryEngineerInfoIPage(page, size);
List<EngineerInfo> engineers = pg.getRecords();
@Override
public Result<?> getEngineerSkillDetail(String engineerCode) throws BusinessException { EngineerSkillListResp res = new EngineerSkillListResp();
// 获取工程师技能详情 res.setTotal(pg.getTotal());
List<EngineerInfo> engineers = this.queryEngineerInfos(engineerCode); res.setPages(pg.getPages());
if (engineers.isEmpty()) { res.setPageCurrent(pg.getCurrent());
throw new BusinessException("技术员不存在"); res.setPageSize(pg.getSize());
} res.setContent(this.packEngineerSkills(engineers));
List<EngineerSkillListResp.EngineerSkill> items = this.packEngineerSkills(engineers); return Result.success(res);
if (items.isEmpty()) { }
throw new BusinessException("技术员不存在");
} @Override
return Result.success(items.get(0)); public Result<?> getEngineerSkillDetail(String engineerCode) throws BusinessException {
} // 获取工程师技能详情
List<EngineerInfo> engineers = this.queryEngineerInfos(engineerCode);
@Transactional if (engineers.isEmpty()) {
@Override throw new BusinessException("技术员不存在");
public Result<?> engineerSkillUpdate(String engineerCode, List<String> categoryIds) { }
// 更新技术员技能 List<EngineerSkillListResp.EngineerSkill> items = this.packEngineerSkills(engineers);
if (items.isEmpty()) {
// 先将所有技能更新为0-不可用状态 throw new BusinessException("技术员不存在");
LambdaUpdateWrapper<EngineerSkill> wrapper = new LambdaUpdateWrapper<>(); }
wrapper.eq(EngineerSkill::getEngineerCode, engineerCode).set(EngineerSkill::getStatus, 0); return Result.success(items.get(0));
engineerSkillMPDao.update(null, wrapper); }
if (categoryIds.isEmpty()) {
return null; @Transactional
} @Override
public Result<?> engineerSkillUpdate(String engineerCode, List<String> categoryIds) {
// 更新categoryIds状态为1 // 更新技术员技能
wrapper.eq(EngineerSkill::getEngineerCode, engineerCode);
wrapper.in(EngineerSkill::getCategoryId, categoryIds); // 先将所有技能更新为0-不可用状态
wrapper.set(EngineerSkill::getStatus, 1); LambdaUpdateWrapper<EngineerSkill> wrapper = new LambdaUpdateWrapper<>();
int n = engineerSkillMPDao.update(null, wrapper); wrapper.eq(EngineerSkill::getEngineerCode, engineerCode).set(EngineerSkill::getStatus, 0);
if (categoryIds.size() == n) { engineerSkillMPDao.update(null, wrapper);
// 更新记录条数等于提交记录条数 if (categoryIds.isEmpty()) {
return null; return null;
} }
// 可能存在engineerSkill表不存在的记录,需要补充录入 // 更新categoryIds状态为1
List<Integer> statuses = new ArrayList<Integer>(Arrays.asList(1, 0)); wrapper.eq(EngineerSkill::getEngineerCode, engineerCode);
List<String> engineerCodes = new ArrayList<>(Collections.singletonList(engineerCode)); wrapper.in(EngineerSkill::getCategoryId, categoryIds);
HashMap<String, List<String>> engineerSkills = this.queryEngineerSkills(engineerCodes, statuses); wrapper.set(EngineerSkill::getStatus, 1);
int n = engineerSkillMPDao.update(null, wrapper);
Set<String> sInput = new HashSet<>(categoryIds); if (categoryIds.size() == n) {
Set<String> sDB = new HashSet<>(engineerSkills.get(engineerCode)); // 更新记录条数等于提交记录条数
sInput.removeAll(sDB); return null;
for (String categoryId : sInput) { }
EngineerSkill e = new EngineerSkill();
e.setEngineerCode(engineerCode); // 可能存在engineerSkill表不存在的记录,需要补充录入
e.setCategoryId(categoryId); List<Integer> statuses = new ArrayList<Integer>(Arrays.asList(1, 0));
e.setStatus(1); List<String> engineerCodes = new ArrayList<>(Collections.singletonList(engineerCode));
engineerSkillMPDao.insert(e); HashMap<String, List<String>> engineerSkills = this.queryEngineerSkills(engineerCodes, statuses);
}
return null; Set<String> sInput = new HashSet<>(categoryIds);
} Set<String> sDB = new HashSet<>(engineerSkills.get(engineerCode));
sInput.removeAll(sDB);
@Transactional for (String categoryId : sInput) {
@Override EngineerSkill e = new EngineerSkill();
public Result<?> getEngineerBusinessList(long page, long size) { e.setEngineerCode(engineerCode);
// 技术员业务属性配置列表 e.setCategoryId(categoryId);
e.setStatus(1);
// 查询技术员列表 engineerSkillMPDao.insert(e);
IPage<EngineerInfo> pg = this.queryEngineerInfoIPage(page, size); }
List<EngineerInfo> engineers = pg.getRecords(); return null;
}
// 查询技术员业务属性
EngineerBusinessListResp res = new EngineerBusinessListResp(); @Transactional
res.setTotal(pg.getTotal()); @Override
res.setPages(pg.getPages()); public Result<?> getEngineerBusinessList(long page, long size) {
res.setPageCurrent(pg.getCurrent()); // 技术员业务属性配置列表
res.setPageSize(pg.getSize());
res.setContent(this.packEngineerBusinesses(engineers)); // 查询技术员列表
return Result.success(res); IPage<EngineerInfo> pg = this.queryEngineerInfoIPage(page, size);
} List<EngineerInfo> engineers = pg.getRecords();
@Override // 查询技术员业务属性
public Result<?> getEngineerBusinessDetail(String engineerCode) { EngineerBusinessListResp res = new EngineerBusinessListResp();
// 获取技术员业务熟悉详情 res.setTotal(pg.getTotal());
List<EngineerInfo> engineers = this.queryEngineerInfos(engineerCode); res.setPages(pg.getPages());
if (engineers.isEmpty()) { res.setPageCurrent(pg.getCurrent());
throw new BusinessException("技术员不存在"); res.setPageSize(pg.getSize());
} res.setContent(this.packEngineerBusinesses(engineers));
List<?> items = this.packEngineerBusinesses(engineers); return Result.success(res);
if (items.isEmpty()) { }
throw new BusinessException("技术员不存在");
} @Override
return Result.success(items.get(0)); public Result<?> getEngineerBusinessDetail(String engineerCode) {
} // 获取技术员业务熟悉详情
List<EngineerInfo> engineers = this.queryEngineerInfos(engineerCode);
@Transactional if (engineers.isEmpty()) {
@Override throw new BusinessException("技术员不存在");
public Result<?> engineerBusinessUpdate(String engineerCode, Integer maxNum, Integer maxMinute, String departure, String priority) { }
// 技术员业务属性配置修改 List<?> items = this.packEngineerBusinesses(engineers);
if (items.isEmpty()) {
LambdaUpdateWrapper<EngineerBusiness> wrapper = new LambdaUpdateWrapper<>(); throw new BusinessException("技术员不存在");
wrapper.eq(EngineerBusiness::getEngineerCode, engineerCode); }
wrapper.set(maxNum >= 0, EngineerBusiness::getMaxNum, maxNum); return Result.success(items.get(0));
wrapper.set(maxMinute >= 0, EngineerBusiness::getMaxMinute, maxMinute); }
Integer dep = (departure.equals("配件仓")) ? 1 : 2; @Transactional
wrapper.set(EngineerBusiness::getDeparture, dep); @Override
public Result<?> engineerBusinessUpdate(String engineerCode, Integer maxNum, Integer maxMinute, String departure, String priority) {
int pri; // 技术员业务属性配置修改
if (priority.equals("高")) {
pri = 3; LambdaUpdateWrapper<EngineerBusiness> wrapper = new LambdaUpdateWrapper<>();
} else if (priority.equals("中")) { wrapper.eq(EngineerBusiness::getEngineerCode, engineerCode);
pri = 2; wrapper.set(maxNum >= 0, EngineerBusiness::getMaxNum, maxNum);
} else { wrapper.set(maxMinute >= 0, EngineerBusiness::getMaxMinute, maxMinute);
pri = 1;
} Integer dep = (departure.equals("配件仓")) ? 1 : 2;
wrapper.set(EngineerBusiness::getPriority, pri); wrapper.set(EngineerBusiness::getDeparture, dep);
// 更新字段 int pri;
engineerBusinessDao.update(null, wrapper); if (priority.equals("高")) {
pri = 3;
return Result.success(null); } else if (priority.equals("中")) {
} pri = 2;
} else {
private IPage<EngineerInfo> queryEngineerInfoIPage(long page, long size) { pri = 1;
// 分页查询工程师基础信息 }
LambdaQueryWrapper<EngineerInfo> lqw = new LambdaQueryWrapper<>(); wrapper.set(EngineerBusiness::getPriority, pri);
lqw.orderByAsc(EngineerInfo::getGroupId);
lqw.orderByAsc(EngineerInfo::getEngineerCode); // 更新字段
engineerBusinessDao.update(null, wrapper);
IPage<EngineerInfo> pg = new Page(page, size);
engineerInfoMPDao.selectPage(pg, lqw); return Result.success(null);
return pg; }
}
private IPage<EngineerInfo> queryEngineerInfoIPage(long page, long size) {
private List<EngineerInfo> queryEngineerInfos(String engineerCode) { // 分页查询工程师基础信息
// 分页查询工程师基础信息 LambdaQueryWrapper<EngineerInfo> lqw = new LambdaQueryWrapper<>();
LambdaQueryWrapper<EngineerInfo> lqw = new LambdaQueryWrapper<>(); lqw.orderByAsc(EngineerInfo::getGroupId);
lqw.eq(EngineerInfo::getEngineerCode, engineerCode); lqw.orderByAsc(EngineerInfo::getEngineerCode);
return engineerInfoMPDao.selectList(lqw);
} IPage<EngineerInfo> pg = new Page(page, size);
engineerInfoMPDao.selectPage(pg, lqw);
private HashMap<String, String> queryGroupNames(List<String> groupIds) { return pg;
//查询小组名称映射关系 }
HashMap<String, String> map = new HashMap<>();
private List<EngineerInfo> queryEngineerInfos(String engineerCode) {
if (groupIds.isEmpty()) { // 分页查询工程师基础信息
return map; LambdaQueryWrapper<EngineerInfo> lqw = new LambdaQueryWrapper<>();
} lqw.eq(EngineerInfo::getEngineerCode, engineerCode);
LambdaQueryWrapper<OrgGroup> lqw = new LambdaQueryWrapper<>(); return engineerInfoMPDao.selectList(lqw);
lqw.select(OrgGroup::getGroupId, OrgGroup::getGroupName); }
lqw.in(OrgGroup::getGroupId, groupIds);
List<OrgGroup> groups = orgGroupMPDao.selectList(lqw); private HashMap<String, String> queryGroupNames(List<String> groupIds) {
for (OrgGroup g : groups) { //查询小组名称映射关系
map.put(g.getGroupId(), g.getGroupName()); HashMap<String, String> map = new HashMap<>();
}
return map; if (groupIds.isEmpty()) {
} return map;
}
private HashMap<String, List<String>> queryEngineerSkills(List<String> engineerCodes, List<Integer> statuses) { LambdaQueryWrapper<OrgGroup> lqw = new LambdaQueryWrapper<>();
// 获取engineerCode对应的技能表, HashMap<engineerCode, List<skillId>> lqw.select(OrgGroup::getGroupId, OrgGroup::getGroupName);
lqw.in(OrgGroup::getGroupId, groupIds);
HashMap<String, List<String>> map = new HashMap<>(); List<OrgGroup> groups = orgGroupMPDao.selectList(lqw);
if (engineerCodes.isEmpty()) { for (OrgGroup g : groups) {
return map; map.put(g.getGroupId(), g.getGroupName());
} }
LambdaQueryWrapper<EngineerSkill> lqw = new LambdaQueryWrapper<>(); return map;
lqw.in(EngineerSkill::getEngineerCode, engineerCodes); }
lqw.in(EngineerSkill::getStatus, statuses);
List<EngineerSkill> records = engineerSkillMPDao.selectList(lqw); private HashMap<String, List<String>> queryEngineerSkills(List<String> engineerCodes, List<Integer> statuses) {
// 获取engineerCode对应的技能表, HashMap<engineerCode, List<skillId>>
Comparator<EngineerSkill> ec = Comparator.comparing(EngineerSkill::getEngineerCode, String.CASE_INSENSITIVE_ORDER);
List<EngineerSkill> results = records.stream().sorted(ec).collect(Collectors.toList()); HashMap<String, List<String>> map = new HashMap<>();
if (engineerCodes.isEmpty()) {
// 根据engineerCode分组 return map;
Map<String, List<EngineerSkill>> g = results.stream().collect(Collectors.groupingBy(EngineerSkill::getEngineerCode)); }
LambdaQueryWrapper<EngineerSkill> lqw = new LambdaQueryWrapper<>();
for (String engineerCode : g.keySet()) { lqw.in(EngineerSkill::getEngineerCode, engineerCodes);
// 技术员技能ID列表 lqw.in(EngineerSkill::getStatus, statuses);
List<String> skillIds = g.get(engineerCode).stream().map(EngineerSkill::getCategoryId).collect(Collectors.toList()); List<EngineerSkill> records = engineerSkillMPDao.selectList(lqw);
map.put(engineerCode, skillIds);
} Comparator<EngineerSkill> ec = Comparator.comparing(EngineerSkill::getEngineerCode, String.CASE_INSENSITIVE_ORDER);
return map; List<EngineerSkill> results = records.stream().sorted(ec).collect(Collectors.toList());
}
// 根据engineerCode分组
private HashMap<String, EngineerBusiness> queryEngineerBusiness(List<String> engineerCodes) { Map<String, List<EngineerSkill>> g = results.stream().collect(Collectors.groupingBy(EngineerSkill::getEngineerCode));
HashMap<String, EngineerBusiness> map = new HashMap<>();
if (engineerCodes.isEmpty()) { for (String engineerCode : g.keySet()) {
return map; // 技术员技能ID列表
} List<String> skillIds = g.get(engineerCode).stream().map(EngineerSkill::getCategoryId).collect(Collectors.toList());
LambdaQueryWrapper<EngineerBusiness> lqw = new LambdaQueryWrapper<>(); map.put(engineerCode, skillIds);
lqw.in(EngineerBusiness::getEngineerCode, engineerCodes); }
List<EngineerBusiness> records = engineerBusinessDao.selectList(lqw); return map;
for (EngineerBusiness r : records) { }
map.put(r.getEngineerCode(), r);
} private HashMap<String, EngineerBusiness> queryEngineerBusiness(List<String> engineerCodes) {
return map; HashMap<String, EngineerBusiness> map = new HashMap<>();
} if (engineerCodes.isEmpty()) {
return map;
private List<EngineerInfoListResp.EngineerInfo> packEngineerInfos(List<EngineerInfo> engineers, HashMap<String, String> groups) { }
LambdaQueryWrapper<EngineerBusiness> lqw = new LambdaQueryWrapper<>();
String groupName, age, kind; lqw.in(EngineerBusiness::getEngineerCode, engineerCodes);
List<EngineerBusiness> records = engineerBusinessDao.selectList(lqw);
List<EngineerInfoListResp.EngineerInfo> items = new ArrayList<>(); for (EngineerBusiness r : records) {
for (EngineerInfo e : engineers) { map.put(r.getEngineerCode(), r);
EngineerInfoListResp.EngineerInfo item = new EngineerInfoListResp.EngineerInfo(); }
item.setEngineerCode(e.getEngineerCode()); return map;
item.setNumber(e.getEngineerCode()); }
item.setName(e.getName());
item.setSex(e.getGender()); private List<EngineerInfoListResp.EngineerInfo> packEngineerInfos(List<EngineerInfo> engineers, HashMap<String, String> groups) {
item.setPhone(e.getPhone());
item.setAddress(e.getAddress()); String groupName, age, kind;
item.setGrade(e.getGrade());
List<EngineerInfoListResp.EngineerInfo> items = new ArrayList<>();
// group name for (EngineerInfo e : engineers) {
groupName = groups.getOrDefault(e.getGroupId(), ""); EngineerInfoListResp.EngineerInfo item = new EngineerInfoListResp.EngineerInfo();
item.setGroupName(groupName); item.setEngineerCode(e.getEngineerCode());
item.setNumber(e.getEngineerCode());
// 年龄 item.setName(e.getName());
age = this.getEngineerAge(e.getBirth()); item.setSex(e.getGender());
item.setAge(age); item.setPhone(e.getPhone());
item.setAddress(e.getAddress());
// 工作类型:全职/兼职 item.setGrade(e.getGrade());
kind = (e.getKind() == 1) ? "fullJob" : "partJob";
item.setKind(kind); // group name
groupName = groups.getOrDefault(e.getGroupId(), "");
if (e.getCredentials() != null) { item.setGroupName(groupName);
item.setCredentials(Arrays.asList(e.getCredentials().split("、")));
} else { // 年龄
item.setCredentials(new ArrayList<String>()); age = this.getEngineerAge(e.getBirth());
} item.setAge(age);
// 标签 // 工作类型:全职/兼职
List<String> tags = new ArrayList<>(); kind = (e.getKind() == 1) ? "fullJob" : "partJob";
if (e.getTags() != null && !e.getTags().isEmpty()) { item.setKind(kind);
for (Map.Entry<String, Object> entry : e.getTags().entrySet()) {
tags.add(String.format("%s+%s", entry.getKey(), entry.getValue().toString())); if (e.getCredentials() != null) {
} item.setCredentials(Arrays.asList(e.getCredentials().split("、")));
} } else {
item.setTags(tags); item.setCredentials(new ArrayList<String>());
}
items.add(item);
} // 标签
return items; List<String> tags = new ArrayList<>();
} if (e.getTags() != null && !e.getTags().isEmpty()) {
for (Map.Entry<String, Object> entry : e.getTags().entrySet()) {
private List<EngineerSkillListResp.EngineerSkill> packEngineerSkills(List<EngineerInfo> engineers) { tags.add(String.format("%s+%s", entry.getKey(), entry.getValue().toString()));
// 获取groupId类表 }
List<String> groupIds = engineers.stream().map(EngineerInfo::getGroupId).collect(Collectors.toList()); }
HashMap<String, String> groupNames = this.queryGroupNames(groupIds); item.setTags(tags);
// 获取技术员code列表 items.add(item);
List<String> engineerCodes = engineers.stream().map(EngineerInfo::getEngineerCode).collect(Collectors.toList()); }
return items;
// 获取技术员的可用技能列表 }
List<Integer> statuses = new ArrayList<Integer>(List.of(1));
HashMap<String, List<String>> engineerSkills = this.queryEngineerSkills(engineerCodes, statuses); private List<EngineerSkillListResp.EngineerSkill> packEngineerSkills(List<EngineerInfo> engineers) {
List<String> emptySkills = Collections.emptyList(); // 获取groupId类表
List<String> groupIds = engineers.stream().map(EngineerInfo::getGroupId).collect(Collectors.toList());
List<EngineerSkillListResp.EngineerSkill> items = new ArrayList<>(); HashMap<String, String> groupNames = this.queryGroupNames(groupIds);
for (EngineerInfo e : engineers) {
EngineerSkillListResp.EngineerSkill skill = new EngineerSkillListResp.EngineerSkill(); // 获取技术员code列表
skill.setEngineerCode(e.getEngineerCode()); List<String> engineerCodes = engineers.stream().map(EngineerInfo::getEngineerCode).collect(Collectors.toList());
skill.setEngineerName(e.getName());
skill.setGroupName(groupNames.getOrDefault(e.getGroupId(), "")); // 获取技术员的可用技能列表
skill.setUpdateTime(this.Timestamp2Datetime(e.getUpdateTime(), "yyyy-MM-dd hh:mm:ss")); List<Integer> statuses = new ArrayList<Integer>(List.of(1));
HashMap<String, List<String>> engineerSkills = this.queryEngineerSkills(engineerCodes, statuses);
// 获取一个工程师的技能列表 List<String> emptySkills = Collections.emptyList();
skill.setCategoryIds(engineerSkills.getOrDefault(e.getEngineerCode(), emptySkills));
List<EngineerSkillListResp.EngineerSkill> items = new ArrayList<>();
items.add(skill); for (EngineerInfo e : engineers) {
} EngineerSkillListResp.EngineerSkill skill = new EngineerSkillListResp.EngineerSkill();
return items; skill.setEngineerCode(e.getEngineerCode());
} skill.setEngineerName(e.getName());
skill.setGroupName(groupNames.getOrDefault(e.getGroupId(), ""));
private List<EngineerBusinessListResp.EngineerBusiness> packEngineerBusinesses(List<EngineerInfo> engineers) { skill.setUpdateTime(this.Timestamp2Datetime(e.getUpdateTime(), "yyyy-MM-dd hh:mm:ss"));
// 获取技术员code列表
List<String> engineerCodes = engineers.stream().map(EngineerInfo::getEngineerCode).collect(Collectors.toList()); // 获取一个工程师的技能列表
skill.setCategoryIds(engineerSkills.getOrDefault(e.getEngineerCode(), emptySkills));
List<String> groupIds = engineers.stream().map(EngineerInfo::getGroupId).collect(Collectors.toList());
HashMap<String, String> groupNames = this.queryGroupNames(groupIds); items.add(skill);
}
HashMap<String, EngineerBusiness> buss = this.queryEngineerBusiness(engineerCodes); return items;
}
List<EngineerBusinessListResp.EngineerBusiness> items = new ArrayList<>();
for (EngineerInfo e : engineers) { private List<EngineerBusinessListResp.EngineerBusiness> packEngineerBusinesses(List<EngineerInfo> engineers) {
EngineerBusinessListResp.EngineerBusiness item = new EngineerBusinessListResp.EngineerBusiness(); // 获取技术员code列表
List<String> engineerCodes = engineers.stream().map(EngineerInfo::getEngineerCode).collect(Collectors.toList());
item.setEngineerCode(e.getEngineerCode());
item.setGroupName(groupNames.getOrDefault(e.getGroupId(), "")); List<String> groupIds = engineers.stream().map(EngineerInfo::getGroupId).collect(Collectors.toList());
item.setEngineerName(e.getName()); HashMap<String, String> groupNames = this.queryGroupNames(groupIds);
item.setKind((e.getKind() == 1) ? "fullJob" : "partJob");
HashMap<String, EngineerBusiness> buss = this.queryEngineerBusiness(engineerCodes);
EngineerBusiness b = buss.getOrDefault(e.getEngineerCode(), null);
if (b == null) { List<EngineerBusinessListResp.EngineerBusiness> items = new ArrayList<>();
item.setAddress(""); for (EngineerInfo e : engineers) {
item.setLocation(""); EngineerBusinessListResp.EngineerBusiness item = new EngineerBusinessListResp.EngineerBusiness();
item.setDeparture("");
item.setMaxMinute(0); item.setEngineerCode(e.getEngineerCode());
item.setMaxNum(0); item.setGroupName(groupNames.getOrDefault(e.getGroupId(), ""));
item.setPriority("低"); item.setEngineerName(e.getName());
} else { item.setKind((e.getKind() == 1) ? "fullJob" : "partJob");
item.setAddress(b.getAddress());
item.setLocation(String.format("%s,%s", b.getX(), b.getY())); EngineerBusiness b = buss.getOrDefault(e.getEngineerCode(), null);
item.setDeparture((b.getDeparture() == 1) ? "配件仓" : "住址"); if (b == null) {
item.setMaxMinute(b.getMaxMinute()); item.setAddress("");
item.setMaxNum(b.getMaxNum()); item.setLocation("");
item.setDeparture("");
String priority; item.setMaxMinute(0);
if (b.getPriority() == 3) { item.setMaxNum(0);
priority = "高"; item.setPriority("低");
} else if (b.getPriority() == 2) { } else {
priority = "中"; item.setAddress(b.getAddress());
} else { item.setLocation(String.format("%s,%s", b.getX(), b.getY()));
priority = "低"; item.setDeparture((b.getDeparture() == 1) ? "配件仓" : "住址");
} item.setMaxMinute(b.getMaxMinute());
item.setPriority(priority); item.setMaxNum(b.getMaxNum());
}
items.add(item); String priority;
} if (b.getPriority() == 3) {
return items; priority = "高";
} } else if (b.getPriority() == 2) {
priority = "中";
} else {
private HashMap<String, Integer> getEngineerSkillIds(List<String> skillIds, HashMap<String, Integer> engineerSkillIds) { priority = "低";
HashMap<String, Integer> map = new HashMap<>(); }
for (String skillId : skillIds) { item.setPriority(priority);
map.put(skillId, engineerSkillIds.getOrDefault(skillId, 0)); }
} items.add(item);
return map; }
} return items;
}
private String getEngineerAge(String birth) {
// 获取工程师年龄
if (birth.isEmpty()) { private HashMap<String, Integer> getEngineerSkillIds(List<String> skillIds, HashMap<String, Integer> engineerSkillIds) {
return ""; HashMap<String, Integer> map = new HashMap<>();
} for (String skillId : skillIds) {
int age; map.put(skillId, engineerSkillIds.getOrDefault(skillId, 0));
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); }
try { return map;
Date birthDate = dateFormat.parse(birth); }
Calendar birthCalendar = Calendar.getInstance();
birthCalendar.setTime(birthDate); private String getEngineerAge(String birth) {
Calendar nowCalendar = Calendar.getInstance(); // 获取工程师年龄
age = nowCalendar.get(Calendar.YEAR) - birthCalendar.get(Calendar.YEAR); if (birth.isEmpty()) {
if (nowCalendar.get(Calendar.DAY_OF_YEAR) < birthCalendar.get(Calendar.DAY_OF_YEAR)) { return "";
age--; }
} int age;
} catch (Exception e) { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
return ""; try {
} Date birthDate = dateFormat.parse(birth);
return (age <= 0) ? "" : Integer.toString(age); Calendar birthCalendar = Calendar.getInstance();
} birthCalendar.setTime(birthDate);
Calendar nowCalendar = Calendar.getInstance();
private String Timestamp2Datetime(Timestamp t, String pattern) { age = nowCalendar.get(Calendar.YEAR) - birthCalendar.get(Calendar.YEAR);
DateTimeFormatter df = DateTimeFormatter.ofPattern(pattern); if (nowCalendar.get(Calendar.DAY_OF_YEAR) < birthCalendar.get(Calendar.DAY_OF_YEAR)) {
return df.format(t.toLocalDateTime()); age--;
} }
} catch (Exception e) {
return "";
}
return (age <= 0) ? "" : Integer.toString(age);
}
private String Timestamp2Datetime(Timestamp t, String pattern) {
DateTimeFormatter df = DateTimeFormatter.ofPattern(pattern);
return df.format(t.toLocalDateTime());
}
@Override
public Result<?> getEngineersGanttList(EngineersGanttReqDTO reqDTO) {
// 按日期返回技术员们当天的服务甘特图,不需要翻页
log.info("getEngineersGanttList: {}", reqDTO);
List<OrderAppointmentEntity> orderAppointments = orderAppointmentDao.findByDateAndEngineerCodeIn(reqDTO.getDate(), reqDTO.getEngineerCodes());
List<String> orderIds = orderAppointments.stream().map(OrderAppointmentEntity::getOrderId).collect(Collectors.toList());
Map<String, OrderRequestEntity> mapOrderRequest = getOrdersByOrderIds(orderIds);
HashMap<String, List<EngineersGanttRespDTO.Order>> mapEngineers = new HashMap<>();
for (OrderAppointmentEntity e : orderAppointments) {
log.info("===== order_id: [{}]", e.getOrderId());
EngineersGanttRespDTO.Order order = new EngineersGanttRespDTO.Order();
// todo 需要根据订单时间和状态,采用expectXXXX或者actualXXXX
order.setStartTime(e.getExpectStartTime()).setEndTime(e.getExpectEndTime());
order.setOrderId(e.getOrderId()).setPreStatus(e.getPreStatus());
order.setTips(getOrderTips(e.getOrderId()));
order.setAppointmentStatus(mapOrderRequest.get(e.getOrderId()).getAppointmentStatus());
List<EngineersGanttRespDTO.Order> orders = null;
if (mapEngineers.containsKey(e.getEngineerCode())) {
orders = mapEngineers.get(e.getEngineerCode());
} else {
orders = new ArrayList<>();
}
orders.add(order);
mapEngineers.put(e.getEngineerCode(), orders);
}
List<EngineersGanttRespDTO.GanttChart> engineers = new ArrayList<>();
for (String engineerCode : mapEngineers.keySet()) {
EngineerInfoEntity engineerInfo = engineerInfoDao.getByEngineerCode(engineerCode);
EngineersGanttRespDTO.GanttChart engineer = new EngineersGanttRespDTO.GanttChart();
engineer.setEngineerCode(engineerCode)
.setStartTime(String.format("%s 08:00", reqDTO.getDate()))
.setEndTime(String.format("%s 18:00", reqDTO.getDate()))
.setHoliday(false) // todo
.setOrders(mapEngineers.get(engineerCode))
.setEngineerName(engineerInfo.getName())
.setGrade(engineerInfo.getGrade());
CapacityEngineerStatEntity capacityEngineerStat = capacityEngineerStatDao.getByEngineerCodeAndWorkday(engineerCode, reqDTO.getDate());
if (capacityEngineerStat == null) {
log.warn("技术员当日的容量数据不存在,{}{}", engineerCode, reqDTO.getDate());
} else {
engineer.setCapTotal(capacityEngineerStat.getCapTotal().toString()).setCapUsed(capacityEngineerStat.getCapUsed().toString());
}
// engineer.setErrorTip(); todo
engineers.add(engineer);
}
EngineersGanttRespDTO data = new EngineersGanttRespDTO().setDate(reqDTO.getDate()).setEngineers(engineers);
return Result.success(data);
}
public Map<String, OrderRequestEntity> getOrdersByOrderIds(List<String> orderIds) {
List<OrderRequestEntity> orders = orderRequestDao.findAllByOrderIdIn(orderIds);
return orders.stream()
.collect(Collectors.toMap(OrderRequestEntity::getOrderId, order -> order));
}
private List<?> getOrderTips(String orderId) {
log.info("==> getOrderTips: orderId[{}]", orderId);
OrderRequestEntity order = orderRequestDao.getByOrderId(orderId);
if (order == null) {
log.error("对应的订单不存在!{}", orderId);
return null;
}
List<LabelValueDTO> tips = new ArrayList<>();
tips.add(new LabelValueDTO().setLabel("工单号码").setValue(orderId));
tips.add(new LabelValueDTO().setLabel("类型/品牌").setValue(String.format("%s %s", order.getBrand(), order.getType())));
tips.add(new LabelValueDTO().setLabel("电话/地址").setValue(String.format("%s %s\n %s", order.getName(), order.getPhone(), order.getAddress())));
if (StringUtils.isNotBlank(order.getApplyNote())) {
tips.add(new LabelValueDTO().setLabel("备注").setValue(order.getApplyNote()));
}
tips.add(new LabelValueDTO().setLabel("标签").setValue(order.getTags()));
return tips;
}
} }
...@@ -2,22 +2,20 @@ package com.dituhui.pea.order.service.impl; ...@@ -2,22 +2,20 @@ package com.dituhui.pea.order.service.impl;
import com.dituhui.pea.common.Result; import com.dituhui.pea.common.Result;
import com.dituhui.pea.order.dao.*; import com.dituhui.pea.order.dao.*;
import com.dituhui.pea.order.dto.*; import com.dituhui.pea.order.dto.OrderChangeListReqDTO;
import com.dituhui.pea.order.entity.*; import com.dituhui.pea.order.dto.OrderChangeListRespDTO;
import com.dituhui.pea.order.entity.OrderChangeEntity;
import com.dituhui.pea.order.entity.OrderRequestEntity;
import com.dituhui.pea.order.service.WorkbenchService; import com.dituhui.pea.order.service.WorkbenchService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.PageRequest;
import org.springframework.stereotype.Service;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Slf4j @Slf4j
@Service @Service
...@@ -71,80 +69,4 @@ public class WorkbenchServiceImpl implements WorkbenchService { ...@@ -71,80 +69,4 @@ public class WorkbenchServiceImpl implements WorkbenchService {
.setContent(contents); .setContent(contents);
return Result.success(respDTO); return Result.success(respDTO);
} }
@Override
public Result<?> getEngineersGanttList(EngineersGanttReqDTO reqDTO) {
// 按日期返回技术员们当天的服务甘特图,不需要翻页
log.info("getEngineersGanttList: {}", reqDTO);
List<OrderAppointmentEntity> orderAppointments = orderAppointmentDao.findByDateAndEngineerCodeIn(reqDTO.getDate(), reqDTO.getEngineerCodes());
List<String> orderIds = orderAppointments.stream().map(OrderAppointmentEntity::getOrderId).collect(Collectors.toList());
Map<String, OrderRequestEntity> mapOrderRequest = getOrdersByOrderIds(orderIds);
HashMap<String, List<EngineersGanttRespDTO.Order>> mapEngineers = new HashMap<>();
for (OrderAppointmentEntity e : orderAppointments) {
log.info("===== order_id: [{}]", e.getOrderId());
EngineersGanttRespDTO.Order order = new EngineersGanttRespDTO.Order();
// todo 需要根据订单时间和状态,采用expectXXXX或者actualXXXX
order.setStartTime(e.getExpectStartTime()).setEndTime(e.getExpectEndTime());
order.setOrderId(e.getOrderId()).setPreStatus(e.getPreStatus());
order.setTips(getOrderTips(e.getOrderId()));
order.setAppointmentStatus(mapOrderRequest.get(e.getOrderId()).getAppointmentStatus());
List<EngineersGanttRespDTO.Order> orders = null;
if (mapEngineers.containsKey(e.getEngineerCode())) {
orders = mapEngineers.get(e.getEngineerCode());
} else {
orders = new ArrayList<>();
}
orders.add(order);
mapEngineers.put(e.getEngineerCode(), orders);
}
List<EngineersGanttRespDTO.GanttChart> engineers = new ArrayList<>();
for (String engineerCode : mapEngineers.keySet()) {
EngineerInfoEntity engineerInfo = engineerInfoDao.getByEngineerCode(engineerCode);
EngineersGanttRespDTO.GanttChart engineer = new EngineersGanttRespDTO.GanttChart();
engineer.setEngineerCode(engineerCode)
.setStartTime(String.format("%s 08:00", reqDTO.getDate()))
.setEndTime(String.format("%s 18:00", reqDTO.getDate()))
.setHoliday(false) // todo
.setOrders(mapEngineers.get(engineerCode))
.setEngineerName(engineerInfo.getName())
.setGrade(engineerInfo.getGrade());
CapacityEngineerStatEntity capacityEngineerStat = capacityEngineerStatDao.getByEngineerCodeAndWorkday(engineerCode, reqDTO.getDate());
if (capacityEngineerStat == null) {
log.warn("技术员当日的容量数据不存在,{}{}", engineerCode, reqDTO.getDate());
} else {
engineer.setCapTotal(capacityEngineerStat.getCapTotal().toString()).setCapUsed(capacityEngineerStat.getCapUsed().toString());
}
// engineer.setErrorTip(); todo
engineers.add(engineer);
}
EngineersGanttRespDTO data = new EngineersGanttRespDTO().setDate(reqDTO.getDate()).setEngineers(engineers);
return Result.success(data);
}
public Map<String, OrderRequestEntity> getOrdersByOrderIds(List<String> orderIds) {
List<OrderRequestEntity> orders = orderRequestDao.findAllByOrderIdIn(orderIds);
return orders.stream()
.collect(Collectors.toMap(OrderRequestEntity::getOrderId, order -> order));
}
private List<?> getOrderTips(String orderId) {
log.info("==> getOrderTips: orderId[{}]", orderId);
OrderRequestEntity order = orderRequestDao.getByOrderId(orderId);
if (order == null) {
log.error("对应的订单不存在!{}", orderId);
return null;
}
List<LabelValueDTO> tips = new ArrayList<>();
tips.add(new LabelValueDTO().setLabel("工单号码").setValue(orderId));
tips.add(new LabelValueDTO().setLabel("类型/品牌").setValue(String.format("%s %s", order.getBrand(), order.getType())));
tips.add(new LabelValueDTO().setLabel("电话/地址").setValue(String.format("%s %s\n %s", order.getName(), order.getPhone(), order.getAddress())));
if (StringUtils.isNotBlank(order.getApplyNote())) {
tips.add(new LabelValueDTO().setLabel("备注").setValue(order.getApplyNote()));
}
tips.add(new LabelValueDTO().setLabel("标签").setValue(order.getTags()));
return tips;
}
} }
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!