Index: ssts-web/src/main/resources/spring/applicationContext-disinfectsystem-service.xml =================================================================== diff -u -r19508 -r19529 --- ssts-web/src/main/resources/spring/applicationContext-disinfectsystem-service.xml (.../applicationContext-disinfectsystem-service.xml) (revision 19508) +++ ssts-web/src/main/resources/spring/applicationContext-disinfectsystem-service.xml (.../applicationContext-disinfectsystem-service.xml) (revision 19529) @@ -1292,7 +1292,17 @@ class="com.forgon.disinfectsystem.useRecord.service.UseRecordManagerImpl"> + + + + + + + + + Index: ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/TousseInstanceUseRecordManagerImpl.java =================================================================== diff -u --- ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/TousseInstanceUseRecordManagerImpl.java (revision 0) +++ ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/TousseInstanceUseRecordManagerImpl.java (revision 19529) @@ -0,0 +1,47 @@ +package com.forgon.disinfectsystem.useRecord.service; + +import java.util.Date; + +import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; +import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstanceUseRecord; +import com.forgon.disinfectsystem.entity.useRecord.UseRecord; +import com.forgon.tools.db.DatabaseUtil; +import com.forgon.tools.hibernate.BasePoManagerImpl; + +public class TousseInstanceUseRecordManagerImpl + extends BasePoManagerImpl + implements TousseInstanceUseRecordManager{ + + @Override + public TousseInstanceUseRecord get(Long useRecordId, Long tousseInstanceId) { + if(DatabaseUtil.isPoIdValid(tousseInstanceId) && DatabaseUtil.isPoIdValid(useRecordId)){ + return getFirst("tousseInstanceId="+tousseInstanceId + " and useRecordId=" + useRecordId); + } + return null; + } + + @Override + public void save(UseRecord useRecord, TousseInstance tousseInstance, + int index) { + TousseInstanceUseRecord tousseInstanceUseRecord = get(useRecord.getId(), tousseInstance.getId()); + if(tousseInstanceUseRecord == null){ + tousseInstanceUseRecord = new TousseInstanceUseRecord(); + } + tousseInstanceUseRecord.setTousseBarcode(tousseInstance.getBarcode()); + tousseInstanceUseRecord.setTousseInstanceId(tousseInstance.getId()); + tousseInstanceUseRecord.setTousseName(tousseInstance.getTousseName()); + tousseInstanceUseRecord.setUseRecordId(useRecord.getId()); + tousseInstanceUseRecord.setUseRecordDate(new Date()); + tousseInstanceUseRecord.setUseRecordSortNumber(index); + objectDao.saveOrUpdate(tousseInstanceUseRecord); + } + + @Override + public void delete(Long useRecordId, Long tousseInstanceId) { + if(DatabaseUtil.isPoIdValid(useRecordId)&&DatabaseUtil.isPoIdValid(tousseInstanceId)){ + objectDao.excuteSQL("delete from "+poName+" where tousseInstanceId=" + + tousseInstanceId + " and useRecordId=" + useRecordId); + } + } + +} Index: ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManagerImpl.java =================================================================== diff -u -r19486 -r19529 --- ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManagerImpl.java (.../UseRecordManagerImpl.java) (revision 19486) +++ ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManagerImpl.java (.../UseRecordManagerImpl.java) (revision 19529) @@ -108,7 +108,14 @@ private TousseTransitionPlanManager tousseTransitionPlanManager; private LogManager appLogManager; + + private TousseInstanceUseRecordManager tousseInstanceUseRecordManager; + public void setTousseInstanceUseRecordManager( + TousseInstanceUseRecordManager tousseInstanceUseRecordManager) { + this.tousseInstanceUseRecordManager = tousseInstanceUseRecordManager; + } + public void setAppLogManager(LogManager appLogManager) { this.appLogManager = appLogManager; } @@ -381,6 +388,10 @@ }else{ tousseInstance.setStatus(TousseInstance.STATUS_SHIPPED); } + //如果为聚合包时,则需要删除该聚合包对应使用记录中间表的数据 + if(tousseInstance.isComboTousse()){ + tousseInstanceUseRecordManager.delete(useRecord.getId(), tousseInstance.getId()); + } objectDao.saveOrUpdate(tousseInstance); updateTousseInstances.add(tousseInstance); if (++updateObjectCount % 20 == 0) { @@ -389,6 +400,7 @@ } } + int index = 0; for (String barcode : newTousseInstanceBarcodesOfUseRecord) { TousseInstance tousseInstance = allTousseInstanceMap.get(barcode); if (tousseInstance != null) { @@ -397,6 +409,15 @@ // 设置器械包实例“已使用”状态 tousseInstance.setStatus(TousseInstance.STATUS_USED); tousseInstance.setActualUsed(StringTools.defaultIfBlank(actualUsedMap.get(barcode), Constants.STR_YES)); + //如果为聚合包,则不记录所处使用记录的位置号及更新为已使用的状态 + if(!tousseInstance.isComboTousse()){ + tousseInstance.validateStatusForAddUseRecord();// 状态校验 + //设置所在使用记录的位置 + tousseInstance.setUseRecordSortNumber(++index); + }else{ + //并插入至该器械包(聚合包)对应使用记录中间表中 + tousseInstanceUseRecordManager.save(useRecord, tousseInstance, ++index); + } objectDao.saveOrUpdate(tousseInstance); updateTousseInstances.add(tousseInstance); if (++updateObjectCount % 20 == 0) { @@ -409,6 +430,9 @@ TousseInstance tousseInstance = allTousseInstanceMap.get(barcode); if (tousseInstance != null) { tousseInstance.setActualUsed(StringTools.defaultIfBlank(actualUsedMap.get(barcode), Constants.STR_YES)); + if(!tousseInstance.isComboTousse()){ + tousseInstance.setUseRecordSortNumber(++index); + } objectDao.saveOrUpdate(tousseInstance); if (++updateObjectCount % 20 == 0) { objectDao.flush(); @@ -662,7 +686,7 @@ //如果为聚合包时,则需要删除该聚合包对应使用记录中间表的数据 if(tousseInstance.isComboTousse()){ - objectDao.excuteSQL("delete from TousseInstanceUseRecord where tousseInstanceId=" + tousseInstance.getId() + " and useRecordId=" + modified.getId()); + tousseInstanceUseRecordManager.delete(modified.getId(), tousseInstance.getId()); } if (!tousseInstance.isUsed()) { throw new RuntimeException( @@ -883,18 +907,7 @@ tousseInstance.setUseRecordSortNumber(++index); }else{ //并插入至该器械包(聚合包)对应使用记录中间表中 - TousseInstanceUseRecord tousseInstanceUseRecord = (TousseInstanceUseRecord)objectDao.getBySql(TousseInstanceUseRecord.class.getSimpleName(), - " where tousseInstanceId=" + tousseInstance.getId() +" and useRecordId=" + useRecord.getId()); - if(tousseInstanceUseRecord == null){ - tousseInstanceUseRecord = new TousseInstanceUseRecord(); - } - tousseInstanceUseRecord.setTousseBarcode(tousseInstance.getBarcode()); - tousseInstanceUseRecord.setTousseInstanceId(tousseInstance.getId()); - tousseInstanceUseRecord.setTousseName(tousseInstance.getTousseName()); - tousseInstanceUseRecord.setUseRecordId(useRecord.getId()); - tousseInstanceUseRecord.setUseRecordDate(new Date()); - tousseInstanceUseRecord.setUseRecordSortNumber(++index); - objectDao.saveOrUpdate(tousseInstanceUseRecord); + tousseInstanceUseRecordManager.save(useRecord, tousseInstance, ++index); } tousseInstance.setStatus(TousseInstance.STATUS_USED); if(modifiedTousseInstance != null){ Index: ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/TousseInstanceUseRecordManager.java =================================================================== diff -u --- ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/TousseInstanceUseRecordManager.java (revision 0) +++ ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/TousseInstanceUseRecordManager.java (revision 19529) @@ -0,0 +1,29 @@ +package com.forgon.disinfectsystem.useRecord.service; + +import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; +import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstanceUseRecord; +import com.forgon.disinfectsystem.entity.useRecord.UseRecord; +import com.forgon.tools.hibernate.BasePoManager; + +public interface TousseInstanceUseRecordManager extends BasePoManager { + /** + * 根据使用记录id及包实例id获取对象 + * @param useRecordId + * @param tousseInstanceId + * @return + */ + public TousseInstanceUseRecord get(Long useRecordId,Long tousseInstanceId); + /** + * 保存对象。首先根据使用记录的包实例查询。如果没有查到,则保存,否则不保存 + * @param UseRecord + * @param tousseInstance + * @param index + */ + public void save(UseRecord UseRecord,TousseInstance tousseInstance,int index); + /** + * 删除记录 + * @param useRecordId + * @param tousseInstanceId + */ + public void delete(Long useRecordId,Long tousseInstanceId); +} Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java =================================================================== diff -u -r19486 -r19529 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java (.../TousseInstanceManagerImpl.java) (revision 19486) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java (.../TousseInstanceManagerImpl.java) (revision 19529) @@ -1,7 +1,5 @@ package com.forgon.disinfectsystem.tousse.toussedefinition.service; -import java.io.FileInputStream; -import java.io.IOException; import java.io.OutputStream; import java.math.BigDecimal; import java.sql.ResultSet; @@ -31,21 +29,13 @@ import org.apache.commons.collections4.Predicate; import org.apache.commons.lang3.StringUtils; import org.apache.log4j.Logger; -import org.apache.poi.hssf.usermodel.HSSFCell; -import org.apache.poi.hssf.usermodel.HSSFCellStyle; -import org.apache.poi.hssf.usermodel.HSSFFont; -import org.apache.poi.hssf.usermodel.HSSFRow; -import org.apache.poi.hssf.usermodel.HSSFSheet; -import org.apache.poi.hssf.usermodel.HSSFWorkbook; -import org.apache.poi.poifs.filesystem.POIFSFileSystem; import org.hibernate.Query; 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.disinfectsystem.barcode.service.BarcodeManager; -import com.forgon.disinfectsystem.basedata.becleanitem.service.BeCleanItemManager; import com.forgon.disinfectsystem.basedata.becleanitem.service.ClassifyBasketManager; import com.forgon.disinfectsystem.basedatamanager.container.service.ReviewedBasketManager; import com.forgon.disinfectsystem.basedatamanager.goodsstock.service.GoodsStockManager; @@ -86,7 +76,6 @@ import com.forgon.disinfectsystem.entity.useRecord.UseRecord; import com.forgon.disinfectsystem.entity.washanddisinfectmanager.washanddisinfectrecord.WashAndDisinfectRecord; import com.forgon.disinfectsystem.inventorymanagement.service.WriteBackInventoryHelper; -import com.forgon.disinfectsystem.stockmanage.cssdstock.service.TousseStockManager; import com.forgon.disinfectsystem.tousse.cssdhandletousses.service.CssdHandleTousseManager; import com.forgon.disinfectsystem.tousse.toussedefinition.vo.TousseOperationVo; import com.forgon.disinfectsystem.vo.ItemDefinitionVO; @@ -96,15 +85,11 @@ import com.forgon.serialnumber.model.SerialNum; import com.forgon.serialnumber.service.SerialNumManager; import com.forgon.tools.MathTools; -import com.forgon.tools.MyCollectionUtils; -import com.forgon.tools.Path; import com.forgon.tools.SpringBeanManger; import com.forgon.tools.SqlBuilder; import com.forgon.tools.date.DateTools; import com.forgon.tools.db.DatabaseUtil; import com.forgon.tools.db.InitDbConnection; -import com.forgon.tools.excel.ExcelCellStyle; -import com.forgon.tools.excel.ExcelHelper; import com.forgon.tools.hibernate.BasePoManagerImpl; import com.forgon.tools.json.JSONUtil; import com.forgon.tools.string.StringTools; @@ -1721,11 +1706,16 @@ public boolean signByInvoiceId(Collection ids, String signer, Date signDate) { //签收完发货单,需要同步TousseInstance - String hql = "update TousseInstance po set po.signedUser=?,po.signedDate=?,po.status=?"; + String update = "update TousseInstance po set po.signedUser=?,po.signedDate=?,po.status=?"; String where = SqlBuilder.build_number_IN_Statement("invoice_id",SqlBuilder.IN, ids); String where2 = " po.status = '" + TousseInstance.STATUS_SHIPPED + "'"; - hql = String.format("%s where %s and %s", hql,where,where2); + String hql = String.format("%s where %s and %s", update,where,where2); Object[] params = new Object[]{signer,signDate,TousseInstance.STATUS_SIGNED}; + objectDao.executeHQL(hql,params); + //签收聚合包。如果发货单关联的包实例所对应的聚合包下所有包实例都已经签收,那就签收这个聚合包。否则不签收 + String where3 = "id in ( select comboTousseInstanceId from TousseInstance where " + where + ")" + +" and id not in(select comboTousseInstanceId from TousseInstance where " + where+" and status<>'已签收' )"; + hql = String.format("%s where (%s) and %s", update,where3,where2); return objectDao.executeHQL(hql,params); } @@ -1745,6 +1735,15 @@ } try{ if(tousseInstance != null && canSign(tousseInstance,signerOrgUnitCoding)){ + if(tousseInstance.isComboTousse()){ + //聚合包还需要签收其下的普通包实例 + List tis = tousseInstance.getTousseInstancesBelongToThisComboTousse(objectDao); + if(CollectionUtils.isNotEmpty(tis)){ + for(TousseInstance ti : tis){ + signTousseInstance(ti,signer,signerOrgUnitCoding); + } + } + } tousseInstance.setSignedDate(new Date()); tousseInstance.setSignedUser(signer); tousseInstance.setStatus(TousseInstance.STATUS_SIGNED); @@ -1771,6 +1770,15 @@ if(tousseOperationVo == null || StringTools.isBlank(tousseOperationVo.getOperator())){ throw new RuntimeException("签收人不能为空"); } + if(tousseInstance.isComboTousse()){ + //聚合包还需要签收其下的普通包实例 + List tis = tousseInstance.getTousseInstancesBelongToThisComboTousse(objectDao); + if(CollectionUtils.isNotEmpty(tis)){ + for(TousseInstance ti : tis){ + signTousseInstance(ti,tousseOperationVo); + } + } + } tousseInstance.setSignedDate(new Date()); tousseInstance.setSignedUser(tousseOperationVo.getOperator()); tousseInstance.setStatus(TousseInstance.STATUS_SIGNED); @@ -1874,6 +1882,7 @@ + dateQueryAdapter.dateAdapter(todayStart) + " and " + dateQueryAdapter.dateAdapter(todayEnd) + + " and comboTousseInstanceId is null" + " and location = '" + departCode + "' group by tousseName,signedDate order by signedDate desc"; ResultSet rs = objectDao.executeSql(hql); @@ -2385,6 +2394,7 @@ + " td on td.id = ti.tousseDefinition_id where " + dateQueryAdapter.dateAreaSql("ti.signedDate", todayStr, todayStr, true) + " and ti.status='" + TousseInstance.STATUS_SIGNED + " '" + + " and ti.comboTousseInstanceId is null" + " and location = '" + departCode + "' group by td.tousseType,ti.signedUser"; ResultSet rs = objectDao.executeSql(hql); Index: ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/service/ServiceManagerImpl.java =================================================================== diff -u -r19464 -r19529 --- ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/service/ServiceManagerImpl.java (.../ServiceManagerImpl.java) (revision 19464) +++ ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/service/ServiceManagerImpl.java (.../ServiceManagerImpl.java) (revision 19529) @@ -1489,6 +1489,27 @@ .getTousseDefinition().getTousseType())) { return JSONUtil.buildErrorMsgJsonResult("暂不支持登记除普通器械包以外的包"); }*/ + // 1.判断是否为聚合包内的普通包实例,如果是则提示该包不能录入使用记录 + if(DatabaseUtil.isPoIdValid(tousseInstance.getComboTousseInstanceId())){ + return JSONUtil.buildJsonObject(false, "条码为" + barcode + "的包属于聚合包内的器械包,不能录入使用记录").toString(); + } + + // 2.判断是否为聚合包,如果是,则需要验证所录入的使用记录次数是否大于其包内普通包实例个数 + if(tousseInstance.isComboTousse()){ + int useTimes = objectDao.countBySql("select count(0) from TousseInstanceUseRecord where tousseInstanceId=" + tousseInstance.getId()); + List tousseInstanceList = tousseInstance.getTousseInstancesBelongToThisComboTousse(objectDao); + int size = CollectionUtils.isNotEmpty(tousseInstanceList) ? tousseInstanceList.size() : 0; + if(useTimes >= size){ + return JSONUtil.buildJsonObject(false, "条码为" + barcode + "的聚合包使用次数已经达到其包内器械包的数量,不能再录入").toString(); + } + + // 如果有签收时间则还原为签收状态,否则还原为器械包实例“已发货”状态,便于继续录使用记录 + if (tousseInstance.getSignedDate() != null) { + tousseInstance.setStatus(TousseInstance.STATUS_SIGNED); + }else{ + tousseInstance.setStatus(TousseInstance.STATUS_SHIPPED); + } + } // 验证所在科室 if (!StringUtils.equals(tousseInstance.getLocation(), departCode)) { return JSONUtil.buildErrorMsgJsonResult("该器械包不属于本科室"); @@ -2112,15 +2133,15 @@ String barcode = params.optString("barcode"); String departCode = params.optString("departCode"); if (StringUtils.isBlank(barcode)) { - return JSONUtil.buildErrorMsgJsonResult("缺失参数barcode"); + return JSONUtil.buildJsonObject(false,"缺失参数barcode").toString(); } if (StringUtils.isBlank(departCode)) { - return JSONUtil.buildErrorMsgJsonResult("缺失参数departCode"); + return JSONUtil.buildJsonObject(false,"缺失参数departCode").toString(); } final JSONObject extraParam = params.optJSONObject("extraParam"); if (extraParam == null) { - return JSONUtil.buildErrorMsgJsonResult("缺失参数extraParam"); + return JSONUtil.buildJsonObject(false,"缺失参数extraParam").toString(); } String barcodeType = null; String barcodeName = null; @@ -2134,26 +2155,22 @@ appLogManager.saveBarcodeScanLog(AcegiHelper.getLoginUser(), Log.MODEL_STERILIZATION, barcodeType, barcode, barcodeName); if (!sterilizationRecordManager.isAllSterilizationEnd(sterilizer .getName())) { - return JSONUtil.buildErrorMsgJsonResult("当前灭菌炉正在灭菌"); + return JSONUtil.buildJsonObject(false,"当前灭菌炉正在灭菌").toString(); } - return new JSONStringer().object().key("success").value(true) - .key("barcode").value(barcode).key("type") - .value("sterilizer").key("data") - .value(sterilizerToJson((Sterilizer) barcodeDevice)) - .endObject().toString(); - + JSONObject json = JSONUtil.buildJsonObject(true, sterilizerToJson((Sterilizer) barcodeDevice)); + json.put("barcode", barcode); + json.put("type", "sterilizer"); + return json.toString(); } else if (barcodeDevice instanceof Sterilisation) { Sterilisation sterilisation = (Sterilisation) barcodeDevice; barcodeType = sterilisation.getType(); barcodeName = sterilisation.getSterilisation(); appLogManager.saveBarcodeScanLog(AcegiHelper.getLoginUser(), Log.MODEL_STERILIZATION, barcodeType, barcode, barcodeName); // 灭菌程序 - return new JSONStringer().object().key("success").value(true) - .key("barcode").value(barcode).key("type") - .value("sterileMethod").key("data") - .value(sterileMethodToJson(sterilisation)) - .endObject().toString(); - + JSONObject json = JSONUtil.buildJsonObject(true, sterileMethodToJson(sterilisation)); + json.put("barcode", barcode); + json.put("type", "sterileMethod"); + return json.toString(); // 篮筐 } else if (barcodeDevice instanceof Container) { Container container = (Container) barcodeDevice; @@ -2172,6 +2189,10 @@ barcodeType = tousseInstance.getType(); barcodeName = tousseInstance.getTousseName(); appLogManager.saveBarcodeScanLog(AcegiHelper.getLoginUser(), Log.MODEL_STERILIZATION, barcodeType, barcode, barcodeName); + boolean outOfBasket = tousseInstanceManager.isTousseInstanceOutOfBasket(tousseInstance.getId()); + if(!outOfBasket){ + return JSONUtil.buildJsonObject(false, "器械包已放入篮筐,请通过扫描篮筐进行添加").toString(); + } if (TousseDefinition.STR_NO.equals(tousseDefinition.getIsTraceable())) { Collection sqlWheres = new ArrayList(); @@ -2198,17 +2219,17 @@ tousseDefinition, sqlWheres); int size = resultTousseInstanceList.size(); if (size == 0){ - return JSONUtil.buildErrorMsgJsonResult("没有待灭菌的" - + tousseDefinition.getName()); + return JSONUtil.buildJsonObject(false,"没有待灭菌的" + + tousseDefinition.getName()).toString(); } } else { if (/*!TousseInstance.STATUS_PACKED.equals(tousseInstance .getStatus()) &&*/ !TousseInstance.STATUS_REVIEWED .equals(tousseInstance.getStatus())) { - return JSONUtil.buildErrorMsgJsonResult("器械包状态异常:" - + tousseInstance.getStatus()); + return JSONUtil.buildJsonObject(false,"器械包状态异常:" + + tousseInstance.getStatus()).toString(); } resultTousseInstanceList = Collections .singleton(tousseInstance); @@ -2217,10 +2238,10 @@ JSONArray datasJSONArray = JSONArray.fromObject( resultTousseInstanceList, buildJsonConfigForTousseInstance()); - return new JSONStringer().object().key("success").value(true) - .key("barcode").value(barcode).key("type") - .value("tousseInstanceList").key("data") - .value(datasJSONArray).endObject().toString(); + JSONObject json = JSONUtil.buildJsonObject(true, datasJSONArray); + json.put("barcode", barcode); + json.put("type", "tousseInstanceList"); + return json.toString(); } else if(barcodeDevice instanceof Position){ Position position = (Position)barcodeDevice; @@ -2236,7 +2257,7 @@ barcodeType = LogManager.BARCODE_TYPE_INVALID; } appLogManager.saveBarcodeScanLog(AcegiHelper.getLoginUser(), Log.MODEL_STERILIZATION,barcodeType, barcode, barcodeName); - return JSONUtil.buildErrorMsgJsonResult("条码无效"); + return JSONUtil.buildJsonObject(false,"条码无效").toString(); } } @@ -2585,7 +2606,7 @@ .getUnTraceableTousseInstanceListByFictitiousTousseDefinition( tousseDefinition, sqlWheres); } else { - if (!taskGroup.equals(tousseInstance.getTousseDefinition().getTaskGroup())) + if (!taskGroup.equals(tousseInstance.getTaskGroup())) return JSONUtil.buildErrorMsgJsonResult("器械包【" + tousseInstance.getTousseDefinitionName() + "】不属于任务组【" + taskGroup + "】"); @@ -3473,17 +3494,16 @@ try{ JSONArray JsonArrayInvoiceIds = params.optJSONArray("invoiceIds"); if (JsonArrayInvoiceIds == null) - return JSONUtil.buildErrorMsgJsonResult("缺失参数invoiceIds"); + return JSONUtil.buildJsonObject(false,"缺失参数invoiceIds").toString(); Collection invoiceIds = JSONArray.toCollection(JsonArrayInvoiceIds, Long.class); if(invoiceIds == null || invoiceIds.isEmpty()){ - return JSONUtil.buildErrorMsgJsonResult("参数invoiceIds不包含发货单id"); + return JSONUtil.buildJsonObject(false,"参数invoiceIds不包含发货单id").toString(); } String receiver = params.getString("receiver"); invoiceManager.signInvoice(invoiceIds, receiver); - return new JSONStringer().object().key("success").value(true) - .endObject().toString(); + return JSONUtil.buildJsonObject(true).toString(); }catch(Throwable ex){ - return JSONUtil.buildErrorMsgJsonResult("保存失败。" + ex.getMessage()); + return JSONUtil.buildJsonObject(false,"保存失败。" + ex.getMessage()).toString(); } } /**