chenlu
2024-03-07 ae0bbc7e8fce2cc23e15aa730e0c53c524b4112e
Merge branch 'master' of http://10.153.19.25:10101/r/ERP_override
13个文件已修改
409 ■■■■ 已修改文件
north-glass-erp/northglass-erp/src/views/pp/processCard/AddProcessCard.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/reportingWorks/AddReportingWork.vue 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/entity/sd/OrderGlassDetail.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/entity/sd/OrderProcessDetail.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/mapper/pp/ReportingWorkDetailMapper.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/mapper/pp/ReportingWorkMapper.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/service/pp/FlowCardService.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/service/pp/ReportingWorkService.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/service/sd/OrderService.java 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/pp/ReportingWork.xml 130 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/sd/OrderProcessDetail.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/target/classes/mapper/pp/ReportingWork.xml 130 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/target/classes/mapper/sd/OrderProcessDetail.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/processCard/AddProcessCard.vue
@@ -247,7 +247,7 @@
      slots: {filter: 'num1_filter'}
      ,filterMethod:filterChanged
    },
    {field: 'landingSequence', title: '落架顺序', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'landingSequence', title: '小片顺序', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'shape', title: '形状', filters: [{data: ''}], slots: {filter: 'num1_filter'},filterMethod:filterChanged},
    {field: 'width', title: '宽', showOverflow: "ellipsis"},
    {field: 'height', title: '高'},
north-glass-erp/northglass-erp/src/views/pp/reportingWorks/AddReportingWork.vue
@@ -16,7 +16,7 @@
//定义表头数据
const titleUploadData = ref({
  //流程卡号
  processId: 'NG24030501A01/2',
  processId: 'NG24030701B01/1',
  //销售单号
  orderId: '',
  //生产单号
@@ -229,11 +229,10 @@
          const regex = /^[0-9]\d*$/
          const brokenNum =
              (row.breakageQuantity === undefined || row.breakageQuantity===null) ? 0 : row.breakageQuantity
          if (row.completedQuantity && !regex.test(row.completedQuantity)) {
            return new Error('请输入整数,并且大于-1')
          }else if(row.completedQuantity+brokenNum>row.quantity){
            return new Error((`${row.completedQuantity}+$(brokenNum)>${row.quantity}`))
            return new Error('请输入整数,并且大于等于0')
          }else if((row.completedQuantity*1+brokenNum*1)>row.quantity*1){
            return new Error((`${row.completedQuantity}+${brokenNum}>${row.quantity}`))
          }
        }
@@ -524,12 +523,12 @@
  titleUploadData.value.creator = user.user.userName
  titleUploadData.value.creatorId = user.user.userId
  const requestDetailData = xGrid.value.getTableData().fullData.filter((row) => {
    const a = (row.completedQuantity !== undefined && row.completedQuantity !== null && row.completedQuantity !== '')
    const b = (row.breakageQuantity !== undefined && row.breakageQuantity !== null && row.breakageQuantity !== '')
    const a = (row.completedQuantity !== undefined && row.completedQuantity !== null && row.completedQuantity !== '' && row.completedQuantity*1!==0)
    const b = (row.breakageQuantity !== undefined && row.breakageQuantity !== null && row.breakageQuantity !== '' && row.breakageQuantity*1!==0)
    return (a || b)
  })
  if(requestDetailData.length === 0){
    ElMessage.warning('请填写至少一条损耗数和完工数')
    ElMessage.warning('请填写至少一条损耗数和完工数大于0')
    return false
  }
@@ -537,11 +536,12 @@
    title:titleUploadData.value,
    detail:xGrid.value.getTableData().fullData
  }
  console.log(xGrid.value.getTableData().fullData)
  request.post(`/reportingWork/saveReportingWork`,requestData).then(res =>{
    if (res.code == 200){
      ElMessage.success("报工成功")
      router.push({path:'/main/reportingWorks/AddReportingWork',query:{random:Math.random()}})
    }else{
      ElMessage.error(res.msg)
    }
  }).catch(err =>{
    ElMessage.error(err.message)
north-glass-erp/src/main/java/com/example/erp/entity/sd/OrderGlassDetail.java
@@ -3,11 +3,13 @@
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.time.LocalDate;
@Data
@TableName("sd.order_glass_detail")
public class OrderGlassDetail {
    @TableId(type = IdType.AUTO)
@@ -30,10 +32,11 @@
    private Integer group;
    private LocalDate productionTime;
    private LocalDate createTime;
//    @TableField(select = false)
   @TableField(select = false,exist = false)
    private  Order order;
    //@TableField(select = false)
//   @ManyToOne(fetch = FetchType.LAZY)
    @TableField(select = false,exist = false)
    private  OrderDetail orderDetail;
north-glass-erp/src/main/java/com/example/erp/entity/sd/OrderProcessDetail.java
@@ -12,6 +12,7 @@
    private Long id;
    private String orderId;
    private String processId;
    private String orderNumber;
    private Integer technologyNumber;
    private String process;
north-glass-erp/src/main/java/com/example/erp/mapper/pp/ReportingWorkDetailMapper.java
@@ -25,4 +25,5 @@
    List<ReportingWorkDetail> reworkDataManage2(@Param("pageNum") Integer pageNum, @Param("pageSize") Integer pageSize,
                                               @Param("sDate") String startTime,@Param("eDate") String endTime,ReportingWorkDetail reportingWorkDetail);
}
north-glass-erp/src/main/java/com/example/erp/mapper/pp/ReportingWorkMapper.java
@@ -26,7 +26,7 @@
    List<Map<String,String>> SelectTechnologicalNumMp(String processIdStr, String technologyStr,String process);
    List<Map<String,String>> SelectReworlDetailMp(String processIdStr, String technologyStr, String previousProcess);
    List<Map<String,String>> SelectReworlDetailMp(String processIdStr, String technologyStr, String process);
    List<Map<String,String>> SelectProcessMp();
@@ -41,4 +41,8 @@
    List<Map<String,BasicDataProduce>>  selectBasicNameByType(String type);
    Integer selectMaxReportingWorkId();
    int selectGlassProcessNum(String orderNumber, String technologyNumber, String processId, String thisProcess);
    int selectFlowCardNum(String orderNumber, String technologyNumber, String processId, String thisProcess);
}
north-glass-erp/src/main/java/com/example/erp/service/pp/FlowCardService.java
@@ -4,11 +4,15 @@
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;
@@ -17,11 +21,23 @@
import java.util.List;
import java.util.Map;
import static com.example.erp.service.sd.OrderService.getOrderProcessDetails;
@Service
@DS("pp")
public class FlowCardService {
    @Autowired
    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<String, Object> selectProcessCard(Integer pageNum, Integer pageSize,Date selectTime1, Date selectTime2, FlowCard flowCard) {
@@ -122,7 +138,22 @@
                    //修改订单表分架状态为1,未全部分架完成
                    flowCardMapper.updateProcessingCard(productionId, 1);
                }
                //查询订单小片表获取工艺传入小片工艺表
                List<OrderGlassDetail> orderGlassDetailList =
                        orderGlassDetailMapper.selectList(
                                new QueryWrapper<OrderGlassDetail>()
                                .eq("order_id", flowCard.getProcessId().substring(0,10))
                                .eq("order_number", flowCard.getOrderNumber())
                        );
                List<OrderProcessDetail> orderProcessDetailList = getOrderProcessDetails(orderGlassDetailList);
                orderProcessDetailList.forEach(
                        orderGlassDetail ->orderGlassDetail.setProcessId(flowCard.getProcessId()));
                //赋值订单工艺表
                orderProcessDetailMapper.insertOrderProcessDetail(orderProcessDetailList);
            }
            return true;
        } else {
            return false;
north-glass-erp/src/main/java/com/example/erp/service/pp/ReportingWorkService.java
@@ -4,12 +4,14 @@
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
import com.example.erp.common.Constants;
import com.example.erp.entity.pp.DamageDetails;
import com.example.erp.entity.pp.ReportingWork;
import com.example.erp.entity.pp.ReportingWorkDetail;
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.exception.ServiceException;
import com.example.erp.mapper.pp.BasicDateProduceMapper;
import com.example.erp.mapper.pp.DamageDetailsMapper;
import com.example.erp.mapper.pp.ReportingWorkDetailMapper;
@@ -114,7 +116,7 @@
        }
        else {
            //不是第一道工序,查询报工数据
            map.put("Detail", reportingWorkMapper.SelectReworlDetailMp(processIdStr,technologyStr,previousProcess));
            map.put("Detail", reportingWorkMapper.SelectReworlDetailMp(processIdStr,technologyStr,process));
        }
        // 第一道工序(流程卡数+补片数量-完工数-次破数-返工未完成数-禁用数量)
@@ -142,7 +144,7 @@
    }
    //报工新增
    @Transactional
    @Transactional(rollbackFor = Exception.class)
    public boolean SaveReportingWorkSv(Map<String, Object> reportingWorkMap) {
        //接收解析主附表信息
        JSONObject reportingWorkJson = new JSONObject(reportingWorkMap);
@@ -173,19 +175,62 @@
                    damageDetailsMapper.insert(damageDetail);
                });
            }
            //System.out.println(reportingWorkDetail);
            //查询流程卡工艺流程
            String technologicalProcess = reportingWorkMapper.SelectTechnologicalProcess(reportingWork.getProcessId());
            int index = technologicalProcess.indexOf("-");
            //获取工艺流程第一个工序
            String interceptProcess = technologicalProcess.substring(0, index);
            //判断当前工序是否为第一道工序工序,使用流程卡表数量或者小片流程表上工序数量
            int processNum = 0;
            if (interceptProcess.equals(reportingWork.getThisProcess())) {
                processNum = reportingWorkMapper.selectFlowCardNum(
                        reportingWorkDetail.getOrderNumber(),
                        reportingWorkDetail.getTechnologyNumber(),
                        reportingWork.getProcessId(),
                        reportingWork.getThisProcess()
                );
            }else{
                processNum = reportingWorkMapper.selectGlassProcessNum(
                        reportingWorkDetail.getOrderNumber(),
                        reportingWorkDetail.getTechnologyNumber(),
                        reportingWork.getProcessId(),
                        reportingWork.getThisProcess()
                );
            }
            //判断是否大于当前数量并且抛出异常
            if(processNum<(reportingWorkDetail.getBreakageQuantity()+reportingWorkDetail.getCompletedQuantity())){
//                System.out.println(processNum);
//                System.out.println(reportingWorkDetail.getBreakageQuantity());
//                System.out.println(reportingWorkDetail.getCompletedQuantity());
                throw new ServiceException(Constants.Code_600,"当前工序数量大于流程卡表数量");
            }
            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,13))
                    .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.getReportingWorkNumCount())
                    .setSql("reporting_work_num_count =reporting_work_num_count +"+orderProcessDetail.getReportingWorkNum())
                    .setSql("reporting_work_num =reporting_work_num +"+orderProcessDetail.getReportingWorkNum())
                    .setSql("broken_num =broken_num +"+orderProcessDetail.getBrokenNum());
north-glass-erp/src/main/java/com/example/erp/service/sd/OrderService.java
@@ -98,7 +98,7 @@
        //删除订单小片表
        orderGlassDetailMapper.delete(new LambdaQueryWrapper<OrderGlassDetail>().eq(OrderGlassDetail::getOrderId, order.getOrderId()));
        //删除订单工艺表
        orderProcessDetailMapper.delete(new LambdaQueryWrapper<OrderProcessDetail>().eq(OrderProcessDetail::getOrderId, order.getOrderId()));
       // orderProcessDetailMapper.delete(new LambdaQueryWrapper<OrderProcessDetail>().eq(OrderProcessDetail::getOrderId, order.getOrderId()));
        insertOtherDetail(order.getOrderId(),OrderDetails);
    }
@@ -119,13 +119,13 @@
        //往小片表传入产品数据
        orderGlassDetailMapper.insertOrderGlassDetail(orderId);
        //查询订单小片表获取工艺传入小片工艺表
        List<OrderGlassDetail> orderGlassDetails = orderGlassDetailMapper.selectOrderGlassDetail(orderId);
        List<OrderProcessDetail> orderProcessDetailList = getOrderProcessDetails(orderGlassDetails);
        //List<OrderGlassDetail> orderGlassDetails = orderGlassDetailMapper.selectOrderGlassDetail(orderId);
        /*List<OrderProcessDetail> orderProcessDetailList = getOrderProcessDetails(orderGlassDetails);
        //赋值订单工艺表
        orderProcessDetailMapper.insertOrderProcessDetail(orderProcessDetailList);
        orderProcessDetailMapper.insertOrderProcessDetail(orderProcessDetailList);*/
    }
    private static List<OrderProcessDetail> getOrderProcessDetails(List<OrderGlassDetail> orderGlassDetails) {
    public static List<OrderProcessDetail> getOrderProcessDetails(List<OrderGlassDetail> orderGlassDetails) {
        List<OrderProcessDetail> orderProcessDetailList = new ArrayList<>();
        for (OrderGlassDetail orderGlassDetail : orderGlassDetails) {
            String[] processList = orderGlassDetail.getProcess().split("->");
@@ -200,10 +200,10 @@
            orderGlassDetailMapper.updateSizeAndProcess(orderGlassDetails);
            orderProcessDetailMapper.delete(new QueryWrapper<OrderProcessDetail>().eq("order_id",id));
            //查询订单小片表获取工艺传入小片工艺表
            List<OrderGlassDetail> orderGlassDetailList = orderGlassDetailMapper.selectOrderGlassDetail(id);
            List<OrderProcessDetail> orderProcessDetailList = getOrderProcessDetails(orderGlassDetailList);
            //赋值订单工艺表
            orderProcessDetailMapper.insertOrderProcessDetail(orderProcessDetailList);
            //List<OrderGlassDetail> orderGlassDetailList = orderGlassDetailMapper.selectOrderGlassDetail(id);
//            List<OrderProcessDetail> orderProcessDetailList = getOrderProcessDetails(orderGlassDetailList);
//            //赋值订单工艺表
//            orderProcessDetailMapper.insertOrderProcessDetail(orderProcessDetailList);
        }
        return orderMapper.reviewProcessById(id,status);
north-glass-erp/src/main/resources/mapper/pp/ReportingWork.xml
@@ -80,7 +80,7 @@
            ogd.child_width,
            ogd.child_height,
            od.shape,
            fc.quantity -odpd.reporting_work_num as quantity,
            fc.quantity -odpd.reporting_work_num + ifnull(c.patchNumSum,0) as quantity,
            odpd.reporting_work_num_count as completed,
            odpd.broken_num as onceBroken
        FROM
@@ -97,6 +97,14 @@
            ON  odpd.order_id = fc.order_id
            AND odpd.order_number = fc.order_number
            AND odpd.technology_number = fc.technology_number
            and  odpd.process_id = fc.process_id
        left join
                (select sum(patch_num) as patchNumSum,order_sort,technology_number,process_id
                   from patch_log
                   group by reporting_work_id,order_sort,technology_number) as c
            on c.process_id = fc.process_id
            and c.order_sort = fc.order_number
            and c.technology_number = fc.technology_number
        WHERE
            fc.process_id = #{processIdStr}
          AND fc.technology_number = #{technologyStr}
@@ -106,32 +114,46 @@
<!--    非第一道工序报工明细查询-->
    <select id="SelectReworlDetailMp">
        SELECT fc.order_number,
               ogd.glass_child,
               ogd.technology_number,
               ogd.glass_address,
               fc.quantity as quantity_card,
               ogd.child_width,
               ogd.child_height,
               od.shape,
               reporting_work_num -IFNULL(rwd.completed_quantity,0)-IFNULL(rwd.breakage_quantity,0)-IFNULL((rwd.wait_rework_quantity),0) as quantity
        FROM sd.order_detail as od
                 left join sd.order_glass_detail as ogd
                           on od.order_id = ogd.order_id and od.order_number = ogd.order_number
                 left join sd.order_process_detail as opd
                           on opd.order_id = ogd.order_id and opd.order_number = ogd.order_number and
                              opd.technology_number = ogd.technology_number
                 left join flow_card as fc on opd.order_id = fc.order_id and opd.order_number = fc.order_number and
                                              opd.technology_number = fc.technology_number
                 left join reporting_work as rw on rw.order_id=fc.order_id and
                                                   rw.production_id=fc.production_id and rw.process_id=fc.process_id and rw.this_process = #{previousProcess}
                 left join reporting_work_detail as rwd on rwd.reporting_work_id=rw.reporting_work_id and
                                                           rwd.order_number=fc.order_number and rwd.technology_number=fc.technology_number
        where fc.process_id = #{processIdStr}
          and opd.process = #{previousProcess}
          and position(ogd.technology_number in #{technologyStr})
        SELECT
            fc.order_number,
            ogd.glass_child,
            ogd.technology_number,
            ogd.glass_address,
            fc.quantity AS quantity_card,
            ogd.child_width,
            ogd.child_height,
            od.shape,
            odpds.reporting_work_num -odpd.reporting_work_num + ifnull(c.patchNumSum,0) as quantity,
            odpd.reporting_work_num_count as completed,
            odpd.broken_num as onceBroken
        FROM
            sd.order_detail AS od
        LEFT JOIN sd.order_glass_detail AS ogd
                ON od.order_id = ogd.order_id
                AND od.order_number = ogd.order_number
        LEFT JOIN flow_card AS fc
                ON fc.order_id = ogd.order_id
                and fc.production_id=ogd.production_id
                AND fc.order_number = ogd.order_number
                AND fc.technology_number = ogd.technology_number
        left join sd.order_process_detail as odpd
                ON  odpd.order_id = fc.order_id
                AND odpd.order_number = fc.order_number
                AND odpd.technology_number = fc.technology_number
                and odpd.process_id = fc.process_id
        left join sd.order_process_detail as odpds
                ON  odpds.id = odpd.id-1
        left join
            (select sum(patch_num) as patchNumSum,order_sort,technology_number,process_id
             from patch_log
             group by reporting_work_id,order_sort,technology_number) as c
            on c.process_id = fc.process_id
            and c.order_sort = fc.order_number
            and c.technology_number = fc.technology_number
        WHERE
            fc.process_id = #{processIdStr}
          AND fc.technology_number = #{technologyStr}
          AND odpd.process = #{process}
        order by fc.order_number
    </select>
@@ -210,4 +232,58 @@
        order by id desc,reporting_work_id    desc limit  1
    </select>
    <!--    查询流程卡工序报工可报数量-->
    <select id="selectReportingWorkNum">
    </select>
    <select id="selectGlassProcessNum" resultType="java.lang.Integer">
        select
              d.reporting_work_num-b.reporting_work_num-b.broken_num+ifnull(c.patchNumSum,0)
        from flow_card as a
        left join sd.order_process_detail as b
        on
            b.order_number = a.order_number
            and b.technology_number = a.technology_number
            and b.order_id = SUBSTR(#{processId} from 1 for 10)
            and b.process = #{thisProcess}
            and b.process_id = a.process_id
        left join sd.order_process_detail as d
            on d.id=b.id-1
        left join (select sum(patch_num) as patchNumSum,order_sort,technology_number,process_id
                   from patch_log
                   group by reporting_work_id,order_sort,technology_number) as c
        on
            c.process_id = a.process_id
            and c.order_sort = a.order_number
            and c.technology_number = a.technology_number
        where
            a.process_id=SUBSTR(#{processId} from 1 for 13)
            and a.order_number = #{orderNumber}
            and a.technology_number = #{technologyNumber}
    </select>
    <select id="selectFlowCardNum" resultType="java.lang.Integer">
        select
                    a.quantity-b.reporting_work_num-b.broken_num+ifnull(c.patchNumSum,0)
        from flow_card as a
                 left join sd.order_process_detail as b
                           on
                                       b.order_number = a.order_number
                                   and b.technology_number = a.technology_number
                                   and b.order_id = SUBSTR(#{processId} from 1 for 10)
                                   and b.process = #{thisProcess}
                                   and b.process_id = a.process_id
                 left join (select sum(patch_num) as patchNumSum,order_sort,technology_number,process_id
                            from patch_log
                            group by reporting_work_id,order_sort,technology_number) as c
                           on
                                       c.process_id = a.process_id
                                   and c.order_sort = a.order_number
                                   and c.technology_number = a.technology_number
        where
            a.process_id=SUBSTR(#{processId} from 1 for 13)
          and a.order_number = #{orderNumber}
          and a.technology_number = #{technologyNumber}
    </select>
</mapper>
north-glass-erp/src/main/resources/mapper/sd/OrderProcessDetail.xml
@@ -10,7 +10,8 @@
                order_id,
                order_number,
                technology_number,
                process
                process,
                process_id
            )
        values
        <foreach collection ="processDetailList" item="processDetail" separator =",">
@@ -18,7 +19,8 @@
             #{processDetail.orderId},
             #{processDetail.orderNumber},
             #{processDetail.technologyNumber},
             #{processDetail.process}
             #{processDetail.process},
              #{processDetail.processId}
             )
        </foreach>
north-glass-erp/target/classes/mapper/pp/ReportingWork.xml
@@ -80,7 +80,7 @@
            ogd.child_width,
            ogd.child_height,
            od.shape,
            fc.quantity -odpd.reporting_work_num as quantity,
            fc.quantity -odpd.reporting_work_num + ifnull(c.patchNumSum,0) as quantity,
            odpd.reporting_work_num_count as completed,
            odpd.broken_num as onceBroken
        FROM
@@ -97,6 +97,14 @@
            ON  odpd.order_id = fc.order_id
            AND odpd.order_number = fc.order_number
            AND odpd.technology_number = fc.technology_number
            and  odpd.process_id = fc.process_id
        left join
                (select sum(patch_num) as patchNumSum,order_sort,technology_number,process_id
                   from patch_log
                   group by reporting_work_id,order_sort,technology_number) as c
            on c.process_id = fc.process_id
            and c.order_sort = fc.order_number
            and c.technology_number = fc.technology_number
        WHERE
            fc.process_id = #{processIdStr}
          AND fc.technology_number = #{technologyStr}
@@ -106,32 +114,46 @@
<!--    非第一道工序报工明细查询-->
    <select id="SelectReworlDetailMp">
        SELECT fc.order_number,
               ogd.glass_child,
               ogd.technology_number,
               ogd.glass_address,
               fc.quantity as quantity_card,
               ogd.child_width,
               ogd.child_height,
               od.shape,
               reporting_work_num -IFNULL(rwd.completed_quantity,0)-IFNULL(rwd.breakage_quantity,0)-IFNULL((rwd.wait_rework_quantity),0) as quantity
        FROM sd.order_detail as od
                 left join sd.order_glass_detail as ogd
                           on od.order_id = ogd.order_id and od.order_number = ogd.order_number
                 left join sd.order_process_detail as opd
                           on opd.order_id = ogd.order_id and opd.order_number = ogd.order_number and
                              opd.technology_number = ogd.technology_number
                 left join flow_card as fc on opd.order_id = fc.order_id and opd.order_number = fc.order_number and
                                              opd.technology_number = fc.technology_number
                 left join reporting_work as rw on rw.order_id=fc.order_id and
                                                   rw.production_id=fc.production_id and rw.process_id=fc.process_id and rw.this_process = #{previousProcess}
                 left join reporting_work_detail as rwd on rwd.reporting_work_id=rw.reporting_work_id and
                                                           rwd.order_number=fc.order_number and rwd.technology_number=fc.technology_number
        where fc.process_id = #{processIdStr}
          and opd.process = #{previousProcess}
          and position(ogd.technology_number in #{technologyStr})
        SELECT
            fc.order_number,
            ogd.glass_child,
            ogd.technology_number,
            ogd.glass_address,
            fc.quantity AS quantity_card,
            ogd.child_width,
            ogd.child_height,
            od.shape,
            odpds.reporting_work_num -odpd.reporting_work_num + ifnull(c.patchNumSum,0) as quantity,
            odpd.reporting_work_num_count as completed,
            odpd.broken_num as onceBroken
        FROM
            sd.order_detail AS od
        LEFT JOIN sd.order_glass_detail AS ogd
                ON od.order_id = ogd.order_id
                AND od.order_number = ogd.order_number
        LEFT JOIN flow_card AS fc
                ON fc.order_id = ogd.order_id
                and fc.production_id=ogd.production_id
                AND fc.order_number = ogd.order_number
                AND fc.technology_number = ogd.technology_number
        left join sd.order_process_detail as odpd
                ON  odpd.order_id = fc.order_id
                AND odpd.order_number = fc.order_number
                AND odpd.technology_number = fc.technology_number
                and odpd.process_id = fc.process_id
        left join sd.order_process_detail as odpds
                ON  odpds.id = odpd.id-1
        left join
            (select sum(patch_num) as patchNumSum,order_sort,technology_number,process_id
             from patch_log
             group by reporting_work_id,order_sort,technology_number) as c
            on c.process_id = fc.process_id
            and c.order_sort = fc.order_number
            and c.technology_number = fc.technology_number
        WHERE
            fc.process_id = #{processIdStr}
          AND fc.technology_number = #{technologyStr}
          AND odpd.process = #{process}
        order by fc.order_number
    </select>
@@ -210,4 +232,58 @@
        order by id desc,reporting_work_id    desc limit  1
    </select>
    <!--    查询流程卡工序报工可报数量-->
    <select id="selectReportingWorkNum">
    </select>
    <select id="selectGlassProcessNum" resultType="java.lang.Integer">
        select
              d.reporting_work_num-b.reporting_work_num-b.broken_num+ifnull(c.patchNumSum,0)
        from flow_card as a
        left join sd.order_process_detail as b
        on
            b.order_number = a.order_number
            and b.technology_number = a.technology_number
            and b.order_id = SUBSTR(#{processId} from 1 for 10)
            and b.process = #{thisProcess}
            and b.process_id = a.process_id
        left join sd.order_process_detail as d
            on d.id=b.id-1
        left join (select sum(patch_num) as patchNumSum,order_sort,technology_number,process_id
                   from patch_log
                   group by reporting_work_id,order_sort,technology_number) as c
        on
            c.process_id = a.process_id
            and c.order_sort = a.order_number
            and c.technology_number = a.technology_number
        where
            a.process_id=SUBSTR(#{processId} from 1 for 13)
            and a.order_number = #{orderNumber}
            and a.technology_number = #{technologyNumber}
    </select>
    <select id="selectFlowCardNum" resultType="java.lang.Integer">
        select
                    a.quantity-b.reporting_work_num-b.broken_num+ifnull(c.patchNumSum,0)
        from flow_card as a
                 left join sd.order_process_detail as b
                           on
                                       b.order_number = a.order_number
                                   and b.technology_number = a.technology_number
                                   and b.order_id = SUBSTR(#{processId} from 1 for 10)
                                   and b.process = #{thisProcess}
                                   and b.process_id = a.process_id
                 left join (select sum(patch_num) as patchNumSum,order_sort,technology_number,process_id
                            from patch_log
                            group by reporting_work_id,order_sort,technology_number) as c
                           on
                                       c.process_id = a.process_id
                                   and c.order_sort = a.order_number
                                   and c.technology_number = a.technology_number
        where
            a.process_id=SUBSTR(#{processId} from 1 for 13)
          and a.order_number = #{orderNumber}
          and a.technology_number = #{technologyNumber}
    </select>
</mapper>
north-glass-erp/target/classes/mapper/sd/OrderProcessDetail.xml
@@ -10,7 +10,8 @@
                order_id,
                order_number,
                technology_number,
                process
                process,
                process_id
            )
        values
        <foreach collection ="processDetailList" item="processDetail" separator =",">
@@ -18,7 +19,8 @@
             #{processDetail.orderId},
             #{processDetail.orderNumber},
             #{processDetail.technologyNumber},
             #{processDetail.process}
             #{processDetail.process},
              #{processDetail.processId}
             )
        </foreach>