|
@@ -1,7 +1,9 @@
|
|
|
package com.zhongzheng.modules.order.service.impl;
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
+import cn.hutool.core.lang.Validator;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
|
import com.zhongzheng.common.exception.CustomException;
|
|
|
import com.zhongzheng.common.utils.DateUtils;
|
|
@@ -227,6 +229,95 @@ public class OrderBillSheetServiceImpl extends ServiceImpl<OrderBillSheetMapper,
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 录单商品计费单收费
|
|
|
+ * @param bo
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public Map<String, Object> placeBillInputOrder(OrderBillSheetAddBo bo) {
|
|
|
+ List<OrderBillGoodsAddBo> goodsList = bo.getGoodsList();
|
|
|
+ if(goodsList==null||goodsList.size()<1){
|
|
|
+ throw new CustomException("商品列表为空",510);
|
|
|
+ }
|
|
|
+ OrderBillSheet add = BeanUtil.toBean(bo, OrderBillSheet.class);
|
|
|
+ validEntityBeforeSave(add);
|
|
|
+ add.setCreateTime(DateUtils.getNowTime());
|
|
|
+ add.setUpdateTime(DateUtils.getNowTime());
|
|
|
+ //计费订单号
|
|
|
+ String sheet_no = DateUtils.getDateOrderSn();
|
|
|
+ add.setSheetSn(sheet_no);
|
|
|
+ //生成订单
|
|
|
+ Collection<OrderBillGoods> coll = new HashSet<>();
|
|
|
+ for (OrderBillGoodsAddBo g : goodsList) {
|
|
|
+ //计费单商品
|
|
|
+ OrderBillGoods orderGoods = BeanUtil.toBean(g, OrderBillGoods.class);
|
|
|
+ orderGoods.setOrderSn(g.getOrderSn());
|
|
|
+ orderGoods.setSheetSn(sheet_no);
|
|
|
+ orderGoods.setCreateTime(DateUtils.getNowTime());
|
|
|
+ orderGoods.setUpdateTime(DateUtils.getNowTime());
|
|
|
+ coll.add(orderGoods);
|
|
|
+
|
|
|
+ //订单商品
|
|
|
+ OrderGoods goods = iOrderGoodsService.getOne(new LambdaQueryWrapper<OrderGoods>().eq(OrderGoods::getOrderSn, g.getOrderSn()).eq(OrderGoods::getGoodsId,g.getGoodsId()));
|
|
|
+ if(goods==null){
|
|
|
+ throw new CustomException("订单商品错误",510);
|
|
|
+ }
|
|
|
+ Order order = iOrderService.getOne(new LambdaQueryWrapper<Order>().eq(Order::getOrderSn, g.getOrderSn()));
|
|
|
+ if(order==null){
|
|
|
+ throw new CustomException("订单错误",510);
|
|
|
+ }
|
|
|
+ //计费单已收费用累加
|
|
|
+ if(goods.getGoodsRealPrice().compareTo(goods.getGoodsReceived()) == 0){
|
|
|
+ //完全收费
|
|
|
+ goods.setPayStatus(OrderGoods.PAY_FULL);
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ //部分收费
|
|
|
+ goods.setPayStatus(OrderGoods.PAY_PART);
|
|
|
+ }
|
|
|
+ //设置商品服务期
|
|
|
+ goods = iWxPayService.setServiceTime(goods);
|
|
|
+ order.setStatus(1);//订单生效
|
|
|
+ order.setUpdateTime(DateUtils.getNowTime());
|
|
|
+ iOrderService.updateById(order);
|
|
|
+ goods.setUpdateTime(DateUtils.getNowTime());
|
|
|
+ iOrderGoodsService.updateById(goods);
|
|
|
+ iWxPayService.joinLockGrade(order.getOrderSn(),goods.getGoodsId(),goods.getOrderGoodsId());
|
|
|
+ iWxPayService.updateUserExamGoods(goods,order);
|
|
|
+ }
|
|
|
+ iOrderBillGoodsService.saveBatch(coll);
|
|
|
+ this.save(add);
|
|
|
+ Map<String, Object> result = new HashMap<>();
|
|
|
+ result.put("sheetId",add.getSheetId());
|
|
|
+ result.put("sheetSn",sheet_no);
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Boolean updateByInputEditBo(OrderBillSheetEditBo bo) {
|
|
|
+ if(Validator.isEmpty(bo.getInputOrderSn())){
|
|
|
+ throw new CustomException("缺少录单单号");
|
|
|
+ }
|
|
|
+
|
|
|
+ LambdaUpdateWrapper<OrderBillSheet> objectLambdaUpdateWrapper = Wrappers.lambdaUpdate();
|
|
|
+ objectLambdaUpdateWrapper.eq(OrderBillSheet::getInputOrderSn,bo.getInputOrderSn());
|
|
|
+
|
|
|
+ objectLambdaUpdateWrapper.set(OrderBillSheet::getPayer,bo.getPayer());
|
|
|
+ objectLambdaUpdateWrapper.set(OrderBillSheet::getPayerTel,bo.getPayerTel());
|
|
|
+ objectLambdaUpdateWrapper.set(OrderBillSheet::getPayType,bo.getPayType());
|
|
|
+ objectLambdaUpdateWrapper.set(OrderBillSheet::getPayAccount,bo.getPayAccount());
|
|
|
+ objectLambdaUpdateWrapper.set(OrderBillSheet::getPayee,bo.getPayee());
|
|
|
+ objectLambdaUpdateWrapper.set(OrderBillSheet::getCollectionAccount,bo.getCollectionAccount());
|
|
|
+ objectLambdaUpdateWrapper.set(OrderBillSheet::getPayChannel,bo.getPayChannel());
|
|
|
+ objectLambdaUpdateWrapper.set(OrderBillSheet::getPosNumber,bo.getPosNumber());
|
|
|
+ objectLambdaUpdateWrapper.set(OrderBillSheet::getVoucherNo,bo.getVoucherNo());
|
|
|
+ objectLambdaUpdateWrapper.set(OrderBillSheet::getRefNo,bo.getRefNo());
|
|
|
+ objectLambdaUpdateWrapper.set(OrderBillSheet::getUpdateTime,DateUtils.getNowTime());
|
|
|
+ return this.update(null,objectLambdaUpdateWrapper);
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
/**
|
|
|
* 修改订单商品支付状态为完全支付
|