guoyuji
2024-09-02 47eff8c5c4b43dc65e4dabfe5128087f2e09b00c
north-glass-erp/src/main/java/com/example/erp/service/pp/ReportingWorkService.java
@@ -24,6 +24,7 @@
import com.example.erp.service.sd.OrderProcessDetailService;
import com.example.erp.service.userInfo.LogService;
import com.example.erp.service.userInfo.SysErrorService;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -631,7 +632,7 @@
            JSONObject reportingWorkJson = new JSONObject(reportingWorkMap);
            ReportingWork reportingWork = JSONObject.parseObject(JSONObject.toJSONString(reportingWorkJson.get("title")), ReportingWork.class);
            ReportingWorkDetail reportingWorkDetail =JSON.parseObject(JSONObject.toJSONString(reportingWorkJson.get("detail")), ReportingWorkDetail.class);
            //获取可报数量
            int processNum = reportingWorkMapper.selectGlassProcessNum(
                    reportingWorkDetail.getOrderNumber(),
                    reportingWorkDetail.getTechnologyNumber(),
@@ -642,21 +643,43 @@
            if (processNum < (reportingWorkDetail.getBreakageQuantity() + reportingWorkDetail.getCompletedQuantity())) {
                return false;
            }
            //查询报工数据
            List<ReportingWork> ReportingWorks = reportingWorkMapper.selectJoinList(ReportingWork.class,
                    new MPJLambdaWrapper<ReportingWork>()
                            .select(ReportingWork::getReportingWorkId)
                            .leftJoin(ReportingWorkDetail.class, ReportingWorkDetail::getReportingWorkId, ReportingWork::getReportingWorkId)
                            .eq(ReportingWork::getProcessId,reportingWork.getProcessId())
                            .eq(ReportingWork::getThisProcess,reportingWork.getThisProcess())
                            .eq(ReportingWork::getDeviceName,reportingWork.getDeviceName())
                            .eq(ReportingWorkDetail::getOrderNumber,reportingWorkDetail.getOrderNumber())
                            .eq(ReportingWorkDetail::getTechnologyNumber,reportingWorkDetail.getTechnologyNumber())
                            .orderByDesc(ReportingWork::getId)
            );
            //判断报工表是否存在,不存在则新增报工主副表数据,存在则修改副表数据
            if(ReportingWorks.isEmpty()){
                //获取当前最大报工单号生成报工单号
                String formattedNumber = String.format("%04d", reportingWorkMapper.selectMaxReportingWorkId() + 1);
                //格式化当前日期
                Date currentDate = new Date();
                SimpleDateFormat dateFormat = new SimpleDateFormat("yyMMdd");
                String formattedDate = dateFormat.format(currentDate);
                String reportingWorkId = "BG" + formattedDate + formattedNumber;
            //获取当前最大报工单号生成报工单号
            String formattedNumber = String.format("%04d", reportingWorkMapper.selectMaxReportingWorkId() + 1);
            //格式化当前日期
            Date currentDate = new Date();
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyMMdd");
            String formattedDate = dateFormat.format(currentDate);
            String reportingWorkId = "BG" + formattedDate + formattedNumber;
                reportingWork.setReportingWorkId(reportingWorkId);
                reportingWorkDetail.setReportingWorkId(reportingWorkId);
            reportingWork.setReportingWorkId(reportingWorkId);
            reportingWorkDetail.setReportingWorkId(reportingWorkId);
                reportingWorkMapper.insert(reportingWork);
                reportingWorkDetailMapper.insert(reportingWorkDetail);
            }else{
                LambdaUpdateWrapper<ReportingWorkDetail> detailLambdaUpdateWrapper = new LambdaUpdateWrapper<>();
                detailLambdaUpdateWrapper.eq(ReportingWorkDetail::getReportingWorkId, ReportingWorks.get(0).getReportingWorkId() )
                        .eq(ReportingWorkDetail::getOrderNumber,reportingWorkDetail.getOrderNumber())
                        .eq(ReportingWorkDetail::getTechnologyNumber,reportingWorkDetail.getTechnologyNumber())
                        .setSql("completed_quantity = completed_quantity+" + reportingWorkDetail.getCompletedQuantity());
                reportingWorkDetailMapper.update(null, detailLambdaUpdateWrapper);
            reportingWorkMapper.insert(reportingWork);
            reportingWorkDetailMapper.insert(reportingWorkDetail);
            }