Browse Source

web端批量交费

pengjing 9 months ago
parent
commit
0272f54c43

+ 4 - 3
src/main/java/com/ghsc/partybuild/controller/PublicityController.java

@@ -1051,10 +1051,11 @@ public class PublicityController {
         try {
 
             UsPartydues dataModel = mapper.readValue(mapper.writeValueAsString(reqMap.get("dataModel")).toString(), UsPartydues.class);
-            /*List<UsPartyduesDetail> monthList = JsonMapper.jsonToObject(reqMap.get("monthList").toString(), new TypeReference<List<UsPartyduesDetail>>() {
-            });*/
+            List<UsPartyduesDetail> monthList = JsonMapper.jsonToObject(reqMap.get("monthList").toString(), new TypeReference<List<UsPartyduesDetail>>() {
+            });
 
-            count = publicityService.savePartyDuesUser(dataModel, userService.getLoginUser().getUserid(), userService.getUserInfobyId(userService.getLoginUser().getUserid()).getName());
+            count = publicityService.savePartyDuesUser(dataModel, userService.getLoginUser().getUserid(), userService.getUserInfobyId(userService.getLoginUser().getUserid()).getName(),
+                    monthList);
 
         } catch (Exception e) {
 

+ 1 - 1
src/main/java/com/ghsc/partybuild/service/PublicityService.java

@@ -347,7 +347,7 @@ public interface PublicityService {
      * @param userName
      * @return
      */
-    int savePartyDuesUser(UsPartydues model, String userId, String userName);
+    int savePartyDuesUser(UsPartydues model, String userId, String userName,List<UsPartyduesDetail> monthList);
 
     /**
      * 批量保存党费基数

+ 34 - 4
src/main/java/com/ghsc/partybuild/service/impl/PublicityServiceImpl.java

@@ -1143,7 +1143,7 @@ public class PublicityServiceImpl implements PublicityService {
      * @return
      */
     @Override
-    public int savePartyDuesUser(UsPartydues model, String userId, String userName) {
+    public int savePartyDuesUser(UsPartydues model, String userId, String userName, List<UsPartyduesDetail> monthList) {
         int result = 0;
         String dzzdm = partyUserService.getUserDzzdm(model.getUsercode());
 
@@ -1173,7 +1173,37 @@ public class PublicityServiceImpl implements PublicityService {
             result += usPartyduesMapper.updateByPrimaryKey(dbModel);
         }
 
-        this.batchInsertPartyDuesDetail(dbModel.getYear(), Arrays.asList(dbModel.getUsercode()));
+        /*this.batchInsertPartyDuesDetail(dbModel.getYear(), Arrays.asList(dbModel.getUsercode()));*/
+
+        for (UsPartyduesDetail item : monthList) {
+            UsPartyduesDetail mModel = getPartyduesDetailByUserId(dbModel.getPartyduesid(), item.getMonth());
+            if (mModel == null || (mModel != null && stringUtils.IsNullOrEmpty(mModel.getDetailid()))) {
+                item.setDetailid(UUID.randomUUID().toString());
+                item.setPartyduesid(dbModel.getPartyduesid());
+                item.setPartycode(dzzdm);
+                item.setCreateuserid(userId);
+                item.setCreateusername(userName);
+                item.setCreatetime(new Date());
+                //同步数据
+                item.setOperatetime(new Date());
+                item.setOperatestate("A");
+                item.setSyncstate("N");
+                usPartyduesDetailMapper.insert(item);
+            } else {
+                mModel.setMoney(item.getMoney());
+                mModel.setSpecialexpenses(item.getSpecialexpenses());
+                mModel.setRemarks(item.getRemarks());
+                mModel.setUpdateuserid(userId);
+                mModel.setUpdateusername(userName);
+                mModel.setUpdatetime(new Date());
+
+                mModel.setOperatetime(new Date());
+                mModel.setOperatestate("M");
+                mModel.setSyncstate("N");
+                mModel.setPaystate(item.getPaystate());
+                usPartyduesDetailMapper.updateByPrimaryKey(mModel);
+            }
+        }
 
         return result;
     }
@@ -1248,7 +1278,7 @@ public class PublicityServiceImpl implements PublicityService {
         Integer yearMonth = Integer.parseInt(year + String.format("%02d", month));
 
         PageHelper.startPage(page, rows);
-        List<HashMap<String, Object>> list = publicityCQuery.selectPartyDuesUserListOfAddfee(year, month, partyCode, userName,yearMonth);
+        List<HashMap<String, Object>> list = publicityCQuery.selectPartyDuesUserListOfAddfee(year, month, partyCode, userName, yearMonth);
 
         PageInfo<HashMap<String, Object>> result = new PageInfo(list);
 
@@ -1461,7 +1491,7 @@ public class PublicityServiceImpl implements PublicityService {
                     usPartyduesMapper.updateByPrimaryKey(dbModel);
                 }
 
-                this.batchInsertPartyDuesDetail(item.getYear(),Arrays.asList(item.getUsercode()));
+                this.batchInsertPartyDuesDetail(item.getYear(), Arrays.asList(item.getUsercode()));
             });
 
 

+ 1 - 1
src/main/resources/application.yml

@@ -139,7 +139,7 @@ appconfig:
   sync-cron-usercount: '0/5 * * * 1 ?'
   sync-cron-userage: '0 0 23 1 1 ?'
   sync-cron-wechatpay: '0/30 * * * 1 ? '
-  sync-cron-partydues: '0 0/10 * * * ?'
+  sync-cron-partydues: '0 0 13,23 * * ?'
   sync-cron-updateUserparty: '0 0 13,23 * * ?'
   bowinLisencing: '/fGsysepxe1l+HNXO9M+LVGxyk7rdCqEAkBz4a2rU1s='
   #bowinLisencing: 'omkEhjdATMchNVk3e3j4C7FlRHKQJtQi'

+ 30 - 19
src/main/resources/mapping/PublicityCQuery.xml

@@ -502,25 +502,36 @@
 
 
     <select id="selectPartyDuesUserMonthList" resultType="java.util.HashMap">
-        select #{year} as YEAR,#{userCode} as USERCODE,m.MONTH,case when us.payState=1 then 1 else 0 end as ISHAV,us.BASENUMBER,us.MONEY,us.DETAILID,us.SPECIALEXPENSES,us.REMARKS,us.PARTYCODE,
-        us.payState,us.userName
-        , case when (us.payState is null or us.payState = 0) and us.MONEY > 0 and us.yearMonth <![CDATA[ <= ]]> DATE_FORMAT(NOW(), '%Y%m') and us.yearMonth >= us.partyDuesStartMonth and us.yearMonth >= us.inPartyYearMonth then true else false end as isPay
-        from (select dic.DICKEY as MONTH from cf_dictionary dic where dic.DICTYPEKEY='monthType' and dic.DICKEY <![CDATA[ <= ]]> 12) m
-        inner join (
-              select d.MONTH,d.BASENUMBER,case when d.payState=1 then d.money else p.money end as MONEY,d.DETAILID,d.specialExpenses,d.remarks,d.PARTYCODE,d.payState,us.xm as userName,
-              fb.partyDuesStartMonth,CONCAT(p.year,LPAD(d.month,2,'0')) as yearMonth,substr(dj.JRZGZZRQ,1,6) inPartyYearMonth
-              from US_PartyDues p
-              inner join US_PARTYDUES_DETAIL d on p.PARTYDUESID = d.PARTYDUESID
-              inner join vm_ryjbxx us on p.USERCODE = us.rybm
-              left join rs_ryjbxxfb fb on us.rybm = fb.rybm
-              left join ZZ_DJXX dj on us.rybm = dj.rybm
-              where 1 = 1
-              and p.YEAR = #{year}
-              and p.USERCODE = #{userCode}
-              and d.OPERATESTATE <![CDATA[ <> ]]> 'D'
-        ) us on m.MONTH = us.MONTH
-        order by m.MONTH
-
+        select
+        #{year} as YEAR
+        , usm.MONTH
+        , #{userCode} as USERCODE
+        , usm.xm as userName
+        , pdd.MONEY
+        , pdd.REMARKS
+        , pdd.payState
+        , case when usm.yearMonth >= usm.startYearMonth and usm.yearMonth <![CDATA[ <= ]]> usm.endYearMonth then 1 else 0 end as isPay
+        from (
+              select us.rybm,us.xm ,m.month,(#{year}*100+m.month) as yearMonth
+              , ifnull(us.startYearMonth,0) as startYearMonth
+              , ifnull(us.endYearMonth,999999) as endYearMonth
+              from (select dic.DICKEY as MONTH from cf_dictionary dic where dic.DICTYPEKEY='monthType') m,(
+                          select us.rybm,us.xm,ifnull(fb.partyDuesStartMonth,(cast(substr(dj.JRZGZZRQ, 1, 6) as signed))) startYearMonth,
+                          cast(substr(DATE_FORMAT(fb.archiveDate, '%Y%m%d'), 1, 6) as signed)  as endYearMonth
+                          from  vm_ryjbxx_all us
+                          inner join rs_ryjbxxfb fb on us.rybm = fb.rybm
+                          inner join ZZ_DJXX dj on us.rybm = dj.rybm
+                          where 1 = 1 and us.rybm = #{userCode}) us
+        ) usm
+        left join (
+            select (p.year*100+d.month) as yearMonth,p.usercode,d.MONEY,d.remarks,d.payState
+            from US_PartyDues p
+            inner join US_PARTYDUES_DETAIL d on p.PARTYDUESID = d.PARTYDUESID
+            where 1 = 1
+            and p.YEAR = #{year}
+            and p.USERCODE = #{userCode}
+        ) pdd on usm.yearMonth = pdd.yearMonth
+        order by usm.yearMonth
     </select>
 
     <!--删除-->

+ 3 - 3
src/main/resources/static/app/main/app.js

@@ -2142,12 +2142,12 @@
             }
         }).state("home.partyDuesAdd", {
             url: "partyDuesAdd?dzzdm&dzzmc",
-            templateUrl: "../main/publicity/partyDues/edit.html?" + window.sysVersion,
-            controller: "partyDuesAddCtrl",
+            templateUrl: "../main/publicity/partyDues/editBase.html?" + window.sysVersion,
+            controller: "partyDuesBaseCtrl",
             resolve: {
                 load: ['$ocLazyLoad', function ($ocLazyLoad) {
 
-                    return $ocLazyLoad.load(['../main/publicity/partyDues/edit.js?' + window.sysVersion]);
+                    return $ocLazyLoad.load(['../main/publicity/partyDues/editBase.js?' + window.sysVersion]);
                 }]
             }
         }).state("home.partyDuesEdit", {

+ 1 - 1
src/main/resources/static/app/main/publicity/partyDues/edit.html

@@ -36,7 +36,7 @@
                 <div class="table-responsive list-table-panel">
                     <div class="list-table-title">
                         <div class="table-title">
-                            应缴党费明细
+                            应缴党费基准
                         </div>
                         <div class="table-tool">
                             <button type="button" class="btn btn-primary dropdown-toggle"

+ 1 - 1
src/main/resources/static/app/main/publicity/partyDues/edit.js

@@ -1,5 +1,5 @@
 (function ($app) {
-    $app.module('gtPartyApp').controller('partyDuesAddCtrl', function ($scope, $http, $modal, $ocLazyLoad, $alert, $loading, $state, $partySelect, $stateParams, $bsRouterState, $excel) {
+    $app.module('gtPartyApp').controller('partyDuesBaseCtrl', function ($scope, $http, $modal, $ocLazyLoad, $alert, $loading, $state, $partySelect, $stateParams, $bsRouterState, $excel) {
         $stateParams = $bsRouterState.$params($scope);
 
         //定义数据集合

+ 13 - 33
src/main/resources/static/app/main/publicity/partyDues/editDues.html

@@ -27,32 +27,23 @@
                             <span ng-show="this.editForm.money.$invalid &&  this.editForm.$submitted"
                                   class="error">必填项,最小单位为1分</span>
                         </td>
-                        <!--<th>计算基数</th>
-                        <td ng-class="{ 'has-error' : this.editForm.basenumber.$invalid &&  this.editForm.$submitted}">
-                            <input type="text" name="basenumber" ng-model="dataModel.basenumber"
-                                   maxlength="200"
-                                   class="form-control" ng-required="true"/>
-                            <span ng-show="this.editForm.basenumber.$invalid &&  this.editForm.$submitted"
-                                  class="error">必填.</span>
-                        </td>-->
                     </tr>
                 </table>
             </div>
-            <!--<div class="dj-formtable">
+            <div class="dj-formtable">
                 <div class="table-responsive list-table-panel">
                     <div class="list-table-title">
                         <div class="table-title">
-                            费情况
+                            交费情况
                         </div>
                     </div>
                     <table class="table table-bordered">
                         <thead>
                         <tr>
-                            <th class="text-center" style="width: 80px;">选择已缴月份</th>
-                            <th class="text-center" style="width: 180px;">月份</th>
+                            <th class="text-center" style="width: 150px;">选择已缴月份</th>
+                            <th class="text-center" style="width: 150px;">月份</th>
                             <th style="width: 200px;">交纳金额(元/月)</th>
-                            <th style="width: 200px;">特殊党费(元)</th>
-                            <th style="width: 200px;">备注</th>
+                            <th>备注</th>
                         </tr>
                         </thead>
                         <tbody>
@@ -60,9 +51,9 @@
                             <td class="text-center" scope="row">
                                 <input type="checkbox" id="{{pageId}}_md_checkbox_{{$index+1}}"
                                        class="filled-in chk-col-red"
-                                       ng-checked="it.ISHAV>0"
+                                       ng-checked="it.payState===1"
                                        ng-click="checkMonth(it)"
-                                       ng-disabled="it.PARTYCODE!=null && it.PARTYCODE!='' && usdzzdm!=it.PARTYCODE"/>
+                                       ng-disabled="it.isPay===0"/>
                                 <label for="{{pageId}}_md_checkbox_{{$index+1}}"
                                        style="margin-top: 5px"></label>
                             </td>
@@ -72,32 +63,21 @@
                             <td class="text-center"
                                 ng-class="{ 'has-error' : invalidFee($index,editForm,'MONEY') &&  this.editForm.$submitted}">
                                 <input type="number" autocomplete="off" class="form-control" name="MONEY_{{$index}}"
-                                       ng-pattern="/^[+]{0,1}(\d+)$|^[+]{0,1}(\d+\.\d+)$/"
-                                       ng-model="it.MONEY" ng-required="it.ISHAV>0"
+                                       min="0" step="0.01"
+                                       ng-model="it.MONEY" ng-required="it.payState===1"
                                        style="width: 150px;display: inline;"
-                                       ng-disabled="false"/>
-                                       &lt;!&ndash;ng-disabled="it.PARTYCODE!=null && it.PARTYCODE!='' && usdzzdm!=it.PARTYCODE"/>&ndash;&gt;
-                            </td>
-                            <td class="text-center"
-                                ng-class="{ 'has-error' : invalidFee($index,editForm,'SPECIALEXPENSES') &&  this.editForm.$submitted}">
-                                <input type="number" autocomplete="off" class="form-control"
-                                       name="SPECIALEXPENSES_{{$index}}"
-                                       ng-pattern="/^[+]{0,1}(\d+)$|^[+]{0,1}(\d+\.\d+)$/"
-                                       ng-model="it.SPECIALEXPENSES" style="width: 150px;display: inline;"
-                                       ng-disabled="false"/>
-                                       &lt;!&ndash;ng-disabled="it.PARTYCODE!=null && it.PARTYCODE!='' && usdzzdm!=it.PARTYCODE"/>&ndash;&gt;
+                                       ng-disabled="it.isPay===0"/>
                             </td>
                             <td class="text-center">
                                 <input type="text" class="form-control" name="REMARKS_{{$index}}"
-                                       ng-model="it.REMARKS" style="width: 150px;display: inline;"
-                                       ng-disabled="false"/>
-                                       &lt;!&ndash;ng-disabled="it.PARTYCODE!=null && it.PARTYCODE!='' && usdzzdm!=it.PARTYCODE"/>&ndash;&gt;
+                                       ng-model="it.REMARKS" style="display: inline;"
+                                       ng-disabled="it.isPay===0"/>
                             </td>
                         </tr>
                         </tbody>
                     </table>
                 </div>
-            </div>-->
+            </div>
 
             <div class="form_foot">
                 <button type="button" class="btn btn-default" ng-click="pagechange();">取消</button>

+ 14 - 24
src/main/resources/static/app/main/publicity/partyDues/editDues.js

@@ -40,21 +40,17 @@
             }
 
             if (isflag) {
-                /*var monthList = $scope.userMonthList.filter(function (item) {
-                    return item.ISHAV == 1;
-                });*/
-                /*var monthList = [];
+                var monthList = [];
                 angular.forEach($scope.userMonthList, function (val, key) {
-                    if (val.ISHAV != null && val.ISHAV > 0) {
-                        monthList.push(
-                            {
-                                month: val.MONTH,
-                                money: val.MONEY,
-                                specialexpenses: val.SPECIALEXPENSES,
-                                remarks: val.REMARKS
-                            });
-                    }
-                });*/
+                    monthList.push(
+                        {
+                            month: val.MONTH,
+                            money: val.MONEY,
+                            specialexpenses: val.SPECIALEXPENSES,
+                            remarks: val.REMARKS,
+                            paystate: val.payState
+                        });
+                });
                 if (confirm("确认提交?")) {
                     $loading.show();
                     $http({
@@ -62,7 +58,7 @@
                         url: "../../api/publicity/savePartyDuesUser",
                         data: {
                             dataModel: $scope.dataModel,
-                            //monthList: JSON.stringify(monthList)
+                            monthList: JSON.stringify(monthList)
                         }
                     }).then(function (result) {
                         $loading.hide();
@@ -91,15 +87,9 @@
         };
 
         $scope.checkMonth = function (it) {
-            if (it.ISHAV > 0) {
-                it.ISHAV = 0;
-                it.MONEY = null;
-            } else {
-                it.ISHAV = 1;
-                if (it.MONEY == null) {
-                    it.MONEY = $scope.dataModel.money;
-                }
-            }
+            it.payState = Math.abs((it.payState || 0) - 1);
+
+            it.MONEY = it.payState === 1 ? $scope.dataModel.money : null;
         };
 
         //加载数据

+ 4 - 4
src/main/resources/static/app/main/publicity/partyDues/list.html

@@ -75,13 +75,13 @@
                              data-ptotal="pageInfo.ptotal" data-unit="'名'"></div>-->
                         <div style="float: right">
                             <button role-permission-code="partyDuesList.btnAdd" class="btn btn-default1"
-                                    ng-click="addData()">设置交费基准
+                                    ng-click="addBase()">设置交费基准
                             </button>
                             <button role-permission-code="partyDuesList.btnAdd" class="btn btn-default1"
                                     ng-click="multiAdd()">批量交费
                             </button>
                             <button role-permission-code="partyDuesList.btnImport" class="btn btn-primary dropdown-toggle"
-                                    title="导入交费基准" ng-click="import()">
+                                    title="导入交费基准" ng-click="importBase()">
                                 导入交费基准
                             </button>
                             <button role-permission-code="partyDuesList.btnExport" class="btn btn-default1"
@@ -159,8 +159,8 @@
                                                 role-permission-code="partyDuesList.btnUpdate"
                                                 class="btn td-btn bg-light-green waves-effect"
                                                 ng-click="editData(it.USERCODE,it.YEAR,it.SZDZBDM,it.USERNAME)"
-                                                title="修改基准">
-                                            修改基准
+                                                title="交费">
+                                            交费
                                         </button>
                                     </td>
                                 </tr>

+ 2 - 2
src/main/resources/static/app/main/publicity/partyDues/list.js

@@ -115,7 +115,7 @@
         };
 
         //新增
-        $scope.addData = function () {
+        $scope.addBase = function () {
             $bsRouterState.$closeTabName("home.partyDuesAdd");
             $timeout(function () {
                 $bsRouterState.go('home.partyDuesAdd', {
@@ -159,7 +159,7 @@
             }
         };
 
-        $scope.import = function () {
+        $scope.importBase = function () {
             $scope.excelConfig = {
                 filetype: 1,
                 columns: {