From 907f0b5fca853fcffb0754e4a57d819803b7f46d Mon Sep 17 00:00:00 2001
From: zjj <3272660260@qq.com>
Date: 星期五, 21 二月 2025 08:30:48 +0800
Subject: [PATCH] #四向库盘点、并板移库

---
 src/main/java/com/zy/asrs/service/WorkService.java          |   10 +
 src/main/webapp/static/js/pakStore/locCheckOut.js           |    2 
 src/main/webapp/static/js/mergeStore/mergeStore.js          |    2 
 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java |  328 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 src/main/java/com/zy/asrs/controller/WorkController.java    |   14 ++
 5 files changed, 354 insertions(+), 2 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/WorkController.java b/src/main/java/com/zy/asrs/controller/WorkController.java
index 7231322..2e5d066 100644
--- a/src/main/java/com/zy/asrs/controller/WorkController.java
+++ b/src/main/java/com/zy/asrs/controller/WorkController.java
@@ -47,6 +47,13 @@
         return R.ok("鍑哄簱鍚姩鎴愬姛");
     }
 
+    @RequestMapping("/locMerge/out/start/sxk")
+    @ManagerAuth(memo = "骞舵澘鍑哄簱")
+    public R locMergeOutStartSxk(@RequestBody StockOutParam param) {
+        workService.locMergeOut(param, getUserId());
+        return R.ok("鍑哄簱鍚姩鎴愬姛");
+    }
+
     @RequestMapping("/available/put/site")
     @ManagerAuth()
     public R availablePutSite(){
@@ -221,6 +228,13 @@
         return R.ok("鍑哄簱鍚姩鎴愬姛");
     }
 
+    @RequestMapping("/locCheck/out/start/sxk")
+    @ManagerAuth(memo = "鐩樼偣鍑哄簱")
+    public R locCheckOutStartsxk(@RequestBody StockOutParam param) {
+        workService.locCheckOut(param, getUserId());
+        return R.ok("鍑哄簱鍚姩鎴愬姛");
+    }
+
     @RequestMapping("/loc/move/start")
     @ManagerAuth(memo = "搴撲綅绉昏浆")
     public R locMoveStart(@RequestParam String sourceLocNo,
diff --git a/src/main/java/com/zy/asrs/service/WorkService.java b/src/main/java/com/zy/asrs/service/WorkService.java
index e5e0110..df6c1c3 100644
--- a/src/main/java/com/zy/asrs/service/WorkService.java
+++ b/src/main/java/com/zy/asrs/service/WorkService.java
@@ -62,6 +62,11 @@
     void locCheckOut(StockOutParam param, Long userId);
 
     /**
+     * 鐩樼偣鍑哄簱
+     */
+    void locCheckOutsxk(StockOutParam param, Long userId);
+
+    /**
      * 搴撲綅绉昏浆
      */
     void locMove(String sourceLocNo, String locNo, Long userId);
@@ -102,4 +107,9 @@
      * 骞舵澘鍑哄簱
      */
     void locMergeOut(StockOutParam param, Long userId);
+
+    /**
+     * sxk骞舵澘鍑哄簱
+     */
+    void locMergeOutSxk(StockOutParam param, Long userId);
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
index 23ef650..82a2642 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -909,6 +909,180 @@
 
     @Override
     @Transactional
+    public void locCheckOutsxk(StockOutParam param, Long userId) {
+        // 鐩爣绔欑偣鐘舵�佹娴�
+        BasDevp staNo = basDevpService.checkSiteStatus(param.getOutSite());
+        // 鍒ゆ柇鍏ュ簱妯″紡
+        OutStockInterceptUtil.outStockIntercept(param.getOutSite());
+        // 鑾峰彇搴撲綅鏄庣粏
+        List<LocDetlDto> locDetlDtos = new ArrayList<>();
+        for (StockOutParam.LocDetl paramLocDetl : param.getLocDetls()) {
+            if (!Cools.isEmpty(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getCount())) {
+                LocDetl one = locDetlService.selectItem(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getBatch());
+                if (null != one) locDetlDtos.add(new LocDetlDto(one, paramLocDetl.getCount()));
+            }
+        }
+        if (!locDetlDtos.isEmpty()) {
+            LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locDetlDtos.get(0).getLocDetl().getLocNo()));
+            if (locMast.getLocSts().equals("F")){
+                // 鍚姩鍑哄簱寮�濮� 107.鐩樼偣鍑哄簱
+                inventoryCheckStockOutsxk(staNo, locDetlDtos, IoWorkType.CHECK_OUT, userId,param);
+            }else {
+                throw new CoolException("鎵�閫夊簱浣嶅瓨鍦ㄧ姸鎬佷笉涓篎鐨勫簱浣嶏紝搴撲綅鍙凤細"+locMast.getLocNo()+" 銆佸綋鍓嶇姸鎬侊細"+locMast.getLocSts()+"-"+locMast.getLocSts$());
+            }
+        } else {
+            throw new CoolException("搴撲綅鐗╂枡涓嶅瓨鍦�");
+        }
+    }
+
+    @Transactional
+    public void inventoryCheckStockOutsxk(BasDevp staNo, List<LocDetlDto> locDetlDtos, IoWorkType ioWorkType, Long userId,StockOutParam param) {
+        Date now = new Date();
+        // 鍚堝苟鍚岀被椤�
+        Set<String> locNos = new HashSet<>();
+        List<OutLocDto> dtos = new ArrayList<>();
+        for (LocDetlDto locDetlDto : locDetlDtos) {
+            String locNo = locDetlDto.getLocDetl().getLocNo();
+            if (locNos.contains(locNo)) {
+                for (OutLocDto dto : dtos) {
+                    if (dto.getLocNo().equals(locNo)) {
+                        dto.getLocDetlDtos().add(locDetlDto);
+                        break;
+                    }
+                }
+            } else {
+                locNos.add(locNo);
+                dtos.add(new OutLocDto(locNo, locDetlDto));
+            }
+        }
+        Integer ioType = null;
+        // 鐢熸垚宸ヤ綔妗�
+        for (OutLocDto dto : dtos) {
+            // 鍒ゆ柇鍏ュ嚭搴撶被鍨嬶細101.鍏ㄦ澘鍑哄簱 or 103.鎷f枡鍑哄簱
+            if (ioWorkType == null) {
+                ioType = dto.isAll() ? 101 : 103;
+            } else if (ioWorkType.equals(IoWorkType.CHECK_OUT)) {
+                ioType = 107;
+            }
+            assert ioType != null;
+            // 鑾峰彇搴撲綅
+            LocMast locMast = locMastService.selectById(dto.getLocNo());
+
+            List<LocMast> locMasts = new ArrayList<>();
+            if ((locMast.getBay1() >=1 && locMast.getBay1()<=2) || (locMast.getBay1() >=6 && locMast.getBay1()<=7 && locMast.getRow1() !=36 && locMast.getRow1() !=29 ) || (locMast.getBay1() >=11 && locMast.getBay1()<=12)){
+                locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
+                        .eq("gro1", locMast.getGro1())
+                        .eq("crn_no", 7)
+                        .eq("loc_type1",locMast.getLocType1())
+                        .orderBy("bay1", false));
+            }else {
+                locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
+                        .eq("gro1", locMast.getGro1())
+                        .eq("crn_no", 7)
+                        .eq("loc_type1",locMast.getLocType1())
+                        .orderBy("bay1", true));
+            }
+            for (LocMast locMast1 : locMasts) {
+                if (locMast1.getLocNo().equals(dto.getLocNo())){
+                    break;
+                }
+                if (locMast1.getLocSts().equals("X")){
+                    throw new CoolException(dto.getLocNo()+"搴撲綅鍓嶆柟鏈夐攣瀹氬簱浣嶏紝绂佹鍑哄簱");
+                }
+                if (locMast1.getLocSts().equals("F")) {
+                    moveLocForDeepLoc(locMast1);
+                }
+            }
+
+            Integer outSta = staNo.getDevNo();
+//            //2鍙峰爢鍨涙満鍏ㄦ澘鍑哄簱绔欐寚瀹氫负204绔欙紝鎷f枡绔欐寚瀹氫负202
+//            if(locMast.getCrnNo()==2){
+//                outSta = ioType == 101 ? 204 : 202;
+//            }
+
+            // 鑾峰彇璺緞
+            StaDesc staDesc = staDescService.queryCrnStn(ioType, locMast.getCrnNo(), outSta);
+
+
+            // 鐢熸垚宸ヤ綔鍙�
+            int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
+            // 鐢熸垚宸ヤ綔妗�
+            WrkMast wrkMast = new WrkMast();
+            wrkMast.setWrkNo(workNo);
+            wrkMast.setIoTime(now);
+            wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+            wrkMast.setIoType(ioType); // 鍏ュ嚭搴撶姸鎬�
+            wrkMast.setIoPri(13D); // 浼樺厛绾э細13
+            wrkMast.setCrnNo(locMast.getCrnNo());
+            wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 婧愮珯
+            wrkMast.setStaNo(staDesc.getStnNo()); // 鐩爣绔�
+            wrkMast.setSourceLocNo(dto.getLocNo()); // 婧愬簱浣�
+            wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+            wrkMast.setPicking("N"); // 鎷f枡
+            wrkMast.setExitMk("N"); // 閫�鍑�
+            wrkMast.setEmptyMk("N"); // 绌烘澘
+            wrkMast.setLinkMis("N");
+            wrkMast.setBarcode(locMast.getBarcode());
+            wrkMast.setAppeUser(userId); // 鎿嶄綔浜哄憳鏁版嵁
+            wrkMast.setAppeTime(now);
+            wrkMast.setModiUser(userId);
+            wrkMast.setModiTime(now);
+            if (ioType == 107){
+                wrkMast.setSheetNo(param.getOrderNo());
+            }
+            if (!wrkMastService.insert(wrkMast)) {
+                throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細"+dto.getLocNo());
+            }
+            // 鐢熸垚宸ヤ綔妗f槑缁�
+            for (LocDetlDto detlDto : dto.getLocDetlDtos()) {
+
+                InventoryCheckOrderDetl inventoryCheckOrderDetl = new InventoryCheckOrderDetl();
+                inventoryCheckOrderDetl.setOrderNo(param.getOrderNo());
+                inventoryCheckOrderDetl.setMatnr(detlDto.getLocDetl().getMatnr());
+                inventoryCheckOrderDetl.setMaktx(detlDto.getLocDetl().getMaktx());
+                inventoryCheckOrderDetl.setBatch(detlDto.getLocDetl().getBatch());
+                inventoryCheckOrderDetl.setLocNo(detlDto.getLocDetl().getLocNo());
+                inventoryCheckOrderDetl.setArea(detlDto.getLocDetl().getOrigin());
+                inventoryCheckOrderDetl.setAnfme(detlDto.getLocDetl().getAnfme());
+                inventoryCheckOrderDetl.setIoTime(now);
+                inventoryCheckOrderDetl.setStatus("1");
+                if (!inventoryCheckOrderDetlService.insert(inventoryCheckOrderDetl)) {
+                    throw new CoolException("淇濆瓨鐩樼偣鏄庣粏澶辫触");
+                }
+
+                if (detlDto.getCount()==null || detlDto.getCount() <= 0.0D) {continue;}
+                WrkDetl wrkDetl = new WrkDetl();
+                wrkDetl.sync(detlDto.getLocDetl());
+                wrkDetl.setOrderNo(""); // 鎵嬪姩鍑哄簱涓嶉渶瑕佸甫鍑哄簱瀛樹腑鐨勫崟鎹紪鍙�
+                wrkDetl.setWrkNo(workNo);
+                wrkDetl.setIoTime(now);
+                Double anfme = ioType==101?detlDto.getLocDetl().getAnfme():detlDto.getCount();
+                wrkDetl.setAnfme(anfme); // 鏁伴噺
+                wrkDetl.setAppeTime(now);
+                wrkDetl.setAppeUser(userId);
+                wrkDetl.setModiTime(now);
+                wrkDetl.setModiUser(userId);
+                if (!wrkDetlService.insert(wrkDetl)) {
+                    throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+                }
+            }
+            // 淇敼搴撲綅鐘舵��:   F.鍦ㄥ簱 ====>>> R.鍑哄簱棰勭害/P.鎷f枡/鐩樼偣/骞舵澘鍑哄簱涓�
+            locMast = locMastService.selectById(dto.getLocNo());
+            if (locMast.getLocSts().equals("F")) {
+                locMast.setLocSts(ioType==101?"R":"P");
+                locMast.setModiUser(userId);
+                locMast.setModiTime(now);
+                if (!locMastService.updateById(locMast)) {
+                    throw new CoolException("棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細"+dto.getLocNo());
+                }
+            } else {
+                throw new CoolException(dto.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��");
+            }
+        }
+    }
+
+    @Override
+    @Transactional
     public void locMove(String sourceLocNo, String locNo, Long userId) {
         LocMast sourceLoc = locMastService.selectById(sourceLocNo);
         List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", sourceLocNo));
@@ -1511,4 +1685,158 @@
         }
     }
 
+    @Override
+    @Transactional
+    public void locMergeOutSxk(StockOutParam param, Long userId) {
+        // 鐩爣绔欑偣鐘舵�佹娴�
+        BasDevp staNo = basDevpService.checkSiteStatus(param.getOutSite());
+        // 鑾峰彇搴撲綅鏄庣粏
+        List<LocDetlDto> locDetlDtos = new ArrayList<>();
+        for (StockOutParam.LocDetl paramLocDetl : param.getLocDetls()) {
+            if (!Cools.isEmpty(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getCount())) {
+                LocDetl one = locDetlService.selectItem(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getBatch());
+                if (null != one) locDetlDtos.add(new LocDetlDto(one, paramLocDetl.getCount()));
+            }
+        }
+        if (!locDetlDtos.isEmpty()) {
+            // 鍚姩鍑哄簱寮�濮� 107.鐩樼偣鍑哄簱
+            stockOutSXK(staNo, locDetlDtos, IoWorkType.MERGE_OUT, userId);
+        } else {
+            throw new CoolException("搴撲綅鐗╂枡涓嶅瓨鍦�");
+        }
+    }
+
+
+
+    @Transactional
+    public void stockOutSXK(BasDevp staNo, List<LocDetlDto> locDetlDtos, IoWorkType ioWorkType, Long userId) {
+        Date now = new Date();
+        // 鍚堝苟鍚岀被椤�
+        Set<String> locNos = new HashSet<>();
+        List<OutLocDto> dtos = new ArrayList<>();
+        for (LocDetlDto locDetlDto : locDetlDtos) {
+            String locNo = locDetlDto.getLocDetl().getLocNo();
+            if (locNos.contains(locNo)) {
+                for (OutLocDto dto : dtos) {
+                    if (dto.getLocNo().equals(locNo)) {
+                        dto.getLocDetlDtos().add(locDetlDto);
+                        break;
+                    }
+                }
+            } else {
+                locNos.add(locNo);
+                dtos.add(new OutLocDto(locNo, locDetlDto));
+            }
+        }
+        Integer ioType = null;
+        // 鐢熸垚宸ヤ綔妗�
+        for (OutLocDto dto : dtos) {
+            // 鍒ゆ柇鍏ュ嚭搴撶被鍨嬶細101.鍏ㄦ澘鍑哄簱 or 103.鎷f枡鍑哄簱
+            if (ioWorkType == null) {
+                ioType = dto.isAll() ? 101 : 103;
+            } else if (ioWorkType.equals(IoWorkType.CHECK_OUT)) {
+                ioType = 107;
+            }else if (ioWorkType.equals(IoWorkType.MERGE_OUT)) {
+                ioType = 104;
+            }
+            assert ioType != null;
+            // 鑾峰彇搴撲綅
+            LocMast locMast = locMastService.selectById(dto.getLocNo());
+
+            List<LocMast> locMasts = new ArrayList<>();
+            if ((locMast.getBay1() >=1 && locMast.getBay1()<=2) || (locMast.getBay1() >=6 && locMast.getBay1()<=7 && locMast.getRow1() !=36 && locMast.getRow1() !=29 ) || (locMast.getBay1() >=11 && locMast.getBay1()<=12)){
+                locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
+                        .eq("gro1", locMast.getGro1())
+                        .eq("crn_no", 7)
+                        .eq("loc_type1",locMast.getLocType1())
+                        .orderBy("bay1", false));
+            }else {
+                locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
+                        .eq("gro1", locMast.getGro1())
+                        .eq("crn_no", 7)
+                        .eq("loc_type1",locMast.getLocType1())
+                        .orderBy("bay1", true));
+            }
+            for (LocMast locMast1 : locMasts) {
+                if (locMast1.getLocNo().equals(dto.getLocNo())){
+                    break;
+                }
+                if (locMast1.getLocSts().equals("X")){
+                    throw new CoolException(dto.getLocNo()+"搴撲綅鍓嶆柟鏈夐攣瀹氬簱浣嶏紝绂佹鍑哄簱");
+                }
+                if (locMast1.getLocSts().equals("F")) {
+                    moveLocForDeepLoc(locMast1);
+                }
+            }
+
+            Integer outSta = staNo.getDevNo();
+//            //2鍙峰爢鍨涙満鍏ㄦ澘鍑哄簱绔欐寚瀹氫负204绔欙紝鎷f枡绔欐寚瀹氫负202
+//            if(locMast.getCrnNo()==2){
+//                outSta = ioType == 101 ? 204 : 202;
+//            }
+
+            // 鑾峰彇璺緞
+            StaDesc staDesc = staDescService.queryCrnStn(ioType, locMast.getCrnNo(), outSta);
+            // 鐢熸垚宸ヤ綔鍙�
+            int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
+            // 鐢熸垚宸ヤ綔妗�
+            WrkMast wrkMast = new WrkMast();
+            wrkMast.setWrkNo(workNo);
+            wrkMast.setIoTime(now);
+            wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+            wrkMast.setIoType(ioType); // 鍏ュ嚭搴撶姸鎬�
+            wrkMast.setIoPri(13D); // 浼樺厛绾э細13
+            wrkMast.setCrnNo(locMast.getCrnNo());
+            wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 婧愮珯
+            wrkMast.setStaNo(staDesc.getStnNo()); // 鐩爣绔�
+            wrkMast.setSourceLocNo(dto.getLocNo()); // 婧愬簱浣�
+            wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+            wrkMast.setPicking("N"); // 鎷f枡
+            wrkMast.setExitMk("N"); // 閫�鍑�
+            wrkMast.setEmptyMk("N"); // 绌烘澘
+            wrkMast.setLinkMis("N");
+            wrkMast.setBarcode(locMast.getBarcode());
+            wrkMast.setAppeUser(userId); // 鎿嶄綔浜哄憳鏁版嵁
+            wrkMast.setAppeTime(now);
+            wrkMast.setModiUser(userId);
+            wrkMast.setModiTime(now);
+            if (!wrkMastService.insert(wrkMast)) {
+                throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細"+dto.getLocNo());
+            }
+            // 鐢熸垚宸ヤ綔妗f槑缁�
+            if (ioType != 104){
+                for (LocDetlDto detlDto : dto.getLocDetlDtos()) {
+                    if (detlDto.getCount()==null || detlDto.getCount() <= 0.0D) {continue;}
+                    WrkDetl wrkDetl = new WrkDetl();
+                    wrkDetl.sync(detlDto.getLocDetl());
+                    wrkDetl.setOrderNo(""); // 鎵嬪姩鍑哄簱涓嶉渶瑕佸甫鍑哄簱瀛樹腑鐨勫崟鎹紪鍙�
+                    wrkDetl.setWrkNo(workNo);
+                    wrkDetl.setIoTime(now);
+                    Double anfme = ioType==101?detlDto.getLocDetl().getAnfme():detlDto.getCount();
+                    wrkDetl.setAnfme(anfme); // 鏁伴噺
+                    wrkDetl.setAppeTime(now);
+                    wrkDetl.setAppeUser(userId);
+                    wrkDetl.setModiTime(now);
+                    wrkDetl.setModiUser(userId);
+                    if (!wrkDetlService.insert(wrkDetl)) {
+                        throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+                    }
+                }
+            }
+
+            // 淇敼搴撲綅鐘舵��:   F.鍦ㄥ簱 ====>>> R.鍑哄簱棰勭害/P.鎷f枡/鐩樼偣/骞舵澘鍑哄簱涓�
+            locMast = locMastService.selectById(dto.getLocNo());
+            if (locMast.getLocSts().equals("F")) {
+                locMast.setLocSts(ioType==101?"R":"P");
+                locMast.setModiUser(userId);
+                locMast.setModiTime(now);
+                if (!locMastService.updateById(locMast)) {
+                    throw new CoolException("棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細"+dto.getLocNo());
+                }
+            } else {
+                throw new CoolException(dto.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��");
+            }
+        }
+    }
+
 }
diff --git a/src/main/webapp/static/js/mergeStore/mergeStore.js b/src/main/webapp/static/js/mergeStore/mergeStore.js
index c60d61e..8775f38 100644
--- a/src/main/webapp/static/js/mergeStore/mergeStore.js
+++ b/src/main/webapp/static/js/mergeStore/mergeStore.js
@@ -52,7 +52,7 @@
                         locDetls: locDetlData
                     }
                     $.ajax({
-                        url: baseUrl+"/locMerge/out/start",
+                        url: baseUrl+"/locMerge/out/start/sxk",
                         headers: {'token': localStorage.getItem('token')},
                         data: JSON.stringify(param),
                         contentType:'application/json;charset=UTF-8',
diff --git a/src/main/webapp/static/js/pakStore/locCheckOut.js b/src/main/webapp/static/js/pakStore/locCheckOut.js
index 8bbcf0d..6e8e5f0 100644
--- a/src/main/webapp/static/js/pakStore/locCheckOut.js
+++ b/src/main/webapp/static/js/pakStore/locCheckOut.js
@@ -52,7 +52,7 @@
                         locDetls: locDetlData
                     }
                     $.ajax({
-                        url: baseUrl+"/locCheck/out/start",
+                        url: baseUrl+"/locCheck/out/start/sxk",
                         headers: {'token': localStorage.getItem('token')},
                         data: JSON.stringify(param),
                         contentType:'application/json;charset=UTF-8',

--
Gitblit v1.9.1