您的位置:首页 > 其它

会员卡管理系统技术解析(十四) 库存卡作废记录添加

2015-05-31 20:44 525 查看

会员卡管理系统技术解析(十四) 库存卡作废记录添加

库存卡作废记录添加主要包含根据会员卡类型以及保管地点查询相对应符合条件的卡,然后进行库存卡作废记录添加录入等操作功能。

1.1界面效果图




3.1.2.1(图1)

从界面可以看到本项目这里用到的控件有:

控件名称
说明
级联下拉框(easyui-combobox)
第一要设置每个控件的id,第二设置样式不设置也有默认,第三(data-options)是数据操作:可以设置控件的一些属性和事件
日期控件(easyui-datebox)
文本输入框(表单input)
表格控件(easyui-datagrid)

1.2功能实现

第1步:数据库


1、表与关系:

本功能主要涉及:库存卡作废记录表、库存卡作废明细表、会员卡保管地点表、会员卡建卡明细表、会员卡类型表、会员卡卡种表等。





表1:库存卡作废记录表(Pw_StoreCardInvalid)
用于存放库存卡作废记录信息。

列名
数据类型
主键/外键
说明
StoreCardInvalidID
int
主键
库存卡记录自动编号
RecordNum
nchar(18)
记录编号
BookerID
int
外键
员工表,登记人
BookTime
date
登记时间
VerifierID
int
外键
员工表,审核人
VerifyTime
date
审核时间
IsVerify
nchar(5)
审核状态
InvalidReason
nchar(200)
作废原因
表2:库存卡作废明细表(Pw_StoreCardInvalidDetails)
主要包含如下字段信息:会员卡号、作废前状态、记录作废否、审核相关等。

列名

数据类型
主键/外键
说明
StoreCardInvalidDetailsID
int
主键
库存卡明细自动编号
StoreCardInvalidID
int
外键
库存卡作废记录表,审核相关
MembershipCardDetailsID
int
外键
建卡明细表,会员卡卡号
InvalidStateBefore
int
外键
基础属性集合明细表,作废前状态
RecordInvalid
bit
记录作废否
表3: 会员卡保管地点(Sys_MembershipCardStorageLocation)

用于存放会员卡保管地点信息

列名
数据类型
主键/外键
说明
MembershipCardStorageLocationID
int
主键
会员卡保管地点ID
MembershipCardStorageLocationFatherID
int
外键
会员卡保管地点父ID
MarkerTypeID
int
外键
标记类型ID
Name
nchar(20)
 
名称
LevelAtTheEndOfTheTag
bit
 
末级标记否
DuplicatedRecord
bit
 
复制记录否
Code
nchar(10)
 
代码
EncodingRules
int
 
编码规则
表4:会员卡建卡明细表(Pw_MembershipCardDetails)
用于存放建卡记录明细信息
列名
数据类型
主键/外键
说明
MembershipCardDetailsID
int
主键
会员卡建卡明细ID
MembershipCardID
int
外键
会员卡建卡记录表, 会员卡建卡记录ID
MembershipCardTypeID
int
外键
会员卡类型表, 会员卡类型ID
MembershipCardStorageLocationID
int
外键
会员卡保管地点表,保管地点ID
StateOfTheMembershipCardID
int
外键
基础属性集合明细表,会员卡状态ID
ChangeTheMembershipCardID
int
外键
基础属性集合明细表,变更会员卡状态ID
UpdateRankID
int
外键
会员卡级别表,会员卡级别ID
KeeperID
int
外键
员工表,保管人ID
Remarks
nchar(200)
备注
MembershipCardCardNumber
nchar(50)
会员卡卡号
SpecifyTheValidityTime
date
有效期指定时间
ValidityTime
date
有效期时间
WriteCardStatus
nchar(10)
写卡状态
WriteTime
date
写卡时间
NominalAmount
money
面值金额
表5:会员卡卡种表(Sys_MembersKakaKind)

用于存放会员卡卡种表信息

列名
数据类型
主键/外键
说明
MembersKakaKindID
int
主键
会员卡卡种ID
MembersKakaCode
nchar(10)
 
会员卡卡种代码
MembersKakaKindsOfNames
nchar(30)
 
会员卡卡种名称
Invalid
bit
 
作废否
表6:会员卡类型(Sys_ MembershipCardType)

用于存放会员卡类型信息

列名
数据类型
主键/外键
说明
MembershipCardTypeID
int
主键
会员卡类型ID
MembersKakaKindID
int
外键
会员卡卡种ID
MembershipCardLevelID
int
外键
会员卡级别ID
MembershipCardIssuanceID
int
外键
会员卡发行方式ID
UseObjectID
int
外键
使用对象ID
DailyManagementFormID
int
外键
日常管理形式ID
TrackMediumID
int
外键
磁道介质ID
PreferentialWayID
int
外键
优惠方式ID
CardValidityPeriodSpecifiedID
int
外键
卡有效期指定方式ID
HairpinWithFaceValue
bit
 
发卡时有面值否
StoredValueCoupons
bit
 
储值优惠券标记否
ParticipateInTheScore
bit
 
参与消费积分否
leadCode
nchar(10)
 
前导码
PostpositionCode
nchar(10)
 
后置码
RequireTheSystemToMakeCard
bit
 
需要系统制卡否
NeedCompulsoryInspectionCard
bit
 
需要强制验卡否
LengthOfThePeriodOfValidity
nchar(10)
 
有效期长度
TrackContentEncryption
bit
 
磁道内容加密否
Invalid
bit
 
作废否
MembershipCardTypeCode
nchar(10)
 
会员卡类型代码
MembershipCardTypeName
nchar(30)
 
会员卡类型名称
KeepRecordsOfConsumption
bit
 
保存消费记录否
TotalLengthCardNumber
int
 
卡号总长度
OpenTheCouponAccount
bit
 
开通优惠券账户否

第2步:服务层接口(IService)

在“MEMBCERP.IService”这个包下的“KuCunKaGuanLiIService”类中,定义添加库存卡作废信息相关的方法接口,代码如下:

public List<SysMembershipCardStorageLocation> SelectAllBaoGuanDiDian();						/*查询全部保管地点*/
public List SelectKuCunKa(int HuiYuanKaLeiXingID, int ShouHuoDiDianID);						/*根据会员卡类型和收货地点查询相对应的库存卡*/
public int addKuCunKaZuoFei(PwStoreCardInvalid entity);										/*新增库存卡作废记录*/
public int addKuCunKaZuoFeiMingXi(PwStoreCardInvalidDetails entity);						/*新增库存卡作废明细*/
public List<PwMembershipCardDetails> SelectUpdateJianKaMingXi(int JianKaMingXiID);			/*根据建卡明细ID,查询需要修改的建卡明细信息*/
public boolean EditJianKaMingXi(PwMembershipCardDetails entity);							/*修改建卡明细*/
public boolean UpdateKuCunKaZuoFei(PwStoreCardInvalid entity);								/*修改库存卡作废*/


第3步:服务层(Service)

在“MEMBCERP.Service”这个包下的“KuCunKaGuanLiService”类中,定义添加库存卡作废信息相关的方法接口实现,代码如下:

/*查询全部库存卡作废记录*/
@Override
public List SelectAllKuCunKaZuoFeiJiLu(){
try {/*尝试运行代码*/
StringBuffer queryString=new StringBuffer();/*实例化StringBuffer*/
/*拼接需要查询的字段*/
queryString.append("SELECT KuCunKaZuoFeiJiLu.storeCardInvalidId, KuCunKaZuoFeiJiLu.recordNum, " +
"DengJiRen.staffName, KuCunKaZuoFeiJiLu.bookTime, KuCunKaZuoFeiJiLu.isVerify, " +
"KuCunKaZuoFeiJiLu.verifyTime, ShenHeRen.staffName, KuCunKaZuoFeiJiLu.invalidReason ");
/*实例化表*/
queryString.append("FROM PwStoreCardInvalid AS KuCunKaZuoFeiJiLu, " +
"SysStaff AS DengJiRen, SysStaff AS ShenHeRen ");
/*表与关系 满足条件*/
queryString.append("WHERE KuCunKaZuoFeiJiLu.bookerId = DengJiRen.staffId " +
"AND KuCunKaZuoFeiJiLu.verifierId = ShenHeRen.staffId ");
return dao.findByHql(queryString.toString());
} catch (Exception e) {/*尝试运行代码出现错误,执行异常处理*/
return null;
}
}
/*根据会员卡作废ID,查询与上对应的面值金额*/
@Override
public List SelectMianZhiJinE(int HuiYanKaZuoFeiID){
try {/*尝试运行代码*/
StringBuffer queryString=new StringBuffer();/*实例化StringBuffer*/
/*拼接需要查询的字段*/
queryString.append("SELECT HuiYuanKaMingXi.nominalAmount ");
/*实例化表*/
queryString.append("FROM PwStoreCardInvalidDetails AS KuCunKaZuoFeiMingXi, " +
"PwMembershipCardDetails AS HuiYuanKaMingXi ");
/*表与关系 满足条件*/
queryString.append("WHERE KuCunKaZuoFeiMingXi.storeCardInvalidId = ? " +
"AND KuCunKaZuoFeiMingXi.membershipCardDetailsId = HuiYuanKaMingXi.membershipCardDetailsId ");
return dao.findByHql(queryString.toString(),new Object[]{HuiYanKaZuoFeiID});
} catch (Exception e) {/*尝试运行代码出现错误,执行异常处理*/
return null;
}
}
/*根据库存卡作废ID查询库存卡作废明细*/
@Override
public List SelectKuCunKaZuoFeiMingXi(int KuCunKaZuoFeiID){
try {/*尝试运行代码*/
StringBuffer queryString=new StringBuffer();/*实例化StringBuffer*/
/*拼接需要查询的字段*/
queryString.append("SELECT KuCunKaZuoFeiMingXi.storeCardInvalidDetailsId, " +
"HuiYuanKaMingXi.nominalAmount, HuiYuanKaKaZhong.membersKakaKindsOfNames, " +
"HuiYuanKaLeiXing.membershipCardTypeName, BaoGuanDiDian.name, " +
"HuiYuanKaMingXi.membershipCardCardNumber, KuCunKaZuoFeiMingXi.recordInvalid, " +
"HuiYuanKaMingXi.membershipCardDetailsId  ");
/*实例化表*/
queryString.append("FROM PwStoreCardInvalidDetails AS KuCunKaZuoFeiMingXi, " +
"PwMembershipCardDetails AS HuiYuanKaMingXi, SysMembershipCardType AS HuiYuanKaLeiXing, " +
"SysMembersKakaKind AS HuiYuanKaKaZhong, SysMembershipCardStorageLocation AS BaoGuanDiDian ");
/*表与关系 满足条件*/
queryString.append("WHERE KuCunKaZuoFeiMingXi.storeCardInvalidId = ? " +
"AND KuCunKaZuoFeiMingXi.membershipCardDetailsId = HuiYuanKaMingXi.membershipCardDetailsId " +
"AND HuiYuanKaMingXi.membershipCardTypeId = HuiYuanKaLeiXing.membershipCardTypeId " +
"AND HuiYuanKaLeiXing.membersKakaKindId = HuiYuanKaKaZhong.membersKakaKindId " +
"AND HuiYuanKaMingXi.membershipCardStorageLocationId = BaoGuanDiDian.membershipCardStorageLocationId  ");
return dao.findByHql(queryString.toString(),new Object[]{KuCunKaZuoFeiID});
} catch (Exception e) {/*尝试运行代码出现错误,执行异常处理*/
return null;
}
}
/* 根据模糊记录编号 MoHuJiLuBianHao
* 模糊作废原因 MoHuZuoFeiYuanYin
* 查询全部库存卡作废记录
* */
@Override
public List SelectAllKuCunKaZuoFeiJiLu(String MoHuJiLuBianHao, String MoHuZuoFeiYuanYin){
try {/*尝试运行代码*/
StringBuffer queryString=new StringBuffer();/*实例化StringBuffer*/
/*拼接需要查询的字段*/
queryString.append("SELECT KuCunKaZuoFeiJiLu.storeCardInvalidId, KuCunKaZuoFeiJiLu.recordNum, " +
"DengJiRen.staffName, KuCunKaZuoFeiJiLu.bookTime, KuCunKaZuoFeiJiLu.isVerify," +
"KuCunKaZuoFeiJiLu.verifyTime, ShenHeRen.staffName, KuCunKaZuoFeiJiLu.invalidReason ");
/*实例化表*/
queryString.append("FROM PwStoreCardInvalid AS KuCunKaZuoFeiJiLu, " +
"SysStaff AS DengJiRen, SysStaff AS ShenHeRen ");
/*表与关系 满足条件*/
queryString.append("WHERE KuCunKaZuoFeiJiLu.bookerId = DengJiRen.staffId " +
"AND KuCunKaZuoFeiJiLu.verifierId = ShenHeRen.staffId " +
"AND KuCunKaZuoFeiJiLu.recordNum like '%' + ?+'%' " +
"AND KuCunKaZuoFeiJiLu.invalidReason like '%' + ?+'%' ");
return dao.findByHql(queryString.toString(),new Object[]{MoHuJiLuBianHao,MoHuZuoFeiYuanYin});
} catch (Exception e) {/*尝试运行代码出现错误,执行异常处理*/
return null;
}
}
/*查询全部保管地点*/
@Override
public List<SysMembershipCardStorageLocation> SelectAllBaoGuanDiDian(){
try {/*尝试运行代码*/
StringBuffer queryString = new StringBuffer();/*实例化StringBuffer*/
/*实例化表*/
queryString.append("FROM SysMembershipCardStorageLocation AS BaoGuanDiDian ");
/*表与关系 满足条件*/
queryString.append("WHERE BaoGuanDiDian.membershipCardStorageLocationFatherId = 1 ");
return dao.findByHql(queryString.toString());
} catch (Exception e) {/*尝试运行代码出现错误,执行异常处理*/
return null;
}
}
/* 根据会员卡类型 HuiYuanKaLeiXingID
* 收货地点 ShouHuoDiDianID
* 查询相对应的库存卡
* */
@Override
public List SelectKuCunKa(int HuiYuanKaLeiXingID, int ShouHuoDiDianID){
try {/*尝试运行代码*/
StringBuffer queryString = new StringBuffer();/*实例化StringBuffer*/
/*拼接需要查询的字段*/
queryString.append("SELECT HuiYuanKaMingXi.membershipCardDetailsId, " +
"HuiYuanKaMingXi.membershipCardCardNumber, HuiYuanKaMingXi.nominalAmount," +
"HuiYuanKaMingXi.changeTheMembershipCardId ");
/*实例化表*/
queryString.append("FROM PwMembershipCardDetails AS HuiYuanKaMingXi, " +
"SysMembershipCardType AS HuiYuanKaLeiXing ,SysDailyManagementForm AS RiChangGuanLiXingShi ");
/*表与关系 满足条件*/
queryString.append("WHERE HuiYuanKaMingXi.changeTheMembershipCardId BETWEEN 12 AND 13 " +
"AND HuiYuanKaMingXi.membershipCardTypeId = ? " +
"AND HuiYuanKaMingXi.membershipCardStorageLocationId = ? " +
"AND HuiYuanKaMingXi.membershipCardTypeId = HuiYuanKaLeiXing.membershipCardTypeId " +
"AND HuiYuanKaLeiXing.dailyManagementFormId = RiChangGuanLiXingShi.dailyManagementFormId " +
"AND RiChangGuanLiXingShi.allowInvalid = true ");
return dao.findByHql(queryString.toString(),new Object[]{HuiYuanKaLeiXingID, ShouHuoDiDianID});
} catch (Exception e) {/*尝试运行代码出现错误,执行异常处理*/
return null;
}
}
/*新增库存卡作废记录*/
@Override
public int addKuCunKaZuoFei(PwStoreCardInvalid entity){
try {/*尝试运行代码*/
return dao.addAndGetId4Integer(entity);
} catch (Exception e) {/*尝试运行代码出现错误,执行异常处理*/
return 0;
}
}
/*新增库存卡作废明细*/
@Override
public int addKuCunKaZuoFeiMingXi(PwStoreCardInvalidDetails entity){
try {/*尝试运行代码*/
return dao.addAndGetId4Integer(entity);
} catch (Exception e) {/*尝试运行代码出现错误,执行异常处理*/
return 0;
}
}
/* 根据建卡明细ID JianKaMingXiID
* 查询需要修改的建卡明细信息
* */
@Override
public List<PwMembershipCardDetails> SelectUpdateJianKaMingXi(int JianKaMingXiID){
try {/*尝试运行代码*/
StringBuffer queryString=new StringBuffer();/*实例化StringBuffer*/
/*实例化表*/
queryString.append("FROM PwMembershipCardDetails AS JianKaMingXi ");
/*表与关系 满足条件*/
queryString.append("WHERE JianKaMingXi.membershipCardDetailsId = ? ");
return dao.findByHql(queryString.toString(),new Object[]{JianKaMingXiID});
} catch (Exception e) {/*尝试运行代码出现错误,执行异常处理*/
return null;
}
}
/*修改建卡明细*/
@Override
public boolean EditJianKaMingXi(PwMembershipCardDetails entity){
try {/*尝试运行代码*/
return dao.edit(entity);
} catch (Exception e) {/*尝试运行代码出现错误,执行异常处理*/
return false;
}
}


第4步:方法层(Action)

在“MEMBCERP.Action”这个包下的“KuCunKaGuanLiAction”类中,定义添加库存卡作废信息相关的方法,代码如下:

/*查询全部保管地点*/
public String getAllBaoGuanDiDian() {
/*实例化一个Object数组*/
JSONObject jsObj=new JSONObject();
/*实例化一个Array数组*/
JSONArray jsArr  = new JSONArray();
/*调用服务层方法,查询全部保管地点*/
List<SysMembershipCardStorageLocation> lstBaoGuanDiDian =this.kuCunKaGuanLiService.SelectAllBaoGuanDiDian();
/*循环遍历服务层返回的结果集*/
for (int i = 0; i < lstBaoGuanDiDian.size(); i++) {
SysMembershipCardStorageLocation lsBaoGuanDiDian = lstBaoGuanDiDian.get(i);
/*清空jsObj数组*/
jsObj.clear();
/*写入参数*/
jsObj.put("BaoGuanDiDianID", lsBaoGuanDiDian.getMembershipCardStorageLocationId());
jsObj.put("BaoGuanDiDianMC", lsBaoGuanDiDian.getName());
/*将jsObj数组添加到jsArr数组*/
jsArr.add(jsObj);
}
JSArr=jsArr;
return SUCCESS;
}
/* 根据会员卡类型 HuiYuanKaLeiXingID
* 收货地点 ShouHuoDiDianID
* 查询相对应的库存卡
* */
public String getKuCunKa() {
/*实例化一个Object数组*/
JSONObject jsObj=new JSONObject();
/*实例化一个Array数组*/
JSONArray jsArr  = new JSONArray();
/*获取页面传递过来的参数*/
int HuiYuanKaLeiXingID=Integer.parseInt(this.getRequest().getParameter("HuiYuanKaLeiXingID").trim());
int ShouHuoDiDianID=Integer.parseInt(this.getRequest().getParameter("ShouHuoDiDianID").trim());
/*调用服务层方法,查询相对应的库存卡*/
List lsKuCunKa = this.kuCunKaGuanLiService.SelectKuCunKa(HuiYuanKaLeiXingID, ShouHuoDiDianID);
/*循环遍历服务层返回的结果集*/
for (int i = 0; i < lsKuCunKa.size(); i++) {
Object[] obj = (Object[])lsKuCunKa.get(i);
/*清空jsObj数组*/
jsObj.clear();
jsObj.put("HuiYuiKaMingXiID", obj[0]);
jsObj.put("HuiYuanKaHao", obj[1]);
jsObj.put("MianZhiJinE", obj[2]);
jsObj.put("ZuoFeiQianZhuanTaiID", obj[3]);
/*将jsObj数组添加到jsArr数组*/
jsArr.add(jsObj);
}
HashMap<String, Object> jsMap = new HashMap<String, Object>();
/*将jsArr数组写入到jsMap中*/
jsMap.put("rows", jsArr);
/*转换数组类型,并返回数组*/
JSObj=JSONObject.fromObject(jsMap);
return SUCCESS;
}
/*新增库存卡作废记录 */
public String InsertKuCunKaZuoFei() {
/*获取页面传递过来的参数*/
String param=encodingFunction.getMethodEncoding(this.getRequest().getParameter("KuCunKaZuoFeiParam"));
/*分解参数*/
String[] params=param.split("<<");
/*实例化表*/
PwStoreCardInvalid lstKuCunKaZuoFeiJiLu=new PwStoreCardInvalid();
/*写入参数*/
lstKuCunKaZuoFeiJiLu.setRecordNum(params[0].trim());
lstKuCunKaZuoFeiJiLu.setInvalidReason(params[1].trim());
lstKuCunKaZuoFeiJiLu.setBookerId(Integer.parseInt(params[2].trim()));
lstKuCunKaZuoFeiJiLu.setBookTime(params[3].trim());
lstKuCunKaZuoFeiJiLu.setIsVerify(params[4].trim());
lstKuCunKaZuoFeiJiLu.setVerifierId(Integer.parseInt(params[5].trim()));
lstKuCunKaZuoFeiJiLu.setVerifyTime(params[6].trim());
/*调用服务层方法,新增库存卡作废记录 */
MSG = this.kuCunKaGuanLiService.addKuCunKaZuoFei(lstKuCunKaZuoFeiJiLu)+"";
return SUCCESS;
}

/*新增库存卡作废明细记录 */
public String InsertKuCunKaZuoFeiMingXi() {
/*获取页面传递过来的参数*/
String param=encodingFunction.getMethodEncoding(this.getRequest().getParameter("param"));
/*分解参数*/
String[] jsArrString = param.split(">>");
boolean AMP=false;
/*循环遍历数组*/
for (int M = 1; M < jsArrString.length; M++) {
/*分解参数*/
String[] params=jsArrString[M].split("<<");
/*实例化表*/
PwStoreCardInvalidDetails lstKuCunKaZuoFeiMingXi=new PwStoreCardInvalidDetails();
/*写入参数*/
lstKuCunKaZuoFeiMingXi.setStoreCardInvalidId(Integer.parseInt(params[0].trim()));
lstKuCunKaZuoFeiMingXi.setMembershipCardDetailsId(Integer.parseInt(params[1].trim()));
lstKuCunKaZuoFeiMingXi.setInvalidStateBefore(Integer.parseInt(params[2].trim()));
lstKuCunKaZuoFeiMingXi.setRecordInvalid(false);
/*调用服务层方法,查询需要修改的建卡明细信息*/
List<PwMembershipCardDetails> lstJianKaMingXi=this.kuCunKaGuanLiService.SelectUpdateJianKaMingXi(Integer.parseInt(params[1].trim()));
if (this.kuCunKaGuanLiService.addKuCunKaZuoFeiMingXi(lstKuCunKaZuoFeiMingXi) > 0) {
//变更会员卡状态
for (int i = 0; i < lstJianKaMingXi.size(); i++) {
PwMembershipCardDetails lsJianKaMingXi=lstJianKaMingXi.get(i);
PwMembershipCardDetails JianKaMingXi=new PwMembershipCardDetails();
JianKaMingXi.setStateOfTheMembershipCardId(lsJianKaMingXi.getStateOfTheMembershipCardId());
JianKaMingXi.setChangeTheMembershipCardId(Integer.parseInt(params[3].trim()));
JianKaMingXi.setKeeperId(lsJianKaMingXi.getKeeperId());
JianKaMingXi.setMembershipCardCardNumber(lsJianKaMingXi.getMembershipCardCardNumber());
JianKaMingXi.setMembershipCardDetailsId(lsJianKaMingXi.getMembershipCardDetailsId());
JianKaMingXi.setMembershipCardId(lsJianKaMingXi.getMembershipCardId());
JianKaMingXi.setMembershipCardStorageLocationId(lsJianKaMingXi.getMembershipCardStorageLocationId());
JianKaMingXi.setMembershipCardTypeId(lsJianKaMingXi.getMembershipCardTypeId());
JianKaMingXi.setNominalAmount(lsJianKaMingXi.getNominalAmount());
JianKaMingXi.setRemarks(lsJianKaMingXi.getRemarks());
JianKaMingXi.setSpecifyTheValidityTime(lsJianKaMingXi.getSpecifyTheValidityTime());
JianKaMingXi.setUpdateRankId(lsJianKaMingXi.getUpdateRankId());
JianKaMingXi.setValidityTime(lsJianKaMingXi.getValidityTime());
JianKaMingXi.setWriteCardStatus(lsJianKaMingXi.getWriteCardStatus());
JianKaMingXi.setWriteTime(lsJianKaMingXi.getWriteTime());
AMP=this.kuCunKaGuanLiService.EditJianKaMingXi(JianKaMingXi);
}
}
}
MSG=AMP+"";
return SUCCESS;
}


第5步:struts2的配置

<action name="getAllBaoGuanDiDian" class="KuCunKaGuanLiAction" method="getAllBaoGuanDiDian">
<result type="json">
<param name="root">JSArr</param>
</result>
</action>
<action name="getKuCunKa" class="KuCunKaGuanLiAction" method="getKuCunKa">
<result type="json">
<param name="root">JSObj</param>
</result>
</action>
<action name="InsertKuCunKaZuoFei" class="KuCunKaGuanLiAction" method="InsertKuCunKaZuoFei">
<result type="json">
<param name="root">MSG</param>
</result>
</action>
<action name="InsertKuCunKaZuoFeiMingXi" class="KuCunKaGuanLiAction" method="InsertKuCunKaZuoFeiMingXi">
<result type="json">
<param name="root">MSG</param>
</result>
</action>


第6步:视图层调用



3.2.1.2.6(图1)
HTML代码:

<div>
<div class="XiaoBiaoti">新增库存卡作废</div>
<table style="padding-left:10px;">
<tr class="JianKaclass">
<td style="color:blue">记录编号</td>
<td><input id="txtJiLuBianHao" class="JiLuBianHaoclass" value="自动生成" readonly /></td>
</tr>
</table>
<table>
<tr>
<td>
<fieldset  class="fieldsetXuanZeKuang">
<legend>会员卡类型</legend>
<table>
<tr>
<td></td>
</tr>
<tr>
<td><input class="easyui-combobox" id="cboHuiYuanKaZhongLei" style="width:120px"
data-options="valueField:'HuiYuanKaKaZhongID',textField:'HuiYuanKaKaZhongMC', url:'getKaZhongg',onSelect:getKaZhongLeiXing" /></td>
<td><input class="easyui-combobox" id="cboHuiYuanKaLeiXing" style="width:120px"
data-options="valueField:'HuiYuanKaLeiXingID',textField:'HuiYuanKaLeiXingMC'"/></td>
</tr>
</table>
</fieldset>
</td>
<td>
<fieldset class="fieldsetXuanZeKuang" style="margin-left:50px;">
<legend>-保管地点</legend>
<table>
<tr>
<td>
<input class="easyui-combobox" id="cboShouHuoDiDianBM" style="width:120px"
data-options="url:'getAllBaoGuanDiDian',valueField:'BaoGuanDiDianID', textField:'BaoGuanDiDianMC',onSelect:oncboShouHuoDiDianBM"/>
<input class="easyui-combobox" id="cboShouHuoDiDian" style="width:120px"
data-options="valueField:'BaoGuanDiDianMenDianID',textField:'BaoGuanDiDianMenDianMC'" />
</td>
</tr>
</table>
</fieldset>
</td>
</tr>
</table>
<table class="ChaShanKaAnNiuclass">
<tr>
<td>作废金额</td>
<td><input id="txtZuoFeiJinE"  readonly/>元</td>
<td>作废数量</td>
<td><input  id="txtZuoFeiShuLiang" readonly />张</td>
</tr>
</table>
<table class="ChaShanKaAnNiuclass">
<tr>
<td><input type="button"   value="添加卡片" onClick="TianjiaKaPian()" style="border:solid 2px #000000;background-color:#ECECEC;" /></td>
<td>作废原因</td>
<td><input type="text" style="width:350px;"  id="txtZuoFeiYuanYin"/></td>
</tr>
</table>
<div style="padding-left:10px; width:auto;">
<table class="easyui-datagrid" id="dgZuoFeiMingXi" style="height:290px" data-options="singleSelect:true,rownumbers:true">
<thead>
<tr>
<th data-options="field:'HuiYuanKaHao',width:470,align:'center'">会员卡号</th>
<th data-options="field:'MianZhiJinE',width:345,align:'center'">面值金额</th>
<th data-options="field:'ZuoFeiQianZhuanTaiID',width:20,hidden:true,align:'center'">作废前状态ID</th>
<th data-options="field:'HuiYuiKaMingXiID',width:266,align:'center',formatter:CaoZuo">操作</th>
</tr>
</thead>
</table>
</div>
<fieldset style="height:40px;">
<center>
<table class="JianKaclass" style=" margin-top:-10px;">
<tr>
<td>登记人</td>
<td><input id="txtDengJiRen"  onclick="openFromDengJiRen()"/></td>
<td>登记时间</td>
<td><input class="easyui-datebox" id="dtDengJiTime" style="width:120px;"
data-options="formatter:myformatter,parser:myparser" /></td>
<td><input type="checkbox" name="ckShenHeFou" value="true" onClick="onclickShenHeFou()"  style="width:30px;" />
<span class="redXing" style=" margin-left:-10px;">开启审核</span></td>
<td>审核人</td>
<td><input  id="txtShenHeRen"  onclick="openFronShenHeRen()"/></td>
<td>审核时间</td>
<td><input class="easyui-datebox" id="dtShenHeTime"  style="width:120px;"
data-options="formatter:myformatter,parser:myparser" /></td>
</tr>
</table>
</center>
</fieldset>
<center>
<table>
<tr class="xuanZeKuang">
<td colspan="20">
<a onClick="btInsertKuCunKaZuoFei()" class="easyui-linkbutton" data-options="iconCls:'icon-add'">添加</a>
<a onClick="btnFangQi()"  class="easyui-linkbutton" data-options="iconCls:'icon-redo'">返回</a>
</td>
</tr>
</table>
</center>
</div>
<!-- 	弹窗模块 -->
<!-- 	弹窗_查询符合条件的卡 -->
<div id="FromSelectKa"  class="FromFuHeKaclass">
<div class="easyui-layout FromFuHeKalayout">
<div data-options="region:'west'" style="width:450px;">
<div class="erJiBiaoTi">***查询结果***</div>
<hr style="border:solid 1px #CCCCCC;" />
<table id="dgChaXun" class="easyui-datagrid" style="height:472px"
data-options="rownumbers:true,loadMsg:'加载中,请稍后...'">
<thead>
<tr>
<th data-options="field:'HuiYuiKaMingXiID',width:20,hidden:true, align:'center'">会员卡明细ID</th>
<th data-options="field:'ckXuanZe',checkbox:true"></th>
<th data-options="field:'HuiYuanKaHao',width:200,align:'center'">卡号</th>
<th data-options="field:'MianZhiJinE',width:170,align:'center'">面值金额</th>
<th data-options="field:'ZuoFeiQianZhuanTaiID',width:20,hidden:true,align:'center'">作废前状态ID</th>
</tr>
</thead>
</table>
</div>
<div data-options="region:'center'">
<div class="erJiBiaoTi">***筛选设置***</div>
<hr style="border:solid 1px #CCCCCC;" />
<center>
<table class="FromFuHeKalayoutRight">
<tr>
<td align="right">开始卡号:</td>
<td><input id="txtKaiShiKaHao" /></td>
</tr>
<tr>
<td align="right">卡数量:</td>
<td><input id="txtKaShuLiang" /></td>
</tr>
<tr>
<td align="right">结束卡号:</td>
<td><input id="txtJieShuKaHao" /></td>
</tr>
<tr>
<td align="right">库存数量:</td>
<td><input id="txtKuCunShuLiang" style="color:#FF0000" value="0" readonly /></td>
<td>张</td>
</tr>
</table>
<table>
<tr class="xuanZeKuang">
<td>
<a onClick="HuoQu()" class="easyui-linkbutton" data-options="iconCls:'icon-ok'">确认</a>
<a onClick="$('#FromSelectKa').hide()"class="easyui-linkbutton" data-options="iconCls:'icon-cancel'">取消</a>
</td>
</tr>
</table>
</center>
</div>
</div>
</div>
<div class="SeYuanGongXinXi" id="FromDengJiRen"   >
<div class="XiaoBiaoti">员工信息<span class="GuanBiAnNiuclass" onClick="btnGuanBi()">关闭</span></div>
<table id="dgDengJiRen" class="easyui-datagrid"
data-options="singleSelect:true,rownumbers:true,loadMsg:'加载中,请稍后...',
url:'getYGXinXi', idField:'yuanGongID',onDblClickRow: DblDengJiRen">
<thead>
<tr>
<th data-options="field:'yuanGongID',width:120,hidden:true, align:'center'">员工ID</th>
<th data-options="field:'yuanGongXingMing',width:55,align:'center'">员工姓名</th>
<th data-options="field:'E-mail',width:115,align:'center'">E-mail</th>
<th data-options="field:'ShouJiHaoMa',width:90,align:'center'">手机号码</th>
<th data-options="field:'SuoShuMenDian',width:106,align:'center'">所属部门</th>
</tr>
</thead>
</table>
</div>
<div  class="SeYuanGongXinXi" id="FromShenHeRen"   >
<div class="XiaoBiaoti">员工信息<span class="GuanBiAnNiuclass" onClick="btnGuanBi()">关闭</span></div>
<table id="dgShenHeRen" class="easyui-datagrid"
data-options="singleSelect:true,rownumbers:true,loadMsg:'加载中,请稍后...',
url:'getYGXinXi', idField:'yuanGongID',onDblClickRow: DblShenHeRen">
<thead>
<tr>
<th data-options="field:'yuanGongID',width:120,hidden:true, align:'center'">员工ID</th>
<th data-options="field:'yuanGongXingMing',width:55,align:'center'">员工姓名</th>
<th data-options="field:'E-mail',width:115,align:'center'">E-mail</th>
<th data-options="field:'ShouJiHaoMa',width:90,align:'center'">手机号码</th>
<th data-options="field:'SuoShuMenDian',width:106,align:'center'">所属部门</th>
</tr>
</thead>
</table>
</div>

JavaScript代码:

$(document).ready(function(){
onclickShenHeFou();
$('#FromSelectKa').hide();
$('#FromDengJiRen').hide();
$('#FromShenHeRen').hide();
});

//查询种类
function getKaZhongLeiXing(){
$('#cboHuiYuanKaLeiXing').combobox({url:"getKaZhongLeiXing?membersKakaKindId="+$('#cboHuiYuanKaZhongLei').combobox('getValue')});
}
//查询保管地点
function oncboShouHuoDiDianBM(){
$('#cboShouHuoDiDian').combobox({url:"getBaoGuanDiDianMenDian?MenDianID="+$('#cboShouHuoDiDianBM').combobox('getValue')});
}
function CaoZuo(HuiYuiKaMingXiID, row, rowIndex) {
return  "<a href='javascript:yiChu(" + HuiYuiKaMingXiID + "," + rowIndex+ ")'>移除</a>  ";
}
function yiChu(HuiYuiKaMingXiID, rowIndex){
$('#dgZuoFeiMingXi').datagrid('deleteRow',rowIndex);
$('#txtZuoFeiShuLiang').val($('#dgZuoFeiMingXi').datagrid('getRows').length);
var rowZuoFeiMingXi = $('#dgZuoFeiMingXi').datagrid('getData');
var money=0;
for(var i=0;i < rowZuoFeiMingXi.rows.length;i++){
money=money+rowZuoFeiMingXi.rows[i].MianZhiJinE;
}
$('#txtZuoFeiJinE').val(money);
}
//改造年月日顺序
function myformatter(date){
var y = date.getFullYear();
var m = date.getMonth()+1;
var d = date.getDate();
return y+'-'+(m<10?('0'+m):m)+'-'+(d<10?('0'+d):d);
}
function myparser(s){
if (!s) return new Date();
var ss = (s.split('-'));
var y = parseInt(ss[0],10);
var m = parseInt(ss[1],10);
var d = parseInt(ss[2],10);
if (!isNaN(y) && !isNaN(m) && !isNaN(d)){
return new Date(y,m-1,d);
} else {
return new Date();
}
}
//打开登记人
function openFromDengJiRen(){
$('#FromDengJiRen').show();
$('#dgDengJiRen').datagrid('reload');
}
//登记人双击事件
var DengJiRenID=0;
function DblDengJiRen() {
var row = $('#dgDengJiRen').datagrid('getSelected');
if (row) {
DengJiRenID = row.yuanGongID;
$('#txtDengJiRen').val(row.yuanGongXingMing);
$('#dtDengJiTime').datebox('setValue',myformatter(new Date()));
$('#FromDengJiRen').hide();
}
}
//判断是否开启审核
var ShenHe="";
function onclickShenHeFou(){
ShenHe=$("input:checkbox[name='ckShenHeFou']:checked").val();
if(ShenHe=="true"){
$("#txtShenHeRen").attr("disabled",false);
$("#dtShenHeTime").datebox("enable");
}else{
ShenHe="false";
$("#txtShenHeRen").attr("disabled","disabled");
$("#dtShenHeTime").datebox("disable");
}
}
//打开审核人
function openFronShenHeRen(){
$('#FromShenHeRen').show();
$('#dgShenHeRen').datagrid('reload');
}
//审核人双击事件
var ShenHeRenID=0;
function DblShenHeRen() {
var row = $('#dgShenHeRen').datagrid('getSelected');
if (row) {
ShenHeRenID = row.yuanGongID;
$('#txtShenHeRen').val(row.yuanGongXingMing);
$('#dtShenHeTime').datebox('setValue',myformatter(new Date()));
$('#FromShenHeRen').hide();
}
}
//open添加卡片窗口
function TianjiaKaPian(){
var HuiYuanKaLeiXingID = $('#cboHuiYuanKaLeiXing').combobox('getValue');
var ShouHuoDiDianID = $('#cboShouHuoDiDian').combobox('getValue');
if(HuiYuanKaLeiXingID > 0 && ShouHuoDiDianID > 0 ){
$('#FromSelectKa').show();
$.getJSON("getKuCunKa?HuiYuanKaLeiXingID="+HuiYuanKaLeiXingID+"&ShouHuoDiDianID="+ShouHuoDiDianID,function(Date){
$('#dgChaXun').datagrid('loadData',Date);
$("#txtKuCunShuLiang").val($('#dgChaXun').datagrid('getRows').length);
});
}else{
alert("请选择会员卡类型和保管地点后,再尝试添加卡片");
}
}
//获取选中数据,关闭添加卡片窗口
function HuoQu(){
var row = $('#dgChaXun').datagrid('getChecked');
$('#dgZuoFeiMingXi').datagrid('loadData',row);
$('#txtZuoFeiShuLiang').val($('#dgZuoFeiMingXi').datagrid('getRows').length);
var rowZuoFeiMingXi = $('#dgZuoFeiMingXi').datagrid('getData');
var money=0;
for(var i=0;i < rowZuoFeiMingXi.rows.length;i++){
money=money+rowZuoFeiMingXi.rows[i].MianZhiJinE;
}
$('#txtZuoFeiJinE').val(money);
$('#FromSelectKa').hide();
}
//点击添加按钮
function btInsertKuCunKaZuoFei(){
//获取记录编号
var JiLuBianHao="";
$.getJSON("getJiLuBianHao?NAME=KuCunKaZuoFei&d="+new Date(),function(result){
JiLuBianHao=result;
var rowZuoFeiMingXi = $('#dgZuoFeiMingXi').datagrid('getData');
var DengJiTime = $('#dtDengJiTime').datebox('getValue').trim();
if(DengJiRenID > 0 && rowZuoFeiMingXi.rows.length > 0 && DengJiTime != '') {
var ShenHeZhuangTai="";
if($("input:checkbox[name='ckShenHeFou']:checked").val()=="true"){
ShenHeZhuangTai="已审核";
var ShenHeTime = $('#dtShenHeTime').datebox('getValue');
if(ShenHeRenID > 0 && ShenHeTime != ''){
var KuCunKaZuoFeiParam=JiLuBianHao+" <<"+$('#txtZuoFeiYuanYin').val()+" <<"
+DengJiRenID+" <<"+DengJiTime+" <<"+ShenHeZhuangTai+" <<"+ShenHeRenID+" <<"+ShenHeTime+" <<";
InsertKuCunKaZuoFei(KuCunKaZuoFeiParam,rowZuoFeiMingXi,JiLuBianHao);
}else{
alert("请选择审核人和审核时间,或关闭审核,再操作");
}
}else{
ShenHeZhuangTai="未审核";
var ShenHeTime=" ";
var KuCunKaZuoFeiParam=JiLuBianHao+" <<"+$('#txtZuoFeiYuanYin').val()+" <<"
+DengJiRenID+" <<"+DengJiTime+" <<"+ShenHeZhuangTai+" <<"+ShenHeRenID+" <<"+ShenHeTime+" <<";
InsertKuCunKaZuoFei(KuCunKaZuoFeiParam,rowZuoFeiMingXi,JiLuBianHao);
}
}else{
alert("数据输入不完整,无法进行库存卡作废操作。请填写完整后,再尝试操作");
}
});
}
//新增库存卡作废
function InsertKuCunKaZuoFei(KuCunKaZuoFeiParam,rowZuoFeiMingXi,JiLuBianHao){
$.getJSON("InsertKuCunKaZuoFei?KuCunKaZuoFeiParam="+KuCunKaZuoFeiParam,function(StoreCardInvalidID){
if(StoreCardInvalidID > 0){
var HuiYuanKaZhuangTaiID=0;
if(ShenHe == "true"){
HuiYuanKaZhuangTaiID="14";
}else{
HuiYuanKaZhuangTaiID="63";
}
var jsArr="";
for (var i = 0; i < rowZuoFeiMingXi.rows.length; i++) {
jsArr=jsArr+">>"+StoreCardInvalidID+" <<"+rowZuoFeiMingXi.rows[i].HuiYuiKaMingXiID+" <<"
+rowZuoFeiMingXi.rows[i].ZuoFeiQianZhuanTaiID+" <<"+HuiYuanKaZhuangTaiID+" <<";
}
$.getJSON("InsertKuCunKaZuoFeiMingXi?param="+jsArr,function(result){if(result == "true"){}});
alert("新增成功!记录编号为【"+JiLuBianHao.trim()+"】");
location.href="KuCunKaGuanLi/KuCunKaZuoFeiInsert.jsp";
}else{
alert("新增失败");
}
});
}
function btnGuanBi(){
$('#FromShenHeRen').hide();
$('#FromDengJiRen').hide();
}
function btnFangQi(){
if (confirm('请确认已保存当前操作,确定立即跳转?')) {
location.href="KuCunKaGuanLi/KuCunKaZuoFei.jsp";
}
}


至此,会员卡管理系统技术解析(十四) 库存卡作废记录添加 技术解析完毕。
注意:仅供学习,禁止用于商业用途!否则,后果自负。

@最终解析权归本人所有
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: