浏览代码

提交代码

yi eason 1 周之前
父节点
当前提交
7093214b77

+ 20 - 0
src/main/java/com/steerinfo/meterwork/meterworkcaractualfirst/controller/MeterWorkCarActualFirstController.java

@@ -365,6 +365,26 @@ public class MeterWorkCarActualFirstController extends BaseRESTfulController {
     }
 
 
+    @ApiOperation(value = "新增超限作废数据", notes = "超限不允许计量时,保存一条作废(valueFlag=0)状态的一次计量数据;不消费重量类型预处理、不更新监控作业编号")
+    @ApiImplicitParam(name = "com", value = "组合实体", required = true, dataType = "CommonCombination")
+    @PostMapping(value = "/addInvalid")
+    public RESTfulResult addInvalid(@RequestBody CommonCombination<MeterWorkCarActualFirst, MeterMonitorNote, MeterWorkCarActual, MeterMonitorNote> com) {
+        RESTfulResult rm = failed();
+        try {
+            MeterMonitorNote note = com.getTwo();
+            MeterWorkCarActualFirst first = com.getOne();
+            return meterWorkCarActualFirstService.checkandaddInvalid(first, note);
+        } catch (MarkerMetException e) {
+            e.printStackTrace();
+            rm.setMessage(e.getMessage());
+        } catch (Exception e) {
+            e.printStackTrace();
+            rm.setMessage("操作异常,请确认!");
+        }
+        return rm;
+    }
+
+
     @ApiOperation(value = "修改数据", notes = "根据MeterWorkCarActualFirst对象创建")
     @PostMapping(value = "/update")
     public RESTfulResult chechandupdate(@RequestBody MeterWorkCarActualFirst model) {

+ 7 - 0
src/main/java/com/steerinfo/meterwork/meterworkcaractualfirst/service/IMeterWorkCarActualFirstService.java

@@ -32,6 +32,13 @@ import java.util.Objects;
 public interface IMeterWorkCarActualFirstService extends IBaseService<MeterWorkCarActualFirst, String> {
     RESTfulResult checkandadd(MeterWorkCarActualFirst model, MeterMonitorNote note)  throws Exception;
 
+    /**
+     * 保存一条作废状态的一次计量数据(例如超限不允许计量时留痕)。
+     * 只插入 valueFlag=0 的作废记录并写操作日志,
+     * 不消费重量类型预处理、不更新监控作业编号,不影响该车下次正常计量。
+     */
+    RESTfulResult checkandaddInvalid(MeterWorkCarActualFirst model, MeterMonitorNote note) throws Exception;
+
     int checkandupdate(MeterWorkCarActualFirst model);
 
     int checkcarandupdate(MeterWorkCarActualFirst model);

+ 63 - 0
src/main/java/com/steerinfo/meterwork/meterworkcaractualfirst/service/impl/MeterWorkCarActualFirstServiceImpl.java

@@ -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
     @Transactional(rollbackFor = Exception.class)
     public int checkandupdate(MeterWorkCarActualFirst model) throws MarkerMetException {