Index: ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/definition/controller/QualityControlIndicatorTypeController.java =================================================================== diff -u --- ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/definition/controller/QualityControlIndicatorTypeController.java (revision 0) +++ ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/definition/controller/QualityControlIndicatorTypeController.java (revision 40973) @@ -0,0 +1,96 @@ +package com.forgon.disinfectsystem.qualitymonitoring.definition.controller; + +import net.sf.json.JSONObject; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.forgon.disinfectsystem.qualitymonitoring.definition.dto.QualityControlIndicatorTypeDto; +import com.forgon.disinfectsystem.qualitymonitoring.definition.service.QualityControlIndicatorTypeManager; +import com.forgon.entity.PageEntity; +import com.forgon.tools.json.JSONUtil; + +/** + * 质控指标类管理的接口 + * FSEYEQ-22 + */ +@RestController +@RequestMapping(value="/disinfectSystem/baseData/qualityControlIndicatorTypeController", produces = "application/json;charset=UTF-8") +public class QualityControlIndicatorTypeController { + + @Autowired + private QualityControlIndicatorTypeManager qualityControlIndicatorTypeManager; + + /** + * 保存或修改质控指标类接口 + * @param qualityControlIndicatorTypeDto 入参 + * @return 返回参数 + */ + @RequestMapping("/saveQualityControlIndicatorType") + public String saveQualityControlIndicatorType(QualityControlIndicatorTypeDto qualityControlIndicatorTypeDto){ + JSONObject result = JSONUtil.buildJsonObject(true, "保存成功"); + try { + qualityControlIndicatorTypeManager.saveQualityControlIndicatorType(qualityControlIndicatorTypeDto); + } catch (Exception e) { + e.printStackTrace(); + result = JSONUtil.buildJsonObject(false, e.getMessage()); + } + return result.toString(); + } + + /** + * 删除质控指标类接口 + * @param ids 被删除的记录id,例如:1;2;3 + * @return 返回参数 + */ + @RequestMapping("/batchDeleteQualityControlIndicatorType") + public String batchDeleteQualityControlIndicatorType(String ids){ + JSONObject result = JSONUtil.buildJsonObject(true, "删除成功"); + try { + qualityControlIndicatorTypeManager.batchDeleteQualityControlIndicatorType(ids); + } catch (Exception e) { + e.printStackTrace(); + result = JSONUtil.buildJsonObject(false, e.getMessage()); + } + return result.toString(); + } + + /** + * 质控指标类排序接口 + * @param id 记录id + * @param orderType 排序类型up/down + * @return 返回参数 + */ + @RequestMapping("/sortQualityControlIndicatorType") + public String sortQualityControlIndicatorType(Long id, String orderType){ + JSONObject result = JSONUtil.buildJsonObject(true, "排序成功"); + try { + qualityControlIndicatorTypeManager.sortQualityControlIndicatorType(id, orderType); + } catch (Exception e) { + e.printStackTrace(); + result = JSONUtil.buildJsonObject(false, e.getMessage()); + } + return result.toString(); + } + + /** + * 质控指标类列表接口 + * @param spell 搜索关键字 + * @param page 分页参数 + * @return 返回参数 + */ + @RequestMapping("/loadQualityControlIndicatorTypeList") + public String loadQualityControlIndicatorTypeList(String spell, PageEntity page){ + JSONObject result = JSONUtil.buildJsonObject(true); + try { + qualityControlIndicatorTypeManager.loadQualityControlIndicatorTypeList(spell, page); + result = JSONUtil.buildJsonObject(true, JSONObject.fromObject(page)); + } catch (Exception e) { + e.printStackTrace(); + result = JSONUtil.buildJsonObject(false, "加载失败:" + e.getMessage()); + } + return result.toString(); + } + +} Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/customform/formdefinition/FormDefinitionItemOption.java =================================================================== diff -u -r39250 -r40973 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/customform/formdefinition/FormDefinitionItemOption.java (.../FormDefinitionItemOption.java) (revision 39250) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/customform/formdefinition/FormDefinitionItemOption.java (.../FormDefinitionItemOption.java) (revision 40973) @@ -10,12 +10,15 @@ import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Index; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; import javax.persistence.Table; import org.hibernate.annotations.Cache; import org.hibernate.annotations.CacheConcurrencyStrategy; import com.forgon.Constants; +import com.forgon.disinfectsystem.entity.qualitymonitoringmanager.qualitymonitoringconfig.QualityControlItemParameter; /** * 自定义表单项的配置参数 @@ -71,6 +74,19 @@ * STDXYXYFSZ-41 */ private String recordMaterialDetails = Constants.STR_NO; + + /** + * 质控项目参数 + * FSEYEQ-22 + */ + private QualityControlItemParameter qualityControlItemParameter; + + /** + * 填写数量 + * 设置为“是“时,在填写质量监测记录时,此选项后方追加一个文本框,用于填写数量,该文本框仅允许填写整数。 + * FSEYEQ-22 + */ + private String fillQuantity; @Id @GeneratedValue(strategy = GenerationType.AUTO) @@ -144,5 +160,24 @@ public void setRecordMaterialDetails(String recordMaterialDetails) { this.recordMaterialDetails = recordMaterialDetails; } + + @ManyToOne + @JoinColumn(name = "qcItemParameter_id") + public QualityControlItemParameter getQualityControlItemParameter() { + return qualityControlItemParameter; + } + + public void setQualityControlItemParameter( + QualityControlItemParameter qualityControlItemParameter) { + this.qualityControlItemParameter = qualityControlItemParameter; + } + + public String getFillQuantity() { + return fillQuantity; + } + + public void setFillQuantity(String fillQuantity) { + this.fillQuantity = fillQuantity; + } } Index: ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/definition/service/QualityControlIndicatorTypeManager.java =================================================================== diff -u --- ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/definition/service/QualityControlIndicatorTypeManager.java (revision 0) +++ ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/definition/service/QualityControlIndicatorTypeManager.java (revision 40973) @@ -0,0 +1,40 @@ +package com.forgon.disinfectsystem.qualitymonitoring.definition.service; + +import com.forgon.disinfectsystem.entity.qualitymonitoringmanager.qualitymonitoringconfig.QualityControlIndicatorType; +import com.forgon.disinfectsystem.qualitymonitoring.definition.dto.QualityControlIndicatorTypeDto; +import com.forgon.entity.PageEntity; +import com.forgon.tools.hibernate.BasePoManager; + +/** + * 质控指标类manager + * FSEYEQ-22 + */ +public interface QualityControlIndicatorTypeManager extends BasePoManager { + + /** + * 保存或修改质控指标类 + * @param qualityControlIndicatorTypeDto 入参 + */ + public void saveQualityControlIndicatorType(QualityControlIndicatorTypeDto qualityControlIndicatorTypeDto); + + /** + * 删除质控指标类 + * @param ids 质控指标类id,例如1;2;3 + */ + public void batchDeleteQualityControlIndicatorType(String ids); + + /** + * 质控指标类排序 + * @param id 质控指标类id + * @param orderType 排序类型up/down + */ + public void sortQualityControlIndicatorType(Long id, String orderType); + + /** + * 质控指标类列表 + * @param spell 搜索关键字 + * @param page 分页参数 + */ + public void loadQualityControlIndicatorTypeList(String spell, PageEntity page); + +} Index: ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/definition/dto/QualityControlIndicatorTypeDto.java =================================================================== diff -u --- ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/definition/dto/QualityControlIndicatorTypeDto.java (revision 0) +++ ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/definition/dto/QualityControlIndicatorTypeDto.java (revision 40973) @@ -0,0 +1,38 @@ +package com.forgon.disinfectsystem.qualitymonitoring.definition.dto; + +/** + * 质控指标类dto + */ +public class QualityControlIndicatorTypeDto { + /** + * id + */ + private Long id; + /** + * 名称 + */ + private String name; + /** + * 目标值 + */ + private String targetValue; + public Long getId() { + return id; + } + public void setId(Long id) { + this.id = id; + } + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + public String getTargetValue() { + return targetValue; + } + public void setTargetValue(String targetValue) { + this.targetValue = targetValue; + } + +} Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/customform/forminstance/FormInstanceOptionValue.java =================================================================== diff -u -r39250 -r40973 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/customform/forminstance/FormInstanceOptionValue.java (.../FormInstanceOptionValue.java) (revision 39250) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/customform/forminstance/FormInstanceOptionValue.java (.../FormInstanceOptionValue.java) (revision 40973) @@ -52,6 +52,13 @@ private String answer; /** + * 数量 + * 自定义表单项的配置参数的“填写数量”设置为“是“时,在填写质量监测记录时,此选项后方追加一个文本框,用于填写数量,该文本框仅允许填写整数,默认为1。 + * FSEYEQ-22 + */ + private Integer quantity; + + /** * 不合格器械包 * STDXYXYFSZ-41 */ @@ -113,4 +120,12 @@ this.materialInfos = materialsInfos; } + public Integer getQuantity() { + return quantity; + } + + public void setQuantity(Integer quantity) { + this.quantity = quantity; + } + } Index: ssts-web/src/test/java/test/forgon/disinfectsystem/qualitymonitoring/definition/QualityControlIndicatorTypeManagerTest.java =================================================================== diff -u --- ssts-web/src/test/java/test/forgon/disinfectsystem/qualitymonitoring/definition/QualityControlIndicatorTypeManagerTest.java (revision 0) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/qualitymonitoring/definition/QualityControlIndicatorTypeManagerTest.java (revision 40973) @@ -0,0 +1,188 @@ +package test.forgon.disinfectsystem.qualitymonitoring.definition; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.commons.collections4.CollectionUtils; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.testng.AssertJUnit; + +import test.forgon.disinfectsystem.AbstractCSSDTest; + +import com.forgon.disinfectsystem.entity.qualitymonitoringmanager.qualitymonitoringconfig.QualityControlIndicatorType; +import com.forgon.disinfectsystem.entity.qualitymonitoringmanager.qualitymonitoringconfig.QualityControlItemParameter; +import com.forgon.disinfectsystem.qualitymonitoring.definition.dto.QualityControlIndicatorTypeDto; +import com.forgon.disinfectsystem.qualitymonitoring.definition.dto.QualityControlItemParameterDto; +import com.forgon.disinfectsystem.qualitymonitoring.definition.service.QualityControlIndicatorTypeManager; +import com.forgon.disinfectsystem.qualitymonitoring.definition.service.QualityControlItemParameterManager; +import com.forgon.tools.string.StringTools; + +/** + * 质控指标类manager的测试用例 + */ +public class QualityControlIndicatorTypeManagerTest extends AbstractCSSDTest { + + @Autowired + private QualityControlIndicatorTypeManager qualityControlIndicatorTypeManager; + + @Autowired + private QualityControlItemParameterManager qualityControlItemParameterManager; + + @Before + public void initTestData(){ + List dbQualityControlIndicatorTypeList = qualityControlIndicatorTypeManager.getAll(); + if(CollectionUtils.isNotEmpty(dbQualityControlIndicatorTypeList)){ + for (QualityControlIndicatorType qualityControlIndicatorType : dbQualityControlIndicatorTypeList) { + qualityControlIndicatorTypeManager.delete(qualityControlIndicatorType); + } + } + } + + @After + public void clearTestData(){ + List dbQualityControlIndicatorTypeList = qualityControlIndicatorTypeManager.getAll(); + if(CollectionUtils.isNotEmpty(dbQualityControlIndicatorTypeList)){ + for (QualityControlIndicatorType qualityControlIndicatorType : dbQualityControlIndicatorTypeList) { + qualityControlIndicatorTypeManager.delete(qualityControlIndicatorType); + } + } + } + + /** + * 质控指标类保存的测试用例 + */ + @Test + public void testSaveQualityControlIndicatorType(){ + + //测试新建 + QualityControlIndicatorTypeDto qualityControlIndicatorTypeDto1 = new QualityControlIndicatorTypeDto(); + qualityControlIndicatorTypeDto1.setName("质控指标类01"); + qualityControlIndicatorTypeDto1.setTargetValue("≤300"); + qualityControlIndicatorTypeManager.saveQualityControlIndicatorType(qualityControlIndicatorTypeDto1); + + QualityControlIndicatorTypeDto qualityControlIndicatorTypeDto2 = new QualityControlIndicatorTypeDto(); + qualityControlIndicatorTypeDto2.setName("质控指标类02"); + qualityControlIndicatorTypeDto2.setTargetValue("≤200"); + qualityControlIndicatorTypeManager.saveQualityControlIndicatorType(qualityControlIndicatorTypeDto2); + + //名称不能重复 + try { + QualityControlIndicatorTypeDto qualityControlIndicatorTypeDto3 = new QualityControlIndicatorTypeDto(); + qualityControlIndicatorTypeDto3.setName("质控指标类02"); + qualityControlIndicatorTypeDto3.setTargetValue("≤200"); + qualityControlIndicatorTypeManager.saveQualityControlIndicatorType(qualityControlIndicatorTypeDto2); + } catch (Exception e) {} + + List qualityControlIndicatorTypeList = qualityControlIndicatorTypeManager.getAll("sequence"); + AssertJUnit.assertNotNull(qualityControlIndicatorTypeList); + AssertJUnit.assertEquals(qualityControlIndicatorTypeList.size(), 2); + AssertJUnit.assertEquals(qualityControlIndicatorTypeList.get(0).getName(), "质控指标类01"); + AssertJUnit.assertEquals(qualityControlIndicatorTypeList.get(0).getSequence().longValue(), 1); + AssertJUnit.assertEquals(qualityControlIndicatorTypeList.get(1).getName(), "质控指标类02"); + AssertJUnit.assertEquals(qualityControlIndicatorTypeList.get(1).getSequence().longValue(), 2); + + //测试修改名称和目标值 + qualityControlIndicatorTypeDto2 = new QualityControlIndicatorTypeDto(); + qualityControlIndicatorTypeDto2.setId(qualityControlIndicatorTypeList.get(1).getId()); + qualityControlIndicatorTypeDto2.setName("质控指标类02——改名"); + qualityControlIndicatorTypeDto2.setTargetValue("≤2000"); + qualityControlIndicatorTypeManager.saveQualityControlIndicatorType(qualityControlIndicatorTypeDto2); + qualityControlIndicatorTypeList = qualityControlIndicatorTypeManager.getAll("sequence"); + AssertJUnit.assertEquals(qualityControlIndicatorTypeList.get(1).getName(), "质控指标类02——改名"); + AssertJUnit.assertEquals(qualityControlIndicatorTypeList.get(1).getTargetValue(), "≤2000"); + + } + + /** + * 质控指标类删除的测试用例 + */ + @Test + public void testBatchDeleteQualityControlIndicatorType(){ + //新建测试数据 + QualityControlIndicatorTypeDto qualityControlIndicatorTypeDto1 = new QualityControlIndicatorTypeDto(); + qualityControlIndicatorTypeDto1.setName("质控指标类01"); + qualityControlIndicatorTypeDto1.setTargetValue("≤300"); + qualityControlIndicatorTypeManager.saveQualityControlIndicatorType(qualityControlIndicatorTypeDto1); + + QualityControlIndicatorTypeDto qualityControlIndicatorTypeDto2 = new QualityControlIndicatorTypeDto(); + qualityControlIndicatorTypeDto2.setName("质控指标类02"); + qualityControlIndicatorTypeDto2.setTargetValue("≤200"); + qualityControlIndicatorTypeManager.saveQualityControlIndicatorType(qualityControlIndicatorTypeDto2); + + //测试删除 + List idList = new ArrayList(); + List qualityControlIndicatorTypeList = qualityControlIndicatorTypeManager.getAll("sequence"); + for (QualityControlIndicatorType qualityControlIndicatorType : qualityControlIndicatorTypeList) { + idList.add(qualityControlIndicatorType.getId()); + } + + //测试被引用的质控指标类不能被删除 + QualityControlItemParameterDto qualityControlItemParameterDto = new QualityControlItemParameterDto(); + qualityControlItemParameterDto.setName("质控项目参数"); + qualityControlItemParameterDto.setQcIndicatorType_id(idList.get(0)); + qualityControlItemParameterManager.saveQualityControlItemParameter(qualityControlItemParameterDto ); + try { + qualityControlIndicatorTypeManager.batchDeleteQualityControlIndicatorType(StringTools.join(idList, ";")); + } catch (Exception e) {} + qualityControlIndicatorTypeList = qualityControlIndicatorTypeManager.getAll("sequence"); + AssertJUnit.assertEquals(qualityControlIndicatorTypeList.size(), 2); + + //测试批量删除 + List qualityControlItemParameterList = qualityControlItemParameterManager.getAll(); + qualityControlItemParameterManager.batchDeleteQualityControlItemParameter(qualityControlItemParameterList.get(0).getId().toString()); + qualityControlItemParameterList = qualityControlItemParameterManager.getAll("sequence desc"); + if(qualityControlItemParameterList != null){ + AssertJUnit.assertEquals(qualityControlItemParameterList.size(), 0); + } + qualityControlIndicatorTypeManager.batchDeleteQualityControlIndicatorType(StringTools.join(idList, ";")); + qualityControlIndicatorTypeList = qualityControlIndicatorTypeManager.getAll("sequence"); + if(qualityControlIndicatorTypeList != null){ + AssertJUnit.assertEquals(qualityControlIndicatorTypeList.size(), 0); + } + } + + /** + * 质控指标类排序的测试用例 + */ + @Test + public void testSortQualityControlIndicatorType(){ + //新建测试数据 + QualityControlIndicatorTypeDto qualityControlIndicatorTypeDto1 = new QualityControlIndicatorTypeDto(); + qualityControlIndicatorTypeDto1.setName("质控指标类01"); + qualityControlIndicatorTypeDto1.setTargetValue("≤300"); + qualityControlIndicatorTypeManager.saveQualityControlIndicatorType(qualityControlIndicatorTypeDto1); + + QualityControlIndicatorTypeDto qualityControlIndicatorTypeDto2 = new QualityControlIndicatorTypeDto(); + qualityControlIndicatorTypeDto2.setName("质控指标类02"); + qualityControlIndicatorTypeDto2.setTargetValue("≤200"); + qualityControlIndicatorTypeManager.saveQualityControlIndicatorType(qualityControlIndicatorTypeDto2); + + List qualityControlIndicatorTypeList = qualityControlIndicatorTypeManager.getAll("sequence"); + AssertJUnit.assertEquals(qualityControlIndicatorTypeList.get(0).getName(), "质控指标类01"); + AssertJUnit.assertEquals(qualityControlIndicatorTypeList.get(0).getSequence().longValue(), 1); + AssertJUnit.assertEquals(qualityControlIndicatorTypeList.get(1).getName(), "质控指标类02"); + AssertJUnit.assertEquals(qualityControlIndicatorTypeList.get(1).getSequence().longValue(), 2); + + Long sortQualityControlIndicatorTypeId = qualityControlIndicatorTypeList.get(0).getId(); + + //测试向下排序 + qualityControlIndicatorTypeManager.sortQualityControlIndicatorType(sortQualityControlIndicatorTypeId, "down"); + qualityControlIndicatorTypeList = qualityControlIndicatorTypeManager.getAll("sequence"); + AssertJUnit.assertEquals(qualityControlIndicatorTypeList.get(0).getName(), "质控指标类02"); + AssertJUnit.assertEquals(qualityControlIndicatorTypeList.get(0).getSequence().longValue(), 1); + AssertJUnit.assertEquals(qualityControlIndicatorTypeList.get(1).getName(), "质控指标类01"); + AssertJUnit.assertEquals(qualityControlIndicatorTypeList.get(1).getSequence().longValue(), 2); + + //测试向上排序 + qualityControlIndicatorTypeManager.sortQualityControlIndicatorType(sortQualityControlIndicatorTypeId, "up"); + qualityControlIndicatorTypeList = qualityControlIndicatorTypeManager.getAll("sequence"); + AssertJUnit.assertEquals(qualityControlIndicatorTypeList.get(0).getName(), "质控指标类01"); + AssertJUnit.assertEquals(qualityControlIndicatorTypeList.get(0).getSequence().longValue(), 1); + AssertJUnit.assertEquals(qualityControlIndicatorTypeList.get(1).getName(), "质控指标类02"); + AssertJUnit.assertEquals(qualityControlIndicatorTypeList.get(1).getSequence().longValue(), 2); + } + +} Index: ssts-web/src/test/java/test/forgon/disinfectsystem/qualitymonitoring/definition/QualityControlItemParameterManagerTest.java =================================================================== diff -u --- ssts-web/src/test/java/test/forgon/disinfectsystem/qualitymonitoring/definition/QualityControlItemParameterManagerTest.java (revision 0) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/qualitymonitoring/definition/QualityControlItemParameterManagerTest.java (revision 40973) @@ -0,0 +1,202 @@ +package test.forgon.disinfectsystem.qualitymonitoring.definition; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.commons.collections4.CollectionUtils; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.testng.AssertJUnit; + +import com.forgon.disinfectsystem.entity.customform.formdefinition.FormDefinitionItemOption; +import com.forgon.disinfectsystem.entity.qualitymonitoringmanager.qualitymonitoringconfig.QualityControlIndicatorType; +import com.forgon.disinfectsystem.entity.qualitymonitoringmanager.qualitymonitoringconfig.QualityControlItemParameter; +import com.forgon.disinfectsystem.qualitymonitoring.definition.dto.QualityControlIndicatorTypeDto; +import com.forgon.disinfectsystem.qualitymonitoring.definition.dto.QualityControlItemParameterDto; +import com.forgon.disinfectsystem.qualitymonitoring.definition.service.QualityControlIndicatorTypeManager; +import com.forgon.disinfectsystem.qualitymonitoring.definition.service.QualityControlItemParameterManager; +import com.forgon.tools.string.StringTools; + +import test.forgon.disinfectsystem.AbstractCSSDTest; + +/** + * 质控项目参数的测试用例 + */ +public class QualityControlItemParameterManagerTest extends AbstractCSSDTest { + + @Autowired + private QualityControlIndicatorTypeManager qualityControlIndicatorTypeManager; + + @Autowired + private QualityControlItemParameterManager qualityControlItemParameterManager; + + private QualityControlIndicatorType qualityControlIndicatorType; + + @Before + public void initTestData(){ + List dbQualityControlItemParameterList = qualityControlItemParameterManager.getAll(); + if(CollectionUtils.isNotEmpty(dbQualityControlItemParameterList)){ + for (QualityControlItemParameter qualityControlItemParameter : dbQualityControlItemParameterList) { + qualityControlItemParameterManager.delete(qualityControlItemParameter); + } + } + List dbQualityControlIndicatorTypeList = qualityControlIndicatorTypeManager.getAll(); + if(CollectionUtils.isNotEmpty(dbQualityControlIndicatorTypeList)){ + for (QualityControlIndicatorType qualityControlIndicatorType : dbQualityControlIndicatorTypeList) { + qualityControlIndicatorTypeManager.delete(qualityControlIndicatorType); + } + } + //测试新建 + QualityControlIndicatorTypeDto qualityControlIndicatorTypeDto1 = new QualityControlIndicatorTypeDto(); + qualityControlIndicatorTypeDto1.setName("质控指标类01"); + qualityControlIndicatorTypeDto1.setTargetValue("≤300"); + qualityControlIndicatorTypeManager.saveQualityControlIndicatorType(qualityControlIndicatorTypeDto1); + + List qualityControlIndicatorTypeList = qualityControlIndicatorTypeManager.getAll("sequence"); + qualityControlIndicatorType = qualityControlIndicatorTypeList.get(0); + } + + @After + public void clearTestData(){ + List dbQualityControlItemParameterList = qualityControlItemParameterManager.getAll(); + if(CollectionUtils.isNotEmpty(dbQualityControlItemParameterList)){ + for (QualityControlItemParameter qualityControlItemParameter : dbQualityControlItemParameterList) { + qualityControlItemParameterManager.delete(qualityControlItemParameter); + } + } + List dbQualityControlIndicatorTypeList = qualityControlIndicatorTypeManager.getAll(); + if(CollectionUtils.isNotEmpty(dbQualityControlIndicatorTypeList)){ + for (QualityControlIndicatorType qualityControlIndicatorType : dbQualityControlIndicatorTypeList) { + qualityControlIndicatorTypeManager.delete(qualityControlIndicatorType); + } + } + } + + /** + * 质控项目参数保存的测试用例 + */ + @Test + public void testSaveQualityControlItemParameter(){ + + //测试新建 + QualityControlItemParameterDto qualityControlItemParameterDto1 = new QualityControlItemParameterDto(); + qualityControlItemParameterDto1.setName("质控项目参数01"); + qualityControlItemParameterDto1.setQcIndicatorType_id(qualityControlIndicatorType.getId()); + qualityControlItemParameterManager.saveQualityControlItemParameter(qualityControlItemParameterDto1); + + QualityControlItemParameterDto qualityControlItemParameterDto2 = new QualityControlItemParameterDto(); + qualityControlItemParameterDto2.setName("质控项目参数02"); + qualityControlItemParameterManager.saveQualityControlItemParameter(qualityControlItemParameterDto2); + + //名称不能重复 + try { + QualityControlItemParameterDto qualityControlItemParameterDto3 = new QualityControlItemParameterDto(); + qualityControlItemParameterDto3.setName("质控项目参数02"); + qualityControlItemParameterManager.saveQualityControlItemParameter(qualityControlItemParameterDto3); + } catch (Exception e) {} + + List qualityControlItemParameterList = qualityControlItemParameterManager.getAll("sequence"); + AssertJUnit.assertNotNull(qualityControlItemParameterList); + AssertJUnit.assertEquals(qualityControlItemParameterList.size(), 2); + AssertJUnit.assertEquals(qualityControlItemParameterList.get(0).getName(), "质控项目参数01"); + AssertJUnit.assertEquals(qualityControlItemParameterList.get(0).getSequence().longValue(), 1); + AssertJUnit.assertEquals(qualityControlItemParameterList.get(1).getName(), "质控项目参数02"); + AssertJUnit.assertEquals(qualityControlItemParameterList.get(1).getSequence().longValue(), 2); + + //测试修改名称和目标值 + qualityControlItemParameterDto2 = new QualityControlItemParameterDto(); + qualityControlItemParameterDto2.setId(qualityControlItemParameterList.get(1).getId()); + qualityControlItemParameterDto2.setName("质控项目参数02——改名"); + qualityControlItemParameterDto2.setQcIndicatorType_id(qualityControlIndicatorType.getId()); + qualityControlItemParameterManager.saveQualityControlItemParameter(qualityControlItemParameterDto2); + qualityControlItemParameterList = qualityControlItemParameterManager.getAll("sequence"); + AssertJUnit.assertEquals(qualityControlItemParameterList.get(1).getName(), "质控项目参数02——改名"); + AssertJUnit.assertEquals(qualityControlItemParameterList.get(1).getQualityControlIndicatorType().getName(), "质控指标类01"); + + } + + /** + * 质控项目参数删除的测试用例 + */ + @Test + public void testBatchDeleteQualityControlItemParameter(){ + //新建测试数据 + QualityControlItemParameterDto qualityControlItemParameterDto1 = new QualityControlItemParameterDto(); + qualityControlItemParameterDto1.setName("质控项目参数01"); + qualityControlItemParameterDto1.setQcIndicatorType_id(qualityControlIndicatorType.getId()); + qualityControlItemParameterManager.saveQualityControlItemParameter(qualityControlItemParameterDto1); + + QualityControlItemParameterDto qualityControlItemParameterDto2 = new QualityControlItemParameterDto(); + qualityControlItemParameterDto2.setName("质控项目参数02"); + qualityControlItemParameterManager.saveQualityControlItemParameter(qualityControlItemParameterDto2); + + //测试删除 + List idList = new ArrayList(); + List qualityControlItemParameterList = qualityControlItemParameterManager.getAll("sequence"); + for (QualityControlItemParameter qualityControlItemParameter : qualityControlItemParameterList) { + idList.add(qualityControlItemParameter.getId()); + } + + //测试被引用的质控指标类不能被删除 + FormDefinitionItemOption formDefinitionItemOption = new FormDefinitionItemOption(); + formDefinitionItemOption.setQualityControlItemParameter(qualityControlItemParameterList.get(0)); + objectDao.save(formDefinitionItemOption); + try { + qualityControlItemParameterManager.batchDeleteQualityControlItemParameter(StringTools.join(idList, ";")); + } catch (Exception e) {} + qualityControlItemParameterList = qualityControlItemParameterManager.getAll("sequence"); + AssertJUnit.assertEquals(qualityControlItemParameterList.size(), 2); + + //测试批量删除 + objectDao.delete(formDefinitionItemOption); + formDefinitionItemOption = (FormDefinitionItemOption) objectDao.getById(FormDefinitionItemOption.class.getSimpleName(), formDefinitionItemOption.getId()); + qualityControlItemParameterManager.batchDeleteQualityControlItemParameter(StringTools.join(idList, ";")); + qualityControlItemParameterList = qualityControlItemParameterManager.getAll("sequence"); + if(qualityControlItemParameterList != null){ + AssertJUnit.assertEquals(qualityControlItemParameterList.size(), 0); + } + } + + /** + * 质控项目参数排序的测试用例 + */ + @Test + public void testSortQualityControlIndicatorType(){ + //新建测试数据 + QualityControlItemParameterDto qualityControlItemParameterDto1 = new QualityControlItemParameterDto(); + qualityControlItemParameterDto1.setName("质控项目参数01"); + qualityControlItemParameterDto1.setQcIndicatorType_id(qualityControlIndicatorType.getId()); + qualityControlItemParameterManager.saveQualityControlItemParameter(qualityControlItemParameterDto1); + + QualityControlItemParameterDto qualityControlItemParameterDto2 = new QualityControlItemParameterDto(); + qualityControlItemParameterDto2.setName("质控项目参数02"); + qualityControlItemParameterManager.saveQualityControlItemParameter(qualityControlItemParameterDto2); + + List qualityControlItemParameterList = qualityControlItemParameterManager.getAll("sequence"); + AssertJUnit.assertEquals(qualityControlItemParameterList.get(0).getName(), "质控项目参数01"); + AssertJUnit.assertEquals(qualityControlItemParameterList.get(0).getSequence().longValue(), 1); + AssertJUnit.assertEquals(qualityControlItemParameterList.get(1).getName(), "质控项目参数02"); + AssertJUnit.assertEquals(qualityControlItemParameterList.get(1).getSequence().longValue(), 2); + + Long sortQualityControlItemParameterId = qualityControlItemParameterList.get(0).getId(); + + //测试向下排序 + qualityControlItemParameterManager.sortQualityControlItemParameter(sortQualityControlItemParameterId, "down"); + qualityControlItemParameterList = qualityControlItemParameterManager.getAll("sequence"); + AssertJUnit.assertEquals(qualityControlItemParameterList.get(0).getName(), "质控项目参数02"); + AssertJUnit.assertEquals(qualityControlItemParameterList.get(0).getSequence().longValue(), 1); + AssertJUnit.assertEquals(qualityControlItemParameterList.get(1).getName(), "质控项目参数01"); + AssertJUnit.assertEquals(qualityControlItemParameterList.get(1).getSequence().longValue(), 2); + + //测试向上排序 + qualityControlItemParameterManager.sortQualityControlItemParameter(sortQualityControlItemParameterId, "up"); + qualityControlItemParameterList = qualityControlItemParameterManager.getAll("sequence"); + AssertJUnit.assertEquals(qualityControlItemParameterList.get(0).getName(), "质控项目参数01"); + AssertJUnit.assertEquals(qualityControlItemParameterList.get(0).getSequence().longValue(), 1); + AssertJUnit.assertEquals(qualityControlItemParameterList.get(1).getName(), "质控项目参数02"); + AssertJUnit.assertEquals(qualityControlItemParameterList.get(1).getSequence().longValue(), 2); + } + +} Index: ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/definition/dto/QualityControlItemParameterDto.java =================================================================== diff -u --- ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/definition/dto/QualityControlItemParameterDto.java (revision 0) +++ ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/definition/dto/QualityControlItemParameterDto.java (revision 40973) @@ -0,0 +1,38 @@ +package com.forgon.disinfectsystem.qualitymonitoring.definition.dto; + +/** + * 质控项目参数的dto + * FSEYEQ-22 + */ +public class QualityControlItemParameterDto { + + private Long id; + /** + * 名称 + */ + private String name; + /** + * 质控指标类id + */ + private Long qcIndicatorType_id; + + public Long getId() { + return id; + } + public void setId(Long id) { + this.id = id; + } + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + public Long getQcIndicatorType_id() { + return qcIndicatorType_id; + } + public void setQcIndicatorType_id(Long qcIndicatorType_id) { + this.qcIndicatorType_id = qcIndicatorType_id; + } + +} Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/qualitymonitoringmanager/qualitymonitoringconfig/QualityControlIndicatorType.java =================================================================== diff -u --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/qualitymonitoringmanager/qualitymonitoringconfig/QualityControlIndicatorType.java (revision 0) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/qualitymonitoringmanager/qualitymonitoringconfig/QualityControlIndicatorType.java (revision 40973) @@ -0,0 +1,97 @@ +package com.forgon.disinfectsystem.entity.qualitymonitoringmanager.qualitymonitoringconfig; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +import org.hibernate.annotations.Cache; +import org.hibernate.annotations.CacheConcurrencyStrategy; +import org.hibernate.annotations.DynamicInsert; +import org.hibernate.annotations.DynamicUpdate; + +/** + * 质控指标类 + * FSEYEQ-22 + */ +@Entity +@DynamicInsert(false) +@DynamicUpdate(true) +@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) +public class QualityControlIndicatorType { + + private Long id; + /** + * 名称 + */ + private String name; + /** + * 目标值 + */ + private String targetValue; + /** + * 目标值符号 + * 只能为≤”、“=”、“≥” + */ + private String targetValueSymbol; + /** + * 目标值数值 + * 整数和0 + */ + private Long targetValueNumber; + /** + * 顺序号 + */ + private Long sequence; + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getTargetValue() { + return targetValue; + } + + public void setTargetValue(String targetValue) { + this.targetValue = targetValue; + } + + public String getTargetValueSymbol() { + return targetValueSymbol; + } + + public void setTargetValueSymbol(String targetValueSymbol) { + this.targetValueSymbol = targetValueSymbol; + } + + public Long getTargetValueNumber() { + return targetValueNumber; + } + + public void setTargetValueNumber(Long targetValueNumber) { + this.targetValueNumber = targetValueNumber; + } + + public Long getSequence() { + return sequence; + } + + public void setSequence(Long sequence) { + this.sequence = sequence; + } + +} Index: ssts-web/src/test/java/test/forgon/disinfectsystem/qualitymonitoring/AllTests.java =================================================================== diff -u --- ssts-web/src/test/java/test/forgon/disinfectsystem/qualitymonitoring/AllTests.java (revision 0) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/qualitymonitoring/AllTests.java (revision 40973) @@ -0,0 +1,17 @@ +package test.forgon.disinfectsystem.qualitymonitoring; + +import org.junit.runner.RunWith; +import org.junit.runners.Suite; +import org.junit.runners.Suite.SuiteClasses; + +import test.forgon.disinfectsystem.qualitymonitoring.definition.QualityControlIndicatorTypeManagerTest; +import test.forgon.disinfectsystem.qualitymonitoring.definition.QualityControlItemParameterManagerTest; + +/** + * 质量监测的测试用例 + */ +@RunWith(Suite.class) +@SuiteClasses({ QualityControlIndicatorTypeManagerTest.class, QualityControlItemParameterManagerTest.class }) +public class AllTests { + +} Index: ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/instance/service/QualityMonitoringInstanceManagerImpl.java =================================================================== diff -u -r40619 -r40973 --- ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/instance/service/QualityMonitoringInstanceManagerImpl.java (.../QualityMonitoringInstanceManagerImpl.java) (revision 40619) +++ ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/instance/service/QualityMonitoringInstanceManagerImpl.java (.../QualityMonitoringInstanceManagerImpl.java) (revision 40973) @@ -407,6 +407,8 @@ objectDao.saveOrUpdate(qmInstance); }else{ formInstanceManager.saveFormInstance(qmInstance, requestParams); + //设置数量FSEYEQ-22 + setFormInstanceOptionValueQuality(qmInstance, requestParams); //保存不合格物品STDXYXYFSZ-41 saveFormInstanceOptionValueGoods(qmInstance, requestParams); } @@ -421,6 +423,55 @@ } /** + * 设置选项后面的数量FSEYEQ-22 + * @param qmInstance 质量监测记录 + * @param paramsMap 入参 + */ + private void setFormInstanceOptionValueQuality(QualityMonitoringInstance qmInstance, Map paramsMap) { + List formInstanceItems = qmInstance.getItems(); + for (FormInstanceItem formInstanceItem : formInstanceItems) { + FormDefinitionItem definitionItem = formInstanceItem.getDefinitionItem(); + if(FormDefinitionItem.TYPE_CHECK.equals(definitionItem.getType()) ){ + List optionValues = formInstanceItem.getOptionValues(); + for (FormInstanceOptionValue optionValue : optionValues) { + //configItemOptionQuantity40608多选2=2 + FormDefinitionItemOption formDefinitionItemOption = optionValue.getItemOption(); + if(formDefinitionItemOption == null){ + continue; + } + String fillQuantity = formDefinitionItemOption.getFillQuantity(); + if(StringUtils.equals(fillQuantity, Constants.STR_YES)){ + String quantity = paramsMap.get("configItemOptionQuantity" + definitionItem.getId() + optionValue.getAnswer()); + if(DatabaseUtil.isPoIdValid(quantity)){ + optionValue.setQuantity(Integer.valueOf(quantity)); + }else{ + optionValue.setQuantity(1); + } + } + } + }else if(FormDefinitionItem.TYPE_RADIO.equals(definitionItem.getType())){ + List optionValues = formInstanceItem.getOptionValues(); + for (FormInstanceOptionValue optionValue : optionValues) { + //quantity40607=1 + FormDefinitionItemOption formDefinitionItemOption = optionValue.getItemOption(); + if(formDefinitionItemOption == null){ + continue; + } + String fillQuantity = formDefinitionItemOption.getFillQuantity(); + if(StringUtils.equals(fillQuantity, Constants.STR_YES)){ + String quantity = paramsMap.get("quantity" + definitionItem.getId()); + if(DatabaseUtil.isPoIdValid(quantity)){ + optionValue.setQuantity(Integer.valueOf(quantity)); + }else{ + optionValue.setQuantity(1); + } + } + } + } + } + } + + /** * 质量监测记录,抽检包内材料器械包关联抽检器械包 * @param qmInstance 质量监测记录 * @param requestParams 参数map Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/qualitymonitoringmanager/qualitymonitoringconfig/QualityControlItemParameter.java =================================================================== diff -u --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/qualitymonitoringmanager/qualitymonitoringconfig/QualityControlItemParameter.java (revision 0) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/qualitymonitoringmanager/qualitymonitoringconfig/QualityControlItemParameter.java (revision 40973) @@ -0,0 +1,76 @@ +package com.forgon.disinfectsystem.entity.qualitymonitoringmanager.qualitymonitoringconfig; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; + +import org.hibernate.annotations.Cache; +import org.hibernate.annotations.CacheConcurrencyStrategy; +import org.hibernate.annotations.DynamicInsert; +import org.hibernate.annotations.DynamicUpdate; + +/** + * 质控项目参数 + * FSEYEQ-22 + */ +@Entity +@DynamicInsert(false) +@DynamicUpdate(true) +@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) +public class QualityControlItemParameter { + + private Long id; + /** + * 名称 + */ + private String name; + /** + * 质控指标类 + */ + private QualityControlIndicatorType qualityControlIndicatorType; + /** + * 顺序号 + */ + private Long sequence; + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @ManyToOne + @JoinColumn(name = "qcIndicatorType_id") + public QualityControlIndicatorType getQualityControlIndicatorType() { + return qualityControlIndicatorType; + } + + public void setQualityControlIndicatorType( + QualityControlIndicatorType qualityControlIndicatorType) { + this.qualityControlIndicatorType = qualityControlIndicatorType; + } + + public Long getSequence() { + return sequence; + } + + public void setSequence(Long sequence) { + this.sequence = sequence; + } + +} Index: ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/definition/service/QualityControlItemParameterManagerImpl.java =================================================================== diff -u --- ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/definition/service/QualityControlItemParameterManagerImpl.java (revision 0) +++ ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/definition/service/QualityControlItemParameterManagerImpl.java (revision 40973) @@ -0,0 +1,170 @@ +package com.forgon.disinfectsystem.qualitymonitoring.definition.service; + +import java.sql.ResultSet; +import java.util.Collection; +import java.util.List; + +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.forgon.disinfectsystem.entity.customform.formdefinition.FormDefinitionItemOption; +import com.forgon.disinfectsystem.entity.qualitymonitoringmanager.qualitymonitoringconfig.QualityControlIndicatorType; +import com.forgon.disinfectsystem.entity.qualitymonitoringmanager.qualitymonitoringconfig.QualityControlItemParameter; +import com.forgon.disinfectsystem.qualitymonitoring.definition.dto.QualityControlItemParameterDto; +import com.forgon.entity.PageEntity; +import com.forgon.exception.SystemException; +import com.forgon.tools.db.DatabaseUtil; +import com.forgon.tools.hibernate.BasePoManagerImpl; +import com.forgon.tools.string.StringTools; +import com.forgon.tools.util.SqlUtils; + +@Service("qualityControlItemParameterManager") +@Transactional +public class QualityControlItemParameterManagerImpl extends BasePoManagerImpl implements QualityControlItemParameterManager { + + @Autowired + private QualityControlIndicatorTypeManager qualityControlIndicatorTypeManager; + + @Override + public void saveQualityControlItemParameter(QualityControlItemParameterDto qualityControlItemParameterDto) { + if(qualityControlItemParameterDto == null){ + throw new RuntimeException("参数异常!"); + } + QualityControlItemParameter qualityControlItemParameter = this.get(qualityControlItemParameterDto.getId()); + if(qualityControlItemParameter == null){ + qualityControlItemParameter = new QualityControlItemParameter(); + Long maxSequence = getQualityControlItemParameterMaxSequence(); + qualityControlItemParameter.setSequence(maxSequence + 1); + } + qualityControlItemParameter.setName(qualityControlItemParameterDto.getName()); + if(DatabaseUtil.isPoIdValid(qualityControlItemParameterDto.getQcIndicatorType_id())){ + QualityControlIndicatorType qualityControlIndicatorType = qualityControlIndicatorTypeManager.get(qualityControlItemParameterDto.getQcIndicatorType_id()); + if(qualityControlIndicatorType == null){ + throw new RuntimeException("质控指标类id无效!"); + } + qualityControlItemParameter.setQualityControlIndicatorType(qualityControlIndicatorType); + } + if(StringUtils.isBlank(qualityControlItemParameter.getName())){ + throw new SystemException("名称不能为空!"); + } + //名称不允许重名 + StringBuffer countSql = new StringBuffer(); + countSql.append("select count(1) from "); + countSql.append(QualityControlItemParameter.class.getSimpleName()); + countSql.append(" where name = '"); + countSql.append(qualityControlItemParameter.getName()); + countSql.append("'"); + if(DatabaseUtil.isPoIdValid(qualityControlItemParameter.getId())){ + countSql.append(" and id <> "); + countSql.append(qualityControlItemParameter.getId()); + } + if(objectDao.countBySql(countSql.toString()) > 0){ + throw new SystemException(String.format("已经存在名称为【%s】的质控项目参数", qualityControlItemParameter.getName())); + } + this.save(qualityControlItemParameter); + } + + /** + * 查询最大的顺序号 + * @return 最大的顺序号 + */ + private Long getQualityControlItemParameterMaxSequence() { + StringBuffer maxSeqSql = new StringBuffer(); + maxSeqSql.append("select max(sequence) maxSequence from "); + maxSeqSql.append(QualityControlItemParameter.class.getSimpleName()); + ResultSet rs = null; + Long maxSequence = null; + try { + rs = objectDao.executeSql(maxSeqSql.toString()); + while(rs.next()){ + maxSequence = rs.getLong("maxSequence"); + } + } catch (Exception e) { + e.printStackTrace(); + throw new RuntimeException(e.getMessage()); + } finally { + DatabaseUtil.closeResultSetAndStatement(rs); + } + if(maxSequence == null){ + maxSequence = 0L; + } + return maxSequence; + } + + @Override + public void batchDeleteQualityControlItemParameter(String ids) { + List qualityControlItemParameterList = this.getCollection(ids, ";"); + if(CollectionUtils.isEmpty(qualityControlItemParameterList)){ + return; + } + Collection idList = StringTools.parseToLongs(ids, ";"); + StringBuffer formDefinitionItemOptionCountSql = new StringBuffer(); + formDefinitionItemOptionCountSql.append("select count(1) from "); + formDefinitionItemOptionCountSql.append(FormDefinitionItemOption.class.getSimpleName()); + formDefinitionItemOptionCountSql.append(" where "); + formDefinitionItemOptionCountSql.append(SqlUtils.getNonStringFieldInLargeCollectionsPredicate("qcItemParameter_id", idList)); + if(objectDao.countBySql(formDefinitionItemOptionCountSql.toString()) > 0){ + throw new SystemException("无法删除,含有被引用的选项,请移除后再操作。"); + } + for (QualityControlItemParameter qualityControlItemParameter : qualityControlItemParameterList) { + this.delete(qualityControlItemParameter); + } + } + + @Override + public void sortQualityControlItemParameter(Long id, String orderType) { + + QualityControlItemParameter qualityControlItemParameter = this.get(id); + if(qualityControlItemParameter == null){ + throw new SystemException("id无效!"); + } + QualityControlItemParameter nextQualityControlItemParameter = null; + StringBuffer nextSql = new StringBuffer(); + if(StringUtils.equals("up", orderType)){ + nextSql.append(" sequence < "); + nextSql.append(qualityControlItemParameter.getSequence()); + nextSql.append(" order by sequence desc "); + } else if(StringUtils.equals("down", orderType)){ + nextSql.append(" sequence > "); + nextSql.append(qualityControlItemParameter.getSequence()); + nextSql.append(" order by sequence asc "); + } else { + throw new SystemException("orderType无效!"); + } + List qualityControlItemParameterList = this.getByHql(nextSql.toString()); + if(CollectionUtils.isEmpty(qualityControlItemParameterList)){ + return; + } + nextQualityControlItemParameter = qualityControlItemParameterList.get(0); + Long sequence = qualityControlItemParameter.getSequence(); + qualityControlItemParameter.setSequence(nextQualityControlItemParameter.getSequence()); + nextQualityControlItemParameter.setSequence(sequence); + objectDao.saveOrUpdate(qualityControlItemParameter); + objectDao.saveOrUpdate(nextQualityControlItemParameter); + + } + + @SuppressWarnings("unchecked") + @Override + public void loadQualityControlItemParameterList(String spell, PageEntity page) { + StringBuffer sqlBuffer = new StringBuffer(); + sqlBuffer.append(" where 1=1 "); + if(StringUtils.isNotBlank(spell)){ + sqlBuffer.append(" and (name like '%"); + sqlBuffer.append(spell); + sqlBuffer.append("%' or qualityControlIndicatorType.name like '%"); + sqlBuffer.append(spell); + sqlBuffer.append("%')"); + } + int count = objectDao.countObjectBySql(QualityControlItemParameter.class.getSimpleName(), sqlBuffer.toString()); + page.setCount(count); + if(count > 0){ + List list = objectDao.findBySql(QualityControlItemParameter.class.getSimpleName(), sqlBuffer.toString(), page.getStart(), page.getLimit(), "sequence"); + page.setList(list); + } + } + +} Index: ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/definition/controller/QualityControlItemParameterController.java =================================================================== diff -u --- ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/definition/controller/QualityControlItemParameterController.java (revision 0) +++ ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/definition/controller/QualityControlItemParameterController.java (revision 40973) @@ -0,0 +1,96 @@ +package com.forgon.disinfectsystem.qualitymonitoring.definition.controller; + +import net.sf.json.JSONObject; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.forgon.disinfectsystem.qualitymonitoring.definition.dto.QualityControlItemParameterDto; +import com.forgon.disinfectsystem.qualitymonitoring.definition.service.QualityControlItemParameterManager; +import com.forgon.entity.PageEntity; +import com.forgon.tools.json.JSONUtil; + +/** + * 质控项目参数的接口 + * FSEYEQ-22 + */ +@RestController +@RequestMapping(value="/disinfectSystem/baseData/qualityControlItemParameterController", produces = "application/json;charset=UTF-8") +public class QualityControlItemParameterController { + + @Autowired + private QualityControlItemParameterManager qualityControlItemParameterManager; + + /** + * 保存或修改质控项目参数接口 + * @param qualityControlItemParameterDto 质控项目参数的dto + * @return 返回参数 + */ + @RequestMapping("/saveQualityControlItemParameter") + public String saveQualityControlItemParameter(QualityControlItemParameterDto qualityControlItemParameterDto){ + JSONObject result = JSONUtil.buildJsonObject(true, "保存成功"); + try { + qualityControlItemParameterManager.saveQualityControlItemParameter(qualityControlItemParameterDto); + } catch (Exception e) { + e.printStackTrace(); + result = JSONUtil.buildJsonObject(false, e.getMessage()); + } + return result.toString(); + } + + /** + * 删除质控项目参数接口 + * @param ids 质控项目参数的id,例如:1;2;3 + * @return 返回参数 + */ + @RequestMapping("/batchDeleteQualityControlItemParameter") + public String batchDeleteQualityControlItemParameter(String ids){ + JSONObject result = JSONUtil.buildJsonObject(true, "保存成功"); + try { + qualityControlItemParameterManager.batchDeleteQualityControlItemParameter(ids); + } catch (Exception e) { + e.printStackTrace(); + result = JSONUtil.buildJsonObject(false, e.getMessage()); + } + return result.toString(); + } + + /** + * 质控项目参数排序接口 + * @param id 记录id + * @param orderType 排序类型up/down + * @return 返回参数 + */ + @RequestMapping("/sortQualityControlItemParameter") + public String sortQualityControlItemParameter(Long id, String orderType){ + JSONObject result = JSONUtil.buildJsonObject(true, "排序成功"); + try { + qualityControlItemParameterManager.sortQualityControlItemParameter(id, orderType); + } catch (Exception e) { + e.printStackTrace(); + result = JSONUtil.buildJsonObject(false, e.getMessage()); + } + return result.toString(); + } + + /** + * 质控项目参数列表接口 + * @param spell 搜索关键字 + * @param page 分页参数 + * @return 返回参数 + */ + @RequestMapping("/loadQualityControlItemParameterList") + public String loadQualityControlItemParameterList(String spell, PageEntity page){ + JSONObject result = JSONUtil.buildJsonObject(true); + try { + qualityControlItemParameterManager.loadQualityControlItemParameterList(spell, page); + result = JSONUtil.buildJsonObject(true, JSONObject.fromObject(page)); + } catch (Exception e) { + e.printStackTrace(); + result = JSONUtil.buildJsonObject(false, "加载失败:" + e.getMessage()); + } + return result.toString(); + } + +} Index: ssts-customform/src/main/java/com/forgon/disinfectsystem/customform/formdefinition/service/FormDefinitionManagerImpl.java =================================================================== diff -u -r40958 -r40973 --- ssts-customform/src/main/java/com/forgon/disinfectsystem/customform/formdefinition/service/FormDefinitionManagerImpl.java (.../FormDefinitionManagerImpl.java) (revision 40958) +++ ssts-customform/src/main/java/com/forgon/disinfectsystem/customform/formdefinition/service/FormDefinitionManagerImpl.java (.../FormDefinitionManagerImpl.java) (revision 40973) @@ -29,6 +29,7 @@ import com.forgon.disinfectsystem.entity.customform.forminstance.FormInstance; import com.forgon.disinfectsystem.entity.devicemaintenance.DeviceMaintenanceCusD; import com.forgon.disinfectsystem.entity.equipmentinspection.definition.EquipmentInspectionDef; +import com.forgon.disinfectsystem.entity.qualitymonitoringmanager.qualitymonitoringconfig.QualityControlItemParameter; import com.forgon.disinfectsystem.entity.qualitymonitoringmanager.qualitymonitoringconfig.QualityMonitoringDefinition; import com.forgon.disinfectsystem.entity.qualitymonitoringmanager.qualitymonitoringconfig.QualityMonitoringWarnUser; import com.forgon.exception.SystemException; @@ -433,6 +434,8 @@ String valueTriggerItemNames = optionItem.optString("valueTriggerItemNames"); String isDefaultValue = optionItem.optString("isDefaultValue", Constants.STR_NO); String recordMaterialDetails = optionItem.optString("recordMaterialDetails", Constants.STR_NO); + String fillQuantity = optionItem.optString("fillQuantity"); + Long qcItemParameter_id = optionItem.optLong("qcItemParameter_id"); FormDefinitionItemOption option = null; if(DatabaseUtil.isPoIdValid(optionId) && FormDefinition.ACTION_SAVE.equals(actionType)){ option = getFormDefintionItemOption(optionId); @@ -449,6 +452,13 @@ option.setValueTriggerItemNames(valueTriggerItemNames); option.setIsDefaultValue(isDefaultValue); option.setRecordMaterialDetails(recordMaterialDetails); + //填写数量FSEYEQ-22 + option.setFillQuantity(fillQuantity); + if(DatabaseUtil.isPoIdValid(qcItemParameter_id)){ + //关联质控项目参数FSEYEQ-22 + QualityControlItemParameter qualityControlItemParameter = (QualityControlItemParameter) objectDao.getById(QualityControlItemParameter.class.getSimpleName(), qcItemParameter_id); + option.setQualityControlItemParameter(qualityControlItemParameter); + } options.add(option); } if(toDeleteOptions.size() > 0){ Index: ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/definition/service/QualityControlIndicatorTypeManagerImpl.java =================================================================== diff -u --- ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/definition/service/QualityControlIndicatorTypeManagerImpl.java (revision 0) +++ ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/definition/service/QualityControlIndicatorTypeManagerImpl.java (revision 40973) @@ -0,0 +1,187 @@ +package com.forgon.disinfectsystem.qualitymonitoring.definition.service; + +import java.sql.ResultSet; +import java.util.Collection; +import java.util.List; + +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang.StringUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.forgon.disinfectsystem.entity.qualitymonitoringmanager.qualitymonitoringconfig.QualityControlIndicatorType; +import com.forgon.disinfectsystem.entity.qualitymonitoringmanager.qualitymonitoringconfig.QualityControlItemParameter; +import com.forgon.disinfectsystem.qualitymonitoring.definition.dto.QualityControlIndicatorTypeDto; +import com.forgon.entity.PageEntity; +import com.forgon.exception.SystemException; +import com.forgon.tools.db.DatabaseUtil; +import com.forgon.tools.hibernate.BasePoManagerImpl; +import com.forgon.tools.string.StringTools; +import com.forgon.tools.util.SqlUtils; + +@Service("qualityControlIndicatorTypeManager") +@Transactional +public class QualityControlIndicatorTypeManagerImpl extends BasePoManagerImpl implements QualityControlIndicatorTypeManager { + + @Override + public void saveQualityControlIndicatorType(QualityControlIndicatorTypeDto qualityControlIndicatorTypeDto) { + if(qualityControlIndicatorTypeDto == null){ + throw new RuntimeException("参数异常!"); + } + QualityControlIndicatorType qualityControlIndicatorType = this.get(qualityControlIndicatorTypeDto.getId()); + if(qualityControlIndicatorType == null){ + qualityControlIndicatorType = new QualityControlIndicatorType(); + Long maxSequence = getQualityControlIndicatorTypeMaxSequence(); + qualityControlIndicatorType.setSequence(maxSequence + 1); + } + //检查目标值 + setQualityControlIndicatorTypeTargetValue(qualityControlIndicatorType, qualityControlIndicatorTypeDto.getTargetValue()); + qualityControlIndicatorType.setName(qualityControlIndicatorTypeDto.getName()); + qualityControlIndicatorType.setTargetValue(qualityControlIndicatorTypeDto.getTargetValue()); + if(StringUtils.isBlank(qualityControlIndicatorTypeDto.getName())){ + throw new SystemException("名称不能为空!"); + } + //名称不允许重名 + StringBuffer countSql = new StringBuffer(); + countSql.append("select count(1) from "); + countSql.append(QualityControlIndicatorType.class.getSimpleName()); + countSql.append(" where name = '"); + countSql.append(qualityControlIndicatorType.getName()); + countSql.append("'"); + if(DatabaseUtil.isPoIdValid(qualityControlIndicatorType.getId())){ + countSql.append(" and id <> "); + countSql.append(qualityControlIndicatorType.getId()); + } + if(objectDao.countBySql(countSql.toString()) > 0){ + throw new SystemException(String.format("已经存在名称为【%s】的质控指标类", qualityControlIndicatorType.getName())); + } + this.save(qualityControlIndicatorType); + } + + /** + * 检查目标值:两部分组成:1、≤”、“=”、“≥”开头;2、仅允许填入整数和0,其余信息不允许填入,此控件默认值为空白,空白代表不设置任何信息。 + * @param targetValue 目标值 + */ + private void setQualityControlIndicatorTypeTargetValue(QualityControlIndicatorType qualityControlIndicatorType, String targetValue) { + if(StringUtils.isBlank(targetValue)){ + return; + } + String targetValueSymbol = targetValue.substring(0,1); + if(!StringUtils.equals("≤", targetValueSymbol) + && !StringUtils.equals("=", targetValueSymbol) + && !StringUtils.equals("≥", targetValueSymbol)){ + throw new SystemException(String.format("目标值【%s】无效", targetValue)); + } + + String targetValueNumberStr = targetValue.substring(1); + targetValueNumberStr = StringUtils.trim(targetValueNumberStr); + Long targetValueNumber = null; + try { + targetValueNumber = Long.valueOf(targetValueNumberStr); + } catch (Exception e) {} + if(targetValueNumber == null){ + throw new SystemException(String.format("目标值【%s】无效", targetValue)); + } + qualityControlIndicatorType.setTargetValueSymbol(targetValueSymbol); + qualityControlIndicatorType.setTargetValueNumber(targetValueNumber); + } + + /** + * 查询最大的顺序号 + * @return 最大的顺序号 + */ + private Long getQualityControlIndicatorTypeMaxSequence() { + StringBuffer maxSeqSql = new StringBuffer(); + maxSeqSql.append("select max(sequence) maxSequence from "); + maxSeqSql.append(QualityControlIndicatorType.class.getSimpleName()); + ResultSet rs = null; + Long maxSequence = null; + try { + rs = objectDao.executeSql(maxSeqSql.toString()); + while(rs.next()){ + maxSequence = rs.getLong("maxSequence"); + } + } catch (Exception e) { + e.printStackTrace(); + throw new RuntimeException(e.getMessage()); + } finally { + DatabaseUtil.closeResultSetAndStatement(rs); + } + if(maxSequence == null){ + maxSequence = 0L; + } + return maxSequence; + } + + @Override + public void batchDeleteQualityControlIndicatorType(String ids) { + List qualityControlIndicatorTypeList = this.getCollection(ids, ";"); + if(CollectionUtils.isEmpty(qualityControlIndicatorTypeList)){ + return; + } + Collection idList = StringTools.parseToLongs(ids, ";"); + StringBuffer qualityControlItemParameterCountSql = new StringBuffer(); + qualityControlItemParameterCountSql.append("select count(1) from "); + qualityControlItemParameterCountSql.append(QualityControlItemParameter.class.getSimpleName()); + qualityControlItemParameterCountSql.append(" where "); + qualityControlItemParameterCountSql.append(SqlUtils.getNonStringFieldInLargeCollectionsPredicate("qcIndicatorType_id", idList)); + if(objectDao.countBySql(qualityControlItemParameterCountSql.toString()) > 0){ + throw new SystemException("无法删除,含有被引用的选项,请移除后再操作。"); + } + for (QualityControlIndicatorType qualityControlIndicatorType : qualityControlIndicatorTypeList) { + this.delete(qualityControlIndicatorType); + } + } + + @Override + public void sortQualityControlIndicatorType(Long id, String orderType) { + QualityControlIndicatorType qualityControlIndicatorType = this.get(id); + if(qualityControlIndicatorType == null){ + throw new SystemException("id无效!"); + } + QualityControlIndicatorType nextQualityControlIndicatorType = null; + StringBuffer nextSql = new StringBuffer(); + if(StringUtils.equals("up", orderType)){ + nextSql.append(" sequence < "); + nextSql.append(qualityControlIndicatorType.getSequence()); + nextSql.append(" order by sequence desc "); + } else if(StringUtils.equals("down", orderType)){ + nextSql.append(" sequence > "); + nextSql.append(qualityControlIndicatorType.getSequence()); + nextSql.append(" order by sequence asc "); + } else { + throw new SystemException("orderType无效!"); + } + List qualityControlIndicatorTypeList = this.getByHql(nextSql.toString()); + if(CollectionUtils.isEmpty(qualityControlIndicatorTypeList)){ + return; + } + nextQualityControlIndicatorType = qualityControlIndicatorTypeList.get(0); + Long sequence = qualityControlIndicatorType.getSequence(); + qualityControlIndicatorType.setSequence(nextQualityControlIndicatorType.getSequence()); + nextQualityControlIndicatorType.setSequence(sequence); + objectDao.saveOrUpdate(qualityControlIndicatorType); + objectDao.saveOrUpdate(nextQualityControlIndicatorType); + } + + @SuppressWarnings("unchecked") + @Override + public void loadQualityControlIndicatorTypeList(String spell, PageEntity page) { + StringBuffer sqlBuffer = new StringBuffer(); + sqlBuffer.append(" where 1=1 "); + if(StringUtils.isNotBlank(spell)){ + sqlBuffer.append(" and (name like '%"); + sqlBuffer.append(spell); + sqlBuffer.append("%' or targetValue like '%"); + sqlBuffer.append(spell); + sqlBuffer.append("%')"); + } + int count = objectDao.countObjectBySql(QualityControlIndicatorType.class.getSimpleName(), sqlBuffer.toString()); + page.setCount(count); + if(count > 0){ + List list = objectDao.findBySql(QualityControlIndicatorType.class.getSimpleName(), sqlBuffer.toString(), page.getStart(), page.getLimit(), "sequence"); + page.setList(list); + } + } + +} Index: ssts-web/src/test/java/test/forgon/disinfectsystem/AllTests.java =================================================================== diff -u -r40526 -r40973 --- ssts-web/src/test/java/test/forgon/disinfectsystem/AllTests.java (.../AllTests.java) (revision 40526) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/AllTests.java (.../AllTests.java) (revision 40973) @@ -50,7 +50,9 @@ test.forgon.disinfectsystem.diposablegoods.AllTests.class, test.forgon.disinfectsystem.disinfectgoods.AllTests.class, test.forgon.disinfectsystem.application.AllTests.class, - test.forgon.disinfectsystem.signrecord.AllTests.class + test.forgon.disinfectsystem.signrecord.AllTests.class, + + test.forgon.disinfectsystem.qualitymonitoring.AllTests.class }) public class AllTests { Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/customform/formdefinition/FormDefinitionItem.java =================================================================== diff -u -r39250 -r40973 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/customform/formdefinition/FormDefinitionItem.java (.../FormDefinitionItem.java) (revision 39250) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/customform/formdefinition/FormDefinitionItem.java (.../FormDefinitionItem.java) (revision 40973) @@ -26,6 +26,7 @@ import org.hibernate.annotations.Cascade; import com.forgon.Constants; +import com.forgon.disinfectsystem.entity.qualitymonitoringmanager.qualitymonitoringconfig.QualityControlItemParameter; /** * 自定义表单元素定义 @@ -225,6 +226,17 @@ obj.put("valueTriggerItemNames", option.getValueTriggerItemNames()); obj.put("isDefaultValue", option.getIsDefaultValue()); obj.put("recordMaterialDetails", option.getRecordMaterialDetails()); + //新增报表消毒供应中心护理质量质控指标FSEYEQ-22 + obj.put("fillQuantity", option.getFillQuantity()); + Long qcItemParameter_id = null; + String qcItemParameter_name = ""; + QualityControlItemParameter qualityControlItemParameter = option.getQualityControlItemParameter(); + if(qualityControlItemParameter != null){ + qcItemParameter_id = qualityControlItemParameter.getId(); + qcItemParameter_name = qualityControlItemParameter.getName(); + } + obj.put("qcItemParameter_id", qcItemParameter_id); + obj.put("qcItemParameter_name", qcItemParameter_name); array.add(obj); } return array.toString(); Index: ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/definition/service/QualityControlItemParameterManager.java =================================================================== diff -u --- ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/definition/service/QualityControlItemParameterManager.java (revision 0) +++ ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/definition/service/QualityControlItemParameterManager.java (revision 40973) @@ -0,0 +1,40 @@ +package com.forgon.disinfectsystem.qualitymonitoring.definition.service; + +import com.forgon.disinfectsystem.entity.qualitymonitoringmanager.qualitymonitoringconfig.QualityControlItemParameter; +import com.forgon.disinfectsystem.qualitymonitoring.definition.dto.QualityControlItemParameterDto; +import com.forgon.entity.PageEntity; +import com.forgon.tools.hibernate.BasePoManager; + +/** + * 质控项目参数的manager + * FSEYEQ-22 + */ +public interface QualityControlItemParameterManager extends BasePoManager { + + /** + * 保存或修改质控项目参数接口 + * @param qualityControlItemParameterDto 质控项目参数的dto + */ + public void saveQualityControlItemParameter(QualityControlItemParameterDto qualityControlItemParameterDto); + + /** + * 删除质控项目参数 + * @param ids 质控项目参数id,例如:1;2;3 + */ + public void batchDeleteQualityControlItemParameter(String ids); + + /** + * 质控项目参数排序接口 + * @param id 记录id + * @param orderType 排序类型up/down + */ + public void sortQualityControlItemParameter(Long id, String orderType); + + /** + * 质控项目参数列表接口 + * @param spell 搜索关键字 + * @param page 分页参数 + */ + public void loadQualityControlItemParameterList(String spell, PageEntity page); + +}