Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java =================================================================== diff -u -r18204 -r18212 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java (.../TousseInstanceManagerImpl.java) (revision 18204) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java (.../TousseInstanceManagerImpl.java) (revision 18212) @@ -8,24 +8,26 @@ import java.sql.SQLException; import java.text.SimpleDateFormat; import java.util.ArrayList; -import java.util.Arrays; import java.util.Calendar; import java.util.Collection; import java.util.Date; import java.util.HashMap; import java.util.HashSet; -import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Set; -import java.util.stream.Collectors; +import jxl.Workbook; +import jxl.write.Label; +import jxl.write.WritableCellFormat; +import jxl.write.WritableFont; +import jxl.write.WritableSheet; +import jxl.write.WritableWorkbook; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.collections4.ListUtils; import org.apache.commons.collections4.Predicate; import org.apache.commons.lang3.StringUtils; import org.apache.log4j.Logger; @@ -42,8 +44,6 @@ import com.forgon.databaseadapter.service.DateQueryAdapter; import com.forgon.directory.acegi.tools.AcegiHelper; import com.forgon.directory.model.BarcodeDevice; -import com.forgon.directory.model.OrgUnit; -import com.forgon.directory.vo.LoginUserData; import com.forgon.disinfectsystem.barcode.service.BarcodeManager; import com.forgon.disinfectsystem.basedata.becleanitem.service.BeCleanItemManager; import com.forgon.disinfectsystem.basedatamanager.container.service.ReviewedBasketManager; @@ -60,10 +60,9 @@ import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoodsBatchStock; import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoodsIdentification; import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoodsStock; -import com.forgon.disinfectsystem.entity.assestmanagement.ExpensiveDisposablegoods; import com.forgon.disinfectsystem.entity.basedatamanager.container.Container; -import com.forgon.disinfectsystem.entity.basedatamanager.materialdefinition.MaterialDefinition; -import com.forgon.disinfectsystem.entity.basedatamanager.sterilizer.Sterilizer; +import com.forgon.disinfectsystem.entity.basedatamanager.operationRoom.OperationRoom; +import com.forgon.disinfectsystem.entity.basedatamanager.position.TousseOperation; import com.forgon.disinfectsystem.entity.basedatamanager.supplyroomconfig.SupplyRoomConfig; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; @@ -72,16 +71,14 @@ import com.forgon.disinfectsystem.entity.becleanitem.ClassifyBasket; import com.forgon.disinfectsystem.entity.customform.formdefinition.FormDefinition; import com.forgon.disinfectsystem.entity.goodsstock.GoodsStock; -import com.forgon.disinfectsystem.entity.invoicemanager.DiposableGoodsItem; -import com.forgon.disinfectsystem.entity.invoicemanager.InvoiceItem; +import com.forgon.disinfectsystem.entity.invoicemanager.Invoice; import com.forgon.disinfectsystem.entity.invoicemanager.InvoicePlan; import com.forgon.disinfectsystem.entity.packing.ReviewedBasket; import com.forgon.disinfectsystem.entity.receiverecord.ReceiveRecord; import com.forgon.disinfectsystem.entity.receiverecord.ReceiveRecordDiposableGoodsItem; import com.forgon.disinfectsystem.entity.receiverecord.ReceiveRecordItem; import com.forgon.disinfectsystem.entity.recyclingrecord.RecyclingRecord; import com.forgon.disinfectsystem.entity.sterilizationmanager.sterilizationrecord.SterilizationRecord; -import com.forgon.disinfectsystem.entity.stocktakemanager.InventoryRecord; import com.forgon.disinfectsystem.entity.systemwarning.SystemWarningItemVO; import com.forgon.disinfectsystem.entity.tousseitem.TousseItem; import com.forgon.disinfectsystem.entity.useRecord.UseRecord; @@ -106,20 +103,11 @@ import com.forgon.tools.excel.ExcelCellStyle; import com.forgon.tools.excel.ExcelHelper; import com.forgon.tools.hibernate.BasePoManagerImpl; -import com.forgon.tools.hibernate.ObjectDao; import com.forgon.tools.json.JSONUtil; import com.forgon.tools.string.StringTools; import com.forgon.tools.util.ForgonDateUtils; import com.forgon.tools.util.SqlUtils; -import jxl.Workbook; -import jxl.write.Label; -import jxl.write.WritableCellFormat; -import jxl.write.WritableFont; -import jxl.write.WritableSheet; -import jxl.write.WritableWorkbook; - - import edu.emory.mathcs.backport.java.util.Collections; /** @@ -2950,4 +2938,81 @@ } return map; } + + public void saveChangePosition(JSONObject params) { + String destType = JSONUtil.optString(params, "destType", null); + String operator = JSONUtil.optString(params, "operator", ""); + Long destId = JSONUtil.optLong(params, "destId", null); + + Set idSet = new HashSet(); + JSONArray items = params.optJSONArray("items"); + for (int i = 0; i < items.size(); ++i) { + JSONObject item = items.getJSONObject(i); + Long id = JSONUtil.optLong(item, "id", null); + if (id != null) { + idSet.add(id); + } + } + String depart2; + String departCoding2; + String location2; + Long wareHouseId2 = null; + Long operationRoomId = null; + if (StringUtils.isBlank(destType)) { + throw new RuntimeException("位置类型不能为空!"); + } + if (StringUtils + .equals(destType, TousseOperation.DESTTYPE_OPERATIONROOM)) { + OperationRoom operationRoom = (OperationRoom) objectDao + .getByProperty(OperationRoom.class.getSimpleName(), "id", + destId); + operationRoomId = operationRoom.getId(); + depart2 = operationRoom.getOrgUnitName(); + departCoding2 = operationRoom.getOrgUnitCoding(); + location2 = operationRoom.getOperationRoomName(); + } else { + WareHouse wareHouse = (WareHouse) objectDao.getByProperty( + WareHouse.class.getSimpleName(), "id", destId); + wareHouseId2 = wareHouse.getId(); + depart2 = wareHouse.getOrgUnitName(); + departCoding2 = wareHouse.getOrgUnitCode(); + location2 = wareHouse.getName(); + } + + String sql = String.format(" where %s ", SqlUtils + .getNonStringFieldInCollectionsPredicate("po.id", idSet)); + List list = getBySql_ForUpdate(sql); + if (CollectionUtils.isEmpty(list)) { + throw new RuntimeException("器械包不能为空!"); + } + + for (TousseInstance tousseInstance : list) { + String status2 = tousseInstance.getStatus2(); + if (StringUtils.equals(status2, TousseOperation.STATUS_SENDING)) { + throw new RuntimeException("运送中的包不能流转!"); + } + TousseOperation tousseOperation = new TousseOperation(); + tousseOperation.setOperation(TousseOperation.OPERATION_INVOICE); + tousseOperation.setOperationTime(new Date()); + tousseOperation.setOperator(operator); + tousseOperation.setDestDepart(depart2); + tousseOperation.setDestDepartCoding(departCoding2); + tousseOperation.setDestLocation(location2); + tousseOperation.setDestLocationType(destType); + tousseOperation.setDestOperationRoomId(operationRoomId); + tousseOperation.setDestWareHouseId(wareHouseId2); + tousseOperation.setTousseInstanceId(tousseInstance.getId()); + objectDao.saveOrUpdate(tousseOperation); + + tousseInstance.setStatus2(TousseOperation.STATUS_SENDING); + tousseInstance.setDepart2(depart2); + tousseInstance.setDepartCoding2(departCoding2); + tousseInstance.setLocation2(location2); + tousseInstance.setLocation2Type(destType); + tousseInstance.setWareHouseId2(wareHouseId2); + tousseInstance.setOperationRoomId(operationRoomId); + tousseInstance.setTousseOperationId(tousseOperation.getId()); + objectDao.saveOrUpdate(tousseInstance); + } + } } Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/position/TousseOperation.java =================================================================== diff -u --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/position/TousseOperation.java (revision 0) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/position/TousseOperation.java (revision 18212) @@ -0,0 +1,270 @@ +/** + * + */ +package com.forgon.disinfectsystem.entity.basedatamanager.position; + +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.apache.commons.lang.StringUtils; +import org.hibernate.annotations.Cache; +import org.hibernate.annotations.CacheConcurrencyStrategy; + +import com.forgon.Constants; + +/** + * @author jeffli 2017年5月23日 下午4:41:37 + * + */ +@Entity +@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) +public class TousseOperation { + public static final String DESTTYPE_WAREHOUSE = "仓库"; + public static final String DESTTYPE_OPERATIONROOM = "手术间"; + + public static final String STATUS_SENDING = "运送中"; + public static final String STATUS_SIGNED = "已签收"; + + public static final String OPERATION_SIGN = "签收"; + public static final String OPERATION_INVOICE = "发货"; + + + private Long id; + + /** + * 手术仪器管理科室名称 + */ + private String srcDepart; + + /** + * 手术仪器管理科室编码 + */ + private String srcDepartCoding; + /** + * 手术仪器管理位置,仓库或者手术间名称 + */ + private String srcLocation; + /** + * 手术仪器管理位置类型,仓库或者手术间 + */ + private String srcLocationType; + /** + * 手术仪器管理位置,仓库id + */ + private Long srcWareHouseId; + /** + * 手术仪器管理位置,手术间id + */ + private Long srcOperationRoomId; + + // + /** + * 手术仪器管理科室名称 + */ + private String destDepart; + + /** + * 手术仪器管理科室编码 + */ + private String destDepartCoding; + /** + * 手术仪器管理位置,仓库或者手术间名称 + */ + private String destLocation; + /** + * 手术仪器管理位置类型,仓库或者手术间 + */ + private String destLocationType; + /** + * 手术仪器管理位置,仓库id + */ + private Long destWareHouseId; + /** + * 手术仪器管理位置,手术间id + */ + private Long destOperationRoomId; + /** + * 器械包id + */ + private Long tousseInstanceId; + + + /** + * 操作,流转,签收 + */ + private String operation; + /** + * 操作人 + */ + private String operator; + /** + * 操作时间 + */ + private Date operationTime; + + /** + * 备注 + */ + private Date remark; + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + public Long getId() { + return id; + } + + public String getSrcDepart() { + return srcDepart; + } + + public String getSrcDepartCoding() { + return srcDepartCoding; + } + + public String getSrcLocation() { + return srcLocation; + } + + public String getSrcLocationType() { + return srcLocationType; + } + + public Long getSrcWareHouseId() { + return srcWareHouseId; + } + + public Long getSrcOperationRoomId() { + return srcOperationRoomId; + } + + public String getDestDepart() { + return destDepart; + } + + public String getDestDepartCoding() { + return destDepartCoding; + } + + public String getDestLocation() { + return destLocation; + } + + public String getDestLocationType() { + return destLocationType; + } + + public Long getDestWareHouseId() { + return destWareHouseId; + } + + public Long getDestOperationRoomId() { + return destOperationRoomId; + } + + public Long getTousseInstanceId() { + return tousseInstanceId; + } + + public void setTousseInstanceId(Long tousseInstanceId) { + this.tousseInstanceId = tousseInstanceId; + } + + public String getOperation() { + return operation; + } + + public void setOperation(String operation) { + this.operation = operation; + } + + public String getOperator() { + return operator; + } + + public Date getOperationTime() { + return operationTime; + } + @Transient + public String getOperationTimeStr() { + if(operationTime != null){ + return Constants.SIMPLEDATEFORMAT_YYYYMMDDHHMMSS.format(operationTime); + } + return null; + } + + public void setOperator(String operator) { + this.operator = operator; + } + + public void setOperationTime(Date operationTime) { + this.operationTime = operationTime; + } + + public Date getRemark() { + return remark; + } + + public void setRemark(Date remark) { + this.remark = remark; + } + + public void setId(Long id) { + this.id = id; + } + + public void setSrcDepart(String srcDepart) { + this.srcDepart = srcDepart; + } + + public void setSrcDepartCoding(String srcDepartCoding) { + this.srcDepartCoding = srcDepartCoding; + } + + public void setSrcLocation(String srcLocation) { + this.srcLocation = srcLocation; + } + + public void setSrcLocationType(String srcLocationType) { + this.srcLocationType = srcLocationType; + } + + public void setSrcWareHouseId(Long srcWareHouseId) { + this.srcWareHouseId = srcWareHouseId; + } + + public void setSrcOperationRoomId(Long srcOperationRoomId) { + this.srcOperationRoomId = srcOperationRoomId; + } + + public void setDestDepart(String destDepart) { + this.destDepart = destDepart; + } + + public void setDestDepartCoding(String destDepartCoding) { + this.destDepartCoding = destDepartCoding; + } + + public void setDestLocation(String destLocation) { + this.destLocation = destLocation; + } + + public void setDestLocationType(String destLocationType) { + this.destLocationType = destLocationType; + } + + public void setDestWareHouseId(Long destWareHouseId) { + this.destWareHouseId = destWareHouseId; + } + + public void setDestOperationRoomId(Long destOperationRoomId) { + this.destOperationRoomId = destOperationRoomId; + } + + + +} Index: ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/action/InvoiceAction.java =================================================================== diff -u -r17871 -r18212 --- ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/action/InvoiceAction.java (.../InvoiceAction.java) (revision 17871) +++ ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/action/InvoiceAction.java (.../InvoiceAction.java) (revision 18212) @@ -55,6 +55,7 @@ import com.forgon.disinfectsystem.entity.assestmanagement.GodownEntryItem; import com.forgon.disinfectsystem.entity.assestmanagement.TousseStock; import com.forgon.disinfectsystem.entity.basedatamanager.materialinstance.MaterialInstance; +import com.forgon.disinfectsystem.entity.basedatamanager.position.TousseOperation; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; import com.forgon.disinfectsystem.entity.becleanitem.ClassifyBasket; @@ -899,13 +900,29 @@ } } } + // 流转记录 + JSONArray tousseOperationJSONs = new JSONArray(); //此器械包实例关联的所有清洗篮筐的所有清洗记录(因为每个清洗篮筐可以被清洗多次) + String sql = String.format(" where po.tousseInstanceId=%s order by operationTime asc ", ti.getId()); + List list = (List)objectDao.findBySql(TousseOperation.class.getSimpleName(), sql); + if(CollectionUtils.isNotEmpty(list)){ + for (TousseOperation tousseOperation : list) { + JSONObject obj = new JSONObject(); + obj.put("operator", tousseOperation.getOperator()); + obj.put("operationTime", tousseOperation.getOperationTimeStr()); + obj.put("destLocation", tousseOperation.getDestLocation()); + obj.put("destDepart", tousseOperation.getDestDepart()); + obj.put("operation", tousseOperation.getOperation()); + tousseOperationJSONs.add(obj); + } + } Map map = new HashMap(); map.put("success", true); map.put("tousseTransitionRecord", tousseTransitionRecord); map.put("recyclingRecordJSON", recyclingRecordJSON); map.put("washAndDisinfectRecordInfoJSONs", washAndDisinfectRecordInfoJSONs); + map.put("tousseOperationJSONs", tousseOperationJSONs); map.put("tousseInstance", ti); Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/action/TousseDefinitionAction.java =================================================================== diff -u -r18117 -r18212 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/action/TousseDefinitionAction.java (.../TousseDefinitionAction.java) (revision 18117) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/action/TousseDefinitionAction.java (.../TousseDefinitionAction.java) (revision 18212) @@ -8,13 +8,17 @@ import java.io.OutputStream; import java.io.PrintWriter; import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import java.sql.ResultSet; +import java.sql.SQLException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.Date; import java.util.HashMap; import java.util.HashSet; +import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Set; @@ -25,11 +29,6 @@ import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; -import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.ComboTousseComposite; -import com.forgon.disinfectsystem.goodFilterConfig.service.GoodFilterConfigManager; -import com.forgon.disinfectsystem.tousse.comboTousse.service.ComboTousseManager; -import com.forgon.disinfectsystem.tousse.cssdhandletousses.service.CssdHandleTousseManager; - import net.sf.json.JSONArray; import net.sf.json.JSONObject; import net.sf.json.JsonConfig; @@ -39,6 +38,7 @@ import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringEscapeUtils; import org.apache.log4j.Logger; import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.Namespace; @@ -49,23 +49,33 @@ import com.forgon.Constants; import com.forgon.databaseadapter.service.DateQueryAdapter; import com.forgon.directory.acegi.tools.AcegiHelper; +import com.forgon.directory.model.BarcodeDevice; import com.forgon.directory.model.CssdHandleTousses; import com.forgon.directory.model.OrgUnit; import com.forgon.directory.vo.LoginUserData; +import com.forgon.disinfectsystem.barcode.service.BarcodeManager; import com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.service.SupplyRoomConfigManager; import com.forgon.disinfectsystem.basedatamanager.taskGroup.service.TaskGroupManager; import com.forgon.disinfectsystem.common.CssdUtils; +import com.forgon.disinfectsystem.diposablegoods.util.DisposableGoodsUtils; import com.forgon.disinfectsystem.entity.assestmanagement.DiposableGoodsInstance; import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoods; import com.forgon.disinfectsystem.entity.basedatamanager.imagefilemanager.ImageFile; import com.forgon.disinfectsystem.entity.basedatamanager.materialdefinition.MaterialDefinition; import com.forgon.disinfectsystem.entity.basedatamanager.materialinstance.MaterialInstance; +import com.forgon.disinfectsystem.entity.basedatamanager.operationRoom.OperationRoom; +import com.forgon.disinfectsystem.entity.basedatamanager.position.TousseOperation; import com.forgon.disinfectsystem.entity.basedatamanager.supplyroomconfig.SupplyRoomConfig; import com.forgon.disinfectsystem.entity.basedatamanager.taskGroup.TaskGroup; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; +import com.forgon.disinfectsystem.entity.basedatamanager.warehouse.WareHouse; +import com.forgon.disinfectsystem.entity.invoicemanager.Invoice; import com.forgon.disinfectsystem.entity.tousseitem.TousseItem; +import com.forgon.disinfectsystem.goodFilterConfig.service.GoodFilterConfigManager; import com.forgon.disinfectsystem.goodsBindingConfig.vo.BindGoodVo; +import com.forgon.disinfectsystem.tousse.comboTousse.service.ComboTousseManager; +import com.forgon.disinfectsystem.tousse.cssdhandletousses.service.CssdHandleTousseManager; import com.forgon.disinfectsystem.tousse.imagefilemanager.service.ImageFileManager; import com.forgon.disinfectsystem.tousse.materialdefinition.service.MaterialDefinitionManager; import com.forgon.disinfectsystem.tousse.toussedefinition.service.GoodBindHelper; @@ -74,6 +84,7 @@ import com.forgon.disinfectsystem.tousse.toussedefinition.service.TousseDefinitionManager; import com.forgon.disinfectsystem.tousse.toussedefinition.service.TousseInstanceManager; import com.forgon.disinfectsystem.tousse.videomanager.service.VideoFileManager; +import com.forgon.entity.PageEntity; import com.forgon.log.model.Log; import com.forgon.log.service.LogManager; import com.forgon.tools.FileSystemHelper; @@ -87,8 +98,10 @@ import com.forgon.tools.hibernate.ObjectDao; import com.forgon.tools.json.JSONUtil; import com.forgon.tools.json.JsonPropertyFilter; +import com.forgon.tools.util.ForgonDateUtils; import com.forgon.tools.util.PageUtil; -import com.forgon.tools.util.SqlUtils; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; import com.google.gson.reflect.TypeToken; import com.opensymphony.xwork2.ModelDriven; import com.opensymphony.xwork2.Preparable; @@ -140,6 +153,8 @@ private CssdHandleTousseManager cssdHandleTousseManager; + private BarcodeManager barcodeManager; + public void setCssdHandleTousseManager( CssdHandleTousseManager cssdHandleTousseManager) { this.cssdHandleTousseManager = cssdHandleTousseManager; @@ -173,6 +188,10 @@ this.imageFileManager = imageFileManager; } + public void setBarcodeManager(BarcodeManager barcodeManager) { + this.barcodeManager = barcodeManager; + } + public void setSpell(String spell) { this.spell = spell; } @@ -2558,6 +2577,130 @@ jSONObject.put("data", list); StrutsResponseUtils.output(jSONObject); } - - + /** + * 扫描包条码 + */ + public void loadTousseByBarcode(){ + String barcode = StrutsParamUtils.getPraramValue("barcode", ""); + JSONObject obj = new JSONObject(); + try { + BarcodeDevice barcodeDevice = barcodeManager + .getBarcodeByBarcode(barcode); + if (barcodeDevice == null){ + throw new RuntimeException(String.format("条码[%s]不存在!", barcode)); + } + if (!(barcodeDevice instanceof TousseInstance)) { + throw new RuntimeException(String.format("只能扫描器械包条码!", barcode)); + } + TousseInstance tousseInstance = (TousseInstance) barcodeDevice; + + if(!(tousseInstance.isShipped() || tousseInstance.isSigned())){ + throw new RuntimeException(String.format("只能扫描已发货或者已签收的器械包!")); + } + if (StringUtils.equals(tousseInstance.getStatus2(), TousseOperation.STATUS_SENDING)) { + throw new RuntimeException("不能扫描运送中的包!"); + } + Set orgUnitCoding = new HashSet(); + List supplyRoomConfigList = supplyRoomConfigManager.getSupplyRoomList(SupplyRoomConfig.SUPPLYROOM_TYPE_6); + if(supplyRoomConfigList != null){ + for (SupplyRoomConfig supplyRoomConfig : supplyRoomConfigList) { + orgUnitCoding.add(supplyRoomConfig.getOrgUnitCoding()); + } + } + if(!orgUnitCoding.contains(tousseInstance.getLocation())){ + throw new RuntimeException(String.format("只能扫描发货到流转科室的器械包!")); + } + obj.put("id", tousseInstance.getId()); + obj.put("name", tousseInstance.getTousseName()); + obj.put("showTousseName", tousseInstance.getShowTousseName()); + obj.put("barcode", tousseInstance.getBarcode()); + obj.put("success", true); + } catch (Exception e) { + e.printStackTrace(); + obj.put("success", false); + obj.put("errMsg", e.getMessage()); + } + StrutsResponseUtils.output(obj); + } + /** + * 获取位置 + */ + public void getPositionJson() { + String spell = StrutsParamUtils.getPraramValue("spell", ""); + // 手术间,或者仓库 + String sql1 = String.format(" select w.id, w.name,'仓库' as type,w.orgUnitCode as orgUnitCoding,w.orgUnitName from %s w ", WareHouse.class.getSimpleName()); + String sql2 = String.format(" select o.id,o.operationRoomName as name,'手术间' as type,o.orgUnitCoding,o.orgUnitName from %s o where o.parentOperationRoomId is not null ", OperationRoom.class.getSimpleName(),spell); + if(StringUtils.isNotBlank(spell)){ + sql1 += String.format(" where w.name like '%%%s%%' ", spell); + sql2 += String.format(" and o.operationRoomName like '%%%s%%' ", spell); + } + String sql = String.format("select * from ((%s) UNION ALL (%s)) u order by u.name", sql1,sql2); + JSONArray jsonArray = new JSONArray(); + JSONObject retObj = new JSONObject(); + ResultSet resultSet = objectDao.executeSql(sql.toString()); + try { + while (resultSet.next()) { + Long id = resultSet.getLong("id"); + String name = resultSet.getString("name"); + String type = resultSet.getString("type"); + String orgUnitCoding = resultSet.getString("orgUnitCoding"); + String orgUnitName = resultSet.getString("orgUnitName"); + + String displayStr = String.format("%s %s", orgUnitName,name); + + JSONObject obj = new JSONObject(); + + obj.put("id", id); + obj.put("type", type); + String value = obj.toString(); + obj.put("name", name); + obj.put("orgUnitCoding", orgUnitCoding); + obj.put("orgUnitName", orgUnitName); + obj.put("displayStr", displayStr); + obj.put("value", value); + + jsonArray.add(obj); + } + } catch (SQLException e) { + e.printStackTrace(); + }finally { + DatabaseUtil.closeResultSetAndStatement(resultSet); + } + + retObj.put("totalCount", jsonArray.size()); + retObj.put("data", jsonArray); + retObj.put("success", true); + + StrutsResponseUtils.output(retObj); + } + /** + * 提交位置更改 + */ + public void saveChangePosition() { + String loginUser = AcegiHelper.getLoginUser().getUserFullName(); + + JSONObject params = new JSONObject(); + + String operator = StrutsParamUtils.getPraramValue("operator", ""); + String destType = StrutsParamUtils.getPraramValue("destType", ""); + Long destId = StrutsParamUtils.getPraramLongValue("destId", null); + String sendOutGoodsStoreData = StrutsParamUtils.getPraramValue("sendOutGoodsStoreData", ""); + + + params.put("destType", destType); + params.put("destId", destId); + params.put("operator", operator); + + JSONArray sendOutGoodsItems = JSONArray.fromObject(sendOutGoodsStoreData); + params.put("items", sendOutGoodsItems); + + + try{ + tousseInstanceManager.saveChangePosition(params); + StrutsResponseUtils.output(true, "保存成功!"); + } catch (Exception ex){ + ex.printStackTrace(); + StrutsResponseUtils.output(false, ex.getMessage()); + } + } } Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/toussedefinition/TousseInstance.java =================================================================== diff -u -r18136 -r18212 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/toussedefinition/TousseInstance.java (.../TousseInstance.java) (revision 18136) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/toussedefinition/TousseInstance.java (.../TousseInstance.java) (revision 18212) @@ -122,8 +122,40 @@ private String reviewerCode;// 审核员编码 private String status;// 状态 + /** + * 手术仪器管理状态 + */ + private String status2; + /** + * 手术仪器管理 科室名称 + */ + private String depart2; /** + * 手术仪器管理科室编码 + */ + private String departCoding2; + /** + * 手术仪器管理位置,仓库或者手术间名称 + */ + private String location2; + /** + * 手术仪器管理位置类型,仓库或者手术间 + */ + private String location2Type; + /** + * 手术仪器管理位置,仓库id + */ + private Long wareHouseId2; + /** + * 手术仪器管理位置,手术间id + */ + private Long operationRoomId; + /** + * 手术仪器管理,操作记录id + */ + private Long tousseOperationId; + /** * 回收状态(中大附一提出的需求,此功能有待优化) */ private String recyclingStatus; @@ -538,7 +570,71 @@ public void setStatus(String status) { this.status = status; } + + public String getStatus2() { + return status2; + } + public String getDepart2() { + return depart2; + } + + public String getDepartCoding2() { + return departCoding2; + } + + public String getLocation2() { + return location2; + } + + public String getLocation2Type() { + return location2Type; + } + + public Long getWareHouseId2() { + return wareHouseId2; + } + + public Long getOperationRoomId() { + return operationRoomId; + } + + public Long getTousseOperationId() { + return tousseOperationId; + } + + public void setTousseOperationId(Long tousseOperationId) { + this.tousseOperationId = tousseOperationId; + } + + public void setStatus2(String status2) { + this.status2 = status2; + } + + public void setDepart2(String depart2) { + this.depart2 = depart2; + } + + public void setDepartCoding2(String departCoding2) { + this.departCoding2 = departCoding2; + } + + public void setLocation2(String location2) { + this.location2 = location2; + } + + public void setLocation2Type(String location2Type) { + this.location2Type = location2Type; + } + + public void setWareHouseId2(Long wareHouseId2) { + this.wareHouseId2 = wareHouseId2; + } + + public void setOperationRoomId(Long operationRoomId) { + this.operationRoomId = operationRoomId; + } + public String getStockBarcode() { return stockBarcode; } Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManager.java =================================================================== diff -u -r18204 -r18212 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManager.java (.../TousseInstanceManager.java) (revision 18204) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManager.java (.../TousseInstanceManager.java) (revision 18212) @@ -481,5 +481,7 @@ * @return key为申请项TousseItem的id,value为此申请项下的所有包实例 */ public Map> groupByTousseItemId(List tousseInstances); + + public void saveChangePosition(JSONObject params); }