Index: ssts-web/src/main/webapp/disinfectsystem/assestManagement/godownEntry/goodPurchasePlanView.js =================================================================== diff -u -r12599 -r12785 --- ssts-web/src/main/webapp/disinfectsystem/assestManagement/godownEntry/goodPurchasePlanView.js (.../goodPurchasePlanView.js) (revision 12599) +++ ssts-web/src/main/webapp/disinfectsystem/assestManagement/godownEntry/goodPurchasePlanView.js (.../goodPurchasePlanView.js) (revision 12785) @@ -1,4 +1,4 @@ -var entityName = "入库单管理"; +var entityName = "采购计划管理"; var grid; var g_localID = 1;// 为了区分每一个item,增加的ID。 // 全部一次性物品 @@ -95,6 +95,40 @@ {name : 'identification'}, {name : 'manufacture'} ]); + +//打印,目前只支持单个打印 +function printGoodPurchasePlan(id, printType){ + if(id == null) + return; + top.Ext.MessageBox.show({ + title:'请等待', + msg:'打印中……', + width:350, + progress:true, + closable:false + }); + Ext.Ajax.timeout=300*000; + Ext.Ajax.request({ + timeout: 300*000, + url : WWWROOT + '/disinfectSystem/goodPurchaseAction!mergeLoadToussePrintData.do', + params : {ids : id}, + success : function(response){ + var result = Ext.decode(response.responseText); + result.printUser = curUserName; + result.printTime = Ext.util.Format.date(new Date(), 'Y-m-d H:i'); + result.formTypeOfPrinted = 'purchasePlan'; + result.unitName = ""; + setGoodsInfos(result); + hideMessageBox(true); + printPurchasePlanInfo(result, printType); + }, + failure: function(response){ + showResult("打印失败!"); + hideMessageBox(true); + } + }); +} + function validateForm(){ if(!top.Ext.getCmp('goodPurchaseForm').form.isValid()){ showResult('请正确填写表单各值'); @@ -326,7 +360,7 @@ top.Ext.getCmp(id).focus(); top.Ext.getCmp(id).selectText(); } -function addGoodPurchasePlan(type) { +function addGoodPurchasePlan(id) { var form = new top.Ext.FormPanel({ id : 'goodPurchaseForm', frame : true, @@ -399,7 +433,7 @@ fieldLabel : '操作时间', id : 'time', name : 'time', - format : 'Y-m-d', + format : 'Y-m-d H:i', value : new Date(), allowBlank : false, anchor : '95%' @@ -440,10 +474,6 @@ frame :false, height : 390, store : new top.Ext.data.Store({ - /*proxy : new top.Ext.data.HttpProxy({ - url : WWWROOT + '/disinfectSystem/godownEntryAction!loadGodownEntryItemByid.do', - method : 'POST' - }),*/ reader : new top.Ext.data.JsonReader({ fields : [ {name : 'id'}, @@ -806,6 +836,18 @@ } })], buttons : [{ + text : '打印预览', + hidden: (id == ""?true:false), + handler : function() { + printGoodPurchasePlan(id, 1); + } + },{ + text : '打印', + hidden: (id == ""?true:false), + handler : function() { + printGoodPurchasePlan(id, 0) + } + },{ text : '保存', hidden:saveButton, handler : function() { @@ -972,53 +1014,54 @@ }; function editRecord(id){ - addGoodPurchasePlan(); + addGoodPurchasePlan(id); top.Ext.getCmp("serialNum").show(); top.Ext.getCmp('goodPurchaseForm').form.load({ url : WWWROOT + '/disinfectSystem/goodPurchaseAction!loadGoodPurchasePlan.do', method : 'GET', waitMsg : '正在加载数据,请稍候', params : {id : id}, success : function(form, action) { - top.Ext.getCmp("time").setValue(Ext.util.Format.date(new Date(action.result.data.time.time), 'Y-m-d')); + var data = action.result.data; + top.Ext.getCmp("time").setValue(Ext.util.Format.date(new Date(data.time.time), 'Y-m-d H:i')); - for(var i = 0 ;i < action.result.data.itemsList.length ;i++){ - var specification = action.result.data.itemsList[i].specification; + for(var i = 0 ;i < data.itemsList.length ;i++){ + var specification = data.itemsList[i].specification; var b = true; if(specification == null || specification.length <= 0){ b = false; } - var scheduleAmount =action.result.data.itemsList[i].scheduleAmout; + var scheduleAmount = data.itemsList[i].scheduleAmout; if(scheduleAmount == null || scheduleAmount == 'null'){ scheduleAmount = ''; } - var lastConsumption = action.result.data.itemsList[i].lastConsumption; + var lastConsumption = data.itemsList[i].lastConsumption; if(lastConsumption == null || lastConsumption == 'null'){ lastConsumption = ''; } - var stockQuantity = action.result.data.itemsList[i].stockQuantity; + var stockQuantity = data.itemsList[i].stockQuantity; if(stockQuantity == null || stockQuantity == 'null'){ stockQuantity = ''; } // var aaa = Ext.util.Format.usMoney(action.result.data.itemsList[i].cost); - var purchase = parseFloat(action.result.data.itemsList[i].purchase); + var purchase = parseFloat(data.itemsList[i].purchase); var godownEntryItem = new GoodPurchasePlanItemRecord({ localID:g_localID++, - id : action.result.data.itemsList[i].id, - departName:action.result.data.itemsList[i].departName, - departCoding:action.result.data.itemsList[i].departCoding, + id : data.itemsList[i].id, + departName:data.itemsList[i].departName, + departCoding:data.itemsList[i].departCoding, - name : action.result.data.itemsList[i].name, - unit : action.result.data.itemsList[i].unit, + name : data.itemsList[i].name, + unit : data.itemsList[i].unit, specification : specification, lastConsuption : lastConsumption, stockQuantity : stockQuantity, scheduleAmount : scheduleAmount, purchase : purchase, - totalPrice : action.result.data.itemsList[i].totalPrice, - manufacturer : action.result.data.itemsList[i].manufacturer, - supplierName : action.result.data.itemsList[i].supplierName, + totalPrice : data.itemsList[i].totalPrice, + manufacturer : data.itemsList[i].manufacturer, + supplierName : data.itemsList[i].supplierName, totalPrice:parseFloat(Ext.util.Format.usMoney(scheduleAmount*purchase)) }); @@ -1030,7 +1073,6 @@ var originalItems = buildJSONStringFromStore(top.Ext.getCmp('goodPurchaseItemGrid').getStore()); //alert(originalItems); top.Ext.getCmp("originalItems").setValue(originalItems); - }, failure : function(form, action) { } @@ -1051,7 +1093,7 @@ var columns = [ {header : "单号",width : 200,dataIndex : 'serialNumber', renderer : modifyRecord}, {header : "操作员",width : 200,dataIndex : 'operator'}, - {header : "操作时间",width : 200,dataIndex : 'time' , renderer : myDateFormat}, + {header : "操作时间",width : 200,dataIndex : 'time' , renderer : myDateFormatByMinute}, {id : 'operationRemark',header : "备注",width : 120,dataIndex : 'remark'} ]; @@ -1078,7 +1120,7 @@ hidden : SSTS_WarehouseEntry_Create, iconCls : 'btn_ext_application_add', handler : function() { - addGoodPurchasePlan('insert'); + addGoodPurchasePlan(""); } }, '-', { text : '修改', @@ -1095,12 +1137,40 @@ handler : function() { deleteGoodPurchasePlan(grid); } + }, '-', { + text : '打印', + iconCls : 'icon_print', + handler : function() { + var records = grid.getSelectionModel().getSelections(); + if (records.length == 0) { + showResult("请选择要打印的采购计划单!"); + return; + } + if (records.length != 1) { + showResult("一次只能打印1个采购计划单!"); + return; + } + var ids = null; + for ( var i = 0, len = records.length; i < len; i++) { + if (ids == null) { + ids = records[i].data['id']; + } else { + ids = ids + ',' + records[i].data['id']; + } + } + top.Ext.MessageBox.confirm("请确认", "要打印选择的采购计划单吗?", + function(btn) { + if (btn == 'yes') { + printGoodPurchasePlan(ids,0); + } + }); + } }]; grid = new Ext.ux.ForgonPageGrid( { tbar : tbar, pageSize : 20, - defaultSortField : 'time', + defaultSortField : 'id', // title : '入库单列表', defaultSortDirection : 'DESC', isCheckboxSelectionModel : true, Index: ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/GoodPurchasePlanManagerImpl.java =================================================================== diff -u -r12738 -r12785 --- ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/GoodPurchasePlanManagerImpl.java (.../GoodPurchasePlanManagerImpl.java) (revision 12738) +++ ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/GoodPurchasePlanManagerImpl.java (.../GoodPurchasePlanManagerImpl.java) (revision 12785) @@ -1,110 +1,52 @@ package com.forgon.disinfectsystem.diposablegoods.service; -import java.math.BigDecimal; import java.util.ArrayList; import java.util.Collection; -import java.util.Collections; import java.util.Date; import java.util.HashMap; -import java.util.HashSet; import java.util.List; import java.util.Map; -import java.util.Set; -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.ArrayUtils; -import org.springframework.transaction.interceptor.TransactionAspectSupport; import com.forgon.Constants; -import com.forgon.directory.service.OrgUnitManager; -import com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.service.SupplyRoomConfigManager; -import com.forgon.disinfectsystem.diposablegoods.util.DisposableGoodsUtils; -import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoodsBatchStock; +import com.forgon.disinfectsystem.common.CssdUtils; +import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoods; import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoodsStock; import com.forgon.disinfectsystem.entity.assestmanagement.GodownEntry; -import com.forgon.disinfectsystem.entity.assestmanagement.GodownEntryDiposableGoodsItem; -import com.forgon.disinfectsystem.entity.assestmanagement.GodownEntryItem; import com.forgon.disinfectsystem.entity.assestmanagement.GoodPurchaseItem; import com.forgon.disinfectsystem.entity.assestmanagement.GoodPurchasePlan; -import com.forgon.disinfectsystem.entity.assestmanagement.IdentificationOfDisposableGoods; -import com.forgon.disinfectsystem.entity.basedatamanager.supplyroomconfig.SupplyRoomConfig; -import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; -import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; -import com.forgon.disinfectsystem.entity.invoicemanager.DiposableGoodsItem; -import com.forgon.disinfectsystem.entity.invoicemanager.InvoiceItem; -import com.forgon.disinfectsystem.entity.returngoodsrecord.ReturnGoodsItem; -import com.forgon.disinfectsystem.entity.returngoodsrecord.ReturnGoodsRecord; -import com.forgon.disinfectsystem.entity.sterilizationmanager.foreignproxydisinfection.ForeignProxyDisinfection; -import com.forgon.disinfectsystem.inventorymanagement.service.WriteBackInventoryHelper; import com.forgon.disinfectsystem.vo.GodownEntryItemPrintVO; import com.forgon.serialnumber.model.SerialNum; import com.forgon.serialnumber.service.SerialNumManager; -import com.forgon.tools.MathTools; -import com.forgon.tools.SqlBuilder; -import com.forgon.tools.db.DatabaseUtil; import com.forgon.tools.hibernate.ObjectDao; import com.forgon.tools.util.ForgonDateUtils; -import com.forgon.util.SqlUtils; public class GoodPurchasePlanManagerImpl implements GoodPurchasePlanManager { private ObjectDao objectDao; - private DiposableGoodsManager diposableGoodsManager; - - private DiposableGoodBatchStockManager diposableGoodBatchStockManager; - - private WriteBackInventoryHelper writeBackInventoryHelper; - private SerialNumManager serialNumManager; - - private OrgUnitManager orgUnitManager; - - private IdentificationOfDiposableGoodsManager identificationOfDiposableGoodsManager; - private SupplyRoomConfigManager supplyRoomConfigManager; + private DiposableGoodsManager diposableGoodsManager; - public void setWriteBackInventoryHelper( - WriteBackInventoryHelper writeBackInventoryHelper) { - this.writeBackInventoryHelper = writeBackInventoryHelper; + + public void setDiposableGoodsManager(DiposableGoodsManager diposableGoodsManager) { + this.diposableGoodsManager = diposableGoodsManager; } public void setObjectDao(ObjectDao objectDao) { this.objectDao = objectDao; } - public void setDiposableGoodsManager( - DiposableGoodsManager diposableGoodsManager) { - this.diposableGoodsManager = diposableGoodsManager; - } - - public void setDiposableGoodBatchStockManager( - DiposableGoodBatchStockManager diposableGoodBatchStockManager) { - this.diposableGoodBatchStockManager = diposableGoodBatchStockManager; - } - public void setSerialNumManager(SerialNumManager serialNumManager) { this.serialNumManager = serialNumManager; } - public void setOrgUnitManager(OrgUnitManager orgUnitManager) { - this.orgUnitManager = orgUnitManager; - } - - public void setIdentificationOfDiposableGoodsManager( - IdentificationOfDiposableGoodsManager identificationOfDiposableGoodsManager) { - this.identificationOfDiposableGoodsManager = identificationOfDiposableGoodsManager; - } - - public void setSupplyRoomConfigManager( - SupplyRoomConfigManager supplyRoomConfigManager) { - this.supplyRoomConfigManager = supplyRoomConfigManager; - } - public void saveOrUpdate(GodownEntry godownEntry) { objectDao.saveOrUpdate(godownEntry); } @@ -354,4 +296,77 @@ private void saveOrUpdate(GoodPurchasePlan godownEntry) { objectDao.saveOrUpdate(godownEntry); } + + // 获取入库单打印信息 + public void loadGoodPurchasePlanPrintData( + String[] invoiceIds,JSONObject jsonObject) { + Collection tousseList = CollectionUtils.emptyCollection(); + jsonObject.put("goods", tousseList); + if (ArrayUtils.isEmpty(invoiceIds)){ + return ; + } + + String idsStr = StringUtils.join(invoiceIds, ","); + String sql = String.format(" where po.id in (%s)", idsStr); + List list = objectDao.findBySql( + GoodPurchasePlan.class.getSimpleName(), sql); + if (list == null || list.size() == 0){ + return ; + } + String serialNumber = ""; + String applicant = ""; + String time = ""; + String supplierName = "";//供应商 + if(list.size() == 1){ + GoodPurchasePlan plan = list.get(0); + serialNumber = plan.getSerialNumber(); + time = ForgonDateUtils.safelyFormatDate(plan.getTime(), Constants.DATEFORMAT_YYYYMMDD, ""); + List items = plan.getItemsList(); + if(items != null && items.size() > 0){ + supplierName = items.get(0).getSupplierName(); + } + } + jsonObject.put("serialNumber", serialNumber); + jsonObject.put("applicant", applicant); + jsonObject.put("godownEntryTime", time); + jsonObject.put("supplierName", supplierName); + + tousseList = loadToussePrintData(list); + jsonObject.put("goods", tousseList); + } + + // 找出已经存在项 + private Collection loadToussePrintData( + Collection plans) { + if (CollectionUtils.isEmpty(plans)) { + return CollectionUtils.emptyCollection(); + } + + List voList = new ArrayList(); + for (GoodPurchasePlan plan : plans) { + List items = plan.getItemsList(); + for (GoodPurchaseItem item : items) { + JSONObject obj = CssdUtils.getMaterialNameAndSp(item.getName()); + DisposableGoodsStock diposableGoods = diposableGoodsManager + .getDiposableGoodsByName( + obj.optString("materialName"), + obj.optString("specification")); + GodownEntryItemPrintVO tempVo = new GodownEntryItemPrintVO(); + tempVo.setCode(diposableGoods.getExternalCode()); + tempVo.setAmount(Long.valueOf(item.getScheduleAmout())); + tempVo.setName(diposableGoods.getName()); + tempVo.setSpecification(diposableGoods.getSpecification()); + tempVo.setInventorySerialNumber(diposableGoods.getInventorySerialNumber()); + tempVo.setUnit(diposableGoods.getUnit()); + tempVo.setPrice(item.getPurchase()); + tempVo.setRowPrice(item.getTotalPrice()); + tempVo.setTotalPrice(tempVo.getRowPrice()); + tempVo.setBatchNumber(""); + tempVo.setCertification(diposableGoods.getCertification()); + voList.add(tempVo); + } + } + + return voList; } +} Index: ssts-web/src/main/resources/spring/applicationContext-disinfectsystem-service.xml =================================================================== diff -u -r12738 -r12785 --- ssts-web/src/main/resources/spring/applicationContext-disinfectsystem-service.xml (.../applicationContext-disinfectsystem-service.xml) (revision 12738) +++ ssts-web/src/main/resources/spring/applicationContext-disinfectsystem-service.xml (.../applicationContext-disinfectsystem-service.xml) (revision 12785) @@ -852,9 +852,6 @@ - - - Index: ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/action/GoodPurchaseAction.java =================================================================== diff -u -r12672 -r12785 --- ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/action/GoodPurchaseAction.java (.../GoodPurchaseAction.java) (revision 12672) +++ ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/action/GoodPurchaseAction.java (.../GoodPurchaseAction.java) (revision 12785) @@ -2,36 +2,28 @@ import java.io.IOException; import java.io.PrintWriter; -import java.text.ParseException; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; -import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import net.sf.json.JSONArray; import net.sf.json.JSONObject; + 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.Constants; -import com.forgon.component.grid.GridManager; -import com.forgon.databaseadapter.service.DateQueryAdapter; import com.forgon.directory.model.OrgUnit; import com.forgon.directory.service.OrgUnitManager; -import com.forgon.disinfectsystem.diposablegoods.service.DiposableGoodBatchStockManager; import com.forgon.disinfectsystem.diposablegoods.service.GoodPurchasePlanManager; import com.forgon.disinfectsystem.diposablegoods.service.IdentificationOfDiposableGoodsManager; -import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoodsBatchStock; -import com.forgon.disinfectsystem.entity.assestmanagement.GodownEntry; -import com.forgon.disinfectsystem.entity.assestmanagement.GodownEntryItem; import com.forgon.disinfectsystem.entity.assestmanagement.GoodPurchaseItem; import com.forgon.disinfectsystem.entity.assestmanagement.GoodPurchasePlan; -import com.forgon.tools.MapTools; import com.forgon.tools.StrutsParamUtils; import com.forgon.tools.json.JSONUtil; import com.opensymphony.xwork2.ModelDriven; @@ -41,15 +33,12 @@ @Action(value = "goodPurchaseAction") public class GoodPurchaseAction implements ModelDriven { - private GridManager gridManager; private OrgUnitManager orgUnitManager; + private GoodPurchasePlan goodPurchasePlan = new GoodPurchasePlan(); private GoodPurchasePlanManager goodPurchasePlanManager; - private DiposableGoodBatchStockManager diposableGoodBatchStockManager; - - private DateQueryAdapter dateQueryAdapter; private IdentificationOfDiposableGoodsManager identificationOfDiposableGoodsManager; public IdentificationOfDiposableGoodsManager getIdentificationOfDiposableGoodsManager() { @@ -61,24 +50,11 @@ this.identificationOfDiposableGoodsManager = identificationOfDiposableGoodsManager; } - public void setDateQueryAdapter(DateQueryAdapter dateQueryAdapter) { - this.dateQueryAdapter = dateQueryAdapter; - } - public void setGoodPurchasePlan(GoodPurchasePlan goodPurchasePlan) { this.goodPurchasePlan = goodPurchasePlan; } - public void setDiposableGoodBatchStockManager( - DiposableGoodBatchStockManager diposableGoodBatchStockManager) { - this.diposableGoodBatchStockManager = diposableGoodBatchStockManager; - } - - public void setGridManager(GridManager gridManager) { - this.gridManager = gridManager; - } - public void setGoodPurchasePlanManager( GoodPurchasePlanManager goodPurchasePlanManager) { this.goodPurchasePlanManager = goodPurchasePlanManager; @@ -88,79 +64,7 @@ this.orgUnitManager = orgUnitManager; } - /*@SuppressWarnings("unchecked") - public String viewGodownEntryList() { - HttpServletRequest request = StrutsParamUtils.getRequest(); - Map map = MapTools.convertRequestParamMap(request - .getParameterMap()); - - String sql = "where 1=1"; - - String json = gridManager.renderGrid2(map, - GodownEntry.class.getSimpleName(), sql, null); - - HttpServletResponse response = StrutsParamUtils.getResponse(); - response.setCharacterEncoding("UTF-8"); - PrintWriter out; - try { - out = response.getWriter(); - out.print(json); - out.close(); - } catch (IOException e) { - e.printStackTrace(); - } - - return null; - }*/ - /** - * 保存退库单 页面上的item只会记批次和价格,但是后台会记对应的标识号对象。这样方便以后的价格同步与删除出库单等操作 - */ - /*public void saveGodownOutEntry() { - - HttpServletResponse response = StrutsParamUtils.getResponse(); - PrintWriter out = null; - String result = "保存成功"; - response.setCharacterEncoding("UTF-8"); - Map returnMsg = new HashMap(); - returnMsg.put("success", false); - returnMsg.put("errMsg", "保存失败"); - try { - out = response.getWriter(); - } catch (IOException e) { - e.printStackTrace(); - } - boolean saveResult = false; - try { - String id = StrutsParamUtils.getPraramValue("id", ""); - - GoodPurchasePlan original = new GoodPurchasePlan(); - GoodPurchasePlan entry = goodPurchasePlan; - - if (StringUtils.isNotBlank(id)) { - // 更新入库单,里面的item有可能会更新,新建,删除标识号。 - buildGodownEntryParamsForUpdate(original, entry); - - goodPurchasePlanManager.updateGodownOutEntry_TRANS_REQUIRED(original, entry, returnMsg); - } else { - // 保存入库单,里面的item一定都是新建标识号对象,并且需要更新批次属性。 - entry = godownEntry; - buildGodownEntryParamsForSave(entry); - - godownEntryManager.saveGodownOutEntry_TRANS_REQUIRED(entry, returnMsg); - } - saveResult = true; - } catch (Exception e) { - e.printStackTrace(); - saveResult = false; - result = e.getMessage(); - } - printMsgToClient(saveResult, out, result.toString(), null); - }*/ - - - - /** * @param out * :输出流 * @param result @@ -184,19 +88,9 @@ if(StringUtils.isNotBlank(formParams)){ Long id = formParamsObj.optLong("id"); String remark = formParamsObj.optString("remark"); - String timeStr = formParamsObj.optString("time"); entry.setId(id); entry.setRemark(remark); - Date time; - try { - time = GoodPurchasePlan.DATE_FORMAT.parse(timeStr); - } catch (ParseException e) { - e.printStackTrace(); - throw new RuntimeException("日期格式错误!"); - } - entry.setTime(time); } - // items列表 setGoodPurchasePlanItemsFromParams(entry, items); } @@ -294,6 +188,8 @@ goodPurchasePlanManager.updateGoodPurchasePlan(original, entry, returnMsg); } else { + Date time = new Date(); + entry.setTime(time); // 保存入库单,里面的item一定都是新建标识号对象,并且需要更新批次属性。 entry = goodPurchasePlan; buildGoodPurchasePlanParamsForSave(entry); @@ -312,73 +208,6 @@ return null; } - /*public String loadGodownEntryItemByid() { - String id = StrutsParamUtils.getPraramValue("id", ""); - if (StringUtils.isNotBlank(id) && id.equals("0") == false) {// 初始化加载的数据 - goodPurchasePlan = goodPurchasePlanManager.getGoodPurchasePlanById(id); - List items = goodPurchasePlan.getItemsList(); - Map map = new HashMap(); - map.put("success", true); - map.put("data", items); - JSONObject jsonObject = JSONObject.fromObject(map); - try { - StrutsParamUtils.getResponse().setCharacterEncoding("UTF-8"); - StrutsParamUtils.getResponse().getWriter() - .println("[" + jsonObject.toString() + "]"); - } catch (IOException e) { - e.printStackTrace(); - } - } - return null; - }*/ - - /*public void printSomeGodownEntryItem() { - String items = StrutsParamUtils.getPraramValue("items", ""); - StringBuffer buffer = new StringBuffer(); - if (StringUtils.isNotBlank(items)) { - for (String item : items.split(";")) { - if (StringUtils.isNotBlank(item)) { - String[] itemArray = item.split(","); - String itemId = itemArray[0]; - String diposableGoodsId = itemArray[1]; - String batchNumber = itemArray[4]; - String expDate = itemArray[5]; - - String supplierName = ""; - if (itemArray.length >= 7){ - supplierName = itemArray[6]; - } - - DiposableGoodBatchStock diposableGoodBatchStock = diposableGoodBatchStockManager - .getDiposableGoodBatchStock(diposableGoodsId, - batchNumber); - GoodPurchaseItem godownEntryItem = (GoodPurchaseItem) goodPurchasePlanManager - .getGoodPurchaseItemById(itemId); - - buffer.append(godownEntryItem.getName() - + "#&" + diposableGoodBatchStock.getBarcode() - + "#&" + expDate + "#&" + supplierName + "#&" - + batchNumber + "#&" + " " + ";"); - } - } - String printValue = ""; - if (buffer.length() > 0) { - String str = buffer.toString(); - printValue = str.substring(0, str.length() - 1); - } - - HttpServletResponse response = StrutsParamUtils.getResponse(); - response.setCharacterEncoding("UTF-8"); - - try { - PrintWriter out = response.getWriter(); - out.print("{success:true,barcode:'" + printValue + "'}"); - } catch (Exception e) { - e.printStackTrace(); - } - } - }*/ - public String loadGoodPurchasePlan() { String id = StrutsParamUtils.getPraramValue("id", ""); if (StringUtils.isNotBlank(id) && StringUtils.isNumeric(id)) { @@ -472,79 +301,24 @@ } } - - - /*@SuppressWarnings("unchecked") - public String viewGodownEntryItemList() { - HttpServletRequest request = StrutsParamUtils.getRequest(); - Map map = MapTools.convertRequestParamMap(request - .getParameterMap()); - map.put("sort", "godownEntry.time;asc"); - String batchNumber = map.get("batchNumber"), name = map.get("name") - .trim(), startDate = map.get("startDate"), endDate = map - .get("endDate"); - String specification = null, diposableGoodsName = name; - if (StringUtils.isNotBlank(diposableGoodsName) - && diposableGoodsName.lastIndexOf("[") != -1) { - specification = diposableGoodsName.substring( - diposableGoodsName.lastIndexOf("[") + 1, - diposableGoodsName.length() - 1); - diposableGoodsName = diposableGoodsName.substring(0, - diposableGoodsName.lastIndexOf("[")).trim(); - } - if (StringUtils.isNotBlank(startDate)) { - startDate = dateQueryAdapter.dateAdapter(startDate.substring(0, 10) - + " 00:00:00"); - } - if (StringUtils.isNotBlank(endDate)) { - endDate = dateQueryAdapter.dateAdapter(endDate.substring(0, 10) - + " 23:59:59"); - } - String sql = "where po.batchNumber = '" + batchNumber - + "' and po.diposableGoods.name = '" + diposableGoodsName + "'"; - if (StringUtils.isNotBlank(specification)) { - sql += " and po.diposableGoods.specification = '" + specification - + "'"; - } else { - sql += " and po.diposableGoods.specification is null"; - } - - sql += " and po.godownEntry.time between " + startDate + " and " - + endDate; - String json = gridManager.renderGrid2(map, - GodownEntryItem.class.getSimpleName(), sql, - new String[] { "itemsList" }); - - HttpServletResponse response = StrutsParamUtils.getResponse(); - response.setCharacterEncoding("UTF-8"); - PrintWriter out; - try { - out = response.getWriter(); - out.print(json); - out.close(); - } catch (IOException e) { - e.printStackTrace(); - } - - return null; - }*/ - // 合并打印 - /*public void mergeLoadToussePrintData() { + public void mergeLoadToussePrintData() { try { String idsStr = StrutsParamUtils.getPraramValue("ids", ""); String[] idStrs = StringUtils.split(idsStr, ','); JSONObject jsonObject = new JSONObject(); - //goodPurchasePlanManager.loadGodownEntryPrintData(idStrs, jsonObject); + goodPurchasePlanManager.loadGoodPurchasePlanPrintData(idStrs, jsonObject); jsonObject.put("success", true); - StrutsParamUtils.getResponse().setCharacterEncoding("UTF-8"); - StrutsParamUtils.getResponse().getWriter() + HttpServletResponse response = StrutsParamUtils.getResponse(); + response.setCharacterEncoding("UTF-8"); + response.getWriter() .println(jsonObject.toString()); } catch (Exception e) { e.printStackTrace(); } - }*/ + } + @Override public GoodPurchasePlan getModel() { return goodPurchasePlan; Index: ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/GoodPurchasePlanManager.java =================================================================== diff -u -r12562 -r12785 --- ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/GoodPurchasePlanManager.java (.../GoodPurchasePlanManager.java) (revision 12562) +++ ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/GoodPurchasePlanManager.java (.../GoodPurchasePlanManager.java) (revision 12785) @@ -2,6 +2,8 @@ import java.util.Map; +import net.sf.json.JSONObject; + import com.forgon.disinfectsystem.entity.assestmanagement.GoodPurchaseItem; import com.forgon.disinfectsystem.entity.assestmanagement.GoodPurchasePlan; @@ -30,4 +32,8 @@ */ public void updateGoodPurchasePlan(GoodPurchasePlan original, GoodPurchasePlan entry, Map returnMsg); + + + public void loadGoodPurchasePlanPrintData( + String[] invoiceIds,JSONObject jsonObject); } Index: ssts-web/src/main/webapp/disinfectsystem/print/print.js =================================================================== diff -u -r12599 -r12785 --- ssts-web/src/main/webapp/disinfectsystem/print/print.js (.../print.js) (revision 12599) +++ ssts-web/src/main/webapp/disinfectsystem/print/print.js (.../print.js) (revision 12785) @@ -1406,6 +1406,17 @@ LODOP.PREVIEW(); } } +//一次性物品采购计划 +function printPurchasePlanInfo(obj,printType) { + formTypeOfPrinted = "purchasePlan"; + print2(obj); + if(printType == 0){//直接打印 + LODOP.PRINT(); + }else{//打印预览 + LODOP.SET_SHOW_MODE("HIDE_PAPER_BOARD",1); + LODOP.PREVIEW(); + } +} function createInvoiceInfo2(invoiceObj) { LODOP = getLodop(document.getElementById('LODOP'), document .getElementById('LODOP_EM')); Index: ssts-web/src/main/webapp/disinfectsystem/config/gzfdzl/print/printConfig.js =================================================================== diff -u -r12606 -r12785 --- ssts-web/src/main/webapp/disinfectsystem/config/gzfdzl/print/printConfig.js (.../printConfig.js) (revision 12606) +++ ssts-web/src/main/webapp/disinfectsystem/config/gzfdzl/print/printConfig.js (.../printConfig.js) (revision 12785) @@ -64,7 +64,7 @@ // 标题 {label : "广州复大肿瘤医院卫生材料出库单", dataIndex : '', fontSize : 15, position : ["5","32%","99%",5]}, {label : "科室:", dataIndex : 'depart', fontSize : 11, position : ["30","2%","90%",5]}, - {label : "备注:", dataIndex : 'remark', fontSize : 11, position : ["30","25%","90%",5]}, + {label : "备注:", dataIndex : 'remark2', fontSize : 11, position : ["30","25%","90%",5]}, {label : "记账日期:", dataIndex : 'sendTime', fontSize : 11, position : ["30","58%","90%",5]}, {label : "出库单号:", dataIndex : 'serialNumber2', fontSize : 11, position : ["30","80%","90%",5]}, //页脚 @@ -101,7 +101,7 @@ // 页眉名称 {label : "广州复大肿瘤医院", dataIndex : '', fontSize : 10, position : ["5","1%","90%",5]}, // 标题 - {label : "材料出库单123", dataIndex : '', fontSize : 15, position : ["20","40%","99%",5]}, + {label : "材料出库单", dataIndex : '', fontSize : 15, position : ["20","40%","99%",5]}, {label : "部门:", dataIndex : 'depart', fontSize : 11, position : ["55","2%","90%",5]}, {label : "单号:", dataIndex : 'serialNumber', fontSize : 11, position : ["55","35%","90%",5]}, {label : "仓库:消毒供应中心", dataIndex : '', fontSize : 11, position : ["55","75%","90%",5]}, @@ -269,29 +269,67 @@ currentPageNumber : {label : "第#页", fontSize : 9, position : ["1cm","40%","90%",5]}, totalPageAmount : {label : "共&页", fontSize : 9, position : ["1cm","45%","90%",5]}, goodsTable :{ - rowHeight : 25, - fontSize:12, - position : ["1.5cm","0.5cm","97%","5.5cm"], + rowHeight : 22, + fontSize:10, + position : ["1.5cm","0.2cm","100%","5.5cm"], headRepeat : true, columns : [ - {header : "序号", dataIndex : 'serialNumber', width : '30', align : 'center'}, - {header : "编码", dataIndex : 'code', width : '50', align : 'center'}, - {header : "名称", dataIndex : 'name', width : '210', align : 'left'}, - {header : "规格", dataIndex : 'specification', width : '70', align : 'center'}, - {header : "单位", dataIndex : 'unit', width : '40', align : 'center'}, - {header : "数量", dataIndex : 'amount', width : '40', align : 'center'}, - {header : "进价", dataIndex : 'price', width : '50', align : 'right'}, - {header : "进价金额", dataIndex : 'totalPrice', width : '70', align : 'right'}, + //{header : "序号", dataIndex : 'serialNumber', width : '30', align : 'center'}, + {header : "编码", dataIndex : 'code', width : '35', align : 'center'}, + {header : "名称", dataIndex : 'name', width : '170', align : 'left'}, + {header : "规格", dataIndex : 'specification', width : '100', align : 'center'}, + {header : "单位", dataIndex : 'unit', width : '30', align : 'center'}, + {header : "数量", dataIndex : 'amount', width : '30', align : 'center'}, + {header : "进价", dataIndex : 'price', width : '40', align : 'right'}, + {header : "进价金额", dataIndex : 'totalPrice', width : '50', align : 'right'}, {header : "批号", dataIndex : 'batchNumber', width : '60', align : 'right'}, - {header : "产地", dataIndex : 'producingArea', width : '60', align : 'right'}, - {header : "注册证号", dataIndex : 'certification', width : '100', align : 'right'} + {header : "产地", dataIndex : 'producingArea', width : '50', align : 'right'}, + {header : "注册证号", dataIndex : 'certification', width : '180', align : 'left'} // {header : "批次/灭菌日期", dataIndex : 'batchNumber', width : 105, align : 'center', fontSize : 11}, // {header : "失效日期", dataIndex : 'expireDate', width : 85, align : 'center', fontSize : 11}, ] } } +var purchasePlanConfig = { + headerFooter : [ + // 标题 + {label : "广州复大肿瘤医院一次性物品采购计划", dataIndex : '', fontSize : 15, position : ["0.2cm","28%","99%",5]}, + {label : "入库类型:购入入库", dataIndex : '', fontSize : 9, position : ["0.5cm","2%","90%",5]}, + {label : "供应商:", dataIndex : 'supplierName', fontSize : 9, position : ["1cm","2%","90%",5]}, + {label : "入库日期:", dataIndex : 'godownEntryTime', fontSize : 9, position : ["1cm","53%","90%",5]}, + {label : "入库单号:", dataIndex : 'serialNumber', fontSize : 9, position : ["1cm","75%","90%",5]}, + {label : "小计: ", dataIndex : 'totalPrice', fontSize : 9, position : ["7.5cm","2%","90%",4]}, + {label : "制单日期:", dataIndex : 'printTime', fontSize : 9, position : ["8cm","2%","90%",4]}, + {label : "制单人:", dataIndex : 'printUser', fontSize : 9, position : ["8cm","25%","90%",4]}, + {label : "验收:", dataIndex : '', fontSize : 9, position : ["8cm","38%","90%",4]}, + {label : "采购:", dataIndex : '', fontSize : 9, position : ["8cm","51%","90%",4]}, + {label : "复核人:", dataIndex : 'printUser', fontSize : 9, position : ["8cm","64%","90%",4]}, + {label : "总合计: ", dataIndex : 'totalPrice', fontSize : 9, position : ["8cm","77%","99%",4]} + ], + currentPageNumber : {label : "第#页", fontSize : 9, position : ["1cm","40%","90%",5]}, + totalPageAmount : {label : "共&页", fontSize : 9, position : ["1cm","45%","90%",5]}, + goodsTable :{ + rowHeight : 22, + fontSize:10, + position : ["1.5cm","0.2cm","100%","5.5cm"], + headRepeat : true, + columns : [ + {header : "编码", dataIndex : 'code', width : '35', align : 'center'}, + {header : "名称", dataIndex : 'name', width : '170', align : 'left'}, + {header : "规格", dataIndex : 'specification', width : '100', align : 'center'}, + {header : "单位", dataIndex : 'unit', width : '30', align : 'center'}, + {header : "数量", dataIndex : 'amount', width : '30', align : 'center'}, + {header : "进价", dataIndex : 'price', width : '40', align : 'right'}, + {header : "进价金额", dataIndex : 'totalPrice', width : '50', align : 'right'}, + {header : "批号", dataIndex : 'batchNumber', width : '60', align : 'right'}, + {header : "产地", dataIndex : 'producingArea', width : '50', align : 'right'}, + {header : "注册证号", dataIndex : 'certification', width : '180', align : 'left'} + ] + } +} + //大标签配置,100x80mm var largeLabelConfig = { customPrint:printLargeLabel, @@ -734,6 +772,8 @@ borrow : borrowPrintConfig, godownEntry: godownEntryConfig,// 一次性物品入库单 + purchasePlan : purchasePlanConfig, + // 小标签:50x30规格 smallLabel : smallLabelConfig, // 中标签:80x60规格