Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/vo/LabelPrinterSettingVo.java =================================================================== diff -u --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/vo/LabelPrinterSettingVo.java (revision 0) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/vo/LabelPrinterSettingVo.java (revision 35953) @@ -0,0 +1,58 @@ +package com.forgon.disinfectsystem.vo; + +/** + * 标签与打印机设置(GDSRMYY-552 新增打印标签输出打印机设置功能) + * + */ +public class LabelPrinterSettingVo { + + private Long id; + + /** + * 自定义标签模板ID,如果非自定义标签模板,此字段为null + */ + private Long labelTemplateId; + + /** + * 系统定义的几种原标签类型,不含自定义标签,如果为自定义标签模板,此字段为null + */ + private String labelName; + + /** + * 打印机名称 + */ + private String printerName; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getLabelTemplateId() { + return labelTemplateId; + } + + public void setLabelTemplateId(Long labelTemplateId) { + this.labelTemplateId = labelTemplateId; + } + + public String getLabelName() { + return labelName; + } + + public void setLabelName(String labelName) { + this.labelName = labelName; + } + + public String getPrinterName() { + return printerName; + } + + public void setPrinterName(String printerName) { + this.printerName = printerName; + } + +} Index: ssts-print/src/main/java/com/forgon/disinfectsystem/computerlabelprintersetting/service/ComputerLabelPrinterSettingManagerImpl.java =================================================================== diff -u --- ssts-print/src/main/java/com/forgon/disinfectsystem/computerlabelprintersetting/service/ComputerLabelPrinterSettingManagerImpl.java (revision 0) +++ ssts-print/src/main/java/com/forgon/disinfectsystem/computerlabelprintersetting/service/ComputerLabelPrinterSettingManagerImpl.java (revision 35953) @@ -0,0 +1,368 @@ +package com.forgon.disinfectsystem.computerlabelprintersetting.service; + +import java.sql.ResultSet; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.Map.Entry; + +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.collections4.MapUtils; +import org.apache.commons.lang.StringUtils; + +import net.sf.json.JSONArray; +import net.sf.json.JSONObject; + +import com.forgon.disinfectsystem.entity.computerlabelprintersetting.ComputerLabelPrinterSetting; +import com.forgon.disinfectsystem.entity.computerlabelprintersetting.LabelPrinterSetting; +import com.forgon.disinfectsystem.entity.labeltemplate.LabelTemplate; +import com.forgon.disinfectsystem.labeltemplate.service.LabelTemplateManager; +import com.forgon.disinfectsystem.vo.ComputerLabelPrinterSettingVo; +import com.forgon.disinfectsystem.vo.LabelPrinterSettingVo; +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; + +public class ComputerLabelPrinterSettingManagerImpl extends BasePoManagerImpl implements ComputerLabelPrinterSettingManager{ + + private LabelTemplateManager labelTemplateManager; + + public void setLabelTemplateManager(LabelTemplateManager labelTemplateManager) { + this.labelTemplateManager = labelTemplateManager; + } + + @Override + public JSONArray loadComputerLabelPrinterSettingByID(String id) { + return loadComputerLabelPrinterSetting(id, null); + } + + /** + * 加载“标签输出打印机设置” + * @param id 根据ID查询 + * @param clientComputerName 根据客户端电脑名称查询 + * @return + */ + public JSONArray loadComputerLabelPrinterSetting(String id, String clientComputerName) { + JSONArray result = new JSONArray(); + if(!DatabaseUtil.isPoIdValid(id) && StringUtils.isBlank(clientComputerName)){ + return result; + } + Map computerLabelPrinterSettingVoMap = new LinkedHashMap(); + Map> labelPrinterSettingVoMap = new HashMap>(); + String sql = String.format("select cps.id settingId, cps.clientComputerName, cps.remark " + + ", lps.id itemId, lps.labelTemplateId, case when lt.name is not null then lt.fullName else lps.labelName end finalLabelName, lps.printerName " + + "from %s cps " + + "join %s lps on cps.id = lps.setting_id " + + "left join %s lt on lps.labelTemplateId = lt.id where 1=1 ", + ComputerLabelPrinterSetting.class.getSimpleName(), + LabelPrinterSetting.class.getSimpleName(), + LabelTemplate.class.getSimpleName()); + + if(DatabaseUtil.isPoIdValid(id)){ + sql += " and cps.id = " + id + " "; + } + + if(StringUtils.isNotBlank(clientComputerName)){ + sql += " and cps.clientComputerName = '" + clientComputerName + "' "; + } + + ResultSet rs = null; + try { + rs = objectDao.executeSql(sql); + while(rs.next()){ + Long settingId = rs.getLong("settingId"); + String clientComputerNameTemp = rs.getString("clientComputerName"); + String remark = rs.getString("remark"); + if(!DatabaseUtil.isPoIdValid(settingId)){ + continue; + } + ComputerLabelPrinterSettingVo settingVo = computerLabelPrinterSettingVoMap.get(settingId); + if(settingVo == null){ + settingVo = new ComputerLabelPrinterSettingVo(); + settingVo.setId(settingId); + settingVo.setClientComputerName(clientComputerNameTemp); + settingVo.setRemark(remark); + computerLabelPrinterSettingVoMap.put(settingId, settingVo); + } + + List labelPrinterSettingVoList = labelPrinterSettingVoMap.get(settingId); + if(labelPrinterSettingVoList == null){ + labelPrinterSettingVoList = new ArrayList(); + } + Long itemId = rs.getLong("itemId"); + Long labelTemplateId = rs.getLong("labelTemplateId"); + String finalLabelName = rs.getString("finalLabelName"); + String printerName = rs.getString("printerName"); + LabelPrinterSettingVo labelPrinterSettingVo = new LabelPrinterSettingVo(); + labelPrinterSettingVo.setId(itemId); + labelPrinterSettingVo.setLabelName(finalLabelName); + if(DatabaseUtil.isPoIdValid(labelTemplateId)){ + labelPrinterSettingVo.setLabelTemplateId(labelTemplateId); + } + labelPrinterSettingVo.setPrinterName(printerName); + labelPrinterSettingVoList.add(labelPrinterSettingVo); + labelPrinterSettingVoMap.put(settingId, labelPrinterSettingVoList); + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + DatabaseUtil.closeResultSetAndStatement(rs); + } + + List computerLabelPrinterSettingVoList = new ArrayList(); + if(MapUtils.isNotEmpty(computerLabelPrinterSettingVoMap)){ + for (Entry computerLabelPrinterSettingVoEntry : computerLabelPrinterSettingVoMap.entrySet()) { + Long key = computerLabelPrinterSettingVoEntry.getKey(); + ComputerLabelPrinterSettingVo computerLabelPrinterSettingVo = computerLabelPrinterSettingVoEntry.getValue(); + List labelPrinterSettingVoList = labelPrinterSettingVoMap.get(key); + computerLabelPrinterSettingVo.setLabelPrinterSettings(labelPrinterSettingVoList); + computerLabelPrinterSettingVoList.add(computerLabelPrinterSettingVo); + } + if(CollectionUtils.isNotEmpty(computerLabelPrinterSettingVoList)){ + result = JSONArray.fromObject(computerLabelPrinterSettingVoList); + } + } + return result; + } + + @Override + public void saveComputerLabelPrinterSetting(ComputerLabelPrinterSetting computerLabelPrinterSetting, + String labelPrinterSettings) { + if(computerLabelPrinterSetting == null || StringUtils.isBlank(labelPrinterSettings)){ + throw new SystemException("参数异常!"); + } + if(StringUtils.isBlank(computerLabelPrinterSetting.getClientComputerName())){ + throw new SystemException("客户端电脑名称不能为空!"); + } + + //设置的设备名称已存在 + String countSql = String.format("select count(*) from %s po where po.clientComputerName = '%s' ", + ComputerLabelPrinterSetting.class.getSimpleName(), + computerLabelPrinterSetting.getClientComputerName()); + if(DatabaseUtil.isPoIdValid(computerLabelPrinterSetting.getId())){ + countSql += " and po.id <> " + computerLabelPrinterSetting.getId(); + } + if(objectDao.countBySql(countSql) > 0){ + throw new SystemException("该设备名称已存在,请修改后再保存"); + } + + //保存“标签输出打印机设置” + objectDao.saveOrUpdate(computerLabelPrinterSetting); + + //标签与打印机设置 + List labelPrinterSettingList = buildLabelPrinterSettings(labelPrinterSettings); + computerLabelPrinterSetting.setLabelPrinterSettings(labelPrinterSettingList); + + objectDao.saveOrUpdate(computerLabelPrinterSetting); + + } + + /** + * 构建“标签与打印机设置” + * @param labelPrinterSettings [{"labelTemplateId":2,"printerName":"打印机01","id":1,"labelName":"模板-外部代理灭菌小标签"},{"labelTemplateId":3,"printerName":"打印机02","id":2,"labelName":"模板-普通中标签"},{"labelTemplateId":4,"printerName":"打印机03","id":3,"labelName":"模板-外来器械中标签"},{"labelTemplateId":0,"printerName":"打印机04","id":4,"labelName":"小标签"},{"labelTemplateId":0,"printerName":"打印机05","id":5,"labelName":"中标签"},{"labelTemplateId":0,"printerName":"打印机06","id":6,"labelName":"大标签"}] + * @return + */ + @SuppressWarnings("unchecked") + private List buildLabelPrinterSettings(String labelPrinterSettings) { + JSONArray labelPrinterSettingArr = JSONArray.fromObject(labelPrinterSettings); + if(labelPrinterSettingArr == null || labelPrinterSettingArr.size() == 0){ + throw new SystemException("标签与打印机设置不能为空!"); + } + //获取所有的标签模板 + List allTousseLabelName = labelTemplateManager.getAllTousseLabelName(); + if(CollectionUtils.isEmpty(allTousseLabelName)){ + throw new SystemException("标签模板为空!"); + } + //获取自定义标签 + Set dataSourceName = new HashSet(); + dataSourceName.add(LabelTemplate.OBJECTDATASOURCE_TOUSSE); + dataSourceName.add(LabelTemplate.OBJECTDATASOURCE_FOREIGNTOUSSE); + dataSourceName.add(LabelTemplate.OBJECTDATASOURCE_FOREIGNPROXYDISINFECTIONTOUSSE); + String sql = String.format("select po.fullName from %s po where %s ", LabelTemplate.class.getSimpleName(),SqlUtils.getStringFieldInLargeCollectionsPredicate("po.dataSourceName", dataSourceName)); + //自定义标签名称 + List fullNames = objectDao.findByHql(sql); + List labelPrinterSettingList = new ArrayList(); + List labelNameList = new ArrayList(); + List labelTemplateIdList = new ArrayList(); + for(int i=0;i loadComputerLabelPrinterSettingList(String clientComputerName, String labelName, PageEntity pageEntity) { + String hql = String.format("select po from %s po where 1=1 ", ComputerLabelPrinterSetting.class.getSimpleName()); + + String clientComputerNameSql = ""; + if(StringUtils.isNotBlank(clientComputerName)){ + clientComputerNameSql = " and po.clientComputerName like '%" + clientComputerName + "%' "; + hql += clientComputerNameSql; + } + String labelNameSql = ""; + if(StringUtils.isNotBlank(labelName)){ + labelNameSql = " and po.id in (select lps.setting_id from " + LabelPrinterSetting.class.getSimpleName() + " lps " + + " where lps.labelName like '%" + labelName + "%' " + + " or lps.labelTemplateId in (" + + "select id from " + LabelTemplate.class.getSimpleName() + " where fullName like '%" + labelName + "%'))"; + hql += " and po.id in (select lps.computerLabelPrinterSetting.id from " + LabelPrinterSetting.class.getSimpleName() + " lps " + + " where lps.labelName like '%" + labelName + "%' " + + " or lps.labelTemplateId in (" + + "select id from " + LabelTemplate.class.getSimpleName() + " where fullName like '%" + labelName + "%'))"; + } + + String countSql = String.format("select count(*) from %s po where 1=1 %s %s", ComputerLabelPrinterSetting.class.getSimpleName(), clientComputerNameSql, labelNameSql); + int count = objectDao.countBySql(countSql); + pageEntity.setCount(count); + if(count == 0){ + return null; + } + List computerLabelPrinterSettingList = null; + int start = pageEntity.getStart(); + int pageSize = pageEntity.getLimit(); + if(start >= 0 && pageSize > 0){ + computerLabelPrinterSettingList = objectDao.findByHql(hql, start, pageSize); + }else{ + computerLabelPrinterSettingList = objectDao.findByHql(hql); + } + if(CollectionUtils.isEmpty(computerLabelPrinterSettingList)){ + return null; + } + List computerLabelPrinterSettingIdList = new ArrayList(); + for (ComputerLabelPrinterSetting setting : computerLabelPrinterSettingList) { + computerLabelPrinterSettingIdList.add(setting.getId()); + } + Map labelNameMap = searchLabelNameMap(computerLabelPrinterSettingIdList); + List result = new ArrayList(); + for (ComputerLabelPrinterSetting computerLabelPrinterSetting : computerLabelPrinterSettingList) { + ComputerLabelPrinterSettingVo vo = new ComputerLabelPrinterSettingVo(); + vo.setId(computerLabelPrinterSetting.getId()); + vo.setClientComputerName(computerLabelPrinterSetting.getClientComputerName()); + if(labelNameMap != null){ + vo.setLabelNames(labelNameMap.get(computerLabelPrinterSetting.getId())); + } + vo.setRemark(computerLabelPrinterSetting.getRemark()); + result.add(vo); + } + return result; + } + + /** + * 关联查询“标签输出打印机设置”的标签模板名称 + * @param computerLabelPrinterSettingIdList + * @return + */ + private Map searchLabelNameMap(List computerLabelPrinterSettingIdList) { + + Map labelNameMap = new HashMap(); + if(CollectionUtils.isEmpty(computerLabelPrinterSettingIdList)){ + return labelNameMap; + } + + Map> labelNameListMap = new HashMap>(); + String sql = String.format("select lps.setting_id, case when lt.name is not null then lt.fullName else lps.labelName end finalLabelName " + + "from %s lps " + + "left join %s lt on lt.id = lps.labelTemplateId " + + "where %s", + LabelPrinterSetting.class.getSimpleName(), + LabelTemplate.class.getSimpleName(), + SqlUtils.getNonStringFieldInLargeCollectionsPredicate("lps.setting_id", computerLabelPrinterSettingIdList)); + ResultSet rs = null; + try { + rs = objectDao.executeSql(sql); + while(rs.next()){ + Long setting_id = rs.getLong("setting_id"); + String finalLabelName = rs.getString("finalLabelName"); + if(!DatabaseUtil.isPoIdValid(setting_id) || StringUtils.isBlank(finalLabelName)){ + continue; + } + List labelNameList = labelNameListMap.get(setting_id); + if(labelNameList == null){ + labelNameList = new ArrayList(); + } + labelNameList.add(finalLabelName); + labelNameListMap.put(setting_id, labelNameList); + } + } catch (Exception e) { + e.printStackTrace(); + } + + if(MapUtils.isEmpty(labelNameListMap)){ + return labelNameMap; + } + + for (Entry> entry : labelNameListMap.entrySet()) { + Long setting_id = entry.getKey(); + List labelNameList = entry.getValue(); + labelNameMap.put(setting_id, StringTools.join(labelNameList, ";")); + } + + return labelNameMap; + } + + @Override + public JSONArray loadComputerLabelPrinterSettingByClientComputerName(String clientComputerName) { + return loadComputerLabelPrinterSetting(null, clientComputerName); + } + +} Index: ssts-print/src/main/java/com/forgon/disinfectsystem/labeltemplate/action/LabelTemplateAction.java =================================================================== diff -u -r30159 -r35953 --- ssts-print/src/main/java/com/forgon/disinfectsystem/labeltemplate/action/LabelTemplateAction.java (.../LabelTemplateAction.java) (revision 30159) +++ ssts-print/src/main/java/com/forgon/disinfectsystem/labeltemplate/action/LabelTemplateAction.java (.../LabelTemplateAction.java) (revision 35953) @@ -176,6 +176,14 @@ StrutsResponseUtils.output(array); } + /** + * 获取包定义的“标签纸类型”列表,自定义的标签模板包含ID;器械包定义标签类型不含id + */ + public void getTousseBarcodePaperTypeStore(){ + JSONArray array = labelTemplateManager.getTousseBarcodePaperTypeStore(); + StrutsResponseUtils.output(array); + } + public void getAllIdCardLabelTemplate(){ JSONArray array = new JSONArray(); List nameList = labelTemplateManager.getAllIdCardLabelTemplate(); Index: ssts-web/src/main/webapp/WEB-INF/spring/applicationContext-disinfectsystem-service.xml =================================================================== diff -u -r35947 -r35953 --- ssts-web/src/main/webapp/WEB-INF/spring/applicationContext-disinfectsystem-service.xml (.../applicationContext-disinfectsystem-service.xml) (revision 35947) +++ ssts-web/src/main/webapp/WEB-INF/spring/applicationContext-disinfectsystem-service.xml (.../applicationContext-disinfectsystem-service.xml) (revision 35953) @@ -2901,6 +2901,17 @@ + + + + + + + + + Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/computerlabelprintersetting/LabelPrinterSetting.java =================================================================== diff -u --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/computerlabelprintersetting/LabelPrinterSetting.java (revision 0) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/computerlabelprintersetting/LabelPrinterSetting.java (revision 35953) @@ -0,0 +1,96 @@ +package com.forgon.disinfectsystem.entity.computerlabelprintersetting; + +import javax.persistence.Entity; +import javax.persistence.FetchType; +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.Cascade; +import org.hibernate.annotations.CascadeType; +import org.hibernate.annotations.DynamicInsert; +import org.hibernate.annotations.DynamicUpdate; + +/** + * 标签与打印机设置(GDSRMYY-552 新增打印标签输出打印机设置功能) + * + */ +@Entity +@DynamicInsert(false) +@DynamicUpdate(true) +@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) +public class LabelPrinterSetting { + + private Long id; + + /** + * 标签输出打印机设置 + */ + private ComputerLabelPrinterSetting computerLabelPrinterSetting; + + /** + * 自定义标签模板ID,如果非自定义标签模板,此字段为null + */ + private Long labelTemplateId; + + /** + * 系统定义的几种原标签类型,不含自定义标签,如果为自定义标签模板,此字段为null + */ + private String labelName; + + /** + * 打印机名称 + */ + private String printerName; + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + @ManyToOne(fetch = FetchType.LAZY) + @Cascade(value = { CascadeType.MERGE }) + @JoinColumn(name = "setting_id") + public ComputerLabelPrinterSetting getComputerLabelPrinterSetting() { + return computerLabelPrinterSetting; + } + + public void setComputerLabelPrinterSetting( + ComputerLabelPrinterSetting computerLabelPrinterSetting) { + this.computerLabelPrinterSetting = computerLabelPrinterSetting; + } + + public Long getLabelTemplateId() { + return labelTemplateId; + } + + public void setLabelTemplateId(Long labelTemplateId) { + this.labelTemplateId = labelTemplateId; + } + + public String getLabelName() { + return labelName; + } + + public void setLabelName(String labelName) { + this.labelName = labelName; + } + + public String getPrinterName() { + return printerName; + } + + public void setPrinterName(String printerName) { + this.printerName = printerName; + } + +} Index: ssts-print/src/main/java/com/forgon/disinfectsystem/computerlabelprintersetting/action/ComputerLabelPrinterSettingAction.java =================================================================== diff -u --- ssts-print/src/main/java/com/forgon/disinfectsystem/computerlabelprintersetting/action/ComputerLabelPrinterSettingAction.java (revision 0) +++ ssts-print/src/main/java/com/forgon/disinfectsystem/computerlabelprintersetting/action/ComputerLabelPrinterSettingAction.java (revision 35953) @@ -0,0 +1,148 @@ +package com.forgon.disinfectsystem.computerlabelprintersetting.action; + +import java.util.List; + +import net.sf.json.JSONArray; +import net.sf.json.JSONObject; + +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang.StringUtils; +import org.apache.struts2.convention.annotation.Action; +import org.apache.struts2.convention.annotation.Namespace; +import org.apache.struts2.convention.annotation.ParentPackage; + +import com.forgon.disinfectsystem.computerlabelprintersetting.service.ComputerLabelPrinterSettingManager; +import com.forgon.disinfectsystem.entity.computerlabelprintersetting.ComputerLabelPrinterSetting; +import com.forgon.disinfectsystem.vo.ComputerLabelPrinterSettingVo; +import com.forgon.entity.PageEntity; +import com.forgon.tools.StrutsParamUtils; +import com.forgon.tools.StrutsResponseUtils; +import com.forgon.tools.hibernate.ObjectDao; +import com.forgon.tools.json.JSONUtil; +import com.forgon.tools.util.PageUtil; +import com.opensymphony.xwork2.ModelDriven; +import com.opensymphony.xwork2.Preparable; + +/** + * GDSRMYY-552 新增打印标签输出打印机设置功能 + */ +@ParentPackage(value = "default") +@Namespace(value = "/disinfectSystem") +@Action(value = "computerLabelPrinterSettingAction") +public class ComputerLabelPrinterSettingAction implements ModelDriven, Preparable{ + + private ComputerLabelPrinterSetting computerLabelPrinterSetting; + + private ObjectDao objectDao; + + private ComputerLabelPrinterSettingManager computerLabelPrinterSettingManager; + + public void setComputerLabelPrinterSettingManager( + ComputerLabelPrinterSettingManager computerLabelPrinterSettingManager) { + this.computerLabelPrinterSettingManager = computerLabelPrinterSettingManager; + } + + public void setObjectDao(ObjectDao objectDao) { + this.objectDao = objectDao; + } + + /** + * 获取当前客户端电脑关联的“标签输出打印机设置” + */ + public void loadComputerLabelPrinterSettingByClientComputerName(){ + JSONObject result = JSONUtil.buildJsonObject(true); + try { + String clientComputerName = StrutsParamUtils.getPraramValue("clientComputerName", ""); + JSONArray data = computerLabelPrinterSettingManager.loadComputerLabelPrinterSettingByClientComputerName(clientComputerName); + result = JSONUtil.buildJsonObject(true, data); + } catch (Exception e) { + result = JSONUtil.buildJsonObject(false, "加载失败:" + e.getMessage()); + } + StrutsResponseUtils.output(result); + } + + /** + * 加载“打印标签输出打印机设置”列表 + */ + public void loadComputerLabelPrinterSettingList(){ + JSONObject result = JSONUtil.buildJsonObject(true); + try { + String clientComputerName = StrutsParamUtils.getPraramValue("clientComputerName", ""); + String labelName = StrutsParamUtils.getPraramValue("labelName", ""); + PageEntity pageEntity = PageUtil.getPagePara(); + List list = computerLabelPrinterSettingManager.loadComputerLabelPrinterSettingList(clientComputerName, labelName, pageEntity); + if(CollectionUtils.isNotEmpty(list)){ + JSONArray data = JSONArray.fromObject(list); + result = JSONUtil.buildJsonObject(true, data); + JSONUtil.addProperty(result, "totalCount", pageEntity.getCount()); + } + } catch (Exception e) { + result = JSONUtil.buildJsonObject(false, "加载失败:" + e.getMessage()); + } + StrutsResponseUtils.output(result); + } + + /** + * 根据ID加载“打印标签输出打印机设置” + */ + public void loadComputerLabelPrinterSettingByID(){ + JSONObject result = JSONUtil.buildJsonObject(true); + try { + String id = StrutsParamUtils.getPraramValue("id", ""); + JSONArray data = computerLabelPrinterSettingManager.loadComputerLabelPrinterSettingByID(id); + result = JSONUtil.buildJsonObject(true, data); + } catch (Exception e) { + result = JSONUtil.buildJsonObject(false, "加载失败:" + e.getMessage()); + } + StrutsResponseUtils.output(result); + } + + /** + * 保存“打印标签输出打印机设置” + */ + public void saveComputerLabelPrinterSetting(){ + JSONObject result = JSONUtil.buildJsonObject(true, "保存成功!"); + try { + String labelPrinterSettings = StrutsParamUtils.getPraramValue("labelPrinterSettings", "[{\"labelTemplateId\":2,\"printerName\":\"打印机01\",\"id\":1,\"labelName\":\"模板-外部代理灭菌小标签\"},{\"labelTemplateId\":0,\"printerName\":\"打印机04\",\"id\":2,\"labelName\":\"小标签\"}]"); + computerLabelPrinterSettingManager.saveComputerLabelPrinterSetting(computerLabelPrinterSetting, labelPrinterSettings); + } catch (Exception e) { + result = JSONUtil.buildJsonObject(false, "保存失败:" + e.getMessage()); + } + StrutsResponseUtils.output(result); + } + + /** + * 批量删除“打印标签输出打印机设置” + */ + public void batchDeleteComputerLabelPrinterSetting(){ + JSONObject result = JSONUtil.buildJsonObject(true, "删除成功!"); + try { + String ids = StrutsParamUtils.getPraramValue("ids", ""); + computerLabelPrinterSettingManager.batchDeleteComputerLabelPrinterSetting(ids); + } catch (Exception e) { + result = JSONUtil.buildJsonObject(false, "删除失败:" + e.getMessage()); + } + StrutsResponseUtils.output(result); + } + + @Override + public void prepare() throws Exception { + iniInfo(); + } + + private void iniInfo() { + String id = StrutsParamUtils.getPraramValue("id", ""); + if (StringUtils.isNotBlank(id) && !id.equals("0")) { + computerLabelPrinterSetting = (ComputerLabelPrinterSetting) objectDao.getById(ComputerLabelPrinterSetting.class.getSimpleName(), id); + } + if (computerLabelPrinterSetting == null) { + computerLabelPrinterSetting = new ComputerLabelPrinterSetting(); + } + } + + @Override + public ComputerLabelPrinterSetting getModel() { + return computerLabelPrinterSetting; + } + +} Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/computerlabelprintersetting/ComputerLabelPrinterSetting.java =================================================================== diff -u --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/computerlabelprintersetting/ComputerLabelPrinterSetting.java (revision 0) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/computerlabelprintersetting/ComputerLabelPrinterSetting.java (revision 35953) @@ -0,0 +1,86 @@ +package com.forgon.disinfectsystem.entity.computerlabelprintersetting; + +import java.util.ArrayList; +import java.util.List; + +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.OneToMany; + +import org.hibernate.annotations.Cache; +import org.hibernate.annotations.CacheConcurrencyStrategy; +import org.hibernate.annotations.Cascade; +import org.hibernate.annotations.CascadeType; +import org.hibernate.annotations.DynamicInsert; +import org.hibernate.annotations.DynamicUpdate; + +/** + * 标签输出打印机设置(GDSRMYY-552 新增打印标签输出打印机设置功能) + * + */ +@Entity +@DynamicInsert(false) +@DynamicUpdate(true) +@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) +public class ComputerLabelPrinterSetting { + + private Long id; + + /** + * 客户端电脑名称 + */ + private String clientComputerName; + + /** + * 备注 + */ + private String remark; + + /** + * 标签及打印机设置 + */ + private List labelPrinterSettings = new ArrayList(); + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getClientComputerName() { + return clientComputerName; + } + + public void setClientComputerName(String clientComputerName) { + this.clientComputerName = clientComputerName; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + @OneToMany(fetch = FetchType.LAZY) + @Cascade(value = { CascadeType.ALL }) + @JoinColumn(name = "setting_id") + public List getLabelPrinterSettings() { + return labelPrinterSettings; + } + + public void setLabelPrinterSettings( + List labelPrinterSettings) { + this.labelPrinterSettings = labelPrinterSettings; + } + +} Index: ssts-print/src/main/java/com/forgon/disinfectsystem/labeltemplate/service/LabelTemplateManager.java =================================================================== diff -u -r26279 -r35953 --- ssts-print/src/main/java/com/forgon/disinfectsystem/labeltemplate/service/LabelTemplateManager.java (.../LabelTemplateManager.java) (revision 26279) +++ ssts-print/src/main/java/com/forgon/disinfectsystem/labeltemplate/service/LabelTemplateManager.java (.../LabelTemplateManager.java) (revision 35953) @@ -2,6 +2,8 @@ import java.util.List; +import net.sf.json.JSONArray; + import com.forgon.disinfectsystem.entity.labeltemplate.LabelTemplate; /** * 标签打印模板的Manager类 @@ -38,4 +40,9 @@ * @param id */ public void checkLabelTemplateIsUsed(String id); + /** + * 获取包定义的“标签纸类型”列表,自定义的标签模板包含ID;器械包定义标签类型不含id + * @return + */ + public JSONArray getTousseBarcodePaperTypeStore(); } Index: ssts-print/src/main/java/com/forgon/disinfectsystem/computerlabelprintersetting/service/ComputerLabelPrinterSettingManager.java =================================================================== diff -u --- ssts-print/src/main/java/com/forgon/disinfectsystem/computerlabelprintersetting/service/ComputerLabelPrinterSettingManager.java (revision 0) +++ ssts-print/src/main/java/com/forgon/disinfectsystem/computerlabelprintersetting/service/ComputerLabelPrinterSettingManager.java (revision 35953) @@ -0,0 +1,49 @@ +package com.forgon.disinfectsystem.computerlabelprintersetting.service; + +import java.util.List; + +import com.forgon.disinfectsystem.entity.computerlabelprintersetting.ComputerLabelPrinterSetting; +import com.forgon.disinfectsystem.vo.ComputerLabelPrinterSettingVo; +import com.forgon.entity.PageEntity; +import com.forgon.tools.hibernate.BasePoManager; + +import net.sf.json.JSONArray; + +public interface ComputerLabelPrinterSettingManager extends BasePoManager { + + /** + * 根据ID加载“打印标签输出打印机设置” + */ + public JSONArray loadComputerLabelPrinterSettingByID(String id); + + /** + * 保存“打印标签输出打印机设置” + * @param computerLabelPrinterSetting + * @param labelPrinterSettings 标签及打印机设置,例如:[{"labelTemplateId":2,"printerName":"打印机01","id":1,"labelName":"模板-外部代理灭菌小标签"},{"labelTemplateId":3,"printerName":"打印机02","id":2,"labelName":"模板-普通中标签"},{"labelTemplateId":4,"printerName":"打印机03","id":3,"labelName":"模板-外来器械中标签"},{"labelTemplateId":0,"printerName":"打印机04","id":4,"labelName":"小标签"},{"labelTemplateId":0,"printerName":"打印机05","id":5,"labelName":"中标签"},{"labelTemplateId":0,"printerName":"打印机06","id":6,"labelName":"大标签"}] + */ + public void saveComputerLabelPrinterSetting(ComputerLabelPrinterSetting computerLabelPrinterSetting, + String labelPrinterSettings); + + /** + * 批量删除“打印标签输出打印机设置” + * @param ids 设置ID,例如:1;2;3 + */ + public void batchDeleteComputerLabelPrinterSetting(String ids); + + /** + * 加载“打印标签输出打印机设置”列表 + * @param clientComputerName 客户端电脑名称 + * @param labelName 标签名称 + * @param pageEntity 分页参数 + * @return + */ + public List loadComputerLabelPrinterSettingList(String clientComputerName, String labelName, PageEntity pageEntity); + + /** + * 根据客户端电脑名称查询“打印标签输出打印机设置” + * @param clientComputerName + * @return + */ + public JSONArray loadComputerLabelPrinterSettingByClientComputerName(String clientComputerName); + +} Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/vo/ComputerLabelPrinterSettingVo.java =================================================================== diff -u --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/vo/ComputerLabelPrinterSettingVo.java (revision 0) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/vo/ComputerLabelPrinterSettingVo.java (revision 35953) @@ -0,0 +1,75 @@ +package com.forgon.disinfectsystem.vo; + +import java.util.ArrayList; +import java.util.List; + +/** + * 标签输出打印机设置(GDSRMYY-552 新增打印标签输出打印机设置功能) + * + */ +public class ComputerLabelPrinterSettingVo { + + private Long id; + + /** + * 客户端电脑名称 + */ + private String clientComputerName; + + /** + * 备注 + */ + private String remark; + + /** + * 所有标签模板名称 + */ + private String labelNames; + + /** + * 标签及打印机设置 + */ + private List labelPrinterSettings = new ArrayList(); + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getClientComputerName() { + return clientComputerName; + } + + public void setClientComputerName(String clientComputerName) { + this.clientComputerName = clientComputerName; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getLabelNames() { + return labelNames; + } + + public void setLabelNames(String labelNames) { + this.labelNames = labelNames; + } + + public List getLabelPrinterSettings() { + return labelPrinterSettings; + } + + public void setLabelPrinterSettings( + List labelPrinterSettings) { + this.labelPrinterSettings = labelPrinterSettings; + } + +} Index: ssts-print/src/main/java/com/forgon/disinfectsystem/labeltemplate/service/LabelTemplateManagerImpl.java =================================================================== diff -u -r30159 -r35953 --- ssts-print/src/main/java/com/forgon/disinfectsystem/labeltemplate/service/LabelTemplateManagerImpl.java (.../LabelTemplateManagerImpl.java) (revision 30159) +++ ssts-print/src/main/java/com/forgon/disinfectsystem/labeltemplate/service/LabelTemplateManagerImpl.java (.../LabelTemplateManagerImpl.java) (revision 35953) @@ -188,15 +188,29 @@ * 获取所有的标签模板 */ public List getAllTousseLabelName(){ - Set names = new HashSet(); - names.add(LabelTemplate.OBJECTDATASOURCE_TOUSSE); - names.add(LabelTemplate.OBJECTDATASOURCE_FOREIGNTOUSSE); - names.add(LabelTemplate.OBJECTDATASOURCE_FOREIGNPROXYDISINFECTIONTOUSSE); - List nameList = getTemplateFullNamesByDataSourceSet(names); + //包定义“标签纸类型”自定义标签模板的dataSourceName集合 + Set dataSourceSet = getAllTousseLabelDataSourceSet(); + //获取自定义标签模板 + List nameList = getTemplateFullNamesByDataSourceSet(dataSourceSet); if(nameList == null){ nameList = new ArrayList(); } //器械包定义标签类型(及器械包定义的标识牌标签类型、外来器械包定义标签类型、科室供应室配置的外来器械标签类型)限制可以使用的标签类型(只针对系统定义的几种原标签类型,不含自定义标签) + List tousseBarcodeTypeList = getTousseBarcodeTypes(); + if(CollectionUtils.isNotEmpty(tousseBarcodeTypeList)){ + nameList.addAll(tousseBarcodeTypeList); + } + + return nameList; + } + + /** + * 器械包定义标签类型(及器械包定义的标识牌标签类型、外来器械包定义标签类型、科室供应室配置的外来器械标签类型)限制可以使用的标签类型(只针对系统定义的几种原标签类型,不含自定义标签) + * @return + */ + private List getTousseBarcodeTypes() { + List nameList = new ArrayList(); + //器械包定义标签类型(及器械包定义的标识牌标签类型、外来器械包定义标签类型、科室供应室配置的外来器械标签类型)限制可以使用的标签类型(只针对系统定义的几种原标签类型,不含自定义标签) String canUseBarcodeTypes = CssdUtils.getSystemSetConfigByName("canUseBarcodeTypes"); if(StringUtils.isNotBlank(canUseBarcodeTypes)){ JSONArray jsonArray = null; @@ -231,6 +245,18 @@ return nameList; } + + /** + * 包定义“标签纸类型”自定义标签模板的dataSourceName集合 + * @return + */ + private Set getAllTousseLabelDataSourceSet() { + Set names = new HashSet(); + names.add(LabelTemplate.OBJECTDATASOURCE_TOUSSE); + names.add(LabelTemplate.OBJECTDATASOURCE_FOREIGNTOUSSE); + names.add(LabelTemplate.OBJECTDATASOURCE_FOREIGNPROXYDISINFECTIONTOUSSE); + return names; + } /** * 获取所有的标签模板 @@ -349,5 +375,35 @@ throw new RuntimeException("标签模板【"+ labelTemplate.getName() +"】已被使用,"); } } + + @SuppressWarnings("unchecked") + @Override + public JSONArray getTousseBarcodePaperTypeStore() { + JSONArray array = new JSONArray(); + //自定义标签模板 + Set allTousseLabelDataSourceSet = this.getAllTousseLabelDataSourceSet(); + String sql = String.format("select po from %s po where %s ", LabelTemplate.class.getSimpleName(),SqlUtils.getStringFieldInLargeCollectionsPredicate("po.dataSourceName", allTousseLabelDataSourceSet)); + List list = objectDao.findByHql(sql); + if(CollectionUtils.isNotEmpty(list)){ + for (LabelTemplate labelTemplate : list) { + JSONObject obj = new JSONObject(); + obj.put("id", labelTemplate.getId()); + obj.put("name", labelTemplate.getFullName()); + array.add(obj); + } + } + + //器械包定义标签类型(及器械包定义的标识牌标签类型、外来器械包定义标签类型、科室供应室配置的外来器械标签类型)限制可以使用的标签类型(只针对系统定义的几种原标签类型,不含自定义标签) + List tousseBarcodeTypes = this.getTousseBarcodeTypes(); + if(CollectionUtils.isNotEmpty(tousseBarcodeTypes)){ + for (String tousseBarcodeType : tousseBarcodeTypes) { + JSONObject obj = new JSONObject(); + obj.put("id", ""); + obj.put("name", tousseBarcodeType); + array.add(obj); + } + } + return array; + } }