package com.example.erp.service.pp; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.example.erp.entity.pp.FlowCard; import com.example.erp.entity.sd.Order; import com.example.erp.entity.sd.OrderDetail; import com.example.erp.entity.sd.OrderGlassDetail; import com.example.erp.entity.sd.OrderProcessDetail; import com.example.erp.mapper.pp.FlowCardMapper; import com.example.erp.mapper.sd.OrderGlassDetailMapper; import com.example.erp.mapper.sd.OrderProcessDetailMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.sql.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import static com.example.erp.service.sd.OrderService.getOrderProcessDetails; @Service @DS("pp") public class FlowCardService { final FlowCardMapper flowCardMapper; final OrderGlassDetailMapper orderGlassDetailMapper; final OrderProcessDetailMapper orderProcessDetailMapper; public FlowCardService(FlowCardMapper flowCardMapper, OrderGlassDetailMapper orderGlassDetailMapper, OrderProcessDetailMapper orderProcessDetailMapper) { this.flowCardMapper = flowCardMapper; this.orderGlassDetailMapper = orderGlassDetailMapper; this.orderProcessDetailMapper = orderProcessDetailMapper; } //流程卡管理查询 public Map selectProcessCard(Integer pageNum, Integer pageSize, Date selectTime1, Date selectTime2, FlowCard flowCard) { Integer offset = (pageNum - 1) * pageSize; Map map = new HashMap<>(); map.put("data", flowCardMapper.selectFlowCard(offset, pageSize, selectTime1, selectTime2, flowCard)); map.put("total", flowCardMapper.getPageTotal(offset, pageSize, selectTime1, selectTime2, flowCard)); return map; } //分架查询 public Map selectAddProcess(Date selectTime1, Date selectTime2, FlowCard flowCard) { Map map = new HashMap<>(); map.put("data", flowCardMapper.selectFlowCardMp(selectTime1, selectTime2, flowCard)); return map; } //分架明细查询 public Map detailsSelectSv(String orderId, FlowCard flowCard) { Map map = new HashMap<>(); map.put("data", flowCardMapper.detailsSelectMp(orderId, flowCard)); return map; } //删除流程卡 public Boolean deleteFlowCardSv(String orderId, String processId) { if (!orderId.isEmpty() && !processId.isEmpty()) { //判断该流程卡是否报工 Integer count = flowCardMapper.reportingWorkCount(processId); if (count == 0) { //修改分架状态 flowCardMapper.updateDeleteState(orderId, processId); //删除报工流程明细表数据 flowCardMapper.deleteReportingWork(processId); //删除分架明细 flowCardMapper.deleteFlowCardMp(orderId, processId); //判断该订单流程卡是否全部删除 Integer flowNumber = flowCardMapper.selectFlowCardCount(orderId); if (flowNumber == 0) { //修改订单表分架状态为0,全部删除 flowCardMapper.updateProcessingCard(orderId, 0); } else { //修改订单表分架状态为1,删除部分 flowCardMapper.updateProcessingCard(orderId, 1); } return true; } else { return false; } } else { return false; } } //分架新增明细查询 public Map selectNoCardSv(String orderId, String productionId, FlowCard flowCard) { Map map = new HashMap<>(); map.put("data", flowCardMapper.selectNoCardMp(orderId, productionId, flowCard)); return map; } //修改排版状态 public Boolean updateLayoutStatusSv(String processId, Integer state) { if (!processId.isEmpty()) { // Integer Status = flowCardMapper.selectLayoutStatus(processId); flowCardMapper.updateLayoutStatusMp(processId, state); return true; } else { return false; } } //保存流程卡数据 public Boolean addFlowCardSv(Map object) { String userName = ""; if (object.get("userName") != null) { userName = object.get("userName").toString(); } String productionId = ""; if (object.get("productionId") != null) { productionId = object.get("productionId").toString(); } List FlowCardList = JSONArray.parseArray(JSONObject.toJSONString(object.get("flowCard")), FlowCard.class); if (!FlowCardList.isEmpty()) { for (FlowCard flowCard : FlowCardList) { //查询每个序号的层数 Integer layer = flowCardMapper.selectLayer(productionId, flowCard.getOrderNumber()); //添加流程卡数据 flowCardMapper.addFlowCardMp(flowCard.getProcessId(), flowCard.getOrderNumber(), flowCard.getLandingSequence(), flowCard.getQuantity(), productionId, userName, layer); //修改分架状态,将状态改为1 flowCardMapper.updateFlowState(productionId, flowCard.getOrderNumber()); //查询该订单未分架数量 Integer FlowCount = flowCardMapper.selectFlowCount(productionId); if (FlowCount == 0) { //修改订单表分架状态为2 flowCardMapper.updateProcessingCard(productionId, 2); } else { //修改订单表分架状态为1,未全部分架完成 flowCardMapper.updateProcessingCard(productionId, 1); } //查询订单小片表获取工艺传入小片工艺表 List orderGlassDetailList = orderGlassDetailMapper.selectList( new QueryWrapper() .eq("order_id", flowCard.getProcessId().substring(0, 10)) .eq("order_number", flowCard.getOrderNumber()) ); List orderProcessDetailList = getOrderProcessDetails(orderGlassDetailList); orderProcessDetailList.forEach( orderGlassDetail -> orderGlassDetail.setProcessId(flowCard.getProcessId())); //赋值订单工艺表 orderProcessDetailMapper.insertOrderProcessDetail(orderProcessDetailList); } return true; } else { return false; } } public Map selectSchedulingSv(String selectTime1, String selectTime2, String orderId, String processes, Integer state, FlowCard flowCard) { Map map = new HashMap<>(); if (state == 2) {//已排产 map.put("data", flowCardMapper.selectOkSchedulingMp(selectTime1, selectTime2, orderId, processes, flowCard)); } else if (state == 1) {//未排产 map.put("data", flowCardMapper.selectNoSchedulingMp(selectTime1, selectTime2, orderId, processes, flowCard)); } return map; } //首次查询排版数据 public Map selectLastScheduling(String selectTime1, String selectTime2, FlowCard flowCard) { Map map = new HashMap<>(); map.put("data", flowCardMapper.selectLastSchedulingMp(selectTime1, selectTime2, flowCard)); return map; } public Object flowCardDetailSv(String processId, FlowCard flowCard) { Map map = new HashMap<>(); map.put("data", flowCardMapper.flowCardDetailMp(processId, flowCard)); return map; } }