diff --git a/fuintAdmin/src/api/allOrder.js b/fuintAdmin/src/api/allOrder.js index 87cc1919d..290c5db22 100644 --- a/fuintAdmin/src/api/allOrder.js +++ b/fuintAdmin/src/api/allOrder.js @@ -163,3 +163,20 @@ export function getDataBoard(query) { }); } +// 油站首页数据分析 +export function getDataAnalysis(query) { + return request({ + url: 'business/allOrderInfo/getDataAnalysis', + method: 'get', + params:query + }); +} +// 油站首页数据展示 +export function getDataShow(query) { + return request({ + url: 'business/allOrderInfo/getDataShow', + method: 'get', + params:query + }); +} + diff --git a/fuintAdmin/src/assets/images/telindex.png b/fuintAdmin/src/assets/images/telindex.png new file mode 100644 index 000000000..27b9037c4 Binary files /dev/null and b/fuintAdmin/src/assets/images/telindex.png differ diff --git a/fuintAdmin/src/assets/images/zdy.png b/fuintAdmin/src/assets/images/zdy.png new file mode 100644 index 000000000..f78d00191 Binary files /dev/null and b/fuintAdmin/src/assets/images/zdy.png differ diff --git a/fuintAdmin/src/views/shopowner.vue b/fuintAdmin/src/views/shopowner.vue index 5cc3a2a8b..9bcfd1938 100644 --- a/fuintAdmin/src/views/shopowner.vue +++ b/fuintAdmin/src/views/shopowner.vue @@ -2,16 +2,15 @@
-
+
- -
-
核心数据
+
核心数据
{{ storeTotal.allAmount || 0 }}
@@ -37,7 +36,7 @@
通知中心
更多
- +
【{{ item.notificationType }}】{{ item.templateContent }}
暂无通知
@@ -45,12 +44,22 @@
-
数据看板
-
近一周
+
数据看板
+ +
近一周
+ + 今日 + 昨日 + 近一周 + 近一月 + 近一周 + +
+
自定义
-
油品销售金额(元)/交易笔数
+
油品销售金额(元)/交易笔数
{{ storeAmount.oilAmount || 0 }}/{{ storeAmount.oilNum || 0 }}
-
会员充值金额(元)/充值笔数
+
会员充值金额(元)/充值笔数
{{ storeAmount.userRechargeAmount || 0 }}/{{ storeAmount.userRechargeNum || 0 }}
-
便利店销售金额(元)/交易笔数
+
便利店销售金额(元)/交易笔数
{{ storeAmount.minimartAmount || 0 }}/{{ storeAmount.minimartNum || 0 }}
-
积分商城销售金额(元)/兑换笔数
+
积分商城销售金额(元)/兑换笔数
{{ storeAmount.pointMallAmount || 0 }}/{{ storeAmount.pointMallNum || 0 }}
@@ -97,7 +106,7 @@
- +
@@ -105,57 +114,114 @@
-
-
硬件设备
-
- - - - -
- -
-
{{ item.name }}
+
+
+
硬件设备
+ + +
+
+
+
+ +
+
{{ item.name }}
+
+
+
-
数据展示
+
+
油品交易分析
+ +
近一周
+ + 今日 + 昨日 + 近一周 + 近一月 + 近一周 + +
+
自定义
+
+ + +
+
-
员工排行
+
员工排行 +
近一周
+ + 今日 + 昨日 + 近一周 + 近一月 + 近一周 + +
排名
员工姓名
-
会员充值金额(元)
-
油品销售金额(元)
-
总销售额(元)
+
会员充值金额
+
油品销售金额
+
总销售额
-
-
{{index +1}}
-
{{ item.realName }}
-
{{item.cardSum}}
-
{{item.oilSum}}
-
{{item.totalSum}}
+
+
+
{{index +1}}
+
{{ item.realName }}
+
{{item.cardSum}}
+
{{item.oilSum}}
+
{{item.totalSum}}
+
+
-
数据统计
-
- {{item}} +
数据统计
+ +
近一周
+ + 今日 + 昨日 + 近一周 + 近一月 + 近一周 + +
+
自定义
+
+ +
- -
+
@@ -178,6 +244,8 @@ export default { props:["accountId"], data(){ return{ + xShow:false, + timeShow:false, form: {}, timeList:[ "今日", @@ -222,7 +290,7 @@ export default { created() { let nowDate = new Date(); let oneWeekAgo = new Date(nowDate.getTime() - 6 * 24 * 60 * 60 * 1000) - this.value1 = [parseTime(oneWeekAgo),parseTime(nowDate)] + this.value1 = [parseTime(oneWeekAgo), parseTime(nowDate)] this.getStoreTotal() // this.selectChildByDeptIdApi() this.getStoreAmount() @@ -232,7 +300,7 @@ export default { start.setMinutes(0) start.setSeconds(0) start.setMilliseconds(0) - this.value2 = [start,new Date()]; + this.value2 = [start, new Date()]; this.getStoreList() this.getHardwareList() this.getNoticeList() @@ -241,16 +309,16 @@ export default { mounted() { // this.initChart() }, - methods:{ - goList(){ + methods: { + goList() { this.$router.push('/notificationList/index') }, // 获取员工排行信息 getEmployeList() { this.employeLoading = true - employeeSalesApi().then(res=>{ - if(res.code == 200) { - if (res.data.length >=10) { + employeeSalesApi().then(res => { + if (res.code == 200) { + if (res.data.length >= 10) { this.employeList = res.data.slice(0, 10); } else { this.employeList = res.data @@ -261,45 +329,45 @@ export default { }) }, - getNoticeList(){ + getNoticeList() { getNotificationlogList({pageNo: 1, pageSize: 4}).then(res => { this.noticeList = res.data.records }) }, - getHardwareList(){ - getListApi({page: 1, pageSize: 3,status:'1'}).then(res=>{ + getHardwareList() { + getListApi({page: 1, pageSize: 3, status: '1'}).then(res => { this.hardwareList = res.data.records; this.hardwareList.forEach(item => { - if (item.image.includes(",")){ + if (item.image.includes(",")) { item.image = item.image.split(",")[0] } }) }) }, - getStoreList(){ - selectStoreAmount(this.addDateRange({},this.value2)).then(res => { + getStoreList() { + selectStoreAmount(this.addDateRange({}, this.value2)).then(res => { this.storeList = res.data this.initChart() }) }, // 选择机构信息 - chooseDept(){ + chooseDept() { this.options.forEach(item => { - if (item.deptId == this.value){ + if (item.deptId == this.value) { this.queryParams.ancestors = item.ancestors } }) this.getStoreAmount() }, // banner图 - selectBannerList(){ + selectBannerList() { let queryParams = { - pageNo:1, - pageSize:10, - systemPosition:"首页", - bannerStatus:true + pageNo: 1, + pageSize: 10, + systemPosition: "首页", + bannerStatus: true } - getBannerListApi(queryParams).then(res=>{ + getBannerListApi(queryParams).then(res => { this.bannerList = res.data.records }) }, @@ -310,28 +378,28 @@ export default { }) }, // 核心数据 - getStoreTotal(){ + getStoreTotal() { getTotalAmount().then(res => { this.storeTotal = res.data }) }, - getStoreAmount(){ - getDataBoard(this.addDateRange(this.queryParams,this.value1)).then(res => { + getStoreAmount() { + getDataBoard(this.addDateRange(this.queryParams, this.value1)).then(res => { this.storeAmount = res.data this.initChart() }) }, - countPercentage(upNum,downNum){ + countPercentage(upNum, downNum) { let percentage = 0; - percentage = (upNum / downNum)*100 + percentage = (upNum / downNum) * 100 return percentage.toFixed(2) }, initChart() { const chart = echarts.init(document.getElementById('ccc')) const chart1 = echarts.init(document.getElementById('cccc')) - const chart2= echarts.init(document.getElementById('ccct')) - const chart3= echarts.init(document.getElementById('ctct')) - const chart4= echarts.init(document.getElementById('cccf')) + const chart2 = echarts.init(document.getElementById('ccct')) + const chart3 = echarts.init(document.getElementById('ctct')) + const chart4 = echarts.init(document.getElementById('cccf')) let dataList = [] let allTotal = 0 if (this.storeAmount.oilNameList) { @@ -352,7 +420,7 @@ export default { let rechargeBalanceList = [] let consumeBalanceList = [] let userBalanceList = [] - if (this.storeList.length>0) { + if (this.storeList.length > 0) { this.storeList.forEach(item => { storeNameList.push(item.storeName) oilAmountList.push(item.oilAmount) @@ -417,8 +485,14 @@ export default { data: [ // { value: 28, name: '28%' }, // { value: 72, name: '72%' }, - { value: this.countPercentage(Number(this.storeAmount.oilNum),Number(this.storeAmount.oilNum)+Number(this.storeAmount.noOilNum)), name: "油品交易占比" }, - { value: this.countPercentage(Number(this.storeAmount.noOilNum),Number(this.storeAmount.oilNum)+Number(this.storeAmount.noOilNum)), name: "非油品交易占比" }, + { + value: this.countPercentage(Number(this.storeAmount.oilNum), Number(this.storeAmount.oilNum) + Number(this.storeAmount.noOilNum)), + name: "油品交易占比" + }, + { + value: this.countPercentage(Number(this.storeAmount.noOilNum), Number(this.storeAmount.oilNum) + Number(this.storeAmount.noOilNum)), + name: "非油品交易占比" + }, ], emphasis: { @@ -452,10 +526,22 @@ export default { // { value: 72, name: '积分商城交易占比' }, // { value: 28, name: '油品交易占比' }, // { value: 72, name: '便利店交易占比' }, - { value: this.countPercentage(Number(this.storeAmount.userNum),Number(this.storeAmount.oilNum)+Number(this.storeAmount.userNum)+Number(this.storeAmount.integralNum)+Number(this.storeAmount.goodNum)), name: '会员充值占比' }, - { value: this.countPercentage(Number(this.storeAmount.integralNum),Number(this.storeAmount.oilNum)+Number(this.storeAmount.userNum)+Number(this.storeAmount.integralNum)+Number(this.storeAmount.goodNum)), name: '积分商城交易占比' }, - { value: this.countPercentage(Number(this.storeAmount.oilNum),Number(this.storeAmount.oilNum)+Number(this.storeAmount.userNum)+Number(this.storeAmount.integralNum)+Number(this.storeAmount.goodNum)), name: '油品交易占比' }, - { value: this.countPercentage(Number(this.storeAmount.goodNum),Number(this.storeAmount.oilNum)+Number(this.storeAmount.userNum)+Number(this.storeAmount.integralNum)+Number(this.storeAmount.goodNum)), name: '便利店交易占比' }, + { + value: this.countPercentage(Number(this.storeAmount.userNum), Number(this.storeAmount.oilNum) + Number(this.storeAmount.userNum) + Number(this.storeAmount.integralNum) + Number(this.storeAmount.goodNum)), + name: '会员充值占比' + }, + { + value: this.countPercentage(Number(this.storeAmount.integralNum), Number(this.storeAmount.oilNum) + Number(this.storeAmount.userNum) + Number(this.storeAmount.integralNum) + Number(this.storeAmount.goodNum)), + name: '积分商城交易占比' + }, + { + value: this.countPercentage(Number(this.storeAmount.oilNum), Number(this.storeAmount.oilNum) + Number(this.storeAmount.userNum) + Number(this.storeAmount.integralNum) + Number(this.storeAmount.goodNum)), + name: '油品交易占比' + }, + { + value: this.countPercentage(Number(this.storeAmount.goodNum), Number(this.storeAmount.oilNum) + Number(this.storeAmount.userNum) + Number(this.storeAmount.integralNum) + Number(this.storeAmount.goodNum)), + name: '便利店交易占比' + }, ], emphasis: { @@ -480,7 +566,7 @@ export default { } }, legend: { - data: ['Evaporation','油品交易额','非油品交易额', '会员充值金额','会员消费金额', '会员余额'] + data: ['Evaporation', '油品交易额', '非油品交易额', '会员充值金额', '会员消费金额', '会员余额'] }, xAxis: [ { @@ -635,7 +721,7 @@ export default { } }, legend: { - data: ['Evaporation','油品交易额','非油品交易额', '会员充值金额','会员消费金额', '会员余额'] + data: ['Evaporation', '油品交易额', '非油品交易额', '会员充值金额', '会员消费金额', '会员余额'] }, xAxis: [ { @@ -794,34 +880,39 @@ export default { diff --git a/fuintAdmin_zt/src/views/homeComponents/agent.vue b/fuintAdmin_zt/src/views/homeComponents/agent.vue index afb5cd62a..009302168 100644 --- a/fuintAdmin_zt/src/views/homeComponents/agent.vue +++ b/fuintAdmin_zt/src/views/homeComponents/agent.vue @@ -138,16 +138,19 @@
-
- - - - -
- +
+
+ + + + +
+ +
+
{{ item.name }}
-
{{ item.name }}
+
diff --git a/fuintAdmin_zt/src/views/homeComponents/manage.vue b/fuintAdmin_zt/src/views/homeComponents/manage.vue index 2688bd0ba..e614b6ced 100644 --- a/fuintAdmin_zt/src/views/homeComponents/manage.vue +++ b/fuintAdmin_zt/src/views/homeComponents/manage.vue @@ -148,16 +148,19 @@
-
- - - - -
- +
+
+ + + + +
+ +
+
{{ item.name }}
-
{{ item.name }}
+
diff --git a/fuintAdmin_zt/src/views/homeComponents/shopowner.vue b/fuintAdmin_zt/src/views/homeComponents/shopowner.vue index 3eec88059..2eb0c3335 100644 --- a/fuintAdmin_zt/src/views/homeComponents/shopowner.vue +++ b/fuintAdmin_zt/src/views/homeComponents/shopowner.vue @@ -131,16 +131,19 @@
硬件设备
-
- - - - -
- +
+
+ + + + +
+ +
+
{{ item.name }}
-
{{ item.name }}
+
diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/business/order/controller/AllOrderInfoController.java b/fuintBackend/fuint-application/src/main/java/com/fuint/business/order/controller/AllOrderInfoController.java index c112835f1..5be0c4e8f 100644 --- a/fuintBackend/fuint-application/src/main/java/com/fuint/business/order/controller/AllOrderInfoController.java +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/business/order/controller/AllOrderInfoController.java @@ -21,6 +21,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -309,6 +310,29 @@ public class AllOrderInfoController extends BaseController { return getSuccessResult(allOrderInfoService.getDataBoard(map)); } + /** + * 油站首页数据分析 + * @param map + * @return + */ + @GetMapping("getDataAnalysis") + public ResponseObject getDataAnalysis(Map map){ + return getSuccessResult(allOrderInfoService.getDataAnalysis(map)); + } + + /** + * 油站首页数据展示 + * @param map + * @return + */ + @GetMapping("getDataShow") + public ResponseObject getDataShow(String startTime, String endTime) { + Map map = new HashMap<>(); + map.put("startTime", startTime); + map.put("endTime", endTime); + return getSuccessResult(allOrderInfoService.getDataShow(map)); + } + /** * 消费记录(小程序) * @param pageNo diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/business/order/mapper/OilOrderMapper.java b/fuintBackend/fuint-application/src/main/java/com/fuint/business/order/mapper/OilOrderMapper.java index f196de7b3..3795a00d3 100644 --- a/fuintBackend/fuint-application/src/main/java/com/fuint/business/order/mapper/OilOrderMapper.java +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/business/order/mapper/OilOrderMapper.java @@ -140,4 +140,6 @@ public interface OilOrderMapper extends BaseMapper { OilOrderVo getInfoByOrderNo(String orderNo); Double selectSumMoeny(@Param("orderNos") List orderNos); + + double selectSumMoneyByDayAndOilNumber(@Param("oilName") String oilName, @Param("day") String day, @Param("storeId") Integer storeId); } diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/business/order/mapper/xml/OilOrderMapper.xml b/fuintBackend/fuint-application/src/main/java/com/fuint/business/order/mapper/xml/OilOrderMapper.xml index 02d82b218..3bdda0435 100644 --- a/fuintBackend/fuint-application/src/main/java/com/fuint/business/order/mapper/xml/OilOrderMapper.xml +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/business/order/mapper/xml/OilOrderMapper.xml @@ -804,4 +804,8 @@ #{item} + diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/business/order/service/AllOrderInfoService.java b/fuintBackend/fuint-application/src/main/java/com/fuint/business/order/service/AllOrderInfoService.java index 3260267b3..238aa3114 100644 --- a/fuintBackend/fuint-application/src/main/java/com/fuint/business/order/service/AllOrderInfoService.java +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/business/order/service/AllOrderInfoService.java @@ -157,6 +157,13 @@ public interface AllOrderInfoService { */ List getDataAnalysis(Map map); + /** + * 油站首页数据展示 + * @param map + * @return + */ + HomeDataShowVo getDataShow(Map map); + /** * 消费记录 * @param page diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/business/order/service/impl/AllOrderInfoServiceImpl.java b/fuintBackend/fuint-application/src/main/java/com/fuint/business/order/service/impl/AllOrderInfoServiceImpl.java index 152da2055..89d891208 100644 --- a/fuintBackend/fuint-application/src/main/java/com/fuint/business/order/service/impl/AllOrderInfoServiceImpl.java +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/business/order/service/impl/AllOrderInfoServiceImpl.java @@ -1737,14 +1737,15 @@ public class AllOrderInfoServiceImpl extends ServiceImpl oilNumbers = oilNumberMapper.selectList(new LambdaQueryWrapper() - .eq(OilNumber::getStoreId, nowAccountInfo.getStoreId()) - .eq(OilNumber::getState, "1") - .eq(OilNumber::getIfDelete, "0")); +// List oilNumbers = oilNumberMapper.selectList(new LambdaQueryWrapper() +// .eq(OilNumber::getStoreId, nowAccountInfo.getStoreId()) +// .eq(OilNumber::getState, "启用") +// .ne(OilNumber::getIfDelete, "1")); + List oilNumbers = oilNumberMapper.selectAllOil(nowAccountInfo.getStoreId()); LambdaQueryWrapper oilOrderQuery = new LambdaQueryWrapper(); oilOrderQuery.eq(OilOrder::getStoreId, nowAccountInfo.getStoreId()) - .eq(OilOrder::getUserId, nowAccountInfo.getId()) + .eq(OilOrder::getStoreId, nowAccountInfo.getStoreId()) .eq(OilOrder::getOrderStatus, "paid"); if (ObjectUtil.isNotEmpty(startTime) && ObjectUtil.isNotEmpty(endTime)) { oilOrderQuery.between(OilOrder::getCreateTime, startTime, endTime); @@ -1754,7 +1755,7 @@ public class AllOrderInfoServiceImpl extends ServiceImpl oilList = new ArrayList<>(); for (OilOrder oilOrder : oilOrders) { @@ -1762,9 +1763,9 @@ public class AllOrderInfoServiceImpl extends ServiceImpl map) { + HomeDataShowVo homeDataShowVo = new HomeDataShowVo(); + String startTime = map.get("startTime"); + String endTime = map.get("endTime"); + AccountInfo nowAccountInfo = TokenUtil.getNowAccountInfo(); + if (ObjectUtil.isNotEmpty(startTime) && ObjectUtil.isNotEmpty(endTime)) { + //查询出所有油号 + List oilNumbers = oilNumberMapper.selectAllOil(nowAccountInfo.getStoreId()); + List oilNames = oilNumbers.stream().map(oil -> oil.getOilNames() + oil.getOilType()).collect(Collectors.toList()); + homeDataShowVo.setOilNames(oilNames); + //根据开始时间与结束时间获取所有天数 + List days = getAllDatesBetween(startTime, endTime); + List> oilData = new ArrayList<>(); + for (String day : days) { + Map mapData = new HashMap<>(); + mapData.put("day", day); + List oilPrices = new ArrayList<>(); + for (OilNumber oilNumber : oilNumbers) { + //查询油品交易总金额 + double price = oilOrderMapper.selectSumMoneyByDayAndOilNumber(oilNumber.getOilName(), day, nowAccountInfo.getStoreId()); + oilPrices.add(price); + } + mapData.put("oilPrices", oilPrices); + oilData.add(mapData); + } + homeDataShowVo.setOilData(oilData); + } + return homeDataShowVo; + } + + /** + * 获取时间段内的所有日期 + * @param startTime + * @return + */ + public List getAllDatesBetween(String startTime, String endTime) { + + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + LocalDate startDate = LocalDate.parse(startTime, formatter); + LocalDate endDate = LocalDate.parse(endTime, formatter); + + List dateList = new ArrayList<>(); + while (!startDate.isAfter(endDate)) { + dateList.add(startDate.format(formatter)); + startDate = startDate.plusDays(1); + } + + return dateList; + } + + private static String getFormattedResult(double averageValue) { + DecimalFormat df = new DecimalFormat("#.00"); + String formattedResult = df.format(averageValue); + return formattedResult; + } + /** * 消费记录 * diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/business/order/service/impl/OilOrderServiceImpl.java b/fuintBackend/fuint-application/src/main/java/com/fuint/business/order/service/impl/OilOrderServiceImpl.java index b1c4c2196..2c2c14fd8 100644 --- a/fuintBackend/fuint-application/src/main/java/com/fuint/business/order/service/impl/OilOrderServiceImpl.java +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/business/order/service/impl/OilOrderServiceImpl.java @@ -438,7 +438,7 @@ public class OilOrderServiceImpl extends ServiceImpl i Integer staffId = null; if (ObjectUtil.isNotEmpty(map.get("staffId"))) { staffId = Integer.valueOf(map.get("staffId")); - }else { + } else { staffId = nowAccountInfo.getStaffId(); } // 会员消费金额(储值卡需要减少的金额) @@ -456,7 +456,7 @@ public class OilOrderServiceImpl extends ServiceImpl i isMember = true; } // 使用积分数量 - Integer usePoint = Integer.valueOf(ObjectUtil.isNotEmpty(map.get("usePoint")) ? map.get("usePoint") :"0"); + Integer usePoint = Integer.valueOf(ObjectUtil.isNotEmpty(map.get("usePoint")) ? map.get("usePoint") : "0"); // 积分金额 Double pointAmount = Double.valueOf(ObjectUtil.isNotEmpty(map.get("pointAmount")) ? map.get("pointAmount") : "0.0"); // 终端 @@ -493,20 +493,20 @@ public class OilOrderServiceImpl extends ServiceImpl i } // 查看会员储值卡余额是否足够付款 - if (payType.equals("card_value")){ - if (ObjectUtil.isEmpty(userId)){ + if (payType.equals("card_value")) { + if (ObjectUtil.isEmpty(userId)) { orders.put("error", "请先选择会员信息"); return orders; } UserBalance userBalance = userBalanceService.selectUserBalance(userId, nowAccountInfo.getChainStoreId()); - if (userBalance.getCardBalance() oilIds = cardValueRuleService.getOilIds(storeId); boolean flag = false; for (String oilId : oilIds) { - if (oilId.equals(JSONObject.parseObject(oilOrder).get("oils").toString())){ + if (oilId.equals(JSONObject.parseObject(oilOrder).get("oils").toString())) { flag = true; } } @@ -517,13 +517,13 @@ public class OilOrderServiceImpl extends ServiceImpl i } // 查看会员囤油卡余额是否足够付款 - if (payType.equals("fule_card")){ - if (ObjectUtil.isEmpty(userId)){ + if (payType.equals("fule_card")) { + if (ObjectUtil.isEmpty(userId)) { orders.put("error", "请先选择会员信息"); return orders; } Double fuelAmount = userFuelService.selectByUserIdAndOilId(userId, Integer.valueOf(JSONObject.parseObject(oilOrder).get("oils").toString()), storeId); - if (fuelAmount i if (payType.equals("CASH") || payType.equals("after_pay") || payType.equals("card_value")) { order.setPayTime(new Date()); order.setOrderStatus("paid"); - if(ObjectUtil.isNotEmpty(userId)) this.insertCardBalance(consumeAmount, userId, storeId, orderNo); + 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); @@ -628,7 +628,7 @@ public class OilOrderServiceImpl extends ServiceImpl i } baseMapper.insert(order); - if (order.getOrderStatus().equals("paid")){ + if (order.getOrderStatus().equals("paid")) { this.updateCardAndActiveById(storeId, userId, order.getId()); } } @@ -747,12 +747,11 @@ public class OilOrderServiceImpl extends ServiceImpl i public void updateCardAndActiveById(Integer storeId, Integer userId, Integer orderId) { if (ObjectUtil.isNotEmpty(userId)) { Map map = new HashMap<>(); - map.put("userId",userId.toString()); - map.put("storeId",storeId.toString()); - map.put("orderId",orderId.toString()); + map.put("userId", userId.toString()); + map.put("storeId", storeId.toString()); + map.put("orderId", orderId.toString()); payCenterService.cashRegisterSpendWisely(map); } - } @Override @@ -763,10 +762,10 @@ public class OilOrderServiceImpl extends ServiceImpl i // 油品订单金额 Double oilAmount = Double.valueOf(map.get("oilAmount")); // 将油品订单信息的json数据转换为数组 - List oilOrders = null; + JSONObject oilOrders = null; - if (!map.get("oilOrder").equals("[]")) { - oilOrders = JSONArray.parseArray(map.get("oilOrder"), JSONObject.class); + if (ObjectUtil.isNotEmpty(map.get("oilOrder"))) { + oilOrders = JSONObject.parseObject(map.get("oilOrder")); // 二维码支付 if (authCode.contains("9E")) { String[] split = authCode.split("9E"); @@ -1134,7 +1133,7 @@ public class OilOrderServiceImpl extends ServiceImpl i * @param oilOrders 油品订单 * @return 是否成功 */ - private Map updateUserBalanceAndInsetOrder1(int userId, Map map, Double oilAmount, List oilOrders, Integer storeId) { + private Map updateUserBalanceAndInsetOrder1(int userId, Map map, Double oilAmount, JSONObject oilOrders, Integer storeId) { Map res = new HashMap<>(); LJStore store = storeService.selectStoreByStoreId(storeId); // 根据userId查询用户储值卡信息 @@ -1149,180 +1148,74 @@ public class OilOrderServiceImpl extends ServiceImpl i String orderNo = "2345" + timestamp + randomString; AccountInfo accountInfo = TokenUtil.getNowAccountInfo(); + // 油品实付金额 + Double oilActualPay = Double.valueOf(map.get("oilActualPay")); + // 储值卡消费金额 没有默认传0 + Double balanceAmount = Double.valueOf(ObjectUtil.isNotEmpty(map.get("balanceAmount")) ? map.get("balanceAmount") : "0"); + // 囤油卡消费升数 没有默认传0 + Double oilCardAmount = Double.valueOf(ObjectUtil.isNotEmpty(map.get("oilCardAmount")) ? map.get("oilCardAmount") : "0"); + // 储值卡余额 Double cardBalance = balance.getCardBalance(); - CardFuelRecord cardFuelRecord = new CardFuelRecord(); - cardFuelRecord.setMtUserId(userId); - List recordByUserId = cardFuelRecordService.getRecordByUserId(cardFuelRecord); + // 判断油品消费升数是否可使用 + Double fuelAmount = userFuelService.selectByUserIdAndOilId(userId, Integer.valueOf(oilOrders.get("oils").toString()), storeId); - // 锁价后应付金额 - Double lockupAmount = 0.0; - for (CardFuelRecord fuelRecord : recordByUserId) { - for (int i = 0; i < oilOrders.size(); i++) { - if (fuelRecord.getOilName().equals(oilOrders.get(i).get("oilName"))) { - lockupAmount += fuelRecord.getLockupPrice() * Double.valueOf(oilOrders.get(i).get("liters").toString()); - } - } + if (fuelAmount < oilCardAmount && cardBalance < oilActualPay) { + res.put("error", "余额不足,请分开支付"); + return res; } - String status = "unpaid"; - - if (lockupAmount > 0.0) { - OilOrder order = new OilOrder(); - OilOrder oilOrder = null; - - // 添加收银台订单信息 - CashierOrder cashierOrder = new CashierOrder(); - boolean flag = false; - if (cardBalance >= lockupAmount) { - flag = true; - status = "paid"; - } else { - flag = false; - status = "payFail"; - } - Double oilLiters = 0.0; - for (int i = 0; i < oilOrders.size(); i++) { - Double amount = Double.valueOf(oilOrders.get(i).get("amount").toString()); - Double oilPrice = Double.valueOf(oilOrders.get(i).get("oilPrice").toString()); - Double oilNum = amount / oilPrice; - oilLiters += oilNum; - if (i == 0) { - order.setOrderType("主订单"); - order.setOrderAmount(amount); - order.setPayAmount(amount); - order.setOrderNo(orderNo); - } else { - order.setOrderType("子订单"); - order.setOrderAmount(amount); - order.setPayAmount(0.0); - order.setOrderNo(orderNo + "1"); - } - order.setStoreId(accountInfo.getStoreId()); - order.setUserId(userId); - order.setCommissionAmount(Double.valueOf(map.get("commissionAmount"))); - if (ObjectUtil.isNotEmpty(map.get("staffId"))) - order.setStaffId(Integer.valueOf(map.get("staffId"))); - order.setTerminal(map.get("terminal")); - order.setOils((String) oilOrders.get(i).get("oilName")); - order.setOilGunNum(oilOrders.get(i).get("gunName").toString()); - order.setOilNum(oilNum); - order.setPayUser(userVo1.getMobile()); - order.setPayType(map.get("payType")); - order.setInvoicing("未开票"); - order.setOrderStatus(status); - if (flag) order.setPayTime(new Date()); - - this.addOilTrack(oilOrders.get(i), accountInfo.getStoreId()); - if (ObjectUtil.isNotEmpty(this.selectOilOrderByOrderNo(orderNo))) { - baseMapper.updateById(order); - } else { - baseMapper.insert(order); - } - - oilOrder = this.selectOilOrderByOrderNo(orderNo); - this.updateGrowthValue1(oilAmount, 0.0, userId, Integer.valueOf(oilOrder.getOils()), 0.0, storeId, orderNo); - } - - if (flag) { - - if (ObjectUtil.isNotEmpty(map.get("staffId"))) - cashierOrder.setStaffId(Integer.valueOf(map.get("staffId"))); - cashierOrder.setStoreId(accountInfo.getStoreId()); - cashierOrder.setPayUser(userVo1.getMobile()); - cashierOrder.setAmount(oilAmount); - cashierOrder.setOilPayAmount(oilAmount); - cashierOrder.setPayAmount(oilAmount); - cashierOrder.setStatus(status); - cashierOrder.setPayTime(new Date()); - cashierOrder.setOrderNo(orderNo); - cashierOrder.setOilOrderAmount(oilAmount); - cashierOrder.setTerminal(map.get("terminal")); - cashierOrder.setOilOrderId(oilOrder.getId()); - cashierOrder.setSeekZero(0.0); - cashierOrder.setPayType(map.get("payType")); - cashierOrderService.insertCashierOrder(cashierOrder); - this.insertAllOrderInfo(orderNo, storeId, oilAmount, oilAmount, 0.0, map.get("payType"), userId, "PC", "1", status); - if (ObjectUtil.isNotEmpty(map.get("staffId"))) - staffCommissionService.countStaffCommission(Integer.valueOf(map.get("staffId")), storeId, oilAmount, oilAmount, "1", orderNo); - res.put("success", "success"); - } else { - res.put("error", "储值卡余额不足!"); - } - + OilOrder order = new OilOrder(); + // 添加收银台/油品订单信息 + CashierOrder cashierOrder = new CashierOrder(); + Double amount = oilAmount; + Double oilPrice = Double.valueOf(oilOrders.get("oilPrice").toString()); + Double oilNum = amount / oilPrice; + order.setOrderType("主订单"); + order.setOrderAmount(amount); + order.setPayAmount(oilActualPay); + order.setOrderNo(orderNo); + order.setStoreId(accountInfo.getStoreId()); + order.setUserId(userId); + order.setStaffId(accountInfo.getStaffId()); + order.setTerminal(map.get("terminal")); + order.setOils(oilOrders.get("oils").toString()); + order.setOilGunNum(oilOrders.get("oilGunNum").toString()); + order.setOilNum(oilNum); + order.setPayUser(userVo1.getMobile()); + order.setPayType(map.get("payType")); + order.setInvoicing("未开票"); + order.setOrderStatus("paid"); + order.setPayTime(new Date()); + this.addOilTracks(order, accountInfo.getStoreId()); + if (ObjectUtil.isNotEmpty(this.selectOilOrderByOrderNo(orderNo))) { + baseMapper.updateById(order); } else { - if (cardBalance >= oilAmount) { - // 添加油品订单信息 - OilOrder order = new OilOrder(); - Double oilLiters = 0.0; - for (int i = 0; i < oilOrders.size(); i++) { - Double amount = Double.valueOf(oilOrders.get(i).get("amount").toString()); - Double oilPrice = Double.valueOf(oilOrders.get(i).get("oilPrice").toString()); - Double oilNum = amount / oilPrice; - oilLiters += oilNum; - if (i == 0) { - order.setOrderType("主订单"); - order.setOrderAmount(amount); - order.setPayAmount(amount); - order.setOrderNo(orderNo); - } else { - order.setOrderType("子订单"); - order.setOrderAmount(amount); - order.setPayAmount(0.0); - order.setOrderNo(orderNo + "1"); - } - order.setStoreId(accountInfo.getStoreId()); - order.setUserId(userId); - order.setCommissionAmount(Double.valueOf(map.get("commissionAmount"))); - if (ObjectUtil.isNotEmpty(map.get("staffId"))) - order.setStaffId(Integer.valueOf(map.get("staffId"))); - order.setTerminal(map.get("terminal")); - order.setOils((String) oilOrders.get(i).get("oilName")); - order.setOilGunNum(oilOrders.get(i).get("gunName").toString()); - order.setOilNum(oilNum); - order.setPayUser(userVo1.getMobile()); - order.setPayType(map.get("payType")); - order.setInvoicing("未开票"); - order.setOrderStatus("paid"); - order.setPayTime(new Date()); - - this.addOilTrack(oilOrders.get(i), accountInfo.getStoreId()); - if (ObjectUtil.isNotEmpty(this.selectOilOrderByOrderNo(orderNo))) { - baseMapper.updateById(order); - } else { - baseMapper.insert(order); - } - } - OilOrder oilOrder = this.selectOilOrderByOrderNo(orderNo); - - // 添加收银台订单信息 - CashierOrder cashierOrder = new CashierOrder(); - if (ObjectUtil.isNotEmpty(map.get("staffId"))) - cashierOrder.setStaffId(Integer.valueOf(map.get("staffId"))); - cashierOrder.setStoreId(accountInfo.getStoreId()); - cashierOrder.setPayUser(userVo1.getMobile()); - cashierOrder.setAmount(oilAmount); - cashierOrder.setOilPayAmount(oilAmount); - cashierOrder.setPayAmount(oilAmount); - cashierOrder.setStatus("paid"); - cashierOrder.setPayTime(new Date()); - cashierOrder.setOrderNo(orderNo); - cashierOrder.setOilOrderAmount(oilAmount); - cashierOrder.setTerminal(map.get("terminal")); - cashierOrder.setOilOrderId(oilOrder.getId()); - cashierOrder.setSeekZero(0.0); - cashierOrder.setPayType(map.get("payType")); - cashierOrderService.insertCashierOrder(cashierOrder); - this.updateGrowthValue1(oilAmount, oilAmount, userId, Integer.valueOf(oilOrder.getOils()), 0.0, storeId, orderNo); - this.insertAllOrderInfo(orderNo, accountInfo.getStoreId(), oilAmount, oilAmount, 0.0, map.get("payType"), userId, "PC", "1", "paid"); - if (ObjectUtil.isNotEmpty(map.get("staffId"))) - staffCommissionService.countStaffCommission(Integer.valueOf(map.get("staffId")), storeId, oilAmount, oilAmount, "1", orderNo); - res.put("success", "success"); - } else { - res.put("error", "储值卡余额不足!"); - } + baseMapper.insert(order); } + + this.updateGrowthValue1(oilAmount, 0.0, userId, Integer.valueOf(order.getOils()), 0.0, storeId, orderNo); + + cashierOrder.setStaffId(order.getStaffId()); + cashierOrder.setStoreId(accountInfo.getStoreId()); + cashierOrder.setPayUser(userVo1.getMobile()); + cashierOrder.setAmount(oilAmount); + cashierOrder.setOilPayAmount(oilAmount); + cashierOrder.setPayAmount(oilAmount); + cashierOrder.setStatus("paid"); + cashierOrder.setPayTime(new Date()); + cashierOrder.setOrderNo(orderNo); + cashierOrder.setOilOrderAmount(oilAmount); + cashierOrder.setTerminal(map.get("terminal")); + cashierOrder.setOilOrderId(order.getId()); + cashierOrder.setSeekZero(0.0); + cashierOrder.setPayType(map.get("payType")); + cashierOrderService.insertCashierOrder(cashierOrder); + this.insertAllOrderInfo(orderNo, storeId, oilAmount, oilAmount, 0.0, map.get("payType"), userId, "PC", "1", "paid"); + staffCommissionService.countStaffCommission(accountInfo.getStaffId(), storeId, oilAmount, oilAmount, "1", orderNo); + res.put("success", "success"); + return res; } @@ -1468,13 +1361,13 @@ public class OilOrderServiceImpl extends ServiceImpl i OilName oilName = oilNameService.selectOilNameById(oilId); LJStore store = storeService.selectStoreByStoreId(storeId); if (oilName.getOilType().equals("汽油")) { - userBalanceService.growthValue(userid,store.getChainStoreId(),storeId,"1",oilAmount,"油品订单消费",orderNo); + userBalanceService.growthValue(userid, store.getChainStoreId(), storeId, "1", oilAmount, "油品订单消费", orderNo); } if (oilName.getOilType().equals("柴油")) { - userBalanceService.growthValue(userid,store.getChainStoreId(),storeId,"2",oilAmount,"油品订单消费",orderNo); + userBalanceService.growthValue(userid, store.getChainStoreId(), storeId, "2", oilAmount, "油品订单消费", orderNo); } if (oilName.getOilType().equals("天然气")) { - userBalanceService.growthValue(userid,store.getChainStoreId(),storeId,"3",oilAmount,"油品订单消费",orderNo); + userBalanceService.growthValue(userid, store.getChainStoreId(), storeId, "3", oilAmount, "油品订单消费", orderNo); } this.insertCardBalance(oilActualPay, userid, storeId, orderNo); } @@ -1893,13 +1786,13 @@ public class OilOrderServiceImpl extends ServiceImpl i OilName oilName = oilNameService.selectOilNameById(oilId); LJStore store = storeService.selectStoreByStoreId(storeId); if (oilName.getOilType().equals("汽油")) { - userBalanceService.growthValue(userid,store.getChainStoreId(),storeId,"1",oilAmount,"油品订单消费",orderNo); + userBalanceService.growthValue(userid, store.getChainStoreId(), storeId, "1", oilAmount, "油品订单消费", orderNo); } if (oilName.getOilType().equals("柴油")) { - userBalanceService.growthValue(userid,store.getChainStoreId(),storeId,"2",oilAmount,"油品订单消费",orderNo); + userBalanceService.growthValue(userid, store.getChainStoreId(), storeId, "2", oilAmount, "油品订单消费", orderNo); } if (oilName.getOilType().equals("天然气")) { - userBalanceService.growthValue(userid,store.getChainStoreId(),storeId,"3",oilAmount,"油品订单消费",orderNo); + userBalanceService.growthValue(userid, store.getChainStoreId(), storeId, "3", oilAmount, "油品订单消费", orderNo); } } } diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/business/order/vo/HomeDataShowVo.java b/fuintBackend/fuint-application/src/main/java/com/fuint/business/order/vo/HomeDataShowVo.java new file mode 100644 index 000000000..55c25b445 --- /dev/null +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/business/order/vo/HomeDataShowVo.java @@ -0,0 +1,12 @@ +package com.fuint.business.order.vo; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +@Data +public class HomeDataShowVo { + private List oilNames; + private List> oilData; +} diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/business/petrolStationManagement/entity/OilNumber.java b/fuintBackend/fuint-application/src/main/java/com/fuint/business/petrolStationManagement/entity/OilNumber.java index 9592a2e2c..a0ae1799b 100644 --- a/fuintBackend/fuint-application/src/main/java/com/fuint/business/petrolStationManagement/entity/OilNumber.java +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/business/petrolStationManagement/entity/OilNumber.java @@ -41,6 +41,8 @@ public class OilNumber extends BaseEntity { public Integer id; //id(主键) public Integer upOrDown;//油价涨幅 1-升 2-降 public String amplitudeOfChange; //涨幅 + @TableField(exist = false) + public String oilNames; diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/business/petrolStationManagement/mapper/OilNumberMapper.java b/fuintBackend/fuint-application/src/main/java/com/fuint/business/petrolStationManagement/mapper/OilNumberMapper.java index 630586720..90ef014da 100644 --- a/fuintBackend/fuint-application/src/main/java/com/fuint/business/petrolStationManagement/mapper/OilNumberMapper.java +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/business/petrolStationManagement/mapper/OilNumberMapper.java @@ -63,5 +63,7 @@ public interface OilNumberMapper extends BaseMapper { List selectOilNumberNameByStoreId(@Param("storeId") Integer storeId); double getOilPriceById(@Param("oilId") Integer oilId,@Param("storeId") Integer storeId); + + List selectAllOil(Integer storeId); } diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/business/petrolStationManagement/mapper/xml/OilNumberMapper.xml b/fuintBackend/fuint-application/src/main/java/com/fuint/business/petrolStationManagement/mapper/xml/OilNumberMapper.xml index 0207a6404..a0f199aef 100644 --- a/fuintBackend/fuint-application/src/main/java/com/fuint/business/petrolStationManagement/mapper/xml/OilNumberMapper.xml +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/business/petrolStationManagement/mapper/xml/OilNumberMapper.xml @@ -155,4 +155,11 @@ + diff --git a/gasStation-uni/pagesHome/QRcode/QRcode.vue b/gasStation-uni/pagesHome/QRcode/QRcode.vue index e60f30f54..571a16eb9 100644 --- a/gasStation-uni/pagesHome/QRcode/QRcode.vue +++ b/gasStation-uni/pagesHome/QRcode/QRcode.vue @@ -109,7 +109,7 @@ deduction: [{ key: "oilStorageCard", value: "优先使用囤油卡付款", - desc: "若囤油卡升数不足进行支付,则会与储值卡组合付款" + desc: "若囤油卡升数不足时,则无法使用囤油卡支付" }, { key: "balance",