From 64b432916af9c9218ab3f3eca614e26c542142ae Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期二, 07 十一月 2023 15:47:13 +0800
Subject: [PATCH] bug

---
 server/src/main/java/doumeemes/service/ext/impl/WorkorderRecordExtServiceImpl.java |  197 ++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 177 insertions(+), 20 deletions(-)

diff --git a/server/src/main/java/doumeemes/service/ext/impl/WorkorderRecordExtServiceImpl.java b/server/src/main/java/doumeemes/service/ext/impl/WorkorderRecordExtServiceImpl.java
index ba89d09..ed3ee89 100644
--- a/server/src/main/java/doumeemes/service/ext/impl/WorkorderRecordExtServiceImpl.java
+++ b/server/src/main/java/doumeemes/service/ext/impl/WorkorderRecordExtServiceImpl.java
@@ -141,6 +141,55 @@
         }
         return PageData.from(new PageInfo<>(result));
     }
+    @Override
+    public  PageData<SalaryStatisticsListVO> salaryStatistic(PageWrap<QuerySalaryStatisticDTO> pageWrap) {
+        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+        if(!Constants.equalsInteger(user.getType(),Constants.USERTYPE.COM)){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀵逛笉璧凤紝鎮ㄦ棤鏉冮檺杩涜璇ユ搷浣滐紒");
+        }
+        //鍙兘鏌ョ湅褰撳墠鏍圭粍缁囩殑鏁版嵁
+        pageWrap.getModel().setRootDepartId(user.getRootDepartment().getId());
+        PageHelper.startPage(pageWrap.getPage(), pageWrap.getCapacity());
+        List<SalaryStatisticsListVO> result = workorderRecordExtMapper.salaryStatistic(pageWrap.getModel());
+        if(result!=null){
+            List<DepartmentExtListVO> allDepartList = RedisUtil.getObject(redisTemplate,Constants.RedisKeys.COM_DEPART_LIST_KEY+user.getCompany().getId(),ArrayList.class);
+            for(SalaryStatisticsListVO model : result){
+                //鏌ヨ鐢熶骇浜哄憳濮撳悕
+//                model.setUserName(initProUser(user,model.getUserId(),allDepartList));
+                    model.setUserInfo(initProUser(user,model.getUserId(),allDepartList));
+                    model.setJijianSalary(model.getJijianSalary().divide(new BigDecimal("100"),2,BigDecimal.ROUND_HALF_UP));
+                    model.setJishiSalary(model.getJishiSalary().divide(new BigDecimal("100"),2,BigDecimal.ROUND_HALF_UP));
+                    model.setTotalSalary(model.getTotalSalary().divide(new BigDecimal("100"),2,BigDecimal.ROUND_HALF_UP));
+            }
+        }
+        return PageData.from(new PageInfo<>(result));
+    }
+    @Override
+    public  PageData<UserSalaryListVO> userSalaryPage(PageWrap<QueryUserSalaryListDTO> pageWrap) {
+        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+        if(!Constants.equalsInteger(user.getType(),Constants.USERTYPE.COM)){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀵逛笉璧凤紝鎮ㄦ棤鏉冮檺杩涜璇ユ搷浣滐紒");
+        }
+        //鍙兘鏌ョ湅褰撳墠鏍圭粍缁囩殑鏁版嵁
+        pageWrap.getModel().setRootDepartId(user.getRootDepartment().getId());
+        pageWrap.getModel().setRootDepartId(user.getRootDepartment().getId());
+        PageHelper.startPage(pageWrap.getPage(), pageWrap.getCapacity());
+
+        //鏁版嵁鏉冮檺
+//        List<Integer> dataPermission = user.getDepartPermissionList();
+        List<UserSalaryListVO> result = workorderRecordExtMapper.userSalaryPage(pageWrap.getModel());
+        if(result!=null){
+            List<DepartmentExtListVO> allDepartList = RedisUtil.getObject(redisTemplate,Constants.RedisKeys.COM_DEPART_LIST_KEY+user.getCompany().getId(),ArrayList.class);
+            for(UserSalaryListVO model : result){
+                //鏌ヨ鐢熶骇浜哄憳濮撳悕
+                model.setUserInfo(initProUser(user,model.getUserId(),allDepartList));
+                if(Constants.formatBigdecimal4Float(model.getNum()).compareTo(new BigDecimal(0))>0){
+                    model.setRate(Constants.formatBigdecimal4Float(model.getQualifiedNum()).divide(model.getNum(),4).multiply(new BigDecimal(100)));
+                }
+            }
+        }
+        return PageData.from(new PageInfo<>(result));
+    }
 
     private void initProUser(LoginUserInfo user, WorkorderRecordExtListVO data, List<DepartmentExtListVO> allDepartList) {
         if(data.getCreateUser() ==null){
@@ -156,6 +205,29 @@
             String dName =d==null?"":StringUtils.defaultString(d.getName(),"");
             data.setProcedureName(comp.getName()+"-"+dName);
         }
+    }
+    private UserBaseInfoVO initProUser(LoginUserInfo user, Integer userId, List<DepartmentExtListVO> allDepartList) {
+        if(userId ==null){
+            return null;
+        }
+
+        CompanyUser query=new CompanyUser();
+        query.setUserId(userId);
+        query.setRootDepartId(user.getRootDepartment().getId());
+        query.setDeleted(Constants.ZERO);
+        CompanyUser comp= companyUserExtMapper.selectOne(new QueryWrapper<>(query).last(" limit 1"));
+        if(comp!=null){
+            UserBaseInfoVO userinfo = new UserBaseInfoVO();
+            DepartmentExtListVO d = departmentExtService.getModelById(user.getCompany().getId(),comp.getDepartmentId(),allDepartList);
+            String dName =d==null?"":StringUtils.defaultString(d.getName(),"");
+            userinfo.setNameAndDepart (comp.getName()+"-"+dName);
+            userinfo.setDepartId(d.getId());
+            userinfo.setUserId(userId);
+            userinfo.setUserName(comp.getName());
+            userinfo.setDepartName(d.getName());
+            return  userinfo;
+        }
+        return null;
     }
     @Override
     public List<WorkorderRecordExtListVO> findAll(QueryWorkorderRecordExtDTO pageWrap) {
@@ -423,6 +495,7 @@
         }
         if(!Constants.equalsInteger(model.getWorkorderStatus(),Constants.WORKORDER_STATUS.create)
                 && !Constants.equalsInteger(model.getWorkorderStatus(),Constants.WORKORDER_STATUS.material)
+                && !Constants.equalsInteger(model.getWorkorderStatus(),Constants.WORKORDER_STATUS.producing)
                 && !Constants.equalsInteger(model.getWorkorderStatus(),Constants.WORKORDER_STATUS.check)
                 && !Constants.equalsInteger(model.getWorkorderStatus(),Constants.WORKORDER_STATUS.done)){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀵逛笉璧凤紝璇ュ伐鍗曠姸鎬佸凡娴佽浆锛屼笉鑳借繘琛岃鎿嶄綔锛�");
@@ -460,6 +533,7 @@
         }
         if(!Constants.equalsInteger(model.getWorkorderStatus(),Constants.WORKORDER_STATUS.create)
                 && !Constants.equalsInteger(model.getWorkorderStatus(),Constants.WORKORDER_STATUS.material)
+                && !Constants.equalsInteger(model.getWorkorderStatus(),Constants.WORKORDER_STATUS.producing)
                 && !Constants.equalsInteger(model.getWorkorderStatus(),Constants.WORKORDER_STATUS.check)
                 && !Constants.equalsInteger(model.getWorkorderStatus(),Constants.WORKORDER_STATUS.done)){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀵逛笉璧凤紝璇ュ伐鍗曠姸鎬佸凡娴佽浆锛屼笉鑳借繘琛岃鎿嶄綔锛�");
@@ -763,9 +837,11 @@
                 if(!Constants.equalsInteger(tModel.getDoneType(),Constants.ZERO)){
                     //濡傛灉涓嶈壇锛岀疮璁″伐鍗曠殑涓嶈壇浜у嚭
                     mp.setUnqualifiedNum(Constants.formatIntegerNum(mp.getUnqualifiedNum())+(Constants.formatBigdecimal(tModel.getNum()).intValue()));
+//                    mp.setUnqualifiedNum(mp.getUnqualifiedNum().add(tModel.getNum()));
                 }else{
                     //濡傛灉鏄悎鏍硷紝绱宸ュ崟鐨勫悎鏍兼暟閲�
                     mp.setQualifiedNum(Constants.formatIntegerNum(mp.getQualifiedNum())+(Constants.formatBigdecimal(tModel.getNum()).intValue()));
+//                    mp.setUnqualifiedNum(mp.getQualifiedNum().add(tModel.getNum()));
                 }
                 //妫�鏌ョ绛愭槸鍚﹁浣滀负浜у嚭绡瓙锛屽鏋滄槸锛屽垯闇�瑕佸垽鏂绡瓙鏄惁鎶曟枡浣欓涓�0
                 Appliances curUpdateModel = getApplianceFromList(tModel.getAppliancesId(),updateApplianceList);
@@ -1338,6 +1414,13 @@
             order.setStatus(Constants.WORKORDER_STATUS.material);
         }else if(status ==Constants.WORKORDER_HISTORY_STATUS.done){
             order.setStatus(Constants.WORKORDER_STATUS.done);
+        }else if(status ==Constants.WORKORDER_HISTORY_STATUS.produce){
+            //鎶曟枡鎿嶄綔
+            if(Constants.equalsInteger(mp.getStatus(),Constants.WORKORDER_STATUS.create)
+                    ||Constants.equalsInteger(mp.getStatus(),Constants.WORKORDER_STATUS.material)){
+                //濡傛灉鏄凡鍒涘缓鎴栬�呭凡澶囨枡鐘舵�佺殑宸ュ崟锛屼慨鏀瑰叾鐘舵�佷负銆愮敓浜т腑銆�
+                order.setStatus(Constants.WORKORDER_STATUS.producing);
+            }
         }
         workorderExtMapper.updateById(order);
         workorderHistoryExtMapper.insertBatch(whList);
@@ -1503,6 +1586,7 @@
         }
         if(!Constants.equalsInteger(mp.getStatus(),Constants.WORKORDER_STATUS.create)
                 && !Constants.equalsInteger(mp.getStatus(),Constants.WORKORDER_STATUS.material)
+                && !Constants.equalsInteger(mp.getStatus(),Constants.WORKORDER_STATUS.producing)
                 && !Constants.equalsInteger(mp.getStatus(),Constants.WORKORDER_STATUS.check)
                 && !Constants.equalsInteger(mp.getStatus(),Constants.WORKORDER_STATUS.done)){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀵逛笉璧凤紝璇ュ伐鍗曠姸鎬佸凡娴佽浆锛屼笉鑳借繘琛岃鎿嶄綔锛�");
@@ -1597,6 +1681,33 @@
 
 
     @Override
+    public void exportUserSalary(PageWrap<QueryUserSalaryListDTO> pageWrap, HttpServletResponse response) {
+        List<UserSalaryListVO> result=this.userSalaryPage(pageWrap).getRecords();
+        for(UserSalaryListVO model : result) {
+            if(model.getUserInfo()!=null){
+                model.setUserName(model.getUserInfo().getUserName());
+                model.setDepartName(model.getUserInfo().getDepartName());
+                model.setNum(Constants.formatBigdecimalFloat(model.getNum(),2));
+                model.setQualifiedNum(Constants.formatBigdecimalFloat(model.getQualifiedNum(),2));
+                model.setUnQualifiedNum(Constants.formatBigdecimalFloat(model.getUnQualifiedNum(),2));
+                model.setRate(Constants.formatBigdecimalFloat(model.getRate(),2));
+            }
+        }
+        ExcelExporter.build(UserSalaryListVO.class).export(result, "鍛樺伐缁╂晥鏄庣粏"+System.currentTimeMillis(), response);
+    }
+    @Override
+    public void exportSalaryStatistics(PageWrap<QuerySalaryStatisticDTO> pageWrap, HttpServletResponse response){
+        List<SalaryStatisticsListVO> result=this.salaryStatistic(pageWrap).getRecords();
+        for(SalaryStatisticsListVO model : result) {
+            if(model.getUserInfo()!=null){
+                model.setUserName(model.getUserInfo().getUserName());
+                model.setDepartName(model.getUserInfo().getDepartName());
+            }
+        }
+        ExcelExporter.build(SalaryStatisticsListVO.class).export(result, "宸ヨ祫鎶ヨ〃"+System.currentTimeMillis(), response);
+
+    }
+    @Override
     public void exportExcel(PageWrap<QueryWorkorderRecordExtDTO> pageWrap, HttpServletResponse response) {
         List<WorkorderRecordExtListVO> result=this.findPage(pageWrap).getRecords();
         SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
@@ -1626,45 +1737,91 @@
                 unintname = re.getUmodel().getName();
             }
             if (re.getPmodel() != null) {
-                Integer pmodelnum = re.getPmodel().getNum() != null ? re.getPmodel().getNum() : 0;
+                BigDecimal pmodelnum = re.getNum() != null ? re.getNum() : new BigDecimal("0");
                // wreev.setPlanNum( new BigDecimal(pmodelnum).stripTrailingZeros().toPlainString() + unintname);
-                wreev.setPlanNum( new BigDecimal(pmodelnum).stripTrailingZeros().toPlainString() );
-            }
-            if (re.getDoneType() != null) {
-                switch (re.getDoneType()) {
-                    case 0:
-                        wreev.setDoneType("鍚堟牸");
-                        break;
-                    case 1:
-                        wreev.setDoneType("涓嶈壇");
-                        break;
-                    case 2:
-                        wreev.setDoneType("鎶ュ簾");
-                        break;
-                    default:
-                        break;
-                }
+                wreev.setPlanNum( re.getNum().stripTrailingZeros().toPlainString()+unintname);
             }
                 wreev.setProcedureName(re.getProcedureName());
+                wreev.setUnintname(unintname);
                 if(re.getNum()!=null){
-                    wreev.setAppliancenum(re.getNum().stripTrailingZeros().toPlainString() );
+                    wreev.setAppliancenum(re.getNum().stripTrailingZeros().toPlainString()+unintname );
                 }
 
-                wreev.setUnintname(unintname);
+
                 if (re.getAmodel() != null) {
                     wreev.setAppliancecode(re.getAmodel().getCode());
                 }
 
                 wreev.setDeviceCode(re.getDeviceCode()+"|"+re.getDeviceName());
                 wreev.setCreateTime(format.format(re.getCreateTime()));
+                wreev.setQualifiedNum( (Objects.nonNull(re.getQualifiedNum()) ? re.getQualifiedNum() : 0)+unintname);
+                wreev.setUnqualifiedNum((Objects.nonNull(re.getUnqualifiedNum()) ? re.getUnqualifiedNum() : 0)+unintname);
+                Integer duration = re.getDuration();
+                if (Objects.nonNull(duration)){
+                    Integer h = duration/3600;
+                    Integer m = (duration%3600)/60;
+                    Integer s = ((duration%3600)%60);
+                    wreev.setDuration(h+"灏忔椂"+m+"鍒嗛挓"+s+"绉�");
+                }else {
+                    wreev.setDuration("-");
+                }
+                wreev.setSalaryType(re.getSalaryType());
+                wreev.setSalaryPrice(re.getSalaryYuan());
                 list.add(wreev);
 
         }
-        ExcelExporter.build(WorkorderRecordExportExtListVO.class).export(list, "宸ュ崟鐢熶骇杩囩▼璁板綍"+System.currentTimeMillis(), response);
+        ExcelExporter.build(WorkorderRecordExportExtListVO.class).export(list, "鐢熶骇浜у嚭鏄庣粏"+System.currentTimeMillis(), response);
 
        // EasyExcelUtil.exportExcel(list, "宸ュ崟鐢熶骇杩囩▼璁板綍","宸ュ崟鐢熶骇杩囩▼璁板綍",WorkorderRecordExportExtListVO.class,"宸ュ崟鐢熶骇杩囩▼璁板綍"+System.currentTimeMillis()+".xls", response);
     }
 
+    @Override
+    public void exportExcel2(PageWrap<QueryWorkorderRecordExtDTO> pageWrap, HttpServletResponse response) {
 
+        List<WorkorderRecordExtListVO> result=this.findPage(pageWrap).getRecords();
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+        List<WorkorderRecordBathExportExtListVO> list=new ArrayList<>();
+        for(int i=0;i<result.size();i++) {
+            WorkorderRecordExtListVO re = result.get(i);
+            WorkorderRecordBathExportExtListVO wreev = new WorkorderRecordBathExportExtListVO();
+            if (re.getOmodel() != null) {
+                wreev.setWorkordercode(re.getOmodel().getCode());
+                if (re.getOmodel().getStatus() != null) {
+                    String status = Constants.WORKORDER_STATUS.getTitleByStatus(null, re.getOmodel().getStatus());
+                    wreev.setStatus(status);
+                }
+            }
+            if (re.getMmodel() != null) {
+                wreev.setMaterialcode(re.getMmodel().getCode());
+                wreev.setMaterialname(re.getMmodel().getName());
+            }
 
+            wreev.setBatch(re.getBatch());
+            if (re.getPromodel() != null) {
+                wreev.setProceduresname(re.getPromodel().getName());
+            }
+
+            String unintname = "";
+            if (re.getUmodel() != null) {
+                unintname = re.getUmodel().getName();
+            }
+            if (re.getNum() != null) {
+                BigDecimal pmodelnum = re.getNum() != null ? re.getNum() : new BigDecimal("0");
+                // wreev.setPlanNum( new BigDecimal(pmodelnum).stripTrailingZeros().toPlainString() + unintname);
+                wreev.setNum( pmodelnum.stripTrailingZeros().toPlainString()+unintname);
+            }
+            wreev.setProcedureName(re.getProcedureName());
+            wreev.setUnintname(unintname);
+            if(re.getOmodel().getPlanNum() != null){
+                wreev.setPlanNum(re.getOmodel().getPlanNum().toString() );
+            }
+            wreev.setMaterialDonetype(re.getMaterialDonetype());
+            wreev.setDeviceCode(re.getDeviceCode()+"|"+re.getDeviceName());
+            wreev.setCreateTime(format.format(re.getCreateTime()));
+            list.add(wreev);
+
+        }
+        ExcelExporter.build(WorkorderRecordBathExportExtListVO.class).export(list, "鐢熶骇鎶曟枡鏄庣粏"+System.currentTimeMillis(), response);
+
+    }
 }

--
Gitblit v1.9.3