java异常处理

数据重复异常类

/**
* 数据重复异常
*
*
*/
@SuppressWarnings("serial")
public class DuplicateDataExcepption extends Exception {

// 重复的数据信息
private Object data;

public Object getData() {
return data;
}

public void setData(Object data) {
this.data = data;
}

/**
*
* @param data 重复的数据
*/
public DuplicateDataExcepption(Object data) {
super();
this.data = data;
}

public DuplicateDataExcepption(String message) {
super(message);
}

public DuplicateDataExcepption(String message, Object data) {
super(message);
this.data = data;
}
}



库存异常类


/**
* 库存不足异常
*
*
*/
public class InventoryShortageException extends RuntimeException {

private static final long serialVersionUID = -2059212682755129635L;

/**
* 实际库存信息
*/
private GoodsInventory goodsInventory;

/**
* 扣减库存数
*/
private int decreaseCount;

// public InventoryShortageException() {
// super();
// }

/**
*
* @param goodsInventory 实际库存信息
* @param decreaseCount 扣减库存数
*/
public InventoryShortageException(GoodsInventory goodsInventory, int decreaseCount) {
super();
this.goodsInventory = goodsInventory;
this.decreaseCount = decreaseCount;
}

/**
*
* @param goodsSku SKU
* @param availableCount 实际库存
* @param decreaseCount 扣减库存数
*/
public InventoryShortageException(String goodsSku, int availableCount, int decreaseCount) {
super();
GoodsInventory tmp = new GoodsInventory();
tmp.setGoodsSku(goodsSku);
tmp.setCount(availableCount);
this.goodsInventory = tmp;

this.decreaseCount = decreaseCount;
}

public GoodsInventory getGoodsInventory() {
return goodsInventory;
}

public void setGoodsInventory(GoodsInventory goodsInventory) {
this.goodsInventory = goodsInventory;
}

public int getAmount() {
return decreaseCount;
}

public void setAmount(int amount) {
this.decreaseCount = amount;
}

@Override
public String getMessage() {
StringBuilder sb = new StringBuilder();
sb.append("库存不足 (")
.append("sku: ")
.append(this.goodsInventory.getGoodsSku())
.append(", storeId: ")
.append(this.goodsInventory.getStoreId())
.append(", storeShelfId: ")
.append(this.goodsInventory.getStoreShelfId())
.append("实际库存:").append(this.goodsInventory.getCount())
.append("需要扣减: ").append(this.decreaseCount)
.append(")");
return sb.toString();
}


}




业务层类


/**
* 验证sku是否库存
* @param order
* @return
*/
private boolean checkInventory(GoodsTransferOrder order){
int count=0;
for (GoodsTransferOrderItem item : order.getItems()) {
String sku=item.getGoodsSku();
Integer decreaseCount=item.getGoodsCount();
Integer storeId=item.getFromStoreId();
Integer storeShelfId=item.getFromStoreShelfId();
if (sku == null || decreaseCount == 0) {
return false;
}

Integer storeSum = this.goodsInventoryService.getInventory(sku, storeId, storeShelfId);

//前提是存在库存信息,并且库存数足够 ,才能通过;否则抛出异常
if (storeSum == null || storeSum < decreaseCount) {
throw new InventoryShortageException(sku,storeSum, decreaseCount);
}else{
count++;
}
}

return count==order.getItems().size();
}




控制器类


/**
* 添加单
* @param attr
* @param sessionUser
* @param goodsSku
* @param goodsName
* @param goodsCount
* @param fromStoreId
* @param fromStoreShelfId
* @param toStoreId
* @param toStoreShelfId
* @param fromStoreShelf
* @param toStoreShelf
* @param order
* @return
*/
@RequestMapping("save")
public String save(RedirectAttributes attr,
@ModelAttribute(App.SESSION_USER_KEY) SessionUser sessionUser,
@RequestParam("goodsSku") List<String> goodsSku,
@RequestParam("goodsName") List<String> goodsName,
@RequestParam("goodsCount") List<Integer> goodsCount,
@RequestParam("fromStoreId") List<Integer> fromStoreId,
@RequestParam("fromStoreShelfId") List<Integer> fromStoreShelfId,
@RequestParam("toStoreId") List<Integer> toStoreId,
@RequestParam("toStoreShelfId") List<Integer> toStoreShelfId,
@RequestParam("fromStoreShelf") List<String> fromStoreShelf,
@RequestParam("toStoreShelf") List<String> toStoreShelf,
GoodsTransferOrder order){

List<GoodsTransferOrderItem> items = new ArrayList<>(3);
order.setItems(items);
try {

for (int i = 0; i < goodsSku.size(); i++) {
GoodsTransferOrderItem item = new GoodsTransferOrderItem();
item.setGoodsSku(goodsSku.get(i));
item.setGoodsName(goodsName.get(i));
item.setFromStoreId(fromStoreId.get(i));
item.setFromStoreShelfId(fromStoreShelfId.get(i));
item.setGoodsCount(goodsCount.get(i));
item.setToStoreId(toStoreId.get(i));
item.setToStoreShelfId(toStoreShelfId.get(i));
item.setFromStoreShelf(fromStoreShelf.get(i));
item.setToStoreShelf(toStoreShelf.get(i));
items.add(item);

if(item.getFromStoreId().equals(item.getToStoreId())){
throw new DuplicateDataExcepption("sku:"+item.getGoodsSku()+"---->调出仓库与调入仓库不能相同");
}

}

if (order.getId() == null) {
order.setStatus(1);
String dateStr = dft.format(Calendar.getInstance().getTime());
String fmt =String.format("LS-%s-",dateStr)+"%d";
order.setSerialNumber(tableKeyService.nextSerialNumber("goods_transfer_order",fmt));
// 制单人
order.setOperatorId(sessionUser.getUserId());
this.goodsTransferOrderService.save(order);
attr.addFlashAttribute("successMessage", "g.tips.success");
}else {
this.goodsTransferOrderService.update(order);
attr.addFlashAttribute("successMessage", "g.tips.success");
}
} catch (InventoryShortageException e) {
attr.addFlashAttribute("errorMessage", e.getGoodsInventory().getGoodsSku() + "库存不足");
}catch(DuplicateDataExcepption e){
attr.addFlashAttribute("errorMessage", e.getMessage());
}

return "redirect:/allocateOrder/list";
}



jsp页面

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
<c:if test="${!empty successMessage }">
<div class="alert alert-success alert-dismissable">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true"></button>
<spring:message code="${successMessage }" text="${successMessage }" />
</div>
</c:if>
<c:if test="${!empty infoMessage }">
<div class="alert alert-info alert-dismissable">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true"></button>
<spring:message code="${infoMessage }" text="${infoMessage }" />
</div>
</c:if>
<c:if test="${!empty warningMessage }">
<div class="alert alert-warning alert-dismissable">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true"></button>
<spring:message code="${warningMessage }" text="${warningMessage }" />
</div>
</c:if>
<c:if test="${!empty errorMessage }">
<div class="alert alert-danger alert-dismissable">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true"></button>
<spring:message code="${errorMessage }" text="${errorMessage }" />
</div>
</c:if>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值