您的位置:首页 > 其它

crm项目遇到的问题总结

2017-07-31 17:39 211 查看
   

1.hql数据库查询对于几次连接查询的操作

    需求描述:我有两张表(client,family),两张表中通过family_id 关联。每个client有很多家庭成员,每个家庭成员的基本信息在client中,我首先需要把我的两张表做left join连接,连接后得到多条家庭成员的client_id,再通过client_id去表查询client家庭成员信息显示出来。由于hql的表是通过两个实体类映射的,所以无法直接做两次连接操作,需求需要的sql是:

SELECT * from

(SELECT name,client_id ,from(select a.client_id from family_client a, Client b 

where a.family_id = b.family_id and b.family_id =?)as c

LEFT JOIN client on c.client_id=client.id) as e;

所以
4000
想到把两次连接操作分两次hql查询

String sql="select new FamilyClient(a.client_id,b.name) from FamilyClient a, Client b "
+ "where b.family_id = ? and a.family_id = b.family_id and b.status='1'";
//返回第一次连接查询结果,里面包含了所有家庭成员的client_id
List<FamilyClient> list=this.find(sql,family_id);

//通过循环家庭成员个数次来拿到clientinfo,最后再放入一个List<FamilyClient>

String sql1="select new FamilyClient(b.id,b.name) from Client b"
+" where b.id=? and b.status='1'";
List<FamilyClient> listt=new ArrayList<FamilyClient>();
for(int i=0;i<list.size();i++){
listt.addAll(this.find(sql1,list.get(i).getClient_id()));
}

2.对于谷歌安卓模式调试程序无法点击原因:(转载http://blog.csdn.net/id_no_chinese/article/details/70228121)

chrome56版本以后修复form提交的bug,
form = $('<form></form>')创建好后,要$(document.body).append(form);

        然后form.submit();  

3.对于jquery通过formData形式提交的字符串数组数据,后台通过request取到的值为空:前台要通过JSON.tostringify(clientList)转化为json,后台通过

String[]  clientIdList = request.getParameterValues("clientIdList");可以取到值

var clientList = new Array();
$(".customer_ul").find("input.checkbox:checked").each(function(){
var clientName = $(this).siblings("input.clientName").val();
var clientId = $(this).siblings("input.clientId").val();
clientList.push({'clientName':clientName,'client_id':clientId});
})
$("#save").click(function(){
if(validateInputRequired()){

var name = $.trim($("#name").val());
if(name!=""){
var pinyinName = toPinyin(name);
$("#pinyinName").val(pinyinName);
}
var formData = new FormData($("#customerAddForm")[0]);
formData.append("clientList",JSON.stringify(clientList));
$.ajax({
url:'${ctxPath}/web/ajax/client/saveClientAction.html',
dataType:'json',
type:'post',
processData:false,
contentType:false,
beforeSend:function(){
$("#loading").show();
},
data:formData,
success:function(data){
$("#loading").hide();
if(data!=null && data.body.code=="0"){
$("#customerId").val(data.body.customerId);
activeBtn();
alert("保存成功!");
history.go(-1);
}else{
alert("系统发生异常,请与管理员联系!");
}
},
error:function(data){
$("#loading").hide();
alert("error!");
}
})
}
})

4.对于图片上传:后台无法取到图片信息和使得每个用户的资料文件夹唯一
String customerId = client.getId();

MultipartHttpServletRequest multipartResolver = (MultipartHttpServletRequest) request;
Iterator<String> fileNames = multipartResolver.getFileNames();
while(fileNames.hasNext()){ // 遍历请求中的图片信息
String fileName = fileNames.next(); // 图片对应的参数名
MultipartFile file = multipartResolver.getFile(fileName);
//图片存放路径
String filePath = request.getSession().getServletContext().getRealPath("/") + "upload/"
+client.getId()+"/"+ file.getOriginalFilename();

File fi = new File(filePath);
if (!fi.getParentFile().exists()){
fi.getParentFile().mkdirs();
}
// 转存文件
file.transferTo(new File(filePath));
//System.out.println("图片名字:"+fileName);
switch(fileName){
case "clientIdCardPic": client.setIdcard_photo(filePath);
break;
case "clientIdCardPico":client.setIdcard_photoo(filePath);
break;
case "clientBankPic": client.setBank_photo(filePath);
break;
}
client.setFamily_id(client.getFamily_id());
//System.out.println("9999999"+client.getFamily_id());
this.clientService.saveOrUpdate(client,userCustomer,labelIds,contactTypeTbls);
//System.out.println(fileName);

} 配置文件需要做的操作,可以多图片同时上传
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="UTF-8"></property>
<property name="maxInMemorySize" value="10240000"></property>
</bean>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息