Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/operationreservation/action/OperationReservationAction.java
===================================================================
diff -u -r17263 -r17296
--- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/operationreservation/action/OperationReservationAction.java (.../OperationReservationAction.java) (revision 17263)
+++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/operationreservation/action/OperationReservationAction.java (.../OperationReservationAction.java) (revision 17296)
@@ -202,9 +202,26 @@
success = false;
message = e.getMessage();
}
- StrutsResponseUtils.output(success, message);;
+ StrutsResponseUtils.output(success, message);
}
+ /**
+ * 批量打印手术预约单
+ */
+ public void batchPrintOperationReservation(){
+ String ids = StrutsParamUtils.getPraramValue("ids", "");
+ boolean success = true;
+ String message = "";
+ try {
+ StrutsResponseUtils.output(operationReservationManager.batchPrintOperationReservation(ids));
+ } catch (Exception e) {
+ success = false;
+ message = e.getMessage();
+ StrutsResponseUtils.output(success, message);
+ }
+
+ }
+
@Override
public void prepare() throws Exception {
Index: ssts-web/src/main/webapp/disinfectsystem/invoice/operationReservationView.js
===================================================================
diff -u -r17263 -r17296
--- ssts-web/src/main/webapp/disinfectsystem/invoice/operationReservationView.js (.../operationReservationView.js) (revision 17263)
+++ ssts-web/src/main/webapp/disinfectsystem/invoice/operationReservationView.js (.../operationReservationView.js) (revision 17296)
@@ -719,6 +719,61 @@
}
);
}
+function batchPrintOperationReservation(grid){
+ var records = grid.getSelectionModel().getSelections();
+
+ if (records.length == 0) {
+ showResult("请选择要打印的单据!");
+ return false;
+ }
+ var ids = "";
+ var firstDate = null;
+ for ( var i = 0, len = records.length; i < len; i++) {
+ if (ids != "") {
+ ids += ";";
+ }
+ ids += records[i].data['id'];
+ var operationDate = records[i].data.operationTime.substr(0,10);
+ if(!firstDate){
+ //未设置第一个时间值,用当前的时间值来设置第一个时间值,后面的单,手术时间必须与这个相等
+ if(operationDate){
+ firstDate = operationDate;
+ }
+ }
+ if(firstDate){
+ var currentDate = firstDate;
+ if(operationDate){
+ currentDate = operationDate;
+ }
+
+ if(!dateEquals(currentDate,firstDate)){
+ showResult("请选择手术日期相同的单据!");
+ return false;
+ }
+ }
+ }
+ top.Ext.MessageBox.confirm("请确认","是否确定要打印选中的手术预约单信息?",
+ function(button, text) {
+ if ("yes" == button){
+ Ext.Ajax.request({
+ url : WWWROOT + '/disinfectsystem/operationReservationAction!batchPrintOperationReservation.do',
+ params : {ids : ids},
+ success : function(response, options) {
+ var result = Ext.decode(response.responseText);
+ if(!result.success){
+ showResult(result.message);
+ }else{
+ printOperationReservations(result);
+ }
+ },
+ failure : function(response, options) {
+ showResult("打印失败");
+ }
+ });
+ }
+ }
+ );
+}
/**
* 批量提交手术预约单
*/
@@ -884,6 +939,13 @@
handler : function() {
batchSubmintOperationReservation(grid);
}
+ },'-',{
+ text : '打印',
+ hidden : SSTS_OR_Create,
+ iconCls : 'icon_print',
+ handler : function() {
+ batchPrintOperationReservation(grid);
+ }
}];
grid = new Ext.ux.ForgonPageGrid( {
Index: ssts-web/src/main/webapp/disinfectsystem/print/print.js
===================================================================
diff -u -r17175 -r17296
--- ssts-web/src/main/webapp/disinfectsystem/print/print.js (.../print.js) (revision 17175)
+++ ssts-web/src/main/webapp/disinfectsystem/print/print.js (.../print.js) (revision 17296)
@@ -2577,6 +2577,132 @@
LODOP.ADD_PRINT_TABLE("70","0","100%","3000",titleHtml);
LODOP.PRINT();
}
+/**
+ * 打印手术预约单
+ * @param printObj 手术预约打印数据
+ * @param printType 打印类型:0为打印,其它为预览
+ */
+function printOperationReservations(printObj,printType) {
+ formTypeOfPrinted = "operationReservations";
+ printObj.printConfigObj_default = operationReservationVosConfig_default;//
+ doGetLodop();
+ LODOP.PRINT_INIT("");
+ setPrinterByConfig();
+ print2(printObj);
+ LODOP.PRINT();
+// if(printType == 0){//直接打印
+// LODOP.PRINT();
+// }else{//打印预览
+// LODOP.SET_SHOW_MODE("HIDE_PAPER_BOARD",1);
+// LODOP.PREVIEW();
+// }
+}
+/**
+ * 手术预约界面的打印
+ */
+var operationReservationVosConfig_default = {
+ customPrint:printOperationReservationsWithConsoleNameAndItems
+}
+/**
+ * 打印手术预约申请单 台次及对应的器械包列表
+ * @param operationReservations
+ */
+function printOperationReservationsWithConsoleNameAndItems(printObj){
+ if(isUndefinedOrNullOrEmpty(printObj)){
+ return;
+ }
+
+ doGetLodop();
+ var operationReservations = printObj.data;
+ var groups = []; //台次的分组 "15-1" 15就是分组,所以用"-"分隔,如果没有"-"那就打印到一个分组
+ var groupNames = [];
+ for(var i = 0; i < operationReservations.length;++i){
+ var groupName = "0";
+ var group = null;
+ if(operationReservations[i].consoleName){
+ var arr = operationReservations[i].consoleName.split('-');
+ groupName = arr[0];
+ }
+ for(var j = 0; j < groups.length;++j){
+ if(groupName == groups[j].name){
+ group = groups[j];
+ break;
+ }
+ }
+ if(!group){
+ group = {};
+ group.name = groupName;
+ group.consoleNames = [];
+ group.operationReservations = [];
+ groupNames.push(groupName);
+ groups.push(group);
+ }
+ group.consoleNames.push(operationReservations[i].consoleName);
+ group.operationReservations.push(operationReservations[i]);
+ }
+ //把字母顺序排序
+ groupNames.sort();
+ var title = '手术器械安排';
+ if(printObj.operationTime){
+ title = printObj.operationTime + title;
+ }
+ var printTime = new Date().Format("yyyy-MM-dd hh:mm:ss");
+ var tableHtml = "
";
+ tableHtml += "";
+ tableHtml += ""+title+" | ";
+ tableHtml += "
";
+
+ tableHtml += "";
+ tableHtml += "打印时间:"+printTime+" | ";
+ tableHtml += "
";
+ for(var index = 0; index < groupNames.length;++index){
+ var group = null;
+ for(var i = 0; i < groups.length;++i){
+ if(groups[i].name == groupNames[index]){
+ group = groups[i];
+ break;
+ }
+ }
+ if(!group){
+ continue;
+ }
+ //打印当前分组
+
+ //台次按字母顺序排序
+ group.consoleNames.sort();
+ for(var i = 0; i < group.consoleNames.length;++i){
+ var operationReservation = null;
+ for(var j = 0; j < group.operationReservations.length;++j){
+ if(group.consoleNames[i] == group.operationReservations[j].consoleName){
+ operationReservation = group.operationReservations[j];
+ break;
+ }
+ }
+ if(operationReservation){
+ tableHtml += "";
+ tableHtml += ""
+ + operationReservation.consoleName + " | ";
+ var tousseItemNames = [];
+ for(var j = 0; j < operationReservation.applicationItems.length;++j){
+ var item = operationReservation.applicationItems[j];
+ if(item){
+ tousseItemNames.push(item.tousseName);
+ }
+ }
+ tableHtml += "" +tousseItemNames.join(' ')+" | ";
+ tableHtml += "
";
+ }
+ }
+ //当前分组打印完毕;添加一个空行
+ tableHtml += "";
+ tableHtml += " | ";
+ tableHtml += "
";
+ }
+
+ tableHtml += "
";
+
+ LODOP.ADD_PRINT_HTM("5%","5%","90%","90%",""+tableHtml+"");
+}
// 添加表格打印项
function addPrintTable(tableHtml,top,left,width,height){
LODOP.ADD_PRINT_TABLE(top,left,width,height,tableHtml);
Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/operationreservation/vo/OperationReservationVo.java
===================================================================
diff -u
--- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/operationreservation/vo/OperationReservationVo.java (revision 0)
+++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/operationreservation/vo/OperationReservationVo.java (revision 17296)
@@ -0,0 +1,56 @@
+package com.forgon.disinfectsystem.operationreservation.vo;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.commons.collections4.CollectionUtils;
+
+import com.forgon.disinfectsystem.entity.tousseitem.TousseItem;
+
+public class OperationReservationVo {
+ /**
+ * 手术台次
+ */
+ private String consoleName;
+ /**
+ * 申请的物品
+ */
+ private List applicationItems = new ArrayList<>();
+
+ public String getConsoleName() {
+ return consoleName;
+ }
+
+ public void setConsoleName(String consoleName) {
+ this.consoleName = consoleName;
+ }
+
+ public List getApplicationItems() {
+ return applicationItems;
+ }
+
+ public void setApplicationItems(List items){
+ applicationItems.clear();
+ if(CollectionUtils.isNotEmpty(items)){
+ for(TousseItem ti : items){
+ if(ti != null){
+ PrintItemVo pi = new PrintItemVo();
+ pi.setTousseName(ti.getTousseName());
+ applicationItems.add(pi);
+ }
+ }
+ }
+ }
+
+ public class PrintItemVo {
+ private String tousseName;
+
+ public String getTousseName() {
+ return tousseName;
+ }
+
+ public void setTousseName(String tousseName) {
+ this.tousseName = tousseName;
+ }
+ }
+}
Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/operationreservation/service/OperationReservationManagerImpl.java
===================================================================
diff -u -r17263 -r17296
--- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/operationreservation/service/OperationReservationManagerImpl.java (.../OperationReservationManagerImpl.java) (revision 17263)
+++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/operationreservation/service/OperationReservationManagerImpl.java (.../OperationReservationManagerImpl.java) (revision 17296)
@@ -1,7 +1,9 @@
package com.forgon.disinfectsystem.operationreservation.service;
import java.text.ParseException;
+import java.text.SimpleDateFormat;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
@@ -10,6 +12,7 @@
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.commons.lang3.BooleanUtils;
@@ -19,6 +22,7 @@
import com.forgon.disinfectsystem.entity.invoicemanager.InvoicePlan;
import com.forgon.disinfectsystem.entity.operationreservation.OperationReservation;
import com.forgon.disinfectsystem.entity.tousseitem.TousseItem;
+import com.forgon.disinfectsystem.operationreservation.vo.OperationReservationVo;
import com.forgon.disinfectsystem.tousse.toussedefinition.service.TousseDefinitionManager;
import com.forgon.disinfectsystem.tousseitem.service.TousseItemManager;
import com.forgon.serialnumber.model.SerialNum;
@@ -277,4 +281,33 @@
}
}
+ @Override
+ public JSONObject batchPrintOperationReservation(String ids) {
+ List vos = new ArrayList<>();
+ Collection operationReservations = getCollection(ids, ";");
+ String date = null;
+ if(CollectionUtils.isNotEmpty(operationReservations)){
+ for(OperationReservation or : operationReservations){
+ if(or != null){
+ if(date == null){
+ try{
+ date = new SimpleDateFormat("MM月dd日").format(or.getOperationTime());
+ }catch(Exception e){
+ date = null;
+ }
+ }
+ OperationReservationVo vo = new OperationReservationVo();
+ vo.setConsoleName(or.getConsoleName());
+ vo.setApplicationItems(or.getApplicationItems());
+ vos.add(vo);
+ }
+ }
+ }
+ JSONObject json = JSONUtil.buildJsonObject(true,JSONArray.fromObject(vos));
+ if(date != null){
+ JSONUtil.addProperty(json, "operationTime", date);
+ }
+ return json;
+ }
+
}
Index: ssts-web/src/main/webapp/js/common.js
===================================================================
diff -u -r17014 -r17296
--- ssts-web/src/main/webapp/js/common.js (.../common.js) (revision 17014)
+++ ssts-web/src/main/webapp/js/common.js (.../common.js) (revision 17296)
@@ -422,8 +422,32 @@
return false;
return true;
}
+/**
+ * 判断两个日期是否相等
+ * @param date1
+ * @param date2
+ */
+function dateEquals(date1, date2){
+ if(date1 == date2){
+ //引用相等,那就相等了
+ return true;
+ }
+ if(date1 == null || date2 == null){
+ //到这里,说明引用不相等,并且其中有一个为null,那另一个一定不为null(如果另一个也为null,那上面的判断就已经确定了),所以不相等
+ return false;
+ }
+ //到这里,两个肯定都不为null
+ var d1 = date1;
+ if(!(date1 instanceof Date)){
+ d1 = new Date(date1.replace(/-/g, "/"));
+ }
+ var d2 = date2;
+ if(!(date2 instanceof Date)){
+ d2 = new Date(date2.replace(/-/g, "/"));
+ }
+ return (d1 - d2 == 0);
+}
-
String.prototype.Trim=function(){
return this.replace(/(^\s*)|(\s*$)/g,"");
};
Index: forgon-tools/src/main/java/com/forgon/tools/StrutsResponseUtils.java
===================================================================
diff -u -r14820 -r17296
--- forgon-tools/src/main/java/com/forgon/tools/StrutsResponseUtils.java (.../StrutsResponseUtils.java) (revision 14820)
+++ forgon-tools/src/main/java/com/forgon/tools/StrutsResponseUtils.java (.../StrutsResponseUtils.java) (revision 17296)
@@ -105,4 +105,7 @@
}
}
}
+ public static void output(boolean success, JSONArray array) {
+ output(JSONUtil.buildJsonObject(success, array));
+ }
}
Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/operationreservation/service/OperationReservationManager.java
===================================================================
diff -u -r17263 -r17296
--- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/operationreservation/service/OperationReservationManager.java (.../OperationReservationManager.java) (revision 17263)
+++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/operationreservation/service/OperationReservationManager.java (.../OperationReservationManager.java) (revision 17296)
@@ -2,6 +2,7 @@
import java.util.List;
+import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import com.forgon.disinfectsystem.entity.operationreservation.OperationReservation;
@@ -33,4 +34,9 @@
* @param ids
*/
public void batchSubmitOperationReservation(String ids);
+ /**
+ * 批量打印手术预约单
+ * @param ids
+ */
+ public JSONObject batchPrintOperationReservation(String ids);
}