diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..9e20bc1
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+.idea/
+**/target/**
+logs/
+*.iml
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..9e20bc1
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+.idea/
+**/target/**
+logs/
+*.iml
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..d67ac77
--- /dev/null
+++ b/README.md
@@ -0,0 +1,16 @@
+# casic项目 V1.0.0
+
+## 介绍
+基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot + shiro + mybatis-plus !
+基于casic项目代码简洁,注释丰富,上手容易,同时Guns包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块),
+可以直接作为一个后台管理系统的脚手架! 目标 `更简洁`,`更规范`!
+
+
+#### 其他
+>* [git地址](http://192.168.0.203:8080/gitbucket)
+>* [本地免登地址](http://localhost:8083/route/mockToken)
+
+
+
+
+
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..9e20bc1
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+.idea/
+**/target/**
+logs/
+*.iml
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..d67ac77
--- /dev/null
+++ b/README.md
@@ -0,0 +1,16 @@
+# casic项目 V1.0.0
+
+## 介绍
+基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot + shiro + mybatis-plus !
+基于casic项目代码简洁,注释丰富,上手容易,同时Guns包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块),
+可以直接作为一个后台管理系统的脚手架! 目标 `更简洁`,`更规范`!
+
+
+#### 其他
+>* [git地址](http://192.168.0.203:8080/gitbucket)
+>* [本地免登地址](http://localhost:8083/route/mockToken)
+
+
+
+
+
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
new file mode 100644
index 0000000..abd3c91
--- /dev/null
+++ b/casic-server/pom.xml
@@ -0,0 +1,41 @@
+
+
+ 4.0.0
+
+ com.casic
+ casic-bridge
+ 1.0.0
+ ../pom.xml
+
+
+ casic-server
+ ${pro.version}
+ jar
+ casic-server
+ casic 的spring boot版本
+
+
+
+
+ com.casic
+ casic-core
+ ${core.version}
+
+
+ com.casic
+ casic-admin-support
+ ${admin.version}
+
+
+
+
+
+ src/main/java
+
+ **/*.xml
+
+
+
+
+
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..9e20bc1
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+.idea/
+**/target/**
+logs/
+*.iml
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..d67ac77
--- /dev/null
+++ b/README.md
@@ -0,0 +1,16 @@
+# casic项目 V1.0.0
+
+## 介绍
+基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot + shiro + mybatis-plus !
+基于casic项目代码简洁,注释丰富,上手容易,同时Guns包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块),
+可以直接作为一个后台管理系统的脚手架! 目标 `更简洁`,`更规范`!
+
+
+#### 其他
+>* [git地址](http://192.168.0.203:8080/gitbucket)
+>* [本地免登地址](http://localhost:8083/route/mockToken)
+
+
+
+
+
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
new file mode 100644
index 0000000..abd3c91
--- /dev/null
+++ b/casic-server/pom.xml
@@ -0,0 +1,41 @@
+
+
+ 4.0.0
+
+ com.casic
+ casic-bridge
+ 1.0.0
+ ../pom.xml
+
+
+ casic-server
+ ${pro.version}
+ jar
+ casic-server
+ casic 的spring boot版本
+
+
+
+
+ com.casic
+ casic-core
+ ${core.version}
+
+
+ com.casic
+ casic-admin-support
+ ${admin.version}
+
+
+
+
+
+ src/main/java
+
+ **/*.xml
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeInformationController.java b/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeInformationController.java
new file mode 100644
index 0000000..5bcfcd5
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeInformationController.java
@@ -0,0 +1,119 @@
+package com.casic.missiles.modular.bridges.controller;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.DateUtil;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.bridges.model.BridgeInformation;
+import com.casic.missiles.modular.bridges.service.IBridgeInformationService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import java.util.List;
+
+/**
+ * 桥梁基本信息控制器
+ *
+ * @author dev
+ * @Date 2020-12-25 10:09:14
+ */
+@Controller
+@RequestMapping("/bridge")
+public class BridgeInformationController extends BaseController {
+
+
+ @Autowired
+ private IBridgeInformationService bridgeInformationService;
+
+ @Autowired
+ private ICommonPermissionService commonPermissionService;
+
+ /**
+ * 获取桥梁基本信息列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(@RequestParam(value = "bridge", required = false) String bridge) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper query = new EntityWrapper<>();
+ if (ToolUtil.isNotEmpty(bridge)) {
+ query.eq("road_name", bridge);
+ }
+ page = bridgeInformationService.selectPage(page, query);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 获取桥梁基本信息分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(String condition) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper query = new EntityWrapper<>();
+ page = bridgeInformationService.selectPage(page, query);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 新增桥梁基本信息
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(BridgeInformation bridgeInformation) {
+ bridgeInformationService.insert(bridgeInformation);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除桥梁基本信息
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam String bridgeInformationId) {
+ bridgeInformationService.deleteById(bridgeInformationId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("bridgeInformationIds") List bridgeInformationIds) {
+ bridgeInformationService.deleteBatchIds(bridgeInformationIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改桥梁基本信息
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(BridgeInformation bridgeInformation) {
+ bridgeInformationService.updateById(bridgeInformation);
+ return ResponseData.success();
+ }
+
+ /**
+ * 桥梁基本信息详情
+ */
+ @RequestMapping(value = "/detail")
+ @ResponseBody
+ public Object detail(@RequestParam Long id) {
+ BridgeInformation bridgeInformation = bridgeInformationService.selectById(id);
+ bridgeInformation.setTypeName(commonPermissionService.getDictNameByCode("bridgeType", bridgeInformation.getType()));
+ bridgeInformation.setBuildTimeStr(ToolUtil.isNotEmpty(bridgeInformation.getBuildTime()) ?
+ DateUtil.format(bridgeInformation.getBuildTime(), "yyyy-MM-dd") : null);
+ bridgeInformation.setOpenTimeStr(ToolUtil.isNotEmpty(bridgeInformation.getOpenTime()) ?
+ DateUtil.format(bridgeInformation.getOpenTime(), "yyyy-MM-dd") : null);
+ return ResponseData.success(bridgeInformation);
+ }
+}
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..9e20bc1
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+.idea/
+**/target/**
+logs/
+*.iml
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..d67ac77
--- /dev/null
+++ b/README.md
@@ -0,0 +1,16 @@
+# casic项目 V1.0.0
+
+## 介绍
+基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot + shiro + mybatis-plus !
+基于casic项目代码简洁,注释丰富,上手容易,同时Guns包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块),
+可以直接作为一个后台管理系统的脚手架! 目标 `更简洁`,`更规范`!
+
+
+#### 其他
+>* [git地址](http://192.168.0.203:8080/gitbucket)
+>* [本地免登地址](http://localhost:8083/route/mockToken)
+
+
+
+
+
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
new file mode 100644
index 0000000..abd3c91
--- /dev/null
+++ b/casic-server/pom.xml
@@ -0,0 +1,41 @@
+
+
+ 4.0.0
+
+ com.casic
+ casic-bridge
+ 1.0.0
+ ../pom.xml
+
+
+ casic-server
+ ${pro.version}
+ jar
+ casic-server
+ casic 的spring boot版本
+
+
+
+
+ com.casic
+ casic-core
+ ${core.version}
+
+
+ com.casic
+ casic-admin-support
+ ${admin.version}
+
+
+
+
+
+ src/main/java
+
+ **/*.xml
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeInformationController.java b/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeInformationController.java
new file mode 100644
index 0000000..5bcfcd5
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeInformationController.java
@@ -0,0 +1,119 @@
+package com.casic.missiles.modular.bridges.controller;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.DateUtil;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.bridges.model.BridgeInformation;
+import com.casic.missiles.modular.bridges.service.IBridgeInformationService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import java.util.List;
+
+/**
+ * 桥梁基本信息控制器
+ *
+ * @author dev
+ * @Date 2020-12-25 10:09:14
+ */
+@Controller
+@RequestMapping("/bridge")
+public class BridgeInformationController extends BaseController {
+
+
+ @Autowired
+ private IBridgeInformationService bridgeInformationService;
+
+ @Autowired
+ private ICommonPermissionService commonPermissionService;
+
+ /**
+ * 获取桥梁基本信息列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(@RequestParam(value = "bridge", required = false) String bridge) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper query = new EntityWrapper<>();
+ if (ToolUtil.isNotEmpty(bridge)) {
+ query.eq("road_name", bridge);
+ }
+ page = bridgeInformationService.selectPage(page, query);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 获取桥梁基本信息分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(String condition) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper query = new EntityWrapper<>();
+ page = bridgeInformationService.selectPage(page, query);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 新增桥梁基本信息
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(BridgeInformation bridgeInformation) {
+ bridgeInformationService.insert(bridgeInformation);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除桥梁基本信息
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam String bridgeInformationId) {
+ bridgeInformationService.deleteById(bridgeInformationId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("bridgeInformationIds") List bridgeInformationIds) {
+ bridgeInformationService.deleteBatchIds(bridgeInformationIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改桥梁基本信息
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(BridgeInformation bridgeInformation) {
+ bridgeInformationService.updateById(bridgeInformation);
+ return ResponseData.success();
+ }
+
+ /**
+ * 桥梁基本信息详情
+ */
+ @RequestMapping(value = "/detail")
+ @ResponseBody
+ public Object detail(@RequestParam Long id) {
+ BridgeInformation bridgeInformation = bridgeInformationService.selectById(id);
+ bridgeInformation.setTypeName(commonPermissionService.getDictNameByCode("bridgeType", bridgeInformation.getType()));
+ bridgeInformation.setBuildTimeStr(ToolUtil.isNotEmpty(bridgeInformation.getBuildTime()) ?
+ DateUtil.format(bridgeInformation.getBuildTime(), "yyyy-MM-dd") : null);
+ bridgeInformation.setOpenTimeStr(ToolUtil.isNotEmpty(bridgeInformation.getOpenTime()) ?
+ DateUtil.format(bridgeInformation.getOpenTime(), "yyyy-MM-dd") : null);
+ return ResponseData.success(bridgeInformation);
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeMaintenanceController.java b/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeMaintenanceController.java
new file mode 100644
index 0000000..2ef615d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeMaintenanceController.java
@@ -0,0 +1,189 @@
+package com.casic.missiles.modular.bridges.controller;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.DateUtil;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.bridges.model.BridgeInformation;
+import com.casic.missiles.modular.bridges.model.BridgeMaintenance;
+import com.casic.missiles.modular.bridges.service.IBridgeInformationService;
+import com.casic.missiles.modular.bridges.service.IBridgeMaintenanceService;
+import com.casic.missiles.modular.system.model.Dict;
+import com.casic.missiles.modular.system.model.Person;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * 养护信息控制器
+ *
+ * @author dev
+ * @Date 2020-12-25 10:09:33
+ */
+@Controller
+@RequestMapping("/maintain")
+public class BridgeMaintenanceController extends BaseController {
+
+
+ @Autowired
+ private IBridgeMaintenanceService bridgeMaintenanceService;
+
+ @Autowired
+ private ICommonPermissionService permissionService;
+ @Autowired
+ private IBridgeInformationService bridgeInformationService;
+
+ /**
+ * 获取养护信息列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(String condition) {
+ return bridgeMaintenanceService.selectList(null);
+ }
+
+ /**
+ * 获取养护信息分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(String keyword, String type,
+ String status, String bridgeId,
+ String startDate, String endDate) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper query = new EntityWrapper<>();
+ if (ToolUtil.isNotEmpty(keyword)) {
+ List personList = bridgeMaintenanceService.getPersonListByName(keyword);
+ List personIds = personList.stream().map(Person::getId).collect(Collectors.toList());
+ query.andNew().like("name", keyword).or().in("person_id", personIds);
+ }
+ if (ToolUtil.isNotEmpty(type)) {
+ query.eq("type", type);
+ }
+ if (ToolUtil.isNotEmpty(status)) {
+ query.eq("status", status);
+ }
+ if (ToolUtil.isNotEmpty(bridgeId)) {
+ query.eq("bridge_id", bridgeId);
+ }
+ if (ToolUtil.isNotEmpty(startDate)) {
+ query.ge("maintain_time", startDate);
+ }
+ if (ToolUtil.isNotEmpty(endDate)) {
+ query.le("maintain_time", endDate);
+ }
+ page = bridgeMaintenanceService.selectPage(page, query);
+ List bridgeMaintenanceList = page.getRecords();
+ bridgeMaintenanceList.forEach(bridgeMaintenance -> {
+ bridgeMaintenance.setTypeName(permissionService.getDictNameByCode("maintenanceType", bridgeMaintenance.getType()));
+ bridgeMaintenance.setStatusName(permissionService.getDictNameByCode("maintenanceStatus", bridgeMaintenance.getStatus()));
+ BridgeInformation bridgeInformation = bridgeInformationService.selectById(bridgeMaintenance.getBridgeId());
+ bridgeMaintenance.setBridgeName(bridgeInformation != null ? bridgeInformation.getName() : "");
+ bridgeMaintenance.setCategory("1".equals(bridgeMaintenance.getCategory()) ? "道路" : "桥梁");
+ bridgeMaintenance.setMaintainTimeStr(ToolUtil.isNotEmpty(bridgeMaintenance.getMaintainTime()) ?
+ DateUtil.format(bridgeMaintenance.getMaintainTime(), "yyyy-MM-dd") : null);
+
+ Person person=bridgeMaintenanceService.getPerson(bridgeMaintenance.getPersonId());
+ if(null!=person){
+ bridgeMaintenance.setPersonName(person.getName());
+ }
+ });
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 新增养护信息
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(BridgeMaintenance bridgeMaintenance) {
+ bridgeMaintenanceService.insert(bridgeMaintenance);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除养护信息
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam String bridgeMaintenanceId) {
+ bridgeMaintenanceService.deleteById(bridgeMaintenanceId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("bridgeMaintenanceIds") List bridgeMaintenanceIds) {
+ bridgeMaintenanceService.deleteBatchIds(bridgeMaintenanceIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改养护信息
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(BridgeMaintenance bridgeMaintenance) {
+ bridgeMaintenanceService.updateById(bridgeMaintenance);
+ return ResponseData.success();
+ }
+
+ /**
+ * 养护信息详情
+ */
+// @RequestMapping(value = "/detail/{bridgeMaintenanceId}")
+// @ResponseBody
+// public Object detail(@PathVariable("bridgeMaintenanceId") String bridgeMaintenanceId) {
+// ResultData resultData = new ResultData();
+// resultData.setCode(200);
+// resultData.setMessage("查询详情成功");
+// resultData.setData(bridgeMaintenanceService.selectById(bridgeMaintenanceId));
+// return resultData;
+// }
+
+
+ /**
+ * 年养护类型养护次数统计
+ */
+ @RequestMapping(value = "/maintainCount")
+ @ResponseBody
+ public Object maintainCount(@RequestParam(value = "year", required = false) String year) {
+
+ Map resultMap = new HashMap<>();
+ resultMap.put("rows", bridgeMaintenanceService.maintainCount(year));
+ return ResponseData.success(resultMap);
+ }
+
+ /***
+ * 根据类型获取养护内容
+ * @param type
+ * @return
+ */
+ @RequestMapping(value = "/contentByType")
+ @ResponseBody
+ public Object contentByType(@RequestParam(value = "type", required = false) String type) {
+
+ String content = "";
+ List dictList = permissionService.findInDictByCode("maintenanceType");
+ for (Dict dict : dictList) {
+ if (ToolUtil.isNotEmpty(type) && type.equals(dict.getCode())) {
+ content = dict.getTips();
+ }
+ }
+ return ResponseData.success(content);
+ }
+}
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..9e20bc1
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+.idea/
+**/target/**
+logs/
+*.iml
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..d67ac77
--- /dev/null
+++ b/README.md
@@ -0,0 +1,16 @@
+# casic项目 V1.0.0
+
+## 介绍
+基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot + shiro + mybatis-plus !
+基于casic项目代码简洁,注释丰富,上手容易,同时Guns包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块),
+可以直接作为一个后台管理系统的脚手架! 目标 `更简洁`,`更规范`!
+
+
+#### 其他
+>* [git地址](http://192.168.0.203:8080/gitbucket)
+>* [本地免登地址](http://localhost:8083/route/mockToken)
+
+
+
+
+
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
new file mode 100644
index 0000000..abd3c91
--- /dev/null
+++ b/casic-server/pom.xml
@@ -0,0 +1,41 @@
+
+
+ 4.0.0
+
+ com.casic
+ casic-bridge
+ 1.0.0
+ ../pom.xml
+
+
+ casic-server
+ ${pro.version}
+ jar
+ casic-server
+ casic 的spring boot版本
+
+
+
+
+ com.casic
+ casic-core
+ ${core.version}
+
+
+ com.casic
+ casic-admin-support
+ ${admin.version}
+
+
+
+
+
+ src/main/java
+
+ **/*.xml
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeInformationController.java b/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeInformationController.java
new file mode 100644
index 0000000..5bcfcd5
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeInformationController.java
@@ -0,0 +1,119 @@
+package com.casic.missiles.modular.bridges.controller;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.DateUtil;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.bridges.model.BridgeInformation;
+import com.casic.missiles.modular.bridges.service.IBridgeInformationService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import java.util.List;
+
+/**
+ * 桥梁基本信息控制器
+ *
+ * @author dev
+ * @Date 2020-12-25 10:09:14
+ */
+@Controller
+@RequestMapping("/bridge")
+public class BridgeInformationController extends BaseController {
+
+
+ @Autowired
+ private IBridgeInformationService bridgeInformationService;
+
+ @Autowired
+ private ICommonPermissionService commonPermissionService;
+
+ /**
+ * 获取桥梁基本信息列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(@RequestParam(value = "bridge", required = false) String bridge) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper query = new EntityWrapper<>();
+ if (ToolUtil.isNotEmpty(bridge)) {
+ query.eq("road_name", bridge);
+ }
+ page = bridgeInformationService.selectPage(page, query);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 获取桥梁基本信息分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(String condition) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper query = new EntityWrapper<>();
+ page = bridgeInformationService.selectPage(page, query);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 新增桥梁基本信息
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(BridgeInformation bridgeInformation) {
+ bridgeInformationService.insert(bridgeInformation);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除桥梁基本信息
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam String bridgeInformationId) {
+ bridgeInformationService.deleteById(bridgeInformationId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("bridgeInformationIds") List bridgeInformationIds) {
+ bridgeInformationService.deleteBatchIds(bridgeInformationIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改桥梁基本信息
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(BridgeInformation bridgeInformation) {
+ bridgeInformationService.updateById(bridgeInformation);
+ return ResponseData.success();
+ }
+
+ /**
+ * 桥梁基本信息详情
+ */
+ @RequestMapping(value = "/detail")
+ @ResponseBody
+ public Object detail(@RequestParam Long id) {
+ BridgeInformation bridgeInformation = bridgeInformationService.selectById(id);
+ bridgeInformation.setTypeName(commonPermissionService.getDictNameByCode("bridgeType", bridgeInformation.getType()));
+ bridgeInformation.setBuildTimeStr(ToolUtil.isNotEmpty(bridgeInformation.getBuildTime()) ?
+ DateUtil.format(bridgeInformation.getBuildTime(), "yyyy-MM-dd") : null);
+ bridgeInformation.setOpenTimeStr(ToolUtil.isNotEmpty(bridgeInformation.getOpenTime()) ?
+ DateUtil.format(bridgeInformation.getOpenTime(), "yyyy-MM-dd") : null);
+ return ResponseData.success(bridgeInformation);
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeMaintenanceController.java b/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeMaintenanceController.java
new file mode 100644
index 0000000..2ef615d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeMaintenanceController.java
@@ -0,0 +1,189 @@
+package com.casic.missiles.modular.bridges.controller;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.DateUtil;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.bridges.model.BridgeInformation;
+import com.casic.missiles.modular.bridges.model.BridgeMaintenance;
+import com.casic.missiles.modular.bridges.service.IBridgeInformationService;
+import com.casic.missiles.modular.bridges.service.IBridgeMaintenanceService;
+import com.casic.missiles.modular.system.model.Dict;
+import com.casic.missiles.modular.system.model.Person;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * 养护信息控制器
+ *
+ * @author dev
+ * @Date 2020-12-25 10:09:33
+ */
+@Controller
+@RequestMapping("/maintain")
+public class BridgeMaintenanceController extends BaseController {
+
+
+ @Autowired
+ private IBridgeMaintenanceService bridgeMaintenanceService;
+
+ @Autowired
+ private ICommonPermissionService permissionService;
+ @Autowired
+ private IBridgeInformationService bridgeInformationService;
+
+ /**
+ * 获取养护信息列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(String condition) {
+ return bridgeMaintenanceService.selectList(null);
+ }
+
+ /**
+ * 获取养护信息分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(String keyword, String type,
+ String status, String bridgeId,
+ String startDate, String endDate) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper query = new EntityWrapper<>();
+ if (ToolUtil.isNotEmpty(keyword)) {
+ List personList = bridgeMaintenanceService.getPersonListByName(keyword);
+ List personIds = personList.stream().map(Person::getId).collect(Collectors.toList());
+ query.andNew().like("name", keyword).or().in("person_id", personIds);
+ }
+ if (ToolUtil.isNotEmpty(type)) {
+ query.eq("type", type);
+ }
+ if (ToolUtil.isNotEmpty(status)) {
+ query.eq("status", status);
+ }
+ if (ToolUtil.isNotEmpty(bridgeId)) {
+ query.eq("bridge_id", bridgeId);
+ }
+ if (ToolUtil.isNotEmpty(startDate)) {
+ query.ge("maintain_time", startDate);
+ }
+ if (ToolUtil.isNotEmpty(endDate)) {
+ query.le("maintain_time", endDate);
+ }
+ page = bridgeMaintenanceService.selectPage(page, query);
+ List bridgeMaintenanceList = page.getRecords();
+ bridgeMaintenanceList.forEach(bridgeMaintenance -> {
+ bridgeMaintenance.setTypeName(permissionService.getDictNameByCode("maintenanceType", bridgeMaintenance.getType()));
+ bridgeMaintenance.setStatusName(permissionService.getDictNameByCode("maintenanceStatus", bridgeMaintenance.getStatus()));
+ BridgeInformation bridgeInformation = bridgeInformationService.selectById(bridgeMaintenance.getBridgeId());
+ bridgeMaintenance.setBridgeName(bridgeInformation != null ? bridgeInformation.getName() : "");
+ bridgeMaintenance.setCategory("1".equals(bridgeMaintenance.getCategory()) ? "道路" : "桥梁");
+ bridgeMaintenance.setMaintainTimeStr(ToolUtil.isNotEmpty(bridgeMaintenance.getMaintainTime()) ?
+ DateUtil.format(bridgeMaintenance.getMaintainTime(), "yyyy-MM-dd") : null);
+
+ Person person=bridgeMaintenanceService.getPerson(bridgeMaintenance.getPersonId());
+ if(null!=person){
+ bridgeMaintenance.setPersonName(person.getName());
+ }
+ });
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 新增养护信息
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(BridgeMaintenance bridgeMaintenance) {
+ bridgeMaintenanceService.insert(bridgeMaintenance);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除养护信息
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam String bridgeMaintenanceId) {
+ bridgeMaintenanceService.deleteById(bridgeMaintenanceId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("bridgeMaintenanceIds") List bridgeMaintenanceIds) {
+ bridgeMaintenanceService.deleteBatchIds(bridgeMaintenanceIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改养护信息
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(BridgeMaintenance bridgeMaintenance) {
+ bridgeMaintenanceService.updateById(bridgeMaintenance);
+ return ResponseData.success();
+ }
+
+ /**
+ * 养护信息详情
+ */
+// @RequestMapping(value = "/detail/{bridgeMaintenanceId}")
+// @ResponseBody
+// public Object detail(@PathVariable("bridgeMaintenanceId") String bridgeMaintenanceId) {
+// ResultData resultData = new ResultData();
+// resultData.setCode(200);
+// resultData.setMessage("查询详情成功");
+// resultData.setData(bridgeMaintenanceService.selectById(bridgeMaintenanceId));
+// return resultData;
+// }
+
+
+ /**
+ * 年养护类型养护次数统计
+ */
+ @RequestMapping(value = "/maintainCount")
+ @ResponseBody
+ public Object maintainCount(@RequestParam(value = "year", required = false) String year) {
+
+ Map resultMap = new HashMap<>();
+ resultMap.put("rows", bridgeMaintenanceService.maintainCount(year));
+ return ResponseData.success(resultMap);
+ }
+
+ /***
+ * 根据类型获取养护内容
+ * @param type
+ * @return
+ */
+ @RequestMapping(value = "/contentByType")
+ @ResponseBody
+ public Object contentByType(@RequestParam(value = "type", required = false) String type) {
+
+ String content = "";
+ List dictList = permissionService.findInDictByCode("maintenanceType");
+ for (Dict dict : dictList) {
+ if (ToolUtil.isNotEmpty(type) && type.equals(dict.getCode())) {
+ content = dict.getTips();
+ }
+ }
+ return ResponseData.success(content);
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/BridgeInformationMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/BridgeInformationMapper.java
new file mode 100644
index 0000000..cccaa99
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/BridgeInformationMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.bridges.dao;
+
+import com.casic.missiles.modular.bridges.model.BridgeInformation;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author stylefeng123
+ * @since 2020-12-25
+ */
+public interface BridgeInformationMapper extends BaseMapper {
+
+}
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..9e20bc1
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+.idea/
+**/target/**
+logs/
+*.iml
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..d67ac77
--- /dev/null
+++ b/README.md
@@ -0,0 +1,16 @@
+# casic项目 V1.0.0
+
+## 介绍
+基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot + shiro + mybatis-plus !
+基于casic项目代码简洁,注释丰富,上手容易,同时Guns包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块),
+可以直接作为一个后台管理系统的脚手架! 目标 `更简洁`,`更规范`!
+
+
+#### 其他
+>* [git地址](http://192.168.0.203:8080/gitbucket)
+>* [本地免登地址](http://localhost:8083/route/mockToken)
+
+
+
+
+
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
new file mode 100644
index 0000000..abd3c91
--- /dev/null
+++ b/casic-server/pom.xml
@@ -0,0 +1,41 @@
+
+
+ 4.0.0
+
+ com.casic
+ casic-bridge
+ 1.0.0
+ ../pom.xml
+
+
+ casic-server
+ ${pro.version}
+ jar
+ casic-server
+ casic 的spring boot版本
+
+
+
+
+ com.casic
+ casic-core
+ ${core.version}
+
+
+ com.casic
+ casic-admin-support
+ ${admin.version}
+
+
+
+
+
+ src/main/java
+
+ **/*.xml
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeInformationController.java b/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeInformationController.java
new file mode 100644
index 0000000..5bcfcd5
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeInformationController.java
@@ -0,0 +1,119 @@
+package com.casic.missiles.modular.bridges.controller;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.DateUtil;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.bridges.model.BridgeInformation;
+import com.casic.missiles.modular.bridges.service.IBridgeInformationService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import java.util.List;
+
+/**
+ * 桥梁基本信息控制器
+ *
+ * @author dev
+ * @Date 2020-12-25 10:09:14
+ */
+@Controller
+@RequestMapping("/bridge")
+public class BridgeInformationController extends BaseController {
+
+
+ @Autowired
+ private IBridgeInformationService bridgeInformationService;
+
+ @Autowired
+ private ICommonPermissionService commonPermissionService;
+
+ /**
+ * 获取桥梁基本信息列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(@RequestParam(value = "bridge", required = false) String bridge) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper query = new EntityWrapper<>();
+ if (ToolUtil.isNotEmpty(bridge)) {
+ query.eq("road_name", bridge);
+ }
+ page = bridgeInformationService.selectPage(page, query);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 获取桥梁基本信息分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(String condition) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper query = new EntityWrapper<>();
+ page = bridgeInformationService.selectPage(page, query);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 新增桥梁基本信息
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(BridgeInformation bridgeInformation) {
+ bridgeInformationService.insert(bridgeInformation);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除桥梁基本信息
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam String bridgeInformationId) {
+ bridgeInformationService.deleteById(bridgeInformationId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("bridgeInformationIds") List bridgeInformationIds) {
+ bridgeInformationService.deleteBatchIds(bridgeInformationIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改桥梁基本信息
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(BridgeInformation bridgeInformation) {
+ bridgeInformationService.updateById(bridgeInformation);
+ return ResponseData.success();
+ }
+
+ /**
+ * 桥梁基本信息详情
+ */
+ @RequestMapping(value = "/detail")
+ @ResponseBody
+ public Object detail(@RequestParam Long id) {
+ BridgeInformation bridgeInformation = bridgeInformationService.selectById(id);
+ bridgeInformation.setTypeName(commonPermissionService.getDictNameByCode("bridgeType", bridgeInformation.getType()));
+ bridgeInformation.setBuildTimeStr(ToolUtil.isNotEmpty(bridgeInformation.getBuildTime()) ?
+ DateUtil.format(bridgeInformation.getBuildTime(), "yyyy-MM-dd") : null);
+ bridgeInformation.setOpenTimeStr(ToolUtil.isNotEmpty(bridgeInformation.getOpenTime()) ?
+ DateUtil.format(bridgeInformation.getOpenTime(), "yyyy-MM-dd") : null);
+ return ResponseData.success(bridgeInformation);
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeMaintenanceController.java b/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeMaintenanceController.java
new file mode 100644
index 0000000..2ef615d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeMaintenanceController.java
@@ -0,0 +1,189 @@
+package com.casic.missiles.modular.bridges.controller;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.DateUtil;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.bridges.model.BridgeInformation;
+import com.casic.missiles.modular.bridges.model.BridgeMaintenance;
+import com.casic.missiles.modular.bridges.service.IBridgeInformationService;
+import com.casic.missiles.modular.bridges.service.IBridgeMaintenanceService;
+import com.casic.missiles.modular.system.model.Dict;
+import com.casic.missiles.modular.system.model.Person;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * 养护信息控制器
+ *
+ * @author dev
+ * @Date 2020-12-25 10:09:33
+ */
+@Controller
+@RequestMapping("/maintain")
+public class BridgeMaintenanceController extends BaseController {
+
+
+ @Autowired
+ private IBridgeMaintenanceService bridgeMaintenanceService;
+
+ @Autowired
+ private ICommonPermissionService permissionService;
+ @Autowired
+ private IBridgeInformationService bridgeInformationService;
+
+ /**
+ * 获取养护信息列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(String condition) {
+ return bridgeMaintenanceService.selectList(null);
+ }
+
+ /**
+ * 获取养护信息分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(String keyword, String type,
+ String status, String bridgeId,
+ String startDate, String endDate) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper query = new EntityWrapper<>();
+ if (ToolUtil.isNotEmpty(keyword)) {
+ List personList = bridgeMaintenanceService.getPersonListByName(keyword);
+ List personIds = personList.stream().map(Person::getId).collect(Collectors.toList());
+ query.andNew().like("name", keyword).or().in("person_id", personIds);
+ }
+ if (ToolUtil.isNotEmpty(type)) {
+ query.eq("type", type);
+ }
+ if (ToolUtil.isNotEmpty(status)) {
+ query.eq("status", status);
+ }
+ if (ToolUtil.isNotEmpty(bridgeId)) {
+ query.eq("bridge_id", bridgeId);
+ }
+ if (ToolUtil.isNotEmpty(startDate)) {
+ query.ge("maintain_time", startDate);
+ }
+ if (ToolUtil.isNotEmpty(endDate)) {
+ query.le("maintain_time", endDate);
+ }
+ page = bridgeMaintenanceService.selectPage(page, query);
+ List bridgeMaintenanceList = page.getRecords();
+ bridgeMaintenanceList.forEach(bridgeMaintenance -> {
+ bridgeMaintenance.setTypeName(permissionService.getDictNameByCode("maintenanceType", bridgeMaintenance.getType()));
+ bridgeMaintenance.setStatusName(permissionService.getDictNameByCode("maintenanceStatus", bridgeMaintenance.getStatus()));
+ BridgeInformation bridgeInformation = bridgeInformationService.selectById(bridgeMaintenance.getBridgeId());
+ bridgeMaintenance.setBridgeName(bridgeInformation != null ? bridgeInformation.getName() : "");
+ bridgeMaintenance.setCategory("1".equals(bridgeMaintenance.getCategory()) ? "道路" : "桥梁");
+ bridgeMaintenance.setMaintainTimeStr(ToolUtil.isNotEmpty(bridgeMaintenance.getMaintainTime()) ?
+ DateUtil.format(bridgeMaintenance.getMaintainTime(), "yyyy-MM-dd") : null);
+
+ Person person=bridgeMaintenanceService.getPerson(bridgeMaintenance.getPersonId());
+ if(null!=person){
+ bridgeMaintenance.setPersonName(person.getName());
+ }
+ });
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 新增养护信息
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(BridgeMaintenance bridgeMaintenance) {
+ bridgeMaintenanceService.insert(bridgeMaintenance);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除养护信息
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam String bridgeMaintenanceId) {
+ bridgeMaintenanceService.deleteById(bridgeMaintenanceId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("bridgeMaintenanceIds") List bridgeMaintenanceIds) {
+ bridgeMaintenanceService.deleteBatchIds(bridgeMaintenanceIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改养护信息
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(BridgeMaintenance bridgeMaintenance) {
+ bridgeMaintenanceService.updateById(bridgeMaintenance);
+ return ResponseData.success();
+ }
+
+ /**
+ * 养护信息详情
+ */
+// @RequestMapping(value = "/detail/{bridgeMaintenanceId}")
+// @ResponseBody
+// public Object detail(@PathVariable("bridgeMaintenanceId") String bridgeMaintenanceId) {
+// ResultData resultData = new ResultData();
+// resultData.setCode(200);
+// resultData.setMessage("查询详情成功");
+// resultData.setData(bridgeMaintenanceService.selectById(bridgeMaintenanceId));
+// return resultData;
+// }
+
+
+ /**
+ * 年养护类型养护次数统计
+ */
+ @RequestMapping(value = "/maintainCount")
+ @ResponseBody
+ public Object maintainCount(@RequestParam(value = "year", required = false) String year) {
+
+ Map resultMap = new HashMap<>();
+ resultMap.put("rows", bridgeMaintenanceService.maintainCount(year));
+ return ResponseData.success(resultMap);
+ }
+
+ /***
+ * 根据类型获取养护内容
+ * @param type
+ * @return
+ */
+ @RequestMapping(value = "/contentByType")
+ @ResponseBody
+ public Object contentByType(@RequestParam(value = "type", required = false) String type) {
+
+ String content = "";
+ List dictList = permissionService.findInDictByCode("maintenanceType");
+ for (Dict dict : dictList) {
+ if (ToolUtil.isNotEmpty(type) && type.equals(dict.getCode())) {
+ content = dict.getTips();
+ }
+ }
+ return ResponseData.success(content);
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/BridgeInformationMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/BridgeInformationMapper.java
new file mode 100644
index 0000000..cccaa99
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/BridgeInformationMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.bridges.dao;
+
+import com.casic.missiles.modular.bridges.model.BridgeInformation;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author stylefeng123
+ * @since 2020-12-25
+ */
+public interface BridgeInformationMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/BridgeMaintenanceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/BridgeMaintenanceMapper.java
new file mode 100644
index 0000000..bb9f349
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/BridgeMaintenanceMapper.java
@@ -0,0 +1,28 @@
+package com.casic.missiles.modular.bridges.dao;
+
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.casic.missiles.modular.bridges.dto.StatisticsDTO;
+import com.casic.missiles.modular.bridges.model.BridgeMaintenance;
+import com.casic.missiles.modular.system.model.Person;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author stylefeng123
+ * @since 2020-12-25
+ */
+public interface BridgeMaintenanceMapper extends BaseMapper {
+
+
+ List getPersonListByName(@Param("personName") String personName);
+
+ Person getPersonById(@Param("personId") Long personId);
+
+ List maintainCount(@Param("year") String year);
+
+}
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..9e20bc1
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+.idea/
+**/target/**
+logs/
+*.iml
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..d67ac77
--- /dev/null
+++ b/README.md
@@ -0,0 +1,16 @@
+# casic项目 V1.0.0
+
+## 介绍
+基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot + shiro + mybatis-plus !
+基于casic项目代码简洁,注释丰富,上手容易,同时Guns包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块),
+可以直接作为一个后台管理系统的脚手架! 目标 `更简洁`,`更规范`!
+
+
+#### 其他
+>* [git地址](http://192.168.0.203:8080/gitbucket)
+>* [本地免登地址](http://localhost:8083/route/mockToken)
+
+
+
+
+
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
new file mode 100644
index 0000000..abd3c91
--- /dev/null
+++ b/casic-server/pom.xml
@@ -0,0 +1,41 @@
+
+
+ 4.0.0
+
+ com.casic
+ casic-bridge
+ 1.0.0
+ ../pom.xml
+
+
+ casic-server
+ ${pro.version}
+ jar
+ casic-server
+ casic 的spring boot版本
+
+
+
+
+ com.casic
+ casic-core
+ ${core.version}
+
+
+ com.casic
+ casic-admin-support
+ ${admin.version}
+
+
+
+
+
+ src/main/java
+
+ **/*.xml
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeInformationController.java b/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeInformationController.java
new file mode 100644
index 0000000..5bcfcd5
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeInformationController.java
@@ -0,0 +1,119 @@
+package com.casic.missiles.modular.bridges.controller;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.DateUtil;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.bridges.model.BridgeInformation;
+import com.casic.missiles.modular.bridges.service.IBridgeInformationService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import java.util.List;
+
+/**
+ * 桥梁基本信息控制器
+ *
+ * @author dev
+ * @Date 2020-12-25 10:09:14
+ */
+@Controller
+@RequestMapping("/bridge")
+public class BridgeInformationController extends BaseController {
+
+
+ @Autowired
+ private IBridgeInformationService bridgeInformationService;
+
+ @Autowired
+ private ICommonPermissionService commonPermissionService;
+
+ /**
+ * 获取桥梁基本信息列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(@RequestParam(value = "bridge", required = false) String bridge) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper query = new EntityWrapper<>();
+ if (ToolUtil.isNotEmpty(bridge)) {
+ query.eq("road_name", bridge);
+ }
+ page = bridgeInformationService.selectPage(page, query);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 获取桥梁基本信息分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(String condition) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper query = new EntityWrapper<>();
+ page = bridgeInformationService.selectPage(page, query);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 新增桥梁基本信息
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(BridgeInformation bridgeInformation) {
+ bridgeInformationService.insert(bridgeInformation);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除桥梁基本信息
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam String bridgeInformationId) {
+ bridgeInformationService.deleteById(bridgeInformationId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("bridgeInformationIds") List bridgeInformationIds) {
+ bridgeInformationService.deleteBatchIds(bridgeInformationIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改桥梁基本信息
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(BridgeInformation bridgeInformation) {
+ bridgeInformationService.updateById(bridgeInformation);
+ return ResponseData.success();
+ }
+
+ /**
+ * 桥梁基本信息详情
+ */
+ @RequestMapping(value = "/detail")
+ @ResponseBody
+ public Object detail(@RequestParam Long id) {
+ BridgeInformation bridgeInformation = bridgeInformationService.selectById(id);
+ bridgeInformation.setTypeName(commonPermissionService.getDictNameByCode("bridgeType", bridgeInformation.getType()));
+ bridgeInformation.setBuildTimeStr(ToolUtil.isNotEmpty(bridgeInformation.getBuildTime()) ?
+ DateUtil.format(bridgeInformation.getBuildTime(), "yyyy-MM-dd") : null);
+ bridgeInformation.setOpenTimeStr(ToolUtil.isNotEmpty(bridgeInformation.getOpenTime()) ?
+ DateUtil.format(bridgeInformation.getOpenTime(), "yyyy-MM-dd") : null);
+ return ResponseData.success(bridgeInformation);
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeMaintenanceController.java b/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeMaintenanceController.java
new file mode 100644
index 0000000..2ef615d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeMaintenanceController.java
@@ -0,0 +1,189 @@
+package com.casic.missiles.modular.bridges.controller;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.DateUtil;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.bridges.model.BridgeInformation;
+import com.casic.missiles.modular.bridges.model.BridgeMaintenance;
+import com.casic.missiles.modular.bridges.service.IBridgeInformationService;
+import com.casic.missiles.modular.bridges.service.IBridgeMaintenanceService;
+import com.casic.missiles.modular.system.model.Dict;
+import com.casic.missiles.modular.system.model.Person;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * 养护信息控制器
+ *
+ * @author dev
+ * @Date 2020-12-25 10:09:33
+ */
+@Controller
+@RequestMapping("/maintain")
+public class BridgeMaintenanceController extends BaseController {
+
+
+ @Autowired
+ private IBridgeMaintenanceService bridgeMaintenanceService;
+
+ @Autowired
+ private ICommonPermissionService permissionService;
+ @Autowired
+ private IBridgeInformationService bridgeInformationService;
+
+ /**
+ * 获取养护信息列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(String condition) {
+ return bridgeMaintenanceService.selectList(null);
+ }
+
+ /**
+ * 获取养护信息分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(String keyword, String type,
+ String status, String bridgeId,
+ String startDate, String endDate) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper query = new EntityWrapper<>();
+ if (ToolUtil.isNotEmpty(keyword)) {
+ List personList = bridgeMaintenanceService.getPersonListByName(keyword);
+ List personIds = personList.stream().map(Person::getId).collect(Collectors.toList());
+ query.andNew().like("name", keyword).or().in("person_id", personIds);
+ }
+ if (ToolUtil.isNotEmpty(type)) {
+ query.eq("type", type);
+ }
+ if (ToolUtil.isNotEmpty(status)) {
+ query.eq("status", status);
+ }
+ if (ToolUtil.isNotEmpty(bridgeId)) {
+ query.eq("bridge_id", bridgeId);
+ }
+ if (ToolUtil.isNotEmpty(startDate)) {
+ query.ge("maintain_time", startDate);
+ }
+ if (ToolUtil.isNotEmpty(endDate)) {
+ query.le("maintain_time", endDate);
+ }
+ page = bridgeMaintenanceService.selectPage(page, query);
+ List bridgeMaintenanceList = page.getRecords();
+ bridgeMaintenanceList.forEach(bridgeMaintenance -> {
+ bridgeMaintenance.setTypeName(permissionService.getDictNameByCode("maintenanceType", bridgeMaintenance.getType()));
+ bridgeMaintenance.setStatusName(permissionService.getDictNameByCode("maintenanceStatus", bridgeMaintenance.getStatus()));
+ BridgeInformation bridgeInformation = bridgeInformationService.selectById(bridgeMaintenance.getBridgeId());
+ bridgeMaintenance.setBridgeName(bridgeInformation != null ? bridgeInformation.getName() : "");
+ bridgeMaintenance.setCategory("1".equals(bridgeMaintenance.getCategory()) ? "道路" : "桥梁");
+ bridgeMaintenance.setMaintainTimeStr(ToolUtil.isNotEmpty(bridgeMaintenance.getMaintainTime()) ?
+ DateUtil.format(bridgeMaintenance.getMaintainTime(), "yyyy-MM-dd") : null);
+
+ Person person=bridgeMaintenanceService.getPerson(bridgeMaintenance.getPersonId());
+ if(null!=person){
+ bridgeMaintenance.setPersonName(person.getName());
+ }
+ });
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 新增养护信息
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(BridgeMaintenance bridgeMaintenance) {
+ bridgeMaintenanceService.insert(bridgeMaintenance);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除养护信息
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam String bridgeMaintenanceId) {
+ bridgeMaintenanceService.deleteById(bridgeMaintenanceId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("bridgeMaintenanceIds") List bridgeMaintenanceIds) {
+ bridgeMaintenanceService.deleteBatchIds(bridgeMaintenanceIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改养护信息
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(BridgeMaintenance bridgeMaintenance) {
+ bridgeMaintenanceService.updateById(bridgeMaintenance);
+ return ResponseData.success();
+ }
+
+ /**
+ * 养护信息详情
+ */
+// @RequestMapping(value = "/detail/{bridgeMaintenanceId}")
+// @ResponseBody
+// public Object detail(@PathVariable("bridgeMaintenanceId") String bridgeMaintenanceId) {
+// ResultData resultData = new ResultData();
+// resultData.setCode(200);
+// resultData.setMessage("查询详情成功");
+// resultData.setData(bridgeMaintenanceService.selectById(bridgeMaintenanceId));
+// return resultData;
+// }
+
+
+ /**
+ * 年养护类型养护次数统计
+ */
+ @RequestMapping(value = "/maintainCount")
+ @ResponseBody
+ public Object maintainCount(@RequestParam(value = "year", required = false) String year) {
+
+ Map resultMap = new HashMap<>();
+ resultMap.put("rows", bridgeMaintenanceService.maintainCount(year));
+ return ResponseData.success(resultMap);
+ }
+
+ /***
+ * 根据类型获取养护内容
+ * @param type
+ * @return
+ */
+ @RequestMapping(value = "/contentByType")
+ @ResponseBody
+ public Object contentByType(@RequestParam(value = "type", required = false) String type) {
+
+ String content = "";
+ List dictList = permissionService.findInDictByCode("maintenanceType");
+ for (Dict dict : dictList) {
+ if (ToolUtil.isNotEmpty(type) && type.equals(dict.getCode())) {
+ content = dict.getTips();
+ }
+ }
+ return ResponseData.success(content);
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/BridgeInformationMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/BridgeInformationMapper.java
new file mode 100644
index 0000000..cccaa99
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/BridgeInformationMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.bridges.dao;
+
+import com.casic.missiles.modular.bridges.model.BridgeInformation;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author stylefeng123
+ * @since 2020-12-25
+ */
+public interface BridgeInformationMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/BridgeMaintenanceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/BridgeMaintenanceMapper.java
new file mode 100644
index 0000000..bb9f349
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/BridgeMaintenanceMapper.java
@@ -0,0 +1,28 @@
+package com.casic.missiles.modular.bridges.dao;
+
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.casic.missiles.modular.bridges.dto.StatisticsDTO;
+import com.casic.missiles.modular.bridges.model.BridgeMaintenance;
+import com.casic.missiles.modular.system.model.Person;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author stylefeng123
+ * @since 2020-12-25
+ */
+public interface BridgeMaintenanceMapper extends BaseMapper {
+
+
+ List getPersonListByName(@Param("personName") String personName);
+
+ Person getPersonById(@Param("personId") Long personId);
+
+ List maintainCount(@Param("year") String year);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/mapping/BridgeInformationMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/mapping/BridgeInformationMapper.xml
new file mode 100644
index 0000000..e6c6db3
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/mapping/BridgeInformationMapper.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id, name, type, bridge_code AS bridgeCode, road_name AS roadName, high, length, build_time AS buildTime, open_time AS openTime, photo, position, description, ts
+
+
+
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..9e20bc1
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+.idea/
+**/target/**
+logs/
+*.iml
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..d67ac77
--- /dev/null
+++ b/README.md
@@ -0,0 +1,16 @@
+# casic项目 V1.0.0
+
+## 介绍
+基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot + shiro + mybatis-plus !
+基于casic项目代码简洁,注释丰富,上手容易,同时Guns包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块),
+可以直接作为一个后台管理系统的脚手架! 目标 `更简洁`,`更规范`!
+
+
+#### 其他
+>* [git地址](http://192.168.0.203:8080/gitbucket)
+>* [本地免登地址](http://localhost:8083/route/mockToken)
+
+
+
+
+
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
new file mode 100644
index 0000000..abd3c91
--- /dev/null
+++ b/casic-server/pom.xml
@@ -0,0 +1,41 @@
+
+
+ 4.0.0
+
+ com.casic
+ casic-bridge
+ 1.0.0
+ ../pom.xml
+
+
+ casic-server
+ ${pro.version}
+ jar
+ casic-server
+ casic 的spring boot版本
+
+
+
+
+ com.casic
+ casic-core
+ ${core.version}
+
+
+ com.casic
+ casic-admin-support
+ ${admin.version}
+
+
+
+
+
+ src/main/java
+
+ **/*.xml
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeInformationController.java b/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeInformationController.java
new file mode 100644
index 0000000..5bcfcd5
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeInformationController.java
@@ -0,0 +1,119 @@
+package com.casic.missiles.modular.bridges.controller;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.DateUtil;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.bridges.model.BridgeInformation;
+import com.casic.missiles.modular.bridges.service.IBridgeInformationService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import java.util.List;
+
+/**
+ * 桥梁基本信息控制器
+ *
+ * @author dev
+ * @Date 2020-12-25 10:09:14
+ */
+@Controller
+@RequestMapping("/bridge")
+public class BridgeInformationController extends BaseController {
+
+
+ @Autowired
+ private IBridgeInformationService bridgeInformationService;
+
+ @Autowired
+ private ICommonPermissionService commonPermissionService;
+
+ /**
+ * 获取桥梁基本信息列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(@RequestParam(value = "bridge", required = false) String bridge) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper query = new EntityWrapper<>();
+ if (ToolUtil.isNotEmpty(bridge)) {
+ query.eq("road_name", bridge);
+ }
+ page = bridgeInformationService.selectPage(page, query);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 获取桥梁基本信息分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(String condition) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper query = new EntityWrapper<>();
+ page = bridgeInformationService.selectPage(page, query);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 新增桥梁基本信息
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(BridgeInformation bridgeInformation) {
+ bridgeInformationService.insert(bridgeInformation);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除桥梁基本信息
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam String bridgeInformationId) {
+ bridgeInformationService.deleteById(bridgeInformationId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("bridgeInformationIds") List bridgeInformationIds) {
+ bridgeInformationService.deleteBatchIds(bridgeInformationIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改桥梁基本信息
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(BridgeInformation bridgeInformation) {
+ bridgeInformationService.updateById(bridgeInformation);
+ return ResponseData.success();
+ }
+
+ /**
+ * 桥梁基本信息详情
+ */
+ @RequestMapping(value = "/detail")
+ @ResponseBody
+ public Object detail(@RequestParam Long id) {
+ BridgeInformation bridgeInformation = bridgeInformationService.selectById(id);
+ bridgeInformation.setTypeName(commonPermissionService.getDictNameByCode("bridgeType", bridgeInformation.getType()));
+ bridgeInformation.setBuildTimeStr(ToolUtil.isNotEmpty(bridgeInformation.getBuildTime()) ?
+ DateUtil.format(bridgeInformation.getBuildTime(), "yyyy-MM-dd") : null);
+ bridgeInformation.setOpenTimeStr(ToolUtil.isNotEmpty(bridgeInformation.getOpenTime()) ?
+ DateUtil.format(bridgeInformation.getOpenTime(), "yyyy-MM-dd") : null);
+ return ResponseData.success(bridgeInformation);
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeMaintenanceController.java b/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeMaintenanceController.java
new file mode 100644
index 0000000..2ef615d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeMaintenanceController.java
@@ -0,0 +1,189 @@
+package com.casic.missiles.modular.bridges.controller;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.DateUtil;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.bridges.model.BridgeInformation;
+import com.casic.missiles.modular.bridges.model.BridgeMaintenance;
+import com.casic.missiles.modular.bridges.service.IBridgeInformationService;
+import com.casic.missiles.modular.bridges.service.IBridgeMaintenanceService;
+import com.casic.missiles.modular.system.model.Dict;
+import com.casic.missiles.modular.system.model.Person;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * 养护信息控制器
+ *
+ * @author dev
+ * @Date 2020-12-25 10:09:33
+ */
+@Controller
+@RequestMapping("/maintain")
+public class BridgeMaintenanceController extends BaseController {
+
+
+ @Autowired
+ private IBridgeMaintenanceService bridgeMaintenanceService;
+
+ @Autowired
+ private ICommonPermissionService permissionService;
+ @Autowired
+ private IBridgeInformationService bridgeInformationService;
+
+ /**
+ * 获取养护信息列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(String condition) {
+ return bridgeMaintenanceService.selectList(null);
+ }
+
+ /**
+ * 获取养护信息分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(String keyword, String type,
+ String status, String bridgeId,
+ String startDate, String endDate) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper query = new EntityWrapper<>();
+ if (ToolUtil.isNotEmpty(keyword)) {
+ List personList = bridgeMaintenanceService.getPersonListByName(keyword);
+ List personIds = personList.stream().map(Person::getId).collect(Collectors.toList());
+ query.andNew().like("name", keyword).or().in("person_id", personIds);
+ }
+ if (ToolUtil.isNotEmpty(type)) {
+ query.eq("type", type);
+ }
+ if (ToolUtil.isNotEmpty(status)) {
+ query.eq("status", status);
+ }
+ if (ToolUtil.isNotEmpty(bridgeId)) {
+ query.eq("bridge_id", bridgeId);
+ }
+ if (ToolUtil.isNotEmpty(startDate)) {
+ query.ge("maintain_time", startDate);
+ }
+ if (ToolUtil.isNotEmpty(endDate)) {
+ query.le("maintain_time", endDate);
+ }
+ page = bridgeMaintenanceService.selectPage(page, query);
+ List bridgeMaintenanceList = page.getRecords();
+ bridgeMaintenanceList.forEach(bridgeMaintenance -> {
+ bridgeMaintenance.setTypeName(permissionService.getDictNameByCode("maintenanceType", bridgeMaintenance.getType()));
+ bridgeMaintenance.setStatusName(permissionService.getDictNameByCode("maintenanceStatus", bridgeMaintenance.getStatus()));
+ BridgeInformation bridgeInformation = bridgeInformationService.selectById(bridgeMaintenance.getBridgeId());
+ bridgeMaintenance.setBridgeName(bridgeInformation != null ? bridgeInformation.getName() : "");
+ bridgeMaintenance.setCategory("1".equals(bridgeMaintenance.getCategory()) ? "道路" : "桥梁");
+ bridgeMaintenance.setMaintainTimeStr(ToolUtil.isNotEmpty(bridgeMaintenance.getMaintainTime()) ?
+ DateUtil.format(bridgeMaintenance.getMaintainTime(), "yyyy-MM-dd") : null);
+
+ Person person=bridgeMaintenanceService.getPerson(bridgeMaintenance.getPersonId());
+ if(null!=person){
+ bridgeMaintenance.setPersonName(person.getName());
+ }
+ });
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 新增养护信息
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(BridgeMaintenance bridgeMaintenance) {
+ bridgeMaintenanceService.insert(bridgeMaintenance);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除养护信息
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam String bridgeMaintenanceId) {
+ bridgeMaintenanceService.deleteById(bridgeMaintenanceId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("bridgeMaintenanceIds") List bridgeMaintenanceIds) {
+ bridgeMaintenanceService.deleteBatchIds(bridgeMaintenanceIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改养护信息
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(BridgeMaintenance bridgeMaintenance) {
+ bridgeMaintenanceService.updateById(bridgeMaintenance);
+ return ResponseData.success();
+ }
+
+ /**
+ * 养护信息详情
+ */
+// @RequestMapping(value = "/detail/{bridgeMaintenanceId}")
+// @ResponseBody
+// public Object detail(@PathVariable("bridgeMaintenanceId") String bridgeMaintenanceId) {
+// ResultData resultData = new ResultData();
+// resultData.setCode(200);
+// resultData.setMessage("查询详情成功");
+// resultData.setData(bridgeMaintenanceService.selectById(bridgeMaintenanceId));
+// return resultData;
+// }
+
+
+ /**
+ * 年养护类型养护次数统计
+ */
+ @RequestMapping(value = "/maintainCount")
+ @ResponseBody
+ public Object maintainCount(@RequestParam(value = "year", required = false) String year) {
+
+ Map resultMap = new HashMap<>();
+ resultMap.put("rows", bridgeMaintenanceService.maintainCount(year));
+ return ResponseData.success(resultMap);
+ }
+
+ /***
+ * 根据类型获取养护内容
+ * @param type
+ * @return
+ */
+ @RequestMapping(value = "/contentByType")
+ @ResponseBody
+ public Object contentByType(@RequestParam(value = "type", required = false) String type) {
+
+ String content = "";
+ List dictList = permissionService.findInDictByCode("maintenanceType");
+ for (Dict dict : dictList) {
+ if (ToolUtil.isNotEmpty(type) && type.equals(dict.getCode())) {
+ content = dict.getTips();
+ }
+ }
+ return ResponseData.success(content);
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/BridgeInformationMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/BridgeInformationMapper.java
new file mode 100644
index 0000000..cccaa99
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/BridgeInformationMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.bridges.dao;
+
+import com.casic.missiles.modular.bridges.model.BridgeInformation;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author stylefeng123
+ * @since 2020-12-25
+ */
+public interface BridgeInformationMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/BridgeMaintenanceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/BridgeMaintenanceMapper.java
new file mode 100644
index 0000000..bb9f349
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/BridgeMaintenanceMapper.java
@@ -0,0 +1,28 @@
+package com.casic.missiles.modular.bridges.dao;
+
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.casic.missiles.modular.bridges.dto.StatisticsDTO;
+import com.casic.missiles.modular.bridges.model.BridgeMaintenance;
+import com.casic.missiles.modular.system.model.Person;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author stylefeng123
+ * @since 2020-12-25
+ */
+public interface BridgeMaintenanceMapper extends BaseMapper {
+
+
+ List getPersonListByName(@Param("personName") String personName);
+
+ Person getPersonById(@Param("personId") Long personId);
+
+ List maintainCount(@Param("year") String year);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/mapping/BridgeInformationMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/mapping/BridgeInformationMapper.xml
new file mode 100644
index 0000000..e6c6db3
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/mapping/BridgeInformationMapper.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id, name, type, bridge_code AS bridgeCode, road_name AS roadName, high, length, build_time AS buildTime, open_time AS openTime, photo, position, description, ts
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/mapping/BridgeMaintenanceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/mapping/BridgeMaintenanceMapper.xml
new file mode 100644
index 0000000..a2845df
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/mapping/BridgeMaintenanceMapper.xml
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id, name, type, code, bridge_id AS bridgeId, status, person_id AS personId, maintain_time AS maintainTime, open_time AS openTime, tender, tender_company AS tenderCompany, description, ts, content, phone
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..9e20bc1
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+.idea/
+**/target/**
+logs/
+*.iml
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..d67ac77
--- /dev/null
+++ b/README.md
@@ -0,0 +1,16 @@
+# casic项目 V1.0.0
+
+## 介绍
+基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot + shiro + mybatis-plus !
+基于casic项目代码简洁,注释丰富,上手容易,同时Guns包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块),
+可以直接作为一个后台管理系统的脚手架! 目标 `更简洁`,`更规范`!
+
+
+#### 其他
+>* [git地址](http://192.168.0.203:8080/gitbucket)
+>* [本地免登地址](http://localhost:8083/route/mockToken)
+
+
+
+
+
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
new file mode 100644
index 0000000..abd3c91
--- /dev/null
+++ b/casic-server/pom.xml
@@ -0,0 +1,41 @@
+
+
+ 4.0.0
+
+ com.casic
+ casic-bridge
+ 1.0.0
+ ../pom.xml
+
+
+ casic-server
+ ${pro.version}
+ jar
+ casic-server
+ casic 的spring boot版本
+
+
+
+
+ com.casic
+ casic-core
+ ${core.version}
+
+
+ com.casic
+ casic-admin-support
+ ${admin.version}
+
+
+
+
+
+ src/main/java
+
+ **/*.xml
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeInformationController.java b/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeInformationController.java
new file mode 100644
index 0000000..5bcfcd5
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeInformationController.java
@@ -0,0 +1,119 @@
+package com.casic.missiles.modular.bridges.controller;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.DateUtil;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.bridges.model.BridgeInformation;
+import com.casic.missiles.modular.bridges.service.IBridgeInformationService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import java.util.List;
+
+/**
+ * 桥梁基本信息控制器
+ *
+ * @author dev
+ * @Date 2020-12-25 10:09:14
+ */
+@Controller
+@RequestMapping("/bridge")
+public class BridgeInformationController extends BaseController {
+
+
+ @Autowired
+ private IBridgeInformationService bridgeInformationService;
+
+ @Autowired
+ private ICommonPermissionService commonPermissionService;
+
+ /**
+ * 获取桥梁基本信息列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(@RequestParam(value = "bridge", required = false) String bridge) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper query = new EntityWrapper<>();
+ if (ToolUtil.isNotEmpty(bridge)) {
+ query.eq("road_name", bridge);
+ }
+ page = bridgeInformationService.selectPage(page, query);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 获取桥梁基本信息分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(String condition) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper query = new EntityWrapper<>();
+ page = bridgeInformationService.selectPage(page, query);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 新增桥梁基本信息
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(BridgeInformation bridgeInformation) {
+ bridgeInformationService.insert(bridgeInformation);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除桥梁基本信息
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam String bridgeInformationId) {
+ bridgeInformationService.deleteById(bridgeInformationId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("bridgeInformationIds") List bridgeInformationIds) {
+ bridgeInformationService.deleteBatchIds(bridgeInformationIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改桥梁基本信息
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(BridgeInformation bridgeInformation) {
+ bridgeInformationService.updateById(bridgeInformation);
+ return ResponseData.success();
+ }
+
+ /**
+ * 桥梁基本信息详情
+ */
+ @RequestMapping(value = "/detail")
+ @ResponseBody
+ public Object detail(@RequestParam Long id) {
+ BridgeInformation bridgeInformation = bridgeInformationService.selectById(id);
+ bridgeInformation.setTypeName(commonPermissionService.getDictNameByCode("bridgeType", bridgeInformation.getType()));
+ bridgeInformation.setBuildTimeStr(ToolUtil.isNotEmpty(bridgeInformation.getBuildTime()) ?
+ DateUtil.format(bridgeInformation.getBuildTime(), "yyyy-MM-dd") : null);
+ bridgeInformation.setOpenTimeStr(ToolUtil.isNotEmpty(bridgeInformation.getOpenTime()) ?
+ DateUtil.format(bridgeInformation.getOpenTime(), "yyyy-MM-dd") : null);
+ return ResponseData.success(bridgeInformation);
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeMaintenanceController.java b/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeMaintenanceController.java
new file mode 100644
index 0000000..2ef615d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeMaintenanceController.java
@@ -0,0 +1,189 @@
+package com.casic.missiles.modular.bridges.controller;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.DateUtil;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.bridges.model.BridgeInformation;
+import com.casic.missiles.modular.bridges.model.BridgeMaintenance;
+import com.casic.missiles.modular.bridges.service.IBridgeInformationService;
+import com.casic.missiles.modular.bridges.service.IBridgeMaintenanceService;
+import com.casic.missiles.modular.system.model.Dict;
+import com.casic.missiles.modular.system.model.Person;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * 养护信息控制器
+ *
+ * @author dev
+ * @Date 2020-12-25 10:09:33
+ */
+@Controller
+@RequestMapping("/maintain")
+public class BridgeMaintenanceController extends BaseController {
+
+
+ @Autowired
+ private IBridgeMaintenanceService bridgeMaintenanceService;
+
+ @Autowired
+ private ICommonPermissionService permissionService;
+ @Autowired
+ private IBridgeInformationService bridgeInformationService;
+
+ /**
+ * 获取养护信息列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(String condition) {
+ return bridgeMaintenanceService.selectList(null);
+ }
+
+ /**
+ * 获取养护信息分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(String keyword, String type,
+ String status, String bridgeId,
+ String startDate, String endDate) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper query = new EntityWrapper<>();
+ if (ToolUtil.isNotEmpty(keyword)) {
+ List personList = bridgeMaintenanceService.getPersonListByName(keyword);
+ List personIds = personList.stream().map(Person::getId).collect(Collectors.toList());
+ query.andNew().like("name", keyword).or().in("person_id", personIds);
+ }
+ if (ToolUtil.isNotEmpty(type)) {
+ query.eq("type", type);
+ }
+ if (ToolUtil.isNotEmpty(status)) {
+ query.eq("status", status);
+ }
+ if (ToolUtil.isNotEmpty(bridgeId)) {
+ query.eq("bridge_id", bridgeId);
+ }
+ if (ToolUtil.isNotEmpty(startDate)) {
+ query.ge("maintain_time", startDate);
+ }
+ if (ToolUtil.isNotEmpty(endDate)) {
+ query.le("maintain_time", endDate);
+ }
+ page = bridgeMaintenanceService.selectPage(page, query);
+ List bridgeMaintenanceList = page.getRecords();
+ bridgeMaintenanceList.forEach(bridgeMaintenance -> {
+ bridgeMaintenance.setTypeName(permissionService.getDictNameByCode("maintenanceType", bridgeMaintenance.getType()));
+ bridgeMaintenance.setStatusName(permissionService.getDictNameByCode("maintenanceStatus", bridgeMaintenance.getStatus()));
+ BridgeInformation bridgeInformation = bridgeInformationService.selectById(bridgeMaintenance.getBridgeId());
+ bridgeMaintenance.setBridgeName(bridgeInformation != null ? bridgeInformation.getName() : "");
+ bridgeMaintenance.setCategory("1".equals(bridgeMaintenance.getCategory()) ? "道路" : "桥梁");
+ bridgeMaintenance.setMaintainTimeStr(ToolUtil.isNotEmpty(bridgeMaintenance.getMaintainTime()) ?
+ DateUtil.format(bridgeMaintenance.getMaintainTime(), "yyyy-MM-dd") : null);
+
+ Person person=bridgeMaintenanceService.getPerson(bridgeMaintenance.getPersonId());
+ if(null!=person){
+ bridgeMaintenance.setPersonName(person.getName());
+ }
+ });
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 新增养护信息
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(BridgeMaintenance bridgeMaintenance) {
+ bridgeMaintenanceService.insert(bridgeMaintenance);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除养护信息
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam String bridgeMaintenanceId) {
+ bridgeMaintenanceService.deleteById(bridgeMaintenanceId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("bridgeMaintenanceIds") List bridgeMaintenanceIds) {
+ bridgeMaintenanceService.deleteBatchIds(bridgeMaintenanceIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改养护信息
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(BridgeMaintenance bridgeMaintenance) {
+ bridgeMaintenanceService.updateById(bridgeMaintenance);
+ return ResponseData.success();
+ }
+
+ /**
+ * 养护信息详情
+ */
+// @RequestMapping(value = "/detail/{bridgeMaintenanceId}")
+// @ResponseBody
+// public Object detail(@PathVariable("bridgeMaintenanceId") String bridgeMaintenanceId) {
+// ResultData resultData = new ResultData();
+// resultData.setCode(200);
+// resultData.setMessage("查询详情成功");
+// resultData.setData(bridgeMaintenanceService.selectById(bridgeMaintenanceId));
+// return resultData;
+// }
+
+
+ /**
+ * 年养护类型养护次数统计
+ */
+ @RequestMapping(value = "/maintainCount")
+ @ResponseBody
+ public Object maintainCount(@RequestParam(value = "year", required = false) String year) {
+
+ Map resultMap = new HashMap<>();
+ resultMap.put("rows", bridgeMaintenanceService.maintainCount(year));
+ return ResponseData.success(resultMap);
+ }
+
+ /***
+ * 根据类型获取养护内容
+ * @param type
+ * @return
+ */
+ @RequestMapping(value = "/contentByType")
+ @ResponseBody
+ public Object contentByType(@RequestParam(value = "type", required = false) String type) {
+
+ String content = "";
+ List dictList = permissionService.findInDictByCode("maintenanceType");
+ for (Dict dict : dictList) {
+ if (ToolUtil.isNotEmpty(type) && type.equals(dict.getCode())) {
+ content = dict.getTips();
+ }
+ }
+ return ResponseData.success(content);
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/BridgeInformationMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/BridgeInformationMapper.java
new file mode 100644
index 0000000..cccaa99
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/BridgeInformationMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.bridges.dao;
+
+import com.casic.missiles.modular.bridges.model.BridgeInformation;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author stylefeng123
+ * @since 2020-12-25
+ */
+public interface BridgeInformationMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/BridgeMaintenanceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/BridgeMaintenanceMapper.java
new file mode 100644
index 0000000..bb9f349
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/BridgeMaintenanceMapper.java
@@ -0,0 +1,28 @@
+package com.casic.missiles.modular.bridges.dao;
+
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.casic.missiles.modular.bridges.dto.StatisticsDTO;
+import com.casic.missiles.modular.bridges.model.BridgeMaintenance;
+import com.casic.missiles.modular.system.model.Person;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author stylefeng123
+ * @since 2020-12-25
+ */
+public interface BridgeMaintenanceMapper extends BaseMapper {
+
+
+ List getPersonListByName(@Param("personName") String personName);
+
+ Person getPersonById(@Param("personId") Long personId);
+
+ List maintainCount(@Param("year") String year);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/mapping/BridgeInformationMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/mapping/BridgeInformationMapper.xml
new file mode 100644
index 0000000..e6c6db3
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/mapping/BridgeInformationMapper.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id, name, type, bridge_code AS bridgeCode, road_name AS roadName, high, length, build_time AS buildTime, open_time AS openTime, photo, position, description, ts
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/mapping/BridgeMaintenanceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/mapping/BridgeMaintenanceMapper.xml
new file mode 100644
index 0000000..a2845df
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/mapping/BridgeMaintenanceMapper.xml
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id, name, type, code, bridge_id AS bridgeId, status, person_id AS personId, maintain_time AS maintainTime, open_time AS openTime, tender, tender_company AS tenderCompany, description, ts, content, phone
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/dto/StatisticsDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dto/StatisticsDTO.java
new file mode 100644
index 0000000..9369894
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dto/StatisticsDTO.java
@@ -0,0 +1,50 @@
+package com.casic.missiles.modular.bridges.dto;
+
+public class StatisticsDTO {
+ private String type;
+ private String typeName;
+ private int count;
+ private String percent="0%";
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public int getCount() {
+ return count;
+ }
+
+ public void setCount(int count) {
+ this.count = count;
+ }
+
+ public String getPercent() {
+ return percent;
+ }
+
+ public void setPercent(String percent) {
+ this.percent = percent;
+ }
+
+ public StatisticsDTO() {
+ }
+
+ public StatisticsDTO(String type, String typeName, int count, String percent) {
+ this.type = type;
+ this.typeName = typeName;
+ this.count = count;
+ this.percent = percent;
+ }
+}
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..9e20bc1
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+.idea/
+**/target/**
+logs/
+*.iml
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..d67ac77
--- /dev/null
+++ b/README.md
@@ -0,0 +1,16 @@
+# casic项目 V1.0.0
+
+## 介绍
+基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot + shiro + mybatis-plus !
+基于casic项目代码简洁,注释丰富,上手容易,同时Guns包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块),
+可以直接作为一个后台管理系统的脚手架! 目标 `更简洁`,`更规范`!
+
+
+#### 其他
+>* [git地址](http://192.168.0.203:8080/gitbucket)
+>* [本地免登地址](http://localhost:8083/route/mockToken)
+
+
+
+
+
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
new file mode 100644
index 0000000..abd3c91
--- /dev/null
+++ b/casic-server/pom.xml
@@ -0,0 +1,41 @@
+
+
+ 4.0.0
+
+ com.casic
+ casic-bridge
+ 1.0.0
+ ../pom.xml
+
+
+ casic-server
+ ${pro.version}
+ jar
+ casic-server
+ casic 的spring boot版本
+
+
+
+
+ com.casic
+ casic-core
+ ${core.version}
+
+
+ com.casic
+ casic-admin-support
+ ${admin.version}
+
+
+
+
+
+ src/main/java
+
+ **/*.xml
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeInformationController.java b/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeInformationController.java
new file mode 100644
index 0000000..5bcfcd5
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeInformationController.java
@@ -0,0 +1,119 @@
+package com.casic.missiles.modular.bridges.controller;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.DateUtil;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.bridges.model.BridgeInformation;
+import com.casic.missiles.modular.bridges.service.IBridgeInformationService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import java.util.List;
+
+/**
+ * 桥梁基本信息控制器
+ *
+ * @author dev
+ * @Date 2020-12-25 10:09:14
+ */
+@Controller
+@RequestMapping("/bridge")
+public class BridgeInformationController extends BaseController {
+
+
+ @Autowired
+ private IBridgeInformationService bridgeInformationService;
+
+ @Autowired
+ private ICommonPermissionService commonPermissionService;
+
+ /**
+ * 获取桥梁基本信息列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(@RequestParam(value = "bridge", required = false) String bridge) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper query = new EntityWrapper<>();
+ if (ToolUtil.isNotEmpty(bridge)) {
+ query.eq("road_name", bridge);
+ }
+ page = bridgeInformationService.selectPage(page, query);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 获取桥梁基本信息分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(String condition) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper query = new EntityWrapper<>();
+ page = bridgeInformationService.selectPage(page, query);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 新增桥梁基本信息
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(BridgeInformation bridgeInformation) {
+ bridgeInformationService.insert(bridgeInformation);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除桥梁基本信息
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam String bridgeInformationId) {
+ bridgeInformationService.deleteById(bridgeInformationId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("bridgeInformationIds") List bridgeInformationIds) {
+ bridgeInformationService.deleteBatchIds(bridgeInformationIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改桥梁基本信息
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(BridgeInformation bridgeInformation) {
+ bridgeInformationService.updateById(bridgeInformation);
+ return ResponseData.success();
+ }
+
+ /**
+ * 桥梁基本信息详情
+ */
+ @RequestMapping(value = "/detail")
+ @ResponseBody
+ public Object detail(@RequestParam Long id) {
+ BridgeInformation bridgeInformation = bridgeInformationService.selectById(id);
+ bridgeInformation.setTypeName(commonPermissionService.getDictNameByCode("bridgeType", bridgeInformation.getType()));
+ bridgeInformation.setBuildTimeStr(ToolUtil.isNotEmpty(bridgeInformation.getBuildTime()) ?
+ DateUtil.format(bridgeInformation.getBuildTime(), "yyyy-MM-dd") : null);
+ bridgeInformation.setOpenTimeStr(ToolUtil.isNotEmpty(bridgeInformation.getOpenTime()) ?
+ DateUtil.format(bridgeInformation.getOpenTime(), "yyyy-MM-dd") : null);
+ return ResponseData.success(bridgeInformation);
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeMaintenanceController.java b/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeMaintenanceController.java
new file mode 100644
index 0000000..2ef615d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeMaintenanceController.java
@@ -0,0 +1,189 @@
+package com.casic.missiles.modular.bridges.controller;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.DateUtil;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.bridges.model.BridgeInformation;
+import com.casic.missiles.modular.bridges.model.BridgeMaintenance;
+import com.casic.missiles.modular.bridges.service.IBridgeInformationService;
+import com.casic.missiles.modular.bridges.service.IBridgeMaintenanceService;
+import com.casic.missiles.modular.system.model.Dict;
+import com.casic.missiles.modular.system.model.Person;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * 养护信息控制器
+ *
+ * @author dev
+ * @Date 2020-12-25 10:09:33
+ */
+@Controller
+@RequestMapping("/maintain")
+public class BridgeMaintenanceController extends BaseController {
+
+
+ @Autowired
+ private IBridgeMaintenanceService bridgeMaintenanceService;
+
+ @Autowired
+ private ICommonPermissionService permissionService;
+ @Autowired
+ private IBridgeInformationService bridgeInformationService;
+
+ /**
+ * 获取养护信息列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(String condition) {
+ return bridgeMaintenanceService.selectList(null);
+ }
+
+ /**
+ * 获取养护信息分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(String keyword, String type,
+ String status, String bridgeId,
+ String startDate, String endDate) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper query = new EntityWrapper<>();
+ if (ToolUtil.isNotEmpty(keyword)) {
+ List personList = bridgeMaintenanceService.getPersonListByName(keyword);
+ List personIds = personList.stream().map(Person::getId).collect(Collectors.toList());
+ query.andNew().like("name", keyword).or().in("person_id", personIds);
+ }
+ if (ToolUtil.isNotEmpty(type)) {
+ query.eq("type", type);
+ }
+ if (ToolUtil.isNotEmpty(status)) {
+ query.eq("status", status);
+ }
+ if (ToolUtil.isNotEmpty(bridgeId)) {
+ query.eq("bridge_id", bridgeId);
+ }
+ if (ToolUtil.isNotEmpty(startDate)) {
+ query.ge("maintain_time", startDate);
+ }
+ if (ToolUtil.isNotEmpty(endDate)) {
+ query.le("maintain_time", endDate);
+ }
+ page = bridgeMaintenanceService.selectPage(page, query);
+ List bridgeMaintenanceList = page.getRecords();
+ bridgeMaintenanceList.forEach(bridgeMaintenance -> {
+ bridgeMaintenance.setTypeName(permissionService.getDictNameByCode("maintenanceType", bridgeMaintenance.getType()));
+ bridgeMaintenance.setStatusName(permissionService.getDictNameByCode("maintenanceStatus", bridgeMaintenance.getStatus()));
+ BridgeInformation bridgeInformation = bridgeInformationService.selectById(bridgeMaintenance.getBridgeId());
+ bridgeMaintenance.setBridgeName(bridgeInformation != null ? bridgeInformation.getName() : "");
+ bridgeMaintenance.setCategory("1".equals(bridgeMaintenance.getCategory()) ? "道路" : "桥梁");
+ bridgeMaintenance.setMaintainTimeStr(ToolUtil.isNotEmpty(bridgeMaintenance.getMaintainTime()) ?
+ DateUtil.format(bridgeMaintenance.getMaintainTime(), "yyyy-MM-dd") : null);
+
+ Person person=bridgeMaintenanceService.getPerson(bridgeMaintenance.getPersonId());
+ if(null!=person){
+ bridgeMaintenance.setPersonName(person.getName());
+ }
+ });
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 新增养护信息
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(BridgeMaintenance bridgeMaintenance) {
+ bridgeMaintenanceService.insert(bridgeMaintenance);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除养护信息
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam String bridgeMaintenanceId) {
+ bridgeMaintenanceService.deleteById(bridgeMaintenanceId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("bridgeMaintenanceIds") List bridgeMaintenanceIds) {
+ bridgeMaintenanceService.deleteBatchIds(bridgeMaintenanceIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改养护信息
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(BridgeMaintenance bridgeMaintenance) {
+ bridgeMaintenanceService.updateById(bridgeMaintenance);
+ return ResponseData.success();
+ }
+
+ /**
+ * 养护信息详情
+ */
+// @RequestMapping(value = "/detail/{bridgeMaintenanceId}")
+// @ResponseBody
+// public Object detail(@PathVariable("bridgeMaintenanceId") String bridgeMaintenanceId) {
+// ResultData resultData = new ResultData();
+// resultData.setCode(200);
+// resultData.setMessage("查询详情成功");
+// resultData.setData(bridgeMaintenanceService.selectById(bridgeMaintenanceId));
+// return resultData;
+// }
+
+
+ /**
+ * 年养护类型养护次数统计
+ */
+ @RequestMapping(value = "/maintainCount")
+ @ResponseBody
+ public Object maintainCount(@RequestParam(value = "year", required = false) String year) {
+
+ Map resultMap = new HashMap<>();
+ resultMap.put("rows", bridgeMaintenanceService.maintainCount(year));
+ return ResponseData.success(resultMap);
+ }
+
+ /***
+ * 根据类型获取养护内容
+ * @param type
+ * @return
+ */
+ @RequestMapping(value = "/contentByType")
+ @ResponseBody
+ public Object contentByType(@RequestParam(value = "type", required = false) String type) {
+
+ String content = "";
+ List dictList = permissionService.findInDictByCode("maintenanceType");
+ for (Dict dict : dictList) {
+ if (ToolUtil.isNotEmpty(type) && type.equals(dict.getCode())) {
+ content = dict.getTips();
+ }
+ }
+ return ResponseData.success(content);
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/BridgeInformationMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/BridgeInformationMapper.java
new file mode 100644
index 0000000..cccaa99
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/BridgeInformationMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.bridges.dao;
+
+import com.casic.missiles.modular.bridges.model.BridgeInformation;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author stylefeng123
+ * @since 2020-12-25
+ */
+public interface BridgeInformationMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/BridgeMaintenanceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/BridgeMaintenanceMapper.java
new file mode 100644
index 0000000..bb9f349
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/BridgeMaintenanceMapper.java
@@ -0,0 +1,28 @@
+package com.casic.missiles.modular.bridges.dao;
+
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.casic.missiles.modular.bridges.dto.StatisticsDTO;
+import com.casic.missiles.modular.bridges.model.BridgeMaintenance;
+import com.casic.missiles.modular.system.model.Person;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author stylefeng123
+ * @since 2020-12-25
+ */
+public interface BridgeMaintenanceMapper extends BaseMapper {
+
+
+ List getPersonListByName(@Param("personName") String personName);
+
+ Person getPersonById(@Param("personId") Long personId);
+
+ List maintainCount(@Param("year") String year);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/mapping/BridgeInformationMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/mapping/BridgeInformationMapper.xml
new file mode 100644
index 0000000..e6c6db3
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/mapping/BridgeInformationMapper.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id, name, type, bridge_code AS bridgeCode, road_name AS roadName, high, length, build_time AS buildTime, open_time AS openTime, photo, position, description, ts
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/mapping/BridgeMaintenanceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/mapping/BridgeMaintenanceMapper.xml
new file mode 100644
index 0000000..a2845df
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/mapping/BridgeMaintenanceMapper.xml
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id, name, type, code, bridge_id AS bridgeId, status, person_id AS personId, maintain_time AS maintainTime, open_time AS openTime, tender, tender_company AS tenderCompany, description, ts, content, phone
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/dto/StatisticsDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dto/StatisticsDTO.java
new file mode 100644
index 0000000..9369894
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dto/StatisticsDTO.java
@@ -0,0 +1,50 @@
+package com.casic.missiles.modular.bridges.dto;
+
+public class StatisticsDTO {
+ private String type;
+ private String typeName;
+ private int count;
+ private String percent="0%";
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public int getCount() {
+ return count;
+ }
+
+ public void setCount(int count) {
+ this.count = count;
+ }
+
+ public String getPercent() {
+ return percent;
+ }
+
+ public void setPercent(String percent) {
+ this.percent = percent;
+ }
+
+ public StatisticsDTO() {
+ }
+
+ public StatisticsDTO(String type, String typeName, int count, String percent) {
+ this.type = type;
+ this.typeName = typeName;
+ this.count = count;
+ this.percent = percent;
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/model/BridgeInformation.java b/casic-server/src/main/java/com/casic/missiles/modular/bridges/model/BridgeInformation.java
new file mode 100644
index 0000000..eb3f558
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/model/BridgeInformation.java
@@ -0,0 +1,62 @@
+package com.casic.missiles.modular.bridges.model;
+
+import java.io.Serializable;
+
+import java.util.Date;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import com.casic.missiles.core.base.json.DateDeserializer;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+/**
+ *
+ *
+ *
+ *
+ * @author stylefeng123
+ * @since 2020-12-25
+ */
+@Data
+@TableName("casic_smartcity_bridge.bridge_information")
+public class BridgeInformation extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ private Long id;
+ private String name;
+ private String type;
+ @TableField("bridge_code")
+ private String bridgeCode;
+ @TableField("road_name")
+ private String roadName;
+ private String high;
+ private String length;
+ @JSONField(serializeUsing = DateDeserializer.class)
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ @TableField("build_time")
+ private Date buildTime;
+ @JSONField(serializeUsing = DateDeserializer.class)
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ @TableField("open_time")
+ private Date openTime;
+ private String photo;
+ private String position;
+ private String description;
+ private Date ts;
+ @TableField(exist = false)
+ private String typeName;
+ @TableField(exist = false)
+ private String buildTimeStr;
+ @TableField(exist = false)
+ private String openTimeStr;
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+
+}
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..9e20bc1
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+.idea/
+**/target/**
+logs/
+*.iml
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..d67ac77
--- /dev/null
+++ b/README.md
@@ -0,0 +1,16 @@
+# casic项目 V1.0.0
+
+## 介绍
+基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot + shiro + mybatis-plus !
+基于casic项目代码简洁,注释丰富,上手容易,同时Guns包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块),
+可以直接作为一个后台管理系统的脚手架! 目标 `更简洁`,`更规范`!
+
+
+#### 其他
+>* [git地址](http://192.168.0.203:8080/gitbucket)
+>* [本地免登地址](http://localhost:8083/route/mockToken)
+
+
+
+
+
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
new file mode 100644
index 0000000..abd3c91
--- /dev/null
+++ b/casic-server/pom.xml
@@ -0,0 +1,41 @@
+
+
+ 4.0.0
+
+ com.casic
+ casic-bridge
+ 1.0.0
+ ../pom.xml
+
+
+ casic-server
+ ${pro.version}
+ jar
+ casic-server
+ casic 的spring boot版本
+
+
+
+
+ com.casic
+ casic-core
+ ${core.version}
+
+
+ com.casic
+ casic-admin-support
+ ${admin.version}
+
+
+
+
+
+ src/main/java
+
+ **/*.xml
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeInformationController.java b/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeInformationController.java
new file mode 100644
index 0000000..5bcfcd5
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeInformationController.java
@@ -0,0 +1,119 @@
+package com.casic.missiles.modular.bridges.controller;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.DateUtil;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.bridges.model.BridgeInformation;
+import com.casic.missiles.modular.bridges.service.IBridgeInformationService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import java.util.List;
+
+/**
+ * 桥梁基本信息控制器
+ *
+ * @author dev
+ * @Date 2020-12-25 10:09:14
+ */
+@Controller
+@RequestMapping("/bridge")
+public class BridgeInformationController extends BaseController {
+
+
+ @Autowired
+ private IBridgeInformationService bridgeInformationService;
+
+ @Autowired
+ private ICommonPermissionService commonPermissionService;
+
+ /**
+ * 获取桥梁基本信息列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(@RequestParam(value = "bridge", required = false) String bridge) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper query = new EntityWrapper<>();
+ if (ToolUtil.isNotEmpty(bridge)) {
+ query.eq("road_name", bridge);
+ }
+ page = bridgeInformationService.selectPage(page, query);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 获取桥梁基本信息分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(String condition) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper query = new EntityWrapper<>();
+ page = bridgeInformationService.selectPage(page, query);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 新增桥梁基本信息
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(BridgeInformation bridgeInformation) {
+ bridgeInformationService.insert(bridgeInformation);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除桥梁基本信息
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam String bridgeInformationId) {
+ bridgeInformationService.deleteById(bridgeInformationId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("bridgeInformationIds") List bridgeInformationIds) {
+ bridgeInformationService.deleteBatchIds(bridgeInformationIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改桥梁基本信息
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(BridgeInformation bridgeInformation) {
+ bridgeInformationService.updateById(bridgeInformation);
+ return ResponseData.success();
+ }
+
+ /**
+ * 桥梁基本信息详情
+ */
+ @RequestMapping(value = "/detail")
+ @ResponseBody
+ public Object detail(@RequestParam Long id) {
+ BridgeInformation bridgeInformation = bridgeInformationService.selectById(id);
+ bridgeInformation.setTypeName(commonPermissionService.getDictNameByCode("bridgeType", bridgeInformation.getType()));
+ bridgeInformation.setBuildTimeStr(ToolUtil.isNotEmpty(bridgeInformation.getBuildTime()) ?
+ DateUtil.format(bridgeInformation.getBuildTime(), "yyyy-MM-dd") : null);
+ bridgeInformation.setOpenTimeStr(ToolUtil.isNotEmpty(bridgeInformation.getOpenTime()) ?
+ DateUtil.format(bridgeInformation.getOpenTime(), "yyyy-MM-dd") : null);
+ return ResponseData.success(bridgeInformation);
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeMaintenanceController.java b/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeMaintenanceController.java
new file mode 100644
index 0000000..2ef615d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeMaintenanceController.java
@@ -0,0 +1,189 @@
+package com.casic.missiles.modular.bridges.controller;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.DateUtil;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.bridges.model.BridgeInformation;
+import com.casic.missiles.modular.bridges.model.BridgeMaintenance;
+import com.casic.missiles.modular.bridges.service.IBridgeInformationService;
+import com.casic.missiles.modular.bridges.service.IBridgeMaintenanceService;
+import com.casic.missiles.modular.system.model.Dict;
+import com.casic.missiles.modular.system.model.Person;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * 养护信息控制器
+ *
+ * @author dev
+ * @Date 2020-12-25 10:09:33
+ */
+@Controller
+@RequestMapping("/maintain")
+public class BridgeMaintenanceController extends BaseController {
+
+
+ @Autowired
+ private IBridgeMaintenanceService bridgeMaintenanceService;
+
+ @Autowired
+ private ICommonPermissionService permissionService;
+ @Autowired
+ private IBridgeInformationService bridgeInformationService;
+
+ /**
+ * 获取养护信息列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(String condition) {
+ return bridgeMaintenanceService.selectList(null);
+ }
+
+ /**
+ * 获取养护信息分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(String keyword, String type,
+ String status, String bridgeId,
+ String startDate, String endDate) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper query = new EntityWrapper<>();
+ if (ToolUtil.isNotEmpty(keyword)) {
+ List personList = bridgeMaintenanceService.getPersonListByName(keyword);
+ List personIds = personList.stream().map(Person::getId).collect(Collectors.toList());
+ query.andNew().like("name", keyword).or().in("person_id", personIds);
+ }
+ if (ToolUtil.isNotEmpty(type)) {
+ query.eq("type", type);
+ }
+ if (ToolUtil.isNotEmpty(status)) {
+ query.eq("status", status);
+ }
+ if (ToolUtil.isNotEmpty(bridgeId)) {
+ query.eq("bridge_id", bridgeId);
+ }
+ if (ToolUtil.isNotEmpty(startDate)) {
+ query.ge("maintain_time", startDate);
+ }
+ if (ToolUtil.isNotEmpty(endDate)) {
+ query.le("maintain_time", endDate);
+ }
+ page = bridgeMaintenanceService.selectPage(page, query);
+ List bridgeMaintenanceList = page.getRecords();
+ bridgeMaintenanceList.forEach(bridgeMaintenance -> {
+ bridgeMaintenance.setTypeName(permissionService.getDictNameByCode("maintenanceType", bridgeMaintenance.getType()));
+ bridgeMaintenance.setStatusName(permissionService.getDictNameByCode("maintenanceStatus", bridgeMaintenance.getStatus()));
+ BridgeInformation bridgeInformation = bridgeInformationService.selectById(bridgeMaintenance.getBridgeId());
+ bridgeMaintenance.setBridgeName(bridgeInformation != null ? bridgeInformation.getName() : "");
+ bridgeMaintenance.setCategory("1".equals(bridgeMaintenance.getCategory()) ? "道路" : "桥梁");
+ bridgeMaintenance.setMaintainTimeStr(ToolUtil.isNotEmpty(bridgeMaintenance.getMaintainTime()) ?
+ DateUtil.format(bridgeMaintenance.getMaintainTime(), "yyyy-MM-dd") : null);
+
+ Person person=bridgeMaintenanceService.getPerson(bridgeMaintenance.getPersonId());
+ if(null!=person){
+ bridgeMaintenance.setPersonName(person.getName());
+ }
+ });
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 新增养护信息
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(BridgeMaintenance bridgeMaintenance) {
+ bridgeMaintenanceService.insert(bridgeMaintenance);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除养护信息
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam String bridgeMaintenanceId) {
+ bridgeMaintenanceService.deleteById(bridgeMaintenanceId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("bridgeMaintenanceIds") List bridgeMaintenanceIds) {
+ bridgeMaintenanceService.deleteBatchIds(bridgeMaintenanceIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改养护信息
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(BridgeMaintenance bridgeMaintenance) {
+ bridgeMaintenanceService.updateById(bridgeMaintenance);
+ return ResponseData.success();
+ }
+
+ /**
+ * 养护信息详情
+ */
+// @RequestMapping(value = "/detail/{bridgeMaintenanceId}")
+// @ResponseBody
+// public Object detail(@PathVariable("bridgeMaintenanceId") String bridgeMaintenanceId) {
+// ResultData resultData = new ResultData();
+// resultData.setCode(200);
+// resultData.setMessage("查询详情成功");
+// resultData.setData(bridgeMaintenanceService.selectById(bridgeMaintenanceId));
+// return resultData;
+// }
+
+
+ /**
+ * 年养护类型养护次数统计
+ */
+ @RequestMapping(value = "/maintainCount")
+ @ResponseBody
+ public Object maintainCount(@RequestParam(value = "year", required = false) String year) {
+
+ Map resultMap = new HashMap<>();
+ resultMap.put("rows", bridgeMaintenanceService.maintainCount(year));
+ return ResponseData.success(resultMap);
+ }
+
+ /***
+ * 根据类型获取养护内容
+ * @param type
+ * @return
+ */
+ @RequestMapping(value = "/contentByType")
+ @ResponseBody
+ public Object contentByType(@RequestParam(value = "type", required = false) String type) {
+
+ String content = "";
+ List dictList = permissionService.findInDictByCode("maintenanceType");
+ for (Dict dict : dictList) {
+ if (ToolUtil.isNotEmpty(type) && type.equals(dict.getCode())) {
+ content = dict.getTips();
+ }
+ }
+ return ResponseData.success(content);
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/BridgeInformationMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/BridgeInformationMapper.java
new file mode 100644
index 0000000..cccaa99
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/BridgeInformationMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.bridges.dao;
+
+import com.casic.missiles.modular.bridges.model.BridgeInformation;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author stylefeng123
+ * @since 2020-12-25
+ */
+public interface BridgeInformationMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/BridgeMaintenanceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/BridgeMaintenanceMapper.java
new file mode 100644
index 0000000..bb9f349
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/BridgeMaintenanceMapper.java
@@ -0,0 +1,28 @@
+package com.casic.missiles.modular.bridges.dao;
+
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.casic.missiles.modular.bridges.dto.StatisticsDTO;
+import com.casic.missiles.modular.bridges.model.BridgeMaintenance;
+import com.casic.missiles.modular.system.model.Person;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author stylefeng123
+ * @since 2020-12-25
+ */
+public interface BridgeMaintenanceMapper extends BaseMapper {
+
+
+ List getPersonListByName(@Param("personName") String personName);
+
+ Person getPersonById(@Param("personId") Long personId);
+
+ List maintainCount(@Param("year") String year);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/mapping/BridgeInformationMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/mapping/BridgeInformationMapper.xml
new file mode 100644
index 0000000..e6c6db3
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/mapping/BridgeInformationMapper.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id, name, type, bridge_code AS bridgeCode, road_name AS roadName, high, length, build_time AS buildTime, open_time AS openTime, photo, position, description, ts
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/mapping/BridgeMaintenanceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/mapping/BridgeMaintenanceMapper.xml
new file mode 100644
index 0000000..a2845df
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/mapping/BridgeMaintenanceMapper.xml
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id, name, type, code, bridge_id AS bridgeId, status, person_id AS personId, maintain_time AS maintainTime, open_time AS openTime, tender, tender_company AS tenderCompany, description, ts, content, phone
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/dto/StatisticsDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dto/StatisticsDTO.java
new file mode 100644
index 0000000..9369894
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dto/StatisticsDTO.java
@@ -0,0 +1,50 @@
+package com.casic.missiles.modular.bridges.dto;
+
+public class StatisticsDTO {
+ private String type;
+ private String typeName;
+ private int count;
+ private String percent="0%";
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public int getCount() {
+ return count;
+ }
+
+ public void setCount(int count) {
+ this.count = count;
+ }
+
+ public String getPercent() {
+ return percent;
+ }
+
+ public void setPercent(String percent) {
+ this.percent = percent;
+ }
+
+ public StatisticsDTO() {
+ }
+
+ public StatisticsDTO(String type, String typeName, int count, String percent) {
+ this.type = type;
+ this.typeName = typeName;
+ this.count = count;
+ this.percent = percent;
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/model/BridgeInformation.java b/casic-server/src/main/java/com/casic/missiles/modular/bridges/model/BridgeInformation.java
new file mode 100644
index 0000000..eb3f558
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/model/BridgeInformation.java
@@ -0,0 +1,62 @@
+package com.casic.missiles.modular.bridges.model;
+
+import java.io.Serializable;
+
+import java.util.Date;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import com.casic.missiles.core.base.json.DateDeserializer;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+/**
+ *
+ *
+ *
+ *
+ * @author stylefeng123
+ * @since 2020-12-25
+ */
+@Data
+@TableName("casic_smartcity_bridge.bridge_information")
+public class BridgeInformation extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ private Long id;
+ private String name;
+ private String type;
+ @TableField("bridge_code")
+ private String bridgeCode;
+ @TableField("road_name")
+ private String roadName;
+ private String high;
+ private String length;
+ @JSONField(serializeUsing = DateDeserializer.class)
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ @TableField("build_time")
+ private Date buildTime;
+ @JSONField(serializeUsing = DateDeserializer.class)
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ @TableField("open_time")
+ private Date openTime;
+ private String photo;
+ private String position;
+ private String description;
+ private Date ts;
+ @TableField(exist = false)
+ private String typeName;
+ @TableField(exist = false)
+ private String buildTimeStr;
+ @TableField(exist = false)
+ private String openTimeStr;
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/model/BridgeMaintenance.java b/casic-server/src/main/java/com/casic/missiles/modular/bridges/model/BridgeMaintenance.java
new file mode 100644
index 0000000..0e448d4
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/model/BridgeMaintenance.java
@@ -0,0 +1,67 @@
+package com.casic.missiles.modular.bridges.model;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.annotations.TableName;
+import com.casic.missiles.core.base.json.DateDeserializer;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ *
+ *
+ *
+ * @author stylefeng123
+ * @since 2020-12-25
+ */
+@TableName("casic_smartcity_bridge.bridge_maintenance")
+@Data
+public class BridgeMaintenance extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ private Long id;
+ private String name;
+ private String type;
+ private String code;
+ @TableField("bridge_id")
+ private Long bridgeId;
+ private String status;
+ @TableField("person_id")
+ private Long personId;
+ @TableField("maintain_time")
+ @JSONField(serializeUsing = DateDeserializer.class)
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ private Date maintainTime;
+ private String tender;
+ @TableField("tender_company")
+ private String tenderCompany;
+ private String description;
+ private Date ts;
+ private String content;
+ private String phone;
+ private String category;
+
+ @TableField(exist = false)
+ private String typeName;
+ @TableField(exist = false)
+ private String statusName;
+ @TableField(exist = false)
+ private String bridgeName;
+ @TableField(exist = false)
+ private String maintainTimeStr;
+ @TableField(exist = false)
+ private String personName;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+
+}
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..9e20bc1
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+.idea/
+**/target/**
+logs/
+*.iml
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..d67ac77
--- /dev/null
+++ b/README.md
@@ -0,0 +1,16 @@
+# casic项目 V1.0.0
+
+## 介绍
+基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot + shiro + mybatis-plus !
+基于casic项目代码简洁,注释丰富,上手容易,同时Guns包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块),
+可以直接作为一个后台管理系统的脚手架! 目标 `更简洁`,`更规范`!
+
+
+#### 其他
+>* [git地址](http://192.168.0.203:8080/gitbucket)
+>* [本地免登地址](http://localhost:8083/route/mockToken)
+
+
+
+
+
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
new file mode 100644
index 0000000..abd3c91
--- /dev/null
+++ b/casic-server/pom.xml
@@ -0,0 +1,41 @@
+
+
+ 4.0.0
+
+ com.casic
+ casic-bridge
+ 1.0.0
+ ../pom.xml
+
+
+ casic-server
+ ${pro.version}
+ jar
+ casic-server
+ casic 的spring boot版本
+
+
+
+
+ com.casic
+ casic-core
+ ${core.version}
+
+
+ com.casic
+ casic-admin-support
+ ${admin.version}
+
+
+
+
+
+ src/main/java
+
+ **/*.xml
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeInformationController.java b/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeInformationController.java
new file mode 100644
index 0000000..5bcfcd5
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeInformationController.java
@@ -0,0 +1,119 @@
+package com.casic.missiles.modular.bridges.controller;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.DateUtil;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.bridges.model.BridgeInformation;
+import com.casic.missiles.modular.bridges.service.IBridgeInformationService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import java.util.List;
+
+/**
+ * 桥梁基本信息控制器
+ *
+ * @author dev
+ * @Date 2020-12-25 10:09:14
+ */
+@Controller
+@RequestMapping("/bridge")
+public class BridgeInformationController extends BaseController {
+
+
+ @Autowired
+ private IBridgeInformationService bridgeInformationService;
+
+ @Autowired
+ private ICommonPermissionService commonPermissionService;
+
+ /**
+ * 获取桥梁基本信息列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(@RequestParam(value = "bridge", required = false) String bridge) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper query = new EntityWrapper<>();
+ if (ToolUtil.isNotEmpty(bridge)) {
+ query.eq("road_name", bridge);
+ }
+ page = bridgeInformationService.selectPage(page, query);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 获取桥梁基本信息分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(String condition) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper query = new EntityWrapper<>();
+ page = bridgeInformationService.selectPage(page, query);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 新增桥梁基本信息
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(BridgeInformation bridgeInformation) {
+ bridgeInformationService.insert(bridgeInformation);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除桥梁基本信息
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam String bridgeInformationId) {
+ bridgeInformationService.deleteById(bridgeInformationId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("bridgeInformationIds") List bridgeInformationIds) {
+ bridgeInformationService.deleteBatchIds(bridgeInformationIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改桥梁基本信息
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(BridgeInformation bridgeInformation) {
+ bridgeInformationService.updateById(bridgeInformation);
+ return ResponseData.success();
+ }
+
+ /**
+ * 桥梁基本信息详情
+ */
+ @RequestMapping(value = "/detail")
+ @ResponseBody
+ public Object detail(@RequestParam Long id) {
+ BridgeInformation bridgeInformation = bridgeInformationService.selectById(id);
+ bridgeInformation.setTypeName(commonPermissionService.getDictNameByCode("bridgeType", bridgeInformation.getType()));
+ bridgeInformation.setBuildTimeStr(ToolUtil.isNotEmpty(bridgeInformation.getBuildTime()) ?
+ DateUtil.format(bridgeInformation.getBuildTime(), "yyyy-MM-dd") : null);
+ bridgeInformation.setOpenTimeStr(ToolUtil.isNotEmpty(bridgeInformation.getOpenTime()) ?
+ DateUtil.format(bridgeInformation.getOpenTime(), "yyyy-MM-dd") : null);
+ return ResponseData.success(bridgeInformation);
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeMaintenanceController.java b/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeMaintenanceController.java
new file mode 100644
index 0000000..2ef615d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeMaintenanceController.java
@@ -0,0 +1,189 @@
+package com.casic.missiles.modular.bridges.controller;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.DateUtil;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.bridges.model.BridgeInformation;
+import com.casic.missiles.modular.bridges.model.BridgeMaintenance;
+import com.casic.missiles.modular.bridges.service.IBridgeInformationService;
+import com.casic.missiles.modular.bridges.service.IBridgeMaintenanceService;
+import com.casic.missiles.modular.system.model.Dict;
+import com.casic.missiles.modular.system.model.Person;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * 养护信息控制器
+ *
+ * @author dev
+ * @Date 2020-12-25 10:09:33
+ */
+@Controller
+@RequestMapping("/maintain")
+public class BridgeMaintenanceController extends BaseController {
+
+
+ @Autowired
+ private IBridgeMaintenanceService bridgeMaintenanceService;
+
+ @Autowired
+ private ICommonPermissionService permissionService;
+ @Autowired
+ private IBridgeInformationService bridgeInformationService;
+
+ /**
+ * 获取养护信息列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(String condition) {
+ return bridgeMaintenanceService.selectList(null);
+ }
+
+ /**
+ * 获取养护信息分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(String keyword, String type,
+ String status, String bridgeId,
+ String startDate, String endDate) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper query = new EntityWrapper<>();
+ if (ToolUtil.isNotEmpty(keyword)) {
+ List personList = bridgeMaintenanceService.getPersonListByName(keyword);
+ List personIds = personList.stream().map(Person::getId).collect(Collectors.toList());
+ query.andNew().like("name", keyword).or().in("person_id", personIds);
+ }
+ if (ToolUtil.isNotEmpty(type)) {
+ query.eq("type", type);
+ }
+ if (ToolUtil.isNotEmpty(status)) {
+ query.eq("status", status);
+ }
+ if (ToolUtil.isNotEmpty(bridgeId)) {
+ query.eq("bridge_id", bridgeId);
+ }
+ if (ToolUtil.isNotEmpty(startDate)) {
+ query.ge("maintain_time", startDate);
+ }
+ if (ToolUtil.isNotEmpty(endDate)) {
+ query.le("maintain_time", endDate);
+ }
+ page = bridgeMaintenanceService.selectPage(page, query);
+ List bridgeMaintenanceList = page.getRecords();
+ bridgeMaintenanceList.forEach(bridgeMaintenance -> {
+ bridgeMaintenance.setTypeName(permissionService.getDictNameByCode("maintenanceType", bridgeMaintenance.getType()));
+ bridgeMaintenance.setStatusName(permissionService.getDictNameByCode("maintenanceStatus", bridgeMaintenance.getStatus()));
+ BridgeInformation bridgeInformation = bridgeInformationService.selectById(bridgeMaintenance.getBridgeId());
+ bridgeMaintenance.setBridgeName(bridgeInformation != null ? bridgeInformation.getName() : "");
+ bridgeMaintenance.setCategory("1".equals(bridgeMaintenance.getCategory()) ? "道路" : "桥梁");
+ bridgeMaintenance.setMaintainTimeStr(ToolUtil.isNotEmpty(bridgeMaintenance.getMaintainTime()) ?
+ DateUtil.format(bridgeMaintenance.getMaintainTime(), "yyyy-MM-dd") : null);
+
+ Person person=bridgeMaintenanceService.getPerson(bridgeMaintenance.getPersonId());
+ if(null!=person){
+ bridgeMaintenance.setPersonName(person.getName());
+ }
+ });
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 新增养护信息
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(BridgeMaintenance bridgeMaintenance) {
+ bridgeMaintenanceService.insert(bridgeMaintenance);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除养护信息
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam String bridgeMaintenanceId) {
+ bridgeMaintenanceService.deleteById(bridgeMaintenanceId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("bridgeMaintenanceIds") List bridgeMaintenanceIds) {
+ bridgeMaintenanceService.deleteBatchIds(bridgeMaintenanceIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改养护信息
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(BridgeMaintenance bridgeMaintenance) {
+ bridgeMaintenanceService.updateById(bridgeMaintenance);
+ return ResponseData.success();
+ }
+
+ /**
+ * 养护信息详情
+ */
+// @RequestMapping(value = "/detail/{bridgeMaintenanceId}")
+// @ResponseBody
+// public Object detail(@PathVariable("bridgeMaintenanceId") String bridgeMaintenanceId) {
+// ResultData resultData = new ResultData();
+// resultData.setCode(200);
+// resultData.setMessage("查询详情成功");
+// resultData.setData(bridgeMaintenanceService.selectById(bridgeMaintenanceId));
+// return resultData;
+// }
+
+
+ /**
+ * 年养护类型养护次数统计
+ */
+ @RequestMapping(value = "/maintainCount")
+ @ResponseBody
+ public Object maintainCount(@RequestParam(value = "year", required = false) String year) {
+
+ Map resultMap = new HashMap<>();
+ resultMap.put("rows", bridgeMaintenanceService.maintainCount(year));
+ return ResponseData.success(resultMap);
+ }
+
+ /***
+ * 根据类型获取养护内容
+ * @param type
+ * @return
+ */
+ @RequestMapping(value = "/contentByType")
+ @ResponseBody
+ public Object contentByType(@RequestParam(value = "type", required = false) String type) {
+
+ String content = "";
+ List dictList = permissionService.findInDictByCode("maintenanceType");
+ for (Dict dict : dictList) {
+ if (ToolUtil.isNotEmpty(type) && type.equals(dict.getCode())) {
+ content = dict.getTips();
+ }
+ }
+ return ResponseData.success(content);
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/BridgeInformationMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/BridgeInformationMapper.java
new file mode 100644
index 0000000..cccaa99
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/BridgeInformationMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.bridges.dao;
+
+import com.casic.missiles.modular.bridges.model.BridgeInformation;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author stylefeng123
+ * @since 2020-12-25
+ */
+public interface BridgeInformationMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/BridgeMaintenanceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/BridgeMaintenanceMapper.java
new file mode 100644
index 0000000..bb9f349
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/BridgeMaintenanceMapper.java
@@ -0,0 +1,28 @@
+package com.casic.missiles.modular.bridges.dao;
+
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.casic.missiles.modular.bridges.dto.StatisticsDTO;
+import com.casic.missiles.modular.bridges.model.BridgeMaintenance;
+import com.casic.missiles.modular.system.model.Person;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author stylefeng123
+ * @since 2020-12-25
+ */
+public interface BridgeMaintenanceMapper extends BaseMapper {
+
+
+ List getPersonListByName(@Param("personName") String personName);
+
+ Person getPersonById(@Param("personId") Long personId);
+
+ List maintainCount(@Param("year") String year);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/mapping/BridgeInformationMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/mapping/BridgeInformationMapper.xml
new file mode 100644
index 0000000..e6c6db3
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/mapping/BridgeInformationMapper.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id, name, type, bridge_code AS bridgeCode, road_name AS roadName, high, length, build_time AS buildTime, open_time AS openTime, photo, position, description, ts
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/mapping/BridgeMaintenanceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/mapping/BridgeMaintenanceMapper.xml
new file mode 100644
index 0000000..a2845df
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/mapping/BridgeMaintenanceMapper.xml
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id, name, type, code, bridge_id AS bridgeId, status, person_id AS personId, maintain_time AS maintainTime, open_time AS openTime, tender, tender_company AS tenderCompany, description, ts, content, phone
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/dto/StatisticsDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dto/StatisticsDTO.java
new file mode 100644
index 0000000..9369894
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dto/StatisticsDTO.java
@@ -0,0 +1,50 @@
+package com.casic.missiles.modular.bridges.dto;
+
+public class StatisticsDTO {
+ private String type;
+ private String typeName;
+ private int count;
+ private String percent="0%";
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public int getCount() {
+ return count;
+ }
+
+ public void setCount(int count) {
+ this.count = count;
+ }
+
+ public String getPercent() {
+ return percent;
+ }
+
+ public void setPercent(String percent) {
+ this.percent = percent;
+ }
+
+ public StatisticsDTO() {
+ }
+
+ public StatisticsDTO(String type, String typeName, int count, String percent) {
+ this.type = type;
+ this.typeName = typeName;
+ this.count = count;
+ this.percent = percent;
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/model/BridgeInformation.java b/casic-server/src/main/java/com/casic/missiles/modular/bridges/model/BridgeInformation.java
new file mode 100644
index 0000000..eb3f558
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/model/BridgeInformation.java
@@ -0,0 +1,62 @@
+package com.casic.missiles.modular.bridges.model;
+
+import java.io.Serializable;
+
+import java.util.Date;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import com.casic.missiles.core.base.json.DateDeserializer;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+/**
+ *
+ *
+ *
+ *
+ * @author stylefeng123
+ * @since 2020-12-25
+ */
+@Data
+@TableName("casic_smartcity_bridge.bridge_information")
+public class BridgeInformation extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ private Long id;
+ private String name;
+ private String type;
+ @TableField("bridge_code")
+ private String bridgeCode;
+ @TableField("road_name")
+ private String roadName;
+ private String high;
+ private String length;
+ @JSONField(serializeUsing = DateDeserializer.class)
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ @TableField("build_time")
+ private Date buildTime;
+ @JSONField(serializeUsing = DateDeserializer.class)
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ @TableField("open_time")
+ private Date openTime;
+ private String photo;
+ private String position;
+ private String description;
+ private Date ts;
+ @TableField(exist = false)
+ private String typeName;
+ @TableField(exist = false)
+ private String buildTimeStr;
+ @TableField(exist = false)
+ private String openTimeStr;
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/model/BridgeMaintenance.java b/casic-server/src/main/java/com/casic/missiles/modular/bridges/model/BridgeMaintenance.java
new file mode 100644
index 0000000..0e448d4
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/model/BridgeMaintenance.java
@@ -0,0 +1,67 @@
+package com.casic.missiles.modular.bridges.model;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.annotations.TableName;
+import com.casic.missiles.core.base.json.DateDeserializer;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ *
+ *
+ *
+ * @author stylefeng123
+ * @since 2020-12-25
+ */
+@TableName("casic_smartcity_bridge.bridge_maintenance")
+@Data
+public class BridgeMaintenance extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ private Long id;
+ private String name;
+ private String type;
+ private String code;
+ @TableField("bridge_id")
+ private Long bridgeId;
+ private String status;
+ @TableField("person_id")
+ private Long personId;
+ @TableField("maintain_time")
+ @JSONField(serializeUsing = DateDeserializer.class)
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ private Date maintainTime;
+ private String tender;
+ @TableField("tender_company")
+ private String tenderCompany;
+ private String description;
+ private Date ts;
+ private String content;
+ private String phone;
+ private String category;
+
+ @TableField(exist = false)
+ private String typeName;
+ @TableField(exist = false)
+ private String statusName;
+ @TableField(exist = false)
+ private String bridgeName;
+ @TableField(exist = false)
+ private String maintainTimeStr;
+ @TableField(exist = false)
+ private String personName;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/service/IBridgeInformationService.java b/casic-server/src/main/java/com/casic/missiles/modular/bridges/service/IBridgeInformationService.java
new file mode 100644
index 0000000..2c863a0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/service/IBridgeInformationService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.bridges.service;
+
+import com.casic.missiles.modular.bridges.model.BridgeInformation;
+import com.baomidou.mybatisplus.service.IService;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author stylefeng123
+ * @since 2020-12-25
+ */
+public interface IBridgeInformationService extends IService {
+
+}
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..9e20bc1
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+.idea/
+**/target/**
+logs/
+*.iml
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..d67ac77
--- /dev/null
+++ b/README.md
@@ -0,0 +1,16 @@
+# casic项目 V1.0.0
+
+## 介绍
+基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot + shiro + mybatis-plus !
+基于casic项目代码简洁,注释丰富,上手容易,同时Guns包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块),
+可以直接作为一个后台管理系统的脚手架! 目标 `更简洁`,`更规范`!
+
+
+#### 其他
+>* [git地址](http://192.168.0.203:8080/gitbucket)
+>* [本地免登地址](http://localhost:8083/route/mockToken)
+
+
+
+
+
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
new file mode 100644
index 0000000..abd3c91
--- /dev/null
+++ b/casic-server/pom.xml
@@ -0,0 +1,41 @@
+
+
+ 4.0.0
+
+ com.casic
+ casic-bridge
+ 1.0.0
+ ../pom.xml
+
+
+ casic-server
+ ${pro.version}
+ jar
+ casic-server
+ casic 的spring boot版本
+
+
+
+
+ com.casic
+ casic-core
+ ${core.version}
+
+
+ com.casic
+ casic-admin-support
+ ${admin.version}
+
+
+
+
+
+ src/main/java
+
+ **/*.xml
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeInformationController.java b/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeInformationController.java
new file mode 100644
index 0000000..5bcfcd5
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeInformationController.java
@@ -0,0 +1,119 @@
+package com.casic.missiles.modular.bridges.controller;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.DateUtil;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.bridges.model.BridgeInformation;
+import com.casic.missiles.modular.bridges.service.IBridgeInformationService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import java.util.List;
+
+/**
+ * 桥梁基本信息控制器
+ *
+ * @author dev
+ * @Date 2020-12-25 10:09:14
+ */
+@Controller
+@RequestMapping("/bridge")
+public class BridgeInformationController extends BaseController {
+
+
+ @Autowired
+ private IBridgeInformationService bridgeInformationService;
+
+ @Autowired
+ private ICommonPermissionService commonPermissionService;
+
+ /**
+ * 获取桥梁基本信息列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(@RequestParam(value = "bridge", required = false) String bridge) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper query = new EntityWrapper<>();
+ if (ToolUtil.isNotEmpty(bridge)) {
+ query.eq("road_name", bridge);
+ }
+ page = bridgeInformationService.selectPage(page, query);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 获取桥梁基本信息分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(String condition) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper query = new EntityWrapper<>();
+ page = bridgeInformationService.selectPage(page, query);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 新增桥梁基本信息
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(BridgeInformation bridgeInformation) {
+ bridgeInformationService.insert(bridgeInformation);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除桥梁基本信息
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam String bridgeInformationId) {
+ bridgeInformationService.deleteById(bridgeInformationId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("bridgeInformationIds") List bridgeInformationIds) {
+ bridgeInformationService.deleteBatchIds(bridgeInformationIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改桥梁基本信息
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(BridgeInformation bridgeInformation) {
+ bridgeInformationService.updateById(bridgeInformation);
+ return ResponseData.success();
+ }
+
+ /**
+ * 桥梁基本信息详情
+ */
+ @RequestMapping(value = "/detail")
+ @ResponseBody
+ public Object detail(@RequestParam Long id) {
+ BridgeInformation bridgeInformation = bridgeInformationService.selectById(id);
+ bridgeInformation.setTypeName(commonPermissionService.getDictNameByCode("bridgeType", bridgeInformation.getType()));
+ bridgeInformation.setBuildTimeStr(ToolUtil.isNotEmpty(bridgeInformation.getBuildTime()) ?
+ DateUtil.format(bridgeInformation.getBuildTime(), "yyyy-MM-dd") : null);
+ bridgeInformation.setOpenTimeStr(ToolUtil.isNotEmpty(bridgeInformation.getOpenTime()) ?
+ DateUtil.format(bridgeInformation.getOpenTime(), "yyyy-MM-dd") : null);
+ return ResponseData.success(bridgeInformation);
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeMaintenanceController.java b/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeMaintenanceController.java
new file mode 100644
index 0000000..2ef615d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeMaintenanceController.java
@@ -0,0 +1,189 @@
+package com.casic.missiles.modular.bridges.controller;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.DateUtil;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.bridges.model.BridgeInformation;
+import com.casic.missiles.modular.bridges.model.BridgeMaintenance;
+import com.casic.missiles.modular.bridges.service.IBridgeInformationService;
+import com.casic.missiles.modular.bridges.service.IBridgeMaintenanceService;
+import com.casic.missiles.modular.system.model.Dict;
+import com.casic.missiles.modular.system.model.Person;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * 养护信息控制器
+ *
+ * @author dev
+ * @Date 2020-12-25 10:09:33
+ */
+@Controller
+@RequestMapping("/maintain")
+public class BridgeMaintenanceController extends BaseController {
+
+
+ @Autowired
+ private IBridgeMaintenanceService bridgeMaintenanceService;
+
+ @Autowired
+ private ICommonPermissionService permissionService;
+ @Autowired
+ private IBridgeInformationService bridgeInformationService;
+
+ /**
+ * 获取养护信息列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(String condition) {
+ return bridgeMaintenanceService.selectList(null);
+ }
+
+ /**
+ * 获取养护信息分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(String keyword, String type,
+ String status, String bridgeId,
+ String startDate, String endDate) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper query = new EntityWrapper<>();
+ if (ToolUtil.isNotEmpty(keyword)) {
+ List personList = bridgeMaintenanceService.getPersonListByName(keyword);
+ List personIds = personList.stream().map(Person::getId).collect(Collectors.toList());
+ query.andNew().like("name", keyword).or().in("person_id", personIds);
+ }
+ if (ToolUtil.isNotEmpty(type)) {
+ query.eq("type", type);
+ }
+ if (ToolUtil.isNotEmpty(status)) {
+ query.eq("status", status);
+ }
+ if (ToolUtil.isNotEmpty(bridgeId)) {
+ query.eq("bridge_id", bridgeId);
+ }
+ if (ToolUtil.isNotEmpty(startDate)) {
+ query.ge("maintain_time", startDate);
+ }
+ if (ToolUtil.isNotEmpty(endDate)) {
+ query.le("maintain_time", endDate);
+ }
+ page = bridgeMaintenanceService.selectPage(page, query);
+ List bridgeMaintenanceList = page.getRecords();
+ bridgeMaintenanceList.forEach(bridgeMaintenance -> {
+ bridgeMaintenance.setTypeName(permissionService.getDictNameByCode("maintenanceType", bridgeMaintenance.getType()));
+ bridgeMaintenance.setStatusName(permissionService.getDictNameByCode("maintenanceStatus", bridgeMaintenance.getStatus()));
+ BridgeInformation bridgeInformation = bridgeInformationService.selectById(bridgeMaintenance.getBridgeId());
+ bridgeMaintenance.setBridgeName(bridgeInformation != null ? bridgeInformation.getName() : "");
+ bridgeMaintenance.setCategory("1".equals(bridgeMaintenance.getCategory()) ? "道路" : "桥梁");
+ bridgeMaintenance.setMaintainTimeStr(ToolUtil.isNotEmpty(bridgeMaintenance.getMaintainTime()) ?
+ DateUtil.format(bridgeMaintenance.getMaintainTime(), "yyyy-MM-dd") : null);
+
+ Person person=bridgeMaintenanceService.getPerson(bridgeMaintenance.getPersonId());
+ if(null!=person){
+ bridgeMaintenance.setPersonName(person.getName());
+ }
+ });
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 新增养护信息
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(BridgeMaintenance bridgeMaintenance) {
+ bridgeMaintenanceService.insert(bridgeMaintenance);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除养护信息
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam String bridgeMaintenanceId) {
+ bridgeMaintenanceService.deleteById(bridgeMaintenanceId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("bridgeMaintenanceIds") List bridgeMaintenanceIds) {
+ bridgeMaintenanceService.deleteBatchIds(bridgeMaintenanceIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改养护信息
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(BridgeMaintenance bridgeMaintenance) {
+ bridgeMaintenanceService.updateById(bridgeMaintenance);
+ return ResponseData.success();
+ }
+
+ /**
+ * 养护信息详情
+ */
+// @RequestMapping(value = "/detail/{bridgeMaintenanceId}")
+// @ResponseBody
+// public Object detail(@PathVariable("bridgeMaintenanceId") String bridgeMaintenanceId) {
+// ResultData resultData = new ResultData();
+// resultData.setCode(200);
+// resultData.setMessage("查询详情成功");
+// resultData.setData(bridgeMaintenanceService.selectById(bridgeMaintenanceId));
+// return resultData;
+// }
+
+
+ /**
+ * 年养护类型养护次数统计
+ */
+ @RequestMapping(value = "/maintainCount")
+ @ResponseBody
+ public Object maintainCount(@RequestParam(value = "year", required = false) String year) {
+
+ Map resultMap = new HashMap<>();
+ resultMap.put("rows", bridgeMaintenanceService.maintainCount(year));
+ return ResponseData.success(resultMap);
+ }
+
+ /***
+ * 根据类型获取养护内容
+ * @param type
+ * @return
+ */
+ @RequestMapping(value = "/contentByType")
+ @ResponseBody
+ public Object contentByType(@RequestParam(value = "type", required = false) String type) {
+
+ String content = "";
+ List dictList = permissionService.findInDictByCode("maintenanceType");
+ for (Dict dict : dictList) {
+ if (ToolUtil.isNotEmpty(type) && type.equals(dict.getCode())) {
+ content = dict.getTips();
+ }
+ }
+ return ResponseData.success(content);
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/BridgeInformationMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/BridgeInformationMapper.java
new file mode 100644
index 0000000..cccaa99
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/BridgeInformationMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.bridges.dao;
+
+import com.casic.missiles.modular.bridges.model.BridgeInformation;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author stylefeng123
+ * @since 2020-12-25
+ */
+public interface BridgeInformationMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/BridgeMaintenanceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/BridgeMaintenanceMapper.java
new file mode 100644
index 0000000..bb9f349
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/BridgeMaintenanceMapper.java
@@ -0,0 +1,28 @@
+package com.casic.missiles.modular.bridges.dao;
+
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.casic.missiles.modular.bridges.dto.StatisticsDTO;
+import com.casic.missiles.modular.bridges.model.BridgeMaintenance;
+import com.casic.missiles.modular.system.model.Person;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author stylefeng123
+ * @since 2020-12-25
+ */
+public interface BridgeMaintenanceMapper extends BaseMapper {
+
+
+ List getPersonListByName(@Param("personName") String personName);
+
+ Person getPersonById(@Param("personId") Long personId);
+
+ List maintainCount(@Param("year") String year);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/mapping/BridgeInformationMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/mapping/BridgeInformationMapper.xml
new file mode 100644
index 0000000..e6c6db3
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/mapping/BridgeInformationMapper.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id, name, type, bridge_code AS bridgeCode, road_name AS roadName, high, length, build_time AS buildTime, open_time AS openTime, photo, position, description, ts
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/mapping/BridgeMaintenanceMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/mapping/BridgeMaintenanceMapper.xml
new file mode 100644
index 0000000..a2845df
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/mapping/BridgeMaintenanceMapper.xml
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id, name, type, code, bridge_id AS bridgeId, status, person_id AS personId, maintain_time AS maintainTime, open_time AS openTime, tender, tender_company AS tenderCompany, description, ts, content, phone
+
+
+
+
+
+
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/dto/StatisticsDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dto/StatisticsDTO.java
new file mode 100644
index 0000000..9369894
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dto/StatisticsDTO.java
@@ -0,0 +1,50 @@
+package com.casic.missiles.modular.bridges.dto;
+
+public class StatisticsDTO {
+ private String type;
+ private String typeName;
+ private int count;
+ private String percent="0%";
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public int getCount() {
+ return count;
+ }
+
+ public void setCount(int count) {
+ this.count = count;
+ }
+
+ public String getPercent() {
+ return percent;
+ }
+
+ public void setPercent(String percent) {
+ this.percent = percent;
+ }
+
+ public StatisticsDTO() {
+ }
+
+ public StatisticsDTO(String type, String typeName, int count, String percent) {
+ this.type = type;
+ this.typeName = typeName;
+ this.count = count;
+ this.percent = percent;
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/model/BridgeInformation.java b/casic-server/src/main/java/com/casic/missiles/modular/bridges/model/BridgeInformation.java
new file mode 100644
index 0000000..eb3f558
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/model/BridgeInformation.java
@@ -0,0 +1,62 @@
+package com.casic.missiles.modular.bridges.model;
+
+import java.io.Serializable;
+
+import java.util.Date;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import com.casic.missiles.core.base.json.DateDeserializer;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+/**
+ *
+ *
+ *
+ *
+ * @author stylefeng123
+ * @since 2020-12-25
+ */
+@Data
+@TableName("casic_smartcity_bridge.bridge_information")
+public class BridgeInformation extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ private Long id;
+ private String name;
+ private String type;
+ @TableField("bridge_code")
+ private String bridgeCode;
+ @TableField("road_name")
+ private String roadName;
+ private String high;
+ private String length;
+ @JSONField(serializeUsing = DateDeserializer.class)
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ @TableField("build_time")
+ private Date buildTime;
+ @JSONField(serializeUsing = DateDeserializer.class)
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ @TableField("open_time")
+ private Date openTime;
+ private String photo;
+ private String position;
+ private String description;
+ private Date ts;
+ @TableField(exist = false)
+ private String typeName;
+ @TableField(exist = false)
+ private String buildTimeStr;
+ @TableField(exist = false)
+ private String openTimeStr;
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/model/BridgeMaintenance.java b/casic-server/src/main/java/com/casic/missiles/modular/bridges/model/BridgeMaintenance.java
new file mode 100644
index 0000000..0e448d4
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/model/BridgeMaintenance.java
@@ -0,0 +1,67 @@
+package com.casic.missiles.modular.bridges.model;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.annotations.TableName;
+import com.casic.missiles.core.base.json.DateDeserializer;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ *
+ *
+ *
+ * @author stylefeng123
+ * @since 2020-12-25
+ */
+@TableName("casic_smartcity_bridge.bridge_maintenance")
+@Data
+public class BridgeMaintenance extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ private Long id;
+ private String name;
+ private String type;
+ private String code;
+ @TableField("bridge_id")
+ private Long bridgeId;
+ private String status;
+ @TableField("person_id")
+ private Long personId;
+ @TableField("maintain_time")
+ @JSONField(serializeUsing = DateDeserializer.class)
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ private Date maintainTime;
+ private String tender;
+ @TableField("tender_company")
+ private String tenderCompany;
+ private String description;
+ private Date ts;
+ private String content;
+ private String phone;
+ private String category;
+
+ @TableField(exist = false)
+ private String typeName;
+ @TableField(exist = false)
+ private String statusName;
+ @TableField(exist = false)
+ private String bridgeName;
+ @TableField(exist = false)
+ private String maintainTimeStr;
+ @TableField(exist = false)
+ private String personName;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/service/IBridgeInformationService.java b/casic-server/src/main/java/com/casic/missiles/modular/bridges/service/IBridgeInformationService.java
new file mode 100644
index 0000000..2c863a0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/service/IBridgeInformationService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.bridges.service;
+
+import com.casic.missiles.modular.bridges.model.BridgeInformation;
+import com.baomidou.mybatisplus.service.IService;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author stylefeng123
+ * @since 2020-12-25
+ */
+public interface IBridgeInformationService extends IService {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/service/IBridgeMaintenanceService.java b/casic-server/src/main/java/com/casic/missiles/modular/bridges/service/IBridgeMaintenanceService.java
new file mode 100644
index 0000000..745f26d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/service/IBridgeMaintenanceService.java
@@ -0,0 +1,25 @@
+package com.casic.missiles.modular.bridges.service;
+
+import com.casic.missiles.modular.bridges.dto.StatisticsDTO;
+import com.casic.missiles.modular.bridges.model.BridgeMaintenance;
+import com.baomidou.mybatisplus.service.IService;
+import com.casic.missiles.modular.system.model.Person;
+
+import java.util.List;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author stylefeng123
+ * @since 2020-12-25
+ */
+public interface IBridgeMaintenanceService extends IService {
+
+ List getPersonListByName(String personName);
+
+ List maintainCount(String year);
+
+ Person getPerson(Long personId);
+}
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..9e20bc1
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+.idea/
+**/target/**
+logs/
+*.iml
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..d67ac77
--- /dev/null
+++ b/README.md
@@ -0,0 +1,16 @@
+# casic项目 V1.0.0
+
+## 介绍
+基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot + shiro + mybatis-plus !
+基于casic项目代码简洁,注释丰富,上手容易,同时Guns包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块),
+可以直接作为一个后台管理系统的脚手架! 目标 `更简洁`,`更规范`!
+
+
+#### 其他
+>* [git地址](http://192.168.0.203:8080/gitbucket)
+>* [本地免登地址](http://localhost:8083/route/mockToken)
+
+
+
+
+
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
new file mode 100644
index 0000000..abd3c91
--- /dev/null
+++ b/casic-server/pom.xml
@@ -0,0 +1,41 @@
+
+
+ 4.0.0
+
+ com.casic
+ casic-bridge
+ 1.0.0
+ ../pom.xml
+
+
+ casic-server
+ ${pro.version}
+ jar
+ casic-server
+ casic 的spring boot版本
+
+
+
+
+ com.casic
+ casic-core
+ ${core.version}
+
+
+ com.casic
+ casic-admin-support
+ ${admin.version}
+
+
+
+
+
+ src/main/java
+
+ **/*.xml
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeInformationController.java b/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeInformationController.java
new file mode 100644
index 0000000..5bcfcd5
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeInformationController.java
@@ -0,0 +1,119 @@
+package com.casic.missiles.modular.bridges.controller;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.DateUtil;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.bridges.model.BridgeInformation;
+import com.casic.missiles.modular.bridges.service.IBridgeInformationService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import java.util.List;
+
+/**
+ * 桥梁基本信息控制器
+ *
+ * @author dev
+ * @Date 2020-12-25 10:09:14
+ */
+@Controller
+@RequestMapping("/bridge")
+public class BridgeInformationController extends BaseController {
+
+
+ @Autowired
+ private IBridgeInformationService bridgeInformationService;
+
+ @Autowired
+ private ICommonPermissionService commonPermissionService;
+
+ /**
+ * 获取桥梁基本信息列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(@RequestParam(value = "bridge", required = false) String bridge) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper query = new EntityWrapper<>();
+ if (ToolUtil.isNotEmpty(bridge)) {
+ query.eq("road_name", bridge);
+ }
+ page = bridgeInformationService.selectPage(page, query);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 获取桥梁基本信息分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(String condition) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper query = new EntityWrapper<>();
+ page = bridgeInformationService.selectPage(page, query);
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 新增桥梁基本信息
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(BridgeInformation bridgeInformation) {
+ bridgeInformationService.insert(bridgeInformation);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除桥梁基本信息
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam String bridgeInformationId) {
+ bridgeInformationService.deleteById(bridgeInformationId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("bridgeInformationIds") List bridgeInformationIds) {
+ bridgeInformationService.deleteBatchIds(bridgeInformationIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改桥梁基本信息
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(BridgeInformation bridgeInformation) {
+ bridgeInformationService.updateById(bridgeInformation);
+ return ResponseData.success();
+ }
+
+ /**
+ * 桥梁基本信息详情
+ */
+ @RequestMapping(value = "/detail")
+ @ResponseBody
+ public Object detail(@RequestParam Long id) {
+ BridgeInformation bridgeInformation = bridgeInformationService.selectById(id);
+ bridgeInformation.setTypeName(commonPermissionService.getDictNameByCode("bridgeType", bridgeInformation.getType()));
+ bridgeInformation.setBuildTimeStr(ToolUtil.isNotEmpty(bridgeInformation.getBuildTime()) ?
+ DateUtil.format(bridgeInformation.getBuildTime(), "yyyy-MM-dd") : null);
+ bridgeInformation.setOpenTimeStr(ToolUtil.isNotEmpty(bridgeInformation.getOpenTime()) ?
+ DateUtil.format(bridgeInformation.getOpenTime(), "yyyy-MM-dd") : null);
+ return ResponseData.success(bridgeInformation);
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeMaintenanceController.java b/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeMaintenanceController.java
new file mode 100644
index 0000000..2ef615d
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/controller/BridgeMaintenanceController.java
@@ -0,0 +1,189 @@
+package com.casic.missiles.modular.bridges.controller;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.DateUtil;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.bridges.model.BridgeInformation;
+import com.casic.missiles.modular.bridges.model.BridgeMaintenance;
+import com.casic.missiles.modular.bridges.service.IBridgeInformationService;
+import com.casic.missiles.modular.bridges.service.IBridgeMaintenanceService;
+import com.casic.missiles.modular.system.model.Dict;
+import com.casic.missiles.modular.system.model.Person;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * 养护信息控制器
+ *
+ * @author dev
+ * @Date 2020-12-25 10:09:33
+ */
+@Controller
+@RequestMapping("/maintain")
+public class BridgeMaintenanceController extends BaseController {
+
+
+ @Autowired
+ private IBridgeMaintenanceService bridgeMaintenanceService;
+
+ @Autowired
+ private ICommonPermissionService permissionService;
+ @Autowired
+ private IBridgeInformationService bridgeInformationService;
+
+ /**
+ * 获取养护信息列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(String condition) {
+ return bridgeMaintenanceService.selectList(null);
+ }
+
+ /**
+ * 获取养护信息分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(String keyword, String type,
+ String status, String bridgeId,
+ String startDate, String endDate) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper query = new EntityWrapper<>();
+ if (ToolUtil.isNotEmpty(keyword)) {
+ List personList = bridgeMaintenanceService.getPersonListByName(keyword);
+ List personIds = personList.stream().map(Person::getId).collect(Collectors.toList());
+ query.andNew().like("name", keyword).or().in("person_id", personIds);
+ }
+ if (ToolUtil.isNotEmpty(type)) {
+ query.eq("type", type);
+ }
+ if (ToolUtil.isNotEmpty(status)) {
+ query.eq("status", status);
+ }
+ if (ToolUtil.isNotEmpty(bridgeId)) {
+ query.eq("bridge_id", bridgeId);
+ }
+ if (ToolUtil.isNotEmpty(startDate)) {
+ query.ge("maintain_time", startDate);
+ }
+ if (ToolUtil.isNotEmpty(endDate)) {
+ query.le("maintain_time", endDate);
+ }
+ page = bridgeMaintenanceService.selectPage(page, query);
+ List bridgeMaintenanceList = page.getRecords();
+ bridgeMaintenanceList.forEach(bridgeMaintenance -> {
+ bridgeMaintenance.setTypeName(permissionService.getDictNameByCode("maintenanceType", bridgeMaintenance.getType()));
+ bridgeMaintenance.setStatusName(permissionService.getDictNameByCode("maintenanceStatus", bridgeMaintenance.getStatus()));
+ BridgeInformation bridgeInformation = bridgeInformationService.selectById(bridgeMaintenance.getBridgeId());
+ bridgeMaintenance.setBridgeName(bridgeInformation != null ? bridgeInformation.getName() : "");
+ bridgeMaintenance.setCategory("1".equals(bridgeMaintenance.getCategory()) ? "道路" : "桥梁");
+ bridgeMaintenance.setMaintainTimeStr(ToolUtil.isNotEmpty(bridgeMaintenance.getMaintainTime()) ?
+ DateUtil.format(bridgeMaintenance.getMaintainTime(), "yyyy-MM-dd") : null);
+
+ Person person=bridgeMaintenanceService.getPerson(bridgeMaintenance.getPersonId());
+ if(null!=person){
+ bridgeMaintenance.setPersonName(person.getName());
+ }
+ });
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 新增养护信息
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(BridgeMaintenance bridgeMaintenance) {
+ bridgeMaintenanceService.insert(bridgeMaintenance);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除养护信息
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam String bridgeMaintenanceId) {
+ bridgeMaintenanceService.deleteById(bridgeMaintenanceId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("bridgeMaintenanceIds") List bridgeMaintenanceIds) {
+ bridgeMaintenanceService.deleteBatchIds(bridgeMaintenanceIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改养护信息
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(BridgeMaintenance bridgeMaintenance) {
+ bridgeMaintenanceService.updateById(bridgeMaintenance);
+ return ResponseData.success();
+ }
+
+ /**
+ * 养护信息详情
+ */
+// @RequestMapping(value = "/detail/{bridgeMaintenanceId}")
+// @ResponseBody
+// public Object detail(@PathVariable("bridgeMaintenanceId") String bridgeMaintenanceId) {
+// ResultData resultData = new ResultData();
+// resultData.setCode(200);
+// resultData.setMessage("查询详情成功");
+// resultData.setData(bridgeMaintenanceService.selectById(bridgeMaintenanceId));
+// return resultData;
+// }
+
+
+ /**
+ * 年养护类型养护次数统计
+ */
+ @RequestMapping(value = "/maintainCount")
+ @ResponseBody
+ public Object maintainCount(@RequestParam(value = "year", required = false) String year) {
+
+ Map resultMap = new HashMap<>();
+ resultMap.put("rows", bridgeMaintenanceService.maintainCount(year));
+ return ResponseData.success(resultMap);
+ }
+
+ /***
+ * 根据类型获取养护内容
+ * @param type
+ * @return
+ */
+ @RequestMapping(value = "/contentByType")
+ @ResponseBody
+ public Object contentByType(@RequestParam(value = "type", required = false) String type) {
+
+ String content = "";
+ List dictList = permissionService.findInDictByCode("maintenanceType");
+ for (Dict dict : dictList) {
+ if (ToolUtil.isNotEmpty(type) && type.equals(dict.getCode())) {
+ content = dict.getTips();
+ }
+ }
+ return ResponseData.success(content);
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/BridgeInformationMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/BridgeInformationMapper.java
new file mode 100644
index 0000000..cccaa99
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/BridgeInformationMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.bridges.dao;
+
+import com.casic.missiles.modular.bridges.model.BridgeInformation;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author stylefeng123
+ * @since 2020-12-25
+ */
+public interface BridgeInformationMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/BridgeMaintenanceMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/BridgeMaintenanceMapper.java
new file mode 100644
index 0000000..bb9f349
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/BridgeMaintenanceMapper.java
@@ -0,0 +1,28 @@
+package com.casic.missiles.modular.bridges.dao;
+
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.casic.missiles.modular.bridges.dto.StatisticsDTO;
+import com.casic.missiles.modular.bridges.model.BridgeMaintenance;
+import com.casic.missiles.modular.system.model.Person;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author stylefeng123
+ * @since 2020-12-25
+ */
+public interface BridgeMaintenanceMapper extends BaseMapper {
+
+
+ List getPersonListByName(@Param("personName") String personName);
+
+ Person getPersonById(@Param("personId") Long personId);
+
+ List maintainCount(@Param("year") String year);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/mapping/BridgeInformationMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/mapping/BridgeInformationMapper.xml
new file mode 100644
index 0000000..e6c6db3
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/bridges/dao/mapping/BridgeInformationMapper.xml
@@ -0,0 +1,27 @@
+
+
+