|
@@ -263,6 +263,69 @@ public class MeterWorkCarActualFirstServiceImpl extends BaseServiceImpl<MeterWor
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 保存一条作废状态的一次计量数据(例如超限不允许计量时留痕)。
|
|
|
|
|
+ * 与 checkandadd 的区别:
|
|
|
|
|
+ * 1. 强制 valueFlag = 0(作废),不受 actualFirstNo 是否为空影响;
|
|
|
|
|
+ * 2. 不更新预报委托状态(不把 PreTrackScale 置为已使用);
|
|
|
|
|
+ * 3. 不消费重量类型预处理(不调用 updatePreWeight);
|
|
|
|
|
+ * 4. 不更新监控计量作业编号(不调用 updateMonitor / updateMonitorOver)。
|
|
|
|
|
+ * 目的:保证超限车辆下次上秤时仍可正常计量。
|
|
|
|
|
+ */
|
|
|
|
|
+ @Override
|
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
|
+ public RESTfulResult checkandaddInvalid(MeterWorkCarActualFirst model, MeterMonitorNote note) throws Exception {
|
|
|
|
|
+ RESTfulResult rm = new RESTfulResult();
|
|
|
|
|
+ rm.setFailed();
|
|
|
|
|
+ try {
|
|
|
|
|
+ // ===== 基础校验(与 ckeck1 保持一致,但不改动预报委托状态)=====
|
|
|
|
|
+ if (model.getCarNo() == null || model.getCarNo().equals("")) {
|
|
|
|
|
+ throw new MarkerMetException(500, "车号不能为空");
|
|
|
|
|
+ }
|
|
|
|
|
+ if (model.getBaseSpotNo() == null || model.getBaseSpotNo().equals("")) {
|
|
|
|
|
+ throw new MarkerMetException(500, "计量点编号不能为空");
|
|
|
|
|
+ }
|
|
|
|
|
+ if (model.getBaseSpotName() == null || model.getBaseSpotName().equals("")) {
|
|
|
|
|
+ throw new MarkerMetException(500, "计量点名称不能为空");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // ===== 生成主键 =====
|
|
|
|
|
+ String no = PublicMethod.IdCreate(3);
|
|
|
|
|
+ model.setActualFirstNo(no);
|
|
|
|
|
+ model.setCreateTime(new Date());
|
|
|
|
|
+
|
|
|
|
|
+ // ===== 强制作废 =====
|
|
|
|
|
+ model.setValueFlag(DbConstants.INVALID); // "0" 作废
|
|
|
|
|
+ if (StringUtils.isEmpty(model.getCheckFlag())) {
|
|
|
|
|
+ model.setCheckFlag(DbConstants.VALID); // "1" 已审核
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // ===== 保存操作日志 =====
|
|
|
|
|
+ if (note != null) {
|
|
|
|
|
+ if (StringUtils.isEmpty(note.getOperationTime())) {
|
|
|
|
|
+ note.setOperationTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
|
|
|
|
|
+ }
|
|
|
|
|
+ saveNote(note);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // ===== 插入作废记录(不做任何预处理/监控副作用)=====
|
|
|
|
|
+ int num = meterWorkCarActualFirstMapper.insertSelective(model);
|
|
|
|
|
+ if (num <= 0) {
|
|
|
|
|
+ rm.setMessage("超限作废数据保存失败");
|
|
|
|
|
+ return rm;
|
|
|
|
|
+ }
|
|
|
|
|
+ rm.setSucceed();
|
|
|
|
|
+ rm.setCode("200");
|
|
|
|
|
+ rm.setData(model.getActualFirstNo());
|
|
|
|
|
+ rm.setMessage("超限作废数据保存成功");
|
|
|
|
|
+ logger.info("超限作废数据保存成功: carNo={}, actualFirstNo={}, weight={}",
|
|
|
|
|
+ model.getCarNo(), model.getActualFirstNo(), model.getMeterWeight());
|
|
|
|
|
+ return rm;
|
|
|
|
|
+ } catch (MarkerMetException e) {
|
|
|
|
|
+ throw e;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
@Override
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public int checkandupdate(MeterWorkCarActualFirst model) throws MarkerMetException {
|
|
public int checkandupdate(MeterWorkCarActualFirst model) throws MarkerMetException {
|