| | |
| | | import com.alibaba.fastjson.JSONArray; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; |
| | | import com.example.erp.common.Constants; |
| | | import com.example.erp.entity.pp.DamageDetails; |
| | | import com.example.erp.entity.pp.FlowCard; |
| | | import com.example.erp.entity.pp.ReportingWork; |
| | | import com.example.erp.entity.pp.ReportingWorkDetail; |
| | | import com.example.erp.dto.pp.OrderNumberTransferDTO; |
| | | import com.example.erp.entity.pp.*; |
| | | import com.example.erp.entity.sd.Order; |
| | | import com.example.erp.entity.sd.OrderDetail; |
| | | 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.mm.FinishedOperateLogMapper; |
| | | import com.example.erp.mapper.pp.*; |
| | | import com.baomidou.dynamic.datasource.annotation.DS; |
| | | import com.example.erp.mapper.sd.OrderDetailMapper; |
| | | import com.example.erp.mapper.sd.OrderGlassDetailMapper; |
| | | import com.example.erp.mapper.sd.OrderMapper; |
| | | import com.example.erp.mapper.sd.OrderProcessDetailMapper; |
| | |
| | | import com.example.erp.service.userInfo.LogService; |
| | | import com.example.erp.service.userInfo.SysErrorService; |
| | | import com.github.yulichang.wrapper.MPJLambdaWrapper; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.springframework.http.HttpEntity; |
| | | import org.springframework.http.HttpMethod; |
| | | import org.springframework.http.HttpStatus; |
| | | import org.springframework.http.ResponseEntity; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.transaction.interceptor.TransactionAspectSupport; |
| | | import org.springframework.web.client.RestTemplate; |
| | | |
| | | import java.text.SimpleDateFormat; |
| | | import java.time.LocalDate; |
| | |
| | | |
| | | @Service |
| | | @DS("pp") |
| | | @RequiredArgsConstructor |
| | | public class ReportingWorkService { |
| | | final |
| | | ReportingWorkMapper reportingWorkMapper; |
| | | final |
| | | BasicDateProduceMapper basicDateProduceMapper; |
| | | final |
| | | DamageDetailsMapper damageDetailsMapper; |
| | | final |
| | | OrderProcessDetailMapper orderProcessDetailMapper; |
| | | final |
| | | ReportingWorkDetailMapper |
| | | reportingWorkDetailMapper; |
| | | final OrderMapper |
| | | orderMapper; |
| | | private final ReportingWorkTransferMapper reportingWorkTransferMapper; |
| | | private final ReportingWorkMapper reportingWorkMapper; |
| | | private final BasicDateProduceMapper basicDateProduceMapper; |
| | | private final DamageDetailsMapper damageDetailsMapper; |
| | | private final OrderProcessDetailMapper orderProcessDetailMapper; |
| | | private final ReportingWorkDetailMapper reportingWorkDetailMapper; |
| | | private final OrderMapper orderMapper; |
| | | private final OrderDetailMapper orderDetailMapper; |
| | | |
| | | final |
| | | FlowCardMapper flowCardMapper; |
| | | private final FlowCardMapper flowCardMapper; |
| | | |
| | | final |
| | | OrderProcessDetailService orderProcessDetailService; |
| | | private final OrderProcessDetailService orderProcessDetailService; |
| | | |
| | | final |
| | | LogService logService; |
| | | private final LogService logService; |
| | | |
| | | final LogMapper logMapper; |
| | | private final LogMapper logMapper; |
| | | private final OrderGlassDetailMapper orderGlassDetailMapper; |
| | | private final SysErrorService sysErrorService; |
| | | private final FinishedOperateLogMapper finishedOperateLogMapper; |
| | | private final RestTemplate restTemplate; |
| | | |
| | | |
| | | 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) { |
| | | /*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, OrderDetailMapper orderDetailMapper, FinishedOperateLogMapper finishedOperateLogMapper, ReportingWorkTransferMapper reportingWorkTransferMapper) { |
| | | this.reportingWorkMapper = reportingWorkMapper; |
| | | this.basicDateProduceMapper = basicDateProduceMapper; |
| | | this.damageDetailsMapper = damageDetailsMapper; |
| | |
| | | this.logMapper = logMapper; |
| | | this.orderGlassDetailMapper = orderGlassDetailMapper; |
| | | this.sysErrorService = sysErrorService; |
| | | } |
| | | this.orderDetailMapper = orderDetailMapper; |
| | | this.finishedOperateLogMapper = finishedOperateLogMapper; |
| | | this.reportingWorkTransferMapper = reportingWorkTransferMapper; |
| | | }*/ |
| | | |
| | | public Map<String, Object> AddSelectLastWorkSv(String processIdStr, String technologyStr, String process, String reportType) { |
| | | Map<String, Object> map = new HashMap<>(); |
| | |
| | | |
| | | } |
| | | } |
| | | |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public Object reportingWorkTransferSv(Map<String, String> reportingWork) { |
| | | Order oldOrder = orderMapper.selectOrderId(reportingWork.get("oldOrderId")); |
| | | OrderDetail oldOrderDetail = orderDetailMapper.selectOne( |
| | | new QueryWrapper<OrderDetail>() |
| | | .eq("order_id", reportingWork.get("oldOrderId")) |
| | | .eq("order_number", reportingWork.get("oldOrderNumber")) |
| | | ); |
| | | |
| | | Order newOrder = orderMapper.selectOrderId(reportingWork.get("newOrderId")); |
| | | OrderDetail newOrderDetail = orderDetailMapper.selectOne( |
| | | new QueryWrapper<OrderDetail>() |
| | | .eq("order_id", reportingWork.get("newOrderId")) |
| | | .eq("order_number", reportingWork.get("newOrderNumber")) |
| | | ); |
| | | if(!Objects.equals(oldOrder.getCustomerId(), newOrder.getCustomerId())){ |
| | | return "新旧订单客户不一致"; |
| | | } |
| | | if(!Objects.equals(oldOrderDetail.getProductId(), newOrderDetail.getProductId())){ |
| | | return "新旧订单产品不一致"; |
| | | } |
| | | if (!Objects.equals(oldOrderDetail.getWidth(), newOrderDetail.getWidth()) |
| | | || !Objects.equals(oldOrderDetail.getHeight(), newOrderDetail.getHeight())){ |
| | | return "新旧订单尺寸不一致"; |
| | | } |
| | | |
| | | |
| | | //获取旧订单是否流程卡是否存在 |
| | | List<OrderProcessDetail> oldOrderProcessDetailList = orderProcessDetailMapper |
| | | .selectList(new QueryWrapper<OrderProcessDetail>() |
| | | .eq("order_id", reportingWork.get("oldOrderId")) |
| | | .eq("order_number", reportingWork.get("oldOrderNumber")) |
| | | ); |
| | | if(oldOrderProcessDetailList.isEmpty()){ |
| | | return "旧订单未分流程卡"; |
| | | } |
| | | //获取新订单是否流程卡是否存在 |
| | | List<OrderProcessDetail> newOrderProcessDetailList = orderProcessDetailMapper |
| | | .selectList(new QueryWrapper<OrderProcessDetail>() |
| | | .eq("order_id", reportingWork.get("newOrderId")) |
| | | .eq("order_number", reportingWork.get("newOrderNumber")) |
| | | ); |
| | | if(newOrderProcessDetailList.isEmpty()){ |
| | | return "新订单未分流程卡"; |
| | | } |
| | | //新订单是否存在已经排版序号 |
| | | List<FlowCard> newFlowCardLayoutStatus = flowCardMapper.selectList(new QueryWrapper<FlowCard>() |
| | | .eq("order_id", reportingWork.get("newOrderId")) |
| | | .eq("order_number", reportingWork.get("newOrderNumber")) |
| | | .gt("layout_status",0) |
| | | ); |
| | | if(!newFlowCardLayoutStatus.isEmpty()){ |
| | | return "新订单此序号存在排版"; |
| | | } |
| | | //获取旧订单报工数据汇总 |
| | | List<OrderProcessDetail> oldOrderProcessDetailForReport = orderProcessDetailMapper |
| | | .selectList(new QueryWrapper<OrderProcessDetail>() |
| | | .eq( "order_id", reportingWork.get("oldOrderId")) |
| | | .eq("order_number", reportingWork.get("oldOrderNumber")) |
| | | .gt("reporting_work_num",0) |
| | | ); |
| | | |
| | | Map<String,Object> log = new HashMap<>(); |
| | | log.put("oldOrderBeforeChange",oldOrderProcessDetailForReport); |
| | | |
| | | Map<String,Object> newOrderLog = new HashMap<>(); |
| | | newOrderLog.put("newOrderBeforeChange",newOrderProcessDetailList); |
| | | |
| | | //传给mes流程卡数量集合 |
| | | List<OrderNumberTransferDTO> orderNumberTransferList = new ArrayList<>(); |
| | | |
| | | oldOrderProcessDetailForReport.forEach(oldOrderProcessDetail -> { |
| | | int maxNum = 0; |
| | | for(OrderProcessDetail newOrderProcessDetail : newOrderProcessDetailList){ |
| | | if(oldOrderProcessDetail.getReportingWorkNum() == 0){ |
| | | break; |
| | | } |
| | | //判断小片是否一致,工序是否一致 |
| | | if(newOrderProcessDetail.getProcess().equals(oldOrderProcessDetail.getProcess()) && |
| | | Objects.equals(newOrderProcessDetail.getTechnologyNumber(), oldOrderProcessDetail.getTechnologyNumber())){ |
| | | //判断是否为第一道工序,给可转移最大值赋值 |
| | | if(oldOrderProcessDetail.getProcess().equals("切割")){ |
| | | FlowCard thisFlowCard = flowCardMapper.selectOne(new QueryWrapper<FlowCard>() |
| | | .eq("process_id", newOrderProcessDetail.getProcessId()) |
| | | .eq("order_number", newOrderProcessDetail.getOrderNumber()) |
| | | .eq("technology_number",newOrderProcessDetail.getTechnologyNumber()) |
| | | ); |
| | | maxNum = thisFlowCard.getQuantity(); |
| | | }else{ |
| | | //当不是第一道工序则,拿上一道工序作为最大值 |
| | | maxNum = orderProcessDetailMapper.selectById(newOrderProcessDetail.getId()-1).getReportingWorkNum(); |
| | | } |
| | | //判断被转移的数量是否大于可转移的数量最大值 |
| | | int transferNum = 0; |
| | | if(oldOrderProcessDetail.getReportingWorkNum() > maxNum){ |
| | | transferNum = maxNum; |
| | | oldOrderProcessDetail.setReportingWorkNum(oldOrderProcessDetail.getReportingWorkNum()-maxNum); |
| | | oldOrderProcessDetail.setReportingWorkNumCount(oldOrderProcessDetail.getReportingWorkNumCount()-maxNum); |
| | | }else{ |
| | | transferNum = oldOrderProcessDetail.getReportingWorkNum(); |
| | | oldOrderProcessDetail.setReportingWorkNum(0); |
| | | oldOrderProcessDetail.setReportingWorkNumCount(0); |
| | | } |
| | | //更新旧订单小片流程表的报工数量 |
| | | orderProcessDetailMapper.update(null,new UpdateWrapper<OrderProcessDetail>() |
| | | .set("reporting_work_num",oldOrderProcessDetail.getReportingWorkNum()) |
| | | .set("reporting_work_num_count",oldOrderProcessDetail.getReportingWorkNumCount()) |
| | | .eq("id",oldOrderProcessDetail.getId()) |
| | | ); |
| | | //更新新订单小片流程表的报工数量 |
| | | orderProcessDetailMapper.update(null,new UpdateWrapper<OrderProcessDetail>() |
| | | .set("reporting_work_num",transferNum) |
| | | .set("reporting_work_num_count",transferNum) |
| | | .eq("id",newOrderProcessDetail.getId()) |
| | | ); |
| | | if(oldOrderProcessDetail.getProcess().equals("切割")){ |
| | | //更新旧订单流程卡转出数量 |
| | | flowCardMapper.update(null,new UpdateWrapper<FlowCard>() |
| | | .setSql("export_number = export_number + "+transferNum) |
| | | .eq("process_id", oldOrderProcessDetail.getProcessId()) |
| | | .eq("order_number", oldOrderProcessDetail.getOrderNumber()) |
| | | .eq("technology_number",oldOrderProcessDetail.getTechnologyNumber()) |
| | | ); |
| | | //更新新订单流程卡转出数量 |
| | | flowCardMapper.update(null,new UpdateWrapper<FlowCard>() |
| | | .setSql("import_number = import_number + "+transferNum) |
| | | .eq("process_id", newOrderProcessDetail.getProcessId()) |
| | | .eq("order_number", newOrderProcessDetail.getOrderNumber()) |
| | | .eq("technology_number",newOrderProcessDetail.getTechnologyNumber()) |
| | | ); |
| | | |
| | | //传给mes数据赋值 |
| | | OrderNumberTransferDTO orderNumberTransfer = new OrderNumberTransferDTO(); |
| | | orderNumberTransfer.setChangeNumber(transferNum); |
| | | orderNumberTransfer.setOldProcessId(oldOrderProcessDetail.getProcessId()); |
| | | orderNumberTransfer.setNewProcessId(newOrderProcessDetail.getProcessId()); |
| | | orderNumberTransfer.setOldOrderNumber(oldOrderProcessDetail.getOrderNumber()); |
| | | orderNumberTransfer.setNewOrderNumber(newOrderProcessDetail.getOrderNumber()); |
| | | orderNumberTransfer.setOldTechnologyNumber(oldOrderProcessDetail.getTechnologyNumber()); |
| | | orderNumberTransfer.setNewTechnologyNumber(newOrderProcessDetail.getTechnologyNumber()); |
| | | orderNumberTransferList.add(orderNumberTransfer); |
| | | |
| | | } |
| | | |
| | | } |
| | | } |
| | | }); |
| | | |
| | | |
| | | //把旧订单数据和新订单数据传到日志表当中 |
| | | log.put("oldOrderChange",JSON.toJSONString(oldOrderProcessDetailForReport)); |
| | | |
| | | newOrderLog.put("newOrderChange",orderProcessDetailMapper |
| | | .selectList(new QueryWrapper<OrderProcessDetail>() |
| | | .eq("order_id", reportingWork.get("newOrderId")) |
| | | .eq("order_number", reportingWork.get("newOrderNumber")) |
| | | )); |
| | | //旧订单信息传入日志 |
| | | ReportingWorkTransfer reportingWorkTransfer = new ReportingWorkTransfer(); |
| | | reportingWorkTransfer.setOldOrder(reportingWork.get("oldOrderId")); |
| | | reportingWorkTransfer.setOldOrderNumber(Integer.valueOf(reportingWork.get("oldOrderNumber"))); |
| | | reportingWorkTransfer.setOldReportContent(JSON.toJSONString(log)); |
| | | |
| | | //新订单信息传入日志 |
| | | reportingWorkTransfer.setNewOrder(reportingWork.get("newOrderId")); |
| | | reportingWorkTransfer.setNewOrderNumber(Integer.valueOf(reportingWork.get("newOrderNumber"))); |
| | | reportingWorkTransfer.setNewReportContent(JSON.toJSONString(newOrderLog)); |
| | | reportingWorkTransferMapper.insert(reportingWorkTransfer); |
| | | //restTemplate.postForObject("http://localhost:8086/order/test",orderNumberTransferList,String.class); |
| | | |
| | | //向mes发送http请求 |
| | | ResponseEntity<String> response =restTemplate.exchange( |
| | | "http://localhost:88/api/loadGlass/order/order/orderChange", |
| | | HttpMethod.POST, |
| | | new HttpEntity<>(orderNumberTransferList), |
| | | String.class); |
| | | |
| | | if(response.getStatusCode() == HttpStatus.OK){ |
| | | return true; |
| | | }else{ |
| | | return "mes响应超时"; |
| | | } |
| | | } |
| | | } |