Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/action/InvoicePlanAction.java =================================================================== diff -u -r16770 -r17242 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/action/InvoicePlanAction.java (.../InvoicePlanAction.java) (revision 16770) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/action/InvoicePlanAction.java (.../InvoicePlanAction.java) (revision 17242) @@ -14,12 +14,17 @@ import java.util.Comparator; import java.util.HashMap; import java.util.HashSet; +import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Set; +import javax.naming.AuthenticationException; import javax.servlet.http.HttpServletResponse; +import com.beust.jcommander.ParameterException; +import com.forgon.disinfectsystem.entity.tousseitem.TousseItem; +import com.forgon.disinfectsystem.tousseitem.service.TousseItemManager; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import net.sf.json.JsonConfig; @@ -94,6 +99,8 @@ private ObjectDao objectDao; + private TousseItemManager tousseItemManager; + private String sendOutGoodsStoreData;// 发货扫描的物品 private String recyclingappStoreData;// 申请的物品 private String orgUnitCoding;// 申请科室 @@ -161,6 +168,11 @@ this.barcodeManager = barcodeManager; } + + public void setTousseItemManager(TousseItemManager tousseItemManager) { + this.tousseItemManager = tousseItemManager; + } + public void loadInvoice() { StrutsParamUtils.getResponse().setCharacterEncoding("UTF-8"); JsonConfig config = new JsonConfig(); @@ -491,6 +503,8 @@ } }); try{ + //终止物品前先校验该物品是否已经发货 + invoicePlanManager.checkTousseItemCanCancel(tousseItemIds); invoicePlanManager.terminateTousseItemByIds(tousseItemIds, endCase); JSONBuilder result = new JSONStringer().object(); result.key("success").value(true); @@ -499,9 +513,15 @@ writer.print(result.toString()); } catch (Exception e) { + if (e instanceof AuthenticationException){ + logger.warn(e); + } + else { + logger.error(e, e); + } JSONBuilder result = new JSONStringer().object(); result.key("success").value(false); - result.key("msg").value("终止失败!"); + result.key("msg").value("终止失败!" + e.getMessage()); result.endObject(); writer.print(result.toString()); Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManager.java =================================================================== diff -u -r17212 -r17242 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManager.java (.../InvoicePlanManager.java) (revision 17212) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManager.java (.../InvoicePlanManager.java) (revision 17242) @@ -22,6 +22,8 @@ import com.forgon.disinfectsystem.vo.ApplicationItemVO; import com.forgon.tools.hibernate.BasePoManager; +import javax.naming.AuthenticationException; + /** * @author WangYi * @date 2012-04-25 发货计划单接口 @@ -183,4 +185,11 @@ * @return */ Collection filterQueryByPara(Collection vos); + + /** + * 根据tousseItemId列表来校验这些申请物品能否被终止 + * @param tousseItemIds 申请物品的id列表 + * @throws AuthenticationException 如果抛出异常,则说明该物品已经发过货,不能被终止 + */ + void checkTousseItemCanCancel(Collection tousseItemIds) throws AuthenticationException; } Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java =================================================================== diff -u -r17212 -r17242 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java (.../InvoicePlanManagerImpl.java) (revision 17212) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java (.../InvoicePlanManagerImpl.java) (revision 17242) @@ -44,7 +44,6 @@ import com.forgon.directory.service.OrgUnitManager; import com.forgon.directory.vo.LoginUserData; import com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.service.SupplyRoomConfigManager; -import com.forgon.disinfectsystem.basedatamanager.toussedefinition.service.TousseInstanceUtils; import com.forgon.disinfectsystem.common.CssdUtils; import com.forgon.disinfectsystem.diposablegoods.service.DiposableGoodsManager; import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoods; @@ -86,6 +85,8 @@ import com.forgon.tools.string.StringTools; import com.forgon.tools.util.SqlUtils; +import javax.naming.AuthenticationException; + /** * @author WangYi * @date 2012-04-25 @@ -1965,4 +1966,13 @@ JSONUtil.addProperty(json, "data", orgUnitJSONObject); return json; } + + @Override + public void checkTousseItemCanCancel(Collection tousseItemIds) throws AuthenticationException { + String hql = "select tousseName from TousseItem where id in(:ids) and sendOutAmount > 0"; + List tousseNames = objectDao.getHibernateSession().createQuery(hql).setParameterList("ids", tousseItemIds).list(); + if (tousseNames.size() > 0){ + throw new AuthenticationException("物品:" + tousseNames + "已经发货了,不能终止!"); + } + } }