diff --git a/fuintAdmin/src/views/shopowner.vue b/fuintAdmin/src/views/shopowner.vue index 80d6a07b1..a5da928e6 100644 --- a/fuintAdmin/src/views/shopowner.vue +++ b/fuintAdmin/src/views/shopowner.vue @@ -2,7 +2,7 @@
-
- +
@@ -48,14 +48,11 @@
数据看板
- -
近一周 +
{{sjkbTitle}}
- - 今日 - 昨日 - 近一周 - 近一月 + + {{item}}
自定义 @@ -145,13 +142,15 @@
油品交易分析
- -
近一周 +
{{ypjyTitle}}
- 近一周 - 近一月 - 近一年 + + + + + {{item}}
自定义 @@ -174,12 +173,10 @@
员工排行 -
近一周 {{ygphTitle}}
- 近一周 - 近一月 - 近一年 + {{item}}
@@ -217,13 +214,16 @@
数据统计
- -
近一周 +
{{sjtjTitle}}
- 近一周 - 近一月 - 近一年 + + + + + {{item}} +
自定义 @@ -265,6 +265,19 @@ export default { props: ["accountId"], data() { return { + amountList:[ + // "今日" , + // "昨日" , + "近一周" , + "本月" , + "本季度" , + "本年" + + ], + sjkbTitle: "近一周", + ypjyTitle: "近一周", + ygphTitle: "近一周", + sjtjTitle: "近一周", xShow: false, timeShow: false, dataTimeShow : false, @@ -335,7 +348,7 @@ export default { start.setMinutes(0) start.setSeconds(0) start.setMilliseconds(0) - this.value2 = [start, new Date()]; + this.value2 = [parseTime(oneWeekAgo), parseTime(nowDate)] this.getStoreList() this.getHardwareList() this.getNoticeList() @@ -351,84 +364,227 @@ export default { }, methods: { - goList() { - this.$router.push('/notificationList/index') - }, - editColor(command,index){ - // console.log("command",command) - // console.log("index",index.$attrs.index) - index = index.$attrs.index - // this.timeIndex = command - this.disabled = true + sjkbStoreAmount(e){ + console.log(e) + this.sjkbTitle = e + let command = e if (command=='今日'){ let start = new Date(); start.setHours(0) start.setMinutes(0) start.setSeconds(0) start.setMilliseconds(0) - if (index == "1"){ - this.countValue = [start,new Date()] - }else if (index == "2") { - this.showValue = [start,new Date()] - }else if (index == "3") { - this.value2 = [start,new Date()] - }else if (index == "4") { - this.value1 = [start,new Date()]; - } + this.value1 = [parseTime(new Date()),parseTime(new Date())] + }else if (command=='昨日'){ + let nowDate = new Date(); + let oneWeekAgo = new Date(nowDate.getTime() - 1 * 24 * 60 * 60 * 1000) + this.value1 = [parseTime(oneWeekAgo),parseTime(oneWeekAgo)] } else if (command=='近一周'){ let nowDate = new Date(); let oneWeekAgo = new Date(nowDate.getTime() - 6 * 24 * 60 * 60 * 1000) - if (index == "1"){ - this.countValue = [parseTime(oneWeekAgo),parseTime(nowDate)] - }else if (index == "2") { - this.showValue = [parseTime(oneWeekAgo),parseTime(nowDate)] - }else if (index == "3") { - this.value2 = [parseTime(oneWeekAgo),parseTime(nowDate)] - }else if (index == "4") { - this.value1 = [parseTime(oneWeekAgo),parseTime(nowDate)] - } - } else if (command=='近一月'){ - let nowDate = new Date(); - let oneWeekAgo = new Date(nowDate.getTime() - 30 * 24 * 60 * 60 * 1000) - if (index == "1"){ - this.countValue = [parseTime(oneWeekAgo),parseTime(nowDate)] - }else if (index == "2") { - this.showValue = [parseTime(oneWeekAgo),parseTime(nowDate)] - }else if (index == "3") { - this.value2 = [parseTime(oneWeekAgo),parseTime(nowDate)] - }else if (index == "4") { - this.value1 = [parseTime(oneWeekAgo),parseTime(nowDate)] - } - } else if (command=='近一年'){ - let nowDate = new Date(); - let oneWeekAgo = new Date(nowDate.getFullYear() - 1, nowDate.getMonth(), nowDate.getDate()) this.value1 = [parseTime(oneWeekAgo),parseTime(nowDate)] - if (index == "1"){ - this.countValue = [parseTime(oneWeekAgo),parseTime(nowDate)] - }else if (index == "2") { - this.showValue = [parseTime(oneWeekAgo),parseTime(nowDate)] - }else if (index == "3") { - this.value2 = [parseTime(oneWeekAgo),parseTime(nowDate)] - }else if (index == "4") { - this.value1 = [parseTime(oneWeekAgo),parseTime(nowDate)] - } + } else if (command=='本月'){ + const [startTime, endTime] = this.getMonthStartAndToday(); + this.value1 = [parseTime(startTime),parseTime(endTime)] + }else if (command=='本季度'){ + const [startTime, endTime] = this.getQuarterStartAndEnd(); + this.value1 = [parseTime(startTime), parseTime(endTime)]; + } else if (command=='本年'){ + const [startTime, endTime] = this.getYearStartAndEnd(); + this.value1 = [parseTime(startTime),parseTime(endTime)] }else if (command=='自定义'){ this.disabled = false } - if (index == "1") { - this.getDataCount() - }else if (index == "2") { - this.getDataShow() - }else if (index == "3") { - this.getStoreList() - }else if (index == "4") { - this.getStoreAmount() + this.getStoreAmount() + }, + goList() { + this.$router.push('/notificationList/index') + }, + editShow(e){ + this.disabled = true + console.log(e) + this.ypjyTitle = e + let command = e + if (command=='今日'){ + let start = new Date(); + start.setHours(0) + start.setMinutes(0) + start.setSeconds(0) + start.setMilliseconds(0) + this.showValue = [parseTime(new Date()),parseTime(new Date())] + }else if (command=='昨日'){ + let nowDate = new Date(); + let oneWeekAgo = new Date(nowDate.getTime() - 1 * 24 * 60 * 60 * 1000) + this.showValue = [parseTime(oneWeekAgo),parseTime(oneWeekAgo)] + } else if (command=='近一周'){ + let nowDate = new Date(); + let oneWeekAgo = new Date(nowDate.getTime() - 6 * 24 * 60 * 60 * 1000) + this.showValue = [parseTime(oneWeekAgo),parseTime(nowDate)] + } else if (command=='本月'){ + let nowDate = new Date(); + let oneWeekAgo = new Date(nowDate.getTime() - 30 * 24 * 60 * 60 * 1000) + const [startTime, endTime] = this.getMonthStartAndToday(); + this.showValue = [parseTime(startTime),parseTime(endTime)] + }else if (command=='本季度'){ + const [startTime, endTime] = this.getQuarterStartAndEnd(); + this.showValue = [parseTime(startTime), parseTime(endTime)]; + } else if (command=='本年'){ + const [startTime, endTime] = this.getYearStartAndEnd(); + this.showValue = [parseTime(startTime),parseTime(endTime)] + }else if (command=='自定义'){ + this.disabled = false } + this.getDataShow() + }, + editCount(e){ + this.disabled = true + this.sjtjTitle = e + console.log("e",e) + let command = e + if (command=='今日'){ + let start = new Date(); + start.setHours(0) + start.setMinutes(0) + start.setSeconds(0) + start.setMilliseconds(0) + // this.countValue = [start,new Date()] + this.countValue = [parseTime(new Date()),parseTime(new Date())] + }else if (command=='昨日'){ + let nowDate = new Date(); + let oneWeekAgo = new Date(nowDate.getTime() - 1 * 24 * 60 * 60 * 1000) + this.countValue = [parseTime(oneWeekAgo),parseTime(oneWeekAgo)] + } else if (command=='近一周'){ + let nowDate = new Date(); + let oneWeekAgo = new Date(nowDate.getTime() - 6 * 24 * 60 * 60 * 1000) + this.countValue = [parseTime(oneWeekAgo),parseTime(nowDate)] + } else if (command=='本月'){ + let nowDate = new Date(); + let oneWeekAgo = new Date(nowDate.getTime() - 30 * 24 * 60 * 60 * 1000) + const [startTime, endTime] = this.getMonthStartAndToday(); + this.countValue = [parseTime(startTime),parseTime(endTime)] + }else if (command=='本季度'){ + const [startTime, endTime] = this.getQuarterStartAndEnd(); + this.countValue = [parseTime(startTime), parseTime(endTime)]; + } else if (command=='本年'){ + const [startTime, endTime] = this.getYearStartAndEnd(); + this.countValue = [parseTime(startTime),parseTime(endTime)] + }else if (command=='自定义'){ + this.disabled = false + } + this.getDataCount() + }, + editColor(command){ + this.disabled = true + this.ygphTitle = command + if (command=='今日'){ + let start = new Date(); + start.setHours(0) + start.setMinutes(0) + start.setSeconds(0) + start.setMilliseconds(0) + this.value2 = [start,new Date()] + } else if (command=='近一周'){ + let nowDate = new Date(); + let oneWeekAgo = new Date(nowDate.getTime() - 6 * 24 * 60 * 60 * 1000) + this.value2 = [parseTime(oneWeekAgo),parseTime(nowDate)] + } else if (command=='本月'){ + let nowDate = new Date(); + let oneWeekAgo = new Date(nowDate.getTime() - 30 * 24 * 60 * 60 * 1000) + const [startTime, endTime] = this.getMonthStartAndToday(); + this.value2 = [parseTime(startTime),parseTime(endTime)] + }else if (command=='本季度'){ + const [startTime, endTime] = this.getQuarterStartAndEnd(); + this.value2 = [parseTime(startTime), parseTime(endTime)]; + } else if (command=='本年'){ + const [startTime, endTime] = this.getYearStartAndEnd(); + this.value2 = [parseTime(startTime),parseTime(endTime)] + }else if (command=='自定义'){ + this.disabled = false + } + this.getEmployeList() + }, + getMonthStartAndToday() { + const now = new Date(); + const year = now.getFullYear(); + const month = now.getMonth(); + + // 获取当前月的第一天 + const monthStart = new Date(year, month, 1); + + // 获取当前月的最后一天 + const monthEnd = new Date(year, month + 1, 0); + + // 格式化输出 + const format = (date) => { + const year = date.getFullYear(); + const month = ('0' + (date.getMonth() + 1)).slice(-2); + const day = ('0' + date.getDate()).slice(-2); + return `${year}-${month}-${day}`; + }; + + const startTime = format(monthStart); + const endTime = format(monthEnd); + + return [startTime, endTime]; + }, + getQuarterStartAndEnd() { + const now = new Date(); + const year = now.getFullYear(); + const month = now.getMonth(); + + // 计算当前季度的起始月份 + const quarterStartMonth = Math.floor(month / 3) * 3; + + // 获取当前季度的第一天 + const quarterStart = new Date(year, quarterStartMonth, 1); + + // 获取当前季度的最后一天 + const quarterEnd = new Date(year, quarterStartMonth + 3, 0); + + // 格式化输出 + const format = (date) => { + const year = date.getFullYear(); + const month = ('0' + (date.getMonth() + 1)).slice(-2); + const day = ('0' + date.getDate()).slice(-2); + return `${year}-${month}-${day}`; + }; + + const startTime = format(quarterStart); + const endTime = format(quarterEnd); + + return [startTime, endTime]; + }, + getYearStartAndEnd() { + const now = new Date(); + const year = now.getFullYear(); + + // 获取当前年的第一天 + const yearStart = new Date(year, 0, 1); + + // 获取当前年的最后一天 + const yearEnd = new Date(year, 11, 31); + + // 格式化输出 + const format = (date) => { + const year = date.getFullYear(); + const month = ('0' + (date.getMonth() + 1)).slice(-2); + const day = ('0' + date.getDate()).slice(-2); + return `${year}-${month}-${day}`; + }; + + const startTime = format(yearStart); + const endTime = format(yearEnd); + + return [startTime, endTime]; }, // 获取员工排行信息 getEmployeList() { this.employeLoading = true - employeeSalesApi().then(res => { + let data = { + startTime: this.value2[0], + endTime: this.value2[1] + } + employeeSalesApi(data).then(res => { if (res.code == 200) { if (res.data.length >= 10) { this.employeList = res.data.slice(0, 10); @@ -591,53 +747,41 @@ export default { // 首页数据统计 const times = this.dataCount.oilData.map(item => item.time); const count = []; - for (let i = 0; i < this.dataCount.oilNames.length; i++) { - let a = { - name: this.dataCount.oilNames[i], - color: color[i], - type: 'bar', - tooltip: { - valueFormatter: function (value) { - return value; - } - }, - barWidth: 13, - itemStyle: { - normal: { - barBorderRadius: [50, 50, 0, 0] - } - }, - barGap: '60%', - data: this.dataCount.oilData.map(item => item.money[i]) + let c = ['product', ...this.dataCount.oilNames] + let countType = [] + count.push(c) + this.dataCount.oilNames.forEach(item => { + let type={ + type: 'bar' } + countType.push(type) + }) + this.dataCount.oilData.forEach(item => { + let a =[item.time, ...item.money] count.push(a) - } + }) // 首页数据展示 const showTimes = this.dataShows.oilData.map(item => item.day); const showCount = []; - for (let i = 0; i < this.dataShows.oilNames.length; i++) { - let a = { - name: this.dataShows.oilNames[i], - color: color[i], - type: 'bar', - tooltip: { - valueFormatter: function (value) { - return value; - } - }, - barWidth: 13, - itemStyle: { - normal: { - barBorderRadius: [50, 50, 0, 0] - } - }, - barGap: '60%', - data: this.dataShows.oilData.map(item => item.oilPrices[i]) - // data: oilAmountList + let cshow = ['product', ...this.dataShows.oilNames] + showCount.push(cshow) + let showCountType = [] + console.log("看看执行") + this.dataShows.oilNames.forEach(item => { + let type={ + type: 'bar' } + showCountType.push(type) + }) + console.log(this.dataShows.oilData) + this.dataShows.oilData.forEach(item => { + let a =[item.day, ...item.oilPrices] showCount.push(a) - } + console.log("showCount",a) + }) + console.log("showCount",showCount) + console.log("showCountType",showCountType) const option = { color: [ @@ -677,18 +821,6 @@ export default { name: '', type: 'pie', radius: '80%', - // 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: "非油品交易占比" - // }, - // // ], data: this.dataAnalysisIfOilList, emphasis: { @@ -774,6 +906,10 @@ export default { data: times, axisPointer: { type: 'shadow' + }, + axisLabel: { + interval: 0, + // rotate: 30 } } ], @@ -790,8 +926,11 @@ export default { } ], + dataset: { + source: count + }, - series: count, + series: countType, grid: { left: '3%', right: '3%', @@ -817,10 +956,13 @@ export default { xAxis: [ { type: 'category', - // data: ['中建锦绣广场1站', '中建锦绣广场2站', '中建锦绣广场3站', '中建锦绣广场4站', '中建锦绣广场5站', '中建锦绣广场6站', '中建锦绣广场7站'], data: showTimes, axisPointer: { type: 'shadow' + }, + axisLabel: { + interval: 0, + // rotate: 30 } } ], @@ -828,15 +970,15 @@ export default { { type: 'value', name: '金额(元)', - // min: 0, - // max: 10000, - // interval: 2000, axisLabel: { formatter: '{value}' } } ], - series: showCount, + dataset: { + source: showCount + }, + series: showCountType, grid: { left: '3%', right: '3%', diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/business/fleet/controller/FleetInfoController.java b/fuintBackend/fuint-application/src/main/java/com/fuint/business/fleet/controller/FleetInfoController.java index 56770b4b0..dfbcd4052 100644 --- a/fuintBackend/fuint-application/src/main/java/com/fuint/business/fleet/controller/FleetInfoController.java +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/business/fleet/controller/FleetInfoController.java @@ -93,7 +93,7 @@ public class FleetInfoController extends BaseController { */ @GetMapping("/getFleetInfoByStoreId") public ResponseObject getFleetInfoByStoreId(@Param("storeId")Integer storeId){ - return getSuccessResult(fleetInfoService.queryByStoreId(storeId)); + return getSuccessResult(fleetInfoService.queryByStoreId(storeId,null)); } /** diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/business/fleet/controller/FleetMemberController.java b/fuintBackend/fuint-application/src/main/java/com/fuint/business/fleet/controller/FleetMemberController.java index b6cf39bf3..d2d2cbcc0 100644 --- a/fuintBackend/fuint-application/src/main/java/com/fuint/business/fleet/controller/FleetMemberController.java +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/business/fleet/controller/FleetMemberController.java @@ -92,6 +92,16 @@ public class FleetMemberController extends BaseController { public ResponseObject add(@RequestBody FleetMember fleetMember) { return getSuccessResult(fleetMemberService.insert(fleetMember)); } + /** + * 新增数据(小程序) + * + * @param fleetMember 实体 + * @return 新增结果 + */ + @PostMapping("addUni") + public ResponseObject addUni(@RequestBody FleetMember fleetMember) { + return getSuccessResult(fleetMemberService.insertUni(fleetMember)); + } /** * 编辑数据 diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/business/fleet/service/FleetInfoService.java b/fuintBackend/fuint-application/src/main/java/com/fuint/business/fleet/service/FleetInfoService.java index fced3df7c..e57dc21e7 100644 --- a/fuintBackend/fuint-application/src/main/java/com/fuint/business/fleet/service/FleetInfoService.java +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/business/fleet/service/FleetInfoService.java @@ -68,7 +68,7 @@ public interface FleetInfoService { * @param storeId * @return */ - List queryByStoreId(Integer storeId); + List queryByStoreId(Integer storeId,Integer userId); /** * 新增车队信息(小程序) diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/business/fleet/service/FleetMemberService.java b/fuintBackend/fuint-application/src/main/java/com/fuint/business/fleet/service/FleetMemberService.java index 6934d28e9..fa3b5eb6f 100644 --- a/fuintBackend/fuint-application/src/main/java/com/fuint/business/fleet/service/FleetMemberService.java +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/business/fleet/service/FleetMemberService.java @@ -49,6 +49,13 @@ public interface FleetMemberService { * @return 实例对象 */ int insert(FleetMember fleetMember); + /** + * 新增数据 + * + * @param fleetMember 实例对象 + * @return 实例对象 + */ + int insertUni(FleetMember fleetMember); /** * 新增数据 diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/business/fleet/service/impl/FleetInfoServiceImpl.java b/fuintBackend/fuint-application/src/main/java/com/fuint/business/fleet/service/impl/FleetInfoServiceImpl.java index 1e3edd103..c900e76cd 100644 --- a/fuintBackend/fuint-application/src/main/java/com/fuint/business/fleet/service/impl/FleetInfoServiceImpl.java +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/business/fleet/service/impl/FleetInfoServiceImpl.java @@ -212,7 +212,7 @@ public class FleetInfoServiceImpl extends ServiceImpl queryByStoreId(Integer storeId) { + public List queryByStoreId(Integer storeId, Integer userId) { AccountInfo nowAccountInfo = TokenUtil.getNowAccountInfo(); + if (ObjectUtil.isEmpty(userId)) { + userId = nowAccountInfo.getId(); + } //查询当前登录人的车队信息 List fleetMembers = fleetMemberMapper.selectList(new LambdaQueryWrapper() .eq(FleetMember::getStoreId, storeId) - .eq(FleetMember::getUserId, nowAccountInfo.getId())); + .eq(FleetMember::getUserId, userId)); //获取所在车队的id集合 List fleetIds = fleetMembers.stream().map(FleetMember::getFleetId).collect(Collectors.toList()); if (CollUtil.isEmpty(fleetIds)) { @@ -383,7 +386,7 @@ public class FleetInfoServiceImpl extends ServiceImpl 0) { return fleetInfo.getId(); - }else { + } else { throw new RuntimeException("编辑失败"); } } @@ -415,6 +418,7 @@ public class FleetInfoServiceImpl extends ServiceImpl() .eq(AllOrderInfo::getId, orderId)); + AccountInfo nowAccountInfo = TokenUtil.getNowAccountInfo(); if (ObjectUtil.isEmpty(allOrderInfo)) { throw new RuntimeException("订单不存在"); } @@ -424,12 +428,24 @@ public class FleetInfoServiceImpl extends ServiceImpl() + .eq(FleetMember::getUserId, allOrderInfo.getUserId()) + .orderBy(true, true, FleetMember::getCreateTime) + .last("limit 1")); // 获取当前车队卡 FleetInfo fleetInfo = baseMapper.selectOne(new LambdaQueryWrapper() - .eq(FleetInfo::getId, fleetConsumeRecord.getFleetId())); + .eq(FleetInfo::getId, fleetMember.getFleetId())); //判断支付金额是否超过当前余额 - if (money > fleetInfo.getTotalBalance()){ - throw new RuntimeException("支付金额超过当前余额"); + if (money > fleetInfo.getTotalBalance()) { + throw new RuntimeException("支付金额超过当前车队余额"); + } + + + //判断成员的余额是否足够支付 + if (money > fleetMember.getRemainingCreditLimit()) { + throw new RuntimeException("支付金额超过当前剩余额度"); } //更新时间 @@ -444,13 +460,22 @@ public class FleetInfoServiceImpl extends ServiceImpl() - .eq(FleetInfo::getId, fleetConsumeRecord.getFleetId())); - //计算赠送金额与充值金额比例 - double recharge = fleetInfo.getRechargeAmount() / fleetInfo.getTotalBalance(); - double give = fleetInfo.getGiveAmount() / fleetInfo.getTotalBalance(); - fleetInfo.setTotalBalance(fleetInfo.getTotalBalance() + refundMoney); - fleetInfo.setRechargeAmount(fleetInfo.getRechargeAmount() + (refundMoney * recharge)); - fleetInfo.setGiveAmount(fleetInfo.getGiveAmount() + (refundMoney * give)); - //将退款金额修改回去 - baseMapper.updateById(fleetInfo); - //将车队订单表改为退款 - fleetConsumeRecord.setOrderStatus("refund"); - fleetConsumeRecord.setUpdateTime(DateUtil.date()); - fleetConsumeRecord.setUpdateBy(nowAccountInfo.getStaffId().toString()); - return fleetConsumeRecordMapper.updateById(fleetConsumeRecord); - } - return 0; + //退款金额 + Double refundMoney = fleetConsumeRecord.getNetReceiptsAmount(); + //获取当前车队卡 + FleetInfo fleetInfo = baseMapper.selectOne(new LambdaQueryWrapper() + .eq(FleetInfo::getId, fleetConsumeRecord.getFleetId())); + //计算赠送金额与充值金额比例 + double recharge = fleetInfo.getRechargeAmount() / fleetInfo.getTotalBalance(); + double give = fleetInfo.getGiveAmount() / fleetInfo.getTotalBalance(); + fleetInfo.setTotalBalance(fleetInfo.getTotalBalance() + refundMoney); + fleetInfo.setRechargeAmount(fleetInfo.getRechargeAmount() + (refundMoney * recharge)); + fleetInfo.setGiveAmount(fleetInfo.getGiveAmount() + (refundMoney * give)); + //将退款金额修改回去 + baseMapper.updateById(fleetInfo); + //修改车队成员的余额 + FleetMember fleetMember = fleetMemberMapper.selectOne(new LambdaQueryWrapper() + .eq(FleetMember::getUserId, allOrderInfo.getUserId())); + fleetMember.setRemainingCreditLimit(fleetMember.getRemainingCreditLimit() + refundMoney); + fleetMember.setUsedCreditLimit(fleetMember.getUsedCreditLimit() - refundMoney); + fleetMember.setUpdateBy(nowAccountInfo.getStaffId().toString()); + fleetMember.setUpdateTime(DateUtil.date()); + //更新余额 + fleetMemberMapper.updateById(fleetMember); + //将车队订单表改为退款 + fleetConsumeRecord.setOrderStatus("refund"); + fleetConsumeRecord.setUpdateTime(DateUtil.date()); + fleetConsumeRecord.setUpdateBy(nowAccountInfo.getStaffId().toString()); + return fleetConsumeRecordMapper.updateById(fleetConsumeRecord); } diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/business/fleet/service/impl/FleetMemberServiceImpl.java b/fuintBackend/fuint-application/src/main/java/com/fuint/business/fleet/service/impl/FleetMemberServiceImpl.java index a19879f47..7a153b6a9 100644 --- a/fuintBackend/fuint-application/src/main/java/com/fuint/business/fleet/service/impl/FleetMemberServiceImpl.java +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/business/fleet/service/impl/FleetMemberServiceImpl.java @@ -128,18 +128,17 @@ public class FleetMemberServiceImpl extends ServiceImpl() .eq(FleetMember::getMobile, fleetMember.getMobile()) - .eq(FleetMember::getFleetId, fleetMember.getFleetId()) .last("limit 1")); if (ObjectUtil.isNotEmpty(fleetMember2)) { - throw new RuntimeException("该用户已加入该车队"); + throw new RuntimeException("该用户已绑定车队"); } // if (ObjectUtil.isNotEmpty(fleetMember1)) { // return 0; // } -// LJUserVo user = userService.selectUserByMobileAndChantStoreId(fleetMember.getMobile()); + //判断当前车队成员否存在账号 MtUser mtUser = mtUserMapper.selectOne(new LambdaQueryWrapper() .eq(MtUser::getMobile, fleetMember.getMobile()) @@ -168,6 +167,49 @@ public class FleetMemberServiceImpl extends ServiceImpl() + .eq(FleetMember::getMobile, fleetMember.getMobile()) + .last("limit 1")); + if (ObjectUtil.isNotEmpty(fleetMember2)) { +// throw new RuntimeException("该用户已绑定车队"); + return 0; + } + + //判断当前车队成员否存在账号 + MtUser mtUser = mtUserMapper.selectOne(new LambdaQueryWrapper() + .eq(MtUser::getMobile, fleetMember.getMobile()) + .last("limit 1")); + if (ObjectUtil.isEmpty(mtUser)) { + //注册用户 + mtUser = new MtUser(); + mtUser.setUserNo(editUserNo()); + mtUser.setMobile(fleetMember.getMobile()); + mtUser.setName(fleetMember.getName()); + mtUser.setDescription("车队成员自动注册"); + mtUser.setCreateTime(DateUtil.date()); + mtUserMapper.insert(mtUser); + + createVaseInfo(mtUser, nowAccountInfo.getStoreId().toString(), null, null); + } + + fleetMember.setUserId(mtUser.getId()); + fleetMember.setCarNum(mtUser.getCarNo()); + fleetMember.setStoreId(nowAccountInfo.getStoreId()); + fleetMember.setChainStoreId(nowAccountInfo.getChainStoreId()); + return baseMapper.insert(fleetMember); + } + @Override public int insertFleetMember(FleetMemberVo fleetMember) { FleetMember fleetMember1 = queryByMobile(fleetMember); diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/business/member/mapper/LJStaffMapper.java b/fuintBackend/fuint-application/src/main/java/com/fuint/business/member/mapper/LJStaffMapper.java index 272d0187c..7e4529a14 100644 --- a/fuintBackend/fuint-application/src/main/java/com/fuint/business/member/mapper/LJStaffMapper.java +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/business/member/mapper/LJStaffMapper.java @@ -38,7 +38,7 @@ public interface LJStaffMapper extends BaseMapper { */ int auditPrem(@Param("id")Integer id,@Param("auditPrem") String auditPrem); - List> employeeSales(@Param("storeId") Integer storeId); + List> employeeSales(@Param("storeId") Integer storeId,@Param("startTime") String startTime, @Param("endTime") String endTime); List> employeeSalesMongth(@Param("storeId") Integer storeId); LJStaff selectStaffById(@Param("id") Integer id); diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/business/member/mapper/xml/LJStaffMapper.xml b/fuintBackend/fuint-application/src/main/java/com/fuint/business/member/mapper/xml/LJStaffMapper.xml index 10a34a033..b76600dbc 100644 --- a/fuintBackend/fuint-application/src/main/java/com/fuint/business/member/mapper/xml/LJStaffMapper.xml +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/business/member/mapper/xml/LJStaffMapper.xml @@ -61,7 +61,7 @@ LEFT JOIN ( SELECT staff_id, COALESCE(SUM(pay_amount), 0) AS pay_amount FROM oil_order - WHERE order_status = 'paid' + WHERE order_status = 'paid' and create_time between #{startTime} and #{endTime} GROUP BY staff_id ) oo ON ms.id = oo.staff_id LEFT JOIN ( @@ -69,13 +69,13 @@ COALESCE(SUM(CASE WHEN payment_type = 'CASH' THEN amount ELSE 0 END), 0) as recharge_balance FROM card_value_record - WHERE pay_status = 'paid' + WHERE pay_status = 'paid' and create_time between #{startTime} and #{endTime} GROUP BY mt_staff_id ) cvr ON ms.id = cvr.mt_staff_id LEFT JOIN ( SELECT mt_staff_id, COALESCE(SUM(recharge_balance), 0) as recharge_balance FROM card_fuel_record - WHERE pay_status = 'paid' + WHERE pay_status = 'paid' and create_time between #{startTime} and #{endTime} GROUP BY mt_staff_id ) cfr ON ms.id = cfr.mt_staff_id WHERE diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/business/order/controller/OilOrderController.java b/fuintBackend/fuint-application/src/main/java/com/fuint/business/order/controller/OilOrderController.java index 7fa332dc5..9181ca561 100644 --- a/fuintBackend/fuint-application/src/main/java/com/fuint/business/order/controller/OilOrderController.java +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/business/order/controller/OilOrderController.java @@ -253,8 +253,8 @@ public class OilOrderController extends BaseController { } // 员工销售 @GetMapping("employeeSales") - public ResponseObject employeeSales() { - return getSuccessResult(orderService.employeeSales()); + public ResponseObject employeeSales(String startTime, String endTime) { + return getSuccessResult(orderService.employeeSales(startTime, endTime)); } // 储值卡销售额 diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/business/order/service/OilOrderService.java b/fuintBackend/fuint-application/src/main/java/com/fuint/business/order/service/OilOrderService.java index 26415afb0..37b234d25 100644 --- a/fuintBackend/fuint-application/src/main/java/com/fuint/business/order/service/OilOrderService.java +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/business/order/service/OilOrderService.java @@ -158,7 +158,7 @@ public interface OilOrderService extends IService { // 流水统计 Map turnoverStatistics(); - List> employeeSales(); + List> employeeSales(String startTime, String endTime); List> prepaidCardSales(); List> tunFuelCardSales(); List> merchandiseSales(); 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 0e48a7c43..484292e76 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 @@ -1873,12 +1873,19 @@ public class AllOrderInfoServiceImpl extends ServiceImpl oilNumbers = oilNumberMapper.selectAllOil(nowAccountInfo.getStoreId()); List oilNames = oilNumbers.stream().map(oil -> oil.getOilNames() + oil.getOilType()).collect(Collectors.toList()); homeDataShowVo.setOilNames(oilNames); - //判断开始时间减去结束时间是否大于等于一年 + //判断开始时间减去结束时间是否大于等于60天 List days = getAllDatesBetween(startTime, endTime); Integer type = 0; if (DateUtil.between(DateUtil.parse(startTime), DateUtil.parse(endTime), DateUnit.DAY) >= 60) { days = getAllDatesBetweenYear(startTime, endTime); type = 1; + //判断是否小于等于1天 + } else if (DateUtil.between(DateUtil.parse(startTime), DateUtil.parse(endTime), DateUnit.DAY) <= 1) { + days = getAllDatesBetweenDay(DateUtil.beginOfDay(DateUtil.parse(startTime)).toString(), DateUtil.endOfDay(DateUtil.parse(endTime)).toString()); + type = 2; + } else if (DateUtil.between(DateUtil.parse(startTime), DateUtil.parse(endTime), DateUnit.DAY) >= 30) { + days = getAllDatesBetweenMonth(DateUtil.beginOfDay(DateUtil.parse(startTime)).toString(), DateUtil.endOfDay(DateUtil.parse(endTime)).toString()); + type = 3; } //根据开始时间与结束时间获取所有天数 //查询所有订单 @@ -1898,6 +1905,16 @@ public class AllOrderInfoServiceImpl extends ServiceImpl dateList = new ArrayList<>(); while (!startDate.isAfter(endDate)) { dateList.add(startDate.format(formatter)); - startDate = startDate.plusDays(30); + startDate = startDate.plusMonths(1); } return dateList; } + public List getAllDatesBetweenDay(String startTime, String endTime) { + + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + LocalDateTime startDate = LocalDateTime.parse(startTime, formatter); + LocalDateTime endDate = LocalDateTime.parse(endTime, formatter); + + List dateList = new ArrayList<>(); + while (!startDate.isAfter(endDate)) { + dateList.add(startDate.format(formatter)); + startDate = startDate.plusHours(1); + } + + + return dateList; + } + public List getAllDatesBetweenMonth(String startTime, String endTime) { + + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + LocalDateTime startDate = LocalDateTime.parse(startTime, formatter); + LocalDateTime endDate = LocalDateTime.parse(endTime, formatter); + + List dateList = new ArrayList<>(); + while (!startDate.isAfter(endDate)) { + dateList.add(startDate.format(formatter)); + startDate = startDate.plusDays(3); + } + + + return dateList; + } + /** * 计算指定支付时间范围和油品名称下的累计支付金额 * @@ -2085,6 +2133,12 @@ public class AllOrderInfoServiceImpl extends ServiceImpl= 60) { allDatesBetween = getAllDatesBetweenYear(startTime, endTime); type = 1; + } else if (DateUtil.between(DateUtil.parse(startTime), DateUtil.parse(endTime), DateUnit.DAY) <= 1) { + allDatesBetween = getAllDatesBetweenDay(DateUtil.beginOfDay(DateUtil.parse(startTime)).toString(), DateUtil.endOfDay(DateUtil.parse(endTime)).toString()); + type = 2; + } else if (DateUtil.between(DateUtil.parse(startTime), DateUtil.parse(endTime), DateUnit.DAY) >= 30) { + allDatesBetween = getAllDatesBetweenMonth(DateUtil.beginOfDay(DateUtil.parse(startTime)).toString(), DateUtil.endOfDay(DateUtil.parse(endTime)).toString()); + type = 3; } List oilNames = new ArrayList<>(); @@ -2105,6 +2159,16 @@ public class AllOrderInfoServiceImpl extends ServiceImpl i private IMtUserFuelService userFuelService; @Autowired private CardValueRuleService cardValueRuleService; + @Autowired + private FleetInfoService fleetInfoService; @Override public IPage selectOilOrderList(Page page, OilOrder order) { @@ -487,7 +490,8 @@ public class OilOrderServiceImpl extends ServiceImpl i MerchantConfig merchantConfig = merchantConfigService.selectMeChByIdIsUse(storeId, transactionType, oilGunId); if (ObjectUtil.isEmpty(merchantConfig) && !payType.equals("CASH") && !payType.equals("after_pay") && - !map.get("allAmount").equals("0")) { + !map.get("allAmount").equals("0") && !payType.equals("card_value") && !payType.equals("fule_card") + && !payType.equals("car_card_value")) { orders.put("error", "请先配置支付通道"); return orders; } @@ -1927,11 +1931,11 @@ public class OilOrderServiceImpl extends ServiceImpl i // 员工统计 @Override - public List> employeeSales() { + public List> employeeSales(String startTime, String endTime) { AccountInfo nowAccountInfo = TokenUtil.getNowAccountInfo(); Integer storeId = nowAccountInfo.getStoreId(); // 员工统计油品 - List> maps = ljStaffMapper.employeeSales(storeId); + List> maps = ljStaffMapper.employeeSales(storeId, startTime, endTime); return maps; } diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/business/userManager/service/impl/LJUserServiceImpl.java b/fuintBackend/fuint-application/src/main/java/com/fuint/business/userManager/service/impl/LJUserServiceImpl.java index bce6aede6..d774af90a 100644 --- a/fuintBackend/fuint-application/src/main/java/com/fuint/business/userManager/service/impl/LJUserServiceImpl.java +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/business/userManager/service/impl/LJUserServiceImpl.java @@ -350,7 +350,7 @@ public class LJUserServiceImpl extends ServiceImpl impleme List list = userFuelService.list(queryWrapper); ljUserVo.setUserFuels(list); //判断当前用户是否存在车队 - List fleetInfoUniVos = fleetInfoService.queryByStoreId(storeId); + List fleetInfoUniVos = fleetInfoService.queryByStoreId(storeId,null); if (CollUtil.isNotEmpty(fleetInfoUniVos)) { ljUserVo.setFleetInfoUniVos(fleetInfoUniVos); } @@ -381,6 +381,11 @@ public class LJUserServiceImpl extends ServiceImpl impleme queryWrapper.eq(MtUserFuel::getStoreId,nowAccountInfo.getStoreId()).eq(MtUserFuel::getMtUserId,it.getId()); List list = userFuelService.list(queryWrapper); it.setUserFuels(list); + //判断当前用户是否存在车队 + List fleetInfoUniVos = fleetInfoService.queryByStoreId(nowAccountInfo.getStoreId(),it.getId()); + if (CollUtil.isNotEmpty(fleetInfoUniVos)) { + it.setFleetInfoUniVos(fleetInfoUniVos); + } }); return ljUserVos; } diff --git a/fuintCashierWeb/src/views/cashier/NewComponents/newHome.vue b/fuintCashierWeb/src/views/cashier/NewComponents/newHome.vue index 80fc3ea87..85435a146 100644 --- a/fuintCashierWeb/src/views/cashier/NewComponents/newHome.vue +++ b/fuintCashierWeb/src/views/cashier/NewComponents/newHome.vue @@ -15,10 +15,12 @@ placement="bottom" trigger="hover">
储值卡:¥{{ chooseVipUser.cardBalance || 0 }}
-
储值卡:¥1000.00
-
储值卡:¥1000.00
-
储值卡:¥1000.00
-
储值卡:¥1000.00
+
+
囤油卡:¥{{ item.fuelAmount }}
+
+
+
车队卡:¥{{ item.totalBalance }}
+
@@ -533,6 +535,18 @@ + + + + + 取 消 + 确 定 + + +
@@ -543,6 +557,7 @@ import pickUp from './newHomeComponents/pickUpTheOrder.vue' import accountPending from './newHomeComponents/accountPending.vue' import memberRecharge from './newHomeComponents/memberRecharge.vue' import refuelingAmount from './newHomeComponents/refuelingAmount.vue' +import carCard from "./newHomeComponents/carCard.vue"; import { cashRegisterList, cashRegisterGoodsList, @@ -569,6 +584,7 @@ export default { dicts: ['CardCoupon_type'], data() { return { + dialogVisible:false, isClickable: false, // 默认不可点击 payForm: { realyPayBills: 0.00, @@ -787,7 +803,8 @@ export default { pickUp, accountPending, memberRecharge, - refuelingAmount + refuelingAmount, + carCard }, created() { //初始化 油枪 商品 diff --git a/fuintCashierWeb/src/views/cashier/NewComponents/newHomeComponents/carCard.vue b/fuintCashierWeb/src/views/cashier/NewComponents/newHomeComponents/carCard.vue new file mode 100644 index 000000000..acec171f4 --- /dev/null +++ b/fuintCashierWeb/src/views/cashier/NewComponents/newHomeComponents/carCard.vue @@ -0,0 +1,55 @@ + + + + + diff --git a/gasStation-uni/config.js b/gasStation-uni/config.js index c7170c716..88bdc848c 100644 --- a/gasStation-uni/config.js +++ b/gasStation-uni/config.js @@ -5,8 +5,8 @@ module.exports = { // baseUrl: 'https://www.tuofeng.cc/oilAdmin/', // baseUrl: 'https://oilapi.youkerr.com/oilAdmin/', // baseUrl: 'https://8q4f124343.yicp.fun/', - baseUrl: 'http://47.94.122.58:8080/', - // baseUrl: 'http://localhost:8080/', + // baseUrl: 'http://47.94.122.58:8080/', + baseUrl: 'http://localhost:8080/', // baseUrl: 'http://192.168.1.5:8002/cdJdc', imagesUrl: 'http://www.nuoyunr.com/lananRsc', // 应用信息 diff --git a/gasStation-uni/pagesMy/fleetMember/addMember.vue b/gasStation-uni/pagesMy/fleetMember/addMember.vue index 78a916890..ae39909ae 100644 --- a/gasStation-uni/pagesMy/fleetMember/addMember.vue +++ b/gasStation-uni/pagesMy/fleetMember/addMember.vue @@ -1,272 +1,281 @@ \ No newline at end of file +.but-sub { + width: 305px; + height: 40px; + line-height: 40px; + margin: 0 auto; + background-color: #FF9655; + color: white; + border-radius: 50px; + text-align: center; + position: absolute; + bottom: 40px; + left: 11%; +} +