Index: ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java =================================================================== diff -u -r36479 -r36485 --- ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 36479) +++ ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 36485) @@ -3762,6 +3762,7 @@ //排序 先处理增加的 避免先算减少的把篮筐的状态给改变了 Collections.sort(itemJsonList, (o1,o2) -> o2.getAmount().compareTo(o1.getAmount())); Set thisTimeTds = new HashSet();//本次入筐的包定义,回收时非本次入筐且有丢失报损的器械包,不修改包实例的状态。 + List logArr = new ArrayList(); for (RecyclingBasketItemVo json : itemJsonList) { String tousseName = json.getTousseName(); Long tousseDefinitionID = json.getTousseDefinitionID(); @@ -3843,7 +3844,7 @@ JSONUtil.addLogProperty(description, "器械包名称", tousseName); JSONUtil.addLogProperty(description, "包定义id:", tousseDefinitionID); JSONUtil.addLogProperty(description, "减少数量", MathTools.sub(0, amount).intValue()); - appLogManager.saveLog(AcegiHelper.getLoginUser(), Log.MODEL_RECYCLINGRECORD, Log.TYPE_UPDATE, description); + logArr.add(description); if(!allowModifyRecyclingAmountBelowUnPackingAmount){ throw new RecyclingRecordException(tousseName + "已装配,不能修改!"); } @@ -3857,7 +3858,7 @@ JSONUtil.addLogProperty(description, "减少数量", MathTools.sub(0, amount).intValue()); JSONUtil.addLogProperty(description, "装配任务id", task.getId()); JSONUtil.modifyPropertyLog(description, "装配任务数量", task.getUnPackAmount(), 0); - appLogManager.saveLog(AcegiHelper.getLoginUser(), Log.MODEL_RECYCLINGRECORD, Log.TYPE_UPDATE, description); + logArr.add(description); if(!allowModifyRecyclingAmountBelowUnPackingAmount && task.getUnPackAmount() + amount < 0){ throw new RecyclingRecordException(tousseName + "待装配数量为" + task.getUnPackAmount() + "个,减少的数量要小于" + task.getUnPackAmount()); } @@ -3977,11 +3978,12 @@ if(PackingTask.STATUS_PACKED.equals(idCardPackingTask.getStatus())){ throw new RecyclingRecordException(idCardBarcode+",该标识牌已装配不能修改。"); } - String description = "删除标识牌装配任务,ID = "+idCardPackingTask.getId() - + ",装配任务ID="+idCardPackingTask.getPackingTaskID() - + ",标识牌条码="+idCardBarcode; - appLogManager.saveLog(AcegiHelper.getLoginUser(), "回收模块", "U", description); - + JSONObject description = new JSONObject(); + description.put("操作", "删除标识牌装配任务"); + JSONUtil.addLogProperty(description, "ID", idCardPackingTask.getId()); + JSONUtil.addLogProperty(description, "装配任务ID", idCardPackingTask.getPackingTaskID()); + JSONUtil.addLogProperty(description, "标识牌条码", idCardBarcode); + logArr.add(description); tousseInstanceManager.setIDCardTousseInstanceBeforeRecycleStatus(idCardTousseInstance); packingManager.delete(idCardPackingTask); }else{ @@ -4001,6 +4003,7 @@ } } } + batchSavePackingLog(logArr); //如果是回收数量确认,那把所有跟回收记录关联的装配任务都设置成已确认 if(recyclingContext.getRecyclingAmountConfirm() || recyclingRecord.recyclingApplicationRecord()){ dataHelperForRecyclingRecord.updateRecycleAmountNeedConfirm(recyclingRecord.getId()); @@ -4023,6 +4026,47 @@ } /** + * 批量保存装配修改日志 + * @param logArr + */ + private void batchSavePackingLog(List logArr){ + if(CollectionUtils.isEmpty(logArr)){ + return; + } + LoginUserData loginUser = AcegiHelper.getLoginUser(); + String idColumnName = ""; + String idColumnValue = ""; + if(DatabaseUtil.isOracle(dbConnection.getDatabase())){ + idColumnName = "id,"; + idColumnValue = "hibernate_sequence.nextval,"; + } + Timestamp newDate = new Timestamp(new Date().getTime()); + String logSql = String.format("insert into %s (%s logDateTime,userName, userId, userIp, model, operationType, operationDescription, clientType, clientVersion, sessionID)" + + "values (%s ?,?,?,?,?,?,?,?,?,?)", Log.class.getSimpleName(), idColumnName, idColumnValue); + String userId = loginUser.getUserId() == null?null:loginUser.getUserId().toString(); + jdbcTemplate.batchUpdate(logSql, new BatchPreparedStatementSetter() { + @Override + public void setValues(PreparedStatement ps, int i) throws SQLException { + JSONObject log = logArr.get(i); + ps.setTimestamp(1, newDate); + ps.setString(2, loginUser.getUserFullName()); + ps.setString(3, userId); + ps.setString(4, loginUser.getUserIP()); + ps.setString(5, Log.MODEL_RECYCLINGRECORD); + ps.setString(6, Log.TYPE_UPDATE); + ps.setString(7, log.toString()); + ps.setString(8, loginUser.getClientType()); + ps.setString(9, loginUser.getClientVersion()); + ps.setString(10, loginUser.getSessionID()); + } + + @Override + public int getBatchSize() { + return logArr.size(); + } + }); + } + /** * 获取每个清洗篮筐可完美组合的数量 * @param tousseDefinition 包定义 * @param barcodeArray 篮筐条码列表 @@ -4336,7 +4380,6 @@ String sql ="select recyclingRecordId from TousseInstance ti where ti.lastTousseInstanceId in " + "( select ti.id from TousseInstance ti join barcodeDevice bd on bd.id = ti.id where bd.barcode = '%s')"; ResultSet rs = objectDao.executeSql(String.format(sql, barcode)); - System.out.println("==="+String.format(sql, barcode)); RecyclingRecord recyclingRecord ; try { while (rs.next()) {