Sfoglia il codice sorgente

Merge branch 'master' of http://101.37.21.97:3000/wash/wash_server_v2

DESKTOP-T5C0CIA\lhch 1 mese fa
parent
commit
ec58f3a122
54 ha cambiato i file con 812 aggiunte e 811 eliminazioni
  1. BIN
      .DS_Store
  2. 110 0
      admin-ui/rule.md
  3. 0 9
      admin-ui/src/api/order/cloth.js
  4. 4 4
      admin-ui/src/components/GoodsSkuDialog/index.vue
  5. 1 1
      admin-ui/src/utils/request.js
  6. 2 2
      admin-ui/src/views/app/user/component/editUser.vue
  7. 8 3
      admin-ui/src/views/app/user/index.vue
  8. 2 2
      admin-ui/src/views/goods/commonGoods/index.vue
  9. 1 1
      admin-ui/src/views/index.vue
  10. 33 1
      admin-ui/src/views/order/cloth/collectCloth.vue
  11. 1 1
      admin-ui/src/views/systemSet/sellGoods/retailStore.vue
  12. 2 2
      admin-ui/src/views/workbench/workRecharge/index.vue
  13. 3 9
      yiqi-admin/src/main/java/com/yiqi/admin/controller/app/AppUserController.java
  14. 49 57
      yiqi-admin/src/main/java/com/yiqi/admin/controller/order/OrderClothController.java
  15. 31 15
      yiqi-admin/src/main/java/com/yiqi/admin/controller/order/OrderClothItemController.java
  16. 48 16
      yiqi-admin/src/main/java/com/yiqi/admin/controller/order/OrderGoodsController.java
  17. 33 7
      yiqi-admin/src/main/java/com/yiqi/admin/controller/order/OrderRechargeController.java
  18. 0 1
      yiqi-admin/src/main/java/com/yiqi/admin/controller/recharge/RechargePasswordCardController.java
  19. 1 1
      yiqi-admin/src/main/java/com/yiqi/task/ClothOrderStatusChangeTask.java
  20. 1 0
      yiqi-common/src/main/java/com/yiqi/common/enums/ClothOrderStatusType.java
  21. 64 22
      yiqi-common/src/main/java/com/yiqi/common/utils/OrderNoUtils.java
  22. 0 3
      yiqi-common/src/main/java/com/yiqi/core/service/ISettlementStoreStatisticsService.java
  23. 40 0
      yiqi-common/src/main/java/com/yiqi/order/domain/vo/OrderClothPrintVO.java
  24. 141 0
      yiqi-common/src/main/java/com/yiqi/order/domain/vo/OrderGoodsPrintVO.java
  25. 44 0
      yiqi-common/src/main/java/com/yiqi/order/domain/vo/OrderRechargePrintVO.java
  26. 17 1
      yiqi-common/src/main/java/com/yiqi/order/service/IOrderClothItemService.java
  27. 1 7
      yiqi-common/src/main/java/com/yiqi/order/service/IOrderClothService.java
  28. 0 13
      yiqi-common/src/main/java/com/yiqi/order/service/IOrderGoodsService.java
  29. 0 4
      yiqi-common/src/main/java/com/yiqi/order/service/IOrderRechargeService.java
  30. 8 0
      yiqi-common/src/main/java/com/yiqi/recharge/domain/RechargePasswordCard.java
  31. 1 1
      yiqi-core/src/main/java/com/yiqi/core/service/impl/ClothHangerDetailServiceImpl.java
  32. 13 6
      yiqi-core/src/main/java/com/yiqi/core/service/impl/GoodsInfoServiceImpl.java
  33. 2 1
      yiqi-core/src/main/java/com/yiqi/core/service/impl/SettlementFactoryStatisticsServiceImpl.java
  34. 2 1
      yiqi-core/src/main/java/com/yiqi/core/service/impl/SettlementManageBillServiceImpl.java
  35. 0 6
      yiqi-core/src/main/java/com/yiqi/core/service/impl/SettlementStoreStatisticsServiceImpl.java
  36. 0 22
      yiqi-core/src/main/java/com/yiqi/order/mapper/OrderClothMapper.java
  37. 0 25
      yiqi-core/src/main/java/com/yiqi/order/mapper/OrderGoodsMapper.java
  38. 0 5
      yiqi-core/src/main/java/com/yiqi/order/mapper/OrderRechargeMapper.java
  39. 1 1
      yiqi-core/src/main/java/com/yiqi/order/service/impl/OrderClothAdjunctServiceImpl.java
  40. 50 10
      yiqi-core/src/main/java/com/yiqi/order/service/impl/OrderClothItemServiceImpl.java
  41. 44 222
      yiqi-core/src/main/java/com/yiqi/order/service/impl/OrderClothServiceImpl.java
  42. 0 61
      yiqi-core/src/main/java/com/yiqi/order/service/impl/OrderGoodsServiceImpl.java
  43. 1 1
      yiqi-core/src/main/java/com/yiqi/order/service/impl/OrderPayInfoServiceImpl.java
  44. 1 19
      yiqi-core/src/main/java/com/yiqi/order/service/impl/OrderPurchaseGoodsServiceImpl.java
  45. 30 32
      yiqi-core/src/main/java/com/yiqi/order/service/impl/OrderRechargeServiceImpl.java
  46. 1 1
      yiqi-core/src/main/java/com/yiqi/order/service/impl/OrderRefundInfoServiceImpl.java
  47. 4 4
      yiqi-core/src/main/java/com/yiqi/order/service/impl/PayServiceImpl.java
  48. 11 1
      yiqi-core/src/main/java/com/yiqi/recharge/service/impl/RechargePasswordCardServiceImpl.java
  49. 1 1
      yiqi-core/src/main/resources/mapper/core/SettlementStoreStatisticsMapper.xml
  50. 1 1
      yiqi-core/src/main/resources/mapper/order/OrderClothItemMapper.xml
  51. 0 80
      yiqi-core/src/main/resources/mapper/order/OrderClothMapper.xml
  52. 0 97
      yiqi-core/src/main/resources/mapper/order/OrderGoodsMapper.xml
  53. 0 27
      yiqi-core/src/main/resources/mapper/order/OrderRechargeMapper.xml
  54. 4 4
      yiqi-core/src/main/resources/mapper/recharge/RechargePasswordCardMapper.xml

BIN
.DS_Store


+ 110 - 0
admin-ui/rule.md

@@ -0,0 +1,110 @@
+# UI设计规范文档
+
+## 1. 设计原则
+
+### 1.1 一致性
+- 保持界面元素的一致性
+- 使用统一的颜色方案
+- 保持字体和图标风格统一
+- 统一的交互模式
+
+### 1.2 简洁性
+- 避免界面元素过度拥挤
+- 使用清晰的视觉层次
+- 突出重要信息
+- 减少不必要的装饰元素
+
+### 1.3 可用性
+- 确保所有功能易于访问
+- 提供清晰的反馈
+- 保持操作流程简单直观
+- 提供必要的帮助信息
+
+## 2. 颜色规范
+
+### 2.1 主色调
+- 主色:#1890FF(蓝色)
+- 辅助色:#52C41A(绿色)
+- 警告色:#FAAD14(橙色)
+- 错误色:#F5222D(红色)
+
+### 2.2 中性色
+- 标题文字:#262626
+- 正文文字:#595959
+- 次要文字:#8C8C8C
+- 禁用文字:#BFBFBF
+- 边框颜色:#D9D9D9
+- 背景色:#F0F2F5
+
+## 3. 字体规范
+
+### 3.1 字体家族
+- 中文:PingFang SC
+- 英文:Helvetica Neue
+
+### 3.2 字号规范
+- 主标题:24px
+- 次标题:20px
+- 小标题:16px
+- 正文:14px
+- 辅助文字:12px
+
+## 4. 布局规范
+
+### 4.1 间距
+- 页面边距:24px
+- 组件间距:16px
+- 内部间距:8px
+
+### 4.2 栅格系统
+- 使用24栅格系统
+- 响应式断点:
+  - xs: <576px
+  - sm: ≥576px
+  - md: ≥768px
+  - lg: ≥992px
+  - xl: ≥1200px
+
+## 5. 组件规范
+
+### 5.1 按钮
+- 主要按钮:实心背景
+- 次要按钮:描边样式
+- 文字按钮:纯文字样式
+- 按钮高度:32px/40px
+
+### 5.2 表单
+- 输入框高度:32px
+- 标签对齐:右对齐
+- 必填项标记:红色星号
+
+### 5.3 表格
+- 表头背景色:#FAFAFA
+- 行高:48px
+- 斑马纹:隔行变色
+
+## 6. 交互规范
+
+### 6.1 状态反馈
+- 加载状态:使用加载动画
+- 成功提示:绿色对勾图标
+- 错误提示:红色错误图标
+- 警告提示:黄色警告图标
+
+### 6.2 动画效果
+- 过渡时间:0.3s
+- 缓动函数:ease-in-out
+- 弹窗动画:fade + slide
+
+## 7. 响应式设计
+
+### 7.1 移动端适配
+- 优先考虑移动端体验
+- 使用弹性布局
+- 关键信息优先展示
+- 触控区域最小44x44px
+
+### 7.2 桌面端优化
+- 合理利用空间
+- 支持快捷键操作
+- 提供高级功能入口

+ 0 - 9
admin-ui/src/api/order/cloth.js

@@ -198,15 +198,6 @@ export function listCountNoConsumeByClothOrder(data) {
   })
 }
 
-// 财务统计-日报
-export function listFinancialStatisticsByClothOrderDay(data) {
-  return request({
-    url: '/mapi/order/cloth/listFinancialStatisticsByClothOrderDay',
-    method: 'post',
-    data: data
-  })
-}
-
 // 财务统计-月报
 export function listFinancialStatisticsByClothOrderMonth(data) {
   return request({

+ 4 - 4
admin-ui/src/components/GoodsSkuDialog/index.vue

@@ -44,7 +44,7 @@
                             @change="handlePriceStockChange(scope.row)" />
                     </template>
                 </el-table-column>
-                <el-table-column label="采购价(元)" align="center" width="180">
+                <el-table-column label="批发价(元)" align="center" width="180">
                     <template slot-scope="scope">
                         <el-input-number
                             v-model="scope.row.purchasePrice"
@@ -129,8 +129,8 @@
                             </el-form-item>
                         </el-col>
                         <el-col :span="12">
-                            <el-form-item label="采购价(元)" prop="purchasePrice">
-                                <el-input-number v-model="form.purchasePrice" placeholder="请输入采购价" :precision="2" :step="0.1" :min="0" :max="9999999" :disabled="userInfoVO.userType != '00'" style="width: 100%" />
+                            <el-form-item label="批发价(元)" prop="purchasePrice">
+                                <el-input-number v-model="form.purchasePrice" placeholder="请输入批发价" :precision="2" :step="0.1" :min="0" :max="9999999" :disabled="userInfoVO.userType != '00'" style="width: 100%" />
                             </el-form-item>
                         </el-col>
                         <el-col :span="12">
@@ -188,7 +188,7 @@ export default {
             rules: {
                 salePrice: [{ required: true, message: '零售价不能为空', trigger: 'blur' }],
                 costPrice: [{ required: true, message: '成本价不能为空', trigger: 'blur' }],
-                purchasePrice: [{ required: true, message: '采购价不能为空', trigger: 'blur' }]
+                purchasePrice: [{ required: true, message: '批发价不能为空', trigger: 'blur' }]
             },
             specVoList: [
                 {

+ 1 - 1
admin-ui/src/utils/request.js

@@ -17,7 +17,7 @@ const service = axios.create({
   // axios中请求配置有baseURL选项,表示请求URL公共部分
   baseURL: process.env.VUE_APP_BASE_API,
   // 超时
-  timeout: 30000
+  timeout: 90000
 })
 
 // request拦截器

+ 2 - 2
admin-ui/src/views/app/user/component/editUser.vue

@@ -35,9 +35,9 @@
           <el-form-item label="头像地址" prop="avatarUrl" >
             <image-upload v-model="dataSource.avatarUrl" :limit="1" :disabled="isDisabled"/>
           </el-form-item>
-          <el-form-item label="客户等级" prop="level">
+          <!-- <el-form-item label="客户等级" prop="level">
             <el-input-number v-model="dataSource.level"  :min="1" :max="50" label="请输入客户等级" :disabled="isDisabled"></el-input-number>
-          </el-form-item>
+          </el-form-item> -->
           <el-form-item label="备注" prop="remark">
             <el-input v-model="dataSource.remark" placeholder="请输入备注" maxlength="50" show-word-limit />
           </el-form-item>

+ 8 - 3
admin-ui/src/views/app/user/index.vue

@@ -22,7 +22,7 @@
         <!-- 操作按钮区域 -->
         <el-row :gutter="10" class="mb8">
             <el-col :span="1.5">
-                <el-button type="primary" plain icon="el-icon-plus" @click="handleAdd" v-hasPermi="['app:user:add']" v-if="userInfoVO.userType == '02'">新增会员</el-button>
+                <el-button type="primary" plain icon="el-icon-plus" @click="handleAdd" v-hasPermi="['app:user:add']" v-if="userInfoVO.userType == '00' || userInfoVO.userType == '02'">新增会员</el-button>
             </el-col>
             <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
         </el-row>
@@ -104,7 +104,7 @@
 
             <el-table-column label="操作" align="center" width="180" fixed="right">
                 <template slot-scope="scope">
-                    <el-button type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" v-hasPermi="['app:user:edit']" v-if="userInfoVO.userType == '02'">编辑</el-button>
+                    <el-button type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" v-hasPermi="['app:user:edit']" v-if="userInfoVO.userType == '00' || userInfoVO.userType == '02'">编辑</el-button>
                     <el-button type="text" icon="el-icon-view" @click="handleView(scope.row)">详情</el-button>
                 </template>
             </el-table-column>
@@ -496,7 +496,12 @@ export default {
                 console.log("AAAA")
                 this.form = response.data
                 this.open = true
-                this.isDisabled = true
+                if (this.userInfoVO.userType == '00') {
+                    this.isDisabled = false
+                } else {
+                    this.isDisabled = true
+                }
+               
                 this.title = '修改用户'
             })
         },

+ 2 - 2
admin-ui/src/views/goods/commonGoods/index.vue

@@ -185,7 +185,7 @@
               <el-form-item label="成本价格" prop="singleSkuCostPrice">
                 <el-input-number v-model="form.singleSkuCostPrice" :precision="2" :step="0.1" :min="0" />
               </el-form-item>
-              <el-form-item label="采购价格" prop="singleSkuPurchasePrice">
+              <el-form-item label="批发价格" prop="singleSkuPurchasePrice">
                 <el-input-number v-model="form.singleSkuPurchasePrice" :precision="2" :step="0.1" :min="0" />
               </el-form-item>
               <el-form-item label="库存数量" prop="singleSkuStock">
@@ -247,7 +247,7 @@
                     <el-input-number v-model="scope.row.costPrice" :precision="2" :step="0.1" :min="0" controls-position="right" size="mini" />
                   </template>
                 </el-table-column>
-                <el-table-column label="采购价格" align="center" width="150">
+                <el-table-column label="批发价格" align="center" width="150">
                   <template slot-scope="scope">
                     <el-input-number v-model="scope.row.purchasePrice" :precision="2" :step="0.1" :min="0" controls-position="right" size="mini" />
                   </template>

+ 1 - 1
admin-ui/src/views/index.vue

@@ -202,7 +202,7 @@
               <el-table-column label="充值笔数" align="center" prop="chargeCount" />
               <el-table-column label="充值金额" align="center" prop="chargeAmount">
                 <template slot-scope="scope">
-                  ¥{{ scope.row.dailyChargeAmount }}
+                  ¥{{ scope.row.chargeAmount }}
                 </template>
               </el-table-column>
             </el-table>

+ 33 - 1
admin-ui/src/views/order/cloth/collectCloth.vue

@@ -253,6 +253,7 @@
                         <el-input v-model="defaultList.item" placeholder="请输入要搜索的衣服类型" style="width: 300px" clearable>
                             <el-button slot="append" icon="el-icon-search" @click="searchCloth('item', 'clothItems')"></el-button>
                         </el-input>
+                        <el-button type="primary" @click="changeClothActiveTab(0)" style="margin-left: 10px">上一步</el-button>
                     </div>
                     <div style="margin-left: 40px">
                         <div class="horizontal-view" style="margin-left: 15px">
@@ -272,6 +273,7 @@
                         <el-input v-model="defaultList.color" placeholder="请输入要搜索的衣服颜色" style="width: 300px" clearable>
                             <el-button slot="append" icon="el-icon-search" @click="searchCloth('color', 'clothColors')"></el-button>
                         </el-input>
+                        <el-button type="primary" @click="changeClothActiveTab(1)" style="margin-left: 10px" v-if="!isUpdateClothItem">上一步</el-button>
                     </div>
                     <div style="margin-left: 40px; display: flex; flex-wrap: wrap">
                         <template v-for="(item, index) in clothColors">
@@ -292,6 +294,7 @@
                         <el-input v-model="defaultList.brand" placeholder="请输入要搜索的衣服品牌" style="width: 300px" clearable>
                             <el-button slot="append" icon="el-icon-search" @click="searchCloth('brand', 'clothBrands')"></el-button>
                         </el-input>
+                        <el-button type="primary" @click="changeClothActiveTab(2)" style="margin-left: 10px" v-if="!isUpdateClothItem">上一步</el-button>
                     </div>
                     <div style="margin-left: 40px">
                         <el-tag :key="item.id" type="info" v-for="item in clothBrands" style="margin-top: 15px; margin-left: 15px" size="medium" @click="onClothBrandSelect(item.id)">
@@ -306,6 +309,7 @@
                                 <el-input v-model="defaultList.flaw" placeholder="请输入要搜索的衣服瑕疵" style="width: 300px" clearable>
                                     <el-button slot="append" icon="el-icon-search" @click="searchCloth('flaw', 'clothFlaws')"></el-button>
                                 </el-input>
+                                <el-button type="primary" @click="changeClothActiveTab(3)" style="margin-left: 10px" v-if="!isUpdateClothItem">上一步</el-button>
                             </div>
                             <el-tag :key="item.id" :type="item.isSelect ? 'success' : 'info'" v-for="(item, index) in clothFlaws" style="margin-top: 15px; margin-left: 15px" size="medium" @click="onClothFlawSelect(index)">
                                 {{ item.name }}
@@ -330,9 +334,10 @@
                         <el-col :span="8">
                             <div>选择附件</div>
                             <div style="margin-left: 15px; margin-top: 10px">
-                                <el-input v-model="defaultList.adjunct" placeholder="请输入要搜索的衣服附件" style="width: 300px" clearable>
+                                <el-input v-model="defaultList.adjunct" placeholder="请输入要搜索的衣服附件" style="width: 200px" clearable>
                                     <el-button slot="append" icon="el-icon-search" @click="searchCloth('adjunct', 'clothAdjuncts')"></el-button>
                                 </el-input>
+                                <el-button type="primary" @click="changeClothActiveTab(4)" style="margin-left: 10px" v-if="!isUpdateClothItem">上一步</el-button>
                             </div>
                             <el-tag :key="item.id" type="info" v-for="item in clothAdjuncts" style="margin-top: 15px; margin-left: 15px" @click="onClothAdjunctSelect(item)">
                                 {{ item.name }}
@@ -952,6 +957,33 @@ export default {
                 this.addClothActiveTab = 1
             })
         },
+        changeClothActiveTab(index) {
+            this.addClothActiveTab = index
+            switch (index) {
+                case 0:
+                    this.form.clothTypeKeys = []
+                    this.form.orderClothTypeDTOS = []
+                    this.form.clothWashModeId = ''
+                    this.form.clothWashModeName = ''
+                    break
+                case 1:
+                    this.clothColors.forEach((item) => {
+                        item.isSelect = false
+                    })
+                    this.form.orderClothColorDTOS = []
+                    break
+                case 2:
+                    this.form.clothBrandId = ''
+                    this.form.clothBrandName = ''
+                    break
+                case 3:
+                    this.form.orderClothFlawDTOS = []
+                    break 
+                 case 4:
+                   
+                    break 
+            }
+        },
         onClothItemSelect(index) {
             this.form.orderClothTypeDTOS = []
             for (let i = 0; i < this.form.clothTypeKeys.length; i++) {

+ 1 - 1
admin-ui/src/views/systemSet/sellGoods/retailStore.vue

@@ -35,7 +35,7 @@
       <el-table-column label="订单编号" align="center" prop="orderNo" width="250px" />
       <el-table-column label="门店名称" align="center" prop="orgName" width="150px" v-if="userInfoVO.userType == '01'" />
       <el-table-column label="门店名称" align="center" prop="orgName" width="150px" v-if="userInfoVO.userType == '00'" />
-      <el-table-column label="进货总价(元)" align="center" prop="costTotalPrice" width="120px" />
+      <el-table-column label="批发总价(元)" align="center" prop="costTotalPrice" width="120px" />
       <el-table-column label="订单状态" align="center" prop="orderStatus" width="150px">
         <template slot-scope="scope">
           <dict-tag :options="dict.type.purchase_order_status" :value="scope.row.orderStatus" />

+ 2 - 2
admin-ui/src/views/workbench/workRecharge/index.vue

@@ -305,9 +305,9 @@
                         <el-form-item label="头像地址" prop="avatarUrl">
                             <image-upload v-model="form.avatarUrl" :limit="1" />
                         </el-form-item>
-                        <el-form-item label="客户等级" prop="level">
+                        <!-- <el-form-item label="客户等级" prop="level">
                             <el-input-number v-model="form.level" :min="1" :max="50" label="请输入客户等级"></el-input-number>
-                        </el-form-item>
+                        </el-form-item> -->
                         <el-form-item label="备注" prop="remark">
                             <el-input v-model="form.remark" placeholder="请输入备注" maxlength="50" show-word-limit />
                         </el-form-item>

+ 3 - 9
yiqi-admin/src/main/java/com/yiqi/admin/controller/app/AppUserController.java

@@ -91,15 +91,9 @@ public class AppUserController extends BaseController {
         }
 
         RechargePasswordCard rechargePasswordCard = rechargePasswordCardService.selectTotalBalanceGroupByAppUser(appUser.getId(), orderType);
-        if (rechargePasswordCard != null) {
-            appUserVO.setRechargeBalance(rechargePasswordCard.getRechargeBalance());
-            appUserVO.setGiveBalance(rechargePasswordCard.getGiveBalance());
-            appUserVO.setWelfareBalance(rechargePasswordCard.getWelfareBalance());
-        } else {
-            appUserVO.setRechargeBalance(BigDecimal.ZERO);
-            appUserVO.setGiveBalance(BigDecimal.ZERO);
-            appUserVO.setWelfareBalance(BigDecimal.ZERO);
-        }
+        appUserVO.setRechargeBalance(rechargePasswordCard.getRechargeBalance());
+        appUserVO.setGiveBalance(rechargePasswordCard.getGiveBalance());
+        appUserVO.setWelfareBalance(rechargePasswordCard.getWelfareBalance());
         return R.ok(appUserVO);
     }
 

+ 49 - 57
yiqi-admin/src/main/java/com/yiqi/admin/controller/order/OrderClothController.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.yiqi.app.domain.*;
+import com.yiqi.app.domain.vo.AppUserInfoVO;
 import com.yiqi.app.service.*;
 import com.yiqi.common.exception.ServiceException;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -22,12 +23,12 @@ import com.yiqi.core.domain.dto.wx.IntracityExpressAddOrderRequest;
 import com.yiqi.core.domain.vo.ClothHangerOrderRelationVO;
 import com.yiqi.core.domain.vo.wx.IntracityExpressCreateOrderResult;
 import com.yiqi.core.service.ISysStoreIntracityExpressService;
-import com.yiqi.order.domain.OrderCloth;
-import com.yiqi.order.domain.OrderClothItem;
-import com.yiqi.order.domain.OrderDelivery;
+import com.yiqi.order.domain.*;
 import com.yiqi.order.domain.dto.*;
 import com.yiqi.order.domain.vo.*;
 import com.yiqi.order.service.*;
+import com.yiqi.recharge.domain.RechargePasswordCard;
+import com.yiqi.recharge.service.IRechargePasswordCardService;
 import com.yiqi.system.domain.ManageFactory;
 import com.yiqi.system.domain.SysOrg;
 import com.yiqi.system.domain.SysSettlementRate;
@@ -65,6 +66,8 @@ public class OrderClothController extends BaseController {
     @Autowired
     private IAppUserService appUserService;
     @Autowired
+    private IOrderClothAddressService orderClothAddressService;
+    @Autowired
     private IOrderClothItemService orderClothItemService;
     @Autowired
     private ISysSettlementRateService sysSettlementRateService;
@@ -75,6 +78,8 @@ public class OrderClothController extends BaseController {
     @Autowired
     private IAppDeliveryRelationService appDeliveryRelationService;
     @Autowired
+    private IRechargePasswordCardService rechargePasswordCardService;
+    @Autowired
     private IPayService payService;
     @Autowired
     private ISysOrgService sysOrgService;
@@ -317,11 +322,8 @@ public class OrderClothController extends BaseController {
         if (ClothTakeWay.DELIVERY.getCode().equals(orderCloth.getSendClothWay())) {
             throw new ServiceException("该订单客户已选择送货上门,无法取衣");
         }
-        if (!ClothOrderStatusType.WASHING.getCode().equals(orderCloth.getOrderStatus())
-                && !ClothOrderStatusType.HAS_WASH.getCode().equals(orderCloth.getOrderStatus())) {
-            throw new ServiceException("当前订单状态为"
-                    + EnumUtils.getEnumByType(orderCloth.getOrderStatus(), ClothOrderStatusType.class)
-                    + ",无法进行取衣操作");
+        if (!orderCloth.getPayStatus().equals(PayStatus.HAS_PAY.getCode())) {
+            throw new ServiceException("订单未支付,无法取衣");
         }
         orderClothItemService.update(new UpdateWrapper<OrderClothItem>().lambda()
                 .set(OrderClothItem::getFlowStatus, ClothOrderFlowStatus.hasTake.getCode())
@@ -330,14 +332,8 @@ public class OrderClothController extends BaseController {
         List<OrderClothItem> orderClothItems = orderClothItemService.list(new QueryWrapper<OrderClothItem>()
                 .lambda().eq(OrderClothItem::getOrderId, orderId).in(OrderClothItem::getWashCode, washCodes.split(",")));
         orderClothItemFlowRecordService.addRecordBatch(orderClothItems, ClothOrderFlowStatus.hasTake.getCode());
-
-        if (orderClothItemService.count(new QueryWrapper<OrderClothItem>().lambda()
-                .eq(OrderClothItem::getOrderId, orderId)
-                .ne(OrderClothItem::getFlowStatus, ClothOrderFlowStatus.hasTake.getCode())) == 0) {//衣服已经全部取走,需要修改订单状态
-            orderClothService.update(new UpdateWrapper<OrderCloth>().lambda()
-                    .set(OrderCloth::getOrderStatus, ClothOrderStatusType.FINISH.getCode())
-                    .eq(OrderCloth::getId, orderId));
-        }
+        //判断订单是否全部取完
+        orderClothService.checkAllOrderStatus(orderCloth.getId(), ClothOrderStatusType.WAITING_FOR_HANG.getCode());
         return R.ok();
     }
 
@@ -680,6 +676,43 @@ public class OrderClothController extends BaseController {
         return success(orderClothService.selectOrderClothById(id));
     }
 
+    /**
+     * 获取零售商品订单详细信息
+     */
+    @GetMapping(value = "/print/{id}")
+    @ApiOperation(value = "洗衣订单打印")
+    public R<OrderClothPrintVO> getPrintInfo(@PathVariable("id") Long id) {
+        OrderClothPrintVO orderClothPrintVO = new OrderClothPrintVO();
+        OrderCloth orderCloth = orderClothService.selectOrderClothById(id);
+        com.yiqi.common.utils.bean.BeanUtils.copyProperties(orderCloth, orderClothPrintVO);
+        AppUserInfoVO userInfo = appUserService.getAppUserInfoById(orderClothPrintVO.getAppUserId());
+        OrderClothAddress orderClothAddress = orderClothAddressService.getByorderSn(orderClothPrintVO.getOrderNo());
+        if (orderClothAddress != null) {
+            userInfo.setAddress(orderClothAddress.getAddress());
+            userInfo.setAddressDetail(orderClothAddress.getAddressDetail());
+            userInfo.setProvince(orderClothAddress.getProvince());
+            userInfo.setCity(orderClothAddress.getCity());
+            userInfo.setArea(orderClothAddress.getArea());
+        }
+        userInfo.setContactName(orderClothPrintVO.getContactName());
+        userInfo.setContactPhone(orderClothPrintVO.getContactPhone());
+        orderClothPrintVO.setAppUserInfoVO(userInfo);
+        //获取衣服明细
+        List<OrderClothItemVO> orderClothItemList = orderClothItemService.queryClothItemByOrderId(orderClothPrintVO.getOrderNo());
+        orderClothPrintVO.setOrderClothItemVOS(orderClothItemList);
+        RechargePasswordCard rechargePasswordCard = rechargePasswordCardService.selectTotalBalanceGroupByAppUser(orderClothPrintVO.getAppUserId(), null);
+        if (orderClothPrintVO.getPayType().equals(PayType.BALANCE.getCode())) {
+            orderClothPrintVO.setMemberBeforeBalance(CurrencyUtil.add(rechargePasswordCard.getTotalBalance(), orderClothPrintVO.getPayAmount()));
+            orderClothPrintVO.setMemberAfterBalance(rechargePasswordCard.getTotalBalance());
+            orderClothPrintVO.setMemberChangeAmount(orderClothPrintVO.getPayAmount());
+        } else {
+            orderClothPrintVO.setMemberBeforeBalance(rechargePasswordCard.getTotalBalance());
+            orderClothPrintVO.setMemberAfterBalance(rechargePasswordCard.getTotalBalance());
+            orderClothPrintVO.setMemberChangeAmount(BigDecimal.ZERO);
+        }
+        return R.ok(orderClothPrintVO);
+    }
+
     /**
      * 删除洗衣订单
      */
@@ -947,32 +980,6 @@ public class OrderClothController extends BaseController {
         return R.ok(orderClothCountConsumeQueryVO);
     }
 
-    /**
-     * 门店财务统计-经营日报-衣服订单
-     */
-    @PreAuthorize("@ss.hasPermi('order:manageDay:list')")
-    @PostMapping(value = "/listFinancialStatisticsByClothOrderDay")
-    @ApiOperation(value = "财务统计-经营日报-衣服订单")
-    public R<OrderFinancialQueryVO> listFinancialStatisticsByClothOrderDay(@RequestBody OrderFinancialDayQueryDTO orderFinancialDayQueryDTO) {
-        if (orderFinancialDayQueryDTO.getBeginCreateTime() != null && orderFinancialDayQueryDTO.getEndCreateTime() != null) {
-            if (DateUtils.addMonths(DateUtils.strToDate(orderFinancialDayQueryDTO.getBeginCreateTime()), 1)
-                    .compareTo(DateUtils.strToDate(orderFinancialDayQueryDTO.getEndCreateTime())) < 0) {
-                throw new ServiceException("查询最大范围1个月的数据");
-            }
-        }
-        return R.ok(orderClothService.listFinancialStatisticsByClothOrderDay(orderFinancialDayQueryDTO));
-    }
-
-    /**
-     * 门店财务统计-经营月报-衣服订单
-     */
-    @PreAuthorize("@ss.hasPermi('order:manageMonth:list')")
-    @PostMapping(value = "/listFinancialStatisticsByClothOrderMonth")
-    @ApiOperation(value = "财务统计-经营月报-衣服订单")
-    public R<OrderFinancialQueryVO> listFinancialStatisticsByClothOrderMonth(@RequestBody OrderFinancialMonthQueryDTO orderFinancialMonthQueryDTO) {
-        return R.ok(orderClothService.listFinancialStatisticsByClothOrderMonth(orderFinancialMonthQueryDTO));
-    }
-
     /**
      * 门店财务统计-支付宝微信统计
      */
@@ -1013,21 +1020,6 @@ public class OrderClothController extends BaseController {
         return R.ok(page);
     }
 
-    /**
-     * 门店财务统计-工厂洗衣明细统计-衣服订单
-     */
-    @PreAuthorize("@ss.hasPermi('order:manageFactory:list')")
-    @PostMapping(value = "/listFinancialStatisticsByClothOrderFactory")
-    @ApiOperation(value = "财务统计-工厂洗衣明细统计-衣服订单")
-    public R<OrderClothFactoryClothQueryVO> listPayFinancialStatisticsByClothOrderFactory(@RequestBody OrderFinancialFactoryClothQueryDTO orderFinancialFactoryClothQueryDTO) {
-        if (orderFinancialFactoryClothQueryDTO.getBeginCreateTime() != null && orderFinancialFactoryClothQueryDTO.getEndCreateTime() != null) {
-            if (DateUtils.addMonths(orderFinancialFactoryClothQueryDTO.getBeginCreateTime(), 3)
-                    .compareTo(orderFinancialFactoryClothQueryDTO.getEndCreateTime()) < 0) {
-                throw new ServiceException("查询最大范围3个月的数据");
-            }
-        }
-        return R.ok(orderClothService.listPayFinancialStatisticsByClothOrderFactory(orderFinancialFactoryClothQueryDTO));
-    }
 
     /**
      * 工厂财务统计-经营日报-今日统计

+ 31 - 15
yiqi-admin/src/main/java/com/yiqi/admin/controller/order/OrderClothItemController.java

@@ -12,6 +12,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
+import com.yiqi.common.enums.ClothOrderStatusType;
 import com.yiqi.common.exception.ServiceException;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.yiqi.app.domain.AppUser;
@@ -87,7 +88,7 @@ public class OrderClothItemController extends BaseController {
     @PostMapping(value = "saveOrderClothPics")
     @ApiOperation("保存衣服图片")
     public R saveOrderClothPics(@RequestParam @ApiParam("衣服图片集合,『,』分割")
-                                        String pics, @RequestParam @ApiParam("订单衣服ID") Long id) throws Exception {
+                                String pics, @RequestParam @ApiParam("订单衣服ID") Long id) throws Exception {
         OrderClothItem orderClothItem = orderClothItemService.getOne(new QueryWrapper<OrderClothItem>().lambda()
                 .eq(OrderClothItem::getId, id)
                 .eq(OrderClothItem::getOrgId, SecurityUtils.getLoginUser().getOrgId())
@@ -124,8 +125,15 @@ public class OrderClothItemController extends BaseController {
     @PostMapping(value = "outFactory")
     public R outFactory(@RequestBody @Valid OrderClothItemOutFactoryDTO orderClothItemOutFactoryDTO) throws Exception {
         if (orderClothItemOutFactoryDTO.getClothType().equals("1")) {
-            orderClothItemService.outFactory(orderClothItemOutFactoryDTO);
+            //衣服出厂
+            List<OrderClothItem> orderClothItems = orderClothItemService.outFactory(orderClothItemOutFactoryDTO);
+            //衣服状态修改,判断是否全部出厂
+            Set<Long> ids = orderClothItems.stream().map(OrderClothItem::getOrderId).collect(Collectors.toSet());
+            for (Long orderId : ids) {
+                orderClothService.checkAllOrderStatus(orderId, ClothOrderStatusType.WASHING.getCode());
+            }
         } else {
+            //附件出厂
             orderClothAdjunctService.outFactory(orderClothItemOutFactoryDTO);
         }
         return R.ok();
@@ -144,7 +152,7 @@ public class OrderClothItemController extends BaseController {
     @ApiOperation("工厂重洗衣服")
     @GetMapping(value = "rewashCloth")
     public R rewashCloth(@RequestParam @ApiParam("水洗唛") String washCode) throws Exception {
-        if (washCode.contains(OrderNoUtils.cloth_wash_code_header)) {
+        if (washCode.startsWith(OrderNoUtils.cloth_wash_code_header)) {
             LambdaQueryWrapper<OrderClothItem> lambdaQueryWrapper = new QueryWrapper<OrderClothItem>().lambda()
                     .eq(OrderClothItem::getFactoryId, SecurityUtils.getLoginUser().getOrgId()).eq(OrderClothItem::getWashCode, washCode);
             OrderClothItem orderClothItem = orderClothItemService.getOne(lambdaQueryWrapper);
@@ -163,7 +171,7 @@ public class OrderClothItemController extends BaseController {
             //记录日志
             orderClothItemFlowRecordService.addRecord(orderClothItem, ClothOrderFlowStatus.reWash.getCode());
         }
-        if (washCode.contains(OrderNoUtils.cloth_wash_adjust_code_header)) {
+        if (washCode.startsWith(OrderNoUtils.cloth_wash_adjust_code_header)) {
             OrderClothAdjunct orderClothAdjunct = orderClothAdjunctService.selectOrderClothAdjunctByAdjunctNo(washCode);
             if (orderClothAdjunct == null) {
                 throw new ServiceException("未查询到衣物");
@@ -187,7 +195,7 @@ public class OrderClothItemController extends BaseController {
     @GetMapping(value = "/deleteInFactory")
     public R deleteInFactory(@RequestParam @ApiParam("水洗唛") String washCode) throws Exception {
 
-        if (washCode.contains(OrderNoUtils.cloth_wash_code_header)) {
+        if (washCode.startsWith(OrderNoUtils.cloth_wash_code_header)) {
             LambdaQueryWrapper<OrderClothItem> lambdaQueryWrapper = new QueryWrapper<OrderClothItem>().lambda()
                     .eq(OrderClothItem::getFactoryId, SecurityUtils.getLoginUser().getOrgId()).eq(OrderClothItem::getWashCode, washCode);
             OrderClothItem orderClothItem = orderClothItemService.getOne(lambdaQueryWrapper);
@@ -205,7 +213,7 @@ public class OrderClothItemController extends BaseController {
 
             orderClothItemFlowRecordService.addRecord(orderClothItem, ClothOrderFlowStatus.deleteInFactory.getCode());
         }
-        if (washCode.contains(OrderNoUtils.cloth_wash_adjust_code_header)) {
+        if (washCode.startsWith(OrderNoUtils.cloth_wash_adjust_code_header)) {
             OrderClothAdjunct orderClothAdjunct = orderClothAdjunctService.selectOrderClothAdjunctByAdjunctNo(washCode);
             if (orderClothAdjunct == null) {
                 throw new ServiceException("未查询到衣物");
@@ -226,7 +234,7 @@ public class OrderClothItemController extends BaseController {
     @ApiOperation("工厂撤销入厂")
     @GetMapping(value = "/cancelOrderInFactory")
     public R cancelOrderInFactory(@RequestParam @ApiParam("水洗唛") String washCode) throws Exception {
-        if (washCode.contains(OrderNoUtils.cloth_wash_code_header)) {
+        if (washCode.startsWith(OrderNoUtils.cloth_wash_code_header)) {
             LambdaQueryWrapper<OrderClothItem> lambdaQueryWrapper = new QueryWrapper<OrderClothItem>().lambda()
                     .eq(OrderClothItem::getFactoryId, SecurityUtils.getLoginUser().getOrgId()).eq(OrderClothItem::getWashCode, washCode);
             OrderClothItem orderClothItem = orderClothItemService.getOne(lambdaQueryWrapper);
@@ -240,7 +248,7 @@ public class OrderClothItemController extends BaseController {
             //生成一条工厂撤单退款申请
             orderClothService.refundOrderItemApply(orderClothItem, "工厂手动执行撤单");
         }
-        if (washCode.contains(OrderNoUtils.cloth_wash_adjust_code_header)) {
+        if (washCode.startsWith(OrderNoUtils.cloth_wash_adjust_code_header)) {
             throw new ServiceException("衣服附件无法单独执行撤单逻辑");
         }
         return R.ok();
@@ -253,7 +261,7 @@ public class OrderClothItemController extends BaseController {
     public R<OrderClothItemVO> inFactory(@RequestParam @ApiParam("水洗唛") String washCode) throws Exception {
         OrderClothItemVO orderClothItemVO = new OrderClothItemVO();
         OrderClothItem orderClothItem = null;
-        if (washCode.contains(OrderNoUtils.cloth_wash_code_header)) {
+        if (washCode.startsWith(OrderNoUtils.cloth_wash_code_header)) {
             LambdaQueryWrapper<OrderClothItem> lambdaQueryWrapper = new QueryWrapper<OrderClothItem>().lambda()
                     .eq(OrderClothItem::getFactoryId, SecurityUtils.getLoginUser().getOrgId()).eq(OrderClothItem::getWashCode, washCode);
             orderClothItem = orderClothItemService.getOne(lambdaQueryWrapper);
@@ -286,7 +294,7 @@ public class OrderClothItemController extends BaseController {
                     .lambda().eq(OrderClothType::getOrderClothId, orderClothItem.getId())));
             orderClothItemVO.setFlowStatus(orderClothItem.getFlowStatus());
         }
-        if (washCode.contains(OrderNoUtils.cloth_wash_adjust_code_header)) {
+        if (washCode.startsWith(OrderNoUtils.cloth_wash_adjust_code_header)) {
             OrderClothAdjunct orderClothAdjunct = orderClothAdjunctService.selectOrderClothAdjunctByAdjunctNo(washCode);
             if (orderClothAdjunct == null) {
                 throw new ServiceException("未查询到衣物");
@@ -321,8 +329,16 @@ public class OrderClothItemController extends BaseController {
             orderClothItemVO.setOrderClothAdjuncts(Arrays.asList(orderClothAdjunct));
             orderClothItemVO.setFlowStatus(orderClothAdjunct.getFlowStatus());
         }
-        //判断所有衣服的状态,更新订单状态
-        orderClothService.checkAllOrderStatus(orderClothItem.getOrderId());
+        //只要有一件衣服已经入厂,订单就要更新成已入厂状态
+        if (orderClothItem.getRefundId() == null) {
+            OrderCloth orderCloth = orderClothService.getById(orderClothItem.getOrderId());
+            if (Integer.parseInt(orderCloth.getOrderStatus()) < Integer.parseInt(ClothOrderStatusType.WASHING.getCode())) {
+                orderCloth.setId(orderClothItem.getOrderId());
+                orderCloth.setOrderStatus(ClothOrderStatusType.WASHING.getCode());
+                orderCloth.buildUpdateData();
+                orderClothService.updateById(orderCloth);
+            }
+        }
         orderClothItemVO.setOrgName(sysOrgService.getOne(new QueryWrapper<SysOrg>().lambda()
                 .eq(SysOrg::getId, orderClothItemVO.getOrgId())
                 .eq(SysOrg::getSourceType, orderClothItemVO.getSourceType()), false).getName());
@@ -335,7 +351,7 @@ public class OrderClothItemController extends BaseController {
     public R<OrderClothItemVO> checkCloth(@RequestParam @ApiParam("水洗唛") String washCode) throws Exception {
         OrderClothItemVO orderClothItemVO = new OrderClothItemVO();
         OrderClothItem orderClothItem = null;
-        if (washCode.contains(OrderNoUtils.cloth_wash_code_header)) {
+        if (washCode.startsWith(OrderNoUtils.cloth_wash_code_header)) {
             LambdaQueryWrapper<OrderClothItem> lambdaQueryWrapper = new QueryWrapper<OrderClothItem>().lambda()
                     .eq(OrderClothItem::getFactoryId, SecurityUtils.getLoginUser().getOrgId()).eq(OrderClothItem::getWashCode, washCode);
             orderClothItem = orderClothItemService.getOne(lambdaQueryWrapper);
@@ -370,7 +386,7 @@ public class OrderClothItemController extends BaseController {
             //添加记录
             orderClothItemFlowRecordService.addRecord(orderClothItem, ClothOrderFlowStatus.checkCloth.getCode());
         }
-        if (washCode.contains(OrderNoUtils.cloth_wash_adjust_code_header)) {
+        if (washCode.startsWith(OrderNoUtils.cloth_wash_adjust_code_header)) {
             OrderClothAdjunct orderClothAdjunct = orderClothAdjunctService.selectOrderClothAdjunctByAdjunctNo(washCode);
             if (orderClothAdjunct == null) {
                 throw new ServiceException("未查询到衣物");
@@ -894,7 +910,7 @@ public class OrderClothItemController extends BaseController {
     @ApiOperation(value = "查询洗衣订单-待上挂衣服列表")
     public R<Page<OrderClothItemVO>> getOrderClothItemListByUpHanger(OrderClothHangerDTO orderClothHangerDTO) {
 
-        if (StringUtils.isNotBlank(orderClothHangerDTO.getWashCode()) && orderClothHangerDTO.getWashCode().contains(OrderNoUtils.cloth_wash_adjust_code_header)) {
+        if (StringUtils.isNotBlank(orderClothHangerDTO.getWashCode()) && orderClothHangerDTO.getWashCode().startsWith(OrderNoUtils.cloth_wash_adjust_code_header)) {
             OrderClothItemVO orderClothItemVO = new OrderClothItemVO();
             OrderClothAdjunct orderClothAdjunct = orderClothAdjunctService.selectOrderClothAdjunctByAdjunctNo(orderClothHangerDTO.getWashCode());
             if (orderClothAdjunct == null) {

+ 48 - 16
yiqi-admin/src/main/java/com/yiqi/admin/controller/order/OrderGoodsController.java

@@ -1,6 +1,7 @@
 package com.yiqi.admin.controller.order;
 
 import java.math.BigDecimal;
+import java.util.Currency;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -16,6 +17,7 @@ import com.yiqi.common.constant.UrlConstants;
 import com.yiqi.common.core.domain.R;
 import com.yiqi.common.core.domain.entity.SysUser;
 import com.yiqi.common.enums.*;
+import com.yiqi.common.utils.CurrencyUtil;
 import com.yiqi.common.utils.DateUtils;
 import com.yiqi.common.utils.SecurityUtils;
 import com.yiqi.common.utils.bean.BeanUtils;
@@ -23,6 +25,9 @@ import com.yiqi.common.utils.poi.ExcelUtil;
 import com.yiqi.order.domain.dto.*;
 import com.yiqi.order.domain.dto.weapp.AppOrderGoodsCancelDTO;
 import com.yiqi.order.domain.vo.*;
+import com.yiqi.recharge.domain.RechargePasswordCard;
+import com.yiqi.recharge.service.IRechargePasswordCardService;
+import com.yiqi.system.domain.SysStore;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -55,7 +60,9 @@ public class OrderGoodsController extends BaseController {
     @Autowired
     private IAppUserService appUserService;
 
-    //<editor-folder desc="基础函数">
+    @Autowired
+    private IRechargePasswordCardService rechargePasswordCardService;
+
     /**
      * 查询零售商品订单列表
      */
@@ -66,11 +73,11 @@ public class OrderGoodsController extends BaseController {
         startPage();
         List<GoodsOrderQueryVO> orderGoodsList = orderGoodsService.selectOrderGoodsList(goodsOrderQueryDTO);
         List<Long> appUserIdList = orderGoodsList.stream().map(GoodsOrderQueryVO::getAppUserId).collect(Collectors.toList());
-        if (CollUtil.isNotEmpty(appUserIdList)){
+        if (CollUtil.isNotEmpty(appUserIdList)) {
             List<AppUserInfoVO> userInfoList = appUserService.getAppUserInfoByIds(appUserIdList);
             Map<Long, AppUserInfoVO> userInfoVOMap = userInfoList.stream().collect(Collectors.toMap(AppUserInfoVO::getAppUserId, AppUserInfoVO -> AppUserInfoVO));
             for (GoodsOrderQueryVO vo : orderGoodsList) {
-                if(userInfoVOMap.containsKey(vo.getAppUserId())){
+                if (userInfoVOMap.containsKey(vo.getAppUserId())) {
                     BeanUtils.copyProperties(userInfoVOMap.get(vo.getAppUserId()), vo);
                 }
             }
@@ -103,12 +110,37 @@ public class OrderGoodsController extends BaseController {
         BeanUtils.copyProperties(orderGoods, goodsOrderInfoVO);
         goodsOrderInfoVO.setOrderGoodsSkuList(orderGoodsService.selectOrderGoodsById(id));
         AppUserInfoVO userInfo = appUserService.getAppUserInfoById(orderGoods.getAppUserId());
-        if (userInfo != null){
+        if (userInfo != null) {
             BeanUtils.copyProperties(userInfo, goodsOrderInfoVO);
         }
         return R.ok(goodsOrderInfoVO);
     }
 
+    /**
+     * 获取零售商品订单详细信息
+     */
+    @GetMapping(value = "/print/{id}")
+    @ApiOperation(value = "商品订单打印")
+    public R<OrderGoodsPrintVO> getPrintInfo(@PathVariable("id") Long id) {
+        OrderGoodsPrintVO goodsOrderInfoVO = new OrderGoodsPrintVO();
+        OrderGoods orderGoods = orderGoodsService.getById(id);
+        BeanUtils.copyProperties(orderGoods, goodsOrderInfoVO);
+        goodsOrderInfoVO.setOrderGoodsSkuList(orderGoodsService.selectOrderGoodsById(id));
+        AppUserInfoVO userInfo = appUserService.getAppUserInfoById(orderGoods.getAppUserId());
+        goodsOrderInfoVO.setAppUserInfoVO(userInfo);
+        RechargePasswordCard rechargePasswordCard = rechargePasswordCardService.selectTotalBalanceGroupByAppUser(orderGoods.getAppUserId(), OrderType.goods.getCode());
+        if (orderGoods.getPayType().equals(PayType.BALANCE.getCode())) {
+            goodsOrderInfoVO.setMemberBeforeBalance(CurrencyUtil.add(rechargePasswordCard.getTotalBalance(), orderGoods.getPayAmount()));
+            goodsOrderInfoVO.setMemberAfterBalance(rechargePasswordCard.getTotalBalance());
+            goodsOrderInfoVO.setMemberChangeAmount(orderGoods.getPayAmount());
+        } else {
+            goodsOrderInfoVO.setMemberBeforeBalance(rechargePasswordCard.getTotalBalance());
+            goodsOrderInfoVO.setMemberAfterBalance(rechargePasswordCard.getTotalBalance());
+            goodsOrderInfoVO.setMemberChangeAmount(BigDecimal.ZERO);
+        }
+        return R.ok(goodsOrderInfoVO);
+    }
+
     /**
      * 新增零售商品订单-下单
      */
@@ -123,19 +155,19 @@ public class OrderGoodsController extends BaseController {
         List<OrderGoodsSkuInfoVO> orderGoodsSkuInfoVOS = orderGoodsService.getOrderSkuInfoByOrderSkuId(orderGoodsDTO);
         BigDecimal totalPrice = orderGoodsSkuInfoVOS.stream().map(item -> item.getSalePrice().multiply(new BigDecimal(item.getBuyNum())))
                 .reduce(BigDecimal.ZERO, BigDecimal::add);
-        if (BigDecimal.ZERO.equals(totalPrice)){
+        if (BigDecimal.ZERO.equals(totalPrice)) {
             error("商品总价不能为0");
         }
         orderGoodsDTO.setTotalPrice(totalPrice);
 
         // 设置门店线下参数
         SysUser user = SecurityUtils.getLoginUser().getUser();
-        orderGoodsDTO.setGoodsType(orderGoodsInsertDTO.getGoodsType() == null ? GoodsType.NORMAL.getCode() :orderGoodsInsertDTO.getGoodsType());
+        orderGoodsDTO.setGoodsType(orderGoodsInsertDTO.getGoodsType() == null ? GoodsType.NORMAL.getCode() : orderGoodsInsertDTO.getGoodsType());
         orderGoodsDTO.setSourceType(user.getUserType());
         orderGoodsDTO.setOrgId(user.getStoreId());
         orderGoodsDTO.setSendTime(DateUtils.getNowDate());
         orderGoodsDTO.setFinishTime(DateUtils.getNowDate());
-        if (orderGoodsDTO.getDeductAmount() == null){
+        if (orderGoodsDTO.getDeductAmount() == null) {
             orderGoodsDTO.setDeductAmount(BigDecimal.ZERO);
         }
         return R.ok(orderGoodsService.insertRetailOrderGoods(orderGoodsDTO, orderGoodsSkuInfoVOS));
@@ -157,7 +189,7 @@ public class OrderGoodsController extends BaseController {
     @Transactional(rollbackFor = Exception.class)
     @PostMapping("/rePayOrder")
     @ApiOperation(value = "零售商品订单-重新支付")
-    public  R<OrderPayResultVO> rePayOrder(@RequestBody OrderGoodsDTO orderGoodsDTO) {
+    public R<OrderPayResultVO> rePayOrder(@RequestBody OrderGoodsDTO orderGoodsDTO) {
         return R.ok(orderGoodsService.rePayOrder(orderGoodsDTO));
     }
 
@@ -203,11 +235,11 @@ public class OrderGoodsController extends BaseController {
      * 商品订单退款审核,审批同意
      */
     @Transactional(rollbackFor = Exception.class)
-    @GetMapping ("/refundApprovalPass")
+    @GetMapping("/refundApprovalPass")
     @ApiOperation(value = "商品订单退款审核,审批同意")
     public R refundApprovalPass(@RequestParam("orderId") Long orderId) {
         // 操作人校验
-        if (!SecurityUtils.getLoginUser().getSourceType().equals(SourceType.MANAGER.getCode())){
+        if (!SecurityUtils.getLoginUser().getSourceType().equals(SourceType.MANAGER.getCode())) {
             throw new ServiceException("当前登录人没有权限操作");
         }
         return R.ok(orderGoodsService.refundApprovalPass(orderId));
@@ -221,7 +253,7 @@ public class OrderGoodsController extends BaseController {
     @ApiOperation(value = "商品订单退款审核,审批驳回")
     public R refundApprovalReject(@RequestParam("orderId") Long orderId) {
         // 操作人校验
-        if (!SecurityUtils.getLoginUser().getSourceType().equals(SourceType.MANAGER.getCode())){
+        if (!SecurityUtils.getLoginUser().getSourceType().equals(SourceType.MANAGER.getCode())) {
             throw new ServiceException("当前登录人没有权限操作");
         }
         return R.ok(orderGoodsService.refundApprovalReject(orderId));
@@ -234,7 +266,7 @@ public class OrderGoodsController extends BaseController {
                 .eq(OrderGoods::getDelFlag, DeleteStatus.OK.getCode())
                 .eq(OrderGoods::getAppUserId, memberOrderQueryDTO.getAppUserId())
                 .ne(OrderGoods::getRefundStatus, OrderRefundStatus.REFUND_SUCCESS.getCode());
-        if (SourceType.STORE.getCode().equals(SecurityUtils.getLoginUser().getSourceType())){
+        if (SourceType.STORE.getCode().equals(SecurityUtils.getLoginUser().getSourceType())) {
             queryWrapper.eq(OrderGoods::getSourceType, SourceType.STORE.getCode());
             queryWrapper.eq(OrderGoods::getOrgId, SecurityUtils.getLoginUser().getOrgId());
         }
@@ -254,11 +286,11 @@ public class OrderGoodsController extends BaseController {
         startPage();
         List<GoodsOrderRefundQueryVO> orderGoodsList = orderGoodsService.getRefundOrderGoodsList(goodsOrderRefundQueryDTO);
         List<Long> appUserIdList = orderGoodsList.stream().map(GoodsOrderRefundQueryVO::getAppUserId).collect(Collectors.toList());
-        if (CollUtil.isNotEmpty(appUserIdList)){
+        if (CollUtil.isNotEmpty(appUserIdList)) {
             List<AppUserInfoVO> userInfoList = appUserService.getAppUserInfoByIds(appUserIdList);
             Map<Long, AppUserInfoVO> userInfoVOMap = userInfoList.stream().collect(Collectors.toMap(AppUserInfoVO::getAppUserId, AppUserInfoVO -> AppUserInfoVO));
             for (GoodsOrderRefundQueryVO vo : orderGoodsList) {
-                if(userInfoVOMap.containsKey(vo.getAppUserId())){
+                if (userInfoVOMap.containsKey(vo.getAppUserId())) {
                     BeanUtils.copyProperties(userInfoVOMap.get(vo.getAppUserId()), vo);
                 }
             }
@@ -277,11 +309,11 @@ public class OrderGoodsController extends BaseController {
         goodsOrderRefundQueryDTO.setPageSizeExport(50000);
         List<GoodsOrderRefundQueryVO> orderGoodsList = orderGoodsService.getRefundOrderGoodsList(goodsOrderRefundQueryDTO);
         List<Long> appUserIdList = orderGoodsList.stream().map(GoodsOrderRefundQueryVO::getAppUserId).collect(Collectors.toList());
-        if (CollUtil.isNotEmpty(appUserIdList)){
+        if (CollUtil.isNotEmpty(appUserIdList)) {
             List<AppUserInfoVO> userInfoList = appUserService.getAppUserInfoByIds(appUserIdList);
             Map<Long, AppUserInfoVO> userInfoVOMap = userInfoList.stream().collect(Collectors.toMap(AppUserInfoVO::getAppUserId, AppUserInfoVO -> AppUserInfoVO));
             for (GoodsOrderRefundQueryVO vo : orderGoodsList) {
-                if(userInfoVOMap.containsKey(vo.getAppUserId())){
+                if (userInfoVOMap.containsKey(vo.getAppUserId())) {
                     BeanUtils.copyProperties(userInfoVOMap.get(vo.getAppUserId()), vo);
                 }
             }

+ 33 - 7
yiqi-admin/src/main/java/com/yiqi/admin/controller/order/OrderRechargeController.java

@@ -2,7 +2,9 @@ package com.yiqi.admin.controller.order;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.yiqi.common.enums.OrderRechargeStatus;
+import com.yiqi.app.domain.vo.AppUserInfoVO;
+import com.yiqi.app.service.IAppUserService;
+import com.yiqi.common.enums.*;
 import com.yiqi.common.exception.ServiceException;
 import com.yiqi.common.annotation.Log;
 import com.yiqi.common.constant.UrlConstants;
@@ -10,24 +12,24 @@ import com.yiqi.common.core.controller.BaseController;
 import com.yiqi.common.core.domain.AjaxResult;
 import com.yiqi.common.core.domain.R;
 import com.yiqi.common.core.page.TableDataInfo;
-import com.yiqi.common.enums.BusinessType;
-import com.yiqi.common.enums.OrderSourceType;
+import com.yiqi.common.utils.CurrencyUtil;
 import com.yiqi.common.utils.SecurityUtils;
+import com.yiqi.common.utils.bean.BeanUtils;
 import com.yiqi.common.utils.poi.ExcelUtil;
+import com.yiqi.order.domain.OrderGoods;
 import com.yiqi.order.domain.OrderRecharge;
 import com.yiqi.order.domain.OrderRechargeInstalment;
 import com.yiqi.order.domain.dto.OrderRechargeCreateDTO;
 import com.yiqi.order.domain.dto.OrderRechargeQueryDTO;
-import com.yiqi.order.domain.vo.OrderRechargeListVO;
-import com.yiqi.order.domain.vo.OrderRechargeRecordVO;
-import com.yiqi.order.domain.vo.OrderPayResultVO;
+import com.yiqi.order.domain.vo.*;
 import com.yiqi.order.domain.vo.weapp.AppOrderRechargeResultVO;
 import com.yiqi.order.service.IOrderRechargeInstalmentService;
 import com.yiqi.order.service.IOrderRechargeService;
+import com.yiqi.recharge.domain.RechargePasswordCard;
+import com.yiqi.recharge.service.IRechargePasswordCardService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
-import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.transaction.annotation.Transactional;
@@ -53,6 +55,12 @@ public class OrderRechargeController extends BaseController {
     @Autowired
     IOrderRechargeInstalmentService orderRechargeInstalmentService;
 
+    @Autowired
+    private IAppUserService appUserService;
+
+    @Autowired
+    private IRechargePasswordCardService rechargePasswordCardService;
+
     /**
      * 查询充值订单列表
      */
@@ -88,6 +96,24 @@ public class OrderRechargeController extends BaseController {
         return success(orderRechargeService.selectOrderRechargeById(id));
     }
 
+    /**
+     * 获取零售商品订单详细信息
+     */
+    @GetMapping(value = "/print/{id}")
+    @ApiOperation(value = "充值订单打印")
+    public R<OrderRechargePrintVO> getPrintInfo(@PathVariable("id") Long id) {
+        OrderRechargePrintVO orderRechargePrintVO = new OrderRechargePrintVO();
+        OrderRecharge orderRecharge = orderRechargeService.selectOrderRechargeById(id);
+        BeanUtils.copyProperties(orderRecharge, orderRechargePrintVO);
+        AppUserInfoVO userInfo = appUserService.getAppUserInfoById(orderRecharge.getAppUserId());
+        orderRechargePrintVO.setAppUserInfoVO(userInfo);
+        RechargePasswordCard rechargePasswordCard = rechargePasswordCardService.selectTotalBalanceGroupByAppUser(orderRecharge.getAppUserId(), null);
+        orderRechargePrintVO.setMemberChangeAmount(CurrencyUtil.add(orderRecharge.getRechargeAmount(), orderRecharge.getWelfareAmount(), orderRecharge.getGiveAmount()));
+        orderRechargePrintVO.setMemberAfterBalance(rechargePasswordCard.getTotalBalance());
+        orderRechargePrintVO.setMemberBeforeBalance(CurrencyUtil.add(rechargePasswordCard.getTotalBalance(), orderRechargePrintVO.getMemberChangeAmount()));
+        return R.ok(orderRechargePrintVO);
+    }
+
     /**
      * 新增充值订单
      */

+ 0 - 1
yiqi-admin/src/main/java/com/yiqi/admin/controller/recharge/RechargePasswordCardController.java

@@ -69,7 +69,6 @@ public class RechargePasswordCardController extends BaseController {
     /**
      * 查询密码充值卡管理列表
      */
-    @PreAuthorize("@ss.hasPermi('recharge:card:list')")
     @GetMapping("/list")
     @ApiOperation(value = "查询密码充值卡管理列表")
     public TableDataInfo list(RechargePasswordCardQueryDTO rechargePasswordCardQueryDTO) {

+ 1 - 1
yiqi-admin/src/main/java/com/yiqi/task/ClothOrderStatusChangeTask.java

@@ -48,6 +48,6 @@ public class ClothOrderStatusChangeTask {
      */
     public void run() {
         log.info("*****订单状态变更逻辑开始执行*****");
-        orderClothService.checkAllOrderStatus(null);
+        orderClothService.checkAllOrderStatus(null, null);
     }
 }

+ 1 - 0
yiqi-common/src/main/java/com/yiqi/common/enums/ClothOrderStatusType.java

@@ -20,6 +20,7 @@ public enum ClothOrderStatusType implements CodeEnum{
     , SENDING("10", "送衣中")
     , WAITING_FOR_COMMENT("11", "待评价")
     , FINISH("12", "已完成")
+    , REFUND_SUCCESS("15", "已退款")
     , CANCEL("-1", "已取消");
 
     private final String code;

+ 64 - 22
yiqi-common/src/main/java/com/yiqi/common/utils/OrderNoUtils.java

@@ -1,96 +1,138 @@
 package com.yiqi.common.utils;
 
+import cn.hutool.core.date.DateUnit;
+import cn.hutool.core.date.DateUtil;
 import com.yiqi.common.config.SnowFlakeConfig;
+import com.yiqi.common.core.redis.RedisUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import java.util.Date;
+import java.util.Random;
+
 @Component
 public class OrderNoUtils {
-    @Autowired
-    SnowFlakeConfig snowFlakeConfig;
 
-    public final static String cloth_wash_code_header = "WA";
-    public final static String cloth_wash_adjust_code_header = "WD";
-    public final static String activity_order_header = "AC";
-    public final static String cloth_order_header = "CL";
-    public final static String purchase_order_header = "PU";
-    public final static String goods_order_header = "GO";
-    public final static String recharge_order_header = "RE";
-    public final static String delivery_order_header = "DE";
-    public final static String refund_order_header = "RF";
+    @Autowired
+    RedisUtils redisUtils;
 
+    public final static String cloth_wash_code_header = "1";
+    public final static String cloth_wash_adjust_code_header = "2";
+    public final static String activity_order_header = "A";
+    public final static String cloth_order_header = "C";
+    public final static String purchase_order_header = "P";
+    public final static String goods_order_header = "G";
+    public final static String recharge_order_header = "R";
+    public final static String delivery_order_header = "D";
 
 
     /**
      * 洗衣水洗唛号生成
+     *
      * @return
      */
-    public String getClothWashCode(){
+    public String getClothWashCode() {
         return getOrderNo(cloth_wash_code_header);
     }
 
     /**
      * 洗衣水洗附件单号
+     *
      * @return
      */
-    public String getClothWashAdjustCode(){
+    public String getClothWashAdjustCode() {
         return getOrderNo(cloth_wash_adjust_code_header);
     }
 
     /**
      * 洗衣订单号生成
+     *
      * @return
      */
-    public String getClothOrderNo(){
+    public String getClothOrderNo() {
         return getOrderNo(cloth_order_header);
     }
 
     /**
      * 进货订单号生成
+     *
      * @return
      */
-    public String getPurchaseOrderNo(){
+    public String getPurchaseOrderNo() {
         return getOrderNo(purchase_order_header);
     }
 
     /**
      * 商品订单号生成
+     *
      * @return
      */
-    public String getGoodsOrderNo(){
+    public String getGoodsOrderNo() {
         return getOrderNo(goods_order_header);
     }
 
     /**
      * 活动订单号生成
+     *
      * @return
      */
-    public String getActivityOrderNo(){
+    public String getActivityOrderNo() {
         return getOrderNo(activity_order_header);
     }
 
     /**
      * 充值订单号生成
+     *
      * @return
      */
-    public String getRechargeOrderNo(){
+    public String getRechargeOrderNo() {
         return getOrderNo(recharge_order_header);
     }
 
     /**
      * 配送费订单号生成
+     *
      * @return
      */
-    public String getDeliveryOrderNo(){
+    public String getDeliveryOrderNo() {
         return getOrderNo(delivery_order_header);
     }
 
 
-    public String getOrderNo(String headerKey){
-        return headerKey + snowFlakeConfig.getInstance().nextId();
+    public String getOrderNo(String headerKey) {
+        Long days = DateUtil.between(new Date(), DateUtils.parseDate("2022-01-01"), DateUnit.DAY);
+        String date = DateUtil.format(new Date(), "HHmmss");
+        Long num = getOrderNum(headerKey);
+        String str = String.format("%03d", num.intValue());
+        return headerKey + days + date + str;
     }
 
-    public String getOrderNo(){
+    public String getOrderNo() {
         return getOrderNo("");
     }
+
+
+    /**
+     * REDIS_KEY
+     */
+    public final static String REDIS_KEY = "ORDER_NUM:";
+
+    /**
+     * 获取取货码
+     *
+     * @return
+     */
+    public Long getOrderNum(String headerKey) {
+        if (StringUtils.isEmpty(headerKey)) {
+            headerKey = "O";
+        }
+        String key = REDIS_KEY + headerKey + ":" + DateUtil.formatDate(new Date());
+        Long count = redisUtils.incr(key, 1);
+        redisUtils.expire(key, 24 * 3600);
+        return count;
+    }
+
+    public static void main(String[] args) {
+        System.out.println(new OrderNoUtils().getOrderNo());
+    }
 }

+ 0 - 3
yiqi-common/src/main/java/com/yiqi/core/service/ISettlementStoreStatisticsService.java

@@ -49,9 +49,6 @@ public interface ISettlementStoreStatisticsService extends IService<SettlementSt
 
 
 
-    StoreChargeStatistics generateChargeStatistics(Long storeId, Date start, Date end);
-
-
     /**
      * 平台每日统计列表 (按门店)
      *

+ 40 - 0
yiqi-common/src/main/java/com/yiqi/order/domain/vo/OrderClothPrintVO.java

@@ -0,0 +1,40 @@
+package com.yiqi.order.domain.vo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.yiqi.app.domain.vo.AppUserInfoVO;
+import com.yiqi.common.annotation.Excel;
+import com.yiqi.order.domain.OrderCloth;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 订单打印VO
+ *
+ * @author weiximei
+ * @date 2020-05-06
+ */
+@Data
+public class OrderClothPrintVO extends OrderCloth {
+
+    @ApiModelProperty("客户信息")
+    private AppUserInfoVO appUserInfoVO;
+
+    @ApiModelProperty("会员支付前剩余余额")
+    private BigDecimal memberBeforeBalance;
+
+    @ApiModelProperty("会员变动金额")
+    private BigDecimal memberChangeAmount;
+
+    @ApiModelProperty("会员支付后剩余余额")
+    private BigDecimal memberAfterBalance;
+
+    @ApiModelProperty("订单明细")
+    private List<OrderClothItemVO> orderClothItemVOS;
+
+}

+ 141 - 0
yiqi-common/src/main/java/com/yiqi/order/domain/vo/OrderGoodsPrintVO.java

@@ -0,0 +1,141 @@
+package com.yiqi.order.domain.vo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.yiqi.app.domain.vo.AppUserInfoVO;
+import com.yiqi.app.domain.vo.AppUserVO;
+import com.yiqi.common.annotation.Excel;
+import com.yiqi.system.domain.SysStore;
+import com.yiqi.system.domain.vo.OrgVO;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 订单打印VO
+ *
+ * @author weiximei
+ * @date 2020-05-06
+ */
+@Data
+public class OrderGoodsPrintVO implements Serializable {
+    /**
+     * 主键ID
+     */
+    @ApiModelProperty("主键ID")
+    @TableId(type = IdType.AUTO)
+
+    private Long id;
+
+    /**
+     * 订单编号
+     */
+    @Excel(name = "订单编号")
+    @ApiModelProperty("订单编号")
+    private String orderNo;
+
+    /**
+     * 配送方式(0=到店自取,1=快递)
+     */
+    @Excel(name = "配送方式", readConverterExp = "0==到店自取,1=快递")
+    @ApiModelProperty("配送方式(0=到店自取,1=快递)")
+    private String deliveryWay;
+
+    /**
+     * 快递公司
+     */
+    @Excel(name = "快递公司")
+    @ApiModelProperty("快递公司")
+    private String deliveryCompany;
+
+    /**
+     * 快递单号
+     */
+    @Excel(name = "快递单号")
+    @ApiModelProperty("快递单号")
+    private String deliveryNo;
+
+    /**
+     * 订单总价
+     */
+    @Excel(name = "订单总价")
+    @ApiModelProperty("订单总价")
+    private BigDecimal totalPrice;
+
+    /**
+     * 抵扣金额
+     */
+    @Excel(name = "抵扣金额")
+    @ApiModelProperty("抵扣金额")
+    private BigDecimal deductAmount;
+
+    /**
+     * 抵扣积分
+     */
+    @Excel(name = "抵扣积分")
+    @ApiModelProperty("抵扣积分")
+    private Integer deductPoint;
+
+    /**
+     * 支付金额
+     */
+    @Excel(name = "支付金额")
+    @ApiModelProperty("支付金额")
+    private BigDecimal payAmount;
+
+    /**
+     * 支付时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @Excel(name = "支付时间", width = 30, dateFormat = "yyyy-MM-dd")
+    @ApiModelProperty("支付时间")
+    private Date payTime;
+
+    /**
+     * 发货时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @Excel(name = "发货时间", width = 30, dateFormat = "yyyy-MM-dd")
+    @ApiModelProperty("发货时间")
+    private Date sendTime;
+
+    /**
+     * 确认收货时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @Excel(name = "确认收货时间", width = 30, dateFormat = "yyyy-MM-dd")
+    @ApiModelProperty("确认收货时间")
+    private Date finishTime;
+
+    @ApiModelProperty("预约时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
+    private Date appointmentTime;
+
+    @ApiModelProperty("支付方式(0=微信,1=支付宝,2=现金,3=余额)")
+    private String payType;
+
+    @ApiModelProperty("创建时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createTime;
+
+    @ApiModelProperty("商品明细")
+    private List<OrderRetailGoodsSkuVO> orderGoodsSkuList;
+
+    @ApiModelProperty("客户信息")
+    private AppUserInfoVO appUserInfoVO;
+
+    @ApiModelProperty("会员支付前剩余余额")
+    private BigDecimal memberBeforeBalance;
+
+    @ApiModelProperty("会员变动金额")
+    private BigDecimal memberChangeAmount;
+
+    @ApiModelProperty("会员支付后剩余余额")
+    private BigDecimal memberAfterBalance;
+
+}

+ 44 - 0
yiqi-common/src/main/java/com/yiqi/order/domain/vo/OrderRechargePrintVO.java

@@ -0,0 +1,44 @@
+package com.yiqi.order.domain.vo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.yiqi.app.domain.vo.AppUserInfoVO;
+import com.yiqi.common.annotation.Excel;
+import com.yiqi.order.domain.OrderRecharge;
+import com.yiqi.system.domain.SysStore;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 订单打印VO
+ *
+ * @author weiximei
+ * @date 2020-05-06
+ */
+@Data
+public class OrderRechargePrintVO extends OrderRecharge {
+
+    /**
+     * 订单详情
+     */
+    @ApiModelProperty("衣服详情")
+    List<OrderClothItemVO> orderClothItemVOS;
+
+    @ApiModelProperty("客户信息")
+    private AppUserInfoVO appUserInfoVO;
+
+    @ApiModelProperty("会员支付前剩余余额")
+    private BigDecimal memberBeforeBalance;
+
+    @ApiModelProperty("会员变动金额")
+    private BigDecimal memberChangeAmount;
+
+    @ApiModelProperty("会员支付后剩余余额")
+    private BigDecimal memberAfterBalance;
+
+}

+ 17 - 1
yiqi-common/src/main/java/com/yiqi/order/service/IOrderClothItemService.java

@@ -30,7 +30,15 @@ public interface IOrderClothItemService extends IService<OrderClothItem> {
 
     public List<OrderClothItemVO> buildOrderClothItemDetail(List<OrderClothItem> orderClothItems);
 
-    public void outFactory(OrderClothItemOutFactoryDTO orderClothItemOutFactoryDTO) throws Exception;
+    /**
+     * 衣服出厂
+     *
+     * @param orderClothItemOutFactoryDTO
+     * @return
+     * @throws Exception
+     */
+    public List<OrderClothItem> outFactory(OrderClothItemOutFactoryDTO orderClothItemOutFactoryDTO) throws Exception;
+
 
     /**
      * 查询洗衣订单衣服明细
@@ -112,6 +120,14 @@ public interface IOrderClothItemService extends IService<OrderClothItem> {
      */
     List<OrderClothItemVO> queryClothItem(OrderClothItemQueryDTO orderClothItemQueryDTO);
 
+    /**
+     * 根据订单id查询 clothesItem
+     *
+     * @param orderId
+     * @return
+     */
+    List<OrderClothItemVO> queryClothItemByOrderId(String orderSn);
+
     /**
      * 修改所有 clothesItem 状态
      *

+ 1 - 7
yiqi-common/src/main/java/com/yiqi/order/service/IOrderClothService.java

@@ -142,14 +142,8 @@ public interface IOrderClothService extends IService<OrderCloth> {
      */
     public List<OrderClothAppointmentVO> getAppointmentClothOrderList(OrderAppointmentDTO2 orderAppointmentDTO2);
 
-    public OrderFinancialQueryVO listFinancialStatisticsByClothOrderDay(OrderFinancialDayQueryDTO orderFinancialDayQueryDTO);
-
-    public OrderFinancialQueryVO listFinancialStatisticsByClothOrderMonth(OrderFinancialMonthQueryDTO orderFinancialMonthQueryDTO);
-
-    OrderClothFactoryClothQueryVO listPayFinancialStatisticsByClothOrderFactory(OrderFinancialFactoryClothQueryDTO orderFinancialFactoryClothQueryDTO);
-
     /**
      * 检测订单状态 (对所有订单进行判断)
      */
-    void checkAllOrderStatus(Long orderClothId);
+    void checkAllOrderStatus(Long orderClothId, String orderStatus);
 }

+ 0 - 13
yiqi-common/src/main/java/com/yiqi/order/service/IOrderGoodsService.java

@@ -178,17 +178,4 @@ public interface IOrderGoodsService extends IService<OrderGoods> {
      */
     public OrderDeliveryPathVO getDeliveryPath(Long orderId) throws Exception;
 
-    List<OrderGoodsFinancialVO>  listFinancialStatisticsByGoodsOrderDay(OrderFinancialDayQueryDTO orderFinancialDayQueryDTO);
-
-    int  countFinancialStatisticsByGoodsOrderDay(OrderFinancialDayQueryDTO orderFinancialDayQueryDTO);
-
-    void  listFinancialStatisticsByGoodsOrderToday(OrderFinancialQueryVO orderFinancialQueryVO, OrderFinancialDayQueryDTO today);
-
-    void  listFinancialStatisticsByGoodsOrderMTD(OrderFinancialQueryVO orderFinancialQueryVO);
-
-    List<OrderGoodsFinancialVO> listFinancialStatisticsByGoodsOrderMonth(OrderFinancialMonthQueryDTO orderFinancialMonthQueryDTO);
-
-    Integer countFinancialStatisticsByGoodsOrderMonth(OrderFinancialMonthQueryDTO orderFinancialMonthQueryDTO);
-
-    //</editor-folder>
 }

+ 0 - 4
yiqi-common/src/main/java/com/yiqi/order/service/IOrderRechargeService.java

@@ -180,9 +180,5 @@ public interface IOrderRechargeService extends IService<OrderRecharge> {
      */
     public String handleCancelRecharge(String orderNo);
 
-    void  listFinancialStatisticsByRechargeOrderToday(OrderFinancialQueryVO orderFinancialQueryVO, OrderFinancialDayQueryDTO today);
-
-    void  listFinancialStatisticsByRechargeOrderMTD(OrderFinancialQueryVO orderFinancialQueryVO);
-
 
 }

+ 8 - 0
yiqi-common/src/main/java/com/yiqi/recharge/domain/RechargePasswordCard.java

@@ -4,6 +4,7 @@ import java.math.BigDecimal;
 import java.util.Date;
 
 import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.baomidou.mybatisplus.annotation.TableName;
@@ -199,4 +200,11 @@ public class RechargePasswordCard extends BaseEntity {
 
     @ApiModelProperty("是否支持汽车美容使用 Y是,N否")
     private String isSupportCar;
+
+    /**
+     * 充值卡总余额
+     */
+    @ApiModelProperty("充值卡总余额")
+    @TableField(exist = false)
+    private BigDecimal totalBalance;
 }

+ 1 - 1
yiqi-core/src/main/java/com/yiqi/core/service/impl/ClothHangerDetailServiceImpl.java

@@ -170,7 +170,7 @@ public class ClothHangerDetailServiceImpl extends ServiceImpl<ClothHangerDetailM
 
         // 当衣服全部上挂后 是否需要自动更新订单状态= 7 待取衣
         //判断所有衣服的状态,更新订单状态
-        orderClothService.checkAllOrderStatus(orderClothItem.getOrderId());
+        orderClothService.checkAllOrderStatus(orderClothItem.getOrderId(), ClothOrderStatusType.HAS_WASH.getCode());
         orderClothItemFlowRecordService.addRecord(orderClothItem, orderClothItem.getFlowStatus());
         return 1;
     }

+ 13 - 6
yiqi-core/src/main/java/com/yiqi/core/service/impl/GoodsInfoServiceImpl.java

@@ -130,10 +130,10 @@ public class GoodsInfoServiceImpl extends ServiceImpl<GoodsInfoMapper, GoodsInfo
         //如果是单规格
         if (goods.getSkuType() == 0) {
             GoodsSku goodsSku = new GoodsSku();
-            if(StringUtils.isNotBlank(goods.getGoodsCode())){
+            if (StringUtils.isNotBlank(goods.getGoodsCode())) {
                 goodsSku.setSkuCode(goods.getGoodsCode());
-            }else{
-                goodsSku.setSkuCode(goods.getId()+ RandomUtil.randomNumbers(6));
+            } else {
+                goodsSku.setSkuCode(goods.getId() + RandomUtil.randomNumbers(6));
             }
             goodsSku.setSalePrice(goods.getSingleSkuPrice());
             goodsSku.setCostPrice(goods.getSingleSkuCostPrice());
@@ -163,8 +163,8 @@ public class GoodsInfoServiceImpl extends ServiceImpl<GoodsInfoMapper, GoodsInfo
                 goodsSku.setSourceType(SourceType.MANAGER.getCode());
                 goodsSku.setStatus("0");
                 goodsSku.setDelFlag("0");
-                if(StringUtils.isBlank(goodsSku.getSkuCode())){
-                    goodsSku.setSkuCode(goods.getId()+ RandomUtil.randomNumbers(6));
+                if (StringUtils.isBlank(goodsSku.getSkuCode())) {
+                    goodsSku.setSkuCode(goods.getId() + RandomUtil.randomNumbers(6));
                 }
                 goodsSku.buildCreateData();
                 goodsSkuMapper.insert(goodsSku);
@@ -323,7 +323,14 @@ public class GoodsInfoServiceImpl extends ServiceImpl<GoodsInfoMapper, GoodsInfo
      */
     @Override
     public int deleteGoodsByIds(Long[] ids) {
-        return baseMapper.deleteGoodsByIds(ids);
+        for (Long id : ids) {
+            GoodsInfo goodsInfo = new GoodsInfo();
+            goodsInfo.setId(id);
+            goodsInfo.setDelFlag("2");
+            goodsInfo.buildUpdateData();
+            baseMapper.updateById(goodsInfo);
+        }
+        return 1;
     }
 
     /**

+ 2 - 1
yiqi-core/src/main/java/com/yiqi/core/service/impl/SettlementFactoryStatisticsServiceImpl.java

@@ -130,7 +130,8 @@ public class SettlementFactoryStatisticsServiceImpl implements ISettlementFactor
                 .eq(storeId != null, "org_id", storeId)
                 .ge("flow_status", 1)
                 .ge("in_factory_time", DateUtils.addDays(start, -2))
-                .le("in_factory_time", DateUtils.addDays(end, 2));
+                .le("in_factory_time", DateUtils.addDays(end, 2))
+                .ge("create_time", DateUtils.addDays(start, -5));
 
         List<OrderClothItem> clothItems = orderClothItemService.list(queryWrapper);
         if (CollUtil.isEmpty(clothItems)) {

+ 2 - 1
yiqi-core/src/main/java/com/yiqi/core/service/impl/SettlementManageBillServiceImpl.java

@@ -157,7 +157,8 @@ public class SettlementManageBillServiceImpl extends ServiceImpl<SettlementManag
                 ClothOrderStatusType.WAITING_TO_SEND.getCode(),
                 ClothOrderStatusType.WAITING_FOR_HANG.getCode(),
                 ClothOrderStatusType.SENDING.getCode(),
-                ClothOrderStatusType.FINISH.getCode()
+                ClothOrderStatusType.FINISH.getCode(),
+                ClothOrderStatusType.REFUND_SUCCESS.getCode()
         );
         List<OrderCloth> orderClothList = orderClothService.list(new QueryWrapper<OrderCloth>().lambda()
                 .in(OrderCloth::getOrderStatus, orderStatuss)

+ 0 - 6
yiqi-core/src/main/java/com/yiqi/core/service/impl/SettlementStoreStatisticsServiceImpl.java

@@ -85,11 +85,6 @@ public class SettlementStoreStatisticsServiceImpl extends ServiceImpl<Settlement
         return baseMapper.orderStatistics(storeId, startDay, endDay);
     }
 
-    @Override
-    public StoreChargeStatistics generateChargeStatistics(Long storeId, Date start, Date end) {
-        return null;
-    }
-
     @Override
     public List<SettlementStoreStatistics> generatePlatformStatisticsByDate(Date start, Date end) {
         Integer startDay = Integer.parseInt(DateUtil.format(start, "yyyyMMdd"));
@@ -400,7 +395,6 @@ public class SettlementStoreStatisticsServiceImpl extends ServiceImpl<Settlement
         BigDecimal wxPayAmount = BigDecimal.ZERO;
         BigDecimal aliPayAmount = BigDecimal.ZERO;
         BigDecimal cashPayAmount = BigDecimal.ZERO;
-        BigDecimal memberPayAmount = BigDecimal.ZERO;
         BigDecimal passwordCardAmount = BigDecimal.ZERO;
 
         for (OrderRecharge recharge : rechargeList) {

+ 0 - 22
yiqi-core/src/main/java/com/yiqi/order/mapper/OrderClothMapper.java

@@ -82,26 +82,4 @@ public interface OrderClothMapper extends BaseMapper<OrderCloth> {
      */
     public List<OrderClothAppointmentVO> getAppointmentClothOrderList(OrderAppointmentDTO2 orderAppointmentDTO2);
 
-    public List<OrderClothFinancialVO>  listFinancialStatisticsByClothOrderDay(@Param("orderFinancialDayQueryDTO") OrderFinancialDayQueryDTO orderFinancialDayQueryDTO,
-                                                                               @Param("orgId") Long orgId,
-                                                                               @Param("sourceType") String sourceType);
-
-    public Integer countFinancialStatisticsByClothOrderDay(@Param("orderFinancialDayQueryDTO") OrderFinancialDayQueryDTO orderFinancialDayQueryDTO,
-                                                           @Param("orgId") Long orgId,
-                                                           @Param("sourceType") String sourceType);
-
-    public List<OrderClothFinancialVO> listFinancialStatisticsByClothOrderToday(@Param("orderFinancialDayQueryDTO") OrderFinancialDayQueryDTO orderFinancialDayQueryDTO,
-                                                                                @Param("orgId") Long orgId,
-                                                                                @Param("sourceType") String sourceType);
-
-    public List<OrderClothFinancialVO> listFinancialStatisticsByClothOrderMTD(@Param("orgId") Long orgId,
-                                                                              @Param("sourceType") String sourceType);
-
-    List<OrderClothFinancialVO> listFinancialStatisticsByClothOrderMonth(@Param("orderFinancialMonthQueryDTO") OrderFinancialMonthQueryDTO orderFinancialMonthQueryDTO,
-                                                                         @Param("orgId") Long orgId,
-                                                                         @Param("sourceType") String sourceType);
-
-    Integer countFinancialStatisticsByClothOrderMonth(@Param("orderFinancialMonthQueryDTO") OrderFinancialMonthQueryDTO orderFinancialMonthQueryDTO,
-                                                      @Param("orgId") Long orgId,
-                                                      @Param("sourceType") String sourceType);
 }

+ 0 - 25
yiqi-core/src/main/java/com/yiqi/order/mapper/OrderGoodsMapper.java

@@ -58,29 +58,4 @@ public interface OrderGoodsMapper extends BaseMapper<OrderGoods> {
      */
     public List<AppGoodsOrderInfoQueryVO> getGoodsOrderListByApp(AppGoodsOrderInfoQueryDTO appGoodsOrderInfoQueryDTO);
 
-    public List<OrderGoodsFinancialVO>  listFinancialStatisticsByGoodsOrderDay(@Param("orderFinancialDayQueryDTO") OrderFinancialDayQueryDTO orderFinancialDayQueryDTO,
-                                                                               @Param("orgId") Long orgId,
-                                                                               @Param("sourceType") String sourceType);
-
-    int  countFinancialStatisticsByGoodsOrderDay(@Param("orderFinancialDayQueryDTO") OrderFinancialDayQueryDTO orderFinancialDayQueryDTO,
-                                                 @Param("orgId") Long orgId,
-                                                 @Param("sourceType") String sourceType);
-
-
-    public List<OrderGoodsFinancialVO> listFinancialStatisticsByGoodsOrderToday(@Param("orderFinancialDayQueryDTO") OrderFinancialDayQueryDTO orderFinancialDayQueryDTO,
-                                                                                @Param("orgId") Long orgId,
-                                                                                @Param("sourceType") String sourceType);
-
-
-    public List<OrderGoodsFinancialVO> listFinancialStatisticsByGoodsOrderMTD(@Param("orgId") Long orgId, @Param("sourceType") String sourceType);
-
-
-    List<OrderGoodsFinancialVO> listFinancialStatisticsByGoodsOrderMonth(@Param("orderFinancialMonthQueryDTO") OrderFinancialMonthQueryDTO orderFinancialMonthQueryDTO,
-                                                                         @Param("orgId") Long orgId,
-                                                                         @Param("sourceType") String sourceType);
-
-    Integer countFinancialStatisticsByGoodsOrderMonth(@Param("orderFinancialMonthQueryDTO") OrderFinancialMonthQueryDTO orderFinancialMonthQueryDTO,
-                                                      @Param("orgId") Long orgId,
-                                                      @Param("sourceType") String sourceType);
-    //</editor-folder>
 }

+ 0 - 5
yiqi-core/src/main/java/com/yiqi/order/mapper/OrderRechargeMapper.java

@@ -105,9 +105,4 @@ public interface OrderRechargeMapper extends BaseMapper<OrderRecharge> {
      */
     public List<OrderRechargeRecordVO> getRechargeRecordByUserId (Long useId);
 
-    public List<OrderRechargeFinancialVO> listFinancialStatisticsByRechargeOrderToday(@Param("orderFinancialDayQueryDTO") OrderFinancialDayQueryDTO orderFinancialDayQueryDTO,
-                                                                                      @Param("orgId") Long orgId,
-                                                                                      @Param("sourceType") String sourceType);
-
-    public List<OrderRechargeFinancialVO> listFinancialStatisticsByRechargeOrderMTD(@Param("orgId") Long orgId, @Param("sourceType") String sourceType);
 }

+ 1 - 1
yiqi-core/src/main/java/com/yiqi/order/service/impl/OrderClothAdjunctServiceImpl.java

@@ -123,7 +123,7 @@ public class OrderClothAdjunctServiceImpl extends ServiceImpl<OrderClothAdjunctM
             String errorMsg = "";
             for (OrderClothAdjunct orderClothItem : orderClothItems) {
                 errorMsg += (StringUtils.isEmpty(errorMsg)
-                        ? ("衣服编号" + orderClothItem.getAdjunctNo()) : ("," + orderClothItem.getAdjunctNo()));
+                        ? ("附件编号" + orderClothItem.getAdjunctNo()) : ("," + orderClothItem.getAdjunctNo()));
             }
             errorMsg += "洗衣状态不正确,请重新选择";
             throw new ServiceException(errorMsg);

+ 50 - 10
yiqi-core/src/main/java/com/yiqi/order/service/impl/OrderClothItemServiceImpl.java

@@ -6,7 +6,9 @@ import java.util.stream.Collectors;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.github.pagehelper.PageInfo;
 import com.qcloud.cos.common_utils.CommonFileUtils;
+import com.yiqi.common.enums.SourceType;
 import com.yiqi.common.exception.ServiceException;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.yiqi.app.domain.AppUser;
@@ -26,6 +28,7 @@ import com.yiqi.order.domain.*;
 import com.yiqi.order.domain.dto.*;
 import com.yiqi.order.domain.vo.*;
 import com.yiqi.order.service.*;
+import com.yiqi.system.domain.SysOrg;
 import com.yiqi.system.service.ISysOrgService;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -144,35 +147,32 @@ public class OrderClothItemServiceImpl extends ServiceImpl<OrderClothItemMapper,
     }
 
     @Override
-    public void outFactory(OrderClothItemOutFactoryDTO orderClothItemOutFactoryDTO) throws Exception {
+    public List<OrderClothItem> outFactory(OrderClothItemOutFactoryDTO orderClothItemOutFactoryDTO) throws Exception {
         /**
          * 先进行验证,如果这批ID里,有状态不符合的,查出来
          */
         List<OrderClothItem> orderClothItems = list(new QueryWrapper<OrderClothItem>().lambda()
-                .in(OrderClothItem::getId, orderClothItemOutFactoryDTO.getIds())
-                .eq(OrderClothItem::getFactoryId, SecurityUtils.getLoginUser().getOrgId())
-                .ne(OrderClothItem::getFlowStatus, ClothOrderFlowStatus.checkCloth.getCode()));
-        if (orderClothItems.size() > 0) {
+                .in(OrderClothItem::getId, orderClothItemOutFactoryDTO.getIds()));
+        List<OrderClothItem> errorOrderClothItems = orderClothItems.stream().filter(orderClothItem -> !orderClothItem.getFlowStatus().equals(ClothOrderFlowStatus.checkCloth.getCode())).collect(Collectors.toList());
+        if (errorOrderClothItems.size() > 0) {
             String errorMsg = "";
-            for (OrderClothItem orderClothItem : orderClothItems) {
+            for (OrderClothItem orderClothItem : errorOrderClothItems) {
                 errorMsg += (StringUtils.isEmpty(errorMsg)
                         ? ("衣服编号" + orderClothItem.getWashCode()) : ("," + orderClothItem.getWashCode()));
             }
             errorMsg += "洗衣状态不正确,请重新选择";
             throw new ServiceException(errorMsg);
         }
-
         update(new UpdateWrapper<OrderClothItem>().lambda().set(OrderClothItem::getFlowStatus
                         , ClothOrderFlowStatus.outFactory.getCode())
                 .set(OrderClothItem::getOutFactoryTime, DateUtils.getNowDate())
                 .set(OrderClothItem::getOutFactoryById, AuthHolder.userId())
                 .set(OrderClothItem::getOutFactoryBy, AuthHolder.nickName())
                 .in(OrderClothItem::getId, orderClothItemOutFactoryDTO.getIds())
-                .eq(OrderClothItem::getFactoryId, SecurityUtils.getLoginUser().getOrgId())
                 .eq(OrderClothItem::getFlowStatus, ClothOrderFlowStatus.checkCloth.getCode()));
-
         orderClothItemFlowRecordService.addRecordBatch(orderClothItemService.list(new QueryWrapper<OrderClothItem>().lambda()
                 .in(OrderClothItem::getId, orderClothItemOutFactoryDTO.getIds())), ClothOrderFlowStatus.outFactory.getCode());
+        return orderClothItems;
     }
 
     /**
@@ -343,6 +343,46 @@ public class OrderClothItemServiceImpl extends ServiceImpl<OrderClothItemMapper,
         return baseMapper.queryClothItem(orderClothItemQueryDTO);
     }
 
+    @Override
+    public List<OrderClothItemVO> queryClothItemByOrderId(String orderSn) {
+        OrderClothItemQueryDTO orderClothItemQueryDTO = new OrderClothItemQueryDTO();
+        orderClothItemQueryDTO.setOrderNo(orderSn);
+        List<OrderClothItemVO> orderClothItemVOList = orderClothItemService.queryClothItem(orderClothItemQueryDTO);
+        Set<Long> orderClothItemIds = orderClothItemVOList.stream().map(OrderClothItemVO::getId).collect(Collectors.toSet());
+        Map<Long, List<OrderClothAdjunct>> orderClothAdjunctMap = orderClothAdjunctService.list(
+                        new QueryWrapper<OrderClothAdjunct>().lambda().in(OrderClothAdjunct::getOrderClothId, orderClothItemIds))
+                .stream().collect(Collectors.groupingBy(OrderClothAdjunct::getOrderClothId));
+        Map<Long, List<OrderClothColor>> orderClothColorMap = orderClothColorService.list(
+                        new QueryWrapper<OrderClothColor>().lambda().in(OrderClothColor::getOrderClothId, orderClothItemIds))
+                .stream().collect(Collectors.groupingBy(OrderClothColor::getOrderClothId));
+        Map<Long, List<OrderClothCraft>> orderClothCraftMap = orderClothCraftService.list(
+                        new QueryWrapper<OrderClothCraft>().lambda().in(OrderClothCraft::getOrderClothId, orderClothItemIds))
+                .stream().collect(Collectors.groupingBy(OrderClothCraft::getOrderClothId));
+        Map<Long, List<OrderClothFlaw>> orderClothFlawMap = orderClothFlawService.list(
+                        new QueryWrapper<OrderClothFlaw>().lambda().in(OrderClothFlaw::getOrderClothId, orderClothItemIds))
+                .stream().collect(Collectors.groupingBy(OrderClothFlaw::getOrderClothId));
+        Map<Long, List<OrderClothType>> orderClothTypeMap = orderClothTypeService.list(
+                        new QueryWrapper<OrderClothType>().lambda().in(OrderClothType::getOrderClothId, orderClothItemIds))
+                .stream().collect(Collectors.groupingBy(OrderClothType::getOrderClothId));
+
+        List<OrderClothItemVO> orderClothItemVOS = new ArrayList<>();
+        for (OrderClothItemVO orderClothItemVO : orderClothItemVOList) {
+            orderClothItemVO.setOrderClothAdjuncts(orderClothAdjunctMap.get(orderClothItemVO.getId()));
+            orderClothItemVO.setOrderClothColors(orderClothColorMap.get(orderClothItemVO.getId()));
+            orderClothItemVO.setOrderClothCrafts(orderClothCraftMap.get(orderClothItemVO.getId()));
+            orderClothItemVO.setOrderClothFlaws(orderClothFlawMap.get(orderClothItemVO.getId()));
+            orderClothItemVO.setOrderClothTypes(orderClothTypeMap.get(orderClothItemVO.getId()));
+            if (orderClothItemVO.getPlanSendClothTime() != null) {
+                if (orderClothItemVO.getPlanSendClothTime().getTime() < DateUtils.getNowDate().getTime()) {
+                    orderClothItemVO.setTimeoutDayNum((DateUtils.getNowDate().getTime()
+                            - orderClothItemVO.getPlanSendClothTime().getTime()) / (24 * 3600 * 1000) + 1);
+                }
+            }
+            orderClothItemVOS.add(orderClothItemVO);
+        }
+        return orderClothItemVOS;
+    }
+
     @Override
     public void updateAllClothItemStatusByOrderId(Long clothOrderId, String flawStatus) {
         baseMapper.updateAllClothItemStatusByOrderId(clothOrderId, flawStatus);
@@ -353,7 +393,7 @@ public class OrderClothItemServiceImpl extends ServiceImpl<OrderClothItemMapper,
         Boolean result = true;
         List<OrderClothItem> orderClothItems = baseMapper.checkClothItemStatus(clothOrderId, flawStatus);
         for (OrderClothItem orderClothItem : orderClothItems) {
-            if (Integer.valueOf(orderClothItem.getFlowStatus()) < Integer.valueOf(flawStatus)) {
+            if (Integer.valueOf(orderClothItem.getFlowStatus()) < Integer.valueOf(flawStatus) || Integer.valueOf(orderClothItem.getFlowStatus()) > 5) {
                 result = false;
             }
         }

+ 44 - 222
yiqi-core/src/main/java/com/yiqi/order/service/impl/OrderClothServiceImpl.java

@@ -170,8 +170,8 @@ public class OrderClothServiceImpl extends ServiceImpl<OrderClothMapper, OrderCl
         if (ClothOrderPayTimeType.take_cloth_pay.getCode().equals(orderCloth.getPayTimeType())) {//收衣付款
             orderCloth.setOrderStatus(ClothOrderStatusType.WAIT_FACTORY.getCode());
         } else {
-            //取衣付款
-            orderCloth.setOrderStatus(ClothOrderStatusType.WAITING_TO_SEND.getCode());
+            //取衣付款,不影响订单状态
+//            orderCloth.setOrderStatus(ClothOrderStatusType.WAITING_FOR_HANG.getCode());
         }
         orderCloth.setRefundAmount(BigDecimal.ZERO);
         orderCloth.setPayStatus(PayStatus.HAS_PAY.getCode());
@@ -220,8 +220,7 @@ public class OrderClothServiceImpl extends ServiceImpl<OrderClothMapper, OrderCl
         if (orderCloth.getRefundStatus() == OrderRefundStatus.REFUND_SUCCESS.getCode()) {//退款状态不正确,直接跳过
             return R.ok();
         }
-
-        orderCloth.setOrderStatus(ClothOrderStatusType.CANCEL.getCode());
+        orderCloth.setOrderStatus(ClothOrderStatusType.REFUND_SUCCESS.getCode());
         orderCloth.setRefundTime(DateUtils.getNowDate());
         orderCloth.setRefundStatus(OrderRefundStatus.REFUND_SUCCESS.getCode());
         updateById(orderCloth);
@@ -254,7 +253,6 @@ public class OrderClothServiceImpl extends ServiceImpl<OrderClothMapper, OrderCl
         if (orderCloth == null) {
             throw new ServiceException("未查询到订单");
         }
-
         orderCloth.setRefundStatus(OrderRefundStatus.ERROR.getCode());
         updateById(orderCloth);
         return R.ok();
@@ -344,6 +342,7 @@ public class OrderClothServiceImpl extends ServiceImpl<OrderClothMapper, OrderCl
             orderCloth.setAppUserId(orderClothDTO.getAppUserId());
             //新建为到店收衣方式
             orderCloth.setTakeClothWay(TakeOrSendClothWay.TOSTORE.getCode());
+            orderCloth.setSendClothWay(TakeOrSendClothWay.TOSTORE.getCode());
             //门店新建的订单
             orderCloth.setOrderType(ClothOrderType.normal.getCode());
             buildAppUserInfoOrder(orderCloth);
@@ -420,14 +419,23 @@ public class OrderClothServiceImpl extends ServiceImpl<OrderClothMapper, OrderCl
         if (Integer.parseInt(orderCloth.getRefundStatus()) > 0) {
             throw new ServiceException("请勿重复申请");
         }
-        if (Integer.parseInt(orderCloth.getOrderStatus()) >= 6) {
-            throw new ServiceException("订单已入厂状态不允许退款");
+        if (Integer.parseInt(orderCloth.getOrderStatus()) >= Integer.parseInt(ClothOrderStatusType.WASHING.getCode())) {
+            throw new ServiceException("订单已入厂,不允许退款");
+        }
+        //如果有某个衣服已经是已入厂的情况,也不允许退款
+        //todo
+        //如果用户是且未支付情况下,则直接撤销成功,不生成退款订单,否则要生成退款单
+        if (orderCloth.getPayStatus().equals(PayStatus.WAITING_TO_PAY.getCode())) {
+            orderCloth.setOrderStatus(ClothOrderStatusType.CANCEL.getCode());
+            orderCloth.buildUpdateData();
+            updateById(orderCloth);
+            return;
         }
         OrderClothRefund orderClothRefund = new OrderClothRefund();
         BeanUtils.copyProperties(orderCloth, orderClothRefund);
         orderClothRefund.setId(null);
         orderClothRefund.setRefundNo(orderNoUtils.getClothOrderNo());
-        orderClothRefund.setRefundAmount(orderCloth.getRefundAmount());
+        orderClothRefund.setRefundAmount(orderCloth.getPayAmount());
         orderClothRefund.setRefundApplyTime(DateUtils.getNowDate());
         orderClothRefund.setRefundReason(remark);
         orderClothRefund.setRefundStatus(OrderRefundStatus.REFUND_APPLYING.getCode());
@@ -448,10 +456,12 @@ public class OrderClothServiceImpl extends ServiceImpl<OrderClothMapper, OrderCl
             orderClothItemService.updateById(orderClothItem);
         });
 
-        //执行退款逻辑
+        //如果是现金支付,执行退款逻辑
         if (orderCloth.getPayType().equals(PayType.CASH.getCode())) {
             refundSuccess(orderClothRefund.getRefundNo(), orderCloth.getOrderNo());
+            return;
         }
+
         if (orderCloth.getPayType().equals(PayType.BALANCE.getCode())) {
             //充值卡支付退单
             Boolean res = rechargePasswordCardService.orderRefundByBalance(orderClothRefund.getOrderNo(), orderClothRefund.getRefundAmount());
@@ -813,10 +823,10 @@ public class OrderClothServiceImpl extends ServiceImpl<OrderClothMapper, OrderCl
             orderClothItem.setIsCustomPrice(orderClothItemDTO.getIsCustomPrice());
             orderClothItem.setSpecialPrice(buildOrderClothItemSpecialPrice(orderClothItemDTO, clothSpeedMap.get(orderClothItemDTO.getClothSpeedId())));
             orderClothItem.setTotalPrice(orderClothItem.getPrice().add(orderClothItem.getSpecialPrice()));
-            if (SysBoolType.YES.getCode().equals(orderClothItem.getIsHedging())) {
-                orderClothItem.setTotalPrice(orderClothItem.getTotalPrice().add(orderClothItem.getHedgingPrice()
-                        .multiply(new BigDecimal(sysConfigService.selectConfigByKey(SysConfigKey.OrderClothHedgingRate.getCode())))));
-            }
+//            if (SysBoolType.YES.getCode().equals(orderClothItem.getIsHedging())) {
+//                orderClothItem.setTotalPrice(orderClothItem.getTotalPrice().add(orderClothItem.getHedgingPrice()
+//                        .multiply(new BigDecimal(sysConfigService.selectConfigByKey(SysConfigKey.OrderClothHedgingRate.getCode())))));
+//            }
             orderClothItem.setPayPrice(orderClothItem.getTotalPrice());
             orderClothItem.setRemark(orderClothItemDTO.getRemark());
             orderClothItem.buildCreateData();
@@ -1140,197 +1150,28 @@ public class OrderClothServiceImpl extends ServiceImpl<OrderClothMapper, OrderCl
         return orderClothAppointmentVOList;
     }
 
-    /**
-     * 财务统计-经营日报-衣服订单
-     *
-     * @param orderFinancialDayQueryDTO
-     * @return
-     */
     @Override
-    public OrderFinancialQueryVO listFinancialStatisticsByClothOrderDay(OrderFinancialDayQueryDTO orderFinancialDayQueryDTO) {
-        OrderFinancialQueryVO orderFinancialQueryVO = new OrderFinancialQueryVO();
-        OrderFinancialDayQueryDTO today = new OrderFinancialDayQueryDTO();
-        today.setBeginCreateTime(DateUtils.getDate());
-        today.setEndCreateTime(DateUtils.getDate());
-        // 统计今日洗衣数据
-        this.handleTodayDataByClothOrder(orderFinancialQueryVO, today);
-        // 统计今日商品数据
-        this.handleTodayDataByGoodsOrder(orderFinancialQueryVO, today);
-        // 统计今日充值数据
-        this.handleTodayDataByRechargeOrder(orderFinancialQueryVO, today);
-        // 查询列表数据
-        this.handleListDataByDay(orderFinancialQueryVO, orderFinancialDayQueryDTO);
-        return orderFinancialQueryVO;
-    }
-
-    private void handleTodayDataByClothOrder(OrderFinancialQueryVO orderFinancialQueryVO, OrderFinancialDayQueryDTO today) {
-        // 查询今日洗衣订单
-        List<OrderClothFinancialVO> todayData = baseMapper.listFinancialStatisticsByClothOrderToday(today,
-                SecurityUtils.getLoginUser().getOrgId(),
-                SecurityUtils.getLoginUser().getSourceType());
-        this.buildClothData(orderFinancialQueryVO, todayData);
-    }
-
-    private void buildClothData(OrderFinancialQueryVO orderFinancialQueryVO, List<OrderClothFinancialVO> data) {
-        if (CollUtil.isEmpty(data)) {
-            orderFinancialQueryVO.setTodayOrderAmount(BigDecimal.ZERO);
-            orderFinancialQueryVO.setTodayOnlinePayAmount(BigDecimal.ZERO);
-            orderFinancialQueryVO.setTodayCardAmount(BigDecimal.ZERO);
-            orderFinancialQueryVO.setTodayCashAmount(BigDecimal.ZERO);
-            orderFinancialQueryVO.setTodayCouponAmount(BigDecimal.ZERO);
-            orderFinancialQueryVO.setTodayOrderClothCount(0);
-            return;
-        }
-        // 今日订单金额
-        orderFinancialQueryVO.setTodayOrderAmount(data.stream()
-                .map(OrderClothFinancialVO::getOrderAmount)
-                .filter(Objects::nonNull)
-                .reduce(BigDecimal.ZERO, BigDecimal::add));
-        // 今日券消费
-        orderFinancialQueryVO.setTodayCouponAmount(data.stream()
-                .map(OrderClothFinancialVO::getCouponDeductAmount)
-                .filter(Objects::nonNull)
-                .reduce(BigDecimal.ZERO, BigDecimal::add));
-        // 今日现金消费
-        orderFinancialQueryVO.setTodayCashAmount(data.stream()
-                .filter(vo -> PayType.CASH.getCode().equals(vo.getPayType()))
-                .map(OrderClothFinancialVO::getPayAmount)
-                .filter(Objects::nonNull)
-                .reduce(BigDecimal.ZERO, BigDecimal::add));
-        // 今日会员卡消费
-        orderFinancialQueryVO.setTodayCardAmount(data.stream()
-                .filter(vo -> PayType.BALANCE.getCode().equals(vo.getPayType()))
-                .map(OrderClothFinancialVO::getPayAmount)
-                .filter(Objects::nonNull)
-                .reduce(BigDecimal.ZERO, BigDecimal::add));
-        // 今日支付宝/微信消费
-        orderFinancialQueryVO.setTodayOnlinePayAmount(data.stream()
-                .filter(vo -> PayType.WECHAT.getCode().equals(vo.getPayType()) || PayType.ALIPAY.getCode().equals(vo.getPayType()))
-                .map(OrderClothFinancialVO::getPayAmount)
-                .filter(Objects::nonNull)
-                .reduce(BigDecimal.ZERO, BigDecimal::add));
-        // 今日收衣件数
-        orderFinancialQueryVO.setTodayOrderClothCount(data.stream()
-                .map(OrderClothFinancialVO::getOrderClothCount)
-                .filter(Objects::nonNull)
-                .reduce(0, Integer::sum));
-    }
-
-    private void handleTodayDataByRechargeOrder(OrderFinancialQueryVO orderFinancialQueryVO, OrderFinancialDayQueryDTO today) {
-        orderRechargeService.listFinancialStatisticsByRechargeOrderToday(orderFinancialQueryVO, today);
-    }
-
-    private void handleTodayDataByGoodsOrder(OrderFinancialQueryVO orderFinancialQueryVO, OrderFinancialDayQueryDTO today) {
-        // 查询今日商品订单
-        orderGoodsService.listFinancialStatisticsByGoodsOrderToday(orderFinancialQueryVO, today);
-    }
-
-    private void handleListDataByDay(OrderFinancialQueryVO orderFinancialQueryVO, OrderFinancialDayQueryDTO orderFinancialDayQueryDTO) {
-        // 查询洗衣列表数据
-        List<OrderClothFinancialVO> clothFinancialVOS = baseMapper.listFinancialStatisticsByClothOrderDay(orderFinancialDayQueryDTO,
-                SecurityUtils.getLoginUser().getOrgId(),
-                SecurityUtils.getLoginUser().getSourceType());
-        orderFinancialQueryVO.setOrderClothFinancialVOList(clothFinancialVOS);
-        orderFinancialQueryVO.setClothTotal(baseMapper.countFinancialStatisticsByClothOrderDay(orderFinancialDayQueryDTO,
-                SecurityUtils.getLoginUser().getOrgId(),
-                SecurityUtils.getLoginUser().getSourceType()));
-
-        // 查询商品列表数据
-        List<OrderGoodsFinancialVO> goodsFinancialVOS = orderGoodsService.listFinancialStatisticsByGoodsOrderDay(orderFinancialDayQueryDTO);
-        orderFinancialQueryVO.setGoodsOrderFinancialVOList(goodsFinancialVOS);
-        orderFinancialQueryVO.setGoodsTotal(orderGoodsService.countFinancialStatisticsByGoodsOrderDay(orderFinancialDayQueryDTO));
-    }
-
-    /**
-     * 财务统计-经营月报-衣服订单
-     *
-     * @param orderFinancialMonthQueryDTO
-     * @return
-     */
-    @Override
-    public OrderFinancialQueryVO listFinancialStatisticsByClothOrderMonth(OrderFinancialMonthQueryDTO orderFinancialMonthQueryDTO) {
-        OrderFinancialQueryVO orderFinancialQueryVO = new OrderFinancialQueryVO();
-        // 统计本月洗衣数据
-        this.handleMtdDataByClothOrder(orderFinancialQueryVO);
-        // 统计本月商品数据
-        this.handleMtdDataByGoodsOrder(orderFinancialQueryVO);
-        // 统计本月充值数据
-        this.handleMtdDataByRechargeOrder(orderFinancialQueryVO);
-        // 查询列表数据
-        this.handleListDataByMonth(orderFinancialQueryVO, orderFinancialMonthQueryDTO);
-
-        return orderFinancialQueryVO;
-    }
-
-    /**
-     * 财务统计-工厂洗衣明细统计-衣服订单
-     */
-    @Override
-    public OrderClothFactoryClothQueryVO listPayFinancialStatisticsByClothOrderFactory(OrderFinancialFactoryClothQueryDTO orderFinancialFactoryClothQueryDTO) {
-        OrderClothFactoryClothQueryVO orderClothFactoryClothQueryVO = new OrderClothFactoryClothQueryVO();
-        Long orgId = SecurityUtils.getLoginUser().getOrgId();
-        String sourceType = SecurityUtils.getLoginUser().getSourceType();
-        // 设置查询条件
-        LambdaQueryWrapper<OrderClothItem> queryWrapper = new QueryWrapper<OrderClothItem>().lambda()
-                .eq(OrderClothItem::getOrgId, orgId)
-                .eq(OrderClothItem::getSourceType, sourceType)
-                .ne(OrderClothItem::getFlowStatus, ClothOrderFlowStatus.refund.getCode())
-                .orderByDesc(BaseEntity::getCreateTime);
-        if (orderFinancialFactoryClothQueryDTO.getBeginCreateTime() != null && orderFinancialFactoryClothQueryDTO.getEndCreateTime() != null) {
-            queryWrapper.ge(BaseEntity::getCreateTime, orderFinancialFactoryClothQueryDTO.getBeginCreateTime());
-            queryWrapper.lt(BaseEntity::getCreateTime, DateUtils.addDays(orderFinancialFactoryClothQueryDTO.getEndCreateTime(), 1));
-        }
-        if (orderFinancialFactoryClothQueryDTO.getFactoryId() != null) {
-            queryWrapper.eq(OrderClothItem::getFactoryId, orderFinancialFactoryClothQueryDTO.getFactoryId());
-        }
-        queryWrapper.orderByDesc(BaseEntity::getCreateTime);
-        // 设置统计明细 全量数据,不用加limit
-        List<OrderClothItem> orderClothItemAll = orderClothItemService.list(queryWrapper);
-        if (CollUtil.isNotEmpty(orderClothItemAll)) {
-            // 设置 总计消费金额
-            orderClothFactoryClothQueryVO.setTotalPayMoney(orderClothItemAll.stream()
-                    .map(OrderClothItem::getTotalPrice)
-                    .filter(Objects::nonNull)
-                    .reduce(BigDecimal.ZERO, BigDecimal::add));
-            // 设置 总件数
-            orderClothFactoryClothQueryVO.setTotalOrderClothCount(orderClothItemAll.size());
-            orderClothFactoryClothQueryVO.setTotal(orderClothItemAll.size());
-        }
-        // 设置列表分页
-        queryWrapper.last("limit " + orderFinancialFactoryClothQueryDTO.getStartRow() + "," + orderFinancialFactoryClothQueryDTO.getPageSize());
-        List<OrderClothItem> orderClothItems = orderClothItemService.list(queryWrapper);
-        if (CollUtil.isEmpty(orderClothItems)) {
-            return orderClothFactoryClothQueryVO;
-        }
-        List<OrderClothFactoryClothItemVO> orderClothFactoryClothItemVOList = new ArrayList<>();
-        for (OrderClothItem orderClothItem : orderClothItems) {
-            // 设置门店的工厂费率
-            OrderClothFactoryClothItemVO vo = new OrderClothFactoryClothItemVO();
-            BeanUtils.copyProperties(orderClothItem, vo);
-            orderClothFactoryClothItemVOList.add(vo);
-        }
-        orderClothFactoryClothQueryVO.setOrderClothFactoryClothItemVOList(orderClothFactoryClothItemVOList);
-        return orderClothFactoryClothQueryVO;
-    }
-
-    @Override
-    public void checkAllOrderStatus(Long orderClothId) {
+    public void checkAllOrderStatus(Long orderClothId, String orderStatus) {
         LambdaQueryWrapper<OrderCloth> queryWrapper = new QueryWrapper<OrderCloth>().lambda()
                 .eq(OrderCloth::getDelFlag, DeleteStatus.OK.getCode())
                 .eq(orderClothId != null, OrderCloth::getId, orderClothId)
                 .ne(OrderCloth::getRefundStatus, OrderRefundStatus.REFUND_SUCCESS.getCode());
         //查询一个月内的数据
-        queryWrapper.ge(BaseEntity::getCreateTime, DateUtils.addDays(new Date(), -20));
+        queryWrapper.ge(BaseEntity::getCreateTime, DateUtils.addDays(new Date(), -10));
         // 1. 查询洗衣订单
         List<String> orderStatuss = CollUtil.newArrayList(
                 ClothOrderStatusType.WAIT_FACTORY.getCode(),
                 ClothOrderStatusType.WASHING.getCode(),
-                ClothOrderStatusType.HAS_WASH.getCode()
+                ClothOrderStatusType.HAS_WASH.getCode(),
+                ClothOrderStatusType.WAITING_FOR_HANG.getCode()
         );
         queryWrapper.in(OrderCloth::getOrderStatus, orderStatuss);
         List<OrderCloth> orderCloths = baseMapper.selectList(queryWrapper);
         for (OrderCloth orderCloth : orderCloths) {
-            if (orderCloth.getOrderStatus().equals(ClothOrderStatusType.WAIT_FACTORY.getCode())) {
+            if (orderStatus == null) {
+                orderStatus = orderCloth.getOrderStatus();
+            }
+            if (orderStatus.equals(ClothOrderStatusType.WAIT_FACTORY.getCode())) {
                 //待入厂,判断所有的衣服和附件是否都已经入厂,如果都入厂,则改变状态
                 Boolean res = orderClothItemService.checkClothItemStatus(orderCloth.getId(), ClothOrderFlowStatus.inFactory.getCode());
                 if (res) {
@@ -1341,7 +1182,7 @@ public class OrderClothServiceImpl extends ServiceImpl<OrderClothMapper, OrderCl
                     baseMapper.updateById(orderClothUpdate);
                 }
             }
-            if (orderCloth.getOrderStatus().equals(ClothOrderStatusType.WASHING.getCode())) {
+            if (orderStatus.equals(ClothOrderStatusType.WASHING.getCode())) {
                 //待入厂,判断所有的衣服和附件是否都已经入厂,如果都入厂,则改变状态
                 Boolean res = orderClothItemService.checkClothItemStatus(orderCloth.getId(), ClothOrderFlowStatus.outFactory.getCode());
                 if (res) {
@@ -1352,7 +1193,7 @@ public class OrderClothServiceImpl extends ServiceImpl<OrderClothMapper, OrderCl
                     baseMapper.updateById(orderClothUpdate);
                 }
             }
-            if (orderCloth.getOrderStatus().equals(ClothOrderStatusType.HAS_WASH.getCode())) {
+            if (orderStatus.equals(ClothOrderStatusType.HAS_WASH.getCode())) {
                 //待入厂,判断所有的衣服和附件是否都已经入厂,如果都入厂,则改变状态
                 Boolean res = orderClothItemService.checkClothItemStatus(orderCloth.getId(), ClothOrderFlowStatus.hangering.getCode());
                 if (res) {
@@ -1363,37 +1204,18 @@ public class OrderClothServiceImpl extends ServiceImpl<OrderClothMapper, OrderCl
                     baseMapper.updateById(orderClothUpdate);
                 }
             }
+            if (orderStatus.equals(ClothOrderStatusType.WAITING_FOR_HANG.getCode())) {
+                //已到店,如果所有衣服已取完,则变成已完成
+                Boolean res = orderClothItemService.checkClothItemStatus(orderCloth.getId(), ClothOrderFlowStatus.hasTake.getCode());
+                if (res) {
+                    OrderCloth orderClothUpdate = new OrderCloth();
+                    orderClothUpdate.setId(orderCloth.getId());
+                    orderClothUpdate.setOrderStatus(ClothOrderStatusType.FINISH.getCode());
+                    orderClothUpdate.setUpdateTime(new Date());
+                    baseMapper.updateById(orderClothUpdate);
+                }
+            }
         }
     }
 
-    private void handleMtdDataByClothOrder(OrderFinancialQueryVO orderFinancialQueryVO) {
-        List<OrderClothFinancialVO> MtdData = baseMapper.listFinancialStatisticsByClothOrderMTD(SecurityUtils.getLoginUser().getOrgId(), SecurityUtils.getLoginUser().getSourceType());
-        this.buildClothData(orderFinancialQueryVO, MtdData);
-    }
-
-    private void handleMtdDataByGoodsOrder(OrderFinancialQueryVO orderFinancialQueryVO) {
-        // 查询今日商品订单
-        orderGoodsService.listFinancialStatisticsByGoodsOrderMTD(orderFinancialQueryVO);
-    }
-
-    private void handleMtdDataByRechargeOrder(OrderFinancialQueryVO orderFinancialQueryVO) {
-        orderRechargeService.listFinancialStatisticsByRechargeOrderMTD(orderFinancialQueryVO);
-    }
-
-    private void handleListDataByMonth(OrderFinancialQueryVO orderFinancialQueryVO, OrderFinancialMonthQueryDTO orderFinancialMonthQueryDTO) {
-        // 查询洗衣列表数据
-        List<OrderClothFinancialVO> clothFinancialVOS = baseMapper.listFinancialStatisticsByClothOrderMonth(orderFinancialMonthQueryDTO,
-                SecurityUtils.getLoginUser().getOrgId(),
-                SecurityUtils.getLoginUser().getSourceType());
-        orderFinancialQueryVO.setOrderClothFinancialVOList(clothFinancialVOS);
-        orderFinancialQueryVO.setClothTotal(baseMapper.countFinancialStatisticsByClothOrderMonth(orderFinancialMonthQueryDTO,
-                SecurityUtils.getLoginUser().getOrgId(),
-                SecurityUtils.getLoginUser().getSourceType()));
-
-        // 查询商品列表数据
-        List<OrderGoodsFinancialVO> goodsFinancialVOS = orderGoodsService.listFinancialStatisticsByGoodsOrderMonth(orderFinancialMonthQueryDTO);
-        orderFinancialQueryVO.setGoodsOrderFinancialVOList(goodsFinancialVOS);
-        orderFinancialQueryVO.setGoodsTotal(orderGoodsService.countFinancialStatisticsByGoodsOrderMonth(orderFinancialMonthQueryDTO));
-    }
-
 }

+ 0 - 61
yiqi-core/src/main/java/com/yiqi/order/service/impl/OrderGoodsServiceImpl.java

@@ -1065,65 +1065,4 @@ public class OrderGoodsServiceImpl extends ServiceImpl<OrderGoodsMapper, OrderGo
         return thirdDeliveryService.getDeliveryPath(OrderThirdDeliveryPathDTO.buildDeliveryPathByGoodsOrder(orderGoods, appUserInfo.getWxOpenId()));
     }
 
-    @Override
-    public List<OrderGoodsFinancialVO> listFinancialStatisticsByGoodsOrderDay(OrderFinancialDayQueryDTO orderFinancialDayQueryDTO) {
-        return baseMapper.listFinancialStatisticsByGoodsOrderDay(orderFinancialDayQueryDTO,
-                SecurityUtils.getLoginUser().getOrgId(),
-                SecurityUtils.getLoginUser().getSourceType()
-        );
-    }
-
-    @Override
-    public int countFinancialStatisticsByGoodsOrderDay(OrderFinancialDayQueryDTO orderFinancialDayQueryDTO) {
-        return baseMapper.countFinancialStatisticsByGoodsOrderDay(orderFinancialDayQueryDTO,
-                SecurityUtils.getLoginUser().getOrgId(),
-                SecurityUtils.getLoginUser().getSourceType()
-        );
-    }
-
-    @Override
-    public void listFinancialStatisticsByGoodsOrderToday(OrderFinancialQueryVO orderFinancialQueryVO, OrderFinancialDayQueryDTO today) {
-        // 查询今日商品订单
-        List<OrderGoodsFinancialVO> todayData = baseMapper.listFinancialStatisticsByGoodsOrderToday(today,
-                SecurityUtils.getLoginUser().getOrgId(),
-                SecurityUtils.getLoginUser().getSourceType());
-        if (CollUtil.isEmpty(todayData)) {
-            orderFinancialQueryVO.setTodayOrderGoodsCount(0);
-        }
-        // 今日商品件数
-        orderFinancialQueryVO.setTodayOrderGoodsCount(todayData.stream()
-                .map(OrderGoodsFinancialVO::getOrderGoodsCount)
-                .filter(Objects::nonNull)
-                .reduce(0, Integer::sum));
-    }
-
-    @Override
-    public void listFinancialStatisticsByGoodsOrderMTD(OrderFinancialQueryVO orderFinancialQueryVO) {
-        // 查询本月商品订单
-        List<OrderGoodsFinancialVO> todayData = baseMapper.listFinancialStatisticsByGoodsOrderMTD(SecurityUtils.getLoginUser().getOrgId(), SecurityUtils.getLoginUser().getSourceType());
-        if (CollUtil.isEmpty(todayData)) {
-            orderFinancialQueryVO.setTodayOrderGoodsCount(0);
-        }
-        // 本月商品件数
-        orderFinancialQueryVO.setTodayOrderGoodsCount(todayData.stream()
-                .map(OrderGoodsFinancialVO::getOrderGoodsCount)
-                .filter(Objects::nonNull)
-                .reduce(0, Integer::sum));
-    }
-
-    @Override
-    public List<OrderGoodsFinancialVO> listFinancialStatisticsByGoodsOrderMonth(OrderFinancialMonthQueryDTO orderFinancialMonthQueryDTO) {
-        return baseMapper.listFinancialStatisticsByGoodsOrderMonth(orderFinancialMonthQueryDTO,
-                SecurityUtils.getLoginUser().getOrgId(),
-                SecurityUtils.getLoginUser().getSourceType());
-    }
-
-    @Override
-    public Integer countFinancialStatisticsByGoodsOrderMonth(OrderFinancialMonthQueryDTO orderFinancialMonthQueryDTO) {
-        return baseMapper.countFinancialStatisticsByGoodsOrderMonth(orderFinancialMonthQueryDTO,
-                SecurityUtils.getLoginUser().getOrgId(),
-                SecurityUtils.getLoginUser().getSourceType()
-        );
-    }
-    //</editor-folder>
 }

+ 1 - 1
yiqi-core/src/main/java/com/yiqi/order/service/impl/OrderPayInfoServiceImpl.java

@@ -98,7 +98,7 @@ public class OrderPayInfoServiceImpl extends ServiceImpl<OrderPayInfoMapper, Ord
         orderPayInfo.setPayType(payType);
         orderPayInfo.setOrderNo(orderNo);
         orderPayInfo.setPayAmount(payAmount);
-        orderPayInfo.setRequestNo(orderNoUtils.getOrderNo(orderNo.substring(0, 2)));
+        orderPayInfo.setRequestNo(orderNoUtils.getOrderNo(orderNo.substring(0, 1)));
         orderPayInfo.setCreateTime(DateUtils.getNowDate());
         baseMapper.insert(orderPayInfo);
         return orderPayInfo;

+ 1 - 19
yiqi-core/src/main/java/com/yiqi/order/service/impl/OrderPurchaseGoodsServiceImpl.java

@@ -360,27 +360,9 @@ public class OrderPurchaseGoodsServiceImpl extends ServiceImpl<OrderPurchaseGood
      * 检查操作权限- 出货校验
      */
     private Boolean checkActionByOutOrder(OrderPurchaseGoods orderPurchaseGoods) {
-        // 门店操作
-        if (SourceType.STORE.getCode().equals(SecurityUtils.getLoginUser().getSourceType())) {
-            log.warn("门店没有出货权限");
-            return Boolean.FALSE;
-        }
-        // 工厂操作
-        if (SourceType.FACTORY.getCode().equals(SecurityUtils.getLoginUser().getSourceType())) {
-            if (SourceType.FACTORY.getCode().equals(orderPurchaseGoods.getParentSourceType())
-                    && SecurityUtils.getLoginUser().getOrgId().equals(orderPurchaseGoods.getOrgId())) {
-                return Boolean.TRUE;
-            }
-        }
         // 总部操作
         if (SourceType.MANAGER.getCode().equals(SecurityUtils.getLoginUser().getSourceType())) {
-            if (SourceType.MANAGER.getCode().equals(orderPurchaseGoods.getParentSourceType())) {
-                return Boolean.TRUE;
-            }
-            if (SourceType.FACTORY.getCode().equals(orderPurchaseGoods.getParentSourceType())
-                    && SourceType.HQ_FACTORY.getCode().equals(String.valueOf(orderPurchaseGoods.getParentOrgId()))) {
-                return Boolean.TRUE;
-            }
+            return Boolean.TRUE;
         }
         return Boolean.FALSE;
     }

+ 30 - 32
yiqi-core/src/main/java/com/yiqi/order/service/impl/OrderRechargeServiceImpl.java

@@ -16,6 +16,7 @@ import com.yiqi.app.domain.AppCouponItem;
 import com.yiqi.app.service.IAppCouponItemService;
 import com.yiqi.common.core.domain.R;
 import com.yiqi.common.utils.CurrencyUtil;
+import com.yiqi.common.utils.pay.PayCodeUtils;
 import com.yiqi.delay.DelayQueueCache;
 import com.yiqi.lock.RedisLockUtil;
 import com.yiqi.order.domain.vo.*;
@@ -468,8 +469,24 @@ public class OrderRechargeServiceImpl extends ServiceImpl<OrderRechargeMapper, O
         orderRecharge.setRemark(createDTO.getRemark());
         orderRecharge.setRefundAmount(BigDecimal.ZERO);
 
-        // 2. 设置支付信息
         orderRecharge.setPayType(createDTO.getPayType());
+        // 2. 设置支付信息
+        if (createDTO.getPayType().equals(PayType.WECHAT.getCode()) || createDTO.getPayType().equals(PayType.ALIPAY.getCode())) {
+            String payType = PayCodeUtils.getPayTypeByCode(createDTO.getAuthCode());
+            orderRecharge.setPayType(payType);
+        }
+
+        if (createDTO.getPayType().equals(PayType.COMBINE.getCode())) {
+            //组合支付
+            String payType = PayCodeUtils.getPayTypeByCode(createDTO.getAuthCode());
+            if (payType.equals(PayType.WECHAT.getCode())) {
+                orderRecharge.setWxPayAmount(CurrencyUtil.sub(createDTO.getPayAmount(), createDTO.getCashPayAmount()));
+            }
+            if (payType.equals(PayType.ALIPAY.getCode())) {
+                orderRecharge.setAliPayAmount(CurrencyUtil.sub(createDTO.getPayAmount(), createDTO.getCashPayAmount()));
+            }
+        }
+
         orderRecharge.setOrderStatus(OrderRechargeStatus.NO_PAY.getCode());
         orderRecharge.setPayStatus(PayStatus.WAITING_TO_PAY.getCode());
 
@@ -555,6 +572,17 @@ public class OrderRechargeServiceImpl extends ServiceImpl<OrderRechargeMapper, O
         // 3. 线下支付(微信/支付宝)
         if (OrderSourceType.OFFLINE.getCode().equals(createDTO.getOrderSource())) {
             // 2. 发起支付
+            if (orderRecharge.getPayType().equals(PayType.COMBINE.getCode())) {
+                //如果是组合支付
+                String payType = PayCodeUtils.getPayTypeByCode(createDTO.getAuthCode());
+                orderRecharge.setPayType(payType);
+                if (payType.equals(PayType.WECHAT.getCode())) {
+                    orderRecharge.setPayAmount(orderRecharge.getWxPayAmount());
+                }
+                if (payType.equals(PayType.ALIPAY.getCode())) {
+                    orderRecharge.setPayAmount(orderRecharge.getAliPayAmount());
+                }
+            }
             return payService.faceToFacePay(
                     PayOrderFaceToFaceDTO.createRechargeOrderPayData(
                             orderRecharge.getOrderNo(),
@@ -746,7 +774,7 @@ public class OrderRechargeServiceImpl extends ServiceImpl<OrderRechargeMapper, O
 
     @Override
     public void paySuccess(OrderRecharge orderRecharge, String outTradeNo) {
-        if (orderRecharge.getPayStatus().equals(PayStatus.HAS_PAY.getCode()) ) {
+        if (orderRecharge.getPayStatus().equals(PayStatus.HAS_PAY.getCode())) {
             log.error("订单已支付成功,无需再次处理,订单号:{}", orderRecharge.getOrderNo());
             return;
         }
@@ -1357,34 +1385,4 @@ public class OrderRechargeServiceImpl extends ServiceImpl<OrderRechargeMapper, O
         return "支付失败,取消订单";
     }
 
-    @Override
-    public void listFinancialStatisticsByRechargeOrderToday(OrderFinancialQueryVO orderFinancialQueryVO, OrderFinancialDayQueryDTO today) {
-        // 查询今日充值订单
-        List<OrderRechargeFinancialVO> todayData = baseMapper.listFinancialStatisticsByRechargeOrderToday(today,
-                SecurityUtils.getLoginUser().getOrgId(),
-                SecurityUtils.getLoginUser().getSourceType());
-        if (CollUtil.isEmpty(todayData)) {
-            orderFinancialQueryVO.setTodayChargeAmount(BigDecimal.ZERO);
-        }
-        // 今日充值金额
-        orderFinancialQueryVO.setTodayChargeAmount(todayData.stream()
-                .map(OrderRechargeFinancialVO::getPayAmount)
-                .filter(Objects::nonNull)
-                .reduce(BigDecimal.ZERO, BigDecimal::add));
-    }
-
-    @Override
-    public void listFinancialStatisticsByRechargeOrderMTD(OrderFinancialQueryVO orderFinancialQueryVO) {
-        // 查询本月充值订单
-        List<OrderRechargeFinancialVO> todayData = baseMapper.listFinancialStatisticsByRechargeOrderMTD(SecurityUtils.getLoginUser().getOrgId(), SecurityUtils.getLoginUser().getSourceType());
-        if (CollUtil.isEmpty(todayData)) {
-            orderFinancialQueryVO.setTodayChargeAmount(BigDecimal.ZERO);
-        }
-        // 本月充值金额
-        orderFinancialQueryVO.setTodayChargeAmount(todayData.stream()
-                .map(OrderRechargeFinancialVO::getPayAmount)
-                .filter(Objects::nonNull)
-                .reduce(BigDecimal.ZERO, BigDecimal::add));
-    }
-
 }

+ 1 - 1
yiqi-core/src/main/java/com/yiqi/order/service/impl/OrderRefundInfoServiceImpl.java

@@ -100,7 +100,7 @@ public class OrderRefundInfoServiceImpl extends ServiceImpl<OrderRefundInfoMappe
         orderRefundInfo.setStoreId(payRefundDTO.getStoreId());
         orderRefundInfo.setOriginOrderNo(payRefundDTO.getOrderNo());
         orderRefundInfo.setRefundOrderNo(payRefundDTO.getOutRequestNo());
-        orderRefundInfo.setRequestNo(orderNoUtils.getOrderNo(payRefundDTO.getOrderNo().substring(0, 2)));
+        orderRefundInfo.setRequestNo(orderNoUtils.getOrderNo(payRefundDTO.getOrderNo().substring(0, 1)));
         orderRefundInfo.setRefundAmount(payRefundDTO.getRefundAmount());
         orderRefundInfo.setPayAmount(payRefundDTO.getTotalAmount());
         orderRefundInfo.setPayType(payRefundDTO.getPayType());

+ 4 - 4
yiqi-core/src/main/java/com/yiqi/order/service/impl/PayServiceImpl.java

@@ -87,7 +87,7 @@ public class PayServiceImpl implements IPayService {
         }
         orderPayInfo.setPayStatus("1");
         orderPayInfoService.updateById(orderPayInfo);
-        String header = orderPayNo.substring(0, 2);
+        String header = orderPayNo.substring(0, 1);
         if (StringUtils.isBlank(orderNo)) {
             orderNo = orderPayInfo.getOrderNo();
         }
@@ -119,7 +119,7 @@ public class PayServiceImpl implements IPayService {
         orderRefundInfo.setRefundStatus("1");
         orderRefundInfoService.updateById(orderRefundInfo);
         String refundNo = orderRefundInfo.getRefundOrderNo();
-        String header = refundNo.substring(0, 2);
+        String header = refundNo.substring(0, 1);
         switch (EnumUtils.getEnumByType(header, OrderNoHeaderType.class)) {
             case cloth_order_header: {
                 return orderClothService.refundSuccess(refundNo, orderNo);
@@ -265,7 +265,7 @@ public class PayServiceImpl implements IPayService {
             }
             default: {
                 throw new ServiceException("当前订单支付方式为" + EnumUtils.getEnumByType(payRefundDTO.getPayType()
-                        , PayType.class).getInfo() + "不支持第三方APP退款");
+                        , PayType.class).getInfo() + "不支持的退款方式");
             }
         }
 
@@ -317,7 +317,7 @@ public class PayServiceImpl implements IPayService {
      */
     @Override
     public void refundNotify(String orderNo, String refundStatus) {
-        String header = orderNo.substring(0, 2);
+        String header = orderNo.substring(0, 1);
         switch (EnumUtils.getEnumByType(header, OrderNoHeaderType.class)) {
             case cloth_order_header: {
                 if (OrderRefundStatus.REFUND_SUCCESS.getCode().equals(refundStatus)) {

+ 11 - 1
yiqi-core/src/main/java/com/yiqi/recharge/service/impl/RechargePasswordCardServiceImpl.java

@@ -100,7 +100,17 @@ public class RechargePasswordCardServiceImpl extends ServiceImpl<RechargePasswor
 
     @Override
     public RechargePasswordCard selectTotalBalanceGroupByAppUser(Long appUserId, String orderType) {
-        return baseMapper.selectTotalBalanceGroupByAppUser(appUserId, orderType);
+        RechargePasswordCard rechargePasswordCard = baseMapper.selectTotalBalanceGroupByAppUser(appUserId, orderType);
+        if (rechargePasswordCard != null) {
+            rechargePasswordCard.setTotalBalance(rechargePasswordCard.getRechargeBalance().add(rechargePasswordCard.getGiveBalance()).add(rechargePasswordCard.getWelfareBalance()));
+        } else {
+            rechargePasswordCard = new RechargePasswordCard();
+            rechargePasswordCard.setTotalBalance(BigDecimal.ZERO);
+            rechargePasswordCard.setRechargeBalance(BigDecimal.ZERO);
+            rechargePasswordCard.setGiveBalance(BigDecimal.ZERO);
+            rechargePasswordCard.setWelfareBalance(BigDecimal.ZERO);
+        }
+        return rechargePasswordCard;
     }
 
     @Override

+ 1 - 1
yiqi-core/src/main/resources/mapper/core/SettlementStoreStatisticsMapper.xml

@@ -384,7 +384,7 @@
         <if test="endDay!=null">
              and day &lt;= #{endDay}
         </if>
-        <if test="storeId != null and storeId != 0">
+        <if test="storeId != null">
             and store_id = #{storeId}
         </if>
     </select>

+ 1 - 1
yiqi-core/src/main/resources/mapper/order/OrderClothItemMapper.xml

@@ -652,7 +652,7 @@
         order by item.id desc
     </select>
     <select id="checkClothItemStatus" resultType="com.yiqi.order.domain.OrderClothItem">
-        select order_id, flow_status, order_no from order_cloth_item where order_id = #{orderId} and flow_status != #{flowStatus}
+        select order_id, flow_status, order_no from order_cloth_item where order_id = #{clothOrderId} and flow_status != #{flawStatus}
     </select>
 
     <update id="updateAllClothItemStatusByOrderId">

+ 0 - 80
yiqi-core/src/main/resources/mapper/order/OrderClothMapper.xml

@@ -289,86 +289,6 @@
             limit #{pageSizeExport}
         </if>
     </select>
-    <select id="listFinancialStatisticsByClothOrderDay"
-            resultType="com.yiqi.order.domain.vo.OrderClothFinancialVO">
-        <include refid="orderClothFinancialVo"/>
-        <where>
-             a.order_status IN ('6','7','8','9','10','11') and a.refund_status = '0' and a.del_flag='0'
-                and a.org_id = #{orgId} and a.source_type = '02'
-        <if test="orderFinancialDayQueryDTO.beginCreateTime != null and orderFinancialDayQueryDTO.beginCreateTime != ''"><!-- 开始时间检索 -->
-            and date_format(a.create_time,'%y%m%d') &gt;= date_format(#{orderFinancialDayQueryDTO.beginCreateTime},'%y%m%d')
-        </if>
-        <if test="orderFinancialDayQueryDTO.endCreateTime != null and orderFinancialDayQueryDTO.endCreateTime != ''"><!-- 结束时间检索 -->
-            and date_format(a.create_time,'%y%m%d') &lt;= date_format(#{orderFinancialDayQueryDTO.endCreateTime},'%y%m%d')
-        </if>
-        </where>
-        order by a.create_time desc
-        limit #{orderFinancialDayQueryDTO.startRow},#{orderFinancialDayQueryDTO.pageSize}
-    </select>
-    <select id="listFinancialStatisticsByClothOrderToday"
-            resultType="com.yiqi.order.domain.vo.OrderClothFinancialVO">
-        <include refid="orderClothFinancialVo"/>
-        <where>
-            a.order_status IN ('6','7','8','9','10','11') and a.refund_status = '0' and a.del_flag='0'
-            and a.org_id = #{orgId} and a.source_type = '02'
-            <if test="orderFinancialDayQueryDTO.beginCreateTime != null and orderFinancialDayQueryDTO.beginCreateTime != ''"><!-- 开始时间检索 -->
-                and date_format(a.create_time,'%y%m%d') &gt;= date_format(#{orderFinancialDayQueryDTO.beginCreateTime},'%y%m%d')
-            </if>
-            <if test="orderFinancialDayQueryDTO.endCreateTime != null and orderFinancialDayQueryDTO.endCreateTime != ''"><!-- 结束时间检索 -->
-                and date_format(a.create_time,'%y%m%d') &lt;= date_format(#{orderFinancialDayQueryDTO.endCreateTime},'%y%m%d')
-            </if>
-        </where>
-        order by a.create_time desc
-    </select>
-    <select id="countFinancialStatisticsByClothOrderDay" resultType="java.lang.Integer">
-        select count(*)
-        from order_cloth a
-        <where>
-            a.order_status IN ('6','7','8','9','10','11') and a.refund_status = '0' and a.del_flag='0'
-            and a.org_id = #{orgId} and a.source_type = '02'
-            <if test="orderFinancialDayQueryDTO.beginCreateTime != null and orderFinancialDayQueryDTO.beginCreateTime != ''"><!-- 开始时间检索 -->
-                and date_format(a.create_time,'%y%m%d') &gt;= date_format(#{orderFinancialDayQueryDTO.beginCreateTime},'%y%m%d')
-            </if>
-            <if test="orderFinancialDayQueryDTO.endCreateTime != null and orderFinancialDayQueryDTO.endCreateTime != ''"><!-- 结束时间检索 -->
-                and date_format(a.create_time,'%y%m%d') &lt;= date_format(#{orderFinancialDayQueryDTO.endCreateTime},'%y%m%d')
-            </if>
-        </where>
-    </select>
-    <select id="listFinancialStatisticsByClothOrderMTD"
-            resultType="com.yiqi.order.domain.vo.OrderClothFinancialVO">
-        <include refid="orderClothFinancialVo"/>
-        <where>
-            a.order_status IN ('6','7','8','9','10','11') and a.refund_status = '0' and a.del_flag='0'
-            and a.org_id = #{orgId} and a.source_type = '02'
-            and a.create_time BETWEEN DATE_FORMAT(NOW(), '%Y-%m-01') AND LAST_DAY(NOW())
-    </where>
-        order by a.create_time desc
-    </select>
-    <select id="listFinancialStatisticsByClothOrderMonth"
-            resultType="com.yiqi.order.domain.vo.OrderClothFinancialVO">
-        <include refid="orderClothFinancialVo"/>
-        <where>
-        a.order_status IN ('6','7','8','9','10','11') and a.refund_status = '0' and a.del_flag='0'
-        and a.org_id = #{orgId} and a.source_type = '02'
-        <if test="orderFinancialMonthQueryDTO.monthTime != null and orderFinancialMonthQueryDTO.monthTime != ''"><!-- 开始时间检索 -->
-            and DATE_FORMAT(a.create_time,'%Y-%m') = #{orderFinancialMonthQueryDTO.monthTime}
-        </if>
-        </where>
-        order by a.create_time desc
-        limit #{orderFinancialMonthQueryDTO.startRow},#{orderFinancialMonthQueryDTO.pageSize}
-    </select>
-    <select id="countFinancialStatisticsByClothOrderMonth" resultType="java.lang.Integer">
-        select count(*)
-        from order_cloth a
-        <where>
-            a.order_status IN ('6','7','8','9','10','11') and a.refund_status = '0' and a.del_flag='0'
-            and a.org_id = #{orgId} and a.source_type = '02'
-            <if test="orderFinancialMonthQueryDTO.monthTime != null and orderFinancialMonthQueryDTO.monthTime != ''"><!-- 开始时间检索 -->
-                and DATE_FORMAT(a.create_time,'%Y-%m') = #{orderFinancialMonthQueryDTO.monthTime}
-            </if>
-        </where>
-        order by a.create_time desc
-    </select>
 
     <insert id="insertOrderCloth" parameterType="OrderCloth" useGeneratedKeys="true"
             keyProperty="id">

+ 0 - 97
yiqi-core/src/main/resources/mapper/order/OrderGoodsMapper.xml

@@ -184,102 +184,5 @@
         </where>
 
     </select>
-    <select id="listFinancialStatisticsByGoodsOrderToday"
-            resultType="com.yiqi.order.domain.vo.OrderGoodsFinancialVO">
-        select a.order_no as orderNo , b.buy_num  as orderGoodsCount
-        from order_goods a
-        left join order_goods_sku b on a.order_no = b.order_no
-        <where>
-            a.order_status IN ('2','3','5') and a.refund_status = '0' and a.del_flag='0'
-            and a.org_id = #{orgId} and a.source_type = '02'
-            <if test="orderFinancialDayQueryDTO.beginCreateTime != null and orderFinancialDayQueryDTO.beginCreateTime != ''"><!-- 开始时间检索 -->
-                and date_format(a.create_time,'%y%m%d') &gt;= date_format(#{orderFinancialDayQueryDTO.beginCreateTime},'%y%m%d')
-            </if>
-            <if test="orderFinancialDayQueryDTO.endCreateTime != null and orderFinancialDayQueryDTO.endCreateTime != ''"><!-- 结束时间检索 -->
-                and date_format(a.create_time,'%y%m%d') &lt;= date_format(#{orderFinancialDayQueryDTO.endCreateTime},'%y%m%d')
-            </if>
-        </where>
-        order by a.create_time desc
-    </select>
-    <select id="listFinancialStatisticsByGoodsOrderDay"
-            resultType="com.yiqi.order.domain.vo.OrderGoodsFinancialVO">
-        select
-        a.order_no as orderNo, a.total_price as totalPrice, a.pay_amount as payAmount, a.coupon_deduct_amount + a.cash_deduct_amount  as couponAmount,
-        a.create_time as createTime, b.real_name as userName, b.phone_number as phoneNumber,
-        a.create_by as employeeName, a.create_by_id as employeeId, a.order_status as orderStatus, a.pay_type as payType
-        from order_goods a
-        left join app_user b on a.app_user_id = b.id
-        <where>
-        a.order_status IN ('0','1','2','3','5') and a.refund_status = '0' and a.del_flag='0'
-            and a.org_id = #{orgId} and a.source_type = '02'
-            <if test="orderFinancialDayQueryDTO.beginCreateTime != null and orderFinancialDayQueryDTO.beginCreateTime != ''"><!-- 开始时间检索 -->
-                and date_format(a.create_time,'%y%m%d') &gt;= date_format(#{orderFinancialDayQueryDTO.beginCreateTime},'%y%m%d')
-            </if>
-            <if test="orderFinancialDayQueryDTO.endCreateTime != null and orderFinancialDayQueryDTO.endCreateTime != ''"><!-- 结束时间检索 -->
-                and date_format(a.create_time,'%y%m%d') &lt;= date_format(#{orderFinancialDayQueryDTO.endCreateTime},'%y%m%d')
-            </if>
-        </where>
-        order by a.create_time desc
-        limit #{orderFinancialDayQueryDTO.startRow},#{orderFinancialDayQueryDTO.pageSize}
-    </select>
-    <select id="countFinancialStatisticsByGoodsOrderDay" resultType="java.lang.Integer">
-        select
-            count(*)
-        from order_goods a
-        <where>
-            a.order_status IN ('0','1','2','3','5') and a.refund_status = '0' and a.del_flag='0'
-            and a.org_id = #{orgId} and a.source_type = '02'
-            <if test="orderFinancialDayQueryDTO.beginCreateTime != null and orderFinancialDayQueryDTO.beginCreateTime != ''"><!-- 开始时间检索 -->
-                and date_format(a.create_time,'%y%m%d') &gt;= date_format(#{orderFinancialDayQueryDTO.beginCreateTime},'%y%m%d')
-            </if>
-            <if test="orderFinancialDayQueryDTO.endCreateTime != null and orderFinancialDayQueryDTO.endCreateTime != ''"><!-- 结束时间检索 -->
-                and date_format(a.create_time,'%y%m%d') &lt;= date_format(#{orderFinancialDayQueryDTO.endCreateTime},'%y%m%d')
-            </if>
-        </where>
-    </select>
-    <select id="listFinancialStatisticsByGoodsOrderMTD"
-            resultType="com.yiqi.order.domain.vo.OrderGoodsFinancialVO">
-        select a.order_no as orderNo , b.buy_num  as orderGoodsCount
-        from order_goods a
-        left join order_goods_sku b on a.order_no = b.order_no
-        <where>
-            a.order_status IN ('2','3','5') and a.refund_status = '0' and a.del_flag='0'
-            and a.org_id = #{orgId} and a.source_type = '02'
-            and a.create_time BETWEEN DATE_FORMAT(NOW(), '%Y-%m-01') AND LAST_DAY(NOW())
-        </where>
-        order by a.create_time desc
-    </select>
-    <select id="listFinancialStatisticsByGoodsOrderMonth"
-            resultType="com.yiqi.order.domain.vo.OrderGoodsFinancialVO">
-        select
-        a.order_no as orderNo, a.total_price as totalPrice, a.pay_amount as payAmount, a.coupon_deduct_amount + a.cash_deduct_amount  as couponAmount,
-        a.create_time as createTime, b.real_name as userName, b.phone_number as phoneNumber,
-        a.create_by as employeeName, a.create_by_id as employeeId, a.order_status as orderStatus, a.pay_type as payType
-        from order_goods a
-        left join app_user b on a.app_user_id = b.id
-        <where>
-            a.order_status IN ('0','1','2','3','5') and a.refund_status = '0' and a.del_flag='0'
-            and a.org_id = #{orgId} and a.source_type = '02'
-            <if test="orderFinancialMonthQueryDTO.monthTime != null and orderFinancialMonthQueryDTO.monthTime != ''"><!-- 开始时间检索 -->
-                and DATE_FORMAT(a.create_time,'%Y-%m') = #{orderFinancialMonthQueryDTO.monthTime}
-            </if>
-        </where>
-        order by a.create_time desc
-        limit #{orderFinancialMonthQueryDTO.startRow},#{orderFinancialMonthQueryDTO.pageSize}
-    </select>
-    <select id="countFinancialStatisticsByGoodsOrderMonth" resultType="java.lang.Integer">
-        select count(*)
-        from order_goods a
-        left join app_user b on a.app_user_id = b.id
-        <where>
-            a.order_status IN ('0','1','2','3','5') and a.refund_status = '0' and a.del_flag='0'
-            and a.org_id = #{orgId} and a.source_type = '02'
-            <if test="orderFinancialMonthQueryDTO.monthTime != null and orderFinancialMonthQueryDTO.monthTime != ''">
-                and DATE_FORMAT(a.create_time,'%Y-%m') = #{orderFinancialMonthQueryDTO.monthTime}
-            </if>
-        </where>
-        order by a.create_time desc
-    </select>
-
 
 </mapper>

+ 0 - 27
yiqi-core/src/main/resources/mapper/order/OrderRechargeMapper.xml

@@ -209,33 +209,6 @@
             </if>
         </where>
     </select>
-    <select id="listFinancialStatisticsByRechargeOrderToday"
-            resultType="com.yiqi.order.domain.vo.OrderRechargeFinancialVO">
-        select a.order_no as orderNo , a.pay_amount as payAmount
-        from order_recharge a
-        <where>
-            a.order_status IN ('2','3') and a.refund_status = '0' and a.del_flag='0'
-            and a.store_id = #{orgId}
-            <if test="orderFinancialDayQueryDTO.beginCreateTime != null and orderFinancialDayQueryDTO.beginCreateTime != ''"><!-- 开始时间检索 -->
-                and date_format(a.create_time,'%y%m%d') &gt;= date_format(#{orderFinancialDayQueryDTO.beginCreateTime},'%y%m%d')
-            </if>
-            <if test="orderFinancialDayQueryDTO.endCreateTime != null and orderFinancialDayQueryDTO.endCreateTime != ''"><!-- 结束时间检索 -->
-                and date_format(a.create_time,'%y%m%d') &lt;= date_format(#{orderFinancialDayQueryDTO.endCreateTime},'%y%m%d')
-            </if>
-        </where>
-        order by a.create_time desc
-    </select>
-    <select id="listFinancialStatisticsByRechargeOrderMTD"
-            resultType="com.yiqi.order.domain.vo.OrderRechargeFinancialVO">
-        select a.order_no as orderNo , a.pay_amount as payAmount
-        from order_recharge a
-        <where>
-            a.order_status IN ('2','3') and a.refund_status = '0' and a.del_flag='0'
-            and a.store_id = #{orgId}
-            and a.create_time BETWEEN DATE_FORMAT(NOW(), '%Y-%m-01') AND LAST_DAY(NOW())
-        </where>
-        order by a.create_time desc
-    </select>
 
     <insert id="insertOrderRecharge" parameterType="OrderRecharge" useGeneratedKeys="true"
             keyProperty="id">

+ 4 - 4
yiqi-core/src/main/resources/mapper/recharge/RechargePasswordCardMapper.xml

@@ -119,9 +119,9 @@
         and del_flag='0'
     </select>
     <select id="selectTotalBalanceGroupByAppUser" resultType="com.yiqi.recharge.domain.RechargePasswordCard">
-        select sum(recharge_balance) as rechargeBalance,
-        sum(give_balance) as giveBalance,
-        sum(welfare_balance) as welfareBalance
+        select IFNULL(SUM(recharge_balance), 0) as rechargeBalance,
+        IFNULL(SUM(give_balance), 0) as giveBalance,
+        IFNULL(SUM(welfare_balance), 0) as welfareBalance
         from recharge_password_card
         where recharge_user_id = #{appUserId} and recharge_status = '1'
         and (expire_time &gt;= now() or expire_time IS NULL)
@@ -208,7 +208,7 @@
     <select id="getCardBillMstrInfoById" resultType="com.yiqi.recharge.domain.vo.RechargeCardBillMstrQueryVO">
         select aubm.id, aubm.title, aubm.content, aubm.order_id as orderId, aubm.order_no as orderNo,
         aubm.order_type as orderType, aubm.pay_type as payType,
-        aubm.app_user_id  as appUserId, aubm. bill_type as billType, aubm.pay_total_amount  as payTotalAmount, aubm.cash_pay_amount  as cashPayAmount,
+        aubm.app_user_id  as appUserId, aubm. bill_type as billType, aubm.pay_total_amount  as payTotalAmount,
         aubm.recharge_pay_amount  as rechargePayAmount, aubm.give_pay_amount  as givePayAmount, aubm.welfare_pay_amount  as welfarePayAmount, aubm.receive_point  as receivePoint,
         aubm.use_point  as usePoint, aubm.is_refund  as isRefund, aubm.create_time  as createTime, aubm.recharge_card_id  as rechargeCardId,
         aubm.create_time as createTime,