From ca4d0db8411b20af0fffdd47a56bcb204c3ac3d0 Mon Sep 17 00:00:00 2001 From: jlt Date: Sun, 27 Mar 2022 22:48:41 +0800 Subject: [PATCH] =?UTF-8?q?=E5=86=9C=E5=9C=BA=E5=88=86=E5=8C=BA=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E5=88=86=E5=8C=BA=E7=B1=BB=E5=9E=8B=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=EF=BC=8C=E5=B0=86=E7=B3=BB=E7=BB=9F=E5=AD=97=E5=85=B8=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E5=A4=8D=E5=88=B6=E4=B8=BA=E4=B8=9A=E5=8A=A1=E5=AD=97?= =?UTF-8?q?=E5=85=B8=E5=8A=9F=E8=83=BD=EF=BC=8C=E5=B7=B2=E9=80=9A=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E3=80=82=E5=AD=97=E5=85=B8=E6=A0=87=E7=AD=BE=E6=9C=AA?= =?UTF-8?q?=E6=89=93=E9=80=9A=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jlt/csa/controller/ZoneController.java | 16 +- .../base/CsaDictDataController.java | 115 +++ .../base/CsaDictTypeController.java | 126 +++ .../main/java/com/jlt/csa/domain/Zone.java | 23 +- .../java/com/jlt/csa/mapper/ZoneMapper.java | 2 +- .../csa/mapper/base/CsaDictDataMapper.java | 96 ++ .../csa/mapper/base/CsaDictTypeMapper.java | 86 ++ .../com/jlt/csa/service/IZoneService.java | 2 +- .../csa/service/base/ICsaDictDataService.java | 61 ++ .../csa/service/base/ICsaDictTypeService.java | 99 ++ .../jlt/csa/service/impl/ZoneServiceImpl.java | 2 +- .../impl/base/CsaDictDataServiceImpl.java | 112 +++ .../impl/base/CsaDictTypeServiceImpl.java | 224 +++++ ...haseMapper.xml => ICsaDictDataService.xml} | 0 .../main/resources/mapper/csa/ZoneMapper.xml | 13 +- .../mapper/csa/base/CsaDictDataMapper.xml | 124 +++ .../mapper/csa/base/CsaDictTypeMapper.xml | 105 +++ ruoyi-ui/src/api/csa/dict/data.js | 52 + ruoyi-ui/src/api/csa/dict/type.js | 60 ++ ruoyi-ui/src/api/csa/{zone.js => farmzone.js} | 20 +- ruoyi-ui/src/router/index.js | 14 + ruoyi-ui/src/views/csa/dict/data.vue | 399 ++++++++ ruoyi-ui/src/views/csa/dict/index.vue | 346 +++++++ .../views/csa/{zone => farmzone}/index.vue | 79 +- ruoyi-ui/src/views/system/dict/data.vue | 798 ++++++++-------- sql/csa.sql | 887 +++++++++++++++++- 26 files changed, 3357 insertions(+), 504 deletions(-) create mode 100644 private-farm/src/main/java/com/jlt/csa/controller/base/CsaDictDataController.java create mode 100644 private-farm/src/main/java/com/jlt/csa/controller/base/CsaDictTypeController.java create mode 100644 private-farm/src/main/java/com/jlt/csa/mapper/base/CsaDictDataMapper.java create mode 100644 private-farm/src/main/java/com/jlt/csa/mapper/base/CsaDictTypeMapper.java create mode 100644 private-farm/src/main/java/com/jlt/csa/service/base/ICsaDictDataService.java create mode 100644 private-farm/src/main/java/com/jlt/csa/service/base/ICsaDictTypeService.java create mode 100644 private-farm/src/main/java/com/jlt/csa/service/impl/base/CsaDictDataServiceImpl.java create mode 100644 private-farm/src/main/java/com/jlt/csa/service/impl/base/CsaDictTypeServiceImpl.java rename private-farm/src/main/resources/mapper/csa/{CropPhaseMapper.xml => ICsaDictDataService.xml} (100%) create mode 100644 private-farm/src/main/resources/mapper/csa/base/CsaDictDataMapper.xml create mode 100644 private-farm/src/main/resources/mapper/csa/base/CsaDictTypeMapper.xml create mode 100644 ruoyi-ui/src/api/csa/dict/data.js create mode 100644 ruoyi-ui/src/api/csa/dict/type.js rename ruoyi-ui/src/api/csa/{zone.js => farmzone.js} (56%) create mode 100644 ruoyi-ui/src/views/csa/dict/data.vue create mode 100644 ruoyi-ui/src/views/csa/dict/index.vue rename ruoyi-ui/src/views/csa/{zone => farmzone}/index.vue (79%) diff --git a/private-farm/src/main/java/com/jlt/csa/controller/ZoneController.java b/private-farm/src/main/java/com/jlt/csa/controller/ZoneController.java index 9298ced26..c5a5f23a0 100644 --- a/private-farm/src/main/java/com/jlt/csa/controller/ZoneController.java +++ b/private-farm/src/main/java/com/jlt/csa/controller/ZoneController.java @@ -25,10 +25,10 @@ import com.ruoyi.common.core.page.TableDataInfo; * 农场分区Controller * * @author 郏磊涛 - * @date 2022-03-24 + * @date 2022-03-27 */ @RestController -@RequestMapping("/csa/zone") +@RequestMapping("/csa/farmzone") public class ZoneController extends BaseController { @Autowired @@ -37,7 +37,7 @@ public class ZoneController extends BaseController /** * 查询农场分区列表 */ - @PreAuthorize("@ss.hasPermi('csa:zone:list')") + @PreAuthorize("@ss.hasPermi('csa:farmzone:list')") @GetMapping("/list") public TableDataInfo list(Zone zone) { @@ -49,7 +49,7 @@ public class ZoneController extends BaseController /** * 导出农场分区列表 */ - @PreAuthorize("@ss.hasPermi('csa:zone:export')") + @PreAuthorize("@ss.hasPermi('csa:farmzone:export')") @Log(title = "农场分区", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, Zone zone) @@ -62,7 +62,7 @@ public class ZoneController extends BaseController /** * 获取农场分区详细信息 */ - @PreAuthorize("@ss.hasPermi('csa:zone:query')") + @PreAuthorize("@ss.hasPermi('csa:farmzone:query')") @GetMapping(value = "/{code}") public AjaxResult getInfo(@PathVariable("code") String code) { @@ -72,7 +72,7 @@ public class ZoneController extends BaseController /** * 新增农场分区 */ - @PreAuthorize("@ss.hasPermi('csa:zone:add')") + @PreAuthorize("@ss.hasPermi('csa:farmzone:add')") @Log(title = "农场分区", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@RequestBody Zone zone) @@ -83,7 +83,7 @@ public class ZoneController extends BaseController /** * 修改农场分区 */ - @PreAuthorize("@ss.hasPermi('csa:zone:edit')") + @PreAuthorize("@ss.hasPermi('csa:farmzone:edit')") @Log(title = "农场分区", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@RequestBody Zone zone) @@ -94,7 +94,7 @@ public class ZoneController extends BaseController /** * 删除农场分区 */ - @PreAuthorize("@ss.hasPermi('csa:zone:remove')") + @PreAuthorize("@ss.hasPermi('csa:farmzone:remove')") @Log(title = "农场分区", businessType = BusinessType.DELETE) @DeleteMapping("/{codes}") public AjaxResult remove(@PathVariable String[] codes) diff --git a/private-farm/src/main/java/com/jlt/csa/controller/base/CsaDictDataController.java b/private-farm/src/main/java/com/jlt/csa/controller/base/CsaDictDataController.java new file mode 100644 index 000000000..24085d99c --- /dev/null +++ b/private-farm/src/main/java/com/jlt/csa/controller/base/CsaDictDataController.java @@ -0,0 +1,115 @@ +package com.jlt.csa.controller.base; + +import com.jlt.csa.service.base.ICsaDictDataService; +import com.jlt.csa.service.base.ICsaDictTypeService; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.domain.entity.SysDictData; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.common.utils.poi.ExcelUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.util.ArrayList; +import java.util.List; + +/** + * 数据字典信息 + * + * @author ruoyi + */ +@RestController +@RequestMapping("/csa/base/dict/data") +public class CsaDictDataController extends BaseController +{ + @Autowired + private ICsaDictDataService dictDataService; + + @Autowired + private ICsaDictTypeService dictTypeService; + + @PreAuthorize("@ss.hasPermi('system:dict:list')") + @GetMapping("/list") + public TableDataInfo list(SysDictData dictData) + { + startPage(); + List list = dictDataService.selectDictDataList(dictData); + return getDataTable(list); + } + + @Log(title = "字典数据", businessType = BusinessType.EXPORT) + @PreAuthorize("@ss.hasPermi('system:dict:export')") + @PostMapping("/export") + public void export(HttpServletResponse response, SysDictData dictData) + { + List list = dictDataService.selectDictDataList(dictData); + ExcelUtil util = new ExcelUtil(SysDictData.class); + util.exportExcel(response, list, "字典数据"); + } + + /** + * 查询字典数据详细 + */ + @PreAuthorize("@ss.hasPermi('system:dict:query')") + @GetMapping(value = "/{dictCode}") + public AjaxResult getInfo(@PathVariable Long dictCode) + { + return AjaxResult.success(dictDataService.selectDictDataById(dictCode)); + } + + /** + * 根据字典类型查询字典数据信息 + */ + @GetMapping(value = "/type/{dictType}") + public AjaxResult dictType(@PathVariable String dictType) + { + List data = dictTypeService.selectDictDataByType(dictType); + if (StringUtils.isNull(data)) + { + data = new ArrayList(); + } + return AjaxResult.success(data); + } + + /** + * 新增字典类型 + */ + @PreAuthorize("@ss.hasPermi('system:dict:add')") + @Log(title = "字典数据", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@Validated @RequestBody SysDictData dict) + { + dict.setCreateBy(getUsername()); + return toAjax(dictDataService.insertDictData(dict)); + } + + /** + * 修改保存字典类型 + */ + @PreAuthorize("@ss.hasPermi('system:dict:edit')") + @Log(title = "字典数据", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@Validated @RequestBody SysDictData dict) + { + dict.setUpdateBy(getUsername()); + return toAjax(dictDataService.updateDictData(dict)); + } + + /** + * 删除字典类型 + */ + @PreAuthorize("@ss.hasPermi('system:dict:remove')") + @Log(title = "字典类型", businessType = BusinessType.DELETE) + @DeleteMapping("/{dictCodes}") + public AjaxResult remove(@PathVariable Long[] dictCodes) + { + dictDataService.deleteDictDataByIds(dictCodes); + return success(); + } +} diff --git a/private-farm/src/main/java/com/jlt/csa/controller/base/CsaDictTypeController.java b/private-farm/src/main/java/com/jlt/csa/controller/base/CsaDictTypeController.java new file mode 100644 index 000000000..8ee22a66b --- /dev/null +++ b/private-farm/src/main/java/com/jlt/csa/controller/base/CsaDictTypeController.java @@ -0,0 +1,126 @@ +package com.jlt.csa.controller.base; + +import com.jlt.csa.service.base.ICsaDictTypeService; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.constant.UserConstants; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.domain.entity.SysDictType; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.common.utils.poi.ExcelUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +/** + * 数据字典信息 + * + * @author ruoyi + */ +@RestController +@RequestMapping("/csa/base/dict/type") +public class CsaDictTypeController extends BaseController +{ + @Autowired + private ICsaDictTypeService dictTypeService; + + @PreAuthorize("@ss.hasPermi('system:dict:list')") + @GetMapping("/list") + public TableDataInfo list(SysDictType dictType) + { + startPage(); + List list = dictTypeService.selectDictTypeList(dictType); + return getDataTable(list); + } + + @Log(title = "字典类型", businessType = BusinessType.EXPORT) + @PreAuthorize("@ss.hasPermi('system:dict:export')") + @PostMapping("/export") + public void export(HttpServletResponse response, SysDictType dictType) + { + List list = dictTypeService.selectDictTypeList(dictType); + ExcelUtil util = new ExcelUtil(SysDictType.class); + util.exportExcel(response, list, "字典类型"); + } + + /** + * 查询字典类型详细 + */ + @PreAuthorize("@ss.hasPermi('system:dict:query')") + @GetMapping(value = "/{dictId}") + public AjaxResult getInfo(@PathVariable Long dictId) + { + return AjaxResult.success(dictTypeService.selectDictTypeById(dictId)); + } + + /** + * 新增字典类型 + */ + @PreAuthorize("@ss.hasPermi('system:dict:add')") + @Log(title = "字典类型", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@Validated @RequestBody SysDictType dict) + { + if (UserConstants.NOT_UNIQUE.equals(dictTypeService.checkDictTypeUnique(dict))) + { + return AjaxResult.error("新增字典'" + dict.getDictName() + "'失败,字典类型已存在"); + } + dict.setCreateBy(getUsername()); + return toAjax(dictTypeService.insertDictType(dict)); + } + + /** + * 修改字典类型 + */ + @PreAuthorize("@ss.hasPermi('system:dict:edit')") + @Log(title = "字典类型", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@Validated @RequestBody SysDictType dict) + { + if (UserConstants.NOT_UNIQUE.equals(dictTypeService.checkDictTypeUnique(dict))) + { + return AjaxResult.error("修改字典'" + dict.getDictName() + "'失败,字典类型已存在"); + } + dict.setUpdateBy(getUsername()); + return toAjax(dictTypeService.updateDictType(dict)); + } + + /** + * 删除字典类型 + */ + @PreAuthorize("@ss.hasPermi('system:dict:remove')") + @Log(title = "字典类型", businessType = BusinessType.DELETE) + @DeleteMapping("/{dictIds}") + public AjaxResult remove(@PathVariable Long[] dictIds) + { + dictTypeService.deleteDictTypeByIds(dictIds); + return success(); + } + + /** + * 刷新字典缓存 + */ + @PreAuthorize("@ss.hasPermi('system:dict:remove')") + @Log(title = "字典类型", businessType = BusinessType.CLEAN) + @DeleteMapping("/refreshCache") + public AjaxResult refreshCache() + { + dictTypeService.resetDictCache(); + return AjaxResult.success(); + } + + /** + * 获取字典选择框列表 + */ + @GetMapping("/optionselect") + public AjaxResult optionselect() + { + List dictTypes = dictTypeService.selectDictTypeAll(); + return AjaxResult.success(dictTypes); + } +} diff --git a/private-farm/src/main/java/com/jlt/csa/domain/Zone.java b/private-farm/src/main/java/com/jlt/csa/domain/Zone.java index 700f54bd8..e02269108 100644 --- a/private-farm/src/main/java/com/jlt/csa/domain/Zone.java +++ b/private-farm/src/main/java/com/jlt/csa/domain/Zone.java @@ -9,25 +9,28 @@ import com.ruoyi.common.core.domain.BaseEntity; * 农场分区对象 csa_zone * * @author 郏磊涛 - * @date 2022-03-24 + * @date 2022-03-27 */ public class Zone extends BaseEntity { private static final long serialVersionUID = 1L; /** 分区代码 */ - @Excel(name = "分区代码") private String code; + /** 分区类型 */ + @Excel(name = "分区类型") + private String type; + /** 分区名称 */ @Excel(name = "分区名称") private String name; - /** 状态 */ - @Excel(name = "状态") + /** 状态(0正常 1停用) */ + @Excel(name = "状态", readConverterExp = "0=正常,1=停用") private String status; - /** 删除标志 */ + /** 删除标志(0代表存在 2代表删除) */ private String delFlag; public void setCode(String code) @@ -39,6 +42,15 @@ public class Zone extends BaseEntity { return code; } + public void setType(String type) + { + this.type = type; + } + + public String getType() + { + return type; + } public void setName(String name) { this.name = name; @@ -71,6 +83,7 @@ public class Zone extends BaseEntity public String toString() { return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) .append("code", getCode()) + .append("type", getType()) .append("name", getName()) .append("status", getStatus()) .append("delFlag", getDelFlag()) diff --git a/private-farm/src/main/java/com/jlt/csa/mapper/ZoneMapper.java b/private-farm/src/main/java/com/jlt/csa/mapper/ZoneMapper.java index bd291fe0e..575150bdc 100644 --- a/private-farm/src/main/java/com/jlt/csa/mapper/ZoneMapper.java +++ b/private-farm/src/main/java/com/jlt/csa/mapper/ZoneMapper.java @@ -7,7 +7,7 @@ import com.jlt.csa.domain.Zone; * 农场分区Mapper接口 * * @author 郏磊涛 - * @date 2022-03-24 + * @date 2022-03-27 */ public interface ZoneMapper { diff --git a/private-farm/src/main/java/com/jlt/csa/mapper/base/CsaDictDataMapper.java b/private-farm/src/main/java/com/jlt/csa/mapper/base/CsaDictDataMapper.java new file mode 100644 index 000000000..45277cb4c --- /dev/null +++ b/private-farm/src/main/java/com/jlt/csa/mapper/base/CsaDictDataMapper.java @@ -0,0 +1,96 @@ +package com.jlt.csa.mapper.base; + +import com.ruoyi.common.core.domain.entity.SysDictData; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 字典表 数据层 + * + * @author ruoyi + */ +public interface CsaDictDataMapper +{ + /** + * 根据条件分页查询字典数据 + * + * @param dictData 字典数据信息 + * @return 字典数据集合信息 + */ + public List selectDictDataList(SysDictData dictData); + + /** + * 根据字典类型查询字典数据 + * + * @param dictType 字典类型 + * @return 字典数据集合信息 + */ + public List selectDictDataByType(String dictType); + + /** + * 根据字典类型和字典键值查询字典数据信息 + * + * @param dictType 字典类型 + * @param dictValue 字典键值 + * @return 字典标签 + */ + public String selectDictLabel(@Param("dictType") String dictType, @Param("dictValue") String dictValue); + + /** + * 根据字典数据ID查询信息 + * + * @param dictCode 字典数据ID + * @return 字典数据 + */ + public SysDictData selectDictDataById(Long dictCode); + + /** + * 查询字典数据 + * + * @param dictType 字典类型 + * @return 字典数据 + */ + public int countDictDataByType(String dictType); + + /** + * 通过字典ID删除字典数据信息 + * + * @param dictCode 字典数据ID + * @return 结果 + */ + public int deleteDictDataById(Long dictCode); + + /** + * 批量删除字典数据信息 + * + * @param dictCodes 需要删除的字典数据ID + * @return 结果 + */ + public int deleteDictDataByIds(Long[] dictCodes); + + /** + * 新增字典数据信息 + * + * @param dictData 字典数据信息 + * @return 结果 + */ + public int insertDictData(SysDictData dictData); + + /** + * 修改字典数据信息 + * + * @param dictData 字典数据信息 + * @return 结果 + */ + public int updateDictData(SysDictData dictData); + + /** + * 同步修改字典类型 + * + * @param oldDictType 旧字典类型 + * @param newDictType 新旧字典类型 + * @return 结果 + */ + public int updateDictDataType(@Param("oldDictType") String oldDictType, @Param("newDictType") String newDictType); +} diff --git a/private-farm/src/main/java/com/jlt/csa/mapper/base/CsaDictTypeMapper.java b/private-farm/src/main/java/com/jlt/csa/mapper/base/CsaDictTypeMapper.java new file mode 100644 index 000000000..05527671c --- /dev/null +++ b/private-farm/src/main/java/com/jlt/csa/mapper/base/CsaDictTypeMapper.java @@ -0,0 +1,86 @@ +package com.jlt.csa.mapper.base; + +import com.ruoyi.common.core.domain.entity.SysDictType; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * 字典表 数据层 + * + * @author ruoyi + */ +@Mapper +public interface CsaDictTypeMapper +{ + /** + * 根据条件分页查询字典类型 + * + * @param dictType 字典类型信息 + * @return 字典类型集合信息 + */ + public List selectDictTypeList(SysDictType dictType); + + /** + * 根据所有字典类型 + * + * @return 字典类型集合信息 + */ + public List selectDictTypeAll(); + + /** + * 根据字典类型ID查询信息 + * + * @param dictId 字典类型ID + * @return 字典类型 + */ + public SysDictType selectDictTypeById(Long dictId); + + /** + * 根据字典类型查询信息 + * + * @param dictType 字典类型 + * @return 字典类型 + */ + public SysDictType selectDictTypeByType(String dictType); + + /** + * 通过字典ID删除字典信息 + * + * @param dictId 字典ID + * @return 结果 + */ + public int deleteDictTypeById(Long dictId); + + /** + * 批量删除字典类型信息 + * + * @param dictIds 需要删除的字典ID + * @return 结果 + */ + public int deleteDictTypeByIds(Long[] dictIds); + + /** + * 新增字典类型信息 + * + * @param dictType 字典类型信息 + * @return 结果 + */ + public int insertDictType(SysDictType dictType); + + /** + * 修改字典类型信息 + * + * @param dictType 字典类型信息 + * @return 结果 + */ + public int updateDictType(SysDictType dictType); + + /** + * 校验字典类型称是否唯一 + * + * @param dictType 字典类型 + * @return 结果 + */ + public SysDictType checkDictTypeUnique(String dictType); +} diff --git a/private-farm/src/main/java/com/jlt/csa/service/IZoneService.java b/private-farm/src/main/java/com/jlt/csa/service/IZoneService.java index 3a2193e2a..ce956efc0 100644 --- a/private-farm/src/main/java/com/jlt/csa/service/IZoneService.java +++ b/private-farm/src/main/java/com/jlt/csa/service/IZoneService.java @@ -7,7 +7,7 @@ import com.jlt.csa.domain.Zone; * 农场分区Service接口 * * @author 郏磊涛 - * @date 2022-03-24 + * @date 2022-03-27 */ public interface IZoneService { diff --git a/private-farm/src/main/java/com/jlt/csa/service/base/ICsaDictDataService.java b/private-farm/src/main/java/com/jlt/csa/service/base/ICsaDictDataService.java new file mode 100644 index 000000000..299a9f2ed --- /dev/null +++ b/private-farm/src/main/java/com/jlt/csa/service/base/ICsaDictDataService.java @@ -0,0 +1,61 @@ +package com.jlt.csa.service.base; + +import com.ruoyi.common.core.domain.entity.SysDictData; + +import java.util.List; + +/** + * 字典 业务层 + * + * @author ruoyi + */ +public interface ICsaDictDataService +{ + /** + * 根据条件分页查询字典数据 + * + * @param dictData 字典数据信息 + * @return 字典数据集合信息 + */ + public List selectDictDataList(SysDictData dictData); + + /** + * 根据字典类型和字典键值查询字典数据信息 + * + * @param dictType 字典类型 + * @param dictValue 字典键值 + * @return 字典标签 + */ + public String selectDictLabel(String dictType, String dictValue); + + /** + * 根据字典数据ID查询信息 + * + * @param dictCode 字典数据ID + * @return 字典数据 + */ + public SysDictData selectDictDataById(Long dictCode); + + /** + * 批量删除字典数据信息 + * + * @param dictCodes 需要删除的字典数据ID + */ + public void deleteDictDataByIds(Long[] dictCodes); + + /** + * 新增保存字典数据信息 + * + * @param dictData 字典数据信息 + * @return 结果 + */ + public int insertDictData(SysDictData dictData); + + /** + * 修改保存字典数据信息 + * + * @param dictData 字典数据信息 + * @return 结果 + */ + public int updateDictData(SysDictData dictData); +} diff --git a/private-farm/src/main/java/com/jlt/csa/service/base/ICsaDictTypeService.java b/private-farm/src/main/java/com/jlt/csa/service/base/ICsaDictTypeService.java new file mode 100644 index 000000000..c73f1e9f9 --- /dev/null +++ b/private-farm/src/main/java/com/jlt/csa/service/base/ICsaDictTypeService.java @@ -0,0 +1,99 @@ +package com.jlt.csa.service.base; + +import com.ruoyi.common.core.domain.entity.SysDictData; +import com.ruoyi.common.core.domain.entity.SysDictType; + +import java.util.List; + +/** + * 字典 业务层 + * + * @author ruoyi + */ +public interface ICsaDictTypeService +{ + /** + * 根据条件分页查询字典类型 + * + * @param dictType 字典类型信息 + * @return 字典类型集合信息 + */ + public List selectDictTypeList(SysDictType dictType); + + /** + * 根据所有字典类型 + * + * @return 字典类型集合信息 + */ + public List selectDictTypeAll(); + + /** + * 根据字典类型查询字典数据 + * + * @param dictType 字典类型 + * @return 字典数据集合信息 + */ + public List selectDictDataByType(String dictType); + + /** + * 根据字典类型ID查询信息 + * + * @param dictId 字典类型ID + * @return 字典类型 + */ + public SysDictType selectDictTypeById(Long dictId); + + /** + * 根据字典类型查询信息 + * + * @param dictType 字典类型 + * @return 字典类型 + */ + public SysDictType selectDictTypeByType(String dictType); + + /** + * 批量删除字典信息 + * + * @param dictIds 需要删除的字典ID + */ + public void deleteDictTypeByIds(Long[] dictIds); + + /** + * 加载字典缓存数据 + */ + public void loadingDictCache(); + + /** + * 清空字典缓存数据 + */ + public void clearDictCache(); + + /** + * 重置字典缓存数据 + */ + public void resetDictCache(); + + /** + * 新增保存字典类型信息 + * + * @param dictType 字典类型信息 + * @return 结果 + */ + public int insertDictType(SysDictType dictType); + + /** + * 修改保存字典类型信息 + * + * @param dictType 字典类型信息 + * @return 结果 + */ + public int updateDictType(SysDictType dictType); + + /** + * 校验字典类型称是否唯一 + * + * @param dictType 字典类型 + * @return 结果 + */ + public String checkDictTypeUnique(SysDictType dictType); +} diff --git a/private-farm/src/main/java/com/jlt/csa/service/impl/ZoneServiceImpl.java b/private-farm/src/main/java/com/jlt/csa/service/impl/ZoneServiceImpl.java index 9e9b8eccf..658d009a9 100644 --- a/private-farm/src/main/java/com/jlt/csa/service/impl/ZoneServiceImpl.java +++ b/private-farm/src/main/java/com/jlt/csa/service/impl/ZoneServiceImpl.java @@ -12,7 +12,7 @@ import com.jlt.csa.service.IZoneService; * 农场分区Service业务层处理 * * @author 郏磊涛 - * @date 2022-03-24 + * @date 2022-03-27 */ @Service public class ZoneServiceImpl implements IZoneService diff --git a/private-farm/src/main/java/com/jlt/csa/service/impl/base/CsaDictDataServiceImpl.java b/private-farm/src/main/java/com/jlt/csa/service/impl/base/CsaDictDataServiceImpl.java new file mode 100644 index 000000000..8479c72d0 --- /dev/null +++ b/private-farm/src/main/java/com/jlt/csa/service/impl/base/CsaDictDataServiceImpl.java @@ -0,0 +1,112 @@ +package com.jlt.csa.service.impl.base; + +import com.jlt.csa.mapper.base.CsaDictDataMapper; +import com.jlt.csa.service.base.ICsaDictDataService; +import com.ruoyi.common.core.domain.entity.SysDictData; +import com.ruoyi.common.utils.DictUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 字典 业务层处理 + * + * @author ruoyi + */ +@Service +public class CsaDictDataServiceImpl implements ICsaDictDataService +{ + @Autowired + private CsaDictDataMapper dictDataMapper; + + /** + * 根据条件分页查询字典数据 + * + * @param dictData 字典数据信息 + * @return 字典数据集合信息 + */ + @Override + public List selectDictDataList(SysDictData dictData) + { + return dictDataMapper.selectDictDataList(dictData); + } + + /** + * 根据字典类型和字典键值查询字典数据信息 + * + * @param dictType 字典类型 + * @param dictValue 字典键值 + * @return 字典标签 + */ + @Override + public String selectDictLabel(String dictType, String dictValue) + { + return dictDataMapper.selectDictLabel(dictType, dictValue); + } + + /** + * 根据字典数据ID查询信息 + * + * @param dictCode 字典数据ID + * @return 字典数据 + */ + @Override + public SysDictData selectDictDataById(Long dictCode) + { + return dictDataMapper.selectDictDataById(dictCode); + } + + /** + * 批量删除字典数据信息 + * + * @param dictCodes 需要删除的字典数据ID + */ + @Override + public void deleteDictDataByIds(Long[] dictCodes) + { + for (Long dictCode : dictCodes) + { + SysDictData data = selectDictDataById(dictCode); + dictDataMapper.deleteDictDataById(dictCode); + List dictDatas = dictDataMapper.selectDictDataByType(data.getDictType()); + DictUtils.setDictCache(data.getDictType(), dictDatas); + } + } + + /** + * 新增保存字典数据信息 + * + * @param data 字典数据信息 + * @return 结果 + */ + @Override + public int insertDictData(SysDictData data) + { + int row = dictDataMapper.insertDictData(data); + if (row > 0) + { + List dictDatas = dictDataMapper.selectDictDataByType(data.getDictType()); + DictUtils.setDictCache(data.getDictType(), dictDatas); + } + return row; + } + + /** + * 修改保存字典数据信息 + * + * @param data 字典数据信息 + * @return 结果 + */ + @Override + public int updateDictData(SysDictData data) + { + int row = dictDataMapper.updateDictData(data); + if (row > 0) + { + List dictDatas = dictDataMapper.selectDictDataByType(data.getDictType()); + DictUtils.setDictCache(data.getDictType(), dictDatas); + } + return row; + } +} diff --git a/private-farm/src/main/java/com/jlt/csa/service/impl/base/CsaDictTypeServiceImpl.java b/private-farm/src/main/java/com/jlt/csa/service/impl/base/CsaDictTypeServiceImpl.java new file mode 100644 index 000000000..164096fb0 --- /dev/null +++ b/private-farm/src/main/java/com/jlt/csa/service/impl/base/CsaDictTypeServiceImpl.java @@ -0,0 +1,224 @@ +package com.jlt.csa.service.impl.base; + +import com.jlt.csa.mapper.base.CsaDictDataMapper; +import com.jlt.csa.mapper.base.CsaDictTypeMapper; +import com.jlt.csa.service.base.ICsaDictTypeService; +import com.ruoyi.common.constant.UserConstants; +import com.ruoyi.common.core.domain.entity.SysDictData; +import com.ruoyi.common.core.domain.entity.SysDictType; +import com.ruoyi.common.exception.ServiceException; +import com.ruoyi.common.utils.DictUtils; +import com.ruoyi.common.utils.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.PostConstruct; +import java.util.Comparator; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 字典 业务层处理 + * + * @author ruoyi + */ +@Service +public class CsaDictTypeServiceImpl implements ICsaDictTypeService +{ + @Autowired + private CsaDictTypeMapper dictTypeMapper; + + @Autowired + private CsaDictDataMapper dictDataMapper; + + /** + * 项目启动时,初始化字典到缓存 + */ + @PostConstruct + public void init() + { + loadingDictCache(); + } + + /** + * 根据条件分页查询字典类型 + * + * @param dictType 字典类型信息 + * @return 字典类型集合信息 + */ + @Override + public List selectDictTypeList(SysDictType dictType) + { + return dictTypeMapper.selectDictTypeList(dictType); + } + + /** + * 根据所有字典类型 + * + * @return 字典类型集合信息 + */ + @Override + public List selectDictTypeAll() + { + return dictTypeMapper.selectDictTypeAll(); + } + + /** + * 根据字典类型查询字典数据 + * + * @param dictType 字典类型 + * @return 字典数据集合信息 + */ + @Override + public List selectDictDataByType(String dictType) + { + List dictDatas = DictUtils.getDictCache(dictType); + if (StringUtils.isNotEmpty(dictDatas)) + { + return dictDatas; + } + dictDatas = dictDataMapper.selectDictDataByType(dictType); + if (StringUtils.isNotEmpty(dictDatas)) + { + DictUtils.setDictCache(dictType, dictDatas); + return dictDatas; + } + return null; + } + + /** + * 根据字典类型ID查询信息 + * + * @param dictId 字典类型ID + * @return 字典类型 + */ + @Override + public SysDictType selectDictTypeById(Long dictId) + { + return dictTypeMapper.selectDictTypeById(dictId); + } + + /** + * 根据字典类型查询信息 + * + * @param dictType 字典类型 + * @return 字典类型 + */ + @Override + public SysDictType selectDictTypeByType(String dictType) + { + return dictTypeMapper.selectDictTypeByType(dictType); + } + + /** + * 批量删除字典类型信息 + * + * @param dictIds 需要删除的字典ID + */ + @Override + public void deleteDictTypeByIds(Long[] dictIds) + { + for (Long dictId : dictIds) + { + SysDictType dictType = selectDictTypeById(dictId); + if (dictDataMapper.countDictDataByType(dictType.getDictType()) > 0) + { + throw new ServiceException(String.format("%1$s已分配,不能删除", dictType.getDictName())); + } + dictTypeMapper.deleteDictTypeById(dictId); + DictUtils.removeDictCache(dictType.getDictType()); + } + } + + /** + * 加载字典缓存数据 + */ + @Override + public void loadingDictCache() + { + SysDictData dictData = new SysDictData(); + dictData.setStatus("0"); + Map> dictDataMap = dictDataMapper.selectDictDataList(dictData).stream().collect(Collectors.groupingBy(SysDictData::getDictType)); + for (Map.Entry> entry : dictDataMap.entrySet()) + { + DictUtils.setDictCache(entry.getKey(), entry.getValue().stream().sorted(Comparator.comparing(SysDictData::getDictSort)).collect(Collectors.toList())); + } + } + + /** + * 清空字典缓存数据 + */ + @Override + public void clearDictCache() + { + DictUtils.clearDictCache(); + } + + /** + * 重置字典缓存数据 + */ + @Override + public void resetDictCache() + { + clearDictCache(); + loadingDictCache(); + } + + /** + * 新增保存字典类型信息 + * + * @param dict 字典类型信息 + * @return 结果 + */ + @Override + public int insertDictType(SysDictType dict) + { + int row = dictTypeMapper.insertDictType(dict); + if (row > 0) + { + DictUtils.setDictCache(dict.getDictType(), null); + } + return row; + } + + /** + * 修改保存字典类型信息 + * + * @param dict 字典类型信息 + * @return 结果 + */ + @Override + @Transactional + public int updateDictType(SysDictType dict) + { + SysDictType oldDict = dictTypeMapper.selectDictTypeById(dict.getDictId()); + dictDataMapper.updateDictDataType(oldDict.getDictType(), dict.getDictType()); + int row = dictTypeMapper.updateDictType(dict); + if (row > 0) + { + List dictDatas = dictDataMapper.selectDictDataByType(dict.getDictType()); + DictUtils.setDictCache(dict.getDictType(), dictDatas); + } + return row; + } + + /** + * 校验字典类型称是否唯一 + * + * @param dict 字典类型 + * @return 结果 + */ + @Override + public String checkDictTypeUnique(SysDictType dict) + { + Long dictId = StringUtils.isNull(dict.getDictId()) ? -1L : dict.getDictId(); + SysDictType dictType = dictTypeMapper.checkDictTypeUnique(dict.getDictType()); + if (StringUtils.isNotNull(dictType) && dictType.getDictId().longValue() != dictId.longValue()) + { + return UserConstants.NOT_UNIQUE; + } + return UserConstants.UNIQUE; + } +} diff --git a/private-farm/src/main/resources/mapper/csa/CropPhaseMapper.xml b/private-farm/src/main/resources/mapper/csa/ICsaDictDataService.xml similarity index 100% rename from private-farm/src/main/resources/mapper/csa/CropPhaseMapper.xml rename to private-farm/src/main/resources/mapper/csa/ICsaDictDataService.xml diff --git a/private-farm/src/main/resources/mapper/csa/ZoneMapper.xml b/private-farm/src/main/resources/mapper/csa/ZoneMapper.xml index c614b9e4f..8d0991bc3 100644 --- a/private-farm/src/main/resources/mapper/csa/ZoneMapper.xml +++ b/private-farm/src/main/resources/mapper/csa/ZoneMapper.xml @@ -6,6 +6,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -17,14 +18,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select code, name, status, del_flag, create_by, create_time, update_by, update_time, remark from csa_zone + select code, type, name, status, del_flag, create_by, create_time, update_by, update_time, remark from csa_zone @@ -36,7 +38,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" insert into csa_zone - code, + code, + type, name, status, del_flag, @@ -47,7 +50,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" remark, - #{code}, + #{code}, + #{type}, #{name}, #{status}, #{delFlag}, @@ -62,6 +66,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update csa_zone + type = #{type}, name = #{name}, status = #{status}, del_flag = #{delFlag}, diff --git a/private-farm/src/main/resources/mapper/csa/base/CsaDictDataMapper.xml b/private-farm/src/main/resources/mapper/csa/base/CsaDictDataMapper.xml new file mode 100644 index 000000000..7edfce74b --- /dev/null +++ b/private-farm/src/main/resources/mapper/csa/base/CsaDictDataMapper.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + select dict_code, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark + from csa_dict_data + + + + + + + + + + + + + + delete from csa_dict_data where dict_code = #{dictCode} + + + + delete from csa_dict_data where dict_code in + + #{dictCode} + + + + + update csa_dict_data + + dict_sort = #{dictSort}, + dict_label = #{dictLabel}, + dict_value = #{dictValue}, + dict_type = #{dictType}, + css_class = #{cssClass}, + list_class = #{listClass}, + is_default = #{isDefault}, + status = #{status}, + remark = #{remark}, + update_by = #{updateBy}, + update_time = sysdate() + + where dict_code = #{dictCode} + + + + update csa_dict_data set dict_type = #{newDictType} where dict_type = #{oldDictType} + + + + insert into csa_dict_data( + dict_sort, + dict_label, + dict_value, + dict_type, + css_class, + list_class, + is_default, + status, + remark, + create_by, + create_time + )values( + #{dictSort}, + #{dictLabel}, + #{dictValue}, + #{dictType}, + #{cssClass}, + #{listClass}, + #{isDefault}, + #{status}, + #{remark}, + #{createBy}, + sysdate() + ) + + + \ No newline at end of file diff --git a/private-farm/src/main/resources/mapper/csa/base/CsaDictTypeMapper.xml b/private-farm/src/main/resources/mapper/csa/base/CsaDictTypeMapper.xml new file mode 100644 index 000000000..d2ca275c3 --- /dev/null +++ b/private-farm/src/main/resources/mapper/csa/base/CsaDictTypeMapper.xml @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + + select dict_id, dict_name, dict_type, status, create_by, create_time, remark + from csa_dict_type + + + + + + + + + + + + + + delete from csa_dict_type where dict_id = #{dictId} + + + + delete from csa_dict_type where dict_id in + + #{dictId} + + + + + update csa_dict_type + + dict_name = #{dictName}, + dict_type = #{dictType}, + status = #{status}, + remark = #{remark}, + update_by = #{updateBy}, + update_time = sysdate() + + where dict_id = #{dictId} + + + + insert into csa_dict_type( + dict_name, + dict_type, + status, + remark, + create_by, + create_time + )values( + #{dictName}, + #{dictType}, + #{status}, + #{remark}, + #{createBy}, + sysdate() + ) + + + \ No newline at end of file diff --git a/ruoyi-ui/src/api/csa/dict/data.js b/ruoyi-ui/src/api/csa/dict/data.js new file mode 100644 index 000000000..db77528b3 --- /dev/null +++ b/ruoyi-ui/src/api/csa/dict/data.js @@ -0,0 +1,52 @@ +import request from '@/utils/request' + +// 查询字典数据列表 +export function listData(query) { + return request({ + url: '/csa/base/dict/data/list', + method: 'get', + params: query + }) +} + +// 查询字典数据详细 +export function getData(dictCode) { + return request({ + url: '/csa/base/dict/data/' + dictCode, + method: 'get' + }) +} + +// 根据字典类型查询字典数据信息 +export function getDicts(dictType) { + return request({ + url: '/csa/base/dict/data/type/' + dictType, + method: 'get' + }) +} + +// 新增字典数据 +export function addData(data) { + return request({ + url: '/csa/base/dict/data', + method: 'post', + data: data + }) +} + +// 修改字典数据 +export function updateData(data) { + return request({ + url: '/csa/base/dict/data', + method: 'put', + data: data + }) +} + +// 删除字典数据 +export function delData(dictCode) { + return request({ + url: '/csa/base/dict/data/' + dictCode, + method: 'delete' + }) +} diff --git a/ruoyi-ui/src/api/csa/dict/type.js b/ruoyi-ui/src/api/csa/dict/type.js new file mode 100644 index 000000000..d3edeb628 --- /dev/null +++ b/ruoyi-ui/src/api/csa/dict/type.js @@ -0,0 +1,60 @@ +import request from '@/utils/request' + +// 查询字典类型列表 +export function listType(query) { + return request({ + url: '/csa/base/dict/type/list', + method: 'get', + params: query + }) +} + +// 查询字典类型详细 +export function getType(dictId) { + return request({ + url: '/csa/base/dict/type/' + dictId, + method: 'get' + }) +} + +// 新增字典类型 +export function addType(data) { + return request({ + url: '/csa/base/dict/type', + method: 'post', + data: data + }) +} + +// 修改字典类型 +export function updateType(data) { + return request({ + url: '/csa/base/dict/type', + method: 'put', + data: data + }) +} + +// 删除字典类型 +export function delType(dictId) { + return request({ + url: '/csa/base/dict/type/' + dictId, + method: 'delete' + }) +} + +// 刷新字典缓存 +export function refreshCache() { + return request({ + url: '/csa/base/dict/type/refreshCache', + method: 'delete' + }) +} + +// 获取字典选择框列表 +export function optionselect() { + return request({ + url: '/csa/base/dict/type/optionselect', + method: 'get' + }) +} diff --git a/ruoyi-ui/src/api/csa/zone.js b/ruoyi-ui/src/api/csa/farmzone.js similarity index 56% rename from ruoyi-ui/src/api/csa/zone.js rename to ruoyi-ui/src/api/csa/farmzone.js index 3968dfb3b..5d71b7b86 100644 --- a/ruoyi-ui/src/api/csa/zone.js +++ b/ruoyi-ui/src/api/csa/farmzone.js @@ -1,44 +1,44 @@ import request from '@/utils/request' // 查询农场分区列表 -export function listZone(query) { +export function listFarmzone(query) { return request({ - url: '/csa/zone/list', + url: '/csa/farmzone/list', method: 'get', params: query }) } // 查询农场分区详细 -export function getZone(code) { +export function getFarmzone(code) { return request({ - url: '/csa/zone/' + code, + url: '/csa/farmzone/' + code, method: 'get' }) } // 新增农场分区 -export function addZone(data) { +export function addFarmzone(data) { return request({ - url: '/csa/zone', + url: '/csa/farmzone', method: 'post', data: data }) } // 修改农场分区 -export function updateZone(data) { +export function updateFarmzone(data) { return request({ - url: '/csa/zone', + url: '/csa/farmzone', method: 'put', data: data }) } // 删除农场分区 -export function delZone(code) { +export function delFarmzone(code) { return request({ - url: '/csa/zone/' + code, + url: '/csa/farmzone/' + code, method: 'delete' }) } diff --git a/ruoyi-ui/src/router/index.js b/ruoyi-ui/src/router/index.js index 0ef9d7098..52bfc0cf9 100644 --- a/ruoyi-ui/src/router/index.js +++ b/ruoyi-ui/src/router/index.js @@ -134,6 +134,20 @@ export const dynamicRoutes = [ } ] }, + { + path: '/csa/dict-data', + component: Layout, + hidden: true, + permissions: ['system:dict:list'], + children: [ + { + path: 'index/:dictId(\\d+)', + component: () => import('@/views/csa/dict/data'), + name: 'Data', + meta: { title: '字典数据', activeMenu: '/csa/dict' } + } + ] + }, { path: '/monitor/job-log', component: Layout, diff --git a/ruoyi-ui/src/views/csa/dict/data.vue b/ruoyi-ui/src/views/csa/dict/data.vue new file mode 100644 index 000000000..94329ce0d --- /dev/null +++ b/ruoyi-ui/src/views/csa/dict/data.vue @@ -0,0 +1,399 @@ + + + diff --git a/ruoyi-ui/src/views/csa/dict/index.vue b/ruoyi-ui/src/views/csa/dict/index.vue new file mode 100644 index 000000000..84385dae0 --- /dev/null +++ b/ruoyi-ui/src/views/csa/dict/index.vue @@ -0,0 +1,346 @@ + + + diff --git a/ruoyi-ui/src/views/csa/zone/index.vue b/ruoyi-ui/src/views/csa/farmzone/index.vue similarity index 79% rename from ruoyi-ui/src/views/csa/zone/index.vue rename to ruoyi-ui/src/views/csa/farmzone/index.vue index cb1299e3d..f35edf4c5 100644 --- a/ruoyi-ui/src/views/csa/zone/index.vue +++ b/ruoyi-ui/src/views/csa/farmzone/index.vue @@ -1,14 +1,6 @@ - + - + - - - + + + - +