Jelajahi Sumber

修改对比支付单和添加支付订单搜索

hj123456 3 tahun lalu
induk
melakukan
1c305477c3

+ 25 - 0
kmall-admin/src/main/java/com/kmall/admin/controller/compared/PayOrderInfoController.java

@@ -14,6 +14,7 @@ import com.kmall.admin.service.compared.PayOrderInfoService;
 import com.kmall.admin.utils.ShiroUtils;
 import com.kmall.common.constant.Dict;
 import com.kmall.common.constant.JxlsXmlTemplateName;
+import com.kmall.common.utils.DateUtils;
 import com.kmall.common.utils.PageUtils;
 import com.kmall.common.utils.Query;
 import com.kmall.common.utils.R;
@@ -35,6 +36,8 @@ import org.springframework.web.multipart.MultipartFile;
 @Controller
 @RequestMapping("payorderinfo")
 public class PayOrderInfoController {
+    private static String  ISO = "iso-8859-1";
+    private static String  UTF = "utf-8";
     @Autowired
     private PayOrderInfoService payOrderInfoService;
     @Autowired
@@ -209,4 +212,26 @@ public class PayOrderInfoController {
         return R.ok();
     }
 
+    @RequestMapping("/comparedTime/{comparedDate}")
+    @ResponseBody
+    public R comparedTime( @PathVariable("comparedDate") String comparedDate) {
+
+        if(org.apache.commons.lang.StringUtils.isNotEmpty(comparedDate)) {
+            try {
+                comparedDate = new String(comparedDate.getBytes(ISO), UTF);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+            comparedDate = DateUtils.getDate(comparedDate);
+        }
+
+        try {
+            String returnMsg = payOrderInfoService.comparedTime(comparedDate);
+            return R.ok().put("msg",returnMsg);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return R.error(e.getMessage());
+        }
+
+    }
 }

+ 5 - 0
kmall-admin/src/main/java/com/kmall/admin/dao/MallPaymentOrderDataDao.java

@@ -3,6 +3,7 @@ package com.kmall.admin.dao;
 
 import com.kmall.admin.entity.MallPaymentOrderDataEntity;
 import com.kmall.manager.dao.BaseDao;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 import java.util.Map;
@@ -22,4 +23,8 @@ public interface MallPaymentOrderDataDao extends BaseDao<MallPaymentOrderDataEnt
 
     List<MallPaymentOrderDataEntity> queryListTimeAndTnoData(Map<String, Object> params);
 
+    List<MallPaymentOrderDataEntity> queryListByOrderSn(@Param("list") List<String> orderSnList);
+
+    List<MallPaymentOrderDataEntity> queryListTime(String comparedDate);
+
 }

+ 7 - 0
kmall-admin/src/main/java/com/kmall/admin/service/compared/PayOrderInfoService.java

@@ -91,4 +91,11 @@ public interface PayOrderInfoService {
      * @param payOrderInfoEntities
      */
     void updateBatch(List<PayOrderInfoEntity> payOrderInfoEntities);
+
+    /**
+     * 同步支付订单数据
+     * @param comparedDate
+     * @return
+     */
+    String comparedTime(String comparedDate);
 }

+ 3 - 3
kmall-admin/src/main/java/com/kmall/admin/service/impl/MallPaymentOrderDataServiceImpl.java

@@ -108,7 +108,7 @@ public class MallPaymentOrderDataServiceImpl implements MallPaymentOrderDataServ
                 //根据时间和商户订单号来判断当前数据是否有重复录入
                 List<MallPaymentOrderDataEntity> timeAndTnoData = mall2PaymentOrderDataDao.queryListTimeAndTnoData(map);
                 if (timeAndTnoData.size()>0) {
-                    throw new RRException("数据有重复,请检查导入数据的正确性!");
+                    throw new RRException("【"+outTradeNo+"】数据有重复,请检查导入数据的正确性!");
                 }
                 paymentOrderDataEntity.setCreaterSn(sysUserEntity.getUsername());
                 paymentOrderDataEntity.setCreateTime(new Date());
@@ -196,7 +196,7 @@ public class MallPaymentOrderDataServiceImpl implements MallPaymentOrderDataServ
                 //根据时间和商户订单号来判断当前数据是否有重复录入
                 List<MallPaymentOrderDataEntity> timeAndTnoData = mall2PaymentOrderDataDao.queryListTimeAndTnoData(map);
                 if (timeAndTnoData.size()>0) {
-                    throw new RRException("数据有重复,请检查导入数据的正确性!");
+                    throw new RRException("【"+outTradeNo+"】数据有重复,请检查导入数据的正确性!");
                 }
 
                 MallPaymentOrderDataEntity mallPaymentOrderDataEntity = new MallPaymentOrderDataEntity();
@@ -226,7 +226,7 @@ public class MallPaymentOrderDataServiceImpl implements MallPaymentOrderDataServ
                 //根据时间和商户订单号来判断当前数据是否有重复录入
                 List<MallPaymentOrderDataEntity> timeAndTnoData = mall2PaymentOrderDataDao.queryListTimeAndTnoData(map);
                 if (timeAndTnoData.size()>0) {
-                    throw new RRException("数据有重复,请检查导入数据的正确性!");
+                    throw new RRException("【"+outTradeNo+"】数据有重复,请检查导入数据的正确性!");
                 }
                 MallPaymentOrderDataEntity mallPaymentOrderDataEntity = new MallPaymentOrderDataEntity();
                 BeanUtils.copyProperties(aliPaymentOrderDto,mallPaymentOrderDataEntity);

+ 101 - 0
kmall-admin/src/main/java/com/kmall/admin/service/impl/compared/PayOrderInfoServiceImpl.java

@@ -1,10 +1,12 @@
 package com.kmall.admin.service.impl.compared;
 
 import com.google.common.collect.ImmutableBiMap;
+import com.kmall.admin.dao.MallPaymentOrderDataDao;
 import com.kmall.admin.dao.compared.PayOrderInfoDao;
 import com.kmall.admin.dto.AliPaymentOrderDto;
 import com.kmall.admin.dto.PayOrderDto;
 import com.kmall.admin.dto.WxPaymentOrderDto;
+import com.kmall.admin.entity.MallPaymentOrderDataEntity;
 import com.kmall.admin.entity.compared.PayOrderInfoEntity;
 import com.kmall.admin.fromcomm.entity.SysUserEntity;
 import com.kmall.admin.service.compared.PayOrderInfoService;
@@ -33,6 +35,8 @@ import java.util.Map;
 public class PayOrderInfoServiceImpl implements PayOrderInfoService {
     @Autowired
     private PayOrderInfoDao payOrderInfoDao;
+    @Autowired
+    private MallPaymentOrderDataDao mallPaymentOrderDataDao;
 
     @Override
     public PayOrderInfoEntity queryObject(Integer mpoiId) {
@@ -264,4 +268,101 @@ public class PayOrderInfoServiceImpl implements PayOrderInfoService {
     public void updateBatch(List<PayOrderInfoEntity> payOrderInfoEntities) {
         payOrderInfoDao.updateBatch(payOrderInfoEntities);
     }
+
+    @Override
+    public String comparedTime(String comparedDate) {
+        String msg = null;
+        if (!StringUtils.isNotEmpty(comparedDate)) {
+            throw new RRException("日期不能为空!");
+        }
+        List<MallPaymentOrderDataEntity> mallPaymentOrderDataEntityList = mallPaymentOrderDataDao.queryListTime(comparedDate);
+        List<PayOrderInfoEntity> payOrderInfoEntityList = payOrderInfoDao.queryNoComparedOrder(comparedDate);
+        if (mallPaymentOrderDataEntityList.size() == 0) {
+            msg = "支付订单详情暂无【" + comparedDate + "】数据";
+            return msg;
+        }
+        if (payOrderInfoEntityList.size()>0) {
+            msg = "支付单对比详情【" + comparedDate + "】数据已同步,请勿重复操作!";
+            return msg;
+        }
+        comparedTime(mallPaymentOrderDataEntityList);
+        msg = "日期【" + comparedDate + "】数据同步成功!";
+        return msg;
+    }
+
+    private void comparedTime(List<MallPaymentOrderDataEntity> mallPaymentOrderDataEntityList) {
+
+        List<PayOrderInfoEntity> insertList = new ArrayList<>();
+
+        if(mallPaymentOrderDataEntityList != null && mallPaymentOrderDataEntityList.size() > 0){
+
+            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            SysUserEntity userEntity = ShiroUtils.getUserEntity();
+            for(MallPaymentOrderDataEntity payOrderDto : mallPaymentOrderDataEntityList){
+                String payFlag = payOrderDto.getPayFlag();
+                String timeStr = payOrderDto.getTimeStr();
+                String outTradeNo = payOrderDto.getOutTradeNo();
+                String payMoney = payOrderDto.getPayMoney();
+                //支付宝退款金额
+                String refundMoney = payOrderDto.getRefundMoney();
+                //微信退款金额
+                String applyRefundAmount = payOrderDto.getApplyRefundAmount();
+                if(Dict.payFlag.item_alipay.getItem().equals(payFlag)){
+                    String style = payOrderDto.getPayType();
+                    if(style == null){
+                        continue;
+                    }
+                    if( !style.equals("在线支付") && !style.equals("退款(交易退款)")){
+                        continue;
+                    }
+                }
+
+
+                    PayOrderInfoEntity payOrderInfoEntity = new PayOrderInfoEntity();
+                    payOrderInfoEntity.setImporter(userEntity.getUserId()+""); // 导入者id
+                    payOrderInfoEntity.setImportTime(format.format(new Date())); // 导入时间
+                    if(Dict.payFlag.item_weixin.getItem().equals(payFlag)){
+                        if(StringUtils.isNotEmpty(payMoney) && !"0.00".equals(payMoney)){
+                            payOrderInfoEntity.setOrderStatus("300"); // 订单状态
+                            payOrderInfoEntity.setOrderAmount(new BigDecimal(payMoney)); // 订单金额
+                        }else{
+                            payOrderInfoEntity.setOrderStatus("401"); // 订单状态
+                            payOrderInfoEntity.setOrderAmount(new BigDecimal(0)); // 订单金额
+                        }
+                        if(StringUtils.isNotEmpty(applyRefundAmount) && !"0.00".equals(applyRefundAmount)){
+                            payOrderInfoEntity.setPayStatus("5"); // 支付状态
+                            payOrderInfoEntity.setRefundAmount(new BigDecimal(applyRefundAmount)); // 退款金额
+                        }else{
+                            payOrderInfoEntity.setPayStatus("2"); // 支付状态
+                            payOrderInfoEntity.setRefundAmount(new BigDecimal(0)); // 退款金额
+                        }
+                    }else if(Dict.payFlag.item_alipay.getItem().equals(payFlag)){
+                        if(StringUtils.isNotEmpty(payMoney) ){
+                            payOrderInfoEntity.setOrderStatus("300"); // 订单状态
+                            payOrderInfoEntity.setOrderAmount(new BigDecimal(payMoney)); // 订单金额
+                        }else{
+                            payOrderInfoEntity.setOrderStatus("401"); // 订单状态
+                            payOrderInfoEntity.setOrderAmount(new BigDecimal(0)); // 订单金额
+                        }
+                        if(StringUtils.isNotEmpty(refundMoney)){
+                            payOrderInfoEntity.setPayStatus("5"); // 支付状态
+                            payOrderInfoEntity.setRefundAmount(new BigDecimal(refundMoney)); // 退款金额
+                        }else{
+                            payOrderInfoEntity.setPayStatus("2"); // 支付状态
+                            payOrderInfoEntity.setRefundAmount(new BigDecimal(0)); // 退款金额
+                        }
+                    }
+
+                    payOrderInfoEntity.setPayFlag(payFlag); // 支付方式
+                    payOrderInfoEntity.setPayTime(timeStr); // 交易时间
+
+                    payOrderInfoEntity.setMerchOrderSn(outTradeNo); // 订单号
+                    payOrderInfoEntity.setCompared("0"); // 是否对比过
+                    insertList.add(payOrderInfoEntity);
+                }
+            }
+
+        payOrderInfoDao.saveBatch(insertList);
+
+    }
 }

+ 40 - 29
kmall-admin/src/main/resources/mybatis/mapper/MallPaymentOrderDataDao.xml

@@ -142,6 +142,9 @@
 		<if test="endTime != null and endTime != ''">
 			AND time_str <![CDATA[ <  ]]> #{endTime}
 		</if>
+		<if test="outTradeNo != null and outTradeNo != ''">
+			AND out_trade_no = #{outTradeNo}
+		</if>
         <choose>
             <when test="sidx != null and sidx.trim() != ''">
                 order by ${sidx} ${order}
@@ -211,45 +214,18 @@
 
 	<select id="queryListTimeAndTnoData" resultType="com.kmall.admin.entity.MallPaymentOrderDataEntity">
 		select
-		`pay_order_id`,
 		`merchant_name`,
 		`out_trade_no`,
 		`pay_money`,
 		`refund_money`,
 		`pay_type`,
-		`payment_type`,
 		`transaction_order`,
 		`time_str`,
-		`attach`,
 		`transaction_status`,
 		`currency_type`,
 		`Amount_order`,
-		`refund_id`,
-		`mer_refund_number`,
-		`refund_type`,
-		`refund_status`,
 		`apply_refund_amount`,
-		`cash_coupon`,
-		`refund_rechargp_coupon`,
-		`fee_charge`,
-		`rate`,
-		`pay_flag`,
-		`serial_number`,
-		`opposite_account`,
-		`other_name`,
-		`bank_order`,
-		`business_basic_order`,
-		`business_billing_source`,
-		`business_order`,
-		`business_description`,
-		`remark`,
-		`rate_remark`,
-		`payment_notes`,
-		`creater_sn`,
-		`create_time`,
-		`moder_sn`,
-		`mod_time`,
-		`tstm`
+		`pay_flag`
 		from mall2_payment_order_data
 		WHERE 1=1
 		<if test="outTradeNo != null and outTradeNo != ''">
@@ -259,7 +235,39 @@
 			AND time_str = #{timeStr}
 		</if>
 	</select>
-	
+	<select id="queryListByOrderSn" resultType="com.kmall.admin.entity.MallPaymentOrderDataEntity">
+		select
+		`merchant_name`,
+		`out_trade_no`,
+		`transaction_order`,
+		`time_str`,
+		`pay_flag`
+		from mall2_payment_order_data
+		WHERE 1=1
+		<if test="outTradeNo != null and outTradeNo != ''">
+			AND out_trade_no in
+			<foreach collection="list" item="outTradeNo" open="(" separator="," close=")">
+				#{outTradeNo}
+			</foreach>
+		</if>
+	</select>
+	<select id="queryListTime" resultType="com.kmall.admin.entity.MallPaymentOrderDataEntity">
+		select
+		`merchant_name`,
+		`out_trade_no`,
+		`pay_money`,
+		`refund_money`,
+		`pay_type`,
+		`transaction_order`,
+		`time_str`,
+		`refund_type`,
+		`apply_refund_amount`,
+		`pay_flag`
+		from mall2_payment_order_data
+		WHERE 1=1 and
+			DATE_FORMAT(time_str,'%Y-%m-%d')= #{comparedDate}
+			order by time_str
+	</select>
  	<select id="queryTotal" resultType="int">
 		select count(*) from mall2_payment_order_data
 		WHERE 1=1
@@ -275,6 +283,9 @@
 		<if test="endTime != null and endTime != ''">
 			AND time_str <![CDATA[ <  ]]> #{endTime}
 		</if>
+		<if test="outTradeNo != null and outTradeNo != ''">
+			AND out_trade_no = #{outTradeNo}
+		</if>
 	</select>
 	 
 	<insert id="save" parameterType="com.kmall.admin.entity.MallPaymentOrderDataEntity" useGeneratedKeys="true" keyProperty="payOrderId">

+ 7 - 6
kmall-admin/src/main/webapp/WEB-INF/page/compared/payorderinfo.html

@@ -16,13 +16,14 @@
                 <i-button @click="reloadSearch">重置</i-button>
             </div>
             <div class="buttons-group">
-                <i-col span="5">
+                <i-col span="10">
                     <Date-picker v-model="comparedDate" placeholder="对比日期"/>
                 </i-col>
+                <i-button type="info" @click="comparedTime"><i class="fa fa-pencil-square-o"></i>&nbsp;同步</i-button>
                 <i-button type="info" @click="compared"><i class="fa fa-plus"></i>&nbsp;对比</i-button>
-<!--                <i-button type="warning" @click="update"><i class="fa fa-pencil-square-o"></i>&nbsp;修改</i-button>-->
+                <!--                <i-button type="warning" @click="update"><i class="fa fa-pencil-square-o"></i>&nbsp;修改</i-button>-->
 <!--                <i-button type="error" @click="del"><i class="fa fa-trash-o"></i>&nbsp;删除</i-button>-->
-                <i-col style="display: inline-grid;">
+                <!--<i-col style="display: inline-grid;">
                     <Upload :show-upload-list="false" :on-success="uploadExcelSuccess" :on-error="uploadExcelError" :on-format-error="uploadExcelFormatError"
                             :format="['xls','xlsx']"
                             action="../payorderinfo/uploadAlipayOrder">
@@ -35,11 +36,11 @@
                             action="../payorderinfo/uploadWXOrder">
                         <i-button type="ghost" icon="ios-cloud-upload-outline">微信支付订单导入</i-button>
                     </Upload>
-                </i-col>
+                </i-col>-->
                <!-- <a href="../statics/file/alipay_pay_order.xls">支付宝模板下载</a>&nbsp;&nbsp;&nbsp;&nbsp;
                 <a href="../statics/file/weixin_pay_order.xls">微信模板下载</a>-->
-                <a href="../statics/file/ali_yyyy_mm_dd_v1.0.0.xls">支付宝模板下载</a>&nbsp;&nbsp;&nbsp;&nbsp;
-                <a href="../statics/file/wx_yyyy_mm_dd_v1.0.0.xls">微信模板下载</a>
+                <!--<a href="../statics/file/ali_yyyy_mm_dd_v1.0.0.xls">支付宝模板下载</a>&nbsp;&nbsp;&nbsp;&nbsp;
+                <a href="../statics/file/wx_yyyy_mm_dd_v1.0.0.xls">微信模板下载</a>-->
             </div>
         </Row>
 	    <table id="jqGrid"></table>

+ 3 - 0
kmall-admin/src/main/webapp/WEB-INF/page/shop/mallpaymentorderdata.html

@@ -20,6 +20,9 @@
                     <i-col span="3">
                         <Date-picker v-model="q.endTime" placeholder="创建订单结束时间"/>
                     </i-col>
+                    <i-col span="3">
+                        <i-input v-model="q.outTradeNo" @on-enter="query" placeholder="商户订单编号"/>
+                    </i-col>
                 <i-button @click="query">查询</i-button>
                 <i-button @click="reloadSearch">重置</i-button>
             </div>

+ 9 - 0
kmall-admin/src/main/webapp/js/compared/payorderinfo.js

@@ -105,6 +105,15 @@ let vm = new Vue({
 				//vm.mall2OrderingEarlyWarningReminds = r.mall2OrderingEarlyWarningReminds;
 			});
 		},
+		comparedTime: function () {
+			if(vm.comparedDate == ""){
+				alert("请输入对比日期!");
+				return;
+			}
+			$.get("../payorderinfo/comparedTime/"+vm.comparedDate, function (r) {
+				alert(r.msg);
+			});
+		},
 		add: function () {
 			vm.showList = false;
 			vm.title = "新增";

+ 13 - 2
kmall-admin/src/main/webapp/js/shop/mallpaymentorderdata.js

@@ -10,7 +10,15 @@ $(function () {
 			{label: '微信订单/支付宝交易号', name: 'transactionOrder', index: 'transaction_order', width: 80},
 			{label: '订单/收入金额', name: 'payMoney', index: 'pay_money', width: 80},
 			{label: '退款/支出金额', name: 'refundMoney', index: 'refund_money', width: 80},
-			{label: '支付方式', name: 'payFlag', index: 'pay_flag', width: 80},
+			{label: '支付方式', name: 'payFlag', index: 'pay_flag', width: 80,formatter:function(value){
+					if(value == "weixin"){
+						return "微信支付";
+					}else if(value == "alipay"){
+						return "支付宝支付";
+					}else{
+						return value;
+					}
+				}},
 			{label: '交易/入账时间', name: 'timeStr', index: 'time_str', width: 80},
 			{label: '添加人', name: 'createrSn', index: 'creater_sn', width: 80},
 			{label: '上传时间', name: 'createTime', index: 'create_time', width: 80, formatter: function (value) {
@@ -74,6 +82,7 @@ let vm = new Vue({
 			payFlag: '',
 			startTime:'',
 			endTime:'',
+			outTradeNo:'',
 		},
 		flag : true,
 	},
@@ -161,6 +170,7 @@ let vm = new Vue({
 				payFlag: '',
 				startTime:'',
 				endTime:'',
+				outTradeNo:'',
             }
             vm.reload();
 		},
@@ -172,7 +182,8 @@ let vm = new Vue({
                 postData: {'name': vm.q.name,
 					'payFlag': vm.q.payFlag,
 					'startTime': vm.q.startTime,
-					'endTime': vm.q.endTime,},
+					'endTime': vm.q.endTime,
+				'outTradeNo':vm.q.outTradeNo},
                 page: page
             }).trigger("reloadGrid");
             vm.handleReset('formValidate');