init():南钢程序前后端分离

This commit is contained in:
Allenxy
2024-09-13 16:10:08 +08:00
parent 4c5f5493a5
commit fc11668842
718 changed files with 67569 additions and 0 deletions

20
LICENSE Normal file
View File

@@ -0,0 +1,20 @@
The MIT License (MIT)
Copyright (c) 2018 RuoYi
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

96
README.md Normal file
View File

@@ -0,0 +1,96 @@
<p align="center">
<img alt="logo" src="https://oscimg.oschina.net/oscnet/up-d3d0a9303e11d522a06cd263f3079027715.png">
</p>
<h1 align="center" style="margin: 30px 0 30px; font-weight: bold;">RuoYi v3.8.8</h1>
<h4 align="center">基于SpringBoot+Vue前后端分离的Java快速开发框架</h4>
<p align="center">
<a href="https://gitee.com/y_project/RuoYi-Vue/stargazers"><img src="https://gitee.com/y_project/RuoYi-Vue/badge/star.svg?theme=dark"></a>
<a href="https://gitee.com/y_project/RuoYi-Vue"><img src="https://img.shields.io/badge/RuoYi-v3.8.8-brightgreen.svg"></a>
<a href="https://gitee.com/y_project/RuoYi-Vue/blob/master/LICENSE"><img src="https://img.shields.io/github/license/mashape/apistatus.svg"></a>
</p>
## 平台简介
若依是一套全部开源的快速开发平台,毫无保留给个人及企业免费使用。
* 前端采用Vue、Element UI。
* 后端采用Spring Boot、Spring Security、Redis & Jwt。
* 权限认证使用Jwt支持多终端认证系统。
* 支持加载动态权限菜单,多方式轻松权限控制。
* 高效率开发,使用代码生成器可以一键生成前后端代码。
* 提供了技术栈([Vue3](https://v3.cn.vuejs.org) [Element Plus](https://element-plus.org/zh-CN) [Vite](https://cn.vitejs.dev))版本[RuoYi-Vue3](https://github.com/yangzongzhuan/RuoYi-Vue3),保持同步更新。
* 提供了单应用版本[RuoYi-Vue-fast](https://github.com/yangzongzhuan/RuoYi-Vue-fast)Oracle版本[RuoYi-Vue-Oracle](https://github.com/yangzongzhuan/RuoYi-Vue-Oracle),保持同步更新。
* 不分离版本,请移步[RuoYi](https://gitee.com/y_project/RuoYi),微服务版本,请移步[RuoYi-Cloud](https://gitee.com/y_project/RuoYi-Cloud)
* 阿里云折扣场:[点我进入](http://aly.ruoyi.vip),腾讯云秒杀场:[点我进入](http://txy.ruoyi.vip)&nbsp;&nbsp;
* 阿里云优惠券:[点我领取](https://www.aliyun.com/minisite/goods?userCode=brki8iof&share_source=copy_link),腾讯云优惠券:[点我领取](https://cloud.tencent.com/redirect.php?redirect=1025&cps_key=198c8df2ed259157187173bc7f4f32fd&from=console)&nbsp;&nbsp;
## 内置功能
1. 用户管理:用户是系统操作者,该功能主要完成系统用户配置。
2. 部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。
3. 岗位管理:配置系统用户所属担任职务。
4. 菜单管理:配置系统菜单,操作权限,按钮权限标识等。
5. 角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。
6. 字典管理:对系统中经常使用的一些较为固定的数据进行维护。
7. 参数管理:对系统动态配置常用参数。
8. 通知公告:系统通知公告信息发布维护。
9. 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。
10. 登录日志:系统登录日志记录查询包含登录异常。
11. 在线用户:当前系统中活跃用户状态监控。
12. 定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。
13. 代码生成前后端代码的生成java、html、xml、sql支持CRUD下载 。
14. 系统接口根据业务代码自动生成相关的api接口文档。
15. 服务监控监视当前系统CPU、内存、磁盘、堆栈等相关信息。
16. 缓存监控:对系统的缓存信息查询,命令统计等。
17. 在线构建器拖动表单元素生成相应的HTML代码。
18. 连接池监视监视当前系统数据库连接池状态可进行分析SQL找出系统性能瓶颈。
## 在线体验
- admin/admin123
- 陆陆续续收到一些打赏,为了更好的体验已用于演示服务器升级。谢谢各位小伙伴。
演示地址http://vue.ruoyi.vip
文档地址http://doc.ruoyi.vip
## 演示图
<table>
<tr>
<td><img src="https://oscimg.oschina.net/oscnet/cd1f90be5f2684f4560c9519c0f2a232ee8.jpg"/></td>
<td><img src="https://oscimg.oschina.net/oscnet/1cbcf0e6f257c7d3a063c0e3f2ff989e4b3.jpg"/></td>
</tr>
<tr>
<td><img src="https://oscimg.oschina.net/oscnet/up-8074972883b5ba0622e13246738ebba237a.png"/></td>
<td><img src="https://oscimg.oschina.net/oscnet/up-9f88719cdfca9af2e58b352a20e23d43b12.png"/></td>
</tr>
<tr>
<td><img src="https://oscimg.oschina.net/oscnet/up-39bf2584ec3a529b0d5a3b70d15c9b37646.png"/></td>
<td><img src="https://oscimg.oschina.net/oscnet/up-936ec82d1f4872e1bc980927654b6007307.png"/></td>
</tr>
<tr>
<td><img src="https://oscimg.oschina.net/oscnet/up-b2d62ceb95d2dd9b3fbe157bb70d26001e9.png"/></td>
<td><img src="https://oscimg.oschina.net/oscnet/up-d67451d308b7a79ad6819723396f7c3d77a.png"/></td>
</tr>
<tr>
<td><img src="https://oscimg.oschina.net/oscnet/5e8c387724954459291aafd5eb52b456f53.jpg"/></td>
<td><img src="https://oscimg.oschina.net/oscnet/644e78da53c2e92a95dfda4f76e6d117c4b.jpg"/></td>
</tr>
<tr>
<td><img src="https://oscimg.oschina.net/oscnet/up-8370a0d02977eebf6dbf854c8450293c937.png"/></td>
<td><img src="https://oscimg.oschina.net/oscnet/up-49003ed83f60f633e7153609a53a2b644f7.png"/></td>
</tr>
<tr>
<td><img src="https://oscimg.oschina.net/oscnet/up-d4fe726319ece268d4746602c39cffc0621.png"/></td>
<td><img src="https://oscimg.oschina.net/oscnet/up-c195234bbcd30be6927f037a6755e6ab69c.png"/></td>
</tr>
<tr>
<td><img src="https://oscimg.oschina.net/oscnet/b6115bc8c31de52951982e509930b20684a.jpg"/></td>
<td><img src="https://oscimg.oschina.net/oscnet/up-5e4daac0bb59612c5038448acbcef235e3a.png"/></td>
</tr>
</table>
## 若依前后端分离交流群
QQ群 [![加入QQ群](https://img.shields.io/badge/已满-937441-blue.svg)](https://jq.qq.com/?_wv=1027&k=5bVB1og) [![加入QQ群](https://img.shields.io/badge/已满-887144332-blue.svg)](https://jq.qq.com/?_wv=1027&k=5eiA4DH) [![加入QQ群](https://img.shields.io/badge/已满-180251782-blue.svg)](https://jq.qq.com/?_wv=1027&k=5AxMKlC) [![加入QQ群](https://img.shields.io/badge/已满-104180207-blue.svg)](https://jq.qq.com/?_wv=1027&k=51G72yr) [![加入QQ群](https://img.shields.io/badge/已满-186866453-blue.svg)](https://jq.qq.com/?_wv=1027&k=VvjN2nvu) [![加入QQ群](https://img.shields.io/badge/已满-201396349-blue.svg)](https://jq.qq.com/?_wv=1027&k=5vYAqA05) [![加入QQ群](https://img.shields.io/badge/已满-101456076-blue.svg)](https://jq.qq.com/?_wv=1027&k=kOIINEb5) [![加入QQ群](https://img.shields.io/badge/已满-101539465-blue.svg)](https://jq.qq.com/?_wv=1027&k=UKtX5jhs) [![加入QQ群](https://img.shields.io/badge/已满-264312783-blue.svg)](https://jq.qq.com/?_wv=1027&k=EI9an8lJ) [![加入QQ群](https://img.shields.io/badge/已满-167385320-blue.svg)](https://jq.qq.com/?_wv=1027&k=SWCtLnMz) [![加入QQ群](https://img.shields.io/badge/已满-104748341-blue.svg)](https://jq.qq.com/?_wv=1027&k=96Dkdq0k) [![加入QQ群](https://img.shields.io/badge/已满-160110482-blue.svg)](https://jq.qq.com/?_wv=1027&k=0fsNiYZt) [![加入QQ群](https://img.shields.io/badge/已满-170801498-blue.svg)](https://jq.qq.com/?_wv=1027&k=7xw4xUG1) [![加入QQ群](https://img.shields.io/badge/已满-108482800-blue.svg)](https://jq.qq.com/?_wv=1027&k=eCx8eyoJ) [![加入QQ群](https://img.shields.io/badge/已满-101046199-blue.svg)](https://jq.qq.com/?_wv=1027&k=SpyH2875) [![加入QQ群](https://img.shields.io/badge/已满-136919097-blue.svg)](https://jq.qq.com/?_wv=1027&k=tKEt51dz) [![加入QQ群](https://img.shields.io/badge/已满-143961921-blue.svg)](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=0vBbSb0ztbBgVtn3kJS-Q4HUNYwip89G&authKey=8irq5PhutrZmWIvsUsklBxhj57l%2F1nOZqjzigkXZVoZE451GG4JHPOqW7AW6cf0T&noverify=0&group_code=143961921) [![加入QQ群](https://img.shields.io/badge/已满-174951577-blue.svg)](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=ZFAPAbp09S2ltvwrJzp7wGlbopsc0rwi&authKey=HB2cxpxP2yspk%2Bo3WKTBfktRCccVkU26cgi5B16u0KcAYrVu7sBaE7XSEqmMdFQp&noverify=0&group_code=174951577) [![加入QQ群](https://img.shields.io/badge/已满-161281055-blue.svg)](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=Fn2aF5IHpwsy8j6VlalNJK6qbwFLFHat&authKey=uyIT%2B97x2AXj3odyXpsSpVaPMC%2Bidw0LxG5MAtEqlrcBcWJUA%2FeS43rsF1Tg7IRJ&noverify=0&group_code=161281055) [![加入QQ群](https://img.shields.io/badge/已满-138988063-blue.svg)](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=XIzkm_mV2xTsUtFxo63bmicYoDBA6Ifm&authKey=dDW%2F4qsmw3x9govoZY9w%2FoWAoC4wbHqGal%2BbqLzoS6VBarU8EBptIgPKN%2FviyC8j&noverify=0&group_code=138988063) [![加入QQ群](https://img.shields.io/badge/151450850-blue.svg)](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=DkugnCg68PevlycJSKSwjhFqfIgrWWwR&authKey=pR1Pa5lPIeGF%2FFtIk6d%2FGB5qFi0EdvyErtpQXULzo03zbhopBHLWcuqdpwY241R%2F&noverify=0&group_code=151450850) 点击按钮入群。

12
bin/clean.bat Normal file
View File

@@ -0,0 +1,12 @@
@echo off
echo.
echo [<5B><>Ϣ] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>target<65><74><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD>
echo.
%~d0
cd %~dp0
cd ..
call mvn clean
pause

12
bin/package.bat Normal file
View File

@@ -0,0 +1,12 @@
@echo off
echo.
echo [<5B><>Ϣ] <20><><EFBFBD><EFBFBD>Web<65><62><EFBFBD>̣<EFBFBD><CCA3><EFBFBD><EFBFBD><EFBFBD>war/jar<61><72><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
echo.
%~d0
cd %~dp0
cd ..
call mvn clean package -Dmaven.test.skip=true
pause

14
bin/run.bat Normal file
View File

@@ -0,0 +1,14 @@
@echo off
echo.
echo [<5B><>Ϣ] ʹ<><CAB9>Jar<61><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Web<65><62><EFBFBD>̡<EFBFBD>
echo.
cd %~dp0
cd ../ruoyi-admin/target
set JAVA_OPTS=-Xms256m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m
java -jar %JAVA_OPTS% ruoyi-admin.jar
cd bin
pause

108
business/pom.xml Normal file
View File

@@ -0,0 +1,108 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>ruoyi</artifactId>
<groupId>com.ruoyi</groupId>
<version>3.8.8</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>business</artifactId>
<description>
业务模块
</description>
<dependencies>
<!-- 通用工具-->
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-common</artifactId>
</dependency>
<!-- &lt;!&ndash; Mysql驱动包 &ndash;&gt;-->
<!-- <dependency>-->
<!-- <groupId>mysql</groupId>-->
<!-- <artifactId>mysql-connector-java</artifactId>-->
<!-- </dependency>-->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>3.0.3</version>
</dependency>
<!-- 防止进入swagger页面报类型转换错误排除3.0.0中的引用手动增加1.6.2版本 -->
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-models</artifactId>
<version>1.6.2</version>
</dependency>
<!-- 核心模块-->
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-framework</artifactId>
</dependency>
<!-- 加密解密工具-->
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
<version>1.70</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>1.3.1.Final</version>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>1.3.1.Final</version>
<scope>provided</scope>
</dependency>
<!--rocketmq-->
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-spring-boot-starter</artifactId>
<version>2.1.1</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.1.0</version>
<exclusions>
<exclusion>
<artifactId>poi-ooxml-schemas</artifactId>
<groupId>org.apache.poi</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.83</version>
</dependency>
</dependencies>
</project>

View File

@@ -0,0 +1,54 @@
package com.fizz.business.controller;
import com.fizz.business.domain.CrmPdiPlan;
import com.fizz.business.form.PlanQueryForm;
import com.fizz.business.service.CrmPdiPlanService;
import com.ruoyi.common.annotation.Anonymous;
import com.ruoyi.common.core.domain.R;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/pdi")
@Api("南钢计划接口")
public class CrmPdiPlanController {
@Autowired
private CrmPdiPlanService crmPdiPlanService;
@GetMapping("/get/{coilid}")
@ApiOperation("通过钢卷号查询计划")
public R<CrmPdiPlan> getByCoilId(@PathVariable String coilid) {
return R.ok(crmPdiPlanService.getByCoilIdAndOperId(coilid));
}
@PostMapping("/add")
@ApiOperation("新增计划")
public boolean add(@RequestBody CrmPdiPlan crmPdiPlan) {
return crmPdiPlanService.addCrmPdiPlan(crmPdiPlan);
}
@PutMapping("/update")
@ApiOperation("修改计划")
public boolean update(@RequestBody CrmPdiPlan crmPdiPlan) {
return crmPdiPlanService.updateCrmPdiPlan(crmPdiPlan);
}
@PostMapping("/delete")
@ApiOperation("计划删除")
public boolean delete(@RequestBody List<Long> coilid) {
return crmPdiPlanService.deleteCrmPdiPlan(coilid);
}
@PostMapping("/list")
@ApiOperation("查询计划列表")
public R<List<CrmPdiPlan>> list(@RequestBody PlanQueryForm form) {
return R.ok(crmPdiPlanService.listAll(form));
}
}

View File

@@ -0,0 +1,51 @@
package com.fizz.business.controller;
import com.fizz.business.domain.CrmPdoExcoil;
import com.fizz.business.service.CrmPdoExcoilService;
import com.ruoyi.common.annotation.Anonymous;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/pdo")
@Api("南钢实绩接口")
public class CrmPdoExcoilController {
@Autowired
private CrmPdoExcoilService crmPdoExcoilService;
@GetMapping("/get/{excoilid}/{operid}")
@ApiOperation("查询实绩")
public CrmPdoExcoil getByExcoilIdAndOperId(@PathVariable String excoilid, @PathVariable Integer operid) {
return crmPdoExcoilService.getByExcoilIdAndOperId(excoilid, operid);
}
@PostMapping("/add")
@ApiOperation("新增实绩")
public boolean add(@RequestBody CrmPdoExcoil crmPdoExcoil) {
return crmPdoExcoilService.addCrmPdoExcoil(crmPdoExcoil);
}
@PutMapping("/update")
@ApiOperation("修改")
public boolean update(@RequestBody CrmPdoExcoil crmPdoExcoil) {
return crmPdoExcoilService.updateCrmPdoExcoil(crmPdoExcoil);
}
@DeleteMapping("/delete/{excoilid}/{operid}")
@ApiOperation("删除实绩")
public boolean delete(@PathVariable String excoilid, @PathVariable Integer operid) {
return crmPdoExcoilService.deleteCrmPdoExcoil(excoilid, operid);
}
@GetMapping("/list")
@ApiOperation("查询实绩列表")
public List<CrmPdoExcoil> list() {
return crmPdoExcoilService.listAll();
}
}

View File

@@ -0,0 +1,77 @@
package com.fizz.business.controller;
import com.fizz.business.domain.CrmPdiPlan;
import com.fizz.business.domain.RollData;
import com.fizz.business.domain.RollHistory;
import com.fizz.business.form.RollHistoryForm;
import com.fizz.business.service.RollDataService;
import com.fizz.business.service.RollHistoryService;
import com.fizz.business.vo.OnlineRollDataVO;
import com.fizz.business.vo.ReadyRollDataVO;
import com.ruoyi.common.annotation.Anonymous;
import com.ruoyi.common.core.domain.R;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
@RestController
@RequestMapping("/roller")
@Api("南钢轧辊接口")
public class RollerController {
@Resource
RollHistoryService rollHistoryService;
@Resource
RollDataService rollDataService;
@GetMapping("/data/backup")
@ApiOperation("轧辊数据-获取当前备辊信息")
public R<List<ReadyRollDataVO> > getReadyRollList() {
return R.ok(rollDataService.getReadyRollList(null,null,"BACKUP"));
}
@GetMapping("/data/ready/{position}/{type}")
@ApiOperation("轧辊数据-获取离线辊信息")
public R<List<ReadyRollDataVO> > getOfflineRollList(@PathVariable String position, @PathVariable String type) {
return R.ok(rollDataService.getReadyRollList(position,type,"OFFLINE"));
}
@GetMapping("/data/online")
@ApiOperation("轧辊数据-获取在线辊信息")
public R<List<OnlineRollDataVO>> getOnlineRollList() {
return R.ok(rollDataService.getOnlineRollList());
}
@GetMapping("/change/backup")
@ApiOperation("轧辊操作-备辊")
public R<List<String>> backupRoll(@RequestBody List<ReadyRollDataVO> rollList) {
return R.ok(rollDataService.BackupRoll(rollList));
}
@GetMapping("/change/online")
@ApiOperation("轧辊操作-上线")
public R<List<OnlineRollDataVO>> onlineRoll() {
return R.ok(rollDataService.onlineRoll());
}
@GetMapping("/history/changeid")
@ApiOperation("轧辊历史-获取所有换辊号")
public R<List<String>> getChangeIdList() {
return R.ok(rollHistoryService.getChangeIdList());
}
@GetMapping("/history/rollid")
@ApiOperation("轧辊历史-获取所有轧辊号")
public R<List<String>> getRollIdList() {
return R.ok(rollHistoryService.getRollIdList());
}
@GetMapping("/history/list")
@ApiOperation("轧辊历史-获取换辊记录")
public R<List<RollHistory>> getRollHistorytList(@RequestBody RollHistoryForm rollHistoryForm) {
return R.ok(rollHistoryService.getRollHistory(rollHistoryForm));
}
}

View File

@@ -0,0 +1,121 @@
package com.fizz.business.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.sql.Timestamp;
import java.time.LocalDateTime;
@Data
@TableName("crm_pdi_plan")
public class CrmPdiPlan implements Serializable {
@TableId
@ApiModelProperty(value = "id")
private Long id;
@ApiModelProperty(value = "序列号")
private Integer seqid;
@ApiModelProperty(value = "多火轧制次数")
private Integer operid;
@ApiModelProperty(value = "卷ID")
private String coilid;
@ApiModelProperty(value = "热轧卷ID")
private String hotCoilid;
@ApiModelProperty(value = "道次数")
private Integer passno;
@ApiModelProperty(value = "退火厚度")
private Integer annealThick;
@ApiModelProperty(value = "入口厚度")
private Float entryThick;
@ApiModelProperty(value = "入口宽度")
private Float entryWidth;
@ApiModelProperty(value = "入口重量")
private Float entryWeight;
@ApiModelProperty(value = "入口长度")
private Float entryLength;
@ApiModelProperty(value = "入口内径")
private Integer entryInnerDiameter;
@ApiModelProperty(value = "入口外径")
private Integer entryOuterDiameter;
@ApiModelProperty(value = "出口卷号")
private String exitCoilid;
@ApiModelProperty(value = "下工序代码")
private String nextUnit;
@ApiModelProperty(value = "分割数量")
private Integer splitNum;
@ApiModelProperty(value = "切割模式")
private Integer cutMode;
@ApiModelProperty(value = "出口重量1")
private Float exitValue1;
@ApiModelProperty(value = "出口重量2")
private Float exitValue2;
@ApiModelProperty(value = "出口重量3")
private Float exitValue3;
@ApiModelProperty(value = "出口重量4")
private Float exitValue4;
@ApiModelProperty(value = "出口重量5")
private Float exitValue5;
@ApiModelProperty(value = "出口重量6")
private Float exitValue6;
@ApiModelProperty(value = "出口重量")
private Float exitWeight;
@ApiModelProperty(value = "出口长度")
private Float exitLength;
@ApiModelProperty(value = "出口厚度")
private Float exitThick;
@ApiModelProperty(value = "出口宽度")
private Float exitWidth;
@ApiModelProperty(value = "等级")
private String grade;
@ApiModelProperty(value = "屈服强度")
private Integer yieldStrength;
@ApiModelProperty(value = "抗拉强度")
private Integer tensileStrength;
@ApiModelProperty(value = "状态")
private String status;
@ApiModelProperty(value = "记录日期")
private LocalDateTime insdate;
@ApiModelProperty(value = "上线时间")
private LocalDateTime onlineTime;
@ApiModelProperty(value = "开始日期")
private LocalDateTime startDate;
@ApiModelProperty(value = "结束日期")
private LocalDateTime endDate;
}

View File

@@ -0,0 +1,105 @@
package com.fizz.business.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.sql.Timestamp;
@Data
@TableName("crm_pdo_excoil")
public class CrmPdoExcoil implements Serializable {
@TableId
@ApiModelProperty(value = "成品卷ID")
private String excoilid;
@ApiModelProperty(value = "进入卷ID")
private String encoilid;
@ApiModelProperty(value = "钢种")
private String grade;
@ApiModelProperty(value = "多火轧制次数")
private Integer operid;
@ApiModelProperty(value = "分卷id")
private Integer subid;
@ApiModelProperty(value = "头部位置")
private Float headpos;
@ApiModelProperty(value = "尾部位置")
private Float tailpos;
@ApiModelProperty(value = "班次")
private String shift;
@ApiModelProperty(value = "班组")
private String crew;
@ApiModelProperty(value = "退火厚度")
private Float annealThick;
@ApiModelProperty(value = "入口厚度")
private Float entryThick;
@ApiModelProperty(value = "入口宽度")
private Float entryWidth;
@ApiModelProperty(value = "入口重量")
private Float entryWeight;
@ApiModelProperty(value = "成品厚度")
private Float exitThick;
@ApiModelProperty(value = "成品宽度")
private Float exitWidth;
@ApiModelProperty(value = "成品长度")
private Float exitLength;
@ApiModelProperty(value = "成品内径")
private Float exitInnerDiameter;
@ApiModelProperty(value = "理论出口重量")
private Float calcExitWeight;
@ApiModelProperty(value = "实际出口重量")
private Float measExitWeight;
@ApiModelProperty(value = "外径")
private Float outerDiameter;
@ApiModelProperty(value = "状态")
private String status;
@ApiModelProperty(value = "上线时间")
private Timestamp onlineDate;
@ApiModelProperty(value = "开始时间")
private Timestamp startDate;
@ApiModelProperty(value = "结束时间")
private Timestamp endDate;
@ApiModelProperty(value = "插入日期")
private Timestamp insdate;
@ApiModelProperty(value = "质量")
private Float quality;
@ApiModelProperty(value = "热卷ID")
private String hotCoilid;
@ApiModelProperty(value = "下机组代码")
private String nextUnit;
@ApiModelProperty(value = "备注")
private String comments;
@ApiModelProperty(value = "目的地")
private String destination;
}

View File

@@ -0,0 +1,36 @@
package com.fizz.business.domain;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
@Data
@TableName("plant_config")
@ApiModel(value = "PlantConfig对象", description = "配置数据")
public class PlantConfig implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "名称")
private String varname;
@ApiModelProperty(value = "arrayindex")
private Integer arrayindex;
@ApiModelProperty(value = "描述")
private String description;
@ApiModelProperty(value = "")
private String value;
@ApiModelProperty(value = "单位")
private String unit;
@ApiModelProperty(value = "时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime timestamp;
}

View File

@@ -0,0 +1,39 @@
package com.fizz.business.domain;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
@Data
@TableName("roll_change_cycle")
@ApiModel(value = "RollChangeCycle对象", description = "换辊")
public class RollChangeCycle implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "类型")
private String type;
@ApiModelProperty(value = "位置")
private String position;
@ApiModelProperty(value = "机架号")
private Integer standid;
@ApiModelProperty(value = "轧制长度")
private Double rolledLength;
@ApiModelProperty(value = "轧制重量")
private Double rolledWeight;
@ApiModelProperty(value = "轧制数量")
private Integer rolledCount;
@ApiModelProperty(value = "insdate")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime insdate;
}

View File

@@ -0,0 +1,88 @@
package com.fizz.business.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
@TableName("roll_data")
@ApiModel(value = "RollData对象", description = "轧辊数据")
@Getter
@Setter
@Builder
public class RollData implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "rollid",type = IdType.INPUT)
@ApiModelProperty(value = "轧辊号")
private String rollid;
@ApiModelProperty(value = "工序")
private String seton;
@ApiModelProperty(value = "类型")
private String type;
@ApiModelProperty(value = "位置")
private String position;
@ApiModelProperty(value = "机架号")
private Integer standid;
@ApiModelProperty(value = "消耗")
private Integer composition;
@ApiModelProperty(value = "直径")
private Double diameter;
@ApiModelProperty(value = "粗糙度")
private Double rough;
@ApiModelProperty(value = "凸度")
private Double crown;
@ApiModelProperty(value = "轧制长度")
private Double rolledLength;
@ApiModelProperty(value = "轧制重量")
private Double rolledWeight;
@ApiModelProperty(value = "轧制数量")
private Integer rolledCount;
@ApiModelProperty(value = "总轧制重量")
private Double totalRolledWeight;
@ApiModelProperty(value = "总轧制长度")
private Double totalRolledLength;
@ApiModelProperty(value = "总轧制数量")
private Integer totalRolledCount;
@ApiModelProperty(value = "修理次数")
private Integer grindCount;
@ApiModelProperty(value = "状态")
private String status;
@ApiModelProperty(value = "Installation Time")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime instalTime;
@ApiModelProperty(value = "Deinstallation Time")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime deinstalTime;
@ApiModelProperty(value = "Update Time")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime updtime;
}

View File

@@ -0,0 +1,94 @@
package com.fizz.business.domain;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
@Getter
@Setter
@Builder
@TableName("Roll_history")
@ApiModel(value = "RollHistory对象", description = "轧辊历史")
public class RollHistory implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "轧辊号")
private String rollid;
@ApiModelProperty(value = "换辊id")
private String changeid;
@ApiModelProperty(value = "")
private String shift;
@ApiModelProperty(value = "")
private String crew;
@ApiModelProperty(value = "工序")
private String seton;
@ApiModelProperty(value = "类型")
private String type;
@ApiModelProperty(value = "位置")
private String position;
@ApiModelProperty(value = "机架号")
private Integer standid;
@ApiModelProperty(value = "消化")
private Integer composition;
@ApiModelProperty(value = "直径")
private Double diameter;
@ApiModelProperty(value = "粗糙度")
private Double rough;
@ApiModelProperty(value = "凸度")
private Double crown;
@ApiModelProperty(value = "轧制长度")
private Double rolledLength;
@ApiModelProperty(value = "轧制重量")
private Double rolledWeight;
@ApiModelProperty(value = "轧制数量")
private Integer rolledCount;
@ApiModelProperty(value = "总轧制重量")
private Double totalRolledWeight;
@ApiModelProperty(value = "总轧制长度")
private Double totalRolledLength;
@ApiModelProperty(value = "总轧制数量")
private Integer totalRolledCount;
@ApiModelProperty(value = "修理次数")
private Integer grindCount;
@ApiModelProperty(value = "换辊类型")
private String changeType;
@ApiModelProperty(value = "Installation Time")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime instalTime;
@ApiModelProperty(value = "Deinstallation Time")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime deinstalTime;
@ApiModelProperty(value = "changeTime")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime changeTime;
}

View File

@@ -0,0 +1,28 @@
package com.fizz.business.domain;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@TableName("shift_history")
@Data
@ApiModel(value = "RollData对象", description = "轧辊数据")
public class ShiftHistory implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "班次")
private String shift;
@ApiModelProperty(value = "组次")
private String crew;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "时间")
private LocalDateTime insdate;
}

View File

@@ -0,0 +1 @@
11111

View File

@@ -0,0 +1,48 @@
package com.fizz.business.form;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class PlanQueryForm {
@ApiModelProperty(value = "卷ID")
private String coilid;
@ApiModelProperty(value = "热轧卷ID")
private String hotCoilid;
@ApiModelProperty(value = "道次数")
private Integer passno;
@ApiModelProperty(value = "入口厚度")
private Float entryThick;
@ApiModelProperty(value = "入口宽度")
private Float entryWidth;
@ApiModelProperty(value = "入口内径")
private Integer entryInnerDiameter;
@ApiModelProperty(value = "入口外径")
private Integer entryOuterDiameter;
@ApiModelProperty(value = "状态")
private String status;
@ApiModelProperty(value = "记录日期")
private LocalDateTime insdate;
@ApiModelProperty(value = "上线时间")
private LocalDateTime onlineTime;
@ApiModelProperty(value = "开始日期")
private LocalDateTime startDate;
@ApiModelProperty(value = "结束日期")
private LocalDateTime endDate;
}

View File

@@ -0,0 +1,24 @@
package com.fizz.business.form;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class RollHistoryForm {
@ApiModelProperty(value = "开始时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime startTime;
@ApiModelProperty(value = "结束时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime endTime;
@ApiModelProperty(value = "换辊号")
private String changeId;
@ApiModelProperty(value = "轧辊号")
private String rollid;
}

View File

@@ -0,0 +1 @@
11111

View File

@@ -0,0 +1,9 @@
package com.fizz.business.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.fizz.business.domain.CrmPdiPlan;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface CrmPdiPlanMapper extends BaseMapper<CrmPdiPlan> {
}

View File

@@ -0,0 +1,9 @@
package com.fizz.business.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.fizz.business.domain.CrmPdoExcoil;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface CrmPdoExcoilMapper extends BaseMapper<CrmPdoExcoil> {
}

View File

@@ -0,0 +1,11 @@
package com.fizz.business.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.fizz.business.domain.PlantConfig;
import org.apache.ibatis.annotations.Mapper;
import java.util.Map;
@Mapper
public interface PlantConfigMapper extends BaseMapper<PlantConfig> {
}

View File

@@ -0,0 +1,9 @@
package com.fizz.business.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.fizz.business.domain.RollChangeCycle;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface RollChangeCycleMapper extends BaseMapper<RollChangeCycle> {
}

View File

@@ -0,0 +1,9 @@
package com.fizz.business.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.fizz.business.domain.RollData;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface RollDataMapper extends BaseMapper<RollData> {
}

View File

@@ -0,0 +1,15 @@
package com.fizz.business.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.fizz.business.domain.RollHistory;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface RollHistoryMapper extends BaseMapper<RollHistory> {
List<String> getChangeIdList();
List<String> getRollIdList();
}

View File

@@ -0,0 +1,9 @@
package com.fizz.business.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.fizz.business.domain.ShiftHistory;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface ShiftHistoryMapper extends BaseMapper<ShiftHistory> {
}

View File

@@ -0,0 +1 @@
11111

View File

@@ -0,0 +1 @@
11111

View File

@@ -0,0 +1,20 @@
package com.fizz.business.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.fizz.business.domain.CrmPdiPlan;
import com.fizz.business.form.PlanQueryForm;
import java.util.List;
public interface CrmPdiPlanService extends IService<CrmPdiPlan> {
public CrmPdiPlan getByCoilIdAndOperId(String coilid);
public boolean addCrmPdiPlan(CrmPdiPlan crmPdiPlan);
public boolean updateCrmPdiPlan(CrmPdiPlan crmPdiPlan);
public boolean deleteCrmPdiPlan(List<Long> coilid);
public List<CrmPdiPlan> listAll(PlanQueryForm form);
}

View File

@@ -0,0 +1,19 @@
package com.fizz.business.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.fizz.business.domain.CrmPdoExcoil;
import java.util.List;
public interface CrmPdoExcoilService extends IService<CrmPdoExcoil> {
CrmPdoExcoil getByExcoilIdAndOperId(String excoilid, Integer operid);
boolean addCrmPdoExcoil(CrmPdoExcoil crmPdoExcoil);
boolean updateCrmPdoExcoil(CrmPdoExcoil crmPdoExcoil);
boolean deleteCrmPdoExcoil(String excoilid, Integer operid);
List<CrmPdoExcoil> listAll();
}

View File

@@ -0,0 +1,10 @@
package com.fizz.business.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.fizz.business.domain.PlantConfig;
import java.util.Map;
public interface PlantConfigService extends IService<PlantConfig> {
Map<String,PlantConfig> getAllConfig();
}

View File

@@ -0,0 +1,7 @@
package com.fizz.business.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.fizz.business.domain.RollChangeCycle;
public interface RollChangeCycleService extends IService<RollChangeCycle> {
}

View File

@@ -0,0 +1,20 @@
package com.fizz.business.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.fizz.business.domain.RollData;
import com.fizz.business.vo.OnlineRollDataVO;
import com.fizz.business.vo.ReadyRollDataVO;
import java.util.List;
public interface RollDataService extends IService<RollData> {
List<RollData> getList(String position,String type,String status);
List<ReadyRollDataVO> getReadyRollList(String position,String type,String status);
List<OnlineRollDataVO> getOnlineRollList();
List<String> BackupRoll(List<ReadyRollDataVO> rollList);
List<OnlineRollDataVO> onlineRoll();
}

View File

@@ -0,0 +1,15 @@
package com.fizz.business.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.fizz.business.domain.RollHistory;
import com.fizz.business.form.RollHistoryForm;
import java.util.List;
public interface RollHistoryService extends IService<RollHistory> {
List<String> getChangeIdList();
List<String> getRollIdList();
List<RollHistory> getRollHistory(RollHistoryForm rollHistoryForm);
}

View File

@@ -0,0 +1,15 @@
package com.fizz.business.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.fizz.business.domain.ShiftHistory;
import java.time.LocalDateTime;
import java.util.List;
public interface ShiftHistoryService extends IService<ShiftHistory> {
ShiftHistory getCurrent();
List<ShiftHistory> getShiftCurrentListByDate(LocalDateTime startTime, LocalDateTime endTime);
List<String> getCrews();
}

View File

@@ -0,0 +1,68 @@
package com.fizz.business.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fizz.business.domain.CrmPdiPlan;
import com.fizz.business.form.PlanQueryForm;
import com.fizz.business.mapper.CrmPdiPlanMapper;
import com.fizz.business.service.CrmPdiPlanService;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class CrmPdiPlanServiceImpl extends ServiceImpl<CrmPdiPlanMapper, CrmPdiPlan> implements CrmPdiPlanService {
/**
* 根据卷ID和操作员ID查询单个记录
* @param coilid 卷ID
* @return 查询到的CrmPdiPlan对象
*/
public CrmPdiPlan getByCoilIdAndOperId(String coilid) {
QueryWrapper<CrmPdiPlan> queryWrapper = new QueryWrapper<>();
queryWrapper.like("coilid", coilid);
return this.getOne(queryWrapper);
}
/**
* 添加新记录
* @param crmPdiPlan 要添加的CrmPdiPlan对象
* @return 是否添加成功
*/
public boolean addCrmPdiPlan(CrmPdiPlan crmPdiPlan) {
return this.save(crmPdiPlan);
}
/**
* 更新已有记录
* @param crmPdiPlan 要更新的CrmPdiPlan对象
* @return 是否更新成功
*/
public boolean updateCrmPdiPlan(CrmPdiPlan crmPdiPlan) {
return this.updateById(crmPdiPlan);
}
/**
* 根据卷ID和操作员ID删除记录
* @param coilid 卷ID
* @return 是否删除成功
*/
public boolean deleteCrmPdiPlan(List<Long> coilid) {
QueryWrapper<CrmPdiPlan> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("COILID", coilid);
return this.removeBatchByIds(coilid);
}
/**
* 查询所有记录
* @return CrmPdiPlan对象的列表
*/
public List<CrmPdiPlan> listAll(PlanQueryForm form) {
QueryWrapper<CrmPdiPlan> queryWrapper = new QueryWrapper<>();
queryWrapper.in("STATUS", "NEW","READY");
return this.list();
}
}

View File

@@ -0,0 +1,64 @@
package com.fizz.business.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fizz.business.domain.CrmPdoExcoil;
import com.fizz.business.mapper.CrmPdoExcoilMapper;
import com.fizz.business.service.CrmPdoExcoilService;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class CrmPdoExcoilServiceImpl extends ServiceImpl<CrmPdoExcoilMapper, CrmPdoExcoil> implements CrmPdoExcoilService {
/**
* 根据退出卷ID和操作员ID查询记录
* @param excoilid 退出卷ID
* @param operid 操作员ID
* @return 查询到的CrmPdoExcoil对象
*/
public CrmPdoExcoil getByExcoilIdAndOperId(String excoilid, Integer operid) {
QueryWrapper<CrmPdoExcoil> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("excoilid", excoilid).eq("operid", operid);
return this.getOne(queryWrapper);
}
/**
* 添加新记录
* @param crmPdoExcoil 要添加的CrmPdoExcoil对象
* @return 是否添加成功
*/
public boolean addCrmPdoExcoil(CrmPdoExcoil crmPdoExcoil) {
return this.save(crmPdoExcoil);
}
/**
* 更新已有记录
* @param crmPdoExcoil 要更新的CrmPdoExcoil对象
* @return 是否更新成功
*/
public boolean updateCrmPdoExcoil(CrmPdoExcoil crmPdoExcoil) {
return this.updateById(crmPdoExcoil);
}
/**
* 根据退出卷ID和操作员ID删除记录
* @param excoilid 退出卷ID
* @param operid 操作员ID
* @return 是否删除成功
*/
public boolean deleteCrmPdoExcoil(String excoilid, Integer operid) {
QueryWrapper<CrmPdoExcoil> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("excoilid", excoilid).eq("operid", operid);
return this.remove(queryWrapper);
}
/**
* 查询所有记录
* @return CrmPdoExcoil对象的列表
*/
public List<CrmPdoExcoil> listAll() {
return this.list();
}
}

View File

@@ -0,0 +1,22 @@
package com.fizz.business.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fizz.business.domain.PlantConfig;
import com.fizz.business.mapper.PlantConfigMapper;
import com.fizz.business.service.PlantConfigService;
import org.springframework.stereotype.Service;
import java.util.Map;
import java.util.stream.Collectors;
@Service
public class PlantConfigServiceImpl extends ServiceImpl<PlantConfigMapper, PlantConfig> implements PlantConfigService {
@Override
public Map<String, PlantConfig> getAllConfig() {
return this.list().stream().collect(Collectors.toMap(
PlantConfig::getVarname,
obj -> obj,
(key1 , key2) -> key1
));
}
}

View File

@@ -0,0 +1,10 @@
package com.fizz.business.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fizz.business.domain.RollChangeCycle;
import com.fizz.business.mapper.RollChangeCycleMapper;
import com.fizz.business.service.RollChangeCycleService;
import org.springframework.stereotype.Service;
@Service
public class RollChangeCycleServiceImpl extends ServiceImpl<RollChangeCycleMapper, RollChangeCycle> implements RollChangeCycleService {
}

View File

@@ -0,0 +1,326 @@
package com.fizz.business.service.impl;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fizz.business.domain.PlantConfig;
import com.fizz.business.domain.RollData;
import com.fizz.business.domain.RollHistory;
import com.fizz.business.domain.ShiftHistory;
import com.fizz.business.mapper.RollDataMapper;
import com.fizz.business.service.PlantConfigService;
import com.fizz.business.service.RollDataService;
import com.fizz.business.service.RollHistoryService;
import com.fizz.business.service.ShiftHistoryService;
import com.fizz.business.vo.OnlineRollDataVO;
import com.fizz.business.vo.ReadyRollDataVO;
import com.ruoyi.common.utils.bean.BeanUtils;
import org.apache.commons.compress.utils.Lists;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Service
public class RollDataServiceImpl extends ServiceImpl<RollDataMapper, RollData> implements RollDataService {
@Resource
PlantConfigService plantConfigService;
@Resource
ShiftHistoryService shiftHistoryService;
@Resource
RollHistoryService rollHistoryService;
@Override
public List<RollData> getList(String position,String type,String status) {
QueryWrapper<RollData> queryWrapper = new QueryWrapper<>();
if(ObjectUtil.isNotEmpty(position)){
queryWrapper.eq("position", position);
}
if(ObjectUtil.isNotEmpty(type)){
queryWrapper.eq("type", type);
}
if(ObjectUtil.isNotEmpty(status)){
queryWrapper.eq("status", status);
}
queryWrapper.last(" order by FIELD(CONCAT(POSITION, '_', TYPE), " +
"'TOP_BACKUP', 'TOP_INTERMEDIATE', 'TOP_WORK', " +
"'BOTTOM_WORK','BOTTOM_INTERMEDIATE', 'BOTTOM_BACKUP')");
return this.list(queryWrapper);
}
@Override
public List<ReadyRollDataVO> getReadyRollList(String position,String type, String status) {
List<ReadyRollDataVO> readyRollDataVOList = new ArrayList<>();
List<RollData> rollDataList = getList(position, type,status);
for (RollData rollData : rollDataList) {
ReadyRollDataVO readyRollDataVO = new ReadyRollDataVO();
// 使用 BeanUtils 复制属性
BeanUtils.copyProperties(rollData, readyRollDataVO);
readyRollDataVOList.add(readyRollDataVO);
}
return readyRollDataVOList;
}
@Override
public List<OnlineRollDataVO> getOnlineRollList() {
Map<String, PlantConfig> plantConfigMap = plantConfigService.getAllConfig();
List<OnlineRollDataVO> readyRollDataVOList = new ArrayList<>();
List<RollData> rollDataList = getList(null, null,"ONLINE");
for (RollData rollData : rollDataList) {
OnlineRollDataVO onlineRollDataVO = new OnlineRollDataVO();
// 使用 BeanUtils 复制属性
BeanUtils.copyProperties(rollData, onlineRollDataVO);
String lengthKey="";
String weightKey="";
switch(rollData.getType()){
case "BACKUP":
lengthKey = "MAX_BUR_ROLLER_LENGTH";
weightKey = "MAX_BUR_ROLLER_WEIGHT";
break;
case "INTERMEDIATE":
lengthKey = "MAX_INTERMEDIATE_ROLLER_LENGTH";
weightKey = "MAX_INTERMEDIATE_ROLLER_WEIGHT";
break;
case "WORK":
lengthKey = "MAX_WORK_ROLLER_LENGTH";
weightKey = "MAX_WORK_ROLLER_WEIGHT";
break;
}
//轧制长度,轧制重量
if(plantConfigMap.containsKey(lengthKey)){
PlantConfig plantConfig = plantConfigMap.get(lengthKey);
double value = Double.parseDouble(plantConfig.getValue());
onlineRollDataVO.setUsableLength(value);
onlineRollDataVO.setLeftLength(value-onlineRollDataVO.getRolledWeight());
}
if(plantConfigMap.containsKey(weightKey)){
PlantConfig plantConfig = plantConfigMap.get(weightKey);
double value = Double.parseDouble(plantConfig.getValue());
onlineRollDataVO.setRolledWeight(value);
onlineRollDataVO.setLeftLength(value-onlineRollDataVO.getRolledWeight());
}
readyRollDataVOList.add(onlineRollDataVO);
}
return readyRollDataVOList;
}
@Override
public List<String> BackupRoll(List<ReadyRollDataVO> rollList) {
if(ObjectUtil.isEmpty(rollList)){
return Arrays.asList("轧辊数量为空,无法备辊");
}
//统一检查所有轧辊状态
List<String> rollidList = rollList.stream()
.map(ReadyRollDataVO::getRollid)
.collect(Collectors.toList());
List<RollData> rollDataList = this.baseMapper.selectBatchIds(rollidList);
if(rollDataList.stream()
.anyMatch(item->item.getStatus().equals("ONLINE"))){
return Arrays.asList("存在轧辊已在线,无法备辊");
}
Map<String, PlantConfig> plantConfigMap = plantConfigService.getAllConfig();
//检查是否成对
//检查辊径大小
//检查辊径差
List<String> result = new ArrayList<>();
//工作辊
checkRollDia( plantConfigMap,rollList,result,"WORK");
checkRollDia( plantConfigMap,rollList,result,"INTERMEDIATE");
checkRollDia( plantConfigMap,rollList,result,"BACKUP");
//清楚所有已有备辊,添加新备辊,有则更新数据,没有则新增
if(ObjectUtil.isEmpty(result)){
lambdaUpdate().set(RollData::getStatus,"OFFLINE")
.eq(RollData::getStatus,"BACKUP")
.update();
List<RollData> newDataList = Lists.newArrayList();
rollList.forEach(item->{
RollData temp = rollDataList.stream().filter(n->n.getRollid().equals(item.getRollid()))
.findFirst().orElse(RollData.builder()
.rollid(item.getRollid())
.position(item.getPosition())
.type(item.getType())
.seton("CRM")
.standid(1)
.grindCount(0)
.build());
//更新辊径、凸度和粗糙度
temp.setDiameter(temp.getDiameter());
temp.setCrown(temp.getCrown());
temp.setRough(temp.getRough());
newDataList.add(temp);
});
this.saveOrUpdateBatch(newDataList);
}
return result;
}
@Override
public List<OnlineRollDataVO> onlineRoll() {
List<RollData> backupRollList = getList(null, null,"BACKUP");
List<RollData> onlineRollList = getList(null, null,"ONLINE");
if(ObjectUtil.isEmpty(backupRollList)){
return getOnlineRollList();
}
ShiftHistory shiftHistory = shiftHistoryService.getCurrent();
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
String changeID = LocalDateTime.now().format(dateTimeFormatter);
List<RollHistory> rollHistoryList =Lists.newArrayList();
List<RollData> changeRollList =Lists.newArrayList();
//更换轧辊
backupRollList.forEach(item->{
//上线卷
item.setStatus("ONLINE");
item.setGrindCount(item.getGrindCount()+1);
item.setRolledCount(0);
item.setRolledWeight(0d);
item.setRolledLength(0d);
item.setInstalTime(LocalDateTime.now());
item.setDeinstalTime(LocalDateTime.now());
changeRollList.add(item);
RollHistory rollHistoryOn = RollHistory.builder().build();
BeanUtils.copyProperties(item, rollHistoryOn);
rollHistoryOn.setChangeid(changeID);
rollHistoryOn.setShift(shiftHistory.getShift());
rollHistoryOn.setCrew(shiftHistory.getCrew());
rollHistoryOn.setChangeType("ON");
rollHistoryOn.setChangeTime(LocalDateTime.now());
rollHistoryList.add(rollHistoryOn);
//下线卷
RollData onlineRoll = onlineRollList.stream().filter(n->n.getPosition().equals(item.getPosition())
&&n.getType().equals(item.getType()))
.findFirst().orElse(null);
if(ObjectUtil.isNotNull(onlineRoll)){
onlineRoll.setStatus("OFFLINE");
onlineRoll.setDeinstalTime(LocalDateTime.now());
changeRollList.add(onlineRoll);
RollHistory rollHistoryOff = RollHistory.builder().build();
BeanUtils.copyProperties(onlineRoll, rollHistoryOff);
rollHistoryOff.setChangeid(changeID);
rollHistoryOff.setShift(shiftHistory.getShift());
rollHistoryOff.setCrew(shiftHistory.getCrew());
rollHistoryOff.setChangeType("OFF");
rollHistoryOff.setChangeTime(LocalDateTime.now());
rollHistoryList.add(rollHistoryOff);
}
});
this.updateBatchById(changeRollList);
rollHistoryService.saveBatch(rollHistoryList);
return getOnlineRollList();
}
private void checkRollDia(Map<String, PlantConfig> plantConfigMap,List<ReadyRollDataVO> rollList,List<String> result,String type){
String name = "";
String maxValueKey = "";
String minValueKey = "";
String diffValueKey = "";
switch(type){
case "BACKUP":
maxValueKey = "MAX_BR_DIA";
minValueKey = "MIN_BR_DIA";
diffValueKey = "MAX_BR_DIA_DIFF";
name = "工作辊";
break;
case "INTERMEDIATE":
maxValueKey = "MAX_IR_DIA";
minValueKey = "MIN_IR_DIA";
diffValueKey = "MAX_IR_DIA_DIFF";
name = "工作辊";
break;
case "WORK":
maxValueKey = "MAX_WR_DIA";
minValueKey = "MIN_WR_DIA";
diffValueKey = "MAX_WR_DIA_DIFF";
name = "工作辊";
break;
}
List<ReadyRollDataVO> rolls = rollList.stream()
.filter(item->item.getType().equals(type))
.collect(Collectors.toList());
if(rolls.size()>0){
//工作辊成对更换
double rollDia1;
double rollDia2;
if(type.equals("WORK")||type.equals("INTERMEDIATE")) {
if (rolls.size() != 2) {
result.add(String.format("{0}必须成对更换", name));
return;
} else {
if (rolls.get(0).getPosition().equals(rolls.get(1).getPosition())) {
result.add(String.format("{0}备辊位置重复", name));
return;
}
rollDia1 = rolls.get(0).getDiameter();
rollDia2 = rolls.get(1).getDiameter();
}
}
else{
if(rolls.size()>2){
result.add(String.format("{0}备辊数量错误",name));
return;
}else {
rollDia1 = rolls.get(0).getDiameter();
if(rolls.size()==2) {
if (rolls.get(0).getPosition().equals(rolls.get(1).getPosition())) {
result.add(String.format("{0}备辊位置重复", name));
return;
}
rollDia2 = rolls.get(1).getDiameter();
}else {
//单个备辊,和在线辊比较
rollDia2 = rollDia1;
String nextPosition = rolls.get(0).getPosition().equals("TOP")?"BOTTOM":"TOP";
List<RollData> onlineList = getList(nextPosition,type,"ONLINE");
if(onlineList.size()>0){
rollDia2 = onlineList.get(0).getDiameter();
}
}
}
}
//最大值
if(plantConfigMap.containsKey(maxValueKey)){
double value = Double.parseDouble(plantConfigMap.get(maxValueKey).getValue());
if(rollDia1>value||rollDia2>value){
result.add(String.format("{0}径超限[max{1}]",name,value));
}
}
//最小值
if(plantConfigMap.containsKey(minValueKey)){
double value = Double.parseDouble(plantConfigMap.get(minValueKey).getValue());
if(rollDia1<value||rollDia2<value){
result.add(String.format("{0}径超限[min{1}]",name,value));
}
}
//差值
if(plantConfigMap.containsKey(diffValueKey)){
double value = Double.parseDouble(plantConfigMap.get(diffValueKey).getValue());
if(Math.abs(rollDia1-rollDia2)>value){
result.add(String.format("{0}径超限[diff{1}]",name,value));
}
}
}
}
}

View File

@@ -0,0 +1,46 @@
package com.fizz.business.service.impl;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fizz.business.domain.RollHistory;
import com.fizz.business.form.RollHistoryForm;
import com.fizz.business.mapper.RollHistoryMapper;
import com.fizz.business.service.RollHistoryService;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class RollHistoryServiceImpl extends ServiceImpl<RollHistoryMapper, RollHistory> implements RollHistoryService {
@Override
public List<String> getChangeIdList() {
return baseMapper.getChangeIdList();
}
@Override
public List<String> getRollIdList() {
return baseMapper.getRollIdList();
}
@Override
public List<RollHistory> getRollHistory(RollHistoryForm rollHistoryForm) {
LambdaQueryWrapper<RollHistory> queryWrapper = new LambdaQueryWrapper<>();
if(ObjectUtil.isNotEmpty(rollHistoryForm.getStartTime())){
queryWrapper.ge(RollHistory::getChangeTime,rollHistoryForm.getStartTime());
}
if(ObjectUtil.isNotEmpty(rollHistoryForm.getEndTime())){
queryWrapper.le(RollHistory::getChangeTime,rollHistoryForm.getEndTime());
}
if(ObjectUtil.isNotEmpty(rollHistoryForm.getChangeId())){
queryWrapper.eq(RollHistory::getChangeid,rollHistoryForm.getChangeId());
}
if(ObjectUtil.isNotEmpty(rollHistoryForm.getRollid())){
queryWrapper.eq(RollHistory::getRollid,rollHistoryForm.getRollid());
}
queryWrapper.orderByDesc(RollHistory::getChangeTime);
return this.list(queryWrapper);
}
}

View File

@@ -0,0 +1,43 @@
package com.fizz.business.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fizz.business.domain.ShiftHistory;
import com.fizz.business.mapper.ShiftHistoryMapper;
import com.fizz.business.service.ShiftHistoryService;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.util.List;
import java.util.stream.Collectors;
@Service
public class ShiftHistoryServiceImpl extends ServiceImpl<ShiftHistoryMapper, ShiftHistory> implements ShiftHistoryService {
@Override
public ShiftHistory getCurrent() {
QueryWrapper<ShiftHistory> queryWrapper = new QueryWrapper<>();
return this.getOne(queryWrapper.orderByDesc("insdate").last("LIMIT 1"));
}
@Override
public List<ShiftHistory> getShiftCurrentListByDate(LocalDateTime startTime, LocalDateTime endTime) {
return lambdaQuery()
.ge(ShiftHistory::getInsdate, startTime)
.lt(ShiftHistory::getInsdate, endTime)
.isNotNull(ShiftHistory::getCrew)
.orderByDesc(ShiftHistory::getInsdate)
.list();
}
@Override
public List<String> getCrews() {
QueryWrapper<ShiftHistory> queryWrapper = new QueryWrapper<>();
queryWrapper.select("DISTINCT crew");
List<ShiftHistory> shiftCurrentList = baseMapper.selectList(queryWrapper);
return shiftCurrentList
.stream()
.map(ShiftHistory::getCrew)
.collect(Collectors.toList());
}
}

View File

@@ -0,0 +1 @@
11111

View File

@@ -0,0 +1,55 @@
package com.fizz.business.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class OnlineRollDataVO {
@ApiModelProperty(value = "轧辊号")
private String rollid;
@ApiModelProperty(value = "类型")
private String type;
@ApiModelProperty(value = "位置")
private String position;
@ApiModelProperty(value = "直径")
private Double diameter;
@ApiModelProperty(value = "粗糙度")
private Double rough;
@ApiModelProperty(value = "凸度")
private Double crown;
@ApiModelProperty(value = "轧制长度")
private Double rolledLength;
@ApiModelProperty(value = "轧制重量")
private Double rolledWeight;
@ApiModelProperty(value = "轧制数量")
private Integer rolledCount;
@ApiModelProperty(value = "Installation Time")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime instalTime;
@ApiModelProperty(value = "可用长度")
private Double usableLength;
@ApiModelProperty(value = "剩余长度")
private Double leftLength;
@ApiModelProperty(value = "可用重量")
private Double usableWeight;
@ApiModelProperty(value = "剩余重量")
private Double leftWeight;
}

View File

@@ -0,0 +1,25 @@
package com.fizz.business.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class ReadyRollDataVO {
@ApiModelProperty(value = "轧辊号")
private String rollid;
@ApiModelProperty(value = "类型")
private String type;
@ApiModelProperty(value = "位置")
private String position;
@ApiModelProperty(value = "直径")
private Double diameter;
@ApiModelProperty(value = "粗糙度")
private Double rough;
@ApiModelProperty(value = "凸度")
private Double crown;
}

Some files were not shown because too many files have changed in this diff Show More