package com.jshoperx.action.backstage.product;
import com.jshoperx.action.backstage.base.BaseTAction;
import com.jshoperx.action.backstage.utils.BaseTools;
import com.jshoperx.action.backstage.utils.enums.BaseEnums.DataUsingState;
import com.jshoperx.action.backstage.utils.statickey.StaticKey;
import com.jshoperx.entity.ProductSpecificationsT;
import com.jshoperx.service.ProductSpecificationsTService;
import com.jshoperx.service.impl.Serial;
import org.apache.commons.lang3.StringUtils;
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.hibernate.criterion.Criterion;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.JSONValue;
import javax.annotation.Resource;
import java.util.*;
@Namespace("")
@ParentPackage("jshoperx")
public class ProductSpecificationsTAction extends BaseTAction {
private static final long serialVersionUID = 1L;
@Resource
private ProductSpecificationsTService productSpecificationsTService;
private String specificationsid;
private String name;
private String note;
private String sort;
private String specificationsType;
private String specificationsValue;
private Date createtime;
private String creatorid;
private String state;
private String goodsTypeId;
private String goodsTypeName;
private ProductSpecificationsT bean = new ProductSpecificationsT();
private List<Map<String,Object>> beanlist = new ArrayList<Map<String,Object>>();
private List<ProductSpecificationsT> specificationList = new ArrayList<ProductSpecificationsT>();
private List<Map<String,Object>> rows = new ArrayList<Map<String,Object>>();
private int rp;
private int page = 1;
private int total = 0;
private String specificationslist = null;
private String specificationsselect = null;
private boolean sucflag;
public String getSpecificationsid() {
return specificationsid;
}
public void setSpecificationsid(String specificationsid) {
this.specificationsid = specificationsid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getNote() {
return note;
}
public void setNote(String note) {
this.note = note;
}
public String getSort() {
return sort;
}
public void setSort(String sort) {
this.sort = sort;
}
public String getSpecificationsType() {
return specificationsType;
}
public void setSpecificationsType(String specificationsType) {
this.specificationsType = specificationsType;
}
public String getSpecificationsValue() {
return specificationsValue;
}
public void setSpecificationsValue(String specificationsValue) {
this.specificationsValue = specificationsValue;
}
public Date getCreatetime() {
return createtime;
}
public void setCreatetime(Date createtime) {
this.createtime = createtime;
}
public String getCreatorid() {
return creatorid;
}
public void setCreatorid(String creatorid) {
this.creatorid = creatorid;
}
public ProductSpecificationsT getBean() {
return bean;
}
public void setBean(ProductSpecificationsT bean) {
this.bean = bean;
}
public List<Map<String,Object>> getBeanlist() {
return beanlist;
}
public void setBeanlist(List<Map<String,Object>> beanlist) {
this.beanlist = beanlist;
}
public List<Map<String,Object>> getRows() {
return rows;
}
public void setRows(List<Map<String,Object>> rows) {
this.rows = rows;
}
public int getRp() {
return rp;
}
public void setRp(int rp) {
this.rp = rp;
}
public int getPage() {
return page;
}
public void setPage(int page) {
this.page = page;
}
public int getTotal() {
return total;
}
public void setTotal(int total) {
this.total = total;
}
public boolean isSucflag() {
return sucflag;
}
public void setSucflag(boolean sucflag) {
this.sucflag = sucflag;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public String getSpecificationslist() {
return specificationslist;
}
public void setSpecificationslist(String specificationslist) {
this.specificationslist = specificationslist;
}
public List<ProductSpecificationsT> getSpecificationList() {
return specificationList;
}
public void setSpecificationList(List<ProductSpecificationsT> specificationList) {
this.specificationList = specificationList;
}
public String getSpecificationsselect() {
return specificationsselect;
}
public void setSpecificationsselect(String specificationsselect) {
this.specificationsselect = specificationsselect;
}
public String getGoodsTypeId() {
return goodsTypeId;
}
public void setGoodsTypeId(String goodsTypeId) {
this.goodsTypeId = goodsTypeId;
}
public String getGoodsTypeName() {
return goodsTypeName;
}
public void setGoodsTypeName(String goodsTypeName) {
this.goodsTypeName = goodsTypeName;
}
/**
* 清楚错误
*/
@Override
public void validate() {
this.clearErrorsAndMessages();
}
/**
* 增加所有商品规格值
*
* @return
*/
@Action(value = "addProductSpecification", results = { @Result(name = "json", type = "json") })
public String addProductSpecification() {
ProductSpecificationsT pst = new ProductSpecificationsT();
pst.setSpecificationsid(this.getSerial().Serialid(Serial.PRODUCTSPECIFICATION));
pst.setName(this.getName().trim());
pst.setNote(this.getNote());
pst.setSort(this.getSort());
pst.setSpecificationsType(this.getSpecificationsType());
pst.setSpecificationsValue(this.getSpecificationsValue());
pst.setCreatetime(BaseTools.getSystemTime());
pst.setCreatorid(BaseTools.getAdminCreateId());
pst.setState(DataUsingState.USING.getState());
pst.setGoodsTypeId(this.getGoodsTypeId());
pst.setGoodsTypeName(this.getGoodsTypeName());
pst.setShopid(BaseTools.getShopId());
this.productSpecificationsTService.save(pst);
this.setSucflag(true);
return JSON;
}
/**
* 查询所有商品规格值
*
* @return
*/
@Action(value = "findAllProductSpecificationsT", results = { @Result(name = "json", type = "json") })
public String findAllProductSpecificationsT() {
if (StaticKey.SC.equals(this.getQtype())) {
this.findDefaultAllProductSpecificationsT();
} else {
if (StringUtils.isBlank(this.getQtype())) {
return JSON;
} else {
return JSON;
}
}
return JSON;
}
public void findDefaultAllProductSpecificationsT() {
int currentPage = page;
int lineSize = rp;
total = this.productSpecificationsTService.count(ProductSpecificationsT.class).intValue();
if(StringUtils.isNotBlank(this.getSortname())&&StringUtils.isNotBlank(this.getSortorder())){
Order order=null;
if(StringUtils.equals(this.getSortorder(), StaticKey.ASC)){
order=Order.asc(this.getSortname());
}else{
order=Order.desc(this.getSortname());
}
List<ProductSpecificationsT>list=this.productSpecificationsTService.findByCriteriaByPage(ProductSpecificationsT.class, order, currentPage, lineSize);
this.processProductSpecificationsTList(list);
}
}
public void processProductSpecificationsTList(List<ProductSpecificationsT> list) {
rows.clear();
StringBuilder sbkey = new StringBuilder();
for (Iterator<ProductSpecificationsT> it = list.iterator(); it.hasNext();) {
ProductSpecificationsT gst = (ProductSpecificationsT) it.next();
if (gst.getSpecificationsType().equals(StaticKey.ONE)) {
gst.setSpecificationsType(StaticKey.WORTTYPE);
} else if(gst.getSpecificationsType().equals(StaticKey.TWO)) {
gst.setSpecificationsType(StaticKey.IMGTYPE);
}else{
gst.setSpecificationsType(StaticKey.COLORTYPE);
}
JSONArray ja=(JSONArray)JSONValue.parse(gst.getSpecificationsValue());
int jsonsize=ja.size();
for (int i = 0; i < jsonsize; i++) {
JSONObject jo=(JSONObject)(ja.get(i));
Iterator iter = jo.keySet().iterator();
while (iter.hasNext()) {
String key = iter.next().toString();
if (key.equals(StaticKey.SPECIFIKEY)) {
sbkey.append(jo.get(key).toString()).append("");
}
}
}
gst.setSpecificationsValue(sbkey.toString());
if (gst.getNote() == null) {
gst.setNote("");
}
Map<String, Object> cellMap = new HashMap<String, Object>();
cellMap.put("id", gst.getSpecificationsid());
cellMap.put("cell", new Object[] { gst.getName() + "[" + gst.getNote() + "]", gst.getSpecificationsType(), gst.getSpecificationsValue(), gst.getSort(), BaseTools.formateDbDate(gst.getCreatetime()),"<a id='editproductspecification' name='editproductspecification' href='productspecification.jsp?operate=edit&folder=goods&specificationsid=" +gst.getSpecificationsid()+ "'>[编辑]</a>" });
rows.add(cellMap);
sbkey.delete(0, sbkey.length());
}
}
/**
* 根据规格值id获取规格值
*
* @return
*/
@Action(value = "findProductSpecificationsTByspecificationsid", results = { @Result(name = "json", type = "json") })
public String findProductSpecificationsTByspecificationsid() {
if (StringUtils.isNotBlank(this.getSpecificationsid())){
bean = this.productSpecificationsTService.findByPK(ProductSpecificationsT.class, this.getSpecificationsid());
if (bean != null) {
this.setSucflag(true);
}
}
return JSON;
}
/**
* 更新商品规格值
*
* @return
*/
@Action(value = "updateProductSpecification", results = { @Result(name = "json", type = "json") })
public String updateProductSpecification() {
if(StringUtils.isNotBlank(this.getSpecificationsid())){
ProductSpecificationsT pst=this.productSpecificationsTService.findByPK(ProductSpecificationsT.class, this.getSpecificationsid());
if(pst!=null){
pst.setName(this.getName().trim());
pst.setNote(this.getNote());
pst.setSort(this.getSort());
pst.setSpecificationsType(this.getSpecificationsType());
pst.setSpecificationsValue(this.getSpecificationsValue());
pst.setCreatetime(BaseTools.getSystemTime());
pst.setCreatorid(BaseTools.getAdminCreateId());
pst.setGoodsTypeId(this.getGoodsTypeId());
pst.setGoodsTypeName(this.getGoodsTypeName());
pst.setShopid(BaseTools.getShopId());
this.productSpecificationsTService.update(pst);
this.setSucflag(true);
return JSON;
}
}
return JSON;
}
/**
*删除商品规格值
*
* @return
*/
@Action(value = "delProductSpecification", results = { @Result(name = "json", type = "json") })
public String delProductSpecification() {
if (StringUtils.isNotBlank(this.getSpecificationsid())) {
String[] strs = StringUtils.split(this.getSpecificationsid(),StaticKey.SPLITDOT);
for(String s:strs){
ProductSpecificationsT pst=this.productSpecificationsTService.findByPK(ProductSpecificationsT.class, s);
if(pst!=null){
this.productSpecificationsTService.delete(pst);
}
}
this.setSucflag(true);
}
return JSON;
}
/**
* 查询所有可用商品规格值
*
* @return
*/
@Action(value = "findAllSpecificationsforjson", results = { @Result(name = "json", type = "json") })
public String findAllSpecificationsforjson() {
Criterion criterion=Restrictions.eq("state", DataUsingState.USING.getState());
specificationList = this.productSpecificationsTService.findByCriteria(ProductSpecificationsT.class, criterion);
if (!specificationList.isEmpty()) {
this.setSucflag(true);
}
return JSON;
}
/**
* 根据商品类型查询规格值信息
*
* @return
*/
@Action(value = "findAllSpecificationsByGoodsTypeId", results = { @Result(name = "json", type = "json") })
public String findAllSpecificationsByGoodsTypeId(){
if(StringUtils.isNotBlank(this.getGoodsTypeId())){
Criterion criterion=Restrictions.and(Restrictions.eq("state", DataUsingState.USING.getState())).add(Restrictions.eq("goodsTypeId", this.getGoodsTypeId()));
specificationList=this.productSpecificationsTService.findByCriteria(ProductSpecificationsT.class, criterion);
this.setSucflag(true);
}
return JSON;
}
}