|
|
|
@ -51,7 +51,6 @@ public class JxTimeSegmentStatisticsService implements IJxTimeSegmentStatisticsS
|
|
|
|
|
public void insertTimeSegmentStatistics(MesTimeSegmentStatistics timeSegmentStatistics){
|
|
|
|
|
List<MesTimeSegmentStatistics> timeSegmentStatisticsList = getTimeSegmentStatisticsList(timeSegmentStatistics.getOrganizeCode(), timeSegmentStatistics.getWorkCenterCode(), timeSegmentStatistics.getShiftCode());
|
|
|
|
|
checkTimeIsValid(timeSegmentStatisticsList, timeSegmentStatistics);
|
|
|
|
|
timeSegmentStatistics.setTimeLength(getTimeLength(timeSegmentStatistics.getStartTime(), timeSegmentStatistics.getEndTime(), TimeTool.getToday()));
|
|
|
|
|
timeSegmentStatistics.setTimeSegmentCode(getTimeSegmentCode(timeSegmentStatistics));
|
|
|
|
|
timeSegmentStatistics.setSystemSyncStatus(MesExtEnumUtil.IF_SYNC_STATUS.NO_SYNC.getValue());
|
|
|
|
|
ConvertBean.serviceModelInitialize(timeSegmentStatistics, timeSegmentStatistics.getCreateUser());
|
|
|
|
@ -75,44 +74,23 @@ public class JxTimeSegmentStatisticsService implements IJxTimeSegmentStatisticsS
|
|
|
|
|
timeSegmentStatisticsDb.setShiftCode(timeSegmentStatistics.getShiftCode());
|
|
|
|
|
timeSegmentStatisticsDb.setStartTime(timeSegmentStatistics.getStartTime());
|
|
|
|
|
timeSegmentStatisticsDb.setEndTime(timeSegmentStatistics.getEndTime());
|
|
|
|
|
timeSegmentStatisticsDb.setTimeLength(getTimeLength(timeSegmentStatisticsDb.getStartTime(), timeSegmentStatisticsDb.getEndTime(), TimeTool.getToday()));
|
|
|
|
|
timeSegmentStatisticsDb.setTimeLength(timeSegmentStatistics.getTimeLength());
|
|
|
|
|
timeSegmentStatisticsDb.setTimeSegmentCode(getTimeSegmentCode(timeSegmentStatisticsDb));
|
|
|
|
|
timeSegmentStatisticsDb.setSystemSyncStatus(MesExtEnumUtil.IF_SYNC_STATUS.NO_SYNC.getValue());
|
|
|
|
|
ConvertBean.serviceModelUpdate(timeSegmentStatisticsDb, timeSegmentStatistics.getModifyUser());
|
|
|
|
|
timeSegmentStatisticsRepository.save(timeSegmentStatisticsDb);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void checkTimeIsValid(List<MesTimeSegmentStatistics> timeSegmentStatisticsList, MesTimeSegmentStatistics timeSegmentStatistics) {
|
|
|
|
|
if (!checkTimeFormat(timeSegmentStatistics.getStartTime()))
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
|
|
|
|
|
.setErrorDetail("开始时间[%s]格式错误,请检查时间格式[%s]!", timeSegmentStatistics.getStartTime(), MesExtConstWords.TIME_TRUNCATE_SECOND_FORMAT)
|
|
|
|
|
.build();
|
|
|
|
|
if (!checkTimeFormat(timeSegmentStatistics.getEndTime()))
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
|
|
|
|
|
.setErrorDetail("结束时间[%s]格式错误,请检查时间格式[%s]!", timeSegmentStatistics.getEndTime(), MesExtConstWords.TIME_TRUNCATE_SECOND_FORMAT)
|
|
|
|
|
.build();
|
|
|
|
|
if (!checkTimeStartBeforeEnd(timeSegmentStatistics.getStartTime(), timeSegmentStatistics.getEndTime()))
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
|
|
|
|
|
.setErrorDetail("开始时间[%s]必须小于结束时间[%s]!", timeSegmentStatistics.getStartTime(), timeSegmentStatistics.getEndTime())
|
|
|
|
|
.build();
|
|
|
|
|
String startTime = timeSegmentStatistics.getStartTime();
|
|
|
|
|
String endTime = timeSegmentStatistics.getEndTime();
|
|
|
|
|
timeSegmentStatistics.setStartTime(startTime + MesExtConstWords.APPEND_SECONDS);
|
|
|
|
|
timeSegmentStatistics.setEndTime(endTime + MesExtConstWords.APPEND_SECONDS);
|
|
|
|
|
MesTimeSegmentStatistics item = checkTimeCompareToDataList(timeSegmentStatisticsList, timeSegmentStatistics);
|
|
|
|
|
if (null != item)
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
|
|
|
|
|
.setErrorDetail("开始时间[%s]结束时间[%s]与已维护的生产线[%s]班次代码[%s]配置的开始时间[%s]结束时间[%s]存在时间重叠!",
|
|
|
|
|
startTime, endTime, item.getWorkCenterCode(), item.getShiftCode(), item.getStartTime(), item.getEndTime())
|
|
|
|
|
.build();
|
|
|
|
|
@Override
|
|
|
|
|
public Boolean checkTimeLengthIsValid(MesTimeSegmentStatistics timeSegmentStatistics, String today) {
|
|
|
|
|
Integer timeLengthMax = getTimeLength(timeSegmentStatistics.getStartTime(), timeSegmentStatistics.getEndTime(), today);
|
|
|
|
|
try {
|
|
|
|
|
if (!StringUtils.isEmpty(timeSegmentStatistics.getTimeLength()) && Integer.valueOf(timeSegmentStatistics.getTimeLength()).compareTo(timeLengthMax) > 0) return false;
|
|
|
|
|
} catch (NumberFormatException e) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
if (StringUtils.isEmpty(timeSegmentStatistics.getTimeLength())) timeSegmentStatistics.setTimeLength(timeLengthMax.toString());
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@ -133,19 +111,6 @@ public class JxTimeSegmentStatisticsService implements IJxTimeSegmentStatisticsS
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public String getTimeLength(String startTime, String endTime, String today) {
|
|
|
|
|
try {
|
|
|
|
|
return String.valueOf(TimeTool.getSecoundsBetweenTime(1, getTimeAppendToday(today, startTime), getTimeAppendToday(today, endTime)));
|
|
|
|
|
} catch (ParseException e) {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private String getTimeAppendToday(String today, String time) {
|
|
|
|
|
return new StringJoiner(MesExtConstWords.ONE_SPACE).add(today).add(time).toString();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public String getTimeSegmentCode(MesTimeSegmentStatistics timeSegmentStatistics) {
|
|
|
|
|
return new StringJoiner(MesExtConstWords.COLON).add(timeSegmentStatistics.getWorkCenterCode()).add(timeSegmentStatistics.getShiftCode()).add(timeSegmentStatistics.getStartTime().substring(0, 5)).toString().replaceAll(MesExtConstWords.COLON, MesExtConstWords.EMPTY);
|
|
|
|
|
}
|
|
|
|
@ -159,6 +124,13 @@ public class JxTimeSegmentStatisticsService implements IJxTimeSegmentStatisticsS
|
|
|
|
|
@Override
|
|
|
|
|
public void deleteByIds(Long[] ids, String userName) { updateStatusByIds(ids, userName, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), false); }
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public List<MesTimeSegmentStatistics> getTimeSegmentStatisticsList(String organizeCode, String workCenterCode, String shiftCode) {
|
|
|
|
|
return timeSegmentStatisticsRepository.findByProperty(
|
|
|
|
|
new String[]{MesExtConstWords.ORGANIZE_CODE, MesExtConstWords.IS_DELETED, MesExtConstWords.IS_VALID, MesExtConstWords.WORK_CENTER_CODE, MesExtConstWords.SHIFT_CODE},
|
|
|
|
|
new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), workCenterCode, shiftCode});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void updateStatusByIds(Long[] ids, String userName, int status, Boolean flag) {
|
|
|
|
|
for (Long id : ids) {
|
|
|
|
|
MesTimeSegmentStatistics timeSegmentStatistics = timeSegmentStatisticsRepository.getById(id);
|
|
|
|
@ -173,11 +145,56 @@ public class JxTimeSegmentStatisticsService implements IJxTimeSegmentStatisticsS
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public List<MesTimeSegmentStatistics> getTimeSegmentStatisticsList(String organizeCode, String workCenterCode, String shiftCode) {
|
|
|
|
|
return timeSegmentStatisticsRepository.findByProperty(
|
|
|
|
|
new String[]{MesExtConstWords.ORGANIZE_CODE, MesExtConstWords.IS_DELETED, MesExtConstWords.IS_VALID, MesExtConstWords.WORK_CENTER_CODE, MesExtConstWords.SHIFT_CODE},
|
|
|
|
|
new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), workCenterCode, shiftCode});
|
|
|
|
|
private void checkTimeIsValid(List<MesTimeSegmentStatistics> timeSegmentStatisticsList, MesTimeSegmentStatistics timeSegmentStatistics) {
|
|
|
|
|
if (!checkTimeFormat(timeSegmentStatistics.getStartTime()))
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
|
|
|
|
|
.setErrorDetail("开始时间[%s]格式错误,请检查时间格式[%s]!", timeSegmentStatistics.getStartTime(), MesExtConstWords.TIME_TRUNCATE_SECOND_FORMAT)
|
|
|
|
|
.build();
|
|
|
|
|
if (!checkTimeFormat(timeSegmentStatistics.getEndTime()))
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
|
|
|
|
|
.setErrorDetail("结束时间[%s]格式错误,请检查时间格式[%s]!", timeSegmentStatistics.getEndTime(), MesExtConstWords.TIME_TRUNCATE_SECOND_FORMAT)
|
|
|
|
|
.build();
|
|
|
|
|
if (!checkTimeStartBeforeEnd(timeSegmentStatistics.getStartTime(), timeSegmentStatistics.getEndTime()))
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
|
|
|
|
|
.setErrorDetail("开始时间[%s]必须小于结束时间[%s]!", timeSegmentStatistics.getStartTime(), timeSegmentStatistics.getEndTime())
|
|
|
|
|
.build();
|
|
|
|
|
|
|
|
|
|
String startTime = timeSegmentStatistics.getStartTime();
|
|
|
|
|
String endTime = timeSegmentStatistics.getEndTime();
|
|
|
|
|
timeSegmentStatistics.setStartTime(startTime + MesExtConstWords.APPEND_SECONDS);
|
|
|
|
|
timeSegmentStatistics.setEndTime(endTime + MesExtConstWords.APPEND_SECONDS);
|
|
|
|
|
MesTimeSegmentStatistics item = checkTimeCompareToDataList(timeSegmentStatisticsList, timeSegmentStatistics);
|
|
|
|
|
if (null != item)
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
|
|
|
|
|
.setErrorDetail("开始时间[%s]结束时间[%s]与已维护的生产线[%s]班次代码[%s]配置的开始时间[%s]结束时间[%s]存在时间重叠!",
|
|
|
|
|
startTime, endTime, item.getWorkCenterCode(), item.getShiftCode(), item.getStartTime(), item.getEndTime())
|
|
|
|
|
.build();
|
|
|
|
|
if (!checkTimeLengthIsValid(timeSegmentStatistics, TimeTool.getToday()))
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
|
|
|
|
|
.setErrorDetail("实际工作时间长度[%s]不能大于开始时间[%s]与结束时间[%s]的分钟差!", timeSegmentStatistics.getTimeLength(), timeSegmentStatistics.getStartTime(), timeSegmentStatistics.getEndTime())
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private Integer getTimeLength(String startTime, String endTime, String today) {
|
|
|
|
|
try {
|
|
|
|
|
return TimeTool.getSecoundsBetweenTime(2, getTimeAppendToday(today, startTime), getTimeAppendToday(today, endTime));
|
|
|
|
|
} catch (ParseException e) {
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private String getTimeAppendToday(String today, String time) {
|
|
|
|
|
return new StringJoiner(MesExtConstWords.ONE_SPACE).add(today).add(time).toString();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|