package com.lanyotech.pps.mvc; import java.util.Date; import java.util.List; import com.easyjf.container.annonation.Action; import com.easyjf.container.annonation.Inject; import com.easyjf.core.support.ActionUtil; import com.easyjf.core.support.query.QueryObject; import com.easyjf.util.CommUtil; import com.easyjf.web.Module; import com.easyjf.web.Page; import com.easyjf.web.WebForm; import com.easyjf.web.core.AbstractPageCmdAction; import com.easyjf.web.tools.IPageList; import com.lanyotech.pps.domain.StockIncome; import com.lanyotech.pps.domain.StockIncomeItem; import com.lanyotech.pps.query.BaseBillQuery; import com.lanyotech.pps.service.IBaseCountService; import com.lanyotech.pps.service.IProductStockService; import com.lanyotech.pps.service.IStockDetailAccountService; import com.lanyotech.pps.service.IStockIncomeService; import com.lanyotech.pps.service.UserContext; /** * StockIncomeAction * @author EasyJWeb 1.0-m2 * $Id: StockIncomeAction.java,v 0.0.1 2010-6-13 23:27:23 EasyJWeb 1.0-m3 with ExtJS Exp $ */ @Action public class StockIncomeAction extends AbstractPageCmdAction { @Inject private IStockIncomeService service; @Inject private IStockDetailAccountService accountService; @Inject private IProductStockService productStockService; @Inject private IBaseCountService countService; /* * set the current service * return service */ public void setService(IStockIncomeService service) { this.service = service; } public void setAccountService(IStockDetailAccountService accountService) { this.accountService = accountService; } public void setProductStockService(IProductStockService productStockService) { this.productStockService = productStockService; } public void setCountService(IBaseCountService countService) { this.countService = countService; } public Page doIndex(WebForm f, Module m) { return page("list"); } public Page doList(WebForm form) { QueryObject qo = form.toPo(BaseBillQuery.class); String types=CommUtil.null2String(form.get("types")); if(!"".equals(types)){ qo.addQuery("obj.types",new Integer(types),"="); } IPageList pageList = service.getStockIncomeBy(qo); form.jsonResult(pageList); return Page.JSONPage; } public Page doRemove(WebForm form) { Long id = new Long(CommUtil.null2String(form.get("id"))); service.delStockIncome(id); return pageForExtForm(form); } public Page doSave(WebForm form) { StockIncome object = form.toPo(StockIncome.class); handleItems(form,object); if (!hasErrors()){ service.addStockIncome(object); countService.recordNewSn("StockIncome", new Integer(object.getSn())); } return pageForExtForm(form); } public Page doUpdate(WebForm form) { Long id = new Long(CommUtil.null2String(form.get("id"))); StockIncome object = service.getStockIncome(id); form.toPo(object, true); handleItems(form,object); if (!hasErrors()) service.updateStockIncome(id, object); return pageForExtForm(form); } public Page doView(WebForm form) { Long id = new Long(CommUtil.null2String(form.get("id"))); StockIncome object = service.getStockIncome(id); form.jsonResult(object.toJSonObjectWithItems()); return Page.JSONPage; } protected void handleItems(WebForm form, StockIncome object) { List list = ActionUtil.parseMulitItems(form, StockIncomeItem.class, new String[] { "id", "product", "price", "num", "amount", "remark" }, "item_"); List<Long> deletes=object.updateItems(list); if(!deletes.isEmpty()){ for(Long id:deletes){ this.service.delStockIncomeItem(id); } } } public Page doAudit(WebForm form) { Long id = new Long(CommUtil.null2String(form.get("id"))); StockIncome object = service.getStockIncome(id); if(object.getAuditing()==null || !object.getAuditing()){ accountService.createStockDetailAccount(object); productStockService.changeProductStock(object); object.setAuditing(true); object.setAuditTime(new Date()); object.setAuditor(UserContext.getUser()); this.service.updateStockIncome(object.getId(), object); } else { this.addError("msg", "该单据已经审核,无法重复审核!"); } return this.pageForExtForm(form); } }