From 6a92f40b517ca31adefa778d47a885fcb2b0346b Mon Sep 17 00:00:00 2001 From: donqi Date: Sat, 25 Jun 2022 17:32:05 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B8=88=E5=82=85=E5=9C=88=E5=90=8E=E5=8F=B0?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/worker/WorkerController.java | 56 +++++++++- .../src/main/java/com/ghy/web/core/Trans.java | 103 ++++++++++++++++++ .../ghy/web/pojo/vo/WorkerListRequest.java | 17 +++ .../ghy/web/pojo/vo/WorkerListResponse.java | 28 +++++ .../resources/mapper/goods/GoodsMapper.xml | 3 + .../java/com/ghy/worker/domain/Worker.java | 3 + .../ghy/worker/mapper/WorkerAreaMapper.java | 2 + .../mapper/WorkerGoodsCategoryMapper.java | 2 + .../ghy/worker/service/WorkerAreaService.java | 2 + .../service/WorkerGoodsCategoryService.java | 2 + .../service/impl/WorkerAreaServiceImpl.java | 5 + .../impl/WorkerGoodsCategoryServiceImpl.java | 5 + .../mapper/worker/WorkerAreaMapper.xml | 9 ++ .../worker/WorkerGoodsCategoryMapper.xml | 9 ++ .../resources/mapper/worker/WorkerMapper.xml | 11 +- 15 files changed, 253 insertions(+), 4 deletions(-) create mode 100644 ghy-admin/src/main/java/com/ghy/web/core/Trans.java create mode 100644 ghy-admin/src/main/java/com/ghy/web/pojo/vo/WorkerListRequest.java create mode 100644 ghy-admin/src/main/java/com/ghy/web/pojo/vo/WorkerListResponse.java diff --git a/ghy-admin/src/main/java/com/ghy/web/controller/worker/WorkerController.java b/ghy-admin/src/main/java/com/ghy/web/controller/worker/WorkerController.java index 0bcfef74..77fe856a 100644 --- a/ghy-admin/src/main/java/com/ghy/web/controller/worker/WorkerController.java +++ b/ghy-admin/src/main/java/com/ghy/web/controller/worker/WorkerController.java @@ -1,23 +1,35 @@ package com.ghy.web.controller.worker; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.ghy.common.core.controller.BaseController; import com.ghy.common.core.domain.AjaxResult; import com.ghy.common.core.page.TableDataInfo; +import com.ghy.common.enums.GoodsStatus; import com.ghy.common.enums.WorkerStatus; import com.ghy.common.utils.ExceptionUtil; +import com.ghy.goods.domain.Goods; +import com.ghy.goods.service.GoodsService; +import com.ghy.web.pojo.vo.WorkerListRequest; +import com.ghy.web.pojo.vo.WorkerListResponse; import com.ghy.web.pojo.vo.WorkerSettledRequest; import com.ghy.worker.domain.Worker; +import com.ghy.worker.domain.WorkerArea; +import com.ghy.worker.domain.WorkerGoodsCategory; import com.ghy.worker.service.WorkerAreaService; import com.ghy.worker.service.WorkerGoodsCategoryService; import com.ghy.worker.service.WorkerService; import com.ghy.worker.service.WorkerSpecialSkillService; +import org.apache.commons.collections.CollectionUtils; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; +import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; /** * @author clunt @@ -41,20 +53,58 @@ public class WorkerController extends BaseController { @Autowired private WorkerSpecialSkillService specialSkillService; + @Autowired + private GoodsService goodsService; + @RequiresPermissions("worker:worker:view") @GetMapping() public String worker(){ return prefix + "/worker"; } - @RequiresPermissions("worker:worker:list") +// @RequiresPermissions("worker:worker:list") @PostMapping("/list") @ResponseBody - public TableDataInfo list(Worker worker) + public TableDataInfo list(@RequestBody WorkerListRequest workerListRequest) { + List resList = new ArrayList(); + + // 查询满足区域条件的师傅区域记录 + WorkerArea workerArea = new WorkerArea(); + workerArea.setDistrictId(workerListRequest.getAreaId()); + List workerAreaList = workerAreaService.getWorkerAreaList(workerArea); + List workerIdsByArea = workerAreaList.stream().map(WorkerArea::getWorkerId).collect(Collectors.toList()); + // 查询满足技能条件的师傅技能记录 + WorkerGoodsCategory workerGoodsCategory = new WorkerGoodsCategory(); + workerGoodsCategory.setGoodsCategoryId(workerListRequest.getGoodsCategoryId()); + List workerGoodsCategoryList = workerGoodsCategoryService.getWorkerGoodsCategory(workerGoodsCategory); + List workerIdsByCategory = workerGoodsCategoryList.stream().map(WorkerGoodsCategory::getWorkerId).collect(Collectors.toList()); + // 两个list中的workerid取交集 + List resWorkerIds = new ArrayList<>(CollectionUtils.intersection(workerIdsByArea, workerIdsByCategory)); + + if (CollectionUtils.isEmpty(resWorkerIds)) { + // 交集不存在的情况直接返回空list + return getDataTable(resList); + } + startPage(); + Worker worker = new Worker(); + worker.setWorkerIds(CollectionUtils.isNotEmpty(resWorkerIds) ? resWorkerIds : null); + worker.setName(workerListRequest.getWorkerName()); List list = workerService.getWorkList(worker); - return getDataTable(list); + list.forEach(w -> { + Goods goods = new Goods(); + goods.setWorkerId(w.getWorkerId()); + goods.setStatus(Integer.valueOf(GoodsStatus.OK.getCode())); + WorkerListResponse workerListResponse = JSONObject.parseObject(JSON.toJSONString(w), WorkerListResponse.class); + workerListResponse.setGoodsList(goodsService.selectGoodsList(goods)); + workerListResponse.setWorkerAreas(workerAreaService.getByWorker(w.getWorkerId())); + workerListResponse.setGoodsCategories(workerGoodsCategoryService.getByWorker(w.getWorkerId())); + workerListResponse.setSpecialSkills(specialSkillService.getByWorker(w.getWorkerId())); + resList.add(workerListResponse); + }); + + return getDataTable(resList); } @PostMapping("/update") diff --git a/ghy-admin/src/main/java/com/ghy/web/core/Trans.java b/ghy-admin/src/main/java/com/ghy/web/core/Trans.java new file mode 100644 index 00000000..01333cf0 --- /dev/null +++ b/ghy-admin/src/main/java/com/ghy/web/core/Trans.java @@ -0,0 +1,103 @@ +//package com.ghy.web.core; +// +//import com.alibaba.fastjson.JSON; +//import com.alibaba.fastjson.JSONArray; +//import com.alibaba.fastjson.JSONObject; +//import com.ghy.common.utils.StringUtils; +//import net.sourceforge.pinyin4j.PinyinHelper; +//import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat; +//import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination; +// +//import java.io.*; +//import java.util.ArrayList; +//import java.util.List; +// +//import static net.sourceforge.pinyin4j.format.HanyuPinyinToneType.WITHOUT_TONE; +//import static net.sourceforge.pinyin4j.format.HanyuPinyinVCharType.WITH_U_UNICODE; +// +///** +// * @author ydq +// * @date : 2022-06-23 10:56 +// */ +//public class Trans { +// +// public static void main(String[] args) throws IOException, BadHanyuPinyinOutputFormatCombination { +// String json = readFile2String("/Users/ydq/Downloads/Administrative-divisions-of-China-master/dist/pcas-code.json"); +// JSONArray jsonArray = JSON.parseArray(json); +// HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat(); +// format.setVCharType(WITH_U_UNICODE); +// format.setToneType(WITHOUT_TONE); +// List sqlList = getChildSqls(jsonArray, 1, null, "", format); +// writeLine2File("/Users/ydq/Documents/extraProject/dingdong/sysArea.sql", sqlList); +// } +// +// public static String readFile2String(String filePath) { +// StringBuilder strBuilder = new StringBuilder(); +// File ioFile = new File(filePath); +// try (InputStreamReader inputStreamReader = new InputStreamReader(new FileInputStream(ioFile), "UTF-8"); +// BufferedReader bufferedReader = new BufferedReader(inputStreamReader)) { +// String line; +// while ((line = bufferedReader.readLine()) != null) { +// strBuilder.append(line); +// } +// } catch (UnsupportedEncodingException unsupportedEncodingException) { +// unsupportedEncodingException.printStackTrace(); +// } catch (FileNotFoundException fileNotFoundException) { +// fileNotFoundException.printStackTrace(); +// } catch (IOException ioException) { +// ioException.printStackTrace(); +// } +// return strBuilder.toString(); +// } +// +// public static void writeLine2File(String filePath, List lines) throws IOException { +// File ioFile = new File(filePath); +// +// try ( +// OutputStreamWriter outputStreamWriter = new OutputStreamWriter(new FileOutputStream(ioFile), "UTF-8"); +// BufferedWriter bufferedWriter = new BufferedWriter(outputStreamWriter); // = FileWriter,默认utf-8 +// ){ +// for (String line: lines) { +// bufferedWriter.write(line); +// bufferedWriter.newLine(); +// } +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +// +// public static List getChildSqls(JSONArray jsonArray, int levelType, String parentCode, String preMergeName, HanyuPinyinOutputFormat format) throws BadHanyuPinyinOutputFormatCombination { +// List lineList = new ArrayList(); +// for (Object obj: jsonArray) { +// StringBuilder sql = new StringBuilder(); +// sql.append("INSERT INTO `sys_area` (`area_id`, `area_code`, `area_name`, `parent_code`, `merger_name`, `short_name`, `merger_short_name`, `level_type`, `pinyin`, `first_char`) VALUES ("); +// JSONObject jObj = (JSONObject) obj; +// String name = jObj.getString("name"); +// String code = jObj.getString("code"); +// String pinyin = PinyinHelper.toHanYuPinyinString(name, format, "", false); +// String mergeName = StringUtils.isEmpty(preMergeName) ? name : preMergeName + "," + name; +// if (parentCode == null) { +// parentCode = "1"; +// } +// sql.append(code).append(",") +// .append("'").append(code).append("'").append(",") +// .append("'").append(name).append("'").append(",") +// .append("'").append(parentCode).append("'").append(",") +// .append("'").append(mergeName).append("'").append(",") +// .append("'").append(name).append("'").append(",") +// .append("'").append(name).append("'").append(",") +// .append(levelType).append(",") +// .append("'").append(pinyin).append("'").append(",") +// .append("'").append(pinyin.charAt(0)).append("'") +// .append(");"); +// System.out.println(sql.toString()); +// lineList.add(sql.toString()); +// +// if (jObj.getJSONArray("children") != null) { +// lineList.addAll(getChildSqls(jObj.getJSONArray("children"), levelType + 1, code, mergeName, format)); +// } +// } +// return lineList; +// } +// +//} diff --git a/ghy-admin/src/main/java/com/ghy/web/pojo/vo/WorkerListRequest.java b/ghy-admin/src/main/java/com/ghy/web/pojo/vo/WorkerListRequest.java new file mode 100644 index 00000000..cfa76480 --- /dev/null +++ b/ghy-admin/src/main/java/com/ghy/web/pojo/vo/WorkerListRequest.java @@ -0,0 +1,17 @@ +package com.ghy.web.pojo.vo; + +import com.ghy.worker.domain.Worker; +import lombok.Data; + +/** + * @author ydq + * @date : 2022-06-24 17:38 + */ +@Data +public class WorkerListRequest { + private Long areaId; + + private Long goodsCategoryId; + + private String workerName; +} diff --git a/ghy-admin/src/main/java/com/ghy/web/pojo/vo/WorkerListResponse.java b/ghy-admin/src/main/java/com/ghy/web/pojo/vo/WorkerListResponse.java new file mode 100644 index 00000000..85b5b5eb --- /dev/null +++ b/ghy-admin/src/main/java/com/ghy/web/pojo/vo/WorkerListResponse.java @@ -0,0 +1,28 @@ +package com.ghy.web.pojo.vo; + +import com.ghy.goods.domain.Goods; +import com.ghy.worker.domain.Worker; +import com.ghy.worker.domain.WorkerArea; +import com.ghy.worker.domain.WorkerGoodsCategory; +import com.ghy.worker.domain.WorkerSpecialSkill; +import lombok.Data; + +import java.util.List; + +/** + * @author ydq + * @date : 2022-06-24 17:14 + */ +@Data +public class WorkerListResponse extends Worker { + private List goodsList; + + // 入驻区域 + private List workerAreas; + + // 服务品类 + private List goodsCategories; + + // 特殊技能 + private List specialSkills; +} diff --git a/ghy-goods/src/main/resources/mapper/goods/GoodsMapper.xml b/ghy-goods/src/main/resources/mapper/goods/GoodsMapper.xml index 215b7e52..789ecb9d 100644 --- a/ghy-goods/src/main/resources/mapper/goods/GoodsMapper.xml +++ b/ghy-goods/src/main/resources/mapper/goods/GoodsMapper.xml @@ -103,6 +103,9 @@ AND status = #{status} + + AND worker_id = #{workerId} + /* 默认生成时间排序 */ order by create_time diff --git a/ghy-worker/src/main/java/com/ghy/worker/domain/Worker.java b/ghy-worker/src/main/java/com/ghy/worker/domain/Worker.java index 3f098a77..d2ebb195 100644 --- a/ghy-worker/src/main/java/com/ghy/worker/domain/Worker.java +++ b/ghy-worker/src/main/java/com/ghy/worker/domain/Worker.java @@ -4,6 +4,8 @@ import com.ghy.common.annotation.Excel; import com.ghy.common.core.domain.BaseEntity; import lombok.Data; +import java.util.List; + /** * @author clunt * 师傅实体 @@ -52,4 +54,5 @@ public class Worker extends BaseEntity { @Excel(name = "领导团队扣费金额", cellType = Excel.ColumnType.STRING) private String leaderTeamMoney; + private List workerIds; } diff --git a/ghy-worker/src/main/java/com/ghy/worker/mapper/WorkerAreaMapper.java b/ghy-worker/src/main/java/com/ghy/worker/mapper/WorkerAreaMapper.java index fe69f95f..b56e054a 100644 --- a/ghy-worker/src/main/java/com/ghy/worker/mapper/WorkerAreaMapper.java +++ b/ghy-worker/src/main/java/com/ghy/worker/mapper/WorkerAreaMapper.java @@ -21,4 +21,6 @@ public interface WorkerAreaMapper { int deleteByWorker(Long workerId); List getByWorker(Long workerId); + + List getWorkerAreaList(WorkerArea workerArea); } diff --git a/ghy-worker/src/main/java/com/ghy/worker/mapper/WorkerGoodsCategoryMapper.java b/ghy-worker/src/main/java/com/ghy/worker/mapper/WorkerGoodsCategoryMapper.java index 79c3a886..9927c775 100644 --- a/ghy-worker/src/main/java/com/ghy/worker/mapper/WorkerGoodsCategoryMapper.java +++ b/ghy-worker/src/main/java/com/ghy/worker/mapper/WorkerGoodsCategoryMapper.java @@ -21,4 +21,6 @@ public interface WorkerGoodsCategoryMapper { int deleteByWorker(Long workerId); List getByWorker(Long workerId); + + List getWorkerGoodsCategory(WorkerGoodsCategory workerGoodsCategory); } diff --git a/ghy-worker/src/main/java/com/ghy/worker/service/WorkerAreaService.java b/ghy-worker/src/main/java/com/ghy/worker/service/WorkerAreaService.java index 086d2847..c5437205 100644 --- a/ghy-worker/src/main/java/com/ghy/worker/service/WorkerAreaService.java +++ b/ghy-worker/src/main/java/com/ghy/worker/service/WorkerAreaService.java @@ -20,4 +20,6 @@ public interface WorkerAreaService { List getByWorker(Long workerId); void updateWorkerServArea(Long workerId, List areas); + + List getWorkerAreaList(WorkerArea area); } diff --git a/ghy-worker/src/main/java/com/ghy/worker/service/WorkerGoodsCategoryService.java b/ghy-worker/src/main/java/com/ghy/worker/service/WorkerGoodsCategoryService.java index 9f6a86ed..1e5b930f 100644 --- a/ghy-worker/src/main/java/com/ghy/worker/service/WorkerGoodsCategoryService.java +++ b/ghy-worker/src/main/java/com/ghy/worker/service/WorkerGoodsCategoryService.java @@ -20,4 +20,6 @@ public interface WorkerGoodsCategoryService { List getByWorker(Long workerId); void updateWorkerGoodsCategory(Long workerId, List categories); + + List getWorkerGoodsCategory(WorkerGoodsCategory workerGoodsCategory); } diff --git a/ghy-worker/src/main/java/com/ghy/worker/service/impl/WorkerAreaServiceImpl.java b/ghy-worker/src/main/java/com/ghy/worker/service/impl/WorkerAreaServiceImpl.java index dff7253c..e65e7c8d 100644 --- a/ghy-worker/src/main/java/com/ghy/worker/service/impl/WorkerAreaServiceImpl.java +++ b/ghy-worker/src/main/java/com/ghy/worker/service/impl/WorkerAreaServiceImpl.java @@ -59,4 +59,9 @@ public class WorkerAreaServiceImpl implements WorkerAreaService { workerAreaMapper.delete(id2DelList.toArray(id2Del)); } } + + @Override + public List getWorkerAreaList(WorkerArea area) { + return workerAreaMapper.getWorkerAreaList(area); + } } diff --git a/ghy-worker/src/main/java/com/ghy/worker/service/impl/WorkerGoodsCategoryServiceImpl.java b/ghy-worker/src/main/java/com/ghy/worker/service/impl/WorkerGoodsCategoryServiceImpl.java index d0997b9f..942a4182 100644 --- a/ghy-worker/src/main/java/com/ghy/worker/service/impl/WorkerGoodsCategoryServiceImpl.java +++ b/ghy-worker/src/main/java/com/ghy/worker/service/impl/WorkerGoodsCategoryServiceImpl.java @@ -67,4 +67,9 @@ public class WorkerGoodsCategoryServiceImpl implements WorkerGoodsCategoryServic workerGoodsCategoryMapper.delete(id2DelList.toArray(id2Del)); } } + + @Override + public List getWorkerGoodsCategory(WorkerGoodsCategory workerGoodsCategory) { + return workerGoodsCategoryMapper.getWorkerGoodsCategory(workerGoodsCategory); + } } diff --git a/ghy-worker/src/main/resources/mapper/worker/WorkerAreaMapper.xml b/ghy-worker/src/main/resources/mapper/worker/WorkerAreaMapper.xml index 2771b368..a6bbc42b 100644 --- a/ghy-worker/src/main/resources/mapper/worker/WorkerAreaMapper.xml +++ b/ghy-worker/src/main/resources/mapper/worker/WorkerAreaMapper.xml @@ -60,6 +60,15 @@ WHERE wa.worker_id = #{workerId} + + DELETE FROM worker_area WHERE worker_id = #{workerId} diff --git a/ghy-worker/src/main/resources/mapper/worker/WorkerGoodsCategoryMapper.xml b/ghy-worker/src/main/resources/mapper/worker/WorkerGoodsCategoryMapper.xml index ac3bea66..a8216fdb 100644 --- a/ghy-worker/src/main/resources/mapper/worker/WorkerGoodsCategoryMapper.xml +++ b/ghy-worker/src/main/resources/mapper/worker/WorkerGoodsCategoryMapper.xml @@ -50,6 +50,15 @@ WHERE wgc.worker_id = #{workerId} + + DELETE FROM worker_goods_category WHERE worker_id = #{workerId} diff --git a/ghy-worker/src/main/resources/mapper/worker/WorkerMapper.xml b/ghy-worker/src/main/resources/mapper/worker/WorkerMapper.xml index a146aead..aea0247a 100644 --- a/ghy-worker/src/main/resources/mapper/worker/WorkerMapper.xml +++ b/ghy-worker/src/main/resources/mapper/worker/WorkerMapper.xml @@ -31,12 +31,21 @@ LEFT JOIN sys_dept sd ON w.dept_id = sd.dept_id - AND open_id = #{openId} + + AND w.worker_id IN + + #{item} + + + + AND w.name LIKE '%${name}%' +