guoyuji
2024-08-28 5126c0d32676f27cf63506ac5f3e23cd539a7c8c
流程卡根据流程卡号查询,报工修改
3个文件已修改
130 ■■■■ 已修改文件
north-glass-erp/src/main/java/com/example/erp/controller/pp/ProcessCardController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/service/pp/FlowCardService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/service/pp/ReportingWorkService.java 122 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/controller/pp/ProcessCardController.java
@@ -339,8 +339,8 @@
    }
    @ApiOperation("汉玻获取流程卡接口")
    @PostMapping("/getProcessCardList/hanbo")
    public Result getProcessCard(@RequestBody String processCard)  {
        return Result.seccess(flowCardService.getProcessCard(processCard));
    public Result getProcessCard(@RequestBody Map<String,String> processCards)  {
        return Result.seccess(flowCardService.getProcessCard(processCards));
    }
north-glass-erp/src/main/java/com/example/erp/service/pp/FlowCardService.java
@@ -5,7 +5,6 @@
import com.alibaba.fastjson.JSONObject;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.example.erp.common.Constants;
import com.example.erp.entity.pp.FlowCard;
import com.example.erp.entity.sd.OrderGlassDetail;
@@ -684,7 +683,8 @@
    }
    public  List<FlowCard> getProcessCard(String processCard) {
    public  List<FlowCard> getProcessCard(Map<String, String> processCards) {
        String processCard = processCards.get("processCard");
        if(!processCard.contains("/")){
            throw new ServiceException(Constants.Code_600, "错误的流程卡号,请检查!");
        }
north-glass-erp/src/main/java/com/example/erp/service/pp/ReportingWorkService.java
@@ -13,6 +13,7 @@
import com.example.erp.entity.sd.Order;
import com.example.erp.entity.sd.OrderProcessDetail;
import com.example.erp.entity.userInfo.Log;
import com.example.erp.entity.userInfo.SysError;
import com.example.erp.exception.ServiceException;
import com.example.erp.mapper.pp.*;
import com.baomidou.dynamic.datasource.annotation.DS;
@@ -22,6 +23,8 @@
import com.example.erp.mapper.userInfo.LogMapper;
import com.example.erp.service.sd.OrderProcessDetailService;
import com.example.erp.service.userInfo.LogService;
import com.example.erp.service.userInfo.SysErrorService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
@@ -58,9 +61,10 @@
    final LogMapper logMapper;
    private final OrderGlassDetailMapper orderGlassDetailMapper;
    private final SysErrorService sysErrorService;
    public ReportingWorkService(ReportingWorkMapper reportingWorkMapper, BasicDateProduceMapper basicDateProduceMapper, DamageDetailsMapper damageDetailsMapper, ReportingWorkDetailMapper reportingWorkDetailMapper, OrderProcessDetailMapper orderProcessDetailMapper, OrderProcessDetailService orderProcessDetailService, OrderMapper orderMapper, FlowCardMapper flowCardMapper, LogService logService, LogMapper logMapper, OrderGlassDetailMapper orderGlassDetailMapper) {
    public ReportingWorkService(ReportingWorkMapper reportingWorkMapper, BasicDateProduceMapper basicDateProduceMapper, DamageDetailsMapper damageDetailsMapper, ReportingWorkDetailMapper reportingWorkDetailMapper, OrderProcessDetailMapper orderProcessDetailMapper, OrderProcessDetailService orderProcessDetailService, OrderMapper orderMapper, FlowCardMapper flowCardMapper, LogService logService, LogMapper logMapper, OrderGlassDetailMapper orderGlassDetailMapper, SysErrorService sysErrorService) {
        this.reportingWorkMapper = reportingWorkMapper;
        this.basicDateProduceMapper = basicDateProduceMapper;
        this.damageDetailsMapper = damageDetailsMapper;
@@ -72,6 +76,7 @@
        this.logService = logService;
        this.logMapper = logMapper;
        this.orderGlassDetailMapper = orderGlassDetailMapper;
        this.sysErrorService = sysErrorService;
    }
    public Map<String, Object> AddSelectLastWorkSv(String processIdStr, String technologyStr, String process, String reportType) {
@@ -612,67 +617,72 @@
        String count=reportingWorkMapper.getPatchConditionMp(reportingWorkId);
        return count;
    }
    @Transactional(rollbackFor = Exception.class)
    @Transactional(rollbackFor = Exception.class , noRollbackFor = Error.class)
    public Boolean mesReportingWorkSv(Map<String,Object> reportingWorkMap) {
        //设置回滚点
        Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
        try{
            //接收解析主附表信息
            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);
        //接收解析主附表信息
        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(),
                    reportingWork.getProcessId(),
                    reportingWork.getThisProcess()
            );
            //判断是否大于当前数量并且抛出异常
            if (processNum < (reportingWorkDetail.getBreakageQuantity() + reportingWorkDetail.getCompletedQuantity())) {
                TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
                throw new ServiceException(Constants.Code_600, "上工序已完工数量小于本工序报工数量,请检查");
            }
        int processNum = reportingWorkMapper.selectGlassProcessNum(
                reportingWorkDetail.getOrderNumber(),
                reportingWorkDetail.getTechnologyNumber(),
                reportingWork.getProcessId(),
                reportingWork.getThisProcess()
        );
        //判断是否大于当前数量并且抛出异常
        if (processNum < (reportingWorkDetail.getBreakageQuantity() + reportingWorkDetail.getCompletedQuantity())) {
            //获取当前最大报工单号生成报工单号
            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);
            reportingWorkMapper.insert(reportingWork);
            reportingWorkDetailMapper.insert(reportingWorkDetail);
            OrderProcessDetail orderProcessDetail = new OrderProcessDetail();
            orderProcessDetail.setBrokenNum(reportingWorkDetail.getBreakageQuantity());
            orderProcessDetail.setReportingWorkNum(reportingWorkDetail.getCompletedQuantity());
            orderProcessDetail.setReportingWorkNumCount(reportingWorkDetail.getCompletedQuantity());
            //根据订单id,订单序号,以及小片序号 更新小片流程的完工数量以及刺破数量
            LambdaUpdateWrapper<OrderProcessDetail> updateWrapper = new LambdaUpdateWrapper<>();
            updateWrapper.eq(OrderProcessDetail::getOrderNumber, reportingWorkDetail.getOrderNumber())
                    .eq(OrderProcessDetail::getProcessId, reportingWork.getProcessId().substring(0, 14))
                    .eq(OrderProcessDetail::getOrderId, reportingWork.getOrderId())
                    .eq(OrderProcessDetail::getProcess, reportingWork.getThisProcess())
                    .eq(OrderProcessDetail::getTechnologyNumber, reportingWorkDetail.getTechnologyNumber())
                    .setSql("reporting_work_num_count = reporting_work_num_count +" + orderProcessDetail.getReportingWorkNum())
                    .setSql("reporting_work_num =reporting_work_num +" + orderProcessDetail.getReportingWorkNum());
            orderProcessDetailMapper.update(null, updateWrapper);
            return true;
         } catch (Exception e) {
            TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
            throw new ServiceException(Constants.Code_600, "上工序已完工数量小于本工序报工数量,请检查");
            //将异常传入数据库
            SysError sysError = new SysError();
            sysError.setError(e +"\n"+Arrays.toString(e.getStackTrace()));
            sysError.setFunc("saveOrder");
            sysErrorService.insert(sysError);
            //throw new ServiceException(Constants.Code_500, "数据请求异常,请检查");
            throw new Error();
        }
        //获取当前最大报工单号生成报工单号
        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);
        reportingWorkMapper.insert(reportingWork);
        reportingWorkDetailMapper.insert(reportingWorkDetail);
        OrderProcessDetail orderProcessDetail = new OrderProcessDetail();
        orderProcessDetail.setBrokenNum(reportingWorkDetail.getBreakageQuantity());
        orderProcessDetail.setReportingWorkNum(reportingWorkDetail.getCompletedQuantity());
        orderProcessDetail.setReportingWorkNumCount(reportingWorkDetail.getCompletedQuantity());
        //根据订单id,订单序号,以及小片序号 更新小片流程的完工数量以及刺破数量
        LambdaUpdateWrapper<OrderProcessDetail> updateWrapper = new LambdaUpdateWrapper<>();
        updateWrapper.eq(OrderProcessDetail::getOrderNumber, reportingWorkDetail.getOrderNumber())
                .eq(OrderProcessDetail::getProcessId, reportingWork.getProcessId().substring(0, 14))
                .eq(OrderProcessDetail::getOrderId, reportingWork.getOrderId())
                .eq(OrderProcessDetail::getProcess, reportingWork.getThisProcess())
                .eq(OrderProcessDetail::getTechnologyNumber, reportingWorkDetail.getTechnologyNumber())
                .setSql("reporting_work_num_count = reporting_work_num_count +" + orderProcessDetail.getReportingWorkNum())
                .setSql("reporting_work_num =reporting_work_num +" + orderProcessDetail.getReportingWorkNum());
        orderProcessDetailMapper.update(null, updateWrapper);
        //String thisProcess = reportingWork.getThisProcess();
        //reportingWorkMapper.
        return true;
    }
}