diff --git a/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/transport/TransportController.java b/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/transport/TransportController.java index cc588e1..cceea2d 100644 --- a/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/transport/TransportController.java +++ b/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/transport/TransportController.java @@ -257,14 +257,16 @@ public class TransportController extends BaseController { return; } - String which = getUpperCaseVal("which");// Enums.WhichEnum R01 入场流程 C01 出场流程 + String which = getUpperCaseVal("which");// Enums.WhichEnum R01 入场流程 C01 出场流程 + String truck_license = getUpperCaseVal("truck_license"); + Integer supermarket_id = getInt("supermarket_id"); if (!Enums.CtrlFlowEnum.isValid(which)) { renderJson(Result.failed("which 参数错误")); return; } - boolean result = TransportDeviceService.me.cmdResetFlow(which, tokenuser); + boolean result = TransportDeviceService.me.cmdResetFlow(which, truck_license, supermarket_id, tokenuser); renderJson(result ? Result.success(true) : Result.failed("重置流程失败")); } diff --git a/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/transport/TransportDeviceService.java b/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/transport/TransportDeviceService.java index 8003ec9..5682ba6 100644 --- a/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/transport/TransportDeviceService.java +++ b/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/transport/TransportDeviceService.java @@ -229,7 +229,7 @@ public class TransportDeviceService { * @param sysuser * @return */ - public boolean cmdResetFlow(String which, Sysuser sysuser) { + public boolean cmdResetFlow(String which, String truck_license, Integer supermarket_id, Sysuser sysuser) { Record cmdlog = new Record(); cmdlog.set("cmd", "resetFlow"); cmdlog.set("which", which); @@ -237,7 +237,9 @@ public class TransportDeviceService { CliCacheData.nowLicenseMap.put(which, ""); CliCacheData.nowWeightMap.put(which, 0d); - return Config.deviceThread.cmdResetFlow(which) && ActionCmdLogSyncService.me.save(cmdlog.toJson(), sysuser); + return Config.deviceThread.cmdResetFlow(which) + && ActionCmdLogSyncService.me.save(cmdlog.toJson(), sysuser) + && TransportSyncService.me.updateCancelTransportState(which, truck_license, supermarket_id, sysuser); } public boolean cmdRodUp(int num, String which, String memo, Sysuser sysuser) { diff --git a/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/transport/TransportSyncService.java b/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/transport/TransportSyncService.java index e086172..a3d113c 100644 --- a/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/transport/TransportSyncService.java +++ b/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/transport/TransportSyncService.java @@ -30,7 +30,9 @@ import net.coobird.thumbnailator.Thumbnails; import java.io.File; import java.math.BigDecimal; +import java.util.ArrayList; import java.util.Date; +import java.util.List; /** * 该类下会操作 MySQL 数据,需要将修改的数据同步到服务端 @@ -1161,4 +1163,64 @@ public class TransportSyncService { // // return ret ? Result.success(true) : Result.failed("重置错误"); // } + + // 根据车牌、超市id、当前时间大于入场时间、出厂时间不为空查出记录后将flag改为1 + public boolean updateCancelTransportState(String which, String truck_license, Integer supermarket_id, Sysuser sysuser) { + String sql = "SELECT\n" + + " *\n" + + "FROM\n" + + " `transport`\n" + + "WHERE\n" + + " truck_license = ?\n" + + "AND in_which = ?\n" + + "AND supermarket_id = ?\n" + + "AND in_time < ?\n" + + "AND out_time IS NOT NULL"; + List paramsList = new ArrayList<>(); + paramsList.add(truck_license); + paramsList.add(which); + paramsList.add(supermarket_id); + paramsList.add(DateTimeUtil.sdfhms.get().format(new Date())); + + Transport transport = Transport.dao.findFirst(sql, paramsList.toArray()); + if (transport == null) { + log.debug(String.format("未找到【%s】的有效的出入场记录", truck_license)); + return false; + } + + transport.setFlag(1); // 取消出厂 + + SyncTask synctask = new SyncTask(); + Record logrecord = new Record(); + logrecord.set("transport_id", transport.getId()); + logrecord.set("flag", 1); + + boolean ret = Db.tx(new IAtom() { + @Override + public boolean run() { + try { + boolean ret = transport.update(); + + if (!ret) { + return false; + } + + synctask.addUpdateData(transport); + + ret = SyncTaskService.me.save(synctask) + && ModifyLogSyncService.me.save(transport.tablename, "transport_id", logrecord.toJson(), Enums.DataOpType.UPDATE.getId(), sysuser); + return ret; + } catch (Exception e) { + log.error(e.getMessage(), e); + return false; + } + } + }); + + if (ret) { + SyncTaskService.me.send(synctask); + } + + return ret; + } }