Index: ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/vo/RecyclingPrintItem.java =================================================================== diff -u -r20041 -r24702 --- ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/vo/RecyclingPrintItem.java (.../RecyclingPrintItem.java) (revision 20041) +++ ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/vo/RecyclingPrintItem.java (.../RecyclingPrintItem.java) (revision 24702) @@ -2,17 +2,38 @@ public class RecyclingPrintItem { /** - * 材料名称。 + * 名称。 + * 对于外来器械包则为材料名称 + * 对于其它类型包则为包名称 */ private String name; /** - * 材料数量 + * 数量 + * 对于外来器械包则为材料数量 + * 对于其它类型包则为包数量 */ private Integer amount; /** * 是否植入物 + * 针对外来器械包 */ private String isImplant; + + /** + * 单位 + */ + private String unit; + + /** + * 单价 + */ + private Double price; + + /** + * 金额 + */ + private Double rowPrice; + public String getName() { return name; } @@ -31,4 +52,23 @@ public void setIsImplant(String isImplant) { this.isImplant = isImplant; } + public String getUnit() { + return unit; + } + public void setUnit(String unit) { + this.unit = unit; + } + public Double getPrice() { + return price; + } + public void setPrice(Double price) { + this.price = price; + } + public Double getRowPrice() { + return rowPrice; + } + public void setRowPrice(Double rowPrice) { + this.rowPrice = rowPrice; + } + } Index: ssts-web/src/main/webapp/disinfectsystem/config/gzykdxfskqyy/config.js =================================================================== diff -u -r24696 -r24702 --- ssts-web/src/main/webapp/disinfectsystem/config/gzykdxfskqyy/config.js (.../config.js) (revision 24696) +++ ssts-web/src/main/webapp/disinfectsystem/config/gzykdxfskqyy/config.js (.../config.js) (revision 24702) @@ -103,6 +103,10 @@ disableForeignTousse : true, //器械包申请单的物品视图是否分成两个grid tousseApplicationFormGridSplit:true, + //回收页面是否显示保存打印并新建按钮 + showRecyclingSaveAndPrintAndNewActionButton:true, + //回收打印的内容(1:外来器械包明细 2:发货计划),默认为1 + recyclingPrintContent : 2, //发货科室依据,departCoding为申请科室,settleAccountsDepartCoding为结算科室,默认为申请科室 invoice_groupBy:'settleAccountsDepartCoding' } \ No newline at end of file Index: ssts-web/src/main/webapp/disinfectsystem/touchScreen/recycle/recycleForTouchScreen.jsp =================================================================== diff -u -r24246 -r24702 --- ssts-web/src/main/webapp/disinfectsystem/touchScreen/recycle/recycleForTouchScreen.jsp (.../recycleForTouchScreen.jsp) (revision 24246) +++ ssts-web/src/main/webapp/disinfectsystem/touchScreen/recycle/recycleForTouchScreen.jsp (.../recycleForTouchScreen.jsp) (revision 24702) @@ -295,6 +295,7 @@ + Index: ssts-web/src/main/webapp/disinfectsystem/touchScreen/recycle/1980/images/style.css =================================================================== diff -u -r24075 -r24702 --- ssts-web/src/main/webapp/disinfectsystem/touchScreen/recycle/1980/images/style.css (.../style.css) (revision 24075) +++ ssts-web/src/main/webapp/disinfectsystem/touchScreen/recycle/1980/images/style.css (.../style.css) (revision 24702) @@ -73,15 +73,18 @@ .data-table .btn-box .btn-p:hover{ background-position:-632px -64px; } .data-table .btn-box .btn-c{ background:url(btn_confirm.png) no-repeat; background-position:0 0; width:137px; height:64px; border:none; line-height:200px; overflow:hidden; text-indent:-9999px; display:block;} .data-table .btn-box .btn-c:hover{ background:url(btn_confirm1.png) no-repeat; background-position:0 0; border:none; line-height:200px; overflow:hidden; text-indent:-9999px; display:block;} +.data-table .btn-box .btn-n{ background:url(btn-box.jpg) no-repeat; background-position:-839px 0; width:140px; height:64px; border:none; line-height:200px; overflow:hidden; text-indent:-9999px; display:block; } +.data-table .btn-box .btn-n:hover{ background:url(btn-box.jpg) no-repeat; background-position:-839px -64px; border:none; line-height:200px; overflow:hidden; text-indent:-9999px; display:block;} +.data-table .btn-box .btn-spn{ background:url(btn-box.jpg) no-repeat; background-position:-980px 0; width:230px; height:64px; border:none; line-height:200px; overflow:hidden; text-indent:-9999px; display:block; } +.data-table .btn-box .btn-spn:hover{ background:url(btn-box.jpg) no-repeat; background-position:-980px -64px; border:none; line-height:200px; overflow:hidden; text-indent:-9999px; display:block;} + .data-table .btn-box .btn-d{ background:url(btn_cancel.png) no-repeat; background-position:0 0; width:137px; height:64px; border:none; line-height:200px; overflow:hidden; text-indent:-9999px; display:block;} .data-table .btn-box .btn-d:hover{ background:url(btn_cancel1.png) no-repeat; background-position:0 0; border:none; line-height:200px; overflow:hidden; text-indent:-9999px; display:block;} -.data-table .btn-box .btn-f{ background:url(btn_exit.png) no-repeat; background-position:0 0; width:137px; height:64px; border:none; line-height:200px; overflow:hidden; text-indent:-9999px; display:block; } -.data-table .btn-box .btn-f:hover{ background:url(btn_exit1.png) no-repeat; background-position:0 0; border:none; line-height:200px; overflow:hidden; text-indent:-9999px; display:block;} .data-table .btn-box .btn-g{ background:url(btn_stop.png) no-repeat; background-position:0 0; width:137px; height:64px; border:none; line-height:200px; overflow:hidden; text-indent:-9999px; display:block; } .data-table .btn-box .btn-g:hover{ background:url(btn_stop1.png) no-repeat; background-position:0 0; border:none; line-height:200px; overflow:hidden; text-indent:-9999px; display:block;} -.data-table .btn-box .btn-n{ background:url(btn-box.jpg) no-repeat; background-position:-839px 0; width:140px; height:64px; border:none; line-height:200px; overflow:hidden; text-indent:-9999px; display:block; } -.data-table .btn-box .btn-n:hover{ background:url(btn-box.jpg) no-repeat; background-position:-839px -64px; border:none; line-height:200px; overflow:hidden; text-indent:-9999px; display:block;} +.data-table .btn-box .btn-f{ background:url(btn_exit.png) no-repeat; background-position:0 0; width:137px; height:64px; border:none; line-height:200px; overflow:hidden; text-indent:-9999px; display:block; } +.data-table .btn-box .btn-f:hover{ background:url(btn_exit1.png) no-repeat; background-position:0 0; border:none; line-height:200px; overflow:hidden; text-indent:-9999px; display:block;} .mbody .btn-h{ margin-left: 790px;margin-top: 370px; background:url(allIntoBasket.png) no-repeat; background-position:0 0; width:150px; height:64px; border:none; line-height:200px; overflow:hidden;} .mbody .btn-h:hover{ margin-left: 790px;margin-top: 370px; background:url(allIntoBaskehovert.png) no-repeat; background-position:0 0; width:150px; height:64px; border:none; line-height:200px; overflow:hidden;} Index: ssts-web/src/main/webapp/disinfectsystem/touchScreen/recycle/recycleForTouchScreen.js =================================================================== diff -u -r24218 -r24702 --- ssts-web/src/main/webapp/disinfectsystem/touchScreen/recycle/recycleForTouchScreen.js (.../recycleForTouchScreen.js) (revision 24218) +++ ssts-web/src/main/webapp/disinfectsystem/touchScreen/recycle/recycleForTouchScreen.js (.../recycleForTouchScreen.js) (revision 24702) @@ -2823,6 +2823,7 @@ * @param confirmation 确认回收记录操作 * @param saveAndNew 保存并新建回收记录操作 * @param print 保存并打印回收记录操作 + * @param recyclingAmountConfirm 是否确认回收数量 */ function submitFunction(confirmation,saveAndNew,print,recyclingAmountConfirm){ if(submitCheck()){ @@ -2986,6 +2987,13 @@ } /** + * 保存并打印并新建回收记录 + */ +function doSaveAndPrintAndNewAction(){ + submitFunction(false,true,true,false); +} + +/** * 确认回收记录 */ function doConfirmAction(){ @@ -3718,12 +3726,18 @@ //没有可以终止的申请项,那就把终止按钮隐藏 $('#btn-terminate').hide(); } - // + //是否显示保存并打印按钮 if(sstsConfig.showRecyclingPrintDetail && $("#appType").val() == TYPE_FOREIGNTOUSSEAPPLIACTION){ $('#saveAndPrintBtnTd').show(); }else{ $('#saveAndPrintBtnTd').hide(); } + //是否显示保存打印并新建按钮 + if(sstsConfig.showRecyclingSaveAndPrintAndNewActionButton){ + $('#saveAndPrintAndNewBtnTd').show(); + }else{ + $('#saveAndPrintAndNewBtnTd').hide(); + } if(recyclingStatus == '部分回收'){ $('#saveBtnTd').show(); } Index: ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java =================================================================== diff -u -r24267 -r24702 --- ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 24267) +++ ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 24702) @@ -1239,7 +1239,8 @@ throw new SystemException("当前申请单已确认,不能保存!"); }else{ save(recyclingRecord,recyclingContext); - if(CssdUtils.getSystemSetConfigByNameBool("showRecyclingPrintDetail")){ + //如果回收页显示保存并打印或保存打印并新建,则设置打印数据 + if(CssdUtils.getSystemSetConfigByNameBool("showRecyclingPrintDetail") || CssdUtils.getSystemSetConfigByNameBool("showRecyclingSaveAndPrintAndNewActionButton")){ recyclingContext.setRecyclingPrintData(loadRecyclingPrintData(recyclingRecord)); } if(CssdUtils.getSystemSetConfigByNameBool("modifyRemarkInRecycling")){ @@ -4095,7 +4096,9 @@ List list = new ArrayList<>(); if(recyclingRecord != null && CollectionUtils.isNotEmpty(recyclingRecord.getClassifyBaskets())){ InvoicePlan ip = recyclingRecord.getRecyclingApplication(); - if(ip instanceof ForeignTousseApplication){ + //回收打印的内容(1:外来器械包明细 2:发货计划),默认为1 + int recyclingPrintContent = CssdUtils.getSystemSetConfigByNameInt("recyclingPrintContent", 1); + if(ip != null && ip instanceof ForeignTousseApplication && recyclingPrintContent == 1){ ForeignTousseApplication fa = (ForeignTousseApplication)ip; if(fa.isSecondRecycleForForeignTousse()){ //外来器械二次回收,不打印 @@ -4121,6 +4124,7 @@ RecyclingPrintData printData = printDatas.stream().filter(p->MathTools.valueEquals(cb.getId(), p.getClassifyBasketId())).findFirst().orElse(null); if(printData == null){ printData = new RecyclingPrintData(); + printData.setRecyclingApplicationType(recyclingRecord.getRecyclingApplicationType()); printData.setBedNumber(fa.getBedNumber()); printData.setClassifyBasketId(cb.getId()); printData.setDoctor(fa.getDoctor()); @@ -4162,6 +4166,21 @@ Collections.sort(printDatas); list.addAll(printDatas); } + } else { + List recyclingItemList = recyclingRecord.getItems(); + RecyclingPrintData printData = new RecyclingPrintData(); + //科室、申请单号、日期、备注 + printData.setDepartName(recyclingRecord.getDepart()); + printData.setInvoicePlanSerialNumber(ip != null ? ip.getSerialNumber() : ""); + printData.setRecyclingTime(ForgonDateUtils.safelyFormatDate(recyclingRecord.getRecyclingTime(), ForgonDateUtils.SIMPLEDATEFORMAT_YYYYMMDD, "")); + printData.setRemark(recyclingRecord.getRemark()); + printData.setRecyclingApplicationType(recyclingRecord.getRecyclingApplicationType()); + for(RecyclingItem item : recyclingItemList){ + TousseDefinition td = tousseDefinitionManager.get(item.getTousseDefinitionId()); + //名称、数量、单位、单价、金额 + printData.addItem(item.getTousseName(), item.getAmount(), td.getUnit() , td.getPrice()); + } + list.add(printData); } } return list; Index: ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/vo/RecyclingPrintData.java =================================================================== diff -u -r20880 -r24702 --- ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/vo/RecyclingPrintData.java (.../RecyclingPrintData.java) (revision 20880) +++ ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/vo/RecyclingPrintData.java (.../RecyclingPrintData.java) (revision 24702) @@ -3,9 +3,12 @@ import java.util.ArrayList; import java.util.List; +import com.forgon.tools.MathTools; + /** * 回收打印数据。目前回收的时候,如果是外来器械,需要打印外来器械包的病人等信息及包内材料清单。ZJYY-4 * 其他的包都不用打印。打印的材料清单,跟随包一起清洗、装配(类似于标识牌,只是不打印条码) + * 增加广医口腔的打印(打印结果参考申请单打印)、打印普通器械包 * @author kzh * */ @@ -47,7 +50,33 @@ */ private Integer splitIndex; private String containerName; + /** + * 科室 + */ + private String departName; + + /** + * 申请单类型 + */ + private String recyclingApplicationType; + + /** + * 申请单号 + */ + private String invoicePlanSerialNumber; + + /** + * 日期(回收时间) + */ + private String recyclingTime; + + /** + * 备注 + */ + private String remark; + + /** * 材料明细项 */ private List goods; @@ -128,6 +157,18 @@ item.setIsImplant(isImplant); goods.add(item); } + public void addItem(String name,Integer amount,String unit,Double price){ + if(goods == null){ + goods = new ArrayList<>(); + } + RecyclingPrintItem item = new RecyclingPrintItem(); + item.setAmount(amount); + item.setName(name); + item.setUnit(unit); + item.setPrice(price); + item.setRowPrice(MathTools.mul(amount, price, 2).doubleValue()); + goods.add(item); + } @Override public int compareTo(RecyclingPrintData o) { if(o == null){ @@ -141,4 +182,35 @@ } return getSplitIndex().compareTo(o.getSplitIndex()); } + public String getDepartName() { + return departName; + } + public void setDepartName(String departName) { + this.departName = departName; + } + public String getInvoicePlanSerialNumber() { + return invoicePlanSerialNumber; + } + public void setInvoicePlanSerialNumber(String invoicePlanSerialNumber) { + this.invoicePlanSerialNumber = invoicePlanSerialNumber; + } + public String getRecyclingTime() { + return recyclingTime; + } + public void setRecyclingTime(String recyclingTime) { + this.recyclingTime = recyclingTime; + } + public String getRemark() { + return remark; + } + public void setRemark(String remark) { + this.remark = remark; + } + public String getRecyclingApplicationType() { + return recyclingApplicationType; + } + public void setRecyclingApplicationType(String recyclingApplicationType) { + this.recyclingApplicationType = recyclingApplicationType; + } + } Index: ssts-web/src/main/webapp/disinfectsystem/touchScreen/recycle/1980/images/btn-box.jpg =================================================================== diff -u -r22653 -r24702 Binary files differ Index: ssts-web/src/main/webapp/disinfectsystem/config/gzykdxfskqyy/print/printConfig.js =================================================================== diff -u -r24329 -r24702 --- ssts-web/src/main/webapp/disinfectsystem/config/gzykdxfskqyy/print/printConfig.js (.../printConfig.js) (revision 24329) +++ ssts-web/src/main/webapp/disinfectsystem/config/gzykdxfskqyy/print/printConfig.js (.../printConfig.js) (revision 24702) @@ -1164,6 +1164,79 @@ ] } +//回收页面打印配置 +var recyclingGoodsDetailConfig = { + customPrint:printRecyclingGoodsDetail_gykq +} + + +function printRecyclingGoodsDetail_gykq(printSummaryObj){ + //科室、申请单号、日期、备注 + var departName = printSummaryObj.departName ; + var invoicePlanSerialNumber = getDefaultString(printSummaryObj.invoicePlanSerialNumber,' '); + var recyclingTime = getDefaultString(printSummaryObj.recyclingTime,' '); + var remark = getDefaultString(printSummaryObj.remark,' '); + var goods = getDefaultString(printSummaryObj.goods,' '); + + LODOP = getLodop(document.getElementById('LODOP'), document.getElementById('LODOP_EM')); + var rowHeight = 20; + + var css="table{margin:0px;padding:0px;width: 100%; border-collapse: collapse;}"; + css+="tr{padding:0px;margin:0px;height:20px;}td{padding:0px;margin:0px;border:1px solid black;font-size: 14px;font-weight:bold;text-align:center;}"; + css+="td.headRow{font-size: 20px;font-weight:bold;text-align:center;} td.dataRow{font-size: 18px;text-align:center;}"; + css+="table.chld td{border-top-width: 0px;text-align:center;}"; + var tableHtml =""; + + tableHtml += "
广州医科大学附属口腔医院回收物品表

"; + tableHtml += "科室:"+ departName +"  申请单号:"+ invoicePlanSerialNumber +"  回收日期:"+ recyclingTime +"  备注:"+ remark +"
"; + tableHtml +=""; + + var minRowCount = 9; + tableHtml += ""; + tableHtml += "" + tableHtml += ""; + tableHtml += ""; + tableHtml += ""; + tableHtml += ""; + tableHtml += ""; + tableHtml += ""; + for(var i = 0; i < goods.length;i++){ + var printGoods = goods[i]; + tableHtml += ""; + tableHtml += ""; + tableHtml += ""; + tableHtml += ""; + tableHtml += ""; + tableHtml += ""; + tableHtml += ""; + tableHtml += ""; + } + function addEmptyRow(){ + tableHtml += ""; + tableHtml += ""; + tableHtml += ""; + tableHtml += ""; + tableHtml += ""; + tableHtml += ""; + tableHtml += ""; + tableHtml += ""; + } + if(goods.length == 0){ + addEmptyRow(); + } + //添加空行到最少行数,以便表格好看一些 + var otherEmptyRow = minRowCount - goods.length; + if(otherEmptyRow > 0){ + for(var i = 0; i < otherEmptyRow;++i){ + addEmptyRow(); + } + } + + tableHtml += "
序号名称数量单位单价金额
"+getDefaultString(i+1," ")+""+getDefaultString(printGoods.name," ")+""+getDefaultString(printGoods.amount," ")+""+getDefaultString(printGoods.unit," ")+""+getDefaultString(printGoods.price," ")+""+getDefaultString(printGoods.rowPrice," ")+"
      
"; + LODOP.ADD_PRINT_HTM(0,0,"100%","100%",tableHtml); +// LODOP.SET_PRINT_MODE("PRINT_PAGE_PERCENT","Full-Page"); +} + var printConfig = { //发货计划单 invoicePlan : invoicePlanPrintConfig, @@ -1217,5 +1290,7 @@ //调拨入库单 appropriationInList : appropriationInListConfig, //调拨出库单 - appropriationOutList : appropriationOutListConfig + appropriationOutList : appropriationOutListConfig, + //回收物品明细。在回收界面的保存并打印按钮触发 + recyclingGoodsDetail : recyclingGoodsDetailConfig };