Jelajahi Sumber

【朗国】【反馈编号:2024080031】【系统BUG】【按钮:“更新明细数据”,只更新可更新字段】

wuyx 1 bulan lalu
induk
melakukan
b955ffa0e8
1 mengubah file dengan 21 tambahan dan 5 penghapusan
  1. 21 5
      src/com/uas/erp/service/common/impl/CommonSeriveImpl.java

+ 21 - 5
src/com/uas/erp/service/common/impl/CommonSeriveImpl.java

@@ -1057,18 +1057,31 @@ public class CommonSeriveImpl implements CommonService {
 				if (tab.toString().contains(" ")) tab=tab.toString().split(" ")[0];
 				String keyField = objects[1].toString().contains(" ") ? objects[1].toString().split(" ")[1] : objects[1].toString();
 
-				List<String> gridSql = SqlUtil.getUpdateSqlbyGridStore(grid, tab.toString(), keyField);
+				List<String> gridSql = new ArrayList<>();
 				for (Map<Object, Object> map : grid) {
 					Object id = map.get(keyField);
-					if(modify.size()>0){
+					Map<Object, Object> updateMap = new HashMap<>();
+					if(modify.size()>0){//没有可更新字段不处理
+						updateMap.put(keyField,id);
+						//只更新可更新字段
 						for(Object[] modi : modify){
 							Object[] field = baseDao.getFieldsDataByCondition(tab.toString(), new String[]{ modi[0].toString(),detnofield.toString()}, ""+keyField+"="+id);
-							if(field[0]!=null && !field[0].equals(map.get(modi[0].toString()))){
+							String fieldValue = StringUtil.hasText(field[0])?field[0].toString():"";
+							String changeValue = StringUtil.hasText(map.get(modi[0].toString()))?map.get(modi[0].toString()).toString():"";
+							if ("PRODIODETAIL".equals(tab.toString().toUpperCase())){
+								Object status = baseDao.getFieldDataByCondition("prodinout left join prodiodetail on pi_id=pd_piid", "pi_statuscode", "pd_id=" + id);
+								if ("POSTED".equals(status)){
+									if("pd_whcode".equals(modi[0]) || "pd_prodcode".equals(modi[0]) || "pd_batchcode".equals(modi[0]) || "pd_inqty".equals(modi[0]) || "pd_outqty".equals(modi[0])){
+										BaseUtil.showError("已过账的单据不允许修改仓库、物料、批号、数量!");
+									}
+								}
+							}
+							if(!fieldValue.equals(changeValue)){
 								StringBuffer sb1 = new StringBuffer();
-								sb1.append("行号"+field[1]+":"+modi[1]+"由"+field[0]+"变更为"+map.get(modi[0].toString())+";<br> ");
+								sb1.append("行号"+field[1]+":“"+modi[1]+"”由“"+fieldValue+"”变更为“"+changeValue+"”;<br> ");
 								sb.append(sb1);
 							}
-						}
+							updateMap.put(modi[0],map.get(modi[0].toString()));
 					}
 					if (detnofield != null) {
 						detnos.append(map.get(detnofield)).append(",");
@@ -1076,6 +1089,9 @@ public class CommonSeriveImpl implements CommonService {
 					if (id == null || "".equals(id.toString()) || Integer.parseInt(id.toString()) == 0) {
 						map.put(keyField, baseDao.getSeqId(tab.toString().toUpperCase().split(" ")[0] + "_SEQ"));
 						gridSql.add(SqlUtil.getInsertSqlByMap(map, tab.toString()));
+						}else{
+							gridSql.add(SqlUtil.getUpdateSqlByFormStore(updateMap, tab.toString(), keyField));
+						}
 					}
 				}
 				baseDao.execute(gridSql);