33 changed files with 617 additions and 285 deletions
-
BINapp.db
-
14src/main/java/a8k/service/app/appctrl/mainflowctrl/CondtionMgrService.java
-
8src/main/java/a8k/service/app/appctrl/mainflowctrl/MainFlowCtrlScheduler.java
-
3src/main/java/a8k/service/app/appctrl/mainflowctrl/action/DO_CLEAR_ERROR_BEFORE_WORK.java
-
23src/main/java/a8k/service/app/appctrl/mainflowctrl/action/DO_FINISH_TUBE_PROCESS.java
-
27src/main/java/a8k/service/app/appctrl/mainflowctrl/action/DO_PROCESS_ERROR_PLATE.java
-
1src/main/java/a8k/service/app/appctrl/mainflowctrl/action/DO_RESUME.java
-
14src/main/java/a8k/service/app/appctrl/mainflowctrl/action/PLATE_OPT_SCAN.java
-
33src/main/java/a8k/service/app/appctrl/mainflowctrl/action/PROCESS_INCUBATE_COMPLETED_PLATE.java
-
5src/main/java/a8k/service/app/appctrl/mainflowctrl/action/SEQ1_ENTER_TUBEHOLDER_AND_SCAN.java
-
3src/main/java/a8k/service/app/appctrl/mainflowctrl/action/SEQ2_SWITCH_TO_THE_NEXT_TUBE.java
-
19src/main/java/a8k/service/app/appctrl/mainflowctrl/action/SEQ3_APPLAY_RESOURCE.java
-
14src/main/java/a8k/service/app/appctrl/mainflowctrl/action/SEQ4_PRE_PROCESS.java
-
63src/main/java/a8k/service/app/appctrl/mainflowctrl/action/SEQ5_PROCESS.java
-
13src/main/java/a8k/service/app/appctrl/mainflowctrl/action/SEQ6_POST_PROCESS.java
-
10src/main/java/a8k/service/app/appctrl/mainflowctrl/action/SEQ7_EJECT_TUBEHOLDER.java
-
2src/main/java/a8k/service/app/appctrl/mainflowctrl/base/A8kActionStepType.java
-
4src/main/java/a8k/service/app/appctrl/mainflowctrl/base/A8kStepAction.java
-
2src/main/java/a8k/service/app/appstate/EmergencySamplePosStateMgrService.java
-
8src/main/java/a8k/service/app/appstate/GStateService.java
-
15src/main/java/a8k/service/app/appstate/OptScanModuleStateMgrService.java
-
261src/main/java/a8k/service/app/appstate/ProjectProcessContextMgrService.java
-
7src/main/java/a8k/service/app/appstate/type/IncubationSubTank.java
-
7src/main/java/a8k/service/app/appstate/type/OptScanModule.java
-
15src/main/java/a8k/service/app/appstate/type/Tube.java
-
6src/main/java/a8k/service/app/appstate/type/TubeHolder.java
-
1src/main/java/a8k/service/app/appstate/type/state/ProjProcessState.java
-
88src/main/java/a8k/service/db/DeviceStatisticDBService.java
-
10src/main/java/a8k/service/db/type/DeviceStatistic.java
-
6src/main/java/a8k/service/db/type/StatisticType.java
-
10src/main/java/a8k/utils/ZSqliteJdbcHelper.java
-
46src/main/java/a8k/utils/ZStringUtils.java
@ -0,0 +1,88 @@ |
|||
package a8k.service.db; |
|||
|
|||
import a8k.service.app.appdata.UtilsProjectColorAllocer; |
|||
import a8k.service.db.type.DeviceStatistic; |
|||
import a8k.service.db.type.StatisticType; |
|||
import a8k.service.debug.AppDebugHelperService; |
|||
import a8k.utils.DateUtil; |
|||
import a8k.utils.ZDateUtils; |
|||
import a8k.utils.ZSqliteJdbcHelper; |
|||
import jakarta.annotation.Nullable; |
|||
import jakarta.annotation.PostConstruct; |
|||
import jakarta.annotation.Resource; |
|||
import lombok.SneakyThrows; |
|||
import org.slf4j.Logger; |
|||
import org.slf4j.LoggerFactory; |
|||
import org.springframework.jdbc.core.JdbcTemplate; |
|||
import org.springframework.jdbc.core.RowMapper; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
import java.sql.ResultSet; |
|||
import java.text.SimpleDateFormat; |
|||
import java.util.Date; |
|||
import java.util.List; |
|||
|
|||
@Component |
|||
public class DeviceStatisticDBService { |
|||
private static final Logger logger = LoggerFactory.getLogger(DeviceStatisticDBService.class); |
|||
private static final String tableName = "zapp_a8k_statistic"; |
|||
private static Class<?> tClass = DeviceStatistic.class; |
|||
|
|||
|
|||
@Resource |
|||
JdbcTemplate jdbcTemplate; |
|||
|
|||
@PostConstruct |
|||
void init() { |
|||
if (!ZSqliteJdbcHelper.isTableExist(jdbcTemplate, tableName)) { |
|||
ZSqliteJdbcHelper.createTable(jdbcTemplate, tableName, tClass); |
|||
} |
|||
} |
|||
|
|||
@SneakyThrows private DeviceStatistic rowMapper(ResultSet rs, int rowNum) { |
|||
return (DeviceStatistic) ZSqliteJdbcHelper.rowMapper(rs, tClass); |
|||
} |
|||
|
|||
public <T> T queryForObject(String sql, RowMapper<T> rowMapper, @Nullable Object... args) { |
|||
try { |
|||
return jdbcTemplate.queryForObject(sql, rowMapper, args); |
|||
} catch (Exception e) { |
|||
logger.error("queryForObject error: {}", e.getMessage()); |
|||
return null; |
|||
} |
|||
} |
|||
|
|||
public void add(StatisticType statisticType, Integer cnt) { |
|||
Date now = new Date(); |
|||
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); |
|||
String today = sdf.format(now); |
|||
|
|||
List<DeviceStatistic> statisticList = jdbcTemplate.query("select * from " + tableName + " where statisticDate = ? and statisticType = ?", this::rowMapper, today, statisticType); |
|||
|
|||
if (statisticList.isEmpty()) { |
|||
DeviceStatistic statistic = new DeviceStatistic(); |
|||
statistic.statisticDate = today; |
|||
statistic.statisticType = statisticType; |
|||
statistic.cnt = cnt; |
|||
ZSqliteJdbcHelper.addObj(jdbcTemplate, tableName, tClass, statistic); |
|||
} else { |
|||
DeviceStatistic statistic = statisticList.get(0); |
|||
statistic.cnt += cnt; |
|||
ZSqliteJdbcHelper.updateObj(jdbcTemplate, tableName, tClass, statistic); |
|||
} |
|||
} |
|||
|
|||
public Integer get(StatisticType type) { |
|||
Date now = new Date(); |
|||
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); |
|||
String today = sdf.format(now); |
|||
|
|||
List<DeviceStatistic> statisticList = jdbcTemplate.query("select * from " + tableName + " where statisticDate = ? and statisticType = ?", this::rowMapper, today, type); |
|||
if (statisticList.isEmpty()) { |
|||
return 0; |
|||
} else { |
|||
return statisticList.get(0).cnt; |
|||
} |
|||
} |
|||
|
|||
} |
@ -0,0 +1,10 @@ |
|||
package a8k.service.db.type; |
|||
|
|||
import java.util.Date; |
|||
|
|||
public class DeviceStatistic { |
|||
public int id; |
|||
public String statisticDate; |
|||
public StatisticType statisticType; |
|||
public Integer cnt; |
|||
} |
@ -0,0 +1,6 @@ |
|||
package a8k.service.db.type; |
|||
|
|||
public enum StatisticType { |
|||
TubeHolderCnt, |
|||
EmergencyTubeCnt, |
|||
} |
@ -0,0 +1,46 @@ |
|||
package a8k.utils; |
|||
|
|||
public class ZStringUtils { |
|||
static public String centerStr(String str, Character c, int len) { |
|||
if (str == null || str.length() >= len) { |
|||
return str; |
|||
} |
|||
int left = (len - str.length()) / 2; |
|||
int right = len - str.length() - left; |
|||
StringBuilder sb = new StringBuilder(); |
|||
for (int i = 0; i < left; i++) { |
|||
sb.append(c); |
|||
} |
|||
sb.append(str); |
|||
for (int i = 0; i < right; i++) { |
|||
sb.append(c); |
|||
} |
|||
return sb.toString(); |
|||
} |
|||
|
|||
static public String rightAlignStr(String str, Character c, int len) { |
|||
if (str == null || str.length() >= len) { |
|||
return str; |
|||
} |
|||
int right = len - str.length(); |
|||
StringBuilder sb = new StringBuilder(); |
|||
for (int i = 0; i < right; i++) { |
|||
sb.append(c); |
|||
} |
|||
sb.append(str); |
|||
return sb.toString(); |
|||
} |
|||
|
|||
static public String leftAlignStr(String str, Character c, int len) { |
|||
if (str == null || str.length() >= len) { |
|||
return str; |
|||
} |
|||
int left = len - str.length(); |
|||
StringBuilder sb = new StringBuilder(); |
|||
sb.append(str); |
|||
for (int i = 0; i < left; i++) { |
|||
sb.append(c); |
|||
} |
|||
return sb.toString(); |
|||
} |
|||
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue