Compare commits
	
		
			91 Commits
		
	
	
		
			c9ddb770e1
			...
			yanyang
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 46f51e656e | |||
| e950cbbe9c | |||
| f9af03b030 | |||
| 095bdc1e23 | |||
| fd4c383fcc | |||
| e5128e3c1f | |||
| 6bce644663 | |||
| c6602d6099 | |||
| c90631c205 | |||
| c8aad62eb4 | |||
| 8c3d387257 | |||
| ed65364551 | |||
| ffc28af175 | |||
| 38ca9efa70 | |||
| cb7dc557b0 | |||
| 33a90bc2ec | |||
| a84df8d493 | |||
| db85a7025d | |||
| 374d6aba5a | |||
| 81ec2cd27a | |||
| c1104b6443 | |||
| 83707b5080 | |||
| c8735c6fa7 | |||
| db6a0a7739 | |||
| 8aea3bcd31 | |||
| 558e106f17 | |||
| 259970a317 | |||
|  | df116253ff | ||
|  | 11b41b18f1 | ||
|  | 4e10024bc8 | ||
|  | 22115af70c | ||
|  | 1704b2c37b | ||
|  | 9f78bbe8c3 | ||
|  | 72aae5c439 | ||
|  | d70f19adcd | ||
|  | d366d7d922 | ||
|  | cabed052a1 | ||
|  | 18c1c6cc15 | ||
|  | 0e95d8c1d2 | ||
| b0e88370b1 | |||
| cbc3983714 | |||
| 0eb650ff50 | |||
|  | 3ff7d7c178 | ||
|  | e82bc1161c | ||
| 3172934f4e | |||
| 802a5474e7 | |||
| a436683e00 | |||
| 3ab40e515a | |||
| abdcb07492 | |||
|  | ce46bafa60 | ||
|  | 9bce971af0 | ||
| 045688f123 | |||
| f02aa38051 | |||
| 7694dd8242 | |||
| 64baad1a36 | |||
| b6e61961f7 | |||
| 42f4f2e741 | |||
|  | 4e02f7e03a | ||
|  | 7789d2b1ab | ||
| d62c7bf447 | |||
| 7970efd5d0 | |||
| dde937a6cd | |||
|  | 2b3c4b5f03 | ||
|  | 1258751c10 | ||
| a7ae47485c | |||
| f07fbd89a9 | |||
| 8d37c0ebf9 | |||
| 51736166a4 | |||
| dcc726ad77 | |||
|  | 6f50adc782 | ||
|  | c37f25a874 | ||
|  | 78c9cbd686 | ||
| eda15da1a9 | |||
| 02cecaed68 | |||
| ba30dfe7af | |||
|  | ee0bd67011 | ||
|  | 4d8f2bfe74 | ||
| 6b38aebb5b | |||
| 5f5a60eb29 | |||
| 1684075a9c | |||
| 4e932a09fd | |||
|  | fe10292885 | ||
|  | c284a4b394 | ||
|  | 00c907ece0 | ||
| 3b7cc67690 | |||
| 10c2414204 | |||
| 53a6f02212 | |||
|  | c588346c69 | ||
|  | 391b52b23a | ||
|  | a16cd349cc | ||
|  | 867aef5f50 | 
| @@ -26,4 +26,11 @@ | |||||||
| - Maven3.0+ | - Maven3.0+ | ||||||
| - MySQL8.0 | - MySQL8.0 | ||||||
| - redis6.0+ | - redis6.0+ | ||||||
| <br> | <br> | ||||||
|  |  | ||||||
|  |  | ||||||
|  | **切换到现场环境** | ||||||
|  | - gateway 下的 application.yml 改redis地址 改成10.0.1.249那个 | ||||||
|  | - gateway 下的 application-dev.yml 选用 “MySQL-local” 和 “camline系统 - local” 这两个  | ||||||
|  | - packaging 下的 KukaJoinThread 要把 三个启动线程放开(kukaStep1.scheduleAtFixedRate、kukaStep2.scheduleAtFixedRate、kukaStep3.scheduleAtFixedRate) | ||||||
|  |   <br> | ||||||
							
								
								
									
										5
									
								
								pom.xml
									
									
									
									
									
								
							
							
						
						
									
										5
									
								
								pom.xml
									
									
									
									
									
								
							| @@ -38,7 +38,10 @@ | |||||||
|         <junit.version>4.13.2</junit.version> |         <junit.version>4.13.2</junit.version> | ||||||
|         <jedis.version>4.2.2</jedis.version> |         <jedis.version>4.2.2</jedis.version> | ||||||
|         <druid.version>1.2.9</druid.version> |         <druid.version>1.2.9</druid.version> | ||||||
|         <mybatisplus.version>3.5.1</mybatisplus.version> |  | ||||||
|  | <!--        <mybatisplus.version>3.5.1</mybatisplus.version>--> | ||||||
|  |         <mybatisplus.version>3.5.3</mybatisplus.version> | ||||||
|  |  | ||||||
|         <sqlserver.version>4.0</sqlserver.version> |         <sqlserver.version>4.0</sqlserver.version> | ||||||
|         <oracle.version>11.2.0.3</oracle.version> |         <oracle.version>11.2.0.3</oracle.version> | ||||||
|         <commons.lang.version>3.12.0</commons.lang.version> |         <commons.lang.version>3.12.0</commons.lang.version> | ||||||
|   | |||||||
| @@ -75,7 +75,11 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { | |||||||
|                         "/test/**", |                         "/test/**", | ||||||
|                         "/**/expert", |                         "/**/expert", | ||||||
|                         "/captcha", |                         "/captcha", | ||||||
|                         "druid/**").anonymous() |                         "druid/**", | ||||||
|  |                         "/packing/woPackagingBox/page", | ||||||
|  |                         "/packing/printModel/page" | ||||||
|  |  | ||||||
|  |                 ).anonymous() | ||||||
| //                .antMatchers("/testCors").hasAuthority("system:dept:list222") | //                .antMatchers("/testCors").hasAuthority("system:dept:list222") | ||||||
|                 // 除上面外的所有请求全部需要鉴权认证 |                 // 除上面外的所有请求全部需要鉴权认证 | ||||||
|                 .anyRequest() |                 .anyRequest() | ||||||
|   | |||||||
| @@ -61,7 +61,7 @@ public class SysLogLoginController { | |||||||
|     public void export(@ApiIgnore @RequestParam Map<String, Object> params, HttpServletResponse response) throws Exception { |     public void export(@ApiIgnore @RequestParam Map<String, Object> params, HttpServletResponse response) throws Exception { | ||||||
|         List<SysLogLoginDTO> list = sysLogLoginService.list(params); |         List<SysLogLoginDTO> list = sysLogLoginService.list(params); | ||||||
|  |  | ||||||
|         ExcelUtils.exportExcelToTarget(response, null, list, SysLogLoginExcel.class); |         ExcelUtils.exportExcelToTarget(response, "登入登出日志导出", list, SysLogLoginExcel.class); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -46,7 +46,6 @@ public class SysLogOperationController { | |||||||
|     }) |     }) | ||||||
|     public Result<PageData<SysLogOperationDTO>> page(@ApiIgnore @RequestParam Map<String, Object> params){ |     public Result<PageData<SysLogOperationDTO>> page(@ApiIgnore @RequestParam Map<String, Object> params){ | ||||||
|         PageData<SysLogOperationDTO> page = sysLogOperationService.page(params); |         PageData<SysLogOperationDTO> page = sysLogOperationService.page(params); | ||||||
|  |  | ||||||
|         return new Result<PageData<SysLogOperationDTO>>().ok(page); |         return new Result<PageData<SysLogOperationDTO>>().ok(page); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -56,7 +55,7 @@ public class SysLogOperationController { | |||||||
|     public void export(@ApiIgnore @RequestParam Map<String, Object> params, HttpServletResponse response) throws Exception { |     public void export(@ApiIgnore @RequestParam Map<String, Object> params, HttpServletResponse response) throws Exception { | ||||||
|         List<SysLogOperationDTO> list = sysLogOperationService.list(params); |         List<SysLogOperationDTO> list = sysLogOperationService.list(params); | ||||||
|  |  | ||||||
|         ExcelUtils.exportExcelToTarget(response, null, list, SysLogOperationExcel.class); |         ExcelUtils.exportExcelToTarget(response, "操作日志导出", list, SysLogOperationExcel.class); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -7,8 +7,8 @@ import java.util.Date; | |||||||
|  |  | ||||||
| @Data | @Data | ||||||
| public class SysLogLoginExcel { | public class SysLogLoginExcel { | ||||||
|     @Excel(name = "用户操作") |     @Excel(name = "用户操作", replace = {"登入_0", "登出_1"}) | ||||||
|     private String operation; |     private Integer operation; | ||||||
|     @Excel(name = "状态", replace = {"失败_0", "成功_1", "账号已锁定_1"}) |     @Excel(name = "状态", replace = {"失败_0", "成功_1", "账号已锁定_1"}) | ||||||
|     private Integer status; |     private Integer status; | ||||||
|     @Excel(name = "User-Agent") |     @Excel(name = "User-Agent") | ||||||
|   | |||||||
| @@ -9,6 +9,7 @@ import com.cnbm.admin.entity.SysRoleEntity; | |||||||
| import com.cnbm.admin.entity.SysUserEntity; | import com.cnbm.admin.entity.SysUserEntity; | ||||||
| import com.cnbm.admin.enums.SuperAdminEnum; | import com.cnbm.admin.enums.SuperAdminEnum; | ||||||
| import com.cnbm.admin.service.*; | import com.cnbm.admin.service.*; | ||||||
|  | import com.cnbm.admin.utils.BaseSupportUtils; | ||||||
| import com.cnbm.common.constant.Constant; | import com.cnbm.common.constant.Constant; | ||||||
| import com.cnbm.common.page.PageData; | import com.cnbm.common.page.PageData; | ||||||
| import com.cnbm.common.service.impl.BaseServiceImpl; | import com.cnbm.common.service.impl.BaseServiceImpl; | ||||||
| @@ -20,6 +21,7 @@ import org.springframework.security.core.context.SecurityContextHolder; | |||||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||||
| import org.springframework.transaction.annotation.Transactional; | import org.springframework.transaction.annotation.Transactional; | ||||||
|  |  | ||||||
|  | import java.sql.Timestamp; | ||||||
| import java.util.Arrays; | import java.util.Arrays; | ||||||
| import java.util.List; | import java.util.List; | ||||||
| import java.util.Map; | import java.util.Map; | ||||||
| @@ -89,6 +91,8 @@ public class SysRoleServiceImpl extends BaseServiceImpl<SysRoleDao, SysRoleEntit | |||||||
|         SysRoleEntity entity = ConvertUtils.sourceToTarget(dto, SysRoleEntity.class); |         SysRoleEntity entity = ConvertUtils.sourceToTarget(dto, SysRoleEntity.class); | ||||||
|  |  | ||||||
|         //保存角色 |         //保存角色 | ||||||
|  |         Timestamp timestamp = new Timestamp(System.currentTimeMillis()); | ||||||
|  |         entity.setCreateDate(timestamp); | ||||||
|         insert(entity); |         insert(entity); | ||||||
|  |  | ||||||
|         //保存角色菜单关系 |         //保存角色菜单关系 | ||||||
|   | |||||||
| @@ -9,6 +9,7 @@ import com.cnbm.admin.enums.SuperAdminEnum; | |||||||
| import com.cnbm.admin.service.SysDeptService; | import com.cnbm.admin.service.SysDeptService; | ||||||
| import com.cnbm.admin.service.SysRoleUserService; | import com.cnbm.admin.service.SysRoleUserService; | ||||||
| import com.cnbm.admin.service.SysUserService; | import com.cnbm.admin.service.SysUserService; | ||||||
|  | import com.cnbm.admin.utils.BaseSupportUtils; | ||||||
| import com.cnbm.admin.utils.PasswordUtils; | import com.cnbm.admin.utils.PasswordUtils; | ||||||
| import com.cnbm.common.constant.Constant; | import com.cnbm.common.constant.Constant; | ||||||
| import com.cnbm.common.page.PageData; | import com.cnbm.common.page.PageData; | ||||||
| @@ -21,6 +22,7 @@ import org.springframework.security.core.context.SecurityContextHolder; | |||||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||||
| import org.springframework.transaction.annotation.Transactional; | import org.springframework.transaction.annotation.Transactional; | ||||||
|  |  | ||||||
|  | import java.sql.Timestamp; | ||||||
| import java.util.Arrays; | import java.util.Arrays; | ||||||
| import java.util.List; | import java.util.List; | ||||||
| import java.util.Map; | import java.util.Map; | ||||||
| @@ -98,6 +100,8 @@ public class SysUserServiceImpl extends BaseServiceImpl<SysUserDao, SysUserEntit | |||||||
|  |  | ||||||
|         //保存用户 |         //保存用户 | ||||||
|         entity.setSuperAdmin(SuperAdminEnum.NO.value()); |         entity.setSuperAdmin(SuperAdminEnum.NO.value()); | ||||||
|  |         Timestamp timestamp = new Timestamp(System.currentTimeMillis()); | ||||||
|  |         entity.setCreateDate(timestamp); | ||||||
|         insert(entity); |         insert(entity); | ||||||
|  |  | ||||||
|         //保存角色用户关系 |         //保存角色用户关系 | ||||||
|   | |||||||
| @@ -82,9 +82,11 @@ public class JwtUtil { | |||||||
|  |  | ||||||
|     public static void main(String[] args) throws Exception { |     public static void main(String[] args) throws Exception { | ||||||
| //        String jwt = createJWT("123"); | //        String jwt = createJWT("123"); | ||||||
|         Claims claims = parseJWT("eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiI5OWNhNGJhMjg5ZjU0OTVjODE5YTM0N2ExZmNlZjc0YSIsInN1YiI6IjEyMyIsImlzcyI6IndoeSIsImlhdCI6MTY1NDc1OTg5NiwiZXhwIjoxNjU0NzYzNDk2fQ.CTgS6yQjfXSGPJUTu-_rqjkh_KB_F9SzPThFfnvB5yg"); |         Claims claims = parseJWT("eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiJkNTQxODQ5NjNjMWM0NzgzOTA0ZDAwZGI1ZmNkNWU3NiIsInN1YiI6IjEwNjcyNDY4NzU4MDAwMDAwMDEiLCJpc3MiOiJ3aHkiLCJpYXQiOjE2Nzg5MzE1MjAsImV4cCI6MTY3ODkzNTEyMH0.2we9FhhFU2Qvx2fvywqmA8A1qs0mbdXvr8T2CjJUz7o"); | ||||||
|         String subject = claims.getSubject(); |         String subject = claims.getSubject(); | ||||||
|         System.out.println(subject); |         System.out.println(subject); | ||||||
|  |  | ||||||
|  |         System.out.println(claims.toString()); | ||||||
| //        System.out.println(claims); | //        System.out.println(claims); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -23,7 +23,7 @@ | |||||||
| 	</select> | 	</select> | ||||||
|  |  | ||||||
| 	<select id="getIdAndPidList" resultType="com.cnbm.admin.entity.SysDeptEntity"> | 	<select id="getIdAndPidList" resultType="com.cnbm.admin.entity.SysDeptEntity"> | ||||||
| 		select t1.id, t1.pid from sys_dept t1  AND t1.valid = 1 | 		select t1.id, t1.pid from sys_dept t1 where t1.valid = 1 | ||||||
| 	</select> | 	</select> | ||||||
|  |  | ||||||
| 	<select id="getSubDeptIdList" resultType="long"> | 	<select id="getSubDeptIdList" resultType="long"> | ||||||
|   | |||||||
| @@ -7,9 +7,9 @@ spring: | |||||||
| #      password: 1qazxsw2 | #      password: 1qazxsw2 | ||||||
|  |  | ||||||
|       #MySQL-remote |       #MySQL-remote | ||||||
| #      url: jdbc:mysql://mysql.picaiba.com:30307/mt_cigs4?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true |       url: jdbc:mysql://mysql.picaiba.com:30307/mt_cigs4?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true | ||||||
| #      username: root |       username: root | ||||||
| #      password: 1qaz@WSX3edc$RFV |       password: 1qaz@WSX3edc$RFV | ||||||
|       #      #Oracle |       #      #Oracle | ||||||
|       #      driver-class-name: oracle.jdbc.OracleDriver |       #      driver-class-name: oracle.jdbc.OracleDriver | ||||||
|       #      url: jdbc:oracle:thin:@192.168.10.10:1521:xe |       #      url: jdbc:oracle:thin:@192.168.10.10:1521:xe | ||||||
|   | |||||||
| @@ -2,7 +2,7 @@ spring: | |||||||
|   datasource: |   datasource: | ||||||
|     #MySQL |     #MySQL | ||||||
|     driver-class-name: com.mysql.cj.jdbc.Driver |     driver-class-name: com.mysql.cj.jdbc.Driver | ||||||
|     url: jdbc:mysql://mysql.picaiba.com:30307/ym_pass?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true |     url: jdbc:mysql://mysql.picaiba.com:30307/mt_cigs4?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true | ||||||
|     username: root |     username: root | ||||||
|     password: 1qaz@WSX3edc$RFV |     password: 1qaz@WSX3edc$RFV | ||||||
|     #      #Oracle |     #      #Oracle | ||||||
|   | |||||||
| @@ -33,8 +33,9 @@ spring: | |||||||
|       enabled: true |       enabled: true | ||||||
|   redis: |   redis: | ||||||
|     database: 6 |     database: 6 | ||||||
|  |     host: 127.0.0.1 | ||||||
|     #host: 10.0.1.249 |     #host: 10.0.1.249 | ||||||
|     host: 192.168.0.102 |     #host: 192.168.0.102 | ||||||
|     port: 6379 |     port: 6379 | ||||||
|     password: ''   # 密码(默认为空) |     password: ''   # 密码(默认为空) | ||||||
|     timeout: 6000ms  # 连接超时时长(毫秒) |     timeout: 6000ms  # 连接超时时长(毫秒) | ||||||
|   | |||||||
| @@ -14,9 +14,10 @@ | |||||||
| <!--    <property name="logging.pathmq" value="C:/qgs_logger/mq" />--> | <!--    <property name="logging.pathmq" value="C:/qgs_logger/mq" />--> | ||||||
| <!--    <property name="logging.eqlog" value="C:/qgs_logger/s7" />--> | <!--    <property name="logging.eqlog" value="C:/qgs_logger/s7" />--> | ||||||
|  |  | ||||||
|     <property name="logging.eqlog" value="/usr/local/logger/EQCommunicationLog" /> |     <property name="logging.eqlog" value="/var/log/logger/EQCommunicationLog" /> | ||||||
|     <property name="logging.packing" value="/usr/local/logger/Packing" /> |     <property name="logging.eventlog" value="/var/log/logger/EventLog" /> | ||||||
|     <property name="logging.pathwork" value="/usr/local/logger/Working" /> |     <property name="logging.packing" value="/var/log/logger/Packing" /> | ||||||
|  |     <property name="logging.pathwork" value="/var/log/logger/Working" /> | ||||||
|  |  | ||||||
|  |  | ||||||
|     <!--0. 日志格式和颜色渲染 --> |     <!--0. 日志格式和颜色渲染 --> | ||||||
| @@ -193,6 +194,206 @@ | |||||||
|             <onMismatch>DENY</onMismatch> |             <onMismatch>DENY</onMismatch> | ||||||
|         </filter> |         </filter> | ||||||
|     </appender> |     </appender> | ||||||
|  |     <!-- 2线  开始 --> | ||||||
|  |     <appender name="EVENT1_APPENDER_LINE2" class="ch.qos.logback.core.rolling.RollingFileAppender"> | ||||||
|  |         <!-- 正在记录的日志文档的路径及文档名 --> | ||||||
|  |         <file>${logging.eventlog}/line2/event1/kuka-event1-log-info.log</file> | ||||||
|  |         <!--日志文档输出格式--> | ||||||
|  |         <encoder> | ||||||
|  |             <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> | ||||||
|  |             <charset>UTF-8</charset> | ||||||
|  |         </encoder> | ||||||
|  |         <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> | ||||||
|  |             <!-- rollover daily --> | ||||||
|  |             <fileNamePattern>${logging.eventlog}/line2/kuka-event1-log-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern> | ||||||
|  |             <!-- each file should be at most 100MB, keep 60 days worth of history, but at most 20GB --> | ||||||
|  |             <maxFileSize>100MB</maxFileSize> | ||||||
|  |  | ||||||
|  |             <maxHistory>999</maxHistory> | ||||||
|  |             <totalSizeCap>200GB</totalSizeCap> | ||||||
|  |         </rollingPolicy> | ||||||
|  |         <!-- 此日志文档只记录info级别的 --> | ||||||
|  |         <filter class="ch.qos.logback.classic.filter.LevelFilter"> | ||||||
|  |             <level>info</level> | ||||||
|  |             <onMatch>ACCEPT</onMatch> | ||||||
|  |             <onMismatch>DENY</onMismatch> | ||||||
|  |         </filter> | ||||||
|  |     </appender> | ||||||
|  |     <appender name="EVENT2_APPENDER_LINE2" class="ch.qos.logback.core.rolling.RollingFileAppender"> | ||||||
|  |         <!-- 正在记录的日志文档的路径及文档名 --> | ||||||
|  |         <file>${logging.eventlog}/line2/event2/kuka-event2-log-info.log</file> | ||||||
|  |         <!--日志文档输出格式--> | ||||||
|  |         <encoder> | ||||||
|  |             <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> | ||||||
|  |             <charset>UTF-8</charset> | ||||||
|  |         </encoder> | ||||||
|  |         <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> | ||||||
|  |             <!-- rollover daily --> | ||||||
|  |             <fileNamePattern>${logging.eventlog}/line2/kuka-event2-log-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern> | ||||||
|  |             <!-- each file should be at most 100MB, keep 60 days worth of history, but at most 20GB --> | ||||||
|  |             <maxFileSize>100MB</maxFileSize> | ||||||
|  |  | ||||||
|  |             <maxHistory>999</maxHistory> | ||||||
|  |             <totalSizeCap>200GB</totalSizeCap> | ||||||
|  |         </rollingPolicy> | ||||||
|  |         <!-- 此日志文档只记录info级别的 --> | ||||||
|  |         <filter class="ch.qos.logback.classic.filter.LevelFilter"> | ||||||
|  |             <level>info</level> | ||||||
|  |             <onMatch>ACCEPT</onMatch> | ||||||
|  |             <onMismatch>DENY</onMismatch> | ||||||
|  |         </filter> | ||||||
|  |     </appender> | ||||||
|  |     <appender name="EVENT3_APPENDER_LINE2" class="ch.qos.logback.core.rolling.RollingFileAppender"> | ||||||
|  |         <!-- 正在记录的日志文档的路径及文档名 --> | ||||||
|  |         <file>${logging.eventlog}/line2/event3/kuka-event3-log-info.log</file> | ||||||
|  |         <!--日志文档输出格式--> | ||||||
|  |         <encoder> | ||||||
|  |             <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> | ||||||
|  |             <charset>UTF-8</charset> | ||||||
|  |         </encoder> | ||||||
|  |         <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> | ||||||
|  |             <!-- rollover daily --> | ||||||
|  |             <fileNamePattern>${logging.eventlog}/line2/kuka-event3-log-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern> | ||||||
|  |             <!-- each file should be at most 100MB, keep 60 days worth of history, but at most 20GB --> | ||||||
|  |             <maxFileSize>100MB</maxFileSize> | ||||||
|  |  | ||||||
|  |             <maxHistory>999</maxHistory> | ||||||
|  |             <totalSizeCap>200GB</totalSizeCap> | ||||||
|  |         </rollingPolicy> | ||||||
|  |         <!-- 此日志文档只记录info级别的 --> | ||||||
|  |         <filter class="ch.qos.logback.classic.filter.LevelFilter"> | ||||||
|  |             <level>info</level> | ||||||
|  |             <onMatch>ACCEPT</onMatch> | ||||||
|  |             <onMismatch>DENY</onMismatch> | ||||||
|  |         </filter> | ||||||
|  |     </appender> | ||||||
|  |     <!-- 2线  结束 --> | ||||||
|  |  | ||||||
|  |     <!-- 1线  开始 --> | ||||||
|  |     <appender name="EVENT1_APPENDER_LINE1" class="ch.qos.logback.core.rolling.RollingFileAppender"> | ||||||
|  |         <!-- 正在记录的日志文档的路径及文档名 --> | ||||||
|  |         <file>${logging.eventlog}/line1/event1/kuka-event1-log-info.log</file> | ||||||
|  |         <!--日志文档输出格式--> | ||||||
|  |         <encoder> | ||||||
|  |             <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> | ||||||
|  |             <charset>UTF-8</charset> | ||||||
|  |         </encoder> | ||||||
|  |         <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> | ||||||
|  |             <!-- rollover daily --> | ||||||
|  |             <fileNamePattern>${logging.eventlog}/line1/kuka-event1-log-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern> | ||||||
|  |             <!-- each file should be at most 100MB, keep 60 days worth of history, but at most 20GB --> | ||||||
|  |             <maxFileSize>100MB</maxFileSize> | ||||||
|  |  | ||||||
|  |             <maxHistory>999</maxHistory> | ||||||
|  |             <totalSizeCap>200GB</totalSizeCap> | ||||||
|  |         </rollingPolicy> | ||||||
|  |         <!-- 此日志文档只记录info级别的 --> | ||||||
|  |         <filter class="ch.qos.logback.classic.filter.LevelFilter"> | ||||||
|  |             <level>info</level> | ||||||
|  |             <onMatch>ACCEPT</onMatch> | ||||||
|  |             <onMismatch>DENY</onMismatch> | ||||||
|  |         </filter> | ||||||
|  |     </appender> | ||||||
|  |     <appender name="EVENT2_APPENDER_LINE1" class="ch.qos.logback.core.rolling.RollingFileAppender"> | ||||||
|  |         <!-- 正在记录的日志文档的路径及文档名 --> | ||||||
|  |         <file>${logging.eventlog}/line1/event2/kuka-event2-log-info.log</file> | ||||||
|  |         <!--日志文档输出格式--> | ||||||
|  |         <encoder> | ||||||
|  |             <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> | ||||||
|  |             <charset>UTF-8</charset> | ||||||
|  |         </encoder> | ||||||
|  |         <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> | ||||||
|  |             <!-- rollover daily --> | ||||||
|  |             <fileNamePattern>${logging.eventlog}/line1/kuka-event2-log-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern> | ||||||
|  |             <!-- each file should be at most 100MB, keep 60 days worth of history, but at most 20GB --> | ||||||
|  |             <maxFileSize>100MB</maxFileSize> | ||||||
|  |  | ||||||
|  |             <maxHistory>999</maxHistory> | ||||||
|  |             <totalSizeCap>200GB</totalSizeCap> | ||||||
|  |         </rollingPolicy> | ||||||
|  |         <!-- 此日志文档只记录info级别的 --> | ||||||
|  |         <filter class="ch.qos.logback.classic.filter.LevelFilter"> | ||||||
|  |             <level>info</level> | ||||||
|  |             <onMatch>ACCEPT</onMatch> | ||||||
|  |             <onMismatch>DENY</onMismatch> | ||||||
|  |         </filter> | ||||||
|  |     </appender> | ||||||
|  |     <appender name="EVENT3_APPENDER_LINE1" class="ch.qos.logback.core.rolling.RollingFileAppender"> | ||||||
|  |         <!-- 正在记录的日志文档的路径及文档名 --> | ||||||
|  |         <file>${logging.eventlog}/line1/event3/kuka-event3-log-info.log</file> | ||||||
|  |         <!--日志文档输出格式--> | ||||||
|  |         <encoder> | ||||||
|  |             <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> | ||||||
|  |             <charset>UTF-8</charset> | ||||||
|  |         </encoder> | ||||||
|  |         <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> | ||||||
|  |             <!-- rollover daily --> | ||||||
|  |             <fileNamePattern>${logging.eventlog}/line1/kuka-event3-log-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern> | ||||||
|  |             <!-- each file should be at most 100MB, keep 60 days worth of history, but at most 20GB --> | ||||||
|  |             <maxFileSize>100MB</maxFileSize> | ||||||
|  |  | ||||||
|  |             <maxHistory>999</maxHistory> | ||||||
|  |             <totalSizeCap>200GB</totalSizeCap> | ||||||
|  |         </rollingPolicy> | ||||||
|  |         <!-- 此日志文档只记录info级别的 --> | ||||||
|  |         <filter class="ch.qos.logback.classic.filter.LevelFilter"> | ||||||
|  |             <level>info</level> | ||||||
|  |             <onMatch>ACCEPT</onMatch> | ||||||
|  |             <onMismatch>DENY</onMismatch> | ||||||
|  |         </filter> | ||||||
|  |     </appender> | ||||||
|  |     <!-- 1线  结束 --> | ||||||
|  |  | ||||||
|  |     <!-- event4  开始 --> | ||||||
|  |     <appender name="EVENT4_APPENDER_LINE1" class="ch.qos.logback.core.rolling.RollingFileAppender"> | ||||||
|  |         <!-- 正在记录的日志文档的路径及文档名 --> | ||||||
|  |         <file>${logging.eventlog}/line1/event4/kuka-ngEvent-log-info.log</file> | ||||||
|  |         <!--日志文档输出格式--> | ||||||
|  |         <encoder> | ||||||
|  |             <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> | ||||||
|  |             <charset>UTF-8</charset> | ||||||
|  |         </encoder> | ||||||
|  |         <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> | ||||||
|  |             <!-- rollover daily --> | ||||||
|  |             <fileNamePattern>${logging.eventlog}/line1/kuka-ngEvent-log-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern> | ||||||
|  |             <!-- each file should be at most 100MB, keep 60 days worth of history, but at most 20GB --> | ||||||
|  |             <maxFileSize>100MB</maxFileSize> | ||||||
|  |  | ||||||
|  |             <maxHistory>999</maxHistory> | ||||||
|  |             <totalSizeCap>200GB</totalSizeCap> | ||||||
|  |         </rollingPolicy> | ||||||
|  |         <!-- 此日志文档只记录info级别的 --> | ||||||
|  |         <filter class="ch.qos.logback.classic.filter.LevelFilter"> | ||||||
|  |             <level>info</level> | ||||||
|  |             <onMatch>ACCEPT</onMatch> | ||||||
|  |             <onMismatch>DENY</onMismatch> | ||||||
|  |         </filter> | ||||||
|  |     </appender> | ||||||
|  |     <appender name="EVENT4_APPENDER_LINE2" class="ch.qos.logback.core.rolling.RollingFileAppender"> | ||||||
|  |         <!-- 正在记录的日志文档的路径及文档名 --> | ||||||
|  |         <file>${logging.eventlog}/line2/event4/kuka-ngEvent-log-info.log</file> | ||||||
|  |         <!--日志文档输出格式--> | ||||||
|  |         <encoder> | ||||||
|  |             <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> | ||||||
|  |             <charset>UTF-8</charset> | ||||||
|  |         </encoder> | ||||||
|  |         <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> | ||||||
|  |             <!-- rollover daily --> | ||||||
|  |             <fileNamePattern>${logging.eventlog}/line2/kuka-ngEvent-log-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern> | ||||||
|  |             <!-- each file should be at most 100MB, keep 60 days worth of history, but at most 20GB --> | ||||||
|  |             <maxFileSize>100MB</maxFileSize> | ||||||
|  |  | ||||||
|  |             <maxHistory>999</maxHistory> | ||||||
|  |             <totalSizeCap>200GB</totalSizeCap> | ||||||
|  |         </rollingPolicy> | ||||||
|  |         <!-- 此日志文档只记录info级别的 --> | ||||||
|  |         <filter class="ch.qos.logback.classic.filter.LevelFilter"> | ||||||
|  |             <level>info</level> | ||||||
|  |             <onMatch>ACCEPT</onMatch> | ||||||
|  |             <onMismatch>DENY</onMismatch> | ||||||
|  |         </filter> | ||||||
|  |     </appender> | ||||||
|  |     <!-- event4  结束 --> | ||||||
|  |  | ||||||
|     <!-- 2.3 level为 WARN 日志,时间滚动输出  --> |     <!-- 2.3 level为 WARN 日志,时间滚动输出  --> | ||||||
|     <appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> |     <appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> | ||||||
| @@ -405,7 +606,41 @@ | |||||||
|         <appender-ref ref="EQ_COMM_LOG_ERROR_FILE" /> |         <appender-ref ref="EQ_COMM_LOG_ERROR_FILE" /> | ||||||
|     </logger> |     </logger> | ||||||
|  |  | ||||||
|     <logger name="com.cnbm.packing" additivity="false"> |     <!-- LINE2 开始 --> | ||||||
|  |     <logger name="EVENT1Line2" level="INFO" additivity="false"> | ||||||
|  |         <appender-ref ref="EVENT1_APPENDER_LINE2" /> | ||||||
|  |     </logger> | ||||||
|  |     <logger name="EVENT2Line2" level="INFO" additivity="false"> | ||||||
|  |         <appender-ref ref="EVENT2_APPENDER_LINE2" /> | ||||||
|  |     </logger> | ||||||
|  |     <logger name="EVENT3Line2" level="INFO" additivity="false"> | ||||||
|  |         <appender-ref ref="EVENT3_APPENDER_LINE2" /> | ||||||
|  |     </logger> | ||||||
|  |     <!-- LINE2 结束 --> | ||||||
|  |  | ||||||
|  |     <!-- LINE4NG 开始 --> | ||||||
|  |     <logger name="EVENT4NGLine1" level="INFO" additivity="false"> | ||||||
|  |         <appender-ref ref="EVENT4_APPENDER_LINE1" /> | ||||||
|  |     </logger> | ||||||
|  |     <logger name="EVENT4NGLine2" level="INFO" additivity="false"> | ||||||
|  |         <appender-ref ref="EVENT4_APPENDER_LINE2" /> | ||||||
|  |     </logger> | ||||||
|  |     <!-- LINE4NG 结束 --> | ||||||
|  |  | ||||||
|  |     <!-- LINE1 开始 --> | ||||||
|  |     <logger name="EVENT1Line1" level="INFO" additivity="false"> | ||||||
|  |         <appender-ref ref="EVENT1_APPENDER_LINE1" /> | ||||||
|  |     </logger> | ||||||
|  |     <logger name="EVENT2Line1" level="INFO" additivity="false"> | ||||||
|  |         <appender-ref ref="EVENT2_APPENDER_LINE1" /> | ||||||
|  |     </logger> | ||||||
|  |     <logger name="EVENT3Line1" level="INFO" additivity="false"> | ||||||
|  |         <appender-ref ref="EVENT3_APPENDER_LINE1" /> | ||||||
|  |     </logger> | ||||||
|  |     <!-- LINE1 结束 --> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     <logger name="com.cnbm.packing"  additivity="false"> | ||||||
|         <appender-ref ref="PACKING_LOG_DEBUG_FILE" /> |         <appender-ref ref="PACKING_LOG_DEBUG_FILE" /> | ||||||
|         <appender-ref ref="PACKING_LOG_INFO_FILE" /> |         <appender-ref ref="PACKING_LOG_INFO_FILE" /> | ||||||
|         <appender-ref ref="PACKING_LOG_WARN_FILE" /> |         <appender-ref ref="PACKING_LOG_WARN_FILE" /> | ||||||
|   | |||||||
| @@ -19,7 +19,7 @@ public class CodeGenerator { | |||||||
|  |  | ||||||
|     @Test |     @Test | ||||||
|     public void test(){ |     public void test(){ | ||||||
|         mybatisPlusGenerator(new String[]{"t_wo_power_level"}); |         mybatisPlusGenerator(new String[]{"t_working_time"}); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public static void mybatisPlusGenerator(String[] include){ |     public static void mybatisPlusGenerator(String[] include){ | ||||||
|   | |||||||
| @@ -31,7 +31,7 @@ import java.util.Map; | |||||||
|  * 打印标签模板表  前端控制器 |  * 打印标签模板表  前端控制器 | ||||||
|  * |  * | ||||||
|  * @author codeGenerator |  * @author codeGenerator | ||||||
|  * @since  2023-02-20 |  * @since  2024-01-25 | ||||||
|  */ |  */ | ||||||
| @RestController | @RestController | ||||||
| @RequestMapping("/code/printModel") | @RequestMapping("/code/printModel") | ||||||
|   | |||||||
| @@ -0,0 +1,116 @@ | |||||||
|  | package com.cnbm.generator.code.controller; | ||||||
|  |  | ||||||
|  | import com.cnbm.admin.annotation.LogOperation; | ||||||
|  | import com.cnbm.common.constant.Constant; | ||||||
|  | import com.cnbm.common.page.PageData; | ||||||
|  | import com.cnbm.common.utils.ExcelUtils; | ||||||
|  | import com.cnbm.common.utils.Result; | ||||||
|  | import com.cnbm.common.validator.AssertUtils; | ||||||
|  | import com.cnbm.common.validator.ValidatorUtils; | ||||||
|  | import com.cnbm.common.validator.group.AddGroup; | ||||||
|  | import com.cnbm.common.validator.group.DefaultGroup; | ||||||
|  | import com.cnbm.common.validator.group.UpdateGroup; | ||||||
|  | import com.cnbm.generator.code.dto.ProductLevelDTO; | ||||||
|  | import com.cnbm.generator.code.excel.ProductLevelExcel; | ||||||
|  | import com.cnbm.generator.code.service.ProductLevelServiceBiz; | ||||||
|  | import io.swagger.annotations.Api; | ||||||
|  | import io.swagger.annotations.ApiImplicitParam; | ||||||
|  | import io.swagger.annotations.ApiImplicitParams; | ||||||
|  | import io.swagger.annotations.ApiOperation; | ||||||
|  | import org.springframework.security.access.prepost.PreAuthorize; | ||||||
|  | import org.springframework.beans.factory.annotation.Autowired; | ||||||
|  | import org.springframework.web.bind.annotation.*; | ||||||
|  | import springfox.documentation.annotations.ApiIgnore; | ||||||
|  |  | ||||||
|  | import javax.servlet.http.HttpServletResponse; | ||||||
|  | import java.util.List; | ||||||
|  | import java.util.Map; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 产品等级 表  前端控制器 | ||||||
|  |  * | ||||||
|  |  * @author codeGenerator | ||||||
|  |  * @since  2023-12-28 | ||||||
|  |  */ | ||||||
|  | @RestController | ||||||
|  | @RequestMapping("/code/productLevel") | ||||||
|  | @Api(tags="产品等级 表") | ||||||
|  | public class ProductLevelController { | ||||||
|  |     @Autowired | ||||||
|  |     private ProductLevelServiceBiz productLevelService; | ||||||
|  |  | ||||||
|  |     @GetMapping("page") | ||||||
|  |     @ApiOperation("分页") | ||||||
|  |     @ApiImplicitParams({ | ||||||
|  |         @ApiImplicitParam(name = Constant.PAGE, value = "当前页码,从1开始", paramType = "query", required = true, dataTypeClass=Integer.class) , | ||||||
|  |         @ApiImplicitParam(name = Constant.LIMIT, value = "每页显示记录数", paramType = "query",required = true, dataTypeClass=Integer.class) , | ||||||
|  |         @ApiImplicitParam(name = Constant.ORDER_FIELD, value = "排序字段", paramType = "query", dataTypeClass=String.class) , | ||||||
|  |         @ApiImplicitParam(name = Constant.ORDER, value = "排序方式,可选值(asc、desc)", paramType = "query", dataTypeClass=String.class) | ||||||
|  |     }) | ||||||
|  |     @PreAuthorize("@ex.hasAuthority('code:productLevel:page')") | ||||||
|  |     public Result<PageData<ProductLevelDTO>> page(@ApiIgnore @RequestParam Map<String, Object> params){ | ||||||
|  |         PageData<ProductLevelDTO> page = productLevelService.page(params); | ||||||
|  |  | ||||||
|  |         return new Result<PageData<ProductLevelDTO>>().ok(page); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @GetMapping("{id}") | ||||||
|  |     @ApiOperation("信息") | ||||||
|  |     @PreAuthorize("@ex.hasAuthority('code:productLevel:info')") | ||||||
|  |     public Result<ProductLevelDTO> get(@PathVariable("id") Long id){ | ||||||
|  |         ProductLevelDTO data = productLevelService.get(id); | ||||||
|  |  | ||||||
|  |         return new Result<ProductLevelDTO>().ok(data); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @PostMapping | ||||||
|  |     @ApiOperation("保存") | ||||||
|  |     @LogOperation("保存") | ||||||
|  |     @PreAuthorize("@ex.hasAuthority('code:productLevel:save')") | ||||||
|  |     public Result<Long> save(@RequestBody ProductLevelDTO dto){ | ||||||
|  |         //效验数据 | ||||||
|  |         ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class); | ||||||
|  |  | ||||||
|  |         productLevelService.save(dto); | ||||||
|  |  | ||||||
|  |         return new Result<Long>().ok(dto.getId()); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @PutMapping | ||||||
|  |     @ApiOperation("修改") | ||||||
|  |     @LogOperation("修改") | ||||||
|  |     @PreAuthorize("@ex.hasAuthority('code:productLevel:update')") | ||||||
|  |     public Result<Long> update(@RequestBody ProductLevelDTO dto){ | ||||||
|  |         //效验数据 | ||||||
|  |         ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class); | ||||||
|  |  | ||||||
|  |         productLevelService.update(dto); | ||||||
|  |  | ||||||
|  |         return new Result<Long>().ok(dto.getId()); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @DeleteMapping | ||||||
|  |     @ApiOperation("删除") | ||||||
|  |     @LogOperation("删除") | ||||||
|  |     @PreAuthorize("@ex.hasAuthority('code:productLevel:delete')") | ||||||
|  |     public Result delete(@RequestBody Long[] ids){ | ||||||
|  |         //效验数据 | ||||||
|  |         AssertUtils.isArrayEmpty(ids, "id"); | ||||||
|  |  | ||||||
|  |         productLevelService.delete(ids); | ||||||
|  |  | ||||||
|  |         return new Result(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @GetMapping("export") | ||||||
|  |     @ApiOperation("导出") | ||||||
|  |     @LogOperation("导出") | ||||||
|  |     @PreAuthorize("@ex.hasAuthority('code:productLevel:export')") | ||||||
|  |     public void export(@ApiIgnore @RequestParam Map<String, Object> params, HttpServletResponse response) throws Exception { | ||||||
|  |         List<ProductLevelDTO> list = productLevelService.list(params); | ||||||
|  |  | ||||||
|  |         ExcelUtils.exportExcelToTarget(response, null, list, ProductLevelExcel.class); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  | } | ||||||
| @@ -0,0 +1,116 @@ | |||||||
|  | package com.cnbm.generator.code.controller; | ||||||
|  |  | ||||||
|  | import com.cnbm.admin.annotation.LogOperation; | ||||||
|  | import com.cnbm.common.constant.Constant; | ||||||
|  | import com.cnbm.common.page.PageData; | ||||||
|  | import com.cnbm.common.utils.ExcelUtils; | ||||||
|  | import com.cnbm.common.utils.Result; | ||||||
|  | import com.cnbm.common.validator.AssertUtils; | ||||||
|  | import com.cnbm.common.validator.ValidatorUtils; | ||||||
|  | import com.cnbm.common.validator.group.AddGroup; | ||||||
|  | import com.cnbm.common.validator.group.DefaultGroup; | ||||||
|  | import com.cnbm.common.validator.group.UpdateGroup; | ||||||
|  | import com.cnbm.generator.code.dto.ScenesDTO; | ||||||
|  | import com.cnbm.generator.code.excel.ScenesExcel; | ||||||
|  | import com.cnbm.generator.code.service.ScenesServiceBiz; | ||||||
|  | import io.swagger.annotations.Api; | ||||||
|  | import io.swagger.annotations.ApiImplicitParam; | ||||||
|  | import io.swagger.annotations.ApiImplicitParams; | ||||||
|  | import io.swagger.annotations.ApiOperation; | ||||||
|  | import org.springframework.security.access.prepost.PreAuthorize; | ||||||
|  | import org.springframework.beans.factory.annotation.Autowired; | ||||||
|  | import org.springframework.web.bind.annotation.*; | ||||||
|  | import springfox.documentation.annotations.ApiIgnore; | ||||||
|  |  | ||||||
|  | import javax.servlet.http.HttpServletResponse; | ||||||
|  | import java.util.List; | ||||||
|  | import java.util.Map; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 场景 表  前端控制器 | ||||||
|  |  * | ||||||
|  |  * @author codeGenerator | ||||||
|  |  * @since  2023-12-28 | ||||||
|  |  */ | ||||||
|  | @RestController | ||||||
|  | @RequestMapping("/code/scenes") | ||||||
|  | @Api(tags="场景 表") | ||||||
|  | public class ScenesController { | ||||||
|  |     @Autowired | ||||||
|  |     private ScenesServiceBiz scenesService; | ||||||
|  |  | ||||||
|  |     @GetMapping("page") | ||||||
|  |     @ApiOperation("分页") | ||||||
|  |     @ApiImplicitParams({ | ||||||
|  |         @ApiImplicitParam(name = Constant.PAGE, value = "当前页码,从1开始", paramType = "query", required = true, dataTypeClass=Integer.class) , | ||||||
|  |         @ApiImplicitParam(name = Constant.LIMIT, value = "每页显示记录数", paramType = "query",required = true, dataTypeClass=Integer.class) , | ||||||
|  |         @ApiImplicitParam(name = Constant.ORDER_FIELD, value = "排序字段", paramType = "query", dataTypeClass=String.class) , | ||||||
|  |         @ApiImplicitParam(name = Constant.ORDER, value = "排序方式,可选值(asc、desc)", paramType = "query", dataTypeClass=String.class) | ||||||
|  |     }) | ||||||
|  |     @PreAuthorize("@ex.hasAuthority('code:scenes:page')") | ||||||
|  |     public Result<PageData<ScenesDTO>> page(@ApiIgnore @RequestParam Map<String, Object> params){ | ||||||
|  |         PageData<ScenesDTO> page = scenesService.page(params); | ||||||
|  |  | ||||||
|  |         return new Result<PageData<ScenesDTO>>().ok(page); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @GetMapping("{id}") | ||||||
|  |     @ApiOperation("信息") | ||||||
|  |     @PreAuthorize("@ex.hasAuthority('code:scenes:info')") | ||||||
|  |     public Result<ScenesDTO> get(@PathVariable("id") Long id){ | ||||||
|  |         ScenesDTO data = scenesService.get(id); | ||||||
|  |  | ||||||
|  |         return new Result<ScenesDTO>().ok(data); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @PostMapping | ||||||
|  |     @ApiOperation("保存") | ||||||
|  |     @LogOperation("保存") | ||||||
|  |     @PreAuthorize("@ex.hasAuthority('code:scenes:save')") | ||||||
|  |     public Result<Long> save(@RequestBody ScenesDTO dto){ | ||||||
|  |         //效验数据 | ||||||
|  |         ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class); | ||||||
|  |  | ||||||
|  |         scenesService.save(dto); | ||||||
|  |  | ||||||
|  |         return new Result<Long>().ok(dto.getId()); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @PutMapping | ||||||
|  |     @ApiOperation("修改") | ||||||
|  |     @LogOperation("修改") | ||||||
|  |     @PreAuthorize("@ex.hasAuthority('code:scenes:update')") | ||||||
|  |     public Result<Long> update(@RequestBody ScenesDTO dto){ | ||||||
|  |         //效验数据 | ||||||
|  |         ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class); | ||||||
|  |  | ||||||
|  |         scenesService.update(dto); | ||||||
|  |  | ||||||
|  |         return new Result<Long>().ok(dto.getId()); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @DeleteMapping | ||||||
|  |     @ApiOperation("删除") | ||||||
|  |     @LogOperation("删除") | ||||||
|  |     @PreAuthorize("@ex.hasAuthority('code:scenes:delete')") | ||||||
|  |     public Result delete(@RequestBody Long[] ids){ | ||||||
|  |         //效验数据 | ||||||
|  |         AssertUtils.isArrayEmpty(ids, "id"); | ||||||
|  |  | ||||||
|  |         scenesService.delete(ids); | ||||||
|  |  | ||||||
|  |         return new Result(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @GetMapping("export") | ||||||
|  |     @ApiOperation("导出") | ||||||
|  |     @LogOperation("导出") | ||||||
|  |     @PreAuthorize("@ex.hasAuthority('code:scenes:export')") | ||||||
|  |     public void export(@ApiIgnore @RequestParam Map<String, Object> params, HttpServletResponse response) throws Exception { | ||||||
|  |         List<ScenesDTO> list = scenesService.list(params); | ||||||
|  |  | ||||||
|  |         ExcelUtils.exportExcelToTarget(response, null, list, ScenesExcel.class); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  | } | ||||||
| @@ -31,7 +31,7 @@ import java.util.Map; | |||||||
|  * 包装箱表  前端控制器 |  * 包装箱表  前端控制器 | ||||||
|  * |  * | ||||||
|  * @author codeGenerator |  * @author codeGenerator | ||||||
|  * @since  2023-02-23 |  * @since  2024-01-29 | ||||||
|  */ |  */ | ||||||
| @RestController | @RestController | ||||||
| @RequestMapping("/code/woPackagingBox") | @RequestMapping("/code/woPackagingBox") | ||||||
|   | |||||||
| @@ -0,0 +1,116 @@ | |||||||
|  | package com.cnbm.generator.code.controller; | ||||||
|  |  | ||||||
|  | import com.cnbm.admin.annotation.LogOperation; | ||||||
|  | import com.cnbm.common.constant.Constant; | ||||||
|  | import com.cnbm.common.page.PageData; | ||||||
|  | import com.cnbm.common.utils.ExcelUtils; | ||||||
|  | import com.cnbm.common.utils.Result; | ||||||
|  | import com.cnbm.common.validator.AssertUtils; | ||||||
|  | import com.cnbm.common.validator.ValidatorUtils; | ||||||
|  | import com.cnbm.common.validator.group.AddGroup; | ||||||
|  | import com.cnbm.common.validator.group.DefaultGroup; | ||||||
|  | import com.cnbm.common.validator.group.UpdateGroup; | ||||||
|  | import com.cnbm.generator.code.dto.WorkingTimeDTO; | ||||||
|  | import com.cnbm.generator.code.excel.WorkingTimeExcel; | ||||||
|  | import com.cnbm.generator.code.service.WorkingTimeServiceBiz; | ||||||
|  | import io.swagger.annotations.Api; | ||||||
|  | import io.swagger.annotations.ApiImplicitParam; | ||||||
|  | import io.swagger.annotations.ApiImplicitParams; | ||||||
|  | import io.swagger.annotations.ApiOperation; | ||||||
|  | import org.springframework.security.access.prepost.PreAuthorize; | ||||||
|  | import org.springframework.beans.factory.annotation.Autowired; | ||||||
|  | import org.springframework.web.bind.annotation.*; | ||||||
|  | import springfox.documentation.annotations.ApiIgnore; | ||||||
|  |  | ||||||
|  | import javax.servlet.http.HttpServletResponse; | ||||||
|  | import java.util.List; | ||||||
|  | import java.util.Map; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 班次时间段 表  前端控制器 | ||||||
|  |  * | ||||||
|  |  * @author codeGenerator | ||||||
|  |  * @since  2023-12-28 | ||||||
|  |  */ | ||||||
|  | @RestController | ||||||
|  | @RequestMapping("/code/workingTime") | ||||||
|  | @Api(tags="班次时间段 表") | ||||||
|  | public class WorkingTimeController { | ||||||
|  |     @Autowired | ||||||
|  |     private WorkingTimeServiceBiz workingTimeService; | ||||||
|  |  | ||||||
|  |     @GetMapping("page") | ||||||
|  |     @ApiOperation("分页") | ||||||
|  |     @ApiImplicitParams({ | ||||||
|  |         @ApiImplicitParam(name = Constant.PAGE, value = "当前页码,从1开始", paramType = "query", required = true, dataTypeClass=Integer.class) , | ||||||
|  |         @ApiImplicitParam(name = Constant.LIMIT, value = "每页显示记录数", paramType = "query",required = true, dataTypeClass=Integer.class) , | ||||||
|  |         @ApiImplicitParam(name = Constant.ORDER_FIELD, value = "排序字段", paramType = "query", dataTypeClass=String.class) , | ||||||
|  |         @ApiImplicitParam(name = Constant.ORDER, value = "排序方式,可选值(asc、desc)", paramType = "query", dataTypeClass=String.class) | ||||||
|  |     }) | ||||||
|  |     @PreAuthorize("@ex.hasAuthority('code:workingTime:page')") | ||||||
|  |     public Result<PageData<WorkingTimeDTO>> page(@ApiIgnore @RequestParam Map<String, Object> params){ | ||||||
|  |         PageData<WorkingTimeDTO> page = workingTimeService.page(params); | ||||||
|  |  | ||||||
|  |         return new Result<PageData<WorkingTimeDTO>>().ok(page); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @GetMapping("{id}") | ||||||
|  |     @ApiOperation("信息") | ||||||
|  |     @PreAuthorize("@ex.hasAuthority('code:workingTime:info')") | ||||||
|  |     public Result<WorkingTimeDTO> get(@PathVariable("id") Long id){ | ||||||
|  |         WorkingTimeDTO data = workingTimeService.get(id); | ||||||
|  |  | ||||||
|  |         return new Result<WorkingTimeDTO>().ok(data); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @PostMapping | ||||||
|  |     @ApiOperation("保存") | ||||||
|  |     @LogOperation("保存") | ||||||
|  |     @PreAuthorize("@ex.hasAuthority('code:workingTime:save')") | ||||||
|  |     public Result<Long> save(@RequestBody WorkingTimeDTO dto){ | ||||||
|  |         //效验数据 | ||||||
|  |         ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class); | ||||||
|  |  | ||||||
|  |         workingTimeService.save(dto); | ||||||
|  |  | ||||||
|  |         return new Result<Long>().ok(dto.getId()); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @PutMapping | ||||||
|  |     @ApiOperation("修改") | ||||||
|  |     @LogOperation("修改") | ||||||
|  |     @PreAuthorize("@ex.hasAuthority('code:workingTime:update')") | ||||||
|  |     public Result<Long> update(@RequestBody WorkingTimeDTO dto){ | ||||||
|  |         //效验数据 | ||||||
|  |         ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class); | ||||||
|  |  | ||||||
|  |         workingTimeService.update(dto); | ||||||
|  |  | ||||||
|  |         return new Result<Long>().ok(dto.getId()); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @DeleteMapping | ||||||
|  |     @ApiOperation("删除") | ||||||
|  |     @LogOperation("删除") | ||||||
|  |     @PreAuthorize("@ex.hasAuthority('code:workingTime:delete')") | ||||||
|  |     public Result delete(@RequestBody Long[] ids){ | ||||||
|  |         //效验数据 | ||||||
|  |         AssertUtils.isArrayEmpty(ids, "id"); | ||||||
|  |  | ||||||
|  |         workingTimeService.delete(ids); | ||||||
|  |  | ||||||
|  |         return new Result(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @GetMapping("export") | ||||||
|  |     @ApiOperation("导出") | ||||||
|  |     @LogOperation("导出") | ||||||
|  |     @PreAuthorize("@ex.hasAuthority('code:workingTime:export')") | ||||||
|  |     public void export(@ApiIgnore @RequestParam Map<String, Object> params, HttpServletResponse response) throws Exception { | ||||||
|  |         List<WorkingTimeDTO> list = workingTimeService.list(params); | ||||||
|  |  | ||||||
|  |         ExcelUtils.exportExcelToTarget(response, null, list, WorkingTimeExcel.class); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  | } | ||||||
| @@ -14,7 +14,7 @@ import java.math.BigDecimal; | |||||||
|  * 打印标签模板表 |  * 打印标签模板表 | ||||||
|  * |  * | ||||||
|  * @author codeGenerator |  * @author codeGenerator | ||||||
|  * @since  2023-02-20 |  * @since  2024-01-25 | ||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| @ApiModel(value = "打印标签模板表DTO对象") | @ApiModel(value = "打印标签模板表DTO对象") | ||||||
| @@ -62,7 +62,7 @@ public class PrintModelDTO implements Serializable { | |||||||
| 	@ApiModelProperty(value = "备注") | 	@ApiModelProperty(value = "备注") | ||||||
| 	private String remark; | 	private String remark; | ||||||
|  |  | ||||||
| 	@ApiModelProperty(value = "类型,0:模组标签,1:等级标签") | 	@ApiModelProperty(value = "类型,1:手动,2:自动") | ||||||
| 	private Integer type; | 	private Integer type; | ||||||
|  |  | ||||||
| 	@ApiModelProperty(value = "是否默认模板,0:否,1:是") | 	@ApiModelProperty(value = "是否默认模板,0:否,1:是") | ||||||
| @@ -77,4 +77,22 @@ public class PrintModelDTO implements Serializable { | |||||||
| 	@ApiModelProperty(value = "线体,1=F ; 2=S (用于过程1比对,和包装打印)(设备传给我们的)") | 	@ApiModelProperty(value = "线体,1=F ; 2=S (用于过程1比对,和包装打印)(设备传给我们的)") | ||||||
| 	private Integer lineBody; | 	private Integer lineBody; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "是否启用,0 停用;1 启用") | ||||||
|  | 	private Integer isEnable; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "场景(用不着了,废弃)") | ||||||
|  | 	private String scenes; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "产品等级,t_product_level 把code传过来放进去,不要放id") | ||||||
|  | 	private String productGrade; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "节数,前端写死,输入") | ||||||
|  | 	private String pitchNumber; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "产品等级,前端写死,输入") | ||||||
|  | 	private String maxFuseCurrent; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "产品等级,前端写死,输入") | ||||||
|  | 	private String coverName; | ||||||
|  |  | ||||||
| } | } | ||||||
| @@ -0,0 +1,65 @@ | |||||||
|  | package com.cnbm.generator.code.dto; | ||||||
|  |  | ||||||
|  | import io.swagger.annotations.ApiModel; | ||||||
|  | import io.swagger.annotations.ApiModelProperty; | ||||||
|  | import lombok.Data; | ||||||
|  |  | ||||||
|  | import java.io.Serializable; | ||||||
|  | import java.time.LocalDateTime; | ||||||
|  |  | ||||||
|  | import java.math.BigDecimal; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 产品等级 表 | ||||||
|  |  * | ||||||
|  |  * @author codeGenerator | ||||||
|  |  * @since  2023-12-28 | ||||||
|  |  */ | ||||||
|  | @Data | ||||||
|  | @ApiModel(value = "产品等级 表DTO对象") | ||||||
|  | public class ProductLevelDTO implements Serializable { | ||||||
|  |     private static final long serialVersionUID = 1L; | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "ID") | ||||||
|  | 	private Long id; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "产品名") | ||||||
|  | 	private String productName; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "产品等级,A1/A2/A3/A4/NK") | ||||||
|  | 	private String productLevel; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "备注") | ||||||
|  | 	private String remark; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "删除标志,是否有效:1 可用 0不可用") | ||||||
|  | 	private Integer valid; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "创建人") | ||||||
|  | 	private Long creatorId; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "创建人姓名") | ||||||
|  | 	private String creatorName; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "创建时间") | ||||||
|  | 	private LocalDateTime createTime; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "更新人") | ||||||
|  | 	private Long updaterId; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "更新人姓名") | ||||||
|  | 	private String updaterName; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "更新时间") | ||||||
|  | 	private LocalDateTime updateTime; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "版本号") | ||||||
|  | 	private Integer version; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "产品等级代码") | ||||||
|  | 	private String code; | ||||||
|  |  | ||||||
|  | } | ||||||
| @@ -0,0 +1,62 @@ | |||||||
|  | package com.cnbm.generator.code.dto; | ||||||
|  |  | ||||||
|  | import io.swagger.annotations.ApiModel; | ||||||
|  | import io.swagger.annotations.ApiModelProperty; | ||||||
|  | import lombok.Data; | ||||||
|  |  | ||||||
|  | import java.io.Serializable; | ||||||
|  | import java.time.LocalDateTime; | ||||||
|  |  | ||||||
|  | import java.math.BigDecimal; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 场景 表 | ||||||
|  |  * | ||||||
|  |  * @author codeGenerator | ||||||
|  |  * @since  2023-12-28 | ||||||
|  |  */ | ||||||
|  | @Data | ||||||
|  | @ApiModel(value = "场景 表DTO对象") | ||||||
|  | public class ScenesDTO implements Serializable { | ||||||
|  |     private static final long serialVersionUID = 1L; | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "ID") | ||||||
|  | 	private Long id; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "场景名") | ||||||
|  | 	private String scenesName; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "备注") | ||||||
|  | 	private String remark; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "删除标志,是否有效:1 可用 0不可用") | ||||||
|  | 	private Integer valid; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "创建人") | ||||||
|  | 	private Long creatorId; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "创建人姓名") | ||||||
|  | 	private String creatorName; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "创建时间") | ||||||
|  | 	private LocalDateTime createTime; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "更新人") | ||||||
|  | 	private Long updaterId; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "更新人姓名") | ||||||
|  | 	private String updaterName; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "更新时间") | ||||||
|  | 	private LocalDateTime updateTime; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "版本号") | ||||||
|  | 	private Integer version; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "场景code") | ||||||
|  | 	private String code; | ||||||
|  |  | ||||||
|  | } | ||||||
| @@ -14,7 +14,7 @@ import java.math.BigDecimal; | |||||||
|  * 包装箱表 |  * 包装箱表 | ||||||
|  * |  * | ||||||
|  * @author codeGenerator |  * @author codeGenerator | ||||||
|  * @since  2023-02-23 |  * @since  2024-01-29 | ||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| @ApiModel(value = "包装箱表DTO对象") | @ApiModel(value = "包装箱表DTO对象") | ||||||
| @@ -41,7 +41,7 @@ public class WoPackagingBoxDTO implements Serializable { | |||||||
| 	@ApiModelProperty(value = "等级(舍弃)") | 	@ApiModelProperty(value = "等级(舍弃)") | ||||||
| 	private Integer grade; | 	private Integer grade; | ||||||
|  |  | ||||||
| 	@ApiModelProperty(value = "基板数量,每个包装箱最大20片(舍弃)") | 	@ApiModelProperty(value = "基板数量,每个包装箱最大20片") | ||||||
| 	private Integer substrateQuantity; | 	private Integer substrateQuantity; | ||||||
|  |  | ||||||
| 	@ApiModelProperty(value = "装箱完成时间,指的是包装完成时间") | 	@ApiModelProperty(value = "装箱完成时间,指的是包装完成时间") | ||||||
| @@ -113,4 +113,16 @@ public class WoPackagingBoxDTO implements Serializable { | |||||||
| 	@ApiModelProperty(value = "订单号") | 	@ApiModelProperty(value = "订单号") | ||||||
| 	private String orderNum; | 	private String orderNum; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "产品等级,t_product_level 把code传过来放进去,不要放id") | ||||||
|  | 	private String productGrade; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "节数,前端写死,输入") | ||||||
|  | 	private String pitchNumber; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "最大额定熔断电流,前端写死,输入") | ||||||
|  | 	private String maxFuseCurrent; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "盖板,前端写死,输入") | ||||||
|  | 	private String coverName; | ||||||
|  |  | ||||||
| } | } | ||||||
| @@ -0,0 +1,68 @@ | |||||||
|  | package com.cnbm.generator.code.dto; | ||||||
|  |  | ||||||
|  | import io.swagger.annotations.ApiModel; | ||||||
|  | import io.swagger.annotations.ApiModelProperty; | ||||||
|  | import lombok.Data; | ||||||
|  |  | ||||||
|  | import java.io.Serializable; | ||||||
|  | import java.time.LocalDateTime; | ||||||
|  |  | ||||||
|  | import java.math.BigDecimal; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 班次时间段 表 | ||||||
|  |  * | ||||||
|  |  * @author codeGenerator | ||||||
|  |  * @since  2023-12-28 | ||||||
|  |  */ | ||||||
|  | @Data | ||||||
|  | @ApiModel(value = "班次时间段 表DTO对象") | ||||||
|  | public class WorkingTimeDTO implements Serializable { | ||||||
|  |     private static final long serialVersionUID = 1L; | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "ID") | ||||||
|  | 	private Long id; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "班次名 ,A/B/C...") | ||||||
|  | 	private String orderName; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "班次开始时间, 0点 - 24点") | ||||||
|  | 	private LocalDateTime beginTime; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "班次结束时间, 0点 - 24点") | ||||||
|  | 	private LocalDateTime endTime; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "备注") | ||||||
|  | 	private String remark; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "删除标志,是否有效:1 可用 0不可用") | ||||||
|  | 	private Integer valid; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "创建人") | ||||||
|  | 	private Long creatorId; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "创建人姓名") | ||||||
|  | 	private String creatorName; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "创建时间") | ||||||
|  | 	private LocalDateTime createTime; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "更新人") | ||||||
|  | 	private Long updaterId; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "更新人姓名") | ||||||
|  | 	private String updaterName; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "更新时间") | ||||||
|  | 	private LocalDateTime updateTime; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "版本号") | ||||||
|  | 	private Integer version; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "班次代码") | ||||||
|  | 	private String code; | ||||||
|  |  | ||||||
|  | } | ||||||
| @@ -14,7 +14,7 @@ import lombok.Data; | |||||||
|  * </p> |  * </p> | ||||||
|  * |  * | ||||||
|  * @author codeGenerator |  * @author codeGenerator | ||||||
|  * @since 2023-02-20 |  * @since 2024-01-25 | ||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| @TableName("t_print_model") | @TableName("t_print_model") | ||||||
| @@ -63,7 +63,7 @@ public class PrintModel implements Serializable { | |||||||
|     @ApiModelProperty("备注") |     @ApiModelProperty("备注") | ||||||
|     private String remark; |     private String remark; | ||||||
|  |  | ||||||
|     @ApiModelProperty("类型,0:模组标签,1:等级标签") |     @ApiModelProperty("类型,1:手动,2:自动") | ||||||
|     private Integer type; |     private Integer type; | ||||||
|  |  | ||||||
|     @ApiModelProperty("是否默认模板,0:否,1:是") |     @ApiModelProperty("是否默认模板,0:否,1:是") | ||||||
| @@ -78,6 +78,24 @@ public class PrintModel implements Serializable { | |||||||
|     @ApiModelProperty("线体,1=F ; 2=S (用于过程1比对,和包装打印)(设备传给我们的)") |     @ApiModelProperty("线体,1=F ; 2=S (用于过程1比对,和包装打印)(设备传给我们的)") | ||||||
|     private Integer lineBody; |     private Integer lineBody; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("是否启用,0 停用;1 启用") | ||||||
|  |     private Integer isEnable; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("场景(用不着了,废弃)") | ||||||
|  |     private String scenes; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("产品等级,t_product_level 把code传过来放进去,不要放id") | ||||||
|  |     private String productGrade; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("节数,前端写死,输入") | ||||||
|  |     private String pitchNumber; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("产品等级,前端写死,输入") | ||||||
|  |     private String maxFuseCurrent; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("产品等级,前端写死,输入") | ||||||
|  |     private String coverName; | ||||||
|  |  | ||||||
|  |  | ||||||
|     public static final String ID = "ID"; |     public static final String ID = "ID"; | ||||||
|  |  | ||||||
| @@ -115,4 +133,16 @@ public class PrintModel implements Serializable { | |||||||
|  |  | ||||||
|     public static final String LINE_BODY = "line_body"; |     public static final String LINE_BODY = "line_body"; | ||||||
|  |  | ||||||
|  |     public static final String IS_ENABLE = "is_enable"; | ||||||
|  |  | ||||||
|  |     public static final String SCENES = "scenes"; | ||||||
|  |  | ||||||
|  |     public static final String PRODUCT_GRADE = "product_grade"; | ||||||
|  |  | ||||||
|  |     public static final String PITCH_NUMBER = "pitch_number"; | ||||||
|  |  | ||||||
|  |     public static final String MAX_FUSE_CURRENT = "max_fuse_current"; | ||||||
|  |  | ||||||
|  |     public static final String COVER_NAME = "cover_name"; | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -0,0 +1,93 @@ | |||||||
|  | package com.cnbm.generator.code.entity; | ||||||
|  |  | ||||||
|  | import com.baomidou.mybatisplus.annotation.TableLogic; | ||||||
|  | import com.baomidou.mybatisplus.annotation.TableName; | ||||||
|  | import java.io.Serializable; | ||||||
|  | import java.time.LocalDateTime; | ||||||
|  | import io.swagger.annotations.ApiModel; | ||||||
|  | import io.swagger.annotations.ApiModelProperty; | ||||||
|  | import lombok.Data; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * <p> | ||||||
|  |  * 产品等级 表 | ||||||
|  |  * </p> | ||||||
|  |  * | ||||||
|  |  * @author codeGenerator | ||||||
|  |  * @since 2023-12-28 | ||||||
|  |  */ | ||||||
|  | @Data | ||||||
|  | @TableName("t_product_level") | ||||||
|  | @ApiModel(value = "ProductLevel对象", description = "产品等级 表") | ||||||
|  | public class ProductLevel implements Serializable { | ||||||
|  |  | ||||||
|  |     private static final long serialVersionUID = 1L; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("ID") | ||||||
|  |     private Long id; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("产品名") | ||||||
|  |     private String productName; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("产品等级,A1/A2/A3/A4/NK") | ||||||
|  |     private String productLevel; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("备注") | ||||||
|  |     private String remark; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("删除标志,是否有效:1 可用 0不可用") | ||||||
|  |     @TableLogic | ||||||
|  |     private Integer valid; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("创建人") | ||||||
|  |     private Long creatorId; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("创建人姓名") | ||||||
|  |     private String creatorName; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("创建时间") | ||||||
|  |     private LocalDateTime createTime; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("更新人") | ||||||
|  |     private Long updaterId; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("更新人姓名") | ||||||
|  |     private String updaterName; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("更新时间") | ||||||
|  |     private LocalDateTime updateTime; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("版本号") | ||||||
|  |     private Integer version; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("产品等级代码") | ||||||
|  |     private String code; | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     public static final String ID = "id"; | ||||||
|  |  | ||||||
|  |     public static final String PRODUCT_NAME = "product_name"; | ||||||
|  |  | ||||||
|  |     public static final String PRODUCT_LEVEL = "product_level"; | ||||||
|  |  | ||||||
|  |     public static final String REMARK = "remark"; | ||||||
|  |  | ||||||
|  |     public static final String VALID = "valid"; | ||||||
|  |  | ||||||
|  |     public static final String CREATOR_ID = "creator_id"; | ||||||
|  |  | ||||||
|  |     public static final String CREATOR_NAME = "creator_name"; | ||||||
|  |  | ||||||
|  |     public static final String CREATE_TIME = "create_time"; | ||||||
|  |  | ||||||
|  |     public static final String UPDATER_ID = "updater_id"; | ||||||
|  |  | ||||||
|  |     public static final String UPDATER_NAME = "updater_name"; | ||||||
|  |  | ||||||
|  |     public static final String UPDATE_TIME = "update_time"; | ||||||
|  |  | ||||||
|  |     public static final String VERSION = "version"; | ||||||
|  |  | ||||||
|  |     public static final String CODE = "code"; | ||||||
|  |  | ||||||
|  | } | ||||||
| @@ -0,0 +1,88 @@ | |||||||
|  | package com.cnbm.generator.code.entity; | ||||||
|  |  | ||||||
|  | import com.baomidou.mybatisplus.annotation.TableLogic; | ||||||
|  | import com.baomidou.mybatisplus.annotation.TableName; | ||||||
|  | import java.io.Serializable; | ||||||
|  | import java.time.LocalDateTime; | ||||||
|  | import io.swagger.annotations.ApiModel; | ||||||
|  | import io.swagger.annotations.ApiModelProperty; | ||||||
|  | import lombok.Data; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * <p> | ||||||
|  |  * 场景 表 | ||||||
|  |  * </p> | ||||||
|  |  * | ||||||
|  |  * @author codeGenerator | ||||||
|  |  * @since 2023-12-28 | ||||||
|  |  */ | ||||||
|  | @Data | ||||||
|  | @TableName("t_scenes") | ||||||
|  | @ApiModel(value = "Scenes对象", description = "场景 表") | ||||||
|  | public class Scenes implements Serializable { | ||||||
|  |  | ||||||
|  |     private static final long serialVersionUID = 1L; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("ID") | ||||||
|  |     private Long id; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("场景名") | ||||||
|  |     private String scenesName; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("备注") | ||||||
|  |     private String remark; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("删除标志,是否有效:1 可用 0不可用") | ||||||
|  |     @TableLogic | ||||||
|  |     private Integer valid; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("创建人") | ||||||
|  |     private Long creatorId; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("创建人姓名") | ||||||
|  |     private String creatorName; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("创建时间") | ||||||
|  |     private LocalDateTime createTime; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("更新人") | ||||||
|  |     private Long updaterId; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("更新人姓名") | ||||||
|  |     private String updaterName; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("更新时间") | ||||||
|  |     private LocalDateTime updateTime; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("版本号") | ||||||
|  |     private Integer version; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("场景code") | ||||||
|  |     private String code; | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     public static final String ID = "id"; | ||||||
|  |  | ||||||
|  |     public static final String SCENES_NAME = "scenes_name"; | ||||||
|  |  | ||||||
|  |     public static final String REMARK = "remark"; | ||||||
|  |  | ||||||
|  |     public static final String VALID = "valid"; | ||||||
|  |  | ||||||
|  |     public static final String CREATOR_ID = "creator_id"; | ||||||
|  |  | ||||||
|  |     public static final String CREATOR_NAME = "creator_name"; | ||||||
|  |  | ||||||
|  |     public static final String CREATE_TIME = "create_time"; | ||||||
|  |  | ||||||
|  |     public static final String UPDATER_ID = "updater_id"; | ||||||
|  |  | ||||||
|  |     public static final String UPDATER_NAME = "updater_name"; | ||||||
|  |  | ||||||
|  |     public static final String UPDATE_TIME = "update_time"; | ||||||
|  |  | ||||||
|  |     public static final String VERSION = "version"; | ||||||
|  |  | ||||||
|  |     public static final String CODE = "code"; | ||||||
|  |  | ||||||
|  | } | ||||||
| @@ -14,7 +14,7 @@ import lombok.Data; | |||||||
|  * </p> |  * </p> | ||||||
|  * |  * | ||||||
|  * @author codeGenerator |  * @author codeGenerator | ||||||
|  * @since 2023-02-23 |  * @since 2024-01-29 | ||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| @TableName("t_wo_packaging_box") | @TableName("t_wo_packaging_box") | ||||||
| @@ -41,7 +41,7 @@ public class WoPackagingBox implements Serializable { | |||||||
|     @ApiModelProperty("等级(舍弃)") |     @ApiModelProperty("等级(舍弃)") | ||||||
|     private Integer grade; |     private Integer grade; | ||||||
|  |  | ||||||
|     @ApiModelProperty("基板数量,每个包装箱最大20片(舍弃)") |     @ApiModelProperty("基板数量,每个包装箱最大20片") | ||||||
|     private Integer substrateQuantity; |     private Integer substrateQuantity; | ||||||
|  |  | ||||||
|     @ApiModelProperty("装箱完成时间,指的是包装完成时间") |     @ApiModelProperty("装箱完成时间,指的是包装完成时间") | ||||||
| @@ -114,6 +114,18 @@ public class WoPackagingBox implements Serializable { | |||||||
|     @ApiModelProperty("订单号") |     @ApiModelProperty("订单号") | ||||||
|     private String orderNum; |     private String orderNum; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("产品等级,t_product_level 把code传过来放进去,不要放id") | ||||||
|  |     private String productGrade; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("节数,前端写死,输入") | ||||||
|  |     private String pitchNumber; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("最大额定熔断电流,前端写死,输入") | ||||||
|  |     private String maxFuseCurrent; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("盖板,前端写死,输入") | ||||||
|  |     private String coverName; | ||||||
|  |  | ||||||
|  |  | ||||||
|     public static final String ID = "ID"; |     public static final String ID = "ID"; | ||||||
|  |  | ||||||
| @@ -175,4 +187,12 @@ public class WoPackagingBox implements Serializable { | |||||||
|  |  | ||||||
|     public static final String ORDER_NUM = "ORDER_NUM"; |     public static final String ORDER_NUM = "ORDER_NUM"; | ||||||
|  |  | ||||||
|  |     public static final String PRODUCT_GRADE = "product_grade"; | ||||||
|  |  | ||||||
|  |     public static final String PITCH_NUMBER = "pitch_number"; | ||||||
|  |  | ||||||
|  |     public static final String MAX_FUSE_CURRENT = "max_fuse_current"; | ||||||
|  |  | ||||||
|  |     public static final String COVER_NAME = "cover_name"; | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -0,0 +1,98 @@ | |||||||
|  | package com.cnbm.generator.code.entity; | ||||||
|  |  | ||||||
|  | import com.baomidou.mybatisplus.annotation.TableLogic; | ||||||
|  | import com.baomidou.mybatisplus.annotation.TableName; | ||||||
|  | import java.io.Serializable; | ||||||
|  | import java.time.LocalDateTime; | ||||||
|  | import io.swagger.annotations.ApiModel; | ||||||
|  | import io.swagger.annotations.ApiModelProperty; | ||||||
|  | import lombok.Data; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * <p> | ||||||
|  |  * 班次时间段 表 | ||||||
|  |  * </p> | ||||||
|  |  * | ||||||
|  |  * @author codeGenerator | ||||||
|  |  * @since 2023-12-28 | ||||||
|  |  */ | ||||||
|  | @Data | ||||||
|  | @TableName("t_working_time") | ||||||
|  | @ApiModel(value = "WorkingTime对象", description = "班次时间段 表") | ||||||
|  | public class WorkingTime implements Serializable { | ||||||
|  |  | ||||||
|  |     private static final long serialVersionUID = 1L; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("ID") | ||||||
|  |     private Long id; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("班次名 ,A/B/C...") | ||||||
|  |     private String orderName; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("班次开始时间, 0点 - 24点") | ||||||
|  |     private LocalDateTime beginTime; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("班次结束时间, 0点 - 24点") | ||||||
|  |     private LocalDateTime endTime; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("备注") | ||||||
|  |     private String remark; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("删除标志,是否有效:1 可用 0不可用") | ||||||
|  |     @TableLogic | ||||||
|  |     private Integer valid; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("创建人") | ||||||
|  |     private Long creatorId; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("创建人姓名") | ||||||
|  |     private String creatorName; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("创建时间") | ||||||
|  |     private LocalDateTime createTime; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("更新人") | ||||||
|  |     private Long updaterId; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("更新人姓名") | ||||||
|  |     private String updaterName; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("更新时间") | ||||||
|  |     private LocalDateTime updateTime; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("版本号") | ||||||
|  |     private Integer version; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("班次代码") | ||||||
|  |     private String code; | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     public static final String ID = "id"; | ||||||
|  |  | ||||||
|  |     public static final String ORDER_NAME = "order_name"; | ||||||
|  |  | ||||||
|  |     public static final String BEGIN_TIME = "begin_time"; | ||||||
|  |  | ||||||
|  |     public static final String END_TIME = "end_time"; | ||||||
|  |  | ||||||
|  |     public static final String REMARK = "remark"; | ||||||
|  |  | ||||||
|  |     public static final String VALID = "valid"; | ||||||
|  |  | ||||||
|  |     public static final String CREATOR_ID = "creator_id"; | ||||||
|  |  | ||||||
|  |     public static final String CREATOR_NAME = "creator_name"; | ||||||
|  |  | ||||||
|  |     public static final String CREATE_TIME = "create_time"; | ||||||
|  |  | ||||||
|  |     public static final String UPDATER_ID = "updater_id"; | ||||||
|  |  | ||||||
|  |     public static final String UPDATER_NAME = "updater_name"; | ||||||
|  |  | ||||||
|  |     public static final String UPDATE_TIME = "update_time"; | ||||||
|  |  | ||||||
|  |     public static final String VERSION = "version"; | ||||||
|  |  | ||||||
|  |     public static final String CODE = "code"; | ||||||
|  |  | ||||||
|  | } | ||||||
| @@ -12,7 +12,7 @@ import java.util.Date; | |||||||
|  * 打印标签模板表 |  * 打印标签模板表 | ||||||
|  * |  * | ||||||
|  * @author codeGenerator |  * @author codeGenerator | ||||||
|  * @since  2023-02-20 |  * @since  2024-01-25 | ||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| public class PrintModelExcel { | public class PrintModelExcel { | ||||||
| @@ -42,7 +42,7 @@ public class PrintModelExcel { | |||||||
|     private Integer valid; |     private Integer valid; | ||||||
|     @Excel(name = "备注") |     @Excel(name = "备注") | ||||||
|     private String remark; |     private String remark; | ||||||
|     @Excel(name = "类型,0:模组标签,1:等级标签") |     @Excel(name = "类型,1:手动,2:自动") | ||||||
|     private Integer type; |     private Integer type; | ||||||
|     @Excel(name = "是否默认模板,0:否,1:是") |     @Excel(name = "是否默认模板,0:否,1:是") | ||||||
|     private Integer isDefault; |     private Integer isDefault; | ||||||
| @@ -52,5 +52,17 @@ public class PrintModelExcel { | |||||||
|     private String content; |     private String content; | ||||||
|     @Excel(name = "线体,1=F ; 2=S (用于过程1比对,和包装打印)(设备传给我们的)") |     @Excel(name = "线体,1=F ; 2=S (用于过程1比对,和包装打印)(设备传给我们的)") | ||||||
|     private Integer lineBody; |     private Integer lineBody; | ||||||
|  |     @Excel(name = "是否启用,0 停用;1 启用") | ||||||
|  |     private Integer isEnable; | ||||||
|  |     @Excel(name = "场景(用不着了,废弃)") | ||||||
|  |     private String scenes; | ||||||
|  |     @Excel(name = "产品等级,t_product_level 把code传过来放进去,不要放id") | ||||||
|  |     private String productGrade; | ||||||
|  |     @Excel(name = "节数,前端写死,输入") | ||||||
|  |     private String pitchNumber; | ||||||
|  |     @Excel(name = "产品等级,前端写死,输入") | ||||||
|  |     private String maxFuseCurrent; | ||||||
|  |     @Excel(name = "产品等级,前端写死,输入") | ||||||
|  |     private String coverName; | ||||||
|  |  | ||||||
| } | } | ||||||
| @@ -0,0 +1,46 @@ | |||||||
|  | package com.cnbm.generator.code.excel; | ||||||
|  |  | ||||||
|  | import cn.afterturn.easypoi.excel.annotation.Excel; | ||||||
|  | import lombok.Data; | ||||||
|  |  | ||||||
|  | import java.time.LocalDateTime; | ||||||
|  | import java.math.BigDecimal; | ||||||
|  |  | ||||||
|  | import java.util.Date; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 产品等级 表 | ||||||
|  |  * | ||||||
|  |  * @author codeGenerator | ||||||
|  |  * @since  2023-12-28 | ||||||
|  |  */ | ||||||
|  | @Data | ||||||
|  | public class ProductLevelExcel { | ||||||
|  |     @Excel(name = "ID") | ||||||
|  |     private Long id; | ||||||
|  |     @Excel(name = "产品名") | ||||||
|  |     private String productName; | ||||||
|  |     @Excel(name = "产品等级,A1/A2/A3/A4/NK") | ||||||
|  |     private String productLevel; | ||||||
|  |     @Excel(name = "备注") | ||||||
|  |     private String remark; | ||||||
|  |     @Excel(name = "删除标志,是否有效:1 可用 0不可用") | ||||||
|  |     private Integer valid; | ||||||
|  |     @Excel(name = "创建人") | ||||||
|  |     private Long creatorId; | ||||||
|  |     @Excel(name = "创建人姓名") | ||||||
|  |     private String creatorName; | ||||||
|  |     @Excel(name = "创建时间") | ||||||
|  |     private LocalDateTime createTime; | ||||||
|  |     @Excel(name = "更新人") | ||||||
|  |     private Long updaterId; | ||||||
|  |     @Excel(name = "更新人姓名") | ||||||
|  |     private String updaterName; | ||||||
|  |     @Excel(name = "更新时间") | ||||||
|  |     private LocalDateTime updateTime; | ||||||
|  |     @Excel(name = "版本号") | ||||||
|  |     private Integer version; | ||||||
|  |     @Excel(name = "产品等级代码") | ||||||
|  |     private String code; | ||||||
|  |  | ||||||
|  | } | ||||||
| @@ -0,0 +1,44 @@ | |||||||
|  | package com.cnbm.generator.code.excel; | ||||||
|  |  | ||||||
|  | import cn.afterturn.easypoi.excel.annotation.Excel; | ||||||
|  | import lombok.Data; | ||||||
|  |  | ||||||
|  | import java.time.LocalDateTime; | ||||||
|  | import java.math.BigDecimal; | ||||||
|  |  | ||||||
|  | import java.util.Date; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 场景 表 | ||||||
|  |  * | ||||||
|  |  * @author codeGenerator | ||||||
|  |  * @since  2023-12-28 | ||||||
|  |  */ | ||||||
|  | @Data | ||||||
|  | public class ScenesExcel { | ||||||
|  |     @Excel(name = "ID") | ||||||
|  |     private Long id; | ||||||
|  |     @Excel(name = "场景名") | ||||||
|  |     private String scenesName; | ||||||
|  |     @Excel(name = "备注") | ||||||
|  |     private String remark; | ||||||
|  |     @Excel(name = "删除标志,是否有效:1 可用 0不可用") | ||||||
|  |     private Integer valid; | ||||||
|  |     @Excel(name = "创建人") | ||||||
|  |     private Long creatorId; | ||||||
|  |     @Excel(name = "创建人姓名") | ||||||
|  |     private String creatorName; | ||||||
|  |     @Excel(name = "创建时间") | ||||||
|  |     private LocalDateTime createTime; | ||||||
|  |     @Excel(name = "更新人") | ||||||
|  |     private Long updaterId; | ||||||
|  |     @Excel(name = "更新人姓名") | ||||||
|  |     private String updaterName; | ||||||
|  |     @Excel(name = "更新时间") | ||||||
|  |     private LocalDateTime updateTime; | ||||||
|  |     @Excel(name = "版本号") | ||||||
|  |     private Integer version; | ||||||
|  |     @Excel(name = "场景code") | ||||||
|  |     private String code; | ||||||
|  |  | ||||||
|  | } | ||||||
| @@ -12,7 +12,7 @@ import java.util.Date; | |||||||
|  * 包装箱表 |  * 包装箱表 | ||||||
|  * |  * | ||||||
|  * @author codeGenerator |  * @author codeGenerator | ||||||
|  * @since  2023-02-23 |  * @since  2024-01-29 | ||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| public class WoPackagingBoxExcel { | public class WoPackagingBoxExcel { | ||||||
| @@ -28,7 +28,7 @@ public class WoPackagingBoxExcel { | |||||||
|     private Integer power; |     private Integer power; | ||||||
|     @Excel(name = "等级(舍弃)") |     @Excel(name = "等级(舍弃)") | ||||||
|     private Integer grade; |     private Integer grade; | ||||||
|     @Excel(name = "基板数量,每个包装箱最大20片(舍弃)") |     @Excel(name = "基板数量,每个包装箱最大20片") | ||||||
|     private Integer substrateQuantity; |     private Integer substrateQuantity; | ||||||
|     @Excel(name = "装箱完成时间,指的是包装完成时间") |     @Excel(name = "装箱完成时间,指的是包装完成时间") | ||||||
|     private LocalDateTime packagingTime; |     private LocalDateTime packagingTime; | ||||||
| @@ -76,5 +76,13 @@ public class WoPackagingBoxExcel { | |||||||
|     private Integer isArrived; |     private Integer isArrived; | ||||||
|     @Excel(name = "订单号") |     @Excel(name = "订单号") | ||||||
|     private String orderNum; |     private String orderNum; | ||||||
|  |     @Excel(name = "产品等级,t_product_level 把code传过来放进去,不要放id") | ||||||
|  |     private String productGrade; | ||||||
|  |     @Excel(name = "节数,前端写死,输入") | ||||||
|  |     private String pitchNumber; | ||||||
|  |     @Excel(name = "最大额定熔断电流,前端写死,输入") | ||||||
|  |     private String maxFuseCurrent; | ||||||
|  |     @Excel(name = "盖板,前端写死,输入") | ||||||
|  |     private String coverName; | ||||||
|  |  | ||||||
| } | } | ||||||
| @@ -0,0 +1,48 @@ | |||||||
|  | package com.cnbm.generator.code.excel; | ||||||
|  |  | ||||||
|  | import cn.afterturn.easypoi.excel.annotation.Excel; | ||||||
|  | import lombok.Data; | ||||||
|  |  | ||||||
|  | import java.time.LocalDateTime; | ||||||
|  | import java.math.BigDecimal; | ||||||
|  |  | ||||||
|  | import java.util.Date; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 班次时间段 表 | ||||||
|  |  * | ||||||
|  |  * @author codeGenerator | ||||||
|  |  * @since  2023-12-28 | ||||||
|  |  */ | ||||||
|  | @Data | ||||||
|  | public class WorkingTimeExcel { | ||||||
|  |     @Excel(name = "ID") | ||||||
|  |     private Long id; | ||||||
|  |     @Excel(name = "班次名 ,A/B/C...") | ||||||
|  |     private String orderName; | ||||||
|  |     @Excel(name = "班次开始时间, 0点 - 24点") | ||||||
|  |     private LocalDateTime beginTime; | ||||||
|  |     @Excel(name = "班次结束时间, 0点 - 24点") | ||||||
|  |     private LocalDateTime endTime; | ||||||
|  |     @Excel(name = "备注") | ||||||
|  |     private String remark; | ||||||
|  |     @Excel(name = "删除标志,是否有效:1 可用 0不可用") | ||||||
|  |     private Integer valid; | ||||||
|  |     @Excel(name = "创建人") | ||||||
|  |     private Long creatorId; | ||||||
|  |     @Excel(name = "创建人姓名") | ||||||
|  |     private String creatorName; | ||||||
|  |     @Excel(name = "创建时间") | ||||||
|  |     private LocalDateTime createTime; | ||||||
|  |     @Excel(name = "更新人") | ||||||
|  |     private Long updaterId; | ||||||
|  |     @Excel(name = "更新人姓名") | ||||||
|  |     private String updaterName; | ||||||
|  |     @Excel(name = "更新时间") | ||||||
|  |     private LocalDateTime updateTime; | ||||||
|  |     @Excel(name = "版本号") | ||||||
|  |     private Integer version; | ||||||
|  |     @Excel(name = "班次代码") | ||||||
|  |     private String code; | ||||||
|  |  | ||||||
|  | } | ||||||
| @@ -8,7 +8,7 @@ import org.apache.ibatis.annotations.Mapper; | |||||||
|  * 打印标签模板表 |  * 打印标签模板表 | ||||||
|  * |  * | ||||||
|  * @author codeGenerator |  * @author codeGenerator | ||||||
|  * @since 2023-02-20 |  * @since 2024-01-25 | ||||||
|  */ |  */ | ||||||
| @Mapper | @Mapper | ||||||
| public interface PrintModelMapper extends BaseDao<PrintModel> { | public interface PrintModelMapper extends BaseDao<PrintModel> { | ||||||
|   | |||||||
| @@ -20,6 +20,12 @@ | |||||||
|             <id column="IS_PREVIEW" property="isPreview" /> |             <id column="IS_PREVIEW" property="isPreview" /> | ||||||
|             <id column="CONTENT" property="content" /> |             <id column="CONTENT" property="content" /> | ||||||
|             <id column="line_body" property="lineBody" /> |             <id column="line_body" property="lineBody" /> | ||||||
|  |             <id column="is_enable" property="isEnable" /> | ||||||
|  |             <id column="scenes" property="scenes" /> | ||||||
|  |             <id column="product_grade" property="productGrade" /> | ||||||
|  |             <id column="pitch_number" property="pitchNumber" /> | ||||||
|  |             <id column="max_fuse_current" property="maxFuseCurrent" /> | ||||||
|  |             <id column="cover_name" property="coverName" /> | ||||||
|     </resultMap> |     </resultMap> | ||||||
|  |  | ||||||
| </mapper> | </mapper> | ||||||
|   | |||||||
| @@ -0,0 +1,16 @@ | |||||||
|  | package com.cnbm.generator.code.mapper; | ||||||
|  |  | ||||||
|  | import com.cnbm.common.dao.BaseDao; | ||||||
|  | import com.cnbm.generator.code.entity.ProductLevel; | ||||||
|  | import org.apache.ibatis.annotations.Mapper; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 产品等级 表 | ||||||
|  |  * | ||||||
|  |  * @author codeGenerator | ||||||
|  |  * @since 2023-12-28 | ||||||
|  |  */ | ||||||
|  | @Mapper | ||||||
|  | public interface ProductLevelMapper extends BaseDao<ProductLevel> { | ||||||
|  | 	 | ||||||
|  | } | ||||||
| @@ -0,0 +1,20 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | ||||||
|  | <mapper namespace="com.cnbm.generator.code.mapper.ProductLevelMapper"> | ||||||
|  |     <resultMap type="com.cnbm.generator.code.entity.ProductLevel" id="ProductLevelMap"> | ||||||
|  |             <id column="id" property="id" /> | ||||||
|  |             <id column="product_name" property="productName" /> | ||||||
|  |             <id column="product_level" property="productLevel" /> | ||||||
|  |             <id column="remark" property="remark" /> | ||||||
|  |             <id column="valid" property="valid" /> | ||||||
|  |             <id column="creator_id" property="creatorId" /> | ||||||
|  |             <id column="creator_name" property="creatorName" /> | ||||||
|  |             <id column="create_time" property="createTime" /> | ||||||
|  |             <id column="updater_id" property="updaterId" /> | ||||||
|  |             <id column="updater_name" property="updaterName" /> | ||||||
|  |             <id column="update_time" property="updateTime" /> | ||||||
|  |             <id column="version" property="version" /> | ||||||
|  |             <id column="code" property="code" /> | ||||||
|  |     </resultMap> | ||||||
|  |  | ||||||
|  | </mapper> | ||||||
| @@ -0,0 +1,16 @@ | |||||||
|  | package com.cnbm.generator.code.mapper; | ||||||
|  |  | ||||||
|  | import com.cnbm.common.dao.BaseDao; | ||||||
|  | import com.cnbm.generator.code.entity.Scenes; | ||||||
|  | import org.apache.ibatis.annotations.Mapper; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 场景 表 | ||||||
|  |  * | ||||||
|  |  * @author codeGenerator | ||||||
|  |  * @since 2023-12-28 | ||||||
|  |  */ | ||||||
|  | @Mapper | ||||||
|  | public interface ScenesMapper extends BaseDao<Scenes> { | ||||||
|  | 	 | ||||||
|  | } | ||||||
| @@ -0,0 +1,19 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | ||||||
|  | <mapper namespace="com.cnbm.generator.code.mapper.ScenesMapper"> | ||||||
|  |     <resultMap type="com.cnbm.generator.code.entity.Scenes" id="ScenesMap"> | ||||||
|  |             <id column="id" property="id" /> | ||||||
|  |             <id column="scenes_name" property="scenesName" /> | ||||||
|  |             <id column="remark" property="remark" /> | ||||||
|  |             <id column="valid" property="valid" /> | ||||||
|  |             <id column="creator_id" property="creatorId" /> | ||||||
|  |             <id column="creator_name" property="creatorName" /> | ||||||
|  |             <id column="create_time" property="createTime" /> | ||||||
|  |             <id column="updater_id" property="updaterId" /> | ||||||
|  |             <id column="updater_name" property="updaterName" /> | ||||||
|  |             <id column="update_time" property="updateTime" /> | ||||||
|  |             <id column="version" property="version" /> | ||||||
|  |             <id column="code" property="code" /> | ||||||
|  |     </resultMap> | ||||||
|  |  | ||||||
|  | </mapper> | ||||||
| @@ -8,7 +8,7 @@ import org.apache.ibatis.annotations.Mapper; | |||||||
|  * 包装箱表 |  * 包装箱表 | ||||||
|  * |  * | ||||||
|  * @author codeGenerator |  * @author codeGenerator | ||||||
|  * @since 2023-02-23 |  * @since 2024-01-29 | ||||||
|  */ |  */ | ||||||
| @Mapper | @Mapper | ||||||
| public interface WoPackagingBoxMapper extends BaseDao<WoPackagingBox> { | public interface WoPackagingBoxMapper extends BaseDao<WoPackagingBox> { | ||||||
|   | |||||||
| @@ -32,6 +32,10 @@ | |||||||
|             <id column="model" property="model" /> |             <id column="model" property="model" /> | ||||||
|             <id column="is_arrived" property="isArrived" /> |             <id column="is_arrived" property="isArrived" /> | ||||||
|             <id column="ORDER_NUM" property="orderNum" /> |             <id column="ORDER_NUM" property="orderNum" /> | ||||||
|  |             <id column="product_grade" property="productGrade" /> | ||||||
|  |             <id column="pitch_number" property="pitchNumber" /> | ||||||
|  |             <id column="max_fuse_current" property="maxFuseCurrent" /> | ||||||
|  |             <id column="cover_name" property="coverName" /> | ||||||
|     </resultMap> |     </resultMap> | ||||||
|  |  | ||||||
| </mapper> | </mapper> | ||||||
|   | |||||||
| @@ -0,0 +1,16 @@ | |||||||
|  | package com.cnbm.generator.code.mapper; | ||||||
|  |  | ||||||
|  | import com.cnbm.common.dao.BaseDao; | ||||||
|  | import com.cnbm.generator.code.entity.WorkingTime; | ||||||
|  | import org.apache.ibatis.annotations.Mapper; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 班次时间段 表 | ||||||
|  |  * | ||||||
|  |  * @author codeGenerator | ||||||
|  |  * @since 2023-12-28 | ||||||
|  |  */ | ||||||
|  | @Mapper | ||||||
|  | public interface WorkingTimeMapper extends BaseDao<WorkingTime> { | ||||||
|  | 	 | ||||||
|  | } | ||||||
| @@ -0,0 +1,21 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | ||||||
|  | <mapper namespace="com.cnbm.generator.code.mapper.WorkingTimeMapper"> | ||||||
|  |     <resultMap type="com.cnbm.generator.code.entity.WorkingTime" id="WorkingTimeMap"> | ||||||
|  |             <id column="id" property="id" /> | ||||||
|  |             <id column="order_name" property="orderName" /> | ||||||
|  |             <id column="begin_time" property="beginTime" /> | ||||||
|  |             <id column="end_time" property="endTime" /> | ||||||
|  |             <id column="remark" property="remark" /> | ||||||
|  |             <id column="valid" property="valid" /> | ||||||
|  |             <id column="creator_id" property="creatorId" /> | ||||||
|  |             <id column="creator_name" property="creatorName" /> | ||||||
|  |             <id column="create_time" property="createTime" /> | ||||||
|  |             <id column="updater_id" property="updaterId" /> | ||||||
|  |             <id column="updater_name" property="updaterName" /> | ||||||
|  |             <id column="update_time" property="updateTime" /> | ||||||
|  |             <id column="version" property="version" /> | ||||||
|  |             <id column="code" property="code" /> | ||||||
|  |     </resultMap> | ||||||
|  |  | ||||||
|  | </mapper> | ||||||
| @@ -1,7 +1,7 @@ | |||||||
| -- 菜单初始SQL | -- 菜单初始SQL | ||||||
| INSERT INTO sys_menu(id, pid, name, url, permissions, type, icon, sort, creator, create_date, updater, update_date)VALUES (1627506543435272194, 1067246875800000035, '打印标签模板表', 'packing/printModel', NULL, 0, 'icon-desktop', 0, 1067246875800000001, now(), 1067246875800000001, now()); | INSERT INTO sys_menu(id, pid, name, url, permissions, type, icon, sort, creator, create_date, updater, update_date)VALUES (1750401797217132546, 1067246875800000035, '打印标签模板表', 'code/printModel', NULL, 0, 'icon-desktop', 0, 1067246875800000001, now(), 1067246875800000001, now()); | ||||||
| INSERT INTO sys_menu(id, pid, name, url, permissions, type, icon, sort, creator, create_date, updater, update_date) VALUES (1627506543435272195, 1627506543435272194, '查看', NULL, 'packing:printModel:page,packing:printModel:info', 1, NULL, 0, 1067246875800000001, now(), 1067246875800000001, now()); | INSERT INTO sys_menu(id, pid, name, url, permissions, type, icon, sort, creator, create_date, updater, update_date) VALUES (1750401797217132547, 1750401797217132546, '查看', NULL, 'code:printModel:page,code:printModel:info', 1, NULL, 0, 1067246875800000001, now(), 1067246875800000001, now()); | ||||||
| INSERT INTO sys_menu(id, pid, name, url, permissions, type, icon, sort, creator, create_date, updater, update_date) VALUES (1627506543435272196, 1627506543435272194, '新增', NULL, 'packing:printModel:save', 1, NULL, 1, 1067246875800000001, now(), 1067246875800000001, now()); | INSERT INTO sys_menu(id, pid, name, url, permissions, type, icon, sort, creator, create_date, updater, update_date) VALUES (1750401797217132548, 1750401797217132546, '新增', NULL, 'code:printModel:save', 1, NULL, 1, 1067246875800000001, now(), 1067246875800000001, now()); | ||||||
| INSERT INTO sys_menu(id, pid, name, url, permissions, type, icon, sort, creator, create_date, updater, update_date) VALUES (1627506543435272197, 1627506543435272194, '修改', NULL, 'packing:printModel:update', 1, NULL, 2, 1067246875800000001, now(), 1067246875800000001, now()); | INSERT INTO sys_menu(id, pid, name, url, permissions, type, icon, sort, creator, create_date, updater, update_date) VALUES (1750401797217132549, 1750401797217132546, '修改', NULL, 'code:printModel:update', 1, NULL, 2, 1067246875800000001, now(), 1067246875800000001, now()); | ||||||
| INSERT INTO sys_menu(id, pid, name, url, permissions, type, icon, sort, creator, create_date, updater, update_date) VALUES (1627506543435272198, 1627506543435272194, '删除', NULL, 'packing:printModel:delete', 1, NULL, 3, 1067246875800000001, now(), 1067246875800000001, now()); | INSERT INTO sys_menu(id, pid, name, url, permissions, type, icon, sort, creator, create_date, updater, update_date) VALUES (1750401797217132550, 1750401797217132546, '删除', NULL, 'code:printModel:delete', 1, NULL, 3, 1067246875800000001, now(), 1067246875800000001, now()); | ||||||
| INSERT INTO sys_menu(id, pid, name, url, permissions, type, icon, sort, creator, create_date, updater, update_date) VALUES (1627506543435272199, 1627506543435272194, '导出', NULL, 'packing:printModel:export', 1, NULL, 4, 1067246875800000001, now(), 1067246875800000001, now()); | INSERT INTO sys_menu(id, pid, name, url, permissions, type, icon, sort, creator, create_date, updater, update_date) VALUES (1750401797217132551, 1750401797217132546, '导出', NULL, 'code:printModel:export', 1, NULL, 4, 1067246875800000001, now(), 1067246875800000001, now()); | ||||||
|   | |||||||
| @@ -0,0 +1,7 @@ | |||||||
|  | -- 菜单初始SQL | ||||||
|  | INSERT INTO sys_menu(id, pid, name, url, permissions, type, icon, sort, creator, create_date, updater, update_date)VALUES (1740170405581496322, 1067246875800000035, '产品等级 表', 'code/productLevel', NULL, 0, 'icon-desktop', 0, 1067246875800000001, now(), 1067246875800000001, now()); | ||||||
|  | INSERT INTO sys_menu(id, pid, name, url, permissions, type, icon, sort, creator, create_date, updater, update_date) VALUES (1740170405581496323, 1740170405581496322, '查看', NULL, 'code:productLevel:page,code:productLevel:info', 1, NULL, 0, 1067246875800000001, now(), 1067246875800000001, now()); | ||||||
|  | INSERT INTO sys_menu(id, pid, name, url, permissions, type, icon, sort, creator, create_date, updater, update_date) VALUES (1740170405581496324, 1740170405581496322, '新增', NULL, 'code:productLevel:save', 1, NULL, 1, 1067246875800000001, now(), 1067246875800000001, now()); | ||||||
|  | INSERT INTO sys_menu(id, pid, name, url, permissions, type, icon, sort, creator, create_date, updater, update_date) VALUES (1740170405581496325, 1740170405581496322, '修改', NULL, 'code:productLevel:update', 1, NULL, 2, 1067246875800000001, now(), 1067246875800000001, now()); | ||||||
|  | INSERT INTO sys_menu(id, pid, name, url, permissions, type, icon, sort, creator, create_date, updater, update_date) VALUES (1740170405581496326, 1740170405581496322, '删除', NULL, 'code:productLevel:delete', 1, NULL, 3, 1067246875800000001, now(), 1067246875800000001, now()); | ||||||
|  | INSERT INTO sys_menu(id, pid, name, url, permissions, type, icon, sort, creator, create_date, updater, update_date) VALUES (1740170405581496327, 1740170405581496322, '导出', NULL, 'code:productLevel:export', 1, NULL, 4, 1067246875800000001, now(), 1067246875800000001, now()); | ||||||
| @@ -0,0 +1,7 @@ | |||||||
|  | -- 菜单初始SQL | ||||||
|  | INSERT INTO sys_menu(id, pid, name, url, permissions, type, icon, sort, creator, create_date, updater, update_date)VALUES (1740173054175444994, 1067246875800000035, '场景 表', 'code/scenes', NULL, 0, 'icon-desktop', 0, 1067246875800000001, now(), 1067246875800000001, now()); | ||||||
|  | INSERT INTO sys_menu(id, pid, name, url, permissions, type, icon, sort, creator, create_date, updater, update_date) VALUES (1740173054175444995, 1740173054175444994, '查看', NULL, 'code:scenes:page,code:scenes:info', 1, NULL, 0, 1067246875800000001, now(), 1067246875800000001, now()); | ||||||
|  | INSERT INTO sys_menu(id, pid, name, url, permissions, type, icon, sort, creator, create_date, updater, update_date) VALUES (1740173054175444996, 1740173054175444994, '新增', NULL, 'code:scenes:save', 1, NULL, 1, 1067246875800000001, now(), 1067246875800000001, now()); | ||||||
|  | INSERT INTO sys_menu(id, pid, name, url, permissions, type, icon, sort, creator, create_date, updater, update_date) VALUES (1740173054175444997, 1740173054175444994, '修改', NULL, 'code:scenes:update', 1, NULL, 2, 1067246875800000001, now(), 1067246875800000001, now()); | ||||||
|  | INSERT INTO sys_menu(id, pid, name, url, permissions, type, icon, sort, creator, create_date, updater, update_date) VALUES (1740173054175444998, 1740173054175444994, '删除', NULL, 'code:scenes:delete', 1, NULL, 3, 1067246875800000001, now(), 1067246875800000001, now()); | ||||||
|  | INSERT INTO sys_menu(id, pid, name, url, permissions, type, icon, sort, creator, create_date, updater, update_date) VALUES (1740173054175444999, 1740173054175444994, '导出', NULL, 'code:scenes:export', 1, NULL, 4, 1067246875800000001, now(), 1067246875800000001, now()); | ||||||
| @@ -1,7 +1,7 @@ | |||||||
| -- 菜单初始SQL | -- 菜单初始SQL | ||||||
| INSERT INTO sys_menu(id, pid, name, url, permissions, type, icon, sort, creator, create_date, updater, update_date)VALUES (1628589985438695426, 1067246875800000035, '包装箱表', 'code/woPackagingBox', NULL, 0, 'icon-desktop', 0, 1067246875800000001, now(), 1067246875800000001, now()); | INSERT INTO sys_menu(id, pid, name, url, permissions, type, icon, sort, creator, create_date, updater, update_date)VALUES (1751843769903550465, 1067246875800000035, '包装箱表', 'code/woPackagingBox', NULL, 0, 'icon-desktop', 0, 1067246875800000001, now(), 1067246875800000001, now()); | ||||||
| INSERT INTO sys_menu(id, pid, name, url, permissions, type, icon, sort, creator, create_date, updater, update_date) VALUES (1628589985438695427, 1628589985438695426, '查看', NULL, 'code:woPackagingBox:page,code:woPackagingBox:info', 1, NULL, 0, 1067246875800000001, now(), 1067246875800000001, now()); | INSERT INTO sys_menu(id, pid, name, url, permissions, type, icon, sort, creator, create_date, updater, update_date) VALUES (1751843769903550466, 1751843769903550465, '查看', NULL, 'code:woPackagingBox:page,code:woPackagingBox:info', 1, NULL, 0, 1067246875800000001, now(), 1067246875800000001, now()); | ||||||
| INSERT INTO sys_menu(id, pid, name, url, permissions, type, icon, sort, creator, create_date, updater, update_date) VALUES (1628589985438695428, 1628589985438695426, '新增', NULL, 'code:woPackagingBox:save', 1, NULL, 1, 1067246875800000001, now(), 1067246875800000001, now()); | INSERT INTO sys_menu(id, pid, name, url, permissions, type, icon, sort, creator, create_date, updater, update_date) VALUES (1751843769903550467, 1751843769903550465, '新增', NULL, 'code:woPackagingBox:save', 1, NULL, 1, 1067246875800000001, now(), 1067246875800000001, now()); | ||||||
| INSERT INTO sys_menu(id, pid, name, url, permissions, type, icon, sort, creator, create_date, updater, update_date) VALUES (1628589985438695429, 1628589985438695426, '修改', NULL, 'code:woPackagingBox:update', 1, NULL, 2, 1067246875800000001, now(), 1067246875800000001, now()); | INSERT INTO sys_menu(id, pid, name, url, permissions, type, icon, sort, creator, create_date, updater, update_date) VALUES (1751843769903550468, 1751843769903550465, '修改', NULL, 'code:woPackagingBox:update', 1, NULL, 2, 1067246875800000001, now(), 1067246875800000001, now()); | ||||||
| INSERT INTO sys_menu(id, pid, name, url, permissions, type, icon, sort, creator, create_date, updater, update_date) VALUES (1628589985438695430, 1628589985438695426, '删除', NULL, 'code:woPackagingBox:delete', 1, NULL, 3, 1067246875800000001, now(), 1067246875800000001, now()); | INSERT INTO sys_menu(id, pid, name, url, permissions, type, icon, sort, creator, create_date, updater, update_date) VALUES (1751843769903550469, 1751843769903550465, '删除', NULL, 'code:woPackagingBox:delete', 1, NULL, 3, 1067246875800000001, now(), 1067246875800000001, now()); | ||||||
| INSERT INTO sys_menu(id, pid, name, url, permissions, type, icon, sort, creator, create_date, updater, update_date) VALUES (1628589985438695431, 1628589985438695426, '导出', NULL, 'code:woPackagingBox:export', 1, NULL, 4, 1067246875800000001, now(), 1067246875800000001, now()); | INSERT INTO sys_menu(id, pid, name, url, permissions, type, icon, sort, creator, create_date, updater, update_date) VALUES (1751843769903550470, 1751843769903550465, '导出', NULL, 'code:woPackagingBox:export', 1, NULL, 4, 1067246875800000001, now(), 1067246875800000001, now()); | ||||||
|   | |||||||
| @@ -0,0 +1,7 @@ | |||||||
|  | -- 菜单初始SQL | ||||||
|  | INSERT INTO sys_menu(id, pid, name, url, permissions, type, icon, sort, creator, create_date, updater, update_date)VALUES (1740170256717230082, 1067246875800000035, '班次时间段 表', 'code/workingTime', NULL, 0, 'icon-desktop', 0, 1067246875800000001, now(), 1067246875800000001, now()); | ||||||
|  | INSERT INTO sys_menu(id, pid, name, url, permissions, type, icon, sort, creator, create_date, updater, update_date) VALUES (1740170256717230083, 1740170256717230082, '查看', NULL, 'code:workingTime:page,code:workingTime:info', 1, NULL, 0, 1067246875800000001, now(), 1067246875800000001, now()); | ||||||
|  | INSERT INTO sys_menu(id, pid, name, url, permissions, type, icon, sort, creator, create_date, updater, update_date) VALUES (1740170256717230084, 1740170256717230082, '新增', NULL, 'code:workingTime:save', 1, NULL, 1, 1067246875800000001, now(), 1067246875800000001, now()); | ||||||
|  | INSERT INTO sys_menu(id, pid, name, url, permissions, type, icon, sort, creator, create_date, updater, update_date) VALUES (1740170256717230085, 1740170256717230082, '修改', NULL, 'code:workingTime:update', 1, NULL, 2, 1067246875800000001, now(), 1067246875800000001, now()); | ||||||
|  | INSERT INTO sys_menu(id, pid, name, url, permissions, type, icon, sort, creator, create_date, updater, update_date) VALUES (1740170256717230086, 1740170256717230082, '删除', NULL, 'code:workingTime:delete', 1, NULL, 3, 1067246875800000001, now(), 1067246875800000001, now()); | ||||||
|  | INSERT INTO sys_menu(id, pid, name, url, permissions, type, icon, sort, creator, create_date, updater, update_date) VALUES (1740170256717230087, 1740170256717230082, '导出', NULL, 'code:workingTime:export', 1, NULL, 4, 1067246875800000001, now(), 1067246875800000001, now()); | ||||||
| @@ -8,7 +8,7 @@ import com.cnbm.generator.code.entity.PrintModel; | |||||||
|  * 打印标签模板表 |  * 打印标签模板表 | ||||||
|  * |  * | ||||||
|  * @author codeGenerator |  * @author codeGenerator | ||||||
|  * @since  2023-02-20 |  * @since  2024-01-25 | ||||||
|  */ |  */ | ||||||
| public interface PrintModelServiceBiz extends CrudService<PrintModel, PrintModelDTO> { | public interface PrintModelServiceBiz extends CrudService<PrintModel, PrintModelDTO> { | ||||||
|  |  | ||||||
|   | |||||||
| @@ -0,0 +1,15 @@ | |||||||
|  | package com.cnbm.generator.code.service; | ||||||
|  |  | ||||||
|  | import com.cnbm.common.service.CrudService; | ||||||
|  | import com.cnbm.generator.code.dto.ProductLevelDTO; | ||||||
|  | import com.cnbm.generator.code.entity.ProductLevel; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 产品等级 表 | ||||||
|  |  * | ||||||
|  |  * @author codeGenerator | ||||||
|  |  * @since  2023-12-28 | ||||||
|  |  */ | ||||||
|  | public interface ProductLevelServiceBiz extends CrudService<ProductLevel, ProductLevelDTO> { | ||||||
|  |  | ||||||
|  | } | ||||||
| @@ -0,0 +1,15 @@ | |||||||
|  | package com.cnbm.generator.code.service; | ||||||
|  |  | ||||||
|  | import com.cnbm.common.service.CrudService; | ||||||
|  | import com.cnbm.generator.code.dto.ScenesDTO; | ||||||
|  | import com.cnbm.generator.code.entity.Scenes; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 场景 表 | ||||||
|  |  * | ||||||
|  |  * @author codeGenerator | ||||||
|  |  * @since  2023-12-28 | ||||||
|  |  */ | ||||||
|  | public interface ScenesServiceBiz extends CrudService<Scenes, ScenesDTO> { | ||||||
|  |  | ||||||
|  | } | ||||||
| @@ -8,7 +8,7 @@ import com.cnbm.generator.code.entity.WoPackagingBox; | |||||||
|  * 包装箱表 |  * 包装箱表 | ||||||
|  * |  * | ||||||
|  * @author codeGenerator |  * @author codeGenerator | ||||||
|  * @since  2023-02-23 |  * @since  2024-01-29 | ||||||
|  */ |  */ | ||||||
| public interface WoPackagingBoxServiceBiz extends CrudService<WoPackagingBox, WoPackagingBoxDTO> { | public interface WoPackagingBoxServiceBiz extends CrudService<WoPackagingBox, WoPackagingBoxDTO> { | ||||||
|  |  | ||||||
|   | |||||||
| @@ -0,0 +1,15 @@ | |||||||
|  | package com.cnbm.generator.code.service; | ||||||
|  |  | ||||||
|  | import com.cnbm.common.service.CrudService; | ||||||
|  | import com.cnbm.generator.code.dto.WorkingTimeDTO; | ||||||
|  | import com.cnbm.generator.code.entity.WorkingTime; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 班次时间段 表 | ||||||
|  |  * | ||||||
|  |  * @author codeGenerator | ||||||
|  |  * @since  2023-12-28 | ||||||
|  |  */ | ||||||
|  | public interface WorkingTimeServiceBiz extends CrudService<WorkingTime, WorkingTimeDTO> { | ||||||
|  |  | ||||||
|  | } | ||||||
| @@ -15,7 +15,7 @@ import java.util.Map; | |||||||
|  * 打印标签模板表 |  * 打印标签模板表 | ||||||
|  * |  * | ||||||
|  * @author codeGenerator |  * @author codeGenerator | ||||||
|  * @since 2023-02-20 |  * @since 2024-01-25 | ||||||
|  */ |  */ | ||||||
| @Service | @Service | ||||||
| public class PrintModelServiceBizImpl extends CrudServiceImpl<PrintModelMapper, PrintModel, PrintModelDTO> implements PrintModelServiceBiz { | public class PrintModelServiceBizImpl extends CrudServiceImpl<PrintModelMapper, PrintModel, PrintModelDTO> implements PrintModelServiceBiz { | ||||||
|   | |||||||
| @@ -0,0 +1,34 @@ | |||||||
|  | package com.cnbm.generator.code.service.impl; | ||||||
|  |  | ||||||
|  | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | ||||||
|  | import com.cnbm.common.service.impl.CrudServiceImpl; | ||||||
|  | import com.cnbm.generator.code.dto.ProductLevelDTO; | ||||||
|  | import com.cnbm.generator.code.mapper.ProductLevelMapper; | ||||||
|  | import com.cnbm.generator.code.entity.ProductLevel; | ||||||
|  | import com.cnbm.generator.code.service.ProductLevelServiceBiz; | ||||||
|  | import org.apache.commons.lang3.StringUtils; | ||||||
|  | import org.springframework.stereotype.Service; | ||||||
|  |  | ||||||
|  | import java.util.Map; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 产品等级 表 | ||||||
|  |  * | ||||||
|  |  * @author codeGenerator | ||||||
|  |  * @since 2023-12-28 | ||||||
|  |  */ | ||||||
|  | @Service | ||||||
|  | public class ProductLevelServiceBizImpl extends CrudServiceImpl<ProductLevelMapper, ProductLevel, ProductLevelDTO> implements ProductLevelServiceBiz { | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public QueryWrapper<ProductLevel> getWrapper(Map<String, Object> params){ | ||||||
|  |         String id = (String)params.get("id"); | ||||||
|  |  | ||||||
|  |         QueryWrapper<ProductLevel> wrapper = new QueryWrapper<>(); | ||||||
|  |         wrapper.eq(StringUtils.isNotBlank(id), "id", id); | ||||||
|  |  | ||||||
|  |         return wrapper; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } | ||||||
| @@ -0,0 +1,34 @@ | |||||||
|  | package com.cnbm.generator.code.service.impl; | ||||||
|  |  | ||||||
|  | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | ||||||
|  | import com.cnbm.common.service.impl.CrudServiceImpl; | ||||||
|  | import com.cnbm.generator.code.dto.ScenesDTO; | ||||||
|  | import com.cnbm.generator.code.mapper.ScenesMapper; | ||||||
|  | import com.cnbm.generator.code.entity.Scenes; | ||||||
|  | import com.cnbm.generator.code.service.ScenesServiceBiz; | ||||||
|  | import org.apache.commons.lang3.StringUtils; | ||||||
|  | import org.springframework.stereotype.Service; | ||||||
|  |  | ||||||
|  | import java.util.Map; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 场景 表 | ||||||
|  |  * | ||||||
|  |  * @author codeGenerator | ||||||
|  |  * @since 2023-12-28 | ||||||
|  |  */ | ||||||
|  | @Service | ||||||
|  | public class ScenesServiceBizImpl extends CrudServiceImpl<ScenesMapper, Scenes, ScenesDTO> implements ScenesServiceBiz { | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public QueryWrapper<Scenes> getWrapper(Map<String, Object> params){ | ||||||
|  |         String id = (String)params.get("id"); | ||||||
|  |  | ||||||
|  |         QueryWrapper<Scenes> wrapper = new QueryWrapper<>(); | ||||||
|  |         wrapper.eq(StringUtils.isNotBlank(id), "id", id); | ||||||
|  |  | ||||||
|  |         return wrapper; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } | ||||||
| @@ -15,7 +15,7 @@ import java.util.Map; | |||||||
|  * 包装箱表 |  * 包装箱表 | ||||||
|  * |  * | ||||||
|  * @author codeGenerator |  * @author codeGenerator | ||||||
|  * @since 2023-02-23 |  * @since 2024-01-29 | ||||||
|  */ |  */ | ||||||
| @Service | @Service | ||||||
| public class WoPackagingBoxServiceBizImpl extends CrudServiceImpl<WoPackagingBoxMapper, WoPackagingBox, WoPackagingBoxDTO> implements WoPackagingBoxServiceBiz { | public class WoPackagingBoxServiceBizImpl extends CrudServiceImpl<WoPackagingBoxMapper, WoPackagingBox, WoPackagingBoxDTO> implements WoPackagingBoxServiceBiz { | ||||||
|   | |||||||
| @@ -0,0 +1,34 @@ | |||||||
|  | package com.cnbm.generator.code.service.impl; | ||||||
|  |  | ||||||
|  | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | ||||||
|  | import com.cnbm.common.service.impl.CrudServiceImpl; | ||||||
|  | import com.cnbm.generator.code.dto.WorkingTimeDTO; | ||||||
|  | import com.cnbm.generator.code.mapper.WorkingTimeMapper; | ||||||
|  | import com.cnbm.generator.code.entity.WorkingTime; | ||||||
|  | import com.cnbm.generator.code.service.WorkingTimeServiceBiz; | ||||||
|  | import org.apache.commons.lang3.StringUtils; | ||||||
|  | import org.springframework.stereotype.Service; | ||||||
|  |  | ||||||
|  | import java.util.Map; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 班次时间段 表 | ||||||
|  |  * | ||||||
|  |  * @author codeGenerator | ||||||
|  |  * @since 2023-12-28 | ||||||
|  |  */ | ||||||
|  | @Service | ||||||
|  | public class WorkingTimeServiceBizImpl extends CrudServiceImpl<WorkingTimeMapper, WorkingTime, WorkingTimeDTO> implements WorkingTimeServiceBiz { | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public QueryWrapper<WorkingTime> getWrapper(Map<String, Object> params){ | ||||||
|  |         String id = (String)params.get("id"); | ||||||
|  |  | ||||||
|  |         QueryWrapper<WorkingTime> wrapper = new QueryWrapper<>(); | ||||||
|  |         wrapper.eq(StringUtils.isNotBlank(id), "id", id); | ||||||
|  |  | ||||||
|  |         return wrapper; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } | ||||||
| @@ -1,495 +0,0 @@ | |||||||
| package com.cnbm.dispatch; |  | ||||||
|  |  | ||||||
| import cn.hutool.core.date.DateUtil; |  | ||||||
| import com.cnbm.dispatch.enums.kuka.step1.Step1Mes2PlcVar; |  | ||||||
| import com.cnbm.dispatch.enums.kuka.step1.Step1Plc2MesVar; |  | ||||||
| import com.cnbm.dispatch.enums.kuka.step2.Step2Mes2PlcVar; |  | ||||||
| import com.cnbm.dispatch.enums.kuka.step2.Step2Plc2MesVar; |  | ||||||
| import com.cnbm.dispatch.enums.kuka.step3.Step3Mes2PlcVar; |  | ||||||
| import com.cnbm.dispatch.enums.kuka.step3.Step3Plc2MesVar; |  | ||||||
| import com.cnbm.packing.dto.CamlineExtendArgDTO; |  | ||||||
| import com.cnbm.packing.dto.CamlineSubIdDTO; |  | ||||||
| import com.cnbm.packing.entity.WoPackagingBox; |  | ||||||
| import com.cnbm.packing.entity.WoPackagingBoxSubstrate; |  | ||||||
| import com.cnbm.packing.entity.WoPowerLevel; |  | ||||||
| import com.cnbm.packing.service.*; |  | ||||||
| import com.cnbm.s7.s7connector.enmuc.S7Client; |  | ||||||
| import com.cnbm.s7.s7connector.type.PlcVar; |  | ||||||
| import io.swagger.models.auth.In; |  | ||||||
| import org.slf4j.Logger; |  | ||||||
| import org.slf4j.LoggerFactory; |  | ||||||
| import org.springframework.beans.factory.annotation.Autowired; |  | ||||||
| import org.springframework.boot.ApplicationArguments; |  | ||||||
| import org.springframework.boot.ApplicationRunner; |  | ||||||
| import org.springframework.core.annotation.Order; |  | ||||||
| import org.springframework.stereotype.Component; |  | ||||||
|  |  | ||||||
| import java.text.DecimalFormat; |  | ||||||
| import java.text.Format; |  | ||||||
| import java.time.LocalDateTime; |  | ||||||
| import java.util.Arrays; |  | ||||||
| import java.util.Date; |  | ||||||
| import java.util.concurrent.Executors; |  | ||||||
| import java.util.concurrent.ScheduledExecutorService; |  | ||||||
| import java.util.concurrent.TimeUnit; |  | ||||||
|  |  | ||||||
| /** |  | ||||||
|  * @Desc: "" |  | ||||||
|  * @Author: caixiang |  | ||||||
|  * @DATE: 2022/12/23 12:33 |  | ||||||
|  */ |  | ||||||
| @Component |  | ||||||
| @Order(value = 1) |  | ||||||
| public class KukaJoinThread implements ApplicationRunner { |  | ||||||
|     private static final Logger logger = LoggerFactory.getLogger(KukaJoinThread.class); |  | ||||||
|  |  | ||||||
|     @Autowired |  | ||||||
|     DynamicDataSourceService service; |  | ||||||
|     @Autowired |  | ||||||
|     WoPowerLevelServiceBiz levelServiceBiz; |  | ||||||
|  |  | ||||||
|     @Autowired |  | ||||||
|     WoCompensationPowerServiceBiz compensationPowerServiceBiz; |  | ||||||
|  |  | ||||||
|     @Autowired |  | ||||||
|     WoPackagingBoxSubstrateServiceBiz substrateServiceBiz; |  | ||||||
|  |  | ||||||
|     @Autowired |  | ||||||
|     WoPackagingBoxServiceBiz boxServiceBiz; |  | ||||||
|  |  | ||||||
|     public KukaJoinThread(){ |  | ||||||
|         this.kukaStep1 = Executors.newScheduledThreadPool(1); |  | ||||||
|         this.kukaStep2 = Executors.newScheduledThreadPool(1); |  | ||||||
|         this.kukaStep3 = Executors.newScheduledThreadPool(1); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     private ScheduledExecutorService kukaStep1; |  | ||||||
|     private ScheduledExecutorService kukaStep2; |  | ||||||
|     private ScheduledExecutorService kukaStep3; |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * return |  | ||||||
|      *          成功: 返回相应的object对象 |  | ||||||
|      *          失败: 返回null |  | ||||||
|      * */ |  | ||||||
|     private Object read(S7Client s7Client,Step1Plc2MesVar var) { |  | ||||||
|         try { |  | ||||||
|             return s7Client.read(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getLength(), var.getStrSize(), var.getType()); |  | ||||||
|         }catch (Exception e){ |  | ||||||
|             logger.error("host:"+s7Client.getHost()+" ; read 操作出现问题: "+e.getMessage()); |  | ||||||
|             e.printStackTrace(); |  | ||||||
|             return null; |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
|     private void write(S7Client s7Client, Step1Mes2PlcVar var, Object newValue) { |  | ||||||
|         if(var.getType().equals(PlcVar.STRING_Array)){ |  | ||||||
|             String[] s = (String[])newValue; |  | ||||||
|             String[] ss = (String[])newValue; |  | ||||||
|             if(s.length > var.getLength() ){ |  | ||||||
|                 ss = new String[var.getLength()]; |  | ||||||
|                 for(int i=0;i< var.getLength();i++){ |  | ||||||
|                     ss[i] = s[i]; |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
|             s7Client.write(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getStrSize(), var.getType(),ss); |  | ||||||
|         }else { |  | ||||||
|             s7Client.write(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getStrSize(), var.getType(),newValue); |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     private Object read(S7Client s7Client, Step2Plc2MesVar var) { |  | ||||||
|         try { |  | ||||||
|             return s7Client.read(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getLength(), var.getStrSize(), var.getType()); |  | ||||||
|         }catch (Exception e){ |  | ||||||
|             logger.error("host:"+s7Client.getHost()+" ; read 操作出现问题: "+e.getMessage()); |  | ||||||
|             e.printStackTrace(); |  | ||||||
|             return null; |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
|     private void write(S7Client s7Client, Step2Mes2PlcVar var, Object newValue) { |  | ||||||
|         if(var.getType().equals(PlcVar.STRING_Array)){ |  | ||||||
|             String[] s = (String[])newValue; |  | ||||||
|             String[] ss = (String[])newValue; |  | ||||||
|             if(s.length > var.getLength() ){ |  | ||||||
|                 ss = new String[var.getLength()]; |  | ||||||
|                 for(int i=0;i< var.getLength();i++){ |  | ||||||
|                     ss[i] = s[i]; |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
|             s7Client.write(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getStrSize(), var.getType(),ss); |  | ||||||
|         }else { |  | ||||||
|             s7Client.write(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getStrSize(), var.getType(),newValue); |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     private Object read(S7Client s7Client, Step3Plc2MesVar var) { |  | ||||||
|         try { |  | ||||||
|             return s7Client.read(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getLength(), var.getStrSize(), var.getType()); |  | ||||||
|         }catch (Exception e){ |  | ||||||
|             logger.error("host:"+s7Client.getHost()+" ; read 操作出现问题: "+e.getMessage()); |  | ||||||
|             e.printStackTrace(); |  | ||||||
|             return null; |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
|     private void write(S7Client s7Client, Step3Mes2PlcVar var, Object newValue) { |  | ||||||
|         if(var.getType().equals(PlcVar.STRING_Array)){ |  | ||||||
|             String[] s = (String[])newValue; |  | ||||||
|             String[] ss = (String[])newValue; |  | ||||||
|             if(s.length > var.getLength() ){ |  | ||||||
|                 ss = new String[var.getLength()]; |  | ||||||
|                 for(int i=0;i< var.getLength();i++){ |  | ||||||
|                     ss[i] = s[i]; |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
|             s7Client.write(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getStrSize(), var.getType(),ss); |  | ||||||
|         }else { |  | ||||||
|             s7Client.write(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getStrSize(), var.getType(),newValue); |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|  |  | ||||||
|     public String getBoxId(String sapMaterial){ |  | ||||||
|         Integer todayBoxNum = service.getTodayBoxNum(); |  | ||||||
|         String nowTime = DateUtil.format(new Date(), "yyMMdd"); |  | ||||||
|  |  | ||||||
|         todayBoxNum+=500; |  | ||||||
|         String res = "301"+sapMaterial+nowTime+formateString(todayBoxNum); |  | ||||||
|         return res; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public String removeKG(String str){ |  | ||||||
|         return str.substring(0,17); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public static void main(String[] args) { |  | ||||||
|         Integer a = 102; |  | ||||||
|         Format f1 = new DecimalFormat("000"); |  | ||||||
|         System.out.println(f1.format(a)); |  | ||||||
|     } |  | ||||||
|     public String formateString(Integer a){ |  | ||||||
|         Format f1 = new DecimalFormat("000"); |  | ||||||
|         return f1.format(a); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     @Override |  | ||||||
|     public void run(ApplicationArguments args) throws Exception { |  | ||||||
|  |  | ||||||
| //        kukaStep1.scheduleAtFixedRate(new Runnable() { |  | ||||||
| //            @Override |  | ||||||
| //            public void run() { |  | ||||||
| //                try { |  | ||||||
| // |  | ||||||
| //                    //调度开始 |  | ||||||
| ////                logger.info(""); |  | ||||||
| ////                logger.info("=================  现在开始执行 过程一 任务   =================="); |  | ||||||
| //                    Integer subArrived = waitingForTarget(Step1Plc2MesVar.SubArrivedToMes, true); |  | ||||||
| //                    if(subArrived != 1){ |  | ||||||
| //                        logger.info("标签打印Event---  失败"+" --- "+" MES监听 Step1Plc2MesVar.SubArrivedToMes 是否 等于 1 失败"); |  | ||||||
| //                    } |  | ||||||
| // |  | ||||||
| //                    //一. 从plc 中获取 subId 和 lineNum |  | ||||||
| //                    String subId = (String) read(S7Client.S7_KUKA,Step1Plc2MesVar.SubIdToMes); |  | ||||||
| //                    Integer lineNum = (Integer) read(S7Client.S7_KUKA,Step1Plc2MesVar.LineNum); |  | ||||||
| //                    //把基板ID字符串的空格去掉,因为plc中设置的20位,但实际基板ID就是17位,因为带空格去数据库查询 有问题的。 |  | ||||||
| //                    subId = removeKG(subId); |  | ||||||
| // |  | ||||||
| //                    //二. MES 业务 |  | ||||||
| //                    //===============           MES 业务 开始         ================= |  | ||||||
| //                    //1. 从comline数据库中获取 实际pmpp |  | ||||||
| //                    float pmppBySubId = service.getPMPPBySubId(subId); |  | ||||||
| //                    //2. 匹配和计算补偿功率 |  | ||||||
| //                    float actualPMPP = compensationPowerServiceBiz.calculCompensationPMPP(pmppBySubId,lineNum); |  | ||||||
| //                    //3. 依据补偿功率,获取工艺参数,并且把这些工艺参数传给kuka |  | ||||||
| //                    WoPowerLevel argByPMPP = levelServiceBiz.getArgByPMPP(actualPMPP, lineNum); |  | ||||||
| //                    write(S7Client.S7_KUKA,Step1Mes2PlcVar.dLable_Pnom,Integer.valueOf(argByPMPP.getPowerClass())); |  | ||||||
| //                    write(S7Client.S7_KUKA,Step1Mes2PlcVar.dLable_Voc,argByPMPP.getLableVoc()); |  | ||||||
| //                    write(S7Client.S7_KUKA,Step1Mes2PlcVar.dLable_Isc,argByPMPP.getLableIsc()); |  | ||||||
| //                    write(S7Client.S7_KUKA,Step1Mes2PlcVar.dLable_Vmpp,argByPMPP.getLableVmpp()); |  | ||||||
| //                    write(S7Client.S7_KUKA,Step1Mes2PlcVar.dLable_Impp,argByPMPP.getLableImpp()); |  | ||||||
| //                    logger.info("标签打印Event--- 采集到 基板ID: "+subId+", 线边号:"+lineNum+",从camline 获取到实际pmpp"+pmppBySubId+",计算后 补偿功率:"+actualPMPP+",dLable_Pnom: "+argByPMPP.getPowerClass() +",dLable_Voc: "+argByPMPP.getLableVoc()+",dLable_Isc: "+argByPMPP.getLableIsc()+",dLable_Vmpp: "+argByPMPP.getLableVmpp()+",dLable_Impp: "+argByPMPP.getLableImpp()); |  | ||||||
| // |  | ||||||
| // |  | ||||||
| // |  | ||||||
| //                    //4. 把基板录到数据库 |  | ||||||
| //                    WoPackagingBoxSubstrate woPackagingBoxSubstrate = new WoPackagingBoxSubstrate(); |  | ||||||
| //                    woPackagingBoxSubstrate.setLineBody(lineNum); |  | ||||||
| //                    woPackagingBoxSubstrate.setPowerLevel(argByPMPP.getPowerClass()); |  | ||||||
| //                    woPackagingBoxSubstrate.setSapMaterial(argByPMPP.getSapMaterialNum()); |  | ||||||
| //                    woPackagingBoxSubstrate.setWoSubstrateId(subId); |  | ||||||
| //                    woPackagingBoxSubstrate.setActualPmpp(pmppBySubId); |  | ||||||
| //                    woPackagingBoxSubstrate.setCreateTime(LocalDateTime.now()); |  | ||||||
| // |  | ||||||
| // |  | ||||||
| //                    //5. 从camline那里获取可变字段 |  | ||||||
| //                    CamlineExtendArgDTO extendArgFromCamline = service.getExtendArgFromCamline(subId); |  | ||||||
| //                    logger.info("标签打印Event--- 基板ID: "+subId+", 从camline获取PID16~PID22 的实测数据 成功, 数据内容:"+extendArgFromCamline.toString()); |  | ||||||
| //                    woPackagingBoxSubstrate.setLastUpdateTime(extendArgFromCamline.getLastUpdateTime()); |  | ||||||
| //                    woPackagingBoxSubstrate.setPmpp(actualPMPP); |  | ||||||
| //                    woPackagingBoxSubstrate.setOrderName(extendArgFromCamline.getOrderName()); |  | ||||||
| //                    woPackagingBoxSubstrate.setBinclassFl1(extendArgFromCamline.getBinclassFl1()); |  | ||||||
| //                    woPackagingBoxSubstrate.setBinclassFl2(extendArgFromCamline.getBinclassFl2()); |  | ||||||
| //                    woPackagingBoxSubstrate.setEtaFl1(extendArgFromCamline.getEtaFl1()); |  | ||||||
| //                    woPackagingBoxSubstrate.setEtaFl2(extendArgFromCamline.getEtaFl2()); |  | ||||||
| //                    woPackagingBoxSubstrate.setFfFl1(extendArgFromCamline.getFfFl1()); |  | ||||||
| //                    woPackagingBoxSubstrate.setFfFl2(extendArgFromCamline.getFfFl2()); |  | ||||||
| //                    woPackagingBoxSubstrate.setImppFl1(extendArgFromCamline.getImppFl1()); |  | ||||||
| //                    woPackagingBoxSubstrate.setImppFl2(extendArgFromCamline.getImppFl2()); |  | ||||||
| //                    woPackagingBoxSubstrate.setInsolflashcontrolFl1(extendArgFromCamline.getInsolflashcontrolFl1()); |  | ||||||
| //                    woPackagingBoxSubstrate.setInsolflashcontrolFl2(extendArgFromCamline.getInsolflashcontrolFl2()); |  | ||||||
| //                    woPackagingBoxSubstrate.setInsolmppFl1(extendArgFromCamline.getInsolmppFl1()); |  | ||||||
| //                    woPackagingBoxSubstrate.setInsolmppFl2(extendArgFromCamline.getInsolmppFl2()); |  | ||||||
| //                    woPackagingBoxSubstrate.setInsolvocFl1(extendArgFromCamline.getInsolvocFl1()); |  | ||||||
| //                    woPackagingBoxSubstrate.setInsolvocFl2(extendArgFromCamline.getInsolvocFl2()); |  | ||||||
| //                    woPackagingBoxSubstrate.setInsolFl1(extendArgFromCamline.getInsolFl1()); |  | ||||||
| //                    woPackagingBoxSubstrate.setInsolFl2(extendArgFromCamline.getInsolFl2()); |  | ||||||
| //                    woPackagingBoxSubstrate.setIscFl1(extendArgFromCamline.getIscFl1()); |  | ||||||
| //                    woPackagingBoxSubstrate.setIscFl2(extendArgFromCamline.getIscFl2()); |  | ||||||
| //                    woPackagingBoxSubstrate.setMeasTimeFl1(extendArgFromCamline.getMeasTimeFl1()); |  | ||||||
| //                    woPackagingBoxSubstrate.setMeasTimeFl2(extendArgFromCamline.getMeasTimeFl2()); |  | ||||||
| //                    woPackagingBoxSubstrate.setPmppFl1(extendArgFromCamline.getPmppFl1()); |  | ||||||
| //                    woPackagingBoxSubstrate.setPmppFl2(extendArgFromCamline.getPmppFl2()); |  | ||||||
| //                    woPackagingBoxSubstrate.setTcellFl1(extendArgFromCamline.getTcellFl1()); |  | ||||||
| //                    woPackagingBoxSubstrate.setTcellFl2(extendArgFromCamline.getTcellFl2()); |  | ||||||
| //                    woPackagingBoxSubstrate.setTmonicellFl1(extendArgFromCamline.getTmonicellFl1()); |  | ||||||
| //                    woPackagingBoxSubstrate.setTmonicellFl2(extendArgFromCamline.getTmonicellFl2()); |  | ||||||
| //                    woPackagingBoxSubstrate.setUmppFl1(extendArgFromCamline.getUmppFl1()); |  | ||||||
| //                    woPackagingBoxSubstrate.setUmppFl2(extendArgFromCamline.getUmppFl2()); |  | ||||||
| //                    woPackagingBoxSubstrate.setUocFl1(extendArgFromCamline.getUocFl1()); |  | ||||||
| //                    woPackagingBoxSubstrate.setUocFl1(extendArgFromCamline.getUocFl2()); |  | ||||||
| // |  | ||||||
| //                    substrateServiceBiz.insert(woPackagingBoxSubstrate); |  | ||||||
| //                    logger.info("标签打印Event--- 基板ID: "+subId+", 录入数据库成功"); |  | ||||||
| //                    //===============           MES 业务 结束         ================= |  | ||||||
| // |  | ||||||
| //                    //三. 当MES完成任务后,把MesToPlc.SubArrivedFinish变量置为true,告诉plc,我操作完成了 |  | ||||||
| //                    write(S7Client.S7_KUKA,Step1Mes2PlcVar.SubArrivedFinish,true); |  | ||||||
| //                    logger.info("标签打印Event--- 基板ID: "+subId+", SubArrivedFinish,置为true 成功"); |  | ||||||
| //                    //四. mes 监控 到PlcToMes.SubArrived==false,就把MesToPlc.SubArrivedFinish置为false |  | ||||||
| //                    Integer subArrived2 = waitingForTarget(Step1Plc2MesVar.SubArrivedToMes, false); |  | ||||||
| //                    if(subArrived2 != 1){ |  | ||||||
| //                        logger.info("标签打印Event--- 失败"+" --- "+"MES监听 Step1Plc2MesVar.SubArrivedToMes 是否 等于 1 失败"); |  | ||||||
| //                    } |  | ||||||
| // |  | ||||||
| //                    write(S7Client.S7_KUKA,Step1Mes2PlcVar.SubArrivedFinish,false); |  | ||||||
| //                    logger.info("标签打印Event--- 基板ID: "+subId+", SubArrivedFinish,置为 false 成功, Event1 成功结束"); |  | ||||||
| // |  | ||||||
| //                }catch (Throwable e){ |  | ||||||
| //                    logger.info("标签打印Event---  :"+e.getMessage()); |  | ||||||
| //                } |  | ||||||
| //            } |  | ||||||
| //        },1,1, TimeUnit.SECONDS); |  | ||||||
| // |  | ||||||
| // |  | ||||||
| //        kukaStep2.scheduleAtFixedRate(new Runnable() { |  | ||||||
| //            @Override |  | ||||||
| //            public void run() { |  | ||||||
| //                try { |  | ||||||
| // |  | ||||||
| //                    //调度开始 |  | ||||||
| //                    Integer shelfIsFull = waitingForTarget(Step2Plc2MesVar.ShelfIsFull, true); |  | ||||||
| //                    if(shelfIsFull != 1){ |  | ||||||
| //                        logger.info("BOXID生成Event-------失败"+" --- "+"MES监听 Step2Plc2MesVar.ShelfIsFull 是否 等于 1 失败"); |  | ||||||
| //                    } |  | ||||||
| // |  | ||||||
| //                    //一. 从plc 中获取 subIdList 和 lineNum |  | ||||||
| //                    String[] subIdList = (String[])read(S7Client.S7_KUKA,Step2Plc2MesVar.SubIdList); |  | ||||||
| //                    Integer listSize = (Integer)read(S7Client.S7_KUKA,Step2Plc2MesVar.PackageNumberSet); |  | ||||||
| // |  | ||||||
| //                    //二. MES 业务 |  | ||||||
| //                    //===============           MES 业务 开始         ================= |  | ||||||
| //                    //1.MES 生成BoxId |  | ||||||
| //                    if(subIdList.length<=0){ |  | ||||||
| //                        logger.info("BOXID生成Event-------失败"+" --- "+"从plc里面获取到的基板列表 为空"); |  | ||||||
| //                        throw new Exception("BOXID生成Event-------kuka机械手 取到了空箱"); |  | ||||||
| //                    } |  | ||||||
| //                    //真实的基板ID 就是17位的,plc读取过来,有空格,要把后面3位空格去掉就行了。 |  | ||||||
| //                    for(int i=0;i<subIdList.length;i++){ |  | ||||||
| //                        subIdList[i] = removeKG(subIdList[i]); |  | ||||||
| //                    } |  | ||||||
| //                    logger.info("BOXID生成Event-------获取到基板列表:"+ Arrays.toString(subIdList)+",基板数量:"+listSize); |  | ||||||
| // |  | ||||||
| //                    WoPackagingBoxSubstrate bySubId = substrateServiceBiz.getBySubId(subIdList[0]); |  | ||||||
| //                    //如果我们系统中找不到这块基板那么就去camline里面找 |  | ||||||
| //                    if(bySubId == null){ |  | ||||||
| //                        //todo |  | ||||||
| //                        CamlineSubIdDTO subIdByCamline = service.getSubIdByCamline(subIdList[0]); |  | ||||||
| //                        bySubId = new WoPackagingBoxSubstrate(); |  | ||||||
| //                        bySubId.setPowerLevel(subIdByCamline.getPowerLevel()); |  | ||||||
| //                        bySubId.setSapMaterial(subIdByCamline.getSapMaterial()); |  | ||||||
| //                        bySubId.setLineBody(2); |  | ||||||
| //                    } |  | ||||||
| // |  | ||||||
| // |  | ||||||
| //                    String boxId = getBoxId(bySubId.getSapMaterial()); |  | ||||||
| //                    logger.info("BOXID生成Event-------mes 生成的boxId :"+ boxId); |  | ||||||
| //                    //2. 依次update 基板表,把boxId 赋予这些基板 |  | ||||||
| //                    for(int i=0;i<listSize;i++){ |  | ||||||
| //                        substrateServiceBiz.updatePackagingBoxIdAndSlotByWoSubstrateId(boxId,(i+1),subIdList[i]); |  | ||||||
| //                    } |  | ||||||
| //                    //3.去camline数据库 查询此基板ID 对应的订单 |  | ||||||
| //                    String orderNameBySubId = service.getOrderNameBySubId(subIdList[0]); |  | ||||||
| //                    //4. box信息录入到box表 |  | ||||||
| //                    WoPackagingBox woPackagingBox = new WoPackagingBox(); |  | ||||||
| //                    woPackagingBox.setBoxNo(boxId); |  | ||||||
| //                    woPackagingBox.setPackagingTime(LocalDateTime.now()); |  | ||||||
| //                    woPackagingBox.setPowerLevel(bySubId.getPowerLevel()); |  | ||||||
| //                    woPackagingBox.setLineBody(bySubId.getLineBody()); |  | ||||||
| //                    woPackagingBox.setSapMaterial(bySubId.getSapMaterial()); |  | ||||||
| //                    woPackagingBox.setOrderNum(orderNameBySubId); |  | ||||||
| //                    //1-手动模式,2-自动模式 |  | ||||||
| //                    woPackagingBox.setModel(2); |  | ||||||
| //                    woPackagingBox.setCreateTime(LocalDateTime.now()); |  | ||||||
| //                    boxServiceBiz.insert(woPackagingBox); |  | ||||||
| //                    logger.info("BOXID生成Event-------boxId :"+ boxId+"写入数据库成功"); |  | ||||||
| //                    //===============           MES 业务 结束         ================= |  | ||||||
| // |  | ||||||
| //                    //三. 把生成的BoxId 告诉kuka |  | ||||||
| //                    write(S7Client.S7_KUKA,Step2Mes2PlcVar.BoxId,boxId); |  | ||||||
| //                    logger.info("BOXID生成Event-------boxId :"+ boxId+"传给PLC 成功"); |  | ||||||
| // |  | ||||||
| //                    //四. 当MES完成任务后,把MesToPlc.ShelfIsFullFinish变量置为true,告诉plc,我操作完成了 |  | ||||||
| //                    write(S7Client.S7_KUKA,Step2Mes2PlcVar.ShelfIsFullFinish,true); |  | ||||||
| //                    logger.info("BOXID生成Event-------boxId :"+ boxId+"ShelfIsFullFinish 置为true 成功"); |  | ||||||
| //                    //四. mes 监控 到PlcToMes.SubArrived==false,就把MesToPlc.SubArrivedFinish置为false |  | ||||||
| //                    Integer subArrived2 = waitingForTarget(Step2Plc2MesVar.ShelfIsFull, false); |  | ||||||
| //                    if(subArrived2 != 1){ |  | ||||||
| //                        logger.info("BOXID生成Event-------失败"+" --- "+"步骤1.  MES监听 Step1Plc2MesVar.SubArrivedToMes 是否 等于 1 失败"); |  | ||||||
| //                    } |  | ||||||
| //                    write(S7Client.S7_KUKA,Step2Mes2PlcVar.ShelfIsFullFinish,false); |  | ||||||
| //                    logger.info("BOXID生成Event-------boxId :"+ boxId+"ShelfIsFullFinish 置为false 成功,Event2 成功结束"); |  | ||||||
| //                }catch (Throwable e){ |  | ||||||
| //                    logger.info("BOXID生成Event------- :" + e.getMessage()); |  | ||||||
| //                } |  | ||||||
| //            } |  | ||||||
| //        },1,1, TimeUnit.SECONDS); |  | ||||||
| // |  | ||||||
| // |  | ||||||
| //        kukaStep3.scheduleAtFixedRate(new Runnable() { |  | ||||||
| //            @Override |  | ||||||
| //            public void run() { |  | ||||||
| //                try { |  | ||||||
| // |  | ||||||
| //                    //调度开始 |  | ||||||
| //                    Integer shelfIsFull = waitingForTarget(Step3Plc2MesVar.ShelfIsFullArrived, true); |  | ||||||
| //                    if(shelfIsFull != 1){ |  | ||||||
| //                        logger.info("装箱单打印Event------失败"+" --- "+"MES监听 Step3Plc2MesVar.ShelfIsFullArrived 是否 等于 1 失败"); |  | ||||||
| //                    } |  | ||||||
| // |  | ||||||
| //                    //一. 从plc 中获取 subIdList 和 lineNum |  | ||||||
| //                    String boxId = (String)read(S7Client.S7_KUKA,Step3Plc2MesVar.BoxId); |  | ||||||
| //                    Integer lineNum = (Integer) read(S7Client.S7_KUKA,Step3Plc2MesVar.LineNum); |  | ||||||
| //                    logger.info("装箱单打印Event------到达站台的boxId :"+boxId); |  | ||||||
| // |  | ||||||
| //                    //二. MES 业务 |  | ||||||
| //                    //===============           MES 业务 开始         ================= |  | ||||||
| //                    //1. box信息录入到box表 |  | ||||||
| //                    boxServiceBiz.updateIsArrivedByBoxNo(1,boxId); |  | ||||||
| //                    logger.info("装箱单打印Event------boxId :"+boxId+"更新数据库成功"); |  | ||||||
| //                    //===============           MES 业务 结束         ================= |  | ||||||
| // |  | ||||||
| // |  | ||||||
| //                    //四. 当MES完成任务后,把MesToPlc.ShelfIsFullArrivedFinish变量置为true,告诉plc,我操作完成了 |  | ||||||
| //                    write(S7Client.S7_KUKA,Step3Mes2PlcVar.ShelfIsFullArrivedFinish,true); |  | ||||||
| //                    logger.info("装箱单打印Event------boxId :"+boxId+", ShelfIsFullArrivedFinish置为true 成功"); |  | ||||||
| //                    //四. mes 监控 到PlcToMes.SubArrived==false,就把MesToPlc.SubArrivedFinish置为false |  | ||||||
| //                    Integer subArrived2 = waitingForTarget(Step3Plc2MesVar.ShelfIsFullArrived, false); |  | ||||||
| //                    if(subArrived2 != 1){ |  | ||||||
| //                        logger.info("装箱单打印Event------失败"+" --- "+"步骤1.  MES监听 Step3Plc2MesVar.ShelfIsFullArrived 是否 等于 1 失败"); |  | ||||||
| //                    } |  | ||||||
| //                    logger.info("装箱单打印Event------boxId :"+boxId+", 监听到subArrived=false 成功"); |  | ||||||
| //                    write(S7Client.S7_KUKA,Step3Mes2PlcVar.ShelfIsFullArrivedFinish,false); |  | ||||||
| //                    logger.info("装箱单打印Event------boxId :"+boxId+", Even3 成功"); |  | ||||||
| //                }catch (Throwable e){ |  | ||||||
| //                    logger.info("装箱单打印Event------"+e.getMessage()); |  | ||||||
| //                } |  | ||||||
| // |  | ||||||
| //            } |  | ||||||
| //        },1,1, TimeUnit.SECONDS); |  | ||||||
|  |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * |  | ||||||
|      * arg: |  | ||||||
|      *      Step1Plc2MesVar 参数类型 |  | ||||||
|      *      targetValue        目的值 |  | ||||||
|      * return: |  | ||||||
|      *      2 s7 访问异常; |  | ||||||
|      *      1 成功; |  | ||||||
|      * */ |  | ||||||
|     private Integer waitingForTarget(Step1Plc2MesVar var, Boolean targetValue) { |  | ||||||
|         Integer res = 0; |  | ||||||
|         while (true){ |  | ||||||
|             try { |  | ||||||
|                 Boolean now = (Boolean) read(S7Client.S7_KUKA,var); |  | ||||||
|                 if(targetValue.equals(now)){ |  | ||||||
|                     res = 1; |  | ||||||
|                     break; |  | ||||||
|                 } |  | ||||||
|                 Thread.sleep(200); |  | ||||||
|             }catch (Exception e){ |  | ||||||
|                 logger.info("S7 数据采集 异常。"); |  | ||||||
|                 res = 2; |  | ||||||
|                 break; |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|         return res; |  | ||||||
|     } |  | ||||||
|     /** |  | ||||||
|      * |  | ||||||
|      * arg: |  | ||||||
|      *      Step2Plc2MesVar 参数类型 |  | ||||||
|      *      targetValue        目的值 |  | ||||||
|      * return: |  | ||||||
|      *      2 s7 访问异常; |  | ||||||
|      *      1 成功; |  | ||||||
|      * */ |  | ||||||
|     private Integer waitingForTarget(Step2Plc2MesVar var, Boolean targetValue) { |  | ||||||
|         Integer res = 0; |  | ||||||
|         while (true){ |  | ||||||
|             try { |  | ||||||
|                 Boolean now = (Boolean) read(S7Client.S7_KUKA,var); |  | ||||||
|                 if(targetValue.equals(now)){ |  | ||||||
|                     res = 1; |  | ||||||
|                     break; |  | ||||||
|                 } |  | ||||||
|                 Thread.sleep(200); |  | ||||||
|             }catch (Exception e){ |  | ||||||
|                 logger.info("S7 数据采集 异常。"); |  | ||||||
|                 res = 2; |  | ||||||
|                 break; |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|         return res; |  | ||||||
|     } |  | ||||||
|     /** |  | ||||||
|      * |  | ||||||
|      * arg: |  | ||||||
|      *      Step3Plc2MesVar 参数类型 |  | ||||||
|      *      targetValue        目的值 |  | ||||||
|      * return: |  | ||||||
|      *      2 s7 访问异常; |  | ||||||
|      *      1 成功; |  | ||||||
|      * */ |  | ||||||
|     private Integer waitingForTarget(Step3Plc2MesVar var, Boolean targetValue) { |  | ||||||
|         Integer res = 0; |  | ||||||
|         while (true){ |  | ||||||
|             try { |  | ||||||
|                 Boolean now = (Boolean) read(S7Client.S7_KUKA,var); |  | ||||||
|                 if(targetValue.equals(now)){ |  | ||||||
|                     res = 1; |  | ||||||
|                     break; |  | ||||||
|                 } |  | ||||||
|                 Thread.sleep(200); |  | ||||||
|             }catch (Exception e){ |  | ||||||
|                 logger.info("S7 数据采集 异常。"); |  | ||||||
|                 res = 2; |  | ||||||
|                 break; |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|         return res; |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @@ -16,9 +16,6 @@ public enum Step1Mes2PlcVar { | |||||||
|     dLable_Isc("dLable_Isc", PlcVar.REAL,1, DaveArea.DB,2000,36,0), |     dLable_Isc("dLable_Isc", PlcVar.REAL,1, DaveArea.DB,2000,36,0), | ||||||
|     dLable_Vmpp("dLable_Vmpp", PlcVar.REAL,1, DaveArea.DB,2000,40,0), |     dLable_Vmpp("dLable_Vmpp", PlcVar.REAL,1, DaveArea.DB,2000,40,0), | ||||||
|     dLable_Impp("dLable_Vmpp", PlcVar.REAL,1, DaveArea.DB,2000,44,0), |     dLable_Impp("dLable_Vmpp", PlcVar.REAL,1, DaveArea.DB,2000,44,0), | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|     ; |     ; | ||||||
|  |  | ||||||
|     private String name; |     private String name; | ||||||
|   | |||||||
| @@ -14,7 +14,6 @@ public enum Step1Plc2MesVar { | |||||||
|     SubIdToMes("SubIdToMes",PlcVar.STRING,1,DaveArea.DB,2000,2,0,20), |     SubIdToMes("SubIdToMes",PlcVar.STRING,1,DaveArea.DB,2000,2,0,20), | ||||||
|     LineNum("LineNum", PlcVar.UINT,1, DaveArea.DB,2000,24,0), |     LineNum("LineNum", PlcVar.UINT,1, DaveArea.DB,2000,24,0), | ||||||
|  |  | ||||||
|  |  | ||||||
|     ; |     ; | ||||||
|  |  | ||||||
|     private String name; |     private String name; | ||||||
|   | |||||||
| @@ -15,7 +15,7 @@ public enum Step2Plc2MesVar { | |||||||
|     ShelfIsFull("ShelfIsFull", PlcVar.BOOL,1, DaveArea.DB,2000,48,0), |     ShelfIsFull("ShelfIsFull", PlcVar.BOOL,1, DaveArea.DB,2000,48,0), | ||||||
|     SubIdList("SubIdList",PlcVar.STRING_Array,30,DaveArea.DB,2000,50,0,20), |     SubIdList("SubIdList",PlcVar.STRING_Array,30,DaveArea.DB,2000,50,0,20), | ||||||
|     LineNum("LineNum", PlcVar.UINT,1, DaveArea.DB,2000,710,0), |     LineNum("LineNum", PlcVar.UINT,1, DaveArea.DB,2000,710,0), | ||||||
|     PackageNumberSet("PackageNumberSet", PlcVar.UINT,1, DaveArea.DB,2000,766,0), |     PackageNumberSet("PackageNumberSet", PlcVar.UINT,1, DaveArea.DB,2000,764,0), | ||||||
|  |  | ||||||
|     ; |     ; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -0,0 +1,90 @@ | |||||||
|  | package com.cnbm.dispatch.enums.kuka.step4; | ||||||
|  |  | ||||||
|  | import com.cnbm.s7.s7connector.api.DaveArea; | ||||||
|  | import com.cnbm.s7.s7connector.type.PlcVar; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * @Desc: "" | ||||||
|  |  * @Author: caixiang | ||||||
|  |  * @DATE: 2023/2/21 19:35 | ||||||
|  |  */ | ||||||
|  | public enum Step4Mes2PlcVar { | ||||||
|  |     SubArrivedFinish("SubArrivedFinish", PlcVar.BOOL,1, DaveArea.DB,2001,24,0), | ||||||
|  |  | ||||||
|  |     dLable_Pnom("dLable_Pnom", PlcVar.DINT,1, DaveArea.DB,2001,26,0), | ||||||
|  |     dLable_Voc("dLable_Voc", PlcVar.REAL,1, DaveArea.DB,2001,30,0), | ||||||
|  |     dLable_Isc("dLable_Isc", PlcVar.REAL,1, DaveArea.DB,2001,34,0), | ||||||
|  |     dLable_Vmpp("dLable_Vmpp", PlcVar.REAL,1, DaveArea.DB,2001,38,0), | ||||||
|  |     dLable_Impp("dLable_Vmpp", PlcVar.REAL,1, DaveArea.DB,2001,42,0), | ||||||
|  |     ; | ||||||
|  |  | ||||||
|  |     private String name; | ||||||
|  |     private DaveArea area; | ||||||
|  |     private Integer areaNumber; | ||||||
|  |     private Integer byteOffset; | ||||||
|  |     private Integer bitOffset; | ||||||
|  |     private PlcVar type; | ||||||
|  |     //length = 1代表 非数组;;;       length > 1 代表数组  ;; 注意 length这个参数 是实际plc中 数组的长度,和read操作相关 | ||||||
|  |     //如果是String 类型不用填length 只需要填string类型的起始位置就行了,我会自己去取数据长度(也就是说这里的length并不是string 的长度)。 | ||||||
|  |     private Integer length; | ||||||
|  |  | ||||||
|  |     //这个字段只是给 字符串变量 和 字符串数组 用, 这个字段是plc中设置的最大String长度 | ||||||
|  |     private Integer strSize; | ||||||
|  |  | ||||||
|  |     Step4Mes2PlcVar(String name, PlcVar type, Integer length, DaveArea area, Integer areaNumber, Integer byteOffset, Integer bitOffset){ | ||||||
|  |         this.name = name; | ||||||
|  |         this.type = type; | ||||||
|  |         this.length = length; | ||||||
|  |         this.area = area; | ||||||
|  |         this.areaNumber = areaNumber; | ||||||
|  |         this.byteOffset = byteOffset; | ||||||
|  |         this.bitOffset = bitOffset; | ||||||
|  |         this.strSize = 0; | ||||||
|  |     } | ||||||
|  |     Step4Mes2PlcVar(String name, PlcVar type, Integer length, DaveArea area, Integer areaNumber, Integer byteOffset, Integer bitOffset, Integer strSize){ | ||||||
|  |         this.name = name; | ||||||
|  |         this.type = type; | ||||||
|  |         this.length = length; | ||||||
|  |         this.area = area; | ||||||
|  |         this.areaNumber = areaNumber; | ||||||
|  |         this.byteOffset = byteOffset; | ||||||
|  |         this.bitOffset = bitOffset; | ||||||
|  |         this.strSize = strSize; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public Integer getStrSize() { | ||||||
|  |         return strSize; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void setStrSize(Integer strSize) { | ||||||
|  |         this.strSize = strSize; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public String getName() { | ||||||
|  |         return name; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public DaveArea getArea() { | ||||||
|  |         return area; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public Integer getAreaNumber() { | ||||||
|  |         return areaNumber; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public Integer getBitOffset() { | ||||||
|  |         return bitOffset; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public Integer getByteOffset() { | ||||||
|  |         return byteOffset; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public PlcVar getType() { | ||||||
|  |         return type; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public Integer getLength() { | ||||||
|  |         return length; | ||||||
|  |     } | ||||||
|  | } | ||||||
| @@ -0,0 +1,87 @@ | |||||||
|  | package com.cnbm.dispatch.enums.kuka.step4; | ||||||
|  |  | ||||||
|  | import com.cnbm.s7.s7connector.api.DaveArea; | ||||||
|  | import com.cnbm.s7.s7connector.type.PlcVar; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * @Desc: "" | ||||||
|  |  * @Author: caixiang | ||||||
|  |  * @DATE: 2023/2/21 19:35 | ||||||
|  |  */ | ||||||
|  | public enum Step4Plc2MesVar { | ||||||
|  |  | ||||||
|  |     SubArrivedToMes("SubArrivedToMes", PlcVar.BOOL,1, DaveArea.DB,2001,0,0), | ||||||
|  |     SubIdToMes("SubIdToMes",PlcVar.STRING,1,DaveArea.DB,2001,2,0,20), | ||||||
|  |  | ||||||
|  |     ; | ||||||
|  |  | ||||||
|  |     private String name; | ||||||
|  |     private DaveArea area; | ||||||
|  |     private Integer areaNumber; | ||||||
|  |     private Integer byteOffset; | ||||||
|  |     private Integer bitOffset; | ||||||
|  |     private PlcVar type; | ||||||
|  |     //length = 1代表 非数组;;;       length > 1 代表数组  ;; 注意 length这个参数 是实际plc中 数组的长度,和read操作相关 | ||||||
|  |     //如果是String 类型不用填length 只需要填string类型的起始位置就行了,我会自己去取数据长度(也就是说这里的length并不是string 的长度)。 | ||||||
|  |     private Integer length; | ||||||
|  |  | ||||||
|  |     //这个字段只是给 字符串变量 和 字符串数组 用, 这个字段是plc中设置的最大String长度 | ||||||
|  |     private Integer strSize; | ||||||
|  |  | ||||||
|  |     Step4Plc2MesVar(String name, PlcVar type, Integer length, DaveArea area, Integer areaNumber, Integer byteOffset, Integer bitOffset){ | ||||||
|  |         this.name = name; | ||||||
|  |         this.type = type; | ||||||
|  |         this.length = length; | ||||||
|  |         this.area = area; | ||||||
|  |         this.areaNumber = areaNumber; | ||||||
|  |         this.byteOffset = byteOffset; | ||||||
|  |         this.bitOffset = bitOffset; | ||||||
|  |         this.strSize = 0; | ||||||
|  |     } | ||||||
|  |     Step4Plc2MesVar(String name, PlcVar type, Integer length, DaveArea area, Integer areaNumber, Integer byteOffset, Integer bitOffset, Integer strSize){ | ||||||
|  |         this.name = name; | ||||||
|  |         this.type = type; | ||||||
|  |         this.length = length; | ||||||
|  |         this.area = area; | ||||||
|  |         this.areaNumber = areaNumber; | ||||||
|  |         this.byteOffset = byteOffset; | ||||||
|  |         this.bitOffset = bitOffset; | ||||||
|  |         this.strSize = strSize; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public Integer getStrSize() { | ||||||
|  |         return strSize; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void setStrSize(Integer strSize) { | ||||||
|  |         this.strSize = strSize; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public String getName() { | ||||||
|  |         return name; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public DaveArea getArea() { | ||||||
|  |         return area; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public Integer getAreaNumber() { | ||||||
|  |         return areaNumber; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public Integer getBitOffset() { | ||||||
|  |         return bitOffset; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public Integer getByteOffset() { | ||||||
|  |         return byteOffset; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public PlcVar getType() { | ||||||
|  |         return type; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public Integer getLength() { | ||||||
|  |         return length; | ||||||
|  |     } | ||||||
|  | } | ||||||
| @@ -0,0 +1,416 @@ | |||||||
|  | package com.cnbm.dispatch.line1; | ||||||
|  |  | ||||||
|  | import cn.hutool.core.date.DateUtil; | ||||||
|  | import com.cnbm.dispatch.enums.kuka.step1.Step1Mes2PlcVar; | ||||||
|  | import com.cnbm.dispatch.enums.kuka.step1.Step1Plc2MesVar; | ||||||
|  | import com.cnbm.dispatch.enums.kuka.step2.Step2Mes2PlcVar; | ||||||
|  | import com.cnbm.dispatch.enums.kuka.step2.Step2Plc2MesVar; | ||||||
|  | import com.cnbm.dispatch.enums.kuka.step3.Step3Mes2PlcVar; | ||||||
|  | import com.cnbm.dispatch.enums.kuka.step3.Step3Plc2MesVar; | ||||||
|  | import com.cnbm.packing.dto.CamlineExtendArgDTO; | ||||||
|  | import com.cnbm.packing.entity.WoPackagingBoxSubstrate; | ||||||
|  | import com.cnbm.packing.entity.WoPowerLevel; | ||||||
|  | import com.cnbm.packing.service.*; | ||||||
|  | import com.cnbm.s7.s7connector.enmuc.S7Client; | ||||||
|  | import com.cnbm.s7.s7connector.type.PlcVar; | ||||||
|  | import org.slf4j.Logger; | ||||||
|  | import org.slf4j.LoggerFactory; | ||||||
|  | import org.springframework.beans.factory.annotation.Autowired; | ||||||
|  | import org.springframework.boot.ApplicationArguments; | ||||||
|  | import org.springframework.boot.ApplicationRunner; | ||||||
|  | import org.springframework.core.annotation.Order; | ||||||
|  | import org.springframework.stereotype.Component; | ||||||
|  |  | ||||||
|  | import java.text.DecimalFormat; | ||||||
|  | import java.text.Format; | ||||||
|  | import java.time.LocalDateTime; | ||||||
|  | import java.util.Date; | ||||||
|  | import java.util.concurrent.Executors; | ||||||
|  | import java.util.concurrent.ScheduledExecutorService; | ||||||
|  | import java.util.concurrent.TimeUnit; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * @Desc: "" | ||||||
|  |  * @Author: caixiang | ||||||
|  |  * @DATE: 2022/12/23 12:33 | ||||||
|  |  */ | ||||||
|  | @Component | ||||||
|  | @Order(value = 1) | ||||||
|  | public class KukaEvent1ThreadLine1 implements ApplicationRunner { | ||||||
|  |     private static final Logger logger = LoggerFactory.getLogger("EVENT1Line1"); | ||||||
|  |  | ||||||
|  |     @Autowired | ||||||
|  |     DynamicDataSourceService service; | ||||||
|  |     @Autowired | ||||||
|  |     WoPowerLevelServiceBiz levelServiceBiz; | ||||||
|  |  | ||||||
|  |     @Autowired | ||||||
|  |     WoCompensationPowerServiceBiz compensationPowerServiceBiz; | ||||||
|  |  | ||||||
|  |     @Autowired | ||||||
|  |     WoPackagingBoxSubstrateServiceBiz substrateServiceBiz; | ||||||
|  |  | ||||||
|  |     @Autowired | ||||||
|  |     WoPackagingBoxServiceBiz boxServiceBiz; | ||||||
|  |  | ||||||
|  |     public KukaEvent1ThreadLine1(){ | ||||||
|  |         this.kukaStep1 = Executors.newScheduledThreadPool(1); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     private ScheduledExecutorService kukaStep1; | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * return | ||||||
|  |      *          成功: 返回相应的object对象 | ||||||
|  |      *          失败: 返回null | ||||||
|  |      * */ | ||||||
|  |     private Object read(S7Client s7Client,Step1Plc2MesVar var) { | ||||||
|  |         try { | ||||||
|  |             return s7Client.read(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getLength(), var.getStrSize(), var.getType()); | ||||||
|  |         }catch (Throwable e){ | ||||||
|  |             logger.info("host:"+s7Client.getHost()+" ; read 操作出现问题: {}",e.getMessage(),e); | ||||||
|  |             return null; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     private void write(S7Client s7Client, Step1Mes2PlcVar var, Object newValue) { | ||||||
|  |         if(var.getType().equals(PlcVar.STRING_Array)){ | ||||||
|  |             String[] s = (String[])newValue; | ||||||
|  |             String[] ss = (String[])newValue; | ||||||
|  |             if(s.length > var.getLength() ){ | ||||||
|  |                 ss = new String[var.getLength()]; | ||||||
|  |                 for(int i=0;i< var.getLength();i++){ | ||||||
|  |                     ss[i] = s[i]; | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             s7Client.write(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getStrSize(), var.getType(),ss); | ||||||
|  |         }else { | ||||||
|  |             s7Client.write(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getStrSize(), var.getType(),newValue); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     private Object read(S7Client s7Client, Step2Plc2MesVar var) { | ||||||
|  |         try { | ||||||
|  |             return s7Client.read(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getLength(), var.getStrSize(), var.getType()); | ||||||
|  |         }catch (Throwable e){ | ||||||
|  |             logger.info("host:"+s7Client.getHost()+" ; read 操作出现问题: {}",e.getMessage(),e); | ||||||
|  |             return null; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     private void write(S7Client s7Client, Step2Mes2PlcVar var, Object newValue) { | ||||||
|  |         if(var.getType().equals(PlcVar.STRING_Array)){ | ||||||
|  |             String[] s = (String[])newValue; | ||||||
|  |             String[] ss = (String[])newValue; | ||||||
|  |             if(s.length > var.getLength() ){ | ||||||
|  |                 ss = new String[var.getLength()]; | ||||||
|  |                 for(int i=0;i< var.getLength();i++){ | ||||||
|  |                     ss[i] = s[i]; | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             s7Client.write(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getStrSize(), var.getType(),ss); | ||||||
|  |         }else { | ||||||
|  |             s7Client.write(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getStrSize(), var.getType(),newValue); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     private Object read(S7Client s7Client, Step3Plc2MesVar var) { | ||||||
|  |         try { | ||||||
|  |             return s7Client.read(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getLength(), var.getStrSize(), var.getType()); | ||||||
|  |         }catch (Throwable e){ | ||||||
|  |             logger.info("host:"+s7Client.getHost()+" ; read 操作出现问题: {}",e.getMessage(),e); | ||||||
|  |             return null; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     private void write(S7Client s7Client, Step3Mes2PlcVar var, Object newValue) { | ||||||
|  |         if(var.getType().equals(PlcVar.STRING_Array)){ | ||||||
|  |             String[] s = (String[])newValue; | ||||||
|  |             String[] ss = (String[])newValue; | ||||||
|  |             if(s.length > var.getLength() ){ | ||||||
|  |                 ss = new String[var.getLength()]; | ||||||
|  |                 for(int i=0;i< var.getLength();i++){ | ||||||
|  |                     ss[i] = s[i]; | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             s7Client.write(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getStrSize(), var.getType(),ss); | ||||||
|  |         }else { | ||||||
|  |             s7Client.write(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getStrSize(), var.getType(),newValue); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     public String getBoxId(String sapMaterial){ | ||||||
|  |         Integer todayBoxNum = service.getTodayBoxNum()+1; | ||||||
|  |         String nowTime = DateUtil.format(new Date(), "yyMMdd"); | ||||||
|  |  | ||||||
|  |         todayBoxNum+=500; | ||||||
|  |         logger.info("BOXID生成Event-------现在生成boxId ,sapMaterial: "+sapMaterial+",nowTime:"+nowTime+",todayBoxNum:"+formateString(todayBoxNum)); | ||||||
|  |         String res = "301"+sapMaterial+nowTime+formateString(todayBoxNum); | ||||||
|  |         return res; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     public String getErrorBoxId(String sapMaterial){ | ||||||
|  |  | ||||||
|  |         String nowTime = DateUtil.format(new Date(), "yyMMdd"); | ||||||
|  |         String mixBoxError = "001"; | ||||||
|  |         String res = "444"+sapMaterial+nowTime+mixBoxError; | ||||||
|  |         logger.info("BOXID生成Event-------现在生成errBoxId ,sapMaterial: "+sapMaterial+",nowTime:"+nowTime); | ||||||
|  |  | ||||||
|  |         return res; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public String removeKG(String str){ | ||||||
|  |         return str.substring(0,17); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public static void main(String[] args) { | ||||||
|  |         Integer a = 102; | ||||||
|  |         Format f1 = new DecimalFormat("000"); | ||||||
|  |         System.out.println(f1.format(a)); | ||||||
|  |     } | ||||||
|  |     public String formateString(Integer a){ | ||||||
|  |         Format f1 = new DecimalFormat("000"); | ||||||
|  |         return f1.format(a); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     //return true 出现混档了,return false 没有出现混档 | ||||||
|  |     private boolean isMixLevel(String[] subIds,Integer size){ | ||||||
|  |         String correctLevel = substrateServiceBiz.getBySubId(subIds[0]).getPowerLevel(); | ||||||
|  |         String errMsg = "以下基板ID出现混档:"; | ||||||
|  |         boolean res = false; | ||||||
|  |         for(int i=0;i<size;i++){ | ||||||
|  |             String powerLevel = substrateServiceBiz.getBySubId(subIds[i]).getPowerLevel(); | ||||||
|  |  | ||||||
|  |             if(!powerLevel.equals(correctLevel)){ | ||||||
|  |                 errMsg += "基板ID:"+subIds[i]+" 档位:"+powerLevel+", "; | ||||||
|  |                 res = true; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         if(res){ | ||||||
|  |             logger.error(errMsg); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         return res; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public void run(ApplicationArguments args) throws Exception { | ||||||
|  |  | ||||||
|  |         kukaStep1.scheduleAtFixedRate(new Runnable() { | ||||||
|  |             @Override | ||||||
|  |             public void run() { | ||||||
|  |                 try { | ||||||
|  |  | ||||||
|  |                     //调度开始 | ||||||
|  |                     Integer subArrived = waitingForTarget(Step1Plc2MesVar.SubArrivedToMes, true); | ||||||
|  |                     logger.info(""); | ||||||
|  |                     logger.info("==================================  现在开始执行 过程一 任务( 开始 )   ==================================="); | ||||||
|  |                     if(subArrived != 1){ | ||||||
|  |                         logger.info("标签打印Event---  失败"+" --- "+" MES监听 Step1Plc2MesVar.SubArrivedToMes 是否 等于 1 失败"); | ||||||
|  |                     } else if (subArrived == 2) { | ||||||
|  |                         throw new Exception("MES 监听值出现异常。"); | ||||||
|  |                     } | ||||||
|  |                     logger.info("标签打印Event --- 成功 ---- MES监听到 SubArrivedToMes==true"); | ||||||
|  |  | ||||||
|  |                     //一. 从plc 中获取 subId 和 lineNum | ||||||
|  |                     String subId = (String) read(S7Client.S7_DDJ1,Step1Plc2MesVar.SubIdToMes); | ||||||
|  |                     Integer lineNum = (Integer) read(S7Client.S7_DDJ1,Step1Plc2MesVar.LineNum); | ||||||
|  |                     //把基板ID字符串的空格去掉,因为plc中设置的20位,但实际基板ID就是17位,因为带空格去数据库查询 有问题的。 | ||||||
|  |                     if(subId == null || lineNum == null){ | ||||||
|  |                         logger.info("标签打印Event---  失败"+" --- "+" MES采集到null值,subId:"+subId+",lineNum:"+lineNum); | ||||||
|  |                     } | ||||||
|  |                     subId = removeKG(subId); | ||||||
|  |                     logger.info("标签打印Event --- 成功 ---- MES 从plu中 read 到基板id:"+subId); | ||||||
|  |  | ||||||
|  |                     //二. MES 业务 | ||||||
|  |                     //===============           MES 业务 开始         ================= | ||||||
|  |                     logger.info("=================  现在开始执行 过程一 任务 ( MES 业务 ) ( 开始 )   =================="); | ||||||
|  |                     //1. 从comline数据库中获取 实际pmpp | ||||||
|  |                     float pmppActual = service.getPMPPBySubId(subId); | ||||||
|  |                     //2. 匹配和计算补偿功率 | ||||||
|  |                     float pmppCompensation = compensationPowerServiceBiz.calculCompensationPMPP(pmppActual,lineNum); | ||||||
|  |                     //3. 依据补偿功率,获取工艺参数,并且把这些工艺参数传给kuka | ||||||
|  |                     WoPowerLevel argByPMPP = levelServiceBiz.getArgByPMPP(pmppCompensation, lineNum); | ||||||
|  |                     write(S7Client.S7_DDJ1,Step1Mes2PlcVar.dLable_Pnom,Integer.valueOf(argByPMPP.getPowerClass())); | ||||||
|  |                     write(S7Client.S7_DDJ1,Step1Mes2PlcVar.dLable_Voc,argByPMPP.getLableVoc()); | ||||||
|  |                     write(S7Client.S7_DDJ1,Step1Mes2PlcVar.dLable_Isc,argByPMPP.getLableIsc()); | ||||||
|  |                     write(S7Client.S7_DDJ1,Step1Mes2PlcVar.dLable_Vmpp,argByPMPP.getLableVmpp()); | ||||||
|  |                     write(S7Client.S7_DDJ1,Step1Mes2PlcVar.dLable_Impp,argByPMPP.getLableImpp()); | ||||||
|  |                     logger.info("标签打印Event--- 采集到 基板ID: "+subId+", 线边号:"+lineNum+",从camline 获取到实际pmpp"+pmppActual+",计算后 补偿功率:"+pmppCompensation+",dLable_Pnom: "+argByPMPP.getPowerClass() +",dLable_Voc: "+argByPMPP.getLableVoc()+",dLable_Isc: "+argByPMPP.getLableIsc()+",dLable_Vmpp: "+argByPMPP.getLableVmpp()+",dLable_Impp: "+argByPMPP.getLableImpp()); | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |                     //4. 把基板录到数据库 | ||||||
|  |                     WoPackagingBoxSubstrate woPackagingBoxSubstrate = new WoPackagingBoxSubstrate(); | ||||||
|  |                     woPackagingBoxSubstrate.setLineBody(lineNum); | ||||||
|  |                     woPackagingBoxSubstrate.setPowerLevel(argByPMPP.getPowerClass()); | ||||||
|  |                     woPackagingBoxSubstrate.setSapMaterial(argByPMPP.getSapMaterialNum()); | ||||||
|  |                     woPackagingBoxSubstrate.setWoSubstrateId(subId); | ||||||
|  |                     woPackagingBoxSubstrate.setActualPmpp(pmppActual); | ||||||
|  |                     woPackagingBoxSubstrate.setCreateTime(LocalDateTime.now()); | ||||||
|  |                     //计算后的补偿功率 | ||||||
|  |                     woPackagingBoxSubstrate.setPmpp(pmppCompensation); | ||||||
|  |  | ||||||
|  |  | ||||||
|  |                     //5. 从camline那里获取可变字段 | ||||||
|  |                     CamlineExtendArgDTO extendArgFromCamline = service.getExtendArgFromCamline(subId); | ||||||
|  |                     logger.info("标签打印Event--- 基板ID: "+subId+", 从camline获取PID16~PID22 的实测数据 成功, 数据内容:"+extendArgFromCamline.toString()); | ||||||
|  |                     woPackagingBoxSubstrate.setLastUpdateTime(extendArgFromCamline.getLastUpdateTime()); | ||||||
|  |                     woPackagingBoxSubstrate.setOrderName(extendArgFromCamline.getOrderName()); | ||||||
|  |                     woPackagingBoxSubstrate.setBinclassFl1(extendArgFromCamline.getBinclassFl1()); | ||||||
|  |                     woPackagingBoxSubstrate.setBinclassFl2(extendArgFromCamline.getBinclassFl2()); | ||||||
|  |                     woPackagingBoxSubstrate.setEtaFl1(extendArgFromCamline.getEtaFl1()); | ||||||
|  |                     woPackagingBoxSubstrate.setEtaFl2(extendArgFromCamline.getEtaFl2()); | ||||||
|  |                     woPackagingBoxSubstrate.setFfFl1(extendArgFromCamline.getFfFl1()); | ||||||
|  |                     woPackagingBoxSubstrate.setFfFl2(extendArgFromCamline.getFfFl2()); | ||||||
|  |                     woPackagingBoxSubstrate.setImppFl1(extendArgFromCamline.getImppFl1()); | ||||||
|  |                     woPackagingBoxSubstrate.setImppFl2(extendArgFromCamline.getImppFl2()); | ||||||
|  |                     woPackagingBoxSubstrate.setInsolflashcontrolFl1(extendArgFromCamline.getInsolflashcontrolFl1()); | ||||||
|  |                     woPackagingBoxSubstrate.setInsolflashcontrolFl2(extendArgFromCamline.getInsolflashcontrolFl2()); | ||||||
|  |                     woPackagingBoxSubstrate.setInsolmppFl1(extendArgFromCamline.getInsolmppFl1()); | ||||||
|  |                     woPackagingBoxSubstrate.setInsolmppFl2(extendArgFromCamline.getInsolmppFl2()); | ||||||
|  |                     woPackagingBoxSubstrate.setInsolvocFl1(extendArgFromCamline.getInsolvocFl1()); | ||||||
|  |                     woPackagingBoxSubstrate.setInsolvocFl2(extendArgFromCamline.getInsolvocFl2()); | ||||||
|  |                     woPackagingBoxSubstrate.setInsolFl1(extendArgFromCamline.getInsolFl1()); | ||||||
|  |                     woPackagingBoxSubstrate.setInsolFl2(extendArgFromCamline.getInsolFl2()); | ||||||
|  |                     woPackagingBoxSubstrate.setIscFl1(extendArgFromCamline.getIscFl1()); | ||||||
|  |                     woPackagingBoxSubstrate.setIscFl2(extendArgFromCamline.getIscFl2()); | ||||||
|  |                     woPackagingBoxSubstrate.setMeasTimeFl1(extendArgFromCamline.getMeasTimeFl1()); | ||||||
|  |                     woPackagingBoxSubstrate.setMeasTimeFl2(extendArgFromCamline.getMeasTimeFl2  ()); | ||||||
|  |                     woPackagingBoxSubstrate.setPmppFl1(extendArgFromCamline.getPmppFl1()); | ||||||
|  |                     woPackagingBoxSubstrate.setPmppFl2(extendArgFromCamline.getPmppFl2()); | ||||||
|  |                     woPackagingBoxSubstrate.setTcellFl1(extendArgFromCamline.getTcellFl1()); | ||||||
|  |                     woPackagingBoxSubstrate.setTcellFl2(extendArgFromCamline.getTcellFl2()); | ||||||
|  |                     woPackagingBoxSubstrate.setTmonicellFl1(extendArgFromCamline.getTmonicellFl1()); | ||||||
|  |                     woPackagingBoxSubstrate.setTmonicellFl2(extendArgFromCamline.getTmonicellFl2()); | ||||||
|  |                     woPackagingBoxSubstrate.setUmppFl1(extendArgFromCamline.getUmppFl1()); | ||||||
|  |                     woPackagingBoxSubstrate.setUmppFl2(extendArgFromCamline.getUmppFl2()); | ||||||
|  |                     woPackagingBoxSubstrate.setUocFl1(extendArgFromCamline.getUocFl1()); | ||||||
|  |                     woPackagingBoxSubstrate.setUocFl1(extendArgFromCamline.getUocFl2()); | ||||||
|  |  | ||||||
|  |                     substrateServiceBiz.insert(woPackagingBoxSubstrate); | ||||||
|  |  | ||||||
|  |                     logger.info("标签打印Event--- 基板ID: "+subId+", 录入数据库成功"); | ||||||
|  |                     logger.info("=================  现在开始执行 过程一 任务 ( MES 业务 ) ( 结束 )   =================="); | ||||||
|  |                     //===============           MES 业务 结束         ================= | ||||||
|  |  | ||||||
|  |                     //三. 当MES完成任务后,把MesToPlc.SubArrivedFinish变量置为true,告诉plc,我操作完成了 | ||||||
|  |                     write(S7Client.S7_DDJ1,Step1Mes2PlcVar.SubArrivedFinish,true); | ||||||
|  |                     logger.info("标签打印Event--- 基板ID: "+subId+", SubArrivedFinish,置为true 成功"); | ||||||
|  |                     //四. mes 监控 到PlcToMes.SubArrived==false,就把MesToPlc.SubArrivedFinish置为false | ||||||
|  |                     Integer subArrived2 = waitingForTarget(Step1Plc2MesVar.SubArrivedToMes, false); | ||||||
|  |                     if(subArrived2 != 1){ | ||||||
|  |                         logger.info("标签打印Event--- 失败"+" --- "+"MES监听 Step1Plc2MesVar.SubArrivedToMes 是否 等于 1 失败"); | ||||||
|  |                     }else if (subArrived2 == 2) { | ||||||
|  |                         throw new Exception("MES 监听值出现异常。"); | ||||||
|  |                     } | ||||||
|  |  | ||||||
|  |                     write(S7Client.S7_DDJ1,Step1Mes2PlcVar.SubArrivedFinish,false); | ||||||
|  |                     logger.info("标签打印Event--- 基板ID: "+subId+", SubArrivedFinish,置为 false 成功"); | ||||||
|  |                     logger.info("==================================  现在开始执行 过程一 任务( 结束 )   ==================================="); | ||||||
|  |                     logger.info(""); | ||||||
|  |                 }catch (Throwable e){ | ||||||
|  |                     logger.info("标签打印Event--- 出现异常 : {}",e.getMessage(),e); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         },1,1, TimeUnit.SECONDS); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * | ||||||
|  |      * arg: | ||||||
|  |      *      Step1Plc2MesVar 参数类型 | ||||||
|  |      *      targetValue        目的值 | ||||||
|  |      * return: | ||||||
|  |      *      2 s7 访问异常; | ||||||
|  |      *      1 成功; | ||||||
|  |      * */ | ||||||
|  |     private Integer waitingForTarget(Step1Plc2MesVar var, Boolean targetValue) { | ||||||
|  |         Integer res = 0; | ||||||
|  |         while (true){ | ||||||
|  |             try { | ||||||
|  |  | ||||||
|  |                 Boolean now = (Boolean) read(S7Client.S7_DDJ1,var); | ||||||
|  |                 //注意:即使now为null ,这里也不会抛出异常,这里很容易产生 空轮询。 | ||||||
|  |                 if(now == null){ | ||||||
|  |                     throw new Exception(""); | ||||||
|  |                 } | ||||||
|  |                 if(targetValue.equals(now)){ | ||||||
|  |                     res = 1; | ||||||
|  |                     break; | ||||||
|  |                 } | ||||||
|  |                 Thread.sleep(200); | ||||||
|  |             }catch (Throwable e){ | ||||||
|  |                 logger.info("S7 数据采集 异常. 监听 变量 :"+var.getName()+" 为目标值:"+targetValue+"失败"); | ||||||
|  |                 res = 2; | ||||||
|  |                 break; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         return res; | ||||||
|  |     } | ||||||
|  |     /** | ||||||
|  |      * | ||||||
|  |      * arg: | ||||||
|  |      *      Step2Plc2MesVar 参数类型 | ||||||
|  |      *      targetValue        目的值 | ||||||
|  |      * return: | ||||||
|  |      *      2 s7 访问异常; | ||||||
|  |      *      1 成功; | ||||||
|  |      * */ | ||||||
|  |     private Integer waitingForTarget(Step2Plc2MesVar var, Boolean targetValue) { | ||||||
|  |         Integer res = 0; | ||||||
|  |         while (true){ | ||||||
|  |             try { | ||||||
|  |                 Boolean now = (Boolean) read(S7Client.S7_DDJ1,var); | ||||||
|  |                 if(now == null){ | ||||||
|  |                     throw new Exception(""); | ||||||
|  |                 } | ||||||
|  |                 if(targetValue.equals(now)){ | ||||||
|  |                     res = 1; | ||||||
|  |                     break; | ||||||
|  |                 } | ||||||
|  |                 Thread.sleep(200); | ||||||
|  |             }catch (Throwable e){ | ||||||
|  |                 logger.info("S7 数据采集 异常. 监听 变量 :"+var.getName()+" 为目标值:"+targetValue+"失败"); | ||||||
|  |                 res = 2; | ||||||
|  |                 break; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         return res; | ||||||
|  |     } | ||||||
|  |     /** | ||||||
|  |      * | ||||||
|  |      * arg: | ||||||
|  |      *      Step3Plc2MesVar 参数类型 | ||||||
|  |      *      targetValue        目的值 | ||||||
|  |      * return: | ||||||
|  |      *      2 s7 访问异常; | ||||||
|  |      *      1 成功; | ||||||
|  |      * */ | ||||||
|  |     private Integer waitingForTarget(Step3Plc2MesVar var, Boolean targetValue) { | ||||||
|  |         Integer res = 0; | ||||||
|  |         while (true){ | ||||||
|  |             try { | ||||||
|  |                 Boolean now = (Boolean) read(S7Client.S7_DDJ1,var); | ||||||
|  |                 if(now == null){ | ||||||
|  |                     throw new Exception(""); | ||||||
|  |                 } | ||||||
|  |                 if(targetValue.equals(now)){ | ||||||
|  |                     res = 1; | ||||||
|  |                     break; | ||||||
|  |                 } | ||||||
|  |                 Thread.sleep(200); | ||||||
|  |             }catch (Throwable e){ | ||||||
|  |                 logger.info("S7 数据采集 异常. 监听 变量 :"+var.getName()+" 为目标值:"+targetValue+"失败"); | ||||||
|  |                 res = 2; | ||||||
|  |                 break; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         return res; | ||||||
|  |     } | ||||||
|  | } | ||||||
| @@ -0,0 +1,490 @@ | |||||||
|  | package com.cnbm.dispatch.line1; | ||||||
|  |  | ||||||
|  | import cn.hutool.core.date.DateUtil; | ||||||
|  | import com.cnbm.dispatch.enums.kuka.step1.Step1Mes2PlcVar; | ||||||
|  | import com.cnbm.dispatch.enums.kuka.step1.Step1Plc2MesVar; | ||||||
|  | import com.cnbm.dispatch.enums.kuka.step2.Step2Mes2PlcVar; | ||||||
|  | import com.cnbm.dispatch.enums.kuka.step2.Step2Plc2MesVar; | ||||||
|  | import com.cnbm.dispatch.enums.kuka.step3.Step3Mes2PlcVar; | ||||||
|  | import com.cnbm.dispatch.enums.kuka.step3.Step3Plc2MesVar; | ||||||
|  | import com.cnbm.packing.dto.CamlineSubIdDTO; | ||||||
|  | import com.cnbm.packing.entity.WoPackagingBox; | ||||||
|  | import com.cnbm.packing.entity.WoPackagingBoxSubstrate; | ||||||
|  | import com.cnbm.packing.service.*; | ||||||
|  | import com.cnbm.s7.s7connector.enmuc.S7Client; | ||||||
|  | import com.cnbm.s7.s7connector.type.PlcVar; | ||||||
|  | import org.slf4j.Logger; | ||||||
|  | import org.slf4j.LoggerFactory; | ||||||
|  | import org.springframework.beans.factory.annotation.Autowired; | ||||||
|  | import org.springframework.boot.ApplicationArguments; | ||||||
|  | import org.springframework.boot.ApplicationRunner; | ||||||
|  | import org.springframework.core.annotation.Order; | ||||||
|  | import org.springframework.stereotype.Component; | ||||||
|  |  | ||||||
|  | import java.text.DecimalFormat; | ||||||
|  | import java.text.Format; | ||||||
|  | import java.time.LocalDateTime; | ||||||
|  | import java.util.Arrays; | ||||||
|  | import java.util.Date; | ||||||
|  | import java.util.concurrent.Executors; | ||||||
|  | import java.util.concurrent.ScheduledExecutorService; | ||||||
|  | import java.util.concurrent.TimeUnit; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * @Desc: "" | ||||||
|  |  * @Author: caixiang | ||||||
|  |  * @DATE: 2022/12/23 12:33 | ||||||
|  |  */ | ||||||
|  | @Component | ||||||
|  | @Order(value = 1) | ||||||
|  | public class KukaEvent2ThreadLine1 implements ApplicationRunner { | ||||||
|  |  | ||||||
|  |     private static final Logger logger = LoggerFactory.getLogger("EVENT2Line1"); | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     @Autowired | ||||||
|  |     DynamicDataSourceService service; | ||||||
|  |     @Autowired | ||||||
|  |     WoPowerLevelServiceBiz levelServiceBiz; | ||||||
|  |  | ||||||
|  |     @Autowired | ||||||
|  |     WoCompensationPowerServiceBiz compensationPowerServiceBiz; | ||||||
|  |  | ||||||
|  |     @Autowired | ||||||
|  |     WoPackagingBoxSubstrateServiceBiz substrateServiceBiz; | ||||||
|  |  | ||||||
|  |     @Autowired | ||||||
|  |     WoPackagingBoxServiceBiz boxServiceBiz; | ||||||
|  |  | ||||||
|  |     public KukaEvent2ThreadLine1(){ | ||||||
|  |  | ||||||
|  |         this.kukaStep2 = Executors.newScheduledThreadPool(1); | ||||||
|  |  | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     private ScheduledExecutorService kukaStep2; | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * return | ||||||
|  |      *          成功: 返回相应的object对象 | ||||||
|  |      *          失败: 返回null | ||||||
|  |      * */ | ||||||
|  |     private Object read(S7Client s7Client,Step1Plc2MesVar var) { | ||||||
|  |         try { | ||||||
|  |             return s7Client.read(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getLength(), var.getStrSize(), var.getType()); | ||||||
|  |         }catch (Throwable e){ | ||||||
|  |             logger.info("host:"+s7Client.getHost()+" ; read 操作出现问题: {}",e.getMessage(),e); | ||||||
|  |             return null; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     private void write(S7Client s7Client, Step1Mes2PlcVar var, Object newValue) { | ||||||
|  |         if(var.getType().equals(PlcVar.STRING_Array)){ | ||||||
|  |             String[] s = (String[])newValue; | ||||||
|  |             String[] ss = (String[])newValue; | ||||||
|  |             if(s.length > var.getLength() ){ | ||||||
|  |                 ss = new String[var.getLength()]; | ||||||
|  |                 for(int i=0;i< var.getLength();i++){ | ||||||
|  |                     ss[i] = s[i]; | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             s7Client.write(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getStrSize(), var.getType(),ss); | ||||||
|  |         }else { | ||||||
|  |             s7Client.write(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getStrSize(), var.getType(),newValue); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     private Object read(S7Client s7Client, Step2Plc2MesVar var) { | ||||||
|  |         try { | ||||||
|  |             return s7Client.read(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getLength(), var.getStrSize(), var.getType()); | ||||||
|  |         }catch (Throwable e){ | ||||||
|  |             logger.info("host:"+s7Client.getHost()+" ; read 操作出现问题: {}",e.getMessage(),e); | ||||||
|  |             return null; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     private void write(S7Client s7Client, Step2Mes2PlcVar var, Object newValue) { | ||||||
|  |         if(var.getType().equals(PlcVar.STRING_Array)){ | ||||||
|  |             String[] s = (String[])newValue; | ||||||
|  |             String[] ss = (String[])newValue; | ||||||
|  |             if(s.length > var.getLength() ){ | ||||||
|  |                 ss = new String[var.getLength()]; | ||||||
|  |                 for(int i=0;i< var.getLength();i++){ | ||||||
|  |                     ss[i] = s[i]; | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             s7Client.write(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getStrSize(), var.getType(),ss); | ||||||
|  |         }else { | ||||||
|  |             s7Client.write(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getStrSize(), var.getType(),newValue); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     private Object read(S7Client s7Client, Step3Plc2MesVar var) { | ||||||
|  |         try { | ||||||
|  |             return s7Client.read(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getLength(), var.getStrSize(), var.getType()); | ||||||
|  |         }catch (Throwable e){ | ||||||
|  |             logger.info("host:"+s7Client.getHost()+" ; read 操作出现问题: {}",e.getMessage(),e); | ||||||
|  |             return null; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     private void write(S7Client s7Client, Step3Mes2PlcVar var, Object newValue) { | ||||||
|  |         if(var.getType().equals(PlcVar.STRING_Array)){ | ||||||
|  |             String[] s = (String[])newValue; | ||||||
|  |             String[] ss = (String[])newValue; | ||||||
|  |             if(s.length > var.getLength() ){ | ||||||
|  |                 ss = new String[var.getLength()]; | ||||||
|  |                 for(int i=0;i< var.getLength();i++){ | ||||||
|  |                     ss[i] = s[i]; | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             s7Client.write(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getStrSize(), var.getType(),ss); | ||||||
|  |         }else { | ||||||
|  |             s7Client.write(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getStrSize(), var.getType(),newValue); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     public String getBoxId(String sapMaterial){ | ||||||
|  |         Integer todayBoxNum = service.getTodayBoxNum()+1; | ||||||
|  |         String nowTime = DateUtil.format(new Date(), "yyMMdd"); | ||||||
|  |  | ||||||
|  |         todayBoxNum+=500; | ||||||
|  |         Format f1 = new DecimalFormat("000"); | ||||||
|  |         System.out.println(f1.format(todayBoxNum)); | ||||||
|  |         logger.info("BOXID生成Event-------现在生成boxId ,sapMaterial: "+sapMaterial+",nowTime:"+nowTime+",todayBoxNum:"+formateString(todayBoxNum)); | ||||||
|  |         String res = "301"+sapMaterial+nowTime+formateString(todayBoxNum); | ||||||
|  |         return res; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     public String getErrorBoxId(String sapMaterial){ | ||||||
|  |         Integer todayErrBoxNum = service.getTodayErrBoxNum()+1; | ||||||
|  |         String nowTime = DateUtil.format(new Date(), "yyMMdd"); | ||||||
|  |         String mixBoxError = "001"; | ||||||
|  |         String res = "444"+sapMaterial+nowTime+mixBoxError+"01"+todayErrBoxNum; | ||||||
|  |         logger.info("BOXID生成Event-------现在生成errBoxId ,sapMaterial: "+sapMaterial+",nowTime:"+nowTime+",todayErrBoxNum:"+todayErrBoxNum); | ||||||
|  |  | ||||||
|  |         return res; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public String removeKG(String str){ | ||||||
|  |         return str.substring(0,17); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public static void main(String[] args) { | ||||||
|  |         Integer a = 102; | ||||||
|  |         Integer b  = 1; | ||||||
|  |         Format f1 = new DecimalFormat("000"); | ||||||
|  |         System.out.println(f1.format(a)); | ||||||
|  |         System.out.println(f1.format(b)); | ||||||
|  |     } | ||||||
|  |     public String formateString(Integer a){ | ||||||
|  |         Format f1 = new DecimalFormat("000"); | ||||||
|  |         return f1.format(a); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     //return true 出现混档了,return false 没有出现混档 | ||||||
|  | //    private boolean isMixLevel(String[] subIds,Integer size){ | ||||||
|  | //        WoPackagingBoxSubstrate bySubId = substrateServiceBiz.getBySubId(subIds[0]); | ||||||
|  | //        String correctLevel = null; | ||||||
|  | //        String powerLevel = null; | ||||||
|  | //        //如果 我们数据库没有  去camline 数据库里面取  --  开始 | ||||||
|  | //        if(bySubId == null){ | ||||||
|  | //            logger.info("BOXID生成Event-------检查是否混箱时,发现数据库中 无subId:"+ subIds[0]+"现在从camline 系统获取这个基板相关信息"); | ||||||
|  | //            //todo | ||||||
|  | //            CamlineSubIdDTO subIdByCamline = service.getSubIdByCamline(subIds[0]); | ||||||
|  | //            logger.info("BOXID生成Event-------检查是否混箱时,发现数据库中 无subId:"+ subIds[0]+"现在从camline 系统获取这个基板相关信息是:"+subIdByCamline); | ||||||
|  | // | ||||||
|  | //            correctLevel = subIdByCamline.getPowerLevel(); | ||||||
|  | //            powerLevel = subIdByCamline.getSapMaterial(); | ||||||
|  | //        }else { | ||||||
|  | //            correctLevel = bySubId.getPowerLevel(); | ||||||
|  | //            powerLevel = bySubId.getSapMaterial(); | ||||||
|  | //        } | ||||||
|  | //        String errMsg = "以下基板ID出现混档:"; | ||||||
|  | //        boolean res = false; | ||||||
|  | //        for(int i=0;i<size;i++){ | ||||||
|  | // | ||||||
|  | //            if(!powerLevel.equals(correctLevel)){ | ||||||
|  | //                errMsg += "基板ID:"+subIds[i]+" 档位:"+powerLevel+", "; | ||||||
|  | //                res = true; | ||||||
|  | //            } | ||||||
|  | //        } | ||||||
|  | //        if(res){ | ||||||
|  | //            logger.error(errMsg); | ||||||
|  | //        } | ||||||
|  | // | ||||||
|  | //        return res; | ||||||
|  | //    } | ||||||
|  |     private CamlineSubIdDTO getFromCamline(String subId){ | ||||||
|  |         return service.getSubIdByCamline(subId); | ||||||
|  |     } | ||||||
|  |     private boolean isMixLevel(String[] subIds,Integer size){ | ||||||
|  |         WoPackagingBoxSubstrate bySubId = substrateServiceBiz.getBySubId(subIds[0]); | ||||||
|  |         String correctLevel = null; | ||||||
|  |  | ||||||
|  |         //如果 我们数据库没有  去camline 数据库里面取  --  开始 | ||||||
|  |         if(bySubId == null){ | ||||||
|  |             logger.info("BOXID生成Event-------检查是否混箱时,发现数据库中 无subId:"+ subIds[0]+"现在从camline 系统获取这个基板相关信息"); | ||||||
|  |             //todo | ||||||
|  |             CamlineSubIdDTO subIdByCamline = service.getSubIdByCamline(subIds[0]); | ||||||
|  |             logger.info("BOXID生成Event-------检查是否混箱时,发现数据库中 无subId:"+ subIds[0]+"现在从camline 系统获取这个基板相关信息是:"+subIdByCamline); | ||||||
|  |  | ||||||
|  |             correctLevel = subIdByCamline.getPowerLevel(); | ||||||
|  |         }else { | ||||||
|  |             correctLevel = bySubId.getPowerLevel(); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |         String errMsg = "以下基板ID出现混档:"; | ||||||
|  |         boolean res = false; | ||||||
|  |         for(int i=0;i<size;i++){ | ||||||
|  |             WoPackagingBoxSubstrate innerSub = substrateServiceBiz.getBySubId(subIds[i]); | ||||||
|  |             String powerLevel = null; | ||||||
|  |             if(innerSub==null){ | ||||||
|  |                 powerLevel = getFromCamline(subIds[i]).getPowerLevel(); | ||||||
|  |             }else { | ||||||
|  |                 powerLevel = innerSub.getPowerLevel(); | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             if(!powerLevel.equals(correctLevel)){ | ||||||
|  |                 errMsg += "基板ID:"+subIds[i]+" 档位:"+powerLevel+", "; | ||||||
|  |                 res = true; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         if(res){ | ||||||
|  |             logger.error(errMsg); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         return res; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public void run(ApplicationArguments args) throws Exception { | ||||||
|  |         kukaStep2.scheduleAtFixedRate(new Runnable() { | ||||||
|  |             @Override | ||||||
|  |             public void run() { | ||||||
|  |                 try { | ||||||
|  |  | ||||||
|  |                     //调度开始 | ||||||
|  |                     Integer shelfIsFull = waitingForTarget(Step2Plc2MesVar.ShelfIsFull, true); | ||||||
|  |                     logger.info(""); | ||||||
|  |                     logger.info("==================================  现在开始执行 过程二 任务( 开始 )   ==================================="); | ||||||
|  |                     if(shelfIsFull != 1){ | ||||||
|  |                         logger.info("BOXID生成Event-------失败"+" --- "+"MES监听 Step2Plc2MesVar.ShelfIsFull 是否 等于 1 失败"); | ||||||
|  |                     }else if(shelfIsFull == 2){ | ||||||
|  |                         throw new Exception("MES 监听值出现异常。"); | ||||||
|  |                     } | ||||||
|  |  | ||||||
|  |                     //一. 从plc 中获取 subIdList 和 lineNum | ||||||
|  |                     String[] subIdList = (String[])read(S7Client.S7_DDJ1,Step2Plc2MesVar.SubIdList); | ||||||
|  |                     Integer listSize = (Integer)read(S7Client.S7_DDJ1,Step2Plc2MesVar.PackageNumberSet)-1; | ||||||
|  |  | ||||||
|  |  | ||||||
|  |                     //二. MES 业务 | ||||||
|  |                     //===============           MES 业务 开始         ================= | ||||||
|  |                     //1.MES 生成BoxId | ||||||
|  |                     if(subIdList.length<=0){ | ||||||
|  |                         logger.info("BOXID生成Event-------失败"+" --- "+"从plc里面获取到的基板列表 为空"); | ||||||
|  |                         throw new Exception("BOXID生成Event失败-------kuka机械手 取到了空箱"); | ||||||
|  |                     } | ||||||
|  |                     if(listSize == null){ | ||||||
|  |                         logger.info("BOXID生成Event-------失败"+" --- "+"从plc里面获取到的listSize 为null"); | ||||||
|  |                         throw new Exception("BOXID生成Event失败-------listSize 为null"); | ||||||
|  |                     } | ||||||
|  |  | ||||||
|  |                     //真实的基板ID 就是17位的,plc读取过来,有空格,要把后面3位空格去掉就行了。 | ||||||
|  |                     for(int i=0;i<subIdList.length;i++){ | ||||||
|  |                         subIdList[i] = removeKG(subIdList[i]); | ||||||
|  |                     } | ||||||
|  |                     logger.info("BOXID生成Event-------获取到基板列表:"+ Arrays.toString(subIdList)+",基板数量:"+listSize); | ||||||
|  |  | ||||||
|  |                     WoPackagingBoxSubstrate bySubId = substrateServiceBiz.getBySubId(subIdList[0]); | ||||||
|  |                     logger.info("BOXID生成Event-------依据subId"+subIdList[0]+"去qgs数据库 查询数据,数据内容:"+bySubId); | ||||||
|  |  | ||||||
|  |  | ||||||
|  |                     //如果我们系统中找不到这块基板那么就去camline里面找 | ||||||
|  | //                    if(bySubId == null){ | ||||||
|  | //                        logger.info("BOXID生成Event-------数据库中 无subId:"+ subIdList[0]+"现在从camline 系统获取这个基板相关信息"); | ||||||
|  | //                        //todo | ||||||
|  | //                        CamlineSubIdDTO subIdByCamline = service.getSubIdByCamline(subIdList[0]); | ||||||
|  | //                        logger.info("BOXID生成Event-------camline 中关于此基板信息:"+ subIdByCamline); | ||||||
|  | // | ||||||
|  | //                        bySubId = new WoPackagingBoxSubstrate(); | ||||||
|  | //                        bySubId.setPowerLevel(subIdByCamline.getPowerLevel()); | ||||||
|  | //                        bySubId.setSapMaterial(subIdByCamline.getSapMaterial()); | ||||||
|  | //                        bySubId.setLineBody(1); | ||||||
|  | //                    } | ||||||
|  |                     if(bySubId == null){ | ||||||
|  |                         logger.info("BOXID生成Event-------数据库中 无subId:"+ subIdList[0]); | ||||||
|  |                         throw new Exception("BOXID生成Event-------数据库中 无subId:"+ subIdList[0]); | ||||||
|  |                     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |                     //校验是否存在混档位情况      -- 开始 | ||||||
|  |                     String boxId = ""; | ||||||
|  |                     if(isMixLevel(subIdList,listSize)){ | ||||||
|  |                         //出现混档 | ||||||
|  |                         logger.info("BOXID生成Event-------subIdList :"+Arrays.asList(subIdList)+"出现混档"); | ||||||
|  |                         boxId = getErrorBoxId(bySubId.getSapMaterial()); | ||||||
|  |  | ||||||
|  |                     }else { | ||||||
|  |                         //正常情况 | ||||||
|  |                         logger.info("BOXID生成Event-------subIdList :"+Arrays.asList(subIdList)+"没有出现混档"); | ||||||
|  |                         boxId = getBoxId(bySubId.getSapMaterial()); | ||||||
|  |                     } | ||||||
|  |                     logger.info("BOXID生成Event-------subIdList :"+Arrays.asList(subIdList)+"isMixLevel 校验结束"); | ||||||
|  |                     //校验是否存在混档位情况      -- 结束 | ||||||
|  |  | ||||||
|  |  | ||||||
|  |                     logger.info("BOXID生成Event-------mes 生成的boxId :"+ boxId); | ||||||
|  |                     //2. 依次update 基板表,把boxId 赋予这些基板 | ||||||
|  |                     for(int i=0;i<listSize;i++){ | ||||||
|  |                         substrateServiceBiz.updatePackagingBoxIdAndSlotByWoSubstrateId(boxId,(i+1),subIdList[i]); | ||||||
|  |                     } | ||||||
|  |                     //3.去camline数据库 查询此基板ID 对应的订单 | ||||||
|  |                     String orderNameBySubId = service.getOrderNameBySubId(subIdList[0]); | ||||||
|  |                     //4. box信息录入到box表 | ||||||
|  |                     WoPackagingBox woPackagingBox = new WoPackagingBox(); | ||||||
|  |                     woPackagingBox.setBoxNo(boxId); | ||||||
|  |                     woPackagingBox.setSubstrateQuantity(listSize); | ||||||
|  |                     woPackagingBox.setPackagingTime(LocalDateTime.now()); | ||||||
|  |                     woPackagingBox.setPowerLevel(bySubId.getPowerLevel()); | ||||||
|  |                     woPackagingBox.setLineBody(bySubId.getLineBody()); | ||||||
|  |                     woPackagingBox.setSapMaterial(bySubId.getSapMaterial()); | ||||||
|  |                     woPackagingBox.setOrderNum(orderNameBySubId); | ||||||
|  |                     //1-手动模式,2-自动模式 | ||||||
|  |                     woPackagingBox.setModel(2); | ||||||
|  |                     woPackagingBox.setCreateTime(LocalDateTime.now()); | ||||||
|  |                     woPackagingBox.setPackagingTime(LocalDateTime.now()); | ||||||
|  |                     boxServiceBiz.insert(woPackagingBox); | ||||||
|  |                     logger.info("BOXID生成Event-------boxId :"+ boxId+"写入数据库成功"); | ||||||
|  |                     //===============           MES 业务 结束         ================= | ||||||
|  |  | ||||||
|  |                     //三. 把生成的BoxId 告诉kuka | ||||||
|  |                     write(S7Client.S7_DDJ1,Step2Mes2PlcVar.BoxId,boxId); | ||||||
|  |                     logger.info("BOXID生成Event-------boxId :"+ boxId+"传给PLC 成功"); | ||||||
|  |  | ||||||
|  |                     //四. 当MES完成任务后,把MesToPlc.ShelfIsFullFinish变量置为true,告诉plc,我操作完成了 | ||||||
|  |                     write(S7Client.S7_DDJ1,Step2Mes2PlcVar.ShelfIsFullFinish,true); | ||||||
|  |                     logger.info("BOXID生成Event-------boxId :"+ boxId+"ShelfIsFullFinish 置为true 成功"); | ||||||
|  |                     //四. mes 监控 到PlcToMes.SubArrived==false,就把MesToPlc.SubArrivedFinish置为false | ||||||
|  |                     Integer subArrived2 = waitingForTarget(Step2Plc2MesVar.ShelfIsFull, false); | ||||||
|  |                     if(subArrived2 != 1){ | ||||||
|  |                         logger.info("BOXID生成Event-------失败"+" --- "+"步骤1.  MES监听 Step1Plc2MesVar.SubArrivedToMes 是否 等于 1 失败"); | ||||||
|  |                     }else if(subArrived2 == 2){ | ||||||
|  |                         throw new Exception("MES 监听值出现异常。"); | ||||||
|  |                     } | ||||||
|  |                     write(S7Client.S7_DDJ1,Step2Mes2PlcVar.ShelfIsFullFinish,false); | ||||||
|  |                     logger.info("BOXID生成Event-------boxId :"+ boxId+"ShelfIsFullFinish 置为false 成功,Event2 成功结束"); | ||||||
|  |                     logger.info("==================================  现在开始执行 过程二 任务( 结束 )   ==================================="); | ||||||
|  |                     logger.info(""); | ||||||
|  |  | ||||||
|  |                 }catch (Throwable e){ | ||||||
|  | //                    logger.info("BOXID生成Event-------  出现异常:" + e.toString()); | ||||||
|  |                     logger.info("BOXID生成Event--- 出现异常 : {}",e.getMessage(),e); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         },1,1, TimeUnit.SECONDS); | ||||||
|  |  | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * | ||||||
|  |      * arg: | ||||||
|  |      *      Step1Plc2MesVar 参数类型 | ||||||
|  |      *      targetValue        目的值 | ||||||
|  |      * return: | ||||||
|  |      *      2 s7 访问异常; | ||||||
|  |      *      1 成功; | ||||||
|  |      * */ | ||||||
|  |     private Integer waitingForTarget(Step1Plc2MesVar var, Boolean targetValue) { | ||||||
|  |         Integer res = 0; | ||||||
|  |         while (true){ | ||||||
|  |             try { | ||||||
|  |  | ||||||
|  |                 Boolean now = (Boolean) read(S7Client.S7_DDJ1,var); | ||||||
|  |                 //注意:即使now为null ,这里也不会抛出异常,这里很容易产生 空轮询。 | ||||||
|  |                 if(now == null){ | ||||||
|  |                     throw new Exception(""); | ||||||
|  |                 } | ||||||
|  |                 if(targetValue.equals(now)){ | ||||||
|  |                     res = 1; | ||||||
|  |                     break; | ||||||
|  |                 } | ||||||
|  |                 Thread.sleep(200); | ||||||
|  |             }catch (Throwable e){ | ||||||
|  |                 logger.info("S7 数据采集 异常. 监听 变量 :"+var.getName()+" 为目标值:"+targetValue+"失败"); | ||||||
|  |                 res = 2; | ||||||
|  |                 break; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         return res; | ||||||
|  |     } | ||||||
|  |     /** | ||||||
|  |      * | ||||||
|  |      * arg: | ||||||
|  |      *      Step2Plc2MesVar 参数类型 | ||||||
|  |      *      targetValue        目的值 | ||||||
|  |      * return: | ||||||
|  |      *      2 s7 访问异常; | ||||||
|  |      *      1 成功; | ||||||
|  |      * */ | ||||||
|  |     private Integer waitingForTarget(Step2Plc2MesVar var, Boolean targetValue) { | ||||||
|  |         Integer res = 0; | ||||||
|  |         while (true){ | ||||||
|  |             try { | ||||||
|  |                 Boolean now = (Boolean) read(S7Client.S7_DDJ1,var); | ||||||
|  |                 if(now == null){ | ||||||
|  |                     throw new Exception(""); | ||||||
|  |                 } | ||||||
|  |                 if(targetValue.equals(now)){ | ||||||
|  |                     res = 1; | ||||||
|  |                     break; | ||||||
|  |                 } | ||||||
|  |                 Thread.sleep(200); | ||||||
|  |             }catch (Throwable e){ | ||||||
|  |                 logger.info("S7 数据采集 异常. 监听 变量 :"+var.getName()+" 为目标值:"+targetValue+"失败"); | ||||||
|  |                 res = 2; | ||||||
|  |                 break; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         return res; | ||||||
|  |     } | ||||||
|  |     /** | ||||||
|  |      * | ||||||
|  |      * arg: | ||||||
|  |      *      Step3Plc2MesVar 参数类型 | ||||||
|  |      *      targetValue        目的值 | ||||||
|  |      * return: | ||||||
|  |      *      2 s7 访问异常; | ||||||
|  |      *      1 成功; | ||||||
|  |      * */ | ||||||
|  |     private Integer waitingForTarget(Step3Plc2MesVar var, Boolean targetValue) { | ||||||
|  |         Integer res = 0; | ||||||
|  |         while (true){ | ||||||
|  |             try { | ||||||
|  |                 Boolean now = (Boolean) read(S7Client.S7_DDJ1,var); | ||||||
|  |                 if(now == null){ | ||||||
|  |                     throw new Exception(""); | ||||||
|  |                 } | ||||||
|  |                 if(targetValue.equals(now)){ | ||||||
|  |                     res = 1; | ||||||
|  |                     break; | ||||||
|  |                 } | ||||||
|  |                 Thread.sleep(200); | ||||||
|  |             }catch (Throwable e){ | ||||||
|  |                 logger.info("S7 数据采集 异常. 监听 变量 :"+var.getName()+" 为目标值:"+targetValue+"失败"); | ||||||
|  |                 res = 2; | ||||||
|  |                 break; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         return res; | ||||||
|  |     } | ||||||
|  | } | ||||||
| @@ -0,0 +1,354 @@ | |||||||
|  | package com.cnbm.dispatch.line1; | ||||||
|  |  | ||||||
|  | import cn.hutool.core.date.DateUtil; | ||||||
|  | import com.cnbm.dispatch.enums.kuka.step1.Step1Mes2PlcVar; | ||||||
|  | import com.cnbm.dispatch.enums.kuka.step1.Step1Plc2MesVar; | ||||||
|  | import com.cnbm.dispatch.enums.kuka.step2.Step2Mes2PlcVar; | ||||||
|  | import com.cnbm.dispatch.enums.kuka.step2.Step2Plc2MesVar; | ||||||
|  | import com.cnbm.dispatch.enums.kuka.step3.Step3Mes2PlcVar; | ||||||
|  | import com.cnbm.dispatch.enums.kuka.step3.Step3Plc2MesVar; | ||||||
|  | import com.cnbm.packing.service.*; | ||||||
|  | import com.cnbm.s7.s7connector.enmuc.S7Client; | ||||||
|  | import com.cnbm.s7.s7connector.type.PlcVar; | ||||||
|  | import org.slf4j.Logger; | ||||||
|  | import org.slf4j.LoggerFactory; | ||||||
|  | import org.springframework.beans.factory.annotation.Autowired; | ||||||
|  | import org.springframework.boot.ApplicationArguments; | ||||||
|  | import org.springframework.boot.ApplicationRunner; | ||||||
|  | import org.springframework.core.annotation.Order; | ||||||
|  | import org.springframework.stereotype.Component; | ||||||
|  |  | ||||||
|  | import java.text.DecimalFormat; | ||||||
|  | import java.text.Format; | ||||||
|  | import java.util.Date; | ||||||
|  | import java.util.concurrent.Executors; | ||||||
|  | import java.util.concurrent.ScheduledExecutorService; | ||||||
|  | import java.util.concurrent.TimeUnit; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * @Desc: "" | ||||||
|  |  * @Author: caixiang | ||||||
|  |  * @DATE: 2022/12/23 12:33 | ||||||
|  |  */ | ||||||
|  | @Component | ||||||
|  | @Order(value = 1) | ||||||
|  | public class KukaEvent3ThreadLine1 implements ApplicationRunner { | ||||||
|  |  | ||||||
|  |     private static final Logger logger = LoggerFactory.getLogger("EVENT3Line1"); | ||||||
|  |  | ||||||
|  |     @Autowired | ||||||
|  |     DynamicDataSourceService service; | ||||||
|  |     @Autowired | ||||||
|  |     WoPowerLevelServiceBiz levelServiceBiz; | ||||||
|  |  | ||||||
|  |     @Autowired | ||||||
|  |     WoCompensationPowerServiceBiz compensationPowerServiceBiz; | ||||||
|  |  | ||||||
|  |     @Autowired | ||||||
|  |     WoPackagingBoxSubstrateServiceBiz substrateServiceBiz; | ||||||
|  |  | ||||||
|  |     @Autowired | ||||||
|  |     WoPackagingBoxServiceBiz boxServiceBiz; | ||||||
|  |  | ||||||
|  |     public KukaEvent3ThreadLine1(){ | ||||||
|  |         this.kukaStep3 = Executors.newScheduledThreadPool(1); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     private ScheduledExecutorService kukaStep3; | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * return | ||||||
|  |      *          成功: 返回相应的object对象 | ||||||
|  |      *          失败: 返回null | ||||||
|  |      * */ | ||||||
|  |     private Object read(S7Client s7Client,Step1Plc2MesVar var) { | ||||||
|  |         try { | ||||||
|  |             return s7Client.read(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getLength(), var.getStrSize(), var.getType()); | ||||||
|  |         }catch (Throwable e){ | ||||||
|  |             logger.info("host:"+s7Client.getHost()+" ; read 操作出现问题: {}",e.getMessage(),e); | ||||||
|  |             return null; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     private void write(S7Client s7Client, Step1Mes2PlcVar var, Object newValue) { | ||||||
|  |         if(var.getType().equals(PlcVar.STRING_Array)){ | ||||||
|  |             String[] s = (String[])newValue; | ||||||
|  |             String[] ss = (String[])newValue; | ||||||
|  |             if(s.length > var.getLength() ){ | ||||||
|  |                 ss = new String[var.getLength()]; | ||||||
|  |                 for(int i=0;i< var.getLength();i++){ | ||||||
|  |                     ss[i] = s[i]; | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             s7Client.write(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getStrSize(), var.getType(),ss); | ||||||
|  |         }else { | ||||||
|  |             s7Client.write(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getStrSize(), var.getType(),newValue); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     private Object read(S7Client s7Client, Step2Plc2MesVar var) { | ||||||
|  |         try { | ||||||
|  |             return s7Client.read(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getLength(), var.getStrSize(), var.getType()); | ||||||
|  |         }catch (Throwable e){ | ||||||
|  |             logger.info("host:"+s7Client.getHost()+" ; read 操作出现问题: {}",e.getMessage(),e); | ||||||
|  |             return null; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     private void write(S7Client s7Client, Step2Mes2PlcVar var, Object newValue) { | ||||||
|  |         if(var.getType().equals(PlcVar.STRING_Array)){ | ||||||
|  |             String[] s = (String[])newValue; | ||||||
|  |             String[] ss = (String[])newValue; | ||||||
|  |             if(s.length > var.getLength() ){ | ||||||
|  |                 ss = new String[var.getLength()]; | ||||||
|  |                 for(int i=0;i< var.getLength();i++){ | ||||||
|  |                     ss[i] = s[i]; | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             s7Client.write(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getStrSize(), var.getType(),ss); | ||||||
|  |         }else { | ||||||
|  |             s7Client.write(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getStrSize(), var.getType(),newValue); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     private Object read(S7Client s7Client, Step3Plc2MesVar var) { | ||||||
|  |         try { | ||||||
|  |             return s7Client.read(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getLength(), var.getStrSize(), var.getType()); | ||||||
|  |         }catch (Throwable e){ | ||||||
|  |             logger.info("host:"+s7Client.getHost()+" ; read 操作出现问题: {}",e.getMessage(),e); | ||||||
|  |             return null; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     private void write(S7Client s7Client, Step3Mes2PlcVar var, Object newValue) { | ||||||
|  |         if(var.getType().equals(PlcVar.STRING_Array)){ | ||||||
|  |             String[] s = (String[])newValue; | ||||||
|  |             String[] ss = (String[])newValue; | ||||||
|  |             if(s.length > var.getLength() ){ | ||||||
|  |                 ss = new String[var.getLength()]; | ||||||
|  |                 for(int i=0;i< var.getLength();i++){ | ||||||
|  |                     ss[i] = s[i]; | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             s7Client.write(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getStrSize(), var.getType(),ss); | ||||||
|  |         }else { | ||||||
|  |             s7Client.write(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getStrSize(), var.getType(),newValue); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     public String getBoxId(String sapMaterial){ | ||||||
|  |         Integer todayBoxNum = service.getTodayBoxNum()+1; | ||||||
|  |         String nowTime = DateUtil.format(new Date(), "yyMMdd"); | ||||||
|  |  | ||||||
|  |         todayBoxNum+=500; | ||||||
|  |         logger.info("BOXID生成Event-------现在生成boxId ,sapMaterial: "+sapMaterial+",nowTime:"+nowTime+",todayBoxNum:"+formateString(todayBoxNum)); | ||||||
|  |         String res = "301"+sapMaterial+nowTime+formateString(todayBoxNum); | ||||||
|  |         return res; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     public String getErrorBoxId(String sapMaterial){ | ||||||
|  |  | ||||||
|  |         String nowTime = DateUtil.format(new Date(), "yyMMdd"); | ||||||
|  |         String mixBoxError = "001"; | ||||||
|  |         String res = "444"+sapMaterial+nowTime+mixBoxError; | ||||||
|  |         logger.info("BOXID生成Event-------现在生成errBoxId ,sapMaterial: "+sapMaterial+",nowTime:"+nowTime); | ||||||
|  |  | ||||||
|  |         return res; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public String removeKG(String str){ | ||||||
|  |         return str.substring(0,17); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public static void main(String[] args) { | ||||||
|  |         Integer a = 102; | ||||||
|  |         Format f1 = new DecimalFormat("000"); | ||||||
|  |         System.out.println(f1.format(a)); | ||||||
|  |     } | ||||||
|  |     public String formateString(Integer a){ | ||||||
|  |         Format f1 = new DecimalFormat("000"); | ||||||
|  |         return f1.format(a); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     //return true 出现混档了,return false 没有出现混档 | ||||||
|  |     private boolean isMixLevel(String[] subIds,Integer size){ | ||||||
|  |         String correctLevel = substrateServiceBiz.getBySubId(subIds[0]).getPowerLevel(); | ||||||
|  |         String errMsg = "以下基板ID出现混档:"; | ||||||
|  |         boolean res = false; | ||||||
|  |         for(int i=0;i<size;i++){ | ||||||
|  |             String powerLevel = substrateServiceBiz.getBySubId(subIds[i]).getPowerLevel(); | ||||||
|  |  | ||||||
|  |             if(!powerLevel.equals(correctLevel)){ | ||||||
|  |                 errMsg += "基板ID:"+subIds[i]+" 档位:"+powerLevel+", "; | ||||||
|  |                 res = true; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         if(res){ | ||||||
|  |             logger.error(errMsg); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         return res; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public void run(ApplicationArguments args) throws Exception { | ||||||
|  |  | ||||||
|  |         kukaStep3.scheduleAtFixedRate(new Runnable() { | ||||||
|  |             @Override | ||||||
|  |             public void run() { | ||||||
|  |                 try { | ||||||
|  |  | ||||||
|  |                     //调度开始 | ||||||
|  |                     Integer shelfIsFull = waitingForTarget(Step3Plc2MesVar.ShelfIsFullArrived, true); | ||||||
|  |                     logger.info(""); | ||||||
|  |                     logger.info("==================================  现在开始执行 过程三 任务( 开始 )   ==================================="); | ||||||
|  |                     if(shelfIsFull != 1){ | ||||||
|  |                         logger.info("装箱单打印Event------失败"+" --- "+"MES监听 Step3Plc2MesVar.ShelfIsFullArrived 是否 等于 1 失败"); | ||||||
|  |                     }else if(shelfIsFull == 2){ | ||||||
|  |                         throw new Exception("MES 监听值出现异常。"); | ||||||
|  |                     } | ||||||
|  |  | ||||||
|  |                     //一. 从plc 中获取 subIdList 和 lineNum | ||||||
|  |                     String boxId = (String)read(S7Client.S7_DDJ1,Step3Plc2MesVar.BoxId); | ||||||
|  |                     Integer lineNum = (Integer) read(S7Client.S7_DDJ1,Step3Plc2MesVar.LineNum); | ||||||
|  |                     if(boxId == null){ | ||||||
|  |                         logger.info("装箱单打印Event-------失败"+" --- "+"从plc里面获取到的boxId 为null"); | ||||||
|  |                         throw new Exception("装箱单打印Event-------boxId 为null"); | ||||||
|  |                     } | ||||||
|  |                     logger.info("装箱单打印Event------到达站台的boxId :"+boxId); | ||||||
|  |  | ||||||
|  |                     //二. MES 业务 | ||||||
|  |                     //===============           MES 业务 开始         ================= | ||||||
|  |                     //1. box信息录入到box表 | ||||||
|  |                     boxServiceBiz.updateIsArrivedByBoxNo(1,boxId); | ||||||
|  |                     logger.info("装箱单打印Event------boxId :"+boxId+"更新数据库成功"); | ||||||
|  |                     //===============           MES 业务 结束         ================= | ||||||
|  |  | ||||||
|  |  | ||||||
|  |                     //四. 当MES完成任务后,把MesToPlc.ShelfIsFullArrivedFinish变量置为true,告诉plc,我操作完成了 | ||||||
|  |                     write(S7Client.S7_DDJ1,Step3Mes2PlcVar.ShelfIsFullArrivedFinish,true); | ||||||
|  |                     logger.info("装箱单打印Event------boxId :"+boxId+", ShelfIsFullArrivedFinish置为true 成功"); | ||||||
|  |                     //四. mes 监控 到PlcToMes.SubArrived==false,就把MesToPlc.SubArrivedFinish置为false | ||||||
|  |                     Integer subArrived2 = waitingForTarget(Step3Plc2MesVar.ShelfIsFullArrived, false); | ||||||
|  |                     if(subArrived2 != 1){ | ||||||
|  |                         logger.info("装箱单打印Event------失败"+" --- "+"步骤1.  MES监听 Step3Plc2MesVar.ShelfIsFullArrived 是否 等于 1 失败"); | ||||||
|  |                     }else if(subArrived2 == 2){ | ||||||
|  |                         throw new Exception("MES 监听值出现异常。"); | ||||||
|  |                     } | ||||||
|  |                     logger.info("装箱单打印Event------boxId :"+boxId+", 监听到subArrived=false 成功"); | ||||||
|  |                     write(S7Client.S7_DDJ1,Step3Mes2PlcVar.ShelfIsFullArrivedFinish,false); | ||||||
|  |                     logger.info("装箱单打印Event------boxId :"+boxId+", Even3 成功"); | ||||||
|  |  | ||||||
|  |                     logger.info("==================================  现在开始执行 过程三 任务( 结束 )   ==================================="); | ||||||
|  |                     logger.info(""); | ||||||
|  |                 }catch (Throwable e){ | ||||||
|  | //                    e.printStackTrace(); | ||||||
|  | //                    logger.info("装箱单打印Event 出现异常------"+e.toString()); | ||||||
|  |                     logger.info("装箱单打印Event--- 出现异常 : {}",e.getMessage(),e); | ||||||
|  |                 } | ||||||
|  |  | ||||||
|  |             } | ||||||
|  |         },1,1, TimeUnit.SECONDS); | ||||||
|  |  | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * | ||||||
|  |      * arg: | ||||||
|  |      *      Step1Plc2MesVar 参数类型 | ||||||
|  |      *      targetValue        目的值 | ||||||
|  |      * return: | ||||||
|  |      *      2 s7 访问异常; | ||||||
|  |      *      1 成功; | ||||||
|  |      * */ | ||||||
|  |     private Integer waitingForTarget(Step1Plc2MesVar var, Boolean targetValue) { | ||||||
|  |         Integer res = 0; | ||||||
|  |         while (true){ | ||||||
|  |             try { | ||||||
|  |  | ||||||
|  |                 Boolean now = (Boolean) read(S7Client.S7_DDJ1,var); | ||||||
|  |                 //注意:即使now为null ,这里也不会抛出异常,这里很容易产生 空轮询。 | ||||||
|  |                 if(now == null){ | ||||||
|  |                     throw new Exception(""); | ||||||
|  |                 } | ||||||
|  |                 if(targetValue.equals(now)){ | ||||||
|  |                     res = 1; | ||||||
|  |                     break; | ||||||
|  |                 } | ||||||
|  |                 Thread.sleep(200); | ||||||
|  |             }catch (Throwable e){ | ||||||
|  |                 logger.info("S7 数据采集 异常. 监听 变量 :"+var.getName()+" 为目标值:"+targetValue+"失败"); | ||||||
|  |                 res = 2; | ||||||
|  |                 break; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         return res; | ||||||
|  |     } | ||||||
|  |     /** | ||||||
|  |      * | ||||||
|  |      * arg: | ||||||
|  |      *      Step2Plc2MesVar 参数类型 | ||||||
|  |      *      targetValue        目的值 | ||||||
|  |      * return: | ||||||
|  |      *      2 s7 访问异常; | ||||||
|  |      *      1 成功; | ||||||
|  |      * */ | ||||||
|  |     private Integer waitingForTarget(Step2Plc2MesVar var, Boolean targetValue) { | ||||||
|  |         Integer res = 0; | ||||||
|  |         while (true){ | ||||||
|  |             try { | ||||||
|  |                 Boolean now = (Boolean) read(S7Client.S7_DDJ1,var); | ||||||
|  |                 if(now == null){ | ||||||
|  |                     throw new Exception(""); | ||||||
|  |                 } | ||||||
|  |                 if(targetValue.equals(now)){ | ||||||
|  |                     res = 1; | ||||||
|  |                     break; | ||||||
|  |                 } | ||||||
|  |                 Thread.sleep(200); | ||||||
|  |             }catch (Throwable e){ | ||||||
|  |                 logger.info("S7 数据采集 异常. 监听 变量 :"+var.getName()+" 为目标值:"+targetValue+"失败"); | ||||||
|  |                 res = 2; | ||||||
|  |                 break; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         return res; | ||||||
|  |     } | ||||||
|  |     /** | ||||||
|  |      * | ||||||
|  |      * arg: | ||||||
|  |      *      Step3Plc2MesVar 参数类型 | ||||||
|  |      *      targetValue        目的值 | ||||||
|  |      * return: | ||||||
|  |      *      2 s7 访问异常; | ||||||
|  |      *      1 成功; | ||||||
|  |      * */ | ||||||
|  |     private Integer waitingForTarget(Step3Plc2MesVar var, Boolean targetValue) { | ||||||
|  |         Integer res = 0; | ||||||
|  |         while (true){ | ||||||
|  |             try { | ||||||
|  |                 Boolean now = (Boolean) read(S7Client.S7_DDJ1,var); | ||||||
|  |                 if(now == null){ | ||||||
|  |                     throw new Exception(""); | ||||||
|  |                 } | ||||||
|  |                 if(targetValue.equals(now)){ | ||||||
|  |                     res = 1; | ||||||
|  |                     break; | ||||||
|  |                 } | ||||||
|  |                 Thread.sleep(200); | ||||||
|  |             }catch (Throwable e){ | ||||||
|  |                 logger.info("S7 数据采集 异常. 监听 变量 :"+var.getName()+" 为目标值:"+targetValue+"失败"); | ||||||
|  |                 res = 2; | ||||||
|  |                 break; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         return res; | ||||||
|  |     } | ||||||
|  | } | ||||||
| @@ -0,0 +1,306 @@ | |||||||
|  | package com.cnbm.dispatch.line1; | ||||||
|  |  | ||||||
|  | import cn.hutool.core.date.DateUtil; | ||||||
|  | import com.cnbm.dispatch.enums.kuka.step2.Step2Mes2PlcVar; | ||||||
|  | import com.cnbm.dispatch.enums.kuka.step2.Step2Plc2MesVar; | ||||||
|  | import com.cnbm.dispatch.enums.kuka.step3.Step3Mes2PlcVar; | ||||||
|  | import com.cnbm.dispatch.enums.kuka.step3.Step3Plc2MesVar; | ||||||
|  | import com.cnbm.dispatch.enums.kuka.step4.Step4Mes2PlcVar; | ||||||
|  | import com.cnbm.dispatch.enums.kuka.step4.Step4Plc2MesVar; | ||||||
|  | import com.cnbm.packing.entity.WoPowerLevel; | ||||||
|  | import com.cnbm.packing.service.*; | ||||||
|  | import com.cnbm.s7.s7connector.enmuc.S7Client; | ||||||
|  | import com.cnbm.s7.s7connector.type.PlcVar; | ||||||
|  | import org.slf4j.Logger; | ||||||
|  | import org.slf4j.LoggerFactory; | ||||||
|  | import org.springframework.beans.factory.annotation.Autowired; | ||||||
|  | import org.springframework.boot.ApplicationArguments; | ||||||
|  | import org.springframework.boot.ApplicationRunner; | ||||||
|  | import org.springframework.core.annotation.Order; | ||||||
|  | import org.springframework.stereotype.Component; | ||||||
|  |  | ||||||
|  | import java.text.DecimalFormat; | ||||||
|  | import java.text.Format; | ||||||
|  | import java.util.Date; | ||||||
|  | import java.util.concurrent.Executors; | ||||||
|  | import java.util.concurrent.ScheduledExecutorService; | ||||||
|  | import java.util.concurrent.TimeUnit; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * @Desc: "" | ||||||
|  |  * @Author: caixiang | ||||||
|  |  * @DATE: 2022/12/23 12:33 | ||||||
|  |  */ | ||||||
|  | @Component | ||||||
|  | @Order(value = 1) | ||||||
|  | public class KukaEvent4ThreadLine1 implements ApplicationRunner { | ||||||
|  |     private static final Logger logger = LoggerFactory.getLogger("EVENT4NGLine1"); | ||||||
|  |  | ||||||
|  |     @Autowired | ||||||
|  |     DynamicDataSourceService service; | ||||||
|  |     @Autowired | ||||||
|  |     WoPowerLevelServiceBiz levelServiceBiz; | ||||||
|  |  | ||||||
|  |     @Autowired | ||||||
|  |     WoCompensationPowerServiceBiz compensationPowerServiceBiz; | ||||||
|  |  | ||||||
|  |     @Autowired | ||||||
|  |     WoPackagingBoxSubstrateServiceBiz substrateServiceBiz; | ||||||
|  |  | ||||||
|  |     @Autowired | ||||||
|  |     WoPackagingBoxServiceBiz boxServiceBiz; | ||||||
|  |  | ||||||
|  |     public KukaEvent4ThreadLine1(){ | ||||||
|  |         this.kukaStep1 = Executors.newScheduledThreadPool(1); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     private ScheduledExecutorService kukaStep1; | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * return | ||||||
|  |      *          成功: 返回相应的object对象 | ||||||
|  |      *          失败: 返回null | ||||||
|  |      * */ | ||||||
|  |     private Object read(S7Client s7Client, Step4Plc2MesVar var) { | ||||||
|  |         try { | ||||||
|  |             return s7Client.read(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getLength(), var.getStrSize(), var.getType()); | ||||||
|  |         }catch (Throwable e){ | ||||||
|  |             logger.info("host:"+s7Client.getHost()+" ; read 操作出现问题: {}",e.getMessage(),e); | ||||||
|  |             return null; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     private void write(S7Client s7Client, Step4Mes2PlcVar var, Object newValue) { | ||||||
|  |         if(var.getType().equals(PlcVar.STRING_Array)){ | ||||||
|  |             String[] s = (String[])newValue; | ||||||
|  |             String[] ss = (String[])newValue; | ||||||
|  |             if(s.length > var.getLength() ){ | ||||||
|  |                 ss = new String[var.getLength()]; | ||||||
|  |                 for(int i=0;i< var.getLength();i++){ | ||||||
|  |                     ss[i] = s[i]; | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             s7Client.write(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getStrSize(), var.getType(),ss); | ||||||
|  |         }else { | ||||||
|  |             s7Client.write(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getStrSize(), var.getType(),newValue); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     private Object read(S7Client s7Client, Step2Plc2MesVar var) { | ||||||
|  |         try { | ||||||
|  |             return s7Client.read(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getLength(), var.getStrSize(), var.getType()); | ||||||
|  |         }catch (Throwable e){ | ||||||
|  |             logger.info("host:"+s7Client.getHost()+" ; read 操作出现问题: {}",e.getMessage(),e); | ||||||
|  |             return null; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     private void write(S7Client s7Client, Step2Mes2PlcVar var, Object newValue) { | ||||||
|  |         if(var.getType().equals(PlcVar.STRING_Array)){ | ||||||
|  |             String[] s = (String[])newValue; | ||||||
|  |             String[] ss = (String[])newValue; | ||||||
|  |             if(s.length > var.getLength() ){ | ||||||
|  |                 ss = new String[var.getLength()]; | ||||||
|  |                 for(int i=0;i< var.getLength();i++){ | ||||||
|  |                     ss[i] = s[i]; | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             s7Client.write(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getStrSize(), var.getType(),ss); | ||||||
|  |         }else { | ||||||
|  |             s7Client.write(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getStrSize(), var.getType(),newValue); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     private Object read(S7Client s7Client, Step3Plc2MesVar var) { | ||||||
|  |         try { | ||||||
|  |             return s7Client.read(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getLength(), var.getStrSize(), var.getType()); | ||||||
|  |         }catch (Throwable e){ | ||||||
|  |             logger.info("host:"+s7Client.getHost()+" ; read 操作出现问题: {}",e.getMessage(),e); | ||||||
|  |             return null; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     private void write(S7Client s7Client, Step3Mes2PlcVar var, Object newValue) { | ||||||
|  |         if(var.getType().equals(PlcVar.STRING_Array)){ | ||||||
|  |             String[] s = (String[])newValue; | ||||||
|  |             String[] ss = (String[])newValue; | ||||||
|  |             if(s.length > var.getLength() ){ | ||||||
|  |                 ss = new String[var.getLength()]; | ||||||
|  |                 for(int i=0;i< var.getLength();i++){ | ||||||
|  |                     ss[i] = s[i]; | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             s7Client.write(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getStrSize(), var.getType(),ss); | ||||||
|  |         }else { | ||||||
|  |             s7Client.write(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getStrSize(), var.getType(),newValue); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     public String getBoxId(String sapMaterial){ | ||||||
|  |         Integer todayBoxNum = service.getTodayBoxNum()+1; | ||||||
|  |         String nowTime = DateUtil.format(new Date(), "yyMMdd"); | ||||||
|  |  | ||||||
|  |         todayBoxNum+=500; | ||||||
|  |         logger.info("BOXID生成Event-------现在生成boxId ,sapMaterial: "+sapMaterial+",nowTime:"+nowTime+",todayBoxNum:"+formateString(todayBoxNum)); | ||||||
|  |         String res = "301"+sapMaterial+nowTime+formateString(todayBoxNum); | ||||||
|  |         return res; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     public String getErrorBoxId(String sapMaterial){ | ||||||
|  |  | ||||||
|  |         String nowTime = DateUtil.format(new Date(), "yyMMdd"); | ||||||
|  |         String mixBoxError = "001"; | ||||||
|  |         String res = "444"+sapMaterial+nowTime+mixBoxError; | ||||||
|  |         logger.info("BOXID生成Event-------现在生成errBoxId ,sapMaterial: "+sapMaterial+",nowTime:"+nowTime); | ||||||
|  |  | ||||||
|  |         return res; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public String removeKG(String str){ | ||||||
|  |         return str.substring(0,17); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public static void main(String[] args) { | ||||||
|  |         Integer a = 102; | ||||||
|  |         Format f1 = new DecimalFormat("000"); | ||||||
|  |         System.out.println(f1.format(a)); | ||||||
|  |     } | ||||||
|  |     public String formateString(Integer a){ | ||||||
|  |         Format f1 = new DecimalFormat("000"); | ||||||
|  |         return f1.format(a); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     //return true 出现混档了,return false 没有出现混档 | ||||||
|  |     private boolean isMixLevel(String[] subIds,Integer size){ | ||||||
|  |         String correctLevel = substrateServiceBiz.getBySubId(subIds[0]).getPowerLevel(); | ||||||
|  |         String errMsg = "以下基板ID出现混档:"; | ||||||
|  |         boolean res = false; | ||||||
|  |         for(int i=0;i<size;i++){ | ||||||
|  |             String powerLevel = substrateServiceBiz.getBySubId(subIds[i]).getPowerLevel(); | ||||||
|  |  | ||||||
|  |             if(!powerLevel.equals(correctLevel)){ | ||||||
|  |                 errMsg += "基板ID:"+subIds[i]+" 档位:"+powerLevel+", "; | ||||||
|  |                 res = true; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         if(res){ | ||||||
|  |             logger.error(errMsg); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         return res; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public void run(ApplicationArguments args) throws Exception { | ||||||
|  |  | ||||||
|  |         kukaStep1.scheduleAtFixedRate(new Runnable() { | ||||||
|  |             @Override | ||||||
|  |             public void run() { | ||||||
|  |                 try { | ||||||
|  |  | ||||||
|  |                     //调度开始 | ||||||
|  |                     Integer subArrived = waitingForTarget(Step4Plc2MesVar.SubArrivedToMes, true); | ||||||
|  |                     logger.info(""); | ||||||
|  |                     logger.info("==================================  现在开始执行 过程四 任务( 开始 )   ==================================="); | ||||||
|  |                     if(subArrived != 1){ | ||||||
|  |                         logger.info("NG口基板Event---  失败"+" --- "+" MES监听 Step4Plc2MesVar.SubArrivedToMes 是否 等于 true 失败"); | ||||||
|  |                     } else if (subArrived == 2) { | ||||||
|  |                         throw new Exception("MES 监听值出现异常。"); | ||||||
|  |                     } | ||||||
|  |                     logger.info("NG口基板Event --- 成功 ---- MES监听到 Step4Plc2MesVar.SubArrivedToMes==true"); | ||||||
|  |  | ||||||
|  |                     //一. 从plc 中获取 subId | ||||||
|  |                     String subId = (String) read(S7Client.S7_DDJ1,Step4Plc2MesVar.SubIdToMes); | ||||||
|  |                     Integer lineNum = 1; | ||||||
|  |                     //把基板ID字符串的空格去掉,因为plc中设置的20位,但实际基板ID就是17位,因为带空格去数据库查询 有问题的。 | ||||||
|  |                     if(subId == null ){ | ||||||
|  |                         logger.info("NG口基板Event---  失败"+" --- "+" MES采集到null值,subId:"+subId); | ||||||
|  |                     } | ||||||
|  |                     subId = removeKG(subId); | ||||||
|  |                     logger.info("NG口基板Event --- 成功 ---- MES 从plu中 read 到基板id:"+subId); | ||||||
|  |  | ||||||
|  |                     //二. MES 业务 | ||||||
|  |                     //===============           MES 业务 开始         ================= | ||||||
|  |                     logger.info("=================  现在开始执行 过程四 任务 ( MES 业务 ) ( 开始 )   =================="); | ||||||
|  |                     //1. 从comline数据库中获取 实际pmpp | ||||||
|  |                     float pmppActual = service.getPMPPBySubId(subId); | ||||||
|  |                     //2. 匹配和计算补偿功率 | ||||||
|  |                     float pmppCompensation = compensationPowerServiceBiz.calculCompensationPMPP(pmppActual,lineNum); | ||||||
|  |                     //3. 依据补偿功率,获取工艺参数,并且把这些工艺参数传给kuka | ||||||
|  |                     WoPowerLevel argByPMPP = levelServiceBiz.getArgByPMPP(pmppCompensation, lineNum); | ||||||
|  |                     write(S7Client.S7_DDJ1,Step4Mes2PlcVar.dLable_Pnom,Integer.valueOf(argByPMPP.getPowerClass())); | ||||||
|  |                     write(S7Client.S7_DDJ1,Step4Mes2PlcVar.dLable_Voc,argByPMPP.getLableVoc()); | ||||||
|  |                     write(S7Client.S7_DDJ1,Step4Mes2PlcVar.dLable_Isc,argByPMPP.getLableIsc()); | ||||||
|  |                     write(S7Client.S7_DDJ1,Step4Mes2PlcVar.dLable_Vmpp,argByPMPP.getLableVmpp()); | ||||||
|  |                     write(S7Client.S7_DDJ1,Step4Mes2PlcVar.dLable_Impp,argByPMPP.getLableImpp()); | ||||||
|  |                     logger.info("NG口基板Event--- 采集到 基板ID: "+subId+", 线边号:"+lineNum+",从camline 获取到实际pmpp"+pmppActual+",计算后 补偿功率:"+pmppCompensation+",dLable_Pnom: "+argByPMPP.getPowerClass() +",dLable_Voc: "+argByPMPP.getLableVoc()+",dLable_Isc: "+argByPMPP.getLableIsc()+",dLable_Vmpp: "+argByPMPP.getLableVmpp()+",dLable_Impp: "+argByPMPP.getLableImpp()); | ||||||
|  |  | ||||||
|  |                     logger.info("=================  现在开始执行 过程四 任务 ( MES 业务 - 数据已经传给PLC ) ( 结束 )   =================="); | ||||||
|  |                     //===============           MES 业务 结束         ================= | ||||||
|  |  | ||||||
|  |                     //三. 当MES完成任务后,把MesToPlc.SubArrivedFinish变量置为true,告诉plc,我操作完成了 | ||||||
|  |                     write(S7Client.S7_DDJ1,Step4Mes2PlcVar.SubArrivedFinish,true); | ||||||
|  |                     logger.info("NG口基板Event--- 基板ID: "+subId+", SubArrivedFinish,置为true 成功"); | ||||||
|  |                     //四. mes 监控 到PlcToMes.SubArrived==false,就把MesToPlc.SubArrivedFinish置为false | ||||||
|  |                     Integer subArrived2 = waitingForTarget(Step4Plc2MesVar.SubArrivedToMes, false); | ||||||
|  |                     if(subArrived2 != 1){ | ||||||
|  |                         logger.info("NG口基板Event--- 失败"+" --- "+"MES监听 Step4Plc2MesVar.SubArrivedToMes 是否 等于 1 失败"); | ||||||
|  |                     }else if (subArrived2 == 2) { | ||||||
|  |                         throw new Exception("MES 监听值出现异常。"); | ||||||
|  |                     } | ||||||
|  |  | ||||||
|  |                     write(S7Client.S7_DDJ1,Step4Mes2PlcVar.SubArrivedFinish,false); | ||||||
|  |                     logger.info("NG口基板Event--- 基板ID: "+subId+", SubArrivedFinish,置为 false 成功"); | ||||||
|  |                     logger.info("==================================  现在开始执行 过程四 任务( 结束 )   ==================================="); | ||||||
|  |                     logger.info(""); | ||||||
|  |                 }catch (Throwable e){ | ||||||
|  |                     logger.info("NG口基板Event--- 出现异常 : {}",e.getMessage(),e); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         },1,1, TimeUnit.SECONDS); | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * | ||||||
|  |      * arg: | ||||||
|  |      *      Step4Plc2MesVar 参数类型 | ||||||
|  |      *      targetValue        目的值 | ||||||
|  |      * return: | ||||||
|  |      *      2 s7 访问异常; | ||||||
|  |      *      1 成功; | ||||||
|  |      * */ | ||||||
|  |     private Integer waitingForTarget(Step4Plc2MesVar var, Boolean targetValue) { | ||||||
|  |         Integer res = 0; | ||||||
|  |         while (true){ | ||||||
|  |             try { | ||||||
|  |  | ||||||
|  |                 Boolean now = (Boolean) read(S7Client.S7_DDJ1,var); | ||||||
|  |                 //注意:即使now为null ,这里也不会抛出异常,这里很容易产生 空轮询。 | ||||||
|  |                 if(now == null){ | ||||||
|  |                     throw new Exception(""); | ||||||
|  |                 } | ||||||
|  |                 if(targetValue.equals(now)){ | ||||||
|  |                     res = 1; | ||||||
|  |                     break; | ||||||
|  |                 } | ||||||
|  |                 Thread.sleep(200); | ||||||
|  |             }catch (Throwable e){ | ||||||
|  |                 logger.info("S7 数据采集 异常. 监听 变量 :"+var.getName()+" 为目标值:"+targetValue+"失败"); | ||||||
|  |                 res = 2; | ||||||
|  |                 break; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         return res; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } | ||||||
| @@ -0,0 +1,418 @@ | |||||||
|  | package com.cnbm.dispatch.line2; | ||||||
|  |  | ||||||
|  | import cn.hutool.core.date.DateUtil; | ||||||
|  | import com.cnbm.dispatch.enums.kuka.step1.Step1Mes2PlcVar; | ||||||
|  | import com.cnbm.dispatch.enums.kuka.step1.Step1Plc2MesVar; | ||||||
|  | import com.cnbm.dispatch.enums.kuka.step2.Step2Mes2PlcVar; | ||||||
|  | import com.cnbm.dispatch.enums.kuka.step2.Step2Plc2MesVar; | ||||||
|  | import com.cnbm.dispatch.enums.kuka.step3.Step3Mes2PlcVar; | ||||||
|  | import com.cnbm.dispatch.enums.kuka.step3.Step3Plc2MesVar; | ||||||
|  | import com.cnbm.packing.dto.CamlineExtendArgDTO; | ||||||
|  | import com.cnbm.packing.entity.WoPackagingBoxSubstrate; | ||||||
|  | import com.cnbm.packing.entity.WoPowerLevel; | ||||||
|  | import com.cnbm.packing.service.*; | ||||||
|  | import com.cnbm.s7.s7connector.enmuc.S7Client; | ||||||
|  | import com.cnbm.s7.s7connector.type.PlcVar; | ||||||
|  | import org.slf4j.Logger; | ||||||
|  | import org.slf4j.LoggerFactory; | ||||||
|  | import org.springframework.beans.factory.annotation.Autowired; | ||||||
|  | import org.springframework.boot.ApplicationArguments; | ||||||
|  | import org.springframework.boot.ApplicationRunner; | ||||||
|  | import org.springframework.core.annotation.Order; | ||||||
|  | import org.springframework.stereotype.Component; | ||||||
|  |  | ||||||
|  | import java.text.DecimalFormat; | ||||||
|  | import java.text.Format; | ||||||
|  | import java.time.LocalDateTime; | ||||||
|  | import java.util.Date; | ||||||
|  | import java.util.concurrent.Executors; | ||||||
|  | import java.util.concurrent.ScheduledExecutorService; | ||||||
|  | import java.util.concurrent.TimeUnit; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * @Desc: "" | ||||||
|  |  * @Author: caixiang | ||||||
|  |  * @DATE: 2022/12/23 12:33 | ||||||
|  |  */ | ||||||
|  | @Component | ||||||
|  | @Order(value = 1) | ||||||
|  | public class KukaEvent1ThreadLine2 implements ApplicationRunner { | ||||||
|  |     private static final Logger logger = LoggerFactory.getLogger("EVENT1Line2"); | ||||||
|  |  | ||||||
|  |     @Autowired | ||||||
|  |     DynamicDataSourceService service; | ||||||
|  |     @Autowired | ||||||
|  |     WoPowerLevelServiceBiz levelServiceBiz; | ||||||
|  |  | ||||||
|  |     @Autowired | ||||||
|  |     WoCompensationPowerServiceBiz compensationPowerServiceBiz; | ||||||
|  |  | ||||||
|  |     @Autowired | ||||||
|  |     WoPackagingBoxSubstrateServiceBiz substrateServiceBiz; | ||||||
|  |  | ||||||
|  |     @Autowired | ||||||
|  |     WoPackagingBoxServiceBiz boxServiceBiz; | ||||||
|  |  | ||||||
|  |     public KukaEvent1ThreadLine2(){ | ||||||
|  |         this.kukaStep1 = Executors.newScheduledThreadPool(1); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     private ScheduledExecutorService kukaStep1; | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * return | ||||||
|  |      *          成功: 返回相应的object对象 | ||||||
|  |      *          失败: 返回null | ||||||
|  |      * */ | ||||||
|  |     private Object read(S7Client s7Client,Step1Plc2MesVar var) { | ||||||
|  |         try { | ||||||
|  |             return s7Client.read(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getLength(), var.getStrSize(), var.getType()); | ||||||
|  |         }catch (Throwable e){ | ||||||
|  |             logger.info("host:"+s7Client.getHost()+" ; read 操作出现问题: {}",e.getMessage(),e); | ||||||
|  |             return null; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     private void write(S7Client s7Client, Step1Mes2PlcVar var, Object newValue) { | ||||||
|  |         if(var.getType().equals(PlcVar.STRING_Array)){ | ||||||
|  |             String[] s = (String[])newValue; | ||||||
|  |             String[] ss = (String[])newValue; | ||||||
|  |             if(s.length > var.getLength() ){ | ||||||
|  |                 ss = new String[var.getLength()]; | ||||||
|  |                 for(int i=0;i< var.getLength();i++){ | ||||||
|  |                     ss[i] = s[i]; | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             s7Client.write(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getStrSize(), var.getType(),ss); | ||||||
|  |         }else { | ||||||
|  |             s7Client.write(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getStrSize(), var.getType(),newValue); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     private Object read(S7Client s7Client, Step2Plc2MesVar var) { | ||||||
|  |         try { | ||||||
|  |             return s7Client.read(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getLength(), var.getStrSize(), var.getType()); | ||||||
|  |         }catch (Throwable e){ | ||||||
|  |             logger.info("host:"+s7Client.getHost()+" ; read 操作出现问题: {}",e.getMessage(),e); | ||||||
|  |             return null; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     private void write(S7Client s7Client, Step2Mes2PlcVar var, Object newValue) { | ||||||
|  |         if(var.getType().equals(PlcVar.STRING_Array)){ | ||||||
|  |             String[] s = (String[])newValue; | ||||||
|  |             String[] ss = (String[])newValue; | ||||||
|  |             if(s.length > var.getLength() ){ | ||||||
|  |                 ss = new String[var.getLength()]; | ||||||
|  |                 for(int i=0;i< var.getLength();i++){ | ||||||
|  |                     ss[i] = s[i]; | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             s7Client.write(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getStrSize(), var.getType(),ss); | ||||||
|  |         }else { | ||||||
|  |             s7Client.write(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getStrSize(), var.getType(),newValue); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     private Object read(S7Client s7Client, Step3Plc2MesVar var) { | ||||||
|  |         try { | ||||||
|  |             return s7Client.read(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getLength(), var.getStrSize(), var.getType()); | ||||||
|  |         }catch (Throwable e){ | ||||||
|  |             logger.info("host:"+s7Client.getHost()+" ; read 操作出现问题: {}",e.getMessage(),e); | ||||||
|  |             return null; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     private void write(S7Client s7Client, Step3Mes2PlcVar var, Object newValue) { | ||||||
|  |         if(var.getType().equals(PlcVar.STRING_Array)){ | ||||||
|  |             String[] s = (String[])newValue; | ||||||
|  |             String[] ss = (String[])newValue; | ||||||
|  |             if(s.length > var.getLength() ){ | ||||||
|  |                 ss = new String[var.getLength()]; | ||||||
|  |                 for(int i=0;i< var.getLength();i++){ | ||||||
|  |                     ss[i] = s[i]; | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             s7Client.write(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getStrSize(), var.getType(),ss); | ||||||
|  |         }else { | ||||||
|  |             s7Client.write(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getStrSize(), var.getType(),newValue); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     public String getBoxId(String sapMaterial){ | ||||||
|  |         Integer todayBoxNum = service.getTodayBoxNum()+1; | ||||||
|  |         String nowTime = DateUtil.format(new Date(), "yyMMdd"); | ||||||
|  |  | ||||||
|  |         todayBoxNum+=500; | ||||||
|  |         logger.info("BOXID生成Event-------现在生成boxId ,sapMaterial: "+sapMaterial+",nowTime:"+nowTime+",todayBoxNum:"+formateString(todayBoxNum)); | ||||||
|  |         String res = "301"+sapMaterial+nowTime+formateString(todayBoxNum); | ||||||
|  |         return res; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     public String getErrorBoxId(String sapMaterial){ | ||||||
|  |  | ||||||
|  |         String nowTime = DateUtil.format(new Date(), "yyMMdd"); | ||||||
|  |         String mixBoxError = "001"; | ||||||
|  |         String res = "444"+sapMaterial+nowTime+mixBoxError; | ||||||
|  |         logger.info("BOXID生成Event-------现在生成errBoxId ,sapMaterial: "+sapMaterial+",nowTime:"+nowTime); | ||||||
|  |  | ||||||
|  |         return res; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public String removeKG(String str){ | ||||||
|  |         return str.substring(0,17); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public static void main(String[] args) { | ||||||
|  |         Integer a = 102; | ||||||
|  |         Format f1 = new DecimalFormat("000"); | ||||||
|  |         System.out.println(f1.format(a)); | ||||||
|  |     } | ||||||
|  |     public String formateString(Integer a){ | ||||||
|  |         Format f1 = new DecimalFormat("000"); | ||||||
|  |         return f1.format(a); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     //return true 出现混档了,return false 没有出现混档 | ||||||
|  |     private boolean isMixLevel(String[] subIds,Integer size){ | ||||||
|  |         String correctLevel = substrateServiceBiz.getBySubId(subIds[0]).getPowerLevel(); | ||||||
|  |         String errMsg = "以下基板ID出现混档:"; | ||||||
|  |         boolean res = false; | ||||||
|  |         for(int i=0;i<size;i++){ | ||||||
|  |             String powerLevel = substrateServiceBiz.getBySubId(subIds[i]).getPowerLevel(); | ||||||
|  |  | ||||||
|  |             if(!powerLevel.equals(correctLevel)){ | ||||||
|  |                 errMsg += "基板ID:"+subIds[i]+" 档位:"+powerLevel+", "; | ||||||
|  |                 res = true; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         if(res){ | ||||||
|  |             logger.error(errMsg); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         return res; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public void run(ApplicationArguments args) throws Exception { | ||||||
|  |  | ||||||
|  |         kukaStep1.scheduleAtFixedRate(new Runnable() { | ||||||
|  |             @Override | ||||||
|  |             public void run() { | ||||||
|  |                 try { | ||||||
|  |  | ||||||
|  |                     //调度开始 | ||||||
|  |                     Integer subArrived = waitingForTarget(Step1Plc2MesVar.SubArrivedToMes, true); | ||||||
|  |                     logger.info(""); | ||||||
|  |                     logger.info("==================================  现在开始执行 过程一 任务( 开始 )   ==================================="); | ||||||
|  |                     if(subArrived != 1){ | ||||||
|  |                         logger.info("标签打印Event---  失败"+" --- "+" MES监听 Step1Plc2MesVar.SubArrivedToMes 是否 等于 1 失败"); | ||||||
|  |                     } else if (subArrived == 2) { | ||||||
|  |                         throw new Exception("MES 监听值出现异常。"); | ||||||
|  |                     } | ||||||
|  |                     logger.info("标签打印Event --- 成功 ---- MES监听到 SubArrivedToMes==true"); | ||||||
|  |  | ||||||
|  |                     //一. 从plc 中获取 subId 和 lineNum | ||||||
|  |                     String subId = (String) read(S7Client.S7_DDJ2,Step1Plc2MesVar.SubIdToMes); | ||||||
|  |                     Integer lineNum = (Integer) read(S7Client.S7_DDJ2,Step1Plc2MesVar.LineNum); | ||||||
|  |                     //把基板ID字符串的空格去掉,因为plc中设置的20位,但实际基板ID就是17位,因为带空格去数据库查询 有问题的。 | ||||||
|  |                     if(subId == null || lineNum == null){ | ||||||
|  |                         logger.info("标签打印Event---  失败"+" --- "+" MES采集到null值,subId:"+subId+",lineNum:"+lineNum); | ||||||
|  |                     } | ||||||
|  |                     subId = removeKG(subId); | ||||||
|  |                     logger.info("标签打印Event --- 成功 ---- MES 从plu中 read 到基板id:"+subId); | ||||||
|  |  | ||||||
|  |                     //二. MES 业务 | ||||||
|  |                     //===============           MES 业务 开始         ================= | ||||||
|  |                     logger.info("=================  现在开始执行 过程一 任务 ( MES 业务 ) ( 开始 )   =================="); | ||||||
|  |                     //1. 从comline数据库中获取 实际pmpp | ||||||
|  |                     float pmppActual = service.getPMPPBySubId(subId); | ||||||
|  |                     //2. 匹配和计算补偿功率 | ||||||
|  |                     float pmppCompensation = compensationPowerServiceBiz.calculCompensationPMPP(pmppActual,lineNum); | ||||||
|  |                     //3. 依据补偿功率,获取工艺参数,并且把这些工艺参数传给kuka | ||||||
|  |                     WoPowerLevel argByPMPP = levelServiceBiz.getArgByPMPP(pmppCompensation, lineNum); | ||||||
|  |                     write(S7Client.S7_DDJ2,Step1Mes2PlcVar.dLable_Pnom,Integer.valueOf(argByPMPP.getPowerClass())); | ||||||
|  |                     write(S7Client.S7_DDJ2,Step1Mes2PlcVar.dLable_Voc,argByPMPP.getLableVoc()); | ||||||
|  |                     write(S7Client.S7_DDJ2,Step1Mes2PlcVar.dLable_Isc,argByPMPP.getLableIsc()); | ||||||
|  |                     write(S7Client.S7_DDJ2,Step1Mes2PlcVar.dLable_Vmpp,argByPMPP.getLableVmpp()); | ||||||
|  |                     write(S7Client.S7_DDJ2,Step1Mes2PlcVar.dLable_Impp,argByPMPP.getLableImpp()); | ||||||
|  |                     logger.info("标签打印Event--- 采集到 基板ID: "+subId+", 线边号:"+lineNum+",从camline 获取到实际pmpp"+pmppActual+",计算后 补偿功率:"+pmppCompensation+",dLable_Pnom: "+argByPMPP.getPowerClass() +",dLable_Voc: "+argByPMPP.getLableVoc()+",dLable_Isc: "+argByPMPP.getLableIsc()+",dLable_Vmpp: "+argByPMPP.getLableVmpp()+",dLable_Impp: "+argByPMPP.getLableImpp()); | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |                     //4. 把基板录到数据库 | ||||||
|  |                     WoPackagingBoxSubstrate woPackagingBoxSubstrate = new WoPackagingBoxSubstrate(); | ||||||
|  |                     woPackagingBoxSubstrate.setLineBody(lineNum); | ||||||
|  |                     woPackagingBoxSubstrate.setPowerLevel(argByPMPP.getPowerClass()); | ||||||
|  |                     woPackagingBoxSubstrate.setSapMaterial(argByPMPP.getSapMaterialNum()); | ||||||
|  |                     woPackagingBoxSubstrate.setWoSubstrateId(subId); | ||||||
|  |                     woPackagingBoxSubstrate.setActualPmpp(pmppActual); | ||||||
|  |                     woPackagingBoxSubstrate.setCreateTime(LocalDateTime.now()); | ||||||
|  |                     //计算后的补偿功率 | ||||||
|  |                     woPackagingBoxSubstrate.setPmpp(pmppCompensation); | ||||||
|  |  | ||||||
|  |  | ||||||
|  |                     //5. 从camline那里获取可变字段 | ||||||
|  |                     CamlineExtendArgDTO extendArgFromCamline = service.getExtendArgFromCamline(subId); | ||||||
|  |                     logger.info("标签打印Event--- 基板ID: "+subId+", 从camline获取PID16~PID22 的实测数据 成功, 数据内容:"+extendArgFromCamline.toString()); | ||||||
|  |                     woPackagingBoxSubstrate.setLastUpdateTime(extendArgFromCamline.getLastUpdateTime()); | ||||||
|  |  | ||||||
|  |                     woPackagingBoxSubstrate.setOrderName(extendArgFromCamline.getOrderName()); | ||||||
|  |                     woPackagingBoxSubstrate.setBinclassFl1(extendArgFromCamline.getBinclassFl1()); | ||||||
|  |                     woPackagingBoxSubstrate.setBinclassFl2(extendArgFromCamline.getBinclassFl2()); | ||||||
|  |                     woPackagingBoxSubstrate.setEtaFl1(extendArgFromCamline.getEtaFl1()); | ||||||
|  |                     woPackagingBoxSubstrate.setEtaFl2(extendArgFromCamline.getEtaFl2()); | ||||||
|  |                     woPackagingBoxSubstrate.setFfFl1(extendArgFromCamline.getFfFl1()); | ||||||
|  |                     woPackagingBoxSubstrate.setFfFl2(extendArgFromCamline.getFfFl2()); | ||||||
|  |                     woPackagingBoxSubstrate.setImppFl1(extendArgFromCamline.getImppFl1()); | ||||||
|  |                     woPackagingBoxSubstrate.setImppFl2(extendArgFromCamline.getImppFl2()); | ||||||
|  |                     woPackagingBoxSubstrate.setInsolflashcontrolFl1(extendArgFromCamline.getInsolflashcontrolFl1()); | ||||||
|  |                     woPackagingBoxSubstrate.setInsolflashcontrolFl2(extendArgFromCamline.getInsolflashcontrolFl2()); | ||||||
|  |                     woPackagingBoxSubstrate.setInsolmppFl1(extendArgFromCamline.getInsolmppFl1()); | ||||||
|  |                     woPackagingBoxSubstrate.setInsolmppFl2(extendArgFromCamline.getInsolmppFl2()); | ||||||
|  |                     woPackagingBoxSubstrate.setInsolvocFl1(extendArgFromCamline.getInsolvocFl1()); | ||||||
|  |                     woPackagingBoxSubstrate.setInsolvocFl2(extendArgFromCamline.getInsolvocFl2()); | ||||||
|  |                     woPackagingBoxSubstrate.setInsolFl1(extendArgFromCamline.getInsolFl1()); | ||||||
|  |                     woPackagingBoxSubstrate.setInsolFl2(extendArgFromCamline.getInsolFl2()); | ||||||
|  |                     woPackagingBoxSubstrate.setIscFl1(extendArgFromCamline.getIscFl1()); | ||||||
|  |                     woPackagingBoxSubstrate.setIscFl2(extendArgFromCamline.getIscFl2()); | ||||||
|  |                     woPackagingBoxSubstrate.setMeasTimeFl1(extendArgFromCamline.getMeasTimeFl1()); | ||||||
|  |                     woPackagingBoxSubstrate.setMeasTimeFl2(extendArgFromCamline.getMeasTimeFl2  ()); | ||||||
|  |                     woPackagingBoxSubstrate.setPmppFl1(extendArgFromCamline.getPmppFl1()); | ||||||
|  |                     woPackagingBoxSubstrate.setPmppFl2(extendArgFromCamline.getPmppFl2()); | ||||||
|  |                     woPackagingBoxSubstrate.setTcellFl1(extendArgFromCamline.getTcellFl1()); | ||||||
|  |                     woPackagingBoxSubstrate.setTcellFl2(extendArgFromCamline.getTcellFl2()); | ||||||
|  |                     woPackagingBoxSubstrate.setTmonicellFl1(extendArgFromCamline.getTmonicellFl1()); | ||||||
|  |                     woPackagingBoxSubstrate.setTmonicellFl2(extendArgFromCamline.getTmonicellFl2()); | ||||||
|  |                     woPackagingBoxSubstrate.setUmppFl1(extendArgFromCamline.getUmppFl1()); | ||||||
|  |                     woPackagingBoxSubstrate.setUmppFl2(extendArgFromCamline.getUmppFl2()); | ||||||
|  |                     woPackagingBoxSubstrate.setUocFl1(extendArgFromCamline.getUocFl1()); | ||||||
|  |                     woPackagingBoxSubstrate.setUocFl1(extendArgFromCamline.getUocFl2()); | ||||||
|  |  | ||||||
|  |                     substrateServiceBiz.insert(woPackagingBoxSubstrate); | ||||||
|  |  | ||||||
|  |                     logger.info("标签打印Event--- 基板ID: "+subId+", 录入数据库成功"); | ||||||
|  |                     logger.info("=================  现在开始执行 过程一 任务 ( MES 业务 ) ( 结束 )   =================="); | ||||||
|  |                     //===============           MES 业务 结束         ================= | ||||||
|  |  | ||||||
|  |                     //三. 当MES完成任务后,把MesToPlc.SubArrivedFinish变量置为true,告诉plc,我操作完成了 | ||||||
|  |                     write(S7Client.S7_DDJ2,Step1Mes2PlcVar.SubArrivedFinish,true); | ||||||
|  |                     logger.info("标签打印Event--- 基板ID: "+subId+", SubArrivedFinish,置为true 成功"); | ||||||
|  |                     //四. mes 监控 到PlcToMes.SubArrived==false,就把MesToPlc.SubArrivedFinish置为false | ||||||
|  |                     Integer subArrived2 = waitingForTarget(Step1Plc2MesVar.SubArrivedToMes, false); | ||||||
|  |                     if(subArrived2 != 1){ | ||||||
|  |                         logger.info("标签打印Event--- 失败"+" --- "+"MES监听 Step1Plc2MesVar.SubArrivedToMes 是否 等于 1 失败"); | ||||||
|  |                     }else if (subArrived2 == 2) { | ||||||
|  |                         throw new Exception("MES 监听值出现异常。"); | ||||||
|  |                     } | ||||||
|  |  | ||||||
|  |                     write(S7Client.S7_DDJ2,Step1Mes2PlcVar.SubArrivedFinish,false); | ||||||
|  |                     logger.info("标签打印Event--- 基板ID: "+subId+", SubArrivedFinish,置为 false 成功"); | ||||||
|  |                     logger.info("==================================  现在开始执行 过程一 任务( 结束 )   ==================================="); | ||||||
|  |                     logger.info(""); | ||||||
|  |                 }catch (Throwable e){ | ||||||
|  |                     logger.info("标签打印Event--- 出现异常 : {}",e.getMessage(),e); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         },1,1, TimeUnit.SECONDS); | ||||||
|  |  | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * | ||||||
|  |      * arg: | ||||||
|  |      *      Step1Plc2MesVar 参数类型 | ||||||
|  |      *      targetValue        目的值 | ||||||
|  |      * return: | ||||||
|  |      *      2 s7 访问异常; | ||||||
|  |      *      1 成功; | ||||||
|  |      * */ | ||||||
|  |     private Integer waitingForTarget(Step1Plc2MesVar var, Boolean targetValue) { | ||||||
|  |         Integer res = 0; | ||||||
|  |         while (true){ | ||||||
|  |             try { | ||||||
|  |  | ||||||
|  |                 Boolean now = (Boolean) read(S7Client.S7_DDJ2,var); | ||||||
|  |                 //注意:即使now为null ,这里也不会抛出异常,这里很容易产生 空轮询。 | ||||||
|  |                 if(now == null){ | ||||||
|  |                     throw new Exception(""); | ||||||
|  |                 } | ||||||
|  |                 if(targetValue.equals(now)){ | ||||||
|  |                     res = 1; | ||||||
|  |                     break; | ||||||
|  |                 } | ||||||
|  |                 Thread.sleep(200); | ||||||
|  |             }catch (Throwable e){ | ||||||
|  |                 logger.info("S7 数据采集 异常. 监听 变量 :"+var.getName()+" 为目标值:"+targetValue+"失败"); | ||||||
|  |                 res = 2; | ||||||
|  |                 break; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         return res; | ||||||
|  |     } | ||||||
|  |     /** | ||||||
|  |      * | ||||||
|  |      * arg: | ||||||
|  |      *      Step2Plc2MesVar 参数类型 | ||||||
|  |      *      targetValue        目的值 | ||||||
|  |      * return: | ||||||
|  |      *      2 s7 访问异常; | ||||||
|  |      *      1 成功; | ||||||
|  |      * */ | ||||||
|  |     private Integer waitingForTarget(Step2Plc2MesVar var, Boolean targetValue) { | ||||||
|  |         Integer res = 0; | ||||||
|  |         while (true){ | ||||||
|  |             try { | ||||||
|  |                 Boolean now = (Boolean) read(S7Client.S7_DDJ2,var); | ||||||
|  |                 if(now == null){ | ||||||
|  |                     throw new Exception(""); | ||||||
|  |                 } | ||||||
|  |                 if(targetValue.equals(now)){ | ||||||
|  |                     res = 1; | ||||||
|  |                     break; | ||||||
|  |                 } | ||||||
|  |                 Thread.sleep(200); | ||||||
|  |             }catch (Throwable e){ | ||||||
|  |                 logger.info("S7 数据采集 异常. 监听 变量 :"+var.getName()+" 为目标值:"+targetValue+"失败"); | ||||||
|  |                 res = 2; | ||||||
|  |                 break; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         return res; | ||||||
|  |     } | ||||||
|  |     /** | ||||||
|  |      * | ||||||
|  |      * arg: | ||||||
|  |      *      Step3Plc2MesVar 参数类型 | ||||||
|  |      *      targetValue        目的值 | ||||||
|  |      * return: | ||||||
|  |      *      2 s7 访问异常; | ||||||
|  |      *      1 成功; | ||||||
|  |      * */ | ||||||
|  |     private Integer waitingForTarget(Step3Plc2MesVar var, Boolean targetValue) { | ||||||
|  |         Integer res = 0; | ||||||
|  |         while (true){ | ||||||
|  |             try { | ||||||
|  |                 Boolean now = (Boolean) read(S7Client.S7_DDJ2,var); | ||||||
|  |                 if(now == null){ | ||||||
|  |                     throw new Exception(""); | ||||||
|  |                 } | ||||||
|  |                 if(targetValue.equals(now)){ | ||||||
|  |                     res = 1; | ||||||
|  |                     break; | ||||||
|  |                 } | ||||||
|  |                 Thread.sleep(200); | ||||||
|  |             }catch (Throwable e){ | ||||||
|  |                 logger.info("S7 数据采集 异常. 监听 变量 :"+var.getName()+" 为目标值:"+targetValue+"失败"); | ||||||
|  |                 res = 2; | ||||||
|  |                 break; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         return res; | ||||||
|  |     } | ||||||
|  | } | ||||||
| @@ -0,0 +1,481 @@ | |||||||
|  | package com.cnbm.dispatch.line2; | ||||||
|  |  | ||||||
|  | import cn.hutool.core.date.DateUtil; | ||||||
|  | import com.cnbm.dispatch.enums.kuka.step1.Step1Mes2PlcVar; | ||||||
|  | import com.cnbm.dispatch.enums.kuka.step1.Step1Plc2MesVar; | ||||||
|  | import com.cnbm.dispatch.enums.kuka.step2.Step2Mes2PlcVar; | ||||||
|  | import com.cnbm.dispatch.enums.kuka.step2.Step2Plc2MesVar; | ||||||
|  | import com.cnbm.dispatch.enums.kuka.step3.Step3Mes2PlcVar; | ||||||
|  | import com.cnbm.dispatch.enums.kuka.step3.Step3Plc2MesVar; | ||||||
|  | import com.cnbm.packing.dto.CamlineSubIdDTO; | ||||||
|  | import com.cnbm.packing.entity.WoPackagingBox; | ||||||
|  | import com.cnbm.packing.entity.WoPackagingBoxSubstrate; | ||||||
|  | import com.cnbm.packing.service.*; | ||||||
|  | import com.cnbm.s7.s7connector.enmuc.S7Client; | ||||||
|  | import com.cnbm.s7.s7connector.type.PlcVar; | ||||||
|  | import org.slf4j.Logger; | ||||||
|  | import org.slf4j.LoggerFactory; | ||||||
|  | import org.springframework.beans.factory.annotation.Autowired; | ||||||
|  | import org.springframework.boot.ApplicationArguments; | ||||||
|  | import org.springframework.boot.ApplicationRunner; | ||||||
|  | import org.springframework.core.annotation.Order; | ||||||
|  | import org.springframework.stereotype.Component; | ||||||
|  |  | ||||||
|  | import java.text.DecimalFormat; | ||||||
|  | import java.text.Format; | ||||||
|  | import java.time.LocalDateTime; | ||||||
|  | import java.util.Arrays; | ||||||
|  | import java.util.Date; | ||||||
|  | import java.util.concurrent.Executors; | ||||||
|  | import java.util.concurrent.ScheduledExecutorService; | ||||||
|  | import java.util.concurrent.TimeUnit; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * @Desc: "" | ||||||
|  |  * @Author: caixiang | ||||||
|  |  * @DATE: 2022/12/23 12:33 | ||||||
|  |  */ | ||||||
|  | @Component | ||||||
|  | @Order(value = 1) | ||||||
|  | public class KukaEvent2ThreadLine2 implements ApplicationRunner { | ||||||
|  |  | ||||||
|  |     private static final Logger logger = LoggerFactory.getLogger("EVENT2Line2"); | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     @Autowired | ||||||
|  |     DynamicDataSourceService service; | ||||||
|  |     @Autowired | ||||||
|  |     WoPowerLevelServiceBiz levelServiceBiz; | ||||||
|  |  | ||||||
|  |     @Autowired | ||||||
|  |     WoCompensationPowerServiceBiz compensationPowerServiceBiz; | ||||||
|  |  | ||||||
|  |     @Autowired | ||||||
|  |     WoPackagingBoxSubstrateServiceBiz substrateServiceBiz; | ||||||
|  |  | ||||||
|  |     @Autowired | ||||||
|  |     WoPackagingBoxServiceBiz boxServiceBiz; | ||||||
|  |  | ||||||
|  |     public KukaEvent2ThreadLine2(){ | ||||||
|  |  | ||||||
|  |         this.kukaStep2 = Executors.newScheduledThreadPool(1); | ||||||
|  |  | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     private ScheduledExecutorService kukaStep2; | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * return | ||||||
|  |      *          成功: 返回相应的object对象 | ||||||
|  |      *          失败: 返回null | ||||||
|  |      * */ | ||||||
|  |     private Object read(S7Client s7Client,Step1Plc2MesVar var) { | ||||||
|  |         try { | ||||||
|  |             return s7Client.read(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getLength(), var.getStrSize(), var.getType()); | ||||||
|  |         }catch (Throwable e){ | ||||||
|  |             logger.info("host:"+s7Client.getHost()+" ; read 操作出现问题: {}",e.getMessage(),e); | ||||||
|  |             return null; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     private void write(S7Client s7Client, Step1Mes2PlcVar var, Object newValue) { | ||||||
|  |         if(var.getType().equals(PlcVar.STRING_Array)){ | ||||||
|  |             String[] s = (String[])newValue; | ||||||
|  |             String[] ss = (String[])newValue; | ||||||
|  |             if(s.length > var.getLength() ){ | ||||||
|  |                 ss = new String[var.getLength()]; | ||||||
|  |                 for(int i=0;i< var.getLength();i++){ | ||||||
|  |                     ss[i] = s[i]; | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             s7Client.write(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getStrSize(), var.getType(),ss); | ||||||
|  |         }else { | ||||||
|  |             s7Client.write(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getStrSize(), var.getType(),newValue); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     private Object read(S7Client s7Client, Step2Plc2MesVar var) { | ||||||
|  |         try { | ||||||
|  |             return s7Client.read(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getLength(), var.getStrSize(), var.getType()); | ||||||
|  |         }catch (Throwable e){ | ||||||
|  |             logger.info("host:"+s7Client.getHost()+" ; read 操作出现问题: {}",e.getMessage(),e); | ||||||
|  |             return null; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     private void write(S7Client s7Client, Step2Mes2PlcVar var, Object newValue) { | ||||||
|  |         if(var.getType().equals(PlcVar.STRING_Array)){ | ||||||
|  |             String[] s = (String[])newValue; | ||||||
|  |             String[] ss = (String[])newValue; | ||||||
|  |             if(s.length > var.getLength() ){ | ||||||
|  |                 ss = new String[var.getLength()]; | ||||||
|  |                 for(int i=0;i< var.getLength();i++){ | ||||||
|  |                     ss[i] = s[i]; | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             s7Client.write(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getStrSize(), var.getType(),ss); | ||||||
|  |         }else { | ||||||
|  |             s7Client.write(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getStrSize(), var.getType(),newValue); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     private Object read(S7Client s7Client, Step3Plc2MesVar var) { | ||||||
|  |         try { | ||||||
|  |             return s7Client.read(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getLength(), var.getStrSize(), var.getType()); | ||||||
|  |         }catch (Throwable e){ | ||||||
|  |             logger.info("host:"+s7Client.getHost()+" ; read 操作出现问题: {}",e.getMessage(),e); | ||||||
|  |             return null; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     private void write(S7Client s7Client, Step3Mes2PlcVar var, Object newValue) { | ||||||
|  |         if(var.getType().equals(PlcVar.STRING_Array)){ | ||||||
|  |             String[] s = (String[])newValue; | ||||||
|  |             String[] ss = (String[])newValue; | ||||||
|  |             if(s.length > var.getLength() ){ | ||||||
|  |                 ss = new String[var.getLength()]; | ||||||
|  |                 for(int i=0;i< var.getLength();i++){ | ||||||
|  |                     ss[i] = s[i]; | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             s7Client.write(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getStrSize(), var.getType(),ss); | ||||||
|  |         }else { | ||||||
|  |             s7Client.write(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getStrSize(), var.getType(),newValue); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     public String getBoxId(String sapMaterial){ | ||||||
|  |         Integer todayBoxNum = service.getTodayBoxNum()+1; | ||||||
|  |         String nowTime = DateUtil.format(new Date(), "yyMMdd"); | ||||||
|  |  | ||||||
|  |         todayBoxNum+=500; | ||||||
|  |         logger.info("BOXID生成Event-------现在生成boxId ,sapMaterial: "+sapMaterial+",nowTime:"+nowTime+",todayBoxNum:"+formateString(todayBoxNum)); | ||||||
|  |         String res = "301"+sapMaterial+nowTime+formateString(todayBoxNum); | ||||||
|  |         return res; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | //    public String getErrorBoxId(String sapMaterial){ | ||||||
|  | // | ||||||
|  | //        String nowTime = DateUtil.format(new Date(), "yyMMdd"); | ||||||
|  | //        String mixBoxError = "001"; | ||||||
|  | //        String res = "444"+sapMaterial+nowTime+mixBoxError +"02"; | ||||||
|  | //        logger.info("BOXID生成Event-------现在生成errBoxId ,sapMaterial: "+sapMaterial+",nowTime:"+nowTime); | ||||||
|  | // | ||||||
|  | //        return res; | ||||||
|  | //    } | ||||||
|  |  | ||||||
|  |     public String getErrorBoxId(String sapMaterial){ | ||||||
|  |         Integer todayErrBoxNum = service.getTodayErrBoxNum()+1; | ||||||
|  |         String nowTime = DateUtil.format(new Date(), "yyMMdd"); | ||||||
|  |         String mixBoxError = "001"; | ||||||
|  |         String res = "444"+sapMaterial+nowTime+mixBoxError+"02"+todayErrBoxNum; | ||||||
|  |         logger.info("BOXID生成Event-------现在生成errBoxId ,sapMaterial: "+sapMaterial+",nowTime:"+nowTime+",todayErrBoxNum:"+todayErrBoxNum); | ||||||
|  |  | ||||||
|  |         return res; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public String removeKG(String str){ | ||||||
|  |         return str.substring(0,17); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public static void main(String[] args) { | ||||||
|  |         Integer a = 102; | ||||||
|  |         Format f1 = new DecimalFormat("000"); | ||||||
|  |         System.out.println(f1.format(a)); | ||||||
|  |     } | ||||||
|  |     public String formateString(Integer a){ | ||||||
|  |         Format f1 = new DecimalFormat("000"); | ||||||
|  |         return f1.format(a); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     //return true 出现混档了,return false 没有出现混档 | ||||||
|  | //    private boolean isMixLevel(String[] subIds,Integer size){ | ||||||
|  | //        String correctLevel = substrateServiceBiz.getBySubId(subIds[0]).getPowerLevel(); | ||||||
|  | //        String errMsg = "以下基板ID出现混档:"; | ||||||
|  | //        boolean res = false; | ||||||
|  | //        for(int i=0;i<size;i++){ | ||||||
|  | //            String powerLevel = substrateServiceBiz.getBySubId(subIds[i]).getPowerLevel(); | ||||||
|  | // | ||||||
|  | //            if(!powerLevel.equals(correctLevel)){ | ||||||
|  | //                errMsg += "基板ID:"+subIds[i]+" 档位:"+powerLevel+", "; | ||||||
|  | //                res = true; | ||||||
|  | //            } | ||||||
|  | //        } | ||||||
|  | //        if(res){ | ||||||
|  | //            logger.error(errMsg); | ||||||
|  | //        } | ||||||
|  | // | ||||||
|  | //        return res; | ||||||
|  | //    } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     private CamlineSubIdDTO getFromCamline(String subId){ | ||||||
|  |         return service.getSubIdByCamline(subId); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     private boolean isMixLevel(String[] subIds,Integer size){ | ||||||
|  |         WoPackagingBoxSubstrate bySubId = substrateServiceBiz.getBySubId(subIds[0]); | ||||||
|  |         String correctLevel = null; | ||||||
|  |  | ||||||
|  |         //如果 我们数据库没有  去camline 数据库里面取  --  开始 | ||||||
|  |         if(bySubId == null){ | ||||||
|  |             logger.info("BOXID生成Event-------检查是否混箱时,发现数据库中 无subId:"+ subIds[0]+"现在从camline 系统获取这个基板相关信息"); | ||||||
|  |             //todo | ||||||
|  |             CamlineSubIdDTO subIdByCamline = service.getSubIdByCamline(subIds[0]); | ||||||
|  |             logger.info("BOXID生成Event-------检查是否混箱时,发现数据库中 无subId:"+ subIds[0]+"现在从camline 系统获取这个基板相关信息是:"+subIdByCamline); | ||||||
|  |  | ||||||
|  |             correctLevel = subIdByCamline.getPowerLevel(); | ||||||
|  |         }else { | ||||||
|  |             correctLevel = bySubId.getPowerLevel(); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |         String errMsg = "以下基板ID出现混档:"; | ||||||
|  |         boolean res = false; | ||||||
|  |         for(int i=0;i<size;i++){ | ||||||
|  |             WoPackagingBoxSubstrate innerSub = substrateServiceBiz.getBySubId(subIds[i]); | ||||||
|  |             String powerLevel = null; | ||||||
|  |             if(innerSub==null){ | ||||||
|  |                 powerLevel = getFromCamline(subIds[i]).getPowerLevel(); | ||||||
|  |             }else { | ||||||
|  |                 powerLevel = innerSub.getPowerLevel(); | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             if(!powerLevel.equals(correctLevel)){ | ||||||
|  |                 errMsg += "基板ID:"+subIds[i]+" 档位:"+powerLevel+", "; | ||||||
|  |                 res = true; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         if(res){ | ||||||
|  |             logger.error(errMsg); | ||||||
|  |  | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         return res; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public void run(ApplicationArguments args) throws Exception { | ||||||
|  |         kukaStep2.scheduleAtFixedRate(new Runnable() { | ||||||
|  |             @Override | ||||||
|  |             public void run() { | ||||||
|  |                 try { | ||||||
|  |  | ||||||
|  |  | ||||||
|  |                     //调度开始 | ||||||
|  |                     Integer shelfIsFull = waitingForTarget(Step2Plc2MesVar.ShelfIsFull, true); | ||||||
|  |                     logger.info(""); | ||||||
|  |                     logger.info("==================================  现在开始执行 过程二 任务( 开始 )   ==================================="); | ||||||
|  |                     if(shelfIsFull != 1){ | ||||||
|  |                         logger.info("BOXID生成Event-------失败"+" --- "+"MES监听 Step2Plc2MesVar.ShelfIsFull 是否 等于 1 失败"); | ||||||
|  |                     }else if(shelfIsFull == 2){ | ||||||
|  |                         throw new Exception("MES 监听值出现异常。"); | ||||||
|  |                     } | ||||||
|  |  | ||||||
|  |                     //一. 从plc 中获取 subIdList 和 lineNum | ||||||
|  |                     String[] subIdList = (String[])read(S7Client.S7_DDJ2,Step2Plc2MesVar.SubIdList); | ||||||
|  |                     Integer listSize = (Integer)read(S7Client.S7_DDJ2,Step2Plc2MesVar.PackageNumberSet)-1; | ||||||
|  |  | ||||||
|  |  | ||||||
|  |                     //二. MES 业务 | ||||||
|  |                     //===============           MES 业务 开始         ================= | ||||||
|  |                     //1.MES 生成BoxId | ||||||
|  |                     if(subIdList.length<=0){ | ||||||
|  |                         logger.info("BOXID生成Event-------失败"+" --- "+"从plc里面获取到的基板列表 为空"); | ||||||
|  |                         throw new Exception("BOXID生成Event失败-------kuka机械手 取到了空箱"); | ||||||
|  |                     } | ||||||
|  |                     if(listSize == null){ | ||||||
|  |                         logger.info("BOXID生成Event-------失败"+" --- "+"从plc里面获取到的listSize 为null"); | ||||||
|  |                         throw new Exception("BOXID生成Event失败-------listSize 为null"); | ||||||
|  |                     } | ||||||
|  |  | ||||||
|  |                     //真实的基板ID 就是17位的,plc读取过来,有空格,要把后面3位空格去掉就行了。 | ||||||
|  |                     for(int i=0;i<subIdList.length;i++){ | ||||||
|  |                         subIdList[i] = removeKG(subIdList[i]); | ||||||
|  |                     } | ||||||
|  |                     logger.info("BOXID生成Event-------获取到基板列表:"+ Arrays.toString(subIdList)+",基板数量:"+listSize); | ||||||
|  |  | ||||||
|  |                     WoPackagingBoxSubstrate bySubId = substrateServiceBiz.getBySubId(subIdList[0]); | ||||||
|  |                     logger.info("BOXID生成Event-------依据subId"+subIdList[0]+"去qgs数据库 查询数据,数据内容:"+bySubId); | ||||||
|  |  | ||||||
|  |  | ||||||
|  |                     //如果我们系统中找不到这块基板那么就去camline里面找 | ||||||
|  | //                    if(bySubId == null){ | ||||||
|  | //                        logger.info("BOXID生成Event-------数据库中 无subId:"+ subIdList[0]+"现在从camline 系统获取这个基板相关信息"); | ||||||
|  | //                        //todo | ||||||
|  | //                        CamlineSubIdDTO subIdByCamline = service.getSubIdByCamline(subIdList[0]); | ||||||
|  | //                        bySubId = new WoPackagingBoxSubstrate(); | ||||||
|  | //                        bySubId.setPowerLevel(subIdByCamline.getPowerLevel()); | ||||||
|  | //                        bySubId.setSapMaterial(subIdByCamline.getSapMaterial()); | ||||||
|  | //                        bySubId.setLineBody(2); | ||||||
|  | //                    } | ||||||
|  |                     if(bySubId == null){ | ||||||
|  |                         logger.info("BOXID生成Event-------数据库中 无subId:"+ subIdList[0]); | ||||||
|  |                         throw new Exception("BOXID生成Event-------数据库中 无subId:"+ subIdList[0]); | ||||||
|  |                     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |                     //校验是否存在混档位情况 | ||||||
|  |                     String boxId = ""; | ||||||
|  |                     if(isMixLevel(subIdList,listSize)){ | ||||||
|  |                         //出现混档 | ||||||
|  |                         logger.info("BOXID生成Event-------subIdList :"+Arrays.asList(subIdList)+"出现混档"); | ||||||
|  |                         boxId = getErrorBoxId(bySubId.getSapMaterial()); | ||||||
|  |  | ||||||
|  |                     }else { | ||||||
|  |                         //正常情况 | ||||||
|  |                         logger.info("BOXID生成Event-------subIdList :"+Arrays.asList(subIdList)+"没有出现混档"); | ||||||
|  |                         boxId = getBoxId(bySubId.getSapMaterial()); | ||||||
|  |                     } | ||||||
|  |                     logger.info("BOXID生成Event-------subIdList :"+Arrays.asList(subIdList)+"isMixLevel 校验结束"); | ||||||
|  |  | ||||||
|  |                     logger.info("BOXID生成Event-------mes 生成的boxId :"+ boxId); | ||||||
|  |                     //2. 依次update 基板表,把boxId 赋予这些基板 | ||||||
|  |                     for(int i=0;i<listSize;i++){ | ||||||
|  |                         substrateServiceBiz.updatePackagingBoxIdAndSlotByWoSubstrateId(boxId,(i+1),subIdList[i]); | ||||||
|  |                     } | ||||||
|  |                     //3.去camline数据库 查询此基板ID 对应的订单 | ||||||
|  |                     String orderNameBySubId = service.getOrderNameBySubId(subIdList[0]); | ||||||
|  |                     //4. box信息录入到box表 | ||||||
|  |                     WoPackagingBox woPackagingBox = new WoPackagingBox(); | ||||||
|  |                     woPackagingBox.setBoxNo(boxId); | ||||||
|  |                     woPackagingBox.setSubstrateQuantity(listSize); | ||||||
|  |                     woPackagingBox.setPackagingTime(LocalDateTime.now()); | ||||||
|  |                     woPackagingBox.setPowerLevel(bySubId.getPowerLevel()); | ||||||
|  |                     woPackagingBox.setLineBody(bySubId.getLineBody()); | ||||||
|  |                     woPackagingBox.setSapMaterial(bySubId.getSapMaterial()); | ||||||
|  |                     woPackagingBox.setOrderNum(orderNameBySubId); | ||||||
|  |                     //1-手动模式,2-自动模式 | ||||||
|  |                     woPackagingBox.setModel(2); | ||||||
|  |                     woPackagingBox.setCreateTime(LocalDateTime.now()); | ||||||
|  |                     woPackagingBox.setPackagingTime(LocalDateTime.now()); | ||||||
|  |                     boxServiceBiz.insert(woPackagingBox); | ||||||
|  |                     logger.info("BOXID生成Event-------boxId :"+ boxId+"写入数据库成功"); | ||||||
|  |                     //===============           MES 业务 结束         ================= | ||||||
|  |  | ||||||
|  |                     //三. 把生成的BoxId 告诉kuka | ||||||
|  |                     write(S7Client.S7_DDJ2,Step2Mes2PlcVar.BoxId,boxId); | ||||||
|  |                     logger.info("BOXID生成Event-------boxId :"+ boxId+"传给PLC 成功"); | ||||||
|  |  | ||||||
|  |                     //四. 当MES完成任务后,把MesToPlc.ShelfIsFullFinish变量置为true,告诉plc,我操作完成了 | ||||||
|  |                     write(S7Client.S7_DDJ2,Step2Mes2PlcVar.ShelfIsFullFinish,true); | ||||||
|  |                     logger.info("BOXID生成Event-------boxId :"+ boxId+"ShelfIsFullFinish 置为true 成功"); | ||||||
|  |                     //四. mes 监控 到PlcToMes.SubArrived==false,就把MesToPlc.SubArrivedFinish置为false | ||||||
|  |                     Integer subArrived2 = waitingForTarget(Step2Plc2MesVar.ShelfIsFull, false); | ||||||
|  |                     if(subArrived2 != 1){ | ||||||
|  |                         logger.info("BOXID生成Event-------失败"+" --- "+"步骤1.  MES监听 Step1Plc2MesVar.SubArrivedToMes 是否 等于 1 失败"); | ||||||
|  |                     }else if(subArrived2 == 2){ | ||||||
|  |                         throw new Exception("MES 监听值出现异常。"); | ||||||
|  |                     } | ||||||
|  |                     write(S7Client.S7_DDJ2,Step2Mes2PlcVar.ShelfIsFullFinish,false); | ||||||
|  |                     logger.info("BOXID生成Event-------boxId :"+ boxId+"ShelfIsFullFinish 置为false 成功,Event2 成功结束"); | ||||||
|  |                     logger.info("==================================  现在开始执行 过程二 任务( 结束 )   ==================================="); | ||||||
|  |                     logger.info(""); | ||||||
|  |  | ||||||
|  |                 }catch (Throwable e){ | ||||||
|  | //                    logger.info("BOXID生成Event-------  出现异常:" + e.toString()); | ||||||
|  |                     logger.info("BOXID生成Event--- 出现异常 : {}",e.getMessage(),e); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         },1,1, TimeUnit.SECONDS); | ||||||
|  |  | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * | ||||||
|  |      * arg: | ||||||
|  |      *      Step1Plc2MesVar 参数类型 | ||||||
|  |      *      targetValue        目的值 | ||||||
|  |      * return: | ||||||
|  |      *      2 s7 访问异常; | ||||||
|  |      *      1 成功; | ||||||
|  |      * */ | ||||||
|  |     private Integer waitingForTarget(Step1Plc2MesVar var, Boolean targetValue) { | ||||||
|  |         Integer res = 0; | ||||||
|  |         while (true){ | ||||||
|  |             try { | ||||||
|  |  | ||||||
|  |                 Boolean now = (Boolean) read(S7Client.S7_DDJ2,var); | ||||||
|  |                 //注意:即使now为null ,这里也不会抛出异常,这里很容易产生 空轮询。 | ||||||
|  |                 if(now == null){ | ||||||
|  |                     throw new Exception(""); | ||||||
|  |                 } | ||||||
|  |                 if(targetValue.equals(now)){ | ||||||
|  |                     res = 1; | ||||||
|  |                     break; | ||||||
|  |                 } | ||||||
|  |                 Thread.sleep(200); | ||||||
|  |             }catch (Throwable e){ | ||||||
|  |                 logger.info("S7 数据采集 异常. 监听 变量 :"+var.getName()+" 为目标值:"+targetValue+"失败"); | ||||||
|  |                 res = 2; | ||||||
|  |                 break; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         return res; | ||||||
|  |     } | ||||||
|  |     /** | ||||||
|  |      * | ||||||
|  |      * arg: | ||||||
|  |      *      Step2Plc2MesVar 参数类型 | ||||||
|  |      *      targetValue        目的值 | ||||||
|  |      * return: | ||||||
|  |      *      2 s7 访问异常; | ||||||
|  |      *      1 成功; | ||||||
|  |      * */ | ||||||
|  |     private Integer waitingForTarget(Step2Plc2MesVar var, Boolean targetValue) { | ||||||
|  |         Integer res = 0; | ||||||
|  |         while (true){ | ||||||
|  |             try { | ||||||
|  |                 Boolean now = (Boolean) read(S7Client.S7_DDJ2,var); | ||||||
|  |                 if(now == null){ | ||||||
|  |                     throw new Exception(""); | ||||||
|  |                 } | ||||||
|  |                 if(targetValue.equals(now)){ | ||||||
|  |                     res = 1; | ||||||
|  |                     break; | ||||||
|  |                 } | ||||||
|  |                 Thread.sleep(200); | ||||||
|  |             }catch (Throwable e){ | ||||||
|  |                 logger.info("S7 数据采集 异常. 监听 变量 :"+var.getName()+" 为目标值:"+targetValue+"失败"); | ||||||
|  |                 res = 2; | ||||||
|  |                 break; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         return res; | ||||||
|  |     } | ||||||
|  |     /** | ||||||
|  |      * | ||||||
|  |      * arg: | ||||||
|  |      *      Step3Plc2MesVar 参数类型 | ||||||
|  |      *      targetValue        目的值 | ||||||
|  |      * return: | ||||||
|  |      *      2 s7 访问异常; | ||||||
|  |      *      1 成功; | ||||||
|  |      * */ | ||||||
|  |     private Integer waitingForTarget(Step3Plc2MesVar var, Boolean targetValue) { | ||||||
|  |         Integer res = 0; | ||||||
|  |         while (true){ | ||||||
|  |             try { | ||||||
|  |                 Boolean now = (Boolean) read(S7Client.S7_DDJ2,var); | ||||||
|  |                 if(now == null){ | ||||||
|  |                     throw new Exception(""); | ||||||
|  |                 } | ||||||
|  |                 if(targetValue.equals(now)){ | ||||||
|  |                     res = 1; | ||||||
|  |                     break; | ||||||
|  |                 } | ||||||
|  |                 Thread.sleep(200); | ||||||
|  |             }catch (Throwable e){ | ||||||
|  |                 logger.info("S7 数据采集 异常. 监听 变量 :"+var.getName()+" 为目标值:"+targetValue+"失败"); | ||||||
|  |                 res = 2; | ||||||
|  |                 break; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         return res; | ||||||
|  |     } | ||||||
|  | } | ||||||
| @@ -0,0 +1,354 @@ | |||||||
|  | package com.cnbm.dispatch.line2; | ||||||
|  |  | ||||||
|  | import cn.hutool.core.date.DateUtil; | ||||||
|  | import com.cnbm.dispatch.enums.kuka.step1.Step1Mes2PlcVar; | ||||||
|  | import com.cnbm.dispatch.enums.kuka.step1.Step1Plc2MesVar; | ||||||
|  | import com.cnbm.dispatch.enums.kuka.step2.Step2Mes2PlcVar; | ||||||
|  | import com.cnbm.dispatch.enums.kuka.step2.Step2Plc2MesVar; | ||||||
|  | import com.cnbm.dispatch.enums.kuka.step3.Step3Mes2PlcVar; | ||||||
|  | import com.cnbm.dispatch.enums.kuka.step3.Step3Plc2MesVar; | ||||||
|  | import com.cnbm.packing.service.*; | ||||||
|  | import com.cnbm.s7.s7connector.enmuc.S7Client; | ||||||
|  | import com.cnbm.s7.s7connector.type.PlcVar; | ||||||
|  | import org.slf4j.Logger; | ||||||
|  | import org.slf4j.LoggerFactory; | ||||||
|  | import org.springframework.beans.factory.annotation.Autowired; | ||||||
|  | import org.springframework.boot.ApplicationArguments; | ||||||
|  | import org.springframework.boot.ApplicationRunner; | ||||||
|  | import org.springframework.core.annotation.Order; | ||||||
|  | import org.springframework.stereotype.Component; | ||||||
|  |  | ||||||
|  | import java.text.DecimalFormat; | ||||||
|  | import java.text.Format; | ||||||
|  | import java.util.Date; | ||||||
|  | import java.util.concurrent.Executors; | ||||||
|  | import java.util.concurrent.ScheduledExecutorService; | ||||||
|  | import java.util.concurrent.TimeUnit; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * @Desc: "" | ||||||
|  |  * @Author: caixiang | ||||||
|  |  * @DATE: 2022/12/23 12:33 | ||||||
|  |  */ | ||||||
|  | @Component | ||||||
|  | @Order(value = 1) | ||||||
|  | public class KukaEvent3ThreadLine2 implements ApplicationRunner { | ||||||
|  |  | ||||||
|  |     private static final Logger logger = LoggerFactory.getLogger("EVENT3Line2"); | ||||||
|  |  | ||||||
|  |     @Autowired | ||||||
|  |     DynamicDataSourceService service; | ||||||
|  |     @Autowired | ||||||
|  |     WoPowerLevelServiceBiz levelServiceBiz; | ||||||
|  |  | ||||||
|  |     @Autowired | ||||||
|  |     WoCompensationPowerServiceBiz compensationPowerServiceBiz; | ||||||
|  |  | ||||||
|  |     @Autowired | ||||||
|  |     WoPackagingBoxSubstrateServiceBiz substrateServiceBiz; | ||||||
|  |  | ||||||
|  |     @Autowired | ||||||
|  |     WoPackagingBoxServiceBiz boxServiceBiz; | ||||||
|  |  | ||||||
|  |     public KukaEvent3ThreadLine2(){ | ||||||
|  |         this.kukaStep3 = Executors.newScheduledThreadPool(1); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     private ScheduledExecutorService kukaStep3; | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * return | ||||||
|  |      *          成功: 返回相应的object对象 | ||||||
|  |      *          失败: 返回null | ||||||
|  |      * */ | ||||||
|  |     private Object read(S7Client s7Client,Step1Plc2MesVar var) { | ||||||
|  |         try { | ||||||
|  |             return s7Client.read(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getLength(), var.getStrSize(), var.getType()); | ||||||
|  |         }catch (Throwable e){ | ||||||
|  |             logger.info("host:"+s7Client.getHost()+" ; read 操作出现问题: {}",e.getMessage(),e); | ||||||
|  |             return null; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     private void write(S7Client s7Client, Step1Mes2PlcVar var, Object newValue) { | ||||||
|  |         if(var.getType().equals(PlcVar.STRING_Array)){ | ||||||
|  |             String[] s = (String[])newValue; | ||||||
|  |             String[] ss = (String[])newValue; | ||||||
|  |             if(s.length > var.getLength() ){ | ||||||
|  |                 ss = new String[var.getLength()]; | ||||||
|  |                 for(int i=0;i< var.getLength();i++){ | ||||||
|  |                     ss[i] = s[i]; | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             s7Client.write(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getStrSize(), var.getType(),ss); | ||||||
|  |         }else { | ||||||
|  |             s7Client.write(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getStrSize(), var.getType(),newValue); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     private Object read(S7Client s7Client, Step2Plc2MesVar var) { | ||||||
|  |         try { | ||||||
|  |             return s7Client.read(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getLength(), var.getStrSize(), var.getType()); | ||||||
|  |         }catch (Throwable e){ | ||||||
|  |             logger.info("host:"+s7Client.getHost()+" ; read 操作出现问题: {}",e.getMessage(),e); | ||||||
|  |             return null; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     private void write(S7Client s7Client, Step2Mes2PlcVar var, Object newValue) { | ||||||
|  |         if(var.getType().equals(PlcVar.STRING_Array)){ | ||||||
|  |             String[] s = (String[])newValue; | ||||||
|  |             String[] ss = (String[])newValue; | ||||||
|  |             if(s.length > var.getLength() ){ | ||||||
|  |                 ss = new String[var.getLength()]; | ||||||
|  |                 for(int i=0;i< var.getLength();i++){ | ||||||
|  |                     ss[i] = s[i]; | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             s7Client.write(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getStrSize(), var.getType(),ss); | ||||||
|  |         }else { | ||||||
|  |             s7Client.write(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getStrSize(), var.getType(),newValue); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     private Object read(S7Client s7Client, Step3Plc2MesVar var) { | ||||||
|  |         try { | ||||||
|  |             return s7Client.read(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getLength(), var.getStrSize(), var.getType()); | ||||||
|  |         }catch (Throwable e){ | ||||||
|  |             logger.info("host:"+s7Client.getHost()+" ; read 操作出现问题: {}",e.getMessage(),e); | ||||||
|  |             return null; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     private void write(S7Client s7Client, Step3Mes2PlcVar var, Object newValue) { | ||||||
|  |         if(var.getType().equals(PlcVar.STRING_Array)){ | ||||||
|  |             String[] s = (String[])newValue; | ||||||
|  |             String[] ss = (String[])newValue; | ||||||
|  |             if(s.length > var.getLength() ){ | ||||||
|  |                 ss = new String[var.getLength()]; | ||||||
|  |                 for(int i=0;i< var.getLength();i++){ | ||||||
|  |                     ss[i] = s[i]; | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             s7Client.write(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getStrSize(), var.getType(),ss); | ||||||
|  |         }else { | ||||||
|  |             s7Client.write(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getStrSize(), var.getType(),newValue); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     public String getBoxId(String sapMaterial){ | ||||||
|  |         Integer todayBoxNum = service.getTodayBoxNum()+1; | ||||||
|  |         String nowTime = DateUtil.format(new Date(), "yyMMdd"); | ||||||
|  |  | ||||||
|  |         todayBoxNum+=500; | ||||||
|  |         logger.info("BOXID生成Event-------现在生成boxId ,sapMaterial: "+sapMaterial+",nowTime:"+nowTime+",todayBoxNum:"+formateString(todayBoxNum)); | ||||||
|  |         String res = "301"+sapMaterial+nowTime+formateString(todayBoxNum); | ||||||
|  |         return res; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     public String getErrorBoxId(String sapMaterial){ | ||||||
|  |  | ||||||
|  |         String nowTime = DateUtil.format(new Date(), "yyMMdd"); | ||||||
|  |         String mixBoxError = "001"; | ||||||
|  |         String res = "444"+sapMaterial+nowTime+mixBoxError; | ||||||
|  |         logger.info("BOXID生成Event-------现在生成errBoxId ,sapMaterial: "+sapMaterial+",nowTime:"+nowTime); | ||||||
|  |  | ||||||
|  |         return res; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public String removeKG(String str){ | ||||||
|  |         return str.substring(0,17); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public static void main(String[] args) { | ||||||
|  |         Integer a = 102; | ||||||
|  |         Format f1 = new DecimalFormat("000"); | ||||||
|  |         System.out.println(f1.format(a)); | ||||||
|  |     } | ||||||
|  |     public String formateString(Integer a){ | ||||||
|  |         Format f1 = new DecimalFormat("000"); | ||||||
|  |         return f1.format(a); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     //return true 出现混档了,return false 没有出现混档 | ||||||
|  |     private boolean isMixLevel(String[] subIds,Integer size){ | ||||||
|  |         String correctLevel = substrateServiceBiz.getBySubId(subIds[0]).getPowerLevel(); | ||||||
|  |         String errMsg = "以下基板ID出现混档:"; | ||||||
|  |         boolean res = false; | ||||||
|  |         for(int i=0;i<size;i++){ | ||||||
|  |             String powerLevel = substrateServiceBiz.getBySubId(subIds[i]).getPowerLevel(); | ||||||
|  |  | ||||||
|  |             if(!powerLevel.equals(correctLevel)){ | ||||||
|  |                 errMsg += "基板ID:"+subIds[i]+" 档位:"+powerLevel+", "; | ||||||
|  |                 res = true; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         if(res){ | ||||||
|  |             logger.error(errMsg); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         return res; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public void run(ApplicationArguments args) throws Exception { | ||||||
|  |  | ||||||
|  |         kukaStep3.scheduleAtFixedRate(new Runnable() { | ||||||
|  |             @Override | ||||||
|  |             public void run() { | ||||||
|  |                 try { | ||||||
|  |  | ||||||
|  |                     //调度开始 | ||||||
|  |                     Integer shelfIsFull = waitingForTarget(Step3Plc2MesVar.ShelfIsFullArrived, true); | ||||||
|  |                     logger.info(""); | ||||||
|  |                     logger.info("==================================  现在开始执行 过程三 任务( 开始 )   ==================================="); | ||||||
|  |                     if(shelfIsFull != 1){ | ||||||
|  |                         logger.info("装箱单打印Event------失败"+" --- "+"MES监听 Step3Plc2MesVar.ShelfIsFullArrived 是否 等于 1 失败"); | ||||||
|  |                     }else if(shelfIsFull == 2){ | ||||||
|  |                         throw new Exception("MES 监听值出现异常。"); | ||||||
|  |                     } | ||||||
|  |  | ||||||
|  |                     //一. 从plc 中获取 subIdList 和 lineNum | ||||||
|  |                     String boxId = (String)read(S7Client.S7_DDJ2,Step3Plc2MesVar.BoxId); | ||||||
|  |                     Integer lineNum = (Integer) read(S7Client.S7_DDJ2,Step3Plc2MesVar.LineNum); | ||||||
|  |                     if(boxId == null){ | ||||||
|  |                         logger.info("装箱单打印Event-------失败"+" --- "+"从plc里面获取到的boxId 为null"); | ||||||
|  |                         throw new Exception("装箱单打印Event-------boxId 为null"); | ||||||
|  |                     } | ||||||
|  |                     logger.info("装箱单打印Event------到达站台的boxId :"+boxId); | ||||||
|  |  | ||||||
|  |                     //二. MES 业务 | ||||||
|  |                     //===============           MES 业务 开始         ================= | ||||||
|  |                     //1. box信息录入到box表 | ||||||
|  |                     boxServiceBiz.updateIsArrivedByBoxNo(1,boxId); | ||||||
|  |                     logger.info("装箱单打印Event------boxId :"+boxId+"更新数据库成功"); | ||||||
|  |                     //===============           MES 业务 结束         ================= | ||||||
|  |  | ||||||
|  |  | ||||||
|  |                     //四. 当MES完成任务后,把MesToPlc.ShelfIsFullArrivedFinish变量置为true,告诉plc,我操作完成了 | ||||||
|  |                     write(S7Client.S7_DDJ2,Step3Mes2PlcVar.ShelfIsFullArrivedFinish,true); | ||||||
|  |                     logger.info("装箱单打印Event------boxId :"+boxId+", ShelfIsFullArrivedFinish置为true 成功"); | ||||||
|  |                     //四. mes 监控 到PlcToMes.SubArrived==false,就把MesToPlc.SubArrivedFinish置为false | ||||||
|  |                     Integer subArrived2 = waitingForTarget(Step3Plc2MesVar.ShelfIsFullArrived, false); | ||||||
|  |                     if(subArrived2 != 1){ | ||||||
|  |                         logger.info("装箱单打印Event------失败"+" --- "+"步骤1.  MES监听 Step3Plc2MesVar.ShelfIsFullArrived 是否 等于 1 失败"); | ||||||
|  |                     }else if(subArrived2 == 2){ | ||||||
|  |                         throw new Exception("MES 监听值出现异常。"); | ||||||
|  |                     } | ||||||
|  |                     logger.info("装箱单打印Event------boxId :"+boxId+", 监听到subArrived=false 成功"); | ||||||
|  |                     write(S7Client.S7_DDJ2,Step3Mes2PlcVar.ShelfIsFullArrivedFinish,false); | ||||||
|  |                     logger.info("装箱单打印Event------boxId :"+boxId+", Even3 成功"); | ||||||
|  |  | ||||||
|  |                     logger.info("==================================  现在开始执行 过程三 任务( 结束 )   ==================================="); | ||||||
|  |                     logger.info(""); | ||||||
|  |                 }catch (Throwable e){ | ||||||
|  | //                    e.printStackTrace(); | ||||||
|  | //                    logger.info("装箱单打印Event 出现异常------"+e.toString()); | ||||||
|  |                     logger.info("装箱单打印Event--- 出现异常 : {}",e.getMessage(),e); | ||||||
|  |                 } | ||||||
|  |  | ||||||
|  |             } | ||||||
|  |         },1,1, TimeUnit.SECONDS); | ||||||
|  |  | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * | ||||||
|  |      * arg: | ||||||
|  |      *      Step1Plc2MesVar 参数类型 | ||||||
|  |      *      targetValue        目的值 | ||||||
|  |      * return: | ||||||
|  |      *      2 s7 访问异常; | ||||||
|  |      *      1 成功; | ||||||
|  |      * */ | ||||||
|  |     private Integer waitingForTarget(Step1Plc2MesVar var, Boolean targetValue) { | ||||||
|  |         Integer res = 0; | ||||||
|  |         while (true){ | ||||||
|  |             try { | ||||||
|  |  | ||||||
|  |                 Boolean now = (Boolean) read(S7Client.S7_DDJ2,var); | ||||||
|  |                 //注意:即使now为null ,这里也不会抛出异常,这里很容易产生 空轮询。 | ||||||
|  |                 if(now == null){ | ||||||
|  |                     throw new Exception(""); | ||||||
|  |                 } | ||||||
|  |                 if(targetValue.equals(now)){ | ||||||
|  |                     res = 1; | ||||||
|  |                     break; | ||||||
|  |                 } | ||||||
|  |                 Thread.sleep(200); | ||||||
|  |             }catch (Throwable e){ | ||||||
|  |                 logger.info("S7 数据采集 异常. 监听 变量 :"+var.getName()+" 为目标值:"+targetValue+"失败"); | ||||||
|  |                 res = 2; | ||||||
|  |                 break; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         return res; | ||||||
|  |     } | ||||||
|  |     /** | ||||||
|  |      * | ||||||
|  |      * arg: | ||||||
|  |      *      Step2Plc2MesVar 参数类型 | ||||||
|  |      *      targetValue        目的值 | ||||||
|  |      * return: | ||||||
|  |      *      2 s7 访问异常; | ||||||
|  |      *      1 成功; | ||||||
|  |      * */ | ||||||
|  |     private Integer waitingForTarget(Step2Plc2MesVar var, Boolean targetValue) { | ||||||
|  |         Integer res = 0; | ||||||
|  |         while (true){ | ||||||
|  |             try { | ||||||
|  |                 Boolean now = (Boolean) read(S7Client.S7_DDJ2,var); | ||||||
|  |                 if(now == null){ | ||||||
|  |                     throw new Exception(""); | ||||||
|  |                 } | ||||||
|  |                 if(targetValue.equals(now)){ | ||||||
|  |                     res = 1; | ||||||
|  |                     break; | ||||||
|  |                 } | ||||||
|  |                 Thread.sleep(200); | ||||||
|  |             }catch (Throwable e){ | ||||||
|  |                 logger.info("S7 数据采集 异常. 监听 变量 :"+var.getName()+" 为目标值:"+targetValue+"失败"); | ||||||
|  |                 res = 2; | ||||||
|  |                 break; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         return res; | ||||||
|  |     } | ||||||
|  |     /** | ||||||
|  |      * | ||||||
|  |      * arg: | ||||||
|  |      *      Step3Plc2MesVar 参数类型 | ||||||
|  |      *      targetValue        目的值 | ||||||
|  |      * return: | ||||||
|  |      *      2 s7 访问异常; | ||||||
|  |      *      1 成功; | ||||||
|  |      * */ | ||||||
|  |     private Integer waitingForTarget(Step3Plc2MesVar var, Boolean targetValue) { | ||||||
|  |         Integer res = 0; | ||||||
|  |         while (true){ | ||||||
|  |             try { | ||||||
|  |                 Boolean now = (Boolean) read(S7Client.S7_DDJ2,var); | ||||||
|  |                 if(now == null){ | ||||||
|  |                     throw new Exception(""); | ||||||
|  |                 } | ||||||
|  |                 if(targetValue.equals(now)){ | ||||||
|  |                     res = 1; | ||||||
|  |                     break; | ||||||
|  |                 } | ||||||
|  |                 Thread.sleep(200); | ||||||
|  |             }catch (Throwable e){ | ||||||
|  |                 logger.info("S7 数据采集 异常. 监听 变量 :"+var.getName()+" 为目标值:"+targetValue+"失败"); | ||||||
|  |                 res = 2; | ||||||
|  |                 break; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         return res; | ||||||
|  |     } | ||||||
|  | } | ||||||
| @@ -0,0 +1,306 @@ | |||||||
|  | package com.cnbm.dispatch.line2; | ||||||
|  |  | ||||||
|  | import cn.hutool.core.date.DateUtil; | ||||||
|  | import com.cnbm.dispatch.enums.kuka.step2.Step2Mes2PlcVar; | ||||||
|  | import com.cnbm.dispatch.enums.kuka.step2.Step2Plc2MesVar; | ||||||
|  | import com.cnbm.dispatch.enums.kuka.step3.Step3Mes2PlcVar; | ||||||
|  | import com.cnbm.dispatch.enums.kuka.step3.Step3Plc2MesVar; | ||||||
|  | import com.cnbm.dispatch.enums.kuka.step4.Step4Mes2PlcVar; | ||||||
|  | import com.cnbm.dispatch.enums.kuka.step4.Step4Plc2MesVar; | ||||||
|  | import com.cnbm.packing.entity.WoPowerLevel; | ||||||
|  | import com.cnbm.packing.service.*; | ||||||
|  | import com.cnbm.s7.s7connector.enmuc.S7Client; | ||||||
|  | import com.cnbm.s7.s7connector.type.PlcVar; | ||||||
|  | import org.slf4j.Logger; | ||||||
|  | import org.slf4j.LoggerFactory; | ||||||
|  | import org.springframework.beans.factory.annotation.Autowired; | ||||||
|  | import org.springframework.boot.ApplicationArguments; | ||||||
|  | import org.springframework.boot.ApplicationRunner; | ||||||
|  | import org.springframework.core.annotation.Order; | ||||||
|  | import org.springframework.stereotype.Component; | ||||||
|  |  | ||||||
|  | import java.text.DecimalFormat; | ||||||
|  | import java.text.Format; | ||||||
|  | import java.util.Date; | ||||||
|  | import java.util.concurrent.Executors; | ||||||
|  | import java.util.concurrent.ScheduledExecutorService; | ||||||
|  | import java.util.concurrent.TimeUnit; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * @Desc: "" | ||||||
|  |  * @Author: caixiang | ||||||
|  |  * @DATE: 2022/12/23 12:33 | ||||||
|  |  */ | ||||||
|  | @Component | ||||||
|  | @Order(value = 1) | ||||||
|  | public class KukaEvent4ThreadLine2 implements ApplicationRunner { | ||||||
|  |     private static final Logger logger = LoggerFactory.getLogger("EVENT4NGLine2"); | ||||||
|  |  | ||||||
|  |     @Autowired | ||||||
|  |     DynamicDataSourceService service; | ||||||
|  |     @Autowired | ||||||
|  |     WoPowerLevelServiceBiz levelServiceBiz; | ||||||
|  |  | ||||||
|  |     @Autowired | ||||||
|  |     WoCompensationPowerServiceBiz compensationPowerServiceBiz; | ||||||
|  |  | ||||||
|  |     @Autowired | ||||||
|  |     WoPackagingBoxSubstrateServiceBiz substrateServiceBiz; | ||||||
|  |  | ||||||
|  |     @Autowired | ||||||
|  |     WoPackagingBoxServiceBiz boxServiceBiz; | ||||||
|  |  | ||||||
|  |     public KukaEvent4ThreadLine2(){ | ||||||
|  |         this.kukaStep1 = Executors.newScheduledThreadPool(1); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     private ScheduledExecutorService kukaStep1; | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * return | ||||||
|  |      *          成功: 返回相应的object对象 | ||||||
|  |      *          失败: 返回null | ||||||
|  |      * */ | ||||||
|  |     private Object read(S7Client s7Client, Step4Plc2MesVar var) { | ||||||
|  |         try { | ||||||
|  |             return s7Client.read(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getLength(), var.getStrSize(), var.getType()); | ||||||
|  |         }catch (Throwable e){ | ||||||
|  |             logger.info("host:"+s7Client.getHost()+" ; read 操作出现问题: {}",e.getMessage(),e); | ||||||
|  |             return null; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     private void write(S7Client s7Client, Step4Mes2PlcVar var, Object newValue) { | ||||||
|  |         if(var.getType().equals(PlcVar.STRING_Array)){ | ||||||
|  |             String[] s = (String[])newValue; | ||||||
|  |             String[] ss = (String[])newValue; | ||||||
|  |             if(s.length > var.getLength() ){ | ||||||
|  |                 ss = new String[var.getLength()]; | ||||||
|  |                 for(int i=0;i< var.getLength();i++){ | ||||||
|  |                     ss[i] = s[i]; | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             s7Client.write(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getStrSize(), var.getType(),ss); | ||||||
|  |         }else { | ||||||
|  |             s7Client.write(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getStrSize(), var.getType(),newValue); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     private Object read(S7Client s7Client, Step2Plc2MesVar var) { | ||||||
|  |         try { | ||||||
|  |             return s7Client.read(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getLength(), var.getStrSize(), var.getType()); | ||||||
|  |         }catch (Throwable e){ | ||||||
|  |             logger.info("host:"+s7Client.getHost()+" ; read 操作出现问题: {}",e.getMessage(),e); | ||||||
|  |             return null; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     private void write(S7Client s7Client, Step2Mes2PlcVar var, Object newValue) { | ||||||
|  |         if(var.getType().equals(PlcVar.STRING_Array)){ | ||||||
|  |             String[] s = (String[])newValue; | ||||||
|  |             String[] ss = (String[])newValue; | ||||||
|  |             if(s.length > var.getLength() ){ | ||||||
|  |                 ss = new String[var.getLength()]; | ||||||
|  |                 for(int i=0;i< var.getLength();i++){ | ||||||
|  |                     ss[i] = s[i]; | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             s7Client.write(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getStrSize(), var.getType(),ss); | ||||||
|  |         }else { | ||||||
|  |             s7Client.write(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getStrSize(), var.getType(),newValue); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     private Object read(S7Client s7Client, Step3Plc2MesVar var) { | ||||||
|  |         try { | ||||||
|  |             return s7Client.read(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getLength(), var.getStrSize(), var.getType()); | ||||||
|  |         }catch (Throwable e){ | ||||||
|  |             logger.info("host:"+s7Client.getHost()+" ; read 操作出现问题: {}",e.getMessage(),e); | ||||||
|  |             return null; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     private void write(S7Client s7Client, Step3Mes2PlcVar var, Object newValue) { | ||||||
|  |         if(var.getType().equals(PlcVar.STRING_Array)){ | ||||||
|  |             String[] s = (String[])newValue; | ||||||
|  |             String[] ss = (String[])newValue; | ||||||
|  |             if(s.length > var.getLength() ){ | ||||||
|  |                 ss = new String[var.getLength()]; | ||||||
|  |                 for(int i=0;i< var.getLength();i++){ | ||||||
|  |                     ss[i] = s[i]; | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             s7Client.write(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getStrSize(), var.getType(),ss); | ||||||
|  |         }else { | ||||||
|  |             s7Client.write(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getStrSize(), var.getType(),newValue); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     public String getBoxId(String sapMaterial){ | ||||||
|  |         Integer todayBoxNum = service.getTodayBoxNum()+1; | ||||||
|  |         String nowTime = DateUtil.format(new Date(), "yyMMdd"); | ||||||
|  |  | ||||||
|  |         todayBoxNum+=500; | ||||||
|  |         logger.info("BOXID生成Event-------现在生成boxId ,sapMaterial: "+sapMaterial+",nowTime:"+nowTime+",todayBoxNum:"+formateString(todayBoxNum)); | ||||||
|  |         String res = "301"+sapMaterial+nowTime+formateString(todayBoxNum); | ||||||
|  |         return res; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     public String getErrorBoxId(String sapMaterial){ | ||||||
|  |  | ||||||
|  |         String nowTime = DateUtil.format(new Date(), "yyMMdd"); | ||||||
|  |         String mixBoxError = "001"; | ||||||
|  |         String res = "444"+sapMaterial+nowTime+mixBoxError; | ||||||
|  |         logger.info("BOXID生成Event-------现在生成errBoxId ,sapMaterial: "+sapMaterial+",nowTime:"+nowTime); | ||||||
|  |  | ||||||
|  |         return res; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public String removeKG(String str){ | ||||||
|  |         return str.substring(0,17); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public static void main(String[] args) { | ||||||
|  |         Integer a = 102; | ||||||
|  |         Format f1 = new DecimalFormat("000"); | ||||||
|  |         System.out.println(f1.format(a)); | ||||||
|  |     } | ||||||
|  |     public String formateString(Integer a){ | ||||||
|  |         Format f1 = new DecimalFormat("000"); | ||||||
|  |         return f1.format(a); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     //return true 出现混档了,return false 没有出现混档 | ||||||
|  |     private boolean isMixLevel(String[] subIds,Integer size){ | ||||||
|  |         String correctLevel = substrateServiceBiz.getBySubId(subIds[0]).getPowerLevel(); | ||||||
|  |         String errMsg = "以下基板ID出现混档:"; | ||||||
|  |         boolean res = false; | ||||||
|  |         for(int i=0;i<size;i++){ | ||||||
|  |             String powerLevel = substrateServiceBiz.getBySubId(subIds[i]).getPowerLevel(); | ||||||
|  |  | ||||||
|  |             if(!powerLevel.equals(correctLevel)){ | ||||||
|  |                 errMsg += "基板ID:"+subIds[i]+" 档位:"+powerLevel+", "; | ||||||
|  |                 res = true; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         if(res){ | ||||||
|  |             logger.error(errMsg); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         return res; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public void run(ApplicationArguments args) throws Exception { | ||||||
|  |  | ||||||
|  |         kukaStep1.scheduleAtFixedRate(new Runnable() { | ||||||
|  |             @Override | ||||||
|  |             public void run() { | ||||||
|  |                 try { | ||||||
|  |  | ||||||
|  |                     //调度开始 | ||||||
|  |                     Integer subArrived = waitingForTarget(Step4Plc2MesVar.SubArrivedToMes, true); | ||||||
|  |                     logger.info(""); | ||||||
|  |                     logger.info("==================================  现在开始执行 过程四 任务( 开始 )   ==================================="); | ||||||
|  |                     if(subArrived != 1){ | ||||||
|  |                         logger.info("NG口基板Event---  失败"+" --- "+" MES监听 Step4Plc2MesVar.SubArrivedToMes 是否 等于 true 失败"); | ||||||
|  |                     } else if (subArrived == 2) { | ||||||
|  |                         throw new Exception("MES 监听值出现异常。"); | ||||||
|  |                     } | ||||||
|  |                     logger.info("NG口基板Event --- 成功 ---- MES监听到 Step4Plc2MesVar.SubArrivedToMes==true"); | ||||||
|  |  | ||||||
|  |                     //一. 从plc 中获取 subId | ||||||
|  |                     String subId = (String) read(S7Client.S7_DDJ2,Step4Plc2MesVar.SubIdToMes); | ||||||
|  |                     Integer lineNum = 1; | ||||||
|  |                     //把基板ID字符串的空格去掉,因为plc中设置的20位,但实际基板ID就是17位,因为带空格去数据库查询 有问题的。 | ||||||
|  |                     if(subId == null ){ | ||||||
|  |                         logger.info("NG口基板Event---  失败"+" --- "+" MES采集到null值,subId:"+subId); | ||||||
|  |                     } | ||||||
|  |                     subId = removeKG(subId); | ||||||
|  |                     logger.info("NG口基板Event --- 成功 ---- MES 从plu中 read 到基板id:"+subId); | ||||||
|  |  | ||||||
|  |                     //二. MES 业务 | ||||||
|  |                     //===============           MES 业务 开始         ================= | ||||||
|  |                     logger.info("=================  现在开始执行 过程四 任务 ( MES 业务 ) ( 开始 )   =================="); | ||||||
|  |                     //1. 从comline数据库中获取 实际pmpp | ||||||
|  |                     float pmppActual = service.getPMPPBySubId(subId); | ||||||
|  |                     //2. 匹配和计算补偿功率 | ||||||
|  |                     float pmppCompensation = compensationPowerServiceBiz.calculCompensationPMPP(pmppActual,lineNum); | ||||||
|  |                     //3. 依据补偿功率,获取工艺参数,并且把这些工艺参数传给kuka | ||||||
|  |                     WoPowerLevel argByPMPP = levelServiceBiz.getArgByPMPP(pmppCompensation, lineNum); | ||||||
|  |                     write(S7Client.S7_DDJ2,Step4Mes2PlcVar.dLable_Pnom,Integer.valueOf(argByPMPP.getPowerClass())); | ||||||
|  |                     write(S7Client.S7_DDJ2,Step4Mes2PlcVar.dLable_Voc,argByPMPP.getLableVoc()); | ||||||
|  |                     write(S7Client.S7_DDJ2,Step4Mes2PlcVar.dLable_Isc,argByPMPP.getLableIsc()); | ||||||
|  |                     write(S7Client.S7_DDJ2,Step4Mes2PlcVar.dLable_Vmpp,argByPMPP.getLableVmpp()); | ||||||
|  |                     write(S7Client.S7_DDJ2,Step4Mes2PlcVar.dLable_Impp,argByPMPP.getLableImpp()); | ||||||
|  |                     logger.info("NG口基板Event--- 采集到 基板ID: "+subId+", 线边号:"+lineNum+",从camline 获取到实际pmpp"+pmppActual+",计算后 补偿功率:"+pmppCompensation+",dLable_Pnom: "+argByPMPP.getPowerClass() +",dLable_Voc: "+argByPMPP.getLableVoc()+",dLable_Isc: "+argByPMPP.getLableIsc()+",dLable_Vmpp: "+argByPMPP.getLableVmpp()+",dLable_Impp: "+argByPMPP.getLableImpp()); | ||||||
|  |  | ||||||
|  |                     logger.info("=================  现在开始执行 过程四 任务 ( MES 业务 - 数据已经传给PLC ) ( 结束 )   =================="); | ||||||
|  |                     //===============           MES 业务 结束         ================= | ||||||
|  |  | ||||||
|  |                     //三. 当MES完成任务后,把MesToPlc.SubArrivedFinish变量置为true,告诉plc,我操作完成了 | ||||||
|  |                     write(S7Client.S7_DDJ2,Step4Mes2PlcVar.SubArrivedFinish,true); | ||||||
|  |                     logger.info("NG口基板Event--- 基板ID: "+subId+", SubArrivedFinish,置为true 成功"); | ||||||
|  |                     //四. mes 监控 到PlcToMes.SubArrived==false,就把MesToPlc.SubArrivedFinish置为false | ||||||
|  |                     Integer subArrived2 = waitingForTarget(Step4Plc2MesVar.SubArrivedToMes, false); | ||||||
|  |                     if(subArrived2 != 1){ | ||||||
|  |                         logger.info("NG口基板Event--- 失败"+" --- "+"MES监听 Step4Plc2MesVar.SubArrivedToMes 是否 等于 1 失败"); | ||||||
|  |                     }else if (subArrived2 == 2) { | ||||||
|  |                         throw new Exception("MES 监听值出现异常。"); | ||||||
|  |                     } | ||||||
|  |  | ||||||
|  |                     write(S7Client.S7_DDJ2,Step4Mes2PlcVar.SubArrivedFinish,false); | ||||||
|  |                     logger.info("NG口基板Event--- 基板ID: "+subId+", SubArrivedFinish,置为 false 成功"); | ||||||
|  |                     logger.info("==================================  现在开始执行 过程四 任务( 结束 )   ==================================="); | ||||||
|  |                     logger.info(""); | ||||||
|  |                 }catch (Throwable e){ | ||||||
|  |                     logger.info("NG口基板Event--- 出现异常 : {}",e.getMessage(),e); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         },1,1, TimeUnit.SECONDS); | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * | ||||||
|  |      * arg: | ||||||
|  |      *      Step4Plc2MesVar 参数类型 | ||||||
|  |      *      targetValue        目的值 | ||||||
|  |      * return: | ||||||
|  |      *      2 s7 访问异常; | ||||||
|  |      *      1 成功; | ||||||
|  |      * */ | ||||||
|  |     private Integer waitingForTarget(Step4Plc2MesVar var, Boolean targetValue) { | ||||||
|  |         Integer res = 0; | ||||||
|  |         while (true){ | ||||||
|  |             try { | ||||||
|  |  | ||||||
|  |                 Boolean now = (Boolean) read(S7Client.S7_DDJ2,var); | ||||||
|  |                 //注意:即使now为null ,这里也不会抛出异常,这里很容易产生 空轮询。 | ||||||
|  |                 if(now == null){ | ||||||
|  |                     throw new Exception(""); | ||||||
|  |                 } | ||||||
|  |                 if(targetValue.equals(now)){ | ||||||
|  |                     res = 1; | ||||||
|  |                     break; | ||||||
|  |                 } | ||||||
|  |                 Thread.sleep(200); | ||||||
|  |             }catch (Throwable e){ | ||||||
|  |                 logger.info("S7 数据采集 异常. 监听 变量 :"+var.getName()+" 为目标值:"+targetValue+"失败"); | ||||||
|  |                 res = 2; | ||||||
|  |                 break; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         return res; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } | ||||||
| @@ -3,6 +3,7 @@ package com.cnbm.packing.controller; | |||||||
| import com.cnbm.admin.annotation.LogOperation; | import com.cnbm.admin.annotation.LogOperation; | ||||||
| import com.cnbm.common.constant.Constant; | import com.cnbm.common.constant.Constant; | ||||||
| import com.cnbm.common.page.PageData; | import com.cnbm.common.page.PageData; | ||||||
|  | import com.cnbm.common.utils.ConvertUtils; | ||||||
| import com.cnbm.common.utils.ExcelUtils; | import com.cnbm.common.utils.ExcelUtils; | ||||||
| import com.cnbm.common.utils.Result; | import com.cnbm.common.utils.Result; | ||||||
| import com.cnbm.common.validator.AssertUtils; | import com.cnbm.common.validator.AssertUtils; | ||||||
| @@ -25,6 +26,7 @@ import springfox.documentation.annotations.ApiIgnore; | |||||||
|  |  | ||||||
| import javax.servlet.http.HttpServletResponse; | import javax.servlet.http.HttpServletResponse; | ||||||
| import java.time.LocalDateTime; | import java.time.LocalDateTime; | ||||||
|  | import java.time.format.DateTimeFormatter; | ||||||
| import java.util.List; | import java.util.List; | ||||||
| import java.util.Map; | import java.util.Map; | ||||||
|  |  | ||||||
| @@ -119,8 +121,26 @@ public class ChangePackagingBoxHistoryController { | |||||||
|     @PreAuthorize("@ex.hasAuthority('packing:changePackagingBoxHistory:export')") |     @PreAuthorize("@ex.hasAuthority('packing:changePackagingBoxHistory:export')") | ||||||
|     public void export(@ApiIgnore @RequestParam Map<String, Object> params, HttpServletResponse response) throws Exception { |     public void export(@ApiIgnore @RequestParam Map<String, Object> params, HttpServletResponse response) throws Exception { | ||||||
|         List<ChangePackagingBoxHistory> list = changePackagingBoxHistoryService.historyList(params); |         List<ChangePackagingBoxHistory> list = changePackagingBoxHistoryService.historyList(params); | ||||||
|  |         List<ChangePackagingBoxHistoryDTO> dtoList = ConvertUtils.sourceToTarget(list, ChangePackagingBoxHistoryDTO.class); | ||||||
|         if(list.size()>0) { |         if(list.size()>0) { | ||||||
|             ExcelUtils.exportExcelToTarget(response, "包装箱模组操作记录", list, ChangePackagingBoxHistoryExcel.class); |             for(ChangePackagingBoxHistoryDTO dto:dtoList){ | ||||||
|  |                 //操作时间 转化 | ||||||
|  |                 DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); | ||||||
|  |                 if(dto.getCreateTime()!=null){ | ||||||
|  |                     dto.setCreateTime1(df.format(dto.getCreateTime())); | ||||||
|  |                 } | ||||||
|  |                 //操作类型 1=模组加入包装箱;2=模组移出包装箱;3=模组换箱 | ||||||
|  |                 if(dto.getType()==1){ | ||||||
|  |                     dto.setType1("模组加入包装箱"); | ||||||
|  |                 } | ||||||
|  |                 if(dto.getType()==2){ | ||||||
|  |                     dto.setType1("模组移出包装箱"); | ||||||
|  |                 } | ||||||
|  |                 if(dto.getType()==3){ | ||||||
|  |                     dto.setType1("模组换箱"); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             ExcelUtils.exportExcelToTarget(response, "包装箱模组操作记录", dtoList, ChangePackagingBoxHistoryExcel.class); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -23,6 +23,7 @@ import org.springframework.web.bind.annotation.*; | |||||||
| import springfox.documentation.annotations.ApiIgnore; | import springfox.documentation.annotations.ApiIgnore; | ||||||
|  |  | ||||||
| import javax.servlet.http.HttpServletResponse; | import javax.servlet.http.HttpServletResponse; | ||||||
|  | import java.time.LocalDateTime; | ||||||
| import java.util.List; | import java.util.List; | ||||||
| import java.util.Map; | import java.util.Map; | ||||||
|  |  | ||||||
| @@ -50,15 +51,15 @@ public class PrintModelController { | |||||||
|         @ApiImplicitParam(name = "name", value = "标签名称", paramType = "query", dataTypeClass = String.class), |         @ApiImplicitParam(name = "name", value = "标签名称", paramType = "query", dataTypeClass = String.class), | ||||||
|         @ApiImplicitParam(name = "type", value = "类型,0:模组标签,1:等级标签", paramType = "query", dataTypeClass = Integer.class), |         @ApiImplicitParam(name = "type", value = "类型,0:模组标签,1:等级标签", paramType = "query", dataTypeClass = Integer.class), | ||||||
|         @ApiImplicitParam(name = "lineBody", value = "线体,1=F ; 2=S", paramType = "query", dataTypeClass = Integer.class), |         @ApiImplicitParam(name = "lineBody", value = "线体,1=F ; 2=S", paramType = "query", dataTypeClass = Integer.class), | ||||||
|         @ApiImplicitParam(name = "enabled", value = "启用状态:0 、停用,1、启用", paramType = "query", dataTypeClass = Integer.class) |         @ApiImplicitParam(name = "isEnable", value = "启用状态:0 、停用,1、启用", paramType = "query", dataTypeClass = Integer.class) | ||||||
|     }) |     }) | ||||||
|     @PreAuthorize("@ex.hasAuthority('packing:printModel:page')") |     //@PreAuthorize("@ex.hasAuthority('packing:printModel:page')") | ||||||
|     public Result<PageData<PrintModelDTO>> page(@ApiIgnore @RequestParam Map<String, Object> params){ |     public Result<PageData<PrintModelDTO>> page(@ApiIgnore @RequestParam Map<String, Object> params){ | ||||||
|         PageData<PrintModelDTO> page = printModelService.page(params); |         PageData<PrintModelDTO> page = printModelService.page(params); | ||||||
|  |  | ||||||
|         return new Result<PageData<PrintModelDTO>>().ok(page); |         return new Result<PageData<PrintModelDTO>>().ok(page); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|     @GetMapping("{id}") |     @GetMapping("{id}") | ||||||
|     @ApiOperation("信息") |     @ApiOperation("信息") | ||||||
|     @PreAuthorize("@ex.hasAuthority('packing:printModel:info')") |     @PreAuthorize("@ex.hasAuthority('packing:printModel:info')") | ||||||
| @@ -128,4 +129,11 @@ public class PrintModelController { | |||||||
|         return new Result<String>().ok(code); |         return new Result<String>().ok(code); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     @GetMapping("getByLineBody/{lineBody}") | ||||||
|  |     @ApiOperation("依据line_body 查询,is_enable==1 && type==2  limit 1的数据") | ||||||
|  |     public Result<PrintModelDTO> getByLineBody(@PathVariable("lineBody") Integer lineBody){ | ||||||
|  |         PrintModelDTO dto = printModelService.getByLineBody(lineBody); | ||||||
|  |         return new Result<PrintModelDTO>().ok(dto); | ||||||
|  |     } | ||||||
|  |  | ||||||
| } | } | ||||||
| @@ -0,0 +1,153 @@ | |||||||
|  | package com.cnbm.packing.controller; | ||||||
|  |  | ||||||
|  | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | ||||||
|  | import com.cnbm.admin.annotation.LogOperation; | ||||||
|  | import com.cnbm.common.constant.Constant; | ||||||
|  | import com.cnbm.common.page.PageData; | ||||||
|  | import com.cnbm.common.utils.ExcelUtils; | ||||||
|  | import com.cnbm.common.utils.Result; | ||||||
|  | import com.cnbm.common.validator.AssertUtils; | ||||||
|  | import com.cnbm.common.validator.ValidatorUtils; | ||||||
|  | import com.cnbm.common.validator.group.AddGroup; | ||||||
|  | import com.cnbm.common.validator.group.DefaultGroup; | ||||||
|  | import com.cnbm.common.validator.group.UpdateGroup; | ||||||
|  | import com.cnbm.packing.dto.IdVo; | ||||||
|  | import com.cnbm.packing.dto.ProductLevelDTO; | ||||||
|  | import com.cnbm.packing.entity.ProductLevel; | ||||||
|  | import com.cnbm.packing.excel.ProductLevelExcel; | ||||||
|  | import com.cnbm.packing.mapper.ProductLevelMapper; | ||||||
|  | import com.cnbm.packing.service.ProductLevelServiceBiz; | ||||||
|  | import io.swagger.annotations.Api; | ||||||
|  | import io.swagger.annotations.ApiImplicitParam; | ||||||
|  | import io.swagger.annotations.ApiImplicitParams; | ||||||
|  | import io.swagger.annotations.ApiOperation; | ||||||
|  | import org.springframework.beans.factory.annotation.Autowired; | ||||||
|  | import org.springframework.security.access.prepost.PreAuthorize; | ||||||
|  | import org.springframework.web.bind.annotation.*; | ||||||
|  | import springfox.documentation.annotations.ApiIgnore; | ||||||
|  |  | ||||||
|  | import javax.servlet.http.HttpServletResponse; | ||||||
|  | import java.util.List; | ||||||
|  | import java.util.Map; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 产品等级 表  前端控制器 | ||||||
|  |  * | ||||||
|  |  * @author codeGenerator | ||||||
|  |  * @since  2023-12-21 | ||||||
|  |  */ | ||||||
|  | @RestController | ||||||
|  | @RequestMapping("/basic/productLevel") | ||||||
|  | @Api(tags="产品等级 表") | ||||||
|  | public class ProductLevelController { | ||||||
|  |     @Autowired | ||||||
|  |     private ProductLevelServiceBiz productLevelService; | ||||||
|  |     @Autowired | ||||||
|  |     private ProductLevelMapper productLevelMapper; | ||||||
|  |  | ||||||
|  |     @GetMapping("page") | ||||||
|  |     @ApiOperation("分页") | ||||||
|  |     @ApiImplicitParams({ | ||||||
|  |         @ApiImplicitParam(name = Constant.PAGE, value = "当前页码,从1开始", paramType = "query", required = true, dataTypeClass=Integer.class) , | ||||||
|  |         @ApiImplicitParam(name = Constant.LIMIT, value = "每页显示记录数", paramType = "query",required = true, dataTypeClass=Integer.class) , | ||||||
|  |         @ApiImplicitParam(name = Constant.ORDER_FIELD, value = "排序字段", paramType = "query", dataTypeClass=String.class) , | ||||||
|  |         @ApiImplicitParam(name = Constant.ORDER, value = "排序方式,可选值(asc、desc)", paramType = "query", dataTypeClass=String.class), | ||||||
|  |         @ApiImplicitParam(name = "name", value = "产品等级名", paramType = "query", dataTypeClass = String.class) | ||||||
|  |     }) | ||||||
|  | //    @PreAuthorize("@ex.hasAuthority('basic:productLevel:page')") | ||||||
|  |     public Result<PageData<ProductLevelDTO>> page(@ApiIgnore @RequestParam Map<String, Object> params){ | ||||||
|  |         PageData<ProductLevelDTO> page = productLevelService.page(params); | ||||||
|  |  | ||||||
|  |         return new Result<PageData<ProductLevelDTO>>().ok(page); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @GetMapping("{id}") | ||||||
|  |     @ApiOperation("信息") | ||||||
|  | //    @PreAuthorize("@ex.hasAuthority('basic:productLevel:info')") | ||||||
|  |     public Result<ProductLevelDTO> get(@PathVariable("id") Long id){ | ||||||
|  |         ProductLevelDTO data = productLevelService.get(id); | ||||||
|  |  | ||||||
|  |         return new Result<ProductLevelDTO>().ok(data); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @PostMapping | ||||||
|  |     @ApiOperation("保存") | ||||||
|  |     @LogOperation("保存") | ||||||
|  | //    @PreAuthorize("@ex.hasAuthority('basic:productLevel:save')") | ||||||
|  |     public Result<IdVo> save(@RequestBody ProductLevelDTO dto){ | ||||||
|  |         //效验数据 | ||||||
|  |         ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class); | ||||||
|  |  | ||||||
|  | //        //验证编码是否重名 | ||||||
|  | //        QueryWrapper<ProductLevel> wrapper1 = new QueryWrapper<>(); | ||||||
|  | //        wrapper1.eq(ProductLevel.CODE, dto.getCode()); | ||||||
|  | //        if(productLevelMapper.selectCount(wrapper1)!= 0){ | ||||||
|  | //            return new Result().error(1,"编码重复"); | ||||||
|  | //        } | ||||||
|  |         //验证名称是否重名 | ||||||
|  |         QueryWrapper<ProductLevel> wrapper2 = new QueryWrapper<>(); | ||||||
|  |         wrapper2.eq(ProductLevel.PRODUCT_LEVEL, dto.getProductLevel()); | ||||||
|  |         if(productLevelMapper.selectCount(wrapper2)!= 0){ | ||||||
|  |             return new Result().error(1,"名称重复"); | ||||||
|  |         } | ||||||
|  |         else { | ||||||
|  |             return new Result<IdVo>().ok(productLevelService.add(dto)); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @PutMapping | ||||||
|  |     @ApiOperation("修改") | ||||||
|  |     @LogOperation("修改") | ||||||
|  | //    @PreAuthorize("@ex.hasAuthority('basic:productLevel:update')") | ||||||
|  |     public Result<IdVo> update(@RequestBody ProductLevelDTO dto){ | ||||||
|  |         //效验数据 | ||||||
|  |         ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class); | ||||||
|  |  | ||||||
|  |         //验证编码是否重名 | ||||||
|  |         ProductLevelDTO entity = productLevelService.get(dto.getId()); | ||||||
|  |         QueryWrapper<ProductLevel> wrapper1 = new QueryWrapper<>(); | ||||||
|  |         wrapper1.eq(ProductLevel.CODE, dto.getCode()); | ||||||
|  |         if(!entity.getCode().equals(dto.getCode()) && productLevelMapper.selectCount(wrapper1)!= 0){ | ||||||
|  |             return new Result().error(1,"编码重复"); | ||||||
|  |         } | ||||||
|  |         //验证名称是否重名 | ||||||
|  |         QueryWrapper<ProductLevel> wrapper2 = new QueryWrapper<>(); | ||||||
|  |         wrapper2.eq(ProductLevel.PRODUCT_LEVEL, dto.getProductLevel()); | ||||||
|  |         if(!entity.getProductLevel().equals(dto.getProductLevel()) && productLevelMapper.selectCount(wrapper2)!= 0){ | ||||||
|  |             return new Result().error(1,"名称重复"); | ||||||
|  |         } | ||||||
|  |         else { | ||||||
|  |             return new Result<IdVo>().ok(productLevelService.edit(dto)); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @DeleteMapping | ||||||
|  |     @ApiOperation("删除") | ||||||
|  |     @LogOperation("删除") | ||||||
|  | //    @PreAuthorize("@ex.hasAuthority('basic:productLevel:delete')") | ||||||
|  |     public Result delete(@RequestBody Long[] ids){ | ||||||
|  |         //效验数据 | ||||||
|  |         AssertUtils.isArrayEmpty(ids, "id"); | ||||||
|  |  | ||||||
|  |         productLevelService.delete(ids); | ||||||
|  |  | ||||||
|  |         return new Result(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @GetMapping("export") | ||||||
|  |     @ApiOperation("导出") | ||||||
|  |     @LogOperation("导出") | ||||||
|  | //    @PreAuthorize("@ex.hasAuthority('basic:productLevel:export')") | ||||||
|  |     public void export(@ApiIgnore @RequestParam Map<String, Object> params, HttpServletResponse response) throws Exception { | ||||||
|  |         List<ProductLevelDTO> list = productLevelService.list(params); | ||||||
|  |  | ||||||
|  |         ExcelUtils.exportExcelToTarget(response, null, list, ProductLevelExcel.class); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @PostMapping(value = "list") | ||||||
|  |     @ApiOperation(value = "获取产品等级列表") | ||||||
|  |     public List<ProductLevelDTO> list(){ | ||||||
|  |         return productLevelService.list(); | ||||||
|  |     } | ||||||
|  | } | ||||||
| @@ -0,0 +1,156 @@ | |||||||
|  | package com.cnbm.packing.controller; | ||||||
|  |  | ||||||
|  | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | ||||||
|  | import com.cnbm.admin.annotation.LogOperation; | ||||||
|  | import com.cnbm.common.constant.Constant; | ||||||
|  | import com.cnbm.common.page.PageData; | ||||||
|  | import com.cnbm.common.utils.ExcelUtils; | ||||||
|  | import com.cnbm.common.utils.Result; | ||||||
|  | import com.cnbm.common.validator.AssertUtils; | ||||||
|  | import com.cnbm.common.validator.ValidatorUtils; | ||||||
|  | import com.cnbm.common.validator.group.AddGroup; | ||||||
|  | import com.cnbm.common.validator.group.DefaultGroup; | ||||||
|  | import com.cnbm.common.validator.group.UpdateGroup; | ||||||
|  | import com.cnbm.packing.dto.IdVo; | ||||||
|  | import com.cnbm.packing.dto.ScenesDTO; | ||||||
|  | import com.cnbm.packing.entity.Scenes; | ||||||
|  | import com.cnbm.packing.excel.ScenesExcel; | ||||||
|  | import com.cnbm.packing.mapper.ScenesMapper; | ||||||
|  | import com.cnbm.packing.service.ScenesServiceBiz; | ||||||
|  | import io.swagger.annotations.Api; | ||||||
|  | import io.swagger.annotations.ApiImplicitParam; | ||||||
|  | import io.swagger.annotations.ApiImplicitParams; | ||||||
|  | import io.swagger.annotations.ApiOperation; | ||||||
|  | import org.springframework.beans.factory.annotation.Autowired; | ||||||
|  | import org.springframework.security.access.prepost.PreAuthorize; | ||||||
|  | import org.springframework.web.bind.annotation.*; | ||||||
|  | import springfox.documentation.annotations.ApiIgnore; | ||||||
|  |  | ||||||
|  | import javax.servlet.http.HttpServletResponse; | ||||||
|  | import java.util.List; | ||||||
|  | import java.util.Map; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 场景 表  前端控制器 | ||||||
|  |  * | ||||||
|  |  * @author codeGenerator | ||||||
|  |  * @since  2023-12-21 | ||||||
|  |  */ | ||||||
|  | @RestController | ||||||
|  | @RequestMapping("/basic/scenes") | ||||||
|  | @Api(tags="场景 表") | ||||||
|  | public class ScenesController { | ||||||
|  |     @Autowired | ||||||
|  |     private ScenesServiceBiz scenesService; | ||||||
|  |     @Autowired | ||||||
|  |     private ScenesMapper scenesMapper; | ||||||
|  |  | ||||||
|  |     @GetMapping("page") | ||||||
|  |     @ApiOperation("分页") | ||||||
|  |     @ApiImplicitParams({ | ||||||
|  |         @ApiImplicitParam(name = Constant.PAGE, value = "当前页码,从1开始", paramType = "query", required = true, dataTypeClass=Integer.class) , | ||||||
|  |         @ApiImplicitParam(name = Constant.LIMIT, value = "每页显示记录数", paramType = "query",required = true, dataTypeClass=Integer.class) , | ||||||
|  |         @ApiImplicitParam(name = Constant.ORDER_FIELD, value = "排序字段", paramType = "query", dataTypeClass=String.class) , | ||||||
|  |         @ApiImplicitParam(name = Constant.ORDER, value = "排序方式,可选值(asc、desc)", paramType = "query", dataTypeClass=String.class), | ||||||
|  |         @ApiImplicitParam(name = "name", value = "场景名", paramType = "query", dataTypeClass = String.class) | ||||||
|  |     }) | ||||||
|  | //    @PreAuthorize("@ex.hasAuthority('basic:scenes:page')") | ||||||
|  |     public Result<PageData<ScenesDTO>> page(@ApiIgnore @RequestParam Map<String, Object> params){ | ||||||
|  |         PageData<ScenesDTO> page = scenesService.page(params); | ||||||
|  |  | ||||||
|  |         return new Result<PageData<ScenesDTO>>().ok(page); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @GetMapping("{id}") | ||||||
|  |     @ApiOperation("信息") | ||||||
|  | //    @PreAuthorize("@ex.hasAuthority('basic:scenes:info')") | ||||||
|  |     public Result<ScenesDTO> get(@PathVariable("id") Long id){ | ||||||
|  |         ScenesDTO data = scenesService.get(id); | ||||||
|  |  | ||||||
|  |         return new Result<ScenesDTO>().ok(data); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @PostMapping | ||||||
|  |     @ApiOperation("保存") | ||||||
|  |     @LogOperation("保存") | ||||||
|  | //    @PreAuthorize("@ex.hasAuthority('basic:scenes:save')") | ||||||
|  |     public Result<IdVo> save(@RequestBody ScenesDTO dto){ | ||||||
|  |         //效验数据 | ||||||
|  |         ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class); | ||||||
|  |  | ||||||
|  |         //验证编码是否重名 | ||||||
|  |         QueryWrapper<Scenes> wrapper1 = new QueryWrapper<>(); | ||||||
|  |         wrapper1.eq(Scenes.CODE, dto.getCode()); | ||||||
|  |         if(scenesMapper.selectCount(wrapper1)!= 0){ | ||||||
|  |             return new Result().error(1,"编码重复"); | ||||||
|  |         } | ||||||
|  |         //验证名称是否重名 | ||||||
|  |         QueryWrapper<Scenes> wrapper2 = new QueryWrapper<>(); | ||||||
|  |         wrapper2.eq(Scenes.SCENES_NAME, dto.getScenesName()); | ||||||
|  |         System.out.println(scenesMapper.selectCount(wrapper2)); | ||||||
|  |         if(scenesMapper.selectCount(wrapper2)!= 0){ | ||||||
|  |             return new Result().error(1,"名称重复"); | ||||||
|  |         } | ||||||
|  |         else { | ||||||
|  |             return new Result<IdVo>().ok(scenesService.add(dto)); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @PutMapping | ||||||
|  |     @ApiOperation("修改") | ||||||
|  |     @LogOperation("修改") | ||||||
|  | //    @PreAuthorize("@ex.hasAuthority('basic:scenes:update')") | ||||||
|  |     public Result<IdVo> update(@RequestBody ScenesDTO dto){ | ||||||
|  |         //效验数据 | ||||||
|  |         ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class); | ||||||
|  |  | ||||||
|  |         //验证编码是否重名 | ||||||
|  |         ScenesDTO entity = scenesService.get(dto.getId()); | ||||||
|  |         QueryWrapper<Scenes> wrapper1 = new QueryWrapper<>(); | ||||||
|  |         wrapper1.eq(Scenes.CODE, dto.getCode()); | ||||||
|  |         if(!entity.getCode().equals(dto.getCode()) && scenesMapper.selectCount(wrapper1)!= 0){ | ||||||
|  |             return new Result().error(1,"编码重复"); | ||||||
|  |         } | ||||||
|  |         //验证名称是否重名 | ||||||
|  |         QueryWrapper<Scenes> wrapper2 = new QueryWrapper<>(); | ||||||
|  |         wrapper2.eq(Scenes.SCENES_NAME, dto.getScenesName()); | ||||||
|  |         System.out.println(scenesMapper.selectCount(wrapper2)); | ||||||
|  |         if(!entity.getScenesName().equals(dto.getScenesName()) && scenesMapper.selectCount(wrapper2)!= 0){ | ||||||
|  |             return new Result().error(1,"名称重复"); | ||||||
|  |         } | ||||||
|  |         else { | ||||||
|  |             return new Result<IdVo>().ok(scenesService.edit(dto)); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @DeleteMapping | ||||||
|  |     @ApiOperation("删除") | ||||||
|  |     @LogOperation("删除") | ||||||
|  | //    @PreAuthorize("@ex.hasAuthority('basic:scenes:delete')") | ||||||
|  |     public Result delete(@RequestBody Long[] ids){ | ||||||
|  |         //效验数据 | ||||||
|  |         AssertUtils.isArrayEmpty(ids, "id"); | ||||||
|  |  | ||||||
|  |         scenesService.delete(ids); | ||||||
|  |  | ||||||
|  |         return new Result(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @GetMapping("export") | ||||||
|  |     @ApiOperation("导出") | ||||||
|  |     @LogOperation("导出") | ||||||
|  | //    @PreAuthorize("@ex.hasAuthority('basic:scenes:export')") | ||||||
|  |     public void export(@ApiIgnore @RequestParam Map<String, Object> params, HttpServletResponse response) throws Exception { | ||||||
|  |         List<ScenesDTO> list = scenesService.list(params); | ||||||
|  |  | ||||||
|  |         ExcelUtils.exportExcelToTarget(response, null, list, ScenesExcel.class); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @PostMapping(value = "list") | ||||||
|  |     @ApiOperation(value = "获取场景列表") | ||||||
|  |     public List<ScenesDTO> list(){ | ||||||
|  |         return scenesService.list(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  | } | ||||||
| @@ -1,6 +1,7 @@ | |||||||
| package com.cnbm.packing.controller; | package com.cnbm.packing.controller; | ||||||
|  |  | ||||||
| import com.cnbm.admin.annotation.LogOperation; | import cn.hutool.core.date.DateUtil; | ||||||
|  | import com.baomidou.mybatisplus.core.metadata.IPage; | ||||||
| import com.cnbm.dispatch.enums.kuka.step1.Step1Mes2PlcVar; | import com.cnbm.dispatch.enums.kuka.step1.Step1Mes2PlcVar; | ||||||
| import com.cnbm.dispatch.enums.kuka.step1.Step1Plc2MesVar; | import com.cnbm.dispatch.enums.kuka.step1.Step1Plc2MesVar; | ||||||
| import com.cnbm.dispatch.enums.kuka.step2.Step2Mes2PlcVar; | import com.cnbm.dispatch.enums.kuka.step2.Step2Mes2PlcVar; | ||||||
| @@ -9,13 +10,14 @@ import com.cnbm.dispatch.enums.kuka.step3.Step3Mes2PlcVar; | |||||||
| import com.cnbm.dispatch.enums.kuka.step3.Step3Plc2MesVar; | import com.cnbm.dispatch.enums.kuka.step3.Step3Plc2MesVar; | ||||||
| import com.cnbm.packing.dto.CamlineSubIdDTO; | import com.cnbm.packing.dto.CamlineSubIdDTO; | ||||||
| import com.cnbm.packing.dto.CamlineSubIdForImportDTO; | import com.cnbm.packing.dto.CamlineSubIdForImportDTO; | ||||||
| import com.cnbm.packing.dto.PowerReportDTO; | import com.cnbm.packing.dto.WoCompensationPowerDTO; | ||||||
| import com.cnbm.packing.entity.WoPackagingBoxSubstrate; | import com.cnbm.packing.entity.WoPackagingBoxSubstrate; | ||||||
| import com.cnbm.packing.param.PowerReportQueryParam; | import com.cnbm.packing.mapper.WoPackagingBoxSubstrateMapper; | ||||||
|  | import com.cnbm.packing.param.SubIdQueryParam; | ||||||
| import com.cnbm.packing.service.DynamicDataSourceService; | import com.cnbm.packing.service.DynamicDataSourceService; | ||||||
| import com.cnbm.packing.service.WoPackagingBoxServiceBiz; | import com.cnbm.packing.service.WoPackagingBoxServiceBiz; | ||||||
| import com.cnbm.packing.service.WoPackagingBoxSubstrateServiceBiz; | import com.cnbm.packing.service.WoPackagingBoxSubstrateServiceBiz; | ||||||
| import com.cnbm.packing.vo.PowerReportVo; | import com.cnbm.packing.vo.SubIdPageVo; | ||||||
| import com.cnbm.s7.entity.R; | import com.cnbm.s7.entity.R; | ||||||
| import com.cnbm.s7.s7connector.enmuc.S7Client; | import com.cnbm.s7.s7connector.enmuc.S7Client; | ||||||
| import com.cnbm.s7.s7connector.type.PlcVar; | import com.cnbm.s7.s7connector.type.PlcVar; | ||||||
| @@ -26,15 +28,19 @@ import io.swagger.annotations.ApiOperation; | |||||||
| import org.slf4j.Logger; | import org.slf4j.Logger; | ||||||
| import org.slf4j.LoggerFactory; | import org.slf4j.LoggerFactory; | ||||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||||
|  | import org.springframework.validation.annotation.Validated; | ||||||
| import org.springframework.web.bind.annotation.*; | import org.springframework.web.bind.annotation.*; | ||||||
| import com.cnbm.common.utils.Result; | import com.cnbm.common.utils.Result; | ||||||
| import springfox.documentation.annotations.ApiIgnore; | import springfox.documentation.annotations.ApiIgnore; | ||||||
|  |  | ||||||
|  | import javax.validation.groups.Default; | ||||||
| import java.io.UnsupportedEncodingException; | import java.io.UnsupportedEncodingException; | ||||||
| import java.math.BigDecimal; | import java.math.BigDecimal; | ||||||
| import java.text.DecimalFormat; | import java.text.DecimalFormat; | ||||||
|  | import java.text.Format; | ||||||
| import java.text.ParseException; | import java.text.ParseException; | ||||||
| import java.util.Arrays; | import java.util.Arrays; | ||||||
|  | import java.util.Date; | ||||||
| import java.util.List; | import java.util.List; | ||||||
| import java.util.Map; | import java.util.Map; | ||||||
|  |  | ||||||
| @@ -58,6 +64,10 @@ public class TestController { | |||||||
|     @Autowired |     @Autowired | ||||||
|     WoPackagingBoxServiceBiz boxServiceBiz; |     WoPackagingBoxServiceBiz boxServiceBiz; | ||||||
|  |  | ||||||
|  |     @Autowired | ||||||
|  |     WoPackagingBoxSubstrateMapper subMapper; | ||||||
|  |  | ||||||
|  |  | ||||||
|     private Object read(S7Client s7Client,Step1Plc2MesVar var) throws UnsupportedEncodingException, ParseException { |     private Object read(S7Client s7Client,Step1Plc2MesVar var) throws UnsupportedEncodingException, ParseException { | ||||||
|         try { |         try { | ||||||
|             return s7Client.read(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getLength(), var.getStrSize(), var.getType()); |             return s7Client.read(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getLength(), var.getStrSize(), var.getType()); | ||||||
| @@ -116,13 +126,23 @@ public class TestController { | |||||||
|     } |     } | ||||||
|     @PostMapping("/forString") |     @PostMapping("/forString") | ||||||
|     public R forString() throws UnsupportedEncodingException, ParseException { |     public R forString() throws UnsupportedEncodingException, ParseException { | ||||||
|         String[] s = (String[])read(S7Client.S7_KUKA,Step2Plc2MesVar.SubIdList); |         String[] s = (String[])read(S7Client.S7_DDJ1,Step2Plc2MesVar.SubIdList); | ||||||
|         System.out.println(Step2Plc2MesVar.SubIdList.getName()+" : "+Arrays.toString(s)); |         System.out.println(Step2Plc2MesVar.SubIdList.getName()+" : "+Arrays.toString(s)); | ||||||
|         return R.ok(); |         return R.ok(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     @PostMapping("/subPageMapper") | ||||||
|  |     @ApiOperation(value = "基板表 left join box表 分页查询") | ||||||
|  |  | ||||||
|  |     public com.cnbm.packing.vo.R<IPage<SubIdPageVo>> subPageMapper(@Validated({Default.class}) @RequestBody SubIdQueryParam param) { | ||||||
|  |  | ||||||
|  |         return boxServiceBiz.subIdPage(param); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|     @PostMapping("/forImport") |     @PostMapping("/forImport") | ||||||
|     public R forImport() throws UnsupportedEncodingException, ParseException { |     public R forImport(@RequestBody WoCompensationPowerDTO dto) throws UnsupportedEncodingException, ParseException { | ||||||
|         List<CamlineSubIdForImportDTO> alllCamlineSubForImp = service.getAlllCamlineSubForImp(); |         List<CamlineSubIdForImportDTO> alllCamlineSubForImp = service.getAlllCamlineSubForImp(dto.getRemark().split(",")); | ||||||
|         for(CamlineSubIdForImportDTO cam:alllCamlineSubForImp){ |         for(CamlineSubIdForImportDTO cam:alllCamlineSubForImp){ | ||||||
|             WoPackagingBoxSubstrate woPackagingBoxSubstrate = new WoPackagingBoxSubstrate(); |             WoPackagingBoxSubstrate woPackagingBoxSubstrate = new WoPackagingBoxSubstrate(); | ||||||
|             woPackagingBoxSubstrate.setWoSubstrateId(cam.getSubId()); |             woPackagingBoxSubstrate.setWoSubstrateId(cam.getSubId()); | ||||||
| @@ -135,35 +155,143 @@ public class TestController { | |||||||
|         return R.ok(); |         return R.ok(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  | //    @PostMapping("/forImportTest") | ||||||
|  | //    public R forImportTest(@RequestBody WoCompensationPowerDTO dto){ | ||||||
|  | //        System.out.println(dto.getRemark()); | ||||||
|  | // | ||||||
|  | //        List<CamlineSubIdForImportDTO> alllCamlineSubForImp = service.getAlllCamlineSubForImp(dto.getRemark().split(",")); | ||||||
|  | // | ||||||
|  | //        return R.ok().put("data",alllCamlineSubForImp); | ||||||
|  | //    } | ||||||
|  |  | ||||||
|  |     @PostMapping("/forTestMix") | ||||||
|  |     public R forTestMix() throws UnsupportedEncodingException, ParseException { | ||||||
|  |         String[] s = new String[20]; | ||||||
|  |         s[0]= "30110012303021614"; | ||||||
|  |         s[1]= "30110012303022415"; | ||||||
|  |         s[2]= "30110012303022801"; | ||||||
|  |         s[3]= "30110012303040003"; | ||||||
|  |         s[4]= "30110012303030488"; | ||||||
|  |         s[5]= "30110012303020247"; | ||||||
|  |         s[6]= "30110012303021008"; | ||||||
|  |         s[7]= "30110012303022434"; | ||||||
|  |         s[8]= "30110012303012878"; | ||||||
|  |         s[9]= "30110012302281212"; | ||||||
|  |         s[10]= "30110012302281213"; | ||||||
|  |         s[11]= "30110012302281215"; | ||||||
|  |         s[12]= "30110012302271160"; | ||||||
|  |         s[13]= "30110012302271154"; | ||||||
|  |         s[14]= "30110012303050321"; | ||||||
|  |         s[15]= "30110012303050331"; | ||||||
|  |         s[16]= "30110012303020036"; | ||||||
|  |         s[17]= "30110012303022606"; | ||||||
|  |         s[18]= "30110012303030009"; | ||||||
|  |         s[19]= "30110012303021795"; | ||||||
|  |         System.out.println(isMixLevel(s));; | ||||||
|  |         WoPackagingBoxSubstrate bySubId = substrateServiceBiz.getBySubId(s[0]); | ||||||
|  |         System.out.println(bySubId.getSapMaterial()); | ||||||
|  |         System.out.println(getErrorBoxId(bySubId.getSapMaterial())); | ||||||
|  |         System.out.println(getBoxId(bySubId.getSapMaterial())); | ||||||
|  |  | ||||||
|  |         return R.ok(); | ||||||
|  |     } | ||||||
|  |     public String formateString(Integer a){ | ||||||
|  |         Format f1 = new DecimalFormat("000"); | ||||||
|  |         return f1.format(a); | ||||||
|  |     } | ||||||
|  |     public String getBoxId(String sapMaterial){ | ||||||
|  |         Integer todayBoxNum = service.getTodayBoxNum()+1; | ||||||
|  |         String nowTime = DateUtil.format(new Date(), "yyMMdd"); | ||||||
|  |  | ||||||
|  |         todayBoxNum+=500; | ||||||
|  |         String res = "301"+sapMaterial+nowTime+formateString(todayBoxNum); | ||||||
|  |         return res; | ||||||
|  |     } | ||||||
|  |     public String getErrorBoxId(String sapMaterial){ | ||||||
|  |  | ||||||
|  |         String nowTime = DateUtil.format(new Date(), "yyMMdd"); | ||||||
|  |         String mixBoxError = "001"; | ||||||
|  |         String res = "Err"+sapMaterial+nowTime+mixBoxError; | ||||||
|  |         return res; | ||||||
|  |     } | ||||||
|  |     private boolean isMixLevel(String[] subIds){ | ||||||
|  |         String correctLevel = substrateServiceBiz.getBySubId(subIds[0]).getPowerLevel(); | ||||||
|  |         String errMsg = "以下基板ID出现混档:"; | ||||||
|  |         boolean res = false; | ||||||
|  |         for(int i=1;i<subIds.length;i++){ | ||||||
|  |             String powerLevel = substrateServiceBiz.getBySubId(subIds[i]).getPowerLevel(); | ||||||
|  |  | ||||||
|  |             if(!powerLevel.equals(correctLevel)){ | ||||||
|  |                 errMsg+="基板ID:"+subIds[i]+" 档位:"+powerLevel+", "; | ||||||
|  |                 res = true; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         if(res){ | ||||||
|  |             logger.error(errMsg); | ||||||
|  |         } | ||||||
|  |         return res; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|     @PostMapping("/testReadAll") |     @PostMapping("/testReadAll") | ||||||
|     public R testReadAll() throws UnsupportedEncodingException, ParseException { |     public R testReadAll() throws UnsupportedEncodingException, ParseException { | ||||||
|         for(Step1Plc2MesVar actual:Step1Plc2MesVar.values()){ |         for(Step1Plc2MesVar actual:Step1Plc2MesVar.values()){ | ||||||
|             logger.info(read(S7Client.S7_KUKA,actual).toString()); |             logger.info(read(S7Client.S7_DDJ1,actual).toString()); | ||||||
|             System.out.println(actual.getName().toString()+" : "+read(S7Client.S7_KUKA,actual).toString()); |             System.out.println(actual.getName().toString()+" : "+read(S7Client.S7_DDJ1,actual).toString()); | ||||||
|         } |         } | ||||||
|         for(Step1Mes2PlcVar actual:Step1Mes2PlcVar.values()){ |         for(Step1Mes2PlcVar actual:Step1Mes2PlcVar.values()){ | ||||||
|             logger.info(read(S7Client.S7_KUKA,actual).toString()); |             logger.info(read(S7Client.S7_DDJ1,actual).toString()); | ||||||
|             System.out.println(actual.getName().toString()+" : "+read(S7Client.S7_KUKA,actual).toString()); |             System.out.println(actual.getName().toString()+" : "+read(S7Client.S7_DDJ1,actual).toString()); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         for(Step2Plc2MesVar actual:Step2Plc2MesVar.values()){ |         for(Step2Plc2MesVar actual:Step2Plc2MesVar.values()){ | ||||||
|             logger.info(read(S7Client.S7_KUKA,actual).toString()); |             logger.info(read(S7Client.S7_DDJ1,actual).toString()); | ||||||
|             System.out.println(actual.getName().toString()+" : "+read(S7Client.S7_KUKA,actual).toString()); |             System.out.println(actual.getName().toString()+" : "+read(S7Client.S7_DDJ1,actual).toString()); | ||||||
|         } |         } | ||||||
|         for(Step2Mes2PlcVar actual:Step2Mes2PlcVar.values()){ |         for(Step2Mes2PlcVar actual:Step2Mes2PlcVar.values()){ | ||||||
|             logger.info(read(S7Client.S7_KUKA,actual).toString()); |             logger.info(read(S7Client.S7_DDJ1,actual).toString()); | ||||||
|             System.out.println(actual.getName().toString()+" : "+read(S7Client.S7_KUKA,actual).toString()); |             System.out.println(actual.getName().toString()+" : "+read(S7Client.S7_DDJ1,actual).toString()); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         for(Step3Plc2MesVar actual:Step3Plc2MesVar.values()){ |         for(Step3Plc2MesVar actual:Step3Plc2MesVar.values()){ | ||||||
|             logger.info(read(S7Client.S7_KUKA,actual).toString()); |             logger.info(read(S7Client.S7_DDJ1,actual).toString()); | ||||||
|             System.out.println(actual.getName().toString()+" : "+read(S7Client.S7_KUKA,actual).toString()); |             System.out.println(actual.getName().toString()+" : "+read(S7Client.S7_DDJ1,actual).toString()); | ||||||
|         } |         } | ||||||
|         for(Step3Mes2PlcVar actual:Step3Mes2PlcVar.values()){ |         for(Step3Mes2PlcVar actual:Step3Mes2PlcVar.values()){ | ||||||
|             logger.info(read(S7Client.S7_KUKA,actual).toString()); |             logger.info(read(S7Client.S7_DDJ1,actual).toString()); | ||||||
|             System.out.println(actual.getName().toString()+" : "+read(S7Client.S7_KUKA,actual).toString()); |             System.out.println(actual.getName().toString()+" : "+read(S7Client.S7_DDJ1,actual).toString()); | ||||||
|  |         } | ||||||
|  |         return R.ok(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @PostMapping("/testReadAll2") | ||||||
|  |     public R testReadAll2() throws UnsupportedEncodingException, ParseException { | ||||||
|  |         for(Step1Plc2MesVar actual:Step1Plc2MesVar.values()){ | ||||||
|  |             logger.info(read(S7Client.S7_DDJ2,actual).toString()); | ||||||
|  |             System.out.println(actual.getName().toString()+" : "+read(S7Client.S7_DDJ2,actual).toString()); | ||||||
|  |         } | ||||||
|  |         for(Step1Mes2PlcVar actual:Step1Mes2PlcVar.values()){ | ||||||
|  |             logger.info(read(S7Client.S7_DDJ2,actual).toString()); | ||||||
|  |             System.out.println(actual.getName().toString()+" : "+read(S7Client.S7_DDJ2,actual).toString()); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         for(Step2Plc2MesVar actual:Step2Plc2MesVar.values()){ | ||||||
|  |             logger.info(read(S7Client.S7_DDJ2,actual).toString()); | ||||||
|  |             System.out.println(actual.getName().toString()+" : "+read(S7Client.S7_DDJ2,actual).toString()); | ||||||
|  |         } | ||||||
|  |         for(Step2Mes2PlcVar actual:Step2Mes2PlcVar.values()){ | ||||||
|  |             logger.info(read(S7Client.S7_DDJ2,actual).toString()); | ||||||
|  |             System.out.println(actual.getName().toString()+" : "+read(S7Client.S7_DDJ2,actual).toString()); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         for(Step3Plc2MesVar actual:Step3Plc2MesVar.values()){ | ||||||
|  |             logger.info(read(S7Client.S7_DDJ2,actual).toString()); | ||||||
|  |             System.out.println(actual.getName().toString()+" : "+read(S7Client.S7_DDJ2,actual).toString()); | ||||||
|  |         } | ||||||
|  |         for(Step3Mes2PlcVar actual:Step3Mes2PlcVar.values()){ | ||||||
|  |             logger.info(read(S7Client.S7_DDJ2,actual).toString()); | ||||||
|  |             System.out.println(actual.getName().toString()+" : "+read(S7Client.S7_DDJ2,actual).toString()); | ||||||
|         } |         } | ||||||
|         return R.ok(); |         return R.ok(); | ||||||
|     } |     } | ||||||
| @@ -179,32 +307,32 @@ public class TestController { | |||||||
|         BigDecimal isc = new BigDecimal(3.799); |         BigDecimal isc = new BigDecimal(3.799); | ||||||
|         BigDecimal vmpp = new BigDecimal(46.799); |         BigDecimal vmpp = new BigDecimal(46.799); | ||||||
|         BigDecimal impp = new BigDecimal(3.0799); |         BigDecimal impp = new BigDecimal(3.0799); | ||||||
|         write(S7Client.S7_KUKA,Step1Mes2PlcVar.dLable_Pnom,new Integer(1)); |         write(S7Client.S7_DDJ1,Step1Mes2PlcVar.dLable_Pnom,new Integer(1)); | ||||||
|         System.out.println(Step1Mes2PlcVar.dLable_Pnom.getName()+" : "+1); |         System.out.println(Step1Mes2PlcVar.dLable_Pnom.getName()+" : "+1); | ||||||
|  |  | ||||||
|         write(S7Client.S7_KUKA,Step1Mes2PlcVar.dLable_Voc,voc); |         write(S7Client.S7_DDJ1,Step1Mes2PlcVar.dLable_Voc,voc); | ||||||
|         System.out.println(Step1Mes2PlcVar.dLable_Voc.getName()+" : "+voc.toPlainString()); |         System.out.println(Step1Mes2PlcVar.dLable_Voc.getName()+" : "+voc.toPlainString()); | ||||||
|  |  | ||||||
|         write(S7Client.S7_KUKA,Step1Mes2PlcVar.dLable_Isc,isc); |         write(S7Client.S7_DDJ1,Step1Mes2PlcVar.dLable_Isc,isc); | ||||||
|         System.out.println(Step1Mes2PlcVar.dLable_Isc.getName()+" : "+isc.toPlainString()); |         System.out.println(Step1Mes2PlcVar.dLable_Isc.getName()+" : "+isc.toPlainString()); | ||||||
|  |  | ||||||
|         write(S7Client.S7_KUKA,Step1Mes2PlcVar.dLable_Vmpp,vmpp); |         write(S7Client.S7_DDJ1,Step1Mes2PlcVar.dLable_Vmpp,vmpp); | ||||||
|         System.out.println(Step1Mes2PlcVar.dLable_Vmpp.getName()+" : "+vmpp.toPlainString()); |         System.out.println(Step1Mes2PlcVar.dLable_Vmpp.getName()+" : "+vmpp.toPlainString()); | ||||||
|  |  | ||||||
|         write(S7Client.S7_KUKA,Step1Mes2PlcVar.dLable_Impp,impp); |         write(S7Client.S7_DDJ1,Step1Mes2PlcVar.dLable_Impp,impp); | ||||||
|         System.out.println(Step1Mes2PlcVar.dLable_Impp.getName()+" : "+impp.toPlainString()); |         System.out.println(Step1Mes2PlcVar.dLable_Impp.getName()+" : "+impp.toPlainString()); | ||||||
|  |  | ||||||
|  |  | ||||||
|         write(S7Client.S7_KUKA,Step2Mes2PlcVar.BoxId,"12345678901111111111"); |         write(S7Client.S7_DDJ1,Step2Mes2PlcVar.BoxId,"12345678901111111111"); | ||||||
|         System.out.println(Step2Mes2PlcVar.BoxId.getName()+" : "+"12345678901111111111"); |         System.out.println(Step2Mes2PlcVar.BoxId.getName()+" : "+"12345678901111111111"); | ||||||
|  |  | ||||||
|         write(S7Client.S7_KUKA,Step1Mes2PlcVar.SubArrivedFinish,true); |         write(S7Client.S7_DDJ1,Step1Mes2PlcVar.SubArrivedFinish,true); | ||||||
|         System.out.println(Step1Mes2PlcVar.SubArrivedFinish.getName()+" : "+"true"); |         System.out.println(Step1Mes2PlcVar.SubArrivedFinish.getName()+" : "+"true"); | ||||||
|  |  | ||||||
|         write(S7Client.S7_KUKA,Step2Mes2PlcVar.ShelfIsFullFinish,false); |         write(S7Client.S7_DDJ1,Step2Mes2PlcVar.ShelfIsFullFinish,false); | ||||||
|         System.out.println(Step2Mes2PlcVar.ShelfIsFullFinish.getName()+" : "+"false"); |         System.out.println(Step2Mes2PlcVar.ShelfIsFullFinish.getName()+" : "+"false"); | ||||||
|  |  | ||||||
|         write(S7Client.S7_KUKA,Step3Mes2PlcVar.ShelfIsFullArrivedFinish,true); |         write(S7Client.S7_DDJ1,Step3Mes2PlcVar.ShelfIsFullArrivedFinish,true); | ||||||
|         System.out.println(Step3Mes2PlcVar.ShelfIsFullArrivedFinish.getName()+" : "+"true"); |         System.out.println(Step3Mes2PlcVar.ShelfIsFullArrivedFinish.getName()+" : "+"true"); | ||||||
|  |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,5 +1,6 @@ | |||||||
| package com.cnbm.packing.controller; | package com.cnbm.packing.controller; | ||||||
|  |  | ||||||
|  | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | ||||||
| import com.cnbm.admin.annotation.LogOperation; | import com.cnbm.admin.annotation.LogOperation; | ||||||
| import com.cnbm.common.constant.Constant; | import com.cnbm.common.constant.Constant; | ||||||
| import com.cnbm.common.page.PageData; | import com.cnbm.common.page.PageData; | ||||||
| @@ -16,6 +17,7 @@ import com.cnbm.packing.entity.WoPackagingBox; | |||||||
| import com.cnbm.packing.entity.WoPackagingBoxSubstrate; | import com.cnbm.packing.entity.WoPackagingBoxSubstrate; | ||||||
| import com.cnbm.packing.excel.WoPackagingBoxExcel; | import com.cnbm.packing.excel.WoPackagingBoxExcel; | ||||||
| import com.cnbm.packing.excel.WoPackagingBoxSubstrateExcel; | import com.cnbm.packing.excel.WoPackagingBoxSubstrateExcel; | ||||||
|  | import com.cnbm.packing.mapper.WoPackagingBoxMapper; | ||||||
| import com.cnbm.packing.service.WoPackagingBoxServiceBiz; | import com.cnbm.packing.service.WoPackagingBoxServiceBiz; | ||||||
| import io.swagger.annotations.Api; | import io.swagger.annotations.Api; | ||||||
| import io.swagger.annotations.ApiImplicitParam; | import io.swagger.annotations.ApiImplicitParam; | ||||||
| @@ -44,6 +46,8 @@ import java.util.Map; | |||||||
| public class WoPackagingBoxController { | public class WoPackagingBoxController { | ||||||
|     @Autowired |     @Autowired | ||||||
|     private WoPackagingBoxServiceBiz woPackagingBoxService; |     private WoPackagingBoxServiceBiz woPackagingBoxService; | ||||||
|  |     @Autowired | ||||||
|  |     private WoPackagingBoxMapper woPackagingBoxMapper; | ||||||
|  |  | ||||||
|     @GetMapping("page") |     @GetMapping("page") | ||||||
|     @ApiOperation("分页") |     @ApiOperation("分页") | ||||||
| @@ -55,14 +59,13 @@ public class WoPackagingBoxController { | |||||||
|         @ApiImplicitParam(name = "startTime", value = "开始时间", paramType = "query", dataTypeClass = LocalDateTime.class), |         @ApiImplicitParam(name = "startTime", value = "开始时间", paramType = "query", dataTypeClass = LocalDateTime.class), | ||||||
|         @ApiImplicitParam(name = "endTime", value = "结束时间", paramType = "query", dataTypeClass = LocalDateTime.class), |         @ApiImplicitParam(name = "endTime", value = "结束时间", paramType = "query", dataTypeClass = LocalDateTime.class), | ||||||
|         @ApiImplicitParam(name = "boxNo", value = "boxid", paramType = "query", dataTypeClass = String.class), |         @ApiImplicitParam(name = "boxNo", value = "boxid", paramType = "query", dataTypeClass = String.class), | ||||||
|         @ApiImplicitParam(name = "lineBody", value = "线体", paramType = "query", dataTypeClass = Integer.class), | //        @ApiImplicitParam(name = "lineBody", value = "线体", paramType = "query", dataTypeClass = Integer.class), | ||||||
|         @ApiImplicitParam(name = "printStatus", value = "打印状态:0、未打印,1、已打印", paramType = "query", dataTypeClass = Integer.class), | //        @ApiImplicitParam(name = "printStatus", value = "打印状态:0、未打印,1、已打印", paramType = "query", dataTypeClass = Integer.class), | ||||||
|         @ApiImplicitParam(name = "model", value = "模式,1-手动模式;2-自动模式", paramType = "query", dataTypeClass = Integer.class) |         @ApiImplicitParam(name = "model", value = "模式,1-手动模式;2-自动模式", paramType = "query", dataTypeClass = Integer.class) | ||||||
|     }) |     }) | ||||||
|     @PreAuthorize("@ex.hasAuthority('packing:woPackagingBox:page')") |  | ||||||
|     public Result<PageData<WoPackagingBoxDTO>> page(@ApiIgnore @RequestParam Map<String, Object> params){ |     public Result<PageData<WoPackagingBoxDTO>> page(@ApiIgnore @RequestParam Map<String, Object> params){ | ||||||
|         PageData<WoPackagingBoxDTO> page = woPackagingBoxService.page(params); |         PageData<WoPackagingBoxDTO> page = woPackagingBoxService.page(params); | ||||||
|  | //        woPackagingBoxService.setColor(page.getList()); | ||||||
|         return new Result<PageData<WoPackagingBoxDTO>>().ok(page); |         return new Result<PageData<WoPackagingBoxDTO>>().ok(page); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -142,8 +145,8 @@ public class WoPackagingBoxController { | |||||||
|             @ApiImplicitParam(name = "startTime", value = "开始时间", paramType = "query", dataTypeClass = LocalDateTime.class), |             @ApiImplicitParam(name = "startTime", value = "开始时间", paramType = "query", dataTypeClass = LocalDateTime.class), | ||||||
|             @ApiImplicitParam(name = "endTime", value = "结束时间", paramType = "query", dataTypeClass = LocalDateTime.class), |             @ApiImplicitParam(name = "endTime", value = "结束时间", paramType = "query", dataTypeClass = LocalDateTime.class), | ||||||
|             @ApiImplicitParam(name = "boxNo", value = "boxid", paramType = "query", dataTypeClass = String.class), |             @ApiImplicitParam(name = "boxNo", value = "boxid", paramType = "query", dataTypeClass = String.class), | ||||||
|             @ApiImplicitParam(name = "lineBody", value = "线体", paramType = "query", dataTypeClass = Integer.class), | //            @ApiImplicitParam(name = "lineBody", value = "线体", paramType = "query", dataTypeClass = Integer.class), | ||||||
|             @ApiImplicitParam(name = "printStatus", value = "打印状态:0、未打印,1、已打印", paramType = "query", dataTypeClass = Integer.class), | //            @ApiImplicitParam(name = "printStatus", value = "打印状态:0、未打印,1、已打印", paramType = "query", dataTypeClass = Integer.class), | ||||||
|             @ApiImplicitParam(name = "model", value = "模式,1-手动模式;2-自动模式", paramType = "query", dataTypeClass = Integer.class) |             @ApiImplicitParam(name = "model", value = "模式,1-手动模式;2-自动模式", paramType = "query", dataTypeClass = Integer.class) | ||||||
|     }) |     }) | ||||||
|     public void exportSubstrateList(@ApiIgnore @RequestParam Map<String, Object> params, HttpServletResponse response) throws Exception { |     public void exportSubstrateList(@ApiIgnore @RequestParam Map<String, Object> params, HttpServletResponse response) throws Exception { | ||||||
| @@ -162,9 +165,28 @@ public class WoPackagingBoxController { | |||||||
|     @PostMapping("insertSubstrateManual") |     @PostMapping("insertSubstrateManual") | ||||||
|     @ApiOperation("手动新增包装箱") |     @ApiOperation("手动新增包装箱") | ||||||
|     @LogOperation("手动新增包装箱") |     @LogOperation("手动新增包装箱") | ||||||
|     public IdVo insertSubstrateManual(@RequestBody WoPackagingBoxDTO dto){ |     public Result<IdVo> insertSubstrateManual(@RequestBody WoPackagingBoxDTO dto){ | ||||||
|  |  | ||||||
|         return woPackagingBoxService.insertSubstrateManual(dto); |         //验证包装箱是否重名 | ||||||
|  |         QueryWrapper<WoPackagingBox> wrapper = new QueryWrapper<>(); | ||||||
|  |         wrapper.eq(WoPackagingBox.BOX_NO, dto.getBoxNo()); | ||||||
|  |         if(woPackagingBoxMapper.selectCount(wrapper)!= 0){ | ||||||
|  |             return new Result().error(1,"BoxID已存在,请重新输入"); | ||||||
|  |         } | ||||||
|  |         else { | ||||||
|  |             return new Result<IdVo>().ok(woPackagingBoxService.insertSubstrateManual(dto)); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @PostMapping("editSubstrateManual") | ||||||
|  |     @ApiOperation("手动编辑包装箱") | ||||||
|  |     @LogOperation("手动编辑包装箱") | ||||||
|  |     public Result editSubstrateManual(@RequestBody WoPackagingBoxDTO dto){ | ||||||
|  |  | ||||||
|  |         woPackagingBoxService.editSubstrateManual(dto); | ||||||
|  |  | ||||||
|  |         return new Result(); | ||||||
|  |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -18,8 +18,10 @@ import com.cnbm.packing.dto.WoPackagingBoxSubstrateDTO; | |||||||
| import com.cnbm.packing.entity.WoPackagingBox; | import com.cnbm.packing.entity.WoPackagingBox; | ||||||
| import com.cnbm.packing.entity.WoPackagingBoxSubstrate; | import com.cnbm.packing.entity.WoPackagingBoxSubstrate; | ||||||
| import com.cnbm.packing.excel.WoPackagingBoxSubstrateExcel; | import com.cnbm.packing.excel.WoPackagingBoxSubstrateExcel; | ||||||
|  | import com.cnbm.packing.excel.WoPackagingBoxSubstrateManualExcel; | ||||||
| import com.cnbm.packing.mapper.WoPackagingBoxMapper; | import com.cnbm.packing.mapper.WoPackagingBoxMapper; | ||||||
| import com.cnbm.packing.mapper.WoPackagingBoxSubstrateMapper; | import com.cnbm.packing.mapper.WoPackagingBoxSubstrateMapper; | ||||||
|  | import com.cnbm.packing.param.PackingInfoQueryParam; | ||||||
| import com.cnbm.packing.param.PowerReportQueryParam; | import com.cnbm.packing.param.PowerReportQueryParam; | ||||||
| import com.cnbm.packing.service.WoPackagingBoxServiceBiz; | import com.cnbm.packing.service.WoPackagingBoxServiceBiz; | ||||||
| import com.cnbm.packing.service.WoPackagingBoxSubstrateServiceBiz; | import com.cnbm.packing.service.WoPackagingBoxSubstrateServiceBiz; | ||||||
| @@ -36,8 +38,12 @@ import springfox.documentation.annotations.ApiIgnore; | |||||||
|  |  | ||||||
| import javax.servlet.http.HttpServletResponse; | import javax.servlet.http.HttpServletResponse; | ||||||
| import java.text.DecimalFormat; | import java.text.DecimalFormat; | ||||||
|  | import java.time.format.DateTimeFormatter; | ||||||
|  | import java.util.ArrayList; | ||||||
|  | import java.time.LocalDateTime; | ||||||
| import java.util.List; | import java.util.List; | ||||||
| import java.util.Map; | import java.util.Map; | ||||||
|  | import java.util.Objects; | ||||||
|  |  | ||||||
|  |  | ||||||
| /** | /** | ||||||
| @@ -124,33 +130,76 @@ public class WoPackagingBoxSubstrateController { | |||||||
|         return new Result<Long>().ok(dto.getId()); |         return new Result<Long>().ok(dto.getId()); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     @ApiOperation("查询模组档位统计分布图powerReportTY") | ||||||
|  |     @LogOperation("查询模组档位统计分布图powerReportTY") | ||||||
|  |     @PostMapping("/powerReportTY") | ||||||
|  |     public Result<Boolean> powerReportTY(@RequestBody PowerReportQueryParam queryParam){ | ||||||
|  |         List<PowerReportDTO> powerReportDTOS = boxServiceBiz.powerReport(queryParam); | ||||||
|  |         System.out.println(powerReportDTOS); | ||||||
|  |         return new Result<Boolean>().ok(true); | ||||||
|  |     } | ||||||
|  |  | ||||||
|     @ApiOperation("查询模组档位统计分布图") |     @ApiOperation("查询模组档位统计分布图") | ||||||
|     @LogOperation("查询模组档位统计分布图") |     @LogOperation("查询模组档位统计分布图") | ||||||
|     @PostMapping("/powerReport") |     @PostMapping("/powerReport") | ||||||
|     public Result<PowerReportVo> powerReport(@RequestBody PowerReportQueryParam queryParam){ |     public Result<PowerReportVo> powerReport(@RequestBody PowerReportQueryParam queryParam){ | ||||||
|         List<PowerReportDTO> powerReportDTOS = boxServiceBiz.powerReport(queryParam); |         List<PowerReportDTO> powerReportDTOS = boxServiceBiz.powerReport(queryParam); | ||||||
|  |         System.out.println(powerReportDTOS.toString()); | ||||||
|  |         List<PowerReportDTO> powerReportList = new ArrayList<>(); | ||||||
|  |         powerReportList.add(new PowerReportDTO(0,"115",0f,"0%")); | ||||||
|  |         powerReportList.add(new PowerReportDTO(0,"120",0f,"0%")); | ||||||
|  |         powerReportList.add(new PowerReportDTO(0,"125",0f,"0%")); | ||||||
|  |         powerReportList.add(new PowerReportDTO(0,"130",0f,"0%")); | ||||||
|  |         powerReportList.add(new PowerReportDTO(0,"135",0f,"0%")); | ||||||
|  |         powerReportList.add(new PowerReportDTO(0,"140",0f,"0%")); | ||||||
|  |         powerReportList.add(new PowerReportDTO(0,"145",0f,"0%")); | ||||||
|  |         powerReportList.add(new PowerReportDTO(0,"150",0f,"0%")); | ||||||
|  |         powerReportList.add(new PowerReportDTO(0,"155",0f,"0%")); | ||||||
|  |         powerReportList.add(new PowerReportDTO(0,"160",0f,"0%")); | ||||||
|  |  | ||||||
|  |  | ||||||
|  |         for(PowerReportDTO power : powerReportList){ | ||||||
|  |             for(PowerReportDTO inner : powerReportDTOS){ | ||||||
|  |                 if(Objects.equals(power.getSubLevel(), inner.getSubLevel())){ | ||||||
|  |                     power.setProportion(inner.getProportion()); | ||||||
|  |                     power.setSubNum(inner.getSubNum()); | ||||||
|  |                     power.setSumPMPP(inner.getSumPMPP()); | ||||||
|  |                     power.setSubLevel(inner.getSubLevel()); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         System.out.println(powerReportList.toString()); | ||||||
|         PowerReportVo powerReportVo = new PowerReportVo(); |         PowerReportVo powerReportVo = new PowerReportVo(); | ||||||
|         Float totalLevelPower = new Float(0); |         Float totalLevelPower = new Float(0); | ||||||
|         Float totalCompensatePower = new Float(0); |         Float totalCompensatePower = new Float(0); | ||||||
|         Float diversePower = new Float(0); |         Float diversePower = new Float(0); | ||||||
|         Integer totalSubNum = 0; |         Integer totalSubNum = 0; | ||||||
|         for(PowerReportDTO power : powerReportDTOS){ |         for(PowerReportDTO power : powerReportList){ | ||||||
|             Integer subLevel = Integer.valueOf(power.getSubLevel()); |             Integer subLevel = Integer.valueOf(power.getSubLevel()); | ||||||
|             Integer subNum = power.getSubNum(); |             Integer subNum = power.getSubNum(); | ||||||
|  |             if(power.getSumPMPP()==null){ | ||||||
|  |                 return new Result<PowerReportVo>().error("基板等级:"+subLevel+",基板数量:"+subNum+", 的总和为null"); | ||||||
|  |             } | ||||||
|             Float sumPMPP = power.getSumPMPP(); |             Float sumPMPP = power.getSumPMPP(); | ||||||
|             totalLevelPower += subLevel*subNum; |             totalLevelPower += subLevel*subNum; | ||||||
|             totalCompensatePower += sumPMPP*subNum; |             totalCompensatePower += sumPMPP*subNum; | ||||||
|             totalSubNum+= subNum; |             totalSubNum+= subNum; | ||||||
|         } |         } | ||||||
|         for(PowerReportDTO power : powerReportDTOS){ |         for(PowerReportDTO power : powerReportList){ | ||||||
|             Float prop = Float.valueOf(power.getSubNum())/Float.valueOf(totalSubNum); |             if(power.getSubNum()==0 ||totalSubNum ==0 ){ | ||||||
|             DecimalFormat df = new DecimalFormat("0.00"); |                 power.setProportion("0%"); | ||||||
|             String propS = df.format(prop)+"%"; |             }else { | ||||||
|             power.setProportion(propS); |                 Float prop = (Float.valueOf(power.getSubNum())/Float.valueOf(totalSubNum))*100; | ||||||
|  |                 DecimalFormat df = new DecimalFormat("0.00"); | ||||||
|  |                 String propS = df.format(prop)+"%"; | ||||||
|  |                 power.setProportion(propS); | ||||||
|  |             } | ||||||
|         } |         } | ||||||
|         diversePower = totalLevelPower - totalCompensatePower; |  | ||||||
|         powerReportVo.setPowerReports(powerReportDTOS); |  | ||||||
|  |         diversePower = totalCompensatePower - totalLevelPower; | ||||||
|  |         powerReportVo.setPowerReports(powerReportList); | ||||||
|         powerReportVo.setDiversePower(diversePower); |         powerReportVo.setDiversePower(diversePower); | ||||||
|         powerReportVo.setTotalCompensatePower(totalCompensatePower); |         powerReportVo.setTotalCompensatePower(totalCompensatePower); | ||||||
|         powerReportVo.setTotalLevelPower(totalLevelPower); |         powerReportVo.setTotalLevelPower(totalLevelPower); | ||||||
| @@ -204,6 +253,13 @@ public class WoPackagingBoxSubstrateController { | |||||||
|     @LogOperation("合箱") |     @LogOperation("合箱") | ||||||
|     public Result insertSubstrate(@RequestBody ChangePackingBoxDTO dto){ |     public Result insertSubstrate(@RequestBody ChangePackingBoxDTO dto){ | ||||||
|  |  | ||||||
|  |         //验证包装箱是否为存在 | ||||||
|  |         String packagingBoxId = dto.getPackagingBoxId(); | ||||||
|  |         QueryWrapper<WoPackagingBox> boxQueryWrapper = new QueryWrapper<>(); | ||||||
|  |         boxQueryWrapper.eq(StringUtils.isNotBlank(packagingBoxId), WoPackagingBox.BOX_NO, packagingBoxId); | ||||||
|  |         if(woPackagingBoxMapper.selectCount(boxQueryWrapper)== 0){ | ||||||
|  |             return new Result().error(1,"该包装箱不存在,请重新输入"); | ||||||
|  |         } | ||||||
|         //验证模组是否存在 |         //验证模组是否存在 | ||||||
|         QueryWrapper<WoPackagingBoxSubstrate> substrateQueryWrapper1 = new QueryWrapper<>(); |         QueryWrapper<WoPackagingBoxSubstrate> substrateQueryWrapper1 = new QueryWrapper<>(); | ||||||
|         substrateQueryWrapper1.eq(WoPackagingBoxSubstrate.WO_SUBSTRATE_ID, dto.getWoSubstrateId()); |         substrateQueryWrapper1.eq(WoPackagingBoxSubstrate.WO_SUBSTRATE_ID, dto.getWoSubstrateId()); | ||||||
| @@ -225,12 +281,9 @@ public class WoPackagingBoxSubstrateController { | |||||||
|         } |         } | ||||||
|  |  | ||||||
|         //验证该模组的线体、功率等级是否BoxID的线体、功率等级一致,一致,保存成功,数据发生更新。不一致,则显示保存失败,数据不发生更新 |         //验证该模组的线体、功率等级是否BoxID的线体、功率等级一致,一致,保存成功,数据发生更新。不一致,则显示保存失败,数据不发生更新 | ||||||
|         String packagingBoxId = dto.getPackagingBoxId(); |  | ||||||
|         QueryWrapper<WoPackagingBox> boxQueryWrapper = new QueryWrapper<>(); |  | ||||||
|         boxQueryWrapper.eq(StringUtils.isNotBlank(packagingBoxId), WoPackagingBox.BOX_NO, packagingBoxId); |  | ||||||
|         WoPackagingBox box = woPackagingBoxMapper.selectList(boxQueryWrapper).get(0); |         WoPackagingBox box = woPackagingBoxMapper.selectList(boxQueryWrapper).get(0); | ||||||
|  |  | ||||||
|         if((substrate.getLineBody()==box.getLineBody()) && (substrate.getPowerLevel().equals(box.getPowerLevel())) ) |         if((substrate.getLineBody().equals(box.getLineBody())) && (substrate.getPowerLevel().equals(box.getPowerLevel())) ) | ||||||
|         { |         { | ||||||
|             dto.setId(substrate.getId()); |             dto.setId(substrate.getId()); | ||||||
|             woPackagingBoxSubstrateService.insertSubstrate(dto); |             woPackagingBoxSubstrateService.insertSubstrate(dto); | ||||||
| @@ -286,10 +339,44 @@ public class WoPackagingBoxSubstrateController { | |||||||
|         return new Result(); |         return new Result(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @GetMapping("substrateList/{woSubstrateId}") |     @PostMapping("substrateList") | ||||||
|     @ApiOperation("模组信息查询") |     @ApiOperation("装箱单信息查询") | ||||||
|     public List<WoPackagingBoxSubstrateDTO> substrateList(@PathVariable("woSubstrateId") String woSubstrateId){ |     public Result<PageData<WoPackagingBoxSubstrateDTO>> substrateList(@RequestBody PackingInfoQueryParam param){ | ||||||
|         return woPackagingBoxSubstrateService.substrateList(woSubstrateId); |         PageData<WoPackagingBoxSubstrateDTO> page = woPackagingBoxSubstrateService.substratePage(param); | ||||||
|  | //        woPackagingBoxSubstrateService.setColor(page.getList()); | ||||||
|  |         return new Result<PageData<WoPackagingBoxSubstrateDTO>>().ok(page); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     @GetMapping("exportPackingInfo") | ||||||
|  |     @ApiOperation("装箱单信息导出") | ||||||
|  |     @LogOperation("装箱单信息导出") | ||||||
|  |     @ApiImplicitParams({ | ||||||
|  |             @ApiImplicitParam(name = "startTime", value = "开始时间", paramType = "query", dataTypeClass = LocalDateTime.class), | ||||||
|  |             @ApiImplicitParam(name = "endTime", value = "结束时间", paramType = "query", dataTypeClass = LocalDateTime.class), | ||||||
|  |             @ApiImplicitParam(name = "model", value = "模式,1-手动模式;2-自动模式", paramType = "query", dataTypeClass = Integer.class), | ||||||
|  |             @ApiImplicitParam(name = "packagingBoxId", value = "包装箱ID,BoxId", paramType = "query", dataTypeClass = String.class), | ||||||
|  |             @ApiImplicitParam(name = "woSubstrateId", value = "基板ID(关联T_SUBSTRATE表)", paramType = "query", dataTypeClass = String.class) | ||||||
|  |  | ||||||
|  |     }) | ||||||
|  |     public void exportPackingInfo(@ApiIgnore @RequestParam Map<String, Object> params, HttpServletResponse response) throws Exception { | ||||||
|  |         List<WoPackagingBoxSubstrateDTO> list = woPackagingBoxSubstrateService.substrateList(params); | ||||||
|  |         if(list.size()>0) { | ||||||
|  |             //包装箱创建时间 最近打印时间 转化 | ||||||
|  |             for(WoPackagingBoxSubstrateDTO dto:list){ | ||||||
|  |                 DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); | ||||||
|  |                 if(dto.getBoxCreateTime()!=null){ | ||||||
|  |                     dto.setBoxCreateTime1(df.format(dto.getBoxCreateTime())); | ||||||
|  |                 } | ||||||
|  |                 if(dto.getPrintTime()!=null){ | ||||||
|  |                     dto.setPrintTime1(df.format(dto.getPrintTime())); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             if(Integer.parseInt(params.get("model").toString())==1){ | ||||||
|  |                 ExcelUtils.exportExcelToTarget(response, "手动装箱单信息", list, WoPackagingBoxSubstrateManualExcel.class); | ||||||
|  |             } | ||||||
|  |             else { | ||||||
|  |                 ExcelUtils.exportExcelToTarget(response, "自动装箱单信息", list, WoPackagingBoxSubstrateExcel.class); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     } | ||||||
| } | } | ||||||
| @@ -52,7 +52,6 @@ public class WoPowerLevelController { | |||||||
|     @PreAuthorize("@ex.hasAuthority('packing:woPowerLevel:page')") |     @PreAuthorize("@ex.hasAuthority('packing:woPowerLevel:page')") | ||||||
|     public Result<PageData<WoPowerLevelDTO>> page(@ApiIgnore @RequestParam Map<String, Object> params){ |     public Result<PageData<WoPowerLevelDTO>> page(@ApiIgnore @RequestParam Map<String, Object> params){ | ||||||
|         PageData<WoPowerLevelDTO> page = woPowerLevelService.page(params); |         PageData<WoPowerLevelDTO> page = woPowerLevelService.page(params); | ||||||
|  |  | ||||||
|         return new Result<PageData<WoPowerLevelDTO>>().ok(page); |         return new Result<PageData<WoPowerLevelDTO>>().ok(page); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -61,7 +60,6 @@ public class WoPowerLevelController { | |||||||
|     @PreAuthorize("@ex.hasAuthority('packing:woPowerLevel:info')") |     @PreAuthorize("@ex.hasAuthority('packing:woPowerLevel:info')") | ||||||
|     public Result<WoPowerLevelDTO> get(@PathVariable("id") Long id){ |     public Result<WoPowerLevelDTO> get(@PathVariable("id") Long id){ | ||||||
|         WoPowerLevelDTO data = woPowerLevelService.get(id); |         WoPowerLevelDTO data = woPowerLevelService.get(id); | ||||||
|  |  | ||||||
|         return new Result<WoPowerLevelDTO>().ok(data); |         return new Result<WoPowerLevelDTO>().ok(data); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -0,0 +1,159 @@ | |||||||
|  | package com.cnbm.packing.controller; | ||||||
|  |  | ||||||
|  | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | ||||||
|  | import com.cnbm.admin.annotation.LogOperation; | ||||||
|  | import com.cnbm.common.constant.Constant; | ||||||
|  | import com.cnbm.common.page.PageData; | ||||||
|  | import com.cnbm.common.utils.ExcelUtils; | ||||||
|  | import com.cnbm.common.utils.Result; | ||||||
|  | import com.cnbm.common.validator.AssertUtils; | ||||||
|  | import com.cnbm.common.validator.ValidatorUtils; | ||||||
|  | import com.cnbm.common.validator.group.AddGroup; | ||||||
|  | import com.cnbm.common.validator.group.DefaultGroup; | ||||||
|  | import com.cnbm.common.validator.group.UpdateGroup; | ||||||
|  | import com.cnbm.packing.dto.IdVo; | ||||||
|  | import com.cnbm.packing.dto.WorkingTimeDTO; | ||||||
|  | import com.cnbm.packing.entity.WorkingTime; | ||||||
|  | import com.cnbm.packing.excel.WorkingTimeExcel; | ||||||
|  | import com.cnbm.packing.mapper.WorkingTimeMapper; | ||||||
|  | import com.cnbm.packing.service.WorkingTimeServiceBiz; | ||||||
|  | import io.swagger.annotations.Api; | ||||||
|  | import io.swagger.annotations.ApiImplicitParam; | ||||||
|  | import io.swagger.annotations.ApiImplicitParams; | ||||||
|  | import io.swagger.annotations.ApiOperation; | ||||||
|  | import org.springframework.beans.factory.annotation.Autowired; | ||||||
|  | import org.springframework.format.annotation.DateTimeFormat; | ||||||
|  | import org.springframework.security.access.prepost.PreAuthorize; | ||||||
|  | import org.springframework.web.bind.annotation.*; | ||||||
|  | import springfox.documentation.annotations.ApiIgnore; | ||||||
|  |  | ||||||
|  | import javax.servlet.http.HttpServletResponse; | ||||||
|  | import java.time.LocalDateTime; | ||||||
|  | import java.util.List; | ||||||
|  | import java.util.Map; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 班次时间段 表  前端控制器 | ||||||
|  |  * | ||||||
|  |  * @author packingGenerator | ||||||
|  |  * @since  2023-12-19 | ||||||
|  |  */ | ||||||
|  | @RestController | ||||||
|  | @RequestMapping("/packing/workingTime") | ||||||
|  | @Api(tags="班次时间段 表") | ||||||
|  | public class WorkingTimeController { | ||||||
|  |     @Autowired | ||||||
|  |     private WorkingTimeServiceBiz workingTimeService; | ||||||
|  |     @Autowired | ||||||
|  |     private WorkingTimeMapper workingTimeMapper; | ||||||
|  |  | ||||||
|  |     @GetMapping("page") | ||||||
|  |     @ApiOperation("分页") | ||||||
|  |     @ApiImplicitParams({ | ||||||
|  |         @ApiImplicitParam(name = Constant.PAGE, value = "当前页码,从1开始", paramType = "query", required = true, dataTypeClass=Integer.class) , | ||||||
|  |         @ApiImplicitParam(name = Constant.LIMIT, value = "每页显示记录数", paramType = "query",required = true, dataTypeClass=Integer.class) , | ||||||
|  |         @ApiImplicitParam(name = Constant.ORDER_FIELD, value = "排序字段", paramType = "query", dataTypeClass=String.class) , | ||||||
|  |         @ApiImplicitParam(name = Constant.ORDER, value = "排序方式,可选值(asc、desc)", paramType = "query", dataTypeClass=String.class) , | ||||||
|  |         @ApiImplicitParam(name = "name", value = "班次名", paramType = "query", dataTypeClass = String.class) | ||||||
|  |     }) | ||||||
|  |     public Result<PageData<WorkingTimeDTO>> page(@ApiIgnore @RequestParam Map<String, Object> params){ | ||||||
|  |         PageData<WorkingTimeDTO> page = workingTimeService.page(params); | ||||||
|  |  | ||||||
|  |         return new Result<PageData<WorkingTimeDTO>>().ok(page); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @GetMapping("{id}") | ||||||
|  |     @ApiOperation("信息") | ||||||
|  |     public Result<WorkingTimeDTO> get(@PathVariable("id") Long id){ | ||||||
|  |         WorkingTimeDTO data = workingTimeService.get(id); | ||||||
|  |  | ||||||
|  |         return new Result<WorkingTimeDTO>().ok(data); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @PostMapping | ||||||
|  |     @ApiOperation("保存") | ||||||
|  |     @LogOperation("保存") | ||||||
|  |     public Result<IdVo> save(@RequestBody WorkingTimeDTO dto){ | ||||||
|  |         //效验数据 | ||||||
|  |         ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class); | ||||||
|  |  | ||||||
|  |         //验证编码是否重名 | ||||||
|  |         QueryWrapper<WorkingTime> wrapper1 = new QueryWrapper<>(); | ||||||
|  |         wrapper1.eq(WorkingTime.CODE, dto.getCode()); | ||||||
|  |         if(workingTimeMapper.selectCount(wrapper1)!= 0){ | ||||||
|  |             return new Result().error(1,"编码重复"); | ||||||
|  |         } | ||||||
|  |         //验证名称是否重名 | ||||||
|  |         QueryWrapper<WorkingTime> wrapper2 = new QueryWrapper<>(); | ||||||
|  |         wrapper2.eq(WorkingTime.ORDER_NAME, dto.getOrderName()); | ||||||
|  |         if(workingTimeMapper.selectCount(wrapper2)!= 0){ | ||||||
|  |             return new Result().error(1,"名称重复"); | ||||||
|  |         } | ||||||
|  |         else { | ||||||
|  |             return new Result<IdVo>().ok(workingTimeService.add(dto)); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @PutMapping | ||||||
|  |     @ApiOperation("修改") | ||||||
|  |     @LogOperation("修改") | ||||||
|  |     public Result<IdVo> update(@RequestBody WorkingTimeDTO dto){ | ||||||
|  |         //效验数据 | ||||||
|  |         ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class); | ||||||
|  |  | ||||||
|  |         //验证编码是否重名 | ||||||
|  |         WorkingTimeDTO entity = workingTimeService.get(dto.getId()); | ||||||
|  |         QueryWrapper<WorkingTime> wrapper1 = new QueryWrapper<>(); | ||||||
|  |         wrapper1.eq(WorkingTime.CODE, dto.getCode()); | ||||||
|  |         if(!entity.getCode().equals(dto.getCode()) && workingTimeMapper.selectCount(wrapper1)!= 0){ | ||||||
|  |             return new Result().error(1,"编码重复"); | ||||||
|  |         } | ||||||
|  |         //验证名称是否重名 | ||||||
|  |         QueryWrapper<WorkingTime> wrapper2 = new QueryWrapper<>(); | ||||||
|  |         wrapper2.eq( WorkingTime.ORDER_NAME, dto.getOrderName()); | ||||||
|  |         if(!entity.getOrderName().equals(dto.getOrderName()) && workingTimeMapper.selectCount(wrapper2)!= 0){ | ||||||
|  |             return new Result().error(1,"名称重复"); | ||||||
|  |         } | ||||||
|  |         else { | ||||||
|  |             return new Result<IdVo>().ok(workingTimeService.edit(dto)); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @DeleteMapping | ||||||
|  |     @ApiOperation("删除") | ||||||
|  |     @LogOperation("删除") | ||||||
|  |     public Result delete(@RequestBody Long[] ids){ | ||||||
|  |         //效验数据 | ||||||
|  |         AssertUtils.isArrayEmpty(ids, "id"); | ||||||
|  |  | ||||||
|  |         workingTimeService.delete(ids); | ||||||
|  |  | ||||||
|  |         return new Result(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @GetMapping("export") | ||||||
|  |     @ApiOperation("导出") | ||||||
|  |     @LogOperation("导出") | ||||||
|  |     public void export(@ApiIgnore @RequestParam Map<String, Object> params, HttpServletResponse response) throws Exception { | ||||||
|  |         List<WorkingTimeDTO> list = workingTimeService.list(params); | ||||||
|  |  | ||||||
|  |         ExcelUtils.exportExcelToTarget(response, null, list, WorkingTimeExcel.class); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @PostMapping(value = "list") | ||||||
|  |     @ApiOperation(value = "获取班次列表") | ||||||
|  |     public List<WorkingTimeDTO> list(){ | ||||||
|  |         return workingTimeService.list(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @GetMapping("getOrderName") | ||||||
|  |     @ApiOperation("查询时间匹配的班次名称") | ||||||
|  | //    @ApiImplicitParam(name = "time", value = "时间", paramType = "query", required = true, dataTypeClass = LocalDateTime.class) | ||||||
|  |     public Result<String> getOrderName(@RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime time){ | ||||||
|  |         String orderName = workingTimeService.getOrderName(time); | ||||||
|  |  | ||||||
|  |         return new Result<String>().ok(orderName); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  | } | ||||||
| @@ -75,4 +75,10 @@ public class ChangePackagingBoxHistoryDTO implements Serializable { | |||||||
| 	@ApiModelProperty(value = "版本号") | 	@ApiModelProperty(value = "版本号") | ||||||
| 	private Integer version; | 	private Integer version; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "操作时间(转)") | ||||||
|  | 	private String createTime1; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "操作类型(转)") | ||||||
|  | 	private String type1; | ||||||
|  |  | ||||||
| } | } | ||||||
| @@ -31,4 +31,18 @@ public class PowerReportDTO implements Serializable { | |||||||
| 	@ApiModelProperty(value = "占比(百分比)") | 	@ApiModelProperty(value = "占比(百分比)") | ||||||
| 	private String proportion; | 	private String proportion; | ||||||
|  |  | ||||||
|  | 	public PowerReportDTO() { | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	public PowerReportDTO(Integer subNum, String subLevel, Float sumPMPP, String proportion) { | ||||||
|  | 		this.subNum = subNum; | ||||||
|  | 		this.subLevel = subLevel; | ||||||
|  | 		this.sumPMPP = sumPMPP; | ||||||
|  | 		this.proportion = proportion; | ||||||
|  | 	} | ||||||
|  | 	public PowerReportDTO(Integer subNum, String subLevel, Float sumPMPP) { | ||||||
|  | 		this.subNum = subNum; | ||||||
|  | 		this.subLevel = subLevel; | ||||||
|  | 		this.sumPMPP = sumPMPP; | ||||||
|  | 	} | ||||||
| } | } | ||||||
| @@ -14,7 +14,7 @@ import java.math.BigDecimal; | |||||||
|  * 打印标签模板表 |  * 打印标签模板表 | ||||||
|  * |  * | ||||||
|  * @author codeGenerator |  * @author codeGenerator | ||||||
|  * @since  2023-02-20 |  * @since  2024-01-25 | ||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| @ApiModel(value = "打印标签模板表DTO对象") | @ApiModel(value = "打印标签模板表DTO对象") | ||||||
| @@ -62,7 +62,7 @@ public class PrintModelDTO implements Serializable { | |||||||
| 	@ApiModelProperty(value = "备注") | 	@ApiModelProperty(value = "备注") | ||||||
| 	private String remark; | 	private String remark; | ||||||
|  |  | ||||||
| 	@ApiModelProperty(value = "类型,0:模组标签,1:等级标签") | 	@ApiModelProperty(value = "类型,1:手动,2:自动") | ||||||
| 	private Integer type; | 	private Integer type; | ||||||
|  |  | ||||||
| 	@ApiModelProperty(value = "是否默认模板,0:否,1:是") | 	@ApiModelProperty(value = "是否默认模板,0:否,1:是") | ||||||
| @@ -77,4 +77,22 @@ public class PrintModelDTO implements Serializable { | |||||||
| 	@ApiModelProperty(value = "线体,1=F ; 2=S (用于过程1比对,和包装打印)(设备传给我们的)") | 	@ApiModelProperty(value = "线体,1=F ; 2=S (用于过程1比对,和包装打印)(设备传给我们的)") | ||||||
| 	private Integer lineBody; | 	private Integer lineBody; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "是否启用,0 停用;1 启用") | ||||||
|  | 	private Integer isEnable; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "场景(用不着了,废弃)") | ||||||
|  | 	private String scenes; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "产品等级,t_product_level 把code传过来放进去,不要放id") | ||||||
|  | 	private String productGrade; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "节数,前端写死,输入") | ||||||
|  | 	private String pitchNumber; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "产品等级,前端写死,输入") | ||||||
|  | 	private String maxFuseCurrent; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "产品等级,前端写死,输入") | ||||||
|  | 	private String coverName; | ||||||
|  |  | ||||||
| } | } | ||||||
| @@ -0,0 +1,65 @@ | |||||||
|  | package com.cnbm.packing.dto; | ||||||
|  |  | ||||||
|  | import io.swagger.annotations.ApiModel; | ||||||
|  | import io.swagger.annotations.ApiModelProperty; | ||||||
|  | import lombok.Data; | ||||||
|  |  | ||||||
|  | import java.io.Serializable; | ||||||
|  | import java.time.LocalDateTime; | ||||||
|  |  | ||||||
|  | import java.math.BigDecimal; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 产品等级 表 | ||||||
|  |  * | ||||||
|  |  * @author codeGenerator | ||||||
|  |  * @since  2023-12-28 | ||||||
|  |  */ | ||||||
|  | @Data | ||||||
|  | @ApiModel(value = "产品等级 表DTO对象") | ||||||
|  | public class ProductLevelDTO implements Serializable { | ||||||
|  | 	private static final long serialVersionUID = 1L; | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "ID") | ||||||
|  | 	private Long id; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "产品名") | ||||||
|  | 	private String productName; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "产品等级,A1/A2/A3/A4/NK") | ||||||
|  | 	private String productLevel; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "备注") | ||||||
|  | 	private String remark; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "删除标志,是否有效:1 可用 0不可用") | ||||||
|  | 	private Integer valid; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "创建人") | ||||||
|  | 	private Long creatorId; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "创建人姓名") | ||||||
|  | 	private String creatorName; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "创建时间") | ||||||
|  | 	private LocalDateTime createTime; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "更新人") | ||||||
|  | 	private Long updaterId; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "更新人姓名") | ||||||
|  | 	private String updaterName; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "更新时间") | ||||||
|  | 	private LocalDateTime updateTime; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "版本号") | ||||||
|  | 	private Integer version; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "产品等级代码") | ||||||
|  | 	private String code; | ||||||
|  |  | ||||||
|  | } | ||||||
							
								
								
									
										62
									
								
								ym-packing/src/main/java/com/cnbm/packing/dto/ScenesDTO.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								ym-packing/src/main/java/com/cnbm/packing/dto/ScenesDTO.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,62 @@ | |||||||
|  | package com.cnbm.packing.dto; | ||||||
|  |  | ||||||
|  | import io.swagger.annotations.ApiModel; | ||||||
|  | import io.swagger.annotations.ApiModelProperty; | ||||||
|  | import lombok.Data; | ||||||
|  |  | ||||||
|  | import java.io.Serializable; | ||||||
|  | import java.time.LocalDateTime; | ||||||
|  |  | ||||||
|  | import java.math.BigDecimal; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 场景 表 | ||||||
|  |  * | ||||||
|  |  * @author codeGenerator | ||||||
|  |  * @since  2023-12-28 | ||||||
|  |  */ | ||||||
|  | @Data | ||||||
|  | @ApiModel(value = "场景 表DTO对象") | ||||||
|  | public class ScenesDTO implements Serializable { | ||||||
|  | 	private static final long serialVersionUID = 1L; | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "ID") | ||||||
|  | 	private Long id; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "场景名") | ||||||
|  | 	private String scenesName; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "备注") | ||||||
|  | 	private String remark; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "删除标志,是否有效:1 可用 0不可用") | ||||||
|  | 	private Integer valid; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "创建人") | ||||||
|  | 	private Long creatorId; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "创建人姓名") | ||||||
|  | 	private String creatorName; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "创建时间") | ||||||
|  | 	private LocalDateTime createTime; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "更新人") | ||||||
|  | 	private Long updaterId; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "更新人姓名") | ||||||
|  | 	private String updaterName; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "更新时间") | ||||||
|  | 	private LocalDateTime updateTime; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "版本号") | ||||||
|  | 	private Integer version; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "场景code") | ||||||
|  | 	private String code; | ||||||
|  |  | ||||||
|  | } | ||||||
| @@ -43,7 +43,7 @@ public class WoPackagingBoxDTO implements Serializable { | |||||||
| 	@ApiModelProperty(value = "等级(舍弃)") | 	@ApiModelProperty(value = "等级(舍弃)") | ||||||
| 	private Integer grade; | 	private Integer grade; | ||||||
|  |  | ||||||
| 	@ApiModelProperty(value = "基板数量,每个包装箱最大20片(舍弃)") | 	@ApiModelProperty(value = "基板数量,每个包装箱最大20片") | ||||||
| 	private Integer substrateQuantity; | 	private Integer substrateQuantity; | ||||||
|  |  | ||||||
| 	@ApiModelProperty(value = "装箱完成时间,指的是包装完成时间") | 	@ApiModelProperty(value = "装箱完成时间,指的是包装完成时间") | ||||||
| @@ -116,6 +116,18 @@ public class WoPackagingBoxDTO implements Serializable { | |||||||
| 	private String orderNum; | 	private String orderNum; | ||||||
|  |  | ||||||
| 	@ApiModelProperty(value = "基板列表") | 	@ApiModelProperty(value = "基板列表") | ||||||
| 	private List<WoPackagingBoxSubstrate> substrateList;; | 	private List<WoPackagingBoxSubstrate> substrateList; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "产品等级,t_product_level 把code传过来放进去,不要放id") | ||||||
|  | 	private String productGrade; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "节数,前端写死,输入") | ||||||
|  | 	private String pitchNumber; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "最大额定熔断电流,前端写死,输入") | ||||||
|  | 	private String maxFuseCurrent; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "盖板,前端写死,输入") | ||||||
|  | 	private String coverName; | ||||||
|  |  | ||||||
| } | } | ||||||
| @@ -179,4 +179,22 @@ public class WoPackagingBoxSubstrateDTO implements Serializable { | |||||||
| 	@ApiModelProperty(value = "打印时间(最近一次打印时间)") | 	@ApiModelProperty(value = "打印时间(最近一次打印时间)") | ||||||
| 	private LocalDateTime printTime; | 	private LocalDateTime printTime; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "包装箱创建时间(转)") | ||||||
|  | 	private String boxCreateTime1; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "最近打印时间(转)") | ||||||
|  | 	private String printTime1; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "产品等级,t_product_level 把code传过来放进去,不要放id") | ||||||
|  | 	private String productGrade; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "节数,前端写死,输入") | ||||||
|  | 	private String pitchNumber; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "最大额定熔断电流,前端写死,输入") | ||||||
|  | 	private String maxFuseCurrent; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "盖板,前端写死,输入") | ||||||
|  | 	private String coverName; | ||||||
|  |  | ||||||
| } | } | ||||||
| @@ -0,0 +1,68 @@ | |||||||
|  | package com.cnbm.packing.dto; | ||||||
|  |  | ||||||
|  | import io.swagger.annotations.ApiModel; | ||||||
|  | import io.swagger.annotations.ApiModelProperty; | ||||||
|  | import lombok.Data; | ||||||
|  |  | ||||||
|  | import java.io.Serializable; | ||||||
|  | import java.time.LocalDateTime; | ||||||
|  |  | ||||||
|  | import java.math.BigDecimal; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 班次时间段 表 | ||||||
|  |  * | ||||||
|  |  * @author codeGenerator | ||||||
|  |  * @since  2023-12-28 | ||||||
|  |  */ | ||||||
|  | @Data | ||||||
|  | @ApiModel(value = "班次时间段 表DTO对象") | ||||||
|  | public class WorkingTimeDTO implements Serializable { | ||||||
|  | 	private static final long serialVersionUID = 1L; | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "ID") | ||||||
|  | 	private Long id; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "班次名 ,A/B/C...") | ||||||
|  | 	private String orderName; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "班次开始时间, 0点 - 24点") | ||||||
|  | 	private LocalDateTime beginTime; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "班次结束时间, 0点 - 24点") | ||||||
|  | 	private LocalDateTime endTime; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "备注") | ||||||
|  | 	private String remark; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "删除标志,是否有效:1 可用 0不可用") | ||||||
|  | 	private Integer valid; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "创建人") | ||||||
|  | 	private Long creatorId; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "创建人姓名") | ||||||
|  | 	private String creatorName; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "创建时间") | ||||||
|  | 	private LocalDateTime createTime; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "更新人") | ||||||
|  | 	private Long updaterId; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "更新人姓名") | ||||||
|  | 	private String updaterName; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "更新时间") | ||||||
|  | 	private LocalDateTime updateTime; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "版本号") | ||||||
|  | 	private Integer version; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "班次代码") | ||||||
|  | 	private String code; | ||||||
|  |  | ||||||
|  | } | ||||||
| @@ -14,7 +14,7 @@ import lombok.Data; | |||||||
|  * </p> |  * </p> | ||||||
|  * |  * | ||||||
|  * @author codeGenerator |  * @author codeGenerator | ||||||
|  * @since 2023-02-20 |  * @since 2024-01-25 | ||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| @TableName("t_print_model") | @TableName("t_print_model") | ||||||
| @@ -63,7 +63,7 @@ public class PrintModel implements Serializable { | |||||||
|     @ApiModelProperty("备注") |     @ApiModelProperty("备注") | ||||||
|     private String remark; |     private String remark; | ||||||
|  |  | ||||||
|     @ApiModelProperty("类型,0:模组标签,1:等级标签") |     @ApiModelProperty("类型,1:手动,2:自动") | ||||||
|     private Integer type; |     private Integer type; | ||||||
|  |  | ||||||
|     @ApiModelProperty("是否默认模板,0:否,1:是") |     @ApiModelProperty("是否默认模板,0:否,1:是") | ||||||
| @@ -78,6 +78,24 @@ public class PrintModel implements Serializable { | |||||||
|     @ApiModelProperty("线体,1=F ; 2=S (用于过程1比对,和包装打印)(设备传给我们的)") |     @ApiModelProperty("线体,1=F ; 2=S (用于过程1比对,和包装打印)(设备传给我们的)") | ||||||
|     private Integer lineBody; |     private Integer lineBody; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("是否启用,0 停用;1 启用") | ||||||
|  |     private Integer isEnable; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("场景(用不着了,废弃)") | ||||||
|  |     private String scenes; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("产品等级,t_product_level 把code传过来放进去,不要放id") | ||||||
|  |     private String productGrade; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("节数,前端写死,输入") | ||||||
|  |     private String pitchNumber; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("产品等级,前端写死,输入") | ||||||
|  |     private String maxFuseCurrent; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("产品等级,前端写死,输入") | ||||||
|  |     private String coverName; | ||||||
|  |  | ||||||
|  |  | ||||||
|     public static final String ID = "ID"; |     public static final String ID = "ID"; | ||||||
|  |  | ||||||
| @@ -115,4 +133,16 @@ public class PrintModel implements Serializable { | |||||||
|  |  | ||||||
|     public static final String LINE_BODY = "line_body"; |     public static final String LINE_BODY = "line_body"; | ||||||
|  |  | ||||||
|  |     public static final String IS_ENABLE = "is_enable"; | ||||||
|  |  | ||||||
|  |     public static final String SCENES = "scenes"; | ||||||
|  |  | ||||||
|  |     public static final String PRODUCT_GRADE = "product_grade"; | ||||||
|  |  | ||||||
|  |     public static final String PITCH_NUMBER = "pitch_number"; | ||||||
|  |  | ||||||
|  |     public static final String MAX_FUSE_CURRENT = "max_fuse_current"; | ||||||
|  |  | ||||||
|  |     public static final String COVER_NAME = "cover_name"; | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -0,0 +1,93 @@ | |||||||
|  | package com.cnbm.packing.entity; | ||||||
|  |  | ||||||
|  | import com.baomidou.mybatisplus.annotation.TableLogic; | ||||||
|  | import com.baomidou.mybatisplus.annotation.TableName; | ||||||
|  | import java.io.Serializable; | ||||||
|  | import java.time.LocalDateTime; | ||||||
|  | import io.swagger.annotations.ApiModel; | ||||||
|  | import io.swagger.annotations.ApiModelProperty; | ||||||
|  | import lombok.Data; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * <p> | ||||||
|  |  * 产品等级 表 | ||||||
|  |  * </p> | ||||||
|  |  * | ||||||
|  |  * @author codeGenerator | ||||||
|  |  * @since 2023-12-28 | ||||||
|  |  */ | ||||||
|  | @Data | ||||||
|  | @TableName("t_product_level") | ||||||
|  | @ApiModel(value = "ProductLevel对象", description = "产品等级 表") | ||||||
|  | public class ProductLevel implements Serializable { | ||||||
|  |  | ||||||
|  |     private static final long serialVersionUID = 1L; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("ID") | ||||||
|  |     private Long id; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("产品名") | ||||||
|  |     private String productName; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("产品等级,A1/A2/A3/A4/NK") | ||||||
|  |     private String productLevel; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("备注") | ||||||
|  |     private String remark; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("删除标志,是否有效:1 可用 0不可用") | ||||||
|  |     @TableLogic | ||||||
|  |     private Integer valid; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("创建人") | ||||||
|  |     private Long creatorId; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("创建人姓名") | ||||||
|  |     private String creatorName; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("创建时间") | ||||||
|  |     private LocalDateTime createTime; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("更新人") | ||||||
|  |     private Long updaterId; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("更新人姓名") | ||||||
|  |     private String updaterName; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("更新时间") | ||||||
|  |     private LocalDateTime updateTime; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("版本号") | ||||||
|  |     private Integer version; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("产品等级代码") | ||||||
|  |     private String code; | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     public static final String ID = "id"; | ||||||
|  |  | ||||||
|  |     public static final String PRODUCT_NAME = "product_name"; | ||||||
|  |  | ||||||
|  |     public static final String PRODUCT_LEVEL = "product_level"; | ||||||
|  |  | ||||||
|  |     public static final String REMARK = "remark"; | ||||||
|  |  | ||||||
|  |     public static final String VALID = "valid"; | ||||||
|  |  | ||||||
|  |     public static final String CREATOR_ID = "creator_id"; | ||||||
|  |  | ||||||
|  |     public static final String CREATOR_NAME = "creator_name"; | ||||||
|  |  | ||||||
|  |     public static final String CREATE_TIME = "create_time"; | ||||||
|  |  | ||||||
|  |     public static final String UPDATER_ID = "updater_id"; | ||||||
|  |  | ||||||
|  |     public static final String UPDATER_NAME = "updater_name"; | ||||||
|  |  | ||||||
|  |     public static final String UPDATE_TIME = "update_time"; | ||||||
|  |  | ||||||
|  |     public static final String VERSION = "version"; | ||||||
|  |  | ||||||
|  |     public static final String CODE = "code"; | ||||||
|  |  | ||||||
|  | } | ||||||
							
								
								
									
										88
									
								
								ym-packing/src/main/java/com/cnbm/packing/entity/Scenes.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										88
									
								
								ym-packing/src/main/java/com/cnbm/packing/entity/Scenes.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,88 @@ | |||||||
|  | package com.cnbm.packing.entity; | ||||||
|  |  | ||||||
|  | import com.baomidou.mybatisplus.annotation.TableLogic; | ||||||
|  | import com.baomidou.mybatisplus.annotation.TableName; | ||||||
|  | import java.io.Serializable; | ||||||
|  | import java.time.LocalDateTime; | ||||||
|  | import io.swagger.annotations.ApiModel; | ||||||
|  | import io.swagger.annotations.ApiModelProperty; | ||||||
|  | import lombok.Data; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * <p> | ||||||
|  |  * 场景 表 | ||||||
|  |  * </p> | ||||||
|  |  * | ||||||
|  |  * @author codeGenerator | ||||||
|  |  * @since 2023-12-28 | ||||||
|  |  */ | ||||||
|  | @Data | ||||||
|  | @TableName("t_scenes") | ||||||
|  | @ApiModel(value = "Scenes对象", description = "场景 表") | ||||||
|  | public class Scenes implements Serializable { | ||||||
|  |  | ||||||
|  |     private static final long serialVersionUID = 1L; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("ID") | ||||||
|  |     private Long id; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("场景名") | ||||||
|  |     private String scenesName; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("备注") | ||||||
|  |     private String remark; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("删除标志,是否有效:1 可用 0不可用") | ||||||
|  |     @TableLogic | ||||||
|  |     private Integer valid; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("创建人") | ||||||
|  |     private Long creatorId; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("创建人姓名") | ||||||
|  |     private String creatorName; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("创建时间") | ||||||
|  |     private LocalDateTime createTime; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("更新人") | ||||||
|  |     private Long updaterId; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("更新人姓名") | ||||||
|  |     private String updaterName; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("更新时间") | ||||||
|  |     private LocalDateTime updateTime; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("版本号") | ||||||
|  |     private Integer version; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("场景code") | ||||||
|  |     private String code; | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     public static final String ID = "id"; | ||||||
|  |  | ||||||
|  |     public static final String SCENES_NAME = "scenes_name"; | ||||||
|  |  | ||||||
|  |     public static final String REMARK = "remark"; | ||||||
|  |  | ||||||
|  |     public static final String VALID = "valid"; | ||||||
|  |  | ||||||
|  |     public static final String CREATOR_ID = "creator_id"; | ||||||
|  |  | ||||||
|  |     public static final String CREATOR_NAME = "creator_name"; | ||||||
|  |  | ||||||
|  |     public static final String CREATE_TIME = "create_time"; | ||||||
|  |  | ||||||
|  |     public static final String UPDATER_ID = "updater_id"; | ||||||
|  |  | ||||||
|  |     public static final String UPDATER_NAME = "updater_name"; | ||||||
|  |  | ||||||
|  |     public static final String UPDATE_TIME = "update_time"; | ||||||
|  |  | ||||||
|  |     public static final String VERSION = "version"; | ||||||
|  |  | ||||||
|  |     public static final String CODE = "code"; | ||||||
|  |  | ||||||
|  | } | ||||||
| @@ -41,7 +41,7 @@ public class WoPackagingBox implements Serializable { | |||||||
|     @ApiModelProperty("等级(舍弃)") |     @ApiModelProperty("等级(舍弃)") | ||||||
|     private Integer grade; |     private Integer grade; | ||||||
|  |  | ||||||
|     @ApiModelProperty("基板数量,每个包装箱最大20片(舍弃)") |     @ApiModelProperty("基板数量,每个包装箱最大20片") | ||||||
|     private Integer substrateQuantity; |     private Integer substrateQuantity; | ||||||
|  |  | ||||||
|     @ApiModelProperty("装箱完成时间,指的是包装完成时间") |     @ApiModelProperty("装箱完成时间,指的是包装完成时间") | ||||||
| @@ -114,6 +114,18 @@ public class WoPackagingBox implements Serializable { | |||||||
|     @ApiModelProperty("订单号") |     @ApiModelProperty("订单号") | ||||||
|     private String orderNum; |     private String orderNum; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("产品等级,t_product_level 把code传过来放进去,不要放id") | ||||||
|  |     private String productGrade; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("节数,前端写死,输入") | ||||||
|  |     private String pitchNumber; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("最大额定熔断电流,前端写死,输入") | ||||||
|  |     private String maxFuseCurrent; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("盖板,前端写死,输入") | ||||||
|  |     private String coverName; | ||||||
|  |  | ||||||
|  |  | ||||||
|     public static final String ID = "ID"; |     public static final String ID = "ID"; | ||||||
|  |  | ||||||
| @@ -175,4 +187,12 @@ public class WoPackagingBox implements Serializable { | |||||||
|  |  | ||||||
|     public static final String ORDER_NUM = "ORDER_NUM"; |     public static final String ORDER_NUM = "ORDER_NUM"; | ||||||
|  |  | ||||||
|  |     public static final String PRODUCT_GRADE = "product_grade"; | ||||||
|  |  | ||||||
|  |     public static final String PITCH_NUMBER = "pitch_number"; | ||||||
|  |  | ||||||
|  |     public static final String MAX_FUSE_CURRENT = "max_fuse_current"; | ||||||
|  |  | ||||||
|  |     public static final String COVER_NAME = "cover_name"; | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -0,0 +1,98 @@ | |||||||
|  | package com.cnbm.packing.entity; | ||||||
|  |  | ||||||
|  | import com.baomidou.mybatisplus.annotation.TableLogic; | ||||||
|  | import com.baomidou.mybatisplus.annotation.TableName; | ||||||
|  | import java.io.Serializable; | ||||||
|  | import java.time.LocalDateTime; | ||||||
|  | import io.swagger.annotations.ApiModel; | ||||||
|  | import io.swagger.annotations.ApiModelProperty; | ||||||
|  | import lombok.Data; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * <p> | ||||||
|  |  * 班次时间段 表 | ||||||
|  |  * </p> | ||||||
|  |  * | ||||||
|  |  * @author codeGenerator | ||||||
|  |  * @since 2023-12-28 | ||||||
|  |  */ | ||||||
|  | @Data | ||||||
|  | @TableName("t_working_time") | ||||||
|  | @ApiModel(value = "WorkingTime对象", description = "班次时间段 表") | ||||||
|  | public class WorkingTime implements Serializable { | ||||||
|  |  | ||||||
|  |     private static final long serialVersionUID = 1L; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("ID") | ||||||
|  |     private Long id; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("班次名 ,A/B/C...") | ||||||
|  |     private String orderName; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("班次开始时间, 0点 - 24点") | ||||||
|  |     private LocalDateTime beginTime; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("班次结束时间, 0点 - 24点") | ||||||
|  |     private LocalDateTime endTime; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("备注") | ||||||
|  |     private String remark; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("删除标志,是否有效:1 可用 0不可用") | ||||||
|  |     @TableLogic | ||||||
|  |     private Integer valid; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("创建人") | ||||||
|  |     private Long creatorId; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("创建人姓名") | ||||||
|  |     private String creatorName; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("创建时间") | ||||||
|  |     private LocalDateTime createTime; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("更新人") | ||||||
|  |     private Long updaterId; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("更新人姓名") | ||||||
|  |     private String updaterName; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("更新时间") | ||||||
|  |     private LocalDateTime updateTime; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("版本号") | ||||||
|  |     private Integer version; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("班次代码") | ||||||
|  |     private String code; | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     public static final String ID = "id"; | ||||||
|  |  | ||||||
|  |     public static final String ORDER_NAME = "order_name"; | ||||||
|  |  | ||||||
|  |     public static final String BEGIN_TIME = "begin_time"; | ||||||
|  |  | ||||||
|  |     public static final String END_TIME = "end_time"; | ||||||
|  |  | ||||||
|  |     public static final String REMARK = "remark"; | ||||||
|  |  | ||||||
|  |     public static final String VALID = "valid"; | ||||||
|  |  | ||||||
|  |     public static final String CREATOR_ID = "creator_id"; | ||||||
|  |  | ||||||
|  |     public static final String CREATOR_NAME = "creator_name"; | ||||||
|  |  | ||||||
|  |     public static final String CREATE_TIME = "create_time"; | ||||||
|  |  | ||||||
|  |     public static final String UPDATER_ID = "updater_id"; | ||||||
|  |  | ||||||
|  |     public static final String UPDATER_NAME = "updater_name"; | ||||||
|  |  | ||||||
|  |     public static final String UPDATE_TIME = "update_time"; | ||||||
|  |  | ||||||
|  |     public static final String VERSION = "version"; | ||||||
|  |  | ||||||
|  |     public static final String CODE = "code"; | ||||||
|  |  | ||||||
|  | } | ||||||
| @@ -28,8 +28,8 @@ public class ChangePackagingBoxHistoryExcel { | |||||||
|     @Excel(name = "目的位置") |     @Excel(name = "目的位置") | ||||||
|     private Integer targetSlot; |     private Integer targetSlot; | ||||||
|     @Excel(name = "操作类型") |     @Excel(name = "操作类型") | ||||||
|     private Integer type; |     private String type1; | ||||||
|     @Excel(name = "操作时间") |     @Excel(name = "操作时间") | ||||||
|     private LocalDateTime createTime; |     private String createTime1; | ||||||
|  |  | ||||||
| } | } | ||||||
| @@ -12,7 +12,7 @@ import java.util.Date; | |||||||
|  * 打印标签模板表 |  * 打印标签模板表 | ||||||
|  * |  * | ||||||
|  * @author codeGenerator |  * @author codeGenerator | ||||||
|  * @since  2023-02-20 |  * @since  2024-01-25 | ||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| public class PrintModelExcel { | public class PrintModelExcel { | ||||||
| @@ -42,7 +42,7 @@ public class PrintModelExcel { | |||||||
|     private Integer valid; |     private Integer valid; | ||||||
|     @Excel(name = "备注") |     @Excel(name = "备注") | ||||||
|     private String remark; |     private String remark; | ||||||
|     @Excel(name = "类型,0:模组标签,1:等级标签") |     @Excel(name = "类型,1:手动,2:自动") | ||||||
|     private Integer type; |     private Integer type; | ||||||
|     @Excel(name = "是否默认模板,0:否,1:是") |     @Excel(name = "是否默认模板,0:否,1:是") | ||||||
|     private Integer isDefault; |     private Integer isDefault; | ||||||
| @@ -52,5 +52,17 @@ public class PrintModelExcel { | |||||||
|     private String content; |     private String content; | ||||||
|     @Excel(name = "线体,1=F ; 2=S (用于过程1比对,和包装打印)(设备传给我们的)") |     @Excel(name = "线体,1=F ; 2=S (用于过程1比对,和包装打印)(设备传给我们的)") | ||||||
|     private Integer lineBody; |     private Integer lineBody; | ||||||
|  |     @Excel(name = "是否启用,0 停用;1 启用") | ||||||
|  |     private Integer isEnable; | ||||||
|  |     @Excel(name = "场景(用不着了,废弃)") | ||||||
|  |     private String scenes; | ||||||
|  |     @Excel(name = "产品等级,t_product_level 把code传过来放进去,不要放id") | ||||||
|  |     private String productGrade; | ||||||
|  |     @Excel(name = "节数,前端写死,输入") | ||||||
|  |     private String pitchNumber; | ||||||
|  |     @Excel(name = "产品等级,前端写死,输入") | ||||||
|  |     private String maxFuseCurrent; | ||||||
|  |     @Excel(name = "产品等级,前端写死,输入") | ||||||
|  |     private String coverName; | ||||||
|  |  | ||||||
| } | } | ||||||
| @@ -0,0 +1,46 @@ | |||||||
|  | package com.cnbm.packing.excel; | ||||||
|  |  | ||||||
|  | import cn.afterturn.easypoi.excel.annotation.Excel; | ||||||
|  | import lombok.Data; | ||||||
|  |  | ||||||
|  | import java.time.LocalDateTime; | ||||||
|  | import java.math.BigDecimal; | ||||||
|  |  | ||||||
|  | import java.util.Date; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 产品等级 表 | ||||||
|  |  * | ||||||
|  |  * @author codeGenerator | ||||||
|  |  * @since  2023-12-28 | ||||||
|  |  */ | ||||||
|  | @Data | ||||||
|  | public class ProductLevelExcel { | ||||||
|  |     @Excel(name = "ID") | ||||||
|  |     private Long id; | ||||||
|  |     @Excel(name = "产品名") | ||||||
|  |     private String productName; | ||||||
|  |     @Excel(name = "产品等级,A1/A2/A3/A4/NK") | ||||||
|  |     private String productLevel; | ||||||
|  |     @Excel(name = "备注") | ||||||
|  |     private String remark; | ||||||
|  |     @Excel(name = "删除标志,是否有效:1 可用 0不可用") | ||||||
|  |     private Integer valid; | ||||||
|  |     @Excel(name = "创建人") | ||||||
|  |     private Long creatorId; | ||||||
|  |     @Excel(name = "创建人姓名") | ||||||
|  |     private String creatorName; | ||||||
|  |     @Excel(name = "创建时间") | ||||||
|  |     private LocalDateTime createTime; | ||||||
|  |     @Excel(name = "更新人") | ||||||
|  |     private Long updaterId; | ||||||
|  |     @Excel(name = "更新人姓名") | ||||||
|  |     private String updaterName; | ||||||
|  |     @Excel(name = "更新时间") | ||||||
|  |     private LocalDateTime updateTime; | ||||||
|  |     @Excel(name = "版本号") | ||||||
|  |     private Integer version; | ||||||
|  |     @Excel(name = "产品等级代码") | ||||||
|  |     private String code; | ||||||
|  |  | ||||||
|  | } | ||||||
| @@ -0,0 +1,44 @@ | |||||||
|  | package com.cnbm.packing.excel; | ||||||
|  |  | ||||||
|  | import cn.afterturn.easypoi.excel.annotation.Excel; | ||||||
|  | import lombok.Data; | ||||||
|  |  | ||||||
|  | import java.time.LocalDateTime; | ||||||
|  | import java.math.BigDecimal; | ||||||
|  |  | ||||||
|  | import java.util.Date; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 场景 表 | ||||||
|  |  * | ||||||
|  |  * @author codeGenerator | ||||||
|  |  * @since  2023-12-28 | ||||||
|  |  */ | ||||||
|  | @Data | ||||||
|  | public class ScenesExcel { | ||||||
|  |     @Excel(name = "ID") | ||||||
|  |     private Long id; | ||||||
|  |     @Excel(name = "场景名") | ||||||
|  |     private String scenesName; | ||||||
|  |     @Excel(name = "备注") | ||||||
|  |     private String remark; | ||||||
|  |     @Excel(name = "删除标志,是否有效:1 可用 0不可用") | ||||||
|  |     private Integer valid; | ||||||
|  |     @Excel(name = "创建人") | ||||||
|  |     private Long creatorId; | ||||||
|  |     @Excel(name = "创建人姓名") | ||||||
|  |     private String creatorName; | ||||||
|  |     @Excel(name = "创建时间") | ||||||
|  |     private LocalDateTime createTime; | ||||||
|  |     @Excel(name = "更新人") | ||||||
|  |     private Long updaterId; | ||||||
|  |     @Excel(name = "更新人姓名") | ||||||
|  |     private String updaterName; | ||||||
|  |     @Excel(name = "更新时间") | ||||||
|  |     private LocalDateTime updateTime; | ||||||
|  |     @Excel(name = "版本号") | ||||||
|  |     private Integer version; | ||||||
|  |     @Excel(name = "场景code") | ||||||
|  |     private String code; | ||||||
|  |  | ||||||
|  | } | ||||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user