This commit is contained in:
cun-nan 2024-10-30 15:52:14 +08:00
parent 0b9b0a6c60
commit 207ecefc50
11 changed files with 182 additions and 68 deletions

View File

@ -8,29 +8,29 @@
</div>
<div class="" style="height: 110px; display: flex; justify-content: space-between;">
<div style="height: 100%; display: flex; justify-content: space-between;">
<div style="height: 100%; width: 70%; display: flex; justify-content: space-between;font-family: YouSheBiaoTiHei">
<div style="height: 100%; width: 70%; display: flex; justify-content: space-between;">
<div class="box">
<span style="font-size: 26px;color: #3B6ADE;font-weight: bold" >{{inventoryForm.productQuantity}}</span>
<span style="font-size: 26px;color: #0DC291;font-weight: bold" >{{inventoryForm.productQuantity}}</span>
<span style="display: flex">
<div style="background-color: #0DC291;width: 10px;height: 10px;border-radius: 50%;margin-top: 6px;margin-right: 10px"></div>
商品数量</span>
</div>
<div class="box">
<span style="font-size: 26px;color: #FF4347;font-weight: bold">{{inventoryForm.inventoryQuantity}}</span>
<span style="font-size: 26px;color: #00CAFF;font-weight: bold">{{inventoryForm.inventoryQuantity}}</span>
<span style="display: flex">
<div style="background-color: #3b7cde;width: 10px;height: 10px;border-radius: 50%;margin-top: 6px;margin-right: 10px"></div>
<div style="background-color: #00CAFF;width: 10px;height: 10px;border-radius: 50%;margin-top: 6px;margin-right: 10px"></div>
盘点数量</span>
</div>
<div class="box">
<span style="font-size: 26px;color: #3B6ADE;font-weight: bold" >{{inventoryForm.inventoryDiscrepancy}}</span>
<span style="font-size: 26px;color: #F44522;font-weight: bold" >{{inventoryForm.inventoryDiscrepancy}}</span>
<span style="display: flex">
<div style="background-color: #3B6ADE;width: 10px;height: 10px;border-radius: 50%;margin-top: 6px;margin-right: 10px"></div>
<div style="background-color: #F44522;width: 10px;height: 10px;border-radius: 50%;margin-top: 6px;margin-right: 10px"></div>
库存差异</span>
</div>
<div class="box">
<span style="font-size: 26px;color: #FF4347;font-weight: bold">{{inventoryForm.profitLossAmount}}</span>
<span style="font-size: 26px;color: #FA6400;font-weight: bold">{{inventoryForm.profitLossAmount}}</span>
<span style="display: flex">
<div style="background-color: #FF4347;width: 10px;height: 10px;border-radius: 50%;margin-top: 6px;margin-right: 10px"></div>
<div style="background-color: #FA6400;width: 10px;height: 10px;border-radius: 50%;margin-top: 6px;margin-right: 10px"></div>
盈亏总额
</span>
</div>
@ -822,8 +822,7 @@ export default {
width: 212px;
margin-right: 10px;
background: #FFFFFF;
border-radius: 10px 10px 10px 10px;
border: 1px solid #EEEEEE;
border: 1px solid #FF9655;
border-radius: 10px;
display: flex;
flex-direction: column;

View File

@ -1,7 +1,7 @@
<template>
<div class="app-container">
<div class="card-change">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="100px">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="60px">
<el-form-item label="" prop="orderNumber">
<el-input v-model="queryParams.orderNumber" placeholder="请输入盘点单号"/>
</el-form-item>
@ -43,13 +43,13 @@
</el-form-item>
</el-form>
<div style="height: 70vh;overflow: auto">
<div style="height: 74vh;overflow: auto">
<el-table ref="tables" border
v-loading="loading"
:data="inventoryList"
:default-sort="defaultSort">
<el-table-column label="序号" align="center" type="index" width="60"></el-table-column>
<el-table-column label="盘点批次" align="center" prop="orderNumber"></el-table-column>
<el-table-column label="盘点单号" align="center" prop="orderNumber"></el-table-column>
<el-table-column label="盘点数量" align="center" prop="inventoryQuantity">
<template slot-scope="scope">
<span>{{ scope.row.inventoryQuantity == null ? "-" : scope.row.inventoryQuantity }}</span>
@ -60,7 +60,7 @@
<span>{{ scope.row.inventoryDiscrepancy == null ? "-" : scope.row.inventoryDiscrepancy }}</span>
</template>
</el-table-column>
<el-table-column label="盈亏金额" align="center" prop="profitLossAmount">
<el-table-column label="盈亏金额(元)" align="center" prop="profitLossAmount">
<template slot-scope="scope">
<span>{{ scope.row.profitLossAmount == null ? "-" : scope.row.profitLossAmount }}</span>
</template>
@ -69,43 +69,67 @@
<el-table-column label="状态" align="center" prop="status">
<template slot-scope="scope">
<div slot="reference" class="name-wrapper">
<el-tag v-if="scope.row.approvalStatus == 'await'" size="medium">待审核</el-tag>
<el-tag v-if="scope.row.approvalStatus == 'qrts'" type="success" size="medium">已审核入库</el-tag>
<el-tag v-if="scope.row.approvalStatus == 'yzf'" type="danger" size="medium">已作废</el-tag>
<el-tag v-if="scope.row.approvalStatus == 'ysh'" type="success" size="medium">已审核</el-tag>
<div style="color: #FF9655" v-if="scope.row.approvalStatus == 'await'">待审核</div>
<div style="color: #0DC291" v-if="scope.row.approvalStatus == 'qrts'" >已审核入库</div>
<div style="color: #F44522" v-if="scope.row.approvalStatus == 'yzf'">已作废</div>
<div style="color: #409EFF" v-if="scope.row.approvalStatus == 'ysh'" >已审核</div>
</div>
</template>
</el-table-column>
<el-table-column label="制单人" align="center" prop="createByName" width="230px">
<template slot-scope="scope">
<span>{{ scope.row.createByName }}({{ parseTime(scope.row.orderDate) }})</span>
<span>{{ scope.row.createByName }}</span>
</template>
</el-table-column>
<!-- <el-table-column label="制单日期" align="center" prop="orderDate" width="200">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.orderDate) }}</span>
</template>
</el-table-column> -->
<el-table-column label="审核人" align="center" prop="approverName">
<template slot-scope="scope">
<span>{{ scope.row.approverName == null ? "-" : scope.row.approverName }}</span>
</template>
</el-table-column>
<el-table-column label="确认人" align="center" prop="confirmerName">
<el-table-column label="入库人" align="center" prop="confirmerName">
<template slot-scope="scope">
<span>{{ scope.row.confirmerName == null ? "-" : scope.row.confirmerName }}</span>
</template>
</el-table-column>
<el-table-column label="制单时间" align="center" prop="orderDate" >
<template slot-scope="scope">
<span>{{ parseTime(scope.row.orderDate) }}</span>
</template>
</el-table-column>
<el-table-column label="审核时间" align="center" prop="examineTime" >
<template slot-scope="scope">
<span>{{ parseTime(scope.row.examineTime) }}</span>
</template>
</el-table-column>
<el-table-column label="入库时间" align="center" prop="storageTime" >
<template slot-scope="scope">
<span>{{ parseTime(scope.row.storageTime) }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
v-if="scope.row.approvalStatus == 'await'"
@click="dispose(scope.row)"
>处理单据
>盘点审核
</el-button>
<el-button
size="mini"
type="text"
v-else-if="scope.row.approvalStatus == 'ysh'"
@click="dispose(scope.row)"
>盘点入库
</el-button>
<el-button
size="mini"
type="text"
v-else
@click="dispose(scope.row)"
>查看详情
</el-button>
</template>
@ -211,11 +235,13 @@ export default {
this.inventoryForm.approvalStatus = 'await';
this.refresh();
this.inventoryForm.orderDate = this.parseTime(new Date())
const res = await addInventoryApi(this.inventoryForm);
if (res) {
this.$modal.msgSuccess("新建批次成功");
this.getList();
this.dispose(res.data)
} else {
this.$modal.msgError("新建批次失败");
}

View File

@ -61,6 +61,16 @@ public class MtInventory extends BaseEntity {
* 店铺ID
*/
private Integer storeId;
/**
* 审核时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" , timezone = "GMT+8")
private Date examineTime;
/**
* 入库时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" , timezone = "GMT+8")
private Date storageTime;
}

View File

@ -141,6 +141,8 @@
mp.store_id AS storeId,
mp.create_time AS createTime,
mp.update_time AS updateTime,
mp.examine_time AS examineTime,
mp.storage_time AS storageTime,
mp.create_by createBy,
ms1.real_name createByName,
ms2.real_name approverName,

View File

@ -24,6 +24,7 @@ import org.springframework.data.domain.PageRequest;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
/**
@ -93,6 +94,9 @@ public class MtInventoryServiceImpl implements MtInventoryService {
AccountInfo nowAccountInfo = TokenUtil.getNowAccountInfo();
mtInventory.setCreateBy(nowAccountInfo.getStaffId().toString());
mtInventory.setStoreId(nowAccountInfo.getStoreId());
if (ObjectUtil.isEmpty(mtInventory.getOrderDate())){
mtInventory.setOrderDate(new Date());
}
this.mtInventoryDao.insert(mtInventory);
return mtInventory;
}
@ -205,6 +209,7 @@ public class MtInventoryServiceImpl implements MtInventoryService {
MtInventory mtReturns = new MtInventory();
mtReturns.setApprover(nowAccountInfo.getStaffId().toString());
mtReturns.setExamineTime(new Date());
mtReturns.setId(id);
int update = mtInventoryDao.update(mtReturns);
return update>0;
@ -216,6 +221,7 @@ public class MtInventoryServiceImpl implements MtInventoryService {
MtInventory mtReturns = new MtInventory();
mtReturns.setConfirmer(nowAccountInfo.getStaffId().toString());
mtReturns.setStorageTime(new Date());
mtReturns.setId(id);
int update = mtInventoryDao.update(mtReturns);
return update>0;

View File

@ -432,7 +432,8 @@ public class FleetInfoServiceImpl extends ServiceImpl<FleetInfoMapper, FleetInfo
//查找车队成员
FleetMember fleetMember = fleetMemberMapper.selectOne(new LambdaQueryWrapper<FleetMember>()
.eq(FleetMember::getUserId, allOrderInfo.getUserId())
.orderBy(true, true, FleetMember::getCreateTime)
.eq(FleetMember::getIfLogOff,"0")
.orderByDesc(true, FleetMember::getCreateTime)
.last("limit 1"));
// 获取当前车队卡
FleetInfo fleetInfo = baseMapper.selectOne(new LambdaQueryWrapper<FleetInfo>()

View File

@ -132,6 +132,7 @@ public class FleetMemberServiceImpl extends ServiceImpl<FleetMemberMapper, Fleet
//判断用户是否加入车队
FleetMember fleetMember2 = baseMapper.selectOne(new LambdaQueryWrapper<FleetMember>()
.eq(FleetMember::getMobile, fleetMember.getMobile())
.eq(FleetMember::getIfLogOff, "0")
.last("limit 1"));
if (ObjectUtil.isNotEmpty(fleetMember2)) {
throw new RuntimeException("该用户已绑定车队");
@ -207,6 +208,13 @@ public class FleetMemberServiceImpl extends ServiceImpl<FleetMemberMapper, Fleet
createVaseInfo(mtUser, nowAccountInfo.getStoreId().toString(), null, null);
}
// 如果不限额的话将成员的余额信息改为车队的余额信息
FleetInfo fleetInfo = fleetInfoService.queryById(fleetMember.getFleetId());
if (fleetMember.getSecondaryCardType() == 1) {
fleetMember.setSecondaryCardLimit(fleetInfo.getTotalBalance());
fleetMember.setRemainingCreditLimit(fleetInfo.getTotalBalance() - fleetMember.getUsedCreditLimit());
}
fleetMember.setUserId(mtUser.getId());
fleetMember.setCarNum(mtUser.getCarNo());
fleetMember.setStoreId(nowAccountInfo.getStoreId());
@ -403,7 +411,8 @@ public class FleetMemberServiceImpl extends ServiceImpl<FleetMemberMapper, Fleet
public FleetMember selectByUserId(Integer userId) {
return baseMapper.selectOne(new LambdaQueryWrapper<FleetMember>()
.eq(FleetMember::getUserId, userId)
.orderBy(true, true, FleetMember::getCreateTime)
.eq(FleetMember::getIfLogOff, "0")
.orderByDesc(true,FleetMember::getCreateTime)
.last("limit 1"));
}

View File

@ -651,13 +651,20 @@ public class OilOrderServiceImpl extends ServiceImpl<OilOrderMapper, OilOrder> i
if (ObjectUtil.isNotEmpty(jsonObject.get("activeType"))) {
order.setActiveType(jsonObject.get("activeType").toString());
}
if (payType.equals("CASH") || payType.equals("after_pay") || payType.equals("card_value") || payType.equals("car_card_value")) {
if (payType.equals("CASH") || payType.equals("after_pay") || payType.equals("card_value") || payType.equals("car_card_value") || payType.equals("fule_card")) {
order.setPayTime(new Date());
order.setOrderStatus("paid");
if (ObjectUtil.isNotEmpty(userId)) this.insertCardBalance(consumeAmount, userId, storeId, orderNo);
this.addOilTracks(order, storeId);
if (ObjectUtil.isNotEmpty(userId)) {
this.updateGrowthValue(oilAmount, oilActualPay, userId, Integer.valueOf(jsonObject.get("oils").toString()), storeId, orderNo);
if (payType.equals("card_value")) {
// 修改用户储值卡余额
this.insertCardBalance(consumeAmount, userId, storeId, orderNo);
}
if (payType.equals("fule_card")) {
// 修改用户囤油卡余额
userFuelService.changeBalance(userId, Integer.valueOf(jsonObject.get("oils").toString()), storeId, nowAccountInfo.getChainStoreId(), Double.valueOf(oilCardAmount), orderNo);
}
}
}
if (map.get("allAmount").equals("0")) {
@ -730,7 +737,8 @@ public class OilOrderServiceImpl extends ServiceImpl<OilOrderMapper, OilOrder> i
this.insertAllOrderInfo(orderNo, storeId, oilAmount + goodsAmount, payAmount, oilDiscount, payType, userId, "PC", "6", "paid", seekZero);
// 添加车队卡订单信息
if (payType.equals("car_card_value") && ObjectUtil.isNotEmpty(fleetMember)) this.addFleetOrder(orderNo,fleetMember);
if (payType.equals("car_card_value") && ObjectUtil.isNotEmpty(fleetMember))
this.addFleetOrder(orderNo, fleetMember);
// 计算提成
if (ObjectUtil.isNotEmpty(staffId))
@ -773,6 +781,7 @@ public class OilOrderServiceImpl extends ServiceImpl<OilOrderMapper, OilOrder> i
/**
* 添加车队卡订单信息
*
* @param orderNo 订单号
* @param fleetMember 车队成员信息
*/
@ -1551,6 +1560,8 @@ public class OilOrderServiceImpl extends ServiceImpl<OilOrderMapper, OilOrder> i
OilOrder oilOrder = this.selectOilOrderByOrderNo(orderNo);
// 获取油品信息
OilNumber oilNumber = oilNumberService.selectOilNumberByOilName(oilOrder.getOils(), oilOrder.getStoreId());
// 获取店铺信息
LJStore ljStore = storeService.selectStoreByStoreId(oilOrder.getStoreId());
if (ObjectUtils.isNotEmpty(cardFavorableId)) {
Integer userId = nowAccountInfo.getId();
@ -1659,7 +1670,14 @@ public class OilOrderServiceImpl extends ServiceImpl<OilOrderMapper, OilOrder> i
this.addOilTracks(oilOrder, oilOrder.getStoreId());
this.insertCardOrder(oilOrder.getUserId(), oilOrder.getStoreId(), orderNo, oilOrder.getOrderAmount(), "paid", Double.valueOf(balanceAmount), payAmount);
this.insertAllOrderInfo(orderNo, oilOrder.getStoreId(), oilOrder.getOrderAmount(), payAmount, Double.valueOf(discountAmount), oilOrder.getPayType(), oilOrder.getUserId(), "applet", "1", "paid", 0.0);
if (oilOrder.getPayType().equals("card_value")) {
this.insertCardBalance(Double.valueOf(balanceAmount), userId, oilOrder.getStoreId(), orderNo);
}
if (oilOrder.getPayType().equals("fule_card")) {
// 修改用户囤油卡余额
userFuelService.changeBalance(userId, Integer.valueOf(oilOrder.getOils()), oilOrder.getStoreId(), ljStore.getChainStoreId(), Double.valueOf(oilCardAmount), orderNo);
}
if (ObjectUtil.isNotEmpty(oilOrder.getStaffId()))
staffCommissionService.countStaffCommission(oilOrder.getStaffId(), oilOrder.getStoreId(), oilOrder.getOrderAmount(), oilOrder.getOrderAmount(), "1", orderNo);
oilOrder.setPayAmount(payAmount);
@ -1796,8 +1814,6 @@ public class OilOrderServiceImpl extends ServiceImpl<OilOrderMapper, OilOrder> i
this.updateGrowthValue(oilOrder.getOrderAmount(), oilOrder.getPayAmount(), userId, Integer.valueOf(oilOrder.getOils()), oilOrder.getStoreId(), orderNo);
this.addOilTracks(oilOrder, oilOrder.getStoreId());
this.updateCardAndActiveById(oilOrder.getStoreId(), oilOrder.getUserId(), oilOrder.getId());
if (ObjectUtil.isNotEmpty(userId))
this.insertCardBalance(oilOrder.getOrderAmount() - oilOrder.getDiscountAmount() - oilOrder.getPayAmount(), userId, oilOrder.getStoreId(), orderNo);
if (ObjectUtil.isNotEmpty(oilOrder.getStaffId())) {
staffCommissionService.countStaffCommission(oilOrder.getStaffId(), oilOrder.getStoreId(), oilOrder.getOrderAmount(), oilOrder.getPayAmount(), "1", orderNo);
}
@ -1891,6 +1907,7 @@ public class OilOrderServiceImpl extends ServiceImpl<OilOrderMapper, OilOrder> i
if (oilName.getOilType().equals("天然气")) {
userBalanceService.growthValue(userid, store.getChainStoreId(), storeId, "3", oilAmount, "油品订单消费", orderNo);
}
}
}

View File

@ -19,4 +19,13 @@ public interface IMtUserFuelService extends IService<MtUserFuel> {
* @return
*/
Double selectByUserIdAndOilId(Integer userId, Integer oilId, Integer storeId);
/**
* 根据用户id和油号id修改油量信息并添加消耗记录囤油卡支付
* @param userId
* @param oilId
* @param storeId
* @param balance
*/
void changeBalance(Integer userId, Integer oilId, Integer storeId, Integer chainStoreId, Double balance,String orderNo);
}

View File

@ -2,10 +2,15 @@ package com.fuint.business.userManager.service.impl;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.fuint.business.marketingActivity.cardFule.entity.CardFuelChange;
import com.fuint.business.marketingActivity.cardFule.service.CardFuelChangeService;
import com.fuint.business.petrolStationManagement.entity.OilName;
import com.fuint.business.petrolStationManagement.service.OilNameService;
import com.fuint.business.userManager.entity.MtUserFuel;
import com.fuint.business.userManager.mapper.MtUserFuelMapper;
import com.fuint.business.userManager.service.IMtUserFuelService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
@ -18,6 +23,10 @@ import org.springframework.stereotype.Service;
*/
@Service
public class MtUserFuelServiceImpl extends ServiceImpl<MtUserFuelMapper, MtUserFuel> implements IMtUserFuelService {
@Autowired
private CardFuelChangeService cardFuelChangeService;
@Autowired
private OilNameService oilNameService;
@Override
public Double selectByUserIdAndOilId(Integer userId, Integer oilId, Integer storeId) {
@ -30,4 +39,29 @@ public class MtUserFuelServiceImpl extends ServiceImpl<MtUserFuelMapper, MtUserF
if (ObjectUtil.isNotEmpty(mtUserFuel) && ObjectUtil.isNotEmpty(mtUserFuel.getFuelAmount())) fuelAmount = mtUserFuel.getFuelAmount();
return fuelAmount;
}
@Override
public void changeBalance(Integer userId, Integer oilId, Integer storeId, Integer chainStoreId, Double balance,String orderNo) {
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("mt_user_id", userId);
queryWrapper.eq("oil_name", oilId);
queryWrapper.eq("store_id", storeId);
MtUserFuel mtUserFuel = baseMapper.selectOne(queryWrapper);
Double fuelAmount = mtUserFuel.getFuelAmount();
mtUserFuel.setFuelAmount(fuelAmount - balance);
baseMapper.updateById(mtUserFuel);
OilName oilName = oilNameService.selectOilNameById(oilId);
CardFuelChange cardFuelChange = new CardFuelChange();
cardFuelChange.setUserId(userId);
cardFuelChange.setChainStoreId(chainStoreId);
cardFuelChange.setStoreId(storeId);
cardFuelChange.setChangeType("0");
cardFuelChange.setFromType("油卡消费");
cardFuelChange.setBalance(balance);
cardFuelChange.setOilType(String.valueOf(oilId));
cardFuelChange.setType(oilName.getOilType() + " " + oilName.getOilName());
cardFuelChange.setOrderNo(orderNo);
cardFuelChange.setAfterTheChange(mtUserFuel.getFuelAmount());
cardFuelChangeService.insert(cardFuelChange);
}
}

View File

@ -1596,6 +1596,7 @@ export default {
this.payForm.oilOrder = null
}
this.payForm.oilCardAmount = this.oilLiter
//
this.payForm.goodsOrder = JSON.stringify(this.goodsList)
//