İşlemeleri karşılaştır
	
		
			159 İşleme
		
	
	
		
			d518ce3d19
			...
			yanyang
		
	
	| Yazar | SHA1 | Tarih | |
|---|---|---|---|
| 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 | ||
| c9ddb770e1 | |||
| 6fe5b71e49 | |||
| e35c2f4c45 | |||
| d8b1f7e3e4 | |||
| f3f08353ae | |||
|  | a16cd349cc | ||
|  | 867aef5f50 | ||
| 06364c973b | |||
| 7aa7e382a8 | |||
| ddc2343842 | |||
| e9e73df74d | |||
| 4fd5498f1e | |||
| 5b3f6f6f5d | |||
| cd1bfc3287 | |||
| bf0d6108a1 | |||
|  | 05684b5d2a | ||
|  | 9ccc971a38 | ||
|  | ec1e5097f7 | ||
| b80aaee82c | |||
| b7a3548a47 | |||
| 333d076f6e | |||
|  | e04a4d184e | ||
|  | 6d88aacee0 | ||
| f3b9c25a33 | |||
| 2e72fb7df8 | |||
| cf9614f857 | |||
| 8fa7a486fd | |||
| dd9cff155e | |||
| 101bc8359e | |||
| e405dcb06a | |||
| 458cedb42f | |||
| b0c884d210 | |||
| 3f38072356 | |||
| 3167ad09c4 | |||
| df44cf308f | |||
| 57b79b4f0e | |||
|  | a8d3147ac9 | ||
|  | 550a2f796b | ||
| 25d21ef884 | |||
| ce721696fa | |||
|  | 41207394e5 | ||
|  | 14745366be | ||
| cade1cc1b9 | |||
| 8c0e43d9f7 | |||
| d44034c1db | |||
| 56b8b82fc2 | |||
|  | 31bc287207 | ||
|  | bb8986c98d | ||
| 76cef5fc05 | |||
| 94a7b76157 | |||
| 74dd845b13 | |||
| 58adaa3c59 | |||
|  | fed8f82ff0 | ||
|  | cdc06bd733 | ||
|  | 6e08ff6482 | ||
|  | a50849affc | ||
|  | 161b5b5be4 | ||
|  | 6d3b1e9cbb | ||
| fa783cda84 | |||
| e8629b9ced | |||
|  | 384b1a3d54 | ||
|  | 16f3cd5d30 | ||
| 2cd68b93bf | |||
| 5f409dfdf7 | |||
|  | 1ebe39b60a | ||
|  | 4d1a58b8c7 | ||
| d853cb8409 | |||
| 7a6fffbf21 | |||
| de085053b8 | |||
|  | 4535677c93 | 
| @@ -11,16 +11,16 @@ steps: | |||||||
|   - name: dockerconfig |   - name: dockerconfig | ||||||
|     path: /root/.docker |     path: /root/.docker | ||||||
|   commands: |   commands: | ||||||
|   - docker build -t harbor.picaiba.com/kszny/mes-api:1.0.0-india ./ && docker push harbor.picaiba.com/kszny/mes-api:1.0.0-india |   - docker build -t harbor.picaiba.com/kszny/mes-api:1.0.0-cigs4 ./ && docker push harbor.picaiba.com/kszny/mes-api:1.0.0-cigs4 | ||||||
|  |  | ||||||
| - name: deploy | - name: deploy | ||||||
|   image: harbor.picaiba.com/tools/kubectl |   image: harbor.picaiba.com/tools/kubectl | ||||||
|   commands: |   commands: | ||||||
|   - echo "172.27.0.20 lb.kubesphere.local" >> /etc/hosts |   - echo "172.27.0.20 lb.kubesphere.local" >> /etc/hosts | ||||||
|   - sleep 1 |   - sleep 1 | ||||||
|   - kubectl scale --replicas=0 deployment/mes-api -n mes-india |   - kubectl scale --replicas=0 deployment/mes-api -n mes-cigs4 | ||||||
|   - sleep 3 |   - sleep 3 | ||||||
|   - kubectl scale --replicas=1 deployment/mes-api -n mes-india |   - kubectl scale --replicas=1 deployment/mes-api -n mes-cigs4 | ||||||
|   depends_on: |   depends_on: | ||||||
|   - build |   - build | ||||||
|  |  | ||||||
| @@ -34,6 +34,6 @@ volumes: | |||||||
|      |      | ||||||
| trigger: | trigger: | ||||||
|   branch: |   branch: | ||||||
|   - porject/yd-monitor |   - master | ||||||
|   event: |   event: | ||||||
|   - push |   - push | ||||||
|   | |||||||
| @@ -49,7 +49,7 @@ ENV TZ="Asia/Shanghai" | |||||||
| RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone | RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone | ||||||
| # 定义一些环境变量,方便环境变量传参 | # 定义一些环境变量,方便环境变量传参 | ||||||
| ENV JVM_OPTS="" | ENV JVM_OPTS="" | ||||||
| ENV JAVA_OPTS="-Dspring.profiles.active=dev" | ENV JAVA_OPTS="" | ||||||
| # 指定暴露的端口,起到说明的作用,不指定也会暴露对应端口 | # 指定暴露的端口,起到说明的作用,不指定也会暴露对应端口 | ||||||
| EXPOSE 8080 | EXPOSE 8080 | ||||||
| # 启动 jar 的命令 | # 启动 jar 的命令 | ||||||
|   | |||||||
| @@ -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> | ||||||
|   | |||||||
| @@ -43,6 +43,11 @@ | |||||||
|             <artifactId>ym-common</artifactId> |             <artifactId>ym-common</artifactId> | ||||||
|             <version>1.0-SNAPSHOT</version> |             <version>1.0-SNAPSHOT</version> | ||||||
|         </dependency> |         </dependency> | ||||||
|  |         <dependency> | ||||||
|  |             <groupId>com.alibaba</groupId> | ||||||
|  |             <artifactId>fastjson</artifactId> | ||||||
|  |             <version>1.2.75</version> | ||||||
|  |         </dependency> | ||||||
|  |  | ||||||
|     </dependencies> |     </dependencies> | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										167
									
								
								ym-admin/src/main/java/com/cnbm/admin/base/BaseSupport.java
									
									
									
									
									
										Normal dosya
									
								
							
							
						
						
									
										167
									
								
								ym-admin/src/main/java/com/cnbm/admin/base/BaseSupport.java
									
									
									
									
									
										Normal dosya
									
								
							| @@ -0,0 +1,167 @@ | |||||||
|  | /* | ||||||
|  |  * Copyright (c) 2018. | ||||||
|  |  * http://www.ulabcare.com | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | package com.cnbm.admin.base; | ||||||
|  |  | ||||||
|  | import com.alibaba.fastjson.JSON; | ||||||
|  | import com.cnbm.admin.entity.LoginUser; | ||||||
|  | import com.cnbm.admin.enums.WhetherEnum; | ||||||
|  | import lombok.Builder; | ||||||
|  | import lombok.Data; | ||||||
|  | import org.apache.commons.lang3.StringUtils; | ||||||
|  | import org.springframework.beans.BeanUtils; | ||||||
|  | import org.springframework.stereotype.Service; | ||||||
|  | import org.springframework.web.context.request.RequestContextHolder; | ||||||
|  | import org.springframework.web.context.request.ServletRequestAttributes; | ||||||
|  |  | ||||||
|  | import javax.servlet.http.HttpServletRequest; | ||||||
|  | import javax.servlet.http.HttpServletResponse; | ||||||
|  | import javax.servlet.http.HttpSession; | ||||||
|  | import java.io.Serializable; | ||||||
|  | import java.time.LocalDateTime; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 接口支持基类 | ||||||
|  |  * | ||||||
|  |  * @author jiff | ||||||
|  |  * @date 2018/11/1 | ||||||
|  |  * @since 1.0 | ||||||
|  |  */ | ||||||
|  | @Service | ||||||
|  | public class BaseSupport { | ||||||
|  |  | ||||||
|  |     protected LoginUser getLoginUser() { | ||||||
|  |         // 后续完善拦截器再使用该方式 | ||||||
|  | //        LoginUser loginUser = loginUserHolder.get(); | ||||||
|  | //        if (loginUser != null) { | ||||||
|  | //            return loginUser; | ||||||
|  | //        } | ||||||
|  |         HttpSession session = getHttpServletRequest().getSession(false); | ||||||
|  |         LoginUser loginUser = null; | ||||||
|  |         if (session != null) { | ||||||
|  |             String loginUserJson = (String) session.getAttribute(LoginUser.HTTP_HEADER_NAME); | ||||||
|  |             if (StringUtils.isNotBlank(loginUserJson)) { | ||||||
|  |                 loginUser = JSON.parseObject(loginUserJson, LoginUser.class); | ||||||
|  |                 return loginUser; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         return null; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 获取当前http请求对象 | ||||||
|  |      * | ||||||
|  |      * @return | ||||||
|  |      */ | ||||||
|  |     protected HttpServletRequest getHttpServletRequest() { | ||||||
|  |         return ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 获取当前http响应对象 | ||||||
|  |      * | ||||||
|  |      * @return | ||||||
|  |      */ | ||||||
|  |     protected HttpServletResponse getHttpServletResponse() { | ||||||
|  |         return ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 设置公共字段值,一般用于创建新记录,包含以下字段: | ||||||
|  |      * | ||||||
|  |      * <p> | ||||||
|  |      * {@link CommonField#enabled}<br> | ||||||
|  |      * {@link CommonField#valid}<br> | ||||||
|  |      * {@link CommonField#creatorId}<br> | ||||||
|  |      * {@link CommonField#creatorName}<br> | ||||||
|  |      * {@link CommonField#createTime}<br> | ||||||
|  |      * {@link CommonField#updaterId}<br> | ||||||
|  |      * {@link CommonField#updaterName}<br> | ||||||
|  |      * {@link CommonField#updateTime}<br> | ||||||
|  |      * </p> | ||||||
|  |      * | ||||||
|  |      * @param t                需要设置的对象 | ||||||
|  |      * @param ignoreProperties 忽略的字段 | ||||||
|  |      * @param <T> | ||||||
|  |      */ | ||||||
|  |     public <T extends Serializable> T setCommonField(T t, String... ignoreProperties) { | ||||||
|  |  | ||||||
|  |         CommonField commonField = CommonField.builder() | ||||||
|  |                 .enabled(WhetherEnum.YES.getValue()) | ||||||
|  |                 .valid(WhetherEnum.YES.getValue()) | ||||||
|  |                 .createTime(LocalDateTime.now()) | ||||||
|  |                 .creatorId(getLoginUser().getSysUserEntity().getId()) | ||||||
|  |                 .creatorName(getLoginUser().getUsername()) | ||||||
|  |                 .updateTime(LocalDateTime.now()) | ||||||
|  |                 .updaterId(getLoginUser().getSysUserEntity().getId()) | ||||||
|  |                 .updaterName(getLoginUser().getUsername()) | ||||||
|  |                 .build(); | ||||||
|  |         BeanUtils.copyProperties(commonField, t, ignoreProperties); | ||||||
|  |         return t; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 设置更新的公共字段值,一般用于更新记录,包含以下字段: | ||||||
|  |      * | ||||||
|  |      * <p> | ||||||
|  |      * {@link CommonField#updaterId}<br> | ||||||
|  |      * {@link CommonField#updaterName}<br> | ||||||
|  |      * {@link CommonField#updateTime}<br> | ||||||
|  |      * </p> | ||||||
|  |      * | ||||||
|  |      * @param t   需要设置的对象 | ||||||
|  |      * @param <T> | ||||||
|  |      */ | ||||||
|  |     public <T extends Serializable> T setUpdateCommonField(T t) { | ||||||
|  |         CommonField commonField = CommonField.builder() | ||||||
|  |                 .updaterId(getLoginUser().getSysUserEntity().getId()) | ||||||
|  |                 .updaterName(getLoginUser().getUsername()) | ||||||
|  |                 .updateTime(LocalDateTime.now()) | ||||||
|  |                 .build(); | ||||||
|  |         BeanUtils.copyProperties(commonField, t, "enabled", "valid"); | ||||||
|  |         return t; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Data | ||||||
|  |     @Builder | ||||||
|  |     private static class CommonField implements Serializable { | ||||||
|  |         /** | ||||||
|  |          * 启用状态:0 、停用,1、启用 | ||||||
|  |          */ | ||||||
|  |         private Integer enabled; | ||||||
|  |         /** | ||||||
|  |          * 删除标志,是否有效:1 可用 0不可用 | ||||||
|  |          */ | ||||||
|  |         private Integer valid; | ||||||
|  |  | ||||||
|  |         /** | ||||||
|  |          * 创建人 | ||||||
|  |          */ | ||||||
|  |         private Long creatorId; | ||||||
|  |         /** | ||||||
|  |          * 创建人 | ||||||
|  |          */ | ||||||
|  |         private String creatorName; | ||||||
|  |         /** | ||||||
|  |          * 创建时间 | ||||||
|  |          */ | ||||||
|  |         private LocalDateTime createTime; | ||||||
|  |  | ||||||
|  |  | ||||||
|  |         /** | ||||||
|  |          * 更新人 | ||||||
|  |          */ | ||||||
|  |         private Long updaterId; | ||||||
|  |         /** | ||||||
|  |          * 更新人 | ||||||
|  |          */ | ||||||
|  |         private String updaterName; | ||||||
|  |         /** | ||||||
|  |          * 更新时间 | ||||||
|  |          */ | ||||||
|  |         private LocalDateTime updateTime; | ||||||
|  |     } | ||||||
|  | } | ||||||
| @@ -72,8 +72,14 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { | |||||||
|                         "/swagger-ui/**", |                         "/swagger-ui/**", | ||||||
|                         "/webjars/**", |                         "/webjars/**", | ||||||
|                         "/websocket/**", |                         "/websocket/**", | ||||||
|  |                         "/test/**", | ||||||
|  |                         "/**/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); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -24,6 +24,8 @@ public class LoginUser implements UserDetails{ | |||||||
|  |  | ||||||
|     private static final long serialVersionUID = 1L; |     private static final long serialVersionUID = 1L; | ||||||
|  |  | ||||||
|  |     public static final String HTTP_HEADER_NAME = "loginUser"; | ||||||
|  |  | ||||||
|     private SysUserEntity sysUserEntity; |     private SysUserEntity sysUserEntity; | ||||||
|  |  | ||||||
|     private List<String> permissions; |     private List<String> permissions; | ||||||
|   | |||||||
| @@ -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") | ||||||
|   | |||||||
| @@ -1,5 +1,6 @@ | |||||||
| package com.cnbm.admin.service.impl; | package com.cnbm.admin.service.impl; | ||||||
|  |  | ||||||
|  | import com.alibaba.fastjson.JSON; | ||||||
| import com.cnbm.admin.entity.LoginUser; | import com.cnbm.admin.entity.LoginUser; | ||||||
| import com.cnbm.admin.entity.SysLogLoginEntity; | import com.cnbm.admin.entity.SysLogLoginEntity; | ||||||
| import com.cnbm.admin.enums.LoginOperationEnum; | import com.cnbm.admin.enums.LoginOperationEnum; | ||||||
| @@ -9,7 +10,6 @@ import com.cnbm.admin.service.CaptchaService; | |||||||
| import com.cnbm.admin.service.SysLogLoginService; | import com.cnbm.admin.service.SysLogLoginService; | ||||||
| import com.cnbm.admin.utils.JwtUtil; | import com.cnbm.admin.utils.JwtUtil; | ||||||
| import com.cnbm.admin.service.LoginService; | import com.cnbm.admin.service.LoginService; | ||||||
| import com.cnbm.admin.utils.ResponseResult; |  | ||||||
| import com.cnbm.common.exception.ErrorCode; | import com.cnbm.common.exception.ErrorCode; | ||||||
| import com.cnbm.common.utils.IpUtils; | import com.cnbm.common.utils.IpUtils; | ||||||
| import com.cnbm.common.utils.Result; | import com.cnbm.common.utils.Result; | ||||||
| @@ -22,8 +22,11 @@ import org.springframework.security.authentication.UsernamePasswordAuthenticatio | |||||||
| import org.springframework.security.core.Authentication; | import org.springframework.security.core.Authentication; | ||||||
| import org.springframework.security.core.context.SecurityContextHolder; | import org.springframework.security.core.context.SecurityContextHolder; | ||||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||||
|  | import org.springframework.web.context.request.RequestContextHolder; | ||||||
|  | import org.springframework.web.context.request.ServletRequestAttributes; | ||||||
|  |  | ||||||
| import javax.servlet.http.HttpServletRequest; | import javax.servlet.http.HttpServletRequest; | ||||||
|  | import javax.servlet.http.HttpSession; | ||||||
| import java.util.Date; | import java.util.Date; | ||||||
| import java.util.HashMap; | import java.util.HashMap; | ||||||
| import java.util.Map; | import java.util.Map; | ||||||
| @@ -53,10 +56,10 @@ public class LoginServiceImpl implements LoginService { | |||||||
|     @Override |     @Override | ||||||
|     public Result login(HttpServletRequest request, LoginParam loginParam) { |     public Result login(HttpServletRequest request, LoginParam loginParam) { | ||||||
|         //验证码是否正确 |         //验证码是否正确 | ||||||
|         boolean flag = captchaService.validate(loginParam.getUuid(), loginParam.getCaptcha()); | //        boolean flag = captchaService.validate(loginParam.getUuid(), loginParam.getCaptcha()); | ||||||
|         if(!flag){ | //        if(!flag){ | ||||||
|             return new Result<>().error(ErrorCode.CAPTCHA_ERROR, "验证码错误"); | //            return new Result<>().error(ErrorCode.CAPTCHA_ERROR, "验证码错误"); | ||||||
|         } | //        } | ||||||
|         UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(loginParam.getUsername(),loginParam.getPassword()); |         UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(loginParam.getUsername(),loginParam.getPassword()); | ||||||
|         Authentication authenticate = authenticationManager.authenticate(authenticationToken); |         Authentication authenticate = authenticationManager.authenticate(authenticationToken); | ||||||
|         //登录日志 |         //登录日志 | ||||||
| @@ -81,6 +84,11 @@ public class LoginServiceImpl implements LoginService { | |||||||
|         map.put("token",jwt); |         map.put("token",jwt); | ||||||
|         //把完整的用户信息存入redis  userid作为key |         //把完整的用户信息存入redis  userid作为key | ||||||
|         redisTemplate.opsForValue().set("login:"+userid,loginUser,1, TimeUnit.DAYS); |         redisTemplate.opsForValue().set("login:"+userid,loginUser,1, TimeUnit.DAYS); | ||||||
|  |  | ||||||
|  |         //当前登录用户信息存入session中 | ||||||
|  |         HttpSession session = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest().getSession(); | ||||||
|  |         session.setAttribute(loginUser.HTTP_HEADER_NAME, JSON.toJSONString(loginUser)); | ||||||
|  |  | ||||||
|         //登录成功 |         //登录成功 | ||||||
|         log.setStatus(LoginStatusEnum.SUCCESS.value()); |         log.setStatus(LoginStatusEnum.SUCCESS.value()); | ||||||
|         log.setCreator(loginUser.getSysUserEntity().getId()); |         log.setCreator(loginUser.getSysUserEntity().getId()); | ||||||
|   | |||||||
| @@ -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); | ||||||
|  |  | ||||||
|         //保存角色用户关系 |         //保存角色用户关系 | ||||||
|   | |||||||
| @@ -58,7 +58,7 @@ public abstract class BaseSupportUtils { | |||||||
|      */ |      */ | ||||||
|     public static <T extends Serializable> T setCommonField(T t, String... ignoreProperties) { |     public static <T extends Serializable> T setCommonField(T t, String... ignoreProperties) { | ||||||
|         CommonField commonField = CommonField.builder() |         CommonField commonField = CommonField.builder() | ||||||
|                 .enabled(WhetherEnum.YES.getValue()) | //                .enabled(WhetherEnum.YES.getValue()) | ||||||
|                 .valid(WhetherEnum.YES.getValue()) |                 .valid(WhetherEnum.YES.getValue()) | ||||||
|                 .createTime(LocalDateTime.now()) |                 .createTime(LocalDateTime.now()) | ||||||
|                 .creatorId(getLoginUser().getId()) |                 .creatorId(getLoginUser().getId()) | ||||||
| @@ -89,7 +89,7 @@ public abstract class BaseSupportUtils { | |||||||
|                 .updaterName(getLoginUser().getUsername()) |                 .updaterName(getLoginUser().getUsername()) | ||||||
|                 .updateTime(LocalDateTime.now()) |                 .updateTime(LocalDateTime.now()) | ||||||
|                 .build(); |                 .build(); | ||||||
|         BeanUtils.copyProperties(commonField, t, "enabled", "valid"); |         BeanUtils.copyProperties(commonField, t,  "valid"); | ||||||
|         return t; |         return t; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -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"> | ||||||
|   | |||||||
| @@ -1,7 +1,12 @@ | |||||||
| spring: | spring: | ||||||
|   datasource: |   datasource: | ||||||
|       #MySQL |  | ||||||
|       driver-class-name: com.mysql.cj.jdbc.Driver |       driver-class-name: com.mysql.cj.jdbc.Driver | ||||||
|  |       #MySQL-local | ||||||
|  | #      url: jdbc:mysql://10.0.1.249:3306/mt_cigs4?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true | ||||||
|  | #      username: cigs4 | ||||||
|  | #      password: 1qazxsw2 | ||||||
|  |  | ||||||
|  |       #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 | ||||||
| @@ -54,13 +59,22 @@ spring: | |||||||
| ##多数据源的配置,需要引用renren-dynamic-datasource | ##多数据源的配置,需要引用renren-dynamic-datasource | ||||||
| dynamic: | dynamic: | ||||||
|   datasource: |   datasource: | ||||||
|     slave1: | #    ## 本mes系统 | ||||||
|  | #    slave1: | ||||||
|  | #      driver-class-name: com.mysql.cj.jdbc.Driver | ||||||
|  | #      url: jdbc:mysql://mysql.picaiba.com:30307/mt_cigs4?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true | ||||||
|  | #      username: root | ||||||
|  | #      password: 1qaz@WSX3edc$RFV | ||||||
|  |     ## camline系统 - remote | ||||||
|  |     camline: | ||||||
|       driver-class-name: com.mysql.cj.jdbc.Driver |       driver-class-name: com.mysql.cj.jdbc.Driver | ||||||
|       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 | ||||||
|     slave2: | # | ||||||
|       driver-class-name: com.mysql.cj.jdbc.Driver |     #camline系统 - local | ||||||
|       url: jdbc:mysql://mysql.picaiba.com:30307/mt_cigs4?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true | #    camline: | ||||||
|       username: root | #      driver-class-name: com.mysql.cj.jdbc.Driver | ||||||
|       password: 1qaz@WSX3edc$RFV | #      url: jdbc:mysql://10.0.1.23:3306/synapse?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true | ||||||
|  | #      username: offline_data | ||||||
|  | #      password: tpvmfab4 | ||||||
| @@ -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,9 +33,11 @@ spring: | |||||||
|       enabled: true |       enabled: true | ||||||
|   redis: |   redis: | ||||||
|     database: 6 |     database: 6 | ||||||
|     host: redis.picaiba.com |     host: 127.0.0.1 | ||||||
|     port: 6380 |     #host: 10.0.1.249 | ||||||
|     password: '@WSXcde3'   # 密码(默认为空) |     #host: 192.168.0.102 | ||||||
|  |     port: 6379 | ||||||
|  |     password: ''   # 密码(默认为空) | ||||||
|     timeout: 6000ms  # 连接超时时长(毫秒) |     timeout: 6000ms  # 连接超时时长(毫秒) | ||||||
|     jedis: |     jedis: | ||||||
|       pool: |       pool: | ||||||
|   | |||||||
							
								
								
									
										669
									
								
								ym-gateway/src/main/resources/logback.xml
									
									
									
									
									
										Normal dosya
									
								
							
							
						
						
									
										669
									
								
								ym-gateway/src/main/resources/logback.xml
									
									
									
									
									
										Normal dosya
									
								
							| @@ -0,0 +1,669 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出 --> | ||||||
|  | <!-- scan:当此属性设置为true时,配置文档如果发生改变,将会被重新加载,默认值为true --> | ||||||
|  | <!-- scanPeriod:设置监测配置文档是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。 | ||||||
|  |                  当scan为true时,此属性生效。默认的时间间隔为1分钟。 --> | ||||||
|  | <!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 --> | ||||||
|  | <configuration  scan="true" scanPeriod="10 seconds"> | ||||||
|  |     <contextName>logback-spring</contextName> | ||||||
|  |  | ||||||
|  |     <!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义后,可以使“${}”来使用变量。 --> | ||||||
|  |  | ||||||
|  | <!--    <property name="logging.pathwork" value="C:/qgs_logger/work" />--> | ||||||
|  | <!--    <property name="logging.pathopc" value="C:/qgs_logger/opc" />--> | ||||||
|  | <!--    <property name="logging.pathmq" value="C:/qgs_logger/mq" />--> | ||||||
|  | <!--    <property name="logging.eqlog" value="C:/qgs_logger/s7" />--> | ||||||
|  |  | ||||||
|  |     <property name="logging.eqlog" value="/var/log/logger/EQCommunicationLog" /> | ||||||
|  |     <property name="logging.eventlog" value="/var/log/logger/EventLog" /> | ||||||
|  |     <property name="logging.packing" value="/var/log/logger/Packing" /> | ||||||
|  |     <property name="logging.pathwork" value="/var/log/logger/Working" /> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     <!--0. 日志格式和颜色渲染 --> | ||||||
|  |     <!-- 彩色日志依赖的渲染类 --> | ||||||
|  |     <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" /> | ||||||
|  |     <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" /> | ||||||
|  |     <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" /> | ||||||
|  |     <!-- 彩色日志格式 --> | ||||||
|  |     <property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/> | ||||||
|  |     <!--1. 输出到控制台--> | ||||||
|  |     <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> | ||||||
|  |  | ||||||
|  |         <encoder> | ||||||
|  |             <Pattern>${CONSOLE_LOG_PATTERN}</Pattern> | ||||||
|  |             <!-- 设置字符集 --> | ||||||
|  |             <charset>UTF-8</charset> | ||||||
|  |         </encoder> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |         <!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息--> | ||||||
|  |         <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> | ||||||
|  |             <level>info</level> | ||||||
|  |         </filter> | ||||||
|  |  | ||||||
|  |     </appender> | ||||||
|  |  | ||||||
|  |     <!--2. 输出到文档--> | ||||||
|  |     <!-- 2.1 level为 DEBUG 日志,时间滚动输出  --> | ||||||
|  |     <appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> | ||||||
|  |         <!-- 正在记录的日志文档的路径及文档名 --> | ||||||
|  |         <file>${logging.pathwork}/debug/work-log-debug.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.pathwork}/work-log-debug-%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> | ||||||
|  |  | ||||||
|  |         <!-- 此日志文档只记录debug级别的 --> | ||||||
|  |         <filter class="ch.qos.logback.classic.filter.LevelFilter"> | ||||||
|  |             <level>debug</level> | ||||||
|  |             <onMatch>ACCEPT</onMatch> | ||||||
|  |             <onMismatch>DENY</onMismatch> | ||||||
|  |         </filter> | ||||||
|  |     </appender> | ||||||
|  |     <appender name="EQ_COMM_LOG_DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> | ||||||
|  |         <!-- 正在记录的日志文档的路径及文档名 --> | ||||||
|  |         <file>${logging.eqlog}/debug/s7-log-debug.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.eqlog}/s7-eq-debug-%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> | ||||||
|  |         <!-- 此日志文档只记录debug级别的 --> | ||||||
|  |         <filter class="ch.qos.logback.classic.filter.LevelFilter"> | ||||||
|  |             <level>debug</level> | ||||||
|  |             <onMatch>ACCEPT</onMatch> | ||||||
|  |             <onMismatch>DENY</onMismatch> | ||||||
|  |         </filter> | ||||||
|  |     </appender> | ||||||
|  |     <appender name="PACKING_LOG_DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> | ||||||
|  |         <!-- 正在记录的日志文档的路径及文档名 --> | ||||||
|  |         <file>${logging.packing}/debug/packing-log-debug.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.packing}/packing-log-debug-%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> | ||||||
|  |         <!-- 此日志文档只记录debug级别的 --> | ||||||
|  |         <filter class="ch.qos.logback.classic.filter.LevelFilter"> | ||||||
|  |             <level>debug</level> | ||||||
|  |             <onMatch>ACCEPT</onMatch> | ||||||
|  |             <onMismatch>DENY</onMismatch> | ||||||
|  |         </filter> | ||||||
|  |     </appender> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     <!-- 2.2 level为 INFO 日志,时间滚动输出  --> | ||||||
|  |     <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> | ||||||
|  |         <!-- 正在记录的日志文档的路径及文档名 --> | ||||||
|  |         <file>${logging.pathwork}/info/work-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.pathwork}/work-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="EQ_COMM_LOG_INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> | ||||||
|  |         <!-- 正在记录的日志文档的路径及文档名 --> | ||||||
|  |         <file>${logging.eqlog}/info/s7-eq-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.eqlog}/s7-eq-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="PACKING_LOG_INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> | ||||||
|  |         <!-- 正在记录的日志文档的路径及文档名 --> | ||||||
|  |         <file>${logging.packing}/info/packing-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.packing}/packing-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线  开始 --> | ||||||
|  |     <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 日志,时间滚动输出  --> | ||||||
|  |     <appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> | ||||||
|  |         <!-- 正在记录的日志文档的路径及文档名 --> | ||||||
|  |         <file>${logging.pathwork}/warn/work-log-warn.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.TimeBasedRollingPolicy">--> | ||||||
|  | <!--            <fileNamePattern>${logging.pathwork}/work-log-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>--> | ||||||
|  | <!--            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">--> | ||||||
|  | <!--                <maxFileSize>100MB</maxFileSize>--> | ||||||
|  | <!--            </timeBasedFileNamingAndTriggeringPolicy>--> | ||||||
|  | <!--            <!–日志文档保留天数–>--> | ||||||
|  | <!--            <maxHistory>999</maxHistory>--> | ||||||
|  | <!--        </rollingPolicy>--> | ||||||
|  |  | ||||||
|  |         <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> | ||||||
|  |             <!-- rollover daily --> | ||||||
|  |             <fileNamePattern>${logging.pathwork}/work-log-warn-%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> | ||||||
|  |         <!-- 此日志文档只记录warn级别的 --> | ||||||
|  |         <filter class="ch.qos.logback.classic.filter.LevelFilter"> | ||||||
|  |             <level>warn</level> | ||||||
|  |             <onMatch>ACCEPT</onMatch> | ||||||
|  |             <onMismatch>DENY</onMismatch> | ||||||
|  |         </filter> | ||||||
|  |     </appender> | ||||||
|  |     <appender name="EQ_COMM_LOG_WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> | ||||||
|  |         <!-- 正在记录的日志文档的路径及文档名 --> | ||||||
|  |         <file>${logging.eqlog}/warn/s7-log-warn.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.eqlog}/s7-log-warn-%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> | ||||||
|  |         <!-- 此日志文档只记录warn级别的 --> | ||||||
|  |         <filter class="ch.qos.logback.classic.filter.LevelFilter"> | ||||||
|  |             <level>warn</level> | ||||||
|  |             <onMatch>ACCEPT</onMatch> | ||||||
|  |             <onMismatch>DENY</onMismatch> | ||||||
|  |         </filter> | ||||||
|  |     </appender> | ||||||
|  |     <appender name="PACKING_LOG_WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> | ||||||
|  |         <!-- 正在记录的日志文档的路径及文档名 --> | ||||||
|  |         <file>${logging.packing}/warn/packing-log-warn.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.packing}/packing-log-warn-%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> | ||||||
|  |         <!-- 此日志文档只记录warn级别的 --> | ||||||
|  |         <filter class="ch.qos.logback.classic.filter.LevelFilter"> | ||||||
|  |             <level>warn</level> | ||||||
|  |             <onMatch>ACCEPT</onMatch> | ||||||
|  |             <onMismatch>DENY</onMismatch> | ||||||
|  |         </filter> | ||||||
|  |     </appender> | ||||||
|  |  | ||||||
|  |     <!-- 2.4 level为 ERROR 日志,时间滚动输出  --> | ||||||
|  |     <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> | ||||||
|  |         <!-- 正在记录的日志文档的路径及文档名 --> | ||||||
|  |         <file>${logging.pathwork}/error/work-log-error.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.TimeBasedRollingPolicy">--> | ||||||
|  | <!--            <fileNamePattern>${logging.pathwork}/work-log-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>--> | ||||||
|  | <!--            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">--> | ||||||
|  | <!--                <maxFileSize>100MB</maxFileSize>--> | ||||||
|  | <!--            </timeBasedFileNamingAndTriggeringPolicy>--> | ||||||
|  | <!--            <!–日志文档保留天数–>--> | ||||||
|  | <!--            <maxHistory>999</maxHistory>--> | ||||||
|  | <!--        </rollingPolicy>--> | ||||||
|  |  | ||||||
|  |         <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> | ||||||
|  |             <!-- rollover daily --> | ||||||
|  |             <fileNamePattern>${logging.pathwork}/work-log-error-%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> | ||||||
|  |  | ||||||
|  |         <!-- 此日志文档只记录ERROR级别的 --> | ||||||
|  |         <filter class="ch.qos.logback.classic.filter.LevelFilter"> | ||||||
|  |             <level>ERROR</level> | ||||||
|  |             <onMatch>ACCEPT</onMatch> | ||||||
|  |             <onMismatch>DENY</onMismatch> | ||||||
|  |         </filter> | ||||||
|  |     </appender> | ||||||
|  |     <appender name="EQ_COMM_LOG_ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> | ||||||
|  |         <!-- 正在记录的日志文档的路径及文档名 --> | ||||||
|  |         <file>${logging.eqlog}/error/s7-log-error.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.eqlog}/s7-log-error-%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> | ||||||
|  |  | ||||||
|  |         <!-- 此日志文档只记录ERROR级别的 --> | ||||||
|  |         <filter class="ch.qos.logback.classic.filter.LevelFilter"> | ||||||
|  |             <level>ERROR</level> | ||||||
|  |             <onMatch>ACCEPT</onMatch> | ||||||
|  |             <onMismatch>DENY</onMismatch> | ||||||
|  |         </filter> | ||||||
|  |     </appender> | ||||||
|  |     <appender name="PACKING_LOG_ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> | ||||||
|  |         <!-- 正在记录的日志文档的路径及文档名 --> | ||||||
|  |         <file>${logging.packing}/error/packing-log-error.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.packing}/packing-log-error-%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> | ||||||
|  |  | ||||||
|  |         <!-- 此日志文档只记录ERROR级别的 --> | ||||||
|  |         <filter class="ch.qos.logback.classic.filter.LevelFilter"> | ||||||
|  |             <level>ERROR</level> | ||||||
|  |             <onMatch>ACCEPT</onMatch> | ||||||
|  |             <onMismatch>DENY</onMismatch> | ||||||
|  |         </filter> | ||||||
|  |     </appender> | ||||||
|  |  | ||||||
|  |     <!-- | ||||||
|  |         <logger>用来设置某一个包或者具体的某一个类的日志打印级别、 | ||||||
|  |         以及指定<appender>。<logger>仅有一个name属性, | ||||||
|  |         一个可选的level和一个可选的addtivity属性。 | ||||||
|  |         name:用来指定受此logger约束的某一个包或者具体的某一个类。 | ||||||
|  |         level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF, | ||||||
|  |               还有一个特俗值INHERITED或者同义词NULL,代表强制执行上级的级别。 | ||||||
|  |               如果未设置此属性,那么当前logger将会继承上级的级别。 | ||||||
|  |         addtivity:是否向上级logger传递打印信息。默认是true。 | ||||||
|  |         <logger name="org.springframework.web" level="info"/> | ||||||
|  |         <logger name="org.springframework.scheduling.annotation.ScheduledAnnotationBeanPostProcessor" level="INFO"/> | ||||||
|  |     --> | ||||||
|  |  | ||||||
|  |     <!-- | ||||||
|  |         使用mybatis的时候,sql语句是debug下才会打印,而这里我们只配置了info,所以想要查看sql语句的话,有以下两种操作: | ||||||
|  |         第一种把<root level="info">改成<root level="DEBUG">这样就会打印sql,不过这样日志那边会出现很多其他消息 | ||||||
|  |         第二种就是单独给dao下目录配置debug模式,代码如下,这样配置sql语句会打印,其他还是正常info级别: | ||||||
|  |         【logging.level.org.mybatis=debug logging.level.dao=debug】 | ||||||
|  |      --> | ||||||
|  |  | ||||||
|  |     <!-- | ||||||
|  |         root节点是必选节点,用来指定最基础的日志输出级别,只有一个level属性 | ||||||
|  |         level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF, | ||||||
|  |         不能设置为INHERITED或者同义词NULL。默认是DEBUG | ||||||
|  |         可以包含零个或多个元素,标识这个appender将会添加到这个logger。 | ||||||
|  |     --> | ||||||
|  |  | ||||||
|  |     <!-- name就是包名,这个包下的 所有logger 输出就以下配置(这里的logger只会输出代码里 你指定打印的log ) --> | ||||||
|  |  | ||||||
|  | <!--    <logger name="com.cnbm.pathwork" additivity="false">--> | ||||||
|  | <!--        <appender-ref ref="WORKING_DEBUG_FILE" />--> | ||||||
|  | <!--        <appender-ref ref="WORKING_INFO_FILE" />--> | ||||||
|  | <!--        <appender-ref ref="WORKING_WARN_FILE" />--> | ||||||
|  | <!--        <appender-ref ref="WORKING_ERROR_FILE" />--> | ||||||
|  | <!--    </logger>--> | ||||||
|  |     <logger name="com.cnbm.dispatch" additivity="false"> | ||||||
|  |         <appender-ref ref="EQ_COMM_LOG_DEBUG_FILE" /> | ||||||
|  |         <appender-ref ref="EQ_COMM_LOG_INFO_FILE" /> | ||||||
|  |         <appender-ref ref="EQ_COMM_LOG_WARN_FILE" /> | ||||||
|  |         <appender-ref ref="EQ_COMM_LOG_ERROR_FILE" /> | ||||||
|  |     </logger> | ||||||
|  |  | ||||||
|  |     <!-- 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_INFO_FILE" /> | ||||||
|  |         <appender-ref ref="PACKING_LOG_WARN_FILE" /> | ||||||
|  |         <appender-ref ref="PACKING_LOG_ERROR_FILE" /> | ||||||
|  |     </logger> | ||||||
|  |  | ||||||
|  |     <!--    work这个目录 是所有控制台信息 + 第三方jar包 输出的信息  --> | ||||||
|  |     <root level="info"> | ||||||
|  |         <appender-ref ref="CONSOLE" /> | ||||||
|  |         <appender-ref ref="DEBUG_FILE" /> | ||||||
|  |         <appender-ref ref="INFO_FILE" /> | ||||||
|  |         <appender-ref ref="WARN_FILE" /> | ||||||
|  |         <appender-ref ref="ERROR_FILE" /> | ||||||
|  |     </root> | ||||||
|  |  | ||||||
|  |     <!-- 4.2 生产环境:输出到文档 | ||||||
|  |     <springProfile name="pro"> | ||||||
|  |         <root level="info"> | ||||||
|  |             <appender-ref ref="CONSOLE" /> | ||||||
|  |             <appender-ref ref="DEBUG_FILE" /> | ||||||
|  |             <appender-ref ref="INFO_FILE" /> | ||||||
|  |             <appender-ref ref="ERROR_FILE" /> | ||||||
|  |             <appender-ref ref="WARN_FILE" /> | ||||||
|  |         </root> | ||||||
|  |     </springProfile> --> | ||||||
|  | </configuration> | ||||||
| @@ -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-22 |  * @since  2024-01-29 | ||||||
|  */ |  */ | ||||||
| @RestController | @RestController | ||||||
| @RequestMapping("/code/woPackagingBox") | @RequestMapping("/code/woPackagingBox") | ||||||
|   | |||||||
| @@ -31,7 +31,7 @@ import java.util.Map; | |||||||
|  * 包装箱基板关联表 ( 基板表 )  前端控制器 |  * 包装箱基板关联表 ( 基板表 )  前端控制器 | ||||||
|  * |  * | ||||||
|  * @author codeGenerator |  * @author codeGenerator | ||||||
|  * @since  2023-02-21 |  * @since  2023-03-03 | ||||||
|  */ |  */ | ||||||
| @RestController | @RestController | ||||||
| @RequestMapping("/code/woPackagingBoxSubstrate") | @RequestMapping("/code/woPackagingBoxSubstrate") | ||||||
|   | |||||||
| @@ -31,7 +31,7 @@ import java.util.Map; | |||||||
|  * 功率等级 表  前端控制器 |  * 功率等级 表  前端控制器 | ||||||
|  * |  * | ||||||
|  * @author codeGenerator |  * @author codeGenerator | ||||||
|  * @since  2023-02-20 |  * @since  2023-02-22 | ||||||
|  */ |  */ | ||||||
| @RestController | @RestController | ||||||
| @RequestMapping("/code/woPowerLevel") | @RequestMapping("/code/woPowerLevel") | ||||||
|   | |||||||
| @@ -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-22 |  * @since  2024-01-29 | ||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| @ApiModel(value = "包装箱表DTO对象") | @ApiModel(value = "包装箱表DTO对象") | ||||||
| @@ -26,7 +26,7 @@ public class WoPackagingBoxDTO implements Serializable { | |||||||
| 	@ApiModelProperty(value = "ID") | 	@ApiModelProperty(value = "ID") | ||||||
| 	private Long id; | 	private Long id; | ||||||
|  |  | ||||||
| 	@ApiModelProperty(value = "订单ID") | 	@ApiModelProperty(value = "订单ID(舍弃)") | ||||||
| 	private Long orderId; | 	private Long orderId; | ||||||
|  |  | ||||||
| 	@ApiModelProperty(value = "工单ID(舍弃啊)") | 	@ApiModelProperty(value = "工单ID(舍弃啊)") | ||||||
| @@ -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 = "装箱完成时间,指的是包装完成时间") | ||||||
| @@ -110,4 +110,19 @@ public class WoPackagingBoxDTO implements Serializable { | |||||||
| 	@ApiModelProperty(value = "是否到达包装台,1=到达;2=未达到") | 	@ApiModelProperty(value = "是否到达包装台,1=到达;2=未达到") | ||||||
| 	private Integer isArrived; | 	private Integer isArrived; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "订单号") | ||||||
|  | 	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; | ||||||
|  |  | ||||||
| } | } | ||||||
| @@ -14,7 +14,7 @@ import java.math.BigDecimal; | |||||||
|  * 包装箱基板关联表 ( 基板表 ) |  * 包装箱基板关联表 ( 基板表 ) | ||||||
|  * |  * | ||||||
|  * @author codeGenerator |  * @author codeGenerator | ||||||
|  * @since  2023-02-21 |  * @since  2023-03-03 | ||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| @ApiModel(value = "包装箱基板关联表 ( 基板表 )DTO对象") | @ApiModel(value = "包装箱基板关联表 ( 基板表 )DTO对象") | ||||||
| @@ -71,4 +71,106 @@ public class WoPackagingBoxSubstrateDTO implements Serializable { | |||||||
| 	@ApiModelProperty(value = "功率等级") | 	@ApiModelProperty(value = "功率等级") | ||||||
| 	private String powerLevel; | 	private String powerLevel; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "") | ||||||
|  | 	private LocalDateTime lastUpdateTime; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "补偿后的功率,pmpp") | ||||||
|  | 	private Float pmpp; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "订单名") | ||||||
|  | 	private String orderName; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "") | ||||||
|  | 	private Long binclassFl1; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "") | ||||||
|  | 	private Long binclassFl2; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "") | ||||||
|  | 	private Float etaFl1; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "") | ||||||
|  | 	private Float etaFl2; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "") | ||||||
|  | 	private Float ffFl1; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "") | ||||||
|  | 	private Float ffFl2; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "") | ||||||
|  | 	private Float imppFl1; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "") | ||||||
|  | 	private Float imppFl2; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "") | ||||||
|  | 	private Float insolflashcontrolFl1; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "") | ||||||
|  | 	private Float insolflashcontrolFl2; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "") | ||||||
|  | 	private Float insolmppFl1; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "") | ||||||
|  | 	private Float insolmppFl2; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "") | ||||||
|  | 	private Float insolvocFl1; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "") | ||||||
|  | 	private Float insolvocFl2; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "") | ||||||
|  | 	private Float insolFl1; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "") | ||||||
|  | 	private Float insolFl2; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "") | ||||||
|  | 	private Float iscFl1; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "") | ||||||
|  | 	private Float iscFl2; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "") | ||||||
|  | 	private LocalDateTime measTimeFl1; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "") | ||||||
|  | 	private LocalDateTime measTimeFl2; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "") | ||||||
|  | 	private Float pmppFl1; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "") | ||||||
|  | 	private Float pmppFl2; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "") | ||||||
|  | 	private Float tcellFl1; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "") | ||||||
|  | 	private Float tcellFl2; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "") | ||||||
|  | 	private Float tmonicellFl1; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "") | ||||||
|  | 	private Float tmonicellFl2; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "") | ||||||
|  | 	private Float umppFl1; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "") | ||||||
|  | 	private Float umppFl2; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "") | ||||||
|  | 	private Float uocFl1; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "") | ||||||
|  | 	private Float uocFl2; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty(value = "真实PMPP") | ||||||
|  | 	private Float actualPmpp; | ||||||
|  |  | ||||||
| } | } | ||||||
| @@ -14,7 +14,7 @@ import java.math.BigDecimal; | |||||||
|  * 功率等级 表 |  * 功率等级 表 | ||||||
|  * |  * | ||||||
|  * @author codeGenerator |  * @author codeGenerator | ||||||
|  * @since  2023-02-20 |  * @since  2023-02-22 | ||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| @ApiModel(value = "功率等级 表DTO对象") | @ApiModel(value = "功率等级 表DTO对象") | ||||||
| @@ -27,7 +27,7 @@ public class WoPowerLevelDTO implements Serializable { | |||||||
| 	private Long id; | 	private Long id; | ||||||
|  |  | ||||||
| 	@ApiModelProperty(value = "功率等级名称,(现场人员手动录入)") | 	@ApiModelProperty(value = "功率等级名称,(现场人员手动录入)") | ||||||
| 	private Integer powerClass; | 	private String powerClass; | ||||||
|  |  | ||||||
| 	@ApiModelProperty(value = "pmpp_low,(现场人员手动录入)") | 	@ApiModelProperty(value = "pmpp_low,(现场人员手动录入)") | ||||||
| 	private Float pmppLow; | 	private Float pmppLow; | ||||||
| @@ -38,7 +38,7 @@ public class WoPowerLevelDTO implements Serializable { | |||||||
| 	@ApiModelProperty(value = "物料号,(现场人员手动录入)") | 	@ApiModelProperty(value = "物料号,(现场人员手动录入)") | ||||||
| 	private String sapMaterialNum; | 	private String sapMaterialNum; | ||||||
|  |  | ||||||
| 	@ApiModelProperty(value = "线体,1=F ; 2=S (用于过程1比对,和包装打印)(设备传给我们的)") | 	@ApiModelProperty(value = "线体,1=F ; 2=S (用于过程1比对,和包装打印)(设备传给我们的)(一个功率等级可能对应多个线体)") | ||||||
| 	private Integer lineBody; | 	private Integer lineBody; | ||||||
|  |  | ||||||
| 	@ApiModelProperty(value = "lable_voc,(手动录入)") | 	@ApiModelProperty(value = "lable_voc,(手动录入)") | ||||||
|   | |||||||
| @@ -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-22 |  * @since 2024-01-29 | ||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| @TableName("t_wo_packaging_box") | @TableName("t_wo_packaging_box") | ||||||
| @@ -26,7 +26,7 @@ public class WoPackagingBox implements Serializable { | |||||||
|     @ApiModelProperty("ID") |     @ApiModelProperty("ID") | ||||||
|     private Long id; |     private Long id; | ||||||
|  |  | ||||||
|     @ApiModelProperty("订单ID") |     @ApiModelProperty("订单ID(舍弃)") | ||||||
|     private Long orderId; |     private Long orderId; | ||||||
|  |  | ||||||
|     @ApiModelProperty("工单ID(舍弃啊)") |     @ApiModelProperty("工单ID(舍弃啊)") | ||||||
| @@ -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("装箱完成时间,指的是包装完成时间") | ||||||
| @@ -111,6 +111,21 @@ public class WoPackagingBox implements Serializable { | |||||||
|     @ApiModelProperty("是否到达包装台,1=到达;2=未达到") |     @ApiModelProperty("是否到达包装台,1=到达;2=未达到") | ||||||
|     private Integer isArrived; |     private Integer isArrived; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("订单号") | ||||||
|  |     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"; | ||||||
|  |  | ||||||
| @@ -170,4 +185,14 @@ public class WoPackagingBox implements Serializable { | |||||||
|  |  | ||||||
|     public static final String IS_ARRIVED = "is_arrived"; |     public static final String IS_ARRIVED = "is_arrived"; | ||||||
|  |  | ||||||
|  |     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"; | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -14,7 +14,7 @@ import lombok.Data; | |||||||
|  * </p> |  * </p> | ||||||
|  * |  * | ||||||
|  * @author codeGenerator |  * @author codeGenerator | ||||||
|  * @since 2023-02-21 |  * @since 2023-03-03 | ||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| @TableName("t_wo_packaging_box_substrate") | @TableName("t_wo_packaging_box_substrate") | ||||||
| @@ -72,6 +72,77 @@ public class WoPackagingBoxSubstrate implements Serializable { | |||||||
|     @ApiModelProperty("功率等级") |     @ApiModelProperty("功率等级") | ||||||
|     private String powerLevel; |     private String powerLevel; | ||||||
|  |  | ||||||
|  |     private LocalDateTime lastUpdateTime; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("补偿后的功率,pmpp") | ||||||
|  |     private Float pmpp; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("订单名") | ||||||
|  |     private String orderName; | ||||||
|  |  | ||||||
|  |     private Long binclassFl1; | ||||||
|  |  | ||||||
|  |     private Long binclassFl2; | ||||||
|  |  | ||||||
|  |     private Float etaFl1; | ||||||
|  |  | ||||||
|  |     private Float etaFl2; | ||||||
|  |  | ||||||
|  |     private Float ffFl1; | ||||||
|  |  | ||||||
|  |     private Float ffFl2; | ||||||
|  |  | ||||||
|  |     private Float imppFl1; | ||||||
|  |  | ||||||
|  |     private Float imppFl2; | ||||||
|  |  | ||||||
|  |     private Float insolflashcontrolFl1; | ||||||
|  |  | ||||||
|  |     private Float insolflashcontrolFl2; | ||||||
|  |  | ||||||
|  |     private Float insolmppFl1; | ||||||
|  |  | ||||||
|  |     private Float insolmppFl2; | ||||||
|  |  | ||||||
|  |     private Float insolvocFl1; | ||||||
|  |  | ||||||
|  |     private Float insolvocFl2; | ||||||
|  |  | ||||||
|  |     private Float insolFl1; | ||||||
|  |  | ||||||
|  |     private Float insolFl2; | ||||||
|  |  | ||||||
|  |     private Float iscFl1; | ||||||
|  |  | ||||||
|  |     private Float iscFl2; | ||||||
|  |  | ||||||
|  |     private LocalDateTime measTimeFl1; | ||||||
|  |  | ||||||
|  |     private LocalDateTime measTimeFl2; | ||||||
|  |  | ||||||
|  |     private Float pmppFl1; | ||||||
|  |  | ||||||
|  |     private Float pmppFl2; | ||||||
|  |  | ||||||
|  |     private Float tcellFl1; | ||||||
|  |  | ||||||
|  |     private Float tcellFl2; | ||||||
|  |  | ||||||
|  |     private Float tmonicellFl1; | ||||||
|  |  | ||||||
|  |     private Float tmonicellFl2; | ||||||
|  |  | ||||||
|  |     private Float umppFl1; | ||||||
|  |  | ||||||
|  |     private Float umppFl2; | ||||||
|  |  | ||||||
|  |     private Float uocFl1; | ||||||
|  |  | ||||||
|  |     private Float uocFl2; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("真实PMPP") | ||||||
|  |     private Float actualPmpp; | ||||||
|  |  | ||||||
|  |  | ||||||
|     public static final String ID = "ID"; |     public static final String ID = "ID"; | ||||||
|  |  | ||||||
| @@ -105,4 +176,72 @@ public class WoPackagingBoxSubstrate implements Serializable { | |||||||
|  |  | ||||||
|     public static final String POWER_LEVEL = "POWER_LEVEL"; |     public static final String POWER_LEVEL = "POWER_LEVEL"; | ||||||
|  |  | ||||||
|  |     public static final String LAST_UPDATE_TIME = "LAST_UPDATE_TIME"; | ||||||
|  |  | ||||||
|  |     public static final String PMPP = "PMPP"; | ||||||
|  |  | ||||||
|  |     public static final String ORDER_NAME = "ORDER_NAME"; | ||||||
|  |  | ||||||
|  |     public static final String BINCLASS_FL1 = "BINCLASS_FL1"; | ||||||
|  |  | ||||||
|  |     public static final String BINCLASS_FL2 = "BINCLASS_FL2"; | ||||||
|  |  | ||||||
|  |     public static final String ETA_FL1 = "ETA_FL1"; | ||||||
|  |  | ||||||
|  |     public static final String ETA_FL2 = "ETA_FL2"; | ||||||
|  |  | ||||||
|  |     public static final String FF_FL1 = "FF_FL1"; | ||||||
|  |  | ||||||
|  |     public static final String FF_FL2 = "FF_FL2"; | ||||||
|  |  | ||||||
|  |     public static final String IMPP_FL1 = "IMPP_FL1"; | ||||||
|  |  | ||||||
|  |     public static final String IMPP_FL2 = "IMPP_FL2"; | ||||||
|  |  | ||||||
|  |     public static final String INSOLFLASHCONTROL_FL1 = "InsolFlashControl_FL1"; | ||||||
|  |  | ||||||
|  |     public static final String INSOLFLASHCONTROL_FL2 = "InsolFlashControl_FL2"; | ||||||
|  |  | ||||||
|  |     public static final String INSOLMPP_FL1 = "InsolMPP_FL1"; | ||||||
|  |  | ||||||
|  |     public static final String INSOLMPP_FL2 = "InsolMPP_FL2"; | ||||||
|  |  | ||||||
|  |     public static final String INSOLVOC_FL1 = "InsolVoc_FL1"; | ||||||
|  |  | ||||||
|  |     public static final String INSOLVOC_FL2 = "InsolVoc_FL2"; | ||||||
|  |  | ||||||
|  |     public static final String INSOL_FL1 = "Insol_FL1"; | ||||||
|  |  | ||||||
|  |     public static final String INSOL_FL2 = "Insol_FL2"; | ||||||
|  |  | ||||||
|  |     public static final String ISC_FL1 = "ISC_FL1"; | ||||||
|  |  | ||||||
|  |     public static final String ISC_FL2 = "ISC_FL2"; | ||||||
|  |  | ||||||
|  |     public static final String MEAS_TIME_FL1 = "MEAS_TIME_FL1"; | ||||||
|  |  | ||||||
|  |     public static final String MEAS_TIME_FL2 = "MEAS_TIME_FL2"; | ||||||
|  |  | ||||||
|  |     public static final String PMPP_FL1 = "PMPP_FL1"; | ||||||
|  |  | ||||||
|  |     public static final String PMPP_FL2 = "PMPP_FL2"; | ||||||
|  |  | ||||||
|  |     public static final String TCELL_FL1 = "Tcell_FL1"; | ||||||
|  |  | ||||||
|  |     public static final String TCELL_FL2 = "Tcell_FL2"; | ||||||
|  |  | ||||||
|  |     public static final String TMONICELL_FL1 = "Tmonicell_FL1"; | ||||||
|  |  | ||||||
|  |     public static final String TMONICELL_FL2 = "Tmonicell_FL2"; | ||||||
|  |  | ||||||
|  |     public static final String UMPP_FL1 = "UMPP_FL1"; | ||||||
|  |  | ||||||
|  |     public static final String UMPP_FL2 = "UMPP_FL2"; | ||||||
|  |  | ||||||
|  |     public static final String UOC_FL1 = "UOC_FL1"; | ||||||
|  |  | ||||||
|  |     public static final String UOC_FL2 = "UOC_FL2"; | ||||||
|  |  | ||||||
|  |     public static final String ACTUAL_PMPP = "ACTUAL_PMPP"; | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -15,7 +15,7 @@ import lombok.Data; | |||||||
|  * </p> |  * </p> | ||||||
|  * |  * | ||||||
|  * @author codeGenerator |  * @author codeGenerator | ||||||
|  * @since 2023-02-20 |  * @since 2023-02-22 | ||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| @TableName("t_wo_power_level") | @TableName("t_wo_power_level") | ||||||
| @@ -28,7 +28,7 @@ public class WoPowerLevel implements Serializable { | |||||||
|     private Long id; |     private Long id; | ||||||
|  |  | ||||||
|     @ApiModelProperty("功率等级名称,(现场人员手动录入)") |     @ApiModelProperty("功率等级名称,(现场人员手动录入)") | ||||||
|     private Integer powerClass; |     private String powerClass; | ||||||
|  |  | ||||||
|     @ApiModelProperty("pmpp_low,(现场人员手动录入)") |     @ApiModelProperty("pmpp_low,(现场人员手动录入)") | ||||||
|     private Float pmppLow; |     private Float pmppLow; | ||||||
| @@ -39,7 +39,7 @@ public class WoPowerLevel implements Serializable { | |||||||
|     @ApiModelProperty("物料号,(现场人员手动录入)") |     @ApiModelProperty("物料号,(现场人员手动录入)") | ||||||
|     private String sapMaterialNum; |     private String sapMaterialNum; | ||||||
|  |  | ||||||
|     @ApiModelProperty("线体,1=F ; 2=S (用于过程1比对,和包装打印)(设备传给我们的)") |     @ApiModelProperty("线体,1=F ; 2=S (用于过程1比对,和包装打印)(设备传给我们的)(一个功率等级可能对应多个线体)") | ||||||
|     private Integer lineBody; |     private Integer lineBody; | ||||||
|  |  | ||||||
|     @ApiModelProperty("lable_voc,(手动录入)") |     @ApiModelProperty("lable_voc,(手动录入)") | ||||||
|   | |||||||
| @@ -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,13 +12,13 @@ import java.util.Date; | |||||||
|  * 包装箱表 |  * 包装箱表 | ||||||
|  * |  * | ||||||
|  * @author codeGenerator |  * @author codeGenerator | ||||||
|  * @since  2023-02-22 |  * @since  2024-01-29 | ||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| public class WoPackagingBoxExcel { | public class WoPackagingBoxExcel { | ||||||
|     @Excel(name = "ID") |     @Excel(name = "ID") | ||||||
|     private Long id; |     private Long id; | ||||||
|     @Excel(name = "订单ID") |     @Excel(name = "订单ID(舍弃)") | ||||||
|     private Long orderId; |     private Long orderId; | ||||||
|     @Excel(name = "工单ID(舍弃啊)") |     @Excel(name = "工单ID(舍弃啊)") | ||||||
|     private Long workOrderId; |     private Long workOrderId; | ||||||
| @@ -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; | ||||||
| @@ -74,5 +74,15 @@ public class WoPackagingBoxExcel { | |||||||
|     private Integer model; |     private Integer model; | ||||||
|     @Excel(name = "是否到达包装台,1=到达;2=未达到") |     @Excel(name = "是否到达包装台,1=到达;2=未达到") | ||||||
|     private Integer isArrived; |     private Integer isArrived; | ||||||
|  |     @Excel(name = "订单号") | ||||||
|  |     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; | ||||||
|  |  | ||||||
| } | } | ||||||
| @@ -12,7 +12,7 @@ import java.util.Date; | |||||||
|  * 包装箱基板关联表 ( 基板表 ) |  * 包装箱基板关联表 ( 基板表 ) | ||||||
|  * |  * | ||||||
|  * @author codeGenerator |  * @author codeGenerator | ||||||
|  * @since  2023-02-21 |  * @since  2023-03-03 | ||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| public class WoPackagingBoxSubstrateExcel { | public class WoPackagingBoxSubstrateExcel { | ||||||
| @@ -48,5 +48,73 @@ public class WoPackagingBoxSubstrateExcel { | |||||||
|     private Integer lineBody; |     private Integer lineBody; | ||||||
|     @Excel(name = "功率等级") |     @Excel(name = "功率等级") | ||||||
|     private String powerLevel; |     private String powerLevel; | ||||||
|  |     @Excel(name = "") | ||||||
|  |     private LocalDateTime lastUpdateTime; | ||||||
|  |     @Excel(name = "补偿后的功率,pmpp") | ||||||
|  |     private Float pmpp; | ||||||
|  |     @Excel(name = "订单名") | ||||||
|  |     private String orderName; | ||||||
|  |     @Excel(name = "") | ||||||
|  |     private Long binclassFl1; | ||||||
|  |     @Excel(name = "") | ||||||
|  |     private Long binclassFl2; | ||||||
|  |     @Excel(name = "") | ||||||
|  |     private Float etaFl1; | ||||||
|  |     @Excel(name = "") | ||||||
|  |     private Float etaFl2; | ||||||
|  |     @Excel(name = "") | ||||||
|  |     private Float ffFl1; | ||||||
|  |     @Excel(name = "") | ||||||
|  |     private Float ffFl2; | ||||||
|  |     @Excel(name = "") | ||||||
|  |     private Float imppFl1; | ||||||
|  |     @Excel(name = "") | ||||||
|  |     private Float imppFl2; | ||||||
|  |     @Excel(name = "") | ||||||
|  |     private Float insolflashcontrolFl1; | ||||||
|  |     @Excel(name = "") | ||||||
|  |     private Float insolflashcontrolFl2; | ||||||
|  |     @Excel(name = "") | ||||||
|  |     private Float insolmppFl1; | ||||||
|  |     @Excel(name = "") | ||||||
|  |     private Float insolmppFl2; | ||||||
|  |     @Excel(name = "") | ||||||
|  |     private Float insolvocFl1; | ||||||
|  |     @Excel(name = "") | ||||||
|  |     private Float insolvocFl2; | ||||||
|  |     @Excel(name = "") | ||||||
|  |     private Float insolFl1; | ||||||
|  |     @Excel(name = "") | ||||||
|  |     private Float insolFl2; | ||||||
|  |     @Excel(name = "") | ||||||
|  |     private Float iscFl1; | ||||||
|  |     @Excel(name = "") | ||||||
|  |     private Float iscFl2; | ||||||
|  |     @Excel(name = "") | ||||||
|  |     private LocalDateTime measTimeFl1; | ||||||
|  |     @Excel(name = "") | ||||||
|  |     private LocalDateTime measTimeFl2; | ||||||
|  |     @Excel(name = "") | ||||||
|  |     private Float pmppFl1; | ||||||
|  |     @Excel(name = "") | ||||||
|  |     private Float pmppFl2; | ||||||
|  |     @Excel(name = "") | ||||||
|  |     private Float tcellFl1; | ||||||
|  |     @Excel(name = "") | ||||||
|  |     private Float tcellFl2; | ||||||
|  |     @Excel(name = "") | ||||||
|  |     private Float tmonicellFl1; | ||||||
|  |     @Excel(name = "") | ||||||
|  |     private Float tmonicellFl2; | ||||||
|  |     @Excel(name = "") | ||||||
|  |     private Float umppFl1; | ||||||
|  |     @Excel(name = "") | ||||||
|  |     private Float umppFl2; | ||||||
|  |     @Excel(name = "") | ||||||
|  |     private Float uocFl1; | ||||||
|  |     @Excel(name = "") | ||||||
|  |     private Float uocFl2; | ||||||
|  |     @Excel(name = "真实PMPP") | ||||||
|  |     private Float actualPmpp; | ||||||
|  |  | ||||||
| } | } | ||||||
| @@ -12,21 +12,21 @@ import java.util.Date; | |||||||
|  * 功率等级 表 |  * 功率等级 表 | ||||||
|  * |  * | ||||||
|  * @author codeGenerator |  * @author codeGenerator | ||||||
|  * @since  2023-02-20 |  * @since  2023-02-22 | ||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| public class WoPowerLevelExcel { | public class WoPowerLevelExcel { | ||||||
|     @Excel(name = "ID") |     @Excel(name = "ID") | ||||||
|     private Long id; |     private Long id; | ||||||
|     @Excel(name = "功率等级名称,(现场人员手动录入)") |     @Excel(name = "功率等级名称,(现场人员手动录入)") | ||||||
|     private Integer powerClass; |     private String powerClass; | ||||||
|     @Excel(name = "pmpp_low,(现场人员手动录入)") |     @Excel(name = "pmpp_low,(现场人员手动录入)") | ||||||
|     private Float pmppLow; |     private Float pmppLow; | ||||||
|     @Excel(name = "pmpp_high,(现场人员手动录入)") |     @Excel(name = "pmpp_high,(现场人员手动录入)") | ||||||
|     private Float pmppHigh; |     private Float pmppHigh; | ||||||
|     @Excel(name = "物料号,(现场人员手动录入)") |     @Excel(name = "物料号,(现场人员手动录入)") | ||||||
|     private String sapMaterialNum; |     private String sapMaterialNum; | ||||||
|     @Excel(name = "线体,1=F ; 2=S (用于过程1比对,和包装打印)(设备传给我们的)") |     @Excel(name = "线体,1=F ; 2=S (用于过程1比对,和包装打印)(设备传给我们的)(一个功率等级可能对应多个线体)") | ||||||
|     private Integer lineBody; |     private Integer lineBody; | ||||||
|     @Excel(name = "lable_voc,(手动录入)") |     @Excel(name = "lable_voc,(手动录入)") | ||||||
|     private BigDecimal lableVoc; |     private BigDecimal lableVoc; | ||||||
|   | |||||||
| @@ -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-22 |  * @since 2024-01-29 | ||||||
|  */ |  */ | ||||||
| @Mapper | @Mapper | ||||||
| public interface WoPackagingBoxMapper extends BaseDao<WoPackagingBox> { | public interface WoPackagingBoxMapper extends BaseDao<WoPackagingBox> { | ||||||
|   | |||||||
| @@ -31,6 +31,11 @@ | |||||||
|             <id column="LINE_BODY" property="lineBody" /> |             <id column="LINE_BODY" property="lineBody" /> | ||||||
|             <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="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> | ||||||
|   | |||||||
| @@ -8,7 +8,7 @@ import org.apache.ibatis.annotations.Mapper; | |||||||
|  * 包装箱基板关联表 ( 基板表 ) |  * 包装箱基板关联表 ( 基板表 ) | ||||||
|  * |  * | ||||||
|  * @author codeGenerator |  * @author codeGenerator | ||||||
|  * @since 2023-02-21 |  * @since 2023-03-03 | ||||||
|  */ |  */ | ||||||
| @Mapper | @Mapper | ||||||
| public interface WoPackagingBoxSubstrateMapper extends BaseDao<WoPackagingBoxSubstrate> { | public interface WoPackagingBoxSubstrateMapper extends BaseDao<WoPackagingBoxSubstrate> { | ||||||
|   | |||||||
| @@ -18,6 +18,40 @@ | |||||||
|             <id column="SAP_MATERIAL" property="sapMaterial" /> |             <id column="SAP_MATERIAL" property="sapMaterial" /> | ||||||
|             <id column="LINE_BODY" property="lineBody" /> |             <id column="LINE_BODY" property="lineBody" /> | ||||||
|             <id column="POWER_LEVEL" property="powerLevel" /> |             <id column="POWER_LEVEL" property="powerLevel" /> | ||||||
|  |             <id column="LAST_UPDATE_TIME" property="lastUpdateTime" /> | ||||||
|  |             <id column="PMPP" property="pmpp" /> | ||||||
|  |             <id column="ORDER_NAME" property="orderName" /> | ||||||
|  |             <id column="BINCLASS_FL1" property="binclassFl1" /> | ||||||
|  |             <id column="BINCLASS_FL2" property="binclassFl2" /> | ||||||
|  |             <id column="ETA_FL1" property="etaFl1" /> | ||||||
|  |             <id column="ETA_FL2" property="etaFl2" /> | ||||||
|  |             <id column="FF_FL1" property="ffFl1" /> | ||||||
|  |             <id column="FF_FL2" property="ffFl2" /> | ||||||
|  |             <id column="IMPP_FL1" property="imppFl1" /> | ||||||
|  |             <id column="IMPP_FL2" property="imppFl2" /> | ||||||
|  |             <id column="InsolFlashControl_FL1" property="insolflashcontrolFl1" /> | ||||||
|  |             <id column="InsolFlashControl_FL2" property="insolflashcontrolFl2" /> | ||||||
|  |             <id column="InsolMPP_FL1" property="insolmppFl1" /> | ||||||
|  |             <id column="InsolMPP_FL2" property="insolmppFl2" /> | ||||||
|  |             <id column="InsolVoc_FL1" property="insolvocFl1" /> | ||||||
|  |             <id column="InsolVoc_FL2" property="insolvocFl2" /> | ||||||
|  |             <id column="Insol_FL1" property="insolFl1" /> | ||||||
|  |             <id column="Insol_FL2" property="insolFl2" /> | ||||||
|  |             <id column="ISC_FL1" property="iscFl1" /> | ||||||
|  |             <id column="ISC_FL2" property="iscFl2" /> | ||||||
|  |             <id column="MEAS_TIME_FL1" property="measTimeFl1" /> | ||||||
|  |             <id column="MEAS_TIME_FL2" property="measTimeFl2" /> | ||||||
|  |             <id column="PMPP_FL1" property="pmppFl1" /> | ||||||
|  |             <id column="PMPP_FL2" property="pmppFl2" /> | ||||||
|  |             <id column="Tcell_FL1" property="tcellFl1" /> | ||||||
|  |             <id column="Tcell_FL2" property="tcellFl2" /> | ||||||
|  |             <id column="Tmonicell_FL1" property="tmonicellFl1" /> | ||||||
|  |             <id column="Tmonicell_FL2" property="tmonicellFl2" /> | ||||||
|  |             <id column="UMPP_FL1" property="umppFl1" /> | ||||||
|  |             <id column="UMPP_FL2" property="umppFl2" /> | ||||||
|  |             <id column="UOC_FL1" property="uocFl1" /> | ||||||
|  |             <id column="UOC_FL2" property="uocFl2" /> | ||||||
|  |             <id column="ACTUAL_PMPP" property="actualPmpp" /> | ||||||
|     </resultMap> |     </resultMap> | ||||||
|  |  | ||||||
| </mapper> | </mapper> | ||||||
|   | |||||||
| @@ -8,7 +8,7 @@ import org.apache.ibatis.annotations.Mapper; | |||||||
|  * 功率等级 表 |  * 功率等级 表 | ||||||
|  * |  * | ||||||
|  * @author codeGenerator |  * @author codeGenerator | ||||||
|  * @since 2023-02-20 |  * @since 2023-02-22 | ||||||
|  */ |  */ | ||||||
| @Mapper | @Mapper | ||||||
| public interface WoPowerLevelMapper extends BaseDao<WoPowerLevel> { | public interface WoPowerLevelMapper extends BaseDao<WoPowerLevel> { | ||||||
|   | |||||||
| @@ -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 (1627855073022648322, 1067246875800000035, '包装箱基板关联表 ( 基板表 )', 'packing/woPackagingBoxSubstrate', 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 (1631549072342364161, 1067246875800000035, '包装箱基板关联表 ( 基板表 )', 'code/woPackagingBoxSubstrate', 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 (1627855073022648323, 1627855073022648322, '查看', NULL, 'packing:woPackagingBoxSubstrate:page,packing:woPackagingBoxSubstrate: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 (1631549072342364162, 1631549072342364161, '查看', NULL, 'code:woPackagingBoxSubstrate:page,code:woPackagingBoxSubstrate: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 (1627855073022648324, 1627855073022648322, '新增', NULL, 'packing:woPackagingBoxSubstrate: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 (1631549072342364163, 1631549072342364161, '新增', NULL, 'code:woPackagingBoxSubstrate: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 (1627855073022648325, 1627855073022648322, '修改', NULL, 'packing:woPackagingBoxSubstrate: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 (1631549072342364164, 1631549072342364161, '修改', NULL, 'code:woPackagingBoxSubstrate: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 (1627855073022648326, 1627855073022648322, '删除', NULL, 'packing:woPackagingBoxSubstrate: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 (1631549072342364165, 1631549072342364161, '删除', NULL, 'code:woPackagingBoxSubstrate: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 (1627855073022648327, 1627855073022648322, '导出', NULL, 'packing:woPackagingBoxSubstrate: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 (1631549072342364166, 1631549072342364161, '导出', NULL, 'code:woPackagingBoxSubstrate: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 (1628230581925277697, 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 (1628230581925277698, 1628230581925277697, '查看', 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 (1628230581925277699, 1628230581925277697, '新增', 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 (1628230581925277700, 1628230581925277697, '修改', 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 (1628230581925277701, 1628230581925277697, '删除', 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 (1628230581925277702, 1628230581925277697, '导出', 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()); | ||||||
|   | |||||||
| @@ -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 (1627486255993688065, 1067246875800000035, '功率等级 表', 'packing/woPowerLevel', 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 (1628374086450421761, 1067246875800000035, '功率等级 表', 'code/woPowerLevel', 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 (1627486255993688066, 1627486255993688065, '查看', NULL, 'packing:woPowerLevel:page,packing:woPowerLevel: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 (1628374086450421762, 1628374086450421761, '查看', NULL, 'code:woPowerLevel:page,code:woPowerLevel: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 (1627486255993688067, 1627486255993688065, '新增', NULL, 'packing:woPowerLevel: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 (1628374086450421763, 1628374086450421761, '新增', NULL, 'code:woPowerLevel: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 (1627486255993688068, 1627486255993688065, '修改', NULL, 'packing:woPowerLevel: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 (1628374086450421764, 1628374086450421761, '修改', NULL, 'code:woPowerLevel: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 (1627486255993688069, 1627486255993688065, '删除', NULL, 'packing:woPowerLevel: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 (1628374086450421765, 1628374086450421761, '删除', NULL, 'code:woPowerLevel: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 (1627486255993688070, 1627486255993688065, '导出', NULL, 'packing:woPowerLevel: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 (1628374086450421766, 1628374086450421761, '导出', NULL, 'code:woPowerLevel: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-22 |  * @since  2024-01-29 | ||||||
|  */ |  */ | ||||||
| public interface WoPackagingBoxServiceBiz extends CrudService<WoPackagingBox, WoPackagingBoxDTO> { | public interface WoPackagingBoxServiceBiz extends CrudService<WoPackagingBox, WoPackagingBoxDTO> { | ||||||
|  |  | ||||||
|   | |||||||
| @@ -8,7 +8,7 @@ import com.cnbm.generator.code.entity.WoPackagingBoxSubstrate; | |||||||
|  * 包装箱基板关联表 ( 基板表 ) |  * 包装箱基板关联表 ( 基板表 ) | ||||||
|  * |  * | ||||||
|  * @author codeGenerator |  * @author codeGenerator | ||||||
|  * @since  2023-02-21 |  * @since  2023-03-03 | ||||||
|  */ |  */ | ||||||
| public interface WoPackagingBoxSubstrateServiceBiz extends CrudService<WoPackagingBoxSubstrate, WoPackagingBoxSubstrateDTO> { | public interface WoPackagingBoxSubstrateServiceBiz extends CrudService<WoPackagingBoxSubstrate, WoPackagingBoxSubstrateDTO> { | ||||||
|  |  | ||||||
|   | |||||||
| @@ -8,7 +8,7 @@ import com.cnbm.generator.code.entity.WoPowerLevel; | |||||||
|  * 功率等级 表 |  * 功率等级 表 | ||||||
|  * |  * | ||||||
|  * @author codeGenerator |  * @author codeGenerator | ||||||
|  * @since  2023-02-20 |  * @since  2023-02-22 | ||||||
|  */ |  */ | ||||||
| public interface WoPowerLevelServiceBiz extends CrudService<WoPowerLevel, WoPowerLevelDTO> { | public interface WoPowerLevelServiceBiz extends CrudService<WoPowerLevel, WoPowerLevelDTO> { | ||||||
|  |  | ||||||
|   | |||||||
| @@ -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-22 |  * @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 { | ||||||
|   | |||||||
| @@ -15,7 +15,7 @@ import java.util.Map; | |||||||
|  * 包装箱基板关联表 ( 基板表 ) |  * 包装箱基板关联表 ( 基板表 ) | ||||||
|  * |  * | ||||||
|  * @author codeGenerator |  * @author codeGenerator | ||||||
|  * @since 2023-02-21 |  * @since 2023-03-03 | ||||||
|  */ |  */ | ||||||
| @Service | @Service | ||||||
| public class WoPackagingBoxSubstrateServiceBizImpl extends CrudServiceImpl<WoPackagingBoxSubstrateMapper, WoPackagingBoxSubstrate, WoPackagingBoxSubstrateDTO> implements WoPackagingBoxSubstrateServiceBiz { | public class WoPackagingBoxSubstrateServiceBizImpl extends CrudServiceImpl<WoPackagingBoxSubstrateMapper, WoPackagingBoxSubstrate, WoPackagingBoxSubstrateDTO> implements WoPackagingBoxSubstrateServiceBiz { | ||||||
|   | |||||||
| @@ -15,7 +15,7 @@ import java.util.Map; | |||||||
|  * 功率等级 表 |  * 功率等级 表 | ||||||
|  * |  * | ||||||
|  * @author codeGenerator |  * @author codeGenerator | ||||||
|  * @since 2023-02-20 |  * @since 2023-02-22 | ||||||
|  */ |  */ | ||||||
| @Service | @Service | ||||||
| public class WoPowerLevelServiceBizImpl extends CrudServiceImpl<WoPowerLevelMapper, WoPowerLevel, WoPowerLevelDTO> implements WoPowerLevelServiceBiz { | public class WoPowerLevelServiceBizImpl extends CrudServiceImpl<WoPowerLevelMapper, WoPowerLevel, WoPowerLevelDTO> implements WoPowerLevelServiceBiz { | ||||||
|   | |||||||
| @@ -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; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } | ||||||
| @@ -23,6 +23,16 @@ | |||||||
|             <artifactId>ym-common</artifactId> |             <artifactId>ym-common</artifactId> | ||||||
|             <version>1.0-SNAPSHOT</version> |             <version>1.0-SNAPSHOT</version> | ||||||
|         </dependency> |         </dependency> | ||||||
|  |         <dependency> | ||||||
|  |             <groupId>com.cnbm</groupId> | ||||||
|  |             <artifactId>ym-s7</artifactId> | ||||||
|  |             <version>1.0-SNAPSHOT</version> | ||||||
|  |         </dependency> | ||||||
|  |         <dependency> | ||||||
|  |             <groupId>com.cnbm</groupId> | ||||||
|  |             <artifactId>ym-dynamic-datasource</artifactId> | ||||||
|  |             <version>1.0-SNAPSHOT</version> | ||||||
|  |         </dependency> | ||||||
|         <dependency> |         <dependency> | ||||||
|             <groupId>org.springframework.security</groupId> |             <groupId>org.springframework.security</groupId> | ||||||
|             <artifactId>spring-security-core</artifactId> |             <artifactId>spring-security-core</artifactId> | ||||||
| @@ -33,10 +43,5 @@ | |||||||
|             <version>1.0-SNAPSHOT</version> |             <version>1.0-SNAPSHOT</version> | ||||||
|             <scope>compile</scope> |             <scope>compile</scope> | ||||||
|         </dependency> |         </dependency> | ||||||
|         <dependency> |  | ||||||
|             <groupId>com.cnbm</groupId> |  | ||||||
|             <artifactId>ym-dynamic-datasource</artifactId> |  | ||||||
|             <version>1.0-SNAPSHOT</version> |  | ||||||
|         </dependency> |  | ||||||
|     </dependencies> |     </dependencies> | ||||||
| </project> | </project> | ||||||
							
								
								
									
										15
									
								
								ym-packing/src/main/java/com/cnbm/dispatch/enums/CodeEnum.java
									
									
									
									
									
										Normal dosya
									
								
							
							
						
						
									
										15
									
								
								ym-packing/src/main/java/com/cnbm/dispatch/enums/CodeEnum.java
									
									
									
									
									
										Normal dosya
									
								
							| @@ -0,0 +1,15 @@ | |||||||
|  | package com.cnbm.dispatch.enums; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * @Author: 蔡翔 | ||||||
|  |  * @Date: 2019/10/14 10:07 | ||||||
|  |  * @Version 1.0 | ||||||
|  |  */ | ||||||
|  | public interface CodeEnum { | ||||||
|  |     Integer getNamespace(); | ||||||
|  |     String getIdentity(); | ||||||
|  |     String getType(); | ||||||
|  |     String getName(); | ||||||
|  |     String getDesc(); | ||||||
|  |     void set(String name,Integer nameSpace,String identity); | ||||||
|  | } | ||||||
| @@ -0,0 +1,90 @@ | |||||||
|  | package com.cnbm.dispatch.enums.kuka.step1; | ||||||
|  |  | ||||||
|  | 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 Step1Mes2PlcVar { | ||||||
|  |     SubArrivedFinish("SubArrivedFinish", PlcVar.BOOL,1, DaveArea.DB,2000,26,0), | ||||||
|  |  | ||||||
|  |     dLable_Pnom("dLable_Pnom", PlcVar.DINT,1, DaveArea.DB,2000,28,0), | ||||||
|  |     dLable_Voc("dLable_Voc", PlcVar.REAL,1, DaveArea.DB,2000,32,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_Impp("dLable_Vmpp", PlcVar.REAL,1, DaveArea.DB,2000,44,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; | ||||||
|  |  | ||||||
|  |     Step1Mes2PlcVar(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; | ||||||
|  |     } | ||||||
|  |     Step1Mes2PlcVar(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,88 @@ | |||||||
|  | package com.cnbm.dispatch.enums.kuka.step1; | ||||||
|  |  | ||||||
|  | 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 Step1Plc2MesVar { | ||||||
|  |  | ||||||
|  |     SubArrivedToMes("SubArrivedToMes", PlcVar.BOOL,1, DaveArea.DB,2000,0,0), | ||||||
|  |     SubIdToMes("SubIdToMes",PlcVar.STRING,1,DaveArea.DB,2000,2,0,20), | ||||||
|  |     LineNum("LineNum", PlcVar.UINT,1, DaveArea.DB,2000,24,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; | ||||||
|  |  | ||||||
|  |     Step1Plc2MesVar(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; | ||||||
|  |     } | ||||||
|  |     Step1Plc2MesVar(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,88 @@ | |||||||
|  | package com.cnbm.dispatch.enums.kuka.step2; | ||||||
|  |  | ||||||
|  | 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 Step2Mes2PlcVar { | ||||||
|  |  | ||||||
|  |     //心跳变量(这个可以要求电控同事加一个,不和业务关联,只用于通讯) | ||||||
|  |     BoxId("BoxId",PlcVar.STRING,1,DaveArea.DB,2000,714,0,20), | ||||||
|  |     ShelfIsFullFinish("ShelfIsFullFinish",PlcVar.BOOL,1,DaveArea.DB,2000,712,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; | ||||||
|  |  | ||||||
|  |     Step2Mes2PlcVar(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; | ||||||
|  |     } | ||||||
|  |     Step2Mes2PlcVar(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,91 @@ | |||||||
|  | package com.cnbm.dispatch.enums.kuka.step2; | ||||||
|  |  | ||||||
|  | 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 Step2Plc2MesVar { | ||||||
|  |  | ||||||
|  |     //心跳变量(这个可以要求电控同事加一个,不和业务关联,只用于通讯) | ||||||
|  |  | ||||||
|  |     ShelfIsFull("ShelfIsFull", PlcVar.BOOL,1, DaveArea.DB,2000,48,0), | ||||||
|  |     SubIdList("SubIdList",PlcVar.STRING_Array,30,DaveArea.DB,2000,50,0,20), | ||||||
|  |     LineNum("LineNum", PlcVar.UINT,1, DaveArea.DB,2000,710,0), | ||||||
|  |     PackageNumberSet("PackageNumberSet", PlcVar.UINT,1, DaveArea.DB,2000,764,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; | ||||||
|  |  | ||||||
|  |     Step2Plc2MesVar(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; | ||||||
|  |     } | ||||||
|  |     Step2Plc2MesVar(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.step3; | ||||||
|  |  | ||||||
|  | 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 Step3Mes2PlcVar { | ||||||
|  |  | ||||||
|  |     //心跳变量(这个可以要求电控同事加一个,不和业务关联,只用于通讯) | ||||||
|  |     ShelfIsFullArrivedFinish("ShelfIsFullArrivedFinish", PlcVar.BOOL,1, DaveArea.DB,2000,762,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; | ||||||
|  |  | ||||||
|  |     Step3Mes2PlcVar(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; | ||||||
|  |     } | ||||||
|  |     Step3Mes2PlcVar(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,90 @@ | |||||||
|  | package com.cnbm.dispatch.enums.kuka.step3; | ||||||
|  |  | ||||||
|  | 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 Step3Plc2MesVar { | ||||||
|  |  | ||||||
|  |     //心跳变量(这个可以要求电控同事加一个,不和业务关联,只用于通讯) | ||||||
|  |  | ||||||
|  |     ShelfIsFullArrived("ShelfIsFullArrived", PlcVar.BOOL,1, DaveArea.DB,2000,736,0), | ||||||
|  |     BoxId("BoxId",PlcVar.STRING,60,DaveArea.DB,2000,738,0,20), | ||||||
|  |     LineNum("LineNum", PlcVar.UINT,1, DaveArea.DB,2000,760,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; | ||||||
|  |  | ||||||
|  |     Step3Plc2MesVar(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; | ||||||
|  |     } | ||||||
|  |     Step3Plc2MesVar(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,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; | ||||||
|  |     } | ||||||
|  | } | ||||||
Bu fark içinde çok fazla dosya değişikliği olduğu için bazı dosyalar gösterilmiyor Daha Fazla Göster
		Yeni konuda referans
	
	Bir kullanıcı engelle