jessica.chen 7 years ago
commit 15f1df839b

@ -291,7 +291,7 @@ public class WmsEnumUtil {
public enum QUEUE_NAME{ public enum QUEUE_NAME{
SUCCESS_QUEUE(1,"success_queue","成功消息队列"), SUCCESS_QUEUE(1,"success_queue","成功消息队列"),
FAIL_QUEUE(1,"fail_queue","成功消息队列"); FAIL_QUEUE(2,"fail_queue","成功消息队列");
private int value; private int value;
private String name; private String name;

@ -47,10 +47,13 @@ public class WmsHqlPack {
//查询参数封装 //查询参数封装
HqlPack.getStringLikerPack(wmsDocMovementDetails.getOrderNo(), "orderNo", result); HqlPack.getStringLikerPack(wmsDocMovementDetails.getOrderNo(), "orderNo", result);
HqlPack.getStringEqualPack(wmsDocMovementDetails.getOrganizeCode(), "organizeCode", result);
HqlPack.getNumEqualPack(CommonEnumUtil.IS_VAILD.VAILD.getValue(), "isValid", result);
HqlPack.getNumEqualPack(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(),
"isDeleted", result);
return result.toString(); return result.toString();
} }
/** /**
* *
* *
@ -62,14 +65,17 @@ public class WmsHqlPack {
//查询参数封装 //查询参数封装
HqlPack.getStringLikerPack(wmsDocMovementMaster.getOrderNo(), "orderNo", result); HqlPack.getStringLikerPack(wmsDocMovementMaster.getOrderNo(), "orderNo", result);
HqlPack.getStringLikerPack(wmsDocMovementMaster.getMoveType(), "moveType", result); HqlPack.getNumEqualPack(wmsDocMovementMaster.getMoveType(), "moveType", result);
HqlPack.getNumEqualPack(wmsDocMovementMaster.getOrderStatus(), "orderStatus", result); HqlPack.getNumEqualPack(wmsDocMovementMaster.getBusiType(), "busiType", result);
HqlPack.getNumEqualPack(wmsDocMovementMaster.getPartNo(), "partNo", result); HqlPack.getStringLikerPack(wmsDocMovementMaster.getCustomerNo(), "customerNo", result);
HqlPack.timeBuilder(wmsDocMovementMaster.getCreateDateTimeStart(), wmsDocMovementMaster.getCreateDateTimeEnd(), "createDatetime", result, true);
HqlPack.getNumEqualPack(wmsDocMovementMaster.getIsValid(), "isValid", result);
HqlPack.getStringEqualPack(wmsDocMovementMaster.getOrganizeCode(), "organizeCode", result);
HqlPack.getNumEqualPack(wmsDocMovementMaster.getIsValid(), "isValid", result);
HqlPack.getNumEqualPack(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(),
"isDeleted", result);
return result.toString(); return result.toString();
} }
/** /**
* PO * PO
* *
@ -92,44 +98,22 @@ public class WmsHqlPack {
} }
/** /**
* 线 * 线
* *
* @param wmsRoutingDetail * @param routingCode
* @return * @return
*/ */
public static String packHqlWmsRoutingDetail(WmsRoutingDetail wmsRoutingDetail) { public static String packHqlWmsRoutingChildren(String routingCode) {
StringBuffer result = new StringBuffer(); StringBuffer result = new StringBuffer();
HqlPack.getStringLikerPack(wmsRoutingDetail.getRoutingCode(), "routingCode", result); HqlPack.getStringLikerPack(routingCode, "routingCode", result);
HqlPack.getStringLikerPack(wmsRoutingDetail.getOpStep(), "opStep", result);
HqlPack.getNumEqualPack(wmsRoutingDetail.getOkSeq(), "okSeq", result);
HqlPack.getNumEqualPack(wmsRoutingDetail.getNgSeq(), "ngSeq", result);
HqlPack.getNumEqualPack(wmsRoutingDetail.getSeq(), "seq", result);
HqlPack.getNumEqualPack(wmsRoutingDetail.getParentSeq(), "parentSeq", result);
HqlPack.timeBuilder(wmsRoutingDetail.getCreateDateTimeStart(), wmsRoutingDetail.getCreateDateTimeEnd(), "createDatetime", result, true);
HqlPack.getNumEqualPack(wmsRoutingDetail.getIsValid(), "isValid", result);
HqlPack.getStringEqualPack(wmsRoutingDetail.getOrganizeCode(), "organizeCode", result);
return result.toString();
}
/** HqlPack.getNumEqualPack(CommonEnumUtil.IS_VAILD.VAILD.getValue(), "isValid", result);
* 线 HqlPack.getNumEqualPack(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(),
* "isDeleted", result);
* @param wmsRoutingAssign
* @return
*/
public static String packHqlWmsRoutingAssign(WmsRoutingAssign wmsRoutingAssign) {
StringBuffer result = new StringBuffer();
HqlPack.getStringLikerPack(wmsRoutingAssign.getWhNo(), "whNo", result);
HqlPack.getStringLikerPack(wmsRoutingAssign.getZoneNo(), "zoneNo", result);
HqlPack.getStringLikerPack(wmsRoutingAssign.getLocateNo(), "locateNo", result);
HqlPack.getStringLikerPack(wmsRoutingAssign.getPartNo(), "partNo", result);
HqlPack.getStringLikerPack(wmsRoutingAssign.getVendorNo(), "vendorNo", result);
HqlPack.getStringLikerPack(wmsRoutingAssign.getRoutingCode(), "routingCode", result);
HqlPack.timeBuilder(wmsRoutingAssign.getCreateDateTimeStart(), wmsRoutingAssign.getCreateDateTimeEnd(), "createDatetime", result, true);
HqlPack.getStringEqualPack(wmsRoutingAssign.getOrganizeCode(), "organizeCode", result);
return result.toString(); return result.toString();
} }
/** /**
* 线 * 线
* *
@ -140,10 +124,11 @@ public class WmsHqlPack {
StringBuffer result = new StringBuffer(); StringBuffer result = new StringBuffer();
HqlPack.getStringLikerPack(wmsRoutingMaster.getRoutingCode(), "routingCode", result); HqlPack.getStringLikerPack(wmsRoutingMaster.getRoutingCode(), "routingCode", result);
HqlPack.getStringLikerPack(wmsRoutingMaster.getRoutingName(), "routingName", result); HqlPack.getStringLikerPack(wmsRoutingMaster.getRoutingName(), "routingName", result);
HqlPack.getNumEqualPack(wmsRoutingMaster.getSeq(), "seq", result);
HqlPack.timeBuilder(wmsRoutingMaster.getCreateDateTimeStart(), wmsRoutingMaster.getCreateDateTimeEnd(), "createDatetime", result, true);
HqlPack.getNumEqualPack(wmsRoutingMaster.getIsValid(), "isValid", result);
HqlPack.getStringEqualPack(wmsRoutingMaster.getOrganizeCode(), "organizeCode", result); HqlPack.getStringEqualPack(wmsRoutingMaster.getOrganizeCode(), "organizeCode", result);
HqlPack.getNumEqualPack(wmsRoutingMaster.getIsValid(), "isValid", result);
HqlPack.getNumEqualPack(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(),
"isDeleted", result);
return result.toString(); return result.toString();
} }
@ -155,14 +140,18 @@ public class WmsHqlPack {
*/ */
public static String packHqlWmsPart(WmsPart wmsPart) { public static String packHqlWmsPart(WmsPart wmsPart) {
StringBuffer result = new StringBuffer(); StringBuffer result = new StringBuffer();
HqlPack.getStringLikerPack(wmsPart.getPartNo(), "partNo", result); HqlPack.getStringLikerPack(wmsPart.getPartNo(), "partNo", result);
HqlPack.getStringLikerPack(wmsPart.getPartName(), "partName", result);
HqlPack.timeBuilder(wmsPart.getCreateDateTimeStart(), wmsPart.getCreateDateTimeEnd(), "createDatetime", result, true); HqlPack.timeBuilder(wmsPart.getCreateDateTimeStart(), wmsPart.getCreateDateTimeEnd(), "createDatetime", result, true);
HqlPack.getStringLikerPack(wmsPart.getPartSpec(), "partSpec", result); HqlPack.getStringLikerPack(wmsPart.getPartSpec(), "partSpec", result);
HqlPack.getStringLikerPack(wmsPart.getPartType(), "partType", result); HqlPack.getStringLikerPack(wmsPart.getPartType(), "partType", result);
HqlPack.getStringLikerPack(wmsPart.getAbc(), "abc", result);
HqlPack.getNumEqualPack(wmsPart.getIqc(), "iqc", result);
HqlPack.getStringLikerPack(wmsPart.getPartGroup(), "partGroup", result);
HqlPack.getStringEqualPack(wmsPart.getOrganizeCode(), "organizeCode", result); HqlPack.getStringEqualPack(wmsPart.getOrganizeCode(), "organizeCode", result);
HqlPack.getNumEqualPack(wmsPart.getIsValid(), "isValid", result);
HqlPack.getNumEqualPack(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(),
"isDeleted", result);
return result.toString(); return result.toString();
} }
@ -296,9 +285,12 @@ public class WmsHqlPack {
StringBuffer result = new StringBuffer(); StringBuffer result = new StringBuffer();
//查询参数封装 //查询参数封装
HqlPack.getNumEqualPack(wmsTransType.getIsValid(), "isValid", result);
HqlPack.getStringLikerPack(wmsTransType.getTransTypeCode(), "transTypeCode", result); HqlPack.getStringLikerPack(wmsTransType.getTransTypeCode(), "transTypeCode", result);
HqlPack.getStringLikerPack(wmsTransType.getTransTypeName(), "transTypeName", result); HqlPack.getStringLikerPack(wmsTransType.getTransTypeName(), "transTypeName", result);
HqlPack.getStringLikerPack(wmsTransType.getProgCode(), "progCode", result);
HqlPack.getStringLikerPack(wmsTransType.getOrganizeCode(), "organizeCode", result);
HqlPack.getNumEqualPack(wmsTransType.getIsValid(), "isValid", result);
HqlPack.getNumEqualPack(wmsTransType.getIsDeleted(), "isDeleted", result);
return result.toString(); return result.toString();
} }
@ -331,7 +323,7 @@ public class WmsHqlPack {
HqlPack.getStringLikerPack(wareHouse.getName(), "name", result); HqlPack.getStringLikerPack(wareHouse.getName(), "name", result);
HqlPack.getNumEqualPack(wareHouse.getIsValid(), "isValid", result); HqlPack.getNumEqualPack(wareHouse.getIsValid(), "isValid", result);
HqlPack.getStringEqualPack(wareHouse.getOrganizeCode(), "organizeCode", result); HqlPack.getStringEqualPack(wareHouse.getOrganizeCode(), "organizeCode", result);
HqlPack.getNumEqualPack(WmsEnumUtil.IS_DELETED.INDELETED.getValue(),"isDeleted",result); HqlPack.getNumEqualPack(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), "isDeleted", result);
return result.toString(); return result.toString();
} }
@ -355,7 +347,7 @@ public class WmsHqlPack {
HqlPack.getStringLikerPack(basVendor.getIsAsn().toString(), "isAsn", result); HqlPack.getStringLikerPack(basVendor.getIsAsn().toString(), "isAsn", result);
} }
HqlPack.getNumEqualPack(basVendor.getIsValid(), "isValid", result); HqlPack.getNumEqualPack(basVendor.getIsValid(), "isValid", result);
HqlPack.getNumEqualPack(WmsEnumUtil.IS_DELETED.INDELETED.getValue(),"isDeleted",result); HqlPack.getNumEqualPack(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), "isDeleted", result);
return result.toString(); return result.toString();
} }
@ -375,7 +367,7 @@ public class WmsHqlPack {
HqlPack.getStringLikerPack(wmsOpType.getProCode(), "proCode", result); HqlPack.getStringLikerPack(wmsOpType.getProCode(), "proCode", result);
HqlPack.getNumEqualPack(wmsOpType.getIsValid(), "isValid", result); HqlPack.getNumEqualPack(wmsOpType.getIsValid(), "isValid", result);
HqlPack.getStringEqualPack(wmsOpType.getOrganizeCode(), "organizeCode", result); HqlPack.getStringEqualPack(wmsOpType.getOrganizeCode(), "organizeCode", result);
HqlPack.getNumEqualPack(WmsEnumUtil.IS_DELETED.INDELETED.getValue(),"isDeleted",result); HqlPack.getNumEqualPack(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), "isDeleted", result);
return result.toString(); return result.toString();
} }
@ -390,7 +382,7 @@ public class WmsHqlPack {
HqlPack.getStringEqualPack(wareHouse.getName(), "name", result); HqlPack.getStringEqualPack(wareHouse.getName(), "name", result);
HqlPack.getStringEqualPack(wareHouse.getCode(), "code", result); HqlPack.getStringEqualPack(wareHouse.getCode(), "code", result);
HqlPack.getNumNOEqualPack(wareHouse.getId(), "id", result); HqlPack.getNumNOEqualPack(wareHouse.getId(), "id", result);
HqlPack.getNumEqualPack(WmsEnumUtil.IS_DELETED.INDELETED.getValue(),"isDeleted",result); HqlPack.getNumEqualPack(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), "isDeleted", result);
return result.toString(); return result.toString();
} }
@ -408,7 +400,7 @@ public class WmsHqlPack {
HqlPack.getStringEqualPack(basVendor.getVendorNo(), "vendorNo", result); HqlPack.getStringEqualPack(basVendor.getVendorNo(), "vendorNo", result);
HqlPack.getStringEqualPack(basVendor.getVendorName(), "vendorName", result); HqlPack.getStringEqualPack(basVendor.getVendorName(), "vendorName", result);
HqlPack.getStringEqualPack(basVendor.getVendorDesc(), "vendorDesc", result); HqlPack.getStringEqualPack(basVendor.getVendorDesc(), "vendorDesc", result);
HqlPack.getNumEqualPack(WmsEnumUtil.IS_DELETED.INDELETED.getValue(),"isDeleted",result); HqlPack.getNumEqualPack(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), "isDeleted", result);
return result.toString(); return result.toString();
} }
@ -416,7 +408,7 @@ public class WmsHqlPack {
StringBuffer result = new StringBuffer(); StringBuffer result = new StringBuffer();
HqlPack.getStringEqualPack(wmsOpType.getOpTypeCode(), "opTypeCode", result); HqlPack.getStringEqualPack(wmsOpType.getOpTypeCode(), "opTypeCode", result);
HqlPack.getStringEqualPack(wmsOpType.getOpTypeName(), "opTypeName", result); HqlPack.getStringEqualPack(wmsOpType.getOpTypeName(), "opTypeName", result);
HqlPack.getNumEqualPack(WmsEnumUtil.IS_DELETED.INDELETED.getValue(),"isDeleted",result); HqlPack.getNumEqualPack(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), "isDeleted", result);
return result.toString(); return result.toString();
} }
@ -428,6 +420,7 @@ public class WmsHqlPack {
*/ */
public static String packHqlWmsZones(WmsZones wmsZones) { public static String packHqlWmsZones(WmsZones wmsZones) {
StringBuffer result = new StringBuffer(); StringBuffer result = new StringBuffer();
//有效性 //有效性
HqlPack.getNumEqualPack(wmsZones.getIsValid(), "isValid", result); HqlPack.getNumEqualPack(wmsZones.getIsValid(), "isValid", result);
//仓库代码 //仓库代码
@ -436,6 +429,9 @@ public class WmsHqlPack {
HqlPack.getStringLikerPack(wmsZones.getAreaNo(), "areaNo", result); HqlPack.getStringLikerPack(wmsZones.getAreaNo(), "areaNo", result);
//存储区代码 //存储区代码
HqlPack.getStringLikerPack(wmsZones.getZoneNo(), "zoneNo", result); HqlPack.getStringLikerPack(wmsZones.getZoneNo(), "zoneNo", result);
//删除标记
HqlPack.getNumEqualPack(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), "isDeleted", result);
return result.toString(); return result.toString();
} }
@ -447,14 +443,18 @@ public class WmsHqlPack {
*/ */
public static String packHqlBasCustomer(BasCustomer basCustomer) { public static String packHqlBasCustomer(BasCustomer basCustomer) {
StringBuffer result = new StringBuffer(); StringBuffer result = new StringBuffer();
//有效性
HqlPack.getNumEqualPack(basCustomer.getIsValid(), "isValid", result);
//客户编号 //客户编号
HqlPack.getStringLikerPack(basCustomer.getCustNo(), "custNo", result); HqlPack.getStringLikerPack(basCustomer.getCustNo(), "custNo", result);
//聯係人 //客户简称
HqlPack.getStringLikerPack(basCustomer.getCustOwner(), "custOwner", result); HqlPack.getStringLikerPack(basCustomer.getCustName(), "custName", result);
//電話號碼 //客户全称
HqlPack.getStringLikerPack(basCustomer.getCustTel(), "custTel", result); HqlPack.getStringLikerPack(basCustomer.getCustDesc(), "custDesc", result);
HqlPack.getStringEqualPack(basCustomer.getOrganizeCode(), "organizeCode", result);
HqlPack.getNumEqualPack(basCustomer.getIsValid(), "isValid", result);
HqlPack.getNumEqualPack(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(),
"isDeleted", result);
return result.toString(); return result.toString();
} }
@ -466,8 +466,10 @@ public class WmsHqlPack {
*/ */
public static String packHqlWmsShippingFlag(WmsShippingFlag wmsShippingFlag) { public static String packHqlWmsShippingFlag(WmsShippingFlag wmsShippingFlag) {
StringBuffer result = new StringBuffer(); StringBuffer result = new StringBuffer();
//有效性
//有效性,删除标记
HqlPack.getNumEqualPack(wmsShippingFlag.getIsValid(), "isValid", result); HqlPack.getNumEqualPack(wmsShippingFlag.getIsValid(), "isValid", result);
HqlPack.getNumEqualPack(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), "isDeleted", result);
//供应商编号 //供应商编号
HqlPack.getStringLikerPack(wmsShippingFlag.getFlagNo(), "flagNo", result); HqlPack.getStringLikerPack(wmsShippingFlag.getFlagNo(), "flagNo", result);
//供应商简称 //供应商简称
@ -479,6 +481,7 @@ public class WmsHqlPack {
/** /**
* ASN * ASN
*
* @param wmsASNMaster * @param wmsASNMaster
* @return * @return
*/ */
@ -494,7 +497,7 @@ public class WmsHqlPack {
HqlPack.getStringLikerPack(wmsASNMaster.getPoNo(), "poNo", result); HqlPack.getStringLikerPack(wmsASNMaster.getPoNo(), "poNo", result);
//有效性 //有效性
HqlPack.getNumEqualPack(wmsASNMaster.getIsValid(), "isValid", result); HqlPack.getNumEqualPack(wmsASNMaster.getIsValid(), "isValid", result);
HqlPack.getNumEqualPack(WmsEnumUtil.IS_DELETED.INDELETED.getValue(),"isDeleted",result); HqlPack.getNumEqualPack(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), "isDeleted", result);
HqlPack.getStringEqualPack(wmsASNMaster.getOrganizeCode(), "organizeCode", result); HqlPack.getStringEqualPack(wmsASNMaster.getOrganizeCode(), "organizeCode", result);
return result.toString(); return result.toString();
} }
@ -553,13 +556,14 @@ public class WmsHqlPack {
/** /**
* *
*
* @return * @return
*/ */
public static String packHqlwmsASNMasterDetailsUnique(WmsASNMasterDetails wmsASNMasterDetails) { public static String packHqlwmsASNMasterDetailsUnique(WmsASNMasterDetails wmsASNMasterDetails) {
StringBuffer result = new StringBuffer(); StringBuffer result = new StringBuffer();
//有效性 //有效性
HqlPack.getNumEqualPack(wmsASNMasterDetails.getIsValid(), "isValid", result); HqlPack.getNumEqualPack(wmsASNMasterDetails.getIsValid(), "isValid", result);
HqlPack.getNumEqualPack(WmsEnumUtil.IS_DELETED.INDELETED.getValue(),"isDeleted",result); HqlPack.getNumEqualPack(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), "isDeleted", result);
return result.toString(); return result.toString();
} }
@ -586,17 +590,19 @@ public class WmsHqlPack {
//有效性 //有效性
HqlPack.getNumEqualPack(wmsASNMasterDetails.getIsValid(), "isValid", result); HqlPack.getNumEqualPack(wmsASNMasterDetails.getIsValid(), "isValid", result);
HqlPack.getNumEqualPack(WmsEnumUtil.IS_DELETED.INDELETED.getValue(),"isDeleted",result); HqlPack.getNumEqualPack(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), "isDeleted", result);
return result.toString(); return result.toString();
} }
/** /**
* *
*
* @param wmsFGInStock * @param wmsFGInStock
* @return * @return
*/ */
public static String packHqlWmsFGInStock(WmsFGInStock wmsFGInStock) { public static String packHqlWmsFGInStock(WmsFGInStock wmsFGInStock) {
StringBuffer result = new StringBuffer(); StringBuffer result = new StringBuffer();
HqlPack.getStringLikerPack(wmsFGInStock.getOrderNo(), "orderNo", result); HqlPack.getStringLikerPack(wmsFGInStock.getOrderNo(), "orderNo", result);
HqlPack.getStringLikerPack(wmsFGInStock.getWoNo(), "woNo", result); HqlPack.getStringLikerPack(wmsFGInStock.getWoNo(), "woNo", result);
HqlPack.getStringLikerPack(wmsFGInStock.getPartNo(), "partNo", result); HqlPack.getStringLikerPack(wmsFGInStock.getPartNo(), "partNo", result);
@ -614,12 +620,13 @@ public class WmsHqlPack {
HqlPack.getStringLikerPack(wmsFGInStock.getShippingFlag(), "shippingFlag", result); HqlPack.getStringLikerPack(wmsFGInStock.getShippingFlag(), "shippingFlag", result);
HqlPack.getStringLikerPack(wmsFGInStock.getMfgLogNo(), "mfgLogNo", result); HqlPack.getStringLikerPack(wmsFGInStock.getMfgLogNo(), "mfgLogNo", result);
HqlPack.getNumEqualPack(wmsFGInStock.getIsValid(), "isValid", result); HqlPack.getNumEqualPack(wmsFGInStock.getIsValid(), "isValid", result);
HqlPack.getNumEqualPack(wmsFGInStock.getIsDeleted(),"isDeleted",result); HqlPack.getNumEqualPack(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), "isDeleted", result);
return result.toString(); return result.toString();
} }
/** /**
* *
*
* @param wmsTaskInfo * @param wmsTaskInfo
* @return * @return
*/ */
@ -631,7 +638,7 @@ public class WmsHqlPack {
HqlPack.getStringLikerPack(wmsTaskInfo.getReMark(), "reMark", result); HqlPack.getStringLikerPack(wmsTaskInfo.getReMark(), "reMark", result);
HqlPack.getNumEqualPack(wmsTaskInfo.getTaskStatus(), "taskStatus", result); HqlPack.getNumEqualPack(wmsTaskInfo.getTaskStatus(), "taskStatus", result);
HqlPack.getNumEqualPack(wmsTaskInfo.getIsValid(), "isValid", result); HqlPack.getNumEqualPack(wmsTaskInfo.getIsValid(), "isValid", result);
HqlPack.getNumEqualPack(wmsTaskInfo.getIsDeleted(),"isDeleted",result); HqlPack.getNumEqualPack(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), "isDeleted", result);
return result.toString(); return result.toString();
} }
} }

Loading…
Cancel
Save