Browse Source

填报工钱计算

seyason 1 year ago
parent
commit
973561f578

+ 10 - 6
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -135,7 +135,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         ProdProcedureTeam prodProcedureTeam = prodProcedureTeamMapper.selectById(report.getUserProcedureTeamId());
         double curReportTime = 0.0;
         //查找上一次该工序的报工
-        Integer currentProgress = 0;
+        Integer lastProgress = 0;
         Report lastReport = reportMapper.selectOne(new QueryWrapper<Report>().eq("creator_id", token).eq("user_procedure_team_id", report.getUserProcedureTeamId()).lt("create_date", today).orderByDesc("create_date").last("limit 1"));
         //查找上次是否有报工,有的话取上次报工进度,没有的话取分配下来时的报工进度
         if (lastReport != null) {
@@ -143,16 +143,20 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                 httpRespMsg.setError("进度必须大于上次报工进度("+lastReport.getProgress()+"%)");
                 return httpRespMsg;
             }
-            currentProgress = report.getProgress();
+            lastProgress = report.getProgress();
         } else {
-            if (report.getProgress() <= currentProgress) {
-                httpRespMsg.setError("进度必须大于上次报工进度("+currentProgress+"%)");
+            if (report.getProgress() <= lastProgress) {
+                httpRespMsg.setError("进度必须大于上次报工进度("+lastProgress+"%)");
                 return httpRespMsg;
             }
-            currentProgress = prodProcedureTeam.getProgress();
+            lastProgress = prodProcedureTeam.getProgress();
         }
-        curReportTime = (prodProcedureTeam.getWorkTime() * (report.getProgress() - currentProgress)/100);
+        int addProgress = report.getProgress() - lastProgress;
+        curReportTime = (prodProcedureTeam.getWorkTime() * (addProgress)/100);
+        //按比例获取本次进度的工钱
+        BigDecimal earnMoney = prodProcedureTeam.getJobOfMoney().multiply(new BigDecimal(curReportTime)).divide(new BigDecimal(100));
         report.setWorkingTime(curReportTime);//本次报工的工时数
+        report.setCost(earnMoney);//本次报工的成本
         report.setDeptId(plan.getStationId());
         if (plan.getPlanType() == 0) {
             report.setProductId(plan.getProductId());