diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..967cb75
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,5 @@
+.idea/
+**/target/**
+logs/
+casic-web/src/test
+*.iml
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..967cb75
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,5 @@
+.idea/
+**/target/**
+logs/
+casic-web/src/test
+*.iml
\ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..21fa0d0
--- /dev/null
+++ b/README.md
@@ -0,0 +1,18 @@
+# 批产设备管理系统 V1.0.0
+
+[^_^]: # (Talk is cheap,Show me the code!)
+
+## 介绍
+基于SpringBoot,致力于做更简洁的后台管理系统,整合springboot + shiro + mybatis-plus + !
+基于casic代码简洁,注释丰富,上手容易,同时包含多基础模块(用户管理,角色管理,部门管理,字典管理等),
+可以直接作为一个后台管理系统的脚手架! 2020目标 `更简洁`,`更规范`!
+
+
+## 其他
+>* [git地址](http://192.168.0.203:8080/gitbucket/git/root/product_device.git)
+>* [本地免登地址](http://localhost:50008/route/mockToken)
+
+
+
+
+
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..967cb75
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,5 @@
+.idea/
+**/target/**
+logs/
+casic-web/src/test
+*.iml
\ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..21fa0d0
--- /dev/null
+++ b/README.md
@@ -0,0 +1,18 @@
+# 批产设备管理系统 V1.0.0
+
+[^_^]: # (Talk is cheap,Show me the code!)
+
+## 介绍
+基于SpringBoot,致力于做更简洁的后台管理系统,整合springboot + shiro + mybatis-plus + !
+基于casic代码简洁,注释丰富,上手容易,同时包含多基础模块(用户管理,角色管理,部门管理,字典管理等),
+可以直接作为一个后台管理系统的脚手架! 2020目标 `更简洁`,`更规范`!
+
+
+## 其他
+>* [git地址](http://192.168.0.203:8080/gitbucket/git/root/product_device.git)
+>* [本地免登地址](http://localhost:50008/route/mockToken)
+
+
+
+
+
diff --git a/casic-device/pom.xml b/casic-device/pom.xml
new file mode 100644
index 0000000..f5b11d5
--- /dev/null
+++ b/casic-device/pom.xml
@@ -0,0 +1,85 @@
+
+
+ 4.0.0
+
+ com.casic
+ casic-product-device
+ 1.0.0-SNAPSHOT
+ ../pom.xml
+
+
+ casic-device
+ ${pro.version}
+ jar
+ casic-device
+ 设备批产
+
+
+
+
+ com.casic
+ casic-core
+ ${casic.version}
+
+
+ com.casic
+ casic-admin-support
+ ${casic.version}
+
+
+ com.casic
+ casic-export-support
+ 1.0.0-SNAPSHOT
+
+
+
+ com.casic
+ casic-admin-support
+ ${casic.version}
+
+
+
+ org.springframework.boot
+ spring-boot-starter-aop
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+ org.springframework.boot
+ spring-boot-starter-validation
+
+
+ org.springframework.boot
+ spring-boot-starter-websocket
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ commons-io
+ commons-io
+
+
+
+ org.apache.commons
+ commons-lang3
+
+
+
+
+
+
+ src/main/java
+
+ **/*.xml
+
+
+
+
+
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..967cb75
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,5 @@
+.idea/
+**/target/**
+logs/
+casic-web/src/test
+*.iml
\ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..21fa0d0
--- /dev/null
+++ b/README.md
@@ -0,0 +1,18 @@
+# 批产设备管理系统 V1.0.0
+
+[^_^]: # (Talk is cheap,Show me the code!)
+
+## 介绍
+基于SpringBoot,致力于做更简洁的后台管理系统,整合springboot + shiro + mybatis-plus + !
+基于casic代码简洁,注释丰富,上手容易,同时包含多基础模块(用户管理,角色管理,部门管理,字典管理等),
+可以直接作为一个后台管理系统的脚手架! 2020目标 `更简洁`,`更规范`!
+
+
+## 其他
+>* [git地址](http://192.168.0.203:8080/gitbucket/git/root/product_device.git)
+>* [本地免登地址](http://localhost:50008/route/mockToken)
+
+
+
+
+
diff --git a/casic-device/pom.xml b/casic-device/pom.xml
new file mode 100644
index 0000000..f5b11d5
--- /dev/null
+++ b/casic-device/pom.xml
@@ -0,0 +1,85 @@
+
+
+ 4.0.0
+
+ com.casic
+ casic-product-device
+ 1.0.0-SNAPSHOT
+ ../pom.xml
+
+
+ casic-device
+ ${pro.version}
+ jar
+ casic-device
+ 设备批产
+
+
+
+
+ com.casic
+ casic-core
+ ${casic.version}
+
+
+ com.casic
+ casic-admin-support
+ ${casic.version}
+
+
+ com.casic
+ casic-export-support
+ 1.0.0-SNAPSHOT
+
+
+
+ com.casic
+ casic-admin-support
+ ${casic.version}
+
+
+
+ org.springframework.boot
+ spring-boot-starter-aop
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+ org.springframework.boot
+ spring-boot-starter-validation
+
+
+ org.springframework.boot
+ spring-boot-starter-websocket
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ commons-io
+ commons-io
+
+
+
+ org.apache.commons
+ commons-lang3
+
+
+
+
+
+
+ src/main/java
+
+ **/*.xml
+
+
+
+
+
diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/DeviceController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/DeviceController.java
new file mode 100644
index 0000000..793d484
--- /dev/null
+++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/DeviceController.java
@@ -0,0 +1,95 @@
+package com.casic.missiles.modular.device.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.base.response.SuccessResponseData;
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.modular.device.service.IDeviceService;
+import com.casic.missiles.modular.system.model.Device;
+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-03-27 15:39:05
+ */
+@Controller
+@RequestMapping("/device")
+public class DeviceController extends BaseController {
+
+
+ @Autowired
+ private IDeviceService deviceService;
+
+
+ /**
+ * 获取设备列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(String condition) {
+ return deviceService.selectList(null);
+ }
+
+ /**
+ * 获取设备分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(String condition) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper query = new EntityWrapper<>();
+ page = deviceService.selectPage(page,query);
+ return new SuccessResponseData(super.packForBT(page));
+ }
+ /**
+ * 新增设备
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(Device device) {
+ deviceService.insert(device);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除设备
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam String deviceId) {
+ deviceService.deleteById(deviceId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("deviceIds") List deviceIds) {
+ deviceService.deleteBatchIds(deviceIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改设备
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(Device device) {
+ deviceService.updateById(device);
+ return ResponseData.success();
+ }
+
+
+}
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..967cb75
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,5 @@
+.idea/
+**/target/**
+logs/
+casic-web/src/test
+*.iml
\ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..21fa0d0
--- /dev/null
+++ b/README.md
@@ -0,0 +1,18 @@
+# 批产设备管理系统 V1.0.0
+
+[^_^]: # (Talk is cheap,Show me the code!)
+
+## 介绍
+基于SpringBoot,致力于做更简洁的后台管理系统,整合springboot + shiro + mybatis-plus + !
+基于casic代码简洁,注释丰富,上手容易,同时包含多基础模块(用户管理,角色管理,部门管理,字典管理等),
+可以直接作为一个后台管理系统的脚手架! 2020目标 `更简洁`,`更规范`!
+
+
+## 其他
+>* [git地址](http://192.168.0.203:8080/gitbucket/git/root/product_device.git)
+>* [本地免登地址](http://localhost:50008/route/mockToken)
+
+
+
+
+
diff --git a/casic-device/pom.xml b/casic-device/pom.xml
new file mode 100644
index 0000000..f5b11d5
--- /dev/null
+++ b/casic-device/pom.xml
@@ -0,0 +1,85 @@
+
+
+ 4.0.0
+
+ com.casic
+ casic-product-device
+ 1.0.0-SNAPSHOT
+ ../pom.xml
+
+
+ casic-device
+ ${pro.version}
+ jar
+ casic-device
+ 设备批产
+
+
+
+
+ com.casic
+ casic-core
+ ${casic.version}
+
+
+ com.casic
+ casic-admin-support
+ ${casic.version}
+
+
+ com.casic
+ casic-export-support
+ 1.0.0-SNAPSHOT
+
+
+
+ com.casic
+ casic-admin-support
+ ${casic.version}
+
+
+
+ org.springframework.boot
+ spring-boot-starter-aop
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+ org.springframework.boot
+ spring-boot-starter-validation
+
+
+ org.springframework.boot
+ spring-boot-starter-websocket
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ commons-io
+ commons-io
+
+
+
+ org.apache.commons
+ commons-lang3
+
+
+
+
+
+
+ src/main/java
+
+ **/*.xml
+
+
+
+
+
diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/DeviceController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/DeviceController.java
new file mode 100644
index 0000000..793d484
--- /dev/null
+++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/DeviceController.java
@@ -0,0 +1,95 @@
+package com.casic.missiles.modular.device.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.base.response.SuccessResponseData;
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.modular.device.service.IDeviceService;
+import com.casic.missiles.modular.system.model.Device;
+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-03-27 15:39:05
+ */
+@Controller
+@RequestMapping("/device")
+public class DeviceController extends BaseController {
+
+
+ @Autowired
+ private IDeviceService deviceService;
+
+
+ /**
+ * 获取设备列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(String condition) {
+ return deviceService.selectList(null);
+ }
+
+ /**
+ * 获取设备分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(String condition) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper query = new EntityWrapper<>();
+ page = deviceService.selectPage(page,query);
+ return new SuccessResponseData(super.packForBT(page));
+ }
+ /**
+ * 新增设备
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(Device device) {
+ deviceService.insert(device);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除设备
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam String deviceId) {
+ deviceService.deleteById(deviceId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("deviceIds") List deviceIds) {
+ deviceService.deleteBatchIds(deviceIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改设备
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(Device device) {
+ deviceService.updateById(device);
+ return ResponseData.success();
+ }
+
+
+}
diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IDeviceService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IDeviceService.java
new file mode 100644
index 0000000..cdfd69f
--- /dev/null
+++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IDeviceService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.device.service;
+
+import com.casic.missiles.modular.system.model.Device;
+import com.baomidou.mybatisplus.service.IService;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author stylefeng123
+ * @since 2020-03-27
+ */
+public interface IDeviceService extends IService {
+
+}
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..967cb75
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,5 @@
+.idea/
+**/target/**
+logs/
+casic-web/src/test
+*.iml
\ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..21fa0d0
--- /dev/null
+++ b/README.md
@@ -0,0 +1,18 @@
+# 批产设备管理系统 V1.0.0
+
+[^_^]: # (Talk is cheap,Show me the code!)
+
+## 介绍
+基于SpringBoot,致力于做更简洁的后台管理系统,整合springboot + shiro + mybatis-plus + !
+基于casic代码简洁,注释丰富,上手容易,同时包含多基础模块(用户管理,角色管理,部门管理,字典管理等),
+可以直接作为一个后台管理系统的脚手架! 2020目标 `更简洁`,`更规范`!
+
+
+## 其他
+>* [git地址](http://192.168.0.203:8080/gitbucket/git/root/product_device.git)
+>* [本地免登地址](http://localhost:50008/route/mockToken)
+
+
+
+
+
diff --git a/casic-device/pom.xml b/casic-device/pom.xml
new file mode 100644
index 0000000..f5b11d5
--- /dev/null
+++ b/casic-device/pom.xml
@@ -0,0 +1,85 @@
+
+
+ 4.0.0
+
+ com.casic
+ casic-product-device
+ 1.0.0-SNAPSHOT
+ ../pom.xml
+
+
+ casic-device
+ ${pro.version}
+ jar
+ casic-device
+ 设备批产
+
+
+
+
+ com.casic
+ casic-core
+ ${casic.version}
+
+
+ com.casic
+ casic-admin-support
+ ${casic.version}
+
+
+ com.casic
+ casic-export-support
+ 1.0.0-SNAPSHOT
+
+
+
+ com.casic
+ casic-admin-support
+ ${casic.version}
+
+
+
+ org.springframework.boot
+ spring-boot-starter-aop
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+ org.springframework.boot
+ spring-boot-starter-validation
+
+
+ org.springframework.boot
+ spring-boot-starter-websocket
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ commons-io
+ commons-io
+
+
+
+ org.apache.commons
+ commons-lang3
+
+
+
+
+
+
+ src/main/java
+
+ **/*.xml
+
+
+
+
+
diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/DeviceController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/DeviceController.java
new file mode 100644
index 0000000..793d484
--- /dev/null
+++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/DeviceController.java
@@ -0,0 +1,95 @@
+package com.casic.missiles.modular.device.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.base.response.SuccessResponseData;
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.modular.device.service.IDeviceService;
+import com.casic.missiles.modular.system.model.Device;
+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-03-27 15:39:05
+ */
+@Controller
+@RequestMapping("/device")
+public class DeviceController extends BaseController {
+
+
+ @Autowired
+ private IDeviceService deviceService;
+
+
+ /**
+ * 获取设备列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(String condition) {
+ return deviceService.selectList(null);
+ }
+
+ /**
+ * 获取设备分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(String condition) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper query = new EntityWrapper<>();
+ page = deviceService.selectPage(page,query);
+ return new SuccessResponseData(super.packForBT(page));
+ }
+ /**
+ * 新增设备
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(Device device) {
+ deviceService.insert(device);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除设备
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam String deviceId) {
+ deviceService.deleteById(deviceId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("deviceIds") List deviceIds) {
+ deviceService.deleteBatchIds(deviceIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改设备
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(Device device) {
+ deviceService.updateById(device);
+ return ResponseData.success();
+ }
+
+
+}
diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IDeviceService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IDeviceService.java
new file mode 100644
index 0000000..cdfd69f
--- /dev/null
+++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IDeviceService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.device.service;
+
+import com.casic.missiles.modular.system.model.Device;
+import com.baomidou.mybatisplus.service.IService;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author stylefeng123
+ * @since 2020-03-27
+ */
+public interface IDeviceService extends IService {
+
+}
diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceServiceImpl.java
new file mode 100644
index 0000000..77f41b1
--- /dev/null
+++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.device.service.impl;
+
+import com.casic.missiles.modular.system.model.Device;
+import com.casic.missiles.modular.system.dao.DeviceMapper;
+import com.casic.missiles.modular.device.service.IDeviceService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author stylefeng123
+ * @since 2020-03-27
+ */
+@Service
+public class DeviceServiceImpl extends ServiceImpl implements IDeviceService {
+
+}
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..967cb75
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,5 @@
+.idea/
+**/target/**
+logs/
+casic-web/src/test
+*.iml
\ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..21fa0d0
--- /dev/null
+++ b/README.md
@@ -0,0 +1,18 @@
+# 批产设备管理系统 V1.0.0
+
+[^_^]: # (Talk is cheap,Show me the code!)
+
+## 介绍
+基于SpringBoot,致力于做更简洁的后台管理系统,整合springboot + shiro + mybatis-plus + !
+基于casic代码简洁,注释丰富,上手容易,同时包含多基础模块(用户管理,角色管理,部门管理,字典管理等),
+可以直接作为一个后台管理系统的脚手架! 2020目标 `更简洁`,`更规范`!
+
+
+## 其他
+>* [git地址](http://192.168.0.203:8080/gitbucket/git/root/product_device.git)
+>* [本地免登地址](http://localhost:50008/route/mockToken)
+
+
+
+
+
diff --git a/casic-device/pom.xml b/casic-device/pom.xml
new file mode 100644
index 0000000..f5b11d5
--- /dev/null
+++ b/casic-device/pom.xml
@@ -0,0 +1,85 @@
+
+
+ 4.0.0
+
+ com.casic
+ casic-product-device
+ 1.0.0-SNAPSHOT
+ ../pom.xml
+
+
+ casic-device
+ ${pro.version}
+ jar
+ casic-device
+ 设备批产
+
+
+
+
+ com.casic
+ casic-core
+ ${casic.version}
+
+
+ com.casic
+ casic-admin-support
+ ${casic.version}
+
+
+ com.casic
+ casic-export-support
+ 1.0.0-SNAPSHOT
+
+
+
+ com.casic
+ casic-admin-support
+ ${casic.version}
+
+
+
+ org.springframework.boot
+ spring-boot-starter-aop
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+ org.springframework.boot
+ spring-boot-starter-validation
+
+
+ org.springframework.boot
+ spring-boot-starter-websocket
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ commons-io
+ commons-io
+
+
+
+ org.apache.commons
+ commons-lang3
+
+
+
+
+
+
+ src/main/java
+
+ **/*.xml
+
+
+
+
+
diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/DeviceController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/DeviceController.java
new file mode 100644
index 0000000..793d484
--- /dev/null
+++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/DeviceController.java
@@ -0,0 +1,95 @@
+package com.casic.missiles.modular.device.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.base.response.SuccessResponseData;
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.modular.device.service.IDeviceService;
+import com.casic.missiles.modular.system.model.Device;
+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-03-27 15:39:05
+ */
+@Controller
+@RequestMapping("/device")
+public class DeviceController extends BaseController {
+
+
+ @Autowired
+ private IDeviceService deviceService;
+
+
+ /**
+ * 获取设备列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(String condition) {
+ return deviceService.selectList(null);
+ }
+
+ /**
+ * 获取设备分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(String condition) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper query = new EntityWrapper<>();
+ page = deviceService.selectPage(page,query);
+ return new SuccessResponseData(super.packForBT(page));
+ }
+ /**
+ * 新增设备
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(Device device) {
+ deviceService.insert(device);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除设备
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam String deviceId) {
+ deviceService.deleteById(deviceId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("deviceIds") List deviceIds) {
+ deviceService.deleteBatchIds(deviceIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改设备
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(Device device) {
+ deviceService.updateById(device);
+ return ResponseData.success();
+ }
+
+
+}
diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IDeviceService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IDeviceService.java
new file mode 100644
index 0000000..cdfd69f
--- /dev/null
+++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IDeviceService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.device.service;
+
+import com.casic.missiles.modular.system.model.Device;
+import com.baomidou.mybatisplus.service.IService;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author stylefeng123
+ * @since 2020-03-27
+ */
+public interface IDeviceService extends IService {
+
+}
diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceServiceImpl.java
new file mode 100644
index 0000000..77f41b1
--- /dev/null
+++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.device.service.impl;
+
+import com.casic.missiles.modular.system.model.Device;
+import com.casic.missiles.modular.system.dao.DeviceMapper;
+import com.casic.missiles.modular.device.service.IDeviceService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author stylefeng123
+ * @since 2020-03-27
+ */
+@Service
+public class DeviceServiceImpl extends ServiceImpl implements IDeviceService {
+
+}
diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/controller/ContractController.java b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/ContractController.java
new file mode 100644
index 0000000..ecd033b
--- /dev/null
+++ b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/ContractController.java
@@ -0,0 +1,252 @@
+package com.casic.missiles.modular.system.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.ErrorResponseData;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.base.response.SuccessResponseData;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.system.dict.ContractDict;
+import com.casic.missiles.modular.system.model.Contract;
+import com.casic.missiles.modular.system.model.Account;
+import com.casic.missiles.modular.system.service.IContractService;
+import com.casic.missiles.modular.system.service.IAccountService;
+import org.hswebframework.expands.office.excel.ExcelIO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import static com.casic.missiles.modular.system.dict.ContractDict.CONTRACT_ADD_LOG_KEY;
+
+/**
+ * casic_device控制器
+ *
+ * @author dev
+ * @Date 2020-03-17 11:18:50
+ */
+@Controller
+@RequestMapping("/contract")
+public class ContractController extends BaseController {
+
+
+ @Autowired
+ private IContractService contractService;
+ @Autowired
+ private IAccountService userService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ @Value("${casic.file-download-path}")
+ private String downloadPath;
+
+ /**
+ * 获取列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(String condition) {
+ return contractService.selectList(null);
+ }
+
+ /**
+ * 获取分页列表
+ */
+ @RequestMapping(value = "/pageList")
+ @ResponseBody
+ public Object listPage(String keyword1,String keyword2,String keyword3) {
+ Page page = new PageFactory().defaultPage();
+ List contractList = contractService.selectPageList(page,keyword1, keyword2, keyword3);
+ page.setRecords(contractList);
+ return new SuccessResponseData(super.packForBT(page));
+ }
+ /**
+ * 新增
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ @BussinessLog(value = "增加合同信息", key = CONTRACT_ADD_LOG_KEY, dict = ContractDict.class)
+ public Object add(Contract contract) {
+ //合同编号一样,则覆盖
+ EntityWrapper contractEntityWrapper = new EntityWrapper<>();
+ contractEntityWrapper.eq("contract_number",contract.getContractNumber());
+ contractService.delete(contractEntityWrapper);
+ Account user=userService.findUserByName(contract.getPrincipal());
+ contract.setDeptid(null!=user&&user.getId()!=null?user.getDeptid().toString():"");
+ contractService.insert(contract);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam String contractId) {
+ contractService.deleteById(contractId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("contractIds") List contractIds) {
+ contractService.deleteBatchIds(contractIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改基本信息
+ */
+ @RequestMapping(value = "/baseUpdate")
+ @ResponseBody
+ @BussinessLog(value = "编辑合同信息", key = CONTRACT_ADD_LOG_KEY, dict = ContractDict.class)
+ public Object baseUpdate(Contract contract) {
+ Contract contract1=contractService.selectById(contract.getId());
+ contract1.setContractNumber(contract.getContractNumber());
+ contract1.setContractName(contract.getContractName());
+ contract1.setContractAmount(contract.getContractAmount());
+ contract1.setContractContent(contract.getContractContent());
+ contract1.setContractFactory(contract.getContractFactory());
+ contract1.setPrincipal(contract.getPrincipal());
+ Account user=userService.findUserByName(contract.getPrincipal());
+ contract1.setDeptid(null!=user&&user.getId()!=null?user.getDeptid().toString():"");
+ contractService.updateById(contract1);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改内网流程
+ */
+ @RequestMapping(value = "/flowUpdate")
+ @ResponseBody
+ @BussinessLog(value = "修改内网流程信息")
+ public Object update(Contract contract) {
+ Contract contract1=contractService.selectById(contract.getId());
+ contract1.setExternalCheckApply(contract.getExternalCheckApply());
+ contract1.setExternalContractApply(contract.getExternalContractApply());
+ contract1.setExternalProjectApply(contract.getExternalProjectApply());
+ contractService.updateById(contract1);
+ return ResponseData.success();
+ }
+
+
+ /**
+ * 导出合同列表
+ */
+ @RequestMapping(value = "/listExp")
+ public void reportExport(HttpServletRequest httpServletRequest
+ , HttpServletResponse httpServletResponse) throws IOException {
+ String keyword1 = httpServletRequest.getParameter("keyword1");
+ String keyword2 = httpServletRequest.getParameter("keyword2");
+ String keyword3 = httpServletRequest.getParameter("keyword3");
+ List list = contractService.reportExport(keyword1, keyword2, keyword3);
+ FileInputStream fileInputStream = new FileInputStream(downloadPath +
+ (list!=null&&list.size()>0?"contractList.xlsx":"contentNull.xlsx"));
+ try {
+ httpServletResponse.setContentType("application/octet-stream");
+ httpServletResponse.addHeader("Content-Disposition", " attachment;filename=" + "contractList.xlsx");
+ Map var = new HashMap<>();
+ var.put("list", list);
+ ExcelIO.writeTemplate(fileInputStream, httpServletResponse.getOutputStream(), var);
+ } catch (IOException e) {
+ e.printStackTrace();
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ httpServletResponse.getOutputStream().flush();
+ httpServletResponse.getOutputStream().close();
+ fileInputStream.close();
+ }
+ }
+
+ /**
+ * 批量导入合同列表
+ */
+ @RequestMapping(value = "/imp", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "批量导入合同信息")
+ public Object batchImport(@RequestParam("fs") MultipartFile fs) {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ mapper.put("合同编号", "contractNumber");
+ mapper.put("合同名称", "contractName");
+ mapper.put("合同乙方", "contractFactory");
+ mapper.put("主要内容概述", "contractContent");
+ mapper.put("合同金额(万元)", "contractAmount");
+ mapper.put("负责人", "principal");
+ try {
+ try (InputStream in = fs.getInputStream()) {
+ ExcelIO.read(in, mapper, Contract.class, (row) -> {
+ //仅读取第一个sheet
+ if (row.getSheet() == 0) {
+ if (row.getResult() != null) {
+ Contract contract = row.getResult();
+
+ if (!ToolUtil.isAllEmpty(contract.getContractNumber(), contract.getContractName())) {
+ results.add(contract);
+ }
+ }
+ } else {
+ row.shutdown();
+ }
+ });
+
+ contractService.importContract(results);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ return new ErrorResponseData("导入设备类型列表失败");
+ }
+
+ return ResponseData.success();
+ }
+
+
+ /**
+ * 根据id查详情
+ * @param id
+ * @return
+ */
+ @RequestMapping(value = "/selectById")
+ @ResponseBody
+ public Object detail(Long id) {
+ return ResponseData.success(200,
+ "查询详情成功",
+ contractService.selectById(id));
+ }
+
+
+ /**
+ * 合同下拉接口
+ */
+ @RequestMapping(value = "/getContract")
+ @ResponseBody
+ public Object getContract() {
+ EntityWrapper entityWrapper = new EntityWrapper<>();
+ List contractList = contractService.selectList(entityWrapper);
+ return ResponseData.success(200, "", contractList);
+ }
+}
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..967cb75
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,5 @@
+.idea/
+**/target/**
+logs/
+casic-web/src/test
+*.iml
\ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..21fa0d0
--- /dev/null
+++ b/README.md
@@ -0,0 +1,18 @@
+# 批产设备管理系统 V1.0.0
+
+[^_^]: # (Talk is cheap,Show me the code!)
+
+## 介绍
+基于SpringBoot,致力于做更简洁的后台管理系统,整合springboot + shiro + mybatis-plus + !
+基于casic代码简洁,注释丰富,上手容易,同时包含多基础模块(用户管理,角色管理,部门管理,字典管理等),
+可以直接作为一个后台管理系统的脚手架! 2020目标 `更简洁`,`更规范`!
+
+
+## 其他
+>* [git地址](http://192.168.0.203:8080/gitbucket/git/root/product_device.git)
+>* [本地免登地址](http://localhost:50008/route/mockToken)
+
+
+
+
+
diff --git a/casic-device/pom.xml b/casic-device/pom.xml
new file mode 100644
index 0000000..f5b11d5
--- /dev/null
+++ b/casic-device/pom.xml
@@ -0,0 +1,85 @@
+
+
+ 4.0.0
+
+ com.casic
+ casic-product-device
+ 1.0.0-SNAPSHOT
+ ../pom.xml
+
+
+ casic-device
+ ${pro.version}
+ jar
+ casic-device
+ 设备批产
+
+
+
+
+ com.casic
+ casic-core
+ ${casic.version}
+
+
+ com.casic
+ casic-admin-support
+ ${casic.version}
+
+
+ com.casic
+ casic-export-support
+ 1.0.0-SNAPSHOT
+
+
+
+ com.casic
+ casic-admin-support
+ ${casic.version}
+
+
+
+ org.springframework.boot
+ spring-boot-starter-aop
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+ org.springframework.boot
+ spring-boot-starter-validation
+
+
+ org.springframework.boot
+ spring-boot-starter-websocket
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ commons-io
+ commons-io
+
+
+
+ org.apache.commons
+ commons-lang3
+
+
+
+
+
+
+ src/main/java
+
+ **/*.xml
+
+
+
+
+
diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/DeviceController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/DeviceController.java
new file mode 100644
index 0000000..793d484
--- /dev/null
+++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/DeviceController.java
@@ -0,0 +1,95 @@
+package com.casic.missiles.modular.device.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.base.response.SuccessResponseData;
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.modular.device.service.IDeviceService;
+import com.casic.missiles.modular.system.model.Device;
+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-03-27 15:39:05
+ */
+@Controller
+@RequestMapping("/device")
+public class DeviceController extends BaseController {
+
+
+ @Autowired
+ private IDeviceService deviceService;
+
+
+ /**
+ * 获取设备列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(String condition) {
+ return deviceService.selectList(null);
+ }
+
+ /**
+ * 获取设备分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(String condition) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper query = new EntityWrapper<>();
+ page = deviceService.selectPage(page,query);
+ return new SuccessResponseData(super.packForBT(page));
+ }
+ /**
+ * 新增设备
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(Device device) {
+ deviceService.insert(device);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除设备
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam String deviceId) {
+ deviceService.deleteById(deviceId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("deviceIds") List deviceIds) {
+ deviceService.deleteBatchIds(deviceIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改设备
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(Device device) {
+ deviceService.updateById(device);
+ return ResponseData.success();
+ }
+
+
+}
diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IDeviceService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IDeviceService.java
new file mode 100644
index 0000000..cdfd69f
--- /dev/null
+++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IDeviceService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.device.service;
+
+import com.casic.missiles.modular.system.model.Device;
+import com.baomidou.mybatisplus.service.IService;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author stylefeng123
+ * @since 2020-03-27
+ */
+public interface IDeviceService extends IService {
+
+}
diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceServiceImpl.java
new file mode 100644
index 0000000..77f41b1
--- /dev/null
+++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.device.service.impl;
+
+import com.casic.missiles.modular.system.model.Device;
+import com.casic.missiles.modular.system.dao.DeviceMapper;
+import com.casic.missiles.modular.device.service.IDeviceService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author stylefeng123
+ * @since 2020-03-27
+ */
+@Service
+public class DeviceServiceImpl extends ServiceImpl implements IDeviceService {
+
+}
diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/controller/ContractController.java b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/ContractController.java
new file mode 100644
index 0000000..ecd033b
--- /dev/null
+++ b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/ContractController.java
@@ -0,0 +1,252 @@
+package com.casic.missiles.modular.system.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.ErrorResponseData;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.base.response.SuccessResponseData;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.system.dict.ContractDict;
+import com.casic.missiles.modular.system.model.Contract;
+import com.casic.missiles.modular.system.model.Account;
+import com.casic.missiles.modular.system.service.IContractService;
+import com.casic.missiles.modular.system.service.IAccountService;
+import org.hswebframework.expands.office.excel.ExcelIO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import static com.casic.missiles.modular.system.dict.ContractDict.CONTRACT_ADD_LOG_KEY;
+
+/**
+ * casic_device控制器
+ *
+ * @author dev
+ * @Date 2020-03-17 11:18:50
+ */
+@Controller
+@RequestMapping("/contract")
+public class ContractController extends BaseController {
+
+
+ @Autowired
+ private IContractService contractService;
+ @Autowired
+ private IAccountService userService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ @Value("${casic.file-download-path}")
+ private String downloadPath;
+
+ /**
+ * 获取列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(String condition) {
+ return contractService.selectList(null);
+ }
+
+ /**
+ * 获取分页列表
+ */
+ @RequestMapping(value = "/pageList")
+ @ResponseBody
+ public Object listPage(String keyword1,String keyword2,String keyword3) {
+ Page page = new PageFactory().defaultPage();
+ List contractList = contractService.selectPageList(page,keyword1, keyword2, keyword3);
+ page.setRecords(contractList);
+ return new SuccessResponseData(super.packForBT(page));
+ }
+ /**
+ * 新增
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ @BussinessLog(value = "增加合同信息", key = CONTRACT_ADD_LOG_KEY, dict = ContractDict.class)
+ public Object add(Contract contract) {
+ //合同编号一样,则覆盖
+ EntityWrapper contractEntityWrapper = new EntityWrapper<>();
+ contractEntityWrapper.eq("contract_number",contract.getContractNumber());
+ contractService.delete(contractEntityWrapper);
+ Account user=userService.findUserByName(contract.getPrincipal());
+ contract.setDeptid(null!=user&&user.getId()!=null?user.getDeptid().toString():"");
+ contractService.insert(contract);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam String contractId) {
+ contractService.deleteById(contractId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("contractIds") List contractIds) {
+ contractService.deleteBatchIds(contractIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改基本信息
+ */
+ @RequestMapping(value = "/baseUpdate")
+ @ResponseBody
+ @BussinessLog(value = "编辑合同信息", key = CONTRACT_ADD_LOG_KEY, dict = ContractDict.class)
+ public Object baseUpdate(Contract contract) {
+ Contract contract1=contractService.selectById(contract.getId());
+ contract1.setContractNumber(contract.getContractNumber());
+ contract1.setContractName(contract.getContractName());
+ contract1.setContractAmount(contract.getContractAmount());
+ contract1.setContractContent(contract.getContractContent());
+ contract1.setContractFactory(contract.getContractFactory());
+ contract1.setPrincipal(contract.getPrincipal());
+ Account user=userService.findUserByName(contract.getPrincipal());
+ contract1.setDeptid(null!=user&&user.getId()!=null?user.getDeptid().toString():"");
+ contractService.updateById(contract1);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改内网流程
+ */
+ @RequestMapping(value = "/flowUpdate")
+ @ResponseBody
+ @BussinessLog(value = "修改内网流程信息")
+ public Object update(Contract contract) {
+ Contract contract1=contractService.selectById(contract.getId());
+ contract1.setExternalCheckApply(contract.getExternalCheckApply());
+ contract1.setExternalContractApply(contract.getExternalContractApply());
+ contract1.setExternalProjectApply(contract.getExternalProjectApply());
+ contractService.updateById(contract1);
+ return ResponseData.success();
+ }
+
+
+ /**
+ * 导出合同列表
+ */
+ @RequestMapping(value = "/listExp")
+ public void reportExport(HttpServletRequest httpServletRequest
+ , HttpServletResponse httpServletResponse) throws IOException {
+ String keyword1 = httpServletRequest.getParameter("keyword1");
+ String keyword2 = httpServletRequest.getParameter("keyword2");
+ String keyword3 = httpServletRequest.getParameter("keyword3");
+ List list = contractService.reportExport(keyword1, keyword2, keyword3);
+ FileInputStream fileInputStream = new FileInputStream(downloadPath +
+ (list!=null&&list.size()>0?"contractList.xlsx":"contentNull.xlsx"));
+ try {
+ httpServletResponse.setContentType("application/octet-stream");
+ httpServletResponse.addHeader("Content-Disposition", " attachment;filename=" + "contractList.xlsx");
+ Map var = new HashMap<>();
+ var.put("list", list);
+ ExcelIO.writeTemplate(fileInputStream, httpServletResponse.getOutputStream(), var);
+ } catch (IOException e) {
+ e.printStackTrace();
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ httpServletResponse.getOutputStream().flush();
+ httpServletResponse.getOutputStream().close();
+ fileInputStream.close();
+ }
+ }
+
+ /**
+ * 批量导入合同列表
+ */
+ @RequestMapping(value = "/imp", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "批量导入合同信息")
+ public Object batchImport(@RequestParam("fs") MultipartFile fs) {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ mapper.put("合同编号", "contractNumber");
+ mapper.put("合同名称", "contractName");
+ mapper.put("合同乙方", "contractFactory");
+ mapper.put("主要内容概述", "contractContent");
+ mapper.put("合同金额(万元)", "contractAmount");
+ mapper.put("负责人", "principal");
+ try {
+ try (InputStream in = fs.getInputStream()) {
+ ExcelIO.read(in, mapper, Contract.class, (row) -> {
+ //仅读取第一个sheet
+ if (row.getSheet() == 0) {
+ if (row.getResult() != null) {
+ Contract contract = row.getResult();
+
+ if (!ToolUtil.isAllEmpty(contract.getContractNumber(), contract.getContractName())) {
+ results.add(contract);
+ }
+ }
+ } else {
+ row.shutdown();
+ }
+ });
+
+ contractService.importContract(results);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ return new ErrorResponseData("导入设备类型列表失败");
+ }
+
+ return ResponseData.success();
+ }
+
+
+ /**
+ * 根据id查详情
+ * @param id
+ * @return
+ */
+ @RequestMapping(value = "/selectById")
+ @ResponseBody
+ public Object detail(Long id) {
+ return ResponseData.success(200,
+ "查询详情成功",
+ contractService.selectById(id));
+ }
+
+
+ /**
+ * 合同下拉接口
+ */
+ @RequestMapping(value = "/getContract")
+ @ResponseBody
+ public Object getContract() {
+ EntityWrapper entityWrapper = new EntityWrapper<>();
+ List contractList = contractService.selectList(entityWrapper);
+ return ResponseData.success(200, "", contractList);
+ }
+}
diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/controller/PaymentsController.java b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/PaymentsController.java
new file mode 100644
index 0000000..dd04612
--- /dev/null
+++ b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/PaymentsController.java
@@ -0,0 +1,134 @@
+package com.casic.missiles.modular.system.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.annotion.BussinessLog;
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.core.util.DateUtil;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.system.model.Payments;
+import com.casic.missiles.modular.system.service.IPaymentsService;
+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.ArrayList;
+import java.util.List;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2020-03-17 11:20:45
+ */
+@Controller
+@RequestMapping("/payments")
+public class PaymentsController extends BaseController {
+
+
+ @Autowired
+ private IPaymentsService paymentsService;
+
+
+ /**
+ * 获取列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(String proId) {
+ EntityWrapper entityWrapper = new EntityWrapper<>();
+ entityWrapper.eq("pro_id", proId);
+ entityWrapper.orderBy("reorder");
+ List paymentsList = paymentsService.selectList(entityWrapper);
+ paymentsList.forEach(payments -> {
+ payments.setPaytimeFmt(DateUtil.format(payments.getPaytime(), "yyyy-MM-dd HH:mm:ss"));
+ });
+ return ResponseData.success(paymentsList);
+ }
+
+ /**
+ * 获取分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(String condition) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper query = new EntityWrapper<>();
+ page = paymentsService.selectPage(page, query);
+ return super.packForBT(page);
+ }
+
+ /**
+ * 新增
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ @BussinessLog(value = "新增付款流程信息")
+ public Object add(Payments payments, String paytimeFmt) {
+ if (paymentsService.validate(payments.getProId(),
+ payments.getMoney(),payments.getReorder())) {
+ return ResponseData.error("付款金额已超过合同额!");
+ }
+ EntityWrapper entityWrapper = new EntityWrapper<>();
+ entityWrapper.eq("pro_id", payments.getProId());
+ entityWrapper.eq("reorder", payments.getReorder());
+ paymentsService.delete(entityWrapper);
+ payments.setPaytime(ToolUtil.isNotEmpty(paytimeFmt) ?
+ DateUtil.parseTime(paytimeFmt) : null);
+ paymentsService.insert(payments);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam String paymentsId) {
+ paymentsService.deleteById(paymentsId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("paymentsIds") List paymentsIds) {
+ paymentsService.deleteBatchIds(paymentsIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ @BussinessLog(value = "编辑报销流程信息")
+ public Object update(Payments payments, String paytimeFmt) {
+ if (paymentsService.validate(payments.getProId(), payments.getMoney(),payments.getReorder())) {
+ return ResponseData.error("付款金额已超过合同额!");
+ }
+ payments.setPaytime(ToolUtil.isNotEmpty(paytimeFmt) ?
+ DateUtil.parseTime(paytimeFmt) : null);
+ paymentsService.updateById(payments);
+ return ResponseData.success();
+ }
+
+// /**
+// * casic_device详情
+// */
+// @RequestMapping(value = "/detail/{paymentsId}")
+// @ResponseBody
+// public Object detail(@PathVariable("paymentsId") String paymentsId) {
+// ResultData resultData = new ResultData();
+// resultData.setCode(200);
+// resultData.setMessage("查询详情成功");
+// resultData.setData(paymentsService.selectById(paymentsId));
+// return resultData;
+// }
+}
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..967cb75
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,5 @@
+.idea/
+**/target/**
+logs/
+casic-web/src/test
+*.iml
\ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..21fa0d0
--- /dev/null
+++ b/README.md
@@ -0,0 +1,18 @@
+# 批产设备管理系统 V1.0.0
+
+[^_^]: # (Talk is cheap,Show me the code!)
+
+## 介绍
+基于SpringBoot,致力于做更简洁的后台管理系统,整合springboot + shiro + mybatis-plus + !
+基于casic代码简洁,注释丰富,上手容易,同时包含多基础模块(用户管理,角色管理,部门管理,字典管理等),
+可以直接作为一个后台管理系统的脚手架! 2020目标 `更简洁`,`更规范`!
+
+
+## 其他
+>* [git地址](http://192.168.0.203:8080/gitbucket/git/root/product_device.git)
+>* [本地免登地址](http://localhost:50008/route/mockToken)
+
+
+
+
+
diff --git a/casic-device/pom.xml b/casic-device/pom.xml
new file mode 100644
index 0000000..f5b11d5
--- /dev/null
+++ b/casic-device/pom.xml
@@ -0,0 +1,85 @@
+
+
+ 4.0.0
+
+ com.casic
+ casic-product-device
+ 1.0.0-SNAPSHOT
+ ../pom.xml
+
+
+ casic-device
+ ${pro.version}
+ jar
+ casic-device
+ 设备批产
+
+
+
+
+ com.casic
+ casic-core
+ ${casic.version}
+
+
+ com.casic
+ casic-admin-support
+ ${casic.version}
+
+
+ com.casic
+ casic-export-support
+ 1.0.0-SNAPSHOT
+
+
+
+ com.casic
+ casic-admin-support
+ ${casic.version}
+
+
+
+ org.springframework.boot
+ spring-boot-starter-aop
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+ org.springframework.boot
+ spring-boot-starter-validation
+
+
+ org.springframework.boot
+ spring-boot-starter-websocket
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ commons-io
+ commons-io
+
+
+
+ org.apache.commons
+ commons-lang3
+
+
+
+
+
+
+ src/main/java
+
+ **/*.xml
+
+
+
+
+
diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/DeviceController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/DeviceController.java
new file mode 100644
index 0000000..793d484
--- /dev/null
+++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/DeviceController.java
@@ -0,0 +1,95 @@
+package com.casic.missiles.modular.device.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.base.response.SuccessResponseData;
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.modular.device.service.IDeviceService;
+import com.casic.missiles.modular.system.model.Device;
+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-03-27 15:39:05
+ */
+@Controller
+@RequestMapping("/device")
+public class DeviceController extends BaseController {
+
+
+ @Autowired
+ private IDeviceService deviceService;
+
+
+ /**
+ * 获取设备列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(String condition) {
+ return deviceService.selectList(null);
+ }
+
+ /**
+ * 获取设备分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(String condition) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper query = new EntityWrapper<>();
+ page = deviceService.selectPage(page,query);
+ return new SuccessResponseData(super.packForBT(page));
+ }
+ /**
+ * 新增设备
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(Device device) {
+ deviceService.insert(device);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除设备
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam String deviceId) {
+ deviceService.deleteById(deviceId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("deviceIds") List deviceIds) {
+ deviceService.deleteBatchIds(deviceIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改设备
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(Device device) {
+ deviceService.updateById(device);
+ return ResponseData.success();
+ }
+
+
+}
diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IDeviceService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IDeviceService.java
new file mode 100644
index 0000000..cdfd69f
--- /dev/null
+++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IDeviceService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.device.service;
+
+import com.casic.missiles.modular.system.model.Device;
+import com.baomidou.mybatisplus.service.IService;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author stylefeng123
+ * @since 2020-03-27
+ */
+public interface IDeviceService extends IService {
+
+}
diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceServiceImpl.java
new file mode 100644
index 0000000..77f41b1
--- /dev/null
+++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.device.service.impl;
+
+import com.casic.missiles.modular.system.model.Device;
+import com.casic.missiles.modular.system.dao.DeviceMapper;
+import com.casic.missiles.modular.device.service.IDeviceService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author stylefeng123
+ * @since 2020-03-27
+ */
+@Service
+public class DeviceServiceImpl extends ServiceImpl implements IDeviceService {
+
+}
diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/controller/ContractController.java b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/ContractController.java
new file mode 100644
index 0000000..ecd033b
--- /dev/null
+++ b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/ContractController.java
@@ -0,0 +1,252 @@
+package com.casic.missiles.modular.system.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.ErrorResponseData;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.base.response.SuccessResponseData;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.system.dict.ContractDict;
+import com.casic.missiles.modular.system.model.Contract;
+import com.casic.missiles.modular.system.model.Account;
+import com.casic.missiles.modular.system.service.IContractService;
+import com.casic.missiles.modular.system.service.IAccountService;
+import org.hswebframework.expands.office.excel.ExcelIO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import static com.casic.missiles.modular.system.dict.ContractDict.CONTRACT_ADD_LOG_KEY;
+
+/**
+ * casic_device控制器
+ *
+ * @author dev
+ * @Date 2020-03-17 11:18:50
+ */
+@Controller
+@RequestMapping("/contract")
+public class ContractController extends BaseController {
+
+
+ @Autowired
+ private IContractService contractService;
+ @Autowired
+ private IAccountService userService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ @Value("${casic.file-download-path}")
+ private String downloadPath;
+
+ /**
+ * 获取列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(String condition) {
+ return contractService.selectList(null);
+ }
+
+ /**
+ * 获取分页列表
+ */
+ @RequestMapping(value = "/pageList")
+ @ResponseBody
+ public Object listPage(String keyword1,String keyword2,String keyword3) {
+ Page page = new PageFactory().defaultPage();
+ List contractList = contractService.selectPageList(page,keyword1, keyword2, keyword3);
+ page.setRecords(contractList);
+ return new SuccessResponseData(super.packForBT(page));
+ }
+ /**
+ * 新增
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ @BussinessLog(value = "增加合同信息", key = CONTRACT_ADD_LOG_KEY, dict = ContractDict.class)
+ public Object add(Contract contract) {
+ //合同编号一样,则覆盖
+ EntityWrapper contractEntityWrapper = new EntityWrapper<>();
+ contractEntityWrapper.eq("contract_number",contract.getContractNumber());
+ contractService.delete(contractEntityWrapper);
+ Account user=userService.findUserByName(contract.getPrincipal());
+ contract.setDeptid(null!=user&&user.getId()!=null?user.getDeptid().toString():"");
+ contractService.insert(contract);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam String contractId) {
+ contractService.deleteById(contractId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("contractIds") List contractIds) {
+ contractService.deleteBatchIds(contractIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改基本信息
+ */
+ @RequestMapping(value = "/baseUpdate")
+ @ResponseBody
+ @BussinessLog(value = "编辑合同信息", key = CONTRACT_ADD_LOG_KEY, dict = ContractDict.class)
+ public Object baseUpdate(Contract contract) {
+ Contract contract1=contractService.selectById(contract.getId());
+ contract1.setContractNumber(contract.getContractNumber());
+ contract1.setContractName(contract.getContractName());
+ contract1.setContractAmount(contract.getContractAmount());
+ contract1.setContractContent(contract.getContractContent());
+ contract1.setContractFactory(contract.getContractFactory());
+ contract1.setPrincipal(contract.getPrincipal());
+ Account user=userService.findUserByName(contract.getPrincipal());
+ contract1.setDeptid(null!=user&&user.getId()!=null?user.getDeptid().toString():"");
+ contractService.updateById(contract1);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改内网流程
+ */
+ @RequestMapping(value = "/flowUpdate")
+ @ResponseBody
+ @BussinessLog(value = "修改内网流程信息")
+ public Object update(Contract contract) {
+ Contract contract1=contractService.selectById(contract.getId());
+ contract1.setExternalCheckApply(contract.getExternalCheckApply());
+ contract1.setExternalContractApply(contract.getExternalContractApply());
+ contract1.setExternalProjectApply(contract.getExternalProjectApply());
+ contractService.updateById(contract1);
+ return ResponseData.success();
+ }
+
+
+ /**
+ * 导出合同列表
+ */
+ @RequestMapping(value = "/listExp")
+ public void reportExport(HttpServletRequest httpServletRequest
+ , HttpServletResponse httpServletResponse) throws IOException {
+ String keyword1 = httpServletRequest.getParameter("keyword1");
+ String keyword2 = httpServletRequest.getParameter("keyword2");
+ String keyword3 = httpServletRequest.getParameter("keyword3");
+ List list = contractService.reportExport(keyword1, keyword2, keyword3);
+ FileInputStream fileInputStream = new FileInputStream(downloadPath +
+ (list!=null&&list.size()>0?"contractList.xlsx":"contentNull.xlsx"));
+ try {
+ httpServletResponse.setContentType("application/octet-stream");
+ httpServletResponse.addHeader("Content-Disposition", " attachment;filename=" + "contractList.xlsx");
+ Map var = new HashMap<>();
+ var.put("list", list);
+ ExcelIO.writeTemplate(fileInputStream, httpServletResponse.getOutputStream(), var);
+ } catch (IOException e) {
+ e.printStackTrace();
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ httpServletResponse.getOutputStream().flush();
+ httpServletResponse.getOutputStream().close();
+ fileInputStream.close();
+ }
+ }
+
+ /**
+ * 批量导入合同列表
+ */
+ @RequestMapping(value = "/imp", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "批量导入合同信息")
+ public Object batchImport(@RequestParam("fs") MultipartFile fs) {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ mapper.put("合同编号", "contractNumber");
+ mapper.put("合同名称", "contractName");
+ mapper.put("合同乙方", "contractFactory");
+ mapper.put("主要内容概述", "contractContent");
+ mapper.put("合同金额(万元)", "contractAmount");
+ mapper.put("负责人", "principal");
+ try {
+ try (InputStream in = fs.getInputStream()) {
+ ExcelIO.read(in, mapper, Contract.class, (row) -> {
+ //仅读取第一个sheet
+ if (row.getSheet() == 0) {
+ if (row.getResult() != null) {
+ Contract contract = row.getResult();
+
+ if (!ToolUtil.isAllEmpty(contract.getContractNumber(), contract.getContractName())) {
+ results.add(contract);
+ }
+ }
+ } else {
+ row.shutdown();
+ }
+ });
+
+ contractService.importContract(results);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ return new ErrorResponseData("导入设备类型列表失败");
+ }
+
+ return ResponseData.success();
+ }
+
+
+ /**
+ * 根据id查详情
+ * @param id
+ * @return
+ */
+ @RequestMapping(value = "/selectById")
+ @ResponseBody
+ public Object detail(Long id) {
+ return ResponseData.success(200,
+ "查询详情成功",
+ contractService.selectById(id));
+ }
+
+
+ /**
+ * 合同下拉接口
+ */
+ @RequestMapping(value = "/getContract")
+ @ResponseBody
+ public Object getContract() {
+ EntityWrapper entityWrapper = new EntityWrapper<>();
+ List contractList = contractService.selectList(entityWrapper);
+ return ResponseData.success(200, "", contractList);
+ }
+}
diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/controller/PaymentsController.java b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/PaymentsController.java
new file mode 100644
index 0000000..dd04612
--- /dev/null
+++ b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/PaymentsController.java
@@ -0,0 +1,134 @@
+package com.casic.missiles.modular.system.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.annotion.BussinessLog;
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.core.util.DateUtil;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.system.model.Payments;
+import com.casic.missiles.modular.system.service.IPaymentsService;
+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.ArrayList;
+import java.util.List;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2020-03-17 11:20:45
+ */
+@Controller
+@RequestMapping("/payments")
+public class PaymentsController extends BaseController {
+
+
+ @Autowired
+ private IPaymentsService paymentsService;
+
+
+ /**
+ * 获取列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(String proId) {
+ EntityWrapper entityWrapper = new EntityWrapper<>();
+ entityWrapper.eq("pro_id", proId);
+ entityWrapper.orderBy("reorder");
+ List paymentsList = paymentsService.selectList(entityWrapper);
+ paymentsList.forEach(payments -> {
+ payments.setPaytimeFmt(DateUtil.format(payments.getPaytime(), "yyyy-MM-dd HH:mm:ss"));
+ });
+ return ResponseData.success(paymentsList);
+ }
+
+ /**
+ * 获取分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(String condition) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper query = new EntityWrapper<>();
+ page = paymentsService.selectPage(page, query);
+ return super.packForBT(page);
+ }
+
+ /**
+ * 新增
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ @BussinessLog(value = "新增付款流程信息")
+ public Object add(Payments payments, String paytimeFmt) {
+ if (paymentsService.validate(payments.getProId(),
+ payments.getMoney(),payments.getReorder())) {
+ return ResponseData.error("付款金额已超过合同额!");
+ }
+ EntityWrapper entityWrapper = new EntityWrapper<>();
+ entityWrapper.eq("pro_id", payments.getProId());
+ entityWrapper.eq("reorder", payments.getReorder());
+ paymentsService.delete(entityWrapper);
+ payments.setPaytime(ToolUtil.isNotEmpty(paytimeFmt) ?
+ DateUtil.parseTime(paytimeFmt) : null);
+ paymentsService.insert(payments);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam String paymentsId) {
+ paymentsService.deleteById(paymentsId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("paymentsIds") List paymentsIds) {
+ paymentsService.deleteBatchIds(paymentsIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ @BussinessLog(value = "编辑报销流程信息")
+ public Object update(Payments payments, String paytimeFmt) {
+ if (paymentsService.validate(payments.getProId(), payments.getMoney(),payments.getReorder())) {
+ return ResponseData.error("付款金额已超过合同额!");
+ }
+ payments.setPaytime(ToolUtil.isNotEmpty(paytimeFmt) ?
+ DateUtil.parseTime(paytimeFmt) : null);
+ paymentsService.updateById(payments);
+ return ResponseData.success();
+ }
+
+// /**
+// * casic_device详情
+// */
+// @RequestMapping(value = "/detail/{paymentsId}")
+// @ResponseBody
+// public Object detail(@PathVariable("paymentsId") String paymentsId) {
+// ResultData resultData = new ResultData();
+// resultData.setCode(200);
+// resultData.setMessage("查询详情成功");
+// resultData.setData(paymentsService.selectById(paymentsId));
+// return resultData;
+// }
+}
diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/controller/ProductDeviceTypeController.java b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/ProductDeviceTypeController.java
new file mode 100644
index 0000000..b24efa2
--- /dev/null
+++ b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/ProductDeviceTypeController.java
@@ -0,0 +1,314 @@
+package com.casic.missiles.modular.system.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.ErrorResponseData;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.base.response.SuccessResponseData;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.system.dict.DeviceTypeDict;
+import com.casic.missiles.modular.system.dto.DeviceTypeDto;
+import com.casic.missiles.modular.system.model.Dept;
+import com.casic.missiles.modular.system.model.ProductDeviceType;
+import com.casic.missiles.modular.system.model.Account;
+import com.casic.missiles.modular.system.model.User;
+import com.casic.missiles.modular.system.service.IProductDeviceTypeService;
+import com.casic.missiles.modular.system.util.FileUtil;
+import org.apache.commons.lang.StringUtils;
+import org.hswebframework.expands.office.excel.ExcelIO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.*;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import static com.casic.missiles.modular.system.dict.DeviceTypeDict.DEVICETYPE_ADD_LOG_KEY;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2020-03-10 17:01:30
+ */
+@Controller
+@RequestMapping("/deviceType")
+public class ProductDeviceTypeController extends BaseController {
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ @Resource
+ private IProductDeviceTypeService productDeviceTypeService;
+
+ @Value("${casic.file-upload-path}")
+ private String uploadPath;
+
+ @Value("${casic.file-download-path}")
+ private String downloadPath;
+
+ /**
+ * 获取列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(String condition) {
+ return productDeviceTypeService.selectList(null);
+ }
+
+ /**
+ * 获取分页列表
+ */
+ @RequestMapping(value = "/pageList", method = RequestMethod.GET)
+ @ResponseBody
+ public Object listPage(String keyword1, String keyword2, String keyword3) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper entityWrapper = new EntityWrapper<>();
+// DataScope dataScope = permissionService.getCurrUserDataScope();
+// List list = productDeviceTypeService.selectPageDataScope(dataScope, page,
+// keyword1, keyword2, keyword3);
+ if (ToolUtil.isNotEmpty(keyword1)) {
+ entityWrapper.like("product_name", keyword1);
+ }
+ if (ToolUtil.isNotEmpty(keyword2)) {
+ entityWrapper.eq("status", keyword2);
+ }
+ if (ToolUtil.isNotEmpty(keyword3)) {
+ entityWrapper.like("principal", keyword3);
+ }
+ page = productDeviceTypeService.selectPage(page, entityWrapper);
+ List productDeviceTypeList = page.getRecords();
+ productDeviceTypeList.forEach(productDeviceType -> {
+ productDeviceType.setStatusFmt(permissionService.getDictNameByCode("devtypeStatus",
+ productDeviceType.getStatus().toString()));
+ });
+ page.setRecords(productDeviceTypeList);
+ return new SuccessResponseData(super.packForBT(page));
+ }
+
+ /**
+ * 新增
+ */
+ @RequestMapping(value = "/add", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "增加设备类型信息", key = DEVICETYPE_ADD_LOG_KEY, dict = DeviceTypeDict.class)
+ public Object add(ProductDeviceType productDeviceType, MultipartFile quotaSummaryFile) throws IOException {
+ EntityWrapper wrapper = new EntityWrapper<>();
+ wrapper.eq("product_name", productDeviceType.getProductName());
+ wrapper.eq("product_model", productDeviceType.getProductModel());
+ wrapper.eq("machine_version", productDeviceType.getMachineVersion());
+ productDeviceTypeService.delete(wrapper);
+ //上传汇总表
+ if (null != quotaSummaryFile &&
+ StringUtils.isNotBlank(quotaSummaryFile.getOriginalFilename())) {
+ String path = uploadPath + quotaSummaryFile.getOriginalFilename();
+ File newFile = FileUtil.createFile(path);
+ quotaSummaryFile.transferTo(newFile);
+ productDeviceType.setQuotaSummary(path);
+ }
+ productDeviceTypeService.insert(productDeviceType);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam String productDeviceTypeId) {
+ productDeviceTypeService.deleteById(productDeviceTypeId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("productDeviceTypeIds") List productDeviceTypeIds) {
+ productDeviceTypeService.deleteBatchIds(productDeviceTypeIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改
+ */
+ @RequestMapping(value = "/mod", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "修改设备类型信息", key = DEVICETYPE_ADD_LOG_KEY, dict = DeviceTypeDict.class)
+ public Object update(ProductDeviceType productDeviceType, MultipartFile quotaSummaryFile) throws IOException {
+ //上传汇总表
+ if (null != quotaSummaryFile
+ && ToolUtil.isNotEmpty(quotaSummaryFile.getOriginalFilename())) {
+ String path = uploadPath + quotaSummaryFile.getOriginalFilename();
+ File newFile = new File(path);
+ quotaSummaryFile.transferTo(newFile);
+ productDeviceType.setQuotaSummary(path);
+ }
+ productDeviceTypeService.updateById(productDeviceType);
+ return ResponseData.success();
+ }
+
+
+ /**
+ * 批量导入设备类型列表
+ */
+ @RequestMapping(value = "/imp", method = RequestMethod.POST)
+ @ResponseBody
+ public Object batchImport(@RequestParam("fs") MultipartFile fs) {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ mapper.put("产品名称", "productName");
+ mapper.put("型号", "productModel");
+ mapper.put("整机版本号", "machineVersion");
+ mapper.put("硬件版本号", "hardwareVersion");
+ mapper.put("软件版本号", "softwareVersion");
+ mapper.put("设计归档", "designArchive");
+ mapper.put("批产归档", "batchFiling");
+ mapper.put("状态", "statusFmt");
+// mapper.put("所属组织", "deptid");
+ mapper.put("参数", "kpi");
+ mapper.put("备注", "descn");
+ try {
+ try (InputStream in = fs.getInputStream()) {
+ ExcelIO.read(in, mapper, ProductDeviceType.class, (row) -> {
+ //仅读取第一个sheet
+ if (row.getSheet() == 0) {
+ if (row.getResult() != null) {
+ ProductDeviceType deviceType = row.getResult();
+ //过滤设备编号及设备名称都为空的数据 (判定为空行不导入该行)
+ if (!ToolUtil.isAllEmpty(deviceType.getProductName(), deviceType.getMachineVersion())) {
+ deviceType.setStatus("在产".equals(deviceType.getStatusFmt()) ? 1 : 0);
+ results.add(deviceType);
+ }
+ }
+ } else {
+ row.shutdown();
+ }
+ });
+
+ productDeviceTypeService.importDeviceType(results);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ return new ErrorResponseData("导入设备类型列表失败");
+ }
+
+ return ResponseData.success();
+ }
+
+
+ /**
+ * 导出设备类型列表
+ */
+ @RequestMapping(value = "/listExp")
+ public void reportExport(HttpServletRequest httpServletRequest,
+ HttpServletResponse httpServletResponse) throws IOException {
+ String keyword1 = httpServletRequest.getParameter("keyword1");
+ String keyword2 = httpServletRequest.getParameter("keyword2");
+ String keyword3 = httpServletRequest.getParameter("keyword3");
+ List list = productDeviceTypeService.reportExport(keyword1, keyword2, keyword3);
+ FileInputStream fileInputStream = new FileInputStream(downloadPath +
+ (list != null && list.size() > 0 ? "deviceTypeList.xlsx" : "contentNull.xlsx"));
+ try {
+ httpServletResponse.setContentType("application/octet-stream");
+ httpServletResponse.addHeader("Content-Disposition", " attachment;filename=" + "deviceTypeList.xlsx");
+ Map var = new HashMap<>();
+ var.put("list", list);
+ ExcelIO.writeTemplate(fileInputStream, httpServletResponse.getOutputStream(), var);
+ } catch (IOException e) {
+ e.printStackTrace();
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ httpServletResponse.getOutputStream().flush();
+ httpServletResponse.getOutputStream().close();
+ fileInputStream.close();
+ }
+ }
+
+
+ /**
+ * 参数详情
+ */
+ @RequestMapping(value = "/kpiDetail")
+ @ResponseBody
+ public Object detail(long id) {
+ return ResponseData.success(200,
+ "查询参数详情成功",
+ productDeviceTypeService.selectById(id));
+ }
+
+ /**
+ * 负责人下拉接口
+ */
+ @RequestMapping(value = "/getUser")
+ @ResponseBody
+ public Object detail() {
+ List userList = permissionService.getAllUsers("");
+ return ResponseData.success(200, "", userList);
+ }
+
+
+ /**
+ * 组织机构接口
+ */
+ @RequestMapping(value = "/getDept")
+ @ResponseBody
+ public Object getDept() {
+ List depts = permissionService.getAllDepts("");
+ return ResponseData.success(200, "", depts);
+ }
+
+ /***
+ *汇总表下载
+ * @param response
+ * @param quotaSummary
+ * @throws FileNotFoundException
+ * @throws UnsupportedEncodingException
+ */
+ @GetMapping("/summaryDownload")
+ public void downloadLocal(HttpServletResponse response, String quotaSummary) throws IOException {
+ if (ToolUtil.isNotEmpty(quotaSummary)) {
+ FileUtil.downloadLocalFile(response, quotaSummary, "定额汇总表");
+ }
+ }
+
+
+ /**
+ * 在产设备列表下拉接口
+ */
+ @RequestMapping(value = "/deviceType")
+ @ResponseBody
+ public Object getDeviceTypeList() {
+
+ List deviceTypes = productDeviceTypeService.selectDeviceTypeList();
+ return ResponseData.success(200, "", deviceTypes);
+ }
+
+ /**
+ * 获取在产设备型号下拉接口
+ */
+ @RequestMapping(value = "/getModel")
+ @ResponseBody
+ public Object getModel(String devtypeName) {
+ EntityWrapper entityWrapper = new EntityWrapper<>();
+ entityWrapper.eq("status", 1);
+ entityWrapper.eq("product_name", devtypeName);
+ List deviceTypes = productDeviceTypeService.selectList(entityWrapper);
+ return ResponseData.success(200, "", deviceTypes);
+ }
+}
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..967cb75
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,5 @@
+.idea/
+**/target/**
+logs/
+casic-web/src/test
+*.iml
\ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..21fa0d0
--- /dev/null
+++ b/README.md
@@ -0,0 +1,18 @@
+# 批产设备管理系统 V1.0.0
+
+[^_^]: # (Talk is cheap,Show me the code!)
+
+## 介绍
+基于SpringBoot,致力于做更简洁的后台管理系统,整合springboot + shiro + mybatis-plus + !
+基于casic代码简洁,注释丰富,上手容易,同时包含多基础模块(用户管理,角色管理,部门管理,字典管理等),
+可以直接作为一个后台管理系统的脚手架! 2020目标 `更简洁`,`更规范`!
+
+
+## 其他
+>* [git地址](http://192.168.0.203:8080/gitbucket/git/root/product_device.git)
+>* [本地免登地址](http://localhost:50008/route/mockToken)
+
+
+
+
+
diff --git a/casic-device/pom.xml b/casic-device/pom.xml
new file mode 100644
index 0000000..f5b11d5
--- /dev/null
+++ b/casic-device/pom.xml
@@ -0,0 +1,85 @@
+
+
+ 4.0.0
+
+ com.casic
+ casic-product-device
+ 1.0.0-SNAPSHOT
+ ../pom.xml
+
+
+ casic-device
+ ${pro.version}
+ jar
+ casic-device
+ 设备批产
+
+
+
+
+ com.casic
+ casic-core
+ ${casic.version}
+
+
+ com.casic
+ casic-admin-support
+ ${casic.version}
+
+
+ com.casic
+ casic-export-support
+ 1.0.0-SNAPSHOT
+
+
+
+ com.casic
+ casic-admin-support
+ ${casic.version}
+
+
+
+ org.springframework.boot
+ spring-boot-starter-aop
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+ org.springframework.boot
+ spring-boot-starter-validation
+
+
+ org.springframework.boot
+ spring-boot-starter-websocket
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ commons-io
+ commons-io
+
+
+
+ org.apache.commons
+ commons-lang3
+
+
+
+
+
+
+ src/main/java
+
+ **/*.xml
+
+
+
+
+
diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/DeviceController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/DeviceController.java
new file mode 100644
index 0000000..793d484
--- /dev/null
+++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/DeviceController.java
@@ -0,0 +1,95 @@
+package com.casic.missiles.modular.device.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.base.response.SuccessResponseData;
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.modular.device.service.IDeviceService;
+import com.casic.missiles.modular.system.model.Device;
+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-03-27 15:39:05
+ */
+@Controller
+@RequestMapping("/device")
+public class DeviceController extends BaseController {
+
+
+ @Autowired
+ private IDeviceService deviceService;
+
+
+ /**
+ * 获取设备列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(String condition) {
+ return deviceService.selectList(null);
+ }
+
+ /**
+ * 获取设备分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(String condition) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper query = new EntityWrapper<>();
+ page = deviceService.selectPage(page,query);
+ return new SuccessResponseData(super.packForBT(page));
+ }
+ /**
+ * 新增设备
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(Device device) {
+ deviceService.insert(device);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除设备
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam String deviceId) {
+ deviceService.deleteById(deviceId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("deviceIds") List deviceIds) {
+ deviceService.deleteBatchIds(deviceIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改设备
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(Device device) {
+ deviceService.updateById(device);
+ return ResponseData.success();
+ }
+
+
+}
diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IDeviceService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IDeviceService.java
new file mode 100644
index 0000000..cdfd69f
--- /dev/null
+++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IDeviceService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.device.service;
+
+import com.casic.missiles.modular.system.model.Device;
+import com.baomidou.mybatisplus.service.IService;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author stylefeng123
+ * @since 2020-03-27
+ */
+public interface IDeviceService extends IService {
+
+}
diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceServiceImpl.java
new file mode 100644
index 0000000..77f41b1
--- /dev/null
+++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.device.service.impl;
+
+import com.casic.missiles.modular.system.model.Device;
+import com.casic.missiles.modular.system.dao.DeviceMapper;
+import com.casic.missiles.modular.device.service.IDeviceService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author stylefeng123
+ * @since 2020-03-27
+ */
+@Service
+public class DeviceServiceImpl extends ServiceImpl implements IDeviceService {
+
+}
diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/controller/ContractController.java b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/ContractController.java
new file mode 100644
index 0000000..ecd033b
--- /dev/null
+++ b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/ContractController.java
@@ -0,0 +1,252 @@
+package com.casic.missiles.modular.system.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.ErrorResponseData;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.base.response.SuccessResponseData;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.system.dict.ContractDict;
+import com.casic.missiles.modular.system.model.Contract;
+import com.casic.missiles.modular.system.model.Account;
+import com.casic.missiles.modular.system.service.IContractService;
+import com.casic.missiles.modular.system.service.IAccountService;
+import org.hswebframework.expands.office.excel.ExcelIO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import static com.casic.missiles.modular.system.dict.ContractDict.CONTRACT_ADD_LOG_KEY;
+
+/**
+ * casic_device控制器
+ *
+ * @author dev
+ * @Date 2020-03-17 11:18:50
+ */
+@Controller
+@RequestMapping("/contract")
+public class ContractController extends BaseController {
+
+
+ @Autowired
+ private IContractService contractService;
+ @Autowired
+ private IAccountService userService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ @Value("${casic.file-download-path}")
+ private String downloadPath;
+
+ /**
+ * 获取列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(String condition) {
+ return contractService.selectList(null);
+ }
+
+ /**
+ * 获取分页列表
+ */
+ @RequestMapping(value = "/pageList")
+ @ResponseBody
+ public Object listPage(String keyword1,String keyword2,String keyword3) {
+ Page page = new PageFactory().defaultPage();
+ List contractList = contractService.selectPageList(page,keyword1, keyword2, keyword3);
+ page.setRecords(contractList);
+ return new SuccessResponseData(super.packForBT(page));
+ }
+ /**
+ * 新增
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ @BussinessLog(value = "增加合同信息", key = CONTRACT_ADD_LOG_KEY, dict = ContractDict.class)
+ public Object add(Contract contract) {
+ //合同编号一样,则覆盖
+ EntityWrapper contractEntityWrapper = new EntityWrapper<>();
+ contractEntityWrapper.eq("contract_number",contract.getContractNumber());
+ contractService.delete(contractEntityWrapper);
+ Account user=userService.findUserByName(contract.getPrincipal());
+ contract.setDeptid(null!=user&&user.getId()!=null?user.getDeptid().toString():"");
+ contractService.insert(contract);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam String contractId) {
+ contractService.deleteById(contractId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("contractIds") List contractIds) {
+ contractService.deleteBatchIds(contractIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改基本信息
+ */
+ @RequestMapping(value = "/baseUpdate")
+ @ResponseBody
+ @BussinessLog(value = "编辑合同信息", key = CONTRACT_ADD_LOG_KEY, dict = ContractDict.class)
+ public Object baseUpdate(Contract contract) {
+ Contract contract1=contractService.selectById(contract.getId());
+ contract1.setContractNumber(contract.getContractNumber());
+ contract1.setContractName(contract.getContractName());
+ contract1.setContractAmount(contract.getContractAmount());
+ contract1.setContractContent(contract.getContractContent());
+ contract1.setContractFactory(contract.getContractFactory());
+ contract1.setPrincipal(contract.getPrincipal());
+ Account user=userService.findUserByName(contract.getPrincipal());
+ contract1.setDeptid(null!=user&&user.getId()!=null?user.getDeptid().toString():"");
+ contractService.updateById(contract1);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改内网流程
+ */
+ @RequestMapping(value = "/flowUpdate")
+ @ResponseBody
+ @BussinessLog(value = "修改内网流程信息")
+ public Object update(Contract contract) {
+ Contract contract1=contractService.selectById(contract.getId());
+ contract1.setExternalCheckApply(contract.getExternalCheckApply());
+ contract1.setExternalContractApply(contract.getExternalContractApply());
+ contract1.setExternalProjectApply(contract.getExternalProjectApply());
+ contractService.updateById(contract1);
+ return ResponseData.success();
+ }
+
+
+ /**
+ * 导出合同列表
+ */
+ @RequestMapping(value = "/listExp")
+ public void reportExport(HttpServletRequest httpServletRequest
+ , HttpServletResponse httpServletResponse) throws IOException {
+ String keyword1 = httpServletRequest.getParameter("keyword1");
+ String keyword2 = httpServletRequest.getParameter("keyword2");
+ String keyword3 = httpServletRequest.getParameter("keyword3");
+ List list = contractService.reportExport(keyword1, keyword2, keyword3);
+ FileInputStream fileInputStream = new FileInputStream(downloadPath +
+ (list!=null&&list.size()>0?"contractList.xlsx":"contentNull.xlsx"));
+ try {
+ httpServletResponse.setContentType("application/octet-stream");
+ httpServletResponse.addHeader("Content-Disposition", " attachment;filename=" + "contractList.xlsx");
+ Map var = new HashMap<>();
+ var.put("list", list);
+ ExcelIO.writeTemplate(fileInputStream, httpServletResponse.getOutputStream(), var);
+ } catch (IOException e) {
+ e.printStackTrace();
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ httpServletResponse.getOutputStream().flush();
+ httpServletResponse.getOutputStream().close();
+ fileInputStream.close();
+ }
+ }
+
+ /**
+ * 批量导入合同列表
+ */
+ @RequestMapping(value = "/imp", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "批量导入合同信息")
+ public Object batchImport(@RequestParam("fs") MultipartFile fs) {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ mapper.put("合同编号", "contractNumber");
+ mapper.put("合同名称", "contractName");
+ mapper.put("合同乙方", "contractFactory");
+ mapper.put("主要内容概述", "contractContent");
+ mapper.put("合同金额(万元)", "contractAmount");
+ mapper.put("负责人", "principal");
+ try {
+ try (InputStream in = fs.getInputStream()) {
+ ExcelIO.read(in, mapper, Contract.class, (row) -> {
+ //仅读取第一个sheet
+ if (row.getSheet() == 0) {
+ if (row.getResult() != null) {
+ Contract contract = row.getResult();
+
+ if (!ToolUtil.isAllEmpty(contract.getContractNumber(), contract.getContractName())) {
+ results.add(contract);
+ }
+ }
+ } else {
+ row.shutdown();
+ }
+ });
+
+ contractService.importContract(results);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ return new ErrorResponseData("导入设备类型列表失败");
+ }
+
+ return ResponseData.success();
+ }
+
+
+ /**
+ * 根据id查详情
+ * @param id
+ * @return
+ */
+ @RequestMapping(value = "/selectById")
+ @ResponseBody
+ public Object detail(Long id) {
+ return ResponseData.success(200,
+ "查询详情成功",
+ contractService.selectById(id));
+ }
+
+
+ /**
+ * 合同下拉接口
+ */
+ @RequestMapping(value = "/getContract")
+ @ResponseBody
+ public Object getContract() {
+ EntityWrapper entityWrapper = new EntityWrapper<>();
+ List contractList = contractService.selectList(entityWrapper);
+ return ResponseData.success(200, "", contractList);
+ }
+}
diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/controller/PaymentsController.java b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/PaymentsController.java
new file mode 100644
index 0000000..dd04612
--- /dev/null
+++ b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/PaymentsController.java
@@ -0,0 +1,134 @@
+package com.casic.missiles.modular.system.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.annotion.BussinessLog;
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.core.util.DateUtil;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.system.model.Payments;
+import com.casic.missiles.modular.system.service.IPaymentsService;
+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.ArrayList;
+import java.util.List;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2020-03-17 11:20:45
+ */
+@Controller
+@RequestMapping("/payments")
+public class PaymentsController extends BaseController {
+
+
+ @Autowired
+ private IPaymentsService paymentsService;
+
+
+ /**
+ * 获取列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(String proId) {
+ EntityWrapper entityWrapper = new EntityWrapper<>();
+ entityWrapper.eq("pro_id", proId);
+ entityWrapper.orderBy("reorder");
+ List paymentsList = paymentsService.selectList(entityWrapper);
+ paymentsList.forEach(payments -> {
+ payments.setPaytimeFmt(DateUtil.format(payments.getPaytime(), "yyyy-MM-dd HH:mm:ss"));
+ });
+ return ResponseData.success(paymentsList);
+ }
+
+ /**
+ * 获取分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(String condition) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper query = new EntityWrapper<>();
+ page = paymentsService.selectPage(page, query);
+ return super.packForBT(page);
+ }
+
+ /**
+ * 新增
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ @BussinessLog(value = "新增付款流程信息")
+ public Object add(Payments payments, String paytimeFmt) {
+ if (paymentsService.validate(payments.getProId(),
+ payments.getMoney(),payments.getReorder())) {
+ return ResponseData.error("付款金额已超过合同额!");
+ }
+ EntityWrapper entityWrapper = new EntityWrapper<>();
+ entityWrapper.eq("pro_id", payments.getProId());
+ entityWrapper.eq("reorder", payments.getReorder());
+ paymentsService.delete(entityWrapper);
+ payments.setPaytime(ToolUtil.isNotEmpty(paytimeFmt) ?
+ DateUtil.parseTime(paytimeFmt) : null);
+ paymentsService.insert(payments);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam String paymentsId) {
+ paymentsService.deleteById(paymentsId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("paymentsIds") List paymentsIds) {
+ paymentsService.deleteBatchIds(paymentsIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ @BussinessLog(value = "编辑报销流程信息")
+ public Object update(Payments payments, String paytimeFmt) {
+ if (paymentsService.validate(payments.getProId(), payments.getMoney(),payments.getReorder())) {
+ return ResponseData.error("付款金额已超过合同额!");
+ }
+ payments.setPaytime(ToolUtil.isNotEmpty(paytimeFmt) ?
+ DateUtil.parseTime(paytimeFmt) : null);
+ paymentsService.updateById(payments);
+ return ResponseData.success();
+ }
+
+// /**
+// * casic_device详情
+// */
+// @RequestMapping(value = "/detail/{paymentsId}")
+// @ResponseBody
+// public Object detail(@PathVariable("paymentsId") String paymentsId) {
+// ResultData resultData = new ResultData();
+// resultData.setCode(200);
+// resultData.setMessage("查询详情成功");
+// resultData.setData(paymentsService.selectById(paymentsId));
+// return resultData;
+// }
+}
diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/controller/ProductDeviceTypeController.java b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/ProductDeviceTypeController.java
new file mode 100644
index 0000000..b24efa2
--- /dev/null
+++ b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/ProductDeviceTypeController.java
@@ -0,0 +1,314 @@
+package com.casic.missiles.modular.system.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.ErrorResponseData;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.base.response.SuccessResponseData;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.system.dict.DeviceTypeDict;
+import com.casic.missiles.modular.system.dto.DeviceTypeDto;
+import com.casic.missiles.modular.system.model.Dept;
+import com.casic.missiles.modular.system.model.ProductDeviceType;
+import com.casic.missiles.modular.system.model.Account;
+import com.casic.missiles.modular.system.model.User;
+import com.casic.missiles.modular.system.service.IProductDeviceTypeService;
+import com.casic.missiles.modular.system.util.FileUtil;
+import org.apache.commons.lang.StringUtils;
+import org.hswebframework.expands.office.excel.ExcelIO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.*;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import static com.casic.missiles.modular.system.dict.DeviceTypeDict.DEVICETYPE_ADD_LOG_KEY;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2020-03-10 17:01:30
+ */
+@Controller
+@RequestMapping("/deviceType")
+public class ProductDeviceTypeController extends BaseController {
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ @Resource
+ private IProductDeviceTypeService productDeviceTypeService;
+
+ @Value("${casic.file-upload-path}")
+ private String uploadPath;
+
+ @Value("${casic.file-download-path}")
+ private String downloadPath;
+
+ /**
+ * 获取列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(String condition) {
+ return productDeviceTypeService.selectList(null);
+ }
+
+ /**
+ * 获取分页列表
+ */
+ @RequestMapping(value = "/pageList", method = RequestMethod.GET)
+ @ResponseBody
+ public Object listPage(String keyword1, String keyword2, String keyword3) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper entityWrapper = new EntityWrapper<>();
+// DataScope dataScope = permissionService.getCurrUserDataScope();
+// List list = productDeviceTypeService.selectPageDataScope(dataScope, page,
+// keyword1, keyword2, keyword3);
+ if (ToolUtil.isNotEmpty(keyword1)) {
+ entityWrapper.like("product_name", keyword1);
+ }
+ if (ToolUtil.isNotEmpty(keyword2)) {
+ entityWrapper.eq("status", keyword2);
+ }
+ if (ToolUtil.isNotEmpty(keyword3)) {
+ entityWrapper.like("principal", keyword3);
+ }
+ page = productDeviceTypeService.selectPage(page, entityWrapper);
+ List productDeviceTypeList = page.getRecords();
+ productDeviceTypeList.forEach(productDeviceType -> {
+ productDeviceType.setStatusFmt(permissionService.getDictNameByCode("devtypeStatus",
+ productDeviceType.getStatus().toString()));
+ });
+ page.setRecords(productDeviceTypeList);
+ return new SuccessResponseData(super.packForBT(page));
+ }
+
+ /**
+ * 新增
+ */
+ @RequestMapping(value = "/add", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "增加设备类型信息", key = DEVICETYPE_ADD_LOG_KEY, dict = DeviceTypeDict.class)
+ public Object add(ProductDeviceType productDeviceType, MultipartFile quotaSummaryFile) throws IOException {
+ EntityWrapper wrapper = new EntityWrapper<>();
+ wrapper.eq("product_name", productDeviceType.getProductName());
+ wrapper.eq("product_model", productDeviceType.getProductModel());
+ wrapper.eq("machine_version", productDeviceType.getMachineVersion());
+ productDeviceTypeService.delete(wrapper);
+ //上传汇总表
+ if (null != quotaSummaryFile &&
+ StringUtils.isNotBlank(quotaSummaryFile.getOriginalFilename())) {
+ String path = uploadPath + quotaSummaryFile.getOriginalFilename();
+ File newFile = FileUtil.createFile(path);
+ quotaSummaryFile.transferTo(newFile);
+ productDeviceType.setQuotaSummary(path);
+ }
+ productDeviceTypeService.insert(productDeviceType);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam String productDeviceTypeId) {
+ productDeviceTypeService.deleteById(productDeviceTypeId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("productDeviceTypeIds") List productDeviceTypeIds) {
+ productDeviceTypeService.deleteBatchIds(productDeviceTypeIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改
+ */
+ @RequestMapping(value = "/mod", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "修改设备类型信息", key = DEVICETYPE_ADD_LOG_KEY, dict = DeviceTypeDict.class)
+ public Object update(ProductDeviceType productDeviceType, MultipartFile quotaSummaryFile) throws IOException {
+ //上传汇总表
+ if (null != quotaSummaryFile
+ && ToolUtil.isNotEmpty(quotaSummaryFile.getOriginalFilename())) {
+ String path = uploadPath + quotaSummaryFile.getOriginalFilename();
+ File newFile = new File(path);
+ quotaSummaryFile.transferTo(newFile);
+ productDeviceType.setQuotaSummary(path);
+ }
+ productDeviceTypeService.updateById(productDeviceType);
+ return ResponseData.success();
+ }
+
+
+ /**
+ * 批量导入设备类型列表
+ */
+ @RequestMapping(value = "/imp", method = RequestMethod.POST)
+ @ResponseBody
+ public Object batchImport(@RequestParam("fs") MultipartFile fs) {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ mapper.put("产品名称", "productName");
+ mapper.put("型号", "productModel");
+ mapper.put("整机版本号", "machineVersion");
+ mapper.put("硬件版本号", "hardwareVersion");
+ mapper.put("软件版本号", "softwareVersion");
+ mapper.put("设计归档", "designArchive");
+ mapper.put("批产归档", "batchFiling");
+ mapper.put("状态", "statusFmt");
+// mapper.put("所属组织", "deptid");
+ mapper.put("参数", "kpi");
+ mapper.put("备注", "descn");
+ try {
+ try (InputStream in = fs.getInputStream()) {
+ ExcelIO.read(in, mapper, ProductDeviceType.class, (row) -> {
+ //仅读取第一个sheet
+ if (row.getSheet() == 0) {
+ if (row.getResult() != null) {
+ ProductDeviceType deviceType = row.getResult();
+ //过滤设备编号及设备名称都为空的数据 (判定为空行不导入该行)
+ if (!ToolUtil.isAllEmpty(deviceType.getProductName(), deviceType.getMachineVersion())) {
+ deviceType.setStatus("在产".equals(deviceType.getStatusFmt()) ? 1 : 0);
+ results.add(deviceType);
+ }
+ }
+ } else {
+ row.shutdown();
+ }
+ });
+
+ productDeviceTypeService.importDeviceType(results);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ return new ErrorResponseData("导入设备类型列表失败");
+ }
+
+ return ResponseData.success();
+ }
+
+
+ /**
+ * 导出设备类型列表
+ */
+ @RequestMapping(value = "/listExp")
+ public void reportExport(HttpServletRequest httpServletRequest,
+ HttpServletResponse httpServletResponse) throws IOException {
+ String keyword1 = httpServletRequest.getParameter("keyword1");
+ String keyword2 = httpServletRequest.getParameter("keyword2");
+ String keyword3 = httpServletRequest.getParameter("keyword3");
+ List list = productDeviceTypeService.reportExport(keyword1, keyword2, keyword3);
+ FileInputStream fileInputStream = new FileInputStream(downloadPath +
+ (list != null && list.size() > 0 ? "deviceTypeList.xlsx" : "contentNull.xlsx"));
+ try {
+ httpServletResponse.setContentType("application/octet-stream");
+ httpServletResponse.addHeader("Content-Disposition", " attachment;filename=" + "deviceTypeList.xlsx");
+ Map var = new HashMap<>();
+ var.put("list", list);
+ ExcelIO.writeTemplate(fileInputStream, httpServletResponse.getOutputStream(), var);
+ } catch (IOException e) {
+ e.printStackTrace();
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ httpServletResponse.getOutputStream().flush();
+ httpServletResponse.getOutputStream().close();
+ fileInputStream.close();
+ }
+ }
+
+
+ /**
+ * 参数详情
+ */
+ @RequestMapping(value = "/kpiDetail")
+ @ResponseBody
+ public Object detail(long id) {
+ return ResponseData.success(200,
+ "查询参数详情成功",
+ productDeviceTypeService.selectById(id));
+ }
+
+ /**
+ * 负责人下拉接口
+ */
+ @RequestMapping(value = "/getUser")
+ @ResponseBody
+ public Object detail() {
+ List userList = permissionService.getAllUsers("");
+ return ResponseData.success(200, "", userList);
+ }
+
+
+ /**
+ * 组织机构接口
+ */
+ @RequestMapping(value = "/getDept")
+ @ResponseBody
+ public Object getDept() {
+ List depts = permissionService.getAllDepts("");
+ return ResponseData.success(200, "", depts);
+ }
+
+ /***
+ *汇总表下载
+ * @param response
+ * @param quotaSummary
+ * @throws FileNotFoundException
+ * @throws UnsupportedEncodingException
+ */
+ @GetMapping("/summaryDownload")
+ public void downloadLocal(HttpServletResponse response, String quotaSummary) throws IOException {
+ if (ToolUtil.isNotEmpty(quotaSummary)) {
+ FileUtil.downloadLocalFile(response, quotaSummary, "定额汇总表");
+ }
+ }
+
+
+ /**
+ * 在产设备列表下拉接口
+ */
+ @RequestMapping(value = "/deviceType")
+ @ResponseBody
+ public Object getDeviceTypeList() {
+
+ List deviceTypes = productDeviceTypeService.selectDeviceTypeList();
+ return ResponseData.success(200, "", deviceTypes);
+ }
+
+ /**
+ * 获取在产设备型号下拉接口
+ */
+ @RequestMapping(value = "/getModel")
+ @ResponseBody
+ public Object getModel(String devtypeName) {
+ EntityWrapper entityWrapper = new EntityWrapper<>();
+ entityWrapper.eq("status", 1);
+ entityWrapper.eq("product_name", devtypeName);
+ List deviceTypes = productDeviceTypeService.selectList(entityWrapper);
+ return ResponseData.success(200, "", deviceTypes);
+ }
+}
diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/controller/ProductFactoryInformationController.java b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/ProductFactoryInformationController.java
new file mode 100644
index 0000000..cea6e46
--- /dev/null
+++ b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/ProductFactoryInformationController.java
@@ -0,0 +1,239 @@
+package com.casic.missiles.modular.system.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.ErrorResponseData;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.base.response.SuccessResponseData;
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.system.model.ProductDeviceType;
+import com.casic.missiles.modular.system.model.ProductFactoryInformation;
+import com.casic.missiles.modular.system.service.IProductFactoryInformationService;
+import com.casic.missiles.modular.system.util.FileUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.hswebframework.expands.office.excel.ExcelIO;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.*;
+import java.net.URLEncoder;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2020-03-10 17:02:24
+ */
+@Controller
+@RequestMapping("/factory")
+public class ProductFactoryInformationController extends BaseController {
+ @Value("${casic.file-upload-path}")
+ private String uploadPath;
+
+ @Value("${casic.file-download-path}")
+ private String downloadPath;
+
+ @Resource
+ private IProductFactoryInformationService productFactoryInformationService;
+
+
+ /**
+ * 获取列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(String condition) {
+ return productFactoryInformationService.selectList(null);
+ }
+
+ /**
+ * 获取分页列表
+ */
+ @RequestMapping(value = "/pageList")
+ @ResponseBody
+ public Object listPage(String keyword1, String keyword2) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper query = new EntityWrapper<>();
+ if (ToolUtil.isNotEmpty(keyword1)) {
+ query.like("name", keyword1);
+ }
+ if (ToolUtil.isNotEmpty(keyword2)) {
+ query.like("producting_device", keyword2);
+ }
+ page = productFactoryInformationService.selectPage(page, query);
+ return new SuccessResponseData(super.packForBT(page));
+ }
+
+ /**
+ * 新增
+ */
+ @RequestMapping(value = "/add", method = RequestMethod.POST)
+ @ResponseBody
+ public Object add(ProductFactoryInformation productFactoryInformation,
+ MultipartFile equipmentFile) throws IOException {
+ //若新增相同的厂家,则删除原来的厂家
+ EntityWrapper wrapper = new EntityWrapper<>();
+ wrapper.eq("name", productFactoryInformation.getName());
+ productFactoryInformationService.delete(wrapper);
+ //上传设备报价表
+ if (ToolUtil.isNotEmpty(equipmentFile) &&
+ ToolUtil.isNotEmpty(equipmentFile.getOriginalFilename())) {
+ String path = uploadPath + equipmentFile.getOriginalFilename();
+ File newFile = FileUtil.createFile(path);
+ equipmentFile.transferTo(newFile);
+ productFactoryInformation.setEquipmentQuotation(path);
+ }
+ productFactoryInformationService.insert(productFactoryInformation);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam String productFactoryInformationId) {
+ productFactoryInformationService.deleteById(productFactoryInformationId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("productFactoryInformationIds") List productFactoryInformationIds) {
+ productFactoryInformationService.deleteBatchIds(productFactoryInformationIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改
+ */
+ @RequestMapping(value = "/mod", method = RequestMethod.POST)
+ @ResponseBody
+ public Object update(ProductFactoryInformation productFactoryInformation,
+ MultipartFile equipmentFile) throws IOException {
+ //上传设备价格表
+ if (null != equipmentFile &&
+ StringUtils.isNotBlank(equipmentFile.getOriginalFilename())) {
+ String path = uploadPath + equipmentFile.getOriginalFilename();
+ File file = FileUtil.createFile(path);
+ equipmentFile.transferTo(file);
+ productFactoryInformation.setEquipmentQuotation(path);
+ }
+ productFactoryInformationService.updateById(productFactoryInformation);
+ return ResponseData.success();
+ }
+
+ /**
+ * 导出厂家列表
+ */
+ @RequestMapping(value = "/listExp")
+ public void reportExport(HttpServletRequest httpServletRequest
+ , HttpServletResponse httpServletResponse) throws IOException {
+ String keyword1 = httpServletRequest.getParameter("keyword1");
+ String keyword2 = httpServletRequest.getParameter("keyword2");
+ List list = productFactoryInformationService.reportExport(keyword1, keyword2);
+ FileInputStream fileInputStream = new FileInputStream(downloadPath +
+ (list != null && list.size() > 0 ? "factoryList.xlsx" : "contentNull.xlsx"));
+ try {
+ httpServletResponse.setContentType("application/octet-stream");
+ httpServletResponse.addHeader("Content-Disposition", " attachment;filename=" + "factoryList.xlsx");
+ Map var = new HashMap<>();
+ var.put("list", list);
+ ExcelIO.writeTemplate(fileInputStream, httpServletResponse.getOutputStream(), var);
+ } catch (IOException e) {
+ e.printStackTrace();
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ httpServletResponse.getOutputStream().flush();
+ httpServletResponse.getOutputStream().close();
+ fileInputStream.close();
+ }
+ }
+
+ /***
+ *设备报价表下载
+ * @param response
+ * @param equipmentQuotation
+ * @throws FileNotFoundException
+ * @throws UnsupportedEncodingException
+ */
+ @RequestMapping("/priceFileDownload")
+ public void downloadLocal(HttpServletResponse response, String equipmentQuotation) throws IOException {
+ if (ToolUtil.isNotEmpty(equipmentQuotation)) {
+ FileUtil.downloadLocalFile(response, equipmentQuotation, "设备价格表");
+ }
+ }
+
+
+ /**
+ * 批量导入厂家信息
+ */
+ @RequestMapping(value = "/imp", method = RequestMethod.POST)
+ @ResponseBody
+ public Object batchImport(@RequestParam("fs") MultipartFile fs) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ mapper.put("厂家名称", "name");
+ mapper.put("厂家联系人", "personName");
+ mapper.put("地址", "address");
+ mapper.put("电话", "phone");
+ mapper.put("开户行", "bank");
+ mapper.put("税号", "taxNumber");
+ mapper.put("在产设备", "productingDevice");
+ try {
+ try (InputStream in = fs.getInputStream()) {
+ ExcelIO.read(in, mapper, ProductFactoryInformation.class, (row) -> {
+ //仅读取第一个sheet
+ if (row.getSheet() == 0) {
+ if (row.getResult() != null) {
+ ProductFactoryInformation productFactoryInformation = row.getResult();
+ //过滤厂家名称为空的行
+ if (ToolUtil.isNotEmpty(productFactoryInformation.getName())) {
+ results.add(productFactoryInformation);
+ }
+ }
+ } else {
+ row.shutdown();
+ }
+ });
+ productFactoryInformationService.importDeviceType(results);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ return new ErrorResponseData("导入设备类型列表失败");
+ }
+
+ return ResponseData.success();
+ }
+
+ /**
+ * 厂家下拉接口
+ */
+ @RequestMapping(value = "/getFactory")
+ @ResponseBody
+ public Object getFactory() {
+ List factoryInformations =
+ productFactoryInformationService.selectList(null);
+ return ResponseData.success(200, "", factoryInformations);
+ }
+}
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..967cb75
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,5 @@
+.idea/
+**/target/**
+logs/
+casic-web/src/test
+*.iml
\ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..21fa0d0
--- /dev/null
+++ b/README.md
@@ -0,0 +1,18 @@
+# 批产设备管理系统 V1.0.0
+
+[^_^]: # (Talk is cheap,Show me the code!)
+
+## 介绍
+基于SpringBoot,致力于做更简洁的后台管理系统,整合springboot + shiro + mybatis-plus + !
+基于casic代码简洁,注释丰富,上手容易,同时包含多基础模块(用户管理,角色管理,部门管理,字典管理等),
+可以直接作为一个后台管理系统的脚手架! 2020目标 `更简洁`,`更规范`!
+
+
+## 其他
+>* [git地址](http://192.168.0.203:8080/gitbucket/git/root/product_device.git)
+>* [本地免登地址](http://localhost:50008/route/mockToken)
+
+
+
+
+
diff --git a/casic-device/pom.xml b/casic-device/pom.xml
new file mode 100644
index 0000000..f5b11d5
--- /dev/null
+++ b/casic-device/pom.xml
@@ -0,0 +1,85 @@
+
+
+ 4.0.0
+
+ com.casic
+ casic-product-device
+ 1.0.0-SNAPSHOT
+ ../pom.xml
+
+
+ casic-device
+ ${pro.version}
+ jar
+ casic-device
+ 设备批产
+
+
+
+
+ com.casic
+ casic-core
+ ${casic.version}
+
+
+ com.casic
+ casic-admin-support
+ ${casic.version}
+
+
+ com.casic
+ casic-export-support
+ 1.0.0-SNAPSHOT
+
+
+
+ com.casic
+ casic-admin-support
+ ${casic.version}
+
+
+
+ org.springframework.boot
+ spring-boot-starter-aop
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+ org.springframework.boot
+ spring-boot-starter-validation
+
+
+ org.springframework.boot
+ spring-boot-starter-websocket
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ commons-io
+ commons-io
+
+
+
+ org.apache.commons
+ commons-lang3
+
+
+
+
+
+
+ src/main/java
+
+ **/*.xml
+
+
+
+
+
diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/DeviceController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/DeviceController.java
new file mode 100644
index 0000000..793d484
--- /dev/null
+++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/DeviceController.java
@@ -0,0 +1,95 @@
+package com.casic.missiles.modular.device.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.base.response.SuccessResponseData;
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.modular.device.service.IDeviceService;
+import com.casic.missiles.modular.system.model.Device;
+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-03-27 15:39:05
+ */
+@Controller
+@RequestMapping("/device")
+public class DeviceController extends BaseController {
+
+
+ @Autowired
+ private IDeviceService deviceService;
+
+
+ /**
+ * 获取设备列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(String condition) {
+ return deviceService.selectList(null);
+ }
+
+ /**
+ * 获取设备分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(String condition) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper query = new EntityWrapper<>();
+ page = deviceService.selectPage(page,query);
+ return new SuccessResponseData(super.packForBT(page));
+ }
+ /**
+ * 新增设备
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(Device device) {
+ deviceService.insert(device);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除设备
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam String deviceId) {
+ deviceService.deleteById(deviceId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("deviceIds") List deviceIds) {
+ deviceService.deleteBatchIds(deviceIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改设备
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(Device device) {
+ deviceService.updateById(device);
+ return ResponseData.success();
+ }
+
+
+}
diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IDeviceService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IDeviceService.java
new file mode 100644
index 0000000..cdfd69f
--- /dev/null
+++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IDeviceService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.device.service;
+
+import com.casic.missiles.modular.system.model.Device;
+import com.baomidou.mybatisplus.service.IService;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author stylefeng123
+ * @since 2020-03-27
+ */
+public interface IDeviceService extends IService {
+
+}
diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceServiceImpl.java
new file mode 100644
index 0000000..77f41b1
--- /dev/null
+++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.device.service.impl;
+
+import com.casic.missiles.modular.system.model.Device;
+import com.casic.missiles.modular.system.dao.DeviceMapper;
+import com.casic.missiles.modular.device.service.IDeviceService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author stylefeng123
+ * @since 2020-03-27
+ */
+@Service
+public class DeviceServiceImpl extends ServiceImpl implements IDeviceService {
+
+}
diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/controller/ContractController.java b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/ContractController.java
new file mode 100644
index 0000000..ecd033b
--- /dev/null
+++ b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/ContractController.java
@@ -0,0 +1,252 @@
+package com.casic.missiles.modular.system.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.ErrorResponseData;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.base.response.SuccessResponseData;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.system.dict.ContractDict;
+import com.casic.missiles.modular.system.model.Contract;
+import com.casic.missiles.modular.system.model.Account;
+import com.casic.missiles.modular.system.service.IContractService;
+import com.casic.missiles.modular.system.service.IAccountService;
+import org.hswebframework.expands.office.excel.ExcelIO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import static com.casic.missiles.modular.system.dict.ContractDict.CONTRACT_ADD_LOG_KEY;
+
+/**
+ * casic_device控制器
+ *
+ * @author dev
+ * @Date 2020-03-17 11:18:50
+ */
+@Controller
+@RequestMapping("/contract")
+public class ContractController extends BaseController {
+
+
+ @Autowired
+ private IContractService contractService;
+ @Autowired
+ private IAccountService userService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ @Value("${casic.file-download-path}")
+ private String downloadPath;
+
+ /**
+ * 获取列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(String condition) {
+ return contractService.selectList(null);
+ }
+
+ /**
+ * 获取分页列表
+ */
+ @RequestMapping(value = "/pageList")
+ @ResponseBody
+ public Object listPage(String keyword1,String keyword2,String keyword3) {
+ Page page = new PageFactory().defaultPage();
+ List contractList = contractService.selectPageList(page,keyword1, keyword2, keyword3);
+ page.setRecords(contractList);
+ return new SuccessResponseData(super.packForBT(page));
+ }
+ /**
+ * 新增
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ @BussinessLog(value = "增加合同信息", key = CONTRACT_ADD_LOG_KEY, dict = ContractDict.class)
+ public Object add(Contract contract) {
+ //合同编号一样,则覆盖
+ EntityWrapper contractEntityWrapper = new EntityWrapper<>();
+ contractEntityWrapper.eq("contract_number",contract.getContractNumber());
+ contractService.delete(contractEntityWrapper);
+ Account user=userService.findUserByName(contract.getPrincipal());
+ contract.setDeptid(null!=user&&user.getId()!=null?user.getDeptid().toString():"");
+ contractService.insert(contract);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam String contractId) {
+ contractService.deleteById(contractId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("contractIds") List contractIds) {
+ contractService.deleteBatchIds(contractIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改基本信息
+ */
+ @RequestMapping(value = "/baseUpdate")
+ @ResponseBody
+ @BussinessLog(value = "编辑合同信息", key = CONTRACT_ADD_LOG_KEY, dict = ContractDict.class)
+ public Object baseUpdate(Contract contract) {
+ Contract contract1=contractService.selectById(contract.getId());
+ contract1.setContractNumber(contract.getContractNumber());
+ contract1.setContractName(contract.getContractName());
+ contract1.setContractAmount(contract.getContractAmount());
+ contract1.setContractContent(contract.getContractContent());
+ contract1.setContractFactory(contract.getContractFactory());
+ contract1.setPrincipal(contract.getPrincipal());
+ Account user=userService.findUserByName(contract.getPrincipal());
+ contract1.setDeptid(null!=user&&user.getId()!=null?user.getDeptid().toString():"");
+ contractService.updateById(contract1);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改内网流程
+ */
+ @RequestMapping(value = "/flowUpdate")
+ @ResponseBody
+ @BussinessLog(value = "修改内网流程信息")
+ public Object update(Contract contract) {
+ Contract contract1=contractService.selectById(contract.getId());
+ contract1.setExternalCheckApply(contract.getExternalCheckApply());
+ contract1.setExternalContractApply(contract.getExternalContractApply());
+ contract1.setExternalProjectApply(contract.getExternalProjectApply());
+ contractService.updateById(contract1);
+ return ResponseData.success();
+ }
+
+
+ /**
+ * 导出合同列表
+ */
+ @RequestMapping(value = "/listExp")
+ public void reportExport(HttpServletRequest httpServletRequest
+ , HttpServletResponse httpServletResponse) throws IOException {
+ String keyword1 = httpServletRequest.getParameter("keyword1");
+ String keyword2 = httpServletRequest.getParameter("keyword2");
+ String keyword3 = httpServletRequest.getParameter("keyword3");
+ List list = contractService.reportExport(keyword1, keyword2, keyword3);
+ FileInputStream fileInputStream = new FileInputStream(downloadPath +
+ (list!=null&&list.size()>0?"contractList.xlsx":"contentNull.xlsx"));
+ try {
+ httpServletResponse.setContentType("application/octet-stream");
+ httpServletResponse.addHeader("Content-Disposition", " attachment;filename=" + "contractList.xlsx");
+ Map var = new HashMap<>();
+ var.put("list", list);
+ ExcelIO.writeTemplate(fileInputStream, httpServletResponse.getOutputStream(), var);
+ } catch (IOException e) {
+ e.printStackTrace();
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ httpServletResponse.getOutputStream().flush();
+ httpServletResponse.getOutputStream().close();
+ fileInputStream.close();
+ }
+ }
+
+ /**
+ * 批量导入合同列表
+ */
+ @RequestMapping(value = "/imp", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "批量导入合同信息")
+ public Object batchImport(@RequestParam("fs") MultipartFile fs) {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ mapper.put("合同编号", "contractNumber");
+ mapper.put("合同名称", "contractName");
+ mapper.put("合同乙方", "contractFactory");
+ mapper.put("主要内容概述", "contractContent");
+ mapper.put("合同金额(万元)", "contractAmount");
+ mapper.put("负责人", "principal");
+ try {
+ try (InputStream in = fs.getInputStream()) {
+ ExcelIO.read(in, mapper, Contract.class, (row) -> {
+ //仅读取第一个sheet
+ if (row.getSheet() == 0) {
+ if (row.getResult() != null) {
+ Contract contract = row.getResult();
+
+ if (!ToolUtil.isAllEmpty(contract.getContractNumber(), contract.getContractName())) {
+ results.add(contract);
+ }
+ }
+ } else {
+ row.shutdown();
+ }
+ });
+
+ contractService.importContract(results);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ return new ErrorResponseData("导入设备类型列表失败");
+ }
+
+ return ResponseData.success();
+ }
+
+
+ /**
+ * 根据id查详情
+ * @param id
+ * @return
+ */
+ @RequestMapping(value = "/selectById")
+ @ResponseBody
+ public Object detail(Long id) {
+ return ResponseData.success(200,
+ "查询详情成功",
+ contractService.selectById(id));
+ }
+
+
+ /**
+ * 合同下拉接口
+ */
+ @RequestMapping(value = "/getContract")
+ @ResponseBody
+ public Object getContract() {
+ EntityWrapper entityWrapper = new EntityWrapper<>();
+ List contractList = contractService.selectList(entityWrapper);
+ return ResponseData.success(200, "", contractList);
+ }
+}
diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/controller/PaymentsController.java b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/PaymentsController.java
new file mode 100644
index 0000000..dd04612
--- /dev/null
+++ b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/PaymentsController.java
@@ -0,0 +1,134 @@
+package com.casic.missiles.modular.system.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.annotion.BussinessLog;
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.core.util.DateUtil;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.system.model.Payments;
+import com.casic.missiles.modular.system.service.IPaymentsService;
+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.ArrayList;
+import java.util.List;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2020-03-17 11:20:45
+ */
+@Controller
+@RequestMapping("/payments")
+public class PaymentsController extends BaseController {
+
+
+ @Autowired
+ private IPaymentsService paymentsService;
+
+
+ /**
+ * 获取列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(String proId) {
+ EntityWrapper entityWrapper = new EntityWrapper<>();
+ entityWrapper.eq("pro_id", proId);
+ entityWrapper.orderBy("reorder");
+ List paymentsList = paymentsService.selectList(entityWrapper);
+ paymentsList.forEach(payments -> {
+ payments.setPaytimeFmt(DateUtil.format(payments.getPaytime(), "yyyy-MM-dd HH:mm:ss"));
+ });
+ return ResponseData.success(paymentsList);
+ }
+
+ /**
+ * 获取分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(String condition) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper query = new EntityWrapper<>();
+ page = paymentsService.selectPage(page, query);
+ return super.packForBT(page);
+ }
+
+ /**
+ * 新增
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ @BussinessLog(value = "新增付款流程信息")
+ public Object add(Payments payments, String paytimeFmt) {
+ if (paymentsService.validate(payments.getProId(),
+ payments.getMoney(),payments.getReorder())) {
+ return ResponseData.error("付款金额已超过合同额!");
+ }
+ EntityWrapper entityWrapper = new EntityWrapper<>();
+ entityWrapper.eq("pro_id", payments.getProId());
+ entityWrapper.eq("reorder", payments.getReorder());
+ paymentsService.delete(entityWrapper);
+ payments.setPaytime(ToolUtil.isNotEmpty(paytimeFmt) ?
+ DateUtil.parseTime(paytimeFmt) : null);
+ paymentsService.insert(payments);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam String paymentsId) {
+ paymentsService.deleteById(paymentsId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("paymentsIds") List paymentsIds) {
+ paymentsService.deleteBatchIds(paymentsIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ @BussinessLog(value = "编辑报销流程信息")
+ public Object update(Payments payments, String paytimeFmt) {
+ if (paymentsService.validate(payments.getProId(), payments.getMoney(),payments.getReorder())) {
+ return ResponseData.error("付款金额已超过合同额!");
+ }
+ payments.setPaytime(ToolUtil.isNotEmpty(paytimeFmt) ?
+ DateUtil.parseTime(paytimeFmt) : null);
+ paymentsService.updateById(payments);
+ return ResponseData.success();
+ }
+
+// /**
+// * casic_device详情
+// */
+// @RequestMapping(value = "/detail/{paymentsId}")
+// @ResponseBody
+// public Object detail(@PathVariable("paymentsId") String paymentsId) {
+// ResultData resultData = new ResultData();
+// resultData.setCode(200);
+// resultData.setMessage("查询详情成功");
+// resultData.setData(paymentsService.selectById(paymentsId));
+// return resultData;
+// }
+}
diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/controller/ProductDeviceTypeController.java b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/ProductDeviceTypeController.java
new file mode 100644
index 0000000..b24efa2
--- /dev/null
+++ b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/ProductDeviceTypeController.java
@@ -0,0 +1,314 @@
+package com.casic.missiles.modular.system.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.ErrorResponseData;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.base.response.SuccessResponseData;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.system.dict.DeviceTypeDict;
+import com.casic.missiles.modular.system.dto.DeviceTypeDto;
+import com.casic.missiles.modular.system.model.Dept;
+import com.casic.missiles.modular.system.model.ProductDeviceType;
+import com.casic.missiles.modular.system.model.Account;
+import com.casic.missiles.modular.system.model.User;
+import com.casic.missiles.modular.system.service.IProductDeviceTypeService;
+import com.casic.missiles.modular.system.util.FileUtil;
+import org.apache.commons.lang.StringUtils;
+import org.hswebframework.expands.office.excel.ExcelIO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.*;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import static com.casic.missiles.modular.system.dict.DeviceTypeDict.DEVICETYPE_ADD_LOG_KEY;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2020-03-10 17:01:30
+ */
+@Controller
+@RequestMapping("/deviceType")
+public class ProductDeviceTypeController extends BaseController {
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ @Resource
+ private IProductDeviceTypeService productDeviceTypeService;
+
+ @Value("${casic.file-upload-path}")
+ private String uploadPath;
+
+ @Value("${casic.file-download-path}")
+ private String downloadPath;
+
+ /**
+ * 获取列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(String condition) {
+ return productDeviceTypeService.selectList(null);
+ }
+
+ /**
+ * 获取分页列表
+ */
+ @RequestMapping(value = "/pageList", method = RequestMethod.GET)
+ @ResponseBody
+ public Object listPage(String keyword1, String keyword2, String keyword3) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper entityWrapper = new EntityWrapper<>();
+// DataScope dataScope = permissionService.getCurrUserDataScope();
+// List list = productDeviceTypeService.selectPageDataScope(dataScope, page,
+// keyword1, keyword2, keyword3);
+ if (ToolUtil.isNotEmpty(keyword1)) {
+ entityWrapper.like("product_name", keyword1);
+ }
+ if (ToolUtil.isNotEmpty(keyword2)) {
+ entityWrapper.eq("status", keyword2);
+ }
+ if (ToolUtil.isNotEmpty(keyword3)) {
+ entityWrapper.like("principal", keyword3);
+ }
+ page = productDeviceTypeService.selectPage(page, entityWrapper);
+ List productDeviceTypeList = page.getRecords();
+ productDeviceTypeList.forEach(productDeviceType -> {
+ productDeviceType.setStatusFmt(permissionService.getDictNameByCode("devtypeStatus",
+ productDeviceType.getStatus().toString()));
+ });
+ page.setRecords(productDeviceTypeList);
+ return new SuccessResponseData(super.packForBT(page));
+ }
+
+ /**
+ * 新增
+ */
+ @RequestMapping(value = "/add", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "增加设备类型信息", key = DEVICETYPE_ADD_LOG_KEY, dict = DeviceTypeDict.class)
+ public Object add(ProductDeviceType productDeviceType, MultipartFile quotaSummaryFile) throws IOException {
+ EntityWrapper wrapper = new EntityWrapper<>();
+ wrapper.eq("product_name", productDeviceType.getProductName());
+ wrapper.eq("product_model", productDeviceType.getProductModel());
+ wrapper.eq("machine_version", productDeviceType.getMachineVersion());
+ productDeviceTypeService.delete(wrapper);
+ //上传汇总表
+ if (null != quotaSummaryFile &&
+ StringUtils.isNotBlank(quotaSummaryFile.getOriginalFilename())) {
+ String path = uploadPath + quotaSummaryFile.getOriginalFilename();
+ File newFile = FileUtil.createFile(path);
+ quotaSummaryFile.transferTo(newFile);
+ productDeviceType.setQuotaSummary(path);
+ }
+ productDeviceTypeService.insert(productDeviceType);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam String productDeviceTypeId) {
+ productDeviceTypeService.deleteById(productDeviceTypeId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("productDeviceTypeIds") List productDeviceTypeIds) {
+ productDeviceTypeService.deleteBatchIds(productDeviceTypeIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改
+ */
+ @RequestMapping(value = "/mod", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "修改设备类型信息", key = DEVICETYPE_ADD_LOG_KEY, dict = DeviceTypeDict.class)
+ public Object update(ProductDeviceType productDeviceType, MultipartFile quotaSummaryFile) throws IOException {
+ //上传汇总表
+ if (null != quotaSummaryFile
+ && ToolUtil.isNotEmpty(quotaSummaryFile.getOriginalFilename())) {
+ String path = uploadPath + quotaSummaryFile.getOriginalFilename();
+ File newFile = new File(path);
+ quotaSummaryFile.transferTo(newFile);
+ productDeviceType.setQuotaSummary(path);
+ }
+ productDeviceTypeService.updateById(productDeviceType);
+ return ResponseData.success();
+ }
+
+
+ /**
+ * 批量导入设备类型列表
+ */
+ @RequestMapping(value = "/imp", method = RequestMethod.POST)
+ @ResponseBody
+ public Object batchImport(@RequestParam("fs") MultipartFile fs) {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ mapper.put("产品名称", "productName");
+ mapper.put("型号", "productModel");
+ mapper.put("整机版本号", "machineVersion");
+ mapper.put("硬件版本号", "hardwareVersion");
+ mapper.put("软件版本号", "softwareVersion");
+ mapper.put("设计归档", "designArchive");
+ mapper.put("批产归档", "batchFiling");
+ mapper.put("状态", "statusFmt");
+// mapper.put("所属组织", "deptid");
+ mapper.put("参数", "kpi");
+ mapper.put("备注", "descn");
+ try {
+ try (InputStream in = fs.getInputStream()) {
+ ExcelIO.read(in, mapper, ProductDeviceType.class, (row) -> {
+ //仅读取第一个sheet
+ if (row.getSheet() == 0) {
+ if (row.getResult() != null) {
+ ProductDeviceType deviceType = row.getResult();
+ //过滤设备编号及设备名称都为空的数据 (判定为空行不导入该行)
+ if (!ToolUtil.isAllEmpty(deviceType.getProductName(), deviceType.getMachineVersion())) {
+ deviceType.setStatus("在产".equals(deviceType.getStatusFmt()) ? 1 : 0);
+ results.add(deviceType);
+ }
+ }
+ } else {
+ row.shutdown();
+ }
+ });
+
+ productDeviceTypeService.importDeviceType(results);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ return new ErrorResponseData("导入设备类型列表失败");
+ }
+
+ return ResponseData.success();
+ }
+
+
+ /**
+ * 导出设备类型列表
+ */
+ @RequestMapping(value = "/listExp")
+ public void reportExport(HttpServletRequest httpServletRequest,
+ HttpServletResponse httpServletResponse) throws IOException {
+ String keyword1 = httpServletRequest.getParameter("keyword1");
+ String keyword2 = httpServletRequest.getParameter("keyword2");
+ String keyword3 = httpServletRequest.getParameter("keyword3");
+ List list = productDeviceTypeService.reportExport(keyword1, keyword2, keyword3);
+ FileInputStream fileInputStream = new FileInputStream(downloadPath +
+ (list != null && list.size() > 0 ? "deviceTypeList.xlsx" : "contentNull.xlsx"));
+ try {
+ httpServletResponse.setContentType("application/octet-stream");
+ httpServletResponse.addHeader("Content-Disposition", " attachment;filename=" + "deviceTypeList.xlsx");
+ Map var = new HashMap<>();
+ var.put("list", list);
+ ExcelIO.writeTemplate(fileInputStream, httpServletResponse.getOutputStream(), var);
+ } catch (IOException e) {
+ e.printStackTrace();
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ httpServletResponse.getOutputStream().flush();
+ httpServletResponse.getOutputStream().close();
+ fileInputStream.close();
+ }
+ }
+
+
+ /**
+ * 参数详情
+ */
+ @RequestMapping(value = "/kpiDetail")
+ @ResponseBody
+ public Object detail(long id) {
+ return ResponseData.success(200,
+ "查询参数详情成功",
+ productDeviceTypeService.selectById(id));
+ }
+
+ /**
+ * 负责人下拉接口
+ */
+ @RequestMapping(value = "/getUser")
+ @ResponseBody
+ public Object detail() {
+ List userList = permissionService.getAllUsers("");
+ return ResponseData.success(200, "", userList);
+ }
+
+
+ /**
+ * 组织机构接口
+ */
+ @RequestMapping(value = "/getDept")
+ @ResponseBody
+ public Object getDept() {
+ List depts = permissionService.getAllDepts("");
+ return ResponseData.success(200, "", depts);
+ }
+
+ /***
+ *汇总表下载
+ * @param response
+ * @param quotaSummary
+ * @throws FileNotFoundException
+ * @throws UnsupportedEncodingException
+ */
+ @GetMapping("/summaryDownload")
+ public void downloadLocal(HttpServletResponse response, String quotaSummary) throws IOException {
+ if (ToolUtil.isNotEmpty(quotaSummary)) {
+ FileUtil.downloadLocalFile(response, quotaSummary, "定额汇总表");
+ }
+ }
+
+
+ /**
+ * 在产设备列表下拉接口
+ */
+ @RequestMapping(value = "/deviceType")
+ @ResponseBody
+ public Object getDeviceTypeList() {
+
+ List deviceTypes = productDeviceTypeService.selectDeviceTypeList();
+ return ResponseData.success(200, "", deviceTypes);
+ }
+
+ /**
+ * 获取在产设备型号下拉接口
+ */
+ @RequestMapping(value = "/getModel")
+ @ResponseBody
+ public Object getModel(String devtypeName) {
+ EntityWrapper entityWrapper = new EntityWrapper<>();
+ entityWrapper.eq("status", 1);
+ entityWrapper.eq("product_name", devtypeName);
+ List deviceTypes = productDeviceTypeService.selectList(entityWrapper);
+ return ResponseData.success(200, "", deviceTypes);
+ }
+}
diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/controller/ProductFactoryInformationController.java b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/ProductFactoryInformationController.java
new file mode 100644
index 0000000..cea6e46
--- /dev/null
+++ b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/ProductFactoryInformationController.java
@@ -0,0 +1,239 @@
+package com.casic.missiles.modular.system.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.ErrorResponseData;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.base.response.SuccessResponseData;
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.system.model.ProductDeviceType;
+import com.casic.missiles.modular.system.model.ProductFactoryInformation;
+import com.casic.missiles.modular.system.service.IProductFactoryInformationService;
+import com.casic.missiles.modular.system.util.FileUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.hswebframework.expands.office.excel.ExcelIO;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.*;
+import java.net.URLEncoder;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2020-03-10 17:02:24
+ */
+@Controller
+@RequestMapping("/factory")
+public class ProductFactoryInformationController extends BaseController {
+ @Value("${casic.file-upload-path}")
+ private String uploadPath;
+
+ @Value("${casic.file-download-path}")
+ private String downloadPath;
+
+ @Resource
+ private IProductFactoryInformationService productFactoryInformationService;
+
+
+ /**
+ * 获取列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(String condition) {
+ return productFactoryInformationService.selectList(null);
+ }
+
+ /**
+ * 获取分页列表
+ */
+ @RequestMapping(value = "/pageList")
+ @ResponseBody
+ public Object listPage(String keyword1, String keyword2) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper query = new EntityWrapper<>();
+ if (ToolUtil.isNotEmpty(keyword1)) {
+ query.like("name", keyword1);
+ }
+ if (ToolUtil.isNotEmpty(keyword2)) {
+ query.like("producting_device", keyword2);
+ }
+ page = productFactoryInformationService.selectPage(page, query);
+ return new SuccessResponseData(super.packForBT(page));
+ }
+
+ /**
+ * 新增
+ */
+ @RequestMapping(value = "/add", method = RequestMethod.POST)
+ @ResponseBody
+ public Object add(ProductFactoryInformation productFactoryInformation,
+ MultipartFile equipmentFile) throws IOException {
+ //若新增相同的厂家,则删除原来的厂家
+ EntityWrapper wrapper = new EntityWrapper<>();
+ wrapper.eq("name", productFactoryInformation.getName());
+ productFactoryInformationService.delete(wrapper);
+ //上传设备报价表
+ if (ToolUtil.isNotEmpty(equipmentFile) &&
+ ToolUtil.isNotEmpty(equipmentFile.getOriginalFilename())) {
+ String path = uploadPath + equipmentFile.getOriginalFilename();
+ File newFile = FileUtil.createFile(path);
+ equipmentFile.transferTo(newFile);
+ productFactoryInformation.setEquipmentQuotation(path);
+ }
+ productFactoryInformationService.insert(productFactoryInformation);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam String productFactoryInformationId) {
+ productFactoryInformationService.deleteById(productFactoryInformationId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("productFactoryInformationIds") List productFactoryInformationIds) {
+ productFactoryInformationService.deleteBatchIds(productFactoryInformationIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改
+ */
+ @RequestMapping(value = "/mod", method = RequestMethod.POST)
+ @ResponseBody
+ public Object update(ProductFactoryInformation productFactoryInformation,
+ MultipartFile equipmentFile) throws IOException {
+ //上传设备价格表
+ if (null != equipmentFile &&
+ StringUtils.isNotBlank(equipmentFile.getOriginalFilename())) {
+ String path = uploadPath + equipmentFile.getOriginalFilename();
+ File file = FileUtil.createFile(path);
+ equipmentFile.transferTo(file);
+ productFactoryInformation.setEquipmentQuotation(path);
+ }
+ productFactoryInformationService.updateById(productFactoryInformation);
+ return ResponseData.success();
+ }
+
+ /**
+ * 导出厂家列表
+ */
+ @RequestMapping(value = "/listExp")
+ public void reportExport(HttpServletRequest httpServletRequest
+ , HttpServletResponse httpServletResponse) throws IOException {
+ String keyword1 = httpServletRequest.getParameter("keyword1");
+ String keyword2 = httpServletRequest.getParameter("keyword2");
+ List list = productFactoryInformationService.reportExport(keyword1, keyword2);
+ FileInputStream fileInputStream = new FileInputStream(downloadPath +
+ (list != null && list.size() > 0 ? "factoryList.xlsx" : "contentNull.xlsx"));
+ try {
+ httpServletResponse.setContentType("application/octet-stream");
+ httpServletResponse.addHeader("Content-Disposition", " attachment;filename=" + "factoryList.xlsx");
+ Map var = new HashMap<>();
+ var.put("list", list);
+ ExcelIO.writeTemplate(fileInputStream, httpServletResponse.getOutputStream(), var);
+ } catch (IOException e) {
+ e.printStackTrace();
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ httpServletResponse.getOutputStream().flush();
+ httpServletResponse.getOutputStream().close();
+ fileInputStream.close();
+ }
+ }
+
+ /***
+ *设备报价表下载
+ * @param response
+ * @param equipmentQuotation
+ * @throws FileNotFoundException
+ * @throws UnsupportedEncodingException
+ */
+ @RequestMapping("/priceFileDownload")
+ public void downloadLocal(HttpServletResponse response, String equipmentQuotation) throws IOException {
+ if (ToolUtil.isNotEmpty(equipmentQuotation)) {
+ FileUtil.downloadLocalFile(response, equipmentQuotation, "设备价格表");
+ }
+ }
+
+
+ /**
+ * 批量导入厂家信息
+ */
+ @RequestMapping(value = "/imp", method = RequestMethod.POST)
+ @ResponseBody
+ public Object batchImport(@RequestParam("fs") MultipartFile fs) throws Exception {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ mapper.put("厂家名称", "name");
+ mapper.put("厂家联系人", "personName");
+ mapper.put("地址", "address");
+ mapper.put("电话", "phone");
+ mapper.put("开户行", "bank");
+ mapper.put("税号", "taxNumber");
+ mapper.put("在产设备", "productingDevice");
+ try {
+ try (InputStream in = fs.getInputStream()) {
+ ExcelIO.read(in, mapper, ProductFactoryInformation.class, (row) -> {
+ //仅读取第一个sheet
+ if (row.getSheet() == 0) {
+ if (row.getResult() != null) {
+ ProductFactoryInformation productFactoryInformation = row.getResult();
+ //过滤厂家名称为空的行
+ if (ToolUtil.isNotEmpty(productFactoryInformation.getName())) {
+ results.add(productFactoryInformation);
+ }
+ }
+ } else {
+ row.shutdown();
+ }
+ });
+ productFactoryInformationService.importDeviceType(results);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ return new ErrorResponseData("导入设备类型列表失败");
+ }
+
+ return ResponseData.success();
+ }
+
+ /**
+ * 厂家下拉接口
+ */
+ @RequestMapping(value = "/getFactory")
+ @ResponseBody
+ public Object getFactory() {
+ List factoryInformations =
+ productFactoryInformationService.selectList(null);
+ return ResponseData.success(200, "", factoryInformations);
+ }
+}
diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/controller/ProjectController.java b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/ProjectController.java
new file mode 100644
index 0000000..509ad80
--- /dev/null
+++ b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/ProjectController.java
@@ -0,0 +1,114 @@
+package com.casic.missiles.modular.system.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.base.response.SuccessResponseData;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.modular.system.dict.ProjectDict;
+import com.casic.missiles.modular.system.model.Project;
+import com.casic.missiles.modular.system.service.IProjectService;
+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;
+
+import static com.casic.missiles.modular.system.dict.ProjectDict.PROJECT_ADD_LOG_KEY;
+
+/**
+ * 项目管理控制器
+ *
+ * @author dev
+ * @Date 2020-03-18 16:51:41
+ */
+@Controller
+@RequestMapping("/project")
+public class ProjectController extends BaseController {
+
+
+ @Autowired
+ private IProjectService projectService;
+
+ /**
+ * 获取项目管理列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(String condition) {
+ return projectService.selectList(null);
+ }
+
+ /**
+ * 获取项目管理分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(String condition) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper query = new EntityWrapper<>();
+ page = projectService.selectPage(page, query);
+ return new SuccessResponseData(super.packForBT(page));
+ }
+
+ /**
+ * 新增项目管理
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ @BussinessLog(value = "增加项目信息", key = PROJECT_ADD_LOG_KEY, dict = ProjectDict.class)
+ public Object add(Project project) {
+ EntityWrapper entityWrapper = new EntityWrapper<>();
+ entityWrapper.eq("project_name", project.getProjectName());
+ projectService.delete(entityWrapper);
+ projectService.insert(project);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除项目管理
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam String projectId) {
+ projectService.deleteById(projectId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("projectIds") List projectIds) {
+ projectService.deleteBatchIds(projectIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改项目管理
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ @BussinessLog(value = "编辑项目信息", key = PROJECT_ADD_LOG_KEY, dict = ProjectDict.class)
+ public Object update(Project project) {
+ projectService.updateById(project);
+ return ResponseData.success();
+ }
+
+
+ /**
+ * 项目下拉接口
+ */
+ @RequestMapping(value = "/getProject")
+ @ResponseBody
+ public Object getProject() {
+ EntityWrapper entityWrapper = new EntityWrapper<>();
+ List projects = projectService.selectList(entityWrapper);
+ return ResponseData.success(200, "", projects);
+ }
+}
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..967cb75
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,5 @@
+.idea/
+**/target/**
+logs/
+casic-web/src/test
+*.iml
\ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..21fa0d0
--- /dev/null
+++ b/README.md
@@ -0,0 +1,18 @@
+# 批产设备管理系统 V1.0.0
+
+[^_^]: # (Talk is cheap,Show me the code!)
+
+## 介绍
+基于SpringBoot,致力于做更简洁的后台管理系统,整合springboot + shiro + mybatis-plus + !
+基于casic代码简洁,注释丰富,上手容易,同时包含多基础模块(用户管理,角色管理,部门管理,字典管理等),
+可以直接作为一个后台管理系统的脚手架! 2020目标 `更简洁`,`更规范`!
+
+
+## 其他
+>* [git地址](http://192.168.0.203:8080/gitbucket/git/root/product_device.git)
+>* [本地免登地址](http://localhost:50008/route/mockToken)
+
+
+
+
+
diff --git a/casic-device/pom.xml b/casic-device/pom.xml
new file mode 100644
index 0000000..f5b11d5
--- /dev/null
+++ b/casic-device/pom.xml
@@ -0,0 +1,85 @@
+
+
+ 4.0.0
+
+ com.casic
+ casic-product-device
+ 1.0.0-SNAPSHOT
+ ../pom.xml
+
+
+ casic-device
+ ${pro.version}
+ jar
+ casic-device
+ 设备批产
+
+
+
+
+ com.casic
+ casic-core
+ ${casic.version}
+
+
+ com.casic
+ casic-admin-support
+ ${casic.version}
+
+
+ com.casic
+ casic-export-support
+ 1.0.0-SNAPSHOT
+
+
+
+ com.casic
+ casic-admin-support
+ ${casic.version}
+
+
+
+ org.springframework.boot
+ spring-boot-starter-aop
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+ org.springframework.boot
+ spring-boot-starter-validation
+
+
+ org.springframework.boot
+ spring-boot-starter-websocket
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ commons-io
+ commons-io
+
+
+
+ org.apache.commons
+ commons-lang3
+
+
+
+
+
+
+ src/main/java
+
+ **/*.xml
+
+
+
+
+
diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/DeviceController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/DeviceController.java
new file mode 100644
index 0000000..793d484
--- /dev/null
+++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/DeviceController.java
@@ -0,0 +1,95 @@
+package com.casic.missiles.modular.device.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.base.response.SuccessResponseData;
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.modular.device.service.IDeviceService;
+import com.casic.missiles.modular.system.model.Device;
+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-03-27 15:39:05
+ */
+@Controller
+@RequestMapping("/device")
+public class DeviceController extends BaseController {
+
+
+ @Autowired
+ private IDeviceService deviceService;
+
+
+ /**
+ * 获取设备列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(String condition) {
+ return deviceService.selectList(null);
+ }
+
+ /**
+ * 获取设备分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(String condition) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper query = new EntityWrapper<>();
+ page = deviceService.selectPage(page,query);
+ return new SuccessResponseData(super.packForBT(page));
+ }
+ /**
+ * 新增设备
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(Device device) {
+ deviceService.insert(device);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除设备
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam String deviceId) {
+ deviceService.deleteById(deviceId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("deviceIds") List deviceIds) {
+ deviceService.deleteBatchIds(deviceIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改设备
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(Device device) {
+ deviceService.updateById(device);
+ return ResponseData.success();
+ }
+
+
+}
diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IDeviceService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IDeviceService.java
new file mode 100644
index 0000000..cdfd69f
--- /dev/null
+++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IDeviceService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.device.service;
+
+import com.casic.missiles.modular.system.model.Device;
+import com.baomidou.mybatisplus.service.IService;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author stylefeng123
+ * @since 2020-03-27
+ */
+public interface IDeviceService extends IService {
+
+}
diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceServiceImpl.java
new file mode 100644
index 0000000..77f41b1
--- /dev/null
+++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.device.service.impl;
+
+import com.casic.missiles.modular.system.model.Device;
+import com.casic.missiles.modular.system.dao.DeviceMapper;
+import com.casic.missiles.modular.device.service.IDeviceService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author stylefeng123
+ * @since 2020-03-27
+ */
+@Service
+public class DeviceServiceImpl extends ServiceImpl implements IDeviceService {
+
+}
diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/controller/ContractController.java b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/ContractController.java
new file mode 100644
index 0000000..ecd033b
--- /dev/null
+++ b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/ContractController.java
@@ -0,0 +1,252 @@
+package com.casic.missiles.modular.system.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.ErrorResponseData;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.base.response.SuccessResponseData;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.system.dict.ContractDict;
+import com.casic.missiles.modular.system.model.Contract;
+import com.casic.missiles.modular.system.model.Account;
+import com.casic.missiles.modular.system.service.IContractService;
+import com.casic.missiles.modular.system.service.IAccountService;
+import org.hswebframework.expands.office.excel.ExcelIO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import static com.casic.missiles.modular.system.dict.ContractDict.CONTRACT_ADD_LOG_KEY;
+
+/**
+ * casic_device控制器
+ *
+ * @author dev
+ * @Date 2020-03-17 11:18:50
+ */
+@Controller
+@RequestMapping("/contract")
+public class ContractController extends BaseController {
+
+
+ @Autowired
+ private IContractService contractService;
+ @Autowired
+ private IAccountService userService;
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ @Value("${casic.file-download-path}")
+ private String downloadPath;
+
+ /**
+ * 获取列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(String condition) {
+ return contractService.selectList(null);
+ }
+
+ /**
+ * 获取分页列表
+ */
+ @RequestMapping(value = "/pageList")
+ @ResponseBody
+ public Object listPage(String keyword1,String keyword2,String keyword3) {
+ Page page = new PageFactory().defaultPage();
+ List contractList = contractService.selectPageList(page,keyword1, keyword2, keyword3);
+ page.setRecords(contractList);
+ return new SuccessResponseData(super.packForBT(page));
+ }
+ /**
+ * 新增
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ @BussinessLog(value = "增加合同信息", key = CONTRACT_ADD_LOG_KEY, dict = ContractDict.class)
+ public Object add(Contract contract) {
+ //合同编号一样,则覆盖
+ EntityWrapper contractEntityWrapper = new EntityWrapper<>();
+ contractEntityWrapper.eq("contract_number",contract.getContractNumber());
+ contractService.delete(contractEntityWrapper);
+ Account user=userService.findUserByName(contract.getPrincipal());
+ contract.setDeptid(null!=user&&user.getId()!=null?user.getDeptid().toString():"");
+ contractService.insert(contract);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam String contractId) {
+ contractService.deleteById(contractId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("contractIds") List contractIds) {
+ contractService.deleteBatchIds(contractIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改基本信息
+ */
+ @RequestMapping(value = "/baseUpdate")
+ @ResponseBody
+ @BussinessLog(value = "编辑合同信息", key = CONTRACT_ADD_LOG_KEY, dict = ContractDict.class)
+ public Object baseUpdate(Contract contract) {
+ Contract contract1=contractService.selectById(contract.getId());
+ contract1.setContractNumber(contract.getContractNumber());
+ contract1.setContractName(contract.getContractName());
+ contract1.setContractAmount(contract.getContractAmount());
+ contract1.setContractContent(contract.getContractContent());
+ contract1.setContractFactory(contract.getContractFactory());
+ contract1.setPrincipal(contract.getPrincipal());
+ Account user=userService.findUserByName(contract.getPrincipal());
+ contract1.setDeptid(null!=user&&user.getId()!=null?user.getDeptid().toString():"");
+ contractService.updateById(contract1);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改内网流程
+ */
+ @RequestMapping(value = "/flowUpdate")
+ @ResponseBody
+ @BussinessLog(value = "修改内网流程信息")
+ public Object update(Contract contract) {
+ Contract contract1=contractService.selectById(contract.getId());
+ contract1.setExternalCheckApply(contract.getExternalCheckApply());
+ contract1.setExternalContractApply(contract.getExternalContractApply());
+ contract1.setExternalProjectApply(contract.getExternalProjectApply());
+ contractService.updateById(contract1);
+ return ResponseData.success();
+ }
+
+
+ /**
+ * 导出合同列表
+ */
+ @RequestMapping(value = "/listExp")
+ public void reportExport(HttpServletRequest httpServletRequest
+ , HttpServletResponse httpServletResponse) throws IOException {
+ String keyword1 = httpServletRequest.getParameter("keyword1");
+ String keyword2 = httpServletRequest.getParameter("keyword2");
+ String keyword3 = httpServletRequest.getParameter("keyword3");
+ List list = contractService.reportExport(keyword1, keyword2, keyword3);
+ FileInputStream fileInputStream = new FileInputStream(downloadPath +
+ (list!=null&&list.size()>0?"contractList.xlsx":"contentNull.xlsx"));
+ try {
+ httpServletResponse.setContentType("application/octet-stream");
+ httpServletResponse.addHeader("Content-Disposition", " attachment;filename=" + "contractList.xlsx");
+ Map var = new HashMap<>();
+ var.put("list", list);
+ ExcelIO.writeTemplate(fileInputStream, httpServletResponse.getOutputStream(), var);
+ } catch (IOException e) {
+ e.printStackTrace();
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ httpServletResponse.getOutputStream().flush();
+ httpServletResponse.getOutputStream().close();
+ fileInputStream.close();
+ }
+ }
+
+ /**
+ * 批量导入合同列表
+ */
+ @RequestMapping(value = "/imp", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "批量导入合同信息")
+ public Object batchImport(@RequestParam("fs") MultipartFile fs) {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ mapper.put("合同编号", "contractNumber");
+ mapper.put("合同名称", "contractName");
+ mapper.put("合同乙方", "contractFactory");
+ mapper.put("主要内容概述", "contractContent");
+ mapper.put("合同金额(万元)", "contractAmount");
+ mapper.put("负责人", "principal");
+ try {
+ try (InputStream in = fs.getInputStream()) {
+ ExcelIO.read(in, mapper, Contract.class, (row) -> {
+ //仅读取第一个sheet
+ if (row.getSheet() == 0) {
+ if (row.getResult() != null) {
+ Contract contract = row.getResult();
+
+ if (!ToolUtil.isAllEmpty(contract.getContractNumber(), contract.getContractName())) {
+ results.add(contract);
+ }
+ }
+ } else {
+ row.shutdown();
+ }
+ });
+
+ contractService.importContract(results);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ return new ErrorResponseData("导入设备类型列表失败");
+ }
+
+ return ResponseData.success();
+ }
+
+
+ /**
+ * 根据id查详情
+ * @param id
+ * @return
+ */
+ @RequestMapping(value = "/selectById")
+ @ResponseBody
+ public Object detail(Long id) {
+ return ResponseData.success(200,
+ "查询详情成功",
+ contractService.selectById(id));
+ }
+
+
+ /**
+ * 合同下拉接口
+ */
+ @RequestMapping(value = "/getContract")
+ @ResponseBody
+ public Object getContract() {
+ EntityWrapper entityWrapper = new EntityWrapper<>();
+ List contractList = contractService.selectList(entityWrapper);
+ return ResponseData.success(200, "", contractList);
+ }
+}
diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/controller/PaymentsController.java b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/PaymentsController.java
new file mode 100644
index 0000000..dd04612
--- /dev/null
+++ b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/PaymentsController.java
@@ -0,0 +1,134 @@
+package com.casic.missiles.modular.system.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.annotion.BussinessLog;
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.core.util.DateUtil;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.system.model.Payments;
+import com.casic.missiles.modular.system.service.IPaymentsService;
+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.ArrayList;
+import java.util.List;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2020-03-17 11:20:45
+ */
+@Controller
+@RequestMapping("/payments")
+public class PaymentsController extends BaseController {
+
+
+ @Autowired
+ private IPaymentsService paymentsService;
+
+
+ /**
+ * 获取列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(String proId) {
+ EntityWrapper entityWrapper = new EntityWrapper<>();
+ entityWrapper.eq("pro_id", proId);
+ entityWrapper.orderBy("reorder");
+ List paymentsList = paymentsService.selectList(entityWrapper);
+ paymentsList.forEach(payments -> {
+ payments.setPaytimeFmt(DateUtil.format(payments.getPaytime(), "yyyy-MM-dd HH:mm:ss"));
+ });
+ return ResponseData.success(paymentsList);
+ }
+
+ /**
+ * 获取分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(String condition) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper query = new EntityWrapper<>();
+ page = paymentsService.selectPage(page, query);
+ return super.packForBT(page);
+ }
+
+ /**
+ * 新增
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ @BussinessLog(value = "新增付款流程信息")
+ public Object add(Payments payments, String paytimeFmt) {
+ if (paymentsService.validate(payments.getProId(),
+ payments.getMoney(),payments.getReorder())) {
+ return ResponseData.error("付款金额已超过合同额!");
+ }
+ EntityWrapper entityWrapper = new EntityWrapper<>();
+ entityWrapper.eq("pro_id", payments.getProId());
+ entityWrapper.eq("reorder", payments.getReorder());
+ paymentsService.delete(entityWrapper);
+ payments.setPaytime(ToolUtil.isNotEmpty(paytimeFmt) ?
+ DateUtil.parseTime(paytimeFmt) : null);
+ paymentsService.insert(payments);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam String paymentsId) {
+ paymentsService.deleteById(paymentsId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("paymentsIds") List paymentsIds) {
+ paymentsService.deleteBatchIds(paymentsIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ @BussinessLog(value = "编辑报销流程信息")
+ public Object update(Payments payments, String paytimeFmt) {
+ if (paymentsService.validate(payments.getProId(), payments.getMoney(),payments.getReorder())) {
+ return ResponseData.error("付款金额已超过合同额!");
+ }
+ payments.setPaytime(ToolUtil.isNotEmpty(paytimeFmt) ?
+ DateUtil.parseTime(paytimeFmt) : null);
+ paymentsService.updateById(payments);
+ return ResponseData.success();
+ }
+
+// /**
+// * casic_device详情
+// */
+// @RequestMapping(value = "/detail/{paymentsId}")
+// @ResponseBody
+// public Object detail(@PathVariable("paymentsId") String paymentsId) {
+// ResultData resultData = new ResultData();
+// resultData.setCode(200);
+// resultData.setMessage("查询详情成功");
+// resultData.setData(paymentsService.selectById(paymentsId));
+// return resultData;
+// }
+}
diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/controller/ProductDeviceTypeController.java b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/ProductDeviceTypeController.java
new file mode 100644
index 0000000..b24efa2
--- /dev/null
+++ b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/ProductDeviceTypeController.java
@@ -0,0 +1,314 @@
+package com.casic.missiles.modular.system.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.ErrorResponseData;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.base.response.SuccessResponseData;
+import com.casic.missiles.core.common.annotion.BussinessLog;
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.system.dict.DeviceTypeDict;
+import com.casic.missiles.modular.system.dto.DeviceTypeDto;
+import com.casic.missiles.modular.system.model.Dept;
+import com.casic.missiles.modular.system.model.ProductDeviceType;
+import com.casic.missiles.modular.system.model.Account;
+import com.casic.missiles.modular.system.model.User;
+import com.casic.missiles.modular.system.service.IProductDeviceTypeService;
+import com.casic.missiles.modular.system.util.FileUtil;
+import org.apache.commons.lang.StringUtils;
+import org.hswebframework.expands.office.excel.ExcelIO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.*;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import static com.casic.missiles.modular.system.dict.DeviceTypeDict.DEVICETYPE_ADD_LOG_KEY;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2020-03-10 17:01:30
+ */
+@Controller
+@RequestMapping("/deviceType")
+public class ProductDeviceTypeController extends BaseController {
+ @Autowired
+ private ICommonPermissionService permissionService;
+
+ @Resource
+ private IProductDeviceTypeService productDeviceTypeService;
+
+ @Value("${casic.file-upload-path}")
+ private String uploadPath;
+
+ @Value("${casic.file-download-path}")
+ private String downloadPath;
+
+ /**
+ * 获取列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(String condition) {
+ return productDeviceTypeService.selectList(null);
+ }
+
+ /**
+ * 获取分页列表
+ */
+ @RequestMapping(value = "/pageList", method = RequestMethod.GET)
+ @ResponseBody
+ public Object listPage(String keyword1, String keyword2, String keyword3) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper entityWrapper = new EntityWrapper<>();
+// DataScope dataScope = permissionService.getCurrUserDataScope();
+// List list = productDeviceTypeService.selectPageDataScope(dataScope, page,
+// keyword1, keyword2, keyword3);
+ if (ToolUtil.isNotEmpty(keyword1)) {
+ entityWrapper.like("product_name", keyword1);
+ }
+ if (ToolUtil.isNotEmpty(keyword2)) {
+ entityWrapper.eq("status", keyword2);
+ }
+ if (ToolUtil.isNotEmpty(keyword3)) {
+ entityWrapper.like("principal", keyword3);
+ }
+ page = productDeviceTypeService.selectPage(page, entityWrapper);
+ List productDeviceTypeList = page.getRecords();
+ productDeviceTypeList.forEach(productDeviceType -> {
+ productDeviceType.setStatusFmt(permissionService.getDictNameByCode("devtypeStatus",
+ productDeviceType.getStatus().toString()));
+ });
+ page.setRecords(productDeviceTypeList);
+ return new SuccessResponseData(super.packForBT(page));
+ }
+
+ /**
+ * 新增
+ */
+ @RequestMapping(value = "/add", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "增加设备类型信息", key = DEVICETYPE_ADD_LOG_KEY, dict = DeviceTypeDict.class)
+ public Object add(ProductDeviceType productDeviceType, MultipartFile quotaSummaryFile) throws IOException {
+ EntityWrapper wrapper = new EntityWrapper<>();
+ wrapper.eq("product_name", productDeviceType.getProductName());
+ wrapper.eq("product_model", productDeviceType.getProductModel());
+ wrapper.eq("machine_version", productDeviceType.getMachineVersion());
+ productDeviceTypeService.delete(wrapper);
+ //上传汇总表
+ if (null != quotaSummaryFile &&
+ StringUtils.isNotBlank(quotaSummaryFile.getOriginalFilename())) {
+ String path = uploadPath + quotaSummaryFile.getOriginalFilename();
+ File newFile = FileUtil.createFile(path);
+ quotaSummaryFile.transferTo(newFile);
+ productDeviceType.setQuotaSummary(path);
+ }
+ productDeviceTypeService.insert(productDeviceType);
+ return ResponseData.success();
+ }
+
+ /**
+ * 删除
+ */
+ @RequestMapping(value = "/delete")
+ @ResponseBody
+ public Object delete(@RequestParam String productDeviceTypeId) {
+ productDeviceTypeService.deleteById(productDeviceTypeId);
+ return ResponseData.success();
+ }
+
+ /**
+ * 批量删除
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object delete(@RequestParam("productDeviceTypeIds") List productDeviceTypeIds) {
+ productDeviceTypeService.deleteBatchIds(productDeviceTypeIds);
+ return ResponseData.success();
+ }
+
+ /**
+ * 修改
+ */
+ @RequestMapping(value = "/mod", method = RequestMethod.POST)
+ @ResponseBody
+ @BussinessLog(value = "修改设备类型信息", key = DEVICETYPE_ADD_LOG_KEY, dict = DeviceTypeDict.class)
+ public Object update(ProductDeviceType productDeviceType, MultipartFile quotaSummaryFile) throws IOException {
+ //上传汇总表
+ if (null != quotaSummaryFile
+ && ToolUtil.isNotEmpty(quotaSummaryFile.getOriginalFilename())) {
+ String path = uploadPath + quotaSummaryFile.getOriginalFilename();
+ File newFile = new File(path);
+ quotaSummaryFile.transferTo(newFile);
+ productDeviceType.setQuotaSummary(path);
+ }
+ productDeviceTypeService.updateById(productDeviceType);
+ return ResponseData.success();
+ }
+
+
+ /**
+ * 批量导入设备类型列表
+ */
+ @RequestMapping(value = "/imp", method = RequestMethod.POST)
+ @ResponseBody
+ public Object batchImport(@RequestParam("fs") MultipartFile fs) {
+
+ List results = new ArrayList<>();
+ //设置表头与字段映射,可通过反射获取
+ Map mapper = new HashMap<>();
+ mapper.put("产品名称", "productName");
+ mapper.put("型号", "productModel");
+ mapper.put("整机版本号", "machineVersion");
+ mapper.put("硬件版本号", "hardwareVersion");
+ mapper.put("软件版本号", "softwareVersion");
+ mapper.put("设计归档", "designArchive");
+ mapper.put("批产归档", "batchFiling");
+ mapper.put("状态", "statusFmt");
+// mapper.put("所属组织", "deptid");
+ mapper.put("参数", "kpi");
+ mapper.put("备注", "descn");
+ try {
+ try (InputStream in = fs.getInputStream()) {
+ ExcelIO.read(in, mapper, ProductDeviceType.class, (row) -> {
+ //仅读取第一个sheet
+ if (row.getSheet() == 0) {
+ if (row.getResult() != null) {
+ ProductDeviceType deviceType = row.getResult();
+ //过滤设备编号及设备名称都为空的数据 (判定为空行不导入该行)
+ if (!ToolUtil.isAllEmpty(deviceType.getProductName(), deviceType.getMachineVersion())) {
+ deviceType.setStatus("在产".equals(deviceType.getStatusFmt()) ? 1 : 0);
+ results.add(deviceType);
+ }
+ }
+ } else {
+ row.shutdown();
+ }
+ });
+
+ productDeviceTypeService.importDeviceType(results);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ return new ErrorResponseData("导入设备类型列表失败");
+ }
+
+ return ResponseData.success();
+ }
+
+
+ /**
+ * 导出设备类型列表
+ */
+ @RequestMapping(value = "/listExp")
+ public void reportExport(HttpServletRequest httpServletRequest,
+ HttpServletResponse httpServletResponse) throws IOException {
+ String keyword1 = httpServletRequest.getParameter("keyword1");
+ String keyword2 = httpServletRequest.getParameter("keyword2");
+ String keyword3 = httpServletRequest.getParameter("keyword3");
+ List list = productDeviceTypeService.reportExport(keyword1, keyword2, keyword3);
+ FileInputStream fileInputStream = new FileInputStream(downloadPath +
+ (list != null && list.size() > 0 ? "deviceTypeList.xlsx" : "contentNull.xlsx"));
+ try {
+ httpServletResponse.setContentType("application/octet-stream");
+ httpServletResponse.addHeader("Content-Disposition", " attachment;filename=" + "deviceTypeList.xlsx");
+ Map var = new HashMap<>();
+ var.put("list", list);
+ ExcelIO.writeTemplate(fileInputStream, httpServletResponse.getOutputStream(), var);
+ } catch (IOException e) {
+ e.printStackTrace();
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ httpServletResponse.getOutputStream().flush();
+ httpServletResponse.getOutputStream().close();
+ fileInputStream.close();
+ }
+ }
+
+
+ /**
+ * 参数详情
+ */
+ @RequestMapping(value = "/kpiDetail")
+ @ResponseBody
+ public Object detail(long id) {
+ return ResponseData.success(200,
+ "查询参数详情成功",
+ productDeviceTypeService.selectById(id));
+ }
+
+ /**
+ * 负责人下拉接口
+ */
+ @RequestMapping(value = "/getUser")
+ @ResponseBody
+ public Object detail() {
+ List userList = permissionService.getAllUsers("");
+ return ResponseData.success(200, "", userList);
+ }
+
+
+ /**
+ * 组织机构接口
+ */
+ @RequestMapping(value = "/getDept")
+ @ResponseBody
+ public Object getDept() {
+ List depts = permissionService.getAllDepts("");
+ return ResponseData.success(200, "", depts);
+ }
+
+ /***
+ *汇总表下载
+ * @param response
+ * @param quotaSummary
+ * @throws FileNotFoundException
+ * @throws UnsupportedEncodingException
+ */
+ @GetMapping("/summaryDownload")
+ public void downloadLocal(HttpServletResponse response, String quotaSummary) throws IOException {
+ if (ToolUtil.isNotEmpty(quotaSummary)) {
+ FileUtil.downloadLocalFile(response, quotaSummary, "定额汇总表");
+ }
+ }
+
+
+ /**
+ * 在产设备列表下拉接口
+ */
+ @RequestMapping(value = "/deviceType")
+ @ResponseBody
+ public Object getDeviceTypeList() {
+
+ List deviceTypes = productDeviceTypeService.selectDeviceTypeList();
+ return ResponseData.success(200, "", deviceTypes);
+ }
+
+ /**
+ * 获取在产设备型号下拉接口
+ */
+ @RequestMapping(value = "/getModel")
+ @ResponseBody
+ public Object getModel(String devtypeName) {
+ EntityWrapper entityWrapper = new EntityWrapper<>();
+ entityWrapper.eq("status", 1);
+ entityWrapper.eq("product_name", devtypeName);
+ List deviceTypes = productDeviceTypeService.selectList(entityWrapper);
+ return ResponseData.success(200, "", deviceTypes);
+ }
+}
diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/controller/ProductFactoryInformationController.java b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/ProductFactoryInformationController.java
new file mode 100644
index 0000000..cea6e46
--- /dev/null
+++ b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/ProductFactoryInformationController.java
@@ -0,0 +1,239 @@
+package com.casic.missiles.modular.system.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.ErrorResponseData;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.base.response.SuccessResponseData;
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.core.util.ToolUtil;
+import com.casic.missiles.modular.system.model.ProductDeviceType;
+import com.casic.missiles.modular.system.model.ProductFactoryInformation;
+import com.casic.missiles.modular.system.service.IProductFactoryInformationService;
+import com.casic.missiles.modular.system.util.FileUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.hswebframework.expands.office.excel.ExcelIO;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.*;
+import java.net.URLEncoder;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 控制器
+ *
+ * @author dev
+ * @Date 2020-03-10 17:02:24
+ */
+@Controller
+@RequestMapping("/factory")
+public class ProductFactoryInformationController extends BaseController {
+ @Value("${casic.file-upload-path}")
+ private String uploadPath;
+
+ @Value("${casic.file-download-path}")
+ private String downloadPath;
+
+ @Resource
+ private IProductFactoryInformationService productFactoryInformationService;
+
+
+ /**
+ * 获取列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public Object list(String condition) {
+ return productFactoryInformationService.selectList(null);
+ }
+
+ /**
+ * 获取分页列表
+ */
+ @RequestMapping(value = "/pageList")
+ @ResponseBody
+ public Object listPage(String keyword1, String keyword2) {
+ Page page = new PageFactory