Index: ssts-web/src/main/webapp/WEB-INF/spring/applicationContext-disinfectsystem-service.xml =================================================================== diff -u -r29658 -r29847 --- ssts-web/src/main/webapp/WEB-INF/spring/applicationContext-disinfectsystem-service.xml (.../applicationContext-disinfectsystem-service.xml) (revision 29658) +++ ssts-web/src/main/webapp/WEB-INF/spring/applicationContext-disinfectsystem-service.xml (.../applicationContext-disinfectsystem-service.xml) (revision 29847) @@ -956,7 +956,16 @@ class="com.forgon.disinfectsystem.idcardinstance.service.IDCardInstanceManagerImpl"> + + + + + + + + - 0 0/5 * * * ? + 0 0/2 * * * ? Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/idcardinfomaintain/IDCardRemarkMaintain.java =================================================================== diff -u --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/idcardinfomaintain/IDCardRemarkMaintain.java (revision 0) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/idcardinfomaintain/IDCardRemarkMaintain.java (revision 29847) @@ -0,0 +1,47 @@ +package com.forgon.disinfectsystem.entity.idcardinfomaintain; + +import javax.persistence.Entity; + +import org.hibernate.annotations.Cache; +import org.hibernate.annotations.CacheConcurrencyStrategy; +import org.hibernate.annotations.DynamicInsert; +import org.hibernate.annotations.DynamicUpdate; + +/** + * 标识牌备注 + * @author zhouPeiMian + * @since 2020-12-08 + */ +@Entity +@DynamicInsert(false) +@DynamicUpdate(true) +@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) +public class IDCardRemarkMaintain extends IDCardInfoMaintain { + + /** + * 序号 + */ + private Long serialNumber; + + /** + * 备注内容(不超100字) + */ + private String remark; + + public Long getSerialNumber() { + return serialNumber; + } + + public void setSerialNumber(Long serialNumber) { + this.serialNumber = serialNumber; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + +} Index: ssts-idcard/src/main/java/com/forgon/disinfectsystem/idcardinstance/action/IDCardInfoMaintainAction.java =================================================================== diff -u --- ssts-idcard/src/main/java/com/forgon/disinfectsystem/idcardinstance/action/IDCardInfoMaintainAction.java (revision 0) +++ ssts-idcard/src/main/java/com/forgon/disinfectsystem/idcardinstance/action/IDCardInfoMaintainAction.java (revision 29847) @@ -0,0 +1,162 @@ +package com.forgon.disinfectsystem.idcardinstance.action; + +import net.sf.json.JSONArray; +import net.sf.json.JSONObject; + +import org.apache.struts2.convention.annotation.Action; +import org.apache.struts2.convention.annotation.Namespace; +import org.apache.struts2.convention.annotation.ParentPackage; + +import com.forgon.directory.model.BarcodeDevice; +import com.forgon.disinfectsystem.barcode.service.BarcodeManager; +import com.forgon.disinfectsystem.entity.idcardinfomaintain.IDCardInfoMaintain; +import com.forgon.disinfectsystem.entity.idcardinfomaintain.IDCardQuestionMaintain; +import com.forgon.disinfectsystem.entity.idcardinfomaintain.IDCardRemarkMaintain; +import com.forgon.disinfectsystem.idcardinstance.service.IDCardInfoMaintainManager; +import com.forgon.security.model.User; +import com.forgon.tools.StrutsParamUtils; +import com.forgon.tools.StrutsResponseUtils; +import com.forgon.tools.date.DateTools; +import com.forgon.tools.db.DatabaseUtil; +import com.opensymphony.xwork2.ModelDriven; +import com.opensymphony.xwork2.Preparable; + +@ParentPackage(value = "default") +@Namespace(value = "/disinfectSystem") +@Action(value = "idCardInfoMaintainAction") +public class IDCardInfoMaintainAction implements ModelDriven, Preparable { + + private IDCardInfoMaintain iDCardInfoMaintain; + + private IDCardInfoMaintainManager iDCardInfoMaintainManager; + + private BarcodeManager barcodeManager; + + public void setBarcodeManager(BarcodeManager barcodeManager) { + this.barcodeManager = barcodeManager; + } + + public void setiDCardInfoMaintainManager(IDCardInfoMaintainManager iDCardInfoMaintainManager) { + this.iDCardInfoMaintainManager = iDCardInfoMaintainManager; + } + + /** + * 根据标识牌定义ID获取标识牌信息 + */ + public void getIDCardInfoMaintainListByIDCardDefinitionId(){ + String iDCardDefinitionId = StrutsParamUtils.getPraramValue("idCardDefinitionId", ""); + String type = StrutsParamUtils.getPraramValue("type", ""); + String status = StrutsParamUtils.getPraramValue("status", ""); + try { + JSONArray iDCardInfoMaintainArr = iDCardInfoMaintainManager.getIDCardInfoMaintainListByIDCardDefinitionId(iDCardDefinitionId, type, status); + StrutsResponseUtils.output(true, iDCardInfoMaintainArr); + } catch (Exception e) { + StrutsResponseUtils.output(true, e.getMessage()); + e.printStackTrace(); + } + } + + /** + * 批量处理标识牌信息(启用/停用标识牌问题、标识牌备注) + */ + public void dealIDCardInfoMaintain(){ + String status = StrutsParamUtils.getPraramValue("status", ""); + String infoIds = StrutsParamUtils.getPraramValue("infoIds", ""); + try { + iDCardInfoMaintainManager.dealIDCardInfoMaintain(infoIds, status); + StrutsResponseUtils.output(true, status + "成功!"); + } catch (Exception e) { + StrutsResponseUtils.output(false, e.getMessage()); + e.printStackTrace(); + } + } + + /** + * 批量删除标识牌信息(标识牌问题、标识牌备注) + */ + public void deleteIDCardInfoMaintain(){ + String infoIds = StrutsParamUtils.getPraramValue("infoIds", ""); + try { + iDCardInfoMaintainManager.deleteIDCardInfoMaintain(infoIds); + StrutsResponseUtils.output(true, "删除成功!"); + } catch (Exception e) { + StrutsResponseUtils.output(false, e.getMessage()); + e.printStackTrace(); + } + } + + /** + * 保存标识牌信息(标识牌问题、标识牌备注) + */ + public void saveOrUpdateIDCardInfoMaintain(){ + String serialNumber = StrutsParamUtils.getPraramValue("serialNumber", ""); + String type = StrutsParamUtils.getPraramValue("type", ""); + String text = StrutsParamUtils.getPraramValue("text", ""); + try { + iDCardInfoMaintainManager.saveOrUpdateIDCardInfoMaintain(iDCardInfoMaintain, serialNumber, type, text); + } catch (Exception e) { + StrutsResponseUtils.output(false, e.getMessage()); + e.printStackTrace(); + } + StrutsResponseUtils.output(true, "保存成功!"); + } + + /** + * 加载标识牌问题或者备注信息 + */ + public void loadIDCardInfoMaintain(){ + if(!DatabaseUtil.isPoIdValid(iDCardInfoMaintain.getId())){ + StrutsResponseUtils.output(false, "记录不存在!"); + }else{ + JSONObject json = new JSONObject(); + json.put("registTime", DateTools.getFormatDateStr(iDCardInfoMaintain.getRegistTime(), DateTools.COMMON_DATE_HMS)); + json.put("registUser", iDCardInfoMaintain.getRegistUser()); + json.put("discoverUser", iDCardInfoMaintain.getDiscoverUser()); + if(iDCardInfoMaintain instanceof IDCardQuestionMaintain){ + IDCardQuestionMaintain IDCardQuestionMaintain = (IDCardQuestionMaintain)iDCardInfoMaintain; + json.put("serialNumber", IDCardQuestionMaintain.getSerialNumber()); + json.put("text", IDCardQuestionMaintain.getQuestion()); + }else if(iDCardInfoMaintain instanceof IDCardRemarkMaintain){ + IDCardRemarkMaintain IDCardRemarkMaintain = (IDCardRemarkMaintain)iDCardInfoMaintain; + json.put("serialNumber", IDCardRemarkMaintain.getSerialNumber()); + json.put("text", IDCardRemarkMaintain.getRemark()); + } + StrutsResponseUtils.output(true, json); + } + } + + /** + * 根据条码加载用户信息 + */ + public void loadUserInfoByBarcode(){ + String barcode = StrutsParamUtils.getPraramValue("barcode", ""); + BarcodeDevice barcodeDevice = barcodeManager.getBarcodeByBarcode(barcode); + if(barcodeDevice != null && barcodeDevice instanceof User){ + User user = (User) barcodeDevice; + JSONObject json = new JSONObject(); + json.put("id", user.getId()); + json.put("name", user.getName()); + json.put("fullName", user.getFullName()); + StrutsResponseUtils.output(true, json); + }else{ + StrutsResponseUtils.output(false, "请输入用户条码!"); + } + } + + @Override + public void prepare() throws Exception { + String id = StrutsParamUtils.getPraramValue("id", ""); + if(DatabaseUtil.isPoIdValid(id)){ + iDCardInfoMaintain = iDCardInfoMaintainManager.get(id); + } + } + + @Override + public IDCardInfoMaintain getModel() { + if(iDCardInfoMaintain == null){ + iDCardInfoMaintain = new IDCardInfoMaintain(); + } + return iDCardInfoMaintain; + } + +} Index: ssts-idcard/src/main/java/com/forgon/disinfectsystem/idcardinstance/service/IDCardInfoMaintainManagerImpl.java =================================================================== diff -u --- ssts-idcard/src/main/java/com/forgon/disinfectsystem/idcardinstance/service/IDCardInfoMaintainManagerImpl.java (revision 0) +++ ssts-idcard/src/main/java/com/forgon/disinfectsystem/idcardinstance/service/IDCardInfoMaintainManagerImpl.java (revision 29847) @@ -0,0 +1,138 @@ +package com.forgon.disinfectsystem.idcardinstance.service; + +import java.util.Date; +import java.util.List; + +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang.StringUtils; + +import net.sf.json.JSONArray; +import net.sf.json.JSONObject; + +import com.forgon.disinfectsystem.entity.idcardinfomaintain.IDCardInfoMaintain; +import com.forgon.disinfectsystem.entity.idcardinfomaintain.IDCardQuestionMaintain; +import com.forgon.disinfectsystem.entity.idcardinfomaintain.IDCardRemarkMaintain; +import com.forgon.exception.SystemException; +import com.forgon.tools.date.DateTools; +import com.forgon.tools.db.DatabaseUtil; +import com.forgon.tools.hibernate.BasePoManagerImpl; + +public class IDCardInfoMaintainManagerImpl extends BasePoManagerImpl implements IDCardInfoMaintainManager { + + @Override + public JSONArray getIDCardInfoMaintainListByIDCardDefinitionId(String iDCardDefinitionId, String type, String status) { + String typeSql = ""; + if(StringUtils.equals(type, IDCardQuestionMaintain.class.getSimpleName())){ + typeSql = IDCardQuestionMaintain.class.getSimpleName(); + }else if(StringUtils.equals(type, IDCardRemarkMaintain.class.getSimpleName())){ + typeSql = IDCardRemarkMaintain.class.getSimpleName(); + }else{ + typeSql = IDCardInfoMaintain.class.getSimpleName(); + } + String statusSql = ""; + if(StringUtils.isNotBlank(status)){ + statusSql = " and po.status = '" + status + "' "; + } + JSONArray jsonArr = new JSONArray(); + String hql = String.format("select po from %s po where po.idCardDefinitionId = %s %s order by po.serialNumber, po.registTime ", + typeSql, iDCardDefinitionId, statusSql); + List list = objectDao.findByHql(hql); + if(CollectionUtils.isEmpty(list)){ + return jsonArr; + } + for (int i=0; i IDCardInfoMaintainList = this.getCollection(infoIds, ";"); + if(CollectionUtils.isEmpty(IDCardInfoMaintainList)){ + throw new SystemException("记录不存在!"); + } + for (IDCardInfoMaintain idCardInfoMaintain : IDCardInfoMaintainList) { + idCardInfoMaintain.setStatus(status); + } + objectDao.batchSaveOrUpdate(IDCardInfoMaintainList); + } + + @Override + public void deleteIDCardInfoMaintain(String infoIds) { + if(StringUtils.isBlank(infoIds)){ + throw new SystemException("id不能为空!"); + } + List IDCardInfoMaintainList = this.getCollection(infoIds, ";"); + if(CollectionUtils.isEmpty(IDCardInfoMaintainList)){ + throw new SystemException("记录不存在!"); + } + objectDao.deleteAll(IDCardInfoMaintainList); + } + + @Override + public void saveOrUpdateIDCardInfoMaintain(IDCardInfoMaintain iDCardInfoMaintain, String serialNumber, String type, String text) { + if(iDCardInfoMaintain == null || !DatabaseUtil.isPoIdValid(serialNumber) + || StringUtils.isBlank(type) || StringUtils.isBlank(text)){ + throw new SystemException("参数错误,保存失败!"); + } + if(StringUtils.equals(type, IDCardQuestionMaintain.class.getSimpleName())){ + IDCardQuestionMaintain IDCardQuestionMaintain = new IDCardQuestionMaintain(); + Date registTime = new Date(); + if(DatabaseUtil.isPoIdValid(iDCardInfoMaintain.getId())){ + IDCardQuestionMaintain = (IDCardQuestionMaintain)iDCardInfoMaintain; + registTime = IDCardQuestionMaintain.getRegistTime(); + } + IDCardQuestionMaintain.setDiscoverUser(iDCardInfoMaintain.getDiscoverUser()); + IDCardQuestionMaintain.setRegistUser(iDCardInfoMaintain.getRegistUser()); + IDCardQuestionMaintain.setRegistTime(registTime); + IDCardQuestionMaintain.setIdCardDefinitionId(iDCardInfoMaintain.getIdCardDefinitionId()); + IDCardQuestionMaintain.setQuestion(text); + IDCardQuestionMaintain.setSerialNumber(Long.parseLong(serialNumber)); + IDCardQuestionMaintain.setStatus(iDCardInfoMaintain.getStatus()); + objectDao.saveOrUpdate(IDCardQuestionMaintain); + }else if(StringUtils.equals(type, IDCardRemarkMaintain.class.getSimpleName())){ + IDCardRemarkMaintain IDCardRemarkMaintain = new IDCardRemarkMaintain(); + Date registTime = new Date(); + if(DatabaseUtil.isPoIdValid(iDCardInfoMaintain.getId())){ + IDCardRemarkMaintain = (IDCardRemarkMaintain)iDCardInfoMaintain; + registTime = IDCardRemarkMaintain.getRegistTime(); + } + IDCardRemarkMaintain.setDiscoverUser(iDCardInfoMaintain.getDiscoverUser()); + IDCardRemarkMaintain.setIdCardDefinitionId(iDCardInfoMaintain.getIdCardDefinitionId()); + IDCardRemarkMaintain.setRegistTime(registTime); + IDCardRemarkMaintain.setRegistUser(iDCardInfoMaintain.getRegistUser()); + IDCardRemarkMaintain.setRemark(text); + IDCardRemarkMaintain.setSerialNumber(Long.parseLong(serialNumber)); + IDCardRemarkMaintain.setStatus(iDCardInfoMaintain.getStatus()); + objectDao.saveOrUpdate(IDCardRemarkMaintain); + }else{ + throw new SystemException("参数错误,保存失败!"); + } + } + +} Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/idcardinfomaintain/IDCardQuestionMaintain.java =================================================================== diff -u --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/idcardinfomaintain/IDCardQuestionMaintain.java (revision 0) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/idcardinfomaintain/IDCardQuestionMaintain.java (revision 29847) @@ -0,0 +1,47 @@ +package com.forgon.disinfectsystem.entity.idcardinfomaintain; + +import javax.persistence.Entity; + +import org.hibernate.annotations.Cache; +import org.hibernate.annotations.CacheConcurrencyStrategy; +import org.hibernate.annotations.DynamicInsert; +import org.hibernate.annotations.DynamicUpdate; + +/** + * 标识牌问题 + * @author zhouPeiMian + * @since 2020-12-08 + */ +@Entity +@DynamicInsert(false) +@DynamicUpdate(true) +@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) +public class IDCardQuestionMaintain extends IDCardInfoMaintain { + + /** + * 序号 + */ + private Long serialNumber; + + /** + * 问题描述(不超100字) + */ + private String question; + + public Long getSerialNumber() { + return serialNumber; + } + + public void setSerialNumber(Long serialNumber) { + this.serialNumber = serialNumber; + } + + public String getQuestion() { + return question; + } + + public void setQuestion(String question) { + this.question = question; + } + +} Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/idcardinfomaintain/IDCardInfoMaintain.java =================================================================== diff -u --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/idcardinfomaintain/IDCardInfoMaintain.java (revision 0) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/idcardinfomaintain/IDCardInfoMaintain.java (revision 29847) @@ -0,0 +1,133 @@ +package com.forgon.disinfectsystem.entity.idcardinfomaintain; + +import java.util.Date; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Transient; + +import org.hibernate.annotations.Cache; +import org.hibernate.annotations.CacheConcurrencyStrategy; +import org.hibernate.annotations.DynamicInsert; +import org.hibernate.annotations.DynamicUpdate; + +import com.forgon.disinfectsystem.entity.idcardinstance.IDCardInstance; +import com.forgon.tools.db.DatabaseUtil; +import com.forgon.tools.hibernate.ObjectDao; + +/** + * 标识牌信息:标识牌问题、标识牌备注(ZSRY-5) + * @author zhouPeiMian + * @since 2020-12-08 + */ +@Entity +@DynamicInsert(false) +@DynamicUpdate(true) +@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) +public class IDCardInfoMaintain { + + /** + * ID + */ + private Long id; + + /** + * 标识牌定义ID + */ + private Long idCardDefinitionId; + + /** + * 登记时间 + */ + private Date registTime; + + /** + * 登记人 + */ + private String registUser; + + /** + * 发现人 + */ + private String discoverUser; + + /** + * 状态:启用、停用 + */ + private String status = STATUS_ENABLE; + + /** + * 启用状态(添加记录后,还没有点处理的问题或备注就是启用状态) + */ + public static final String STATUS_ENABLE = "启用"; + /** + * 停用状态(页面已经点处理的问题或备注就是停用状态) + */ + public static final String STATUS_DISENABLE = "停用"; + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getIdCardDefinitionId() { + return idCardDefinitionId; + } + + public void setIdCardDefinitionId(Long idCardDefinitionId) { + this.idCardDefinitionId = idCardDefinitionId; + } + + public Date getRegistTime() { + return registTime; + } + + public void setRegistTime(Date registTime) { + this.registTime = registTime; + } + + public String getRegistUser() { + return registUser; + } + + public void setRegistUser(String registUser) { + this.registUser = registUser; + } + + public String getDiscoverUser() { + return discoverUser; + } + + public void setDiscoverUser(String discoverUser) { + this.discoverUser = discoverUser; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + /** + * 查询标识牌信息关联的标识牌实例 + * @param objectDao + * @return + */ + @Transient + public IDCardInstance getIDCardInstance(ObjectDao objectDao){ + if(!DatabaseUtil.isPoIdValid(this.idCardDefinitionId)){ + return null; + } + return (IDCardInstance) objectDao.getById(IDCardInstance.class.getSimpleName(), idCardDefinitionId); + } + +} Index: ssts-idcard/src/main/java/com/forgon/disinfectsystem/idcardinstance/service/IDCardInfoMaintainManager.java =================================================================== diff -u --- ssts-idcard/src/main/java/com/forgon/disinfectsystem/idcardinstance/service/IDCardInfoMaintainManager.java (revision 0) +++ ssts-idcard/src/main/java/com/forgon/disinfectsystem/idcardinstance/service/IDCardInfoMaintainManager.java (revision 29847) @@ -0,0 +1,41 @@ +package com.forgon.disinfectsystem.idcardinstance.service; + +import net.sf.json.JSONArray; + +import com.forgon.disinfectsystem.entity.idcardinfomaintain.IDCardInfoMaintain; +import com.forgon.tools.hibernate.BasePoManager; + +public interface IDCardInfoMaintainManager extends BasePoManager{ + + /** + * 根据标识牌定义ID获取标识牌问题或者标识牌备注 + * @param iDCardDefinitionId 标识牌定义ID + * @param status 状态:启用、停用 + * @param type 类型:IDCardQuestionMaintain、IDCardRemarkMaintain + * @return + */ + public JSONArray getIDCardInfoMaintainListByIDCardDefinitionId(String iDCardDefinitionId, String type, String status); + + /** + * 批量处理标识牌信息 + * @param infoIds 标识牌信息id,多个id用";"分割 + * @param status 状态(启用/停用) + */ + public void dealIDCardInfoMaintain(String infoIds, String status); + + /** + * 批量删除标识牌信息 + * @param infoIds 标识牌信息id,多个id用";"分割 + */ + public void deleteIDCardInfoMaintain(String infoIds); + + /** + * 保存标识牌问题、备注信息 + * @param iDCardInfoMaintain 标识牌基本信息 + * @param serialNumber 序号 + * @param type 类型:IDCardQuestionMaintain、IDCardRemarkMaintain + * @param text 标识牌问题或者标识牌备注内容 + */ + public void saveOrUpdateIDCardInfoMaintain(IDCardInfoMaintain iDCardInfoMaintain, String serialNumber, String question, String remark); + +}