Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/materialdefinition/action/MaterialDefinitionAction.java
===================================================================
diff -u -r16673 -r17345
--- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/materialdefinition/action/MaterialDefinitionAction.java (.../MaterialDefinitionAction.java) (revision 16673)
+++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/materialdefinition/action/MaterialDefinitionAction.java (.../MaterialDefinitionAction.java) (revision 17345)
@@ -133,44 +133,25 @@
}
/**
- * 保存MaterialDefinition TODO 此处代码应该移到manager里面
+ * 保存MaterialDefinition
*/
public String saveMaterialDefinition() {
JSONObject obj = new JSONObject();
- if (!DatabaseUtil.isPoIdValid(materialDefinition.getId())) {
- materialDefinition.setId(null);
- }
try {
- Long id = materialDefinition.getId();
- String idStr = null;
- if(id != null){
- idStr = id.toString();
- }
- boolean result = materialDefinitionManager.verifyMaterialDefinition(idStr,
- materialDefinition.getName(), materialDefinition.getSpecification(),materialDefinition.getIsForeignMaterial());
- if (!result) {
- throw new RuntimeException("已存在相同名称的材料!");
- }
- // 设置拼音码、五笔码
- materialDefinition.setSpelling(GB2Alpha
- .string2Alpha(materialDefinition.getName()));
- materialDefinition.setWbCode(GB2WB.getWBCode(materialDefinition
- .getName()));
- if (StringUtils.isBlank(materialDefinition.getSpecification())) {
- materialDefinition.setSpecification(null);
- }
materialDefinitionManager.saveOrUpdate(materialDefinition);
obj.put("success", true);
obj.put("msg", "保存成功!");
} catch (Exception e) {
- e.printStackTrace();
obj.put("success", false);
obj.put("msg", e.getMessage());
}
StrutsResponseUtils.output(obj);
return null;
}
+ /**
+ * 删除器械材料定义
+ */
public void deleteMaterialDefinition() {
String idStr = StrutsParamUtils.getPraramValue("ids", "");
String message = "";
@@ -202,15 +183,7 @@
}
}
- HttpServletResponse httpServletResponse = StrutsParamUtils
- .getResponse();
- httpServletResponse.setCharacterEncoding("UTF-8");
- try {
- httpServletResponse.getWriter().print(
- "{success:true,msg:'" + message + "'}");
- } catch (IOException e) {
- e.printStackTrace();
- }
+ StrutsResponseUtils.output("{success:true,msg:'" + message + "'}");
}
public void getHttpOptionResultSet() {
Index: ssts-web/src/test/resources/test/forgon/disinfectsystem/material/AllTests.xml
===================================================================
diff -u -r17245 -r17345
--- ssts-web/src/test/resources/test/forgon/disinfectsystem/material/AllTests.xml (.../AllTests.xml) (revision 17245)
+++ ssts-web/src/test/resources/test/forgon/disinfectsystem/material/AllTests.xml (.../AllTests.xml) (revision 17345)
@@ -4,7 +4,7 @@
-
+
\ No newline at end of file
Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/materialdefinition/service/MaterialDefinitionManager.java
===================================================================
diff -u -r17245 -r17345
--- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/materialdefinition/service/MaterialDefinitionManager.java (.../MaterialDefinitionManager.java) (revision 17245)
+++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/materialdefinition/service/MaterialDefinitionManager.java (.../MaterialDefinitionManager.java) (revision 17345)
@@ -17,26 +17,47 @@
*/
public interface MaterialDefinitionManager {
- public void saveOrUpdate(MaterialDefinition materialDefinition);
+ /**
+ * 保存或者更新器械材料定义.
+ * 注意:不允许存在同名称同规格的外来/非外来器械,否则会抛运行时异常,调用者自行处理异常
+ * @param md 器械材料定义
+ */
+ public void saveOrUpdate(MaterialDefinition md);
public void saveOrUpdateAll(List materialDefinitionList);
+ /**
+ * 根据id获取器械材料定义
+ * @param id 材料id
+ * @return
+ */
public MaterialDefinition getMaterialDefinitionById(String id);
public void deleteMaterialDefinitionById(String id);
- public boolean verifyMaterialDefinition(String id, String name,String specification,String isForeignMaterial);
-
public List getMaterialDefinitionByType(String type);
/**
- * 根据名字和规格获取可再生材料,不包含外来器械..
- * @param name
- * @param specification
+ * 根据名称获取器械材料定义.
+ * @param name 材料名称
* @return
*/
+ public List getMaterialDefinitionByName(String name);
+
+ /**
+ * 根据名字和规格获取器械材料(非外来器械器)..
+ * @param name 材料名称
+ * @param specification 材料规格
+ * @return
+ */
public MaterialDefinition getMaterialDefinitionByName(String name,String specification);
+ /**
+ * 根据名字和规格获取器械材料(外来器械器).
+ * @param name 材料名称
+ * @param specification 材料规格
+ * @return
+ */
public MaterialDefinition getForeignTousseMaterialDefinition(String name,String specification);
public List getAllMaterialDefinition();
@@ -77,6 +98,11 @@
public void exportMaterial(OutputStream ops);
+ /**
+ * 根据“物资系统的物资编码”获取材料定义
+ * @param inventorySerialNumber
+ * @return
+ */
public MaterialDefinition getMaterialDefinitionByInventorySerialNumber(String inventorySerialNumber);
/**
* 获取材料定义的注意事项数组。数组的每一项为注意事项的一条内容,由用户在文本框中换行输入
Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/foreigntousseapplication/service/ForeignTousseApplicationManagerImpl.java
===================================================================
diff -u -r17149 -r17345
--- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/foreigntousseapplication/service/ForeignTousseApplicationManagerImpl.java (.../ForeignTousseApplicationManagerImpl.java) (revision 17149)
+++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/foreigntousseapplication/service/ForeignTousseApplicationManagerImpl.java (.../ForeignTousseApplicationManagerImpl.java) (revision 17345)
@@ -659,6 +659,12 @@
return tousseDefinition;
}
+ /**
+ * 根据“带规格的名称”获取外来器械材料
+ * @param materialName 带规格的名称
+ * @param isImplant 是否植入物
+ * @return
+ */
private MaterialDefinition getMaterialDefintion(String materialName,String isImplant) {
JSONObject obj = CssdUtils.getGoodsNameAndSp(materialName);
String name = obj.optString("materialName");
Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/materialdefinition/service/MaterialDefinitionManagerImpl.java
===================================================================
diff -u -r17245 -r17345
--- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/materialdefinition/service/MaterialDefinitionManagerImpl.java (.../MaterialDefinitionManagerImpl.java) (revision 17245)
+++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/materialdefinition/service/MaterialDefinitionManagerImpl.java (.../MaterialDefinitionManagerImpl.java) (revision 17345)
@@ -46,6 +46,8 @@
import com.forgon.security.tools.Util;
import com.forgon.systemsetting.model.HttpOption;
import com.forgon.systemsetting.service.HttpOptionManager;
+import com.forgon.tools.GB2Alpha;
+import com.forgon.tools.GB2WB;
import com.forgon.tools.MathTools;
import com.forgon.tools.Path;
import com.forgon.tools.db.DatabaseUtil;
@@ -89,9 +91,29 @@
this.objectDao = objectDao;
}
- public void saveOrUpdate(MaterialDefinition materialDefinition) {
- synchronizationUpdate(materialDefinition);
- objectDao.saveOrUpdate(materialDefinition);
+ public void saveOrUpdate(MaterialDefinition md) {
+ Long id = md.getId();
+ boolean result = verifyMaterialDefinition(id, md.getName(),
+ md.getSpecification(), md.getIsForeignMaterial());
+ if (!result) {
+ throw new RuntimeException("已存在相同名称的材料!");
+ }
+
+ //设置拼音码、五笔码(如果没有的才帮他生成,有的就不用了,比如一些基础数据导入的,已经有自定义的了,但是修改修材料定义的操作还是要的,有可能会改材料名称的)
+ if (StringTools.isBlank(md.getSpelling())
+ || DatabaseUtil.isPoIdValid(id)) {
+ md.setSpelling(GB2Alpha.string2Alpha(md.getName()));
+ }
+ if (StringTools.isBlank(md.getWbCode())
+ || DatabaseUtil.isPoIdValid(id)) {
+ md.setWbCode(GB2WB.getWBCode(md.getName()));
+ }
+
+ if (StringUtils.isBlank(md.getSpecification())) {
+ md.setSpecification(null);
+ }
+ synchronizationUpdate(md);
+ objectDao.saveOrUpdate(md);
}
/**
@@ -130,10 +152,18 @@
Long.valueOf(id));
}
- public boolean verifyMaterialDefinition(String id, String name,
+ /**
+ * 判断器械材料是否允许被添加(即:不允许存在同名称同规格的外来/非外来器械).
+ * @param id 材料id
+ * @param name 材料名称
+ * @param specification 材料规格
+ * @param isForeignMaterial 是否外来器械
+ * @return 返回true说明允许被添加,false则不允许
+ */
+ private boolean verifyMaterialDefinition(Long id, String name,
String specification,String isForeignMaterial) {
String sql = "where po.name = '" + name + "'";
- if (StringUtils.isNotEmpty(id)) {
+ if (DatabaseUtil.isPoIdValid(id)) {
sql += " and po.id != " + id;
}
if (StringUtils.isNotBlank(specification)) {
@@ -165,12 +195,6 @@
MaterialDefinition.class.getSimpleName(), "type", type);
}
- /**
- * 根据名字和规格获取可再生材料,不包含外来器械
- * @param name
- * @param specification
- * @return
- */
@Override
public MaterialDefinition getMaterialDefinitionByName(String name,
String specification) {
@@ -921,4 +945,15 @@
MaterialDefinition.class.getSimpleName(), sql);
}
+ @Override
+ public List getMaterialDefinitionByName(String name) {
+ List list = new ArrayList();
+ if (StringUtils.isNotBlank(name)) {
+ String sql = String.format("where po.name='%s'", name);
+ list = (List) objectDao
+ .findBySql(MaterialDefinition.class.getSimpleName(),sql);
+ }
+ return list;
+ }
+
}
Index: ssts-web/src/test/java/test/forgon/disinfectsystem/material/service/MterialDefinitionManagerTest.java
===================================================================
diff -u
--- ssts-web/src/test/java/test/forgon/disinfectsystem/material/service/MterialDefinitionManagerTest.java (revision 0)
+++ ssts-web/src/test/java/test/forgon/disinfectsystem/material/service/MterialDefinitionManagerTest.java (revision 17345)
@@ -0,0 +1,191 @@
+package test.forgon.disinfectsystem.material.service;
+
+import java.util.List;
+
+import org.hibernate.Session;
+import org.testng.annotations.Test;
+
+import com.forgon.Constants;
+import com.forgon.disinfectsystem.entity.basedatamanager.materialdefinition.MaterialDefinition;
+import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition;
+
+import static org.testng.Assert.*;
+import test.forgon.disinfectsystem.AbstractCSSDTest;
+/**
+ * 本类主要测试修改材料定义增删改
+ * @author Chenjiaru 2017-03-13
+ *
+ */
+public class MterialDefinitionManagerTest extends AbstractCSSDTest {
+
+
+
+ /**
+ * 此方法主要测试新增器械材料定义
+ * 测试以下6种场景
+ * 1、新增“非外来器械材料Test金剪刀[20CM]” 预期结果:成功添加
+ * 2、新增“非外来器械材料Test金剪刀[20CM]” 预期结果:添加失败
+ * 3、新增“非外来器械材料Test金剪刀[30CM]” 预期结果:添加成功
+ * 4、新增“外来器械材料Test金剪刀[20CM]” 预期结果:添加成功
+ * 5、新增“外来器械材料Test金剪刀[20CM]” 预期结果:添加失败
+ * 6、新增“外来器械材料Test金剪刀[30CM]” 预期结果:添加成功
+ */
+ @Test
+ public void testSaveMterialDefinition() {
+ MaterialDefinition md1_Test金剪刀 = new MaterialDefinition();
+ md1_Test金剪刀.setName("Test金剪刀");
+ md1_Test金剪刀.setSpecification("20CM");
+ md1_Test金剪刀.setType("金属");
+ md1_Test金剪刀.setGoodsType(MaterialDefinition.TYPE_MATERIALGOODS);
+ md1_Test金剪刀.setIsForeignMaterial(Constants.STR_NO);
+ materialDefinitionManager.saveOrUpdate(md1_Test金剪刀);
+
+ List list = materialDefinitionManager.getMaterialDefinitionByName("Test金剪刀");
+ assertEquals(list.size(), 1);
+ MaterialDefinition md1 = list.get(0);
+ assertEquals(md1.getName(), "Test金剪刀");
+ assertEquals(md1.getSpecification(), "20CM");
+ assertEquals(md1.getType(), "金属");
+ assertEquals(md1.getGoodsType(), MaterialDefinition.TYPE_MATERIALGOODS);
+ assertEquals(md1.getIsForeignMaterial(), Constants.STR_NO);
+
+ MaterialDefinition md2_Test金剪刀 = new MaterialDefinition();
+ md2_Test金剪刀.setName("Test金剪刀");
+ md2_Test金剪刀.setSpecification("20CM");
+ md2_Test金剪刀.setType("金属");
+ md2_Test金剪刀.setGoodsType(MaterialDefinition.TYPE_MATERIALGOODS);
+ md2_Test金剪刀.setIsForeignMaterial(Constants.STR_NO);
+ try {
+ materialDefinitionManager.saveOrUpdate(md2_Test金剪刀);
+ } catch (Exception e) {
+ assertEquals(e.getMessage(), "已存在相同名称的材料!");
+ }
+ list = materialDefinitionManager.getMaterialDefinitionByName("Test金剪刀");
+ assertEquals(list.size(), 1);
+
+ MaterialDefinition md3_Test金剪刀 = new MaterialDefinition();
+ md3_Test金剪刀.setName("Test金剪刀");
+ md3_Test金剪刀.setSpecification("30CM");
+ md3_Test金剪刀.setType("金属");
+ md3_Test金剪刀.setGoodsType(MaterialDefinition.TYPE_MATERIALGOODS);
+ md3_Test金剪刀.setIsForeignMaterial(Constants.STR_NO);
+ materialDefinitionManager.saveOrUpdate(md3_Test金剪刀);
+ list = materialDefinitionManager.getMaterialDefinitionByName("Test金剪刀");
+ assertEquals(list.size(), 2);
+
+ MaterialDefinition md4_Test金剪刀 = new MaterialDefinition();
+ md4_Test金剪刀.setName("Test金剪刀");
+ md4_Test金剪刀.setSpecification("20CM");
+ md4_Test金剪刀.setType("金属");
+ md4_Test金剪刀.setGoodsType(MaterialDefinition.TYPE_MATERIALGOODS);
+ md4_Test金剪刀.setIsForeignMaterial(Constants.STR_YES);
+ materialDefinitionManager.saveOrUpdate(md4_Test金剪刀);
+ list = materialDefinitionManager.getMaterialDefinitionByName("Test金剪刀");
+ assertEquals(list.size(), 3);
+
+ MaterialDefinition md5_Test金剪刀 = new MaterialDefinition();
+ md5_Test金剪刀.setName("Test金剪刀");
+ md5_Test金剪刀.setSpecification("20CM");
+ md5_Test金剪刀.setType("金属");
+ md5_Test金剪刀.setGoodsType(MaterialDefinition.TYPE_MATERIALGOODS);
+ md5_Test金剪刀.setIsForeignMaterial(Constants.STR_YES);
+ try {
+ materialDefinitionManager.saveOrUpdate(md5_Test金剪刀);
+ } catch (Exception e) {
+ assertEquals(e.getMessage(), "已存在相同名称的材料!");
+ }
+ assertEquals(list.size(), 3);
+
+ MaterialDefinition md6_Test金剪刀 = new MaterialDefinition();
+ md6_Test金剪刀.setName("Test金剪刀");
+ md6_Test金剪刀.setSpecification("30CM");
+ md6_Test金剪刀.setType("金属");
+ md6_Test金剪刀.setGoodsType(MaterialDefinition.TYPE_MATERIALGOODS);
+ md6_Test金剪刀.setIsForeignMaterial(Constants.STR_YES);
+ materialDefinitionManager.saveOrUpdate(md6_Test金剪刀);
+ list = materialDefinitionManager.getMaterialDefinitionByName("Test金剪刀");
+ assertEquals(list.size(), 4);
+ }
+
+
+ /**
+ 此方法主要测试修改器械材料定义的isImplant属性后,相关的器械包定义的includeImplant,是否正确同步修改
+ 测试的内容主要分两大块(有六种场景):
+ 一、第一块(两个场景)
+ Test开胸包材料清单
+ 名称 数量 是否植入物
+ Test钳子 5 否
+ Test镊子 2 否
+ 1、把材料“Test钳子”的是否植入物属性(否-》否) 预期结果:Test开胸包的IncludeImplant=1
+ 2、把材料“Test钳子”的是否植入物属性(否-》是) 预期结果:Test开胸包的IncludeImplant=0
+
+ 二、第二块(四个场景)
+ Test开胸包材料清单
+ 名称 数量 是否植入物
+ Test钳子 5 是
+ Test镊子 2 否
+ 1、把材料“Test钳子”的是否植入物属性(是-》否) 预期结果:Test开胸包的IncludeImplant=1
+ 2、把材料“Test钳子”的是否植入物属性(是-》是) 预期结果:Test开胸包的IncludeImplant=0
+ 3、把材料“Test镊子”的是否植入物属性(否-》否) 预期结果:Test开胸包的IncludeImplant=0
+ 4、把材料“Test镊子”的是否植入物属性(否-》是) 预期结果:Test开胸包的IncludeImplant=0
+ */
+ @Test
+ public void testUpdateMterialIsImplantProperty() {
+ initCSSDData();
+ Session session = objectDao.getHibernateSession();
+
+ /**
+ Test开胸包材料清单
+ 名称 数量 是否植入物
+ Test钳子 5 否
+ Test镊子 2 否
+ */
+ MaterialDefinition md_钳子 = materialDefinitionManager.getMaterialDefinitionByName("Test钳子", null);
+ //1、把材料“Test钳子”的是否植入物属性(否-》否)预期结果:Test开胸包的IncludeImplant=1
+ md_钳子.setIsImplant(Constants.STR_NO);
+ materialDefinitionManager.saveOrUpdate(md_钳子);
+ TousseDefinition td_开胸包 = tousseDefinitionManager.getTousseDefinitionByName("Test开胸包");
+ assertEquals(td_开胸包.getIncludeImplant(), new Integer(1));
+
+ //2、把材料“Test钳子”的是否植入物属性(否-》是)预期结果:Test开胸包的IncludeImplant=0
+ md_钳子.setIsImplant(Constants.STR_YES);
+ materialDefinitionManager.saveOrUpdate(md_钳子);
+ session.refresh(td_开胸包);
+ assertEquals(td_开胸包.getIncludeImplant(), new Integer(0));
+
+ /**
+ Test开胸包材料清单
+ 名称 数量 是否植入物
+ Test钳子 5 是
+ Test镊子 2 否
+ */
+ //1、把材料“Test钳子”的是否植入物属性(是-》否)预期结果:Test开胸包的IncludeImplant=1
+ md_钳子.setIsImplant(Constants.STR_NO);
+ materialDefinitionManager.saveOrUpdate(md_钳子);
+ session.refresh(td_开胸包);
+ assertEquals(td_开胸包.getIncludeImplant(), new Integer(1));
+
+ //2、把材料“Test钳子”的是否植入物属性(是-》是)预期结果:Test开胸包的IncludeImplant=0
+ md_钳子.setIsImplant(Constants.STR_YES);
+ td_开胸包.setIncludeImplant(TousseDefinition.INCLUDE_IMPLANT);
+ session.flush(); //上两句是还原测试的数据,(实现一个方法测试用例能测试多个复杂度相对较低的场景)
+ md_钳子.setIsImplant(Constants.STR_YES);
+ materialDefinitionManager.saveOrUpdate(md_钳子);
+ session.refresh(td_开胸包);
+ assertEquals(td_开胸包.getIncludeImplant(), new Integer(0));
+
+ //3、把材料“Test镊子”的是否植入物属性(否-》否)预期结果:Test开胸包的IncludeImplant=0
+ MaterialDefinition md_镊子 = materialDefinitionManager.getMaterialDefinitionByName("Test镊子", null);
+ md_镊子.setIsImplant(Constants.STR_NO);
+ materialDefinitionManager.saveOrUpdate(md_镊子);
+ session.refresh(td_开胸包);
+ assertEquals(td_开胸包.getIncludeImplant(), new Integer(0));
+
+ //4、把材料“Test镊子”的是否植入物属性(否-》是)预期结果:Test开胸包的IncludeImplant=0
+ md_镊子.setIsImplant(Constants.STR_YES);
+ materialDefinitionManager.saveOrUpdate(md_镊子);
+ session.refresh(td_开胸包);
+ assertEquals(td_开胸包.getIncludeImplant(), new Integer(0));
+ }
+
+}
Index: ssts-web/src/main/webapp/disinfectsystem/basedatamanager/materialDefinition/materialDefinitionForm.js
===================================================================
diff -u -r16242 -r17345
--- ssts-web/src/main/webapp/disinfectsystem/basedatamanager/materialDefinition/materialDefinitionForm.js (.../materialDefinitionForm.js) (revision 16242)
+++ ssts-web/src/main/webapp/disinfectsystem/basedatamanager/materialDefinition/materialDefinitionForm.js (.../materialDefinitionForm.js) (revision 17345)
@@ -495,7 +495,7 @@
buttons : [{
id : 'saveBtn',
text : '保存',
- handler : save
+ handler : validateAndSubmit
}, {
text : '取消',
id : 'saveAndNewBtn',
@@ -715,12 +715,25 @@
return re.test(s)
}
function validateAndSubmit(){
- var materialName = top.Ext.getCmp('name').getValue();
- var specification = top.Ext.getCmp('specification').getValue();
+ this.disable();
+ if (!formObj.form.isValid()) {
+ showResult('请正确填写表单各值');
+ this.enable();
+ return false;
+ }
+ var materialName = top.Ext.getCmp("name").getValue();
+ var specification = top.Ext.getCmp("specification").getValue();
+
+ if(includeSpecialCharacter(materialName) || includeSpecialCharacter(specification)){
+ showResult("物品名称和规格都不能包含特殊字符!");
+ this.enable();
+ return false;
+ }
var intoBasketMaxAmount = top.Ext.getCmp('intoBasketMaxAmount').getValue();
if(intoBasketMaxAmount != ""){
if(!isPositiveNum(intoBasketMaxAmount)){
showResult("清洗筐装载数量上限必须是正整数!");
+ this.enable();
return;
}
}
@@ -746,7 +759,6 @@
top.Ext.getCmp('saveBtn').enable();
}
});
-
}
/**
@@ -759,24 +771,6 @@
}
-function save() {
- this.disable();
- if (!formObj.form.isValid()) {
- showResult('请正确填写表单各值');
- this.enable();
- return false;
- }
- var materialName = top.Ext.getCmp("name").getValue();
- var specification = top.Ext.getCmp("specification").getValue();
-
- if(includeSpecialCharacter(materialName) || includeSpecialCharacter(specification)){
- showResult("物品名称和规格都不能包含特殊字符!");
- this.enable();
- return false;
- }
- validateAndSubmit();
-}
-
function cancel() {
materialDefinitionWin.close();
}
Fisheye: Tag 17345 refers to a dead (removed) revision in file `ssts-web/src/test/java/test/forgon/disinfectsystem/material/service/UpdateMterialIsImplantPropertyTest.java'.
Fisheye: No comparison available. Pass `N' to diff?