Easyui 关于JSON.stringify、getRowIndex; datagrid的appendRow、updateRow、onDblClickRow 以及gson.fromJson

一、实现功能

大致描述为:选择商品入库 可以选择多种进货单商品,然后凑成一个进货单,提交
截图如下:
在这里插入图片描述
1.点击添加,选择进货商品:
在这里插入图片描述
2.选择一件商品:
在这里插入图片描述
3.如果点击保存,进货入库的商品选择对话框会关闭,然后选择的进货商品会出现在进货单商品列表里面:

在这里插入图片描述
4.同一个单号当然可以进货多种商品,下面再选择另外一种进货商品:
在这里插入图片描述
5.选择保存后,进货单商品列表里面就有一下两种进货商品:
在这里插入图片描述
6.点击保存:

function savePurchaseGoods(){
		$("#purchaseNumber").val($("#dh").text());
		alert(JSON.stringify($("#dg").datagrid("getData").rows));
		
			//将获取到的数据都转成json串
		$("#goodsJson").val(JSON.stringify($("#dg").datagrid("getData").rows));
		$("#fm").form("submit",{
			url:"/admin/purchaseList/save",
			onSubmit:function(){
				if($("#dg").datagrid("getRows").length==0){
					$.messager.alert("系统提示","请添加进货商品!");
					return false;
				}
				if(!$(this).form("validate")){
					return false;
				}
				
				if(isNaN($("#supplierId").combobox("getValue"))){
					$.messager.alert("系统提示","请选择供应商!");
					return false;
				}
				return true;
			},
			success:function(result){
				alert(result);
				var result=eval('('+result+')');
				if(result.success){
					alert("保存成功!");
					window.location.reload();//刷新当前页面
				}else{
					$.messager.alert("系统提示",result.errorInfo);
				}
			}
		});
	}
	

在这里插入图片描述
7.请求到Controller:
其中参数purchaseList为进货单,goodsJson是前台已经转为Json串的进货单商品(这里包括两种商品):

purchaseList :进货单
在这里插入图片描述
goodsJson:进货单商品
在这里插入图片描述

8.下面使用gson.fromJson将进货单商品Json字符串转为实体:
在这里插入图片描述
9.ServiceImpl:

/**
	 * 添加进货单 以及所有进货单商品  以及 修改商品成本价 库存数量 上次进价
	 * @param purchaseList
	 * @param purchaseListGoodsList
	 */
	@Override
	public void save(PurchaseList purchaseList, List<PurchaseListGoods> purchaseListGoodsList) {
		for(PurchaseListGoods purchaseListGoods:purchaseListGoodsList) {
			purchaseListGoods.setType(goodsTypeRepository.findOne(purchaseListGoods.getTypeId()));//
			purchaseListGoods.setPurchaseList(purchaseList); //设置进货单
			purchaseListGoodsRepository.save(purchaseListGoods);
			// 修改商品库存 成本均价 以及上次进价
			Goods goods=goodsRepository.findOne(purchaseListGoods.getGoodsId());
		
			//计算成本均价
			float avgPurchasePrice=(goods.getPurchasingPrice()*goods.getInventoryQuantity()+purchaseListGoods.getPrice()*purchaseListGoods.getNum())/(goods.getInventoryQuantity()+purchaseListGoods.getNum());  
			goods.setPurchasingPrice(MathUtil.format2Bit(avgPurchasePrice));
			
			goods.setInventoryQuantity(goods.getInventoryQuantity()+purchaseListGoods.getNum());//进货后 原商品的库存量 要更新
			goods.setLastPurchasingPrice(purchaseListGoods.getPrice());
			goods.setState(2);//设置该商品状态 -->已发生进货单据
			goodsRepository.save(goods);
			
		}
		
		purchaseListRepository.save(purchaseList);//保存进货单
	}

10.进货成功:
在这里插入图片描述

11.进货成功,生成进货单,下面查询进货单据:
在这里插入图片描述
下面是刚生成的那个进货单和它对应的进货单商品:

在这里插入图片描述
Controller:

/**
	 * 根据条件查询所有进货单信息
	 * @param purchaseList
	 * @return
	 * @throws Exception
	 */
	@RequestMapping("/list")
	//@RequiresPermissions(value="进货单据查询")
	public Map<String,Object> list(PurchaseList purchaseList) throws Exception{
		Map<String,Object> resultMap=new HashMap<>();
		List<PurchaseList> purchaseListList=purchaseListService.list(purchaseList, Direction.DESC, "purchaseDate");
		resultMap.put("rows", purchaseListList);
		return resultMap;
	}

ServiceImpl:

/**
	 * 根据条件查询进货单信息
	 * @param purchaseList
	 * @param direction
	 * @param properties
	 * @return
	 */
	@Override
	public List<PurchaseList> list(PurchaseList purchaseList, Direction direction, String... properties) {
	
		return purchaseListRepository.findAll(new Specification<PurchaseList>() {

			@Override
			public Predicate toPredicate(Root<PurchaseList> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
				Predicate predicate=cb.conjunction();
				if(purchaseList!=null) {
					if(StringUtil.isNotEmpty(purchaseList.getPurchaseNumber())) {
						predicate.getExpressions().add(cb.like(root.get("purchaseNumber"), "%"+purchaseList.getPurchaseNumber()+"%"));
					}
					if(purchaseList.getSupplier()!=null && purchaseList.getSupplier().getId()!=null) {
						predicate.getExpressions().add(cb.equal(root.get("supplier").get("id"), purchaseList.getSupplier().getId()));
					}
					if(purchaseList.getState()!=null) {
						predicate.getExpressions().add(cb.equal(root.get("state"),purchaseList.getState()));
					}
					if(purchaseList.getbPurchaseDate()!=null) {
						predicate.getExpressions().add(cb.greaterThanOrEqualTo(root.get("purchaseDate"), purchaseList.getbPurchaseDate()));
					}
					if(purchaseList.getePurchaseDate()!=null) {
						predicate.getExpressions().add(cb.lessThanOrEqualTo(root.get("purchaseDate"), purchaseList.getePurchaseDate()));
					}
				}
				
				return predicate;
			}
			
		}, new Sort(direction,properties));
	}

	

12.部分源码地址
https://gitee.com/never_enough/jxc_system/tree/master/jxc_%E6%8C%81%E7%BB%AD

点击查看purchase.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值