package com.jshop.action;
import java.sql.Date;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.json.annotations.JSON;
import org.springframework.stereotype.Controller;
import com.jshop.action.tools.BaseTools;
import com.jshop.action.tools.PrintInvoiceParam;
import com.jshop.action.tools.Validate;
import com.jshop.entity.CartT;
import com.jshop.entity.InvoicetempleteT;
import com.jshop.entity.OrderT;
import com.jshop.entity.ShippingAddressT;
import com.jshop.service.CartTService;
import com.jshop.service.InvoicetempleteTService;
import com.jshop.service.OrderTService;
import com.jshop.service.ShippingAddressTService;
import com.jshop.service.impl.CartTServiceImpl;
import com.jshop.service.impl.InvoicetempleteTServiceImpl;
import com.jshop.service.impl.OrderTServiceImpl;
import com.jshop.service.impl.ShippingAddressTServiceImpl;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
@ParentPackage("jshop")
@Controller("printInvoiceSingleTAction")
public class PrintInvoiceSingleTAction extends ActionSupport {
private OrderTService orderTService;
private CartTService cartTService;
private ShippingAddressTService shippingAddressTService;
private InvoicetempleteTService invoicetempleteTService;
private String orderid;
private PrintInvoiceParam pi = new PrintInvoiceParam();
private List<CartT> ct = new ArrayList<CartT>();
private List invoicerows = new ArrayList();
private boolean slogin = false;
private boolean sprintinvoiceflag = false;
@JSON(serialize = false)
public OrderTService getOrderTService() {
return orderTService;
}
public void setOrderTService(OrderTService orderTService) {
this.orderTService = orderTService;
}
@JSON(serialize = false)
public CartTService getCartTService() {
return cartTService;
}
public void setCartTService(CartTService cartTService) {
this.cartTService = cartTService;
}
@JSON(serialize = false)
public ShippingAddressTService getShippingAddressTService() {
return shippingAddressTService;
}
public void setShippingAddressTService(ShippingAddressTService shippingAddressTService) {
this.shippingAddressTService = shippingAddressTService;
}
@JSON(serialize = false)
public InvoicetempleteTService getInvoicetempleteTService() {
return invoicetempleteTService;
}
public void setInvoicetempleteTService(InvoicetempleteTService invoicetempleteTService) {
this.invoicetempleteTService = invoicetempleteTService;
}
public List<CartT> getCt() {
return ct;
}
public void setCt(List<CartT> ct) {
this.ct = ct;
}
public String getOrderid() {
return orderid;
}
public void setOrderid(String orderid) {
this.orderid = orderid;
}
public PrintInvoiceParam getPi() {
return pi;
}
public void setPi(PrintInvoiceParam pi) {
this.pi = pi;
}
public boolean isSlogin() {
return slogin;
}
public void setSlogin(boolean slogin) {
this.slogin = slogin;
}
public boolean isSprintinvoiceflag() {
return sprintinvoiceflag;
}
public void setSprintinvoiceflag(boolean sprintinvoiceflag) {
this.sprintinvoiceflag = sprintinvoiceflag;
}
public List getInvoicerows() {
return invoicerows;
}
public void setInvoicerows(List invoicerows) {
this.invoicerows = invoicerows;
}
/**
* 清理错误
*/
@Override
public void validate() {
this.clearErrorsAndMessages();
}
/**
* 验证登陆
*
* @return
*/
public void CheckLogin() {
String adminid = (String) ActionContext.getContext().getSession().get(BaseTools.BACK_USER_SESSION_KEY);
if (adminid != null) {
this.setSlogin(false);
} else {
this.setSlogin(true);
}
}
/**
* 显示是否开具发票了
*
* @return
*/
private String GetChangeHasprintfpinvoice(String hasprintfpinvoice) {
String temp;
if (hasprintfpinvoice.equals("1")) {
temp = "是";
} else {
temp = "否";
}
return temp;
}
@SuppressWarnings("deprecation")
private void GetChangeTime(Date t) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd-hh-yy-ss");
String time = formatter.format(t.getTime()).toString();
pi.setPurchasetime(time);
}
/**
* 获取订单发货地址
*
* @param orderid
*/
public void GetOrderShippingAddress(String orderid) {
ShippingAddressT st = this.getShippingAddressTService().findShippingAddressByOrderid(orderid, "1");
if (st != null) {
pi.setShippingusername(st.getUsername());
pi.setCountry(st.getCountry());
pi.setProvince(st.getProvince());
pi.setCity(st.getCity());
pi.setDistrict(st.getDistrict());
pi.setStreet(st.getStreet());
pi.setPostcode(st.getPostcode());
}
}
/**
* 根据id获取订单详细
*
* @param orderid
*/
public void GetOrderDetailByOrderId(String orderid) {
OrderT o = this.getOrderTService().findOrderDetailByorderid(orderid);
if (o != null) {
GetChangeTime(Date.valueOf(o.getPurchasetime().toString()));
pi.setOrderid(o.getOrderid());
pi.setHasprintfpinvoice(GetChangeHasprintfpinvoice(o.getHasprintfpinvoice()));
pi.setAmount(String.valueOf(o.getAmount()));
pi.setShouldpay(String.valueOf(o.getShouldpay()));
pi.setFreight(String.valueOf(o.getFreight()));
pi.setInvoicenumber(o.getDeliverynumber());//发货单号
}
}
/**
*根据订单id获取购物车中商品数据
*/
public void findCartGoodsByOrderid(String orderid) {
List<CartT> ct = this.getCartTService().findCartGoodsByOrderid(orderid);
if (ct != null) {
invoicerows.clear();
for (Iterator it = ct.iterator(); it.hasNext();) {
CartT c = (CartT) it.next();
Map<String, Object> cellMap = new HashMap<String, Object>();
cellMap.put("goodsname", c.getGoodsname());
cellMap.put("usersetnum", c.getUsersetnum());
cellMap.put("favorable", c.getFavorable());
cellMap.put("needquantity", c.getNeedquantity());
cellMap.put("subtotal", c.getSubtotal());
invoicerows.add(cellMap);
}
}
}
/**
* 读取发货单模板
*/
public void GetPrintInvoiceValue() {
InvoicetempleteT it = this.getInvoicetempleteTService().findInvoicetempleteByState("1");
pi.setKindeditorCode(it.getKindeditorCode());
}
/**
* 初始化发货单打印
*
* @return
*/
@Action(value = "InitPrintInvoice", results = {
@Result(name = "json",type="json")
})
public String InitPrintInvoice() {
this.CheckLogin();
if(!this.isSlogin()){
if (Validate.StrNotNull(this.getOrderid())) {
String orderid = this.getOrderid().trim();
GetOrderDetailByOrderId(orderid);
GetOrderShippingAddress(orderid);
findCartGoodsByOrderid(orderid);
GetPrintInvoiceValue();
this.setSprintinvoiceflag(true);
return "json";
}
this.setSprintinvoiceflag(false);
return "json";
}else{
this.setSprintinvoiceflag(false);
return "json";
}
}
}