package com.example.expense.order.service; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.example.expense.base.utils.Util; import com.example.expense.entity.Order; import com.example.expense.entity.OrderItem; import com.example.expense.order.dao.OrderDao; import com.example.expense.order.dao.OrderItemDao; import com.norteksoft.mms.form.service.PlaceholderContent; import com.norteksoft.product.api.ApiFactory; import com.norteksoft.product.orm.Page; import com.norteksoft.product.util.ContextUtils; import com.norteksoft.product.util.JsonParser; @Service @Transactional public class OrderManager implements PlaceholderContent{ @Autowired private OrderDao orderDao; @Autowired private OrderItemDao orderItemDao; public Order getOrder(Long id){ return orderDao.get(id); } public Order getOrderById(Long id){ return orderDao.getOrderById(id); } public void saveOrder(Order order){ orderDao.save(order); List<OrderItem> items=new ArrayList<OrderItem>(); List<Object> objects=JsonParser.getFormTableDatas(OrderItem.class); for(Object obj:objects){ OrderItem orderItem=(OrderItem)obj; orderItem.setOrder(order); orderItem.setCompanyId(ContextUtils.getCompanyId()); orderItem.setCreatedTime(new Date()); orderItem.setCreator(ContextUtils.getUserName()); orderItemDao.save(orderItem); items.add(orderItem); } order.setOrderItems(items); } public void deleteOrder(Long id){ List<OrderItem> items=orderItemDao.getOrderItemByOrder(id); for(OrderItem item:items){ orderItemDao.delete(item); } orderDao.delete(id); } public void deleteOrder(String ids){ String[] deleteIds = ids.split(","); for (String id : deleteIds) { List<OrderItem> items=orderItemDao.getOrderItemByOrder(Long.valueOf(id)); for(OrderItem item:items){ orderItemDao.delete(item); } if(orderDao.get(Long.valueOf(id)).getDisplayIndex()!=null){ orderDao.decreaseIndex(orderDao.get(Long.valueOf(id)).getDisplayIndex());//删除一条数据前比displayIndex大的要减1 } //删除附件上传控件上传的控件 ApiFactory.getMmsService().deleteFormAttachments("ES_ORDER,"+id); orderDao.delete(Long.valueOf(id)); } } public void deleteOrder(Order order){ orderDao.delete(order); } public Page<Order> list(Page<Order>page){ return orderDao.list(page); } public Page<Order> listAll(Page<Order> portalOrderpage, String type, String rows,String pageNo) throws Exception{ if(StringUtils.isNotEmpty(rows))portalOrderpage.setPageSize(Integer.parseInt(rows)); if(StringUtils.isNotEmpty(pageNo))portalOrderpage.setPageNo(Integer.parseInt(pageNo)); portalOrderpage=orderDao.getPortalOrders(portalOrderpage,type); for (Order order : portalOrderpage.getResult()) { order.setUrl(Util.readProperties("host.app")+"/order/portal-order-input.htm?id="+order.getId()); } return portalOrderpage; } public Page<Order> search(Page<Order> page) { return orderDao.search(page); } public Page<OrderItem> getOrderItemById(Page<OrderItem> pageItem, Long id) { return orderItemDao.getOrderItemById(pageItem,id); } public List<Object> getOrderItem() { return orderItemDao.getOrderItem(); } public Integer getProductAmount(String productName,Long orderId) { List<Integer> amountList = orderItemDao.getProductAmount(productName,orderId); Integer totalAmount = 0; for(Integer itemAmount : amountList){ totalAmount+=itemAmount; } return totalAmount; } /** * 在portal里显示订单小窗体 * @param page * @param companyId * @param userId * @param type * @param rows * @return * @throws Exception */ public String getOrderHTML(Page<Order> page, String companyId, String userId, String type, String rows) throws Exception { if(StringUtils.isNotEmpty(rows))page.setPageSize(Integer.parseInt(rows)); page=orderDao.getPortalOrders(page,type); StringBuilder buffer=new StringBuilder(); buffer.append("<table class=\"leadTable\">"); buffer.append("<thead><th>订单编号</th><th>顾客</th><th>邮编</th></thead>"); buffer.append("<tbody>"); for(Order p:page.getResult()){ Order order=orderDao.get(p.getId()); String showOrderAddress=Util.readProperties("host.app")+"/order/input.htm?id="+order.getId()+"&companyId="+companyId+"&userId="+userId+"&_r=1"; buffer.append("<tr><td><a href=\"#\" title=\""+order.getOrderNumber()+"\" onclick=\"popWindow(this,'"+showOrderAddress+"');\">"+order.getOrderNumber()+"</a></td>"); buffer.append("<td style=\"width:30%;\">"+order.getCustomer()+"</td>"); buffer.append("<td style=\"width:15%;\">"+order.getPostCode()+"</td></tr>"); } buffer.append("</tbody>"); buffer.append("</table>"); return buffer.toString(); } public void saveOrder(Integer originalIndex, Integer newIndex) { orderDao.updateIndex(originalIndex, Integer.MAX_VALUE); if (originalIndex < newIndex) {// 从上往下移动 两者之间的displayIndex要自减 orderDao.decreaseIndex(originalIndex,newIndex); } else {// 从下往上移动 两者之间的displayIndex要自增 orderDao.increaseIndex(newIndex,originalIndex); } orderDao.updateIndex(Integer.MAX_VALUE, newIndex); } public Page<Order> searchSort(Page<Order> page) { return orderDao.searchSort(page); } public Integer getMaxIndex() { return orderDao.getMaxIndex(); } @Override public String placeholderContent(String placehoderId, Object entity,boolean isPrint) { StringBuilder html = new StringBuilder(); Order order = (Order)entity; if(isPrint){//打印页面时 html.append("<table class=\"form-table-border-left\">"); html.append("<tr>"); html.append("<td>"); html.append("字段1:"); html.append("</td>"); html.append("<td>"); html.append(order.getString1()==null?"":order.getString1()); html.append("</td>"); html.append("<td>"); html.append("字段2:"); html.append("</td>"); html.append("<td>"); html.append(order.getString2()==null?"":order.getString2()); html.append("</td>"); html.append("</tr>"); html.append("<tr>"); html.append("<td>"); html.append("字段3:"); html.append("</td>"); html.append("<td>"); html.append(order.getString3()==null?"":order.getString3()); html.append("</td>"); html.append("<td>"); html.append("字段4:"); html.append("</td>"); html.append("<td>"); html.append(order.getString4()==null?"":order.getString4()); html.append("</td>"); html.append("</tr>"); html.append("</table>"); }else{//表单页面时 html.append("<table class=\"form-table-border-left\">"); html.append("<tr>"); html.append("<td>"); html.append("字段1:"); html.append("</td>"); html.append("<td>"); html.append("<input name='string1' value='").append(order.getString1()==null?"":order.getString1()).append("'/>"); html.append("</td>"); html.append("<td>"); html.append("字段2:"); html.append("</td>"); html.append("<td>"); html.append("<input name='string2' value='").append(order.getString2()==null?"":order.getString2()).append("'/>"); html.append("</td>"); html.append("</tr>"); html.append("<tr>"); html.append("<td>"); html.append("字段3:"); html.append("</td>"); html.append("<td>"); html.append("<input name='string3' value='").append(order.getString3()==null?"":order.getString3()).append("'/>"); html.append("</td>"); html.append("<td>"); html.append("字段4:"); html.append("</td>"); html.append("<td>"); html.append("<input name='string4' value='").append(order.getString4()==null?"":order.getString4()).append("'/>"); html.append("</td>"); html.append("</tr>"); html.append("</table>"); } return html.toString(); } }